- gettext support added in frontends
- first draft of frontends french translation
This commit is contained in:
Goffi 2010-03-05 20:33:10 +11:00
commit e3ebafd8f3
23 changed files with 1701 additions and 196 deletions

620
frontends/fr.po Normal file
View file

@ -0,0 +1,620 @@
# SàT frontends french translation file.
# Copyright (C) 2009, 2010 Jérôme Poisson
# This file is distributed under the same license as the SàT frontends packages.
# Jérôme Poisson <goffi@goffi.org>, 2009, 2010.
# Goffi <goffi@goffi.org>, 2010.
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: 0.0.2D\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-03-05 20:23+1100\n"
"PO-Revision-Date: 2010-03-05 20:27+1100\n"
"Last-Translator: Goffi <goffi@goffi.org>\n"
"Language-Team: French <goffi@goffi.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: sortilege/sortilege:89
msgid "Contact List"
msgstr "Liste de contacts"
#: sortilege/sortilege:241
msgid "Activating colors"
msgstr "Activation des couleurs"
#: sortilege/sortilege:245
msgid "Deactivating colors"
msgstr "Désactivation des couleurs"
#: sortilege/sortilege:251
msgid "show chat"
msgstr "Affichage du chat"
#: sortilege/sortilege:253
#, python-format
msgid "hiding %s"
msgstr "On cache %s"
#: sortilege/sortilege:256
#, python-format
msgid "showing %s"
msgstr "On afficher %s"
#: sortilege/sortilege:266
#, python-format
msgid "contact choosed: %s"
msgstr "Contact choisi: %s"
#: sortilege/sortilege:291
msgid "FIXME: askConfirmation not implemented"
msgstr "CORRIGEZ-MOI: askConfirmation n'est pas implémenté"
#: sortilege/sortilege:295
msgid "FIXME: actionResult not implemented"
msgstr "CORRIGEZ-MOI: actionResult n'est pas implémenté"
#: sortilege/sortilege:370
msgid "Pleeeeasse, I can't even breathe !"
msgstr "Pitiééééééééé, je ne peux même pas respirer !"
#: wix/chat.py:68
msgid "&SendFile\tCTRL-s"
msgstr "Envoi de fichier\tCTRL-s"
#: wix/chat.py:68
msgid " Send a file to contact"
msgstr "Envoi un fichier à un contact"
#: wix/chat.py:70
msgid "&Action"
msgstr "&Action"
#: wix/chat.py:110
msgid "Send File"
msgstr "Envoi un fichier"
#: wix/chat.py:111
msgid "Choose a file to send"
msgstr "Veuillez choisir le fichier à envoyer"
#: wix/chat.py:113
#, python-format
msgid "filename: %s"
msgstr "nom du fichier: %s"
#: wix/chat.py:116 wix/main_window.py:374
msgid "File Transfer"
msgstr "Transfert de fichier"
#: wix/chat.py:116 wix/main_window.py:374
#, python-format
msgid "Copying %s"
msgstr "Copie de %s"
#: wix/form.py:77
#, python-format
msgid "FIXME FIXME FIXME: type [%s] is not implemented"
msgstr ""
"CORRIGEZ-MOI CORRIGEZ-MOI CORRIGEZ-MOI: le type [%s] n'est pas implémenté"
#: wix/form.py:101
msgid "Submitting form"
msgstr "Envoi du formulaire"
#: wix/form.py:112
msgid "Cancelling form"
msgstr "Annulation du formulaire"
#: wix/form.py:118 wix/gateways.py:191 wix/param.py:123 wix/profile.py:89
msgid "close"
msgstr "fermeture"
#: wix/gateways.py:30
msgid ""
"Be careful ! Gateways allow you to use an external IM (legacy IM), so you "
"can see your contact as jabber contacts.\n"
"But when you do this, all your messages go throught the external legacy IM "
"server, it is a huge privacy issue (i.e.: all your messages throught the "
"gateway can be monitored, recorded, analyzed by the external server, most of "
"time a private company)."
msgstr ""
"Soyez prudent ! Les transports vous permettent d'utiliser une messagerie "
"externe, de façon à pouvoir afficher vos contacts comme des contacts "
"jabber.\n"
"Mais si vous faites cela, tous vos messages passeront par les serveurs de la "
"messagerie externe, c'est un gros problème pour votre vie privée (comprenez: "
"tous vos messages à travers le transport pourront être affichés, "
"enregistrés, analysés par ces serveurs externes, la plupart du temps une "
"entreprise privée)."
#: wix/gateways.py:34
msgid "Gateways manager"
msgstr "Gestionnaire de transport"
#: wix/gateways.py:89
msgid "Use external XMPP server: "
msgstr "Utiliser un autre serveur XMPP:"
#: wix/gateways.py:92
msgid "GO !"
msgstr "C'est parti !"
#: wix/gateways.py:107
#, python-format
msgid "Opening gateways manager on [%s]"
msgstr "Ouverture du gestionnaire de transports pour [%s]"
#: wix/gateways.py:130
msgid "Unknown IM"
msgstr "Messagerie inconnue"
#: wix/gateways.py:173
msgid "Register"
msgstr "Inscription"
#: wix/gateways.py:177
msgid "Unregister"
msgstr "Désinscription"
#: wix/main_window.py:55
msgid "Online"
msgstr "En ligne"
#: wix/main_window.py:56
msgid "Free for chat"
msgstr "Libre pour discuter"
#: wix/main_window.py:57
msgid "AFK"
msgstr "Loin du clavier"
#: wix/main_window.py:58
msgid "DND"
msgstr "Ne pas déranger"
#: wix/main_window.py:59
msgid "Away"
msgstr "Absent"
#: wix/main_window.py:93
#, python-format
msgid "update %s"
msgstr "mise à jour de %s"
#: wix/main_window.py:158
#, python-format
msgid "adding %s"
msgstr "ajout de %s"
#: wix/main_window.py:177
#, python-format
msgid "removing %s"
msgstr "suppression de %s"
#: wix/main_window.py:257
msgid "Wix jabber client"
msgstr "client jabber Wix"
#: wix/main_window.py:286
msgid "Creating menus"
msgstr "Construction des menus"
#: wix/main_window.py:288
msgid "&Connect\tCTRL-c"
msgstr "&Connexion\tCTRL-c"
#: wix/main_window.py:288
msgid " Connect to the server"
msgstr " Connexion au serveur"
#: wix/main_window.py:289
msgid "&Disconnect\tCTRL-d"
msgstr "&Déconnexion\tCTRL-d"
#: wix/main_window.py:289
msgid " Disconnect from the server"
msgstr " Déconnexion du serveur"
#: wix/main_window.py:290
msgid "&Parameters"
msgstr "&Paramètres"
#: wix/main_window.py:290
msgid " Configure the program"
msgstr " Configurer l'application"
#: wix/main_window.py:292
msgid "E&xit"
msgstr "Quitter"
#: wix/main_window.py:292
msgid " Terminate the program"
msgstr " Ferme l'application"
#: wix/main_window.py:294
msgid "&Add contact"
msgstr "&Ajouter un contact"
#: wix/main_window.py:294
msgid " Add a contact to your list"
msgstr " Ajouter un contact à votre liste"
#: wix/main_window.py:295
msgid "&Remove contact"
msgstr "Supp&rimer un contact"
#: wix/main_window.py:295
msgid " Remove the selected contact from your list"
msgstr " Supprime le contact sélectionné de votre liste"
#: wix/main_window.py:297
msgid "&Show profile"
msgstr "Afficher profile"
#: wix/main_window.py:297
msgid " Show contact's profile"
msgstr " Affiche le profile du contact"
#: wix/main_window.py:299
msgid "&Find Gateways"
msgstr "Trouver transports"
#: wix/main_window.py:299
msgid " Find gateways to legacy IM"
msgstr " Trouve les transports vers les messageries externes"
#: wix/main_window.py:301
msgid "&General"
msgstr "&Général"
#: wix/main_window.py:302
msgid "&Contacts"
msgstr "&Contacts"
#: wix/main_window.py:303
msgid "&Communication"
msgstr "&Communication"
#: wix/main_window.py:342
#, python-format
msgid "unmanaged dialog type: %s"
msgstr "type de discussion non géré: %s"
#: wix/main_window.py:360
msgid "Confirmation asked"
msgstr "Confirmation demandée"
#: wix/main_window.py:363
msgid "File transfert confirmation asked"
msgstr "Demande de confirmation pour un transfert de fichier demandée"
#: wix/main_window.py:364
#, python-format
msgid ""
"The contact %(jid)s wants to send you the file %(filename)s\n"
"Do you accept ?"
msgstr ""
"Le contact %(jid)s veut vous envoyer le fichier %(filename)s\n"
"Êtes vous d'accord ?"
#: wix/main_window.py:365
msgid "File Request"
msgstr "Gestion de fichiers"
#: wix/main_window.py:370
msgid "Where do you want to save the file ?"
msgstr "Où voulez-vous sauvegarder le fichier ?"
#: wix/main_window.py:383
msgid "Yes/No confirmation asked"
msgstr "confirmation de type Oui/Non demandée"
#: wix/main_window.py:385 wix/profile_manager.py:112
msgid "Confirmation"
msgstr "Confirmation"
#: wix/main_window.py:397
#, python-format
msgid "actionResult: type = [%(type)s] id = [%(id)s] data = [%(data)s]"
msgstr "actionResult: type = [%(type)s] id = [%(id)s] data = [%(data)s]"
#: wix/main_window.py:399
msgid "unknown id, ignoring"
msgstr "id inconnue, on l'ignore"
#: wix/main_window.py:406
msgid "Success"
msgstr "Succès"
#: wix/main_window.py:414 wix/main_window.py:517 wix/main_window.py:540
msgid "Error"
msgstr "Erreur"
#: wix/main_window.py:421
msgid "Form received"
msgstr "Formulaire reçu"
#: wix/main_window.py:422
msgid "Registration"
msgstr "Inscription"
#: wix/main_window.py:436
#, python-format
msgid "FIXME FIXME FIXME: type [%s] not implemented"
msgstr "CORRIGER-MOI: le type [%s] n'est pas implémenté"
#: wix/main_window.py:468
#, python-format
msgid "onContactActivated: %s"
msgstr "onContactActivated: %s"
#: wix/main_window.py:486
msgid "Status change request"
msgstr "Demande de changement de statut"
#: wix/main_window.py:490
msgid "Param request"
msgstr "Gestion des paramètres"
#: wix/main_window.py:497
msgid "Add contact request"
msgstr "Demande d'ajout de contact"
#: wix/main_window.py:499
msgid "Please enter new contact JID"
msgstr "Veuillez entrer le JID de votre nouveau contact"
#: wix/main_window.py:500
msgid "Adding a contact"
msgstr "Ajout d'un contact"
#: wix/main_window.py:500
msgid "name@server.tld"
msgstr "nom@serveur.ext"
#: wix/main_window.py:507
#, python-format
msgid "'%s' is an invalid JID !"
msgstr "'%s' n'est pas un JID valide !"
#: wix/main_window.py:513
msgid "Remove contact request"
msgstr "Demande de suppression de contact"
#: wix/main_window.py:516 wix/main_window.py:539
msgid "You haven't selected any contact !"
msgstr "Vous n'avez sélectionné aucun contact !"
#: wix/main_window.py:524
#, python-format
msgid "Are you sure you want to delete %s from your roster list ?"
msgstr "Êtes vous sûr de vouloir supprimer %s de votre liste de contacts ?"
#: wix/main_window.py:525
msgid "Contact suppression"
msgstr "Suppression de contact"
#: wix/main_window.py:530
#, python-format
msgid "Unsubscribing %s presence"
msgstr "Désinscription à la présence de %s"
#: wix/main_window.py:536
msgid "Show contact's profile request"
msgstr "Demande d'affichage du profile d'un contact"
#: wix/main_window.py:552
#, python-format
msgid "Profile received: [%s]"
msgstr "Profile reçu: [%s]"
#: wix/main_window.py:557
msgid "Find Gateways request"
msgstr "Demande de recherche de transports"
#: wix/main_window.py:569
msgid "Exiting..."
msgstr "Sortie..."
#: wix/main_window.py:573
msgid "Tray Click"
msgstr "Clic sur l'icône de la barre de tâches"
#: wix/param.py:32
msgid "Configuration"
msgstr "Configuration"
#: wix/param.py:78
msgid "FIXME FIXME FIXME"
msgstr "CORRIGER-MOI"
#: wix/profile_manager.py:47
msgid "Profile:"
msgstr "Profile:"
#: wix/profile_manager.py:52
msgid "New"
msgstr "Nouveau"
#: wix/profile_manager.py:53
msgid "Delete"
msgstr "Suppression"
#: wix/profile_manager.py:60
msgid "Login"
msgstr "Identifiant"
#: wix/profile_manager.py:67
msgid "Password:"
msgstr "Mot de passe:"
#: wix/profile_manager.py:70
msgid "Connect"
msgstr "Connexion"
#: wix/profile_manager.py:96
msgid "Please enter the new profile name"
msgstr "Veuillez entrer le nom du nouveau profile"
#: wix/profile_manager.py:96
msgid "New profile"
msgstr "Nouveau profile"
#: wix/profile_manager.py:101 wix/profile_manager.py:133
msgid "A profile name can't start with a @"
msgstr "Un nom de profile ne peut pas commencer avec un @"
#: wix/profile_manager.py:101 wix/profile_manager.py:133
msgid "Bad profile name"
msgstr "Mauvais nom de profile"
#: wix/profile_manager.py:112
#, python-format
msgid "Are you sure to delete the profile [%s]"
msgstr "Êtes vous sûr de vouloir supprimer le profile [%s] ?"
#: wix/profile_manager.py:130
msgid "You must select a profile or create a new one before connecting"
msgstr ""
"Vous devez sélectionner un profile ou en créer un nouveau avant de vous "
"connecter."
#: wix/profile_manager.py:130
msgid "No profile selected"
msgstr "Aucun profile sélectionné"
#: wix/profile_manager.py:138
msgid "The profile is new, we create it"
msgstr "Le profile est nouveau, on le créé"
#: wix/profile_manager.py:144
msgid "Saving new JID"
msgstr "Sauvegarde du nouveau JID"
#: wix/profile_manager.py:147
msgid "Saving new password"
msgstr "Sauvegarde du nouveau mot de passe"
#: wix/profile.py:35
msgid "Full Name"
msgstr "Nom complet"
#: wix/profile.py:36
msgid "Nickname"
msgstr "Surnon"
#: wix/profile.py:37
msgid "Birthday"
msgstr "Date de naissance"
#: wix/profile.py:38
msgid "Phone #"
msgstr "N° de Tél:"
#: wix/profile.py:39
msgid "Website"
msgstr "Site Web"
#: wix/profile.py:40
msgid "E-mail"
msgstr "Courriel"
#: wix/profile.py:41
msgid "Avatar"
msgstr "Avatar"
#: wix/profile.py:84
msgid "General"
msgstr "Général"
#: quick_frontend/quick_app.py:63
msgid "There is already one profile plugged (we are in single profile mode) !"
msgstr "Il y a déjà un profile utilisé (nous comme en mode profile unique) !"
#: quick_frontend/quick_app.py:67
msgid "The profile asked doesn't exist"
msgstr "Le profile demandé n'existe pas"
#: quick_frontend/quick_app.py:70
msgid "The profile is already plugged"
msgstr "Le profile est déjà utilisé"
#: quick_frontend/quick_app.py:110
msgid "This profile is not plugged"
msgstr "Ce profile n'est pas utilisé"
#: quick_frontend/quick_app.py:121
msgid "Connected"
msgstr "Connecté"
#: quick_frontend/quick_app.py:128
msgid "Disconnected"
msgstr "Déconnecté"
#: quick_frontend/quick_app.py:156
#, python-format
msgid "presence update for %(jid)s (show=%(show)s, statuses=%(statuses)s)"
msgstr ""
"Mise à jour de l'information de présence pour %(jid)s (show=%(show)s, "
"statuses=%(statuses)s)"
#: quick_frontend/quick_app.py:177
#, python-format
msgid "Watched jid [%s] is connected !"
msgstr "Le jid surveillé [%s] est connecté !"
#: quick_frontend/quick_app.py:205
#, python-format
msgid "The contact %s has accepted your subscription"
msgstr "Le contact %s a accepté votre inscription"
#: quick_frontend/quick_app.py:205 quick_frontend/quick_app.py:211
msgid "Subscription confirmation"
msgstr "Confirmation d'inscription"
#: quick_frontend/quick_app.py:208
#, python-format
msgid "The contact %s has refused your subscription"
msgstr "Le contact %s a refusé votre inscription"
#: quick_frontend/quick_app.py:208
msgid "Subscription refusal"
msgstr "Refus d'inscription"
#: quick_frontend/quick_app.py:211
#, python-format
msgid ""
"The contact %s wants to subscribe to your presence.\n"
"Do you accept ?"
msgstr ""
"Le contact %s veut s'inscrire à vos informations de présence\n"
"Acceptez vous ?"
#: quick_frontend/quick_app.py:226
#, python-format
msgid "param update: [%(namespace)s] %(name)s = %(value)s"
msgstr "Le paramètre [%(namespace)s] %(name)s vaut désormais %(value)s"
#: quick_frontend/quick_app.py:228
#, python-format
msgid "Changing JID to %s"
msgstr "Changement du JID pour %s"
#: quick_frontend/quick_chat.py:35
msgid "now we print history"
msgstr "Maintenant on affiche l'historique"
#: quick_frontend/quick_contact_list.py:33
msgid "Contact List init"
msgstr "Initialisation de la liste de contacts"
#: quick_frontend/quick_contact_management.py:67
msgid "Trying to get attribute for an unknown contact"
msgstr "Tentative d'accès aux attributs d'un contact inconnu"
#: quick_frontend/quick_contact_management.py:94
#, python-format
msgid "Trying to update an unknown contact: %s"
msgstr "Tentative de mise à jour d'un contact inconnu: %s"

