Created translation tests, fixed a bunch of bugs that they uncovered.

pull/14/head
Tim Su 14 years ago
parent 062ec7bafa
commit d77c7ef12b

@ -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"/>

@ -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"/>

@ -393,7 +393,7 @@ Skipped %d tasks.\n
<skip/>
<string name="error_opening">No es pot trobar aquest element:</string>
<string name="error_saving">No es pot desar:</string>
<string name="error_sdcard">Cannot access folder: %s</string>
<string name="error_sdcard_general">Cannot access your SD card!</string>

@ -393,7 +393,7 @@ Skipped %d tasks.\n
<skip/>
<string name="error_opening">Nemohu najít tuto položku:</string>
<string name="error_saving">Nepodařilo se uložit:</string>
<string name="error_sdcard">Cannot access folder: %s</string>
<string name="error_sdcard_general">Cannot access your SD card!</string>
@ -498,4 +498,3 @@ Skipped %d tasks.\n
<string name="read_tasks_permission">Read Astrid tasks</string>
</resources>
n

@ -390,7 +390,7 @@ d</string>
<skip/>
<string name="error_opening">Folgender Eintrag konnte nicht gefunden werden:</string>
<string name="error_saving">Speichern nicht möglich:s</string>
<string name="error_sdcard">Ordner kann nicht geöffnet werden: %s</string>
<string name="error_sdcard_general">Zugriff auf SD Karte nicht möglich!</string>

@ -358,7 +358,7 @@
<string name="export_toast">Se recobraron %s tareas en %s.</string>
<string name="import_summary_title">Resumen de Recuperación</string>
<string name="import_summary_message">El archivo contenía %d tareas.\n Se recobraron %d tareas.\n Saltearon %d tareas.\n</string>
<string name="import_summary_message">El archivo %s contenía %d tareas.\n Se recobraron %d tareas.\n Saltearon %d tareas.\n</string>
<string name="import_progress_title">Recobrar</string>
<string name="import_progress_open">Abriendo archivo...</string>
<string name="import_progress_opened">Archivo abierto...</string>
@ -386,7 +386,7 @@
<skip/>
<string name="error_opening">No pude encontrar este ítem:</string>
<string name="error_saving">No pude guardar:s</string>
<string name="error_sdcard">No puedo acceder carpeta: %s</string>
<string name="error_sdcard_general">¡No puedo acceder a tu tarjeta de memoria!</string>

