diff --git a/xwords4/android/XWords4/res_src/values-ba_CK/strings.xml b/xwords4/android/XWords4/res_src/values-ba_CK/strings.xml
index c8f69aaf1..bf48e8a49 100644
--- a/xwords4/android/XWords4/res_src/values-ba_CK/strings.xml
+++ b/xwords4/android/XWords4/res_src/values-ba_CK/strings.xml
@@ -33,20 +33,20 @@
three. -->
- "\%1$s"\
+ \"%1$s\"
moor rof derugifnoC
- "\%1$s"\
+ \"%1$s\"
moor ni sreyalp rof gnitiaW
- "\%1$s"\ moor ni yalp ni emaG
+ \"%1$s\" moor ni yalp ni emaG
- "\%1$s"\ moor ni revo emaG
+ \"%1$s\" moor ni revo emaG
revo emaG
- :snoitca "\%1$s"\
+ :snoitca \"%1$s\"
…sgnittes emaG
@@ -124,7 +124,7 @@ aiv tcennoc taht dnuof semag oN
.sgnittes emas eht lla htiw ypoc yalp-ot-ydaer
-a rof "\morf weN"\ esU .deipoc eb tonnac yaler eht ot
+a rof \"morf weN\" esU .deipoc eb tonnac yaler eht ot
detcennoc ydaerla evah taht semaG
emag emaneR
@@ -136,7 +136,7 @@ eteled ot tnaw uoy erus uoy erA
).noitamrofni
-noitcennoc yna dna sevom lla sesare gnitteseR(n\n\?]s[emag detceles
+noitcennoc yna dna sevom lla sesare gnitteseR(\n\n?]s[emag detceles
%1$d eht teser ot tnaw uoy erus uoy erA
.ti ecalper
nac taht dellatsni tsildrow %1$s rehtona si ereht tub ,ti gnisu si
-)tsael ta( emag enO0200u\
+)tsael ta( emag enO\u0020
)tsildrow ni ton sdrow(
-"\seinohp"\ eldnah ot woH
+\"seinohp\" eldnah ot woH
@@ -334,7 +334,7 @@ rof dnuof smoor cilbup oN
seinohp wollasiD
- .tsoH sa detrats emag a rof "\etomeR"\ dekram eb
+ .tsoH sa detrats emag a rof \"etomeR\" dekram eb
tsum reyalp eno tsael tA
@@ -447,7 +447,7 @@ ta eb tsum ereht emag ecived-itlum a nI
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". -->
- ?ydaerla t'\nevah uoy
+ ?ydaerla t\'nevah uoy
gnimussa -- nioj ot enoemos etivni ot ekil uoy dluoW .]s[reyalp
etomer %1$d gnissim si emag sihT
).elpoep ynam taht
ot noitativni ruoy sserdda ot erus eB .sreyalp etomer
-elpitlum gnitcepxe era uoY(0200u\
+elpitlum gnitcepxe era uoY(\u0020
@@ -471,12 +471,12 @@ elpitlum gnitcepxe era uoY(0200u\
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. -->
- .]s[reyalp %3$d rof gnitiaW ."\%2$s"\ moor
+ .]s[reyalp %3$d rof gnitiaW .\"%2$s\" moor
ni yaler ot detcennoc %1$d eciveD
- ."\%1$s"\
+ .\"%1$s\"
moor ni ereh era sreyalp llA
@@ -510,7 +510,7 @@ ni dnuof ton %1$s ]s[droW
?evom siht
-tpecca ot tnaw llits uoy oD0200u\
+tpecca ot tnaw llits uoy oD\u0020
.tsol nruT
@@ -575,12 +575,12 @@ tpecca ot tnaw llits uoy oD0200u\
############################################################
-->
- 0200u\:evom siht edam tobor ehT
+ \u0020:evom siht edam tobor ehT
.selit %1$d degnahcxe
- n\:seulav/stnuoc %1$s
+ \n:seulav/stnuoc %1$s
]selit gniniamer lla[ %1$d +
@@ -589,20 +589,20 @@ tpecca ot tnaw llits uoy oD0200u\
%1$s :selit weN
- n\%1$d :erocs evitalumuC
+ \n%1$d :erocs evitalumuC
- 0200u\:evom
+ \u0020:evom
siht edam %1$s reyalp etomeR
]emit[ %1$d -
- n\)ssorca %1$s morf( evom
+ \n)ssorca %1$s morf( evom
- n\)nwod %1$s morf( evom
+ \n)nwod %1$s morf( evom
- n\%1$s :trats ta kcaR
+ \n%1$s :trats ta kcaR
.%2$s rof %1$s degnahcxE
- n\?evom tnerruc eht timmoC
+ \n?evom tnerruc eht timmoC
)etomer( %1$s
- 0200u\.sv0200u\
+ \u0020.sv\u0020
- n\05 :selit lla gnisu rof sunoB
+ \n05 :selit lla gnisu rof sunoB
- n\%1$d :nrut rof erocS
+ \n%1$d :nrut rof erocS
.loop ni tfel selit %1$d
- n\:]s[yart
+ \n:]s[yart
lla dna loop ni tfel selit %1$d
@@ -757,7 +757,7 @@ gnillortnoc sgnitteS
possible values -->
gnitsil emag ni edulcnI
- E300u\gnihtoNc300u\
+ \u003EgnihtoN\u003c
1#egaugnal emaG
@@ -894,7 +894,7 @@ selit wen revenehw skcar troS
is is temporarily unable to play. -->
nrut-fo-tuo selit weiV
- selit s'\reyalp taht
+ selit s\'reyalp taht
swohs eman draoberocs no gnippaT
- ."\tsrif erugifnoC"\
-sserp ,sgnittes emag egnahc ro sreyalp dda oT ."\won
-yalP"\ sserp tsuj ).cte ,%1$s ni( sgnittes tluafed ruoy htiw
+ .\"tsrif erugifnoC\"
+sserp ,sgnittes emag egnahc ro sreyalp dda oT .\"won
+yalP\" sserp tsuj ).cte ,%1$s ni( sgnittes tluafed ruoy htiw
dna tobor a tsniaga yalp oT .ecived siht no eb lliw sreyalp
lla erehw emag wen a etaerC
).retal setivni
-dnes ot ecnahc a evah ll'\uoY( .emag dekrowten ruoy trats uoy
-erofeb stluafed eht fo emos egnahc ot "\tsrif erugifnoC"\ sserp
+dnes ot ecnahc a evah ll\'uoY( .emag dekrowten ruoy trats uoy
+erofeb stluafed eht fo emos egnahc ot \"tsrif erugifnoC\" sserp
rO .ti nioj ot dneirf a etivni uoy spleh dna emag ecived-owt
-a strats nottub "\won etivnI"\ ehT .krowten eht revo deyalp
+a strats nottub \"won etivnI\" ehT .krowten eht revo deyalp
eb lliw taht emag a etaerC
.ffo denrut
-neeb s'\ti taht ro ,ti troppus t'\nseod ecived ruoy taht naem
+neeb s\'ti taht ro ,ti troppus t\'nseod ecived ruoy taht naem
yam sihT .elbaliava ton si htooteulB
.emag eht gninnigeb erofeb meht egnahc uoy stel
@@ -1012,7 +1012,7 @@ deyalp eb lliw taht emag a etaerC
ro )gnitxet( SMS gnisu noitativni dneS
?liame aiv ro )WEN – gnimaeb
diordnA( CFN gnisu noitativni dneS
- ?liame aiv ro )WEN – "\gnimaeb diordnA"\( CFN ro )gnitxet(
+ ?liame aiv ro )WEN – \"gnimaeb diordnA\"( CFN ro )gnitxet(
SMS gnisu noitativni dneS
- )%1$s mooR( sdrowssorC yalp s'\teL
+ )%1$s mooR( sdrowssorC yalp s\'teL
) %1$s :knil lluf(
-E300u\\\ rbc300u\
-E300u\\\ rbc300u\
+\u003E\\ rb\u003c
+\u003E\\ rb\u003c
.emag siht nioj dna noitativni
ym tpecca ot )tnemhcatta eht nepo ,dellatsni sdrowssorC evah
-ydaerla uoy fi ,ro ,woleb knil lluf eht pat ro( E300u\a/c300u\ereh
-paTE300u\"\%1$s"\=ferh ac300u\
+ydaerla uoy fi ,ro ,woleb knil lluf eht pat ro( \u003Ea/\u003cereh
+paT\u003E\"%1$s\"=ferh a\u003c
. %1$s
-:emag siht nioJ !sdrowssorC yalp s'\teL
+:emag siht nioJ !sdrowssorC yalp s\'teL
yrotsih egassem %1$s
- 0200u\:eM
+ \u0020:eM
- 0200u\:em toN
+ \u0020:em toN
dneS
@@ -1118,7 +1118,7 @@ xob tsrif eht ni eman moor eht retnE •
)enohp rep eno( xob dnoces
eht ni seman reyalp retne ,yllanoitpO •
.emag eht trats ot senohp
-htob no nottub "\emag yalP"\ eht sserP •
+htob no nottub \"emag yalP\" eht sserP •
eman reyalP
@@ -1156,7 +1156,7 @@ tcatnoc tsum seceip weN
!nrut ruoy
-ton s'\ti ;taht od t'\nac uoY
+ton s\'ti ;taht od t\'nac uoY
!selit
-s'\tobor eht ta gnikeep oN
+s\'tobor eht ta gnikeep oN
- !selit '\sreyalp
+ !selit \'sreyalp
etomer ta gnikeep oN
.enodnu
-eb t'\nac tnemngissa eliT
+eb t\'nac tnemngissa eliT
).elbaliava regnol on si
-taht drac lanretxe na no s'\ti snaem siht yllausU( .deraeppasid
+taht drac lanretxe na no s\'ti snaem siht yllausU( .deraeppasid
sah gnisu si emag siht tsildrow A
emag esolC
@@ -1229,7 +1229,7 @@ sah gnisu si emag siht tsildrow A
%2$ -->
).elbaliava
regnol on si taht drac lanretxe na no derots ro deteled neeb
-evah yam lanigiro ehT( ."\%1$s"\ emag nepo nac uoy erofeb tsildrow
+evah yam lanigiro ehT( .\"%1$s\" emag nepo nac uoy erofeb tsildrow
%2$s tnemecalper a daolnwod ot deen uoY
daolnwoD
- :"\%1$s"\ rof drowssaP
+ :\"%1$s\" rof drowssaP
%1$d emaG
@@ -1271,7 +1271,7 @@ esuaceb "\%1$s"\ emag nepo ot elbanU
device, and the body that appears when you pull the notifications
down. -->
edam sevoM
- "\%1$s"\ emag ni ytivitcA
+ \"%1$s\" emag ni ytivitcA
- n\n\.degnahcxe
-eb ot tes eht morf meht evomer/dda ot selit paTn\n\.edom
+ \n\n.degnahcxe
+eb ot tes eht morf meht evomer/dda ot selit paT\n\n.edom
egnahcxe-elit gniretne era uoY
.edom egnahcxe tixe ro nrut ruoy timmoc
ot snottub eht esU
@@ -1420,7 +1420,7 @@ eht rehtehw segnahc nottub sihT
the same thing. -->
.evom a timmoc
ot yaw tseisae eht si kcar eht fo dne thgir eht ta sraeppa
-taht retnuoc "\stp"\ eht gnippaT
+taht retnuoc \"stp\" eht gnippaT
.tratser a diova ot segnahc dracsid ot
@@ -1466,13 +1466,13 @@ dnoces a ;noitatneiro sti egnahc ot ecno worra eht paT ).stniop
ti noitcerid eht ni erauqs eno ti gnivom( worra eht ecalper
lliw pat uoy selit kcaR .worra draob eht ecalp ot erauqs ytpme
na pat nac uoy ro ,draob eht dna kcar eht neewteb selit gard
-nac uoYn\:draob eht ot selit gnivoM
+nac uoY\n:draob eht ot selit gnivoM
.evom
-tnecer tsom s'\reyalp taht tuoba sliated teg ot draoberocs eht
-ni eman a no regnif ruoy dloHn\n\.draoberocs eht ni egral nward si
+tnecer tsom s\'reyalp taht tuoba sliated teg ot draoberocs eht
+ni eman a no regnif ruoy dloH\n\n.draoberocs eht ni egral nward si
si ti nrut esohw reyalp ehT
.etalpmet a sa
@@ -1493,9 +1493,9 @@ emag yalp-ot-ydaer wen a etaerC
emocleW
- ).sgnitteS fo noitces "\tluafed emag
-weN"\ eht ni retal ti egnahc nac uoY( .semag wen gnitaerc nehw
-desu eb lliw tI .ereh eman ruoy retne ot eerf leeFn\n\!sdrowssorC
+ ).sgnitteS fo noitces \"tluafed emag
+weN\" eht ni retal ti egnahc nac uoY( .semag wen gnitaerc nehw
+desu eb lliw tI .ereh eman ruoy retne ot eerf leeF\n\n!sdrowssorC
gnillatsni rof sknahT
em rof kciP
- )%1$s :raf os(n\rekcip eliT
+ )%1$s :raf os(\nrekcip eliT
pu-ecaf selit kciP
@@ -1576,7 +1576,7 @@ eht pu kool uoy stel nottub sihT
.%2$s
htiw strats %1$s ni drow oN
- .tsildrow s'\reyalp tnerruc eht no resworb
+ .tsildrow s\'reyalp tnerruc eht no resworb
tsildrow eht snepo nottub sihT
.eciohc ruoy fo tsildrow eht no resworb
@@ -1600,7 +1600,7 @@ ylno sniatnoc %1$s tsildrow ehT
aiv tnemmoc dneS
).telbat
-ro enohp ruoy fo ledom/ekam dna ;"\%1$s"\ :noisrev
+ro enohp ruoy fo ledom/ekam dna ;\"%1$s\" :noisrev
eht edulcni esaelp ,tnaveler fI(
no htooteulB nruT
@@ -1632,7 +1632,7 @@ rof noisrev gnorw %1$s no sdrowssorC
devirra sah sevom erom ro enO
- .tcepxe uoy ecived a ees t'\nod
+ .tcepxe uoy ecived a ees t\'nod
uoy fi nottub nacseR eht esU .emag siht ni edulcni ot tnaw
uoy ]s[ecived %1$d eht tceles esaelP
@@ -1657,10 +1657,10 @@ ynam oot deliaf evah %1$s ot sdnes htooteulB
emaG SMS weN
).retal setivni
-dnes ot ecnahc a evah ll'\uoY( .emag SMS ruoy trats uoy
-erofeb stluafed eht fo emos egnahc ot "\tsrif erugifnoC"\ sserp rO
+dnes ot ecnahc a evah ll\'uoY( .emag SMS ruoy trats uoy
+erofeb stluafed eht fo emos egnahc ot \"tsrif erugifnoC\" sserp rO
.ti nioj ot dneirf a etivni uoy spleh dna emag ecived-owt a strats
-nottub "\won etivnI"\ ehT .segassem txet elbisivni aiv deyalp
+nottub \"won etivnI\" ehT .segassem txet elbisivni aiv deyalp
eb lliw taht emag a etaerC
.sgnittes emag krowteN>-sgnitteS ni ti elbane nac uoY
@@ -1678,17 +1678,17 @@ eb lliw taht emag a etaerC
tcatnoc tropmI
- ."\dekcehc
-etivnI"\ pat neht ,emag wen ruoy ot etivni ot tnaw uoy ]s[rebmun
+ .\"dekcehc
+etivnI\" pat neht ,emag wen ruoy ot etivni ot tnaw uoy ]s[rebmun
enohp %1$d eht kcehc esaelP
)stcatnoc ni toN(
- ?yawyna tropmI .rebmun "\elibom"\ a
+ ?yawyna tropmI .rebmun \"elibom\" a
ton si %2$s rof %1$s rebmun ehT
.yltcerid srebmun retne ot nottub + eht ,etivni
-ot tnaw uoy elpoep dda ot nottub "\tcatnoc tropmI"\
+ot tnaw uoy elpoep dda ot nottub \"tcatnoc tropmI\"
eht esU .ytpme si tsil enohP
:rebmun enohp retnE
@@ -1763,8 +1763,8 @@ saw dnes lufsseccus tsaL(
nalp SMS ruoy mrifnoC
?delbane
-eb SMS aiv yalp dluohSn\n\!egassem yreve dna hcae rof uoy egrahc
-yam reirrac ruoy nalp detimilnu na evah t'\nod uoy fI .deyalp
+eb SMS aiv yalp dluohS\n\n!egassem yreve dna hcae rof uoy egrahc
+yam reirrac ruoy nalp detimilnu na evah t\'nod uoy fI .deyalp
emag hcae rof )ylbisivni( tnes eb lliw segassem )txet( SMS
fo snezod ti elbane uoy ecnO .snalp gnitxet detimilnu htiw senohp
rof tnaem si erutaef sihT :gninraW
@@ -1775,7 +1775,7 @@ rof tnaem si erutaef sihT :gninraW
gnitxet detimilnu evah I :seY
- segrahc reirrac lla yap ll'\I :seY
+ segrahc reirrac lla yap ll\'I :seY
).sgnittes emag krowteN>-sgnitteS ot og ,SMS aiv yalp elbane
@@ -1805,7 +1805,7 @@ siht fo tsoh eht dna uoY
%3$s esu ot ekil uoy dluoW .%2$s gnisu si tsoh emag eht tub %1$s
tsildrow eht gnisu era uoY
).tsrif
-ti daolnwod ot evah lliw uoY(0200u\
+ti daolnwod ot evah lliw uoY(\u0020
%1$s htiw emag gnidaoleR
gnidnep noitativni emaG
@@ -1836,7 +1836,7 @@ neeb evah uoY
?]s[puorg detceles %1$d eht
eteled ot tnaw uoy erus uoy erA
).deteled eb osla
-lliw ]s[emag %1$d(n\n\
+lliw ]s[emag %1$d(\n\n
:ot puorg siht fo eman eht egnahC
puorg emaN
.deteled eb tonnac
@@ -1854,10 +1854,10 @@ ereht litnu elbissopmi si gnivoM
:ot semag detceles evoM
resworb tsildroW
yaler morf egasseM
- "\.rabnoitcA"\
+ \".rabnoitcA\"
ro unem eht gnisu ,meht eteled ot .g.e ,semag detceles no tca neht
,semag tcelesed ro tceles ot tfel eht ta snoci eht pat daetsni nac
-uoYn\n\.ti snepo emag a gnippaT
+uoY\n\n.ti snepo emag a gnippaT
.ppa
eht tixe ot niaga ti tiH .gnitixe fo daetsni noitceles
yna sraelc nottub kcab ehT
@@ -1873,14 +1873,14 @@ ti :derongi tub deviecer noitativnI
. no ti nrut ot ppa sgnitteS diordnA eht esu nac
uoY .ecived siht no ffo denrut si CFN
1#sgnitteS hcnuaL
- "\.rab noitcA"\ eht no dneped taht sruoy ekil
+ \".rab noitcA\" eht no dneped taht sruoy ekil
secived no derongi si gnittes sihT
won ecived gniviecer eht paT
.CFN gnisu osla si ehs/eh fi – yalp
-ot reh/mih etivni ot ecived s'\nosrep ybraen a pat nac
-uoy ,nepo si reyalp a gnissim s'\taht draob a emit yna taht snaem
+ot reh/mih etivni ot ecived s\'nosrep ybraen a pat nac
+uoy ,nepo si reyalp a gnissim s\'taht draob a emit yna taht snaem
tahT .delbane CFN evah uoY
- .tcp0200u\
+ .tcp\u0020
.tsol eb
ot stsildrow eht esuac nac taht gub a evah snoisrev emoS .xoferiF
esoohc TON OD ,egap sdaolnwod stsildrow eht gniweiv rof sresworb
@@ -1894,7 +1894,7 @@ stsil yalpsid dna ot dda ot reffO
…tsilydutS
draobpilc ot ypoC
detceles eteleD
- ).enodnu eb tonnac noitca sihT(n\n\?]s[drow detceles %1$d eht eteled
+ ).enodnu eb tonnac noitca sihT(\n\n?]s[drow detceles %1$d eht eteled
ot tnaw uoy erus uoy erA
deipoc ]s[drow %1$d
tsil ot dedda %1$s
diff --git a/xwords4/android/XWords4/res_src/values-ca_PS/strings.xml b/xwords4/android/XWords4/res_src/values-ca_PS/strings.xml
index 8a077e82e..852f757aa 100644
--- a/xwords4/android/XWords4/res_src/values-ca_PS/strings.xml
+++ b/xwords4/android/XWords4/res_src/values-ca_PS/strings.xml
@@ -136,7 +136,7 @@
ARE YOU SURE YOU WANT TO RESET THE %1$d
- SELECTED GAME[S]?\N\N(RESETTING ERASES ALL MOVES AND ANY CONNECTION
+ SELECTED GAME[S]?\n\n(RESETTING ERASES ALL MOVES AND ANY CONNECTION
INFORMATION.)
- %1$s COUNTS/VALUES:\N
+ %1$s COUNTS/VALUES:\n
+ %1$d [ALL REMAINING TILES]
@@ -589,7 +589,7 @@
NEW TILES: %1$s
- CUMULATIVE SCORE: %1$d\N
+ CUMULATIVE SCORE: %1$d\n
REMOTE PLAYER %1$s MADE THIS
MOVE:\U0020
@@ -598,11 +598,11 @@
- %1$d [TIME]
- MOVE (FROM %1$s ACROSS)\N
+ MOVE (FROM %1$s ACROSS)\n
- MOVE (FROM %1$s DOWN)\N
+ MOVE (FROM %1$s DOWN)\n
- RACK AT START: %1$s\N
+ RACK AT START: %1$s\n
EXCHANGED %1$s FOR %2$s.
- COMMIT THE CURRENT MOVE?\N
+ COMMIT THE CURRENT MOVE?\n
%1$s (REMOTE)
@@ -633,16 +633,16 @@
line in a game summary. The \u0020 is a space in xml. -->
\U0020VS.\U0020
- BONUS FOR USING ALL TILES: 50\N
+ BONUS FOR USING ALL TILES: 50\n
- SCORE FOR TURN: %1$d\N
+ SCORE FOR TURN: %1$d\n
%1$d TILES LEFT IN POOL.
%1$d TILES LEFT IN POOL AND ALL
- TRAY[S]:\N
+ TRAY[S]:\n
ARE YOU SURE YOU WANT TO UNDO THE
@@ -1365,8 +1365,8 @@
THE BACKGROUND.)
YOU ARE ENTERING TILE-EXCHANGE
- MODE.\N\NTAP TILES TO ADD/REMOVE THEM FROM THE SET TO BE
- EXCHANGED.\N\N
+ MODE.\n\nTAP TILES TO ADD/REMOVE THEM FROM THE SET TO BE
+ EXCHANGED.\n\n
USE THE BUTTONS TO
COMMIT YOUR TURN OR EXIT EXCHANGE MODE.
USE THE MENU OR ACTION BAR
@@ -1460,7 +1460,7 @@
Board screen. The idea is that you're tapping around
figuring out how to play and when you tap an empty cell the
arrow appears. This explains it. -->
- MOVING TILES TO THE BOARD:\NYOU CAN
+ MOVING TILES TO THE BOARD:\nYOU CAN
DRAG TILES BETWEEN THE RACK AND THE BOARD, OR YOU CAN TAP AN
EMPTY SQUARE TO PLACE THE BOARD ARROW. RACK TILES YOU TAP WILL
REPLACE THE ARROW (MOVING IT ONE SQUARE IN THE DIRECTION IT
@@ -1471,7 +1471,7 @@
another players turn. The idea is to give a hint about how to
find out about recent moves. -->
THE PLAYER WHOSE TURN IT IS
- IS DRAWN LARGE IN THE SCOREBOARD.\N\NHOLD YOUR FINGER ON A NAME IN
+ IS DRAWN LARGE IN THE SCOREBOARD.\n\nHOLD YOUR FINGER ON A NAME IN
THE SCOREBOARD TO GET DETAILS ABOUT THAT PLAYER\'S MOST RECENT
MOVE.
@@ -1494,7 +1494,7 @@
WELCOME
THANKS FOR INSTALLING
- CROSSWORDS!\N\NFEEL FREE TO ENTER YOUR NAME HERE. IT WILL BE USED
+ CROSSWORDS!\n\nFEEL FREE TO ENTER YOUR NAME HERE. IT WILL BE USED
WHEN CREATING NEW GAMES. (YOU CAN CHANGE IT LATER IN THE \"NEW
GAME DEFAULT\" SECTION OF SETTINGS.)
PICK FOR ME
- TILE PICKER\N(SO FAR: %1$s)
+ TILE PICKER\n(SO FAR: %1$s)
PICK TILES FACE-UP
@@ -1766,7 +1766,7 @@
PHONES WITH UNLIMITED TEXTING PLANS. ONCE YOU ENABLE IT DOZENS OF
SMS (TEXT) MESSAGES WILL BE SENT (INVISIBLY) FOR EACH GAME
PLAYED. IF YOU DON\'T HAVE AN UNLIMITED PLAN YOUR CARRIER MAY
- CHARGE YOU FOR EACH AND EVERY MESSAGE!\N\NSHOULD PLAY VIA SMS BE
+ CHARGE YOU FOR EACH AND EVERY MESSAGE!\n\nSHOULD PLAY VIA SMS BE
ENABLED?
ENABLE PLAY VIA SMS?
@@ -1835,7 +1835,7 @@
NEW GAMES
ARE YOU SURE YOU WANT TO DELETE
THE %1$d SELECTED GROUP[S]?
- \N\N(%1$d GAME[S] WILL
+ \n\n(%1$d GAME[S] WILL
ALSO BE DELETED.)
CHANGE THE NAME OF THIS GROUP TO:
NAME GROUP
@@ -1854,7 +1854,7 @@
MOVE SELECTED GAMES TO:
WORDLIST BROWSER
MESSAGE FROM RELAY
- TAPPING A GAME OPENS IT.\N\NYOU
+ TAPPING A GAME OPENS IT.\n\nYOU
CAN INSTEAD TAP THE ICONS AT THE LEFT TO SELECT OR DESELECT GAMES,
THEN ACT ON SELECTED GAMES, E.G. TO DELETE THEM, USING THE MENU OR
\"ACTIONBAR.\"
@@ -1895,7 +1895,7 @@
COPY TO CLIPBOARD
DELETE SELECTED
ARE YOU SURE YOU WANT TO
- DELETE THE %1$d SELECTED WORD[S]?\N\N(THIS ACTION CANNOT BE UNDONE.)
+ DELETE THE %1$d SELECTED WORD[S]?\n\n(THIS ACTION CANNOT BE UNDONE.)
%1$d WORD[S] COPIED
%1$s ADDED TO LIST
STUDYLIST FOR %1$s
diff --git a/xwords4/android/scripts/fake_locales.py b/xwords4/android/scripts/fake_locales.py
index d23a91821..69af132ce 100755
--- a/xwords4/android/scripts/fake_locales.py
+++ b/xwords4/android/scripts/fake_locales.py
@@ -3,7 +3,22 @@
import sys, getopt, re
from lxml import etree
-FMT = re.compile('(%\d\$[dsXx])', re.DOTALL)
+expr = '(' + \
+ '|'.join( [ \
+ r'%\d\$[dsXx]', \
+ r'\\n', \
+ r'\\t', \
+ r'\\u[\da-fA-F]{4,4}', \
+ r"\\'" , \
+ r'\\"' , \
+ ] ) + \
+ ')'
+
+# Can't make these work...
+ # r'\(' , \
+ # r'\)' , \
+
+FMT = re.compile( expr, re.DOTALL )
def capitalize( str ):
split = re.split( FMT, str )
@@ -28,7 +43,7 @@ def usage():
def main():
algo = None
- outfile = None
+ outfile = '-'
try:
pairs, rest = getopt.getopt(sys.argv[1:], "l:o:")
for option, value in pairs:
@@ -49,7 +64,7 @@ def main():
elif algo == 'ba_CK':
func = reverse
else:
- print "no algo"
+ print 'no func for algo', algo
usage()
parser = etree.XMLParser(remove_blank_text=True)
@@ -60,9 +75,9 @@ def main():
if text:
elem.text = func(text)
- if outfile:
- out = open( outfile, "w" )
- out.write( etree.tostring( doc, pretty_print=True, encoding="utf-8", xml_declaration=True ) )
+ if '-' == outfile: out = sys.stdout
+ else: out = open( outfile, "w" )
+ out.write( etree.tostring( doc, pretty_print=True, encoding="utf-8", xml_declaration=True ) )
##############################################################################
if __name__ == '__main__':