Binary file not shown.

164
frontends/jp/fr.po Normal file
View file

@ -0,0 +1,164 @@
# JP French Translation.
# Copyright (C) 2009, 2010 Jérôme Poisson
# This file is distributed under the same license as the jp package.
# Jérôme Poisson <goffi@goffi.org>, 2009, 2010.
# Goffi <goffi@goffi.org>, 2010.
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: 0.0.2\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-03-05 19:08+1100\n"
"PO-Revision-Date: 2010-03-05 19:24+1100\n"
"Last-Translator: Goffi <goffi@goffi.org>\n"
"Language-Team: French <goffi@goffi.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: jp:63
msgid ""
"ProgressBar not available, please download it at http://pypi.python.org/pypi/"
"progressbar"
msgstr ""
"ProgressBar n'est pas disponible, veuillez le télécharger à http://pypi."
"python.org/pypi/progressbar"
#: jp:64
msgid ""
"Progress bar deactivated\n"
"--\n"
msgstr ""
"Barre de progression désactivée\n"
"--\n"
#: jp:77
msgid ""
"\n"
" %prog [options] [FILE1 FILE2 ...] JID\n"
" %prog -w [options] [JID1 JID2 ...]\n"
"\n"
" %prog --help for options list\n"
" "
msgstr ""
"\n"
" %prog [options] [FICHIER1 FICHIER2 ...] JID\n"
" %prog -w [options] [JID1 JID2 ...]\n"
"\n"
" %prog --help pour la liste des options\n"
" "
#: jp:86
msgid "Make a bzip2 tarball"
msgstr "Fait un fichier compressé bzip2"
#: jp:88
msgid "Wait for a file to be sent by a contact"
msgstr "Attend qu'un fichier soit envoyé par un contact"
#: jp:90
msgid "Accept multiple files (you'll have to stop manually)"
msgstr ""
"Accepte plusieurs fichiers (vous devrez arrêter le programme à la main)"
#: jp:92
msgid "Force overwritting of existing files"
msgstr "Force le remplacement des fichiers existants"
#: jp:94
msgid "Show progress bar"
msgstr "Affiche la barre de progression"
#: jp:96
msgid ""
"Separate xmpp messages: send one message per line instead of one message "
"alone."
msgstr ""
"Sépare les messages xmpp: envoi un message par ligne plutôt qu'un seul "
"message global."
#: jp:98
msgid "Add a new line at the beginning of the input (usefull for ascii art ;))"
msgstr ""
"Ajoute un saut de ligne au début de l'entrée (utile pour l'art ascii ;))"
#: jp:103
msgid "You must specify the destination JID (Jabber ID)"
msgstr "Vous devez préciser le JID (Jabber ID) de destination"
#: jp:112
#, python-format
msgid "%s is not a valid JID !"
msgstr "%s n'est pas un JID valide !"
#: jp:118
msgid "Option progress is not available, deactivated."
msgstr ""
"L'option « progress » (barre de progression) n'est pas disponible, elle est "
"désactivée."
#: jp:131
msgid "SAT is not conneted, please connect before using jp"
msgstr "SAT n'est pas connecté, veuillez le connecter avant d'utiliser jp"
#: jp:155
#, python-format
msgid "File [%s] doesn't exist !"
msgstr "Le fichier [%s] n'existe pas !"
#: jp:158
#, python-format
msgid "[%s] is a dir ! Please send files inside or use compression"
msgstr ""
"[%s] est un répertoire ! Veuillez envoyer les fichiers qu'il contient ou "
"utiliser la compression."
#: jp:164
#, python-format
msgid "tmp file (%s) already exists ! Please remove it"
msgstr "le fichier temporaire (%s) existe déjà ! Veuillez le supprimer"
#: jp:166
msgid "bz2 is an experimental option at an early dev stage, use with caution"
msgstr ""
"bz2 est une option expérimentale à un stade de développement peu avancé, "
"utilisez-là avec prudence"
#: jp:168
msgid "Starting compression, please wait..."
msgstr "Lancement de la compression, veuillez patienter..."
#: jp:172
#, python-format
msgid "Adding %s"
msgstr "Ajout de %s"
#: jp:175
msgid "OK !"
msgstr "C'est parti !"
#: jp:196
#, python-format
msgid "Accepted file [%(filename)s] from %(sender)s"
msgstr "Le fichier [%(filename)s] de %(sender)s a été accepté"
#: jp:200
#, python-format
msgid ""
"Refused file [%(filename)s] from %(sender)s: a file with the same name "
"already exist"
msgstr ""
"Le fichier [%(filename)s] de %(sender)s a été refusé: un fichier avec le "
"même nom existe déjà"
#: jp:209
msgid "FIXME: actionResult not implemented"
msgstr "CORRIGEZ-MOI: actionResult n'est pas implémenté"
#: jp:223
msgid "Progress: "
msgstr "Progression: "
#: jp:254
msgid "User interruption: good bye"
msgstr "Interrompu par l'utilisateur: au revoir"