@ -32,11 +32,11 @@
<item>Auriez-vous oublié ?</item>
<item>Excusez-moi !</item>
<item>Quand vous aurez une minute :</item>
<item>À l'ordre du jour :</item>
<item>À l\'ordre du jour :</item>
<item>Avez-vous un instant ?</item>
<item>Astrid à l'appareil !</item>
<item>Astrid à l\'appareil !</item>
<item>Hé, je peux vous embêter une seconde ?</item>
<item>Une minute à m'accorder ?</item>
<item>Une minute à m\'accorder ?</item>
<item>C\'est le bon jour pour</item>
</string-array>
@ -48,34 +48,34 @@
<item>Et ça ? Vous êtes chaud ?</item>
<item>Prêt(e) à faire ça ?</item>
<item>Pouvez-vous vous occuper de cela ?</item>
<item>Le bonheur n'est pas loin ! Il faut juste en finir avec ceci !</item>
<item>Le bonheur n\'est pas loin ! Il faut juste en finir avec ceci !</item>
<item>Je vous promets que vous vous sentirez mieux si vous finissez ceci !</item>
<item>Ne voulez-vous pas faire cela aujourd'hui ?</item>
<item>S'il vous plait, finissez cela, je n\'en peux plus !</item>
<item>Ne voulez-vous pas faire cela aujourd\'hui ?</item>
<item>S\'il vous plait, finissez cela, je n\'en peux plus !</item>
<item>Pouvez-vous finir cela ? Yes you can!</item>
<item>Comptez-vous vous en occuper un jour ?</item>
<item>Vous vous sentirez mieux après ! C'est parti !</item>
<item>Vous vous sentirez mieux après ! C\'est parti !</item>
<item>Je suis si fière de vous ! Allez, terminez cela !</item>
<item>Une petite récompense quand vous aurez fini cela ?</item>
<item>Juste cette tâche, s'il vous plaît !</item>
<item>Juste cette tâche, s\'il vous plaît !</item>
<item>Il est temps de raccourcir la liste des choses à faire !</item>
</string-array>
<string-array name="postpone_nags">
<!-- Astrid's nagging when user clicks postpone -->
<item>Pitié, ne me dites pas que vous êtes un flemmard!</item>
<item>Ça ne devient pas fatigant d'être flemmard parfois ?</item>
<item>Quelque part, quelqu'un compte sur vous pour terminer ceci !</item>
<item>Quand vous dîtes "reporter", vous voulez vraiment dire que vous allez le faire, n'est-ce pas ?</item>
<item>C'est la dernière fois que vous reportez ceci, n'est-ce pas ?</item>
<item>Finissez ceci aujourd'hui, je ne le dirai à personne !</item>
<item>Ça ne devient pas fatigant d\'être flemmard parfois ?</item>
<item>Quelque part, quelqu\'un compte sur vous pour terminer ceci !</item>
<item>Quand vous dîtes \"reporter\", vous voulez vraiment dire que vous allez le faire, n\'est-ce pas ?</item>
<item>C\'est la dernière fois que vous reportez ceci, n\'est-ce pas ?</item>
<item>Finissez ceci aujourd\'hui, je ne le dirai à personne !</item>
<item>Pourquoi reporter quand vous pourriez euh… ne pas reporter !</item>
<item>Vous finirez bien par le faire, je suppose ?</item>
<item>Je vous trouve vraiment génial ! Et si vous ne reportiez pas ça à plus tard ?</item>
<item>Serez-vous capable d'accomplir vos buts si vous faites ceci ?</item>
<item>Serez-vous capable d\'accomplir vos buts si vous faites ceci ?</item>
<item>Reporter, reporter, reporter. Quand changerez-vous !</item>
<item>J'en ai assez de vos excuses ! Finissons-en !</item>
<item>N'était-ce pas déjà votre excuse la dernière fois ?</item>
<item>J\'en ai assez de vos excuses ! Finissons-en !</item>
<item>N\'était-ce pas déjà votre excuse la dernière fois ?</item>
<item>Je ne peux pas vous aider à organiser votre vie si vous faites ça…</item>
</string-array>

