summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRicardo Cerqueira <ricardo@cyngn.com>2015-03-10 12:27:26 +0000
committerRicardo Cerqueira <ricardo@cyngn.com>2015-03-10 12:27:26 +0000
commitf2917b2a5eba92f7035532170bc1925b41bb2e23 (patch)
tree5ea56ac3cc354deb7c5feab1d59bfa5dd7872f4d
parent24a0462936ca9cab4dc9c1b0404c74a9b7fc5199 (diff)
parent93a5c853bdde0a16d6594043dc51b583e1d72ad7 (diff)
downloadandroid_packages_inputmethods_LatinIME-f2917b2a5eba92f7035532170bc1925b41bb2e23.tar.gz
android_packages_inputmethods_LatinIME-f2917b2a5eba92f7035532170bc1925b41bb2e23.tar.bz2
android_packages_inputmethods_LatinIME-f2917b2a5eba92f7035532170bc1925b41bb2e23.zip
Merge tag 'android-5.1.0_r1' into HEADstaging/cm-12.1
Android 5.1.0 release 1
-rw-r--r--java/AndroidManifest.xml1
-rw-r--r--java/res/values-af/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-ar/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-ca/strings.xml2
-rw-r--r--java/res/values-cs/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-da/strings-talkback-descriptions.xml2
-rw-r--r--java/res/values-da/strings.xml8
-rw-r--r--java/res/values-el/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-eu-rES/strings-emoji-descriptions.xml6
-rw-r--r--java/res/values-fa/strings-emoji-descriptions.xml4
-rw-r--r--java/res/values-fi/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-fi/strings.xml6
-rw-r--r--java/res/values-gl-rES/strings.xml4
-rw-r--r--java/res/values-hu/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-hy-rAM/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-iw/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-km-rKH/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-kn-rIN/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-lo-rLA/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-lt/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-lv/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-ml-rIN/strings-emoji-descriptions.xml4
-rw-r--r--java/res/values-ml-rIN/strings-talkback-descriptions.xml2
-rw-r--r--java/res/values-mn-rMN/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-mr-rIN/strings.xml4
-rw-r--r--java/res/values-nb/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-nb/strings.xml6
-rw-r--r--java/res/values-ne-rNP/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-ro/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-si-rLK/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-sr/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-sv/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-sw/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-tr/strings.xml2
-rw-r--r--java/res/values-uk/strings.xml2
-rw-r--r--java/res/values-vi/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-vi/strings.xml6
-rw-r--r--java/res/values-zh-rTW/strings-emoji-descriptions.xml2
-rw-r--r--java/src/com/android/inputmethod/latin/utils/StringUtils.java29
-rw-r--r--tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyOutput.java3
-rw-r--r--tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyVisual.java4
-rw-r--r--tests/src/com/android/inputmethod/latin/utils/StringUtilsTests.java192
42 files changed, 271 insertions, 62 deletions
diff --git a/java/AndroidManifest.xml b/java/AndroidManifest.xml
index 054c415a4..08806c8d6 100644
--- a/java/AndroidManifest.xml
+++ b/java/AndroidManifest.xml
@@ -33,7 +33,6 @@
<application android:label="@string/english_ime_name"
android:icon="@drawable/ic_launcher_keyboard"
- android:killAfterRestore="false"
android:supportsRtl="true"
android:allowBackup="true">
diff --git a/java/res/values-af/strings-emoji-descriptions.xml b/java/res/values-af/strings-emoji-descriptions.xml
index 26bfc5f08..5ed066a87 100644
--- a/java/res/values-af/strings-emoji-descriptions.xml
+++ b/java/res/values-af/strings-emoji-descriptions.xml
@@ -267,7 +267,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Koekie"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Staaf sjokolade"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Lekkergoed"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Suiglekker"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lollipop"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Vla"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Heuningpot"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"Broskoek"</string>
diff --git a/java/res/values-ar/strings-emoji-descriptions.xml b/java/res/values-ar/strings-emoji-descriptions.xml
index 875f626c2..c1decd303 100644
--- a/java/res/values-ar/strings-emoji-descriptions.xml
+++ b/java/res/values-ar/strings-emoji-descriptions.xml
@@ -267,7 +267,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"كعكة"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"بار شيكولاتة"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"حلوى"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"مصاصة"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lollipop"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"كاسترد"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"جرة عسل"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"كعكة بسمن وسكر"</string>
diff --git a/java/res/values-ca/strings.xml b/java/res/values-ca/strings.xml
index c4f4fe755..c7a8a3156 100644
--- a/java/res/values-ca/strings.xml
+++ b/java/res/values-ca/strings.xml
@@ -76,7 +76,7 @@
<string name="voice_input_disabled_summary" msgid="8141750303464726129">"No hi ha cap mètode d\'introducció activat. Comprova la configuració d\'Idioma i introducció de text."</string>
<string name="configure_input_method" msgid="373356270290742459">"Configura mètodes d\'entrada"</string>
<string name="language_selection_title" msgid="3666971864764478269">"Idiomes"</string>
- <string name="help_and_feedback" msgid="5328219371839879161">"Ajuda i opinió"</string>
+ <string name="help_and_feedback" msgid="5328219371839879161">"Ajuda i suggeriments"</string>
<string name="select_language" msgid="5709487854987078367">"Idiomes"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Torna a tocar per desar"</string>
<string name="hint_add_to_dictionary_without_word" msgid="3040385779511255101">"Toca aquí per desar."</string>
diff --git a/java/res/values-cs/strings-emoji-descriptions.xml b/java/res/values-cs/strings-emoji-descriptions.xml
index b66420247..b7f359c55 100644
--- a/java/res/values-cs/strings-emoji-descriptions.xml
+++ b/java/res/values-cs/strings-emoji-descriptions.xml
@@ -267,7 +267,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Sušenka"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Tabulka čokolády"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Bonbon"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lízátko"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lollipop"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Pudink"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Hrnek medu"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"Dort"</string>
diff --git a/java/res/values-da/strings-talkback-descriptions.xml b/java/res/values-da/strings-talkback-descriptions.xml
index f0e19e5a2..336ba866b 100644
--- a/java/res/values-da/strings-talkback-descriptions.xml
+++ b/java/res/values-da/strings-talkback-descriptions.xml
@@ -38,7 +38,7 @@
<string name="spoken_description_settings" msgid="7281251004003143204">"Indstillinger"</string>
<string name="spoken_description_tab" msgid="8210782459446866716">"Fane"</string>
<string name="spoken_description_space" msgid="5908716896642059145">"Mellemrum"</string>
- <string name="spoken_description_mic" msgid="6153138783813452464">"Taleinput"</string>
+ <string name="spoken_description_mic" msgid="6153138783813452464">"Indtaling"</string>
<string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
<string name="spoken_description_return" msgid="3183692287397645708">"Return"</string>
<string name="spoken_description_search" msgid="5099937658231911288">"Søgning"</string>
diff --git a/java/res/values-da/strings.xml b/java/res/values-da/strings.xml
index c0e2386dd..316c9e12e 100644
--- a/java/res/values-da/strings.xml
+++ b/java/res/values-da/strings.xml
@@ -61,8 +61,8 @@
<string name="auto_correction_summary" msgid="5625751551134658006">"Mellemrumstast og tegnsætning retter automatisk forkerte ord"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Fra"</string>
<string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Moderat"</string>
- <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"Aggressiv"</string>
- <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"Meget aggressiv"</string>
+ <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"Middel"</string>
+ <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"Maksimal"</string>
<string name="bigram_prediction" msgid="1084449187723948550">"Forslag til næste ord"</string>
<string name="bigram_prediction_summary" msgid="3896362682751109677">"Brug det forrige ord til at give forslag"</string>
<string name="gesture_input" msgid="826951152254563827">"Aktivér glidende indtastning"</string>
@@ -72,8 +72,8 @@
<string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Se ordforslag ved glidende indtastning"</string>
<string name="gesture_space_aware" msgid="2078291600664682496">"Glidende mellemrum"</string>
<string name="gesture_space_aware_summary" msgid="4371385818348528538">"Tilføj mellemrum ved at glide til mellemrumstasten"</string>
- <string name="voice_input" msgid="3583258583521397548">"Knap til taleinput"</string>
- <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Der er ingen aktiverede stemmeinputmetoder. Kontrollér Indstillinger for sprog og input."</string>
+ <string name="voice_input" msgid="3583258583521397548">"Knap til indtaling"</string>
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Der er ingen aktiverede indtalingsmetoder. Kontrollér Indstillinger for sprog og input."</string>
<string name="configure_input_method" msgid="373356270290742459">"Konfigurer inputmetoder"</string>
<string name="language_selection_title" msgid="3666971864764478269">"Sprog"</string>
<string name="help_and_feedback" msgid="5328219371839879161">"Hjælp og feedback"</string>
diff --git a/java/res/values-el/strings-emoji-descriptions.xml b/java/res/values-el/strings-emoji-descriptions.xml
index aa8966e97..a15d0fdba 100644
--- a/java/res/values-el/strings-emoji-descriptions.xml
+++ b/java/res/values-el/strings-emoji-descriptions.xml
@@ -269,7 +269,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Κούκι"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Σοκολάτα"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Γλυκά"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Γλειφιτζούρι"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lollipop"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Κρέμα"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Βάζο με μέλι"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"Μπισκότο"</string>
diff --git a/java/res/values-eu-rES/strings-emoji-descriptions.xml b/java/res/values-eu-rES/strings-emoji-descriptions.xml
index 2faec968a..49cf216f7 100644
--- a/java/res/values-eu-rES/strings-emoji-descriptions.xml
+++ b/java/res/values-eu-rES/strings-emoji-descriptions.xml
@@ -288,7 +288,7 @@
<string name="spoken_emoji_1F382" msgid="4720497171946687501">"Urtebetetze-pastela"</string>
<string name="spoken_emoji_1F383" msgid="3536505941578757623">"Halloween-eko kuia-lanpara"</string>
<string name="spoken_emoji_1F384" msgid="1797870204479059004">"Gabonetako zuhaitza"</string>
- <string name="spoken_emoji_1F385" msgid="1754174063483626367">"Aita Noel"</string>
+ <string name="spoken_emoji_1F385" msgid="1754174063483626367">"Bizarzuri"</string>
<string name="spoken_emoji_1F386" msgid="2130445450758114746">"Su artifizialak"</string>
<string name="spoken_emoji_1F387" msgid="3403182563117999933">"Bengala"</string>
<string name="spoken_emoji_1F388" msgid="2903047203723251804">"Puxika"</string>
@@ -602,7 +602,7 @@
<string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"Egunkaria"</string>
<string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"Telefono mugikorra"</string>
<string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"Telefono mugikorra eta geziak eskuinalderantz ezkerraldean"</string>
- <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"Bibrazio-modua"</string>
+ <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"Dardara modua"</string>
<string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"Telefono mugikorra itzalita"</string>
<string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"Telefono mugikorrik ez"</string>
<string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"Antena barrekin"</string>
@@ -846,6 +846,6 @@
<string name="spoken_emoji_1F6C1" msgid="2845056048320031158">"Bainuontzia"</string>
<string name="spoken_emoji_1F6C2" msgid="8117262514698011877">"Pasaporte-kontrola"</string>
<string name="spoken_emoji_1F6C3" msgid="1176342001834630675">"Aduana"</string>
- <string name="spoken_emoji_1F6C4" msgid="1477622834179978886">"Maleta-erreklamazioa"</string>
+ <string name="spoken_emoji_1F6C4" msgid="1477622834179978886">"Ekipaje-erreklamazioa"</string>
<string name="spoken_emoji_1F6C5" msgid="2495834050856617451">"Ahaztutako maletak"</string>
</resources>
diff --git a/java/res/values-fa/strings-emoji-descriptions.xml b/java/res/values-fa/strings-emoji-descriptions.xml
index cc670eef9..e10689dad 100644
--- a/java/res/values-fa/strings-emoji-descriptions.xml
+++ b/java/res/values-fa/strings-emoji-descriptions.xml
@@ -267,7 +267,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"کلوچه"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"تخته شکلات"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"آبنبات"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"آبنبات چوبی"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"آب‌نبات چوبی"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"کاستارد"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"ظرف عسل"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"کیک روغنی"</string>
@@ -319,7 +319,7 @@
<string name="spoken_emoji_1F3AD" msgid="607157286336130470">"هنرهای نمایشی"</string>
<string name="spoken_emoji_1F3AE" msgid="2902308174671548150">"بازی ویدیویی"</string>
<string name="spoken_emoji_1F3AF" msgid="5420539221790296407">"ضربه مستقیم"</string>
- <string name="spoken_emoji_1F3B0" msgid="7440244806527891956">"دستگاه قمار ماشینی"</string>
+ <string name="spoken_emoji_1F3B0" msgid="7440244806527891956">"ماشین پولی"</string>
<string name="spoken_emoji_1F3B1" msgid="545544382391379234">"بیلیارد"</string>
<string name="spoken_emoji_1F3B2" msgid="8302262034774787493">"تاس بازی"</string>
<string name="spoken_emoji_1F3B3" msgid="5180870610771027520">"بولینگ"</string>
diff --git a/java/res/values-fi/strings-emoji-descriptions.xml b/java/res/values-fi/strings-emoji-descriptions.xml
index ad08bbda2..7d6a9f957 100644
--- a/java/res/values-fi/strings-emoji-descriptions.xml
+++ b/java/res/values-fi/strings-emoji-descriptions.xml
@@ -267,7 +267,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Pikkuleipä"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Suklaapatukka"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Karamelli"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Tikkukaramelli"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Tikkari"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Vanukas"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Hunajapurkki"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"Kakkuviipale"</string>
diff --git a/java/res/values-fi/strings.xml b/java/res/values-fi/strings.xml
index 1656af1e9..ca0860969 100644
--- a/java/res/values-fi/strings.xml
+++ b/java/res/values-fi/strings.xml
@@ -72,7 +72,7 @@
<string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Näytä ehdotettu sana piirron aikana"</string>
<string name="gesture_space_aware" msgid="2078291600664682496">"Ilmausele"</string>
<string name="gesture_space_aware_summary" msgid="4371385818348528538">"Lisää välilyöntejä eleiden aikana liukumalla välilyöntinäppäim."</string>
- <string name="voice_input" msgid="3583258583521397548">"Äänisyöteavain"</string>
+ <string name="voice_input" msgid="3583258583521397548">"Äänisyötenäppäin"</string>
<string name="voice_input_disabled_summary" msgid="8141750303464726129">"Äänen syöttötapoja ei ole otettu käyttöön. Tarkista Kieli ja syöttötapa -asetukset."</string>
<string name="configure_input_method" msgid="373356270290742459">"Määritä syöttötavat"</string>
<string name="language_selection_title" msgid="3666971864764478269">"Kielet"</string>
@@ -157,9 +157,9 @@
<string name="install_dict" msgid="180852772562189365">"Asenna"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"Peruuta"</string>
<string name="delete_dict" msgid="756853268088330054">"Poista"</string>
- <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Laitteesi käyttökielelle on saatavilla sanakirja.&lt;br/&gt; Suosittelemme <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>-sanakirjan &lt;b&gt;lataamista&lt;/b&gt;, sillä se helpottaa laitteella kirjoittamista.&lt;br/&gt; &lt;br/&gt; Lataus kestää useimmiten muutaman minuutin 3G-yhteydellä. Latauksesta saatetaan periä maksu, ellei käytössäsi ole &lt;b&gt;rajoittamatonta tiedonsiirtopakettia&lt;/b&gt;.&lt;br/&gt; Jos et ole varma tiedonsiirtosopimuksesi tyypistä, etsi käyttöösi wifi-yhteys, niin lataus alkaa automaattisesti.&lt;br/&gt; &lt;br/&gt; Vinkki: voit ladata ja poistaa sanakirjoja mobiililaitteesi &lt;b&gt;Asetukset&lt;/b&gt;-valikon &lt;b&gt;Kieli ja syöttötapa&lt;/b&gt; -osiossa."</string>
+ <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Laitteesi käyttökielelle on saatavilla sanakirja.&lt;br/&gt; Suosittelemme <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>-sanakirjan &lt;b&gt;lataamista&lt;/b&gt;, sillä se helpottaa laitteella kirjoittamista.&lt;br/&gt; &lt;br/&gt; Lataus kestää useimmiten muutaman minuutin 3G-yhteydellä. Latauksesta saatetaan periä maksu, ellei käytössäsi ole &lt;b&gt;rajoittamatonta tiedonsiirtopakettia&lt;/b&gt;.&lt;br/&gt; Jos et ole varma tiedonsiirtosopimuksesi tyypistä, etsi käyttöösi Wi-Fi-yhteys, niin lataus alkaa automaattisesti.&lt;br/&gt; &lt;br/&gt; Vinkki: voit ladata ja poistaa sanakirjoja mobiililaitteesi &lt;b&gt;Asetukset&lt;/b&gt;-valikon &lt;b&gt;Kieli ja syöttötapa&lt;/b&gt; -osiossa."</string>
<string name="download_over_metered" msgid="1643065851159409546">"Lataa nyt (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> Mt)"</string>
- <string name="do_not_download_over_metered" msgid="2176209579313941583">"Lataa wifi-yhteydellä"</string>
+ <string name="do_not_download_over_metered" msgid="2176209579313941583">"Lataa Wi-Fi-yhteydellä"</string>
<string name="dict_available_notification_title" msgid="4583842811218581658">"Sanakirja on saatavilla kielelle <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
<string name="dict_available_notification_description" msgid="1075194169443163487">"Paina tätä, jos haluat tarkastella kohdetta ja ladata sen"</string>
<string name="toast_downloading_suggestions" msgid="6128155879830851739">"Ladataan: kielen <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ehdotukset ovat pian käytettävissä."</string>
diff --git a/java/res/values-gl-rES/strings.xml b/java/res/values-gl-rES/strings.xml
index 3a1e3a6be..a25605f74 100644
--- a/java/res/values-gl-rES/strings.xml
+++ b/java/res/values-gl-rES/strings.xml
@@ -29,9 +29,9 @@
<string name="settings_screen_preferences" msgid="2696713156722014624">"Preferencias"</string>
<string name="settings_screen_appearance" msgid="9153102634339912029">"Aparencia e deseños"</string>
<string name="settings_screen_multilingual" msgid="1391301621464509659">"Opcións multilingües"</string>
- <string name="settings_screen_gesture" msgid="8826372746901183556">"Escritura mediante xestos"</string>
+ <string name="settings_screen_gesture" msgid="8826372746901183556">"Escritura xestual"</string>
<string name="settings_screen_correction" msgid="1616818407747682955">"Corrección de texto"</string>
- <string name="settings_screen_advanced" msgid="7472408607625972994">"Avanzada"</string>
+ <string name="settings_screen_advanced" msgid="7472408607625972994">"Opcións avanzadas"</string>
<string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string>
<string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Outros métodos de entrada"</string>
<string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"A tecla de cambio de idioma inclúe outros métodos de entrada"</string>
diff --git a/java/res/values-hu/strings-emoji-descriptions.xml b/java/res/values-hu/strings-emoji-descriptions.xml
index 4f3d01c86..b72f29853 100644
--- a/java/res/values-hu/strings-emoji-descriptions.xml
+++ b/java/res/values-hu/strings-emoji-descriptions.xml
@@ -267,7 +267,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Sütemény"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Csokoládé"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Cukorka"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Nyalóka"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lollipop"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Sodó"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Mézesbödön"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"Tortaszelet"</string>
diff --git a/java/res/values-hy-rAM/strings-emoji-descriptions.xml b/java/res/values-hy-rAM/strings-emoji-descriptions.xml
index f41f2fc96..dcc718e22 100644
--- a/java/res/values-hy-rAM/strings-emoji-descriptions.xml
+++ b/java/res/values-hy-rAM/strings-emoji-descriptions.xml
@@ -267,7 +267,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Թխվածքաբլիթ"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Շոկոլադի սալիկ"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Կոնֆետ"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Սառնաշաքար կոնֆետ"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Շաքարաքլոր"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Եփովի կրեմ"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Մեղրանոթ"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"Տորթի կտոր"</string>
diff --git a/java/res/values-iw/strings-emoji-descriptions.xml b/java/res/values-iw/strings-emoji-descriptions.xml
index ab31403aa..fc4435a14 100644
--- a/java/res/values-iw/strings-emoji-descriptions.xml
+++ b/java/res/values-iw/strings-emoji-descriptions.xml
@@ -267,7 +267,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"עוגייה"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"חפיסת שוקולד"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"סוכרייה"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"סוכרייה על מקל"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lollipop"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"רפרפת"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"סיר דבש"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"עוגת פירות"</string>
diff --git a/java/res/values-km-rKH/strings-emoji-descriptions.xml b/java/res/values-km-rKH/strings-emoji-descriptions.xml
index 757df50e7..e9b8780a5 100644
--- a/java/res/values-km-rKH/strings-emoji-descriptions.xml
+++ b/java/res/values-km-rKH/strings-emoji-descriptions.xml
@@ -267,7 +267,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"ខូគី"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"​​សូកូឡា"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"ស្ករគ្រាប់"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"ស្ករ​គ្រាប់​មាន​ដង​​កាន់"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lollipop"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"សង់ខ្យា"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"ថូ"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"នំ​ខេក"</string>
diff --git a/java/res/values-kn-rIN/strings-emoji-descriptions.xml b/java/res/values-kn-rIN/strings-emoji-descriptions.xml
index 4e6d5ced5..a013c2755 100644
--- a/java/res/values-kn-rIN/strings-emoji-descriptions.xml
+++ b/java/res/values-kn-rIN/strings-emoji-descriptions.xml
@@ -267,7 +267,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"ಕುಕಿ"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"ಚಾಕೊಲೇಟ್ ಬಾರ್"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"ಕ್ಯಾಂಡಿ"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"ಲಾಲಿಪಪ್"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lollipop"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"ಕಸ್ಟರ್ಡ್"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"ಜೇನಿನ ಮಡಕೆ"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"ಶಾರ್ಟ್‌ಕೇಕ್"</string>
diff --git a/java/res/values-lo-rLA/strings-emoji-descriptions.xml b/java/res/values-lo-rLA/strings-emoji-descriptions.xml
index 0747fa629..335fc19f9 100644
--- a/java/res/values-lo-rLA/strings-emoji-descriptions.xml
+++ b/java/res/values-lo-rLA/strings-emoji-descriptions.xml
@@ -267,7 +267,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"​ຄຸ​ກ​ກີ້"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"​ຊັອກ​ໂກ​ແລັດບາ"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"ແຄນດີ້"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"​ໂລ​ລິ​ປັອບ"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"ເຂົ້າໜົມອົມຍິ້ມ"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"​ຄັ​ສ​ຕາດ"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"ໝໍ້​ນ້ຳ​ເຜິ້ງ"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"ຊັອດ​ເຄັກ"</string>
diff --git a/java/res/values-lt/strings-emoji-descriptions.xml b/java/res/values-lt/strings-emoji-descriptions.xml
index fa81dbbd8..afe9ac0e6 100644
--- a/java/res/values-lt/strings-emoji-descriptions.xml
+++ b/java/res/values-lt/strings-emoji-descriptions.xml
@@ -267,7 +267,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Sausainis"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Šokolado plytelė"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Saldainis"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Ledinukas ant pagaliuko"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lollipop"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Saldus kremas"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Medaus puodynė"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"Trapus pyragas"</string>
diff --git a/java/res/values-lv/strings-emoji-descriptions.xml b/java/res/values-lv/strings-emoji-descriptions.xml
index a51991b81..525a1a0e8 100644
--- a/java/res/values-lv/strings-emoji-descriptions.xml
+++ b/java/res/values-lv/strings-emoji-descriptions.xml
@@ -267,7 +267,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Cepums"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Šokolādes tāfelīte"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Konfekte"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Cukurgailītis"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lollipop"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Olu krēms"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Medus pods"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"Smilšu torte ar augļu pildījumu"</string>
diff --git a/java/res/values-ml-rIN/strings-emoji-descriptions.xml b/java/res/values-ml-rIN/strings-emoji-descriptions.xml
index a846f31a5..2fad19202 100644
--- a/java/res/values-ml-rIN/strings-emoji-descriptions.xml
+++ b/java/res/values-ml-rIN/strings-emoji-descriptions.xml
@@ -348,7 +348,7 @@
<string name="spoken_emoji_1F3E0" msgid="6277213201655811842">"വീടുനിർമ്മാണം"</string>
<string name="spoken_emoji_1F3E1" msgid="233476176077538885">"പൂന്തോട്ടനുള്ള വീട്"</string>
<string name="spoken_emoji_1F3E2" msgid="919736380093964570">"ഓഫീസ് കെട്ടിടം"</string>
- <string name="spoken_emoji_1F3E3" msgid="6177606081825094184">"ജപ്പാനീസ് പോസ്‌റ്റ് ഓഫീസ്"</string>
+ <string name="spoken_emoji_1F3E3" msgid="6177606081825094184">"ജാപ്പനീസ്‌ പോസ്‌റ്റ് ഓഫീസ്"</string>
<string name="spoken_emoji_1F3E4" msgid="717377871070970293">"യൂറോപ്പ്യൻ പോസ്‌റ്റ് ഓഫീസ്"</string>
<string name="spoken_emoji_1F3E5" msgid="1350532500431776780">"ആശുപത്രി"</string>
<string name="spoken_emoji_1F3E6" msgid="342132788513806214">"ബാങ്ക്"</string>
@@ -659,7 +659,7 @@
<string name="spoken_emoji_1F52D" msgid="7549551775445177140">"ടെലിസ്‌കോപ്പ്"</string>
<string name="spoken_emoji_1F52E" msgid="4457099417872625141">"സ്ഥടിക ബോൾ"</string>
<string name="spoken_emoji_1F52F" msgid="8899031001317442792">"മധ്യഭാഗത്ത് കറുത്ത ഡോട്ടുള്ള ആറ് പോയിന്റുള്ള നക്ഷത്രം"</string>
- <string name="spoken_emoji_1F530" msgid="3572898444281774023">"തുടക്കക്കാർക്കുള്ള ജപ്പാനീസ് ചിഹ്നം"</string>
+ <string name="spoken_emoji_1F530" msgid="3572898444281774023">"തുടക്കക്കാർക്കുള്ള ജാപ്പനീസ്‌ ചിഹ്നം"</string>
<string name="spoken_emoji_1F531" msgid="5225633376450025396">"ത്രിശൂലത്തിന്റെ ചിഹ്നം"</string>
<string name="spoken_emoji_1F532" msgid="9169568490485180779">"കറുത്ത ചതുര ബട്ടൺ"</string>
<string name="spoken_emoji_1F533" msgid="6554193837201918598">"വെള്ള ചതുര ബട്ടൺ"</string>
diff --git a/java/res/values-ml-rIN/strings-talkback-descriptions.xml b/java/res/values-ml-rIN/strings-talkback-descriptions.xml
index 3577bbb0c..01ae1d56b 100644
--- a/java/res/values-ml-rIN/strings-talkback-descriptions.xml
+++ b/java/res/values-ml-rIN/strings-talkback-descriptions.xml
@@ -58,7 +58,7 @@
<string name="keyboard_mode_date" msgid="6597407244976713364">"തീയതി"</string>
<string name="keyboard_mode_date_time" msgid="3642804408726668808">"തീയതിയും സമയവും"</string>
<string name="keyboard_mode_email" msgid="1239682082047693644">"ഇമെയിൽ"</string>
- <string name="keyboard_mode_im" msgid="3812086215529493501">"സന്ദേശമയയ്‌ക്കൽ"</string>
+ <string name="keyboard_mode_im" msgid="3812086215529493501">"സന്ദേശം"</string>
<string name="keyboard_mode_number" msgid="5395042245837996809">"നമ്പർ"</string>
<string name="keyboard_mode_phone" msgid="2486230278064523665">"ഫോൺ"</string>
<string name="keyboard_mode_text" msgid="9138789594969187494">"ടെക്‌സ്‌റ്റ്"</string>
diff --git a/java/res/values-mn-rMN/strings-emoji-descriptions.xml b/java/res/values-mn-rMN/strings-emoji-descriptions.xml
index f09a51dd9..5014b2ff8 100644
--- a/java/res/values-mn-rMN/strings-emoji-descriptions.xml
+++ b/java/res/values-mn-rMN/strings-emoji-descriptions.xml
@@ -267,7 +267,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Печень"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Шоколад"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Чихэр"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Иштэй чихэр"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lollipop"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Шар тос"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Зөгийн бал"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"Үелсэн бялуу"</string>
diff --git a/java/res/values-mr-rIN/strings.xml b/java/res/values-mr-rIN/strings.xml
index 969c373fa..574fe6389 100644
--- a/java/res/values-mr-rIN/strings.xml
+++ b/java/res/values-mr-rIN/strings.xml
@@ -157,9 +157,9 @@
<string name="install_dict" msgid="180852772562189365">"स्‍थापित करा"</string>
<string name="cancel_download_dict" msgid="7843340278507019303">"रद्द करा"</string>
<string name="delete_dict" msgid="756853268088330054">"हटवा"</string>
- <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"आपल्या मोबाईल डिव्हाइसवर निवडलेल्या भाषेमध्ये शब्दकोश उपलब्ध आहे.&lt;br/&gt; आम्ही आपला टायपिंग अनुभव सुधारण्यासाठी <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> शब्दकोश &lt;b&gt;डाउनलोड करण्याची&lt;/b&gt; शिफारस करतो.&lt;br/&gt; &lt;br/&gt; डाउनलोड कऱण्यास 3G वर एक किंवा दोन मिनिट लागू शकतात. आपल्याकडे &lt;b&gt;अमर्यादित डेटा योजना&lt;/b&gt; नसल्यास शुल्क लागू शकते. आपल्याकडे असलेल्या डेटा योजनेबद्दल आपण सुनिश्चित नसल्यास, डाउनलोड स्वयंचलितपणे प्रारंभ करण्यासाठी Wi-Fi कनेक्शन शोधण्याची शिफारस आम्ही करतो.&lt;br/&gt; &lt;br/&gt; टीप: आपण आपल्या मोबाईल डिव्हाइसच्या &lt;b&gt;सेटिंग्ज&lt;/b&gt;मेनूमधील &lt;b&gt;भाषा आणि इनपुट&lt;/b&gt; वर जाऊन शब्दकोश डाउनलोड करू आणि काढू शकता."</string>
+ <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"आपल्या मोबाईल डिव्हाइसवर निवडलेल्या भाषेमध्ये शब्दकोश उपलब्ध आहे.&lt;br/&gt; आम्ही आपला टायपिंग अनुभव सुधारण्यासाठी <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> शब्दकोश &lt;b&gt;डाउनलोड करण्याची&lt;/b&gt; शिफारस करतो.&lt;br/&gt; &lt;br/&gt; डाउनलोड कऱण्यास 3G वर एक किंवा दोन मिनिट लागू शकतात. आपल्याकडे &lt;b&gt;अमर्यादित डेटा योजना&lt;/b&gt; नसल्यास शुल्क लागू शकते. आपल्याकडे असलेल्या डेटा योजनेबद्दल आपण सुनिश्चित नसल्यास, डाउनलोड स्वयंचलितपणे प्रारंभ करण्यासाठी वाय-फाय कनेक्शन शोधण्याची शिफारस आम्ही करतो.&lt;br/&gt; &lt;br/&gt; टीप: आपण आपल्या मोबाईल डिव्हाइसच्या &lt;b&gt;सेटिंग्ज&lt;/b&gt;मेनूमधील &lt;b&gt;भाषा आणि इनपुट&lt;/b&gt; वर जाऊन शब्दकोश डाउनलोड करू आणि काढू शकता."</string>
<string name="download_over_metered" msgid="1643065851159409546">"आता डाउनलोड करा (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
- <string name="do_not_download_over_metered" msgid="2176209579313941583">"Wi-Fi वर डाउनलोड करा"</string>
+ <string name="do_not_download_over_metered" msgid="2176209579313941583">"वाय-फाय वर डाउनलोड करा"</string>
<string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> साठी शब्दकोश उपलब्ध आहे"</string>
<string name="dict_available_notification_description" msgid="1075194169443163487">"पुनरावलोकन करण्यासाठी आणि डाउनलोड करण्यासाठी दाबा"</string>
<string name="toast_downloading_suggestions" msgid="6128155879830851739">"डाउनलोड करत आहे: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> साठी सूचना लवकरच तयार होतील."</string>
diff --git a/java/res/values-nb/strings-emoji-descriptions.xml b/java/res/values-nb/strings-emoji-descriptions.xml
index fa655f12f..681118833 100644
--- a/java/res/values-nb/strings-emoji-descriptions.xml
+++ b/java/res/values-nb/strings-emoji-descriptions.xml
@@ -267,7 +267,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Kjeks"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Sjokoladeplate"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Godteri"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Kjærlighet på pinne"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lollipop"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Pudding"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Honningkrukke"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"Kakestykke"</string>
diff --git a/java/res/values-nb/strings.xml b/java/res/values-nb/strings.xml
index c72a4b866..054114b93 100644
--- a/java/res/values-nb/strings.xml
+++ b/java/res/values-nb/strings.xml
@@ -84,15 +84,15 @@
<string name="keyboard_layout" msgid="8451164783510487501">"Tastaturtema"</string>
<string name="subtype_en_GB" msgid="88170601942311355">"Engelsk (Storbritannia)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Engelsk (USA)"</string>
- <string name="subtype_es_US" msgid="5583145191430180200">"Spansk (USA)"</string>
+ <string name="subtype_es_US" msgid="5583145191430180200">"spansk (USA)"</string>
<string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Engelsk (Storbritannia) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
<string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Engelsk (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
- <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Spansk (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+ <string name="subtype_with_layout_es_US" msgid="510930471167541338">"spansk (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
<string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tradisjonelt)"</string>
<string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (kyrillisk)"</string>
<string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (latin)"</string>
<string name="subtype_no_language" msgid="7137390094240139495">"Ingen språk (alfabet)"</string>
- <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabet (QWERTY)"</string>
+ <string name="subtype_no_language_qwerty" msgid="244337630616742604">"alfabet (QWERTY)"</string>
<string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabet (QWERTZ)"</string>
<string name="subtype_no_language_azerty" msgid="8144348527575640087">"Alfabet (AZERTY)"</string>
<string name="subtype_no_language_dvorak" msgid="1564494667584718094">"Alfabet (Dvorak)"</string>
diff --git a/java/res/values-ne-rNP/strings-emoji-descriptions.xml b/java/res/values-ne-rNP/strings-emoji-descriptions.xml
index 43f4d892b..39e5bc075 100644
--- a/java/res/values-ne-rNP/strings-emoji-descriptions.xml
+++ b/java/res/values-ne-rNP/strings-emoji-descriptions.xml
@@ -267,7 +267,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"कुकीज"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"चकलेट बार"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"क्यान्डी"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"लालीपप"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lollipop"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"कस्तार्ड"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"महदानी"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"सर्टकेक"</string>
diff --git a/java/res/values-ro/strings-emoji-descriptions.xml b/java/res/values-ro/strings-emoji-descriptions.xml
index f44a0b974..2ac84e5a0 100644
--- a/java/res/values-ro/strings-emoji-descriptions.xml
+++ b/java/res/values-ro/strings-emoji-descriptions.xml
@@ -267,7 +267,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Biscuit"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Ciocolată"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Bomboane"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Acadea"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lollipop"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Budincă"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Oală de miere"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"Prăjitură"</string>
diff --git a/java/res/values-si-rLK/strings-emoji-descriptions.xml b/java/res/values-si-rLK/strings-emoji-descriptions.xml
index 14187a6d9..ae341dcd2 100644
--- a/java/res/values-si-rLK/strings-emoji-descriptions.xml
+++ b/java/res/values-si-rLK/strings-emoji-descriptions.xml
@@ -267,7 +267,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"කුකීය"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"චොකලට් බාරය"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"පැණිරස"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"ලොලිපොප්"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lollipop"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"කස්ටට්"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"මී පැණි මුට්ටිය"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"ෂොට් කේක්"</string>
diff --git a/java/res/values-sr/strings-emoji-descriptions.xml b/java/res/values-sr/strings-emoji-descriptions.xml
index 0aecca22f..f1764c84c 100644
--- a/java/res/values-sr/strings-emoji-descriptions.xml
+++ b/java/res/values-sr/strings-emoji-descriptions.xml
@@ -45,7 +45,7 @@
<string name="spoken_emoji_23EA" msgid="2251396938087774944">"Црни двоструки троугао усмерен налево"</string>
<string name="spoken_emoji_23EB" msgid="3746885195641491865">"Црни двоструки троугао усмерен нагоре"</string>
<string name="spoken_emoji_23EC" msgid="7852372752901163416">"Црни двоструки троугао усмерен надоле"</string>
- <string name="spoken_emoji_23F0" msgid="8474219588750627870">"Будилник"</string>
+ <string name="spoken_emoji_23F0" msgid="8474219588750627870">"Аларм"</string>
<string name="spoken_emoji_23F3" msgid="166900119581024371">"Пешчани сат са песком који тече"</string>
<string name="spoken_emoji_24C2" msgid="3948348737566038470">"Заокружено велико латинично слово м"</string>
<string name="spoken_emoji_25AA" msgid="7865181015100227349">"Мали црни квадрат"</string>
diff --git a/java/res/values-sv/strings-emoji-descriptions.xml b/java/res/values-sv/strings-emoji-descriptions.xml
index 879de0b90..e49c73ce4 100644
--- a/java/res/values-sv/strings-emoji-descriptions.xml
+++ b/java/res/values-sv/strings-emoji-descriptions.xml
@@ -267,7 +267,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Småkaka"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Chokladkaka"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Godis"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Klubba"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lollipop"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Vaniljkräm"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Honungsburk"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"Sockerkaka"</string>
diff --git a/java/res/values-sw/strings-emoji-descriptions.xml b/java/res/values-sw/strings-emoji-descriptions.xml
index 57163878e..329bf398a 100644
--- a/java/res/values-sw/strings-emoji-descriptions.xml
+++ b/java/res/values-sw/strings-emoji-descriptions.xml
@@ -267,7 +267,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Biskuti"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Mchi wa chokoleti"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Peremende"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Peremende ya kijiti"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lollipop"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Faluda au Kastadi"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Emoji ya chungu cha asali"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"Keki tamu yenye vitandamlo inayofanana na biskuti"</string>
diff --git a/java/res/values-tr/strings.xml b/java/res/values-tr/strings.xml
index 0344c9a83..bb0f9ef98 100644
--- a/java/res/values-tr/strings.xml
+++ b/java/res/values-tr/strings.xml
@@ -47,7 +47,7 @@
<string name="use_personalized_dicts" msgid="5167396352105467626">"Kişisel öneriler"</string>
<string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> uygulamasını iyileştir"</string>
<string name="use_double_space_period" msgid="8781529969425082860">"Çift boşlukla nokta ekleme"</string>
- <string name="use_double_space_period_summary" msgid="6532892187247952799">"Boşluk çubuğuna iki kez vurmak nokta ve ardından bir boşluk ekler"</string>
+ <string name="use_double_space_period_summary" msgid="6532892187247952799">"Boşluk çubuğuna iki kez dokunmak nokta ve ardından bir boşluk ekler"</string>
<string name="auto_cap" msgid="1719746674854628252">"Otomatik olarak büyük harf yap"</string>
<string name="auto_cap_summary" msgid="7934452761022946874">"Her cümlenin ilk kelimesini büyük harf yap"</string>
<string name="edit_personal_dictionary" msgid="3996910038952940420">"Kişisel sözlük"</string>
diff --git a/java/res/values-uk/strings.xml b/java/res/values-uk/strings.xml
index c4b262514..ff5bcd539 100644
--- a/java/res/values-uk/strings.xml
+++ b/java/res/values-uk/strings.xml
@@ -55,7 +55,7 @@
<string name="main_dictionary" msgid="4798763781818361168">"Основний словник"</string>
<string name="prefs_show_suggestions" msgid="8026799663445531637">"Показувати пропозиції виправлень"</string>
<string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Відображати пропоновані слова під час вводу"</string>
- <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"Блокувати образливі слова"</string>
+ <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"Блокувати нецензурні слова"</string>
<string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Не пропонувати потенційно образливі слова"</string>
<string name="auto_correction" msgid="7630720885194996950">"Автовиправлення"</string>
<string name="auto_correction_summary" msgid="5625751551134658006">"Пробіл і пунктуація автоматично виправляють слова з помилками"</string>
diff --git a/java/res/values-vi/strings-emoji-descriptions.xml b/java/res/values-vi/strings-emoji-descriptions.xml
index 8b44dcfbf..492c726d1 100644
--- a/java/res/values-vi/strings-emoji-descriptions.xml
+++ b/java/res/values-vi/strings-emoji-descriptions.xml
@@ -267,7 +267,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Bánh quy"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Thanh sôcôla"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Kẹo"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Kẹo que"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lollipop"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Món sữa trứng"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Mắt ong"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"Bánh bơ giòn"</string>
diff --git a/java/res/values-vi/strings.xml b/java/res/values-vi/strings.xml
index 4cb075a6a..923e3044e 100644
--- a/java/res/values-vi/strings.xml
+++ b/java/res/values-vi/strings.xml
@@ -25,7 +25,7 @@
<string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Trình kiểm tra chính tả sử dụng các mục nhập từ danh sách liên hệ của bạn"</string>
<string name="vibrate_on_keypress" msgid="5258079494276955460">"Rung khi nhấn phím"</string>
<string name="sound_on_keypress" msgid="6093592297198243644">"Âm thanh khi nhấn phím"</string>
- <string name="popup_on_keypress" msgid="123894815723512944">"Cửa sổ bật lên khi nhấn phím"</string>
+ <string name="popup_on_keypress" msgid="123894815723512944">"Bật lên khi nhấn phím"</string>
<string name="settings_screen_preferences" msgid="2696713156722014624">"Tùy chọn"</string>
<string name="settings_screen_appearance" msgid="9153102634339912029">"Giao diện và bố cục"</string>
<string name="settings_screen_multilingual" msgid="1391301621464509659">"Tùy chọn đa ngôn ngữ"</string>
@@ -46,8 +46,8 @@
<string name="use_contacts_dict_summary" msgid="6599983334507879959">"Sử dụng tên từ Danh bạ cho các đề xuất và chỉnh sửa"</string>
<string name="use_personalized_dicts" msgid="5167396352105467626">"Đề xuất được cá nhân hóa"</string>
<string name="enable_metrics_logging" msgid="5506372337118822837">"Cải thiện <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
- <string name="use_double_space_period" msgid="8781529969425082860">"Dấu cách đôi"</string>
- <string name="use_double_space_period_summary" msgid="6532892187247952799">"Nhấn đúp vào phím cách sẽ chèn thêm một dấu sau dấu cách"</string>
+ <string name="use_double_space_period" msgid="8781529969425082860">"Nhấn đúp phím cách chèn dấu chấm câu"</string>
+ <string name="use_double_space_period_summary" msgid="6532892187247952799">"Nhấn đúp phím cách sẽ chèn thêm một dấu chấm câu, theo sau là dấu cách"</string>
<string name="auto_cap" msgid="1719746674854628252">"Tự động viết hoa"</string>
<string name="auto_cap_summary" msgid="7934452761022946874">"Viết hoa chữ đầu tiên của mỗi câu"</string>
<string name="edit_personal_dictionary" msgid="3996910038952940420">"Từ điển cá nhân"</string>
diff --git a/java/res/values-zh-rTW/strings-emoji-descriptions.xml b/java/res/values-zh-rTW/strings-emoji-descriptions.xml
index 06e260a69..b5c723066 100644
--- a/java/res/values-zh-rTW/strings-emoji-descriptions.xml
+++ b/java/res/values-zh-rTW/strings-emoji-descriptions.xml
@@ -267,7 +267,7 @@
<string name="spoken_emoji_1F36A" msgid="2726271795913042295">"餅乾"</string>
<string name="spoken_emoji_1F36B" msgid="6342163604299875931">"巧克力棒"</string>
<string name="spoken_emoji_1F36C" msgid="2168934753998218790">"糖果"</string>
- <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"棒棒糖"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lollipop"</string>
<string name="spoken_emoji_1F36E" msgid="4630541402785165902">"卡士達"</string>
<string name="spoken_emoji_1F36F" msgid="5577915387425169439">"蜂蜜罐"</string>
<string name="spoken_emoji_1F370" msgid="7243244547866114951">"水果蛋糕"</string>
diff --git a/java/src/com/android/inputmethod/latin/utils/StringUtils.java b/java/src/com/android/inputmethod/latin/utils/StringUtils.java
index 1781924ac..79128dbd2 100644
--- a/java/src/com/android/inputmethod/latin/utils/StringUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/StringUtils.java
@@ -131,20 +131,20 @@ public final class StringUtils {
public static String capitalizeFirstCodePoint(final String s, final Locale locale) {
if (s.length() <= 1) {
- return s.toUpperCase(locale);
+ return toUpperCaseOfStringForLocale(s, true /* needsToUpperCase */, locale);
}
// Please refer to the comment below in
// {@link #capitalizeFirstAndDowncaseRest(String,Locale)} as this has the same shortcomings
final int cutoff = s.offsetByCodePoints(0, 1);
- return s.substring(0, cutoff).toUpperCase(locale) + s.substring(cutoff);
+ return toUpperCaseOfStringForLocale(
+ s.substring(0, cutoff), true /* needsToUpperCase */, locale) + s.substring(cutoff);
}
public static String capitalizeFirstAndDowncaseRest(final String s, final Locale locale) {
if (s.length() <= 1) {
- return s.toUpperCase(locale);
+ return toUpperCaseOfStringForLocale(s, true /* needsToUpperCase */, locale);
}
// TODO: fix the bugs below
- // - This does not work for Greek, because it returns upper case instead of title case.
// - It does not work for Serbian, because it fails to account for the "lj" character,
// which should be "Lj" in title case and "LJ" in upper case.
// - It does not work for Dutch, because it fails to account for the "ij" digraph when it's
@@ -152,7 +152,9 @@ public final class StringUtils {
// be capitalized as "IJ" as if they were a single letter in most words (not all). If the
// unicode char for the ligature is used however, it works.
final int cutoff = s.offsetByCodePoints(0, 1);
- return s.substring(0, cutoff).toUpperCase(locale) + s.substring(cutoff).toLowerCase(locale);
+ final String titleCaseFirstLetter = toUpperCaseOfStringForLocale(
+ s.substring(0, cutoff), true /* needsToUpperCase */, locale);
+ return titleCaseFirstLetter + s.substring(cutoff).toLowerCase(locale);
}
private static final int[] EMPTY_CODEPOINTS = {};
@@ -489,10 +491,23 @@ public final class StringUtils {
return bytes;
}
+ private static final String LANGUAGE_GREEK = "el";
+
+ private static Locale getLocaleUsedForToTitleCase(final Locale locale) {
+ // In Greek locale {@link String#toUpperCase(Locale)} eliminates accents from its result.
+ // In order to get accented upper case letter, {@link Locale#ROOT} should be used.
+ if (LANGUAGE_GREEK.equals(locale.getLanguage())) {
+ return Locale.ROOT;
+ }
+ return locale;
+ }
+
public static String toUpperCaseOfStringForLocale(final String text,
final boolean needsToUpperCase, final Locale locale) {
- if (text == null || !needsToUpperCase) return text;
- return text.toUpperCase(locale);
+ if (text == null || !needsToUpperCase) {
+ return text;
+ }
+ return text.toUpperCase(getLocaleUsedForToTitleCase(locale));
}
public static int toUpperCaseOfCodeForLocale(final int code, final boolean needsToUpperCase,
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyOutput.java b/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyOutput.java
index 737d1695b..8b2bb4289 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyOutput.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyOutput.java
@@ -63,7 +63,8 @@ abstract class ExpectedKeyOutput {
final String codeString = StringUtils.newSingleCodePointString(mCode);
// A letter may have an upper case counterpart that consists of multiple code
// points, for instance the upper case of "ß" is "SS".
- return newInstance(codeString.toUpperCase(locale));
+ return newInstance(StringUtils.toUpperCaseOfStringForLocale(
+ codeString, true /* needsToUpperCase */, locale));
}
// A special negative value has no upper case.
return this;
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyVisual.java b/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyVisual.java
index facdf7043..34024a5e0 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyVisual.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyVisual.java
@@ -19,6 +19,7 @@ package com.android.inputmethod.keyboard.layout.expected;
import com.android.inputmethod.keyboard.Key;
import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
import com.android.inputmethod.keyboard.internal.MoreKeySpec;
+import com.android.inputmethod.latin.utils.StringUtils;
import java.util.Locale;
@@ -105,7 +106,8 @@ abstract class ExpectedKeyVisual {
@Override
ExpectedKeyVisual toUpperCase(final Locale locale) {
- return new Label(mLabel.toUpperCase(locale));
+ return new Label(StringUtils.toUpperCaseOfStringForLocale(
+ mLabel, true /* needsToUpperCase */, locale));
}
@Override
diff --git a/tests/src/com/android/inputmethod/latin/utils/StringUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/StringUtilsTests.java
new file mode 100644
index 000000000..ba2e99802
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/utils/StringUtilsTests.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.utils.StringUtils;
+
+import java.util.Locale;
+
+@SmallTest
+public class StringUtilsTests extends AndroidTestCase {
+ private static final Locale US = Locale.US;
+ private static final Locale GERMAN = Locale.GERMAN;
+ private static final Locale TURKEY = new Locale("tr", "TR");
+ private static final Locale GREECE = new Locale("el", "GR");
+
+ private static void assert_toUpperCaseOfStringForLocale(final Locale locale,
+ final String lowerCase, final String expected) {
+ assertEquals(lowerCase + " in " + locale, expected,
+ StringUtils.toUpperCaseOfStringForLocale(
+ lowerCase, true /* needsToUpperCase */, locale));
+ }
+
+ public void test_toUpperCaseOfStringForLocale() {
+ assert_toUpperCaseOfStringForLocale(US, null, null);
+ assert_toUpperCaseOfStringForLocale(US, "", "");
+ assert_toUpperCaseOfStringForLocale(US, "aeiou", "AEIOU");
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+ // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+ // U+00C0: "À" LATIN CAPITAL LETTER A WITH GRAVE
+ // U+00C8: "È" LATIN CAPITAL LETTER E WITH GRAVE
+ // U+00CE: "Î" LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ // U+00D6: "Ö" LATIN CAPITAL LETTER O WITH DIAERESIS
+ // U+016A: "Ū" LATIN CAPITAL LETTER U WITH MACRON
+ // U+00D1: "Ñ" LATIN CAPITAL LETTER N WITH TILDE
+ // U+00C7: "Ç" LATIN CAPITAL LETTER C WITH CEDILLA
+ assert_toUpperCaseOfStringForLocale(US,
+ "\u00E0\u00E8\u00EE\u00F6\u016B\u00F1\u00E7",
+ "\u00C0\u00C8\u00CE\u00D6\u016A\u00D1\u00C7");
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ // U+015A: "Ś" LATIN CAPITAL LETTER S WITH ACUTE
+ // U+0160: "Š" LATIN CAPITAL LETTER S WITH CARONZ
+ assert_toUpperCaseOfStringForLocale(GERMAN,
+ "\u00DF\u015B\u0161",
+ "SS\u015A\u0160");
+ // U+0259: "ə" LATIN SMALL LETTER SCHWA
+ // U+0069: "i" LATIN SMALL LETTER I
+ // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
+ // U+018F: "Ə" LATIN SMALL LETTER SCHWA
+ // U+0130: "İ" LATIN SMALL LETTER I WITH DOT ABOVE
+ // U+0049: "I" LATIN SMALL LETTER I
+ assert_toUpperCaseOfStringForLocale(TURKEY,
+ "\u0259\u0069\u0131",
+ "\u018F\u0130\u0049");
+ // U+03C3: "σ" GREEK SMALL LETTER SIGMA
+ // U+03C2: "ς" GREEK SMALL LETTER FINAL SIGMA
+ // U+03A3: "Σ" GREEK CAPITAL LETTER SIGMA
+ assert_toUpperCaseOfStringForLocale(GREECE,
+ "\u03C3\u03C2",
+ "\u03A3\u03A3");
+ // U+03AC: "ά" GREEK SMALL LETTER ALPHA WITH TONOS
+ // U+03AD: "έ" GREEK SMALL LETTER EPSILON WITH TONOS
+ // U+03AE: "ή" GREEK SMALL LETTER ETA WITH TONOS
+ // U+03AF: "ί" GREEK SMALL LETTER IOTA WITH TONOS
+ // U+03CC: "ό" GREEK SMALL LETTER OMICRON WITH TONOS
+ // U+03CD: "ύ" GREEK SMALL LETTER UPSILON WITH TONOS
+ // U+03CE: "ώ" GREEK SMALL LETTER OMEGA WITH TONOS
+ // U+0386: "Ά" GREEK CAPITAL LETTER ALPHA WITH TONOS
+ // U+0388: "Έ" GREEK CAPITAL LETTER EPSILON WITH TONOS
+ // U+0389: "Ή" GREEK CAPITAL LETTER ETA WITH TONOS
+ // U+038A: "Ί" GREEK CAPITAL LETTER IOTA WITH TONOS
+ // U+038C: "Ό" GREEK CAPITAL LETTER OMICRON WITH TONOS
+ // U+038E: "Ύ" GREEK CAPITAL LETTER UPSILON WITH TONOS
+ // U+038F: "Ώ" GREEK CAPITAL LETTER OMEGA WITH TONOS
+ assert_toUpperCaseOfStringForLocale(GREECE,
+ "\u03AC\u03AD\u03AE\u03AF\u03CC\u03CD\u03CE",
+ "\u0386\u0388\u0389\u038A\u038C\u038E\u038F");
+ // U+03CA: "ϊ" GREEK SMALL LETTER IOTA WITH DIALYTIKA
+ // U+03CB: "ϋ" GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+ // U+0390: "ΐ" GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+ // U+03B0: "ΰ" GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+ // U+03AA: "Ϊ" GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+ // U+03AB: "Ϋ" GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+ // U+0399: "Ι" GREEK CAPITAL LETTER IOTA
+ // U+03A5: "Υ" GREEK CAPITAL LETTER UPSILON
+ // U+0308: COMBINING DIAERESIS
+ // U+0301: COMBINING GRAVE ACCENT
+ assert_toUpperCaseOfStringForLocale(GREECE,
+ "\u03CA\u03CB\u0390\u03B0",
+ "\u03AA\u03AB\u0399\u0308\u0301\u03A5\u0308\u0301");
+ }
+
+ private static void assert_toUpperCaseOfCodeForLocale(final Locale locale, final int lowerCase,
+ final int expected) {
+ assertEquals(lowerCase + " in " + locale, expected,
+ StringUtils.toUpperCaseOfCodeForLocale(
+ lowerCase, true /* needsToUpperCase */, locale));
+ }
+
+ public void test_toUpperCaseOfCodeForLocale() {
+ assert_toUpperCaseOfCodeForLocale(US, Constants.CODE_ENTER, Constants.CODE_ENTER);
+ assert_toUpperCaseOfCodeForLocale(US, Constants.CODE_SPACE, Constants.CODE_SPACE);
+ assert_toUpperCaseOfCodeForLocale(US, Constants.CODE_COMMA, Constants.CODE_COMMA);
+ // U+0069: "i" LATIN SMALL LETTER I
+ // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
+ // U+0130: "İ" LATIN SMALL LETTER I WITH DOT ABOVE
+ // U+0049: "I" LATIN SMALL LETTER I
+ assert_toUpperCaseOfCodeForLocale(US, 0x0069, 0x0049); // i -> I
+ assert_toUpperCaseOfCodeForLocale(US, 0x0131, 0x0049); // ı -> I
+ assert_toUpperCaseOfCodeForLocale(TURKEY, 0x0069, 0x0130); // i -> İ
+ assert_toUpperCaseOfCodeForLocale(TURKEY, 0x0131, 0x0049); // ı -> I
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // The title case of "ß" is "SS".
+ assert_toUpperCaseOfCodeForLocale(US, 0x00DF, Constants.CODE_UNSPECIFIED);
+ // U+03AC: "ά" GREEK SMALL LETTER ALPHA WITH TONOS
+ // U+0386: "Ά" GREEK CAPITAL LETTER ALPHA WITH TONOS
+ assert_toUpperCaseOfCodeForLocale(GREECE, 0x03AC, 0x0386);
+ // U+03CA: "ϊ" GREEK SMALL LETTER IOTA WITH DIALYTIKA
+ // U+03AA: "Ϊ" GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+ assert_toUpperCaseOfCodeForLocale(GREECE, 0x03CA, 0x03AA);
+ // U+03B0: "ΰ" GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+ // The title case of "ΰ" is "\u03A5\u0308\u0301".
+ assert_toUpperCaseOfCodeForLocale(GREECE, 0x03B0, Constants.CODE_UNSPECIFIED);
+ }
+
+ private static void assert_capitalizeFirstCodePoint(final Locale locale, final String text,
+ final String expected) {
+ assertEquals(text + " in " + locale, expected,
+ StringUtils.capitalizeFirstCodePoint(text, locale));
+ }
+
+ public void test_capitalizeFirstCodePoint() {
+ assert_capitalizeFirstCodePoint(US, "", "");
+ assert_capitalizeFirstCodePoint(US, "a", "A");
+ assert_capitalizeFirstCodePoint(US, "à", "À");
+ assert_capitalizeFirstCodePoint(US, "ß", "SS");
+ assert_capitalizeFirstCodePoint(US, "text", "Text");
+ assert_capitalizeFirstCodePoint(US, "iGoogle", "IGoogle");
+ assert_capitalizeFirstCodePoint(TURKEY, "iyi", "İyi");
+ assert_capitalizeFirstCodePoint(TURKEY, "ısırdı", "Isırdı");
+ assert_capitalizeFirstCodePoint(GREECE, "ά", "Ά");
+ assert_capitalizeFirstCodePoint(GREECE, "άνεση", "Άνεση");
+ }
+
+ private static void assert_capitalizeFirstAndDowncaseRest(final Locale locale,
+ final String text, final String expected) {
+ assertEquals(text + " in " + locale, expected,
+ StringUtils.capitalizeFirstAndDowncaseRest(text, locale));
+ }
+
+ public void test_capitalizeFirstAndDowncaseRest() {
+ assert_capitalizeFirstAndDowncaseRest(US, "", "");
+ assert_capitalizeFirstAndDowncaseRest(US, "a", "A");
+ assert_capitalizeFirstAndDowncaseRest(US, "à", "À");
+ assert_capitalizeFirstAndDowncaseRest(US, "ß", "SS");
+ assert_capitalizeFirstAndDowncaseRest(US, "text", "Text");
+ assert_capitalizeFirstAndDowncaseRest(US, "iGoogle", "Igoogle");
+ assert_capitalizeFirstAndDowncaseRest(US, "invite", "Invite");
+ assert_capitalizeFirstAndDowncaseRest(US, "INVITE", "Invite");
+ assert_capitalizeFirstAndDowncaseRest(TURKEY, "iyi", "İyi");
+ assert_capitalizeFirstAndDowncaseRest(TURKEY, "İYİ", "İyi");
+ assert_capitalizeFirstAndDowncaseRest(TURKEY, "ısırdı", "Isırdı");
+ assert_capitalizeFirstAndDowncaseRest(TURKEY, "ISIRDI", "Isırdı");
+ assert_capitalizeFirstAndDowncaseRest(GREECE, "ά", "Ά");
+ assert_capitalizeFirstAndDowncaseRest(GREECE, "άνεση", "Άνεση");
+ assert_capitalizeFirstAndDowncaseRest(GREECE, "ΆΝΕΣΗ", "Άνεση");
+ }
+}