Binary file not shown.

View file

@ -45,6 +45,9 @@ logging.basicConfig(level=logging.DEBUG,
format='%(message)s')
###
import gettext
gettext.install('jp', "i18n", unicode=True)
import sys
import os
from os.path import abspath, basename, dirname
@ -57,8 +60,8 @@ import tarfile
try:
from progressbar import ProgressBar, Percentage, Bar, ETA, FileTransferSpeed
except ImportError, e:
info ('ProgressBar not available, please download it at http://pypi.python.org/pypi/progressbar')
info ('Progress bar deactivated\n--\n')
info (_('ProgressBar not available, please download it at http://pypi.python.org/pypi/progressbar'))
info (_('Progress bar deactivated\n--\n'))
pbar_available=False
@ -71,33 +74,33 @@ class JP():
def check_options(self):
"""Check command line options"""
usage="""
usage=_("""
%prog [options] [FILE1 FILE2 ...] JID
%prog -w [options] [JID1 JID2 ...]
%prog --help for options list
"""
""")
parser = OptionParser(usage=usage,version=about)
parser.add_option("-b", "--bz2", action="store_true", default=False,
help="Make a bzip2 tarball")
help=_("Make a bzip2 tarball"))
parser.add_option("-w", "--wait-file", action="store_true", default=False,
help="Wait for a file to be sent by a contact")
help=_("Wait for a file to be sent by a contact"))
parser.add_option("-m", "--multiple", action="store_true", default=False,
help="Accept multiple files (you'll have to stop manually)")
help=_("Accept multiple files (you'll have to stop manually)"))
parser.add_option("-f", "--force", action="store_true", default=False,
help="Force overwritting of existing files")
help=_("Force overwritting of existing files"))
parser.add_option("-p", "--progress", action="store_true", default=False,
help="Show progress bar")
help=_("Show progress bar"))
parser.add_option("-s", "--separate", action="store_true", default=False,
help="Separate xmpp messages: send one message per line instead of one message alone.")
help=_("Separate xmpp messages: send one message per line instead of one message alone."))
parser.add_option("-n", "--new-line", action="store_true", default=False,
help="Add a new line at the beginning of the input (usefull for ascii art ;))")
help=_("Add a new line at the beginning of the input (usefull for ascii art ;))"))
(self.options, args) = parser.parse_args()
if len(args) < 1 and not self.options.wait_file:
parser.error("You must specify the destination JID (Jabber ID)")
parser.error(_("You must specify the destination JID (Jabber ID)").encode('utf-8'))
if self.options.wait_file:
#several jid
@ -106,13 +109,13 @@ class JP():
#one dest_jid, other args are files
self.dest_jid = JID(args[-1])
if not self.dest_jid.is_valid:
error ("%s is not a valid JID !", self.dest_jid)
error (_("%s is not a valid JID !"), self.dest_jid)
exit(1)
self.files = args[:-1]
if not pbar_available and self.options.progress:
self.options.progress = False
error ("Option progress is not available, deactivated.")
error (_("Option progress is not available, deactivated."))
if self.options.progress or self.options.wait_file:
self.start_loop = True #We have to use loop for these options
@ -125,7 +128,7 @@ class JP():
def check_jabber_status(self):
"""Check that jabber status is allright"""
if not self.bridge.isConnected():
error("SAT is not conneted, please connect before using jp")
error(_("SAT is not conneted, please connect before using jp"))
exit(1)
@ -149,27 +152,27 @@ class JP():
for file in self.files:
if not os.path.exists(file):
error ("File [%s] doesn't exist !" % file)
error (_("File [%s] doesn't exist !") % file)
exit(1)
if not self.options.bz2 and os.path.isdir(file):
error ("[%s] is a dir ! Please send files inside or use compression" % file)
error (_("[%s] is a dir ! Please send files inside or use compression") % file)
exit(1)
if self.options.bz2:
tmpfile = (basename(self.files[0]) or basename(dirname(self.files[0])) ) + '.tar.bz2' #FIXME: tmp, need an algorithm to find a good name/path
if os.path.exists(tmpfile):
error ("tmp file (%s) already exists ! Please remove it", tmpfile)
error (_("tmp file (%s) already exists ! Please remove it"), tmpfile)
exit(1)
warning("bz2 is an experimental option at an early dev stage, use with caution")
warning(_("bz2 is an experimental option at an early dev stage, use with caution"))
#FIXME: check free space, writting perm, tmp dir, filename (watch for OS used)
info("Starting compression, please wait...")
info(_("Starting compression, please wait..."))
sys.stdout.flush()
bz2=tarfile.open(tmpfile, "w:bz2")
for file in self.files:
info("Adding %s", file)
info(_("Adding %s"), file)
bz2.add(file)
bz2.close()
info("OK !")
info(_("OK !"))
path = abspath(tmpfile)
self.transfert_id = self.bridge.sendFile(self.dest_jid, path)
else:
@ -190,11 +193,11 @@ class JP():
if self.options.force or not os.path.exists(answer_data["dest_path"]):
self.bridge.confirmationAnswer(id, True, answer_data)
info("Accepted file [%s] from %s", data['filename'], data['from'])
info(_("Accepted file [%(filename)s] from %(sender)s") % {'filename':data['filename'], 'sender':data['from']})
self.transfert_id = id
else:
self.bridge.confirmationAnswer(id, False, answer_data)
warning("Refused file [%s] from %s: a file with the same name already exist", data['filename'], data['from'])
warning(_("Refused file [%(filename)s] from %(sender)s: a file with the same name already exist") % {'filename':data['filename'], 'sender':data['from']})
if not self.options.multiple and not self.options.progress:
@ -203,7 +206,7 @@ class JP():
def actionResult(self, type, id, data):
#FIXME
info ("FIXME: actionResult not implemented")
info (_("FIXME: actionResult not implemented"))
def wait_file(self):
"""Wait for a file and write it on local dir"""
@ -217,7 +220,7 @@ class JP():
data['position'] = '0'
if not self.pbar:
#first answer, we must construct the bar
self.pbar = ProgressBar(int(data['size']),["Progress: ",Percentage()," ",Bar()," ",FileTransferSpeed()," ",ETA()])
self.pbar = ProgressBar(int(data['size']),[_("Progress: "),Percentage()," ",Bar()," ",FileTransferSpeed()," ",ETA()])
self.pbar.start()
self.pbar.update(int(data['position']))
@ -248,7 +251,7 @@ class JP():
try:
self.loop.run()
except KeyboardInterrupt:
info("User interruption: good bye")
info(_("User interruption: good bye"))
if __name__ == "__main__":