@ -188,7 +188,7 @@
<string name="taskList_filter_tagged">Taguée \'%s\'</string>
<string name="taskList_sort_auto">Tri automatique</string>
<string name="taskList_sort_alpha">Trier par nom</string>
<string name="taskList_sort_duedate">Trier par date d'échéance</string>
<string name="taskList_sort_duedate">Trier par date d\'échéance</string>
<string name="taskList_sort_reverse">Tri inversé</string>
<string name="taskList_nonag_reminder">Sélectionner une action :</string>
@ -271,10 +271,10 @@
<string name="tagList_context_create">Créer une tâche avec tag</string>
<string name="tagList_context_edit">Modifier le tag</string>
<string name="tagList_context_delete">Effacer le tag</string>
<string name="tagList_context_showTag">Afficher sur la page d'accueil</string>
<string name="tagList_context_hideTag">Masquer sur la page d'accueil</string>
<string name="tagList_context_showTag">Afficher sur la page d\'accueil</string>
<string name="tagList_context_hideTag">Masquer sur la page d\'accueil</string>
<string name="tagList_context_shortcut">Créer un raccourci</string>
<string name="tagList_shortcut_created">Raccourci créé sur votre page d'accueil</string>
<string name="tagList_shortcut_created">Raccourci créé sur votre page d\'accueil</string>
<string name="tagList_shortcut_prefix">Tag :</string>
<string name="tagList_untagged">[pas de tag]</string>
@ -299,7 +299,7 @@
<string name="sync_bgwifi_title">Synchro-Auto uniquement par Wi-Fi</string>
<string name="sync_bgwifi_desc">Activée, la synchronisation automatique a lieu uniquement lorsque le Wi-Fi est actif</string>
<string name="sync_error">Erreur de synchronisation ! Excusez-nous du désagrément ! Erreur :</string>
<string name="sync_upgrade_v99">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).</string>
<string name="sync_upgrade_v99">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).</string>
<string name="sync_now">Synchroniser maintenant !</string>
<string name="sync_forget">Effacer les données personnelles</string>
<string name="sync_uptodate">Synchronisation : Déjà à jour !</string>
@ -317,14 +317,14 @@
<string name="sync_result_merged">Fusionné : %d</string>
<string name="sync_progress_remote">Lecture des données distantes</string>
<string name="sync_progress_rxlist">Lecture de la liste</string>
<string name="sync_progress_rxlist">Lecture de la liste: %s</string>
<string name="sync_progress_repeating">Synchronisation des tâches répétées</string>
<string name="sync_progress_localtx">Transmission : %s</string>
<string name="sync_progress_localdel">Tâches locales supprimées</string>
<string name="sync_progress_remotetx">Réception : %s</string>
<string name="rtm_login_label">Veuillez vous identifier sur RTM...</string>
<string name="rtm_login_error">Désolé, une erreur s'est produite en vérifiant votre identifiant. Veuillez réessayer. \n\n Message d'erreur :</string>
<string name="rtm_login_error">Désolé, une erreur s\'est produite en vérifiant votre identifiant. Veuillez réessayer. \n\n Message d\'erreur :</string>
<!-- Dialog Boxes -->
@ -349,14 +349,14 @@
<string name="quick_tips">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 &amp; 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</string>
<!-- %s => name of the application -->
<string name="task_killer_help">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.</string>
<string name="task_killer_help">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.</string>
<string name="task_killer_help_ok">Je ne tuerai pas Astrid !</string>
<!-- Restore/Backup -->
<skip/>
<string name="export_toast">Sauvegardés de %s à %s.</string>
<string name="import_summary_title">Restauration de l'index</string>
<string name="import_summary_title">Restauration de l\'index</string>
<string name="import_summary_message">Le fichier %s contient %d tâches.\n %d tâches restaurées.\n %d tâches ignorées.\n</string>
<string name="import_progress_title">Restauration</string>
<string name="import_progress_open">Ouverture du fichier...</string>
@ -385,9 +385,9 @@
<skip/>
<string name="error_opening">Impossible de trouver :</string>
<string name="error_saving">Impossible de sauvegarder:s</string>
<string name="error_sdcard">Impossible d'accéder au fichier : %s</string>
<string name="error_sdcard_general">Impossible d'accéder à la carte SD !</string>
<string name="error_sdcard">Impossible d\'accéder au fichier : %s</string>
<string name="error_sdcard_general">Impossible d\'accéder à la carte SD !</string>
<skip/>
@ -412,7 +412,7 @@
<string name="prefs_notificon_desc">Choissisez l\'icone d\'Astrid pour la barre de notification</string>
<string name="prefs_vibrate_title">Vibrer lors des alertes.</string>
<string name="prefs_vibrate_desc">Si coché, Astrid vibrera lors de la sonnerie de l'alarme.</string>
<string name="prefs_vibrate_desc">Si coché, Astrid vibrera lors de la sonnerie de l\'alarme.</string>
<string name="prefs_category_appearance">Apparence</string>
@ -455,7 +455,7 @@
<string name="prefs_titleVisible_title">Nom de la tâche</string>
<string name="prefs_titleVisible_desc">Description de la tâche</string>
<string name="prefs_deadlineVisible_title">Dates</string>
<string name="prefs_deadlineVisible_desc">Dates limites imminentes / Date d'achèvement</string>
<string name="prefs_deadlineVisible_desc">Dates limites imminentes / Date d\'achèvement</string>
<string name="prefs_timeVisible_title">Durées</string>
<string name="prefs_timeVisible_desc">Durée estimée et temps passé</string>
<string name="prefs_importanceVisible_title">Priorité</string>
@ -491,6 +491,6 @@
<string name="widget_loading">Chargement…</string>
<!-- Permissions -->
<string name="read_tasks_permission">Lire les tâches d'Astrid</string>
<string name="read_tasks_permission">Lire les tâches d\'Astrid</string>
</resources>

@ -393,7 +393,7 @@ Skipped %d tasks.\n
<skip/>
<string name="error_opening">Tidak bisa menemukan benda ini:</string>
<string name="error_saving">Tdk bisa menyimpan:</string>
<string name="error_sdcard">Cannot access folder: %s</string>
<string name="error_sdcard_general">Cannot access your SD card!</string>

