fix string script to detect mismatch of format specifiers

Crash due to typo introduced by Weblate made me realize I wasn't running
the script that ensures translated strings have the same set of format
specifiers as the English -- which might not be strictly necessary, but
it's safer to enforce it for now. Moved a few remaining %s to %1$s style
while at it.
This commit is contained in:
Eric House 2019-12-30 22:06:24 -08:00
parent 278275a9cb
commit c663d33f88
16 changed files with 133 additions and 119 deletions

View file

@ -58,7 +58,7 @@
how far along they are. I may list "tiles left" someday
instead... -->
<plurals name="moves_fmt">
<item quantity="one">%1$d move played</item>
<item quantity="one">One move played</item>
<item quantity="other">%1$d moves played</item>
</plurals>
<!-- When you select the gamel_menu_delete_all menuitem or
@ -457,7 +457,7 @@
invititation while trying to warn him not to send duplicates.
The number of players missing is substituted for "%1$d". -->
<plurals name="invite_msg_fmt">
<item quantity="one">This game is waiting for %1$d remote
<item quantity="one">This game is waiting for one remote
player. Would you like to invite someone to join -- assuming you
haven\'t already?</item>
<item quantity="other">This game is waiting for %1$d remote
@ -677,6 +677,7 @@
<!-- First line in the remaining tiles dialog (reached by tapping
the number at left end of the scoreboard) -->
<plurals name="strd_remains_header_fmt">
<item quantity="one">One tile left in pool.</item>
<item quantity="other">%1$d tiles left in pool.</item>
</plurals>
<!-- Intro to the paragraph listing all of the tiles remaining -->
@ -1845,9 +1846,9 @@
<!-- -->
<string name="new_app_avail">Tap to download and install</string>
<!-- Used in formatting final scores display -->
<string name="str_winner_fmt" formatted="false">[Winner] %s: %d</string>
<string name="str_resigned_fmt" formatted="false">[Resigned] %s: %d</string>
<string name="str_placer_fmt" formatted="false">[#%d] %s: %d</string>
<string name="str_winner_fmt" formatted="false">[Winner] %1$s: %2$d</string>
<string name="str_resigned_fmt" formatted="false">[Resigned] %1$s: %2$d</string>
<string name="str_placer_fmt" formatted="false">[#%1$d] %2$s: %3$d</string>
<!-- -->
<string name="inform_dict_diffversion_fmt">You and the host of this
game are using different versions of the wordlist %1$s.</string>
@ -2078,6 +2079,7 @@
<!-- formatting for last move summary in notifications -->
<string name="lmi_pass_fmt">%1$s passed (0 points)</string>
<plurals name="lmi_move_fmt">
<item quantity="one">%1$s played %2$s for one point</item>
<item quantity="other">%1$s played %2$s for %3$d points</item>
</plurals>
<plurals name="lmi_trade_fmt">

View file

@ -24,7 +24,7 @@
<string name="tile_button_txt_fmt">%1$s%2$d</string>
<string name="chat_sender_fmt">%1$s</string>
<string name="bkng_settings_text">设置</string>
<string name="str_placer_fmt" formatted="false">【#%d】%s%d</string>
<string name="str_placer_fmt" formatted="false">【#%1$d】%2$s%3$d</string>
<string name="group_cur_games">我的游戏</string>
<string name="group_new_games">新游戏</string>
<plurals name="group_name_fmt">

View file

@ -59,7 +59,7 @@
how far along they are. I may list "tiles left" someday
instead... -->
<plurals name="moves_fmt">
<item quantity="one">%1$d evom deyalp</item>
<item quantity="one">1 evom deyalp</item>
<item quantity="other">%1$d sevom deyalp</item>
</plurals>
<!-- When you select the gamel_menu_delete_all menuitem or

View file

@ -186,7 +186,7 @@
<string name="summary_relay_conn_fmt">Partida en joc a la sala «%1$s»</string>
<string name="summary_relay_gameover_fmt">Partida finalitzada en la sala «%1$s»</string>
<plurals name="moves_fmt">
<item quantity="one">%1$d jugada feta</item>
<item quantity="one">1 jugada feta</item>
<item quantity="other">%1$d jugades fetes</item>
</plurals>
<string name="button_delete">Suprimeix</string>
@ -265,7 +265,7 @@ que connecti via el repetidor.</string>
<string name="entering_trade">Toqueu les fitxes per a seleccionar-les…</string>
<string name="no_moves_made">(Encara no s\'ha fet cap jugada)</string>
<plurals name="invite_msg_fmt">
<item quantity="one">Aquesta partida està esperant a %1$d jugador remot. Si encara no ho heu fet, voleu convidar algú a unir-s\'hi?</item>
<item quantity="one">Aquesta partida està esperant a 1 jugador remot. Si encara no ho heu fet, voleu convidar algú a unir-s\'hi?</item>
<item quantity="other">Aquesta partida està esperant a %1$d jugadors remots. Si encara no ho heu fet, voleu convidar algú a unir-s\'hi?</item>
</plurals>
<string name="invite_if_nfc">O simplement toqueu per a convidar, si l\'altre aparell també té Android Beaming i és a prop.</string>
@ -285,7 +285,7 @@ que connecti via el repetidor.</string>
<item quantity="other">Queden %1$d fitxes al sac.</item>
</plurals>
<plurals name="strd_remains_expl_fmt">
<item quantity="one">Hi ha %1$d fitxa romanent als faristols ocults:
<item quantity="one">Hi ha 1 fitxa romanent als faristols ocults:
\n</item>
<item quantity="other">Hi ha %1$d fitxes romanents als faristols ocults:
\n</item>
@ -477,9 +477,9 @@ Introduïu el vostre nom aquí. S\'usarà en crear partides noves. (Podreu
<string name="new_dict_avail_fmt">Toqueu per a actualitzar %1$s</string>
<string name="new_app_avail_fmt">Versió nova de %1$s</string>
<string name="new_app_avail">Toqueu per a baixar i instal·lar</string>
<string name="str_winner_fmt" formatted="false">[Victòria] %s: %d</string>
<string name="str_placer_fmt" formatted="false">[#%d] %s: %d</string>
<string name="str_resigned_fmt" formatted="false">[Abandonament] %s: %d</string>
<string name="str_winner_fmt" formatted="false">[Victòria] %1$s: %2$d</string>
<string name="str_placer_fmt" formatted="false">[#%1$d] %2$s: %3$d</string>
<string name="str_resigned_fmt" formatted="false">[Abandonament] %1$s: %2$d</string>
<string name="inform_dict_title">Els diccionaris no coincideixen</string>
<string name="inform_dict_download">" (primer l\'heu de baixar.)"</string>
<string name="inform_dict_diffdict_fmt">Esteu usant el diccionari %1$s però l\'amfitrió de la partida usa %2$s. Voleu usar %3$s també?</string>
@ -824,7 +824,7 @@ Introduïu el vostre nom aquí. S\'usarà en crear partides noves. (Podreu
aquesta partida. N\'estem esperant resposta.
Useu el botó de tornar a convidar si penseu que
la invitació no ha arribat.</item>
<item quantity="other">Ja heu enviat $1$d invitacions a
<item quantity="other">Ja heu enviat %1$d invitacions a
aquesta partida. N\'estem esperant resposta.
de %2$d destinataris. Useu el botó de tornar a
convidar si penseu que les invitacions no ha arribat.</item>
@ -836,7 +836,7 @@ de %2$d destinataris. Useu el botó de tornar a
<string name="invite_choice_relay">Internet/repetidor</string>
<string name="invite_choice_p2p">Directe per Wifi</string>
<string name="chat_hint">Escriviu aquí...</string>
<string name="notify_title_turn_fmt">Teniu el torn en la partida $1$s</string>
<string name="notify_title_turn_fmt">Teniu el torn en la partida %1$s</string>
<string name="invite_notice_title">Partida nova via invitació</string>
<string name="new_relay_body">Toqueu per a obrir una partida nova</string>
<string name="relay_invite_title">Invitació via repetidor</string>
@ -852,7 +852,7 @@ aparells seleccionats?</string>
(Ho esteu fent servir en una partida.)</item>
<item quantity="other">
(Ho esteu fent servir en $1$d partides.)</item>
(Ho esteu fent servir en %1$d partides.)</item>
</plurals>
<string name="rematch_name_fmt">%1$s</string>
<string name="button_reinvite">Torna a convidar</string>
@ -904,7 +904,7 @@ aparells seleccionats?</string>
<string name="bt_pair_settings">Aparella\'n més</string>
<plurals name="invite_relay_desc_fmt">
<item quantity="one">Comproveu l\'aparell que voleu convidar a la partida nova, després toqueu «%2$s».</item>
<item quantity="other">Comproveu els $1$d aparells que voleu convidar a la partida nova, després toqueu «%2$s».</item>
<item quantity="other">Comproveu els %1$d aparells que voleu convidar a la partida nova, després toqueu «%2$s».</item>
</plurals>
<string name="invite_p2p_desc_extra">Només es mostren els aparells que són disponibles actualment. Si un aparell proper no es mostra, assegureu-vos que la WiFi és habilitada, que té el CrossWords instal·lat i que el joc via «WiFi Direct» és habilitat.</string>
<string name="empty_p2p_inviter">Ara mateix no hi ha cap aparell accessible via WiFiDirect que tingui el CrossWords instal·lat.</string>
@ -913,13 +913,9 @@ aparells seleccionats?</string>
<item quantity="one">Esteu segur de voler suprimir el número de telèfon seleccionat?</item>
<item quantity="other">Esteu segur de voler suprimir els %1$d números de telèfon seleccionats?</item>
</plurals>
<plurals name="invite_p2p_desc_fmt">
<item quantity="one">Seleccioneu el nom de l\'aparell WiFiDirect que voleu convidar a la partida nova, després toqueu «%2$s».</item>
<item quantity="other">Seleccioneu els noms dels aparells WiFiDirect que voleu convidar a la partida nova, després toqueu «%2$s».</item>
</plurals>
<plurals name="confirm_clear_relay_fmt">
<item quantity="one">Esteu segur de voler suprimir el registre RelayID seleccionat?</item>
<item quantity="other">Esteu segur de voler suprimir els registres RelayID seleccionats?</item>
<item quantity="other">Esteu segur de voler suprimir els %1$d registres RelayID seleccionats?</item>
</plurals>
<string name="invites_net_fmt">S\'han enviat les invitacions per a la partida connectada via %1$s:</string>
<string name="warn_relay_disabled">El joc via repetidor es troba inhabilitat en aquest aparell. No s\'enviarà ni rebrà cap moviment via el repetidor.</string>
@ -937,7 +933,7 @@ aparells seleccionats?</string>
<string name="rel_invite_title">Títol de la invitació per repetidor</string>
<string name="fetching_from_relay">Recupera les partides del repetidor</string>
<string name="rematch_sent_toast">S\'han enviat les invitacions per a tornar a jugar</string>
<string name="not_again_dfltname_fmt">Esteu fent servir el nom de jugador predeterminat «%1%s». Voleu personalitzar-lo amb el vostre nom abans de crear aquesta partida\?</string>
<string name="not_again_dfltname_fmt">Esteu fent servir el nom de jugador predeterminat «%1$s». Voleu personalitzar-lo amb el vostre nom abans de crear aquesta partida\?</string>
<string name="sms_invite_rationale">CrossWords necessita permís per a enviar una invitació via SMS.</string>
<string name="button_ask_again">Torna-ho a demanar</string>
<string name="sms_send_failed">No s\'ha pogut enviar l\'SMS</string>
@ -974,7 +970,7 @@ aparells seleccionats?</string>
<string name="ok_with_robots">D\'acord (robots)</string>
<string name="sms_invite_flakey">Aquesta opció nova executa l\'aplicació de missatgeria SMS amb una invitació llesta per a enviar, si funciona. Cada aplicació de missatgeria SMS és diferent i algunes no cooperen.</string>
<string name="sms_invite_fail">No és pot iniciar l\'aplicació de missatgeria SMS</string>
<string name="msg_dev_deleted_fmt">La partida amb nom «%1%s» s\'ha suprimit en un altre aparell. No hi podreu jugar mai més.</string>
<string name="msg_dev_deleted_fmt">La partida amb nom «%1$s» s\'ha suprimit en un altre aparell. No hi podreu jugar mai més.</string>
<string name="invite_choice_data_sms">SMS de dades</string>
<string name="empty_bt_inviter">Encara no s\'ha detectat cap aparell aparellat.</string>
<string name="checkbox_archive">Mou a l\'arxiu</string>

View file

@ -59,7 +59,7 @@
how far along they are. I may list "tiles left" someday
instead... -->
<plurals name="moves_fmt">
<item quantity="one">%1$d MOVE PLAYED</item>
<item quantity="one">1 MOVE PLAYED</item>
<item quantity="other">%1$d MOVES PLAYED</item>
</plurals>
<!-- When you select the gamel_menu_delete_all menuitem or

View file

@ -84,7 +84,6 @@
<string name="password_label">Heslo</string>
<string name="player_edit_title">Hráč</string>
<string name="players_label_standalone">Hráči</string>
<string name="players_label_host_fmt">Hráči -- lokální a očekávaní</string>
<string name="button_add_player">Přidat hráče</string>
<string name="button_juggle_players">Přehodit hráče</string>
<string name="dicts_item_select">Nastavit jako výchozí</string>
@ -131,7 +130,6 @@
<string name="msg_no_room">Žádný server si nezaregistroval místnost s tímto jménem.</string>
<string name="msg_dup_room">Jiný server si již zaregistroval místnost s tímto jménem. Přejmenujte ji nebo to zkuste později.</string>
<string name="msg_lost_other">Relay ztratil kontakt s nějakým zařízením ve hře.</string>
<string name="ids_badwords_fmt">Slovo[a] %1$s nebylo nalezeno ve slovníku.</string>
<string name="badwords_accept"> Chcete přesto přijmout tento tah?</string>
<string name="badwords_lost"> Tah ztracen.</string>
<string name="badwords_title">Neplatné slovo[a]</string>
@ -167,4 +165,4 @@
<string name="summary_relay_wait_fmt">Čekám na hráče v mistnosti \"%1$s\"</string>
<string name="summary_relay_conn_fmt">Rozehraná hra v mistnosti \"%1$s\"</string>
<string name="summary_relay_gameover_fmt">Konec hry v místnosti \"%1$s\"</string>
</resources>
</resources>

View file

@ -12,7 +12,7 @@
<string name="summary_invites_out">Eingeladene Spieler</string>
<string name="gameOver">Partie beendet</string>
<plurals name="moves_fmt">
<item quantity="one">%1$d Zug gespielt</item>
<item quantity="one">1 Zug gespielt</item>
<item quantity="other">%1$d Züge gespielt</item>
</plurals>
<string name="button_delete">Löschen</string>
@ -102,7 +102,7 @@
<string name="players_label_standalone">Spieler (zum Bearbeiten antippen)</string>
<string name="players_label_host_fmt">Spieler (%1$d lokal, %2$d extern)</string>
<string name="join_room">Öffentlichen Raum betreten</string>
<string name="public_names_progress_fmt">Öffentliche Räume für %1$ d-Spieler-Partien in %2$ s werden geholt.</string>
<string name="public_names_progress_fmt">Öffentliche Räume für %1$d-Spieler-Partien in %2$s werden geholt.</string>
<string name="no_name_found_fmt">Keine öffentlichen Räume für %1$d-Spieler-Partien in %2$s gefunden. Versuchen Sie zu aktualisieren oder erzeugen Sie Ihre eigenen.</string>
<string name="use_timer">Spieluhr aktivieren</string>
<string name="phonies_spinner_prompt">Wie „falsche Wörter\" behandelt werden (Wörter, die nicht in der Wortliste sind)</string>
@ -128,7 +128,7 @@
<string name="entering_trade">Spielsteine durch Antippen auswählen …</string>
<string name="no_moves_made">(Noch keine Züge)</string>
<plurals name="invite_msg_fmt">
<item quantity="one">Diese Partie wartet auf %1$d externen Spieler. Wollen Sie noch jemanden einladen falls Sie das nicht bereits haben?</item>
<item quantity="one">Diese Partie wartet auf 1 externen Spieler. Wollen Sie noch jemanden einladen falls Sie das nicht bereits haben?</item>
<item quantity="other">Diese Partie wartet auf %1$d externe Spieler. Wollen Sie noch jemanden einladen falls Sie das nicht bereits haben?</item>
</plurals>
<plurals name="invite_sent_fmt">
@ -330,7 +330,7 @@
<string name="button_save">Speichern</string>
<string name="button_discard">Verwerfen</string>
<string name="button_retry">Erneut versuchen</string>
<string name="dup_game_query_fmt">Sie haben bereits eine Partie, die anscheinend von der selben Einladung erzeugt wurde (auf 1$s). Sind Sie sicher, dass Sie eine weitere erzeugen wollen?</string>
<string name="dup_game_query_fmt">Sie haben bereits eine Partie, die anscheinend von der selben Einladung erzeugt wurde (auf %1$s). Sind Sie sicher, dass Sie eine weitere erzeugen wollen?</string>
<string name="info_title">Zur Information …</string>
<string name="tile_button_txt_fmt">%1$s (%2$d)</string>
<string name="tile_pick_summary_fmt">Aktuelle Auswahl: %1$s</string>
@ -506,11 +506,11 @@
<string name="gamel_menu_checkupdates">Auf Aktualisierungen prüfen</string>
<string name="checkupdates_none_found">Alles ist auf dem neuesten Stand.</string>
<string name="new_dict_avail">Neue Wortliste verfügbar</string>
<string name="new_dict_avail_fmt">Tippen Sie, um %1$ s zu aktualisieren</string>
<string name="new_app_avail_fmt">Neue Version von %1$ s</string>
<string name="new_dict_avail_fmt">Tippen Sie, um %1$s zu aktualisieren</string>
<string name="new_app_avail_fmt">Neue Version von %1$s</string>
<string name="new_app_avail">Zum Herunterladen und Installieren antippen</string>
<string name="str_winner_fmt" formatted="false">[Gewinner] %s: %d</string>
<string name="str_resigned_fmt" formatted="false">[Aufgegeben] %s: %d</string>
<string name="str_winner_fmt" formatted="false">[Gewinner] %1$s: %2$d</string>
<string name="str_resigned_fmt" formatted="false">[Aufgegeben] %1$s: %2$d</string>
<string name="inform_dict_diffversion_fmt">Sie und der Server dieser Partie benutzen verschiedene Versionen der Wortliste %1$s.</string>
<string name="inform_dict_title">Wortlisten stimmen nicht überein</string>
<string name="inform_dict_diffdict_fmt">Sie benutzen die Wortliste %1$s, aber der Server der Partie benutzt %2$s. Wollen Sie auch %3$s benutzen?</string>
@ -630,7 +630,7 @@
<string name="loc_item_check">Überprüfen</string>
<string name="loc_item_copy_eng">Englisch kopieren</string>
<string name="loc_fmts_mismatch">Ungültige Übersetzung: Eine übersetzte Zeichenfolge muss die gleichen Formatierungszeichen enthalten (z. B. %1$s) wie das Original.</string>
<string name="not_again_fmt_expl">Diese Zeichenfolge enthält spezielle Formatierungszeichen (z. B. 1$s). Vergewissern Sie sich, das Ihre Übersetzung die gleichen wie das Original enthält.
<string name="not_again_fmt_expl">Diese Zeichenfolge enthält spezielle Formatierungszeichen (z. B. %1$s). Vergewissern Sie sich, das Ihre Übersetzung die gleichen wie das Original enthält.
\n
\n(Sie können erst speichern, wenn das der Fall ist.)</string>
<string name="remote_empty">Wortliste wird vom Server geladen …</string>
@ -675,7 +675,7 @@
<string name="prev_player">Ihr Gegner</string>
<string name="lmi_pass_fmt">%1$s hat gepasst (0 Punkte)</string>
<plurals name="lmi_move_fmt">
<item quantity="one">%1$s hat %2$s gespielt im Wert von %3$d Punkten</item>
<item quantity="one">%1$s hat %2$s gespielt im Wert von 1 Punkten</item>
<item quantity="other"/>
</plurals>
<plurals name="lmi_trade_fmt">
@ -745,7 +745,7 @@
<string name="got_langdict_title">Standard-Wortliste für Sprache holen</string>
<string name="got_langdict_summary">Kein zweites Mal versuchen</string>
<string name="pref_item_update_title">Zwischen den einzelnen Versionen aktualisieren</string>
<string name="checking_for_fmt">Wortlisten werden in %1$ s gesucht …</string>
<string name="checking_for_fmt">Wortlisten werden in %1$s gesucht …</string>
<string name="db_store_done">Schreiben auf SD-Karte abgeschlossen.</string>
<string name="seeking_relay">Verbinde mit Zwischenstation …</string>
<string name="no_relay_conn">Diese Partie ist für eine Verbindung über die Zwischenstation (Internet) konfiguriert, konnte aber keine Verbindung aufbauen.
@ -803,7 +803,7 @@
<item quantity="other"/>
</plurals>
<plurals name="strd_remains_expl_fmt">
<item quantity="one">Noch %1$d Spielstein in den nicht gezeigten Ablagen:
<item quantity="one">Noch 1 Spielstein in den nicht gezeigten Ablagen:
\n</item>
<item quantity="other">"Noch %1$d Spielsteine im Säckchen und den nicht gezeigten Ablagen: "</item>
</plurals>
@ -847,7 +847,7 @@
\n
\n(Wird von %1$d Partien benutzt.)"</item>
</plurals>
<string name="str_placer_fmt" formatted="false">[Nr. %d] %s: %d</string>
<string name="str_placer_fmt" formatted="false">[Nr. %1$d] %2$s: %3$d</string>
<string name="inform_dict_download">" (Sie müssen es zuerst herunterladen.)"</string>
<string name="list_group_default">Neue Partien hier einstellen</string>
<string name="list_group_moveup">Nach oben verschieben</string>

View file

@ -12,7 +12,7 @@
<string name="summary_invites_out_fmt">Jugadores invitados en la sala \"%1$s\"</string>
<string name="gameOver">Fin de la partida</string>
<plurals name="moves_fmt">
<item quantity="one">%1$d movimiento realizado</item>
<item quantity="one">1 movimiento realizado</item>
<item quantity="other">%1$d movimientos realizados</item>
</plurals>
<string name="button_delete">Borrar</string>
@ -121,10 +121,6 @@
<item quantity="one">"La partida está esperando un jugador remoto. Si aún no lo has hecho, ¿te gustaría invitar a alguien a unirse\?"</item>
<item quantity="other">"La partida está esperando %1$d jugadores remotos. Si aún no lo has hecho, ¿te gustaría invitar a alguien a unirse\?"</item>
</plurals>
<plurals name="invite_sent_fmt">
<item quantity="one">Ya has invitado a un jugador remoto a esta partida. Estamos esperando su respuesta. Por favor, pulsa el botón \"invitar de nuevo\" si crees que la invitación no se ha enviado.</item>
<item quantity="other">Ya has enviado %1$d invitaciones para esta partida. Estamos esperando sus respuestas. Por favor, pulsa el botón \"invitar de nuevo\" si crees que las invitaciones no se han enviado.</item>
</plurals>
<string name="invited_msg">Esta partida ha sido creada a partir de una invitación que has recibido. La partida comenzará tan pronto como se pueda conectar con el remitente y cualquier otro invitado.</string>
<string name="invite_if_nfc">O simplemente pulsa para invitar -- si el otro dispositivo tiene también Android Beaming y está cerca.</string>
<string name="invite_multiple">" (Estás esperando a varios jugadores remotos. No tienes que invitarlos a todos a la vez, pero esta alerta no será descartada hasta que todos hayan sido invitados y las invitaciones aceptadas.)"</string>

View file

@ -58,7 +58,7 @@
how far along they are. I may list "tiles left" someday
instead... -->
<plurals name="moves_fmt">
<item quantity="one">%1$d coup joué</item>
<item quantity="one">1 coup joué</item>
<item quantity="other">%1$d coups joués</item>
</plurals>
<!-- When you select the gamel_menu_delete_all menuitem or
@ -763,7 +763,7 @@ restants]</string>
<!--<string name="strd_remains_header_fmt">%1$d tiles left in pool.</string>-->
<!--<string name="strd_remains_header_fmt">%1$d jetons restants dans le sac.</string>-->
<plurals name="strd_remains_header_fmt">
<item quantity="one">%1$d jeton restant dans le sac.</item>
<item quantity="one">1 jeton restant dans le sac.</item>
<item quantity="other">%1$d jetons restants dans le sac.</item>
</plurals>
<!-- Intro to the paragraph lisiting all of the tiles remaining -->
@ -774,7 +774,7 @@ tous les chevalets :\n</string>-->
<plurals name="strd_remains_expl_fmt">
<item quantity="one">Un jeton restant dans les chevalets cachés :
\n</item>
<item quantity="other">%d jetons restants dans le sac et les chevalets cachés :
<item quantity="other">%1$d jetons restants dans le sac et les chevalets cachés :
\n</item>
</plurals>
<!-- text of dialog shown when the menu item board_menu_undo_last
@ -2252,11 +2252,11 @@ réseau.)</string>-->
<string name="new_app_avail">Toucher pour télécharger et installer</string>
<!-- Used in formatting final scores display -->
<!--<string name="str_winner_fmt" formatted="false">[Winner] %s: %d</string>-->
<string name="str_winner_fmt" formatted="false">[Vainqueur] %s : %d</string>
<string name="str_winner_fmt" formatted="false">[Vainqueur] %1$s : %2$d</string>
<!--<string name="str_resigned_fmt" formatted="false">[Resigned] %s: %d</string>-->
<string name="str_resigned_fmt" formatted="false">[Abandon] %s : %d</string>
<string name="str_resigned_fmt" formatted="false">[Abandon] %1$s : %2$d</string>
<!--<string name="str_placer_fmt" formatted="false">[#%d] %s: %d</string>-->
<string name="str_placer_fmt" formatted="false">[%de] %s : %d</string>
<string name="str_placer_fmt" formatted="false">[%1$de] %2$s : %3$d</string>
<!-- -->
<!--<string name="inform_dict_diffversion_fmt">You and the host of this
game are using different versions of the wordlist %1$s.</string>-->
@ -2653,7 +2653,7 @@ pour voir ce qui est disponible.</string>
<!--<string name="lmi_move_fmt">%1$s played %2$s for %3$d points</string>-->
<!--<string name="lmi_move_fmt">%1$s a joué %2$s pour %3$d points</string>-->
<plurals name="lmi_move_fmt">
<item quantity="one">%1$s a joué %2$s pour %3$d point</item>
<item quantity="one">%1$s a joué %2$s pour un point</item>
<item quantity="other">%1$s a joué %2$s pour %3$d points</item>
</plurals>
<!--<string name="lmi_trade_fmt">%1$s traded %2$d tiles</string>-->
@ -2763,7 +2763,7 @@ d\'autres joueurs quand elle sera ouverte.)</string>
<!--<string name="nplayers_fmt">%1$d player[s]</string>-->
<!--<string name="nplayers_fmt">%1$d joueur[s]</string>-->
<plurals name="nplayers_fmt">
<item quantity="one">%1$d joueur</item>
<item quantity="one">1 joueur</item>
<item quantity="other">%1$d joueurs</item>
</plurals>
<!--XLATE-ME-->
@ -3138,10 +3138,6 @@ Merci de me faire savoir si vous aimez cette fonctionnalité, de signaler les pl
<string name="invite_choice_p2p">Wifi Direct</string>
<string name="bt_pair_settings">En appairer d\'autres</string>
<string name="p2p_invite_title">Invitation par WiFi direct</string>
<plurals name="invite_p2p_desc_fmt">
<item quantity="one">Sélectionnez le nom de l\'appareil WiFi Direct que vous souhaitez inviter à votre nouvelle partie, puis touchez \"%2$s\".</item>
<item quantity="other">Sélectionnez les noms des appareils WiFi Direct que vous souhaitez inviter à votre nouvelle partie, puis touchez \"%2$s\".</item>
</plurals>
<string name="invite_p2p_desc_extra">Seuls les appareils actuellement disponibles sont affichés. Si un appareil à proximité ne s\'affiche pas, assurez-vous que le WiFi est allumé, que CrossWords est installé, et que le WiFi Direct est activé.</string>
<string name="empty_p2p_inviter">Il n\'y a actuellement pas d\'appareils accessibles par WiFi Direct qui ont CrossWords installé.</string>
<string name="not_again_comms_p2p">Utiliser le WiFi Direct pour jouer contre un appareil faisant du WiFi Direct, sur lequel CrossWords est installé.</string>
@ -3205,7 +3201,7 @@ Vous pouvez la ré-ouvrir pour que la permission soit redemandée. Ou vous pouve
<string name="button_scan">Rescanner</string>
<plurals name="confirm_clear_bt_fmt">
<item quantity="one">Êtes-vous sûr de vouloir oublier l\'appareil sélectionné \?</item>
<item quantity="other">"Êtes-vous sûr de vouloir oublier les %1d appareils sélectionnés \?"</item>
<item quantity="other">"Êtes-vous sûr de vouloir oublier les %1$d appareils sélectionnés \?"</item>
</plurals>
<string name="confirm_clear_bt_postscript">"
\n

View file

@ -331,7 +331,7 @@
<string name="history_title">ゲームの履歴</string>
<string name="finalscores_title">最終スコア</string>
<string name="ids_endnow">辞めてもよろしいですか?</string>
<string name="str_resigned_fmt" formatted="false">[辞めました] %s: %d</string>
<string name="str_resigned_fmt" formatted="false">[辞めました] %1$s: %2$d</string>
<string name="query_title">質問…</string>
<string name="newbie_title">ヒントがあります</string>
<string name="button_notagain">今後表示しない</string>
@ -505,8 +505,8 @@
<string name="new_dict_avail_fmt">タップすると %1$s を更新</string>
<string name="new_app_avail_fmt">新しいバージョンの %1$s</string>
<string name="new_app_avail">タップすると、ダウンロードとインストール</string>
<string name="str_winner_fmt" formatted="false">[勝ち] %s: %d</string>
<string name="str_placer_fmt" formatted="false">[#%d] %s: %d</string>
<string name="str_winner_fmt" formatted="false">[勝ち] %1$s: %2$d</string>
<string name="str_placer_fmt" formatted="false">[#%1$d] %2$s: %3$d</string>
<string name="inform_dict_diffversion_fmt">あなたとこのゲームのホストは、異なるバージョンの単語リスト %1$s を使用しています。</string>
<string name="inform_dict_title">単語リストの不一致</string>
<string name="inform_dict_diffdict_fmt">あなたは単語リスト %1$s を使用していますが、ゲームのホストは %2$s を使用しています。%3$s も使用しますか?</string>
@ -853,12 +853,6 @@
<string name="invite_choice_p2p">Wifi ダイレクト</string>
<string name="bt_pair_settings">ペアの詳細</string>
<string name="p2p_invite_title">WiFi ダイレクトへの招待</string>
<plurals name="invite_p2p_desc_fmt">
<item quantity="one">新しいゲームに招待する WiFi
ダイレクトデバイスの名前を選択し、
\"%2$s\" をタップしてください。</item>
<item quantity="other"/>
</plurals>
<string name="invite_p2p_desc_extra">現在利用可能なデバイスだけが表示されます。
近くのデバイス表示されていない場合、WiFi がオンになっていること、
クロスワードがインストールされていること、WiFi ダイレクトのプレイが

View file

@ -12,7 +12,7 @@
<string name="summary_invites_out_fmt">Spillere invitert til rom \"%1$s\"</string>
<string name="gameOver">Spill over</string>
<plurals name="moves_fmt">
<item quantity="one">%1$d trekk gjort</item>
<item quantity="one">1 trekk gjort</item>
<item quantity="other">%1$d trekk gjort</item>
</plurals>
<string name="button_delete">Slett</string>
@ -388,7 +388,7 @@
<string name="nag_warn_last_fmt">Siste advarsel: %1$s</string>
<string name="prev_player">Din motstander</string>
<plurals name="lmi_move_fmt">
<item quantity="one">%1$s spilte %2$s for %3$d poeng</item>
<item quantity="one">%1$s spilte %2$s for 1 poeng</item>
<item quantity="other"/>
</plurals>
<string name="lmi_phony_fmt">%1$s mistet en tur</string>
@ -566,10 +566,6 @@
<string name="invite_subject_fmt">La oss spille CrossWords (rom %1$s)</string>
<string name="invite_chooser_fmt">Send invitasjon via %1$s</string>
<string name="invite_chooser_email">e-post</string>
<plurals name="query_trade_fmt">
<item quantity="one">Er du sikker på at du ønsker å bytte valgt fil (%2$s)?</item>
<item quantity="other">Er du sikker på at du ønsker å bytte valgt filer (%2$s)?</item>
</plurals>
<string name="chat_title_fmt">Sludring for %1$s</string>
<string name="str_no_empties_in_turn">Tomme felter kan ikke dele spilte flis.</string>
<string name="str_two_tiles_first_move">Må spille to eller flere flis i første trekk.</string>
@ -623,8 +619,8 @@
\nDu kan skru på spill via SMS nå, eller senere.</string>
<string name="button_enable_relay">Skru på relé-spill</string>
<string name="button_disable_relay">Skru av relé-spill</string>
<string name="str_winner_fmt" formatted="false">[Seierherre] %s: %d</string>
<string name="str_resigned_fmt" formatted="false">[Resignert] %d: %d</string>
<string name="str_winner_fmt" formatted="false">[Seierherre] %1$s: %2$d</string>
<string name="str_resigned_fmt" formatted="false">[Resignert] %1$s: %2$d</string>
<string name="inform_dict_title">Samsvarte ikke med ordliste</string>
<string name="reload_new_dict_fmt">Gjeninnlaster spill med %1$s</string>
<string name="default_loc_summary">(Ikke i eksternt-/SD-kort -minne)</string>
@ -762,7 +758,7 @@
<string name="warn_relay_later">Du kan skru på relé-spill nå, eller senere.</string>
<string name="warn_relay_remove">Du kan skru på relé-spill nå, eller senere, eller fjerne det fra dette spillet.</string>
<string name="warn_relay_havegames">Er du sikker på at du ønsker å skru av spill på relé-et</string>
<string name="str_placer_fmt" formatted="false">[Nr.%d] %s: %d</string>
<string name="str_placer_fmt" formatted="false">[Nr.%1$d] %2$s: %3$d</string>
<string name="inform_dict_diffversion_fmt">Du og verten for dette spillet bruker forskjellige versjoner av ordlisten %1$s.</string>
<string name="square_tiles_summary">Selv om de kan være høyere</string>
<string name="enable_nfc">NFC er skrudd av på denne enheten. Du kan bruke systeminnstillingene for å skru det på.</string>
@ -796,10 +792,6 @@
\n
\n(Sletting av arkivgruppen er trygt fordi den vil bli gjenopprettet igjen når det trengs.)</string>
<string name="pick_faceup">Plukk flis med bokstavene avdekt</string>
<plurals name="invite_p2p_desc_fmt">
<item quantity="one">Velg navnet på Wi-Fi Direct-enheten du ønsker å invitere til spillet ditt, trykk så \"%2$s\".</item>
<item quantity="other">Velg navnet på Wi-Fi Direct-enhetene du ønsker å invitere til spillet ditt, trykk så \"%2$s\".</item>
</plurals>
<string name="invite_p2p_desc_extra">Kun spillere som er tilgjengelig vises. Hvis en enhet i nærheten ikke vises, forsikre deg om at Wi-Fi er slått på, og at CrossWords er installert, og at spill via Wi-Fi Direct er påslått.</string>
<string name="empty_relay_inviter">Listen over enheter er tom. Bruk \"Skann spill\"-knappen for å skanne dine gamle spill for motstandere. Bruk \"+\"knappen for å skrive inn enhets-ID-er direkte.</string>
<plurals name="confirm_clear_relay_fmt">

View file

@ -15,7 +15,7 @@
<string name="summary_relay_gameover_fmt">Spel voorbij is kamer \"%1$s\"</string>
<string name="gameOver">Spel voorbij</string>
<plurals name="moves_fmt">
<item quantity="one">%1$d zet gespeeld</item>
<item quantity="one">1 zet gespeeld</item>
<item quantity="other">%1$d zetten gespeeld</item>
</plurals>
<string name="button_delete">Verwijder</string>
@ -41,11 +41,11 @@
<string name="rename_label">Verander de naam van dit spel naar:</string>
<string name="rename_label_caveat">Verander de naam van dit spel (op dit apparaat) naar:</string>
<plurals name="confirm_seldeletes_fmt">
<item quantity="one">Weet je zeker dat je %1$d geselecteerd spel wilt verwijderen? Deze actie kan niet ongedaan gemaakt worden.</item>
<item quantity="one">Weet je zeker dat je 1 geselecteerd spel wilt verwijderen? Deze actie kan niet ongedaan gemaakt worden.</item>
<item quantity="other">Weet je zeker dat je %1$d geselecteerde spellen wilt verwijderen? Deze actie kan niet ongedaan gemaakt worden.</item>
</plurals>
<plurals name="confirm_reset_fmt">
<item quantity="one">Weet je zeker dat je %1$d geselecteerd spel wilt resetten?\n\n(Resetten verwijderd alle zetten en verbindingsinformatie.)</item>
<item quantity="one">Weet je zeker dat je 1 geselecteerd spel wilt resetten?\n\n(Resetten verwijderd alle zetten en verbindingsinformatie.)</item>
<item quantity="other">Weet je zeker dat je %1$d geselecteerde spellen wilt resetten?\n\n(Resetten verwijderd alle zetten en verbindingsinformatie.)</item>
</plurals>
<string name="title_dicts_list">CrossWords Woordenlijsten</string>
@ -120,14 +120,14 @@
<string name="bonus_w3x_summary">3W</string>
<string name="no_moves_made">(Nog geen zetten gedaan)</string>
<plurals name="invite_msg_fmt">
<item quantity="one">Dit spel wacht op %1$d speler op afstand. Wil je iemand uitnodigen om mee te doen, indien je dit nog niet gedaan hebt?</item>
<item quantity="one">Dit spel wacht op 1 speler op afstand. Wil je iemand uitnodigen om mee te doen, indien je dit nog niet gedaan hebt?</item>
<item quantity="other">Dit spel wacht op %1$d spelers op afstand. Wil je iemand uitnodigen om mee te doen, indien je dit nog niet gedaan hebt?</item>
</plurals>
<string name="invite_if_nfc">Of druk om uit te nodigen, indien het andere apparaat dichtbij is en Android Beam (NFC) ondersteund.</string>
<string name="invite_multiple">" (Je verwacht meerdere spelers op afstand. Je hoeft ze niet allemaal tegelijk uit te nodigen, maar dit bericht zal niet verdwijnen totdat iedereen uitgenodigd is en de uitnodiging geaccepteerd heeft.)"</string>
<string name="pts">pntn</string>
<plurals name="msg_relay_waiting_fmt">
<item quantity="one">Apparaat %1$d verbonden met relay in kamer \"%2$s\". Wachtend op %3$d speler.</item>
<item quantity="one">Apparaat 1 verbonden met relay in kamer \"%2$s\". Wachtend op %1$d speler.</item>
<item quantity="other">Apparaat %1$d verbonden met relay in kamer \"%2$s\". Wachtend op %3$d spelers.</item>
</plurals>
<string name="msg_relay_all_here_fmt">Alle spelers spelers zijn hier in kamer \"%1$s\".</string>
@ -181,11 +181,11 @@
<string name="str_bonus_all">Bonus voor het gebruiken van alle letters: 50\n</string>
<string name="strd_turn_score_fmt">Score voor beurt: %1$d\n</string>
<plurals name="strd_remains_header_fmt">
<item quantity="one">%1$d letter in de zak.</item>
<item quantity="one">1 letter in de zak.</item>
<item quantity="other">%1$d letters in de zak.</item>
</plurals>
<plurals name="strd_remains_expl_fmt">
<item quantity="one">%1$d letter in de zak en op alle rekken:\n</item>
<item quantity="one">1 letter in de zak en op alle rekken:\n</item>
<item quantity="other">%1$d letters in de zak en op alle rekken:\n</item>
</plurals>
<string name="confirm_undo_last">Weet je zeker dat je de laatste zet ongedaan wilt maken? (Je kan deze niet opnieuw uitvoeren.)</string>
@ -439,7 +439,7 @@
<string name="new_name_body_fmt">%1$s heeft je uitgenodigd om te spelen</string>
<string name="button_sms_add">Importeer contact</string>
<plurals name="invite_sms_desc_fmt">
<item quantity="one">Selecteer %1$d telefoonnummer dat je voor je nieuwe spel uit wilt nodigen en druk op \"%2$s\".</item>
<item quantity="one">Selecteer 1 telefoonnummer dat je voor je nieuwe spel uit wilt nodigen en druk op \"%2$s\".</item>
<item quantity="other">Selecteer de %1$d telefoonnummers die je voor je nieuwe spel uit wilt nodigen en druk op \"%2$s\".</item>
</plurals>
<string name="manual_owner_name">(Niet in contacten)</string>
@ -496,12 +496,12 @@
<string name="new_dict_avail_fmt">Druk om %1$s te updaten</string>
<string name="new_app_avail_fmt">Nieuwe versie van %1$s</string>
<string name="new_app_avail">Druk om te downloaden en te installeren</string>
<string name="str_winner_fmt" formatted="false">[Winnaar] %s: %d</string>
<string name="str_resigned_fmt" formatted="false">[Opgegeven] %s: %d</string>
<string name="str_placer_fmt" formatted="false">[#%d] %s: %d</string>
<string name="str_winner_fmt" formatted="false">[Winnaar] %1$s: %2$d</string>
<string name="str_resigned_fmt" formatted="false">[Opgegeven] %1$s: %2$d</string>
<string name="str_placer_fmt" formatted="false">[#%1$d] %2$s: %3$d</string>
<string name="inform_dict_diffversion_fmt">Jij en de host van dit spel gebruiken een verschillende versie van de woordenlijst %1$s.</string>
<string name="inform_dict_title">Woordenlijsten komen niet overeen</string>
<string name="inform_dict_diffdict_fmt">Jij gebruikt woordenlijst %1$s, maar de host gebruikt %2$s. Wil je ook %2$s gebruiken?</string>
<string name="inform_dict_diffdict_fmt">Jij gebruikt woordenlijst %1$s, maar de host gebruikt %2$s. Wil je ook %3$s gebruiken?</string>
<string name="inform_dict_download">" (Je zult deze eerst moeten downloaden.)"</string>
<string name="reload_new_dict_fmt">Spel herladen met %1$s</string>
<string name="missing_dict_title">Wachten op speluitnodiging</string>
@ -661,7 +661,7 @@
<string name="prev_player">Jouw tegenstander</string>
<string name="lmi_pass_fmt">%1$s heeft de beurt overgeslagen (0 punten)</string>
<plurals name="lmi_move_fmt">
<item quantity="one">%1$s speelde %2$s voor %3$d punt</item>
<item quantity="one">%1$s speelde %2$s voor 1 punt</item>
<item quantity="other">%1$s speelde %2$s voor %3$d punten</item>
</plurals>
<plurals name="lmi_trade_fmt">
@ -682,7 +682,7 @@
<string name="use_defaults">Standaard</string>
<string name="nplayers_prompt">Hoeveelheid op dit apparaat</string>
<plurals name="nplayers_fmt">
<item quantity="one">%1$d speler</item>
<item quantity="one">1 speler</item>
<item quantity="other">%1$d spelers</item>
</plurals>
<string name="err_dup_invite_fmt">Dubbele uitnodiging geweigerd: apparaat \"%1$s\" heeft al een uitnodiging voor dit spel geaccepteerd.</string>

View file

@ -217,7 +217,7 @@
<string name="not_again_dfltname_fmt">Używasz domyślnej nazwy gracza \"%1$s\". Czy chciałbyś spersonalizować swoje imię przed utworzeniem tej gry\?</string>
<string name="robot_name_fmt">%1$s (robot)</string>
<plurals name="moves_fmt">
<item quantity="one">%1$d ruch zagrany</item>
<item quantity="one">1 ruch zagrany</item>
<item quantity="few">%1$d ruchy zagrane</item>
<item quantity="many">%1$d ruchów zagranych</item>
</plurals>
@ -323,7 +323,7 @@
\n</string>
<string name="strs_move_across_fmt">przenieś (od %1$s w poprzek)
\n</string>
<string name="strs_move_down_fmt">przenieś (z %1$ w dół)
<string name="strs_move_down_fmt">przenieś (z %1$s w dół)
\n</string>
<string name="strs_tray_at_start_fmt">Półka na początku: %1$s
\n</string>
@ -569,9 +569,8 @@
<string name="new_dict_avail_fmt">Stuknij, aby zaktualizować %1$s</string>
<string name="new_app_avail_fmt">Nowa wersja %1$s</string>
<string name="new_app_avail">Stuknij, aby pobrać i zainstalować</string>
<string name="str_winner_fmt" formatted="false">[Zwycięzca] %1$s</string>
<string name="str_resigned_fmt" formatted="false">[Zrezygnował] %s: %d</string>
<string name="str_placer_fmt" formatted="false">[#%d] %s: %d</string>
<string name="str_resigned_fmt" formatted="false">[Zrezygnował] %1$s: %2$d</string>
<string name="str_placer_fmt" formatted="false">[#%1$d] %2$s: %3$d</string>
<string name="inform_dict_diffversion_fmt">Ty i gospodarz tej gry używacie różnych wersji listy słów %1$s.</string>
<string name="inform_dict_title">Niedopasowanie listy słów</string>
<string name="inform_dict_diffdict_fmt">Używasz listy słów %1$s, ale gospodarz gry używa %2$s. Czy chciałbyś również użyć %3$s\?</string>
@ -709,7 +708,7 @@
<string name="prev_player">Twój przeciwnik</string>
<string name="lmi_pass_fmt">%1$s minęło (0 punktów)</string>
<plurals name="lmi_move_fmt">
<item quantity="one">%1$s zagrał %2$s za %3$d punktów</item>
<item quantity="one">%1$s zagrał %2$s za 1 punktów</item>
<item quantity="few"/>
<item quantity="many"/>
</plurals>
@ -905,7 +904,7 @@
<string name="pick_faceup">Wybierz odkryte kafelki</string>
<string name="menu_juggle">Wymieszaj kafelki</string>
<string name="pct_suffix">" %."</string>
<string name="add_to_study_fmt">Dodaj %1$ do listy nauki</string>
<string name="add_to_study_fmt">Dodaj %1$s do listy nauki</string>
<string name="title_studyon">Włącz listę nauki</string>
<string name="gamel_menu_study">Lista do nauczenia…</string>
<string name="add_done_fmt">%1$s dodane do %2$s listy do nauki</string>
@ -1003,4 +1002,4 @@
<string name="not_again_longtap_lookup">Możesz spojrzeć na słowa PRZED tym, jak są one popełnione jako ruchy - przez długie podsłuchiwanie, tak samo jak słowa popełnione.
\n
\nUżyj tej funkcji, aby sprawdzić poprawność słów, którymi zamierzasz zagrać, lub poszukaj nieznanego słowa podanego jako wskazówka.</string>
</resources>
</resources>

View file

@ -1744,17 +1744,17 @@
<string name="show_wordlist_browser">Listas de palavras</string>
<string name="rename_label_caveat">Altere o nome deste jogo (apenas neste dispositivo) para:</string>
<plurals name="confirm_seldeletes_fmt">
<item quantity="one">Você tem certeza que deseja excluir o %1$d jogo selecionado? Esta ação não poderá ser desfeita.</item>
<item quantity="one">Você tem certeza que deseja excluir o 1 jogo selecionado? Esta ação não poderá ser desfeita.</item>
<item quantity="other">Você tem certeza que deseja excluir os %1$d jogos selecionados? Esta ação não poderá ser desfeita.</item>
</plurals>
<plurals name="confirm_reset_fmt">
<item quantity="one">Você tem certeza de que deseja redefinir o %1$d jogo selecionado?\n\n(Redefinir apaga todos os movimentos e as informações de conexão.)</item>
<item quantity="one">Você tem certeza de que deseja redefinir o 1 jogo selecionado?\n\n(Redefinir apaga todos os movimentos e as informações de conexão.)</item>
<item quantity="other">Você tem certeza de que deseja redefinir os %1$d jogos selecionados?\n\n(Redefinir apaga todos os movimentos e as informações de conexão.)</item>
</plurals>
<string name="summary_invites_out">Jogadores convidados</string>
<string name="summary_invites_out_fmt">Jogadores convidados para a sala \"%1$s\"</string>
<plurals name="moves_fmt">
<item quantity="one">%1$d movimento jogado</item>
<item quantity="one">1 movimento jogado</item>
<item quantity="other">%1$d movimenotos jogados</item>
</plurals>
<plurals name="confirm_delete_dict_fmt">
@ -1765,7 +1765,7 @@
<string name="set_default_message_fmt">Para quais jogadores deve a list de palavras %1$s ser o predefinição para os jogos novos\? (O idioma de %2$s será a predefinição para ambos.)</string>
<string name="connect_label_fmt">Conexão (através de %1$s)</string>
<plurals name="invite_msg_fmt">
<item quantity="one">Este jogo está aguardando %1$d jogador remoto. Gostaria de convidar alguém para se juntar -- supondo que você ainda não o fez\?</item>
<item quantity="one">Este jogo está aguardando 1 jogador remoto. Gostaria de convidar alguém para se juntar -- supondo que você ainda não o fez\?</item>
<item quantity="other">Este jogo está aguardando %1$d jogadores remotos. Gostaria de convidar alguém para se juntar -- supondo que você ainda não o fez\?</item>
</plurals>
<string name="list_item_netstats">Conexões…</string>

View file

@ -950,7 +950,6 @@
<string name="msg_dev_deleted">XLATE ME: This game has been deleted on
another device. You will not be able to play any
further.</string>
<string name="ids_badwords_fmt">Slovo[á] %1$s nebolo nájdené v slovníku.</string>
<string name="badwords_accept"> Chcete napriek tomu potvrdiť tento ťah?</string>
<string name="badwords_lost"> Ťah stratený.</string>
<string name="badwords_title">Neplatné slovo[á]</string>

View file

@ -12,6 +12,7 @@ s_prefix = 'XLATE ME: '
# languages in which it's ok to make a standalone quantity="one" into
# quantity="other"
g_oneToOthers = ['values-ja']
g_formatsPat = re.compile( '(%\d\$[sd])', re.DOTALL | re.MULTILINE )
sComment = """
DO NOT EDIT THIS FILE!!!!
@ -19,6 +20,10 @@ sComment = """
Any changes you make to it will be lost.
"""
def exitWithError(msg):
print 'ERROR:', msg
sys.exit(1)
def usage():
print "usage:", sys.argv[0], '[-k <list-o-dirs>]'
sys.exit(1)
@ -85,9 +90,8 @@ def pluralsIsSame(engNames, plurals):
for item in plurals.getchildren():
text = item.text
if not text or 0 == len(text):
print "bogus empty plurals item in", plurals.get('name')
exitWithError( "bogus empty plurals item in " + plurals.get('name'))
engItem = engItem
sys.exit(1)
quantity = item.get('quantity')
if quantity in strings:
@ -119,8 +123,7 @@ def checkPlurals( engNames, elem, src, verbose ):
for item in elem.getchildren():
if 0 == len(item.text):
ok = False
print 'bad empty item', name
sys.exit(1)
exitWithError( 'bad empty item ' + name )
return ok
def loadPlural(plural):
@ -138,11 +141,15 @@ def writeDoc(doc, src, dest):
out = open( dest, "w" )
out.write( etree.tostring( doc, pretty_print=True, encoding="utf-8", xml_declaration=True ) )
def exitWithFormatError(engSet, otherSet, name, path):
exitWithError( 'formats set mismatch: ' + str(engSet) \
+ ' vs ' + str(otherSet) + '; ' + name \
+ ' in file ' + path )
def checkOrConvertString(engNames, elem, verbose):
name = elem.get('name')
if not elem.text:
print "ERROR: elem", name, "is empty"
sys.exit(1)
exitWithError( 'elem' + name + " is empty" )
elif not name in engNames or elem.text.startswith(s_prefix):
ok = False
elif not 'string' == engNames[name]['type']:
@ -167,7 +174,7 @@ def checkOrConvertString(engNames, elem, verbose):
ok = True
return ok
def checkAndCopy( parser, engNames, src, dest, verbose ):
def checkAndCopy( parser, engNames, engFormats, src, dest, verbose ):
doc = etree.parse(src, parser)
# strings
@ -179,8 +186,43 @@ def checkAndCopy( parser, engNames, src, dest, verbose ):
if not checkPlurals(engNames, elem, src, verbose):
elem.getparent().remove(elem)
formats = getFormats( doc, src )
for name in formats:
if name in formats and not engFormats[name] == formats[name]:
exitWithFormatError( engFormats[name], formats[name], name, dest )
writeDoc(doc, src, dest)
def setForElem( elem, name ):
result = set()
splits = re.split( g_formatsPat, elem.text )
nParts = len(splits)
if 1 < nParts:
for ii in range(nParts):
part = splits[ii]
if re.match( g_formatsPat, part ):
result.add( part )
# print 'setForElem(', name, ') =>', result
return result
def getFormats( doc, path ):
result = {}
for elem in doc.findall('string'):
name = elem.get('name')
result[name] = setForElem( elem, name )
for elem in doc.findall('plurals'):
name = elem.get('name')
for item in elem.findall('item'):
quantity = item.get('quantity')
if not item.text or 0 == len(item.text):
exitWithError( 'plurals ' + name + ' has empty quantity ' + quantity \
+ ' in file ' + lang )
else:
add = name + '/' + quantity
result[add] = setForElem( item, add )
# print 'getFormats(', path, ') => ', result
return result
def main():
# add these via params later
excepts = ['values-ca_PS', 'values-ba_CK']
@ -198,12 +240,12 @@ def main():
# summarize the english file
wd = os.path.dirname(sys.argv[0])
path = wd + '/../app/src/main/res/values/strings.xml'
engNames = {}
engFormats = {}
parser = etree.XMLParser(remove_blank_text=True, encoding="utf-8")
engDoc = etree.parse(path, parser)
pat = re.compile( '(%\d\$[sd])', re.DOTALL | re.MULTILINE )
engFormats = getFormats( engDoc, path )
engNames = {}
for typ in ['string', 'plurals']:
for elem in engDoc.findall(typ):
name = elem.get('name')
@ -227,7 +269,7 @@ def main():
verbose = 0 == len(verboses) or 0 < len([verb for verb in verboses if verb in path])
print "*** looking at %s ***" % (path)
dest = path.replace( 'res_src', 'app/src/main/res', 1 )
checkAndCopy( parser, engNames, path, dest, verbose )
checkAndCopy( parser, engNames, engFormats, path, dest, verbose )
##############################################################################
if __name__ == '__main__':