142
frontends/jp/jp.po Normal file
View file

@ -0,0 +1,142 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-03-05 19:08+1100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: jp:63
msgid ""
"ProgressBar not available, please download it at http://pypi.python.org/pypi/"
"progressbar"
msgstr ""
#: jp:64
msgid ""
"Progress bar deactivated\n"
"--\n"
msgstr ""
#: jp:77
msgid ""
"\n"
" %prog [options] [FILE1 FILE2 ...] JID\n"
" %prog -w [options] [JID1 JID2 ...]\n"
"\n"
" %prog --help for options list\n"
" "
msgstr ""
#: jp:86
msgid "Make a bzip2 tarball"
msgstr ""
#: jp:88
msgid "Wait for a file to be sent by a contact"
msgstr ""
#: jp:90
msgid "Accept multiple files (you'll have to stop manually)"
msgstr ""
#: jp:92
msgid "Force overwritting of existing files"
msgstr ""
#: jp:94
msgid "Show progress bar"
msgstr ""
#: jp:96
msgid ""
"Separate xmpp messages: send one message per line instead of one message "
"alone."
msgstr ""
#: jp:98
msgid "Add a new line at the beginning of the input (usefull for ascii art ;))"
msgstr ""
#: jp:103
msgid "You must specify the destination JID (Jabber ID)"
msgstr ""
#: jp:112
#, python-format
msgid "%s is not a valid JID !"
msgstr ""
#: jp:118
msgid "Option progress is not available, deactivated."
msgstr ""
#: jp:131
msgid "SAT is not conneted, please connect before using jp"
msgstr ""
#: jp:155
#, python-format
msgid "File [%s] doesn't exist !"
msgstr ""
#: jp:158
#, python-format
msgid "[%s] is a dir ! Please send files inside or use compression"
msgstr ""
#: jp:164
#, python-format
msgid "tmp file (%s) already exists ! Please remove it"
msgstr ""
#: jp:166
msgid "bz2 is an experimental option at an early dev stage, use with caution"
msgstr ""
#: jp:168
msgid "Starting compression, please wait..."
msgstr ""
#: jp:172
#, python-format
msgid "Adding %s"
msgstr ""
#: jp:175
msgid "OK !"
msgstr ""
#: jp:196
#, python-format
msgid "Accepted file [%(filename)s] from %(sender)s"
msgstr ""
#: jp:200
#, python-format
msgid ""
"Refused file [%(filename)s] from %(sender)s: a file with the same name "
"already exist"
msgstr ""
#: jp:209
msgid "FIXME: actionResult not implemented"
msgstr ""
#: jp:223
msgid "Progress: "
msgstr ""
#: jp:254
msgid "User interruption: good bye"
msgstr ""

View file

@ -24,6 +24,9 @@ from tools.jid import JID
from sat_bridge_frontend.DBus import DBusBridgeFrontend
import pdb
import gettext
gettext.install('sat_frontend', "../i18n", unicode=True)
class QuickApp():
"""This class contain the main methods needed for the frontend"""
@ -57,14 +60,14 @@ class QuickApp():
def plug_profile(self, profile_key='@DEFAULT@'):
"""Tell application which profile must be used"""
if self.single_profile and self.profiles:
error('There is already one profile plugged (we are in single profile mode) !')
error(_('There is already one profile plugged (we are in single profile mode) !'))
return
profile = self.bridge.getProfileName(profile_key)
if not profile:
error("The profile asked doesn't exist")
error(_("The profile asked doesn't exist"))
return
if self.profiles.has_key(profile):
warning("The profile is already plugged")
warning(_("The profile is already plugged"))
return
self.profiles[profile]={}
if self.single_profile:
@ -104,7 +107,7 @@ class QuickApp():
def unplug_profile(self, profile):
"""Tell the application to not follow anymore the profile"""
if not profile in self.profiles:
warning ("This profile is not plugged")
warning (_("This profile is not plugged"))
return
self.profiles.remove(profile)
@ -115,14 +118,14 @@ class QuickApp():
"""called when the connection is made"""
if not self.__check_profile(profile):
return
debug("Connected")
debug(_("Connected"))
self.setStatusOnline(True)
def disconnected(self, profile):
"""called when the connection is closed"""
if not self.__check_profile(profile):
return
debug("Disconnected")
debug(_("Disconnected"))
self.CM.clear()
self.contactList.clear_contacts()
self.setStatusOnline(False)
@ -150,9 +153,9 @@ class QuickApp():
if not self.__check_profile(profile):
return
print "check ok"
debug ("presence update for %s (show=%s, statuses=%s)", jabber_id, show, statuses);
debug (_("presence update for %(jid)s (show=%(show)s, statuses=%(statuses)s)") % {'jid':jabber_id, 'show':show, 'statuses':statuses});
from_jid=JID(jabber_id)
debug ("from_jid.short=%s whoami.short=%s", from_jid.short, self.profiles[profile]['whoami'].short)
debug ("from_jid.short=%(from_jid)s whoami.short=%(whoami)s" % {'from_jid':from_jid.short, 'whoami':self.profiles[profile]['whoami'].short})
if from_jid.short==self.profiles[profile]['whoami'].short:
if not type:
@ -171,7 +174,7 @@ class QuickApp():
#FIXME: must be moved in a plugin
if from_jid.short in self.profiles[profile]['watched'] and not from_jid.short in self.profiles[profile]['onlineContact']:
self.showAlert("Watched jid [%s] is connected !" % from_jid.short)
self.showAlert(_("Watched jid [%s] is connected !") % from_jid.short)
self.profiles[profile]['onlineContact'].add(from_jid) #FIXME onlineContact is useless with CM, must be removed
self.CM.add(from_jid)
@ -199,13 +202,13 @@ class QuickApp():
entity = JID(raw_jid)
if type=="subscribed":
# this is a subscription confirmation, we just have to inform user
self.showDialog("The contact %s has accepted your subscription" % entity.short, 'Subscription confirmation')
self.showDialog(_("The contact %s has accepted your subscription") % entity.short, _('Subscription confirmation'))
elif type=="unsubscribed":
# this is a subscription refusal, we just have to inform user
self.showDialog("The contact %s has refused your subscription" % entity.short, 'Subscription refusal', 'error')
self.showDialog(_("The contact %s has refused your subscription") % entity.short, _('Subscription refusal'), 'error')
elif type=="subscribe":
# this is a subscriptionn request, we have to ask for user confirmation
answer = self.showDialog("The contact %s wants to subscribe to your presence.\nDo you accept ?" % entity.short, 'Subscription confirmation', 'yes/no')
answer = self.showDialog(_("The contact %s wants to subscribe to your presence.\nDo you accept ?") % entity.short, _('Subscription confirmation'), 'yes/no')
if answer:
self.bridge.subscription("subscribed", entity.short)
else:
@ -220,9 +223,9 @@ class QuickApp():
def paramUpdate(self, name, value, namespace, profile):
if not self.__check_profile(profile):
return
debug("param update: [%s] %s = %s", namespace, name, value)
debug(_("param update: [%(namespace)s] %(name)s = %(value)s") % {'namespace':namespace, 'name':name, 'value':value})
if (namespace,name) == ("Connection", "JabberID"):
debug ("Changing ID to %s", value)
debug (_("Changing JID to %s"), value)
self.profiles[profile]['whoami']=JID(value)
elif (namespace,name) == ("Misc", "Watched"):
self.profiles[profile]['watched']=value.split()

View file

@ -32,7 +32,7 @@ class QuickChat():
def historyPrint(self, size=20, keep_last=False, profile='@NONE@'):
"""Print the initial history"""
debug ("now we print history")
debug (_("now we print history"))
history=self.host.bridge.getHistory(self.host.profiles[profile]['whoami'].short, self.to_jid, 20)
stamps=history.keys()
stamps.sort()

View file

@ -30,7 +30,7 @@ class QuickContactList():
"""
@param CM: instance of QuickContactManagement
"""
debug("Contact List init")
debug(_("Contact List init"))
self.CM = CM
def clear_contacts(self, jid):

View file

@ -64,7 +64,7 @@ class QuickContactManagement():
if self.__contactlist[entity.short].has_key(name):
return self.__contactlist[entity.short][name]
else:
debug('Trying to get attribute for an unknown contact')
debug(_('Trying to get attribute for an unknown contact'))
return None
def isConnected(self, entity):
@ -91,7 +91,7 @@ class QuickContactManagement():
if self.__contactlist.has_key(entity.short):
self.__contactlist[entity.short][key] = value
else:
debug ('Trying to update an unknown contact: %s', entity.short)
debug (_('Trying to update an unknown contact: %s'), entity.short)
def get_full(self, entity):
return entity.short+'/'+self.__contactlist[entity.short]['resources'][-1]

603
frontends/sat_frontend.po Normal file
View file