@ -62,12 +62,12 @@
</string-array>
<string-array name="postpone_nags">
<!-- Astrid's nagging when user clicks postpone -->
<!-- Astrid\'s nagging when user clicks postpone -->
<item>Per piacere dimmi che non è vero che tu sei un procrastinatore!</item>
<item>Non diventa vecchio qualche volta essere pigro?</item>
<item>Da qualche parte, qualcuno dipende da te nel finire ciò!</item>
<item>Quando hai detto di rimandare, intendevi davvero \'Sto facendo ciò/', giusto?</item>
<item>Questa è l'ultima volta che rimandi ciò, giusto?</item>
<item>Quando hai detto di rimandare, intendevi davvero \'Sto facendo ciò/\', giusto?</item>
<item>Questa è l\'ultima volta che rimandi ciò, giusto?</item>
<item>Semplicemente finisci ciò oggi, non lo dirò a nessuno!</item>
<item>Perché rimandare quando puoi uhm... non rimandare!</item>
<item>Alla fine finirai ciò, immagino</item>
@ -75,8 +75,8 @@
<item>Sarai in grado di raggiungere i tuoi obiettivi se fai ciò?</item>
<item>Rimandare, rimandare, rimandare. Quando cambierai!</item>
<item>Ne ho abbastanza delle tue scuse! Fallo!</item>
<item>Non hai usato questa scusa l'ultima volta?</item>
<item>Non posso aiutarti nell'organizzare la tua vita se non fai ciò...</item>
<item>Non hai usato questa scusa l\'ultima volta?</item>
<item>Non posso aiutarti nell\'organizzare la tua vita se non fai ciò...</item>
</string-array>
<string-array name="notif_icon_entries">
@ -89,7 +89,7 @@
<string-array name="sync_interval_entries">
<!-- sync_interval_entries: Synchronization Intervals -->
<item>disabilita</item>
<item>due volte all'ora</item>
<item>due volte all\'ora</item>
<item>ogni ora</item>
<item>due volte al giorno</item>
<item>giornalmente</item>

@ -216,7 +216,7 @@
<string name="tag_hint">Nome etichetta</string>
<string name="estimatedDuration_label">Quanto tempo ci vorrà?</string>
<string name="elapsedDuration_label">Tempo già speso per l'attività</string>
<string name="elapsedDuration_label">Tempo già speso per l\'attività</string>
<string name="definiteDueDate_label">Termine assoluto</string>
<string name="preferredDueDate_label">Scadenza obiettivo</string>
<string name="addToCalendar_label">Aggiungi attività al Calendario</string>
@ -349,7 +349,7 @@
<string name="quick_tips">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</string>
<!-- %s => name of the application -->
<string name="task_killer_help">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à.</string>
<string name="task_killer_help">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à.</string>
<string name="task_killer_help_ok">Non voglio chiudere Astrid!</string>
<!-- Restore/Backup -->
@ -385,7 +385,7 @@
<skip/>
<string name="error_opening">Impossibile trovare questo elemento:</string>
<string name="error_saving">Impossibile salvare:</string>
<string name="error_sdcard">Impossibile accedere alla cartella: %s</string>
<string name="error_sdcard_general">Impossibile accedere alla scheda SD!</string>

@ -393,7 +393,7 @@ Skipped %d tasks.\n
<skip/>
<string name="error_opening">この項目は見つかりませんでした:</string>
<string name="error_saving">保存できませんでした:</string>
<string name="error_sdcard">Cannot access folder: %s</string>
<string name="error_sdcard_general">Cannot access your SD card!</string>

@ -118,7 +118,7 @@
<skip/>
<!-- title bar -->
<string name="taskList_titlePrefix">Astrid:</string>
<string name="taskList_titleTagPrefix">태그된 할일</string>
<string name="taskList_titleTagPrefix">태그된 \"%s\" 할일</string>
<string name="taskList_titleUntagged">태그 안된 할일</string>
<string name="taskList_hiddenSuffix">나중에 할일</string>
<string name="addtask_label">새로운 할일</string>
@ -393,7 +393,7 @@ Skipped %d tasks.\n
<skip/>
<string name="error_opening">아이템을 찾을 수 없습니다.</string>
<string name="error_saving">저장할 수 없습니다.</string>
<string name="error_sdcard">Cannot access folder: %s</string>
<string name="error_sdcard_general">Cannot access your SD card!</string>

