mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-01-30 08:34:16 +01:00
toward making full use of getQuantityString(): add util method to pass
quantity through to java world, use it, convert English <string> resources to <plurals> (using python script) based on parallel changes in French, and modify callsites to call getQuantityString() where R.string.xxx became R.plurals.xxx.
This commit is contained in:
parent
e89fdf7dc4
commit
5f33d99c2e
24 changed files with 1403 additions and 1008 deletions
File diff suppressed because it is too large
Load diff
|
@ -426,6 +426,36 @@ and_util_getUserString( XW_UtilCtxt* uc, XP_U16 stringCode )
|
|||
return result;
|
||||
}
|
||||
|
||||
/* FIXME: This will always return the same string, ignoring quantity all but
|
||||
the first time (because of util->userStrings) */
|
||||
static const XP_UCHAR*
|
||||
and_util_getUserQuantityString( XW_UtilCtxt* uc, XP_U16 stringCode, XP_U16 quantity )
|
||||
{
|
||||
LOG_FUNC();
|
||||
XP_UCHAR* result = "";
|
||||
UTIL_CBK_HEADER("getUserQuantityString", "(II)Ljava/lang/String;" );
|
||||
int index = stringCode - 1; /* see LocalizedStrIncludes.h */
|
||||
XP_ASSERT( index < VSIZE( util->userStrings ) );
|
||||
|
||||
if ( ! util->userStrings[index] ) {
|
||||
jstring jresult = (*env)->CallObjectMethod( env, util->jutil, mid,
|
||||
stringCode, quantity );
|
||||
jsize len = (*env)->GetStringUTFLength( env, jresult );
|
||||
XP_UCHAR* buf = XP_MALLOC( util->util.mpool, len + 1 );
|
||||
|
||||
const char* jchars = (*env)->GetStringUTFChars( env, jresult, NULL );
|
||||
XP_MEMCPY( buf, jchars, len );
|
||||
buf[len] = '\0';
|
||||
(*env)->ReleaseStringUTFChars( env, jresult, jchars );
|
||||
deleteLocalRef( env, jresult );
|
||||
util->userStrings[index] = buf;
|
||||
}
|
||||
|
||||
result = util->userStrings[index];
|
||||
UTIL_CBK_TAIL();
|
||||
LOG_RETURNF( "%s", result );
|
||||
return result;
|
||||
}
|
||||
|
||||
static XP_Bool
|
||||
and_util_warnIllegalWord( XW_UtilCtxt* uc, BadWordInfo* bwi,
|
||||
|
@ -697,6 +727,7 @@ makeUtil( MPFORMAL EnvThreadInfo* ti, jobject jutil, CurGameInfo* gi,
|
|||
SET_PROC(getCurSeconds);
|
||||
SET_PROC(makeEmptyDict);
|
||||
SET_PROC(getUserString);
|
||||
SET_PROC(getUserQuantityString);
|
||||
SET_PROC(warnIllegalWord);
|
||||
#ifdef XWFEATURE_CHAT
|
||||
SET_PROC(showChat);
|
||||
|
|
|
@ -158,16 +158,28 @@ obtenir une copie avec les mêmes paramètres.</string>
|
|||
list_item_rename) -->
|
||||
<string name="rename_label">Changer le nom de la partie pour :</string>
|
||||
|
||||
<!--<string name="confirm_seldeletes_fmt">Êtes-vous sûr de vouloir effacer les
|
||||
%1$d parties sélectionnées ? Cette action ne peut pas être annulée.</string>-->
|
||||
<plurals name="confirm_seldeletes_fmt">
|
||||
<item quantity="other">Êtes-vous sûr de vouloir effacer les
|
||||
%1$d parties sélectionnées ? Cette action ne peut pas être annulée.</item>
|
||||
<item quantity="one">Êtes-vous sûr de vouloir effacer la partie
|
||||
sélectionnée ? Cette action ne peut pas être annulée.</item>
|
||||
<item quantity="other">Êtes-vous sûr de vouloir effacer les
|
||||
%1$d parties sélectionnées ? Cette action ne peut pas être annulée.</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Text of confirmation dialog posted when list_item_reset menu
|
||||
is selected -->
|
||||
<string name="confirm_reset_fmt">Êtes-vous sûr de vouloir recommencer les %1$d
|
||||
<!--<string name="confirm_reset_fmt">Êtes-vous sûr de vouloir recommencer les %1$d
|
||||
parties sélectionnées ?\n\n(Recommencer fait perdre tous les coups et
|
||||
toutes les informations de connexion.)</string>
|
||||
toutes les informations de connexion.)</string>-->
|
||||
<plurals name="confirm_reset_fmt">
|
||||
<item quantity="one">Êtes-vous sûr de vouloir recommencer la
|
||||
partie sélectionnée ?\n\n(Recommencer fait perdre tous les coups et
|
||||
toutes les informations de connexion.)</item>
|
||||
<item quantity="other">Êtes-vous sûr de vouloir recommencer les %1$d
|
||||
parties sélectionnées ?\n\n(Recommencer fait perdre tous les coups et
|
||||
toutes les informations de connexion.)</item>
|
||||
</plurals>
|
||||
|
||||
<!--
|
||||
############################################################
|
||||
|
@ -582,9 +594,17 @@ hors-périphériques.</string>
|
|||
<!--<string name="invite_msg_fmt">This game is missing %1$d remote
|
||||
player[s]. Would you like to invite someone to join - assuming
|
||||
you haven\'t already?</string>-->
|
||||
<string name="invite_msg_fmt">Il manque %1$d joueur[s] distant[s] à cette
|
||||
<!--<string name="invite_msg_fmt">Il manque %1$d joueur[s] distant[s] à cette
|
||||
partie. Voulez-vous inviter quelqu\'un - - à moins que vous ne l\'ayez déjà
|
||||
fait ?</string>-->
|
||||
<plurals name="invite_msg_fmt">
|
||||
<item quantity="one">Il manque un joueur distant à cette
|
||||
partie. Voulez-vous inviter quelqu\'un -- à moins que vous ne l\'ayez déjà
|
||||
fait ?</string>
|
||||
fait ?</item>
|
||||
<item quantity="other">Il manque %1$d joueurs distants à cette
|
||||
partie. Voulez-vous inviter quelqu\'un -- à moins que vous ne l\'ayez déjà
|
||||
fait ?</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Appended to message above if local device has NFC available -->
|
||||
<!--<string name="invite_if_nfc">(Or just Tap to Invite - if the
|
||||
|
@ -595,7 +615,11 @@ périphérique a aussi Android Beam et est proche.)</string>
|
|||
<!-- Toast shown when players are missing, same time as above
|
||||
but more subtle. -->
|
||||
<!--<string name="players_miss_fmt">%1$d player[s] missing</string>-->
|
||||
<string name="players_miss_fmt">%1$d joueur[s] manquant[s]</string>
|
||||
<!--<string name="players_miss_fmt">%1$d joueur[s] manquant[s]</string>-->
|
||||
<plurals name="players_miss_fmt">
|
||||
<item quantity="one">%1$d joueur manquant</item>
|
||||
<item quantity="other">%1$d joueurs manquants</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Most users create games with only two players, which is the
|
||||
default, but Crosswords supports up to four. When I'm using
|
||||
|
@ -622,8 +646,14 @@ distants. Assurez-vous d\'envoyer votre invitation à ce nombre de personnes.)</
|
|||
only once per game. -->
|
||||
<!--<string name="msg_relay_waiting_fmt">Device %1$d connected to relay in
|
||||
room \"%2$s\". Waiting for %3$d player[s].</string>-->
|
||||
<string name="msg_relay_waiting_fmt">Le périphérique %1$d est connecté au
|
||||
relai dans le salon \"%2$s\". En attente de %3$d joueur[s].</string>
|
||||
<!--<string name="msg_relay_waiting_fmt">Le périphérique %1$d est connecté au
|
||||
relai dans le salon \"%2$s\". En attente de %3$d joueur[s].</string>-->
|
||||
<plurals name="msg_relay_waiting_fmt">
|
||||
<item quantity="one">Le périphérique %1$d est connecté au
|
||||
relai dans le salon \"%2$s\". En attente d\'un joueur.</item>
|
||||
<item quantity="other">Le périphérique %1$d est connecté au
|
||||
relai dans le salon \"%2$s\". En attente de %3$d joueurs.</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Text of "toast" shown when a game is notified by the relay
|
||||
that all expected players have registered. At this point
|
||||
|
@ -761,7 +791,11 @@ coup ?</string>
|
|||
<!--<string name="board_menu_game_resend">Resend messages</string>-->
|
||||
<string name="board_menu_game_resend">Renvoyer les messages</string>
|
||||
<!--<string name="resend_finished_fmt">Resend finished; sent %1$d message[s].</string>-->
|
||||
<string name="resend_finished_fmt">Renvoi fini ; %1$d message[s] envoyé[s].</string>
|
||||
<!--<string name="resend_finished_fmt">Renvoi fini ; %1$d message[s] envoyé[s].</string>-->
|
||||
<plurals name="resend_finished_fmt">
|
||||
<item quantity="one">Renvoi fini ; %1$d message envoyé.</item>
|
||||
<item quantity="other">Renvoi fini ; %1$d messages envoyés.</item>
|
||||
</plurals>
|
||||
|
||||
<!--
|
||||
############################################################
|
||||
|
@ -777,7 +811,11 @@ coup ?</string>
|
|||
<string name="str_robot_moved_fmt">Le robot %1$s a joué ce coup :\u0020</string>
|
||||
<!-- Notifies user of a robot trade move -->
|
||||
<!--<string name="strd_robot_traded_fmt">exchanged %1$d tiles.</string>-->
|
||||
<string name="strd_robot_traded_fmt">a échangé %1$d jetons.</string>
|
||||
<!--<string name="strd_robot_traded_fmt">a échangé %1$d jetons.</string>-->
|
||||
<plurals name="strd_robot_traded_fmt">
|
||||
<item quantity="one">a échangé un jeton.</item>
|
||||
<item quantity="other">a échangé %1$d jetons.</item>
|
||||
</plurals>
|
||||
<!-- title for window you get when you select menu with text
|
||||
board_menu_game_counts -->
|
||||
<!--<string name="strs_values_header_fmt">%1$s counts/values:\n</string>-->
|
||||
|
@ -848,12 +886,22 @@ restants]</string>
|
|||
<!-- First line in the remaining tiles dialog (reached by tapping
|
||||
the number at left end of the scoreboard) -->
|
||||
<!--<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>
|
||||
<!--<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="other">%1$d jetons restants dans le sac.</item>
|
||||
</plurals>
|
||||
<!-- Intro to the paragraph lisiting all of the tiles remaining -->
|
||||
<!--<string name="strd_remains_expl_fmt">%1$d tiles left in pool and all
|
||||
tray[s]:\n</string>-->
|
||||
<string name="strd_remains_expl_fmt">%1$d jetons restants dans le sac et
|
||||
tous les chevalets :\n</string>
|
||||
<!--<string name="strd_remains_expl_fmt">%1$d jetons restants dans le sac et
|
||||
tous les chevalets :\n</string>-->
|
||||
<plurals name="strd_remains_expl_fmt">
|
||||
<item quantity="one">%d jeton restant dans le sac et tous les
|
||||
chevalets :\n</item>
|
||||
<item quantity="other">%d jetons restants dans le sac et tous
|
||||
les chevalets :\n</item>
|
||||
</plurals>
|
||||
|
||||
<!-- text of dialog shown when the menu item board_menu_undo_last
|
||||
is chosen. -->
|
||||
|
@ -1419,8 +1467,14 @@ partie : %1$s .</string>
|
|||
tiles (instead of forming a new word to earn points) -->
|
||||
<!--<string name="query_trade_fmt">Are you sure you want to exchange the
|
||||
%1$d selected tiles (%2$s)?</string>-->
|
||||
<string name="query_trade_fmt">Êtes-vous sûr de vouloir échanger les %1$d
|
||||
jetons sélectionnés (%2$s) ?</string>
|
||||
<!--<string name="query_trade_fmt">Êtes-vous sûr de vouloir échanger les %1$d
|
||||
jetons sélectionnés (%2$s) ?</string>-->
|
||||
<plurals name="query_trade_fmt">
|
||||
<item quantity="one">Êtes-vous sûr de vouloir échanger le
|
||||
jeton sélectionné (%2$s) ?</item>
|
||||
<item quantity="other">Êtes-vous sûr de vouloir échanger les %1$d
|
||||
jetons sélectionnés (%2$s) ?</item>
|
||||
</plurals>
|
||||
|
||||
<!-- ############################################################
|
||||
# :Screens:
|
||||
|
@ -2173,12 +2227,22 @@ ligne, les mots qui viennent d\'être joués.</string>
|
|||
<!-- -->
|
||||
<!--<string name="dict_browse_title_fmt">%1$s (%2$d words using %3$d-%4$d
|
||||
tiles)</string>-->
|
||||
<string name="dict_browse_title_fmt">%1$s (%2$d mots utilisant de %3$d à
|
||||
%4$d jetons)</string>
|
||||
<!--<string name="dict_browse_title_fmt">%1$s (%2$d mots utilisant de %3$d à
|
||||
%4$d jetons)</string>-->
|
||||
<plurals name="dict_browse_title_fmt">
|
||||
<item quantity="one">%1$s (%2$d mot utilisant de %3$d à
|
||||
%4$d jetons)</item>
|
||||
<item quantity="other">%1$s (%2$d mots utilisant de %3$d à
|
||||
%4$d jetons)</item>
|
||||
</plurals>
|
||||
<!-- -->
|
||||
<!--<string name="dict_browse_title1_fmt">%1$s (%2$d words using %3$d
|
||||
tiles)</string>-->
|
||||
<string name="dict_browse_title1_fmt">%1$s (%2$d mots utilisant %3$d jetons)</string>
|
||||
<!--<string name="dict_browse_title1_fmt">%1$s (%2$d mots utilisant %3$d jetons)</string>-->
|
||||
<plurals name="dict_browse_title1_fmt">
|
||||
<item quantity="one">%1$s (%2$d mot utilisant %3$d jetons)</item>
|
||||
<item quantity="other">%1$s (%2$d mots utilisant %3$d jetons)</item>
|
||||
</plurals>
|
||||
<!-- -->
|
||||
<!--<string name="dict_browse_nowords_fmt">No word in %1$s starts with
|
||||
%2$s.</string>-->
|
||||
|
@ -2274,14 +2338,28 @@ seulement des informations sur les jetons. Il n\'y a pas de mots à parcourir.</
|
|||
<!--<string name="invite_bt_desc_fmt">Please select the %1$d device[s]
|
||||
you want to include in this game. Use the \"%2$s\"
|
||||
button if you don\'t see a device you expect.</string>-->
|
||||
<string name="invite_bt_desc_fmt">Sélectionnez les %1$d périphériques que
|
||||
<!--<string name="invite_bt_desc_fmt">Sélectionnez les %1$d périphériques que
|
||||
vous voulez intégrer dans cette partie. Utilisez le bouton \"%2$s\" si vous ne
|
||||
voyez pas un périphérique que vous attendez.</string>
|
||||
voyez pas un périphérique que vous attendez.</string>-->
|
||||
<plurals name="invite_bt_desc_fmt">
|
||||
<item quantity="one">Sélectionnez le périphérique que
|
||||
vous voulez intégrer dans cette partie. Utilisez le bouton \"%2$s\" si vous ne
|
||||
voyez pas un périphérique que vous attendez.</item>
|
||||
<item quantity="other">Sélectionnez les %1$d périphériques que
|
||||
vous voulez intégrer dans cette partie. Utilisez le bouton \"%2$s\" si vous ne
|
||||
voyez pas un périphérique que vous attendez.</item>
|
||||
</plurals>
|
||||
<!-- -->
|
||||
<!--<string name="bt_resend_fmt">Bluetooth send to %1$s failed; retry %3$d in
|
||||
%2$d seconds.</string>-->
|
||||
<string name="bt_resend_fmt">Un envoi Bluetooth à %1$s a échoué ; essai
|
||||
%3$d dans %2$d secondes.</string>
|
||||
<!--<string name="bt_resend_fmt">Un envoi Bluetooth à %1$s a échoué ; essai
|
||||
%3$d dans %2$d secondes.</string>-->
|
||||
<plurals name="bt_resend_fmt">
|
||||
<item quantity="one">Un envoi Bluetooth à %1$s a échoué ; essai
|
||||
%3$d dans %2$d seconde.</item>
|
||||
<item quantity="other">Un envoi Bluetooth à %1$s a échoué ; essai
|
||||
%3$d dans %2$d secondes.</item>
|
||||
</plurals>
|
||||
<!-- -->
|
||||
<!--<string name="bt_fail_fmt">Bluetooth sends to %1$s have failed too many
|
||||
times. Re-open the game to try again.</string>-->
|
||||
|
@ -2319,8 +2397,14 @@ fois. Ouvrez à nouveau la partie pour réessayer.</string>
|
|||
<!-- -->
|
||||
<!--<string name="invite_sms_desc_fmt">Please check the %1$d phone
|
||||
number[s] you want to invite to your new game, then tap \"%2$s\".</string>-->
|
||||
<string name="invite_sms_desc_fmt">Vérifiez les %1$d numéros de téléphone
|
||||
que vous voulez inviter à votre partie, puis touchez \"%2$s\".</string>
|
||||
<!--<string name="invite_sms_desc_fmt">Vérifiez les %1$d numéros de téléphone
|
||||
que vous voulez inviter à votre partie, puis touchez \"%2$s\".</string>-->
|
||||
<plurals name="invite_sms_desc_fmt">
|
||||
<item quantity="one">Vérifiez le numéro de téléphone
|
||||
que vous voulez inviter à votre partie, puis touchez \"%2$s\".</item>
|
||||
<item quantity="other">Vérifiez les %1$d numéros de téléphone
|
||||
que vous voulez inviter à votre partie, puis touchez \"%2$s\".</item>
|
||||
</plurals>
|
||||
<!-- -->
|
||||
<!--<string name="manual_owner_name">(Not in contacts)</string>-->
|
||||
<string name="manual_owner_name">(Pas dans les contacts)</string>
|
||||
|
@ -2598,12 +2682,24 @@ mots ?</string>
|
|||
|
||||
<!--<string name="groups_confirm_del_fmt">Are you sure you want to delete
|
||||
the %1$d selected group[s]?</string>-->
|
||||
<string name="groups_confirm_del_fmt">Êtes-vous sûr de vouloir effacer les
|
||||
%1$d groupes sélectionnés ?</string>
|
||||
<!--<string name="groups_confirm_del_fmt">Êtes-vous sûr de vouloir effacer les
|
||||
%1$d groupes sélectionnés ?</string>-->
|
||||
<plurals name="groups_confirm_del_fmt">
|
||||
<item quantity="one">Êtes-vous sûr de vouloir effacer le
|
||||
groupe sélectionné ?</item>
|
||||
<item quantity="other">Êtes-vous sûr de vouloir effacer les
|
||||
%1$d groupes sélectionnés ?</item>
|
||||
</plurals>
|
||||
<!--<string name="groups_confirm_del_games_fmt">\n\n(%1$d game[s] will
|
||||
also be deleted.)</string>-->
|
||||
<string name="groups_confirm_del_games_fmt">\n\n(%1$d parties seront aussi
|
||||
effacées.)</string>
|
||||
<!--<string name="groups_confirm_del_games_fmt">\n\n(%1$d parties seront aussi
|
||||
effacées.)</string>-->
|
||||
<plurals name="groups_confirm_del_games_fmt">
|
||||
<item quantity="one">\n\n(une partie sera aussi
|
||||
effacée.)</item>
|
||||
<item quantity="other">\n\n(%1$d parties seront aussi
|
||||
effacées.)</item>
|
||||
</plurals>
|
||||
|
||||
<!--<string name="rename_group_label">Change the name of this group to:</string>-->
|
||||
<string name="rename_group_label">Changer le nom de ce groupe pour :</string>
|
||||
|
@ -2616,7 +2712,11 @@ effacées.)</string>
|
|||
parties, %1$s, ne peut pas être effacé.</string>
|
||||
|
||||
<!--<string name="group_name_fmt">%1$s (%2$d games)</string>-->
|
||||
<string name="group_name_fmt">%1$s (%2$d parties)</string>
|
||||
<!--<string name="group_name_fmt">%1$s (%2$d parties)</string>-->
|
||||
<plurals name="group_name_fmt">
|
||||
<item quantity="one">%1$s (%2$d partie)</item>
|
||||
<item quantity="other">%1$s (%2$d parties)</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Button shown in game over dialog triggering creation of new
|
||||
game with the same players and parameters as the one that
|
||||
|
@ -2687,7 +2787,7 @@ pouvez utiliser l\'application des Paramètres Android pour l\'allumer.</string>
|
|||
<string name="sms_ready_text">Toucher le périphérique récepteur maintenant</string>
|
||||
|
||||
<!--<string name="pct_suffix">\u0020pct.</string>-->
|
||||
<string name="pct_suffix">\u0020prct.</string>
|
||||
<string name="pct_suffix">\u0020pct.</string>
|
||||
|
||||
<!--<string name="menu_rateme">Rate Crosswords</string>-->
|
||||
<string name="menu_rateme">Évaluer Crosswords</string>
|
||||
|
@ -2711,10 +2811,20 @@ de mots à retenir</string>
|
|||
<string name="slmenu_clear_sel">Effacer les mots sélectionnés</string>
|
||||
<!--<string name="confirm_studylist_clear_fmt">Are you sure you want to
|
||||
delete the %1$d selected word[s]?\n\n(This action cannot be undone.)</string>-->
|
||||
<string name="confirm_studylist_clear_fmt">Êtes-vous sûr de vouloir effacer
|
||||
les %1$d mots sélectionnés ?\n\n(Cette action ne peut pas être annulée.)</string>
|
||||
<!--<string name="confirm_studylist_clear_fmt">Êtes-vous sûr de vouloir effacer
|
||||
les %1$d mots sélectionnés ?\n\n(Cette action ne peut pas être annulée.)</string>-->
|
||||
<plurals name="confirm_studylist_clear_fmt">
|
||||
<item quantity="one">Êtes-vous sûr de vouloir effacer
|
||||
le mot sélectionné ?\n\n(Cette action ne peut pas être annulée.)</item>
|
||||
<item quantity="other">Êtes-vous sûr de vouloir effacer
|
||||
les %1$d mots sélectionnés ?\n\n(Cette action ne peut pas être annulée.)</item>
|
||||
</plurals>
|
||||
<!--<string name="paste_done_fmt">%1$d word[s] copied</string>-->
|
||||
<string name="paste_done_fmt">%1$d mots copiés</string>
|
||||
<!--<string name="paste_done_fmt">%1$d mots copiés</string>-->
|
||||
<plurals name="paste_done_fmt">
|
||||
<item quantity="one">%1$d mot copié</item>
|
||||
<item quantity="other">%1$d mots copiés</item>
|
||||
</plurals>
|
||||
<!--<string name="add_done_fmt">%1$s added to %2$s studylist</string>-->
|
||||
<string name="add_done_fmt">%1$s ajouté à la liste d\'étude en %2$s</string>
|
||||
<!--<string name="studylist_title_fmt">Studylist for %1$s</string>-->
|
||||
|
@ -2758,7 +2868,11 @@ mails.</string>
|
|||
<string name="loc_lang_local">%1$s (la votre)</string>
|
||||
|
||||
<!--<string name="new_xlations_fmt">Installed %1$d new translations</string>-->
|
||||
<string name="new_xlations_fmt">%1$d nouvelles traductions installées</string>
|
||||
<!--<string name="new_xlations_fmt">%1$d nouvelles traductions installées</string>-->
|
||||
<plurals name="new_xlations_fmt">
|
||||
<item quantity="one">%1$d nouvelle traduction installée</item>
|
||||
<item quantity="other">%1$d nouvelles traductions installées</item>
|
||||
</plurals>
|
||||
|
||||
<!--<string name="xlations_enabled_title">Enable local translating</string>-->
|
||||
<string name="xlations_enabled_title">Activer les traductions locales</string>
|
||||
|
@ -2847,7 +2961,11 @@ téléchargement : %2$dk\nNote : %2$s</string>
|
|||
<!--<string name="dict_on_server">Tap to download</string>-->
|
||||
<string name="dict_on_server">Toucher pour télécharger</string>
|
||||
<!--<string name="lang_name_fmt">%1$s (%2$d wordlists)</string> -->
|
||||
<string name="lang_name_fmt">%1$s (%2$d listes de mots)</string>
|
||||
<!--<string name="lang_name_fmt">%1$s (%2$d listes de mots)</string> -->
|
||||
<plurals name="lang_name_fmt">
|
||||
<item quantity="one">%1$s (%2$d liste de mots)</item>
|
||||
<item quantity="other">%1$s (%2$d listes de mots)</item>
|
||||
</plurals>
|
||||
|
||||
<!--<string name="lang_unknown">Unknown</string>-->
|
||||
<string name="lang_unknown">Inconnu</string>
|
||||
|
@ -2878,11 +2996,23 @@ pour voir ce qui est disponible.</string>
|
|||
inserted in the fourth. E.g "PlayerName moved more than 2 day[s],
|
||||
4 hour[s] ago." -->
|
||||
<!--<string name="nag_minutes_fmt">%1$d minute[s]</string>-->
|
||||
<string name="nag_minutes_fmt">%1$d minute[s]</string>
|
||||
<!--<string name="nag_minutes_fmt">%1$d minute[s]</string>-->
|
||||
<plurals name="nag_minutes_fmt">
|
||||
<item quantity="one">%1$d minute</item>
|
||||
<item quantity="other">%1$d minutes</item>
|
||||
</plurals>
|
||||
<!--<string name="nag_hours_fmt">%1$d hour[s]</string>-->
|
||||
<string name="nag_hours_fmt">%1$d heure[s]</string>
|
||||
<!--<string name="nag_hours_fmt">%1$d heure[s]</string>-->
|
||||
<plurals name="nag_hours_fmt">
|
||||
<item quantity="one">%1$d heure</item>
|
||||
<item quantity="other">%1$d heures</item>
|
||||
</plurals>
|
||||
<!--<string name="nag_days_fmt">%1$d day[s]</string>-->
|
||||
<string name="nag_days_fmt">%1$d jour[s]</string>
|
||||
<!--<string name="nag_days_fmt">%1$d jour[s]</string>-->
|
||||
<plurals name="nag_days_fmt">
|
||||
<item quantity="one">%1$d jour</item>
|
||||
<item quantity="other">%1$d jours</item>
|
||||
</plurals>
|
||||
<!--<string name="nag_body_fmt">%1$s moved more than %2$s ago.</string>-->
|
||||
<string name="nag_body_fmt">%1$s a joué il y a plus de %2$s.</string>
|
||||
<!-- above is inserted in this the last time I warn -->
|
||||
|
@ -2896,16 +3026,28 @@ pour voir ce qui est disponible.</string>
|
|||
<!--<string name="lmi_pass_fmt">%1$s passed (0 points)</string>-->
|
||||
<string name="lmi_pass_fmt">%1$s a passé (0 point)</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>
|
||||
<!--<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="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>-->
|
||||
<string name="lmi_trade_fmt">%1$s a échangé %2$d jetons</string>
|
||||
<!--<string name="lmi_trade_fmt">%1$s a échangé %2$d jetons</string>-->
|
||||
<plurals name="lmi_trade_fmt">
|
||||
<item quantity="one">%1$s a échangé %2$d jeton</item>
|
||||
<item quantity="other">%1$s a échangé %2$d jetons</item>
|
||||
</plurals>
|
||||
<!--<string name="lmi_phony_fmt">%1$s lost a turn</string>-->
|
||||
<string name="lmi_phony_fmt">%1$s a perdu un tour</string>
|
||||
<!--<string name="lmi_tiles_fmt">Tiles assigned to %1$s</string>-->
|
||||
<string name="lmi_tiles_fmt">Jetons attribués à %1$s</string>
|
||||
|
||||
<!--<string name="bt_err_count_fmt">%1$d bluetooth errors so far</string>-->
|
||||
<string name="bt_err_count_fmt">%1$d erreurs Bluetooth jusqu\'à maintenant</string>
|
||||
<!--<string name="bt_err_count_fmt">%1$d erreurs Bluetooth jusqu\'à maintenant</string>-->
|
||||
<plurals name="bt_err_count_fmt">
|
||||
<item quantity="one">%1$d erreur Bluetooth jusqu\'à maintenant</item>
|
||||
<item quantity="other">%1$d erreurs Bluetooth jusqu\'à maintenant</item>
|
||||
</plurals>
|
||||
|
||||
<!--<string name="bt_no_devs">You currently have no paired Bluetooth
|
||||
devices. Would you like to open the Android Settings Panel to add
|
||||
|
@ -3006,7 +3148,11 @@ d\'autres joueurs quand elle sera ouverte.)</string>
|
|||
<string name="nplayers_prompt">Nombre sur ce périphérique</string>
|
||||
<!--XLATE-ME-->
|
||||
<!--<string name="nplayers_fmt">%1$d player[s]</string>-->
|
||||
<string name="nplayers_fmt">%1$d joueur[s]</string>
|
||||
<!--<string name="nplayers_fmt">%1$d joueur[s]</string>-->
|
||||
<plurals name="nplayers_fmt">
|
||||
<item quantity="one">%1$d joueur</item>
|
||||
<item quantity="other">%1$d joueurs</item>
|
||||
</plurals>
|
||||
<!--XLATE-ME-->
|
||||
<!--<string name="err_dup_invite_fmt">Duplicate invitation rejected:
|
||||
device \"%1$s\" has already accepted an invitation to this
|
||||
|
@ -3217,7 +3363,9 @@ numéros de téléphones sont les mêmes</string>
|
|||
<!--XLATE-ME-->
|
||||
<string name="game_summary_field_gameid">gameid</string>
|
||||
<!--XLATE-ME-->
|
||||
<string name="game_summary_field_npackets">Pending packet count</string>
|
||||
<!--<string name="game_summary_field_npackets">Pending packet count</string>-->
|
||||
<string name="game_summary_field_npackets">Nombre de paquets en attente</string>
|
||||
<!--XLATE-ME-->
|
||||
<string name="expl_update_url">Update checks URL</string>
|
||||
<!--<string name="expl_update_url">Update checks URL</string>-->
|
||||
<string name="expl_update_url">URL de vérifications des mises à jour</string>
|
||||
</resources>
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
they aren't available yet because the connection is not
|
||||
complete. Displayed in the lists of players found in each
|
||||
game listing. -->
|
||||
<string name="missing_player">(not here yet…)</string>
|
||||
<string name="missing_player">(not here yet…)</string>
|
||||
|
||||
<!-- The display of each networked game includes one of three
|
||||
states it can be in in the process of connecting to the
|
||||
|
@ -91,10 +91,10 @@
|
|||
-->
|
||||
|
||||
<!-- Brings up the Wordlists (formerly Dictionaries) screen -->
|
||||
<string name="gamel_menu_dicts">Wordlists…</string>
|
||||
<string name="gamel_menu_dicts">Wordlists…</string>
|
||||
|
||||
<!-- text of menu that brings up the Settings (preferences) dialog -->
|
||||
<string name="menu_prefs">App Settings…</string>
|
||||
<string name="menu_prefs">App Settings…</string>
|
||||
|
||||
<!-- Regardless of the setting of the connect_frequency
|
||||
preference, checks the relay immediately for any moves for
|
||||
|
@ -104,7 +104,7 @@
|
|||
|
||||
<!-- Text of progress indicator shown while check is being conducted -->
|
||||
<string name="msgs_progress">Checking relay for moves
|
||||
etc…</string>
|
||||
etc…</string>
|
||||
|
||||
<!-- If you choose the above option and have no networked games
|
||||
you get this error message -->
|
||||
|
@ -112,7 +112,7 @@
|
|||
the relay.</string>
|
||||
|
||||
<!-- Brings up "About Crosswords" dialog -->
|
||||
<string name="board_menu_file_about">About Crosswords…</string>
|
||||
<string name="board_menu_file_about">About Crosswords…</string>
|
||||
|
||||
<!--
|
||||
############################################################
|
||||
|
@ -126,11 +126,11 @@
|
|||
|
||||
<!-- ############## menu items ############## -->
|
||||
<!-- pulls up dialog to configure the selected game -->
|
||||
<string name="list_item_config">Game settings…</string>
|
||||
<string name="list_item_config">Game settings…</string>
|
||||
<!-- pulls up dialog to rename (change name of) the selected game -->
|
||||
<string name="list_item_rename">Rename…</string>
|
||||
<string name="list_item_rename">Rename…</string>
|
||||
<!-- pulls up dialog to change the group of the selected game -->
|
||||
<string name="list_item_move">Move to group…</string>
|
||||
<string name="list_item_move">Move to group…</string>
|
||||
|
||||
<!-- pulls up dialog to delete the selected game -->
|
||||
<string name="list_item_delete">Delete game</string>
|
||||
|
@ -169,9 +169,9 @@
|
|||
|
||||
<!-- Text of confirmation dialog posted when list_item_reset menu
|
||||
is selected -->
|
||||
<string name="confirm_reset_fmt">Are you sure you want to reset the %1$d
|
||||
<plurals name="confirm_reset_fmt"><item quantity="other">Are you sure you want to reset the %1$d
|
||||
selected game[s]?\n\n(Resetting erases all moves and any connection
|
||||
information.)</string>
|
||||
information.)</item></plurals>
|
||||
|
||||
<!--
|
||||
############################################################
|
||||
|
@ -186,7 +186,7 @@
|
|||
<!-- text of item at bottom of dicts choice spinner. It
|
||||
launches the browser pointed at the site where additional
|
||||
wordlists can be found. -->
|
||||
<string name="download_dicts">Download more…</string>
|
||||
<string name="download_dicts">Download more…</string>
|
||||
|
||||
|
||||
<!-- One of the strings used in the right column of the list of
|
||||
|
@ -499,7 +499,7 @@
|
|||
<string name="button_trade_commit">Commit trade</string>
|
||||
<string name="button_trade_cancel">Cancel trade</string>
|
||||
|
||||
<string name="entering_trade">Tap tiles to select…</string>
|
||||
<string name="entering_trade">Tap tiles to select…</string>
|
||||
|
||||
|
||||
<!-- Bonus value hint that's displayed in gray text in the colored
|
||||
|
@ -527,9 +527,9 @@
|
|||
open such a game I give the user a chance to issue an
|
||||
invititation while trying to warn him not to send duplicates.
|
||||
The number of players missing is substituted for "%1$d". -->
|
||||
<string name="invite_msg_fmt">This game is waiting for %1$d remote
|
||||
<plurals name="invite_msg_fmt"><item quantity="other">This game is waiting for %1$d remote
|
||||
player[s]. Would you like to invite someone to join -- assuming
|
||||
you haven\'t already?</string>
|
||||
you haven\'t already?</item></plurals>
|
||||
|
||||
<!-- Appended to message above if local device has NFC available -->
|
||||
<string name="invite_if_nfc">Or just Tap to Invite -- if the other
|
||||
|
@ -537,7 +537,7 @@
|
|||
|
||||
<!-- Toast shown when players are missing, same time as above
|
||||
but more subtle. -->
|
||||
<string name="players_miss_fmt">%1$d player[s] missing</string>
|
||||
<plurals name="players_miss_fmt"><item quantity="other">%1$d player[s] missing</item></plurals>
|
||||
|
||||
<!-- Most users create games with only two players, which is the
|
||||
default, but Crosswords supports up to four. When I'm using
|
||||
|
@ -560,8 +560,8 @@
|
|||
the room, and how many additional players have not yet
|
||||
registered with the relay in this game. This should be seen
|
||||
only once per game. -->
|
||||
<string name="msg_relay_waiting_fmt">Device %1$d connected to relay in
|
||||
room \"%2$s\". Waiting for %3$d player[s].</string>
|
||||
<plurals name="msg_relay_waiting_fmt"><item quantity="other">Device %1$d connected to relay in
|
||||
room \"%2$s\". Waiting for %3$d player[s].</item></plurals>
|
||||
|
||||
<!-- Text of "toast" shown when a game is notified by the relay
|
||||
that all expected players have registered. At this point
|
||||
|
@ -643,23 +643,23 @@
|
|||
<string name="board_menu_undo_last">Undo last</string>
|
||||
|
||||
<!-- Title of submenu -->
|
||||
<string name="board_submenu_game">Game -></string>
|
||||
<string name="board_submenu_game">Game -></string>
|
||||
|
||||
<!-- menu on Game submenu: brings up dialog listing all tiles in
|
||||
the language of the game along with how many of each there
|
||||
are and how many points each is worth. This display is the
|
||||
same throughout the game. -->
|
||||
<string name="board_menu_game_counts">Counts and values…</string>
|
||||
<string name="board_menu_game_counts">Counts and values…</string>
|
||||
|
||||
<!-- menu on Game submenu: brings up dialog listing all tiles not
|
||||
yet played and not in the rack of the player whose rack is
|
||||
visible (whose turn it is, generally). This display will
|
||||
change as tiles are used and depending on what player is
|
||||
asking. -->
|
||||
<string name="board_menu_game_left">Tiles remaining…</string>
|
||||
<string name="board_menu_game_left">Tiles remaining…</string>
|
||||
|
||||
<!-- Brings up listing of all moves played so far this game. -->
|
||||
<string name="board_menu_game_history">Game history…</string>
|
||||
<string name="board_menu_game_history">Game history…</string>
|
||||
|
||||
<!-- Brings up explanation of the game's final score. If the game
|
||||
is not yet over, gives you a choice whether to end it now,
|
||||
|
@ -673,7 +673,7 @@
|
|||
able to remove this from non-debug versions of the game
|
||||
because users should not have to do do this EVER. -->
|
||||
<string name="board_menu_game_resend">Resend messages</string>
|
||||
<string name="resend_finished_fmt">Resend finished; sent %1$d message[s].</string>
|
||||
<plurals name="resend_finished_fmt"><item quantity="other">Resend finished; sent %1$d message[s].</item></plurals>
|
||||
|
||||
<!--
|
||||
############################################################
|
||||
|
@ -687,7 +687,7 @@
|
|||
<!-- Notifies user of a normal robot move -->
|
||||
<string name="str_robot_moved_fmt">The robot %1$s made this move:\u0020</string>
|
||||
<!-- Notifies user of a robot trade move -->
|
||||
<string name="strd_robot_traded_fmt">exchanged %1$d tiles.</string>
|
||||
<plurals name="strd_robot_traded_fmt"><item quantity="other">exchanged %1$d tiles.</item></plurals>
|
||||
<!-- title for window you get when you select menu with text
|
||||
board_menu_game_counts -->
|
||||
<string name="strs_values_header_fmt">%1$s counts/values:\n</string>
|
||||
|
@ -737,10 +737,10 @@
|
|||
|
||||
<!-- First line in the remaining tiles dialog (reached by tapping
|
||||
the number at left end of the scoreboard) -->
|
||||
<string name="strd_remains_header_fmt">%1$d tiles left in pool.</string>
|
||||
<plurals name="strd_remains_header_fmt"><item quantity="other">%1$d tiles left in pool.</item></plurals>
|
||||
<!-- Intro to the paragraph lisiting all of the tiles remaining -->
|
||||
<string name="strd_remains_expl_fmt">%1$d tiles left in pool and all
|
||||
tray[s]:\n</string>
|
||||
<plurals name="strd_remains_expl_fmt"><item quantity="other">%1$d tiles left in pool and all
|
||||
tray[s]:\n</item></plurals>
|
||||
|
||||
<!-- text of dialog shown when the menu item board_menu_undo_last
|
||||
is chosen. -->
|
||||
|
@ -815,7 +815,7 @@
|
|||
|
||||
<!-- Used to indicate that a preference is not enabled, i.e. not
|
||||
part of the game and that the user should ignore it. -->
|
||||
<string name="tell_unused">Not used yet…</string>
|
||||
<string name="tell_unused">Not used yet…</string>
|
||||
|
||||
<!-- sub-preference for dictionaries (soon to be called "word lists") -->
|
||||
<string name="prefs_dicts">Wordlists</string>
|
||||
|
@ -1162,9 +1162,9 @@
|
|||
<!-- <string name="sms_or_email">Send invitation using SMS (texting) or -->
|
||||
<!-- via email?</string> -->
|
||||
<!-- <string name="nfc_or_email">Send invitation using NFC (Android -->
|
||||
<!-- beaming – NEW) or via email?</string> -->
|
||||
<!-- beaming – NEW) or via email?</string> -->
|
||||
<!-- <string name="nfc_or_sms_or_email">Send invitation using SMS -->
|
||||
<!-- (texting) or NFC (\"Android beaming\" – NEW) or via email?</string> -->
|
||||
<!-- (texting) or NFC (\"Android beaming\" – NEW) or via email?</string> -->
|
||||
|
||||
<!-- When an invitation is sent, the user gets to choose between
|
||||
plaintext and html formatting. These two strings are shown in the
|
||||
|
@ -1210,8 +1210,8 @@
|
|||
|
||||
<!-- Text of dialog asking user to confirm a move that exchanges
|
||||
tiles (instead of forming a new word to earn points) -->
|
||||
<string name="query_trade_fmt">Are you sure you want to exchange the
|
||||
%1$d selected tiles (%2$s)?</string>
|
||||
<plurals name="query_trade_fmt"><item quantity="other">Are you sure you want to exchange the
|
||||
%1$d selected tiles (%2$s)?</item></plurals>
|
||||
|
||||
<!-- ############################################################
|
||||
# :Screens:
|
||||
|
@ -1349,7 +1349,7 @@
|
|||
Guest wordlists; Host wins.</string>
|
||||
|
||||
|
||||
<string name="downloading_dict_fmt">Downloading %1$s…</string>
|
||||
<string name="downloading_dict_fmt">Downloading %1$s…</string>
|
||||
|
||||
<!--
|
||||
############################################################
|
||||
|
@ -1473,7 +1473,7 @@
|
|||
sure you want to create another?</string>
|
||||
|
||||
<!-- Title of generic dialog used to display information -->
|
||||
<string name="info_title">FYI…</string>
|
||||
<string name="info_title">FYI…</string>
|
||||
|
||||
<!-- title of dialog allowing user to pick tiles "face up". (This
|
||||
feature is not yet supported on Android.) -->
|
||||
|
@ -1511,7 +1511,7 @@
|
|||
|
||||
<!-- Title for generic dialog asking a question, usually in the
|
||||
middle of a game, like "do you want to commit this move?"-->
|
||||
<string name="query_title">A question…</string>
|
||||
<string name="query_title">A question…</string>
|
||||
|
||||
<!--
|
||||
###########################################################
|
||||
|
@ -1771,11 +1771,11 @@
|
|||
<string name="pick_faceup">Pick tiles face-up</string>
|
||||
|
||||
<!-- -->
|
||||
<string name="dict_browse_title_fmt">%1$s (%2$d words using %3$d-%4$d
|
||||
tiles)</string>
|
||||
<plurals name="dict_browse_title_fmt"><item quantity="other">%1$s (%2$d words using %3$d-%4$d
|
||||
tiles)</item></plurals>
|
||||
<!-- -->
|
||||
<string name="dict_browse_title1_fmt">%1$s (%2$d words using %3$d
|
||||
tiles)</string>
|
||||
<plurals name="dict_browse_title1_fmt"><item quantity="other">%1$s (%2$d words using %3$d
|
||||
tiles)</item></plurals>
|
||||
<!-- -->
|
||||
<string name="dict_browse_nowords_fmt">No word in %1$s starts with
|
||||
%2$s.</string>
|
||||
|
@ -1848,12 +1848,12 @@
|
|||
<!-- -->
|
||||
<string name="new_move_body">One or more moves has arrived</string>
|
||||
<!-- -->
|
||||
<string name="invite_bt_desc_fmt">Please select up to %1$d device[s]
|
||||
<plurals name="invite_bt_desc_fmt"><item quantity="other">Please select up to %1$d device[s]
|
||||
you want to include in this game. Use the \"%2$s\"
|
||||
button if you don\'t see a device you expect.</string>
|
||||
button if you don\'t see a device you expect.</item></plurals>
|
||||
<!-- -->
|
||||
<string name="bt_resend_fmt">Bluetooth send to %1$s failed; retry %3$d in
|
||||
%2$d seconds.</string>
|
||||
<plurals name="bt_resend_fmt"><item quantity="other">Bluetooth send to %1$s failed; retry %3$d in
|
||||
%2$d seconds.</item></plurals>
|
||||
<!-- -->
|
||||
<string name="bt_fail_fmt">Bluetooth sends to %1$s have failed too many
|
||||
times. Re-open the game to try again.</string>
|
||||
|
@ -1886,8 +1886,8 @@
|
|||
<!-- -->
|
||||
<string name="button_sms_add">Import contact</string>
|
||||
<!-- -->
|
||||
<string name="invite_sms_desc_fmt">Please check the %1$d phone
|
||||
number[s] you want to invite to your new game, then tap \"%2$s\".</string>
|
||||
<plurals name="invite_sms_desc_fmt"><item quantity="other">Please check the %1$d phone
|
||||
number[s] you want to invite to your new game, then tap \"%2$s\".</item></plurals>
|
||||
<!-- -->
|
||||
<string name="manual_owner_name">(Not in contacts)</string>
|
||||
<!-- -->
|
||||
|
@ -1940,7 +1940,7 @@
|
|||
<string name="board_menu_dict">Browse wordlist</string>
|
||||
|
||||
<!-- -->
|
||||
<string name="game_list_tmp">Building game summary…</string>
|
||||
<string name="game_list_tmp">Building game summary…</string>
|
||||
|
||||
<!-- -->
|
||||
<string name="connstat_nonet">This is a standalone game. There is
|
||||
|
@ -2070,10 +2070,10 @@
|
|||
<string name="group_cur_games">My games</string>
|
||||
<string name="group_new_games">New games</string>
|
||||
|
||||
<string name="groups_confirm_del_fmt">Are you sure you want to delete
|
||||
the %1$d selected group[s]?</string>
|
||||
<string name="groups_confirm_del_games_fmt">\n\n(%1$d game[s] will
|
||||
also be deleted.)</string>
|
||||
<plurals name="groups_confirm_del_fmt"><item quantity="other">Are you sure you want to delete
|
||||
the %1$d selected group[s]?</item></plurals>
|
||||
<plurals name="groups_confirm_del_games_fmt"><item quantity="other">\n\n(%1$d game[s] will
|
||||
also be deleted.)</item></plurals>
|
||||
|
||||
<string name="rename_group_label">Change the name of this group to:</string>
|
||||
<string name="game_name_group_title">Name group</string>
|
||||
|
@ -2081,7 +2081,7 @@
|
|||
<string name="cannot_delete_default_group_fmt">The group for new games, %1$s,
|
||||
cannot be deleted.</string>
|
||||
|
||||
<string name="group_name_fmt">%1$s (%2$d games)</string>
|
||||
<plurals name="group_name_fmt"><item quantity="other">%1$s (%2$d games)</item></plurals>
|
||||
|
||||
<!-- Button shown in game over dialog triggering creation of new
|
||||
game with the same players and parameters as the one that
|
||||
|
@ -2130,7 +2130,7 @@
|
|||
<!-- <string name="not_again_sms_ready">You have NFC enabled. That -->
|
||||
<!-- means that any time a board that\'s missing a player is open, you -->
|
||||
<!-- can tap a nearby person\'s device to invite him/her to -->
|
||||
<!-- play – if he/she is also using NFC.</string> -->
|
||||
<!-- play – if he/she is also using NFC.</string> -->
|
||||
|
||||
<string name="pct_suffix">\u0020pct.</string>
|
||||
|
||||
|
@ -2141,13 +2141,13 @@
|
|||
<string name="title_studyon">Enable studylists</string>
|
||||
<string name="summary_studyon">Offer to add to and display lists
|
||||
of words to remember</string>
|
||||
<string name="gamel_menu_study">Studylist…</string>
|
||||
<string name="gamel_menu_study">Studylist…</string>
|
||||
|
||||
<string name="slmenu_copy_sel">Copy to clipboard</string>
|
||||
<string name="slmenu_clear_sel">Delete selected</string>
|
||||
<string name="confirm_studylist_clear_fmt">Are you sure you want to
|
||||
delete the %1$d selected word[s]?\n\n(This action cannot be undone.)</string>
|
||||
<string name="paste_done_fmt">%1$d word[s] copied</string>
|
||||
<plurals name="confirm_studylist_clear_fmt"><item quantity="other">Are you sure you want to
|
||||
delete the %1$d selected word[s]?\n\n(This action cannot be undone.)</item></plurals>
|
||||
<plurals name="paste_done_fmt"><item quantity="other">%1$d word[s] copied</item></plurals>
|
||||
<string name="add_done_fmt">%1$s added to %2$s studylist</string>
|
||||
<string name="studylist_title_fmt">Studylist for %1$s</string>
|
||||
|
||||
|
@ -2172,7 +2172,7 @@
|
|||
<string name="loc_lang_blessed">%1$s (official)</string>
|
||||
<string name="loc_lang_local">%1$s (yours)</string>
|
||||
|
||||
<string name="new_xlations_fmt">Installed %1$d new translations</string>
|
||||
<plurals name="new_xlations_fmt"><item quantity="other">Installed %1$d new translations</item></plurals>
|
||||
|
||||
<string name="xlations_enabled_title">Enable local translating</string>
|
||||
<string name="xlations_enabled_summary">Add option to every screen menu</string>
|
||||
|
@ -2202,8 +2202,8 @@
|
|||
the same ones as the original.\n\n(You will not be able to save it
|
||||
unless it does.)</string>
|
||||
|
||||
<string name="remote_empty">Fetching wordlist information from server…</string>
|
||||
<string name="remote_digesting">Processing wordlist information…</string>
|
||||
<string name="remote_empty">Fetching wordlist information from server…</string>
|
||||
<string name="remote_digesting">Processing wordlist information…</string>
|
||||
<string name="remote_no_net">Unable to fetch wordlist information
|
||||
from server.</string>
|
||||
<string name="getinfo">Get info</string>
|
||||
|
@ -2221,14 +2221,14 @@
|
|||
%2$dK\nNote: %3$s</string>
|
||||
<string name="note_none">(None)</string>
|
||||
<string name="dict_on_server">Tap to download</string>
|
||||
<string name="lang_name_fmt">%1$s (%2$d wordlists)</string>
|
||||
<plurals name="lang_name_fmt"><item quantity="other">%1$s (%2$d wordlists)</item></plurals>
|
||||
|
||||
<string name="lang_unknown">Unknown</string>
|
||||
|
||||
<string name="not_again_dicts">This screen lets you install new
|
||||
wordslists and view the ones you already have.\n\nWhat wordlists
|
||||
you have installed determines:\n• What languages you can play
|
||||
in\n• How smart the robot player is\n• What words are
|
||||
you have installed determines:\n• What languages you can play
|
||||
in\n• How smart the robot player is\n• What words are
|
||||
legal.\n\nCheck the \"Show downloadable\" box at the top to see
|
||||
what\'s available.</string>
|
||||
|
||||
|
@ -2241,9 +2241,9 @@
|
|||
are used to build a string based on the length of time that's then
|
||||
inserted in the fourth. E.g "PlayerName moved more than 2 day[s],
|
||||
4 hour[s] ago." -->
|
||||
<string name="nag_minutes_fmt">%1$d minute[s]</string>
|
||||
<string name="nag_hours_fmt">%1$d hour[s]</string>
|
||||
<string name="nag_days_fmt">%1$d day[s]</string>
|
||||
<plurals name="nag_minutes_fmt"><item quantity="other">%1$d minute[s]</item></plurals>
|
||||
<plurals name="nag_hours_fmt"><item quantity="other">%1$d hour[s]</item></plurals>
|
||||
<plurals name="nag_days_fmt"><item quantity="other">%1$d day[s]</item></plurals>
|
||||
<string name="nag_body_fmt">%1$s moved more than %2$s ago.</string>
|
||||
<!-- above is inserted in this the last time I warn -->
|
||||
<string name="nag_warn_last_fmt">Last warning: %1$s</string>
|
||||
|
@ -2252,12 +2252,12 @@
|
|||
|
||||
<!-- formatting for last move summary in notifications -->
|
||||
<string name="lmi_pass_fmt">%1$s passed (0 points)</string>
|
||||
<string name="lmi_move_fmt">%1$s played %2$s for %3$d points</string>
|
||||
<string name="lmi_trade_fmt">%1$s traded %2$d tiles</string>
|
||||
<plurals name="lmi_move_fmt"><item quantity="other">%1$s played %2$s for %3$d points</item></plurals>
|
||||
<plurals name="lmi_trade_fmt"><item quantity="other">%1$s traded %2$d tiles</item></plurals>
|
||||
<string name="lmi_phony_fmt">%1$s lost a turn</string>
|
||||
<string name="lmi_tiles_fmt">Tiles assigned to %1$s</string>
|
||||
|
||||
<string name="bt_err_count_fmt">%1$d bluetooth errors so far</string>
|
||||
<plurals name="bt_err_count_fmt"><item quantity="other">%1$d bluetooth errors so far</item></plurals>
|
||||
|
||||
<string name="bt_no_devs">You currently have no paired Bluetooth
|
||||
devices. Would you like to open the Android Settings Panel to add
|
||||
|
@ -2289,7 +2289,7 @@
|
|||
<string name="use_defaults">Use defaults</string>
|
||||
|
||||
<string name="nplayers_prompt">Number on this device</string>
|
||||
<string name="nplayers_fmt">%1$d player[s]</string>
|
||||
<plurals name="nplayers_fmt"><item quantity="other">%1$d player[s]</item></plurals>
|
||||
<string name="err_dup_invite_fmt">Duplicate invitation rejected:
|
||||
device \"%1$s\" has already accepted an invitation to this
|
||||
game.</string>
|
||||
|
@ -2320,7 +2320,7 @@
|
|||
connect.)</string>
|
||||
|
||||
<string name="nfc_just_tap">To invite via NFC just touch the back
|
||||
of this device against the one you want to invite—any time the
|
||||
of this device against the one you want to invite—any time the
|
||||
game is open.</string>
|
||||
|
||||
<string name="warn_no_comms">Every networked game must have at
|
||||
|
|
|
@ -147,9 +147,11 @@
|
|||
</plurals>
|
||||
<!-- Text of confirmation dialog posted when list_item_reset menu
|
||||
is selected -->
|
||||
<string name="confirm_reset_fmt">Era uoy erus uoy tnaw ot teser eht %1$d
|
||||
<plurals name="confirm_reset_fmt">
|
||||
<item quantity="other">Era uoy erus uoy tnaw ot teser eht %1$d
|
||||
detceles ?]s[emag\n\ngNitteser( sesare lla sevom dna yna noitcennoc
|
||||
noitamrofni.)</string>
|
||||
noitamrofni.)</item>
|
||||
</plurals>
|
||||
<!--
|
||||
############################################################
|
||||
# :Screens:
|
||||
|
@ -445,15 +447,19 @@
|
|||
open such a game I give the user a chance to issue an
|
||||
invititation while trying to warn him not to send duplicates.
|
||||
The number of players missing is substituted for "%1$d". -->
|
||||
<string name="invite_msg_fmt">Siht emag si gnitiaw rof %1$d etomer
|
||||
<plurals name="invite_msg_fmt">
|
||||
<item quantity="other">Siht emag si gnitiaw rof %1$d etomer
|
||||
]s[reyalp. Dluow uoy ekil ot etivni enoemos ot nioj -- gnimussa
|
||||
uoy nevah\'t ?ydaerla</string>
|
||||
uoy nevah\'t ?ydaerla</item>
|
||||
</plurals>
|
||||
<!-- Appended to message above if local device has NFC available -->
|
||||
<string name="invite_if_nfc">Ro tsuj Pat ot Etivni -- fi eht rehto
|
||||
ecived osla sah Diordna Gnimaeb dna si ybraen.</string>
|
||||
<!-- Toast shown when players are missing, same time as above
|
||||
but more subtle. -->
|
||||
<string name="players_miss_fmt">%1$d ]s[reyalp gnissim</string>
|
||||
<plurals name="players_miss_fmt">
|
||||
<item quantity="other">%1$d ]s[reyalp gnissim</item>
|
||||
</plurals>
|
||||
<!-- Most users create games with only two players, which is the
|
||||
default, but Crosswords supports up to four. When I'm using
|
||||
the above string to encourage the opener of a game missing
|
||||
|
@ -473,8 +479,10 @@
|
|||
the room, and how many additional players have not yet
|
||||
registered with the relay in this game. This should be seen
|
||||
only once per game. -->
|
||||
<string name="msg_relay_waiting_fmt">Ecived %1$d detcennoc ot yaler ni
|
||||
moor \"%2$s\". Gnitiaw rof %3$d ]s[reyalp.</string>
|
||||
<plurals name="msg_relay_waiting_fmt">
|
||||
<item quantity="other">Ecived %1$d detcennoc ot yaler ni
|
||||
moor \"%2$s\". Gnitiaw rof %3$d ]s[reyalp.</item>
|
||||
</plurals>
|
||||
<!-- Text of "toast" shown when a game is notified by the relay
|
||||
that all expected players have registered. At this point
|
||||
play can begin. -->
|
||||
|
@ -567,7 +575,9 @@
|
|||
able to remove this from non-debug versions of the game
|
||||
because users should not have to do do this EVER. -->
|
||||
<string name="board_menu_game_resend">Dneser segassem</string>
|
||||
<string name="resend_finished_fmt">Dneser dehsinif; tnes %1$d ]s[egassem.</string>
|
||||
<plurals name="resend_finished_fmt">
|
||||
<item quantity="other">Dneser dehsinif; tnes %1$d ]s[egassem.</item>
|
||||
</plurals>
|
||||
<!--
|
||||
############################################################
|
||||
# Board info/error dialog messages
|
||||
|
@ -579,7 +589,9 @@
|
|||
<!-- Notifies user of a normal robot move -->
|
||||
<string name="str_robot_moved_fmt">Eht tobor %1$s edam siht evom:\u0020</string>
|
||||
<!-- Notifies user of a robot trade move -->
|
||||
<string name="strd_robot_traded_fmt">degnahcxe %1$d selit.</string>
|
||||
<plurals name="strd_robot_traded_fmt">
|
||||
<item quantity="other">degnahcxe %1$d selit.</item>
|
||||
</plurals>
|
||||
<!-- title for window you get when you select menu with text
|
||||
board_menu_game_counts -->
|
||||
<string name="strs_values_header_fmt">%1$s seulav/stnuoc:\n</string>
|
||||
|
@ -627,10 +639,14 @@
|
|||
<string name="strd_turn_score_fmt">Erocs rof nrut: %1$d\n</string>
|
||||
<!-- First line in the remaining tiles dialog (reached by tapping
|
||||
the number at left end of the scoreboard) -->
|
||||
<string name="strd_remains_header_fmt">%1$d selit tfel ni loop.</string>
|
||||
<plurals name="strd_remains_header_fmt">
|
||||
<item quantity="other">%1$d selit tfel ni loop.</item>
|
||||
</plurals>
|
||||
<!-- Intro to the paragraph lisiting all of the tiles remaining -->
|
||||
<string name="strd_remains_expl_fmt">%1$d selit tfel ni loop dna lla
|
||||
]s[yart:\n</string>
|
||||
<plurals name="strd_remains_expl_fmt">
|
||||
<item quantity="other">%1$d selit tfel ni loop dna lla
|
||||
]s[yart:\n</item>
|
||||
</plurals>
|
||||
<!-- text of dialog shown when the menu item board_menu_undo_last
|
||||
is chosen. -->
|
||||
<string name="confirm_undo_last">Era uoy erus uoy tnaw ot odnu eht
|
||||
|
@ -994,9 +1010,9 @@
|
|||
<!-- <string name="sms_or_email">Send invitation using SMS (texting) or -->
|
||||
<!-- via email?</string> -->
|
||||
<!-- <string name="nfc_or_email">Send invitation using NFC (Android -->
|
||||
<!-- beaming – NEW) or via email?</string> -->
|
||||
<!-- beaming – NEW) or via email?</string> -->
|
||||
<!-- <string name="nfc_or_sms_or_email">Send invitation using SMS -->
|
||||
<!-- (texting) or NFC (\"Android beaming\" – NEW) or via email?</string> -->
|
||||
<!-- (texting) or NFC (\"Android beaming\" – NEW) or via email?</string> -->
|
||||
<!-- When an invitation is sent, the user gets to choose between
|
||||
plaintext and html formatting. These two strings are shown in the
|
||||
two buttons in the dialog. -->
|
||||
|
@ -1036,8 +1052,10 @@
|
|||
<string name="invite_chooser_sms">sms</string>
|
||||
<!-- Text of dialog asking user to confirm a move that exchanges
|
||||
tiles (instead of forming a new word to earn points) -->
|
||||
<string name="query_trade_fmt">Era uoy erus uoy tnaw ot egnahcxe eht
|
||||
%1$d detceles selit (%2$s?)</string>
|
||||
<plurals name="query_trade_fmt">
|
||||
<item quantity="other">Era uoy erus uoy tnaw ot egnahcxe eht
|
||||
%1$d detceles selit (%2$s?)</item>
|
||||
</plurals>
|
||||
<!-- ############################################################
|
||||
# :Screens:
|
||||
# Chat screen
|
||||
|
@ -1515,11 +1533,15 @@
|
|||
<!-- -->
|
||||
<string name="pick_faceup">Kcip selit pu-ecaf</string>
|
||||
<!-- -->
|
||||
<string name="dict_browse_title_fmt">%1$s (%2$d sdrow gnisu %3$d-%4$d
|
||||
)selit</string>
|
||||
<plurals name="dict_browse_title_fmt">
|
||||
<item quantity="other">%1$s (%2$d sdrow gnisu %3$d-%4$d
|
||||
)selit</item>
|
||||
</plurals>
|
||||
<!-- -->
|
||||
<string name="dict_browse_title1_fmt">%1$s (%2$d sdrow gnisu %3$d
|
||||
)selit</string>
|
||||
<plurals name="dict_browse_title1_fmt">
|
||||
<item quantity="other">%1$s (%2$d sdrow gnisu %3$d
|
||||
)selit</item>
|
||||
</plurals>
|
||||
<!-- -->
|
||||
<string name="dict_browse_nowords_fmt">On drow ni %1$s strats htiw
|
||||
%2$s.</string>
|
||||
|
@ -1584,12 +1606,16 @@
|
|||
<!-- -->
|
||||
<string name="new_move_body">Eno ro erom sevom sah devirra</string>
|
||||
<!-- -->
|
||||
<string name="invite_bt_desc_fmt">Esaelp tceles pu ot %1$d ]s[ecived
|
||||
<plurals name="invite_bt_desc_fmt">
|
||||
<item quantity="other">Esaelp tceles pu ot %1$d ]s[ecived
|
||||
uoy tnaw ot edulcni ni siht emag. Esu eht \"%2$s\"
|
||||
nottub fi uoy nod\'t ees a ecived uoy tcepxe.</string>
|
||||
nottub fi uoy nod\'t ees a ecived uoy tcepxe.</item>
|
||||
</plurals>
|
||||
<!-- -->
|
||||
<string name="bt_resend_fmt">Htooteulb dnes ot %1$s deliaf; yrter %3$d ni
|
||||
%2$d sdnoces.</string>
|
||||
<plurals name="bt_resend_fmt">
|
||||
<item quantity="other">Htooteulb dnes ot %1$s deliaf; yrter %3$d ni
|
||||
%2$d sdnoces.</item>
|
||||
</plurals>
|
||||
<!-- -->
|
||||
<string name="bt_fail_fmt">Htooteulb sdnes ot %1$s evah deliaf oot ynam
|
||||
semit. Nepo-er eht emag ot yrt niaga.</string>
|
||||
|
@ -1620,8 +1646,10 @@
|
|||
<!-- -->
|
||||
<string name="button_sms_add">Tropmi tcatnoc</string>
|
||||
<!-- -->
|
||||
<string name="invite_sms_desc_fmt">Esaelp kcehc eht %1$d enohp
|
||||
]s[rebmun uoy tnaw ot etivni ot ruoy wen ,emag neht pat \"%2$s\".</string>
|
||||
<plurals name="invite_sms_desc_fmt">
|
||||
<item quantity="other">Esaelp kcehc eht %1$d enohp
|
||||
]s[rebmun uoy tnaw ot etivni ot ruoy wen ,emag neht pat \"%2$s\".</item>
|
||||
</plurals>
|
||||
<!-- -->
|
||||
<string name="manual_owner_name">tOn( ni )stcatnoc</string>
|
||||
<!-- -->
|
||||
|
@ -1781,15 +1809,21 @@
|
|||
<string name="list_group_movedown">Evom nwod</string>
|
||||
<string name="group_cur_games">Ym semag</string>
|
||||
<string name="group_new_games">Wen semag</string>
|
||||
<string name="groups_confirm_del_fmt">Era uoy erus uoy tnaw ot eteled
|
||||
eht %1$d detceles ?]s[puorg</string>
|
||||
<string name="groups_confirm_del_games_fmt">\n\n(%1$d ]s[emag lliw
|
||||
osla eb deteled.)</string>
|
||||
<plurals name="groups_confirm_del_fmt">
|
||||
<item quantity="other">Era uoy erus uoy tnaw ot eteled
|
||||
eht %1$d detceles ?]s[puorg</item>
|
||||
</plurals>
|
||||
<plurals name="groups_confirm_del_games_fmt">
|
||||
<item quantity="other">\n\n(%1$d ]s[emag lliw
|
||||
osla eb deteled.)</item>
|
||||
</plurals>
|
||||
<string name="rename_group_label">Egnahc eht eman fo siht puorg ot:</string>
|
||||
<string name="game_name_group_title">Eman puorg</string>
|
||||
<string name="cannot_delete_default_group_fmt">Eht puorg rof wen ,semag %1$s,
|
||||
tonnac eb deteled.</string>
|
||||
<string name="group_name_fmt">%1$s (%2$d )semag</string>
|
||||
<plurals name="group_name_fmt">
|
||||
<item quantity="other">%1$s (%2$d )semag</item>
|
||||
</plurals>
|
||||
<!-- Button shown in game over dialog triggering creation of new
|
||||
game with the same players and parameters as the one that
|
||||
just ended. -->
|
||||
|
@ -1823,7 +1857,7 @@
|
|||
<!-- <string name="not_again_sms_ready">You have NFC enabled. That -->
|
||||
<!-- means that any time a board that\'s missing a player is open, you -->
|
||||
<!-- can tap a nearby person\'s device to invite him/her to -->
|
||||
<!-- play – if he/she is also using NFC.</string> -->
|
||||
<!-- play – if he/she is also using NFC.</string> -->
|
||||
<string name="pct_suffix">\u0020tcp.</string>
|
||||
<string name="menu_rateme">Etar Sdrowssorc</string>
|
||||
<string name="no_market">Elgoog Yalp ppa ton dnuof</string>
|
||||
|
@ -1834,9 +1868,13 @@
|
|||
<string name="gamel_menu_study">Tsilyduts…</string>
|
||||
<string name="slmenu_copy_sel">Ypoc ot draobpilc</string>
|
||||
<string name="slmenu_clear_sel">Eteled detceles</string>
|
||||
<string name="confirm_studylist_clear_fmt">Era uoy erus uoy tnaw ot
|
||||
eteled eht %1$d detceles ?]s[drow\n\nsIht( noitca tonnac eb enodnu.)</string>
|
||||
<string name="paste_done_fmt">%1$d ]s[drow deipoc</string>
|
||||
<plurals name="confirm_studylist_clear_fmt">
|
||||
<item quantity="other">Era uoy erus uoy tnaw ot
|
||||
eteled eht %1$d detceles ?]s[drow\n\nsIht( noitca tonnac eb enodnu.)</item>
|
||||
</plurals>
|
||||
<plurals name="paste_done_fmt">
|
||||
<item quantity="other">%1$d ]s[drow deipoc</item>
|
||||
</plurals>
|
||||
<string name="add_done_fmt">%1$s dedda ot %2$s tsilyduts</string>
|
||||
<string name="studylist_title_fmt">Tsilyduts rof %1$s</string>
|
||||
<string name="study_langpick">Ruoy sdrow rof:</string>
|
||||
|
@ -1854,7 +1892,9 @@
|
|||
<string name="loc_menu_xlate">Etalsnart</string>
|
||||
<string name="loc_lang_blessed">%1$s )laiciffo(</string>
|
||||
<string name="loc_lang_local">%1$s )sruoy(</string>
|
||||
<string name="new_xlations_fmt">Dellatsni %1$d wen snoitalsnart</string>
|
||||
<plurals name="new_xlations_fmt">
|
||||
<item quantity="other">Dellatsni %1$d wen snoitalsnart</item>
|
||||
</plurals>
|
||||
<string name="xlations_enabled_title">Elbane lacol gnitalsnart</string>
|
||||
<string name="xlations_enabled_summary">Dda noitpo ot yreve neercs unem</string>
|
||||
<string name="data_gsm_only">SMS Atad si ylno elbaliava no MSG senohp.</string>
|
||||
|
@ -1892,7 +1932,9 @@
|
|||
%2$dK\nEton: %3$s</string>
|
||||
<string name="note_none">)Enon(</string>
|
||||
<string name="dict_on_server">Pat ot daolnwod</string>
|
||||
<string name="lang_name_fmt">%1$s (%2$d )stsildrow</string>
|
||||
<plurals name="lang_name_fmt">
|
||||
<item quantity="other">%1$s (%2$d )stsildrow</item>
|
||||
</plurals>
|
||||
<string name="lang_unknown">Nwonknu</string>
|
||||
<string name="not_again_dicts">Siht neercs stel uoy llatsni wen
|
||||
stsilsdrow dna weiv eht seno uoy ydaerla evah.\n\nTahw stsildrow
|
||||
|
@ -1908,9 +1950,15 @@
|
|||
are used to build a string based on the length of time that's then
|
||||
inserted in the fourth. E.g "PlayerName moved more than 2 day[s],
|
||||
4 hour[s] ago." -->
|
||||
<string name="nag_minutes_fmt">%1$d ]s[etunim</string>
|
||||
<string name="nag_hours_fmt">%1$d ]s[ruoh</string>
|
||||
<string name="nag_days_fmt">%1$d ]s[yad</string>
|
||||
<plurals name="nag_minutes_fmt">
|
||||
<item quantity="other">%1$d ]s[etunim</item>
|
||||
</plurals>
|
||||
<plurals name="nag_hours_fmt">
|
||||
<item quantity="other">%1$d ]s[ruoh</item>
|
||||
</plurals>
|
||||
<plurals name="nag_days_fmt">
|
||||
<item quantity="other">%1$d ]s[yad</item>
|
||||
</plurals>
|
||||
<string name="nag_body_fmt">%1$s devom erom naht %2$s oga.</string>
|
||||
<!-- above is inserted in this the last time I warn -->
|
||||
<string name="nag_warn_last_fmt">Tsal gninraw: %1$s</string>
|
||||
|
@ -1918,11 +1966,17 @@
|
|||
<string name="prev_player">Ruoy tnenoppo</string>
|
||||
<!-- formatting for last move summary in notifications -->
|
||||
<string name="lmi_pass_fmt">%1$s dessap 0( )stniop</string>
|
||||
<string name="lmi_move_fmt">%1$s deyalp %2$s rof %3$d stniop</string>
|
||||
<string name="lmi_trade_fmt">%1$s dedart %2$d selit</string>
|
||||
<plurals name="lmi_move_fmt">
|
||||
<item quantity="other">%1$s deyalp %2$s rof %3$d stniop</item>
|
||||
</plurals>
|
||||
<plurals name="lmi_trade_fmt">
|
||||
<item quantity="other">%1$s dedart %2$d selit</item>
|
||||
</plurals>
|
||||
<string name="lmi_phony_fmt">%1$s tsol a nrut</string>
|
||||
<string name="lmi_tiles_fmt">Selit dengissa ot %1$s</string>
|
||||
<string name="bt_err_count_fmt">%1$d htooteulb srorre os raf</string>
|
||||
<plurals name="bt_err_count_fmt">
|
||||
<item quantity="other">%1$d htooteulb srorre os raf</item>
|
||||
</plurals>
|
||||
<string name="bt_no_devs">Uoy yltnerruc evah on deriap Htooteulb
|
||||
secived. Dluow uoy ekil ot nepo eht Diordna Sgnittes Lenap ot dda
|
||||
eno ro ?erom\n\nuOy( yam osla deen ot nepo ti no eht ecived uoy
|
||||
|
@ -1946,7 +2000,9 @@
|
|||
etivni rehto sreyalp nehw ti si nepo.)</string>
|
||||
<string name="use_defaults">Esu stluafed</string>
|
||||
<string name="nplayers_prompt">Rebmun no siht ecived</string>
|
||||
<string name="nplayers_fmt">%1$d ]s[reyalp</string>
|
||||
<plurals name="nplayers_fmt">
|
||||
<item quantity="other">%1$d ]s[reyalp</item>
|
||||
</plurals>
|
||||
<string name="err_dup_invite_fmt">Etacilpud noitativni detcejer:
|
||||
ecived \"%1$s\" sah ydaerla detpecca na noitativni ot siht
|
||||
emag.</string>
|
||||
|
|
|
@ -147,9 +147,11 @@
|
|||
</plurals>
|
||||
<!-- Text of confirmation dialog posted when list_item_reset menu
|
||||
is selected -->
|
||||
<string name="confirm_reset_fmt">ARE YOU SURE YOU WANT TO RESET THE %1$d
|
||||
<plurals name="confirm_reset_fmt">
|
||||
<item quantity="other">ARE YOU SURE YOU WANT TO RESET THE %1$d
|
||||
SELECTED GAME[S]?\n\n(RESETTING ERASES ALL MOVES AND ANY CONNECTION
|
||||
INFORMATION.)</string>
|
||||
INFORMATION.)</item>
|
||||
</plurals>
|
||||
<!--
|
||||
############################################################
|
||||
# :Screens:
|
||||
|
@ -445,15 +447,19 @@
|
|||
open such a game I give the user a chance to issue an
|
||||
invititation while trying to warn him not to send duplicates.
|
||||
The number of players missing is substituted for "%1$d". -->
|
||||
<string name="invite_msg_fmt">THIS GAME IS WAITING FOR %1$d REMOTE
|
||||
<plurals name="invite_msg_fmt">
|
||||
<item quantity="other">THIS GAME IS WAITING FOR %1$d REMOTE
|
||||
PLAYER[S]. WOULD YOU LIKE TO INVITE SOMEONE TO JOIN -- ASSUMING
|
||||
YOU HAVEN\'T ALREADY?</string>
|
||||
YOU HAVEN\'T ALREADY?</item>
|
||||
</plurals>
|
||||
<!-- Appended to message above if local device has NFC available -->
|
||||
<string name="invite_if_nfc">OR JUST TAP TO INVITE -- IF THE OTHER
|
||||
DEVICE ALSO HAS ANDROID BEAMING AND IS NEARBY.</string>
|
||||
<!-- Toast shown when players are missing, same time as above
|
||||
but more subtle. -->
|
||||
<string name="players_miss_fmt">%1$d PLAYER[S] MISSING</string>
|
||||
<plurals name="players_miss_fmt">
|
||||
<item quantity="other">%1$d PLAYER[S] MISSING</item>
|
||||
</plurals>
|
||||
<!-- Most users create games with only two players, which is the
|
||||
default, but Crosswords supports up to four. When I'm using
|
||||
the above string to encourage the opener of a game missing
|
||||
|
@ -473,8 +479,10 @@
|
|||
the room, and how many additional players have not yet
|
||||
registered with the relay in this game. This should be seen
|
||||
only once per game. -->
|
||||
<string name="msg_relay_waiting_fmt">DEVICE %1$d CONNECTED TO RELAY IN
|
||||
ROOM \"%2$s\". WAITING FOR %3$d PLAYER[S].</string>
|
||||
<plurals name="msg_relay_waiting_fmt">
|
||||
<item quantity="other">DEVICE %1$d CONNECTED TO RELAY IN
|
||||
ROOM \"%2$s\". WAITING FOR %3$d PLAYER[S].</item>
|
||||
</plurals>
|
||||
<!-- Text of "toast" shown when a game is notified by the relay
|
||||
that all expected players have registered. At this point
|
||||
play can begin. -->
|
||||
|
@ -567,7 +575,9 @@
|
|||
able to remove this from non-debug versions of the game
|
||||
because users should not have to do do this EVER. -->
|
||||
<string name="board_menu_game_resend">RESEND MESSAGES</string>
|
||||
<string name="resend_finished_fmt">RESEND FINISHED; SENT %1$d MESSAGE[S].</string>
|
||||
<plurals name="resend_finished_fmt">
|
||||
<item quantity="other">RESEND FINISHED; SENT %1$d MESSAGE[S].</item>
|
||||
</plurals>
|
||||
<!--
|
||||
############################################################
|
||||
# Board info/error dialog messages
|
||||
|
@ -579,7 +589,9 @@
|
|||
<!-- Notifies user of a normal robot move -->
|
||||
<string name="str_robot_moved_fmt">THE ROBOT %1$s MADE THIS MOVE:\u0020</string>
|
||||
<!-- Notifies user of a robot trade move -->
|
||||
<string name="strd_robot_traded_fmt">EXCHANGED %1$d TILES.</string>
|
||||
<plurals name="strd_robot_traded_fmt">
|
||||
<item quantity="other">EXCHANGED %1$d TILES.</item>
|
||||
</plurals>
|
||||
<!-- title for window you get when you select menu with text
|
||||
board_menu_game_counts -->
|
||||
<string name="strs_values_header_fmt">%1$s COUNTS/VALUES:\n</string>
|
||||
|
@ -627,10 +639,14 @@
|
|||
<string name="strd_turn_score_fmt">SCORE FOR TURN: %1$d\n</string>
|
||||
<!-- First line in the remaining tiles dialog (reached by tapping
|
||||
the number at left end of the scoreboard) -->
|
||||
<string name="strd_remains_header_fmt">%1$d TILES LEFT IN POOL.</string>
|
||||
<plurals name="strd_remains_header_fmt">
|
||||
<item quantity="other">%1$d TILES LEFT IN POOL.</item>
|
||||
</plurals>
|
||||
<!-- Intro to the paragraph lisiting all of the tiles remaining -->
|
||||
<string name="strd_remains_expl_fmt">%1$d TILES LEFT IN POOL AND ALL
|
||||
TRAY[S]:\n</string>
|
||||
<plurals name="strd_remains_expl_fmt">
|
||||
<item quantity="other">%1$d TILES LEFT IN POOL AND ALL
|
||||
TRAY[S]:\n</item>
|
||||
</plurals>
|
||||
<!-- text of dialog shown when the menu item board_menu_undo_last
|
||||
is chosen. -->
|
||||
<string name="confirm_undo_last">ARE YOU SURE YOU WANT TO UNDO THE
|
||||
|
@ -994,9 +1010,9 @@
|
|||
<!-- <string name="sms_or_email">Send invitation using SMS (texting) or -->
|
||||
<!-- via email?</string> -->
|
||||
<!-- <string name="nfc_or_email">Send invitation using NFC (Android -->
|
||||
<!-- beaming – NEW) or via email?</string> -->
|
||||
<!-- beaming – NEW) or via email?</string> -->
|
||||
<!-- <string name="nfc_or_sms_or_email">Send invitation using SMS -->
|
||||
<!-- (texting) or NFC (\"Android beaming\" – NEW) or via email?</string> -->
|
||||
<!-- (texting) or NFC (\"Android beaming\" – NEW) or via email?</string> -->
|
||||
<!-- When an invitation is sent, the user gets to choose between
|
||||
plaintext and html formatting. These two strings are shown in the
|
||||
two buttons in the dialog. -->
|
||||
|
@ -1036,8 +1052,10 @@
|
|||
<string name="invite_chooser_sms">SMS</string>
|
||||
<!-- Text of dialog asking user to confirm a move that exchanges
|
||||
tiles (instead of forming a new word to earn points) -->
|
||||
<string name="query_trade_fmt">ARE YOU SURE YOU WANT TO EXCHANGE THE
|
||||
%1$d SELECTED TILES (%2$s)?</string>
|
||||
<plurals name="query_trade_fmt">
|
||||
<item quantity="other">ARE YOU SURE YOU WANT TO EXCHANGE THE
|
||||
%1$d SELECTED TILES (%2$s)?</item>
|
||||
</plurals>
|
||||
<!-- ############################################################
|
||||
# :Screens:
|
||||
# Chat screen
|
||||
|
@ -1515,11 +1533,15 @@
|
|||
<!-- -->
|
||||
<string name="pick_faceup">PICK TILES FACE-UP</string>
|
||||
<!-- -->
|
||||
<string name="dict_browse_title_fmt">%1$s (%2$d WORDS USING %3$d-%4$d
|
||||
TILES)</string>
|
||||
<plurals name="dict_browse_title_fmt">
|
||||
<item quantity="other">%1$s (%2$d WORDS USING %3$d-%4$d
|
||||
TILES)</item>
|
||||
</plurals>
|
||||
<!-- -->
|
||||
<string name="dict_browse_title1_fmt">%1$s (%2$d WORDS USING %3$d
|
||||
TILES)</string>
|
||||
<plurals name="dict_browse_title1_fmt">
|
||||
<item quantity="other">%1$s (%2$d WORDS USING %3$d
|
||||
TILES)</item>
|
||||
</plurals>
|
||||
<!-- -->
|
||||
<string name="dict_browse_nowords_fmt">NO WORD IN %1$s STARTS WITH
|
||||
%2$s.</string>
|
||||
|
@ -1584,12 +1606,16 @@
|
|||
<!-- -->
|
||||
<string name="new_move_body">ONE OR MORE MOVES HAS ARRIVED</string>
|
||||
<!-- -->
|
||||
<string name="invite_bt_desc_fmt">PLEASE SELECT UP TO %1$d DEVICE[S]
|
||||
<plurals name="invite_bt_desc_fmt">
|
||||
<item quantity="other">PLEASE SELECT UP TO %1$d DEVICE[S]
|
||||
YOU WANT TO INCLUDE IN THIS GAME. USE THE \"%2$s\"
|
||||
BUTTON IF YOU DON\'T SEE A DEVICE YOU EXPECT.</string>
|
||||
BUTTON IF YOU DON\'T SEE A DEVICE YOU EXPECT.</item>
|
||||
</plurals>
|
||||
<!-- -->
|
||||
<string name="bt_resend_fmt">BLUETOOTH SEND TO %1$s FAILED; RETRY %3$d IN
|
||||
%2$d SECONDS.</string>
|
||||
<plurals name="bt_resend_fmt">
|
||||
<item quantity="other">BLUETOOTH SEND TO %1$s FAILED; RETRY %3$d IN
|
||||
%2$d SECONDS.</item>
|
||||
</plurals>
|
||||
<!-- -->
|
||||
<string name="bt_fail_fmt">BLUETOOTH SENDS TO %1$s HAVE FAILED TOO MANY
|
||||
TIMES. RE-OPEN THE GAME TO TRY AGAIN.</string>
|
||||
|
@ -1620,8 +1646,10 @@
|
|||
<!-- -->
|
||||
<string name="button_sms_add">IMPORT CONTACT</string>
|
||||
<!-- -->
|
||||
<string name="invite_sms_desc_fmt">PLEASE CHECK THE %1$d PHONE
|
||||
NUMBER[S] YOU WANT TO INVITE TO YOUR NEW GAME, THEN TAP \"%2$s\".</string>
|
||||
<plurals name="invite_sms_desc_fmt">
|
||||
<item quantity="other">PLEASE CHECK THE %1$d PHONE
|
||||
NUMBER[S] YOU WANT TO INVITE TO YOUR NEW GAME, THEN TAP \"%2$s\".</item>
|
||||
</plurals>
|
||||
<!-- -->
|
||||
<string name="manual_owner_name">(NOT IN CONTACTS)</string>
|
||||
<!-- -->
|
||||
|
@ -1781,15 +1809,21 @@
|
|||
<string name="list_group_movedown">MOVE DOWN</string>
|
||||
<string name="group_cur_games">MY GAMES</string>
|
||||
<string name="group_new_games">NEW GAMES</string>
|
||||
<string name="groups_confirm_del_fmt">ARE YOU SURE YOU WANT TO DELETE
|
||||
THE %1$d SELECTED GROUP[S]?</string>
|
||||
<string name="groups_confirm_del_games_fmt">\n\n(%1$d GAME[S] WILL
|
||||
ALSO BE DELETED.)</string>
|
||||
<plurals name="groups_confirm_del_fmt">
|
||||
<item quantity="other">ARE YOU SURE YOU WANT TO DELETE
|
||||
THE %1$d SELECTED GROUP[S]?</item>
|
||||
</plurals>
|
||||
<plurals name="groups_confirm_del_games_fmt">
|
||||
<item quantity="other">\n\n(%1$d GAME[S] WILL
|
||||
ALSO BE DELETED.)</item>
|
||||
</plurals>
|
||||
<string name="rename_group_label">CHANGE THE NAME OF THIS GROUP TO:</string>
|
||||
<string name="game_name_group_title">NAME GROUP</string>
|
||||
<string name="cannot_delete_default_group_fmt">THE GROUP FOR NEW GAMES, %1$s,
|
||||
CANNOT BE DELETED.</string>
|
||||
<string name="group_name_fmt">%1$s (%2$d GAMES)</string>
|
||||
<plurals name="group_name_fmt">
|
||||
<item quantity="other">%1$s (%2$d GAMES)</item>
|
||||
</plurals>
|
||||
<!-- Button shown in game over dialog triggering creation of new
|
||||
game with the same players and parameters as the one that
|
||||
just ended. -->
|
||||
|
@ -1823,7 +1857,7 @@
|
|||
<!-- <string name="not_again_sms_ready">You have NFC enabled. That -->
|
||||
<!-- means that any time a board that\'s missing a player is open, you -->
|
||||
<!-- can tap a nearby person\'s device to invite him/her to -->
|
||||
<!-- play – if he/she is also using NFC.</string> -->
|
||||
<!-- play – if he/she is also using NFC.</string> -->
|
||||
<string name="pct_suffix">\u0020PCT.</string>
|
||||
<string name="menu_rateme">RATE CROSSWORDS</string>
|
||||
<string name="no_market">GOOGLE PLAY APP NOT FOUND</string>
|
||||
|
@ -1834,9 +1868,13 @@
|
|||
<string name="gamel_menu_study">STUDYLIST…</string>
|
||||
<string name="slmenu_copy_sel">COPY TO CLIPBOARD</string>
|
||||
<string name="slmenu_clear_sel">DELETE SELECTED</string>
|
||||
<string name="confirm_studylist_clear_fmt">ARE YOU SURE YOU WANT TO
|
||||
DELETE THE %1$d SELECTED WORD[S]?\n\n(THIS ACTION CANNOT BE UNDONE.)</string>
|
||||
<string name="paste_done_fmt">%1$d WORD[S] COPIED</string>
|
||||
<plurals name="confirm_studylist_clear_fmt">
|
||||
<item quantity="other">ARE YOU SURE YOU WANT TO
|
||||
DELETE THE %1$d SELECTED WORD[S]?\n\n(THIS ACTION CANNOT BE UNDONE.)</item>
|
||||
</plurals>
|
||||
<plurals name="paste_done_fmt">
|
||||
<item quantity="other">%1$d WORD[S] COPIED</item>
|
||||
</plurals>
|
||||
<string name="add_done_fmt">%1$s ADDED TO %2$s STUDYLIST</string>
|
||||
<string name="studylist_title_fmt">STUDYLIST FOR %1$s</string>
|
||||
<string name="study_langpick">YOUR WORDS FOR:</string>
|
||||
|
@ -1854,7 +1892,9 @@
|
|||
<string name="loc_menu_xlate">TRANSLATE</string>
|
||||
<string name="loc_lang_blessed">%1$s (OFFICIAL)</string>
|
||||
<string name="loc_lang_local">%1$s (YOURS)</string>
|
||||
<string name="new_xlations_fmt">INSTALLED %1$d NEW TRANSLATIONS</string>
|
||||
<plurals name="new_xlations_fmt">
|
||||
<item quantity="other">INSTALLED %1$d NEW TRANSLATIONS</item>
|
||||
</plurals>
|
||||
<string name="xlations_enabled_title">ENABLE LOCAL TRANSLATING</string>
|
||||
<string name="xlations_enabled_summary">ADD OPTION TO EVERY SCREEN MENU</string>
|
||||
<string name="data_gsm_only">SMS DATA IS ONLY AVAILABLE ON GSM PHONES.</string>
|
||||
|
@ -1892,7 +1932,9 @@
|
|||
%2$dK\nNOTE: %3$s</string>
|
||||
<string name="note_none">(NONE)</string>
|
||||
<string name="dict_on_server">TAP TO DOWNLOAD</string>
|
||||
<string name="lang_name_fmt">%1$s (%2$d WORDLISTS)</string>
|
||||
<plurals name="lang_name_fmt">
|
||||
<item quantity="other">%1$s (%2$d WORDLISTS)</item>
|
||||
</plurals>
|
||||
<string name="lang_unknown">UNKNOWN</string>
|
||||
<string name="not_again_dicts">THIS SCREEN LETS YOU INSTALL NEW
|
||||
WORDSLISTS AND VIEW THE ONES YOU ALREADY HAVE.\n\nWHAT WORDLISTS
|
||||
|
@ -1908,9 +1950,15 @@
|
|||
are used to build a string based on the length of time that's then
|
||||
inserted in the fourth. E.g "PlayerName moved more than 2 day[s],
|
||||
4 hour[s] ago." -->
|
||||
<string name="nag_minutes_fmt">%1$d MINUTE[S]</string>
|
||||
<string name="nag_hours_fmt">%1$d HOUR[S]</string>
|
||||
<string name="nag_days_fmt">%1$d DAY[S]</string>
|
||||
<plurals name="nag_minutes_fmt">
|
||||
<item quantity="other">%1$d MINUTE[S]</item>
|
||||
</plurals>
|
||||
<plurals name="nag_hours_fmt">
|
||||
<item quantity="other">%1$d HOUR[S]</item>
|
||||
</plurals>
|
||||
<plurals name="nag_days_fmt">
|
||||
<item quantity="other">%1$d DAY[S]</item>
|
||||
</plurals>
|
||||
<string name="nag_body_fmt">%1$s MOVED MORE THAN %2$s AGO.</string>
|
||||
<!-- above is inserted in this the last time I warn -->
|
||||
<string name="nag_warn_last_fmt">LAST WARNING: %1$s</string>
|
||||
|
@ -1918,11 +1966,17 @@
|
|||
<string name="prev_player">YOUR OPPONENT</string>
|
||||
<!-- formatting for last move summary in notifications -->
|
||||
<string name="lmi_pass_fmt">%1$s PASSED (0 POINTS)</string>
|
||||
<string name="lmi_move_fmt">%1$s PLAYED %2$s FOR %3$d POINTS</string>
|
||||
<string name="lmi_trade_fmt">%1$s TRADED %2$d TILES</string>
|
||||
<plurals name="lmi_move_fmt">
|
||||
<item quantity="other">%1$s PLAYED %2$s FOR %3$d POINTS</item>
|
||||
</plurals>
|
||||
<plurals name="lmi_trade_fmt">
|
||||
<item quantity="other">%1$s TRADED %2$d TILES</item>
|
||||
</plurals>
|
||||
<string name="lmi_phony_fmt">%1$s LOST A TURN</string>
|
||||
<string name="lmi_tiles_fmt">TILES ASSIGNED TO %1$s</string>
|
||||
<string name="bt_err_count_fmt">%1$d BLUETOOTH ERRORS SO FAR</string>
|
||||
<plurals name="bt_err_count_fmt">
|
||||
<item quantity="other">%1$d BLUETOOTH ERRORS SO FAR</item>
|
||||
</plurals>
|
||||
<string name="bt_no_devs">YOU CURRENTLY HAVE NO PAIRED BLUETOOTH
|
||||
DEVICES. WOULD YOU LIKE TO OPEN THE ANDROID SETTINGS PANEL TO ADD
|
||||
ONE OR MORE?\n\n(YOU MAY ALSO NEED TO OPEN IT ON THE DEVICE YOU
|
||||
|
@ -1946,7 +2000,9 @@
|
|||
INVITE OTHER PLAYERS WHEN IT IS OPEN.)</string>
|
||||
<string name="use_defaults">USE DEFAULTS</string>
|
||||
<string name="nplayers_prompt">NUMBER ON THIS DEVICE</string>
|
||||
<string name="nplayers_fmt">%1$d PLAYER[S]</string>
|
||||
<plurals name="nplayers_fmt">
|
||||
<item quantity="other">%1$d PLAYER[S]</item>
|
||||
</plurals>
|
||||
<string name="err_dup_invite_fmt">DUPLICATE INVITATION REJECTED:
|
||||
DEVICE \"%1$s\" HAS ALREADY ACCEPTED AN INVITATION TO THIS
|
||||
GAME.</string>
|
||||
|
|
|
@ -75,7 +75,8 @@ public class BTInviteDelegate extends InviteDelegate {
|
|||
m_counts = new HashMap<String, Integer>();
|
||||
|
||||
String msg = getString( R.string.bt_pick_addall_button );
|
||||
msg = getString( R.string.invite_bt_desc_fmt, m_nMissing, msg );
|
||||
msg = getQuantityString( R.plurals.invite_bt_desc_fmt, m_nMissing,
|
||||
m_nMissing, msg );
|
||||
super.init( R.id.button_invite, R.id.button_rescan,
|
||||
R.id.button_clear, R.id.invite_desc, msg );
|
||||
BTService.clearDevices( m_activity, null ); // will return names
|
||||
|
@ -201,7 +202,7 @@ public class BTInviteDelegate extends InviteDelegate {
|
|||
new ArrayAdapter<String>( m_activity, android.R.layout
|
||||
.simple_spinner_item );
|
||||
for ( int ii = 1; ii <= m_nMissing; ++ii ) {
|
||||
String str = getString( R.string.nplayers_fmt, ii );
|
||||
String str = getQuantityString( R.plurals.nplayers_fmt, ii, ii );
|
||||
adapter.add( str );
|
||||
}
|
||||
spinner.setAdapter( adapter );
|
||||
|
|
|
@ -483,7 +483,7 @@ public class BoardDelegate extends DelegateBase
|
|||
ad.getButton( AlertDialog.BUTTON_POSITIVE ).setVisibility( View.GONE );
|
||||
} else {
|
||||
titleID = R.string.waiting_title;
|
||||
message = getString( R.string.invite_msg_fmt, m_nMissing );
|
||||
message = getQuantityString( R.plurals.invite_msg_fmt, m_nMissing, m_nMissing );
|
||||
|
||||
String ps = null;
|
||||
if ( m_nMissing > 1 ) {
|
||||
|
@ -1385,8 +1385,8 @@ public class BoardDelegate extends DelegateBase
|
|||
showDialog( DlgID.DLG_INVITE );
|
||||
invalidateOptionsMenuIf();
|
||||
} else {
|
||||
toastStr = getString( R.string.msg_relay_waiting_fmt, devOrder,
|
||||
room, nMissing );
|
||||
toastStr = getQuantityString( R.plurals.msg_relay_waiting_fmt, nMissing,
|
||||
devOrder, room, nMissing );
|
||||
if ( devOrder == 1 ) {
|
||||
naMsg = R.string.not_again_conndfirst;
|
||||
naKey = R.string.key_notagain_conndfirst;
|
||||
|
@ -1631,8 +1631,9 @@ public class BoardDelegate extends DelegateBase
|
|||
public boolean confirmTrade( String[] tiles )
|
||||
{
|
||||
m_dlgTitle = R.string.info_title;
|
||||
m_dlgBytes = getString( R.string.query_trade_fmt, tiles.length,
|
||||
TextUtils.join( ", ", tiles ) );
|
||||
m_dlgBytes =
|
||||
getQuantityString( R.plurals.query_trade_fmt, tiles.length,
|
||||
tiles.length, TextUtils.join( ", ", tiles ));
|
||||
return 0 != waitBlockingDialog( DlgID.QUERY_REQUEST_BLK, 0 );
|
||||
}
|
||||
|
||||
|
|
|
@ -88,12 +88,12 @@ public class DictBrowseDelegate extends ListDelegateBase
|
|||
XwJNI.dict_iter_setMinMax( m_dictClosure, m_browseState.m_minShown,
|
||||
m_browseState.m_maxShown );
|
||||
m_nWords = XwJNI.dict_iter_wordCount( m_dictClosure );
|
||||
|
||||
|
||||
int format = m_browseState.m_minShown == m_browseState.m_maxShown ?
|
||||
R.string.dict_browse_title1_fmt : R.string.dict_browse_title_fmt;
|
||||
setTitle( getString( format,
|
||||
m_name, m_nWords, m_browseState.m_minShown,
|
||||
m_browseState.m_maxShown ));
|
||||
R.plurals.dict_browse_title1_fmt : R.plurals.dict_browse_title_fmt;
|
||||
setTitle( getQuantityString( format, m_nWords, m_name, m_nWords,
|
||||
m_browseState.m_minShown,
|
||||
m_browseState.m_maxShown ));
|
||||
|
||||
String desc = XwJNI.dict_iter_getDesc( m_dictClosure );
|
||||
if ( null != desc ) {
|
||||
|
|
|
@ -187,8 +187,8 @@ public class DictsDelegate extends ListDelegateBase
|
|||
int langCode = DictLangCache.getLangLangCode( m_context,
|
||||
langName );
|
||||
boolean expanded = ! m_closedLangs.contains( langName );
|
||||
String name = getString( R.string.lang_name_fmt, langName,
|
||||
info.m_numDicts );
|
||||
String name = getQuantityString( R.plurals.lang_name_fmt, info.m_numDicts,
|
||||
langName, info.m_numDicts );
|
||||
result = ListGroup.make( m_context, convertView,
|
||||
DictsDelegate.this, groupPos, name,
|
||||
expanded );
|
||||
|
|
|
@ -457,8 +457,8 @@ public class DlgDelegate {
|
|||
boolean asToast = true;
|
||||
switch( event ) {
|
||||
case MESSAGE_RESEND:
|
||||
msg = getString( R.string.bt_resend_fmt, (String)args[0],
|
||||
(Long)args[1], (Integer)args[2] );
|
||||
msg = getQuantityString( R.plurals.bt_resend_fmt, 1, (String)args[0],
|
||||
(Long)args[1], (Integer)args[2] );
|
||||
break;
|
||||
case MESSAGE_FAILOUT:
|
||||
msg = getString( R.string.bt_fail_fmt, (String)args[0] );
|
||||
|
@ -779,4 +779,9 @@ public class DlgDelegate {
|
|||
{
|
||||
return m_dlgt.getString( id, params );
|
||||
}
|
||||
|
||||
private String getQuantityString( int id, int quantity, Object... params )
|
||||
{
|
||||
return m_dlgt.getQuantityString( id, quantity, params );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1163,7 +1163,11 @@ public class GameUtils {
|
|||
{
|
||||
if ( m_showUI ) {
|
||||
int nSent = null == m_sink ? 0 : m_sink.numSent();
|
||||
DbgUtils.showf( m_context, R.string.resend_finished_fmt, nSent );
|
||||
String msg =
|
||||
LocUtils.getQuantityString( m_context,
|
||||
R.plurals.resend_finished_fmt,
|
||||
nSent, nSent );
|
||||
DbgUtils.showf( m_context, msg );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -154,8 +154,11 @@ public class GamesListDelegate extends ListDelegateBase
|
|||
GamesListDelegate.this );
|
||||
updateGroupPct( group, ggi );
|
||||
|
||||
String name = LocUtils.getString( m_activity, R.string.group_name_fmt,
|
||||
ggi.m_name, ggi.m_count );
|
||||
String name =
|
||||
LocUtils.getQuantityString( m_activity,
|
||||
R.plurals.group_name_fmt,
|
||||
ggi.m_count, ggi.m_name,
|
||||
ggi.m_count );
|
||||
group.setText( name );
|
||||
group.setSelected( getSelected( group ) );
|
||||
result = group;
|
||||
|
@ -1497,16 +1500,16 @@ public class GamesListDelegate extends ListDelegateBase
|
|||
} else {
|
||||
long[] groupIDs = getSelGroupIDs();
|
||||
Assert.assertTrue( 0 < groupIDs.length );
|
||||
msg = getString( R.string.groups_confirm_del_fmt,
|
||||
groupIDs.length );
|
||||
msg = getQuantityString( R.plurals.groups_confirm_del_fmt,
|
||||
groupIDs.length, groupIDs.length );
|
||||
|
||||
int nGames = 0;
|
||||
for ( long tmp : groupIDs ) {
|
||||
nGames += m_adapter.getChildrenCount( tmp );
|
||||
}
|
||||
if ( 0 < nGames ) {
|
||||
msg += getString( R.string.groups_confirm_del_games_fmt,
|
||||
nGames );
|
||||
msg += getQuantityString( R.plurals.groups_confirm_del_games_fmt,
|
||||
nGames, nGames );
|
||||
}
|
||||
showConfirmThen( msg, Action.DELETE_GROUPS, groupIDs );
|
||||
}
|
||||
|
@ -2112,7 +2115,8 @@ public class GamesListDelegate extends ListDelegateBase
|
|||
|
||||
private void doConfirmReset( long[] rowIDs )
|
||||
{
|
||||
String msg = getString( R.string.confirm_reset_fmt, rowIDs.length );
|
||||
String msg = getQuantityString( R.plurals.confirm_reset_fmt,
|
||||
rowIDs.length, rowIDs.length );
|
||||
showConfirmThen( msg, R.string.button_reset, Action.RESET_GAMES,
|
||||
rowIDs );
|
||||
}
|
||||
|
|
|
@ -49,9 +49,9 @@ public class NagTurnReceiver extends BroadcastReceiver {
|
|||
};
|
||||
|
||||
private static final int[][] s_fmtData = {
|
||||
{ 60*60*24, R.string.nag_days_fmt },
|
||||
{ 60*60, R.string.nag_hours_fmt },
|
||||
{ 60, R.string.nag_minutes_fmt },
|
||||
{ 60*60*24, R.plurals.nag_days_fmt },
|
||||
{ 60*60, R.plurals.nag_hours_fmt },
|
||||
{ 60, R.plurals.nag_minutes_fmt },
|
||||
};
|
||||
|
||||
@Override
|
||||
|
@ -183,7 +183,7 @@ public class NagTurnReceiver extends BroadcastReceiver {
|
|||
for ( int[] datum : s_fmtData ) {
|
||||
long val = seconds / datum[0];
|
||||
if ( 1 <= val ) {
|
||||
results.add( LocUtils.getString( context, datum[1], val ) );
|
||||
results.add( LocUtils.getQuantityString( context, datum[1], (int)val, val ) );
|
||||
seconds %= datum[0];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -82,7 +82,8 @@ public class SMSInviteDelegate extends InviteDelegate {
|
|||
protected void init( Bundle savedInstanceState )
|
||||
{
|
||||
String msg = getString( R.string.button_invite );
|
||||
msg = getString( R.string.invite_sms_desc_fmt, m_nMissing, msg );
|
||||
msg = getQuantityString( R.plurals.invite_sms_desc_fmt, m_nMissing,
|
||||
m_nMissing, msg );
|
||||
super.init( R.id.button_invite, R.id.button_add, R.id.button_clear,
|
||||
R.id.invite_desc, msg );
|
||||
|
||||
|
@ -439,7 +440,7 @@ public class SMSInviteDelegate extends InviteDelegate {
|
|||
new ArrayAdapter<String>( m_activity, android.R.layout
|
||||
.simple_spinner_item );
|
||||
for ( int ii = 1; ii <= m_nMissing; ++ii ) {
|
||||
String str = getString( R.string.nplayers_fmt, ii );
|
||||
String str = getQuantityString( R.plurals.nplayers_fmt, ii, ii );
|
||||
adapter.add( str );
|
||||
}
|
||||
spinner.setAdapter( adapter );
|
||||
|
|
|
@ -123,8 +123,8 @@ public class StudyListDelegate extends ListDelegateBase
|
|||
Action.SL_COPY_ACTION );
|
||||
break;
|
||||
case R.id.slmenu_clear_sel:
|
||||
String msg = getString( R.string.confirm_studylist_clear_fmt,
|
||||
m_checkeds.size() );
|
||||
String msg = getQuantityString( R.plurals.confirm_studylist_clear_fmt,
|
||||
m_checkeds.size(), m_checkeds.size() );
|
||||
showConfirmThen( msg, Action.SL_CLEAR_ACTION );
|
||||
break;
|
||||
|
||||
|
@ -171,8 +171,8 @@ public class StudyListDelegate extends ListDelegateBase
|
|||
getSystemService( Context.CLIPBOARD_SERVICE );
|
||||
clipboard.setText( TextUtils.join( "\n", selWords ) );
|
||||
|
||||
String msg = getString( R.string.paste_done_fmt,
|
||||
selWords.length );
|
||||
String msg = getQuantityString( R.plurals.paste_done_fmt,
|
||||
selWords.length, selWords.length );
|
||||
showToast( msg );
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -412,9 +412,10 @@ public class UpdateCheckReceiver extends BroadcastReceiver {
|
|||
int nAdded = LocUtils.addXlations( m_context, data );
|
||||
if ( 0 < nAdded ) {
|
||||
gotOne = true;
|
||||
String msg = LocUtils.getString( m_context, R.string
|
||||
.new_xlations_fmt,
|
||||
nAdded );
|
||||
String msg =
|
||||
LocUtils.getQuantityString( m_context, R.plurals
|
||||
.new_xlations_fmt,
|
||||
nAdded, nAdded );
|
||||
Utils.showToast( m_context, msg );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -53,13 +53,14 @@ public class LastMoveInfo {
|
|||
result = LocUtils.getString( context, R.string.lmi_pass_fmt,
|
||||
name );
|
||||
} else {
|
||||
result = LocUtils.getString( context, R.string.lmi_move_fmt,
|
||||
name, word, score );
|
||||
result = LocUtils.getQuantityString( context, R.plurals.lmi_move_fmt,
|
||||
score, name, word, score );
|
||||
}
|
||||
break;
|
||||
case TRADE_TYPE:
|
||||
result = LocUtils.getString( context, R.string.lmi_trade_fmt,
|
||||
name, nTiles );
|
||||
result = LocUtils
|
||||
.getQuantityString( context, R.plurals.lmi_trade_fmt,
|
||||
nTiles, name, nTiles );
|
||||
break;
|
||||
case PHONY_TYPE:
|
||||
result = LocUtils.getString( context, R.string.lmi_phony_fmt,
|
||||
|
|
|
@ -98,6 +98,7 @@ public interface UtilCtxt {
|
|||
static final int STR_WINNER = 22;
|
||||
|
||||
String getUserString( int stringCode );
|
||||
String getUserQuantityString( int stringCode, int quantity );
|
||||
|
||||
static final int QUERY_COMMIT_TURN = 0;
|
||||
static final int QUERY_ROBOT_TRADE = 1;
|
||||
|
|
|
@ -146,9 +146,6 @@ public class UtilCtxtImpl implements UtilCtxt {
|
|||
{
|
||||
int id = 0;
|
||||
switch( stringCode ) {
|
||||
case UtilCtxt.STRD_ROBOT_TRADED:
|
||||
id = R.string.strd_robot_traded_fmt;
|
||||
break;
|
||||
case UtilCtxt.STR_ROBOT_MOVED:
|
||||
id = R.string.str_robot_moved_fmt;
|
||||
break;
|
||||
|
@ -200,12 +197,6 @@ public class UtilCtxtImpl implements UtilCtxt {
|
|||
case UtilCtxt.STRD_TURN_SCORE:
|
||||
id = R.string.strd_turn_score_fmt;
|
||||
break;
|
||||
case UtilCtxt.STRD_REMAINS_HEADER:
|
||||
id = R.string.strd_remains_header_fmt;
|
||||
break;
|
||||
case UtilCtxt.STRD_REMAINS_EXPL:
|
||||
id = R.string.strd_remains_expl_fmt;
|
||||
break;
|
||||
case UtilCtxt.STR_RESIGNED:
|
||||
id = R.string.str_resigned;
|
||||
break;
|
||||
|
@ -217,12 +208,30 @@ public class UtilCtxtImpl implements UtilCtxt {
|
|||
DbgUtils.logf( "no such stringCode: %d", stringCode );
|
||||
}
|
||||
|
||||
String result;
|
||||
if ( 0 == id ) {
|
||||
result = "";
|
||||
} else {
|
||||
result = LocUtils.getString( m_context, id );
|
||||
String result = (0 == id) ? "" : LocUtils.getString( m_context, id );
|
||||
return result;
|
||||
}
|
||||
|
||||
public String getUserQuantityString( int stringCode, int quantity )
|
||||
{
|
||||
int pluralsId = 0;
|
||||
switch ( stringCode ) {
|
||||
case UtilCtxt.STRD_ROBOT_TRADED:
|
||||
pluralsId = R.plurals.strd_robot_traded_fmt;
|
||||
break;
|
||||
case UtilCtxt.STRD_REMAINS_HEADER:
|
||||
pluralsId = R.plurals.strd_remains_header_fmt;
|
||||
break;
|
||||
case UtilCtxt.STRD_REMAINS_EXPL:
|
||||
pluralsId = R.plurals.strd_remains_expl_fmt;
|
||||
break;
|
||||
}
|
||||
|
||||
String result = "";
|
||||
if ( 0 != pluralsId ) {
|
||||
result = LocUtils.getQuantityString( m_context, pluralsId, quantity );
|
||||
}
|
||||
DbgUtils.logf( "UtilCtxtImpl.getUserQuantityString() => %s", result );
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -225,6 +225,16 @@ public class LocUtils {
|
|||
return result;
|
||||
}
|
||||
|
||||
public static String getQuantityString( Context context, int id,
|
||||
int quantity )
|
||||
{
|
||||
DbgUtils.logf( "getQuantityString(%d): punting on locutils stuff for"
|
||||
+ " now. FIXME", quantity );
|
||||
String result = context.getResources().getQuantityString( id, quantity );
|
||||
DbgUtils.logf( "LocUtils.getQuantityString() => %s", result );
|
||||
return result;
|
||||
}
|
||||
|
||||
public static String getQuantityString( Context context, int id,
|
||||
int quantity, Object... params )
|
||||
{
|
||||
|
@ -232,6 +242,7 @@ public class LocUtils {
|
|||
+ " now. FIXME", quantity );
|
||||
String result = context.getResources()
|
||||
.getQuantityString( id, quantity, params );
|
||||
DbgUtils.logf( "LocUtils.getQuantityString() => %s", result );
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -907,7 +907,8 @@ makeRobotMove( ServerCtxt* server )
|
|||
|
||||
if ( !!stream ) {
|
||||
XP_UCHAR buf[64];
|
||||
str = util_getUserString(util, STRD_ROBOT_TRADED);
|
||||
str = util_getUserQuantityString( util, STRD_ROBOT_TRADED,
|
||||
MAX_TRAY_TILES );
|
||||
XP_SNPRINTF( buf, sizeof(buf), str, MAX_TRAY_TILES );
|
||||
|
||||
stream_catString( stream, buf );
|
||||
|
@ -2138,8 +2139,9 @@ makeTradeReportIf( ServerCtxt* server, const TrayTileSet* tradedTiles )
|
|||
XWStreamCtxt* stream = NULL;
|
||||
if ( server->nv.showRobotScores ) {
|
||||
XP_UCHAR tradeBuf[64];
|
||||
const XP_UCHAR* tradeStr = util_getUserString( server->vol.util,
|
||||
STRD_ROBOT_TRADED );
|
||||
const XP_UCHAR* tradeStr =
|
||||
util_getUserQuantityString( server->vol.util, STRD_ROBOT_TRADED,
|
||||
tradedTiles->nTiles );
|
||||
XP_SNPRINTF( tradeBuf, sizeof(tradeBuf), tradeStr,
|
||||
tradedTiles->nTiles );
|
||||
stream = mkServerStream( server );
|
||||
|
@ -2971,8 +2973,9 @@ server_formatRemainingTiles( ServerCtxt* server, XWStreamCtxt* stream,
|
|||
|
||||
XP_ASSERT( !!server->vol.model );
|
||||
|
||||
const XP_UCHAR* fmt = util_getUserString( server->vol.util,
|
||||
STRD_REMAINS_HEADER );
|
||||
const XP_UCHAR* fmt = util_getUserQuantityString( server->vol.util,
|
||||
STRD_REMAINS_HEADER,
|
||||
nLeft );
|
||||
XP_SNPRINTF( buf, sizeof(buf), fmt, nLeft );
|
||||
stream_catString( stream, buf );
|
||||
stream_catString( stream, "\n\n" );
|
||||
|
@ -3010,7 +3013,8 @@ server_formatRemainingTiles( ServerCtxt* server, XWStreamCtxt* stream,
|
|||
XP_ASSERT( offset < sizeof(cntsBuf) );
|
||||
}
|
||||
|
||||
fmt = util_getUserString( server->vol.util, STRD_REMAINS_EXPL );
|
||||
fmt = util_getUserQuantityString( server->vol.util, STRD_REMAINS_EXPL,
|
||||
nLeft );
|
||||
XP_SNPRINTF( buf, sizeof(buf), fmt, nLeft );
|
||||
stream_catString( stream, buf );
|
||||
|
||||
|
|
|
@ -161,6 +161,9 @@ typedef struct UtilVtable {
|
|||
|
||||
const XP_UCHAR* (*m_util_getUserString)( XW_UtilCtxt* uc,
|
||||
XP_U16 stringCode );
|
||||
const XP_UCHAR* (*m_util_getUserQuantityString)( XW_UtilCtxt* uc,
|
||||
XP_U16 stringCode,
|
||||
XP_U16 quantity );
|
||||
|
||||
XP_Bool (*m_util_warnIllegalWord)( XW_UtilCtxt* uc, BadWordInfo* bwi,
|
||||
XP_U16 turn, XP_Bool turnLost );
|
||||
|
@ -301,6 +304,8 @@ struct XW_UtilCtxt {
|
|||
|
||||
#define util_getUserString( uc, c ) \
|
||||
(uc)->vtable->m_util_getUserString((uc),(c))
|
||||
#define util_getUserQuantityString( uc, c, q ) \
|
||||
(uc)->vtable->m_util_getUserQuantityString((uc),(c),(q))
|
||||
|
||||
#define util_warnIllegalWord( uc, w, p, b ) \
|
||||
(uc)->vtable->m_util_warnIllegalWord((uc),(w),(p),(b))
|
||||
|
|
|
@ -339,6 +339,13 @@ linux_util_getUserString( XW_UtilCtxt* XP_UNUSED(uc), XP_U16 code )
|
|||
}
|
||||
} /* linux_util_getUserString */
|
||||
|
||||
static const XP_UCHAR*
|
||||
linux_util_getUserQuantityString( XW_UtilCtxt* uc, XP_U16 code,
|
||||
XP_U16 XP_UNUSED(quantity) )
|
||||
{
|
||||
return linux_util_getUserString( uc, code );
|
||||
}
|
||||
|
||||
#ifdef XWFEATURE_DEVID
|
||||
static const XP_UCHAR*
|
||||
linux_util_getDevID( XW_UtilCtxt* uc, DevIDType* typ )
|
||||
|
@ -409,6 +416,7 @@ linux_util_vt_init( MPFORMAL XW_UtilCtxt* util )
|
|||
util->vtable->m_util_getSquareBonus = linux_util_getSquareBonus;
|
||||
util->vtable->m_util_getCurSeconds = linux_util_getCurSeconds;
|
||||
util->vtable->m_util_getUserString = linux_util_getUserString;
|
||||
util->vtable->m_util_getUserQuantityString = linux_util_getUserQuantityString;
|
||||
#ifdef XWFEATURE_DEVID
|
||||
util->vtable->m_util_getDevID = linux_util_getDevID;
|
||||
util->vtable->m_util_deviceRegistered = linux_util_deviceRegistered;
|
||||
|
|
Loading…
Add table
Reference in a new issue