@ -0,0 +1,603 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-03-05 20:23+1100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: sortilege/sortilege:89
msgid "Contact List"
msgstr ""
#: sortilege/sortilege:241
msgid "Activating colors"
msgstr ""
#: sortilege/sortilege:245
msgid "Deactivating colors"
msgstr ""
#: sortilege/sortilege:251
msgid "show chat"
msgstr ""
#: sortilege/sortilege:253
#, python-format
msgid "hiding %s"
msgstr ""
#: sortilege/sortilege:256
#, python-format
msgid "showing %s"
msgstr ""
#: sortilege/sortilege:266
#, python-format
msgid "contact choosed: %s"
msgstr ""
#: sortilege/sortilege:291
msgid "FIXME: askConfirmation not implemented"
msgstr ""
#: sortilege/sortilege:295
msgid "FIXME: actionResult not implemented"
msgstr ""
#: sortilege/sortilege:370
msgid "Pleeeeasse, I can't even breathe !"
msgstr ""
#: wix/chat.py:68
msgid "&SendFile\tCTRL-s"
msgstr ""
#: wix/chat.py:68
msgid " Send a file to contact"
msgstr ""
#: wix/chat.py:70
msgid "&Action"
msgstr ""
#: wix/chat.py:110
msgid "Send File"
msgstr ""
#: wix/chat.py:111
msgid "Choose a file to send"
msgstr ""
#: wix/chat.py:113
#, python-format
msgid "filename: %s"
msgstr ""
#: wix/chat.py:116 wix/main_window.py:374
msgid "File Transfer"
msgstr ""
#: wix/chat.py:116 wix/main_window.py:374
#, python-format
msgid "Copying %s"
msgstr ""
#: wix/form.py:77
#, python-format
msgid "FIXME FIXME FIXME: type [%s] is not implemented"
msgstr ""
#: wix/form.py:101
msgid "Submitting form"
msgstr ""
#: wix/form.py:112
msgid "Cancelling form"
msgstr ""
#: wix/form.py:118 wix/gateways.py:191 wix/param.py:123 wix/profile.py:89
msgid "close"
msgstr ""
#: wix/gateways.py:30
msgid ""
"Be careful ! Gateways allow you to use an external IM (legacy IM), so you "
"can see your contact as jabber contacts.\n"
"But when you do this, all your messages go throught the external legacy IM "
"server, it is a huge privacy issue (i.e.: all your messages throught the "
"gateway can be monitored, recorded, analyzed by the external server, most of "
"time a private company)."
msgstr ""
#: wix/gateways.py:34
msgid "Gateways manager"
msgstr ""
#: wix/gateways.py:89
msgid "Use external XMPP server: "
msgstr ""
#: wix/gateways.py:92
msgid "GO !"
msgstr ""
#: wix/gateways.py:107
#, python-format
msgid "Opening gateways manager on [%s]"
msgstr ""
#: wix/gateways.py:130
msgid "Unknown IM"
msgstr ""
#: wix/gateways.py:173
msgid "Register"
msgstr ""
#: wix/gateways.py:177
msgid "Unregister"
msgstr ""
#: wix/main_window.py:55
msgid "Online"
msgstr ""
#: wix/main_window.py:56
msgid "Free for chat"
msgstr ""
#: wix/main_window.py:57
msgid "AFK"
msgstr ""
#: wix/main_window.py:58
msgid "DND"
msgstr ""
#: wix/main_window.py:59
msgid "Away"
msgstr ""
#: wix/main_window.py:93
#, python-format
msgid "update %s"
msgstr ""
#: wix/main_window.py:158
#, python-format
msgid "adding %s"
msgstr ""
#: wix/main_window.py:177
#, python-format
msgid "removing %s"
msgstr ""
#: wix/main_window.py:257
msgid "Wix jabber client"
msgstr ""
#: wix/main_window.py:286
msgid "Creating menus"
msgstr ""
#: wix/main_window.py:288
msgid "&Connect\tCTRL-c"
msgstr ""
#: wix/main_window.py:288
msgid " Connect to the server"
msgstr ""
#: wix/main_window.py:289
msgid "&Disconnect\tCTRL-d"
msgstr ""
#: wix/main_window.py:289
msgid " Disconnect from the server"
msgstr ""
#: wix/main_window.py:290
msgid "&Parameters"
msgstr ""
#: wix/main_window.py:290
msgid " Configure the program"
msgstr ""
#: wix/main_window.py:292
msgid "E&xit"
msgstr ""
#: wix/main_window.py:292
msgid " Terminate the program"
msgstr ""
#: wix/main_window.py:294
msgid "&Add contact"
msgstr ""
#: wix/main_window.py:294
msgid " Add a contact to your list"
msgstr ""
#: wix/main_window.py:295
msgid "&Remove contact"
msgstr ""
#: wix/main_window.py:295
msgid " Remove the selected contact from your list"
msgstr ""
#: wix/main_window.py:297
msgid "&Show profile"
msgstr ""
#: wix/main_window.py:297
msgid " Show contact's profile"
msgstr ""
#: wix/main_window.py:299
msgid "&Find Gateways"
msgstr ""
#: wix/main_window.py:299
msgid " Find gateways to legacy IM"
msgstr ""
#: wix/main_window.py:301
msgid "&General"
msgstr ""
#: wix/main_window.py:302
msgid "&Contacts"
msgstr ""
#: wix/main_window.py:303
msgid "&Communication"
msgstr ""
#: wix/main_window.py:342
#, python-format
msgid "unmanaged dialog type: %s"
msgstr ""
#: wix/main_window.py:360
msgid "Confirmation asked"
msgstr ""
#: wix/main_window.py:363
msgid "File transfert confirmation asked"
msgstr ""
#: wix/main_window.py:364
#, python-format
msgid ""
"The contact %(jid)s wants to send you the file %(filename)s\n"
"Do you accept ?"
msgstr ""
#: wix/main_window.py:365
msgid "File Request"
msgstr ""
#: wix/main_window.py:370
msgid "Where do you want to save the file ?"
msgstr ""
#: wix/main_window.py:383
msgid "Yes/No confirmation asked"
msgstr ""
#: wix/main_window.py:385 wix/profile_manager.py:112
msgid "Confirmation"
msgstr ""
#: wix/main_window.py:397
#, python-format
msgid "actionResult: type = [%(type)s] id = [%(id)s] data = [%(data)s]"
msgstr ""
#: wix/main_window.py:399
msgid "unknown id, ignoring"
msgstr ""
#: wix/main_window.py:406
msgid "Success"
msgstr ""
#: wix/main_window.py:414 wix/main_window.py:517 wix/main_window.py:540
msgid "Error"
msgstr ""
#: wix/main_window.py:421
msgid "Form received"
msgstr ""
#: wix/main_window.py:422
msgid "Registration"
msgstr ""
#: wix/main_window.py:436
#, python-format
msgid "FIXME FIXME FIXME: type [%s] not implemented"
msgstr ""
#: wix/main_window.py:468
#, python-format
msgid "onContactActivated: %s"
msgstr ""
#: wix/main_window.py:486
msgid "Status change request"
msgstr ""
#: wix/main_window.py:490
msgid "Param request"
msgstr ""
#: wix/main_window.py:497
msgid "Add contact request"
msgstr ""
#: wix/main_window.py:499
msgid "Please enter new contact JID"
msgstr ""
#: wix/main_window.py:500
msgid "Adding a contact"
msgstr ""
#: wix/main_window.py:500
msgid "name@server.tld"
msgstr ""
#: wix/main_window.py:507
#, python-format
msgid "'%s' is an invalid JID !"
msgstr ""
#: wix/main_window.py:513
msgid "Remove contact request"
msgstr ""
#: wix/main_window.py:516 wix/main_window.py:539
msgid "You haven't selected any contact !"
msgstr ""
#: wix/main_window.py:524
#, python-format
msgid "Are you sure you want to delete %s from your roster list ?"
msgstr ""
#: wix/main_window.py:525
msgid "Contact suppression"
msgstr ""
#: wix/main_window.py:530
#, python-format
msgid "Unsubscribing %s presence"
msgstr ""
#: wix/main_window.py:536
msgid "Show contact's profile request"
msgstr ""
#: wix/main_window.py:552
#, python-format
msgid "Profile received: [%s]"
msgstr ""
#: wix/main_window.py:557
msgid "Find Gateways request"
msgstr ""
#: wix/main_window.py:569
msgid "Exiting..."
msgstr ""
#: wix/main_window.py:573
msgid "Tray Click"
msgstr ""
#: wix/param.py:32
msgid "Configuration"
msgstr ""
#: wix/param.py:78
msgid "FIXME FIXME FIXME"
msgstr ""
#: wix/profile_manager.py:47
msgid "Profile:"
msgstr ""
#: wix/profile_manager.py:52
msgid "New"
msgstr ""
#: wix/profile_manager.py:53
msgid "Delete"
msgstr ""
#: wix/profile_manager.py:60
msgid "Login"
msgstr ""
#: wix/profile_manager.py:67
msgid "Password:"
msgstr ""
#: wix/profile_manager.py:70
msgid "Connect"
msgstr ""
#: wix/profile_manager.py:96
msgid "Please enter the new profile name"
msgstr ""
#: wix/profile_manager.py:96
msgid "New profile"
msgstr ""
#: wix/profile_manager.py:101 wix/profile_manager.py:133
msgid "A profile name can't start with a @"
msgstr ""
#: wix/profile_manager.py:101 wix/profile_manager.py:133
msgid "Bad profile name"
msgstr ""
#: wix/profile_manager.py:112
#, python-format
msgid "Are you sure to delete the profile [%s]"
msgstr ""
#: wix/profile_manager.py:130
msgid "You must select a profile or create a new one before connecting"
msgstr ""
#: wix/profile_manager.py:130
msgid "No profile selected"
msgstr ""
#: wix/profile_manager.py:138
msgid "The profile is new, we create it"
msgstr ""
#: wix/profile_manager.py:144
msgid "Saving new JID"
msgstr ""
#: wix/profile_manager.py:147
msgid "Saving new password"
msgstr ""
#: wix/profile.py:35
msgid "Full Name"
msgstr ""
#: wix/profile.py:36
msgid "Nickname"
msgstr ""
#: wix/profile.py:37
msgid "Birthday"
msgstr ""
#: wix/profile.py:38
msgid "Phone #"
msgstr ""
#: wix/profile.py:39
msgid "Website"
msgstr ""
#: wix/profile.py:40
msgid "E-mail"
msgstr ""
#: wix/profile.py:41
msgid "Avatar"
msgstr ""
#: wix/profile.py:84
msgid "General"
msgstr ""
#: quick_frontend/quick_app.py:63
msgid "There is already one profile plugged (we are in single profile mode) !"
msgstr ""
#: quick_frontend/quick_app.py:67
msgid "The profile asked doesn't exist"
msgstr ""
#: quick_frontend/quick_app.py:70
msgid "The profile is already plugged"
msgstr ""
#: quick_frontend/quick_app.py:110
msgid "This profile is not plugged"
msgstr ""
#: quick_frontend/quick_app.py:121
msgid "Connected"
msgstr ""
#: quick_frontend/quick_app.py:128
msgid "Disconnected"
msgstr ""
#: quick_frontend/quick_app.py:156
#, python-format
msgid "presence update for %(jid)s (show=%(show)s, statuses=%(statuses)s)"
msgstr ""
#: quick_frontend/quick_app.py:177
#, python-format
msgid "Watched jid [%s] is connected !"
msgstr ""
#: quick_frontend/quick_app.py:205
#, python-format
msgid "The contact %s has accepted your subscription"
msgstr ""
#: quick_frontend/quick_app.py:205 quick_frontend/quick_app.py:211
msgid "Subscription confirmation"
msgstr ""
#: quick_frontend/quick_app.py:208
#, python-format
msgid "The contact %s has refused your subscription"
msgstr ""
#: quick_frontend/quick_app.py:208
msgid "Subscription refusal"
msgstr ""
#: quick_frontend/quick_app.py:211
#, python-format
msgid ""
"The contact %s wants to subscribe to your presence.\n"
"Do you accept ?"
msgstr ""
#: quick_frontend/quick_app.py:226
#, python-format
msgid "param update: [%(namespace)s] %(name)s = %(value)s"
msgstr ""
#: quick_frontend/quick_app.py:228
#, python-format
msgid "Changing JID to %s"
msgstr ""
#: quick_frontend/quick_chat.py:35
msgid "now we print history"
msgstr ""
#: quick_frontend/quick_contact_list.py:33
msgid "Contact List init"
msgstr ""
#: quick_frontend/quick_contact_management.py:67
msgid "Trying to get attribute for an unknown contact"
msgstr ""
#: quick_frontend/quick_contact_management.py:94
#, python-format
msgid "Trying to update an unknown contact: %s"
msgstr ""