@ -360,7 +360,7 @@ Hvis du ikke ønsker å se den nye oppgaven rett etter at du fullfører den gaml
<string name="export_toast">Sikkerhetskopierte %s til %s.</string>
<string name="import_summary_title">Gjennopprettingssammendrag</string>
<string name="import_summary_message">Filen %s inneholdt %d gjøremål. \n Gjennopprettet % gjøremål. \n Hoppet over % gjøremål. \n</string>
<string name="import_summary_message">Filen %s inneholdt %d gjøremål. \n Gjennopprettet %d gjøremål. \n Hoppet over %d gjøremål. \n</string>
<string name="import_progress_title">Gjenopprett</string>
<string name="import_progress_open">Åpner fil …</string>
<string name="import_progress_opened">Fil åpnet...</string>
@ -388,7 +388,7 @@ Hvis du ikke ønsker å se den nye oppgaven rett etter at du fullfører den gaml
<skip/>
<string name="error_opening">Kunne ikke finne dette elementet:</string>
<string name="error_saving">Kunne ikke lagre:s</string>
<string name="error_sdcard">Kan ikke aksessere mappe: %s</string>
<string name="error_sdcard_general">Kunne ikke aksessere ditt SD-kort!</string>

@ -392,13 +392,13 @@ Skipped %d tasks.\n
<string name="notif_preferredDueDate">Doel deadline!</string>
<string name="notif_timerStarted">Werkt nu aan:</string>
<!-- $NUM is replaced with # of tasks + units, i.e. "1 task", $TAG is replaced with tag name -->
<string name="notif_tagNotification">Je hebt %NUM getagd als $TAG!</string>
<string name="notif_tagNotification">Je hebt $NUM getagd als $TAG!</string>
<!-- Error Messages -->
<skip/>
<string name="error_opening">Kon dit item niet vinden:</string>
<string name="error_saving">Kon dit niet opslaan:</string>
<string name="error_sdcard">Cannot access folder: %s</string>
<string name="error_sdcard_general">Cannot access your SD card!</string>

@ -357,7 +357,7 @@
<string name="export_toast">Przywrócono %s jako %s</string>
<string name="import_summary_title">Odzyskaj podsumowanie</string>
<string name="import_summary_message">Plik %s zawierał zadania %s\n. Przywrócono %d zadań \n pominięto %d zadań \n</string>
<string name="import_summary_message">Plik %s zawierał zadania %d\n. Przywrócono %d zadań \n pominięto %d zadań \n</string>
<string name="import_progress_title">Przywróć</string>
<string name="import_progress_open">Otwieranie pliku...</string>
<string name="import_progress_opened">Plik otwarty...</string>
@ -385,7 +385,7 @@
<skip/>
<string name="error_opening">Nie zdołano znaleźć tego elementu:</string>
<string name="error_saving">Nie można zapisać:</string>
<string name="error_sdcard">Nie można otworzyć folderu: %s</string>
<string name="error_sdcard_general">Nie można otworzyć Twojej karty SD!</string>

@ -257,7 +257,7 @@
<string name="taskEdit_menu_save">Guardar</string>
<string name="taskEdit_onTaskSave_Due">Tarefa Guardada: vence em %s</string>
<string name="taskEdit_onTaskSave_Overdue">Tarefa Guardada: venceu %d atrás</string>
<string name="taskEdit_onTaskSave_Overdue">Tarefa Guardada: venceu %s atrás</string>
<string name="taskEdit_onTaskSave_notDue">Tarefa Guardada</string>
<!-- TaskView -->
@ -385,7 +385,7 @@
<skip/>
<string name="error_opening">Não foi possível encontrar este item:</string>
<string name="error_saving">Não foi possível gravar: %s</string>
<string name="error_sdcard">Não é possível aceder à pasta: %s</string>
<string name="error_sdcard_general">Não é possível aceder ao seu cartão SD!</string>
@ -436,7 +436,7 @@
<string name="prefs_backup_desc">Efectuar cópias de segurança diárias para o cartão SD</string>
<!-- backup failure message (%s -> error message) -->
<string name="prefs_backup_desc_failure">A última cópia de segurança falhou</string>
<string name="prefs_backup_desc_failure">A última cópia de segurança falhou: %s</string>
<!-- backup failure error when error message is null -->
<string name="prefs_backup_desc_failure_null">A última cópia de segurança falhou, não foi possível ler o cartão SD</string>

