# HG changeset patch # User Goffi # Date 1267781590 -39600 # Node ID 8f2ed279784b86fd3f102aa16a2782f77c4d7a77 # Parent 86f1f7f6d3328fa5a31574c80fcb501742da1d86 i18n - gettext support added in frontends - first draft of frontends french translation diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/fr.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/frontends/fr.po Fri Mar 05 20:33:10 2010 +1100 @@ -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 , 2009, 2010. +# Goffi , 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 \n" +"Language-Team: French \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" diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/i18n/fr/LC_MESSAGES/sat_frontend.mo Binary file frontends/i18n/fr/LC_MESSAGES/sat_frontend.mo has changed diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/jp/fr.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/frontends/jp/fr.po Fri Mar 05 20:33:10 2010 +1100 @@ -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 , 2009, 2010. +# Goffi , 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 \n" +"Language-Team: French \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" diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/jp/i18n/fr/LC_MESSAGES/jp.mo Binary file frontends/jp/i18n/fr/LC_MESSAGES/jp.mo has changed diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/jp/jp --- a/frontends/jp/jp Wed Mar 03 17:12:23 2010 +1100 +++ b/frontends/jp/jp Fri Mar 05 20:33:10 2010 +1100 @@ -45,6 +45,9 @@ 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 @@ 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 @@ 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 @@ #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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ try: self.loop.run() except KeyboardInterrupt: - info("User interruption: good bye") + info(_("User interruption: good bye")) if __name__ == "__main__": diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/jp/jp.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/frontends/jp/jp.po Fri Mar 05 20:33:10 2010 +1100 @@ -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 , 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 \n" +"Language-Team: LANGUAGE \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 "" diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/quick_frontend/quick_app.py --- a/frontends/quick_frontend/quick_app.py Wed Mar 03 17:12:23 2010 +1100 +++ b/frontends/quick_frontend/quick_app.py Fri Mar 05 20:33:10 2010 +1100 @@ -24,6 +24,9 @@ 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 @@ 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 @@ 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 @@ """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 @@ 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 @@ #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 @@ 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 @@ 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() diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/quick_frontend/quick_chat.py --- a/frontends/quick_frontend/quick_chat.py Wed Mar 03 17:12:23 2010 +1100 +++ b/frontends/quick_frontend/quick_chat.py Fri Mar 05 20:33:10 2010 +1100 @@ -32,7 +32,7 @@ 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() diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/quick_frontend/quick_contact_list.py --- a/frontends/quick_frontend/quick_contact_list.py Wed Mar 03 17:12:23 2010 +1100 +++ b/frontends/quick_frontend/quick_contact_list.py Fri Mar 05 20:33:10 2010 +1100 @@ -30,7 +30,7 @@ """ @param CM: instance of QuickContactManagement """ - debug("Contact List init") + debug(_("Contact List init")) self.CM = CM def clear_contacts(self, jid): diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/quick_frontend/quick_contact_management.py --- a/frontends/quick_frontend/quick_contact_management.py Wed Mar 03 17:12:23 2010 +1100 +++ b/frontends/quick_frontend/quick_contact_management.py Fri Mar 05 20:33:10 2010 +1100 @@ -64,7 +64,7 @@ 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 @@ 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] diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/sat_frontend.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/frontends/sat_frontend.po Fri Mar 05 20:33:10 2010 +1100 @@ -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 , 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 \n" +"Language-Team: LANGUAGE \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 "" diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/sortilege/boxsizer.py --- a/frontends/sortilege/boxsizer.py Wed Mar 03 17:12:23 2010 +1100 +++ b/frontends/sortilege/boxsizer.py Fri Mar 05 20:33:10 2010 +1100 @@ -23,12 +23,6 @@ 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 @@ #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: diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/sortilege/chat.py --- a/frontends/sortilege/chat.py Wed Mar 03 17:12:23 2010 +1100 +++ b/frontends/sortilege/chat.py Fri Mar 05 20:33:10 2010 +1100 @@ -75,7 +75,6 @@ def update(self): if self.isHidden(): - echo ("fenetre cachee") return Window.update(self) content=[] #what is really printed diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/sortilege/sortilege --- a/frontends/sortilege/sortilege Wed Mar 03 17:12:23 2010 +1100 +++ b/frontends/sortilege/sortilege Fri Mar 05 20:33:10 2010 +1100 @@ -20,6 +20,10 @@ """ +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 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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() diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/sortilege/statusbar.py --- a/frontends/sortilege/statusbar.py Wed Mar 03 17:12:23 2010 +1100 +++ b/frontends/sortilege/statusbar.py Fri Mar 05 20:33:10 2010 +1100 @@ -24,10 +24,6 @@ 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 @@ 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: diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/sortilege/window.py --- a/frontends/sortilege/window.py Wed Mar 03 17:12:23 2010 +1100 +++ b/frontends/sortilege/window.py Fri Mar 05 20:33:10 2010 +1100 @@ -25,10 +25,6 @@ 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 @@ 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() diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/wix/chat.py --- a/frontends/wix/chat.py Wed Mar 03 17:12:23 2010 +1100 +++ b/frontends/wix/chat.py Fri Mar 05 20:33:10 2010 +1100 @@ -65,16 +65,15 @@ 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 @@ ### 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)) diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/wix/form.py --- a/frontends/wix/form.py Wed Mar 03 17:12:23 2010 +1100 +++ b/frontends/wix/form.py Fri Mar 05 20:33:10 2010 +1100 @@ -74,7 +74,7 @@ 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 @@ 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() diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/wix/gateways.py --- a/frontends/wix/gateways.py Wed Mar 03 17:12:23 2010 +1100 +++ b/frontends/wix/gateways.py Fri Mar 05 20:33:10 2010 +1100 @@ -27,11 +27,11 @@ 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 @@ 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 @@ 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 @@ #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 @@ 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 @@ 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 @@ def onClose(self, event): """Close event""" - debug("close") + debug(_("close")) self.MakeModal(False) event.Skip() diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/wix/main_window.py --- a/frontends/wix/main_window.py Wed Mar 03 17:12:23 2010 +1100 +++ b/frontends/wix/main_window.py Fri Mar 05 20:33:10 2010 +1100 @@ -20,6 +20,10 @@ """ +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 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ #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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ ### 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 @@ 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 @@ 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 @@ 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: diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/wix/param.py --- a/frontends/wix/param.py Wed Mar 03 17:12:23 2010 +1100 +++ b/frontends/wix/param.py Fri Mar 05 20:33:10 2010 +1100 @@ -29,7 +29,7 @@ class Param(wx.Frame): - def __init__(self, host, title="Configuration"): + def __init__(self, host, title=_("Configuration")): super(Param, self).__init__(None, title=title) self.host = host @@ -75,7 +75,7 @@ elif type=="button": ctrl = wx.Button(panel, -1, value) else: - error("FIXME FIXME FIXME") #FIXME ! + error(_("FIXME FIXME FIXME")) #FIXME ! raise NotImplementedError ctrl.param_id=(name, category) sizer.Add(ctrl, 1, flag=wx.EXPAND) @@ -107,12 +107,10 @@ def onButtonClicked(self, event): """Called when a paramated is modified""" self.__save_parameters() - print "Button Clicked (%s/%s)" % event.GetEventObject().param_id name, category = event.GetEventObject().param_id data = {"name":name, "category":category} id = self.host.bridge.launchAction("button", data) self.host.current_action_ids.add(id) - print "action id:",id event.Skip() def __save_parameters(self): @@ -122,7 +120,7 @@ def onClose(self, event): """Close event: we have to save the params.""" - debug("close") + debug(_("close")) #now we save the modifier params self.__save_parameters() diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/wix/profile.py --- a/frontends/wix/profile.py Wed Mar 03 17:12:23 2010 +1100 +++ b/frontends/wix/profile.py Fri Mar 05 20:33:10 2010 +1100 @@ -32,13 +32,13 @@ super(Profile, self).__init__(None, title=title) self.host = host - self.name_dict = { 'fullname': 'Full Name', - 'nick' : 'Nickname', - 'birthday' : 'Birthday', - 'phone' : 'Phone #', - 'website' : 'Website', - 'email' : 'E-mail', - 'avatar' : 'Avatar' + self.name_dict = { 'fullname': _('Full Name'), + 'nick' : _('Nickname'), + 'birthday' : _('Birthday'), + 'phone' : _('Phone #'), + 'website' : _('Website'), + 'email' : _('E-mail'), + 'avatar' : _('Avatar') } self.ctl_list = {} # usefull to access ctrl, key = (name) @@ -81,12 +81,12 @@ - self.notebook.AddPage(generaltab, "General") + self.notebook.AddPage(generaltab, _("General")) def onClose(self, event): """Close event""" - debug("close") + debug(_("close")) self.MakeModal(False) event.Skip() diff -r 86f1f7f6d332 -r 8f2ed279784b frontends/wix/profile_manager.py --- a/frontends/wix/profile_manager.py Wed Mar 03 17:12:23 2010 +1100 +++ b/frontends/wix/profile_manager.py Fri Mar 05 20:33:10 2010 +1100 @@ -44,30 +44,30 @@ self.panel_id = wx self.sizer.Add(wx.Window(self, -1), 1) - self.sizer.Add(wx.StaticText(self, -1, "Profile:"), 0, flag=wx.ALIGN_CENTER) + self.sizer.Add(wx.StaticText(self, -1, _("Profile:")), 0, flag=wx.ALIGN_CENTER) self.sizer.Add(self.profile_name, 0, flag=wx.ALIGN_CENTER) button_panel = wx.Panel(self) button_panel.sizer = wx.BoxSizer(wx.HORIZONTAL) button_panel.SetSizer(button_panel.sizer) - button_new = wx.Button(button_panel, -1, "New") - button_del = wx.Button(button_panel, -1, "Delete") + button_new = wx.Button(button_panel, -1, _("New")) + button_del = wx.Button(button_panel, -1, _("Delete")) button_panel.sizer.Add(button_new) button_panel.sizer.Add(button_del) self.sizer.Add(button_panel, flag=wx.CENTER) self.Bind(wx.EVT_BUTTON, self.onNewProfile, button_new) self.Bind(wx.EVT_BUTTON, self.onDeleteProfile, button_del) - login_box = wx.StaticBox(self, -1, "Login") + login_box = wx.StaticBox(self, -1, _("Login")) self.login_sizer = wx.StaticBoxSizer(login_box, wx.VERTICAL) self.sizer.Add(self.login_sizer, 1, wx.EXPAND | wx.ALL) self.login_jid = wx.TextCtrl(self, -1) self.login_sizer.Add(wx.StaticText(self, -1, "JID:"), 0, flag=wx.ALIGN_CENTER) self.login_sizer.Add(self.login_jid, flag=wx.EXPAND) self.login_pass = wx.TextCtrl(self, -1, style = wx.TE_PASSWORD) - self.login_sizer.Add(wx.StaticText(self, -1, "Password:"), 0, flag=wx.ALIGN_CENTER) + self.login_sizer.Add(wx.StaticText(self, -1, _("Password:")), 0, flag=wx.ALIGN_CENTER) self.login_sizer.Add(self.login_pass, flag=wx.EXPAND) - loggin_button = wx.Button(self, -1, "Connect") + loggin_button = wx.Button(self, -1, _("Connect")) self.Bind(wx.EVT_BUTTON, self.onConnectButton, loggin_button) self.login_sizer.Add(loggin_button, flag=wx.ALIGN_CENTER) @@ -93,12 +93,12 @@ def onNewProfile(self, event): - dlg = wx.TextEntryDialog(self, "Please enter the new profile name", "New profile", style = wx.OK | wx.CANCEL) + dlg = wx.TextEntryDialog(self, _("Please enter the new profile name"), _("New profile"), style = wx.OK | wx.CANCEL) if dlg.ShowModal() == wx.ID_OK: name = dlg.GetValue() if name: if name[0]=='@': - wx.MessageDialog(self, "A profile name can't start with a @", "Bad profile name", wx.ICON_ERROR).ShowModal() + wx.MessageDialog(self, _("A profile name can't start with a @"), _("Bad profile name"), wx.ICON_ERROR).ShowModal() else: profile = self.host.bridge.createProfile(name) self.__refillProfiles() @@ -109,7 +109,7 @@ name = self.profile_name.GetValue() if not name: return - dlg = wx.MessageDialog(self, "Are you sure to delete the profile [%s]" % name, "Confirmation", wx.ICON_QUESTION | wx.YES_NO) + dlg = wx.MessageDialog(self, _("Are you sure to delete the profile [%s]") % name, _("Confirmation"), wx.ICON_QUESTION | wx.YES_NO) if dlg.ShowModal() == wx.ID_YES: self.host.bridge.deleteProfile(name) self.__refillProfiles() @@ -127,24 +127,24 @@ """Called when the Connect button is pressed""" name = self.profile_name.GetValue() if not name: - wx.MessageDialog(self, "You must select a profile a create a new one before connecting", "No profile selected", wx.ICON_ERROR).ShowModal() + wx.MessageDialog(self, _("You must select a profile or create a new one before connecting"), _("No profile selected"), wx.ICON_ERROR).ShowModal() return if name[0]=='@': - wx.MessageDialog(self, "A profile name can't start with a @", "Bad profile name", wx.ICON_ERROR).ShowModal() + wx.MessageDialog(self, _("A profile name can't start with a @"), _("Bad profile name"), wx.ICON_ERROR).ShowModal() return profile = None # gof profile = self.host.bridge.getProfileName(name) if not profile: - debug("The profile is new, we create it") + debug(_("The profile is new, we create it")) old_jid = self.host.bridge.getParamA("JabberID", "Connection", profile_key=profile) old_pass = self.host.bridge.getParamA("Password", "Connection", profile_key=profile) new_jid = self.login_jid.GetValue() new_pass = self.login_pass.GetValue() if old_jid != new_jid: - debug('Saving new JID') + debug(_('Saving new JID')) self.host.bridge.setParam("JabberID", new_jid, "Connection", profile) if old_pass != new_pass: - debug('Saving new password') + debug(_('Saving new password')) self.host.bridge.setParam("JabberID", new_pass, "Connection", profile) self.host.plug_profile(name)