diff options
10 files changed, 227 insertions, 80 deletions
diff --git a/OpenPGP-Keychain/res/raw-fr/help_about.html b/OpenPGP-Keychain/res/raw-fr/help_about.html index 7db2f83de..9db2820e8 100644 --- a/OpenPGP-Keychain/res/raw-fr/help_about.html +++ b/OpenPGP-Keychain/res/raw-fr/help_about.html @@ -2,40 +2,40 @@ <head></head> <body> <p><a href="http://sufficientlysecure.org/keychain">http://sufficientlysecure.org/keychain</a></p> -<p><a href="http://sufficientlysecure.org/keychain">OpenPGP Keychain</a> is an OpenPGP implementation for Android. The development began as a fork of Android Privacy Guard (APG).</p> -<p>License: GPLv3+</p> +<p><a href="http://sufficientlysecure.org/keychain">Le porte-clefs OpenPGP</a> est une implémentation d'OpenPGP pour Android. Le développement a commencé comme bifurcation d'Android Privacy Guard (APG).</p> +<p>Licence : GPLv3+</p> -<h2>Developers OpenPGP Keychain</h2> +<h2>Les développeurs du Porte-clefs OpenPGP</h2> <ul> -<li>Dominik Schürmann (Lead developer)</li> -<li>Ash Hughes (crypto patches)</li> +<li>Dominik Schürmann (développeur principal)</li> +<li>Ash Hughes (correctif crypto)</li> <li>Brian C. Barnes</li> -<li>Bahtiar 'kalkin' Gadimov (UI)</li> +<li>Bahtiar « kalkin » Gadimov (interface utilisateur)</li> </ul> -<h2>Developers APG 1.x</h2> +<h2>Les développeurs d'APG 1.x</h2> <ul> -<li>'Thialfihar' (Lead developer)</li> -<li>'Senecaso' (QRCode, sign key, upload key)</li> +<li>« Thialfihar (développeur principal)</li> +<li>« Senecaso » (Code QR, signer, téléverser la clef)</li> <li>Oliver Runge</li> <li>Markus Doits</li> </ul> -<h2>Libraries</h2> +<h2>Bibliothèques</h2> <ul> <li> -<a href="http://actionbarsherlock.com">ActionBarSherlock</a> (Apache License v2)</li> +<a href="http://actionbarsherlock.com">ActionBarSherlock</a> (Licence Apache v2)</li> <li> -<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li> +<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Licence Apache v2)</li> <li> -<a href="https://github.com/Bearded-Hen/Android-Bootstrap">Android-Bootstrap</a> (MIT License)</li> +<a href="https://github.com/Bearded-Hen/Android-Bootstrap">Android-Bootstrap</a> ( Licence MIT)</li> <li> -<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li> +<a href="http://code.google.com/p/zxing/">ZXing</a> (Licence Apache v2)</li> <li> -<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li> +<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (Licence MIT X11)</li> <li> -<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li> -<li>Icons from <a href="http://rrze-icon-set.berlios.de/">RRZE Icon Set</a> (Creative Commons Attribution Share-Alike licence 3.0)</li> -<li>Icons from <a href="http://tango.freedesktop.org/">Tango Icon Set</a> (Public Domain)</li> +<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Licence Apache v2)</li> +<li>Icons from <a href="http://rrze-icon-set.berlios.de/">RRZE Icon Set</a> (Licence Creative Commons Paternité - Partage des Conditions Initiales à l'Identique 3.0)</li> +<li>Icône du <a href="http://tango.freedesktop.org/">jeu d'icônes Tango</a> (domaine public)</li> </ul> </body> </html> diff --git a/OpenPGP-Keychain/res/raw-fr/help_changelog.html b/OpenPGP-Keychain/res/raw-fr/help_changelog.html index 011ffa50f..138483c14 100644 --- a/OpenPGP-Keychain/res/raw-fr/help_changelog.html +++ b/OpenPGP-Keychain/res/raw-fr/help_changelog.html @@ -3,46 +3,46 @@ <body> <h2>2.1.1</h2> <ul> -<li>API Updates, preparation for k9mail integration</li> +<li>Mise à jour de l'API, préparation à l'intégration à K-9 Mail</li> </ul> <h2>2.1</h2> <ul> -<li>Lots of bug fixes</li> -<li>New API for developers</li> -<li>PRNG bug fix by Google</li> +<li>Beaucoup de bogues corrigés</li> +<li>Nouvelle API pour les développeurs</li> +<li>Correction du blogue PRNG par Google</li> </ul> <h2>2.0</h2> <ul> -<li>Complete redesign</li> -<li>Share public keys via qr codes, nfc beam</li> -<li>Sign keys</li> -<li>Upload keys to server</li> -<li>Fixes import issues</li> -<li>New AIDL API</li> +<li>Conception complètement repensée</li> +<li>Partage de clefs publiques par codes QR, faisceau NFC</li> +<li>Signer les clefs</li> +<li>Téléverser les clefs vers le serveur</li> +<li>Corrige les problèmes d'importation</li> +<li>Nouvelle API AIDL</li> </ul> <h2>1.0.8</h2> <ul> -<li>basic key server support</li> -<li>app2sd (untested, let me know if there are problems)</li> -<li>more choices for pass phrase cache: 1, 2, 4, 8, hours</li> -<li>translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li> -<li>bugfixes</li> -<li>optimizations</li> +<li>prise en charge de base du serveur de clef</li> +<li>app2sd (non-testé, me signaler tout problème)</li> +<li>plus de choix pour le cache de phrase de passe : 1, 2, 4, 8 heures</li> +<li>traductions : norvégien (merci Sander Danielsen), chinois (merci Zhang Fredrick)</li> +<li>corrections de bogues</li> +<li>optimisations</li> </ul> <h2>1.0.7</h2> <ul> <li>clear sign problem with lacking trailing newline fixed</li> -<li>more options for pass phrase cache time to live (20, 40, 60 mins)</li> +<li>plus de choix pour la durée de vie de la phrase de passe : (20, 40, 60 min)</li> </ul> <h2>1.0.6</h2> <ul> -<li>account adding crash on Froyo fixed</li> -<li>secure file deletion</li> -<li>option to delete key file after import</li> -<li>stream encryption/decryption (gallery, etc.)</li> -<li>new options (language, force v3 signatures)</li> -<li>interface changes</li> -<li>bugfixes</li> +<li>correction de l'ajout de compte sur Froyo</li> +<li>suppression sécurisée de fichiers</li> +<li>option de suppression du fichier de clef après l'importation</li> +<li>chiffrage/déchiffrage de flux (galerie, etc...)</li> +<li>nouvelles options (langue, forcer les signatures v3)</li> +<li>changements dans l'interface</li> +<li>corrections de bogues</li> </ul> <h2>1.0.5</h2> <ul> @@ -78,7 +78,7 @@ <li>Slovenian translation</li> <li>new database, much faster, less memory usage</li> <li>defined Intents and content provider for other apps</li> -<li>bugfixes</li> +<li>corrections de bogues</li> </ul> </body> </html> diff --git a/OpenPGP-Keychain/res/values-de/strings.xml b/OpenPGP-Keychain/res/values-de/strings.xml index df7c1bc4c..9d987747f 100644 --- a/OpenPGP-Keychain/res/values-de/strings.xml +++ b/OpenPGP-Keychain/res/values-de/strings.xml @@ -14,8 +14,8 @@ <string name="title_change_pass_phrase">Passwort ändern</string> <string name="title_set_passphrase">Passwort setzen</string> <string name="title_send_email">E-Mail senden...</string> - <string name="title_encrypt_to_file">In Datei verschlüsseln</string> - <string name="title_decrypt_to_file">In Datei entschlüsseln</string> + <string name="title_encrypt_to_file">In eine Datei verschlüsseln</string> + <string name="title_decrypt_to_file">In eine Datei entschlüsseln</string> <string name="title_import_keys">Schlüssel importieren</string> <string name="title_export_key">Schlüssel exportieren</string> <string name="title_export_keys">Schlüssel exportieren</string> diff --git a/OpenPGP-Keychain/res/values-fr/strings.xml b/OpenPGP-Keychain/res/values-fr/strings.xml index 0124231ca..027fcfe87 100644 --- a/OpenPGP-Keychain/res/values-fr/strings.xml +++ b/OpenPGP-Keychain/res/values-fr/strings.xml @@ -23,6 +23,7 @@ <string name="title_export_keys">Exporter les clefs</string> <string name="title_key_not_found">Clef introuvable</string> <string name="title_key_server_query">Interroger le serveur de clefs</string> + <string name="title_send_key">Téléverser vers le serveur de clefs</string> <string name="title_unknown_signature_key">Clef de signature inconnue</string> <string name="title_sign_key">Signer la clef</string> <string name="title_key_details">Détails sur la clef</string> @@ -37,6 +38,9 @@ <string name="section_master_key">Clef maîtresse</string> <string name="section_master_user_id">ID maîtresse d\'utilisateur utilisateur</string> <string name="section_actions">Actions</string> + <string name="section_signing_key">Votre clef utilisée pour la signature</string> + <string name="section_upload_key">Téléverser la clef</string> + <string name="section_key_server">Serveur de clefs</string> <!--button--> <string name="btn_sign_to_clipboard">Signer (presse-papiers)</string> <string name="btn_encrypt_to_clipboard">Déchiffrer vers le presse-papiers</string> @@ -55,6 +59,7 @@ <string name="btn_change_passphrase">Changer la phrase de passe</string> <string name="btn_set_passphrase">Définir la phrase de passe</string> <string name="btn_search">Rechercher</string> + <string name="btn_export_to_server">Téléverser vers le serveur de clefs</string> <string name="btn_next">Suivant</string> <string name="btn_back">Retour</string> <!--menu--> @@ -73,7 +78,11 @@ <string name="menu_edit_key">Modifier la clef</string> <string name="menu_search">Rechercher</string> <string name="menu_key_server">Importer depuis le serveur de clefs</string> + <string name="menu_update_key">Mettre à jour depuis le serveur de clefs</string> + <string name="menu_export_key_to_server">Téléverser vers le serveur de clefs</string> <string name="menu_share">Partager avec...</string> + <string name="menu_share_qr_code">Partager par un code QR (clef entière)</string> + <string name="menu_share_qr_code_fingerprint">Partager par un code QR (empreinte)</string> <string name="menu_share_nfc">Partager via NFC</string> <string name="menu_copy_to_clipboard">Copier vers le presse-papiers</string> <string name="menu_sign_key">Signer la clef</string> @@ -110,6 +119,7 @@ <string name="label_name">Nom</string> <string name="label_comment">Commentaire</string> <string name="label_email">Courriel</string> + <string name="label_send_key">Téléverser la clef vers le serveur de clefs choisi après signature</string> <string name="label_fingerprint">Empreinte</string> <string name="no_keys_selected">Choisir</string> <string name="one_key_selected">1 choisi</string> @@ -167,6 +177,10 @@ <string name="enter_passphrase_twice">Saisir la phrase de passe deux fois.</string> <string name="select_encryption_key">Choisir au moins une clef de chiffrement.</string> <string name="select_encryption_or_signature_key">Choisir au moins une clef de chiffrement ou de signature.</string> + <string name="specify_file_to_encrypt_to">Veuillez spécifier vers quel fichier chiffrer.\nAVERTISSEMENT ! Le fichier sera écrasé s\'il existe.</string> + <string name="specify_file_to_decrypt_to">Veuillez spécifier vers quel fichier déchiffrer.\nAVERTISSEMENT ! Le fichier sera écrasé s\'il existe.</string> + <string name="specify_file_to_export_to">Veuillez spécifier vers quel fichier exporter.\nAVERTISSEMENT ! Le fichier sera écrasé s\'il existe.</string> + <string name="specify_file_to_export_secret_keys_to">Veuillez spécifier vers quel fichier exporter.\nAVERTISSEMENT ! Vous allez exporter les clefs SECRÈTES.\nAVERTISSEMENT ! Le fichier sera écrasé s\'il existe.</string> <string name="key_deletion_confirmation">Voulez-vous vraiment supprimer la clef %s ?\nVous ne pourrez pas la restituer !</string> <string name="key_deletion_confirmation_multi">Voulez-vous vraiment supprimer toutes les clefs choisies ?\nCeci est irréversible !</string> <string name="secret_key_deletion_confirmation">Voulez-vous vraiment supprimer la clef SECRÈTE %s ?\nVous ne pourrez pas la restituer !</string> @@ -188,6 +202,8 @@ <string name="list_empty">Cette liste est vide !</string> <string name="nfc_successfull">Clef envoyée par faisceau NFC avec succès !</string> <string name="key_copied_to_clipboard">La clef a été copié vers le presse-papiers !</string> + <string name="key_has_already_been_signed">La clef a déjà été signée !</string> + <string name="select_key_to_sign">Veuillez choisir une clef a utiliser pour la signature !</string> <!--errors no punctuation, all lowercase, they will be put after "error_message", e.g. "Error: file not found"--> @@ -278,6 +294,7 @@ <!--Import--> <string name="import_import">Importer les clefs choisies</string> <string name="import_sign_and_upload">Importer, signer et téléverser les clefs choisies</string> + <string name="import_from_clipboard">Importer à partir du presse-papiers</string> <plurals name="import_qr_code_missing"> <item quantity="one">Le code QR avec l\'ID %1$s est manquant</item> <item quantity="other">Les codes QR avec les ID %1$s sont manquants</item> @@ -285,6 +302,7 @@ <string name="import_qr_code_start_with_one">Veuillez commencer par le code QR avec l\'ID 1</string> <string name="import_qr_code_wrong">Code QR incorrecte ! Veuillez réessayer !</string> <string name="import_qr_code_finished">Balayage de code QR terminé !</string> + <string name="import_qr_code_too_short_fingerprint">L\'empreinte contenue dans ce code QR est trop courte (< 16 caractères)</string> <string name="import_qr_scan_button">Numériser le code QR avec le lecteur de code-barres</string> <string name="import_nfc_text">Pour recevoir des clefs par NFC, les appareils doivent être déverrouillés.</string> <string name="import_nfc_help_button">Aide</string> @@ -305,16 +323,18 @@ <string name="api_settings_revoke">Révoquer l\'accès</string> <string name="api_settings_package_name">Nom du paquet</string> <string name="api_settings_package_signature">SHA-256 de la signature du paquet</string> - <string name="api_register_text">L\'application suivante demande l\'accès à l\'API de porte-clefs OpenPGP.\n\nPermettre l\'accès permanent ?</string> + <string name="api_register_text">L\'application suivante demande l\'accès à l\'API du Porte-clefs OpenPGP.\n\nPermettre l\'accès permanent ?</string> <string name="api_register_allow">Permettre l\'accès</string> <string name="api_register_disallow">Enlever l\'accès</string> <string name="api_register_error_select_key">Veuillez choisir une clef !</string> <string name="api_select_pub_keys_missing_text">Aucune clef publique n\'a été trouvée pour ces IDs utilisateur :</string> <string name="api_select_pub_keys_dublicates_text">Plus d\'une clef publique existe pour ces IDs utilisateur</string> <string name="api_select_pub_keys_text">Veuillez revoir la liste des destinataires !</string> - <string name="api_error_wrong_signature">La vérification de la signature a échoué ! Avez-vous installé cette appli à partir d\'une source différente ? Si vous êtes sûr que ce n\'est pas une attaque, révoquer l\'enregistrement de cette appli dans le porte-clefs et l\'enregistrer à nouveau.</string> + <string name="api_error_wrong_signature">La vérification de la signature a échoué ! Avez-vous installé cette appli à partir d\'une source différente ? Si vous êtes sûr que ce n\'est pas une attaque, révoquer l\'enregistrement de cette appli dans le Porte-clefs OpenPGP et l\'enregistrer à nouveau.</string> <!--Share--> + <string name="share_qr_code_dialog_title">Partager par un code QR</string> <string name="share_qr_code_dialog_start">Balayer tous les codes QR un par un en utilisant « Suivant ».</string> + <string name="share_qr_code_dialog_fingerprint_text">Empreinte :</string> <string name="share_qr_code_dialog_progress">Code QR avec l\'ID %1$d de %2$d</string> <string name="share_nfc_dialog">Partager avec la NFC</string> <!--Key list--> diff --git a/OpenPGP-Keychain/res/values-tr/strings.xml b/OpenPGP-Keychain/res/values-tr/strings.xml index 841c85039..b4779ae0a 100644 --- a/OpenPGP-Keychain/res/values-tr/strings.xml +++ b/OpenPGP-Keychain/res/values-tr/strings.xml @@ -1,25 +1,118 @@ <?xml version='1.0' encoding='UTF-8'?> <resources> <!--title--> + <string name="title_create_key">Anahtar oluştur</string> + <string name="title_edit_key">Anahtarı düzenle</string> + <string name="title_preferences">Seçenekler</string> + <string name="title_key_server_preference">Anahtar Sunucusu Seçenekleri</string> + <string name="title_key_not_found">Anahtar Bulunamadı</string> + <string name="title_key_server_query">Anahtar Sunucusunu Sorgula</string> + <string name="title_sign_key">Anahtarı İmzala</string> + <string name="title_help">Yardım</string> <!--section--> + <string name="section_keys">Anahtarlar</string> + <string name="section_general">Genel</string> + <string name="section_defaults">Varsayılanlar</string> + <string name="section_upload_key">Anahtar Yükle</string> + <string name="section_key_server">Anahtar Sunucusu</string> <!--button--> + <string name="btn_sign">İmzala</string> + <string name="btn_verify">Doğrula</string> + <string name="btn_select_encrypt_keys">Alıcıları Seç</string> + <string name="btn_save">Kaydet</string> + <string name="btn_do_not_save">İptal</string> + <string name="btn_delete">Sil</string> + <string name="btn_okay">Tamam</string> + <string name="btn_search">Ara</string> + <string name="btn_export_to_server">Sunucuya Anahtar Yükle</string> + <string name="btn_next">İleri</string> + <string name="btn_back">Geri</string> <!--menu--> + <string name="menu_preferences">Ayarlar</string> + <string name="menu_help">Yardım</string> + <string name="menu_import_from_file">Dosyadan al</string> + <string name="menu_import_from_qr_code">QR Kodundan al</string> + <string name="menu_import_from_nfc">NFCden al</string> + <string name="menu_export_key">Dosyaya ver</string> + <string name="menu_delete_key">Anahtar sil</string> + <string name="menu_create_key">Anahtar oluştur</string> + <string name="menu_create_key_expert">Anahtar oluştur (uzman)</string> + <string name="menu_edit_key">Anahtarı düzenle</string> + <string name="menu_search">Ara</string> + <string name="menu_key_server">Anahtar sunucusundan al</string> + <string name="menu_sign_key">Anahtarı imzala</string> + <string name="menu_key_edit_cancel">İptal</string> <!--label--> + <string name="label_sign">İmzala</string> + <string name="label_message">Mesaj</string> + <string name="label_file">Dosya</string> + <string name="label_passphrase_again">Tekrar</string> + <string name="label_algorithm">Algoritma</string> + <string name="label_creation">Oluşturma</string> + <string name="label_usage">Kullanım</string> + <string name="label_key_size">Anahtar Boyutu</string> + <string name="label_name">İsim</string> + <string name="label_comment">Yorum</string> + <string name="label_email">Eposta</string> + <string name="no_keys_selected">Seç</string> + <string name="one_key_selected">1 Seçili</string> + <string name="n_keys_selected">Seçili</string> <string name="unknown_status"></string> <!--choice--> + <string name="choice_15secs">15 saniye</string> + <string name="choice_1min">1 dakika</string> + <string name="choice_3mins">3 dakika</string> + <string name="choice_5mins">5 dakika</string> + <string name="choice_10mins">10 dakika</string> + <string name="choice_20mins">20 dakika</string> + <string name="choice_40mins">40 dakika</string> + <string name="choice_1hour">1 saat</string> + <string name="choice_2hours">2 saat</string> + <string name="choice_4hours">4 saat</string> + <string name="choice_8hours">8 saat</string> + <string name="dsa">DSA</string> + <string name="elgamal">ElGamal</string> + <string name="rsa">RSA</string> + <string name="filemanager_title_open">Aç...</string> + <string name="warning">Uyarı</string> + <string name="error">Hata</string> + <string name="error_message">Hata: %s</string> <!--sentences--> + <string name="file_delete_successful">Başarıyla silindi.</string> + <string name="no_file_selected">Önce bir dosya seçin.</string> + <string name="key_not_found">Anahtar %08X bulunamadı.</string> + <string name="keys_found">%s anahtar() bulundu.</string> + <string name="key_send_success">Anahtar sunucuya başarıyla gönderildi</string> + <string name="key_sign_success">Anahtar başarıyla imzalandı</string> + <string name="list_empty">Liste boş!</string> <!--errors no punctuation, all lowercase, they will be put after "error_message", e.g. "Error: file not found"--> + <string name="error_file_not_found">dosya bulunamadı</string> + <string name="error_corrupt_data">bozuk veri</string> <!--progress dialogs, usually ending in '…'--> + <string name="progress_saving">kaydediliyor...</string> + <string name="progress_preparing_signature">imza hazırlanıyor...</string> + <string name="progress_generating_signature">imza oluşturuluyor...</string> + <string name="progress_processing_signature">imza işleniyor...</string> + <string name="progress_verifying_signature">imza doğrulanıyor...</string> <!--action strings--> <!--key bit length selections--> + <string name="key_size_512">512</string> + <string name="key_size_1024">1024</string> + <string name="key_size_2048">2048</string> + <string name="key_size_4096">4096</string> <!--compression--> <!--Dashboard--> <!--Help--> + <string name="help_tab_about">Hakkında</string> <!--Import--> + <string name="import_nfc_help_button">Yardım</string> <!--Intent labels--> <!--Remote API--> + <string name="api_settings_no_key">Anahtar seçilmedi</string> + <string name="api_settings_select_key">Anahtar seç</string> + <string name="api_settings_save">Kaydet</string> <!--Share--> <!--Key list--> <!--Key view--> diff --git a/OpenPGP-Keychain/res/values/strings.xml b/OpenPGP-Keychain/res/values/strings.xml index 48239c46c..fe243bfbc 100644 --- a/OpenPGP-Keychain/res/values/strings.xml +++ b/OpenPGP-Keychain/res/values/strings.xml @@ -107,7 +107,7 @@ <string name="label_passphrase_again">Again</string> <string name="label_algorithm">Algorithm</string> <string name="label_ascii_armor">ASCII Armor</string> - <string name="label_select_public_keys">Public Key(s)</string> + <string name="label_select_public_keys">Public Keys</string> <string name="label_delete_after_encryption">Delete After Encryption</string> <string name="label_delete_after_decryption">Delete After Decryption</string> <string name="label_encryption_algorithm">Encryption Algorithm</string> @@ -130,17 +130,25 @@ <string name="label_email">Email</string> <string name="label_send_key">Upload key to selected key server after signing</string> <string name="label_fingerprint">Fingerprint</string> - <string name="no_keys_selected">Select</string> - <string name="one_key_selected">1 Selected</string> - <string name="n_keys_selected">Selected</string> - <string name="unknown_user_id"><unknown></string> - <string name="none"><none></string> - <string name="no_key"><no key></string> + <string name="select_keys_button_default">Select</string> + + <plurals name="select_keys_button"> + <item quantity="other">%d selected</item> + </plurals> + + <string name="unknown_user_id"><unknown></string> + <string name="none"><none></string> + <string name="no_key"><no key></string> <string name="unknown_status"></string> <string name="can_encrypt">can encrypt</string> <string name="can_sign">can sign</string> <string name="expired">expired</string> - <string name="n_key_servers">%s key server(s)</string> + + <plurals name="n_key_servers"> + <item quantity="one">%d key server</item> + <item quantity="other">%d key servers</item> + </plurals> + <string name="fingerprint">Fingerprint:</string> <string name="secret_key">Secret Key:</string> <string name="notValid">not valid</string> @@ -194,18 +202,38 @@ <string name="key_deletion_confirmation">Do you really want to delete the key \'%s\'?\nYou can\'t undo this!</string> <string name="key_deletion_confirmation_multi">Do you really want to delete all selected keys?\nYou can\'t undo this!</string> <string name="secret_key_deletion_confirmation">Do you really want to delete the SECRET key \'%s\'?\nYou can\'t undo this!</string> - <string name="keys_added_and_updated">Successfully added %1$s key(s) and updated %2$s key(s).</string> - <string name="keys_added">Successfully added %s key(s).</string> - <string name="keys_updated">Successfully updated %s key(s).</string> + + <plurals name="keys_added_and_updated_1"> + <item quantity="one">Successfully added %d key</item> + <item quantity="other">Successfully added %d keys</item> + </plurals> + <plurals name="keys_added_and_updated_2"> + <item quantity="one"> and updated %d key.</item> + <item quantity="other"> and updated %d keys.</item> + </plurals> + + <plurals name="keys_added"> + <item quantity="one">Successfully added %d key.</item> + <item quantity="other">Successfully added %d keys.</item> + </plurals> + + <plurals name="keys_updated"> + <item quantity="one">Successfully updated %d key.</item> + <item quantity="other">Successfully updated %d keys.</item> + </plurals> + <string name="no_keys_added_or_updated">No keys added or updated.</string> <string name="key_exported">Successfully exported 1 key.</string> - <string name="keys_exported">Successfully exported %s keys.</string> + <string name="keys_exported">Successfully exported %d keys.</string> <string name="no_keys_exported">No keys exported.</string> <string name="key_creation_el_gamal_info">Note: only subkeys support ElGamal, and for ElGamal the nearest keysize of 1536, 2048, 3072, 4096, or 8192 will be used.</string> <string name="key_not_found">Couldn\'t find key %08X.</string> - <string name="keys_found">Found %s key(s).</string> + <plurals name="keys_found"> + <item quantity="one">Found %d key.</item> + <item quantity="other">Found %d keys.</item> + </plurals> <string name="unknown_signature_key_touch_to_look_up">Unknown signature, touch to look up key.</string> - <string name="bad_keys_encountered">%s bad secret key(s) ignored. Perhaps you exported with the option\n --export-secret-subkeys\nMake sure you export with\n --export-secret-keys\ninstead.</string> + <string name="bad_keys_encountered">%d bad secret key(s) ignored. Perhaps you exported with the option\n --export-secret-subkeys\nMake sure you export with\n --export-secret-keys\ninstead.</string> <string name="lookup_unknown_key">Unknown key %s, do you want to try finding it on a keyserver?</string> <string name="key_send_success">Successfully sent key to server</string> <string name="key_sign_success">Successfully signed key</string> @@ -235,7 +263,7 @@ <string name="error_key_needs_a_user_id">need at least one user id</string> <string name="error_main_user_id_must_not_be_empty">main user id must not be empty</string> <string name="error_key_needs_master_key">need at least a master key</string> - <string name="error_no_encryption_keys_or_passphrase">no encryption key(s) or passphrase given</string> + <string name="error_no_encryption_keys_or_passphrase">no encryption keys or passphrase given</string> <string name="error_signature_failed">signature failed</string> <string name="error_no_signature_passphrase">no passphrase given</string> <string name="error_no_signature_key">no signature key given</string> @@ -243,7 +271,7 @@ <string name="error_corrupt_data">corrupt data</string> <string name="error_no_symmetric_encryption_packet">couldn\'t find a packet with symmetric encryption</string> <string name="error_wrong_passphrase">wrong passphrase</string> - <string name="error_saving_keys">error saving some key(s)</string> + <string name="error_saving_keys">error saving some keys</string> <string name="error_could_not_extract_private_key">could not extract private key</string> <string name="error_only_files_are_supported">Direct binary data without actual file in filesystem is not supported. This is only supported by ACTION_ENCRYPT_STREAM_AND_RETURN.</string> <string name="error_jelly_bean_needed">You need Android 4.1 alias Jelly Bean to use Androids NFC Beam feature!</string> @@ -318,8 +346,8 @@ <string name="import_from_clipboard">Import from clipboard</string> <plurals name="import_qr_code_missing"> - <item quantity="one">Missing QR Code with ID %1$s</item> - <item quantity="other">Missing QR Codes with IDs %1$s</item> + <item quantity="one">Missing QR Code with ID %s</item> + <item quantity="other">Missing QR Codes with IDs %s</item> </plurals> <string name="import_qr_code_start_with_one">Please start with QR Code with ID 1</string> diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/EncryptActivity.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/EncryptActivity.java index 6202010ed..9ede8238d 100644 --- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/EncryptActivity.java +++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/EncryptActivity.java @@ -892,12 +892,11 @@ public class EncryptActivity extends DrawerActivity { private void updateView() { if (mEncryptionKeyIds == null || mEncryptionKeyIds.length == 0) { - mSelectKeysButton.setText(getString(R.string.no_keys_selected)); - } else if (mEncryptionKeyIds.length == 1) { - mSelectKeysButton.setText(getString(R.string.one_key_selected)); + mSelectKeysButton.setText(getString(R.string.select_keys_button_default)); } else { - mSelectKeysButton.setText("" + mEncryptionKeyIds.length + " " - + getResources().getString(R.string.n_keys_selected)); + mSelectKeysButton.setText(getResources().getQuantityString( + R.plurals.select_keys_button, mEncryptionKeyIds.length, + mEncryptionKeyIds.length)); } if (mSecretKeyId == Id.key.none) { diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java index 790913d91..55a6085b6 100644 --- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java +++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java @@ -355,12 +355,17 @@ public class ImportKeysActivity extends DrawerActivity implements OnNavigationLi int bad = returnData.getInt(KeychainIntentService.RESULT_IMPORT_BAD); String toastMessage; if (added > 0 && updated > 0) { - toastMessage = getString(R.string.keys_added_and_updated, added, - updated); + String addedStr = getResources().getQuantityString( + R.plurals.keys_added_and_updated_1, added, added); + String updatedStr = getResources().getQuantityString( + R.plurals.keys_added_and_updated_2, updated, updated); + toastMessage = addedStr + updatedStr; } else if (added > 0) { - toastMessage = getString(R.string.keys_added, added); + toastMessage = getResources().getQuantityString(R.plurals.keys_added, + added, added); } else if (updated > 0) { - toastMessage = getString(R.string.keys_updated, updated); + toastMessage = getResources().getQuantityString(R.plurals.keys_updated, + updated, updated); } else { toastMessage = getString(R.string.no_keys_added_or_updated); } diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyServerQueryActivity.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyServerQueryActivity.java index 5e3b3d052..85cde1e7e 100644 --- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyServerQueryActivity.java +++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyServerQueryActivity.java @@ -236,8 +236,10 @@ public class KeyServerQueryActivity extends SherlockFragmentActivity { // avoided!!! if (mQueryType == Id.keyserver.search) { if (mSearchResult != null) { - Toast.makeText(KeyServerQueryActivity.this, - getString(R.string.keys_found, mSearchResult.size()), + Toast.makeText( + KeyServerQueryActivity.this, + getResources().getQuantityString(R.plurals.keys_found, + mSearchResult.size(), mSearchResult.size()), Toast.LENGTH_SHORT).show(); mAdapter.setKeys(mSearchResult); } diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/PreferencesActivity.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/PreferencesActivity.java index 46bbd05c9..f73681f54 100644 --- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/PreferencesActivity.java +++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/PreferencesActivity.java @@ -182,8 +182,8 @@ public class PreferencesActivity extends SherlockPreferenceActivity { mKeyServerPreference = (PreferenceScreen) findPreference(Constants.pref.KEY_SERVERS); String servers[] = mPreferences.getKeyServers(); - mKeyServerPreference.setSummary(getResources().getString(R.string.n_key_servers, - servers.length)); + mKeyServerPreference.setSummary(getResources().getQuantityString(R.plurals.n_key_servers, + servers.length, servers.length)); mKeyServerPreference .setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { @@ -207,8 +207,8 @@ public class PreferencesActivity extends SherlockPreferenceActivity { String servers[] = data .getStringArrayExtra(PreferencesKeyServerActivity.EXTRA_KEY_SERVERS); mPreferences.setKeyServers(servers); - mKeyServerPreference.setSummary(getResources().getString(R.string.n_key_servers, - servers.length)); + mKeyServerPreference.setSummary(getResources().getQuantityString( + R.plurals.n_key_servers, servers.length, servers.length)); break; } |