View file

@ -23,12 +23,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
from window import Window
import os,pdb
def echo(message):
return
os.system('echo "'+str(message)+'" >> /tmp/toto')
class BoxSizer:
"""This class manage the position of the window like boxes."""
@ -66,22 +60,17 @@ class BoxSizer:
#if the last win is hidden, we expand previous visible one
current_row[-1][2] = current_row[-1][2] + (win.getX() - oriX)+win.getWidth()
else:
echo ("ajout de %s à current row" % (win.__class__.__name__))
current_row.append([win, h+y-oriY, w+x-oriX, oriY, oriX])
oriX=oriX+w
if oriX!=0:
echo ("ligne visible (dernier: %s)" % win.__class__.__name__)
oriY=oriY+h
visible_row.append(current_row)
elif visible_row:
#if all the row is empty, we take the space
for box in visible_row[-1]:
echo ("on augmente %s de %d" % (box[0].__class__.__name__, h))
box[1]=box[1]+h
oriY=oriY+h #this only happen if it's not the first visible row
else:
echo ("ligne invisible")
for row in visible_row:
for win in row:

View file

@ -75,7 +75,6 @@ class Chat(Window, QuickChat):
def update(self):
if self.isHidden():
echo ("fenetre cachee")
return
Window.update(self)
content=[] #what is really printed

View file

@ -20,6 +20,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
from quick_frontend.quick_app import QuickApp
from quick_frontend.quick_chat_list import QuickChatList
from quick_frontend.quick_contact_list import QuickContactList
from quick_frontend.quick_contact_management import QuickContactManagement
import curses
import pdb
from window import Window
@ -40,10 +44,6 @@ import fcntl
import struct
import termios
from boxsizer import BoxSizer
from quick_frontend.quick_chat_list import QuickChatList
from quick_frontend.quick_contact_list import QuickContactList
from quick_frontend.quick_app import QuickApp
from quick_frontend.quick_contact_management import QuickContactManagement
### logging configuration FIXME: put this elsewhere ###
@ -86,7 +86,7 @@ class ContactList(Window, QuickContactList):
self.host = host
self.jid_list = []
self.__index=0 #indicate which contact is selected (ie: where we are)
Window.__init__(self, stdscr, stdscr.getmaxyx()[0]-2,const_CONTACT_WIDTH,0,0, True, "Contact List", code=code)
Window.__init__(self, stdscr, stdscr.getmaxyx()[0]-2,const_CONTACT_WIDTH,0,0, True, _("Contact List"), code=code)
def resize(self, height, width, y, x):
Window.resize(self, height, width, y, x)
@ -238,22 +238,22 @@ class SortilegeApp(QuickApp):
def color(self, activate=True):
if activate:
debug ("Activation des couleurs")
debug (_("Activating colors"))
curses.init_pair(1, curses.COLOR_BLUE, curses.COLOR_BLACK)
curses.init_pair(2, curses.COLOR_RED, curses.COLOR_BLACK)
else:
debug ("Desactivation des couleurs")
debug (_("Deactivating colors"))
curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLACK)
curses.init_pair(2, curses.COLOR_WHITE, curses.COLOR_BLACK)
def showChat(self, chat):
debug ("show chat")
debug (_("show chat"))
if self.currentChat:
debug ("hiding %s", self.currentChat)
debug (_("hiding %s"), self.currentChat)
self.chat_wins[self.currentChat].hide()
self.currentChat=chat
debug ("showing %s", self.currentChat)
debug (_("showing %s"), self.currentChat)
self.chat_wins[self.currentChat].show()
self.chat_wins[self.currentChat].update()
@ -263,7 +263,7 @@ class SortilegeApp(QuickApp):
def onContactChoosed(self, jid_txt):
"""Called when a contact is selected in contact list."""
jid=JID(jid_txt)
debug ("contact choosed: %s", jid)
debug (_("contact choosed: %s"), jid)
self.showChat(jid.short)
self.statusBar.remove_item(jid.short)
if len(self.statusBar)==0:
@ -288,11 +288,11 @@ class SortilegeApp(QuickApp):
def askConfirmation(self, type, id, data):
#FIXME
info ("FIXME: askConfirmation not implemented")
info (_("FIXME: askConfirmation not implemented"))
def actionResult(self, type, id, data):
#FIXME
info ("FIXME: actionResult not implemented")
info (_("FIXME: actionResult not implemented"))
def newMessage(self, from_jid, msg, type, to_jid, profile):
QuickApp.newMessage(self, from_jid, msg, type, to_jid, profile)
@ -367,7 +367,7 @@ class SortilegeApp(QuickApp):
stdscr.erase()
height, width = stdscr.getmaxyx()
if height<5 and width<35:
stdscr.addstr("Pleeeeasse, I can't even breathe !")
stdscr.addstr(_("Pleeeeasse, I can't even breathe !"))
else:
for win in self.listWins:
win.resizeAdapt()

View file

@ -24,10 +24,6 @@ import curses
from window import Window
import os
def echo(message):
return
os.system('echo "'+str(message)+'" >> /tmp/toto')
class StatusBar(Window):
"""This class manage the edition of text"""
@ -49,9 +45,7 @@ class StatusBar(Window):
def update(self):
if self.isHidden():
echo ("status bar hidden")
return
echo ("update status bar")
Window.update(self)
x=0
for item in self.__items:

View file

@ -25,10 +25,6 @@ import os
import pdb
def echo(message):
return
os.system('echo "'+str(message)+'" >> /tmp/toto')
class Window():
def __init__(self, parent, height, width, y, x, border=False, title="", code="utf-8"):
self.__border=border
@ -93,7 +89,6 @@ class Window():
self.__coordAdjust(self.__coords)
height,width,y,x=self.__coords
echo ("newwin %d %d %d %d" % (height, width, y, x))
self.window = self.__parent.subwin(height, width, y, x)
self.defInsideCoord()

View file

@ -65,16 +65,15 @@ class Chat(wx.Frame, QuickChat):
def createMenus(self):
info("Creating menus")
actionMenu = wx.Menu()
actionMenu.Append(idSEND, "&SendFile CTRL-s"," Send a file to contact")
actionMenu.Append(idSEND, _("&SendFile CTRL-s"),_(" Send a file to contact"))
menuBar = wx.MenuBar()
menuBar.Append(actionMenu,"&Action")
menuBar.Append(actionMenu,_("&Action"))
self.SetMenuBar(menuBar)
#events
wx.EVT_MENU(self, idSEND, self.onSendFile)
def __del__(self):
debug ("Chat window destructor")
wx.Frame.__del__(self)
def onClose(self, event):
@ -108,11 +107,11 @@ class Chat(wx.Frame, QuickChat):
### events ###
def onSendFile(self, e):
debug("Send File")
filename = wx.FileSelector("Choose a file to send", flags = wx.FD_FILE_MUST_EXIST)
debug(_("Send File"))
filename = wx.FileSelector(_("Choose a file to send"), flags = wx.FD_FILE_MUST_EXIST)
if filename:
debug("filename: %s",filename)
debug(_("filename: %s"),filename)
full_jid = self.host.CM.get_full(self.to_jid)
id = self.host.bridge.sendFile(full_jid, filename)
self.host.waitProgress(id, "File Transfer", "Copying %s" % os.path.basename(filename))
self.host.waitProgress(id, _("File Transfer"), _("Copying %s") % os.path.basename(filename))

