i18n
- gettext support added in frontends - first draft of frontends french translation
This commit is contained in:
parent
4a293cdaa1
commit
e3ebafd8f3
23 changed files with 1701 additions and 196 deletions
620
frontends/fr.po
Normal file
620
frontends/fr.po
Normal 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"
|
||||
BIN
frontends/i18n/fr/LC_MESSAGES/sat_frontend.mo
Normal file
BIN
frontends/i18n/fr/LC_MESSAGES/sat_frontend.mo
Normal file
Binary file not shown.
164
frontends/jp/fr.po
Normal file
164
frontends/jp/fr.po
Normal 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"
|
||||
BIN
frontends/jp/i18n/fr/LC_MESSAGES/jp.mo
Normal file
BIN
frontends/jp/i18n/fr/LC_MESSAGES/jp.mo
Normal file
Binary file not shown.
|
|
@ -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
142
frontends/jp/jp.po
Normal 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 ""
|
||||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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
603
frontends/sat_frontend.po
Normal 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 ""
|
||||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
||||
|
|
|
|||
|
|
@ -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
Loading…
Reference in a new issue