From d77c7ef12b36900d3445c9948bf54e649864d254 Mon Sep 17 00:00:00 2001 From: Tim Su Date: Mon, 31 May 2010 20:31:24 -0700 Subject: [PATCH] Created translation tests, fixed a bunch of bugs that they uncovered. --- astrid/res/layout-land/widget_initialized.xml | 6 +- astrid/res/layout/widget_initialized.xml | 6 +- astrid/res/values-ca/strings.xml | 2 +- astrid/res/values-cs/strings.xml | 3 +- astrid/res/values-de/strings.xml | 2 +- astrid/res/values-es/strings.xml | 4 +- astrid/res/values-fr/arrays.xml | 32 +-- astrid/res/values-fr/strings.xml | 30 +-- astrid/res/values-id/strings.xml | 2 +- astrid/res/values-it/arrays.xml | 12 +- astrid/res/values-it/strings.xml | 6 +- astrid/res/values-ja/strings.xml | 2 +- astrid/res/values-ko/strings.xml | 4 +- astrid/res/values-nb/strings.xml | 4 +- astrid/res/values-nl/strings.xml | 4 +- astrid/res/values-pl/strings.xml | 4 +- astrid/res/values-pt/strings.xml | 6 +- astrid/res/values-ru/strings.xml | 2 +- astrid/res/values-sv/strings.xml | 2 +- astrid/res/values-tr/strings.xml | 10 +- astrid/res/values-zh-rCN/strings.xml | 2 +- astrid/res/values-zh-rTW/strings.xml | 2 +- astrid/res/values/strings.xml | 1 - .../todoroo/andlib/test/TranslationTests.java | 226 ++++++++++++++++++ .../astrid/test/AstridTranslationTests.java | 20 ++ 25 files changed, 315 insertions(+), 79 deletions(-) create mode 100644 tests/src/com/todoroo/andlib/test/TranslationTests.java create mode 100644 tests/src/com/todoroo/astrid/test/AstridTranslationTests.java diff --git a/astrid/res/layout-land/widget_initialized.xml b/astrid/res/layout-land/widget_initialized.xml index 6b85159ce..070e99dca 100644 --- a/astrid/res/layout-land/widget_initialized.xml +++ b/astrid/res/layout-land/widget_initialized.xml @@ -27,9 +27,9 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" - android:text="@string/task_name1" android:singleLine="true" android:maxWidth="170dip" + android:text="@string/widget_loading" style="@style/Text.Loading" android:layout_marginLeft="23dip"/> @@ -49,7 +49,6 @@ android:layout_alignParentLeft="true" android:singleLine="true" android:maxWidth="170dip" - android:text="@string/task_name2" style="@style/Text.Loading" android:layout_marginLeft="23dip" android:layout_marginTop="4dip"/> @@ -71,7 +70,6 @@ android:layout_alignParentLeft="true" android:singleLine="true" android:maxWidth="170dip" - android:text="@string/task_name2" style="@style/Text.Loading" android:layout_marginLeft="23dip" android:layout_marginTop="4dip"/> @@ -94,7 +92,6 @@ android:layout_alignParentLeft="true" android:singleLine="true" android:maxWidth="170dip" - android:text="@string/task_name2" style="@style/Text.Loading" android:layout_marginLeft="23dip" android:layout_marginTop="4dip"/> @@ -116,7 +113,6 @@ android:layout_alignParentLeft="true" android:singleLine="true" android:maxWidth="170dip" - android:text="@string/task_name2" style="@style/Text.Loading" android:layout_marginLeft="23dip" android:layout_marginTop="4dip"/> diff --git a/astrid/res/layout/widget_initialized.xml b/astrid/res/layout/widget_initialized.xml index c3a8ca2bf..d16dd9f15 100644 --- a/astrid/res/layout/widget_initialized.xml +++ b/astrid/res/layout/widget_initialized.xml @@ -27,9 +27,9 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" - android:text="@string/task_name1" android:singleLine="true" android:maxWidth="115dip" + android:text="@string/widget_loading" style="@style/Text.Loading" android:layout_marginLeft="23dp"/> @@ -50,7 +50,6 @@ android:layout_alignParentLeft="true" android:singleLine="true" android:maxWidth="115dip" - android:text="@string/task_name2" style="@style/Text.Loading" android:layout_marginLeft="23dp" android:layout_marginTop="4dp"/> @@ -72,7 +71,6 @@ android:layout_alignParentLeft="true" android:singleLine="true" android:maxWidth="115dip" - android:text="@string/task_name2" style="@style/Text.Loading" android:layout_marginLeft="23dp" android:layout_marginTop="4dp"/> @@ -94,7 +92,6 @@ android:layout_alignParentLeft="true" android:singleLine="true" android:maxWidth="115dip" - android:text="@string/task_name2" style="@style/Text.Loading" android:layout_marginLeft="23dp" android:layout_marginTop="4dp"/> @@ -116,7 +113,6 @@ android:layout_alignParentLeft="true" android:singleLine="true" android:maxWidth="115dip" - android:text="@string/task_name2" style="@style/Text.Loading" android:layout_marginLeft="23dp" android:layout_marginTop="4dp"/> diff --git a/astrid/res/values-ca/strings.xml b/astrid/res/values-ca/strings.xml index 6d57303cb..00bec3106 100644 --- a/astrid/res/values-ca/strings.xml +++ b/astrid/res/values-ca/strings.xml @@ -393,7 +393,7 @@ Skipped %d tasks.\n No es pot trobar aquest element: - No es pot desar: + Cannot access folder: %s Cannot access your SD card! diff --git a/astrid/res/values-cs/strings.xml b/astrid/res/values-cs/strings.xml index 1babad65e..693e3ce67 100644 --- a/astrid/res/values-cs/strings.xml +++ b/astrid/res/values-cs/strings.xml @@ -393,7 +393,7 @@ Skipped %d tasks.\n Nemohu najít tuto položku: - Nepodařilo se uložit: + Cannot access folder: %s Cannot access your SD card! @@ -498,4 +498,3 @@ Skipped %d tasks.\n Read Astrid tasks -n \ No newline at end of file diff --git a/astrid/res/values-de/strings.xml b/astrid/res/values-de/strings.xml index d92b59e43..0b0a8e179 100644 --- a/astrid/res/values-de/strings.xml +++ b/astrid/res/values-de/strings.xml @@ -390,7 +390,7 @@ d Folgender Eintrag konnte nicht gefunden werden: - Speichern nicht möglich:s + Ordner kann nicht geöffnet werden: %s Zugriff auf SD Karte nicht möglich! diff --git a/astrid/res/values-es/strings.xml b/astrid/res/values-es/strings.xml index bbc9963b0..d71a4c1f3 100644 --- a/astrid/res/values-es/strings.xml +++ b/astrid/res/values-es/strings.xml @@ -358,7 +358,7 @@ Se recobraron %s tareas en %s. Resumen de Recuperación - El archivo contenía %d tareas.\n Se recobraron %d tareas.\n Saltearon %d tareas.\n + El archivo %s contenía %d tareas.\n Se recobraron %d tareas.\n Saltearon %d tareas.\n Recobrar Abriendo archivo... Archivo abierto... @@ -386,7 +386,7 @@ No pude encontrar este ítem: - No pude guardar:s + No puedo acceder carpeta: %s ¡No puedo acceder a tu tarjeta de memoria! diff --git a/astrid/res/values-fr/arrays.xml b/astrid/res/values-fr/arrays.xml index f848552d2..6ccaad2d9 100644 --- a/astrid/res/values-fr/arrays.xml +++ b/astrid/res/values-fr/arrays.xml @@ -32,11 +32,11 @@ Auriez-vous oublié ? Excusez-moi ! Quand vous aurez une minute : - À l'ordre du jour : + À l\'ordre du jour : Avez-vous un instant ? - Astrid à l'appareil ! + Astrid à l\'appareil ! Hé, je peux vous embêter une seconde ? - Une minute à m'accorder ? + Une minute à m\'accorder ? C\'est le bon jour pour @@ -48,34 +48,34 @@ Et ça ? Vous êtes chaud ? Prêt(e) à faire ça ? Pouvez-vous vous occuper de cela ? - Le bonheur n'est pas loin ! Il faut juste en finir avec ceci ! + Le bonheur n\'est pas loin ! Il faut juste en finir avec ceci ! Je vous promets que vous vous sentirez mieux si vous finissez ceci ! - Ne voulez-vous pas faire cela aujourd'hui ? - S'il vous plait, finissez cela, je n\'en peux plus ! + Ne voulez-vous pas faire cela aujourd\'hui ? + S\'il vous plait, finissez cela, je n\'en peux plus ! Pouvez-vous finir cela ? Yes you can! Comptez-vous vous en occuper un jour ? - Vous vous sentirez mieux après ! C'est parti ! + Vous vous sentirez mieux après ! C\'est parti ! Je suis si fière de vous ! Allez, terminez cela ! Une petite récompense quand vous aurez fini cela ? - Juste cette tâche, s'il vous plaît ! + Juste cette tâche, s\'il vous plaît ! Il est temps de raccourcir la liste des choses à faire ! Pitié, ne me dites pas que vous êtes un flemmard! - Ça ne devient pas fatigant d'être flemmard parfois ? - Quelque part, quelqu'un compte sur vous pour terminer ceci ! - Quand vous dîtes "reporter", vous voulez vraiment dire que vous allez le faire, n'est-ce pas ? - C'est la dernière fois que vous reportez ceci, n'est-ce pas ? - Finissez ceci aujourd'hui, je ne le dirai à personne ! + Ça ne devient pas fatigant d\'être flemmard parfois ? + Quelque part, quelqu\'un compte sur vous pour terminer ceci ! + Quand vous dîtes \"reporter\", vous voulez vraiment dire que vous allez le faire, n\'est-ce pas ? + C\'est la dernière fois que vous reportez ceci, n\'est-ce pas ? + Finissez ceci aujourd\'hui, je ne le dirai à personne ! Pourquoi reporter quand vous pourriez euh… ne pas reporter ! Vous finirez bien par le faire, je suppose ? Je vous trouve vraiment génial ! Et si vous ne reportiez pas ça à plus tard ? - Serez-vous capable d'accomplir vos buts si vous faites ceci ? + Serez-vous capable d\'accomplir vos buts si vous faites ceci ? Reporter, reporter, reporter. Quand changerez-vous ! - J'en ai assez de vos excuses ! Finissons-en ! - N'était-ce pas déjà votre excuse la dernière fois ? + J\'en ai assez de vos excuses ! Finissons-en ! + N\'était-ce pas déjà votre excuse la dernière fois ? Je ne peux pas vous aider à organiser votre vie si vous faites ça… diff --git a/astrid/res/values-fr/strings.xml b/astrid/res/values-fr/strings.xml index ebcc7c57d..093157f86 100644 --- a/astrid/res/values-fr/strings.xml +++ b/astrid/res/values-fr/strings.xml @@ -188,7 +188,7 @@ Taguée \'%s\' Tri automatique Trier par nom - Trier par date d'échéance + Trier par date d\'échéance Tri inversé Sélectionner une action : @@ -271,10 +271,10 @@ Créer une tâche avec tag Modifier le tag Effacer le tag - Afficher sur la page d'accueil - Masquer sur la page d'accueil + Afficher sur la page d\'accueil + Masquer sur la page d\'accueil Créer un raccourci - Raccourci créé sur votre page d'accueil + Raccourci créé sur votre page d\'accueil Tag : [pas de tag] @@ -299,7 +299,7 @@ Synchro-Auto uniquement par Wi-Fi Activée, la synchronisation automatique a lieu uniquement lorsque le Wi-Fi est actif Erreur de synchronisation ! Excusez-nous du désagrément ! Erreur : - Astrid 2.7 se synchronise désormais avec RTM en arrière plan. Vous allez devoir choisir la fréquence à laquelle vous voulez que cela se produise (faible cout d'énergie). + Astrid 2.7 se synchronise désormais avec RTM en arrière plan. Vous allez devoir choisir la fréquence à laquelle vous voulez que cela se produise (faible cout d\'énergie). Synchroniser maintenant ! Effacer les données personnelles Synchronisation : Déjà à jour ! @@ -317,14 +317,14 @@ Fusionné : %d Lecture des données distantes - Lecture de la liste + Lecture de la liste: %s Synchronisation des tâches répétées Transmission : %s Tâches locales supprimées Réception : %s Veuillez vous identifier sur RTM... - Désolé, une erreur s'est produite en vérifiant votre identifiant. Veuillez réessayer. \n\n Message d'erreur : + Désolé, une erreur s\'est produite en vérifiant votre identifiant. Veuillez réessayer. \n\n Message d\'erreur : @@ -349,14 +349,14 @@ Quelques astuces à savoir sur Astrid :\n \n - Pour créer une tâche, commencez juste à écrire !\n - Pendant que vous modifiez une tâche, un appui sur \'précédent\' suffit pour l\'enregistrer.\n - Sélectionnez une tâche & appuyez sur 1-4 rapidement pour changer sa priorité\n - Si une tâche a une date limite, appuyez longtemps pour la reporter.\n \n Merci d\'avoir choisi Astrid !\n - Il semblerait que vous utilisiez une application capable de tuer les processus (%s) ! Si possible, pensez à ajouter Astrid à la liste blanche afin qu'elle ne se fasse pas tuer. Sinon, Astrid risque de ne pas être en mesure de vous prévenir quand vos tâches sont à finir. + Il semblerait que vous utilisiez une application capable de tuer les processus (%s) ! Si possible, pensez à ajouter Astrid à la liste blanche afin qu\'elle ne se fasse pas tuer. Sinon, Astrid risque de ne pas être en mesure de vous prévenir quand vos tâches sont à finir. Je ne tuerai pas Astrid ! Sauvegardés de %s à %s. - Restauration de l'index + Restauration de l\'index Le fichier %s contient %d tâches.\n %d tâches restaurées.\n %d tâches ignorées.\n Restauration Ouverture du fichier... @@ -385,9 +385,9 @@ Impossible de trouver : - Impossible de sauvegarder:s - Impossible d'accéder au fichier : %s - Impossible d'accéder à la carte SD ! + + Impossible d\'accéder au fichier : %s + Impossible d\'accéder à la carte SD ! @@ -412,7 +412,7 @@ Choissisez l\'icone d\'Astrid pour la barre de notification Vibrer lors des alertes. - Si coché, Astrid vibrera lors de la sonnerie de l'alarme. + Si coché, Astrid vibrera lors de la sonnerie de l\'alarme. Apparence @@ -455,7 +455,7 @@ Nom de la tâche Description de la tâche Dates - Dates limites imminentes / Date d'achèvement + Dates limites imminentes / Date d\'achèvement Durées Durée estimée et temps passé Priorité @@ -491,6 +491,6 @@ Chargement… - Lire les tâches d'Astrid + Lire les tâches d\'Astrid diff --git a/astrid/res/values-id/strings.xml b/astrid/res/values-id/strings.xml index ab3f45653..988df615e 100644 --- a/astrid/res/values-id/strings.xml +++ b/astrid/res/values-id/strings.xml @@ -393,7 +393,7 @@ Skipped %d tasks.\n Tidak bisa menemukan benda ini: - Tdk bisa menyimpan: + Cannot access folder: %s Cannot access your SD card! diff --git a/astrid/res/values-it/arrays.xml b/astrid/res/values-it/arrays.xml index febfc5099..a44aa3c86 100644 --- a/astrid/res/values-it/arrays.xml +++ b/astrid/res/values-it/arrays.xml @@ -62,12 +62,12 @@ - + Per piacere dimmi che non è vero che tu sei un procrastinatore! Non diventa vecchio qualche volta essere pigro? Da qualche parte, qualcuno dipende da te nel finire ciò! - Quando hai detto di rimandare, intendevi davvero \'Sto facendo ciò/', giusto? - Questa è l'ultima volta che rimandi ciò, giusto? + Quando hai detto di rimandare, intendevi davvero \'Sto facendo ciò/\', giusto? + Questa è l\'ultima volta che rimandi ciò, giusto? Semplicemente finisci ciò oggi, non lo dirò a nessuno! Perché rimandare quando puoi uhm... non rimandare! Alla fine finirai ciò, immagino @@ -75,8 +75,8 @@ Sarai in grado di raggiungere i tuoi obiettivi se fai ciò? Rimandare, rimandare, rimandare. Quando cambierai! Ne ho abbastanza delle tue scuse! Fallo! - Non hai usato questa scusa l'ultima volta? - Non posso aiutarti nell'organizzare la tua vita se non fai ciò... + Non hai usato questa scusa l\'ultima volta? + Non posso aiutarti nell\'organizzare la tua vita se non fai ciò... @@ -89,7 +89,7 @@ disabilita - due volte all'ora + due volte all\'ora ogni ora due volte al giorno giornalmente diff --git a/astrid/res/values-it/strings.xml b/astrid/res/values-it/strings.xml index 8d351c0d5..024b5237b 100644 --- a/astrid/res/values-it/strings.xml +++ b/astrid/res/values-it/strings.xml @@ -216,7 +216,7 @@ Nome etichetta Quanto tempo ci vorrà? - Tempo già speso per l'attività + Tempo già speso per l\'attività Termine assoluto Scadenza obiettivo Aggiungi attività al Calendario @@ -349,7 +349,7 @@ Cose da sapere su Astrid:\n \n - Per creare un\'attività, inizia semplicemente a scrivere!\n -Mentre modifichi un\'attività, premi \"Indietro\" per salvarla\n - Scegli un\'attività e premi 1-4 velocemente per cambiarne la priorità\n - Se un\'attività ha una scadenza, premi a lungo per rinviarla\n \n Grazie per usare Astrid!\n - Sembra che tu stia usando un'applicazione che termina i processi (%s). Se puoi, aggiungi Astrid all\'elenco delle esclusioni in modo da non chiuderlo, altrimenti potrebbe non ricordarti le attività. + Sembra che tu stia usando un\'applicazione che termina i processi (%s). Se puoi, aggiungi Astrid all\'elenco delle esclusioni in modo da non chiuderlo, altrimenti potrebbe non ricordarti le attività. Non voglio chiudere Astrid! @@ -385,7 +385,7 @@ Impossibile trovare questo elemento: - Impossibile salvare: + Impossibile accedere alla cartella: %s Impossibile accedere alla scheda SD! diff --git a/astrid/res/values-ja/strings.xml b/astrid/res/values-ja/strings.xml index d0fbff655..454832cc9 100644 --- a/astrid/res/values-ja/strings.xml +++ b/astrid/res/values-ja/strings.xml @@ -393,7 +393,7 @@ Skipped %d tasks.\n この項目は見つかりませんでした: - 保存できませんでした: + Cannot access folder: %s Cannot access your SD card! diff --git a/astrid/res/values-ko/strings.xml b/astrid/res/values-ko/strings.xml index a18ecf18c..b3b0e5c62 100644 --- a/astrid/res/values-ko/strings.xml +++ b/astrid/res/values-ko/strings.xml @@ -118,7 +118,7 @@ Astrid: - 태그된 할일 + 태그된 \"%s\" 할일 태그 안된 할일 나중에 할일 새로운 할일 @@ -393,7 +393,7 @@ Skipped %d tasks.\n 아이템을 찾을 수 없습니다. - 저장할 수 없습니다. + Cannot access folder: %s Cannot access your SD card! diff --git a/astrid/res/values-nb/strings.xml b/astrid/res/values-nb/strings.xml index a4867e5a2..1421ddb19 100644 --- a/astrid/res/values-nb/strings.xml +++ b/astrid/res/values-nb/strings.xml @@ -360,7 +360,7 @@ Hvis du ikke ønsker å se den nye oppgaven rett etter at du fullfører den gaml Sikkerhetskopierte %s til %s. Gjennopprettingssammendrag - Filen %s inneholdt %d gjøremål. \n Gjennopprettet % gjøremål. \n Hoppet over % gjøremål. \n + Filen %s inneholdt %d gjøremål. \n Gjennopprettet %d gjøremål. \n Hoppet over %d gjøremål. \n Gjenopprett Åpner fil … Fil åpnet... @@ -388,7 +388,7 @@ Hvis du ikke ønsker å se den nye oppgaven rett etter at du fullfører den gaml Kunne ikke finne dette elementet: - Kunne ikke lagre:s + Kan ikke aksessere mappe: %s Kunne ikke aksessere ditt SD-kort! diff --git a/astrid/res/values-nl/strings.xml b/astrid/res/values-nl/strings.xml index 4985522ff..0e873f284 100644 --- a/astrid/res/values-nl/strings.xml +++ b/astrid/res/values-nl/strings.xml @@ -392,13 +392,13 @@ Skipped %d tasks.\n Doel deadline! Werkt nu aan: - Je hebt %NUM getagd als $TAG! + Je hebt $NUM getagd als $TAG! Kon dit item niet vinden: - Kon dit niet opslaan: + Cannot access folder: %s Cannot access your SD card! diff --git a/astrid/res/values-pl/strings.xml b/astrid/res/values-pl/strings.xml index 5be5eeb2d..9294b2bd5 100644 --- a/astrid/res/values-pl/strings.xml +++ b/astrid/res/values-pl/strings.xml @@ -357,7 +357,7 @@ Przywrócono %s jako %s Odzyskaj podsumowanie - Plik %s zawierał zadania %s\n. Przywrócono %d zadań \n pominięto %d zadań \n + Plik %s zawierał zadania %d\n. Przywrócono %d zadań \n pominięto %d zadań \n Przywróć Otwieranie pliku... Plik otwarty... @@ -385,7 +385,7 @@ Nie zdołano znaleźć tego elementu: - Nie można zapisać: + Nie można otworzyć folderu: %s Nie można otworzyć Twojej karty SD! diff --git a/astrid/res/values-pt/strings.xml b/astrid/res/values-pt/strings.xml index 8d9d86c38..fc99bd4ed 100644 --- a/astrid/res/values-pt/strings.xml +++ b/astrid/res/values-pt/strings.xml @@ -257,7 +257,7 @@ Guardar Tarefa Guardada: vence em %s - Tarefa Guardada: venceu %d atrás + Tarefa Guardada: venceu %s atrás Tarefa Guardada @@ -385,7 +385,7 @@ Não foi possível encontrar este item: - Não foi possível gravar: %s + Não é possível aceder à pasta: %s Não é possível aceder ao seu cartão SD! @@ -436,7 +436,7 @@ Efectuar cópias de segurança diárias para o cartão SD - A última cópia de segurança falhou + A última cópia de segurança falhou: %s A última cópia de segurança falhou, não foi possível ler o cartão SD diff --git a/astrid/res/values-ru/strings.xml b/astrid/res/values-ru/strings.xml index 3cf0fdfe2..2c196b328 100644 --- a/astrid/res/values-ru/strings.xml +++ b/astrid/res/values-ru/strings.xml @@ -385,7 +385,7 @@ Не могу найти элемент: - Не могу сохранить: + Нет доступа к папке:%s Нет доступа к карте памяти! diff --git a/astrid/res/values-sv/strings.xml b/astrid/res/values-sv/strings.xml index 03f6b301f..006a34fb4 100644 --- a/astrid/res/values-sv/strings.xml +++ b/astrid/res/values-sv/strings.xml @@ -385,7 +385,7 @@ Kunde inte hitta följande: - Kunde inte spara: %s + Mappåtkomst nekad: %s SD-kort ej tillgängligt! diff --git a/astrid/res/values-tr/strings.xml b/astrid/res/values-tr/strings.xml index 928ab1524..514d4d73b 100644 --- a/astrid/res/values-tr/strings.xml +++ b/astrid/res/values-tr/strings.xml @@ -293,7 +293,7 @@ Otomatik-Senkronizasyon Eğer işaretlenirse, otomatik senkronizasyon belirtilen aralıklarla gerçekleşir Ana Menü kısayolu - \"Senkronizasyon\"\u Astrid menüsünde göster + \"Senkronizasyon\" Astrid menüsünde göster Soru kutularını gizle. Senkronizasyon sonucunu sakla Senkronizasyonu sadece Wifi üzerinden yap @@ -323,7 +323,7 @@ Bu cihazda silinen işler İndiriliyor: %s - Lütfen RTM'ye giriş yapın.. + Lütfen RTM\'ye giriş yapın.. Girişinizde bir hata oluştu. \n\n Hata mesajı: @@ -349,7 +349,7 @@ Astrid hakkında bilmedikleriniz olabilir, mesela: \n \n - Yeni iş belirlemek için doğrudan yazmaya başlayabilirsiniz! \n \n - Bir iş maddesini düzenlerken \'geri\' tuşuna basarak hem kaydedip hem geri dönebilirsiniz. \n - Bir iş seçip 1-4 aralığında bir sayıya basıp öncelik tayin edebilirsiniz. \n Bir işin son tarihi varsa, uzun basarak onu erteleyebilirsiniz. \n \n Astrid\'i tercih ettiğiniz için teşekkürler!\n - Görünüşe bakılırsa arka plan programlarını öldürebilen bir \"aplikasyon\" kullanıyorsunuz! Mümkünse Astrid\'i istisnalar listesine ekleyin, yoksa uyarı sistemi çalışmayabilir. + Görünüşe bakılırsa arka plan programlarını öldürebilen bir \"%s\" kullanıyorsunuz! Mümkünse Astrid\'i istisnalar listesine ekleyin, yoksa uyarı sistemi çalışmayabilir. Astrid\'i öldürmeyeceğim! @@ -386,8 +386,8 @@ Could not find this item: - %s kaydedilemedi. - % klasörüne erişilemedi. + + %s klasörüne erişilemedi. Hafıza kartına erişemiyorum! diff --git a/astrid/res/values-zh-rCN/strings.xml b/astrid/res/values-zh-rCN/strings.xml index 5f9efe30d..727d8c9aa 100644 --- a/astrid/res/values-zh-rCN/strings.xml +++ b/astrid/res/values-zh-rCN/strings.xml @@ -385,7 +385,7 @@ 无法查找以下任务: - 无法保存: + 无法访问文件夹: %s 无法访问您的 SD 卡! diff --git a/astrid/res/values-zh-rTW/strings.xml b/astrid/res/values-zh-rTW/strings.xml index e5e546674..e132b1e67 100644 --- a/astrid/res/values-zh-rTW/strings.xml +++ b/astrid/res/values-zh-rTW/strings.xml @@ -411,7 +411,7 @@ Skipped %d tasks.\n 找不到此項目: - 無法儲存: + Cannot access folder: %s Cannot access your SD card! diff --git a/astrid/res/values/strings.xml b/astrid/res/values/strings.xml index 4c76f12db..40fede4b4 100644 --- a/astrid/res/values/strings.xml +++ b/astrid/res/values/strings.xml @@ -416,7 +416,6 @@ Skipped %d tasks.\n Could not find this item: - Could not save:s Cannot access folder: %s Cannot access your SD card! diff --git a/tests/src/com/todoroo/andlib/test/TranslationTests.java b/tests/src/com/todoroo/andlib/test/TranslationTests.java new file mode 100644 index 000000000..1a0699d13 --- /dev/null +++ b/tests/src/com/todoroo/andlib/test/TranslationTests.java @@ -0,0 +1,226 @@ +package com.todoroo.andlib.test; + + + +import java.lang.reflect.Field; +import java.util.Arrays; +import java.util.Locale; + +import android.content.res.Configuration; +import android.content.res.Resources; +import android.util.DisplayMetrics; + +/** + * Tests translations for consistency with the default values. You must + * extend this class and create it with your own values for strings + * and arrays. + * + * @author Tim Su + * + */ +abstract public class TranslationTests extends TodorooTestCase { + + // --- abstract classes + public abstract Class getStringResources(); + public abstract Class getArrayResources(); + + // --- tests + + private static final class FormatStringData { + private static final char[] scratch = new char[10]; + + /** format characters */ + public final char[] characters; + + /** the original string */ + public final String string; + + public FormatStringData(String string) { + this.string = string; + + int pos = -1; + int count = 0; + while(true) { + pos = string.indexOf('%', ++pos); + if(pos++ == -1) + break; + if(pos >= string.length()) + scratch[count++] = '\0'; + else + scratch[count++] = string.charAt(pos); + } + characters = new char[count]; + for(int i = 0; i < count; i++) { + characters[i] = scratch[i]; + } + } + + /** test that the characters match */ + public boolean matches(FormatStringData other) { + return Arrays.equals(characters, other.characters); + } + + @Override + public String toString() { + StringBuilder value = new StringBuilder("["); + for(int i = 0; i < characters.length; i++) { + value.append(characters[i]); + if(i < characters.length - 1) + value.append(','); + } + value.append("]: '").append(string).append('\''); + return value.toString(); + } + } + + /** + * Internal test of format string parser + */ + public void testFormatStringParser() { + String s = "abc"; + FormatStringData data = new FormatStringData(s); + assertEquals(s, data.string); + assertEquals(0, data.characters.length); + + s = "abc %s def"; + data = new FormatStringData(s); + assertEquals(1, data.characters.length); + assertEquals('s', data.characters[0]); + + s = "abc %%s def %d"; + data = new FormatStringData(s); + assertEquals(2, data.characters.length); + assertEquals('%', data.characters[0]); + assertEquals('d', data.characters[1]); + assertTrue(data.toString(), data.toString().contains("[%")); + assertTrue(data.toString(), data.toString().contains("d]")); + assertTrue(data.toString(), data.toString().contains(s)); + assertTrue(data.matches(new FormatStringData("espanol %% und %d si"))); + assertFalse(data.matches(new FormatStringData("ingles %d ja %% pon"))); + + s = "% abc %"; + data = new FormatStringData(s); + assertEquals(2, data.characters.length); + assertEquals(' ', data.characters[0]); + assertEquals('\0', data.characters[1]); + } + + /** + * Test that the format specifiers in translations match exactly the + * translations in the default text + */ + public void testFormatStringsMatch() throws Exception { + final Resources r = getContext().getResources(); + final int[] strings = getResourceIds(getStringResources()); + final FormatStringData[] formatStrings = new FormatStringData[strings.length]; + + for(int i = 0; i < strings.length; i++) { + String string = r.getString(strings[i]); + formatStrings[i] = new FormatStringData(string); + } + + final StringBuilder failures = new StringBuilder(); + + forEachLocale(new Runnable() { + public void run() { + Locale locale = r.getConfiguration().locale; + for(int i = 0; i < strings.length; i++) { + try { + String string = r.getString(strings[i]); + FormatStringData newFS = new FormatStringData(string); + if(!newFS.matches(formatStrings[i])) { + String name = r.getResourceName(strings[i]); + failures.append(String.format("%s (%s): %s != %s\n", + name, locale.toString(), newFS, formatStrings[i])); + } + } catch (Exception e) { + String name = r.getResourceName(strings[i]); + failures.append(String.format("%s: error opening %s: %s\n", + locale.toString(), name, e.getMessage())); + } + } + } + }); + + assertEquals(failures.toString(), 0, failures.length()); + } + + /** + * Test that there are the same number of array entries in each locale + */ + public void testArraySizesMatch() throws Exception { + final Resources r = getContext().getResources(); + final int[] arrays = getResourceIds(getArrayResources()); + final int[] sizes = new int[arrays.length]; + for(int i = 0; i < arrays.length; i++) { + sizes[i] = r.getStringArray(arrays[i]).length; + } + + final StringBuilder failures = new StringBuilder(); + forEachLocale(new Runnable() { + public void run() { + for(int i = 0; i < arrays.length; i++) { + int size = r.getStringArray(arrays[i]).length; + if(size != sizes[i]) { + String name = r.getResourceName(arrays[i]); + Locale locale = r.getConfiguration().locale; + failures.append(String.format("%s (%s): size %d != %d\n", + name, locale.toString(), size, sizes[i])); + } + } + } + }); + assertEquals(failures.toString(), 0, failures.length()); + } + + // --- helper methods + + /** + * @return an array of all string resource id's + */ + private int[] getResourceIds(Class resources) throws Exception { + Field[] fields = resources.getDeclaredFields(); + int[] ids = new int[fields.length]; + for(int i = 0; i < fields.length; i++) { + ids[i] = fields[i].getInt(null); + } + return ids; + } + + /** + * Loop through each locale and call runnable + * @param r + */ + private void forEachLocale(Runnable r) { + Locale[] locales = Locale.getAvailableLocales(); + for(Locale locale : locales) { + setLocale(locale); + + r.run(); + } + } + + /** + * Sets locale + * @param locale + */ + private void setLocale(Locale locale) { + Locale.setDefault(locale); + Configuration config = new Configuration(); + config.locale = locale; + DisplayMetrics metrics = getContext().getResources().getDisplayMetrics(); + getContext().getResources().updateConfiguration(config, metrics); + } + + @Override + protected void setUp() throws Exception { + super.setUp(); + setLocale(Locale.getDefault()); + } + + @Override + protected void tearDown() throws Exception { + super.tearDown(); + setLocale(Locale.getDefault()); + } +} diff --git a/tests/src/com/todoroo/astrid/test/AstridTranslationTests.java b/tests/src/com/todoroo/astrid/test/AstridTranslationTests.java new file mode 100644 index 000000000..afb19b942 --- /dev/null +++ b/tests/src/com/todoroo/astrid/test/AstridTranslationTests.java @@ -0,0 +1,20 @@ +package com.todoroo.astrid.test; + + + +import com.timsu.astrid.R; +import com.todoroo.andlib.test.TranslationTests; + +public class AstridTranslationTests extends TranslationTests { + + @Override + public Class getArrayResources() { + return R.array.class; + } + + @Override + public Class getStringResources() { + return R.string.class; + } + +}