View file

@ -74,7 +74,7 @@ class Form(wx.Frame):
self.ctl_list.append({'name':name, 'type':type, 'control':ctrl})
sizer.Add(label)
else:
error("FIXME FIXME FIXME: type [%s] is not implemented" % type) #FIXME !
error(_("FIXME FIXME FIXME: type [%s] is not implemented") % type) #FIXME !
raise NotImplementedError
sizer.Add(ctrl, 1, flag=wx.EXPAND)
#self.ctl_list[(name, category)] = ctrl
@ -98,26 +98,24 @@ class Form(wx.Frame):
def onFormSubmitted(self, event):
"""Called when submit button is clicked"""
debug("Submitting form")
debug(_("Submitting form"))
data = []
for ctrl in self.ctl_list:
data.append((ctrl["name"], ctrl["control"].GetValue()))
print "submitting:",data
id = self.host.bridge.gatewayRegister("SUBMIT",self.target, data)
self.host.current_action_ids.add(id)
print "action id:",id
self.MakeModal(False)
self.Destroy()
def onFormCancelled(self, event):
"""Called when cancel button is clicked"""
debug("Cancelling form")
debug(_("Cancelling form"))
self.MakeModal(False)
self.Close()
def onClose(self, event):
"""Close event: we have to send the form."""
debug("close")
debug(_("close"))
self.MakeModal(False)
event.Skip()

View file

@ -27,11 +27,11 @@ from xml.dom import minidom
from logging import debug, info, error
from tools.jid import JID
WARNING_MSG = u"""Be careful ! Gateways allow you to use an external IM (legacy IM), so you can see your contact as jabber contacts.
But when you do this, all your messages go throught the external legacy IM server, it is a huge privacy issue (i.e.: all your messages throught the gateway can be monitored, recorded, analyzed by the external server, most of time a private company)."""
WARNING_MSG = _(u"""Be careful ! Gateways allow you to use an external IM (legacy IM), so you can see your contact as jabber contacts.
But when you do this, all your messages go throught the external legacy IM server, it is a huge privacy issue (i.e.: all your messages throught the gateway can be monitored, recorded, analyzed by the external server, most of time a private company).""")
class GatewaysManager(wx.Frame):
def __init__(self, host, gateways, title="Gateways manager", server=None):
def __init__(self, host, gateways, title=_("Gateways manager"), server=None):
super(GatewaysManager, self).__init__(None, title=title)
self.host = host
@ -86,10 +86,10 @@ class GatewaysManager(wx.Frame):
self.ext_server_panel.SetAutoLayout(True)
self.sizer.Add(self.ext_server_panel, 0, flag=wx.EXPAND)
ext_server_label = wx.StaticText(self.ext_server_panel, -1, "Use external XMPP server: ")
ext_server_label = wx.StaticText(self.ext_server_panel, -1, _("Use external XMPP server: "))
ext_server_label.SetFont(wx.ITALIC_FONT)
self.ext_server_text = wx.TextCtrl(self.ext_server_panel, -1)
ext_server_button = wx.Button(self.ext_server_panel, -1, "GO !")
ext_server_button = wx.Button(self.ext_server_panel, -1, _("GO !"))
self.ext_server_panel.Bind(wx.EVT_BUTTON, self.browseExternalServer, ext_server_button)
self.ext_server_panel.sizer.Add(ext_server_label)
@ -104,7 +104,7 @@ class GatewaysManager(wx.Frame):
def browseExternalServer(self, event):
"""Open the gateway manager on given server"""
server = self.ext_server_text.GetValue()
debug("Opening gateways manager on [%s]" % server)
debug(_("Opening gateways manager on [%s]") % server)
id = self.host.bridge.findGateways(server)
self.host.current_action_ids.add(id)
self.host.current_action_ids_cb[id] = self.host.onGatewaysFound
@ -127,7 +127,7 @@ class GatewaysManager(wx.Frame):
#Then the transport type message
type_label_txt = 'Unknown IM'
type_label_txt = _('Unknown IM')
if param['type'] == 'irc':
type_label_txt = "Internet Relay Chat"
@ -159,7 +159,6 @@ class GatewaysManager(wx.Frame):
gateway_jid = event.GetEventObject().gateway_jid
id = self.host.bridge.in_band_register(gateway_jid)
self.host.current_action_ids.add(id)
print "register id:",id
self.MakeModal(False)
self.Destroy()
@ -168,15 +167,14 @@ class GatewaysManager(wx.Frame):
gateway_jid = event.GetEventObject().gateway_jid
id = self.host.bridge.gatewayRegister("CANCEL",gateway_jid, None)
self.host.current_action_ids.add(id)
print "unregister id:",id
self.MakeModal(False)
self.Destroy()
reg_button = wx.Button(self.panel, -1, "Register", size=wx.Size(-1, 8))
reg_button = wx.Button(self.panel, -1, _("Register"), size=wx.Size(-1, 8))
reg_button.SetFont(self.button_font)
reg_button.gateway_jid = JID(gateway)
self.panel.Bind(wx.EVT_BUTTON, register_cb, reg_button)
unreg_button = wx.Button(self.panel, -1, "Unregister", size=wx.Size(-1, 8))
unreg_button = wx.Button(self.panel, -1, _("Unregister"), size=wx.Size(-1, 8))
unreg_button.SetFont(self.button_font)
unreg_button.gateway_jid = JID(gateway)
self.panel.Bind(wx.EVT_BUTTON, unregister_cb, unreg_button)
@ -190,7 +188,7 @@ class GatewaysManager(wx.Frame):
def onClose(self, event):
"""Close event"""
debug("close")
debug(_("close"))
self.MakeModal(False)
event.Skip()

View file