@ -385,7 +385,7 @@
<skip/>
<string name="error_opening">Не могу найти элемент:</string>
<string name="error_saving">Не могу сохранить:</string>
<string name="error_sdcard">Нет доступа к папке:%s</string>
<string name="error_sdcard_general">Нет доступа к карте памяти!</string>

@ -385,7 +385,7 @@
<skip/>
<string name="error_opening">Kunde inte hitta följande:</string>
<string name="error_saving">Kunde inte spara: %s</string>
<string name="error_sdcard">Mappåtkomst nekad: %s</string>
<string name="error_sdcard_general">SD-kort ej tillgängligt!</string>

@ -293,7 +293,7 @@
<string name="sync_interval_title">Otomatik-Senkronizasyon</string>
<string name="sync_interval_desc">Eğer işaretlenirse, otomatik senkronizasyon belirtilen aralıklarla gerçekleşir</string>
<string name="sync_button_title">Ana Menü kısayolu</string>
<string name="sync_button_desc">\"Senkronizasyon\"\u Astrid menüsünde göster</string>
<string name="sync_button_desc">\"Senkronizasyon\" Astrid menüsünde göster</string>
<string name="sync_quiet_title">Soru kutularını gizle.</string>
<string name="sync_quiet_desc">Senkronizasyon sonucunu sakla</string>
<string name="sync_bgwifi_title">Senkronizasyonu sadece Wifi üzerinden yap</string>
@ -323,7 +323,7 @@
<string name="sync_progress_localdel">Bu cihazda silinen işler</string>
<string name="sync_progress_remotetx">İndiriliyor: %s</string>
<string name="rtm_login_label">Lütfen RTM'ye giriş yapın..</string>
<string name="rtm_login_label">Lütfen RTM\'ye giriş yapın..</string>
<string name="rtm_login_error">Girişinizde bir hata oluştu. \n\n Hata mesajı:</string>
@ -349,7 +349,7 @@
<string name="quick_tips">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</string>
<!-- %s => name of the application -->
<string name="task_killer_help">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.</string>
<string name="task_killer_help">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.</string>
<string name="task_killer_help_ok">Astrid\'i öldürmeyeceğim!</string>
<!-- Restore/Backup -->
@ -386,8 +386,8 @@
<skip/>
<string name="error_opening">Could not find this item: </string>
<string name="error_saving">%s kaydedilemedi.</string>
<string name="error_sdcard">% klasörüne erişilemedi.</string>
<string name="error_sdcard">%s klasörüne erişilemedi.</string>
<string name="error_sdcard_general">Hafıza kartına erişemiyorum!</string>
<skip/>

@ -385,7 +385,7 @@
<skip/>
<string name="error_opening">无法查找以下任务:</string>
<string name="error_saving">无法保存:</string>
<string name="error_sdcard">无法访问文件夹: %s</string>
<string name="error_sdcard_general">无法访问您的 SD 卡!</string>

@ -411,7 +411,7 @@ Skipped %d tasks.\n
<skip/>
<string name="error_opening">找不到此項目:</string>
<string name="error_saving">無法儲存:</string>
<string name="error_sdcard">Cannot access folder: %s</string>
<string name="error_sdcard_general">Cannot access your SD card!</string>

@ -416,7 +416,6 @@ Skipped %d tasks.\n
<skip />
<string name="error_opening">Could not find this item: </string>
<string name="error_saving">Could not save:s</string>
<string name="error_sdcard">Cannot access folder: %s</string>
<string name="error_sdcard_general">Cannot access your SD card!</string>

@ -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 <tim@todoroo.com>
*
*/
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());
}
}

@ -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;
}
}
Loading…
Cancel
Save