@ -20,6 +20,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
from quick_frontend.quick_chat_list import QuickChatList
from quick_frontend.quick_app import QuickApp
from quick_frontend.quick_contact_list import QuickContactList
from quick_frontend.quick_contact_management import QuickContactManagement
import wx
from chat import Chat
from param import Param
@ -32,10 +36,6 @@ import os.path
import pdb
from tools.jid import JID
from logging import debug, info, error
from quick_frontend.quick_chat_list import QuickChatList
from quick_frontend.quick_contact_list import QuickContactList
from quick_frontend.quick_app import QuickApp
from quick_frontend.quick_contact_management import QuickContactManagement
from cgi import escape
import sys
@ -52,11 +52,11 @@ idREMOVE_CONTACT,\
idSHOW_PROFILE,\
idFIND_GATEWAYS = range(8)
const_DEFAULT_GROUP = "Unclassed"
const_STATUS = [("", "Online", None),
("chat", "Free for chat", "green"),
("away", "AFK", "brown"),
("dnd", "DND", "red"),
("xa", "Away", "red")]
const_STATUS = [("", _("Online"), None),
("chat", _("Free for chat"), "green"),
("away", _("AFK"), "brown"),
("dnd", _("DND"), "red"),
("xa", _("Away"), "red")]
class ChatList(QuickChatList):
"""This class manage the list of chat windows"""
@ -90,7 +90,7 @@ class ContactList(wx.SimpleHtmlListBox, QuickContactList):
return result
def replace(self, jid):
debug("update %s" % jid)
debug(_("update %s") % jid)
if not self.__find_idx(jid):
self.add(jid)
else:
@ -155,7 +155,7 @@ class ContactList(wx.SimpleHtmlListBox, QuickContactList):
def add(self, jid):
"""add a contact to the list"""
debug ("adding %s",jid)
debug (_("adding %s"),jid)
groups = self.CM.getAttr(jid, 'groups')
if not groups:
idx = self.Append(self.__presentItem(jid), jid)
@ -174,7 +174,7 @@ class ContactList(wx.SimpleHtmlListBox, QuickContactList):
def remove(self, jid):
"""remove a contact from the list"""
debug ("removing %s",jid)
debug (_("removing %s"),jid)
list_idx = self.__find_idx(jid)
list_idx.reverse() #we me make some deletions, we have to reverse the order
for i in list_idx:
@ -254,7 +254,7 @@ class MainWindow(wx.Frame, QuickApp):
#tray icon
ticon = wx.Icon(IMAGE_DIR+'/crystal/tray_icon.xpm', wx.BITMAP_TYPE_XPM)
self.tray_icon = wx.TaskBarIcon()
self.tray_icon.SetIcon(ticon, "Wix jabber client")
self.tray_icon.SetIcon(ticon, _("Wix jabber client"))
wx.EVT_TASKBAR_LEFT_UP(self.tray_icon, self.onTrayClick)
@ -283,24 +283,24 @@ class MainWindow(wx.Frame, QuickApp):
self.bridge.connect(profile_key)
def createMenus(self):
info("Creating menus")
info(_("Creating menus"))
connectMenu = wx.Menu()
connectMenu.Append(idCONNECT, "&Connect CTRL-c"," Connect to the server")
connectMenu.Append(idDISCONNECT, "&Disconnect CTRL-d"," Disconnect from the server")
connectMenu.Append(idPARAM,"&Parameters"," Configure the program")
connectMenu.Append(idCONNECT, _("&Connect CTRL-c"),_(" Connect to the server"))
connectMenu.Append(idDISCONNECT, _("&Disconnect CTRL-d"),_(" Disconnect from the server"))
connectMenu.Append(idPARAM,_("&Parameters"),_(" Configure the program"))
connectMenu.AppendSeparator()
connectMenu.Append(idEXIT,"E&xit"," Terminate the program")
connectMenu.Append(idEXIT,_("E&xit"),_(" Terminate the program"))
contactMenu = wx.Menu()
contactMenu.Append(idADD_CONTACT, "&Add contact"," Add a contact to your list")
contactMenu.Append(idREMOVE_CONTACT, "&Remove contact"," Remove the selected contact from your list")
contactMenu.Append(idADD_CONTACT, _("&Add contact"),_(" Add a contact to your list"))
contactMenu.Append(idREMOVE_CONTACT, _("&Remove contact"),_(" Remove the selected contact from your list"))
contactMenu.AppendSeparator()
contactMenu.Append(idSHOW_PROFILE, "&Show profile", " Show contact's profile")
contactMenu.Append(idSHOW_PROFILE, _("&Show profile"), _(" Show contact's profile"))
communicationMenu = wx.Menu()
communicationMenu.Append(idFIND_GATEWAYS, "&Find Gateways"," Find gateways to legacy IM")
communicationMenu.Append(idFIND_GATEWAYS, _("&Find Gateways"),_(" Find gateways to legacy IM"))
self.menuBar = wx.MenuBar()
self.menuBar.Append(connectMenu,"&General")
self.menuBar.Append(contactMenu,"&Contacts")
self.menuBar.Append(communicationMenu,"&Communication")
self.menuBar.Append(connectMenu,_("&General"))
self.menuBar.Append(contactMenu,_("&Contacts"))
self.menuBar.Append(communicationMenu,_("&Communication"))
self.SetMenuBar(self.menuBar)
#events
@ -339,7 +339,7 @@ class MainWindow(wx.Frame, QuickApp):
flags = wx.YES_NO | wx.ICON_QUESTION
else:
flags = wx.OK | wx.ICON_INFORMATION
error('unmanaged dialog type: %s', type)
error(_('unmanaged dialog type: %s'), type)
dlg = wx.MessageDialog(self, message, title, flags)
answer = dlg.ShowModal()
dlg.Destroy()
@ -357,21 +357,21 @@ class MainWindow(wx.Frame, QuickApp):
def askConfirmation(self, type, id, data):
#TODO: refactor this in QuickApp
debug ("Confirmation asked")
debug (_("Confirmation asked"))
answer_data={}
if type == "FILE_TRANSFERT":
debug ("File transfert confirmation asked")
dlg = wx.MessageDialog(self, "The contact %s wants to send you the file %s\nDo you accept ?" % (data["from"], data["filename"]),
'File Request',
debug (_("File transfert confirmation asked"))
dlg = wx.MessageDialog(self, _("The contact %(jid)s wants to send you the file %(filename)s\nDo you accept ?") % {'jid':data["from"], 'filename':data["filename"]},
_('File Request'),
wx.YES_NO | wx.ICON_QUESTION
)
answer=dlg.ShowModal()
if answer==wx.ID_YES:
filename = wx.FileSelector("Where do you want to save the file ?", flags = wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT)
filename = wx.FileSelector(_("Where do you want to save the file ?"), flags = wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT)
if filename:
answer_data["dest_path"] = filename
self.bridge.confirmationAnswer(id, True, answer_data)
self.waitProgress(id, "File Transfer", "Copying %s" % os.path.basename(filename))
self.waitProgress(id, _("File Transfer"), _("Copying %s") % os.path.basename(filename))
else:
answer = wx.ID_NO
if answer==wx.ID_NO:
@ -380,9 +380,9 @@ class MainWindow(wx.Frame, QuickApp):
dlg.Destroy()
elif type == "YES/NO":
debug ("Yes/No confirmation asked")
debug (_("Yes/No confirmation asked"))
dlg = wx.MessageDialog(self, data["message"],
'Confirmation',
_('Confirmation'),
wx.YES_NO | wx.ICON_QUESTION
)
answer=dlg.ShowModal()
@ -394,16 +394,16 @@ class MainWindow(wx.Frame, QuickApp):
dlg.Destroy()
def actionResult(self, type, id, data):
debug ("actionResult: type = [%s] id = [%s] data = [%s]" % (type, id, data))
debug (_("actionResult: type = [%(type)s] id = [%(id)s] data = [%(data)s]") % {'type':type, 'id':id, 'data':data})
if not id in self.current_action_ids:
debug ('unknown id, ignoring')
debug (_('unknown id, ignoring'))
return
if type == "SUPPRESS":
self.current_action_ids.remove(id)
elif type == "SUCCESS":
self.current_action_ids.remove(id)
dlg = wx.MessageDialog(self, data["message"],
'Success',
_('Success'),
wx.OK | wx.ICON_INFORMATION
)
dlg.ShowModal()
@ -411,15 +411,15 @@ class MainWindow(wx.Frame, QuickApp):
elif type == "ERROR":
self.current_action_ids.remove(id)
dlg = wx.MessageDialog(self, data["message"],
'Error',
_('Error'),
wx.OK | wx.ICON_ERROR
)
dlg.ShowModal()
dlg.Destroy()
elif type == "FORM":
self.current_action_ids.remove(id)
debug ("Form received")
form=Form(self, title='Registration', target = data['target'], type = data['type'], xml_data = data['xml'])
debug (_("Form received"))
form=Form(self, title=_('Registration'), target = data['target'], type = data['type'], xml_data = data['xml'])
elif type == "RESULT":
self.current_action_ids.remove(id)
if self.current_action_ids_cb.has_key(id):
@ -433,7 +433,7 @@ class MainWindow(wx.Frame, QuickApp):
del self.current_action_ids_cb[id]
callback(data)
else:
error ("FIXME FIXME FIXME: type [%s] not implemented" % type)
error (_("FIXME FIXME FIXME: type [%s] not implemented") % type)
raise NotImplementedError
@ -465,7 +465,7 @@ class MainWindow(wx.Frame, QuickApp):
### events ###
def onContactActivated(self, jid):
debug ("onContactActivated: %s", jid)
debug (_("onContactActivated: %s"), jid)
if self.chat_wins[jid.short].IsShown():
self.chat_wins[jid.short].Hide()
else:
@ -483,61 +483,61 @@ class MainWindow(wx.Frame, QuickApp):
self.bridge.setPresence(show=show, statuses={'default':status}) #FIXME: manage multilingual statuses
def onStatusChange(self, e):
debug("Status change request")
debug(_("Status change request"))
self.__updateStatus()
def onParam(self, e):
debug("Param request")
debug(_("Param request"))
param=Param(self)
def onExit(self, e):
self.Close()
def onAddContact(self, e):
debug("Add contact request")
debug(_("Add contact request"))
dlg = wx.TextEntryDialog(
self, 'Please enter new contact JID',
'Adding a contact', 'name@server.tld')
self, _('Please enter new contact JID'),
_('Adding a contact'), _('name@server.tld'))
if dlg.ShowModal() == wx.ID_OK:
jid=JID(dlg.GetValue())
if jid.is_valid():
self.bridge.addContact(jid.short)
else:
error ("'%s' is an invalid JID !", jid)
error (_("'%s' is an invalid JID !"), jid)
#TODO: notice the user
dlg.Destroy()
def onRemoveContact(self, e):
debug("Remove contact request")
debug(_("Remove contact request"))
target = self.contactList.getSelection()
if not target:
dlg = wx.MessageDialog(self, "You haven't selected any contact !",
'Error',
dlg = wx.MessageDialog(self, _("You haven't selected any contact !"),
_('Error'),
wx.OK | wx.ICON_ERROR
)
dlg.ShowModal()
dlg.Destroy()
return
dlg = wx.MessageDialog(self, "Are you sure you want to delete %s from your roster list ?" % target.short,
'Contact suppression',
dlg = wx.MessageDialog(self, _("Are you sure you want to delete %s from your roster list ?") % target.short,
_('Contact suppression'),
wx.YES_NO | wx.ICON_QUESTION
)
if dlg.ShowModal() == wx.ID_YES:
info("Unsubscribing %s presence", target.short)
info(_("Unsubscribing %s presence"), target.short)
self.bridge.delContact(target.short)
dlg.Destroy()
def onShowProfile(self, e):
debug("Show contact's profile request")
debug(_("Show contact's profile request"))
target = self.contactList.getSelection()
if not target:
dlg = wx.MessageDialog(self, "You haven't selected any contact !",
'Error',
dlg = wx.MessageDialog(self, _("You haven't selected any contact !"),
_('Error'),
wx.OK | wx.ICON_ERROR
)
dlg.ShowModal()
@ -549,12 +549,12 @@ class MainWindow(wx.Frame, QuickApp):
def onProfileReceived(self, data):
"""Called when a profile is received"""
debug ('Profile received: [%s]' % data)
debug (_('Profile received: [%s]') % data)
profile=Profile(self, data)
def onFindGateways(self, e):
debug("Find Gateways request")
debug(_("Find Gateways request"))
id = self.bridge.findGateways(self.profiles[self.profile]['whoami'].domain)
self.current_action_ids.add(id)
self.current_action_ids_cb[id] = self.onGatewaysFound
@ -566,11 +566,11 @@ class MainWindow(wx.Frame, QuickApp):
gatewayManager = GatewaysManager(self, data, server=target)
def onClose(self, e):
info("Exiting...")
info(_("Exiting..."))
e.Skip()
def onTrayClick(self, e):
debug("Tray Click")
debug(_("Tray Click"))
if self.IsShown():
self.Hide()
else:

Some files were not shown because too many files have changed in this diff Show more