aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/res/values-af/strings.xml12
-rw-r--r--java/res/values-am/strings.xml12
-rw-r--r--java/res/values-ar/donottranslate-more-keys.xml144
-rw-r--r--java/res/values-ar/strings.xml12
-rw-r--r--java/res/values-be/donottranslate-more-keys.xml31
-rw-r--r--java/res/values-ca/donottranslate-more-keys.xml73
-rw-r--r--java/res/values-cs/donottranslate-more-keys.xml87
-rw-r--r--java/res/values-da/donottranslate-more-keys.xml71
-rw-r--r--java/res/values-de/donottranslate-more-keys.xml54
-rw-r--r--java/res/values-en-rGB/strings.xml12
-rw-r--r--java/res/values-en/donottranslate-more-keys.xml63
-rw-r--r--java/res/values-es-rUS/strings.xml12
-rw-r--r--java/res/values-es/donottranslate-more-keys.xml73
-rw-r--r--java/res/values-et/donottranslate-more-keys.xml114
-rw-r--r--java/res/values-fa/donottranslate-more-keys.xml146
-rw-r--r--java/res/values-fi/donottranslate-more-keys.xml56
-rw-r--r--java/res/values-fr/donottranslate-more-keys.xml68
-rw-r--r--java/res/values-hi/donottranslate-more-keys.xml51
-rw-r--r--java/res/values-hr/donottranslate-more-keys.xml38
-rw-r--r--java/res/values-hu/donottranslate-more-keys.xml62
-rw-r--r--java/res/values-is/donottranslate-more-keys.xml73
-rw-r--r--java/res/values-it/donottranslate-more-keys.xml62
-rw-r--r--java/res/values-iw/donottranslate-more-keys.xml53
-rw-r--r--java/res/values-iw/strings.xml12
-rw-r--r--java/res/values-ky/donottranslate-more-keys.xml37
-rw-r--r--java/res/values-lt/donottranslate-more-keys.xml107
-rw-r--r--java/res/values-lv/donottranslate-more-keys.xml106
-rw-r--r--java/res/values-mk/donottranslate-more-keys.xml47
-rw-r--r--java/res/values-nb/donottranslate-more-keys.xml60
-rw-r--r--java/res/values-nl/donottranslate-more-keys.xml66
-rw-r--r--java/res/values-pl/donottranslate-more-keys.xml65
-rw-r--r--java/res/values-pt/donottranslate-more-keys.xml65
-rw-r--r--java/res/values-rm/donottranslate-more-keys.xml29
-rw-r--r--java/res/values-ro/donottranslate-more-keys.xml45
-rw-r--r--java/res/values-ru/donottranslate-more-keys.xml33
-rw-r--r--java/res/values-ru/strings.xml12
-rw-r--r--java/res/values-sk/donottranslate-more-keys.xml107
-rw-r--r--java/res/values-sl/donottranslate-more-keys.xml30
-rw-r--r--java/res/values-sr/donottranslate-more-keys.xml47
-rw-r--r--java/res/values-sv/donottranslate-more-keys.xml54
-rw-r--r--java/res/values-sv/strings.xml12
-rw-r--r--java/res/values-sw/strings.xml12
-rw-r--r--java/res/values-th/strings.xml2
-rw-r--r--java/res/values-tl/strings.xml12
-rw-r--r--java/res/values-tr/donottranslate-more-keys.xml57
-rw-r--r--java/res/values-uk/donottranslate-more-keys.xml33
-rw-r--r--java/res/values-vi/donottranslate-more-keys.xml95
-rw-r--r--java/res/values-vi/strings.xml12
-rw-r--r--java/res/values-zz/donottranslate-more-keys.xml139
-rw-r--r--java/res/values/attrs.xml7
-rw-r--r--java/res/values/donottranslate-more-keys.xml187
-rw-r--r--java/res/values/donottranslate.xml18
-rw-r--r--java/res/xml-sw600dp/key_shortcut.xml2
-rw-r--r--java/res/xml-sw600dp/key_styles_common.xml16
-rw-r--r--java/res/xml-sw600dp/keys_apostrophe_dash.xml12
-rw-r--r--java/res/xml-sw600dp/keys_comma_period.xml10
-rw-r--r--java/res/xml-sw600dp/rowkeys_symbols2.xml8
-rw-r--r--java/res/xml-sw600dp/rowkeys_symbols3.xml12
-rw-r--r--java/res/xml-sw600dp/rowkeys_symbols_shift1.xml2
-rw-r--r--java/res/xml-sw600dp/rows_number_normal.xml2
-rw-r--r--java/res/xml-sw600dp/rows_symbols4.xml2
-rw-r--r--java/res/xml-sw768dp/key_styles_common.xml20
-rw-r--r--java/res/xml-sw768dp/keys_apostrophe_dash.xml12
-rw-r--r--java/res/xml-sw768dp/rows_number_normal.xml2
-rw-r--r--java/res/xml-sw768dp/rows_symbols4.xml2
-rw-r--r--java/res/xml/key_azerty_quote.xml2
-rw-r--r--java/res/xml/key_styles_common.xml18
-rw-r--r--java/res/xml/key_styles_currency.xml6
-rw-r--r--java/res/xml/key_styles_currency_dollar.xml2
-rw-r--r--java/res/xml/key_styles_currency_euro.xml2
-rw-r--r--java/res/xml/key_styles_enter.xml22
-rw-r--r--java/res/xml/key_styles_number.xml12
-rw-r--r--java/res/xml/keys_less_greater.xml4
-rw-r--r--java/res/xml/keys_parentheses.xml4
-rw-r--r--java/res/xml/row_qwerty4.xml4
-rw-r--r--java/res/xml/rowkeys_azerty1.xml18
-rw-r--r--java/res/xml/rowkeys_azerty2.xml14
-rw-r--r--java/res/xml/rowkeys_azerty3.xml8
-rw-r--r--java/res/xml/rowkeys_east_slavic1.xml10
-rw-r--r--java/res/xml/rowkeys_east_slavic2.xml6
-rw-r--r--java/res/xml/rowkeys_east_slavic3.xml4
-rw-r--r--java/res/xml/rowkeys_nordic1.xml2
-rw-r--r--java/res/xml/rowkeys_nordic2.xml8
-rw-r--r--java/res/xml/rowkeys_qwerty1.xml16
-rw-r--r--java/res/xml/rowkeys_qwerty2.xml16
-rw-r--r--java/res/xml/rowkeys_qwerty3.xml8
-rw-r--r--java/res/xml/rowkeys_qwertz1.xml16
-rw-r--r--java/res/xml/rowkeys_qwertz3.xml8
-rw-r--r--java/res/xml/rowkeys_south_slavic1.xml6
-rw-r--r--java/res/xml/rowkeys_south_slavic2.xml2
-rw-r--r--java/res/xml/rowkeys_south_slavic3.xml4
-rw-r--r--java/res/xml/rowkeys_symbols1.xml60
-rw-r--r--java/res/xml/rowkeys_symbols2.xml10
-rw-r--r--java/res/xml/rowkeys_symbols3.xml12
-rw-r--r--java/res/xml/rowkeys_symbols_shift1.xml2
-rw-r--r--java/res/xml/rows_number_normal.xml2
-rw-r--r--java/res/xml/rows_symbols4.xml4
-rw-r--r--java/src/com/android/inputmethod/keyboard/Key.java43
-rw-r--r--java/src/com/android/inputmethod/keyboard/Keyboard.java29
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java37
-rw-r--r--java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java5
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java50
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java80
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardLabelsSet.java2477
-rw-r--r--java/src/com/android/inputmethod/latin/BinaryDictionary.java3
-rw-r--r--java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java22
-rw-r--r--java/src/com/android/inputmethod/latin/DictionaryFactory.java113
-rw-r--r--java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java393
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java49
-rw-r--r--java/src/com/android/inputmethod/latin/SettingsValues.java2
-rw-r--r--java/src/com/android/inputmethod/latin/Suggest.java14
-rw-r--r--java/src/com/android/inputmethod/latin/WhitelistDictionary.java1
-rw-r--r--java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java4
113 files changed, 3348 insertions, 3275 deletions
diff --git a/java/res/values-af/strings.xml b/java/res/values-af/strings.xml
index c5ecca2f2..a0bef12f7 100644
--- a/java/res/values-af/strings.xml
+++ b/java/res/values-af/strings.xml
@@ -61,12 +61,9 @@
<string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Matig"</string>
<string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Aggressief"</string>
<string name="auto_correction_threshold_mode_very_aggeressive" msgid="3386782235540547678">"Baie aggressief"</string>
- <!-- no translation found for bigram_suggestion (8169311444438922902) -->
- <skip />
- <!-- no translation found for bigram_suggestion_summary (6635527607242625713) -->
- <skip />
- <!-- no translation found for bigram_prediction (3216364899483135294) -->
- <skip />
+ <string name="bigram_suggestion" msgid="8169311444438922902">"Volgende woordvoorstelle"</string>
+ <string name="bigram_suggestion_summary" msgid="6635527607242625713">"Gebruik vorige woord om voorstelle te verbeter"</string>
+ <string name="bigram_prediction" msgid="3216364899483135294">"Volgende woordvoorspelling"</string>
<string name="bigram_prediction_summary" msgid="1747261921174300098">"Gebruik vorige woord ook vir voorspelling"</string>
<string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Gestoor"</string>
<string name="label_go_key" msgid="1635148082137219148">"Gaan"</string>
@@ -121,8 +118,7 @@
<string name="keyboard_layout" msgid="8451164783510487501">"Sleutelbordtema"</string>
<string name="subtype_en_GB" msgid="88170601942311355">"Engels (VK)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Engels (VS)"</string>
- <!-- no translation found for subtype_no_language_qwerty (2956121451616633133) -->
- <skip />
+ <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Geen taal (QWERTY)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Bruikbaarheidstudie-modus"</string>
<string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Sleuteldruk se vibrasie-tydsduurinstellings"</string>
<string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Sleuteldruk se klankvolume-instellings"</string>
diff --git a/java/res/values-am/strings.xml b/java/res/values-am/strings.xml
index 3450bec2f..2d898aac6 100644
--- a/java/res/values-am/strings.xml
+++ b/java/res/values-am/strings.xml
@@ -61,12 +61,9 @@
<string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"መጠነኛ"</string>
<string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"ኃይለኛ"</string>
<string name="auto_correction_threshold_mode_very_aggeressive" msgid="3386782235540547678">"በጣም ቁጡ"</string>
- <!-- no translation found for bigram_suggestion (8169311444438922902) -->
- <skip />
- <!-- no translation found for bigram_suggestion_summary (6635527607242625713) -->
- <skip />
- <!-- no translation found for bigram_prediction (3216364899483135294) -->
- <skip />
+ <string name="bigram_suggestion" msgid="8169311444438922902">"የቀጣይ ቃል አስተያየቶች"</string>
+ <string name="bigram_suggestion_summary" msgid="6635527607242625713">"ምክሮችን ለማሻሻል ቀዳሚ ቃል ተጠቀም"</string>
+ <string name="bigram_prediction" msgid="3216364899483135294">"የቀጣይ ቃል ግምት"</string>
<string name="bigram_prediction_summary" msgid="1747261921174300098">"ለትንበያ የቀደመ ቃል እንዲሁ ተጠቀም"</string>
<string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : ተቀምጧል"</string>
<string name="label_go_key" msgid="1635148082137219148">"ሂድ"</string>
@@ -121,8 +118,7 @@
<string name="keyboard_layout" msgid="8451164783510487501">"የቁልፍ ሰሌዳ ገጽታ"</string>
<string name="subtype_en_GB" msgid="88170601942311355">"እንግሊዘኛ (የታላቋ ብሪታንያ)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"እንግሊዘኛ (ዩ.ኤስ)"</string>
- <!-- no translation found for subtype_no_language_qwerty (2956121451616633133) -->
- <skip />
+ <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"ቋንቋ አልባ (QWERTY)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"የተገልጋይነት ጥናት ሁነታ"</string>
<string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"ቁልፍ ተጫን በቅንጅቶች ወቅት ንዝረት"</string>
<string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"ቁልፍ ተጫን የድምጽ መጠን ቅንጅቶች"</string>
diff --git a/java/res/values-ar/donottranslate-more-keys.xml b/java/res/values-ar/donottranslate-more-keys.xml
deleted file mode 100644
index 402e17160..000000000
--- a/java/res/values-ar/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+061F: "؟" ARABIC QUESTION MARK
- U+060C: "،" ARABIC COMMA
- U+061B: "؛" ARABIC SEMICOLON -->
- <!-- U+0650: "ِ" ARABIC KASRA
- U+064E: "َ" ARABIC FATHA
- U+064D: "ٍ" ARABIC KASRATAN
- U+064B: "ً" ARABIC FATHATAN
- U+0656: "ٖ" ARABIC SUBSCRIPT ALEF
- U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF
- U+0655: "ٕ" ARABIC HAMZA BELOW
- U+0654: "ٔ" ARABIC HAMZA ABOVE -->
- <!-- U+064F: "ُ" ARABIC DAMMA
- U+064C: "ٌ" ARABIC DAMMATAN
- U+0651: "ّ" ARABIC SHADDA
- U+0652: "ْ" ARABIC SUKUN
- U+0653: "ٓ" ARABIC MADDAH ABOVE
- U+0640: "ـ" ARABIC TATWEEL -->
- <!-- In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. -->
- <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,\",\',-,:,!,&#x061F;,&#x060C;,&#x061B;,&#x0650;,&#x064E;,&#x064D;,&#x064B;,&#x0656;,&#x0670;,&#x0655;,&#x0654;,&#x064F;,&#x064C;,&#x0651;,&#x0652;,&#x0653;,&#x0640;&#x0640;&#x0640;|&#x0640;,/"</string>
- <string name="keyhintlabel_for_punctuation">&#x064B;</string>
- <!-- U+0661: "١" ARABIC-INDIC DIGIT ONE -->
- <string name="keylabel_for_symbols_1">&#x0661;</string>
- <!-- U+0662: "٢" ARABIC-INDIC DIGIT TWO -->
- <string name="keylabel_for_symbols_2">&#x0662;</string>
- <!-- U+0663: "٣" ARABIC-INDIC DIGIT THREE -->
- <string name="keylabel_for_symbols_3">&#x0663;</string>
- <!-- U+0664: "٤" ARABIC-INDIC DIGIT FOUR -->
- <string name="keylabel_for_symbols_4">&#x0664;</string>
- <!-- U+0665: "٥" ARABIC-INDIC DIGIT FIVE -->
- <string name="keylabel_for_symbols_5">&#x0665;</string>
- <!-- U+0666: "٦" ARABIC-INDIC DIGIT SIX -->
- <string name="keylabel_for_symbols_6">&#x0666;</string>
- <!-- U+0667: "٧" ARABIC-INDIC DIGIT SEVEN -->
- <string name="keylabel_for_symbols_7">&#x0667;</string>
- <!-- U+0668: "٨" ARABIC-INDIC DIGIT EIGHT -->
- <string name="keylabel_for_symbols_8">&#x0668;</string>
- <!-- U+0669: "٩" ARABIC-INDIC DIGIT NINE -->
- <string name="keylabel_for_symbols_9">&#x0669;</string>
- <!-- U+0660: "٠" ARABIC-INDIC DIGIT ZERO -->
- <string name="keylabel_for_symbols_0">&#x0660;</string>
- <string name="additional_more_keys_for_symbols_1">1</string>
- <string name="additional_more_keys_for_symbols_2">2</string>
- <string name="additional_more_keys_for_symbols_3">3</string>
- <string name="additional_more_keys_for_symbols_4">4</string>
- <string name="additional_more_keys_for_symbols_5">5</string>
- <string name="additional_more_keys_for_symbols_6">6</string>
- <string name="additional_more_keys_for_symbols_7">7</string>
- <string name="additional_more_keys_for_symbols_8">8</string>
- <string name="additional_more_keys_for_symbols_9">9</string>
- <!-- U+066B: "٫" ARABIC DECIMAL SEPARATOR
- U+066C: "٬" ARABIC THOUSANDS SEPARATOR -->
- <string name="additional_more_keys_for_symbols_0">0,&#x066B;,&#x066C;</string>
- <!-- U+060C: "،" ARABIC COMMA -->
- <string name="keylabel_for_comma">&#x060C;</string>
- <string name="more_keys_for_comma">"\\,"</string>
- <string name="keylabel_for_symbols_question">&#x061F;</string>
- <string name="keylabel_for_symbols_semicolon">&#x061B;</string>
- <!-- U+066A: "٪" ARABIC PERCENT SIGN -->
- <string name="keylabel_for_symbols_percent">&#x066A;</string>
- <string name="more_keys_for_symbols_question">\?</string>
- <string name="more_keys_for_symbols_semicolon">;</string>
- <!-- U+2030: "‰" PER MILLE SIGN -->
- <string name="more_keys_for_symbols_percent">%,&#x2030;</string>
- <!-- U+060C: "،" ARABIC COMMA
- U+061B: "؛" ARABIC SEMICOLON
- U+061F: "؟" ARABIC QUESTION MARK -->
- <string name="keylabel_for_apostrophe">&#x060C;</string>
- <string name="keylabel_for_dash">"."</string>
- <string name="keyhintlabel_for_apostrophe">&#x061F;</string>
- <string name="keyhintlabel_for_dash">&#x064B;</string>
- <string name="more_keys_for_apostrophe">"&#x061F;,&#x061B;,!,:,-,/,\',\""</string>
- <!-- U+0651: "ّ" ARABIC SHADDA
- U+0652: "ْ" ARABIC SUKUN
- U+064C: "ٌ" ARABIC DAMMATAN
- U+0653: "ٓ" ARABIC MADDAH ABOVE
- U+064F: "ُ" ARABIC DAMMA -->
- <!-- U+0650: "ِ" ARABIC KASRA
- U+064E: "َ" ARABIC FATHA
- U+064B: "ً" ARABIC FATHATAN
- U+0640: "ـ" ARABIC TATWEEL
- U+064D: "ٍ" ARABIC KASRATAN -->
- <!-- U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF
- U+0656: "ٖ" ARABIC SUBSCRIPT ALEF
- U+0654: "ٔ" ARABIC HAMZA ABOVE
- U+0655: "ٕ" ARABIC HAMZA BELOW -->
- <!-- In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. -->
- <string name="more_keys_for_dash">"&#x0651;,&#x0652;,&#x064C;,&#x0653;,&#x064F;,&#x0650;,&#x064E;,&#x064B;,&#x0640;&#x0640;&#x0640;|&#x0640;,&#x064D;,&#x0654;,&#x0656;,&#x0655;,&#x0670;"</string>
- <!-- U+266A: "♪" EIGHTH NOTE -->
- <string name="more_keys_for_bullet">&#x266A;</string>
- <!-- U+2605: "★" BLACK STAR
- U+066D: "٭" ARABIC FIVE POINTED STAR -->
- <string name="more_keys_for_star">&#x2605;,&#x066D;</string>
- <!-- The all letters need to be mirrored are found at
- http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
- <!-- U+FD3E: "﴾" ORNATE LEFT PARENTHESIS
- U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS -->
- <!-- TODO: DroidSansArabic lacks the glyph of U+FD3E ORNATE LEFT PARENTHESIS -->
- <!-- TODO: DroidSansArabic lacks the glyph of U+FD3F ORNATE RIGHT PARENTHESIS -->
- <string name="more_keys_for_left_parenthesis">!fixedColumnOrder!4,&#xFD3E;|&#xFD3F;,&lt;|&gt;,{|},[|]</string>
- <string name="more_keys_for_right_parenthesis">!fixedColumnOrder!4,&#xFD3F;|&#xFD3E;,&gt;|&lt;,}|{,]|[</string>
- <!-- U+2264: "≤" LESS-THAN OR EQUAL TO
- U+2265: "≥" GREATER-THAN EQUAL TO
- U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
- U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
- U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
- The following characters don't need BIDI mirroring.
- U+2018: "‘" LEFT SINGLE QUOTATION MARK
- U+2019: "’" RIGHT SINGLE QUOTATION MARK
- U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
- U+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK
- U+201C: "“" LEFT DOUBLE QUOTATION MARK
- U+201D: "”" RIGHT DOUBLE QUOTATION MARK
- U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
- U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
- <string name="more_keys_for_less_than">!fixedColumnOrder!3,&#x2039;|&#x203A;,&#x2264;|&#x2265;,&#x00AB;|&#x00BB;</string>
- <string name="more_keys_for_greater_than">!fixedColumnOrder!3,&#x203A;|&#x2039;,&#x2265;|&#x2264;,&#x00BB;|&#x00AB;</string>
- <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
- <!-- <string name="more_keys_for_double_quote">&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string> -->
- <string name="more_keys_for_double_quote">!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string>
- <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
- <!-- <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB|&#x00AB;;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string> -->
- <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
-</resources>
diff --git a/java/res/values-ar/strings.xml b/java/res/values-ar/strings.xml
index 76a077859..d07a65b42 100644
--- a/java/res/values-ar/strings.xml
+++ b/java/res/values-ar/strings.xml
@@ -61,12 +61,9 @@
<string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"معتدل"</string>
<string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"حاد"</string>
<string name="auto_correction_threshold_mode_very_aggeressive" msgid="3386782235540547678">"شديد الصرامة"</string>
- <!-- no translation found for bigram_suggestion (8169311444438922902) -->
- <skip />
- <!-- no translation found for bigram_suggestion_summary (6635527607242625713) -->
- <skip />
- <!-- no translation found for bigram_prediction (3216364899483135294) -->
- <skip />
+ <string name="bigram_suggestion" msgid="8169311444438922902">"اقتراحات الكلمات التالية"</string>
+ <string name="bigram_suggestion_summary" msgid="6635527607242625713">"استخدام الكلمة السابقة لتحسين الاقتراحات"</string>
+ <string name="bigram_prediction" msgid="3216364899483135294">"التنبؤ بالكلمات التالي"</string>
<string name="bigram_prediction_summary" msgid="1747261921174300098">"استخدام الكلمة السابقة أيضًا للتنبؤ"</string>
<string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : تم الحفظ"</string>
<string name="label_go_key" msgid="1635148082137219148">"تنفيذ"</string>
@@ -121,8 +118,7 @@
<string name="keyboard_layout" msgid="8451164783510487501">"مظهر لوحة المفاتيح"</string>
<string name="subtype_en_GB" msgid="88170601942311355">"الإنجليزية (المملكة المتحدة)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"الإنجليزية (الولايات المتحدة)"</string>
- <!-- no translation found for subtype_no_language_qwerty (2956121451616633133) -->
- <skip />
+ <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"بدون لغة (QWERTY)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"وضع سهولة الاستخدام"</string>
<string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"إعدادات مدة اهتزاز الضغط على المفاتيح"</string>
<string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"إعدادات مستوى صوت الضغط على المفاتيح"</string>
diff --git a/java/res/values-be/donottranslate-more-keys.xml b/java/res/values-be/donottranslate-more-keys.xml
deleted file mode 100644
index 835553a1f..000000000
--- a/java/res/values-be/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+045E: "ў" CYRILLIC SMALL LETTER SHORT U -->
- <string name="keylabel_for_east_slavic_row1_9">&#x045E;</string>
- <!-- U+044B: "ы" CYRILLIC SMALL LETTER YERU -->
- <string name="keylabel_for_east_slavic_row2_1">&#x044B;</string>
- <!-- U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I -->
- <string name="keylabel_for_east_slavic_row3_5">&#x0456;</string>
- <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
- <string name="more_keys_for_cyrillic_ha">&#x044A;</string>
- <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
- <string name="more_keys_for_cyrillic_soft_sign">&#x044A;</string>
-</resources>
diff --git a/java/res/values-ca/donottranslate-more-keys.xml b/java/res/values-ca/donottranslate-more-keys.xml
deleted file mode 100644
index baa23bf9c..000000000
--- a/java/res/values-ca/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
- U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
- U+00E6: "æ" LATIN SMALL LETTER AE
- U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
- U+00AA: "ª" FEMININE ORDINAL INDICATOR -->
- <string name="more_keys_for_a">&#x00E0;,&#x00E1;,&#x00E4;,&#x00E2;,&#x00E3;,&#x00E5;,&#x0105;,&#x00E6;,&#x0101;,&#x00AA;</string>
- <!-- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
- U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
- U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
- U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
- U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
- U+0113: "ē" LATIN SMALL LETTER E WITH MACRON -->
- <string name="more_keys_for_e">&#x00E8;,&#x00E9;,&#x00EB;,&#x00EA;,&#x0119;,&#x0117;,&#x0113;</string>
- <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
- U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
- U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
- U+012B: "ī" LATIN SMALL LETTER I WITH MACRON -->
- <string name="more_keys_for_i">&#x00ED;,&#x00EF;,&#x00EC;,&#x00EE;,&#x012F;,&#x012B;</string>
- <!-- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
- U+00BA: "º" MASCULINE ORDINAL INDICATOR -->
- <string name="more_keys_for_o">&#x00F2;,&#x00F3;,&#x00F6;,&#x00F4;,&#x00F5;,&#x00F8;,&#x0153;,&#x014D;,&#x00BA;</string>
- <!-- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
- <string name="more_keys_for_u">&#x00FA;,&#x00FC;,&#x00F9;,&#x00FB;,&#x016B;</string>
- <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
- <string name="more_keys_for_n">&#x00F1;,&#x0144;</string>
- <!-- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
- U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
- U+010D: "č" LATIN SMALL LETTER C WITH CARON -->
- <string name="more_keys_for_c">&#x00E7;,&#x0107;,&#x010D;</string>
- <!-- U+0140: "ŀ" LATIN SMALL LETTER L WITH MIDDLE DOT
- U+0142: "ł" LATIN SMALL LETTER L WITH STROKE -->
- <string name="more_keys_for_l">&#x0140;,&#x0142;</string>
-</resources>
diff --git a/java/res/values-cs/donottranslate-more-keys.xml b/java/res/values-cs/donottranslate-more-keys.xml
deleted file mode 100644
index 9af6794df..000000000
--- a/java/res/values-cs/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2010, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
- U+00E6: "æ" LATIN SMALL LETTER AE
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
- U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
- <string name="more_keys_for_a">&#x00E1;,&#x00E0;,&#x00E2;,&#x00E4;,&#x00E6;,&#x00E3;,&#x00E5;,&#x0101;</string>
- <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
- U+011B: "ě" LATIN SMALL LETTER E WITH CARON
- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
- U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
- U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
- U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
- U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
- U+0113: "ē" LATIN SMALL LETTER E WITH MACRON -->
- <string name="more_keys_for_e">&#x00E9;,&#x011B;,&#x00E8;,&#x00EA;,&#x00EB;,&#x0119;,&#x0117;,&#x0113;</string>
- <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
- U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
- U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
- U+012B: "ī" LATIN SMALL LETTER I WITH MACRON -->
- <string name="more_keys_for_i">&#x00ED;,&#x00EE;,&#x00EF;,&#x00EC;,&#x012F;,&#x012B;</string>
- <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
- U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
- <string name="more_keys_for_o">&#x00F3;,&#x00F6;,&#x00F4;,&#x00F2;,&#x00F5;,&#x0153;,&#x00F8;,&#x014D;</string>
- <!-- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
- U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
- <string name="more_keys_for_u">&#x00FA;,&#x016F;,&#x00FB;,&#x00FC;,&#x00F9;,&#x016B;</string>
- <!-- U+0161: "š" LATIN SMALL LETTER S WITH CARON
- U+00DF: "ß" LATIN SMALL LETTER SHARP S
- U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE -->
- <string name="more_keys_for_s">&#x0161;,&#x00DF;,&#x015B;</string>
- <!-- U+0148: "ň" LATIN SMALL LETTER N WITH CARON
- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
- <string name="more_keys_for_n">&#x0148;,&#x00F1;,&#x0144;</string>
- <!-- U+010D: "č" LATIN SMALL LETTER C WITH CARON
- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
- U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE -->
- <string name="more_keys_for_c">&#x010D;,&#x00E7;,&#x0107;</string>
- <!-- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
- U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS -->
- <string name="more_keys_for_y">&#x00FD;,&#x00FF;</string>
- <!-- U+010F: "ď" LATIN SMALL LETTER D WITH CARON -->
- <string name="more_keys_for_d">&#x010F;</string>
- <!-- U+0159: "ř" LATIN SMALL LETTER R WITH CARON -->
- <string name="more_keys_for_r">&#x0159;</string>
- <!-- U+0165: "ť" LATIN SMALL LETTER T WITH CARON -->
- <string name="more_keys_for_t">&#x0165;</string>
- <!-- U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
- U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
- U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE -->
- <string name="more_keys_for_z">&#x017E;,&#x017A;,&#x017C;</string>
-</resources>
diff --git a/java/res/values-da/donottranslate-more-keys.xml b/java/res/values-da/donottranslate-more-keys.xml
deleted file mode 100644
index acc0c534d..000000000
--- a/java/res/values-da/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2010, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
- <string name="more_keys_for_a">&#x00E1;,&#x00E4;,&#x00E0;,&#x00E2;,&#x00E3;,&#x0101;</string>
- <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
- U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS -->
- <string name="more_keys_for_e">&#x00E9;,&#x00EB;</string>
- <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
- U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS -->
- <string name="more_keys_for_i">&#x00ED;,&#x00EF;</string>
- <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
- <string name="more_keys_for_o">&#x00F3;,&#x00F4;,&#x00F2;,&#x00F5;,&#x0153;,&#x014D;</string>
- <!-- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
- <string name="more_keys_for_u">&#x00FA;,&#x00FC;,&#x00FB;,&#x00F9;,&#x016B;</string>
- <!-- U+00DF: "ß" LATIN SMALL LETTER SHARP S
- U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
- U+0161: "š" LATIN SMALL LETTER S WITH CARON -->
- <string name="more_keys_for_s">&#x00DF;,&#x015B;,&#x0161;</string>
- <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
- <string name="more_keys_for_n">&#x00F1;,&#x0144;</string>
- <!-- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
- U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS -->
- <string name="more_keys_for_y">&#x00FD;,&#x00FF;</string>
- <!-- U+00F0: "ð" LATIN SMALL LETTER ETH -->
- <string name="more_keys_for_d">&#x00F0;</string>
- <!-- U+0142: "ł" LATIN SMALL LETTER L WITH STROKE -->
- <string name="more_keys_for_l">&#x0142;</string>
- <!-- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE -->
- <string name="keylabel_for_nordic_row1_11">&#x00E5;</string>
- <!-- U+00E6: "æ" LATIN SMALL LETTER AE -->
- <string name="keylabel_for_nordic_row2_10">&#x00E6;</string>
- <!-- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE -->
- <string name="keylabel_for_nordic_row2_11">&#x00F8;</string>
- <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS -->
- <string name="more_keys_for_nordic_row2_10">&#x00E4;</string>
- <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS -->
- <string name="more_keys_for_nordic_row2_11">&#x00F6;</string>
-</resources>
diff --git a/java/res/values-de/donottranslate-more-keys.xml b/java/res/values-de/donottranslate-more-keys.xml
deleted file mode 100644
index 562e574eb..000000000
--- a/java/res/values-de/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2010, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+00E6: "æ" LATIN SMALL LETTER AE
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
- U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
- <string name="more_keys_for_a">&#x00E4;,&#x00E2;,&#x00E0;,&#x00E1;,&#x00E6;,&#x00E3;,&#x00E5;,&#x0101;</string>
- <!-- U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE -->
- <string name="more_keys_for_e">&#x0117;</string>
- <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
- U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
- <string name="more_keys_for_o">&#x00F6;,&#x00F4;,&#x00F2;,&#x00F3;,&#x00F5;,&#x0153;,&#x00F8;,&#x014D;</string>
- <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
- <string name="more_keys_for_u">&#x00FC;,&#x00FB;,&#x00F9;,&#x00FA;,&#x016B;</string>
- <!-- U+00DF: "ß" LATIN SMALL LETTER SHARP S
- U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
- U+0161: "š" LATIN SMALL LETTER S WITH CARON -->
- <string name="more_keys_for_s">&#x00DF;,&#x015B;,&#x0161;</string>
- <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
- <string name="more_keys_for_n">&#x00F1;,&#x0144;</string>
-</resources>
diff --git a/java/res/values-en-rGB/strings.xml b/java/res/values-en-rGB/strings.xml
index af2833e19..ef86365f1 100644
--- a/java/res/values-en-rGB/strings.xml
+++ b/java/res/values-en-rGB/strings.xml
@@ -61,12 +61,9 @@
<string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Modest"</string>
<string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Aggressive"</string>
<string name="auto_correction_threshold_mode_very_aggeressive" msgid="3386782235540547678">"Very aggressive"</string>
- <!-- no translation found for bigram_suggestion (8169311444438922902) -->
- <skip />
- <!-- no translation found for bigram_suggestion_summary (6635527607242625713) -->
- <skip />
- <!-- no translation found for bigram_prediction (3216364899483135294) -->
- <skip />
+ <string name="bigram_suggestion" msgid="8169311444438922902">"Next word suggestions"</string>
+ <string name="bigram_suggestion_summary" msgid="6635527607242625713">"Use previous word to improve suggestion"</string>
+ <string name="bigram_prediction" msgid="3216364899483135294">"Next word prediction"</string>
<string name="bigram_prediction_summary" msgid="1747261921174300098">"Use previous word also for prediction"</string>
<string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Saved"</string>
<string name="label_go_key" msgid="1635148082137219148">"Go"</string>
@@ -121,8 +118,7 @@
<string name="keyboard_layout" msgid="8451164783510487501">"Keyboard theme"</string>
<string name="subtype_en_GB" msgid="88170601942311355">"English (UK)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"English (US)"</string>
- <!-- no translation found for subtype_no_language_qwerty (2956121451616633133) -->
- <skip />
+ <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"No language (QWERTY)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Usability study mode"</string>
<string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Key-press vibration duration settings"</string>
<string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Key-press sound volume settings"</string>
diff --git a/java/res/values-en/donottranslate-more-keys.xml b/java/res/values-en/donottranslate-more-keys.xml
deleted file mode 100644
index 6e43e86d7..000000000
--- a/java/res/values-en/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2010, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
- U+00E6: "æ" LATIN SMALL LETTER AE
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
- U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
- <string name="more_keys_for_a">&#x00E0;,&#x00E1;,&#x00E2;,&#x00E4;,&#x00E6;,&#x00E3;,&#x00E5;,&#x0101;</string>
- <!-- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
- U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
- U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
- U+0113: "ē" LATIN SMALL LETTER E WITH MACRON -->
- <string name="more_keys_for_e">&#x00E8;,&#x00E9;,&#x00EA;,&#x00EB;,&#x0103;</string>
- <!-- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
- U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
- U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE -->
- <string name="more_keys_for_i">&#x00EE;,&#x00EF;,&#x00ED;,&#x012B;,&#x00EC;</string>
- <!-- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
- U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE -->
- <string name="more_keys_for_o">&#x00F4;,&#x00F6;,&#x00F2;,&#x00F3;,&#x0153;,&#x00F8;&#x014D;,&#x00F5;</string>
- <!-- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
- <string name="more_keys_for_u">&#x00FB;,&#x00FC;,&#x00F9;,&#x00FA;,&#x016B;</string>
- <!-- U+00DF: "ß" LATIN SMALL LETTER SHARP S -->
- <string name="more_keys_for_s">&#x00DF;</string>
- <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE -->
- <string name="more_keys_for_n">&#x00F1;</string>
- <!-- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA -->
- <string name="more_keys_for_c">&#x00E7;</string>
-</resources>
diff --git a/java/res/values-es-rUS/strings.xml b/java/res/values-es-rUS/strings.xml
index 91150518b..75b1fb47e 100644
--- a/java/res/values-es-rUS/strings.xml
+++ b/java/res/values-es-rUS/strings.xml
@@ -61,12 +61,9 @@
<string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Moderado"</string>
<string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Total"</string>
<string name="auto_correction_threshold_mode_very_aggeressive" msgid="3386782235540547678">"Muy agresivo"</string>
- <!-- no translation found for bigram_suggestion (8169311444438922902) -->
- <skip />
- <!-- no translation found for bigram_suggestion_summary (6635527607242625713) -->
- <skip />
- <!-- no translation found for bigram_prediction (3216364899483135294) -->
- <skip />
+ <string name="bigram_suggestion" msgid="8169311444438922902">"Sugerencias para la palabra siguiente"</string>
+ <string name="bigram_suggestion_summary" msgid="6635527607242625713">"Utiliza la palabra anterior para mejorar las sugerencias."</string>
+ <string name="bigram_prediction" msgid="3216364899483135294">"Predicción de la palabra siguiente"</string>
<string name="bigram_prediction_summary" msgid="1747261921174300098">"Usar la palabra anterior también para predicción."</string>
<string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: guardada"</string>
<string name="label_go_key" msgid="1635148082137219148">"Ir"</string>
@@ -121,8 +118,7 @@
<string name="keyboard_layout" msgid="8451164783510487501">"Tema del teclado"</string>
<string name="subtype_en_GB" msgid="88170601942311355">"Inglés (Reino Unido)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Inglés (EE.UU.)"</string>
- <!-- no translation found for subtype_no_language_qwerty (2956121451616633133) -->
- <skip />
+ <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Ningún idioma (QWERTY)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modo de estudio de usabilidad"</string>
<string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Configuración de la duración de vibraciones al presionar las teclas"</string>
<string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Configuración del volumen de sonio al presionar las teclas"</string>
diff --git a/java/res/values-es/donottranslate-more-keys.xml b/java/res/values-es/donottranslate-more-keys.xml
deleted file mode 100644
index f56b1d54f..000000000
--- a/java/res/values-es/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2010, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
- U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
- U+00E6: "æ" LATIN SMALL LETTER AE
- U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
- U+00AA: "ª" FEMININE ORDINAL INDICATOR -->
- <string name="more_keys_for_a">&#x00E1;,&#x00E0;,&#x00E4;,&#x00E2;,&#x00E3;,&#x00E5;,&#x0105;,&#x00E6;,&#x0101;,&#x00AA;</string>
- <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
- U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
- U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
- U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
- U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
- U+0113: "ē" LATIN SMALL LETTER E WITH MACRON -->
- <string name="more_keys_for_e">&#x00E9;,&#x00E8;,&#x00EB;,&#x00EA;,&#x0119;,&#x0117;,&#x0113;</string>
- <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
- U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
- U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
- U+012B: "ī" LATIN SMALL LETTER I WITH MACRON -->
- <string name="more_keys_for_i">&#x00ED;,&#x00EF;,&#x00EC;,&#x00EE;,&#x012F;,&#x012B;</string>
- <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
- U+00BA: "º" MASCULINE ORDINAL INDICATOR -->
- <string name="more_keys_for_o">&#x00F3;,&#x00F2;,&#x00F6;,&#x00F4;,&#x00F5;,&#x00F8;,&#x0153;,&#x014D;,&#x00BA;</string>
- <!-- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
- <string name="more_keys_for_u">&#x00FA;,&#x00FC;,&#x00F9;,&#x00FB;,&#x016B;</string>
- <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
- <string name="more_keys_for_n">&#x00F1;,&#x0144;</string>
- <!-- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
- U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
- U+010D: "č" LATIN SMALL LETTER C WITH CARON -->
- <string name="more_keys_for_c">&#x00E7;,&#x0107;,&#x010D;</string>
- <!-- U+00A1: "¡" INVERTED EXCLAMATION MARK
- U+00BF: "¿" INVERTED QUESTION MARK -->
- <string name="more_keys_for_punctuation">"!fixedColumnOrder!7,#,-,&#x00A1;,!,&#x00BF;,\\,,\?,\\%,+,;,:,/,(,),\@,&amp;,\",\'"</string>
-</resources>
diff --git a/java/res/values-et/donottranslate-more-keys.xml b/java/res/values-et/donottranslate-more-keys.xml
deleted file mode 100644
index 69cf654a6..000000000
--- a/java/res/values-et/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
- U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
- U+00E6: "æ" LATIN SMALL LETTER AE
- U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK -->
- <string name="more_keys_for_a">&#x00E4;,&#x0101;,&#x00E0;,&#x00E1;,&#x00E2;,&#x00E3;,&#x00E5;,&#x00E6;,&#x0105;</string>
- <!-- U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
- U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
- U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
- U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
- U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
- U+011B: "ě" LATIN SMALL LETTER E WITH CARON -->
- <string name="more_keys_for_e">&#x0113;,&#x00E8;,&#x0117;,&#x00E9;,&#x00EA;,&#x00EB;,&#x0119;,&#x011B;</string>
- <!-- U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
- U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
- U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
- U+0131: "ı" LATIN SMALL LETTER DOTLESS I -->
- <string name="more_keys_for_i">&#x012B;,&#x00EC;,&#x012F;,&#x00ED;,&#x00EE;,&#x00EF;,&#x0131;</string>
- <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE -->
- <string name="more_keys_for_o">&#x00F6;,&#x00F5;,&#x00F2;,&#x00F3;,&#x00F4;,&#x0153;,&#x0151;,&#x00F8;</string>
- <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
- U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
- U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
- U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE -->
- <string name="more_keys_for_u">&#x00FC;,&#x016B;,&#x0173;,&#x00F9;,&#x00FA;,&#x00FB;,&#x016F;,&#x0171;</string>
- <!-- U+0161: "š" LATIN SMALL LETTER S WITH CARON
- U+00DF: "ß" LATIN SMALL LETTER SHARP S
- U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
- U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA -->
- <string name="more_keys_for_s">&#x0161;,&#x00DF;,&#x015B;,&#x015F;</string>
- <!-- U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
- <string name="more_keys_for_n">&#x0146;,&#x00F1;,&#x0144;,&#x0144;</string>
- <!-- U+010D: "č" LATIN SMALL LETTER C WITH CARON
- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
- U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE -->
- <string name="more_keys_for_c">&#x010D;,&#x00E7;,&#x0107;</string>
- <!-- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
- U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS -->
- <string name="more_keys_for_y">&#x00FD;,&#x00FF;</string>
- <!-- U+010F: "ď" LATIN SMALL LETTER D WITH CARON -->
- <string name="more_keys_for_d">&#x010F;</string>
- <!-- U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
- U+0159: "ř" LATIN SMALL LETTER R WITH CARON
- U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE -->
- <string name="more_keys_for_r">&#x0157;,&#x0159;,&#x0155;</string>
- <!-- U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
- U+0165: "ť" LATIN SMALL LETTER T WITH CARON -->
- <string name="more_keys_for_t">&#x0163;,&#x0165;</string>
- <!-- U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
- U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
- U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE -->
- <string name="more_keys_for_z">&#x017E;,&#x017C;,&#x017A;</string>
- <!-- U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA -->
- <string name="more_keys_for_k">&#x0137;</string>
- <!-- U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA
- U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
- U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE
- U+013E: "ľ" LATIN SMALL LETTER L WITH CARON -->
- <string name="more_keys_for_l">&#x013C;,&#x0142;,&#x013A;,&#x013E;</string>
- <!-- U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
- U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE -->
- <string name="more_keys_for_g">&#x0123;,&#x011F;</string>
- <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS -->
- <string name="keylabel_for_nordic_row1_11">&#x00FC;</string>
- <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS -->
- <string name="keylabel_for_nordic_row2_10">&#x00F6;</string>
- <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS -->
- <string name="keylabel_for_nordic_row2_11">&#x00E4;</string>
- <!-- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE -->
- <string name="more_keys_for_nordic_row2_10">&#x00F5;</string>
-</resources>
diff --git a/java/res/values-fa/donottranslate-more-keys.xml b/java/res/values-fa/donottranslate-more-keys.xml
deleted file mode 100644
index 1da1c1889..000000000
--- a/java/res/values-fa/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2012, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+061F: "؟" ARABIC QUESTION MARK
- U+060C: "،" ARABIC COMMA
- U+061B: "؛" ARABIC SEMICOLON -->
- <!-- U+0650: "ِ" ARABIC KASRA
- U+064E: "َ" ARABIC FATHA
- U+064D: "ٍ" ARABIC KASRATAN
- U+064B: "ً" ARABIC FATHATAN
- U+0656: "ٖ" ARABIC SUBSCRIPT ALEF
- U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF
- U+0655: "ٕ" ARABIC HAMZA BELOW
- U+0654: "ٔ" ARABIC HAMZA ABOVE -->
- <!-- U+064F: "ُ" ARABIC DAMMA
- U+064C: "ٌ" ARABIC DAMMATAN
- U+0651: "ّ" ARABIC SHADDA
- U+0652: "ْ" ARABIC SUKUN
- U+0653: "ٓ" ARABIC MADDAH ABOVE
- U+0640: "ـ" ARABIC TATWEEL -->
- <!-- In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. -->
- <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,\",\',-,:,!,&#x061F;,&#x060C;,&#x061B;,&#x0650;,&#x064E;,&#x064D;,&#x064B;,&#x0656;,&#x0670;,&#x0655;,&#x0654;,&#x064F;,&#x064C;,&#x0651;,&#x0652;,&#x0653;,&#x0640;&#x0640;&#x0640;|&#x0640;,/"</string>
- <string name="keyhintlabel_for_punctuation">&#x064B;</string>
- <!-- U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE -->
- <string name="keylabel_for_symbols_1">&#x06F1;</string>
- <!-- U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO -->
- <string name="keylabel_for_symbols_2">&#x06F2;</string>
- <!-- U+06F3: "۳" EXTENDED ARABIC-INDIC DIGIT THREE -->
- <string name="keylabel_for_symbols_3">&#x06F3;</string>
- <!-- U+06F4: "۴" EXTENDED ARABIC-INDIC DIGIT FOUR -->
- <string name="keylabel_for_symbols_4">&#x06F4;</string>
- <!-- U+06F5: "۵" EXTENDED ARABIC-INDIC DIGIT FIVE -->
- <string name="keylabel_for_symbols_5">&#x06F5;</string>
- <!-- U+06F6: "۶" EXTENDED ARABIC-INDIC DIGIT SIX -->
- <string name="keylabel_for_symbols_6">&#x06F6;</string>
- <!-- U+06F7: "۷" EXTENDED ARABIC-INDIC DIGIT SEVEN -->
- <string name="keylabel_for_symbols_7">&#x06F7;</string>
- <!-- U+06F8: "۸" EXTENDED ARABIC-INDIC DIGIT EIGHT -->
- <string name="keylabel_for_symbols_8">&#x06F8;</string>
- <!-- U+06F9: "۹" EXTENDED ARABIC-INDIC DIGIT NINE -->
- <string name="keylabel_for_symbols_9">&#x06F9;</string>
- <!-- U+06F0: "۰" EXTENDED ARABIC-INDIC DIGIT ZERO -->
- <string name="keylabel_for_symbols_0">&#x06F0;</string>
- <string name="additional_more_keys_for_symbols_1">1</string>
- <string name="additional_more_keys_for_symbols_2">2</string>
- <string name="additional_more_keys_for_symbols_3">3</string>
- <string name="additional_more_keys_for_symbols_4">4</string>
- <string name="additional_more_keys_for_symbols_5">5</string>
- <string name="additional_more_keys_for_symbols_6">6</string>
- <string name="additional_more_keys_for_symbols_7">7</string>
- <string name="additional_more_keys_for_symbols_8">8</string>
- <string name="additional_more_keys_for_symbols_9">9</string>
- <!-- U+066B: "٫" ARABIC DECIMAL SEPARATOR
- U+066C: "٬" ARABIC THOUSANDS SEPARATOR -->
- <string name="additional_more_keys_for_symbols_0">0,&#x066B;,&#x066C;</string>
- <!-- U+060C: "،" ARABIC COMMA -->
- <string name="keylabel_for_comma">&#x060C;</string>
- <string name="more_keys_for_comma">"\\,"</string>
- <string name="keylabel_for_symbols_question">&#x061F;</string>
- <string name="keylabel_for_symbols_semicolon">&#x061B;</string>
- <!-- U+066A: "٪" ARABIC PERCENT SIGN -->
- <string name="keylabel_for_symbols_percent">&#x066A;</string>
- <string name="more_keys_for_symbols_question">\?</string>
- <string name="more_keys_for_symbols_semicolon">;</string>
- <!-- U+2030: "‰" PER MILLE SIGN -->
- <string name="more_keys_for_symbols_percent">%,&#x2030;</string>
- <!-- U+060C: "،" ARABIC COMMA
- U+061B: "؛" ARABIC SEMICOLON
- U+061F: "؟" ARABIC QUESTION MARK -->
- <string name="keylabel_for_tablet_comma">"&#x060C;"</string>
- <string name="keyhintlabel_for_tablet_comma">"!"</string>
- <string name="more_keys_for_tablet_comma">"!,\\,"</string>
- <string name="keyhintlabel_for_tablet_period">"&#x061F;"</string>
- <string name="more_keys_for_tablet_period">"&#x061F;,\?"</string>
- <string name="keyhintlabel_for_dash">&#x064B;</string>
- <string name="more_keys_for_apostrophe">"&#x061F;,&#x061B;,!,:,-,/,\',\""</string>
- <!-- U+0651: "ّ" ARABIC SHADDA
- U+0652: "ْ" ARABIC SUKUN
- U+064C: "ٌ" ARABIC DAMMATAN
- U+0653: "ٓ" ARABIC MADDAH ABOVE
- U+064F: "ُ" ARABIC DAMMA -->
- <!-- U+0650: "ِ" ARABIC KASRA
- U+064E: "َ" ARABIC FATHA
- U+064B: "ً" ARABIC FATHATAN
- U+0640: "ـ" ARABIC TATWEEL
- U+064D: "ٍ" ARABIC KASRATAN -->
- <!-- U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF
- U+0656: "ٖ" ARABIC SUBSCRIPT ALEF
- U+0654: "ٔ" ARABIC HAMZA ABOVE
- U+0655: "ٕ" ARABIC HAMZA BELOW -->
- <!-- In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. -->
- <string name="more_keys_for_dash">"&#x0651;,&#x0652;,&#x064C;,&#x0653;,&#x064F;,&#x0650;,&#x064E;,&#x064B;,&#x0640;&#x0640;&#x0640;|&#x0640;,&#x064D;,&#x0654;,&#x0656;,&#x0655;,_,&#x0670;"</string>
- <!-- U+266A: "♪" EIGHTH NOTE -->
- <string name="more_keys_for_bullet">&#x266A;</string>
- <!-- U+2605: "★" BLACK STAR
- U+066D: "٭" ARABIC FIVE POINTED STAR -->
- <string name="more_keys_for_star">&#x2605;,&#x066D;</string>
- <!-- The all letters need to be mirrored are found at
- http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
- <!-- U+FD3E: "﴾" ORNATE LEFT PARENTHESIS
- U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS -->
- <!-- TODO: DroidSansArabic lacks the glyph of U+FD3E ORNATE LEFT PARENTHESIS -->
- <!-- TODO: DroidSansArabic lacks the glyph of U+FD3F ORNATE RIGHT PARENTHESIS -->
- <string name="more_keys_for_left_parenthesis">!fixedColumnOrder!4,&#xFD3E;|&#xFD3F;,&lt;|&gt;,{|},[|]</string>
- <string name="more_keys_for_right_parenthesis">!fixedColumnOrder!4,&#xFD3F;|&#xFD3E;,&gt;|&lt;,}|{,]|[</string>
- <!-- U+2264: "≤" LESS-THAN OR EQUAL TO
- U+2265: "≥" GREATER-THAN EQUAL TO
- U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
- U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
- U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
- The following characters don't need BIDI mirroring.
- U+2018: "‘" LEFT SINGLE QUOTATION MARK
- U+2019: "’" RIGHT SINGLE QUOTATION MARK
- U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
- U+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK
- U+201C: "“" LEFT DOUBLE QUOTATION MARK
- U+201D: "”" RIGHT DOUBLE QUOTATION MARK
- U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
- U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
- <string name="more_keys_for_less_than">!fixedColumnOrder!3,&#x2039;|&#x203A;,&#x2264;|&#x2265;,&#x00AB;|&#x00BB;</string>
- <string name="more_keys_for_greater_than">!fixedColumnOrder!3,&#x203A;|&#x2039;,&#x2265;|&#x2264;,&#x00BB;|&#x00AB;</string>
- <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
- <!-- <string name="more_keys_for_double_quote">&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string> -->
- <string name="more_keys_for_double_quote">!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string>
- <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
- <!-- <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB|&#x00AB;;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string> -->
- <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
-</resources>
diff --git a/java/res/values-fi/donottranslate-more-keys.xml b/java/res/values-fi/donottranslate-more-keys.xml
deleted file mode 100644
index 25b785845..000000000
--- a/java/res/values-fi/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00E6: "æ" LATIN SMALL LETTER AE
- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
- <string name="more_keys_for_a">&#x00E6;,&#x00E0;,&#x00E1;,&#x00E2;,&#x00E3;,&#x0101;</string>
- <!-- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
- <string name="more_keys_for_o">&#x00F8;,&#x00F4;,&#x00F2;,&#x00F3;,&#x00F5;,&#x0153;,&#x014D;</string>
- <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS -->
- <string name="more_keys_for_u">&#x00FC;</string>
- <!-- U+0161: "š" LATIN SMALL LETTER S WITH CARON
- U+00DF: "ß" LATIN SMALL LETTER SHARP S
- U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE -->
- <string name="more_keys_for_s">&#x0161;,&#x00DF;,&#x015B;</string>
- <!-- U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
- U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
- U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE -->
- <string name="more_keys_for_z">&#x017E;,&#x017A;,&#x017C;</string>
- <!-- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE -->
- <string name="keylabel_for_nordic_row1_11">&#x00E5;</string>
- <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS -->
- <string name="keylabel_for_nordic_row2_10">&#x00F6;</string>
- <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS -->
- <string name="keylabel_for_nordic_row2_11">&#x00E4;</string>
- <!-- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE -->
- <string name="more_keys_for_nordic_row2_10">&#x00F8;</string>
- <!-- U+00E6: "æ" LATIN SMALL LETTER AE -->
- <string name="more_keys_for_nordic_row2_11">&#x00E6;</string>
-</resources>
diff --git a/java/res/values-fr/donottranslate-more-keys.xml b/java/res/values-fr/donottranslate-more-keys.xml
deleted file mode 100644
index 7b11a183d..000000000
--- a/java/res/values-fr/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2010, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+00E6: "æ" LATIN SMALL LETTER AE
- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
- U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
- U+00AA: "ª" FEMININE ORDINAL INDICATOR -->
- <string name="more_keys_for_a">&#x00E0;,&#x00E2;,%,&#x00E6;,&#x00E1;,&#x00E4;,&#x00E3;,&#x00E5;,&#x0101;,&#x00AA;</string>
- <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
- U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
- U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
- U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
- U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
- U+0113: "ē" LATIN SMALL LETTER E WITH MACRON -->
- <string name="more_keys_for_e">&#x00E9;,&#x00E8;,&#x00EA;,&#x00EB;,%,&#x0119;,&#x0117;,&#x0113;</string>
- <!-- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
- U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
- U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
- U+012B: "ī" LATIN SMALL LETTER I WITH MACRON -->
- <string name="more_keys_for_i">&#x00EE;,%,&#x00EF;,&#x00EC;,&#x00ED;,&#x012F;,&#x012B;</string>
- <!-- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
- U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
- U+00BA: "º" MASCULINE ORDINAL INDICATOR -->
- <string name="more_keys_for_o">&#x00F4;,&#x0153;,%,&#x00F6;,&#x00F2;,&#x00F3;,&#x00F5;,&#x00F8;,&#x014D;,&#x00BA;</string>
- <!-- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
- <string name="more_keys_for_u">&#x00F9;,&#x00FB;,%,&#x00FC;,&#x00FA;,&#x016B;</string>
- <!-- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
- U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
- U+010D: "č" LATIN SMALL LETTER C WITH CARON -->
- <string name="more_keys_for_c">&#x00E7;,&#x0107;,&#x010D;</string>
- <!-- U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS -->
- <string name="more_keys_for_y">%,&#x00FF;</string>
-</resources>
diff --git a/java/res/values-hi/donottranslate-more-keys.xml b/java/res/values-hi/donottranslate-more-keys.xml
deleted file mode 100644
index 19bcb9dda..000000000
--- a/java/res/values-hi/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2012, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+0967: "१" DEVANAGARI DIGIT ONE -->
- <string name="keylabel_for_symbols_1">&#x0967;</string>
- <!-- U+0968: "२" DEVANAGARI DIGIT TWO -->
- <string name="keylabel_for_symbols_2">&#x0968;</string>
- <!-- U+0969: "३" DEVANAGARI DIGIT THREE -->
- <string name="keylabel_for_symbols_3">&#x0969;</string>
- <!-- U+096A: "४" DEVANAGARI DIGIT FOUR -->
- <string name="keylabel_for_symbols_4">&#x096A;</string>
- <!-- U+096B: "५" DEVANAGARI DIGIT FIVE -->
- <string name="keylabel_for_symbols_5">&#x096B;</string>
- <!-- U+096C: "६" DEVANAGARI DIGIT SIX -->
- <string name="keylabel_for_symbols_6">&#x096C;</string>
- <!-- U+096D: "७" DEVANAGARI DIGIT SEVEN -->
- <string name="keylabel_for_symbols_7">&#x096D;</string>
- <!-- U+096E: "८" DEVANAGARI DIGIT EIGHT -->
- <string name="keylabel_for_symbols_8">&#x096E;</string>
- <!-- U+096F: "९" DEVANAGARI DIGIT NINE -->
- <string name="keylabel_for_symbols_9">&#x096F;</string>
- <!-- U+0966: "०" DEVANAGARI DIGIT ZERO -->
- <string name="keylabel_for_symbols_0">&#x0966;</string>
- <string name="additional_more_keys_for_symbols_1">1</string>
- <string name="additional_more_keys_for_symbols_2">2</string>
- <string name="additional_more_keys_for_symbols_3">3</string>
- <string name="additional_more_keys_for_symbols_4">4</string>
- <string name="additional_more_keys_for_symbols_5">5</string>
- <string name="additional_more_keys_for_symbols_6">6</string>
- <string name="additional_more_keys_for_symbols_7">7</string>
- <string name="additional_more_keys_for_symbols_8">8</string>
- <string name="additional_more_keys_for_symbols_9">9</string>
- <string name="additional_more_keys_for_symbols_0">0</string>
-</resources>
diff --git a/java/res/values-hr/donottranslate-more-keys.xml b/java/res/values-hr/donottranslate-more-keys.xml
deleted file mode 100644
index 9b4005d0d..000000000
--- a/java/res/values-hr/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+0161: "š" LATIN SMALL LETTER S WITH CARON
- U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
- U+00DF: "ß" LATIN SMALL LETTER SHARP S -->
- <string name="more_keys_for_s">&#x0161;,&#x015B;,&#x00DF;</string>
- <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
- <string name="more_keys_for_n">&#x00F1;,&#x0144;</string>
- <!-- U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
- U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
- U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE -->
- <string name="more_keys_for_z">&#x017E;,&#x017A;,&#x017C;</string>
- <!-- U+010D: "č" LATIN SMALL LETTER C WITH CARON
- U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA -->
- <string name="more_keys_for_c">&#x010D;,&#x0107;,&#x00E7;</string>
- <!-- U+0111: "đ" LATIN SMALL LETTER D WITH STROKE -->
- <string name="more_keys_for_d">&#x0111;</string>
-</resources>
diff --git a/java/res/values-hu/donottranslate-more-keys.xml b/java/res/values-hu/donottranslate-more-keys.xml
deleted file mode 100644
index 48259104b..000000000
--- a/java/res/values-hu/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
- U+00E6: "æ" LATIN SMALL LETTER AE
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
- U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
- <string name="more_keys_for_a">&#x00E1;,&#x00E0;,&#x00E2;,&#x00E4;,&#x00E6;,&#x00E3;,&#x00E5;,&#x0101;</string>
- <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
- U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
- U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
- U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
- U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
- U+0113: "ē" LATIN SMALL LETTER E WITH MACRON -->
- <string name="more_keys_for_e">&#x00E9;,&#x00E8;,&#x00EA;,&#x00EB;,&#x0119;,&#x0117;,&#x0113;</string>
- <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
- U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
- U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
- U+012B: "ī" LATIN SMALL LETTER I WITH MACRON -->
- <string name="more_keys_for_i">&#x00ED;,&#x00EE;,&#x00EF;,&#x00EC;,&#x012F;,&#x012B;</string>
- <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
- U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
- U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
- <string name="more_keys_for_o">&#x00F3;,&#x00F6;,&#x0151;,&#x00F4;,&#x00F2;,&#x00F5;,&#x0153;,&#x00F8;,&#x014D;</string>
- <!-- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
- U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
- <string name="more_keys_for_u">&#x00FA;,&#x00FC;,&#x0171;,&#x00FB;,&#x00F9;,&#x016B;</string>
-</resources>
diff --git a/java/res/values-is/donottranslate-more-keys.xml b/java/res/values-is/donottranslate-more-keys.xml
deleted file mode 100644
index 284aae930..000000000
--- a/java/res/values-is/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2012, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
- U+00E6: "æ" LATIN SMALL LETTER AE
- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
- <string name="more_keys_for_a">&#x00E1;,&#x00E4;,&#x00E6;,&#x00E5;,&#x00E0;,&#x00E2;,&#x00E3;,&#x0101;</string>
- <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
- U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
- U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
- U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
- U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
- U+0113: "ē" LATIN SMALL LETTER E WITH MACRON -->
- <string name="more_keys_for_e">&#x00E9;,&#x00EB;,&#x00E8;,&#x00EA;,&#x0119;,&#x0117;,&#x0113;</string>
- <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
- U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
- U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
- U+012B: "ī" LATIN SMALL LETTER I WITH MACRON -->
- <string name="more_keys_for_i">&#x00ED;,&#x00EF;,&#x00EE;,&#x00EC;,&#x012F;,&#x012B;</string>
- <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
- U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
- <string name="more_keys_for_o">&#x00F3;,&#x00F6;,&#x00F4;,&#x00F2;,&#x00F5;,&#x0153;,&#x00F8;,&#x014D;</string>
- <!-- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
- <string name="more_keys_for_u">&#x00FA;,&#x00FC;,&#x00FB;,&#x00F9;,&#x016B;</string>
- <!-- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
- U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS -->
- <string name="more_keys_for_y">&#x00FD;,&#x00FF;</string>
- <!-- U+00F0: "ð" LATIN SMALL LETTER ETH -->
- <string name="more_keys_for_d">&#x00F0;</string>
- <!-- U+00FE: "þ" LATIN SMALL LETTER THORN -->
- <string name="more_keys_for_t">&#x00FE;</string>
- <!-- U+00F0: "ð" LATIN SMALL LETTER ETH -->
- <string name="keylabel_for_nordic_row1_11">&#x00F0;</string>
- <!-- U+00E6: "æ" LATIN SMALL LETTER AE -->
- <string name="keylabel_for_nordic_row2_10">&#x00E6;</string>
- <!-- U+00FE: "þ" LATIN SMALL LETTER THORN -->
- <string name="keylabel_for_nordic_row2_11">&#x00FE;</string>
-</resources>
diff --git a/java/res/values-it/donottranslate-more-keys.xml b/java/res/values-it/donottranslate-more-keys.xml
deleted file mode 100644
index 17dd03108..000000000
--- a/java/res/values-it/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2010, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
- U+00E6: "æ" LATIN SMALL LETTER AE
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
- U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
- U+00AA: "ª" FEMININE ORDINAL INDICATOR -->
- <string name="more_keys_for_a">&#x00E0;,&#x00E1;,&#x00E2;,&#x00E4;,&#x00E6;,&#x00E3;,&#x00E5;,&#x0101;,&#x00AA;</string>
- <!-- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
- U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
- U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
- U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
- U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
- U+0113: "ē" LATIN SMALL LETTER E WITH MACRON -->
- <string name="more_keys_for_e">&#x00E8;,&#x00E9;,&#x00EA;,&#x00EB;,&#x0119;,&#x0117;,&#x0113;</string>
- <!-- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
- U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
- U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
- U+012B: "ī" LATIN SMALL LETTER I WITH MACRON -->
- <string name="more_keys_for_i">&#x00EC;,&#x00ED;,&#x00EE;,&#x00EF;,&#x012F;,&#x012B;</string>
- <!-- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
- U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
- U+00BA: "º" MASCULINE ORDINAL INDICATOR -->
- <string name="more_keys_for_o">&#x00F2;,&#x00F3;,&#x00F4;,&#x00F6;,&#x00F5;,&#x0153;,&#x00F8;,&#x014D;,&#x00BA;</string>
- <!-- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
- <string name="more_keys_for_u">&#x00F9;,&#x00FA;,&#x00FB;,&#x00FC;,&#x016B;</string>
-</resources>
diff --git a/java/res/values-iw/donottranslate-more-keys.xml b/java/res/values-iw/donottranslate-more-keys.xml
deleted file mode 100644
index ad209edde..000000000
--- a/java/res/values-iw/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+2605: "★" BLACK STAR -->
- <string name="more_keys_for_star">&#x2605;</string>
- <!-- U+00B1: "±" PLUS-MINUS SIGN
- U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN -->
- <string name="more_keys_for_plus">&#x00B1;,&#xFB29;</string>
- <!-- The all letters need to be mirrored are found at
- http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
- <string name="more_keys_for_left_parenthesis">!fixedColumnOrder!3,&lt;|&gt;,{|},[|]</string>
- <string name="more_keys_for_right_parenthesis">!fixedColumnOrder!3,&gt;|&lt;,}|{,]|[</string>
- <!-- U+2264: "≤" LESS-THAN OR EQUAL TO
- U+2265: "≥" GREATER-THAN EQUAL TO
- U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
- U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
- U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
- The following characters don't need BIDI mirroring.
- U+2018: "‘" LEFT SINGLE QUOTATION MARK
- U+2019: "’" RIGHT SINGLE QUOTATION MARK
- U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
- U+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK
- U+201C: "“" LEFT DOUBLE QUOTATION MARK
- U+201D: "”" RIGHT DOUBLE QUOTATION MARK
- U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
- U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
- <string name="more_keys_for_less_than">!fixedColumnOrder!3,&#x2039;|&#x203A;,&#x2264;|&#x2265;,&#x00AB;|&#x00BB;</string>
- <string name="more_keys_for_greater_than">!fixedColumnOrder!3,&#x203A;|&#x2039;,&#x2265;|&#x2264;,&#x00BB;|&#x00AB;</string>
- <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
- <!-- <string name="more_keys_for_double_quote">&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string> -->
- <string name="more_keys_for_double_quote">!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string>
- <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
- <!-- <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB|&#x00AB;;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string> -->
- <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
-</resources>
diff --git a/java/res/values-iw/strings.xml b/java/res/values-iw/strings.xml
index 71fbb3470..569f71d40 100644
--- a/java/res/values-iw/strings.xml
+++ b/java/res/values-iw/strings.xml
@@ -61,12 +61,9 @@
<string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"מצומצם"</string>
<string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"מחמיר"</string>
<string name="auto_correction_threshold_mode_very_aggeressive" msgid="3386782235540547678">"מחמיר מאוד"</string>
- <!-- no translation found for bigram_suggestion (8169311444438922902) -->
- <skip />
- <!-- no translation found for bigram_suggestion_summary (6635527607242625713) -->
- <skip />
- <!-- no translation found for bigram_prediction (3216364899483135294) -->
- <skip />
+ <string name="bigram_suggestion" msgid="8169311444438922902">"הצעות המילה הבאה"</string>
+ <string name="bigram_suggestion_summary" msgid="6635527607242625713">"השתמש במילה הקודמת כדי לשפר את ההצעות"</string>
+ <string name="bigram_prediction" msgid="3216364899483135294">"חיזוי המילה הבאה"</string>
<string name="bigram_prediction_summary" msgid="1747261921174300098">"השתמש במילה הקודמת גם עבור חיזוי"</string>
<string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : נשמרה"</string>
<string name="label_go_key" msgid="1635148082137219148">"בצע"</string>
@@ -121,8 +118,7 @@
<string name="keyboard_layout" msgid="8451164783510487501">"עיצוב מקלדת"</string>
<string name="subtype_en_GB" msgid="88170601942311355">"אנגלית (בריטניה)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"אנגלית (ארה\"ב)"</string>
- <!-- no translation found for subtype_no_language_qwerty (2956121451616633133) -->
- <skip />
+ <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"אין שפה (QWERTY)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"מצב מחקר שימושיות"</string>
<string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"הגדרות משך רטט בלחיצה על מקש"</string>
<string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"הגדרות עוצמת קול בלחיצה על מקש"</string>
diff --git a/java/res/values-ky/donottranslate-more-keys.xml b/java/res/values-ky/donottranslate-more-keys.xml
deleted file mode 100644
index fd90248b2..000000000
--- a/java/res/values-ky/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+0449: "щ" CYRILLIC SMALL LETTER SHCHA -->
- <string name="keylabel_for_east_slavic_row1_9">&#x0449;</string>
- <!-- U+044B: "ы" CYRILLIC SMALL LETTER YERU -->
- <string name="keylabel_for_east_slavic_row2_1">&#x044B;</string>
- <!-- U+0438: "и" CYRILLIC SMALL LETTER I -->
- <string name="keylabel_for_east_slavic_row3_5">&#x0438;</string>
- <!-- U+04AF: "ү" CYRILLIC SMALL LETTER STRAIGHT U -->
- <string name="more_keys_for_cyrillic_u">&#x04AF;</string>
- <!-- U+04A3: "ң" CYRILLIC SMALL LETTER EN WITH DESCENDER -->
- <string name="more_keys_for_cyrillic_en">&#x04A3;</string>
- <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
- <string name="more_keys_for_cyrillic_ha">&#x044A;</string>
- <!-- U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O -->
- <string name="more_keys_for_cyrillic_o">&#x04E9;</string>
- <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
- <string name="more_keys_for_cyrillic_soft_sign">&#x044A;</string>
-</resources>
diff --git a/java/res/values-lt/donottranslate-more-keys.xml b/java/res/values-lt/donottranslate-more-keys.xml
deleted file mode 100644
index 1491d954e..000000000
--- a/java/res/values-lt/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
- U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
- U+00E6: "æ" LATIN SMALL LETTER AE -->
- <string name="more_keys_for_a">&#x0105;,&#x00E4;,&#x0101;,&#x00E0;,&#x00E1;,&#x00E2;,&#x00E3;,&#x00E5;,&#x00E6;</string>
- <!-- U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
- U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
- U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
- U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
- U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
- U+011B: "ě" LATIN SMALL LETTER E WITH CARON -->
- <string name="more_keys_for_e">&#x0117;,&#x0119;,&#x0113;,&#x00E8;,&#x00E9;,&#x00EA;,&#x00EB;,&#x011B;</string>
- <!-- U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
- U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
- U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
- U+0131: "ı" LATIN SMALL LETTER DOTLESS I -->
- <string name="more_keys_for_i">&#x012F;,&#x012B;,&#x00EC;,&#x00ED;,&#x00EE;,&#x00EF;,&#x0131;</string>
- <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE -->
- <string name="more_keys_for_o">&#x00F6;,&#x00F5;,&#x00F2;,&#x00F3;,&#x00F4;,&#x0153;,&#x0151;,&#x00F8;</string>
- <!-- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
- U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
- U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
- U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE -->
- <string name="more_keys_for_u">&#x016B;,&#x0173;,&#x00FC;,&#x016B;,&#x00F9;,&#x00FA;,&#x00FB;,&#x016F;,&#x0171;</string>
- <!-- U+0161: "š" LATIN SMALL LETTER S WITH CARON
- U+00DF: "ß" LATIN SMALL LETTER SHARP S
- U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
- U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA -->
- <string name="more_keys_for_s">&#x0161;,&#x00DF;,&#x015B;,&#x015F;</string>
- <!-- U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
- <string name="more_keys_for_n">&#x0146;,&#x00F1;,&#x0144;,&#x0144;</string>
- <!-- U+010D: "č" LATIN SMALL LETTER C WITH CARON
- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
- U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE -->
- <string name="more_keys_for_c">&#x010D;,&#x00E7;,&#x0107;</string>
- <!-- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
- U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS -->
- <string name="more_keys_for_y">&#x00FD;,&#x00FF;</string>
- <!-- U+010F: "ď" LATIN SMALL LETTER D WITH CARON -->
- <string name="more_keys_for_d">&#x010F;</string>
- <!-- U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
- U+0159: "ř" LATIN SMALL LETTER R WITH CARON
- U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE -->
- <string name="more_keys_for_r">&#x0157;,&#x0159;,&#x0155;</string>
- <!-- U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
- U+0165: "ť" LATIN SMALL LETTER T WITH CARON -->
- <string name="more_keys_for_t">&#x0163;,&#x0165;</string>
- <!-- U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
- U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
- U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE -->
- <string name="more_keys_for_z">&#x017E;,&#x017C;,&#x017A;</string>
- <!-- U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA -->
- <string name="more_keys_for_k">&#x0137;</string>
- <!-- U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA
- U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
- U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE
- U+013E: "ľ" LATIN SMALL LETTER L WITH CARON -->
- <string name="more_keys_for_l">&#x013C;,&#x0142;,&#x013A;,&#x013E;</string>
- <!-- U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
- U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE -->
- <string name="more_keys_for_g">&#x0123;,&#x011F;</string>
-</resources>
diff --git a/java/res/values-lv/donottranslate-more-keys.xml b/java/res/values-lv/donottranslate-more-keys.xml
deleted file mode 100644
index d0a44480a..000000000
--- a/java/res/values-lv/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,106 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
- U+00E6: "æ" LATIN SMALL LETTER AE
- U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK -->
- <string name="more_keys_for_a">&#x0101;,&#x00E0;,&#x00E1;,&#x00E2;,&#x00E3;,&#x00E4;,&#x00E5;,&#x00E6;,&#x0105;</string>
- <!-- U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
- U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
- U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
- U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
- U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
- U+011B: "ě" LATIN SMALL LETTER E WITH CARON -->
- <string name="more_keys_for_e">&#x0113;,&#x0117;,&#x00E8;,&#x00E9;,&#x00EA;,&#x00EB;,&#x0119;,&#x011B;</string>
- <!-- U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
- U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
- U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
- U+0131: "ı" LATIN SMALL LETTER DOTLESS I -->
- <string name="more_keys_for_i">&#x012B;,&#x012F;,&#x00EC;,&#x00ED;,&#x00EE;,&#x00EF;,&#x0131;</string>
- <!-- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE -->
- <string name="more_keys_for_o">&#x00F2;,&#x00F3;,&#x00F4;,&#x00F5;,&#x00F6;,&#x0153;,&#x0151;,&#x00F8;</string>
- <!-- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
- U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
- U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
- U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE -->
- <string name="more_keys_for_u">&#x016B;,&#x0173;,&#x00F9;,&#x00FA;,&#x00FB;,&#x00FC;,&#x016F;,&#x0171;</string>
- <!-- U+0161: "š" LATIN SMALL LETTER S WITH CARON
- U+00DF: "ß" LATIN SMALL LETTER SHARP S
- U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
- U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA -->
- <string name="more_keys_for_s">&#x0161;,&#x00DF;,&#x015B;,&#x015F;</string>
- <!-- U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
- <string name="more_keys_for_n">&#x0146;,&#x00F1;,&#x0144;,&#x0144;</string>
- <!-- U+010D: "č" LATIN SMALL LETTER C WITH CARON
- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
- U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE -->
- <string name="more_keys_for_c">&#x010D;,&#x00E7;,&#x0107;</string>
- <!-- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
- U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS -->
- <string name="more_keys_for_y">&#x00FD;,&#x00FF;</string>
- <!-- U+010F: "ď" LATIN SMALL LETTER D WITH CARON -->
- <string name="more_keys_for_d">&#x010F;</string>
- <!-- U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
- U+0159: "ř" LATIN SMALL LETTER R WITH CARON
- U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE -->
- <string name="more_keys_for_r">&#x0157;,&#x0159;,&#x0155;</string>
- <!-- U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
- U+0165: "ť" LATIN SMALL LETTER T WITH CARON -->
- <string name="more_keys_for_t">&#x0163;,&#x0165;</string>
- <!-- U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
- U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
- U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE -->
- <string name="more_keys_for_z">&#x017E;,&#x017C;,&#x017A;</string>
- <!-- U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA -->
- <string name="more_keys_for_k">&#x0137;</string>
- <!-- U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA
- U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
- U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE
- U+013E: "ľ" LATIN SMALL LETTER L WITH CARON -->
- <string name="more_keys_for_l">&#x013C;,&#x0142;,&#x013A;,&#x013E;</string>
- <!-- U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
- U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE -->
- <string name="more_keys_for_g">&#x0123;,&#x011F;</string>
-</resources>
diff --git a/java/res/values-mk/donottranslate-more-keys.xml b/java/res/values-mk/donottranslate-more-keys.xml
deleted file mode 100644
index d0cccf61b..000000000
--- a/java/res/values-mk/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2012, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+0455: "ѕ" CYRILLIC SMALL LETTER DZE -->
- <string name="keylabel_for_south_slavic_row1_6">&#x0455;</string>
- <!-- U+045C: "ќ" CYRILLIC SMALL LETTER KJE -->
- <string name="keylabel_for_south_slavic_row2_11">&#x045C;</string>
- <!-- U+0437: "з" CYRILLIC SMALL LETTER ZE -->
- <string name="keylabel_for_south_slavic_row3_1">&#x0437;</string>
- <!-- U+0453: "ѓ" CYRILLIC SMALL LETTER GJE -->
- <string name="keylabel_for_south_slavic_row3_8">&#x0453;</string>
- <!-- U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE -->
- <string name="more_keys_for_cyrillic_ie">&#x0450;</string>
- <!-- U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE -->
- <string name="more_keys_for_cyrillic_i">&#x045D;</string>
- <!-- U+2018: "‘" LEFT SINGLE QUOTATION MARK
- U+2019: "’" RIGHT SINGLE QUOTATION MARK
- U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
- U+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK
- U+201C: "“" LEFT DOUBLE QUOTATION MARK
- U+201D: "”" RIGHT DOUBLE QUOTATION MARK
- U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
- U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
- <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. -->
- <!-- <string name="more_keys_for_double_quote">!fixedColumnOrder!6,&#x201E;,&#x201C;,&#x201D;,&#x201F;,&#x00AB;,&#x00BB;</string> -->
- <string name="more_keys_for_double_quote">!fixedColumnOrder!5,&#x201E;,&#x201C;,&#x201D;,&#x00AB;,&#x00BB;</string>
- <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. -->
- <!-- <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string> -->
- <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!5,&#x201E;,&#x201C;,&#x201D;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
-</resources>
diff --git a/java/res/values-nb/donottranslate-more-keys.xml b/java/res/values-nb/donottranslate-more-keys.xml
deleted file mode 100644
index 49e6d5faf..000000000
--- a/java/res/values-nb/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2010, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
- <string name="more_keys_for_a">&#x00E0;,&#x00E4;,&#x00E1;,&#x00E2;,&#x00E3;,&#x0101;</string>
- <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
- U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
- U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
- U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
- U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
- U+0113: "ē" LATIN SMALL LETTER E WITH MACRON -->
- <string name="more_keys_for_e">&#x00E9;,&#x00E8;,&#x00EA;,&#x00EB;,&#x0119;,&#x0117;,&#x0113;</string>
- <!-- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
- <string name="more_keys_for_o">&#x00F4;,&#x00F2;,&#x00F3;,&#x00F6;,&#x00F5;,&#x0153;,&#x014D;</string>
- <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
- <string name="more_keys_for_u">&#x00FC;,&#x00FB;,&#x00F9;,&#x00FA;,&#x016B;</string>
- <!-- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE -->
- <string name="keylabel_for_nordic_row1_11">&#x00E5;</string>
- <!-- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE -->
- <string name="keylabel_for_nordic_row2_10">&#x00F8;</string>
- <!-- U+00E6: "æ" LATIN SMALL LETTER AE -->
- <string name="keylabel_for_nordic_row2_11">&#x00E6;</string>
- <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS -->
- <string name="more_keys_for_nordic_row2_10">&#x00F6;</string>
- <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS -->
- <string name="more_keys_for_nordic_row2_11">&#x00E4;</string>
-</resources>
diff --git a/java/res/values-nl/donottranslate-more-keys.xml b/java/res/values-nl/donottranslate-more-keys.xml
deleted file mode 100644
index 73768aff2..000000000
--- a/java/res/values-nl/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E6: "æ" LATIN SMALL LETTER AE
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
- U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
- <string name="more_keys_for_a">&#x00E1;,&#x00E4;,&#x00E2;,&#x00E0;,&#x00E6;,&#x00E3;,&#x00E5;,&#x0101;</string>
- <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
- U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
- U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
- U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
- U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
- U+0113: "ē" LATIN SMALL LETTER E WITH MACRON -->
- <string name="more_keys_for_e">&#x00E9;,&#x00EB;,&#x00EA;,&#x00E8;,&#x0119;,&#x0117;,&#x0113;</string>
- <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
- U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
- U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
- U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
- U+0133: "ij" LATIN SMALL LIGATURE IJ -->
- <string name="more_keys_for_i">&#x00ED;,&#x00EF;,&#x00EC;,&#x00EE;,&#x012F;,&#x012B;,&#x0133;</string>
- <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
- U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
- <string name="more_keys_for_o">&#x00F3;,&#x00F6;,&#x00F4;,&#x00F2;,&#x00F5;,&#x0153;,&#x00F8;,&#x014D;</string>
- <!-- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
- <string name="more_keys_for_u">&#x00FA;,&#x00FC;,&#x00FB;,&#x00F9;,&#x016B;</string>
- <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
- <string name="more_keys_for_n">&#x00F1;,&#x0144;</string>
- <!-- U+0133: "ij" LATIN SMALL LIGATURE IJ -->
- <string name="more_keys_for_y">&#x0133;</string>
-</resources>
diff --git a/java/res/values-pl/donottranslate-more-keys.xml b/java/res/values-pl/donottranslate-more-keys.xml
deleted file mode 100644
index 0f8a59bd6..000000000
--- a/java/res/values-pl/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2010, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
- U+00E6: "æ" LATIN SMALL LETTER AE
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
- U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
- <string name="more_keys_for_a">&#x0105;,&#x00E1;,&#x00E0;,&#x00E2;,&#x00E4;,&#x00E6;,&#x00E3;,&#x00E5;,&#x0101;</string>
- <!-- U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
- U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
- U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
- U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
- U+0113: "ē" LATIN SMALL LETTER E WITH MACRON -->
- <string name="more_keys_for_e">&#x0119;,&#x00E8;,&#x00E9;,&#x00EA;,&#x00EB;,&#x0117;,&#x0113;</string>
- <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
- U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
- <string name="more_keys_for_o">&#x00F3;,&#x00F6;,&#x00F4;,&#x00F2;,&#x00F5;,&#x0153;,&#x00F8;,&#x014D;</string>
- <!-- U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
- U+00DF: "ß" LATIN SMALL LETTER SHARP S
- U+0161: "š" LATIN SMALL LETTER S WITH CARON -->
- <string name="more_keys_for_s">&#x015B;,&#x00DF;,&#x0161;</string>
- <!-- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE -->
- <string name="more_keys_for_n">&#x0144;,&#x00F1;</string>
- <!-- U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
- U+010D: "č" LATIN SMALL LETTER C WITH CARON -->
- <string name="more_keys_for_c">&#x0107;,&#x00E7;,&#x010D;</string>
- <!-- U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
- U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
- U+017E: "ž" LATIN SMALL LETTER Z WITH CARON -->
- <string name="more_keys_for_z">&#x017C;,&#x017A;,&#x017E;</string>
- <!-- U+0142: "ł" LATIN SMALL LETTER L WITH STROKE -->
- <string name="more_keys_for_l">&#x0142;</string>
-</resources>
diff --git a/java/res/values-pt/donottranslate-more-keys.xml b/java/res/values-pt/donottranslate-more-keys.xml
deleted file mode 100644
index 0c9065f27..000000000
--- a/java/res/values-pt/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
- U+00E6: "æ" LATIN SMALL LETTER AE
- U+00AA: "ª" FEMININE ORDINAL INDICATOR -->
- <string name="more_keys_for_a">&#x00E1;,&#x00E3;,&#x00E0;,&#x00E2;,&#x00E4;,&#x00E5;,&#x00E6;,&#x00AA;</string>
- <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
- U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
- U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
- U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
- U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
- U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS -->
- <string name="more_keys_for_e">&#x00E9;,&#x00EA;,&#x00E8;,&#x0119;,&#x0117;,&#x0113;,&#x00EB;</string>
- <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
- U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
- U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
- U+012B: "ī" LATIN SMALL LETTER I WITH MACRON -->
- <string name="more_keys_for_i">&#x00ED;,&#x00EE;,&#x00EC;,&#x00EF;,&#x012F;,&#x012B;</string>
- <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
- U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
- U+00BA: "º" MASCULINE ORDINAL INDICATOR -->
- <string name="more_keys_for_o">&#x00F3;,&#x00F5;,&#x00F4;,&#x00F2;,&#x00F6;,&#x0153;,&#x00F8;,&#x014D;,&#x00BA;</string>
- <!-- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
- <string name="more_keys_for_u">&#x00FA;,&#x00FC;,&#x00F9;,&#x00FB;,&#x016B;</string>
- <!-- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
- U+010D: "č" LATIN SMALL LETTER C WITH CARON
- U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE -->
- <string name="more_keys_for_c">&#x00E7;,&#x010D;,&#x0107;</string>
-</resources>
diff --git a/java/res/values-rm/donottranslate-more-keys.xml b/java/res/values-rm/donottranslate-more-keys.xml
deleted file mode 100644
index aa0d7f817..000000000
--- a/java/res/values-rm/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2010, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE -->
- <string name="more_keys_for_o">&#x00F2;,&#x00F3;,&#x00F6;,&#x00F4;,&#x00F5;,&#x0153;,&#x00F8;</string>
-</resources>
diff --git a/java/res/values-ro/donottranslate-more-keys.xml b/java/res/values-ro/donottranslate-more-keys.xml
deleted file mode 100644
index 44613cf85..000000000
--- a/java/res/values-ro/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+0103: "ă" LATIN SMALL LETTER A WITH BREVE
- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
- U+00E6: "æ" LATIN SMALL LETTER AE
- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
- U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
- <string name="more_keys_for_a">&#x00E2;,&#x00E3;,&#x0103;,&#x00E0;,&#x00E1;,&#x00E4;,&#x00E6;,&#x00E5;,&#x0101;</string>
- <!-- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
- U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
- U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
- U+012B: "ī" LATIN SMALL LETTER I WITH MACRON -->
- <string name="more_keys_for_i">&#x00EE;,&#x00EF;,&#x00EC;,&#x00ED;,&#x012F;,&#x012B;</string>
- <!-- U+0219: "ș" LATIN SMALL LETTER S WITH COMMA BELOW
- U+00DF: "ß" LATIN SMALL LETTER SHARP S
- U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
- U+0161: "š" LATIN SMALL LETTER S WITH CARON -->
- <string name="more_keys_for_s">&#x0219;,&#x00DF;,&#x015B;,&#x0161;</string>
- <!-- U+021B: "ț" LATIN SMALL LETTER T WITH COMMA BELOW -->
- <string name="more_keys_for_t">&#x021B;</string>
-</resources>
diff --git a/java/res/values-ru/donottranslate-more-keys.xml b/java/res/values-ru/donottranslate-more-keys.xml
deleted file mode 100644
index 0bb57074c..000000000
--- a/java/res/values-ru/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2010, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+0449: "щ" CYRILLIC SMALL LETTER SHCHA -->
- <string name="keylabel_for_east_slavic_row1_9">&#x0449;</string>
- <!-- U+044B: "ы" CYRILLIC SMALL LETTER YERU -->
- <string name="keylabel_for_east_slavic_row2_1">&#x044B;</string>
- <!-- U+0438: "и" CYRILLIC SMALL LETTER I -->
- <string name="keylabel_for_east_slavic_row3_5">&#x0438;</string>
- <!-- U+0451: "ё" CYRILLIC SMALL LETTER IO -->
- <string name="more_keys_for_cyrillic_ye">&#x0451;</string>
- <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
- <string name="more_keys_for_cyrillic_ha">&#x044A;</string>
- <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
- <string name="more_keys_for_cyrillic_soft_sign">&#x044A;</string>
-</resources>
diff --git a/java/res/values-ru/strings.xml b/java/res/values-ru/strings.xml
index 13d3ae14a..4910df04a 100644
--- a/java/res/values-ru/strings.xml
+++ b/java/res/values-ru/strings.xml
@@ -61,12 +61,9 @@
<string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Умеренное"</string>
<string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Активное"</string>
<string name="auto_correction_threshold_mode_very_aggeressive" msgid="3386782235540547678">"Очень активно"</string>
- <!-- no translation found for bigram_suggestion (8169311444438922902) -->
- <skip />
- <!-- no translation found for bigram_suggestion_summary (6635527607242625713) -->
- <skip />
- <!-- no translation found for bigram_prediction (3216364899483135294) -->
- <skip />
+ <string name="bigram_suggestion" msgid="8169311444438922902">"Предложения для следующего слова"</string>
+ <string name="bigram_suggestion_summary" msgid="6635527607242625713">"Использовать предыдущее слово, чтобы улучшить предложения"</string>
+ <string name="bigram_prediction" msgid="3216364899483135294">"Подсказка для следующего слова"</string>
<string name="bigram_prediction_summary" msgid="1747261921174300098">"Использовать предыдущее слово для прогнозирования"</string>
<string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: сохранено"</string>
<string name="label_go_key" msgid="1635148082137219148">"Поиск"</string>
@@ -121,8 +118,7 @@
<string name="keyboard_layout" msgid="8451164783510487501">"Тема клавиатуры"</string>
<string name="subtype_en_GB" msgid="88170601942311355">"английский (Великобритания)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"английский (США)"</string>
- <!-- no translation found for subtype_no_language_qwerty (2956121451616633133) -->
- <skip />
+ <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Нет языка (QWERTY)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Режим проверки удобства использования"</string>
<string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Настройки вибросигнала при нажатии клавиш"</string>
<string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Настройки громкости звука при нажатии клавиш"</string>
diff --git a/java/res/values-sk/donottranslate-more-keys.xml b/java/res/values-sk/donottranslate-more-keys.xml
deleted file mode 100644
index f6e1e8d72..000000000
--- a/java/res/values-sk/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
- U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
- U+00E6: "æ" LATIN SMALL LETTER AE
- U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK -->
- <string name="more_keys_for_a">&#x00E1;,&#x00E4;,&#x0101;,&#x00E0;,&#x00E2;,&#x00E3;,&#x00E5;,&#x00E6;,&#x0105;</string>
- <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
- U+011B: "ě" LATIN SMALL LETTER E WITH CARON
- U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
- U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
- U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
- U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
- U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK -->
- <string name="more_keys_for_e">&#x00E9;,&#x011B;,&#x0113;,&#x0117;,&#x00E8;,&#x00EA;,&#x00EB;,&#x0119;</string>
- <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
- U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
- U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
- U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
- U+0131: "ı" LATIN SMALL LETTER DOTLESS I -->
- <string name="more_keys_for_i">&#x00ED;,&#x012B;,&#x012F;,&#x00EC;,&#x00EE;,&#x00EF;,&#x0131;</string>
- <!-- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE -->
- <string name="more_keys_for_o">&#x00F4;,&#x00F3;,&#x00F6;,&#x00F2;,&#x00F5;,&#x0153;,&#x0151;,&#x00F8;</string>
- <!-- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
- U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
- U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
- U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE -->
- <string name="more_keys_for_u">&#x00FA;,&#x016F;,&#x00FC;,&#x016B;,&#x0173;,&#x00F9;,&#x00FB;,&#x0171;</string>
- <!-- U+0161: "š" LATIN SMALL LETTER S WITH CARON
- U+00DF: "ß" LATIN SMALL LETTER SHARP S
- U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
- U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA -->
- <string name="more_keys_for_s">&#x0161;,&#x00DF;,&#x015B;,&#x015F;</string>
- <!-- U+0148: "ň" LATIN SMALL LETTER N WITH CARON
- U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
- <string name="more_keys_for_n">&#x0148;,&#x0146;,&#x00F1;,&#x0144;,&#x0144;</string>
- <!-- U+010D: "č" LATIN SMALL LETTER C WITH CARON
- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
- U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE -->
- <string name="more_keys_for_c">&#x010D;,&#x00E7;,&#x0107;</string>
- <!-- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
- U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS -->
- <string name="more_keys_for_y">&#x00FD;,&#x00FF;</string>
- <!-- U+010F: "ď" LATIN SMALL LETTER D WITH CARON -->
- <string name="more_keys_for_d">&#x010F;</string>
- <!-- U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
- U+0159: "ř" LATIN SMALL LETTER R WITH CARON
- U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA -->
- <string name="more_keys_for_r">&#x0155;,&#x0159;,&#x0157;</string>
- <!-- U+0165: "ť" LATIN SMALL LETTER T WITH CARON
- U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA -->
- <string name="more_keys_for_t">&#x0165;,&#x0163;</string>
- <!-- U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
- U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
- U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE -->
- <string name="more_keys_for_z">&#x017E;,&#x017C;,&#x017A;</string>
- <!-- U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA -->
- <string name="more_keys_for_k">&#x0137;</string>
- <!-- U+013E: "ľ" LATIN SMALL LETTER L WITH CARON
- U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE
- U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA
- U+0142: "ł" LATIN SMALL LETTER L WITH STROKE -->
- <string name="more_keys_for_l">&#x013E;,&#x013A;,&#x013C;,&#x0142;</string>
- <!-- U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
- U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE -->
- <string name="more_keys_for_g">&#x0123;,&#x011F;</string>
-</resources>
diff --git a/java/res/values-sl/donottranslate-more-keys.xml b/java/res/values-sl/donottranslate-more-keys.xml
deleted file mode 100644
index ccff2ac29..000000000
--- a/java/res/values-sl/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+0161: "š" LATIN SMALL LETTER S WITH CARON -->
- <string name="more_keys_for_s">&#x0161;</string>
- <!-- U+010D: "č" LATIN SMALL LETTER C WITH CARON
- U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE -->
- <string name="more_keys_for_c">&#x010D;,&#x0107;</string>
- <!-- U+0111: "đ" LATIN SMALL LETTER D WITH STROKE -->
- <string name="more_keys_for_d">&#x0111;</string>
- <!-- U+017E: "ž" LATIN SMALL LETTER Z WITH CARON -->
- <string name="more_keys_for_z">&#x017E;</string>
-</resources>
diff --git a/java/res/values-sr/donottranslate-more-keys.xml b/java/res/values-sr/donottranslate-more-keys.xml
deleted file mode 100644
index e85d3d7a2..000000000
--- a/java/res/values-sr/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2012, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+0437: "з" CYRILLIC SMALL LETTER ZE -->
- <string name="keylabel_for_south_slavic_row1_6">&#x0437;</string>
- <!-- U+045B: "ћ" CYRILLIC SMALL LETTER TSHE -->
- <string name="keylabel_for_south_slavic_row2_11">&#x045B;</string>
- <!-- U+0455: "ѕ" CYRILLIC SMALL LETTER DZE -->
- <string name="keylabel_for_south_slavic_row3_1">&#x0455;</string>
- <!-- U+0452: "ђ" CYRILLIC SMALL LETTER DJE -->
- <string name="keylabel_for_south_slavic_row3_8">&#x0452;</string>
- <!-- U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE -->
- <string name="more_keys_for_cyrillic_ie">&#x0450;</string>
- <!-- U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE -->
- <string name="more_keys_for_cyrillic_i">&#x045D;</string>
- <!-- U+2018: "‘" LEFT SINGLE QUOTATION MARK
- U+2019: "’" RIGHT SINGLE QUOTATION MARK
- U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
- U+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK
- U+201C: "“" LEFT DOUBLE QUOTATION MARK
- U+201D: "”" RIGHT DOUBLE QUOTATION MARK
- U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
- U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
- <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. -->
- <!-- <string name="more_keys_for_double_quote">!fixedColumnOrder!6,&#x201E;,&#x201C;,&#x201D;,&#x201F;,&#x00AB;,&#x00BB;</string> -->
- <string name="more_keys_for_double_quote">!fixedColumnOrder!5,&#x201E;,&#x201C;,&#x201D;,&#x00AB;,&#x00BB;</string>
- <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. -->
- <!-- <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string> -->
- <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!5,&#x201E;,&#x201C;,&#x201D;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
-</resources>
diff --git a/java/res/values-sv/donottranslate-more-keys.xml b/java/res/values-sv/donottranslate-more-keys.xml
deleted file mode 100644
index d479191f4..000000000
--- a/java/res/values-sv/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2010, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
- U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
- U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
- U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK -->
- <string name="more_keys_for_e">&#x00E9;,&#x00E8;,&#x00EA;,&#x00EB;,&#x0119;</string>
- <!-- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
- <string name="more_keys_for_o">&#x0153;,&#x00F4;,&#x00F2;,&#x00F3;,&#x00F5;,&#x014D;</string>
- <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
- <string name="more_keys_for_u">&#x00FC;,&#x00FB;,&#x00F9;,&#x00FA;,&#x016B;</string>
- <!-- U+00DF: "ß" LATIN SMALL LETTER SHARP S
- U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
- U+0161: "š" LATIN SMALL LETTER S WITH CARON -->
- <string name="more_keys_for_s">&#x00DF;,&#x015B;,&#x0161;</string>
- <!-- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE -->
- <string name="keylabel_for_nordic_row1_11">&#x00E5;</string>
- <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS -->
- <string name="keylabel_for_nordic_row2_10">&#x00F6;</string>
- <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS -->
- <string name="keylabel_for_nordic_row2_11">&#x00E4;</string>
- <!-- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE -->
- <string name="more_keys_for_nordic_row2_10">&#x00F8;</string>
- <!-- U+00E6: "æ" LATIN SMALL LETTER AE -->
- <string name="more_keys_for_nordic_row2_11">&#x00E6;</string>
-</resources>
diff --git a/java/res/values-sv/strings.xml b/java/res/values-sv/strings.xml
index 32bca0257..918fa42c1 100644
--- a/java/res/values-sv/strings.xml
+++ b/java/res/values-sv/strings.xml
@@ -61,12 +61,9 @@
<string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Måttlig"</string>
<string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Aggressiv"</string>
<string name="auto_correction_threshold_mode_very_aggeressive" msgid="3386782235540547678">"Mycket aggressivt"</string>
- <!-- no translation found for bigram_suggestion (8169311444438922902) -->
- <skip />
- <!-- no translation found for bigram_suggestion_summary (6635527607242625713) -->
- <skip />
- <!-- no translation found for bigram_prediction (3216364899483135294) -->
- <skip />
+ <string name="bigram_suggestion" msgid="8169311444438922902">"Föreslå nästa ord"</string>
+ <string name="bigram_suggestion_summary" msgid="6635527607242625713">"Förbättra förslagen med föregående ord"</string>
+ <string name="bigram_prediction" msgid="3216364899483135294">"Förutspå nästa ord"</string>
<string name="bigram_prediction_summary" msgid="1747261921174300098">"Använd även föregående ord för att ge förslag"</string>
<string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: sparat"</string>
<string name="label_go_key" msgid="1635148082137219148">"Kör"</string>
@@ -121,8 +118,7 @@
<string name="keyboard_layout" msgid="8451164783510487501">"Tangentbordstema"</string>
<string name="subtype_en_GB" msgid="88170601942311355">"Engelskt (brittiskt)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Engelskt (amerikanskt)"</string>
- <!-- no translation found for subtype_no_language_qwerty (2956121451616633133) -->
- <skip />
+ <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Inget språk (QWERTY)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Läge för studie av användbarhet"</string>
<string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Inställningar för vibrationslängd vid knapptryck"</string>
<string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Volyminställningar för knappljud"</string>
diff --git a/java/res/values-sw/strings.xml b/java/res/values-sw/strings.xml
index 1a835f1af..39ecc02f7 100644
--- a/java/res/values-sw/strings.xml
+++ b/java/res/values-sw/strings.xml
@@ -61,12 +61,9 @@
<string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Ya wastani"</string>
<string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Ya hima"</string>
<string name="auto_correction_threshold_mode_very_aggeressive" msgid="3386782235540547678">"Changamfu zaidi"</string>
- <!-- no translation found for bigram_suggestion (8169311444438922902) -->
- <skip />
- <!-- no translation found for bigram_suggestion_summary (6635527607242625713) -->
- <skip />
- <!-- no translation found for bigram_prediction (3216364899483135294) -->
- <skip />
+ <string name="bigram_suggestion" msgid="8169311444438922902">"Mapendekezo ya neno lifuatalo"</string>
+ <string name="bigram_suggestion_summary" msgid="6635527607242625713">"Tumia neno la awali ili kuboresha mapendekezo"</string>
+ <string name="bigram_prediction" msgid="3216364899483135294">"Utabiri wa neno lifuatalo"</string>
<string name="bigram_prediction_summary" msgid="1747261921174300098">"Tumia neno la awali pia kwa udadisi"</string>
<string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Imehifadhiwa"</string>
<string name="label_go_key" msgid="1635148082137219148">"Nenda"</string>
@@ -121,8 +118,7 @@
<string name="keyboard_layout" msgid="8451164783510487501">"Maandhari ya kibodi"</string>
<string name="subtype_en_GB" msgid="88170601942311355">"Kiingereza cha (Uingereza)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Kiingereza cha (Marekani)"</string>
- <!-- no translation found for subtype_no_language_qwerty (2956121451616633133) -->
- <skip />
+ <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Hakuna lugha (QWERTY)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modi ya uchunguzi wa utumizi"</string>
<string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Bonyeza mipangilio ya kipindi cha mtetemo"</string>
<string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Bonyeza mipangilio ya nguvu za sauti"</string>
diff --git a/java/res/values-th/strings.xml b/java/res/values-th/strings.xml
index 3595796de..87838ad36 100644
--- a/java/res/values-th/strings.xml
+++ b/java/res/values-th/strings.xml
@@ -71,7 +71,7 @@
<string name="label_previous_key" msgid="1211868118071386787">"ก่อนหน้า"</string>
<string name="label_done_key" msgid="2441578748772529288">"เสร็จสิ้น"</string>
<string name="label_send_key" msgid="2815056534433717444">"ส่ง"</string>
- <string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_alpha_key" msgid="4793983863798817523">"กขค"</string>
<string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
<string name="label_to_symbol_with_microphone_key" msgid="9035925553010061906">"123"</string>
<string name="label_pause_key" msgid="181098308428035340">"หยุดชั่วคราว"</string>
diff --git a/java/res/values-tl/strings.xml b/java/res/values-tl/strings.xml
index bf6712c19..2bf661f3d 100644
--- a/java/res/values-tl/strings.xml
+++ b/java/res/values-tl/strings.xml
@@ -61,12 +61,9 @@
<string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Modest"</string>
<string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Agresibo"</string>
<string name="auto_correction_threshold_mode_very_aggeressive" msgid="3386782235540547678">"Napaka-agresibo"</string>
- <!-- no translation found for bigram_suggestion (8169311444438922902) -->
- <skip />
- <!-- no translation found for bigram_suggestion_summary (6635527607242625713) -->
- <skip />
- <!-- no translation found for bigram_prediction (3216364899483135294) -->
- <skip />
+ <string name="bigram_suggestion" msgid="8169311444438922902">"Mga paghuhula sa susunod na salita"</string>
+ <string name="bigram_suggestion_summary" msgid="6635527607242625713">"Gamitin ang naunang salita para mapahusay ang mga suhestiyon"</string>
+ <string name="bigram_prediction" msgid="3216364899483135294">"Paghuhula sa susunod na salita"</string>
<string name="bigram_prediction_summary" msgid="1747261921174300098">"Gamitin ang nakaraang salita para din sa hula"</string>
<string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Na-save"</string>
<string name="label_go_key" msgid="1635148082137219148">"Punta"</string>
@@ -121,8 +118,7 @@
<string name="keyboard_layout" msgid="8451164783510487501">"Tema ng keyboard"</string>
<string name="subtype_en_GB" msgid="88170601942311355">"Ingles (UK)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Ingles (Estados Unidos)"</string>
- <!-- no translation found for subtype_no_language_qwerty (2956121451616633133) -->
- <skip />
+ <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Walang wika (QWERTY)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Study mode ng pagiging kapaki-pakinabang"</string>
<string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Mga setting ng tagal ng vibration ng keypress"</string>
<string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Mga setting ng volume ng tunog ng keypress"</string>
diff --git a/java/res/values-tr/donottranslate-more-keys.xml b/java/res/values-tr/donottranslate-more-keys.xml
deleted file mode 100644
index 1161811d4..000000000
--- a/java/res/values-tr/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2010, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX -->
- <string name="more_keys_for_a">&#x00E2;</string>
- <!-- U+0131: "ı" LATIN SMALL LETTER DOTLESS I
- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
- U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
- U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
- U+012B: "ī" LATIN SMALL LETTER I WITH MACRON -->
- <string name="more_keys_for_i">&#x0131;,&#x00EE;,&#x00EF;,&#x00EC;,&#x00ED;,&#x012F;,&#x012B;</string>
- <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
- U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
- <string name="more_keys_for_o">&#x00F6;,&#x00F4;,&#x0153;,&#x00F2;,&#x00F3;,&#x00F5;,&#x00F8;,&#x014D;</string>
- <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
- <string name="more_keys_for_u">&#x00FC;,&#x00FB;,&#x00F9;,&#x00FA;,&#x016B;</string>
- <!-- U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
- U+00DF: "ß" LATIN SMALL LETTER SHARP S
- U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
- U+0161: "š" LATIN SMALL LETTER S WITH CARON -->
- <string name="more_keys_for_s">&#x015F;,&#x00DF;,&#x015B;,&#x0161;</string>
- <!-- U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE -->
- <string name="more_keys_for_g">&#x011F;</string>
- <!-- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
- U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
- U+010D: "č" LATIN SMALL LETTER C WITH CARON -->
- <string name="more_keys_for_c">&#x00E7;,&#x0107;,&#x010D;</string>
-</resources>
diff --git a/java/res/values-uk/donottranslate-more-keys.xml b/java/res/values-uk/donottranslate-more-keys.xml
deleted file mode 100644
index 32397049a..000000000
--- a/java/res/values-uk/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+0449: "щ" CYRILLIC SMALL LETTER SHCHA -->
- <string name="keylabel_for_east_slavic_row1_9">&#x0449;</string>
- <!-- U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I -->
- <string name="keylabel_for_east_slavic_row2_1">&#x0456;</string>
- <!-- U+0438: "и" CYRILLIC SMALL LETTER I -->
- <string name="keylabel_for_east_slavic_row3_5">&#x0438;</string>
- <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
- <string name="more_keys_for_cyrillic_ha">&#x044A;</string>
- <!-- U+0457: "ї" CYRILLIC SMALL LETTER YI -->
- <string name="more_keys_for_east_slavic_row2_1">&#x0457;</string>
- <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
- <string name="more_keys_for_cyrillic_soft_sign">&#x044A;</string>
-</resources>
diff --git a/java/res/values-vi/donottranslate-more-keys.xml b/java/res/values-vi/donottranslate-more-keys.xml
deleted file mode 100644
index 6ef1c6bc5..000000000
--- a/java/res/values-vi/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+1EA3: "ả" LATIN SMALL LETTER A WITH HOOK ABOVE
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+1EA1: "ạ" LATIN SMALL LETTER A WITH DOT BELOW
- U+0103: "ă" LATIN SMALL LETTER A WITH BREVE
- U+1EB1: "ằ" LATIN SMALL LETTER A WITH BREVE AND GRAVE
- U+1EAF: "ắ" LATIN SMALL LETTER A WITH BREVE AND ACUTE
- U+1EB3: "ẳ" LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
- U+1EB5: "ẵ" LATIN SMALL LETTER A WITH BREVE AND TILDE
- U+1EB7: "ặ" LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+1EA7: "ầ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
- U+1EA5: "ấ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
- U+1EA9: "ẩ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
- U+1EAB: "ẫ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
- U+1EAD: "ậ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW -->
- <string name="more_keys_for_a">&#x00E0;,&#x00E1;,&#x1EA3;,&#x00E3;,&#x1EA1;,&#x0103;,&#x1EB1;,&#x1EAF;,&#x1EB3;,&#x1EB5;,&#x1EB7;,&#x00E2;,&#x1EA7;,&#x1EA5;,&#x1EA9;,&#x1EAB;,&#x1EAD;</string>
- <!-- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
- U+1EBB: "ẻ" LATIN SMALL LETTER E WITH HOOK ABOVE
- U+1EBD: "ẽ" LATIN SMALL LETTER E WITH TILDE
- U+1EB9: "ẹ" LATIN SMALL LETTER E WITH DOT BELOW
- U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
- U+1EC1: "ề" LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
- U+1EBF: "ế" LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
- U+1EC3: "ể" LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
- U+1EC5: "ễ" LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
- U+1EC7: "ệ" LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW -->
- <string name="more_keys_for_e">&#x00E8;,&#x00E9;,&#x1EBB;,&#x1EBD;,&#x1EB9;,&#x00EA;,&#x1EC1;,&#x1EBF;,&#x1EC3;,&#x1EC5;,&#x1EC7;</string>
- <!-- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
- U+1EC9: "ỉ" LATIN SMALL LETTER I WITH HOOK ABOVE
- U+0129: "ĩ" LATIN SMALL LETTER I WITH TILDE
- U+1ECB: "ị" LATIN SMALL LETTER I WITH DOT BELOW -->
- <string name="more_keys_for_i">&#x00EC;,&#x00ED;,&#x1EC9;,&#x0129;,&#x1ECB;</string>
- <!-- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+1ECF: "ỏ" LATIN SMALL LETTER O WITH HOOK ABOVE
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+1ECD: "ọ" LATIN SMALL LETTER O WITH DOT BELOW
- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+1ED3: "ồ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
- U+1ED1: "ố" LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
- U+1ED5: "ổ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
- U+1ED7: "ỗ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
- U+1ED9: "ộ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
- U+01A1: "ơ" LATIN SMALL LETTER O WITH HORN
- U+1EDD: "ờ" LATIN SMALL LETTER O WITH HORN AND GRAVE
- U+1EDB: "ớ" LATIN SMALL LETTER O WITH HORN AND ACUTE
- U+1EDF: "ở" LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
- U+1EE1: "ỡ" LATIN SMALL LETTER O WITH HORN AND TILDE
- U+1EE3: "ợ" LATIN SMALL LETTER O WITH HORN AND DOT BELOW -->
- <string name="more_keys_for_o">&#x00F2;,&#x00F3;,&#x1ECF;,&#x00F5;,&#x1ECD;,&#x00F4;,&#x1ED3;,&#x1ED1;,&#x1ED5;,&#x1ED7;,&#x1ED9;,&#x01A1;,&#x1EDD;,&#x1EDB;,&#x1EDF;,&#x1EE1;,&#x1EE3;</string>
- <!-- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
- U+1EE7: "ủ" LATIN SMALL LETTER U WITH HOOK ABOVE
- U+0169: "ũ" LATIN SMALL LETTER U WITH TILDE
- U+1EE5: "ụ" LATIN SMALL LETTER U WITH DOT BELOW
- U+01B0: "ư" LATIN SMALL LETTER U WITH HORN
- U+1EEB: "ừ" LATIN SMALL LETTER U WITH HORN AND GRAVE
- U+1EE9: "ứ" LATIN SMALL LETTER U WITH HORN AND ACUTE
- U+1EED: "ử" LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
- U+1EEF: "ữ" LATIN SMALL LETTER U WITH HORN AND TILDE
- U+1EF1: "ự" LATIN SMALL LETTER U WITH HORN AND DOT BELOW -->
- <string name="more_keys_for_u">&#x00F9;,&#x00FA;,&#x1EE7;,&#x0169;,&#x1EE5;,&#x01B0;,&#x1EEB;,&#x1EE9;,&#x1EED;,&#x1EEF;,&#x1EF1;</string>
- <!-- U+1EF3: "ỳ" LATIN SMALL LETTER Y WITH GRAVE
- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
- U+1EF7: "ỷ" LATIN SMALL LETTER Y WITH HOOK ABOVE
- U+1EF9: "ỹ" LATIN SMALL LETTER Y WITH TILDE
- U+1EF5: "ỵ" LATIN SMALL LETTER Y WITH DOT BELOW -->
- <string name="more_keys_for_y">&#x1EF3;,&#x00FD;,&#x1EF7;,&#x1EF9;,&#x1EF5;</string>
- <!-- U+0111: "đ" LATIN SMALL LETTER D WITH STROKE -->
- <string name="more_keys_for_d">&#x0111;</string>
-</resources>
diff --git a/java/res/values-vi/strings.xml b/java/res/values-vi/strings.xml
index 8bdc29ca5..362882e67 100644
--- a/java/res/values-vi/strings.xml
+++ b/java/res/values-vi/strings.xml
@@ -61,12 +61,9 @@
<string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Đơn giản"</string>
<string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Linh hoạt"</string>
<string name="auto_correction_threshold_mode_very_aggeressive" msgid="3386782235540547678">"Rất linh hoạt"</string>
- <!-- no translation found for bigram_suggestion (8169311444438922902) -->
- <skip />
- <!-- no translation found for bigram_suggestion_summary (6635527607242625713) -->
- <skip />
- <!-- no translation found for bigram_prediction (3216364899483135294) -->
- <skip />
+ <string name="bigram_suggestion" msgid="8169311444438922902">"Đề xuất từ tiếp theo"</string>
+ <string name="bigram_suggestion_summary" msgid="6635527607242625713">"Sử dụng từ trước đó để cải tiến đề xuất"</string>
+ <string name="bigram_prediction" msgid="3216364899483135294">"Dự đoán từ tiếp theo"</string>
<string name="bigram_prediction_summary" msgid="1747261921174300098">"Cũng sử dụng từ trước đó để dự đoán"</string>
<string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Đã lưu"</string>
<string name="label_go_key" msgid="1635148082137219148">"Tìm"</string>
@@ -121,8 +118,7 @@
<string name="keyboard_layout" msgid="8451164783510487501">"Chủ đề bàn phím"</string>
<string name="subtype_en_GB" msgid="88170601942311355">"Tiếng Anh (Anh)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Tiếng Anh (Mỹ)"</string>
- <!-- no translation found for subtype_no_language_qwerty (2956121451616633133) -->
- <skip />
+ <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Không có ngôn ngữ (QWERTY)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Chế độ nghiên cứu tính khả dụng"</string>
<string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Cài đặt thời gian rung khi nhấn phím"</string>
<string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Cài đặt âm lượng khi nhấn phím"</string>
diff --git a/java/res/values-zz/donottranslate-more-keys.xml b/java/res/values-zz/donottranslate-more-keys.xml
deleted file mode 100644
index eb984a469..000000000
--- a/java/res/values-zz/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,139 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2012, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
- U+00E6: "æ" LATIN SMALL LETTER AE
- U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
- U+0103: "ă" LATIN SMALL LETTER A WITH BREVE
- U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
- U+00AA: "ª" FEMININE ORDINAL INDICATOR -->
- <string name="more_keys_for_a">&#x00E0;,&#x00E1;,&#x00E2;,&#x00E3;,&#x00E4;,&#x00E5;,&#x00E6;,&#x00E3;,&#x00E5;,&#x0101;,&#x0103;,&#x0105;,&#x00AA;</string>
- <!-- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
- U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
- U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
- U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
- U+0115: "ĕ" LATIN SMALL LETTER E WITH BREVE
- U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
- U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
- U+011B: "ě" LATIN SMALL LETTER E WITH CARON -->
- <string name="more_keys_for_e">&#x00E8;,&#x00E9;,&#x00EA;,&#x00EB;,&#x0113;,&#x0115;,&#x0117;,&#x0119;,&#x011B;</string>
- <!-- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
- U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
- U+0129: "ĩ" LATIN SMALL LETTER I WITH TILDE
- U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
- U+012D: "ĭ" LATIN SMALL LETTER I WITH BREVE
- U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
- U+0131: "ı" LATIN SMALL LETTER DOTLESS I
- U+0133: "ij" LATIN SMALL LIGATURE IJ -->
- <string name="more_keys_for_i">&#x00EC;,&#x00ED;,&#x00EE;,&#x00EF;,&#x0129;,&#x012B;,&#x012D;,&#x012F;,&#x0131;,&#x0133;</string>
- <!-- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
- U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
- U+014F: "ŏ" LATIN SMALL LETTER O WITH BREVE
- U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+00BA: "º" MASCULINE ORDINAL INDICATOR -->
- <string name="more_keys_for_o">&#x00F2;,&#x00F3;,&#x00F4;,&#x00F5;,&#x00F6;,&#x00F8;,&#x014D;,&#x014F;,&#x0151;,&#x0153;,&#x00BA;</string>
- <!-- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
- U+0169: "ũ" LATIN SMALL LETTER U WITH TILDE
- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
- U+016D: "ŭ" LATIN SMALL LETTER U WITH BREVE
- U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
- U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
- U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK -->
- <string name="more_keys_for_u">&#x00F9;,&#x00FA;,&#x00FB;,&#x00FC;,&#x0169;,&#x016B;,&#x016D;,&#x016F;,&#x0171;,&#x0173;</string>
- <!-- U+00DF: "ß" LATIN SMALL LETTER SHARP S
- U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
- U+015D: "ŝ" LATIN SMALL LETTER S WITH CIRCUMFLEX
- U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
- U+0161: "š" LATIN SMALL LETTER S WITH CARON
- U+017F: "ſ" LATIN SMALL LETTER LONG S -->
- <string name="more_keys_for_s">&#x00DF;,&#x015B;,&#x015D;,&#x015F;,&#x0161;,&#x017F;</string>
- <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
- U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
- U+0148: "ň" LATIN SMALL LETTER N WITH CARON
- U+0149: "ʼn" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
- U+014B: "ŋ" LATIN SMALL LETTER ENG -->
- <string name="more_keys_for_n">&#x00F1;,&#x0144;,&#x0146;,&#x0148;,&#x0149;,&#x014B;</string>
- <!-- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
- U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
- U+0109: "ĉ" LATIN SMALL LETTER C WITH CIRCUMFLEX
- U+010B: "ċ" LATIN SMALL LETTER C WITH DOT ABOVE
- U+010D: "č" LATIN SMALL LETTER C WITH CARON -->
- <string name="more_keys_for_c">&#x00E7;,&#x0107;,&#x0109;,&#x010B;,&#x010D;</string>
- <!-- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
- U+0177: "ŷ" LATIN SMALL LETTER Y WITH CIRCUMFLEX
- U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
- U+0133: "ij" LATIN SMALL LIGATURE IJ -->
- <string name="more_keys_for_y">&#x00FD;,&#x0177;,&#x00FF;,&#x0133;</string>
- <!-- U+010F: "ď" LATIN SMALL LETTER D WITH CARON
- U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
- U+00F0: "ð" LATIN SMALL LETTER ETH -->
- <string name="more_keys_for_d">&#x010F;,&#x0111;,&#x00F0;</string>
- <!-- U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
- U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
- U+0159: "ř" LATIN SMALL LETTER R WITH CARON -->
- <string name="more_keys_for_r">&#x0155;,&#x0157;,&#x0159;</string>
- <!-- U+00FE: "þ" LATIN SMALL LETTER THORN
- U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
- U+0165: "ť" LATIN SMALL LETTER T WITH CARON
- U+0167: "ŧ" LATIN SMALL LETTER T WITH STROKE -->
- <string name="more_keys_for_t">&#x00FE;,&#x0163;,&#x0165;,&#x0167;</string>
- <!-- U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
- U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
- U+017E: "ž" LATIN SMALL LETTER Z WITH CARON -->
- <string name="more_keys_for_z">&#x017A;,&#x017C;,&#x017E;</string>
- <!-- U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
- U+0138: "ĸ" LATIN SMALL LETTER KRA -->
- <string name="more_keys_for_k">&#x0137;,&#x0138;</string>
- <!-- U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE
- U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA
- U+013E: "ľ" LATIN SMALL LETTER L WITH CARON
- U+0140: "ŀ" LATIN SMALL LETTER L WITH MIDDLE DOT
- U+0142: "ł" LATIN SMALL LETTER L WITH STROKE -->
- <string name="more_keys_for_l">&#x013A;,&#x013C;,&#x013E;,&#x0140;,&#x0142;</string>
- <!-- U+011D: "ĝ" LATIN SMALL LETTER G WITH CIRCUMFLEX
- U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
- U+0121: "ġ" LATIN SMALL LETTER G WITH DOT ABOVE
- U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA -->
- <string name="more_keys_for_g">&#x011D;,&#x011F;,&#x0121;,&#x0123;</string>
- <!-- U+0125: "ĥ" LATIN SMALL LETTER H WITH CIRCUMFLEX -->
- <string name="more_keys_for_h">&#x0125;</string>
- <!-- U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX -->
- <string name="more_keys_for_j">&#x0135;</string>
- <!-- U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX -->
- <string name="more_keys_for_w">&#x0175;</string>
-</resources>
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 573ec68b7..4ec184334 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -275,10 +275,11 @@
<flag name="alignLeft" value="0x01" />
<flag name="alignRight" value="0x02" />
<flag name="alignLeftOfCenter" value="0x08" />
- <flag name="largeLetter" value="0x10" />
- <flag name="fontNormal" value="0x20" />
- <flag name="fontMonoSpace" value="0x40" />
+ <flag name="fontNormal" value="0x10" />
+ <flag name="fontMonoSpace" value="0x20" />
+ <flag name="followKeyLargeLetterRatio" value="0x40" />
<flag name="followKeyLetterRatio" value="0x80" />
+ <flag name="followKeyLabelRatio" value="0xC0" />
<flag name="followKeyHintLabelRatio" value="0x100" />
<flag name="hasPopupHint" value="0x200" />
<flag name="hasShiftedLetterHint" value="0x400" />
diff --git a/java/res/values/donottranslate-more-keys.xml b/java/res/values/donottranslate-more-keys.xml
deleted file mode 100644
index 14c278af9..000000000
--- a/java/res/values/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,187 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2010, 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="more_keys_for_a"></string>
- <string name="more_keys_for_e"></string>
- <string name="more_keys_for_i"></string>
- <string name="more_keys_for_o"></string>
- <string name="more_keys_for_u"></string>
- <string name="more_keys_for_s"></string>
- <string name="more_keys_for_n"></string>
- <string name="more_keys_for_c"></string>
- <string name="more_keys_for_y"></string>
- <string name="more_keys_for_d"></string>
- <string name="more_keys_for_r"></string>
- <string name="more_keys_for_t"></string>
- <string name="more_keys_for_z"></string>
- <string name="more_keys_for_k"></string>
- <string name="more_keys_for_l"></string>
- <string name="more_keys_for_g"></string>
- <string name="more_keys_for_v"></string>
- <string name="more_keys_for_h"></string>
- <string name="more_keys_for_j"></string>
- <string name="more_keys_for_w"></string>
- <string name="keylabel_for_nordic_row1_11"></string>
- <string name="keylabel_for_nordic_row2_10"></string>
- <string name="keylabel_for_nordic_row2_11"></string>
- <string name="more_keys_for_nordic_row2_10"></string>
- <string name="more_keys_for_nordic_row2_11"></string>
- <string name="keylabel_for_east_slavic_row1_9"></string>
- <string name="keylabel_for_east_slavic_row2_1"></string>
- <string name="keylabel_for_east_slavic_row3_5"></string>
- <string name="more_keys_for_cyrillic_u"></string>
- <string name="more_keys_for_cyrillic_ye"></string>
- <string name="more_keys_for_cyrillic_en"></string>
- <string name="more_keys_for_cyrillic_ha"></string>
- <string name="more_keys_for_east_slavic_row2_1"></string>
- <string name="more_keys_for_cyrillic_o"></string>
- <string name="more_keys_for_cyrillic_soft_sign"></string>
- <string name="keylabel_for_south_slavic_row1_6"></string>
- <string name="keylabel_for_south_slavic_row2_11"></string>
- <string name="keylabel_for_south_slavic_row3_1"></string>
- <string name="keylabel_for_south_slavic_row3_8"></string>
- <string name="more_keys_for_cyrillic_ie"></string>
- <string name="more_keys_for_cyrillic_i"></string>
- <!-- U+00A2: "¢" CENT SIGN
- U+00A3: "£" POUND SIGN
- U+20AC: "€" EURO SIGN
- U+00A5: "¥" YEN SIGN
- U+20B1: "₱" PESO SIGN -->
- <string name="more_keys_for_currency_dollar">&#x00A2;,&#x00A3;,&#x20AC;,&#x00A5;,&#x20B1;</string>
- <string name="more_keys_for_currency_euro">&#x00A2;,&#x00A3;,$,&#x00A5;,&#x20B1;</string>
- <string name="more_keys_for_currency_pound">&#x00A2;,$,&#x20AC;,&#x00A5;,&#x20B1;</string>
- <string name="more_keys_for_currency_general">&#x00A2;,$,&#x20AC;,&#x00A3;,&#x00A5;,&#x20B1;</string>
- <string name="more_keys_for_smiley">"!fixedColumnOrder!5,!hasLabels!,=-O|=-O ,:-P|:-P ,;-)|;-) ,:-(|:-( ,:-)|:-) ,:-!|:-! ,:-$|:-$ ,B-)|B-) ,:O|:O ,:-*|:-* ,:-D|:-D ,:\'(|:\'( ,:-\\\\|:-\\\\ ,O:-)|O:-) ,:-[|:-[ "</string>
- <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,\",\',#,-,:,!,\\,,\?,\@,&amp;,\\%,+,;,/,(,)"</string>
- <string name="keyhintlabel_for_punctuation"></string>
- <string name="keylabel_for_popular_domain">".com"</string>
- <!-- popular web domains for the locale - most popular, displayed on the keyboard -->
- <string name="more_keys_for_popular_domain">"!hasLabels!,.net,.org,.gov,.edu"</string>
- <string name="keylabel_for_symbols_1">1</string>
- <string name="keylabel_for_symbols_2">2</string>
- <string name="keylabel_for_symbols_3">3</string>
- <string name="keylabel_for_symbols_4">4</string>
- <string name="keylabel_for_symbols_5">5</string>
- <string name="keylabel_for_symbols_6">6</string>
- <string name="keylabel_for_symbols_7">7</string>
- <string name="keylabel_for_symbols_8">8</string>
- <string name="keylabel_for_symbols_9">9</string>
- <string name="keylabel_for_symbols_0">0</string>
- <string name="additional_more_keys_for_symbols_1"></string>
- <string name="additional_more_keys_for_symbols_2"></string>
- <string name="additional_more_keys_for_symbols_3"></string>
- <string name="additional_more_keys_for_symbols_4"></string>
- <string name="additional_more_keys_for_symbols_5"></string>
- <string name="additional_more_keys_for_symbols_6"></string>
- <string name="additional_more_keys_for_symbols_7"></string>
- <string name="additional_more_keys_for_symbols_8"></string>
- <string name="additional_more_keys_for_symbols_9"></string>
- <string name="additional_more_keys_for_symbols_0"></string>
- <!-- U+00B9: "¹" SUPERSCRIPT ONE
- U+00BD: "½" VULGAR FRACTION ONE HALF
- U+2153: "⅓" VULGAR FRACTION ONE THIRD
- U+00BC: "¼" VULGAR FRACTION ONE QUARTER
- U+215B: "⅛" VULGAR FRACTION ONE EIGHTH -->
- <string name="more_keys_for_symbols_1">&#x00B9;,&#x00BD;,&#x2153;,&#x00BC;,&#x215B;</string>
- <!-- U+00B2: "²" SUPERSCRIPT TWO
- U+2154: "⅔" VULGAR FRACTION TWO THIRDS -->
- <string name="more_keys_for_symbols_2">&#x00B2;,&#x2154;</string>
- <!-- U+00B3: "³" SUPERSCRIPT THREE
- U+00BE: "¾" VULGAR FRACTION THREE QUARTERS
- U+215C: "⅜" VULGAR FRACTION THREE EIGHTHS -->
- <string name="more_keys_for_symbols_3">&#x00B3;,&#x00BE;,&#x215C;</string>
- <!-- U+2074: "⁴" SUPERSCRIPT FOUR -->
- <string name="more_keys_for_symbols_4">&#x2074;</string>
- <!-- U+215D: "⅝" VULGAR FRACTION FIVE EIGHTHS -->
- <string name="more_keys_for_symbols_5">&#x215D;</string>
- <string name="more_keys_for_symbols_6"></string>
- <!-- U+215E: "⅞" VULGAR FRACTION SEVEN EIGHTHS -->
- <string name="more_keys_for_symbols_7">&#x215E;</string>
- <string name="more_keys_for_symbols_8"></string>
- <string name="more_keys_for_symbols_9"></string>
- <!-- U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N
- U+2205: "∅" EMPTY SET -->
- <string name="more_keys_for_symbols_0">&#x207F;,&#x2205;</string>
- <string name="more_keys_for_am_pm">!fixedColumnOrder!2,!hasLabels!,\@string/label_time_am,\@string/label_time_pm</string>
- <string name="settings_as_more_key">!icon/settingsKey|!code/key_settings</string>
- <string name="keylabel_for_comma">,</string>
- <string name="more_keys_for_comma"></string>
- <string name="action_next_as_more_key">!hasLabels!,\@string/label_next_key|!code/key_action_next</string>
- <string name="action_previous_as_more_key">!hasLabels!,\@string/label_previous_key|!code/key_action_previous</string>
- <string name="keylabel_for_symbols_question">\?</string>
- <string name="keylabel_for_symbols_semicolon">;</string>
- <string name="keylabel_for_symbols_percent">%</string>
- <!-- U+00BF: "¿" INVERTED QUESTION MARK -->
- <string name="more_keys_for_symbols_question">&#x00BF;</string>
- <string name="more_keys_for_symbols_semicolon"></string>
- <!-- U+2030: "‰" PER MILLE SIGN -->
- <string name="more_keys_for_symbols_percent">&#x2030;</string>
- <string name="keylabel_for_tablet_comma">,</string>
- <string name="keyhintlabel_for_tablet_comma">!</string>
- <string name="more_keys_for_tablet_comma">!</string>
- <string name="keyhintlabel_for_tablet_period">\?</string>
- <string name="more_keys_for_tablet_period">\?</string>
- <string name="keylabel_for_apostrophe">\'</string>
- <string name="keylabel_for_dash">-</string>
- <string name="keyhintlabel_for_apostrophe">\"</string>
- <string name="keyhintlabel_for_dash">_</string>
- <string name="more_keys_for_apostrophe">\"</string>
- <string name="more_keys_for_dash">_</string>
- <!-- U+266A: "♪" EIGHTH NOTE
- U+2665: "♥" BLACK HEART SUIT
- U+2660: "♠" BLACK SPADE SUIT
- U+2666: "♦" BLACK DIAMOND SUIT
- U+2663: "♣" BLACK CLUB SUIT -->
- <string name="more_keys_for_bullet">&#x266A;,&#x2665;,&#x2660;,&#x2666;,&#x2663;</string>
- <!-- U+2020: "†" DAGGER
- U+2021: "‡" DOUBLE DAGGER
- U+2605: "★" BLACK STAR -->
- <string name="more_keys_for_star">&#x2020;,&#x2021;,&#x2605;</string>
- <!-- U+00B1: "±" PLUS-MINUS SIGN -->
- <string name="more_keys_for_plus">&#x00B1;</string>
- <!-- The all letters need to be mirrored are found at
- http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
- <string name="more_keys_for_left_parenthesis">!fixedColumnOrder!3,&lt;,{,[</string>
- <string name="more_keys_for_right_parenthesis">!fixedColumnOrder!3,&gt;,},]</string>
- <!-- U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
- U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
- U+2264: "≤" LESS-THAN OR EQUAL TO
- U+2265: "≥" GREATER-THAN EQUAL TO
- U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
- The following characters don't need BIDI mirroring.
- U+2018: "‘" LEFT SINGLE QUOTATION MARK
- U+2019: "’" RIGHT SINGLE QUOTATION MARK
- U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
- U+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK
- U+201C: "“" LEFT DOUBLE QUOTATION MARK
- U+201D: "”" RIGHT DOUBLE QUOTATION MARK
- U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
- U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
- <string name="more_keys_for_less_than">!fixedColumnOrder!3,&#x2039;,&#x2264;,&#x00AB;</string>
- <string name="more_keys_for_greater_than">!fixedColumnOrder!3,&#x203A;,&#x2265;,&#x00BB;</string>
- <string name="more_keys_for_single_quote">!fixedColumnOrder!4,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
- <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. -->
- <!-- <string name="more_keys_for_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;</string> -->
- <string name="more_keys_for_double_quote">!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x00AB;,&#x00BB;</string>
- <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. -->
- <!-- <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string> -->
- <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
-</resources>
diff --git a/java/res/values/donottranslate.xml b/java/res/values/donottranslate.xml
index 9c8bd3cd4..bfe42327c 100644
--- a/java/res/values/donottranslate.xml
+++ b/java/res/values/donottranslate.xml
@@ -45,24 +45,6 @@
<!-- <string name="layout_switch_back_symbols">\"\'&#x2018;&#x2019;&#x201A;&#x201B;&#x201C;&#x201D;&#x201E;&#x201F;&#x00AB;&#x00BB;</string> -->
<string name="layout_switch_back_symbols"></string>
- <!-- Label for "switch to more symbol" modifier key. Must be short to fit on key! -->
- <string name="label_to_more_symbol_key">= \\ &lt;</string>
- <!-- Label for "switch to more symbol" modifier key on tablets. Must be short to fit on key! -->
- <string name="label_to_more_symbol_for_tablet_key">~ \\ {</string>
-
- <!-- Label for "Tab" key. Must be short to fit on key! -->
- <string name="label_tab_key">Tab</string>
- <!-- Label for "switch to phone numeric" key. Must be short to fit on key! -->
- <string name="label_to_phone_numeric_key">123</string>
- <!-- Label for "switch to phone symbols" key. Must be short to fit on key! -->
- <!-- U+FF0A: "*" FULLWIDTH ASTERISK
- U+FF03: "#" FULLWIDTH NUMBER SIGN -->
- <string name="label_to_phone_symbols_key">&#xFF0A;&#xFF03;</string>
- <!-- Key label for "ante meridiem" -->
- <string name="label_time_am">"AM"</string>
- <!-- Key label for "post meridiem" -->
- <string name="label_time_pm">"PM"</string>
-
<!-- Always show the suggestion strip -->
<string name="prefs_suggestion_visibility_show_value">0</string>
<!-- Show the suggestion strip only on portrait mode -->
diff --git a/java/res/xml-sw600dp/key_shortcut.xml b/java/res/xml-sw600dp/key_shortcut.xml
index d4c45ad22..2114c67bd 100644
--- a/java/res/xml-sw600dp/key_shortcut.xml
+++ b/java/res/xml-sw600dp/key_shortcut.xml
@@ -29,7 +29,7 @@
<Key
latin:keyStyle="shortcutKeyStyle"
latin:keyLabelFlags="hasPopupHint|preserveCase"
- latin:moreKeys="@string/settings_as_more_key"
+ latin:moreKeys="!label/settings_as_more_key"
latin:keyWidth="fillBoth" />
</case>
<case
diff --git a/java/res/xml-sw600dp/key_styles_common.xml b/java/res/xml-sw600dp/key_styles_common.xml
index b0f610912..e0676e890 100644
--- a/java/res/xml-sw600dp/key_styles_common.xml
+++ b/java/res/xml-sw600dp/key_styles_common.xml
@@ -92,7 +92,7 @@
latin:keyLabel=":-)"
latin:keyOutputText=":-) "
latin:keyLabelFlags="hasPopupHint|preserveCase"
- latin:moreKeys="@string/more_keys_for_smiley" />
+ latin:moreKeys="!label/more_keys_for_smiley" />
<key-style
latin:styleName="shortcutKeyStyle"
latin:code="!code/key_shortcut"
@@ -131,35 +131,35 @@
<key-style
latin:styleName="toSymbolKeyStyle"
latin:code="!code/key_switch_alpha_symbol"
- latin:keyLabel="@string/label_to_symbol_key"
+ latin:keyLabel="!label/label_to_symbol_key"
latin:keyLabelFlags="preserveCase"
latin:keyActionFlags="noKeyPreview"
latin:backgroundType="functional" />
<key-style
latin:styleName="toAlphaKeyStyle"
latin:code="!code/key_switch_alpha_symbol"
- latin:keyLabel="@string/label_to_alpha_key"
+ latin:keyLabel="!label/label_to_alpha_key"
latin:keyLabelFlags="preserveCase"
latin:keyActionFlags="noKeyPreview"
latin:backgroundType="functional" />
<key-style
latin:styleName="toMoreSymbolKeyStyle"
latin:code="!code/key_shift"
- latin:keyLabel="@string/label_to_more_symbol_for_tablet_key"
+ latin:keyLabel="!label/label_to_more_symbol_for_tablet_key"
latin:keyLabelFlags="preserveCase"
latin:keyActionFlags="noKeyPreview"
latin:backgroundType="functional" />
<key-style
latin:styleName="backFromMoreSymbolKeyStyle"
latin:code="!code/key_shift"
- latin:keyLabel="@string/label_to_symbol_key"
+ latin:keyLabel="!label/label_to_symbol_key"
latin:keyLabelFlags="preserveCase"
latin:keyActionFlags="noKeyPreview"
latin:backgroundType="functional" />
<key-style
latin:styleName="comKeyStyle"
- latin:keyLabel="@string/keylabel_for_popular_domain"
+ latin:keyLabel="!label/keylabel_for_popular_domain"
latin:keyLabelFlags="fontNormal|hasPopupHint|preserveCase"
- latin:keyOutputText="@string/keylabel_for_popular_domain"
- latin:moreKeys="@string/more_keys_for_popular_domain" />
+ latin:keyOutputText="!label/keylabel_for_popular_domain"
+ latin:moreKeys="!label/more_keys_for_popular_domain" />
</merge>
diff --git a/java/res/xml-sw600dp/keys_apostrophe_dash.xml b/java/res/xml-sw600dp/keys_apostrophe_dash.xml
index a53c1e4ab..faaae50c9 100644
--- a/java/res/xml-sw600dp/keys_apostrophe_dash.xml
+++ b/java/res/xml-sw600dp/keys_apostrophe_dash.xml
@@ -39,9 +39,9 @@
</case>
<default>
<Key
- latin:keyLabel="@string/keylabel_for_apostrophe"
- latin:keyHintLabel="@string/keyhintlabel_for_apostrophe"
- latin:moreKeys="@string/more_keys_for_apostrophe"
+ latin:keyLabel="!label/keylabel_for_apostrophe"
+ latin:keyHintLabel="!label/keyhintlabel_for_apostrophe"
+ latin:moreKeys="!label/more_keys_for_apostrophe"
latin:keyStyle="hasShiftedLetterHintStyle" />
</default>
</switch>
@@ -54,9 +54,9 @@
</case>
<default>
<Key
- latin:keyLabel="@string/keylabel_for_dash"
- latin:keyHintLabel="@string/keyhintlabel_for_dash"
- latin:moreKeys="@string/more_keys_for_dash"
+ latin:keyLabel="!label/keylabel_for_dash"
+ latin:keyHintLabel="!label/keyhintlabel_for_dash"
+ latin:moreKeys="!label/more_keys_for_dash"
latin:keyStyle="hasShiftedLetterHintStyle" />
</default>
</switch>
diff --git a/java/res/xml-sw600dp/keys_comma_period.xml b/java/res/xml-sw600dp/keys_comma_period.xml
index f5f307be6..4a83cc817 100644
--- a/java/res/xml-sw600dp/keys_comma_period.xml
+++ b/java/res/xml-sw600dp/keys_comma_period.xml
@@ -32,14 +32,14 @@
</case>
<default>
<Key
- latin:keyLabel="@string/keylabel_for_tablet_comma"
- latin:keyHintLabel="@string/keyhintlabel_for_tablet_comma"
- latin:moreKeys="@string/more_keys_for_tablet_comma"
+ latin:keyLabel="!label/keylabel_for_tablet_comma"
+ latin:keyHintLabel="!label/keyhintlabel_for_tablet_comma"
+ latin:moreKeys="!label/more_keys_for_tablet_comma"
latin:keyStyle="hasShiftedLetterHintStyle" />
<Key
latin:keyLabel="."
- latin:keyHintLabel="@string/keyhintlabel_for_tablet_period"
- latin:moreKeys="@string/more_keys_for_tablet_period"
+ latin:keyHintLabel="!label/keyhintlabel_for_tablet_period"
+ latin:moreKeys="!label/more_keys_for_tablet_period"
latin:keyStyle="hasShiftedLetterHintStyle" />
</default>
</switch>
diff --git a/java/res/xml-sw600dp/rowkeys_symbols2.xml b/java/res/xml-sw600dp/rowkeys_symbols2.xml
index e0121a35c..fd774168f 100644
--- a/java/res/xml-sw600dp/rowkeys_symbols2.xml
+++ b/java/res/xml-sw600dp/rowkeys_symbols2.xml
@@ -26,13 +26,13 @@
<Key
latin:keyStyle="currencyKeyStyle" />
<Key
- latin:keyLabel="@string/keylabel_for_symbols_percent"
- latin:moreKeys="@string/more_keys_for_symbols_percent" />
+ latin:keyLabel="!label/keylabel_for_symbols_percent"
+ latin:moreKeys="!label/more_keys_for_symbols_percent" />
<Key
latin:keyLabel="&amp;" />
<Key
latin:keyLabel="*"
- latin:moreKeys="@string/more_keys_for_star" />
+ latin:moreKeys="!label/more_keys_for_star" />
<!-- U+2013: "–" EN DASH
U+2014: "—" EM DASH -->
<Key
@@ -40,7 +40,7 @@
latin:moreKeys="_,&#x2013;,&#x2014;" />
<Key
latin:keyLabel="+"
- latin:moreKeys="@string/more_keys_for_plus" />
+ latin:moreKeys="!label/more_keys_for_plus" />
<include
latin:keyboardLayout="@xml/keys_parentheses" />
</merge>
diff --git a/java/res/xml-sw600dp/rowkeys_symbols3.xml b/java/res/xml-sw600dp/rowkeys_symbols3.xml
index 9293352cf..536ac05a2 100644
--- a/java/res/xml-sw600dp/rowkeys_symbols3.xml
+++ b/java/res/xml-sw600dp/rowkeys_symbols3.xml
@@ -41,11 +41,11 @@
</default>
</switch>
<Key
- latin:keyLabel="@string/keylabel_for_symbols_semicolon"
- latin:moreKeys="@string/more_keys_for_symbols_semicolon" />
+ latin:keyLabel="!label/keylabel_for_symbols_semicolon"
+ latin:moreKeys="!label/more_keys_for_symbols_semicolon" />
<Key
- latin:keyLabel="@string/keylabel_for_comma"
- latin:moreKeys="@string/more_keys_for_comma" />
+ latin:keyLabel="!label/keylabel_for_comma"
+ latin:moreKeys="!label/more_keys_for_comma" />
<Key
latin:keyLabel="." />
<!-- U+00A1: "¡" INVERTED EXCLAMATION MARK -->
@@ -53,6 +53,6 @@
latin:keyLabel="!"
latin:moreKeys="&#x00A1;" />
<Key
- latin:keyLabel="@string/keylabel_for_symbols_question"
- latin:moreKeys="@string/more_keys_for_symbols_question" />
+ latin:keyLabel="!label/keylabel_for_symbols_question"
+ latin:moreKeys="!label/more_keys_for_symbols_question" />
</merge>
diff --git a/java/res/xml-sw600dp/rowkeys_symbols_shift1.xml b/java/res/xml-sw600dp/rowkeys_symbols_shift1.xml
index 356ee2f0e..914a4499b 100644
--- a/java/res/xml-sw600dp/rowkeys_symbols_shift1.xml
+++ b/java/res/xml-sw600dp/rowkeys_symbols_shift1.xml
@@ -30,7 +30,7 @@
<!-- U+2022: "•" BULLET -->
<Key
latin:keyLabel="&#x2022;"
- latin:moreKeys="@string/more_keys_for_bullet" />
+ latin:moreKeys="!label/more_keys_for_bullet" />
<!-- U+221A: "√" SQUARE ROOT -->
<Key
latin:keyLabel="&#x221A;" />
diff --git a/java/res/xml-sw600dp/rows_number_normal.xml b/java/res/xml-sw600dp/rows_number_normal.xml
index be5776b20..00fda2899 100644
--- a/java/res/xml-sw600dp/rows_number_normal.xml
+++ b/java/res/xml-sw600dp/rows_number_normal.xml
@@ -70,7 +70,7 @@
<Key
latin:keyLabel=","
latin:keyLabelFlags="hasPopupHint"
- latin:moreKeys="@string/more_keys_for_am_pm"
+ latin:moreKeys="!label/more_keys_for_am_pm"
latin:keyStyle="numKeyStyle"
latin:keyWidth="9.25%p" />
</case>
diff --git a/java/res/xml-sw600dp/rows_symbols4.xml b/java/res/xml-sw600dp/rows_symbols4.xml
index bfc9b2cf6..afa2652ea 100644
--- a/java/res/xml-sw600dp/rows_symbols4.xml
+++ b/java/res/xml-sw600dp/rows_symbols4.xml
@@ -37,7 +37,7 @@
latin:keyWidth="39.750%p" />
<Key
latin:keyLabel="&quot;"
- latin:moreKeys="@string/more_keys_for_tablet_double_quote" />
+ latin:moreKeys="!label/more_keys_for_tablet_double_quote" />
<Key
latin:keyLabel="_" />
<Spacer
diff --git a/java/res/xml-sw768dp/key_styles_common.xml b/java/res/xml-sw768dp/key_styles_common.xml
index aa9cd692a..c3e2fd93d 100644
--- a/java/res/xml-sw768dp/key_styles_common.xml
+++ b/java/res/xml-sw768dp/key_styles_common.xml
@@ -91,7 +91,7 @@
latin:keyLabel=":-)"
latin:keyOutputText=":-) "
latin:keyLabelFlags="hasPopupHint|preserveCase"
- latin:moreKeys="@string/more_keys_for_smiley" />
+ latin:moreKeys="!label/more_keys_for_smiley" />
<key-style
latin:styleName="shortcutKeyStyle"
latin:code="!code/key_shortcut"
@@ -114,7 +114,7 @@
<key-style
latin:styleName="tabKeyStyle"
latin:code="!code/key_action_previous"
- latin:keyLabel="@string/label_tab_key"
+ latin:keyLabel="!label/label_tab_key"
latin:keyLabelFlags="fontNormal|preserveCase"
latin:backgroundType="functional" />
</case>
@@ -122,7 +122,7 @@
<key-style
latin:styleName="tabKeyStyle"
latin:code="!code/key_tab"
- latin:keyLabel="@string/label_tab_key"
+ latin:keyLabel="!label/label_tab_key"
latin:keyLabelFlags="fontNormal|preserveCase"
latin:backgroundType="functional" />
</default>
@@ -130,35 +130,35 @@
<key-style
latin:styleName="toSymbolKeyStyle"
latin:code="!code/key_switch_alpha_symbol"
- latin:keyLabel="@string/label_to_symbol_key"
+ latin:keyLabel="!label/label_to_symbol_key"
latin:keyLabelFlags="fontNormal|preserveCase"
latin:keyActionFlags="noKeyPreview"
latin:backgroundType="functional" />
<key-style
latin:styleName="toAlphaKeyStyle"
latin:code="!code/key_switch_alpha_symbol"
- latin:keyLabel="@string/label_to_alpha_key"
+ latin:keyLabel="!label/label_to_alpha_key"
latin:keyLabelFlags="fontNormal|preserveCase"
latin:keyActionFlags="noKeyPreview"
latin:backgroundType="functional" />
<key-style
latin:styleName="toMoreSymbolKeyStyle"
latin:code="!code/key_shift"
- latin:keyLabel="@string/label_to_more_symbol_for_tablet_key"
+ latin:keyLabel="!label/label_to_more_symbol_for_tablet_key"
latin:keyLabelFlags="fontNormal|preserveCase"
latin:keyActionFlags="noKeyPreview"
latin:backgroundType="functional" />
<key-style
latin:styleName="backFromMoreSymbolKeyStyle"
latin:code="!code/key_shift"
- latin:keyLabel="@string/label_to_symbol_key"
+ latin:keyLabel="!label/label_to_symbol_key"
latin:keyLabelFlags="fontNormal|preserveCase"
latin:keyActionFlags="noKeyPreview"
latin:backgroundType="functional" />
<key-style
latin:styleName="comKeyStyle"
- latin:keyLabel="@string/keylabel_for_popular_domain"
+ latin:keyLabel="!label/keylabel_for_popular_domain"
latin:keyLabelFlags="fontNormal|hasPopupHint|preserveCase"
- latin:keyOutputText="@string/keylabel_for_popular_domain"
- latin:moreKeys="@string/more_keys_for_popular_domain" />
+ latin:keyOutputText="!label/keylabel_for_popular_domain"
+ latin:moreKeys="!label/more_keys_for_popular_domain" />
</merge>
diff --git a/java/res/xml-sw768dp/keys_apostrophe_dash.xml b/java/res/xml-sw768dp/keys_apostrophe_dash.xml
index a53c1e4ab..faaae50c9 100644
--- a/java/res/xml-sw768dp/keys_apostrophe_dash.xml
+++ b/java/res/xml-sw768dp/keys_apostrophe_dash.xml
@@ -39,9 +39,9 @@
</case>
<default>
<Key
- latin:keyLabel="@string/keylabel_for_apostrophe"
- latin:keyHintLabel="@string/keyhintlabel_for_apostrophe"
- latin:moreKeys="@string/more_keys_for_apostrophe"
+ latin:keyLabel="!label/keylabel_for_apostrophe"
+ latin:keyHintLabel="!label/keyhintlabel_for_apostrophe"
+ latin:moreKeys="!label/more_keys_for_apostrophe"
latin:keyStyle="hasShiftedLetterHintStyle" />
</default>
</switch>
@@ -54,9 +54,9 @@
</case>
<default>
<Key
- latin:keyLabel="@string/keylabel_for_dash"
- latin:keyHintLabel="@string/keyhintlabel_for_dash"
- latin:moreKeys="@string/more_keys_for_dash"
+ latin:keyLabel="!label/keylabel_for_dash"
+ latin:keyHintLabel="!label/keyhintlabel_for_dash"
+ latin:moreKeys="!label/more_keys_for_dash"
latin:keyStyle="hasShiftedLetterHintStyle" />
</default>
</switch>
diff --git a/java/res/xml-sw768dp/rows_number_normal.xml b/java/res/xml-sw768dp/rows_number_normal.xml
index 2eeb6c9d4..f868cbb8b 100644
--- a/java/res/xml-sw768dp/rows_number_normal.xml
+++ b/java/res/xml-sw768dp/rows_number_normal.xml
@@ -72,7 +72,7 @@
<Key
latin:keyLabel=","
latin:keyLabelFlags="hasPopupHint"
- latin:moreKeys="@string/more_keys_for_am_pm"
+ latin:moreKeys="!label/more_keys_for_am_pm"
latin:keyStyle="numKeyStyle"
latin:keyWidth="8.047%p" />
</case>
diff --git a/java/res/xml-sw768dp/rows_symbols4.xml b/java/res/xml-sw768dp/rows_symbols4.xml
index 19b36d690..dd1647b95 100644
--- a/java/res/xml-sw768dp/rows_symbols4.xml
+++ b/java/res/xml-sw768dp/rows_symbols4.xml
@@ -37,7 +37,7 @@
latin:keyWidth="37.500%p" />
<Key
latin:keyLabel="&quot;"
- latin:moreKeys="@string/more_keys_for_tablet_double_quote" />
+ latin:moreKeys="!label/more_keys_for_tablet_double_quote" />
<Key
latin:keyLabel="_" />
<switch>
diff --git a/java/res/xml/key_azerty_quote.xml b/java/res/xml/key_azerty_quote.xml
index 966ae6f21..b8c51d30f 100644
--- a/java/res/xml/key_azerty_quote.xml
+++ b/java/res/xml/key_azerty_quote.xml
@@ -31,7 +31,7 @@
<default>
<Key
latin:keyLabel="\'"
- latin:moreKeys="\@string/more_keys_for_single_quote" />
+ latin:moreKeys="!label/more_keys_for_single_quote" />
</default>
</switch>
</merge>
diff --git a/java/res/xml/key_styles_common.xml b/java/res/xml/key_styles_common.xml
index b0b87a810..ec011d08b 100644
--- a/java/res/xml/key_styles_common.xml
+++ b/java/res/xml/key_styles_common.xml
@@ -35,7 +35,7 @@
<key-style
latin:styleName="f1MoreKeysStyle"
latin:keyLabelFlags="hasPopupHint|preserveCase"
- latin:moreKeys="@string/settings_as_more_key"
+ latin:moreKeys="!label/settings_as_more_key"
latin:backgroundType="functional" />
</default>
</switch>
@@ -98,7 +98,7 @@
latin:keyLabel=":-)"
latin:keyOutputText=":-) "
latin:keyLabelFlags="hasPopupHint"
- latin:moreKeys="@string/more_keys_for_smiley"
+ latin:moreKeys="!label/more_keys_for_smiley"
latin:backgroundType="functional" />
</case>
</switch>
@@ -158,7 +158,7 @@
latin:styleName="toSymbolKeyStyle"
latin:code="!code/key_switch_alpha_symbol"
latin:keyIcon="iconShortcutForLabel"
- latin:keyLabel="@string/label_to_symbol_with_microphone_key"
+ latin:keyLabel="!label/label_to_symbol_with_microphone_key"
latin:keyLabelFlags="withIconRight|preserveCase"
latin:keyActionFlags="noKeyPreview"
latin:backgroundType="functional" />
@@ -167,7 +167,7 @@
<key-style
latin:styleName="toSymbolKeyStyle"
latin:code="!code/key_switch_alpha_symbol"
- latin:keyLabel="@string/label_to_symbol_key"
+ latin:keyLabel="!label/label_to_symbol_key"
latin:keyLabelFlags="preserveCase"
latin:keyActionFlags="noKeyPreview"
latin:backgroundType="functional" />
@@ -176,29 +176,29 @@
<key-style
latin:styleName="toAlphaKeyStyle"
latin:code="!code/key_switch_alpha_symbol"
- latin:keyLabel="@string/label_to_alpha_key"
+ latin:keyLabel="!label/label_to_alpha_key"
latin:keyLabelFlags="preserveCase"
latin:keyActionFlags="noKeyPreview"
latin:backgroundType="functional" />
<key-style
latin:styleName="toMoreSymbolKeyStyle"
latin:code="!code/key_shift"
- latin:keyLabel="@string/label_to_more_symbol_key"
+ latin:keyLabel="!label/label_to_more_symbol_key"
latin:keyLabelFlags="preserveCase"
latin:keyActionFlags="noKeyPreview"
latin:backgroundType="functional" />
<key-style
latin:styleName="backFromMoreSymbolKeyStyle"
latin:code="!code/key_shift"
- latin:keyLabel="@string/label_to_symbol_key"
+ latin:keyLabel="!label/label_to_symbol_key"
latin:keyLabelFlags="preserveCase"
latin:keyActionFlags="noKeyPreview"
latin:backgroundType="functional" />
<key-style
latin:styleName="punctuationKeyStyle"
latin:keyLabel="."
- latin:keyHintLabel="@string/keyhintlabel_for_punctuation"
+ latin:keyHintLabel="!label/keyhintlabel_for_punctuation"
latin:keyLabelFlags="hasPopupHint|preserveCase"
- latin:moreKeys="@string/more_keys_for_punctuation"
+ latin:moreKeys="!label/more_keys_for_punctuation"
latin:backgroundType="functional" />
</merge>
diff --git a/java/res/xml/key_styles_currency.xml b/java/res/xml/key_styles_currency.xml
index bd1d959e4..6057d5bd7 100644
--- a/java/res/xml/key_styles_currency.xml
+++ b/java/res/xml/key_styles_currency.xml
@@ -86,7 +86,7 @@
<key-style
latin:styleName="currencyKeyStyle"
latin:keyLabel="&#x20AA;"
- latin:moreKeys="@string/more_keys_for_currency_general" />
+ latin:moreKeys="!label/more_keys_for_currency_general" />
<key-style
latin:styleName="moreCurrency1KeyStyle"
latin:keyLabel="&#x00A3;" />
@@ -112,7 +112,7 @@
<key-style
latin:styleName="currencyKeyStyle"
latin:keyLabel="&#xFDFC;"
- latin:moreKeys="@string/more_keys_for_currency_general" />
+ latin:moreKeys="!label/more_keys_for_currency_general" />
<key-style
latin:styleName="moreCurrency1KeyStyle"
latin:keyLabel="£" />
@@ -138,7 +138,7 @@
<key-style
latin:styleName="currencyKeyStyle"
latin:keyLabel="&#x00A3;"
- latin:moreKeys="@string/more_keys_for_currency_pound" />
+ latin:moreKeys="!label/more_keys_for_currency_pound" />
<key-style
latin:styleName="moreCurrency1KeyStyle"
latin:keyLabel="&#x20AC;" />
diff --git a/java/res/xml/key_styles_currency_dollar.xml b/java/res/xml/key_styles_currency_dollar.xml
index 8dd849879..704970a56 100644
--- a/java/res/xml/key_styles_currency_dollar.xml
+++ b/java/res/xml/key_styles_currency_dollar.xml
@@ -26,7 +26,7 @@
<key-style
latin:styleName="currencyKeyStyle"
latin:keyLabel="$"
- latin:moreKeys="@string/more_keys_for_currency_dollar" />
+ latin:moreKeys="!label/more_keys_for_currency_dollar" />
<key-style
latin:styleName="moreCurrency1KeyStyle"
latin:keyLabel="&#x00A3;" />
diff --git a/java/res/xml/key_styles_currency_euro.xml b/java/res/xml/key_styles_currency_euro.xml
index 0573e0991..074d4c0c2 100644
--- a/java/res/xml/key_styles_currency_euro.xml
+++ b/java/res/xml/key_styles_currency_euro.xml
@@ -26,7 +26,7 @@
<key-style
latin:styleName="currencyKeyStyle"
latin:keyLabel="&#x20AC;"
- latin:moreKeys="@string/more_keys_for_currency_euro" />
+ latin:moreKeys="!abel/more_keys_for_currency_euro" />
<key-style
latin:styleName="moreCurrency1KeyStyle"
latin:keyLabel="&#x00A3;" />
diff --git a/java/res/xml/key_styles_enter.xml b/java/res/xml/key_styles_enter.xml
index 49759c470..f4c7ad46b 100644
--- a/java/res/xml/key_styles_enter.xml
+++ b/java/res/xml/key_styles_enter.xml
@@ -30,7 +30,7 @@
<key-style
latin:styleName="navigateMoreKeysStyle"
latin:keyLabelFlags="hasPopupHint|preserveCase"
- latin:moreKeys="@string/action_previous_as_more_key" />
+ latin:moreKeys="!label/action_previous_as_more_key" />
</case>
<case
latin:imeAction="actionNext"
@@ -46,7 +46,7 @@
<key-style
latin:styleName="navigateMoreKeysStyle"
latin:keyLabelFlags="hasPopupHint|preserveCase"
- latin:moreKeys="@string/action_next_as_more_key" />
+ latin:moreKeys="!label/action_next_as_more_key" />
</case>
<case
latin:imeAction="actionPrevious"
@@ -63,7 +63,7 @@
<key-style
latin:styleName="navigateMoreKeysStyle"
latin:keyLabelFlags="hasPopupHint|preserveCase"
- latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,@string/action_previous_as_more_key,@string/action_next_as_more_key" />
+ latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!label/action_previous_as_more_key,!label/action_next_as_more_key" />
</case>
<case
latin:navigateNext="true"
@@ -72,7 +72,7 @@
<key-style
latin:styleName="navigateMoreKeysStyle"
latin:keyLabelFlags="hasPopupHint|preserveCase"
- latin:moreKeys="@string/action_next_as_more_key" />
+ latin:moreKeys="!label/action_next_as_more_key" />
</case>
<case
latin:navigateNext="false"
@@ -81,7 +81,7 @@
<key-style
latin:styleName="navigateMoreKeysStyle"
latin:keyLabelFlags="hasPopupHint|preserveCase"
- latin:moreKeys="@string/action_previous_as_more_key" />
+ latin:moreKeys="!label/action_previous_as_more_key" />
</case>
<!-- naviagteNext="false" and navigatePrevious="false" -->
<default>
@@ -94,7 +94,7 @@
latin:styleName="defaultEnterKeyStyle"
latin:code="!code/key_enter"
latin:keyIcon="iconReturnKey"
- latin:keyLabelFlags="autoXScale|preserveCase"
+ latin:keyLabelFlags="autoXScale|preserveCase|followKeyLabelRatio"
latin:keyActionFlags="noKeyPreview"
latin:backgroundType="functional"
latin:parentStyle="navigateMoreKeysStyle" />
@@ -119,7 +119,7 @@
>
<key-style
latin:styleName="enterKeyStyle"
- latin:keyLabel="@string/label_go_key"
+ latin:keyLabel="!label/label_go_key"
latin:parentStyle="defaultActionKeyStyle" />
</case>
<case
@@ -127,7 +127,7 @@
>
<key-style
latin:styleName="enterKeyStyle"
- latin:keyLabel="@string/label_next_key"
+ latin:keyLabel="!label/label_next_key"
latin:parentStyle="defaultActionKeyStyle" />
</case>
<case
@@ -135,7 +135,7 @@
>
<key-style
latin:styleName="enterKeyStyle"
- latin:keyLabel="@string/label_previous_key"
+ latin:keyLabel="!label/label_previous_key"
latin:parentStyle="defaultActionKeyStyle" />
</case>
<case
@@ -143,7 +143,7 @@
>
<key-style
latin:styleName="enterKeyStyle"
- latin:keyLabel="@string/label_done_key"
+ latin:keyLabel="!label/label_done_key"
latin:parentStyle="defaultActionKeyStyle" />
</case>
<case
@@ -151,7 +151,7 @@
>
<key-style
latin:styleName="enterKeyStyle"
- latin:keyLabel="@string/label_send_key"
+ latin:keyLabel="!label/label_send_key"
latin:parentStyle="defaultActionKeyStyle" />
</case>
<case
diff --git a/java/res/xml/key_styles_number.xml b/java/res/xml/key_styles_number.xml
index e1c5e5bca..16cfa8492 100644
--- a/java/res/xml/key_styles_number.xml
+++ b/java/res/xml/key_styles_number.xml
@@ -26,7 +26,7 @@
latin:keyActionFlags="noKeyPreview" />
<key-style
latin:styleName="numKeyStyle"
- latin:keyLabelFlags="largeLetter|followKeyLetterRatio"
+ latin:keyLabelFlags="followKeyLargeLetterRatio"
latin:parentStyle="numKeyBaseStyle" />
<key-style
latin:styleName="numModeKeyStyle"
@@ -34,7 +34,7 @@
latin:parentStyle="numKeyBaseStyle" />
<key-style
latin:styleName="numFunctionalKeyStyle"
- latin:keyLabelFlags="largeLetter|followKeyLetterRatio"
+ latin:keyLabelFlags="followKeyLargeLetterRatio"
latin:backgroundType="functional"
latin:parentStyle="numKeyBaseStyle" />
<key-style
@@ -100,25 +100,25 @@
<key-style
latin:styleName="numPhoneToSymbolKeyStyle"
latin:code="!code/key_switch_alpha_symbol"
- latin:keyLabel="@string/label_to_phone_symbols_key"
+ latin:keyLabel="!label/label_to_phone_symbols_key"
latin:parentStyle="numModeKeyStyle" />
<key-style
latin:styleName="numPhoneToNumericKeyStyle"
latin:code="!code/key_switch_alpha_symbol"
- latin:keyLabel="@string/label_to_phone_numeric_key"
+ latin:keyLabel="!label/label_to_phone_numeric_key"
latin:parentStyle="numModeKeyStyle" />
<!-- U+002C: "," COMMA -->
<key-style
latin:styleName="numPauseKeyStyle"
latin:code="0x002C"
- latin:keyLabel="@string/label_pause_key"
+ latin:keyLabel="!label/label_pause_key"
latin:keyLabelFlags="followKeyHintLabelRatio|autoXScale"
latin:parentStyle="numKeyBaseStyle" />
<!-- U+003B: ";" SEMICOLON -->
<key-style
latin:styleName="numWaitKeyStyle"
latin:code="0x003B"
- latin:keyLabel="@string/label_wait_key"
+ latin:keyLabel="!label/label_wait_key"
latin:keyLabelFlags="followKeyHintLabelRatio|autoXScale"
latin:parentStyle="numKeyBaseStyle" />
<key-style
diff --git a/java/res/xml/keys_less_greater.xml b/java/res/xml/keys_less_greater.xml
index 831f2dd86..7c154cb0d 100644
--- a/java/res/xml/keys_less_greater.xml
+++ b/java/res/xml/keys_less_greater.xml
@@ -24,9 +24,9 @@
<Key
latin:keyLabel="&lt;"
latin:code="!code/key_less_than"
- latin:moreKeys="@string/more_keys_for_less_than" />
+ latin:moreKeys="!label/more_keys_for_less_than" />
<Key
latin:keyLabel="&gt;"
latin:code="!code/key_greater_than"
- latin:moreKeys="@string/more_keys_for_greater_than" />
+ latin:moreKeys="!label/more_keys_for_greater_than" />
</merge>
diff --git a/java/res/xml/keys_parentheses.xml b/java/res/xml/keys_parentheses.xml
index 502a84ede..17d72859c 100644
--- a/java/res/xml/keys_parentheses.xml
+++ b/java/res/xml/keys_parentheses.xml
@@ -24,9 +24,9 @@
<Key
latin:keyLabel="("
latin:code="!code/key_left_parenthesis"
- latin:moreKeys="@string/more_keys_for_left_parenthesis" />
+ latin:moreKeys="!label/more_keys_for_left_parenthesis" />
<Key
latin:keyLabel=")"
latin:code="!code/key_right_parenthesis"
- latin:moreKeys="@string/more_keys_for_right_parenthesis" />
+ latin:moreKeys="!label/more_keys_for_right_parenthesis" />
</merge>
diff --git a/java/res/xml/row_qwerty4.xml b/java/res/xml/row_qwerty4.xml
index b2b47e9b5..c08518079 100644
--- a/java/res/xml/row_qwerty4.xml
+++ b/java/res/xml/row_qwerty4.xml
@@ -51,9 +51,9 @@
<!-- latin:hasShortcutKey="false" -->
<default>
<Key
- latin:keyLabel="@string/keylabel_for_comma"
+ latin:keyLabel="!label/keylabel_for_comma"
latin:keyLabelFlags="hasPopupHint"
- latin:additionalMoreKeys="@string/more_keys_for_comma"
+ latin:additionalMoreKeys="!label/more_keys_for_comma"
latin:keyStyle="f1MoreKeysStyle" />
</default>
</switch>
diff --git a/java/res/xml/rowkeys_azerty1.xml b/java/res/xml/rowkeys_azerty1.xml
index 99834321f..50a0162de 100644
--- a/java/res/xml/rowkeys_azerty1.xml
+++ b/java/res/xml/rowkeys_azerty1.xml
@@ -25,47 +25,47 @@
latin:keyLabel="a"
latin:keyHintLabel="1"
latin:additionalMoreKeys="1"
- latin:moreKeys="@string/more_keys_for_a" />
+ latin:moreKeys="!label/more_keys_for_a" />
<Key
latin:keyLabel="z"
latin:keyHintLabel="2"
latin:additionalMoreKeys="2"
- latin:moreKeys="@string/more_keys_for_z" />
+ latin:moreKeys="!label/more_keys_for_z" />
<Key
latin:keyLabel="e"
latin:keyHintLabel="3"
latin:additionalMoreKeys="3"
- latin:moreKeys="@string/more_keys_for_e" />
+ latin:moreKeys="!label/more_keys_for_e" />
<Key
latin:keyLabel="r"
latin:keyHintLabel="4"
latin:additionalMoreKeys="4"
- latin:moreKeys="@string/more_keys_for_r" />
+ latin:moreKeys="!label/more_keys_for_r" />
<Key
latin:keyLabel="t"
latin:keyHintLabel="5"
latin:additionalMoreKeys="5"
- latin:moreKeys="@string/more_keys_for_t" />
+ latin:moreKeys="!label/more_keys_for_t" />
<Key
latin:keyLabel="y"
latin:keyHintLabel="6"
latin:additionalMoreKeys="6"
- latin:moreKeys="@string/more_keys_for_y" />
+ latin:moreKeys="!label/more_keys_for_y" />
<Key
latin:keyLabel="u"
latin:keyHintLabel="7"
latin:additionalMoreKeys="7"
- latin:moreKeys="@string/more_keys_for_u" />
+ latin:moreKeys="!label/more_keys_for_u" />
<Key
latin:keyLabel="i"
latin:keyHintLabel="8"
latin:additionalMoreKeys="8"
- latin:moreKeys="@string/more_keys_for_i" />
+ latin:moreKeys="!label/more_keys_for_i" />
<Key
latin:keyLabel="o"
latin:keyHintLabel="9"
latin:additionalMoreKeys="9"
- latin:moreKeys="@string/more_keys_for_o" />
+ latin:moreKeys="!label/more_keys_for_o" />
<Key
latin:keyLabel="p"
latin:keyHintLabel="0"
diff --git a/java/res/xml/rowkeys_azerty2.xml b/java/res/xml/rowkeys_azerty2.xml
index ff0b06240..f453c2432 100644
--- a/java/res/xml/rowkeys_azerty2.xml
+++ b/java/res/xml/rowkeys_azerty2.xml
@@ -25,27 +25,27 @@
latin:keyLabel="q" />
<Key
latin:keyLabel="s"
- latin:moreKeys="@string/more_keys_for_s" />
+ latin:moreKeys="!label/more_keys_for_s" />
<Key
latin:keyLabel="d"
- latin:moreKeys="@string/more_keys_for_d" />
+ latin:moreKeys="!label/more_keys_for_d" />
<Key
latin:keyLabel="f" />
<Key
latin:keyLabel="g"
- latin:moreKeys="@string/more_keys_for_g" />
+ latin:moreKeys="!label/more_keys_for_g" />
<Key
latin:keyLabel="h"
- latin:moreKeys="@string/more_keys_for_h" />
+ latin:moreKeys="!label/more_keys_for_h" />
<Key
latin:keyLabel="j"
- latin:moreKeys="@string/more_keys_for_j" />
+ latin:moreKeys="!label/more_keys_for_j" />
<Key
latin:keyLabel="k"
- latin:moreKeys="@string/more_keys_for_k" />
+ latin:moreKeys="!label/more_keys_for_k" />
<Key
latin:keyLabel="l"
- latin:moreKeys="@string/more_keys_for_l" />
+ latin:moreKeys="!label/more_keys_for_l" />
<Key
latin:keyLabel="m" />
</merge>
diff --git a/java/res/xml/rowkeys_azerty3.xml b/java/res/xml/rowkeys_azerty3.xml
index b81c3c5a1..35e9b195f 100644
--- a/java/res/xml/rowkeys_azerty3.xml
+++ b/java/res/xml/rowkeys_azerty3.xml
@@ -23,20 +23,20 @@
>
<Key
latin:keyLabel="w"
- latin:moreKeys="@string/more_keys_for_w" />
+ latin:moreKeys="!label/more_keys_for_w" />
<Key
latin:keyLabel="x" />
<Key
latin:keyLabel="c"
- latin:moreKeys="@string/more_keys_for_c" />
+ latin:moreKeys="!label/more_keys_for_c" />
<Key
latin:keyLabel="v"
- latin:moreKeys="@string/more_keys_for_v" />
+ latin:moreKeys="!label/more_keys_for_v" />
<Key
latin:keyLabel="b" />
<Key
latin:keyLabel="n"
- latin:moreKeys="@string/more_keys_for_n" />
+ latin:moreKeys="!label/more_keys_for_n" />
<include
latin:keyboardLayout="@xml/key_azerty_quote" />
</merge>
diff --git a/java/res/xml/rowkeys_east_slavic1.xml b/java/res/xml/rowkeys_east_slavic1.xml
index 04c6ef6ab..dd83c0250 100644
--- a/java/res/xml/rowkeys_east_slavic1.xml
+++ b/java/res/xml/rowkeys_east_slavic1.xml
@@ -36,7 +36,7 @@
latin:keyLabel="&#x0443;"
latin:keyHintLabel="3"
latin:additionalMoreKeys="3"
- latin:moreKeys="@string/more_keys_for_cyrillic_u" />
+ latin:moreKeys="!label/more_keys_for_cyrillic_u" />
<!-- U+043A: "к" CYRILLIC SMALL LETTER KA -->
<Key
latin:keyLabel="&#x043A;"
@@ -47,13 +47,13 @@
latin:keyLabel="&#x0435;"
latin:keyHintLabel="5"
latin:additionalMoreKeys="5"
- latin:moreKeys="@string/more_keys_for_cyrillic_ye" />
+ latin:moreKeys="!label/more_keys_for_cyrillic_ye" />
<!-- U+043D: "н" CYRILLIC SMALL LETTER EN -->
<Key
latin:keyLabel="&#x043D;"
latin:keyHintLabel="6"
latin:additionalMoreKeys="6"
- latin:moreKeys="@string/more_keys_for_cyrillic_en" />
+ latin:moreKeys="!label/more_keys_for_cyrillic_en" />
<!-- U+0433: "г" CYRILLIC SMALL LETTER GHE -->
<Key
latin:keyLabel="&#x0433;"
@@ -65,7 +65,7 @@
latin:keyHintLabel="8"
latin:additionalMoreKeys="8" />
<Key
- latin:keyLabel="@string/keylabel_for_east_slavic_row1_9"
+ latin:keyLabel="!label/keylabel_for_east_slavic_row1_9"
latin:keyHintLabel="9"
latin:additionalMoreKeys="9" />
<!-- U+0437: "з" CYRILLIC SMALL LETTER ZE -->
@@ -76,5 +76,5 @@
<!-- U+0445: "х" CYRILLIC SMALL LETTER HA -->
<Key
latin:keyLabel="&#x0445;"
- latin:moreKeys="@string/more_keys_for_cyrillic_ha" />
+ latin:moreKeys="!label/more_keys_for_cyrillic_ha" />
</merge>
diff --git a/java/res/xml/rowkeys_east_slavic2.xml b/java/res/xml/rowkeys_east_slavic2.xml
index 57b037367..75d7d939d 100644
--- a/java/res/xml/rowkeys_east_slavic2.xml
+++ b/java/res/xml/rowkeys_east_slavic2.xml
@@ -25,8 +25,8 @@
<Key
latin:keyLabel="&#x0444;" />
<Key
- latin:keyLabel="@string/keylabel_for_east_slavic_row2_1"
- latin:moreKeys="@string/more_keys_for_east_slavic_row2_1" />
+ latin:keyLabel="!label/keylabel_for_east_slavic_row2_1"
+ latin:moreKeys="!label/more_keys_for_east_slavic_row2_1" />
<!-- U+0432: "в" CYRILLIC SMALL LETTER VE -->
<Key
latin:keyLabel="&#x0432;" />
@@ -42,7 +42,7 @@
<!-- U+043E: "о" CYRILLIC SMALL LETTER O -->
<Key
latin:keyLabel="&#x043E;"
- latin:moreKeys="@string/more_keys_for_cyrillic_o" />
+ latin:moreKeys="!label/more_keys_for_cyrillic_o" />
<!-- U+043B: "л" CYRILLIC SMALL LETTER EL -->
<Key
latin:keyLabel="&#x043B;" />
diff --git a/java/res/xml/rowkeys_east_slavic3.xml b/java/res/xml/rowkeys_east_slavic3.xml
index b0f7aed7b..a05e92d44 100644
--- a/java/res/xml/rowkeys_east_slavic3.xml
+++ b/java/res/xml/rowkeys_east_slavic3.xml
@@ -34,14 +34,14 @@
<Key
latin:keyLabel="&#x043C;" />
<Key
- latin:keyLabel="@string/keylabel_for_east_slavic_row3_5" />
+ latin:keyLabel="!label/keylabel_for_east_slavic_row3_5" />
<!-- U+0442: "т" CYRILLIC SMALL LETTER TE -->
<Key
latin:keyLabel="&#x0442;" />
<!-- U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN -->
<Key
latin:keyLabel="&#x044C;"
- latin:moreKeys="@string/more_keys_for_cyrillic_soft_sign" />
+ latin:moreKeys="!label/more_keys_for_cyrillic_soft_sign" />
<!-- U+0431: "б" CYRILLIC SMALL LETTER BE -->
<Key
latin:keyLabel="&#x0431;" />
diff --git a/java/res/xml/rowkeys_nordic1.xml b/java/res/xml/rowkeys_nordic1.xml
index 056895f1f..ff29369d7 100644
--- a/java/res/xml/rowkeys_nordic1.xml
+++ b/java/res/xml/rowkeys_nordic1.xml
@@ -24,5 +24,5 @@
<include
latin:keyboardLayout="@xml/rowkeys_qwerty1" />
<Key
- latin:keyLabel="@string/keylabel_for_nordic_row1_11" />
+ latin:keyLabel="!label/keylabel_for_nordic_row1_11" />
</merge>
diff --git a/java/res/xml/rowkeys_nordic2.xml b/java/res/xml/rowkeys_nordic2.xml
index 0033ea1bb..52bb2f18f 100644
--- a/java/res/xml/rowkeys_nordic2.xml
+++ b/java/res/xml/rowkeys_nordic2.xml
@@ -24,9 +24,9 @@
<include
latin:keyboardLayout="@xml/rowkeys_qwerty2" />
<Key
- latin:keyLabel="@string/keylabel_for_nordic_row2_10"
- latin:moreKeys="@string/more_keys_for_nordic_row2_10" />
+ latin:keyLabel="!label/keylabel_for_nordic_row2_10"
+ latin:moreKeys="!label/more_keys_for_nordic_row2_10" />
<Key
- latin:keyLabel="@string/keylabel_for_nordic_row2_11"
- latin:moreKeys="@string/more_keys_for_nordic_row2_11" />
+ latin:keyLabel="!label/keylabel_for_nordic_row2_11"
+ latin:moreKeys="!label/more_keys_for_nordic_row2_11" />
</merge>
diff --git a/java/res/xml/rowkeys_qwerty1.xml b/java/res/xml/rowkeys_qwerty1.xml
index 19067a70c..8fb60db74 100644
--- a/java/res/xml/rowkeys_qwerty1.xml
+++ b/java/res/xml/rowkeys_qwerty1.xml
@@ -29,42 +29,42 @@
latin:keyLabel="w"
latin:keyHintLabel="2"
latin:additionalMoreKeys="2"
- latin:moreKeys="@string/more_keys_for_w" />
+ latin:moreKeys="!label/more_keys_for_w" />
<Key
latin:keyLabel="e"
latin:keyHintLabel="3"
latin:additionalMoreKeys="3"
- latin:moreKeys="@string/more_keys_for_e" />
+ latin:moreKeys="!label/more_keys_for_e" />
<Key
latin:keyLabel="r"
latin:keyHintLabel="4"
latin:additionalMoreKeys="4"
- latin:moreKeys="@string/more_keys_for_r" />
+ latin:moreKeys="!label/more_keys_for_r" />
<Key
latin:keyLabel="t"
latin:keyHintLabel="5"
latin:additionalMoreKeys="5"
- latin:moreKeys="@string/more_keys_for_t" />
+ latin:moreKeys="!label/more_keys_for_t" />
<Key
latin:keyLabel="y"
latin:keyHintLabel="6"
latin:additionalMoreKeys="6"
- latin:moreKeys="@string/more_keys_for_y" />
+ latin:moreKeys="!label/more_keys_for_y" />
<Key
latin:keyLabel="u"
latin:keyHintLabel="7"
latin:additionalMoreKeys="7"
- latin:moreKeys="@string/more_keys_for_u" />
+ latin:moreKeys="!label/more_keys_for_u" />
<Key
latin:keyLabel="i"
latin:keyHintLabel="8"
latin:additionalMoreKeys="8"
- latin:moreKeys="@string/more_keys_for_i" />
+ latin:moreKeys="!label/more_keys_for_i" />
<Key
latin:keyLabel="o"
latin:keyHintLabel="9"
latin:additionalMoreKeys="9"
- latin:moreKeys="@string/more_keys_for_o" />
+ latin:moreKeys="!label/more_keys_for_o" />
<Key
latin:keyLabel="p"
latin:keyHintLabel="0"
diff --git a/java/res/xml/rowkeys_qwerty2.xml b/java/res/xml/rowkeys_qwerty2.xml
index 2fa8214a8..a29f331bc 100644
--- a/java/res/xml/rowkeys_qwerty2.xml
+++ b/java/res/xml/rowkeys_qwerty2.xml
@@ -23,28 +23,28 @@
>
<Key
latin:keyLabel="a"
- latin:moreKeys="@string/more_keys_for_a" />
+ latin:moreKeys="!label/more_keys_for_a" />
<Key
latin:keyLabel="s"
- latin:moreKeys="@string/more_keys_for_s" />
+ latin:moreKeys="!label/more_keys_for_s" />
<Key
latin:keyLabel="d"
- latin:moreKeys="@string/more_keys_for_d" />
+ latin:moreKeys="!label/more_keys_for_d" />
<Key
latin:keyLabel="f" />
<Key
latin:keyLabel="g"
- latin:moreKeys="@string/more_keys_for_g" />
+ latin:moreKeys="!label/more_keys_for_g" />
<Key
latin:keyLabel="h"
- latin:moreKeys="@string/more_keys_for_h" />
+ latin:moreKeys="!label/more_keys_for_h" />
<Key
latin:keyLabel="j"
- latin:moreKeys="@string/more_keys_for_j" />
+ latin:moreKeys="!label/more_keys_for_j" />
<Key
latin:keyLabel="k"
- latin:moreKeys="@string/more_keys_for_k" />
+ latin:moreKeys="!label/more_keys_for_k" />
<Key
latin:keyLabel="l"
- latin:moreKeys="@string/more_keys_for_l" />
+ latin:moreKeys="!label/more_keys_for_l" />
</merge>
diff --git a/java/res/xml/rowkeys_qwerty3.xml b/java/res/xml/rowkeys_qwerty3.xml
index 932ea6f65..afe43f6e4 100644
--- a/java/res/xml/rowkeys_qwerty3.xml
+++ b/java/res/xml/rowkeys_qwerty3.xml
@@ -23,20 +23,20 @@
>
<Key
latin:keyLabel="z"
- latin:moreKeys="@string/more_keys_for_z" />
+ latin:moreKeys="!label/more_keys_for_z" />
<Key
latin:keyLabel="x" />
<Key
latin:keyLabel="c"
- latin:moreKeys="@string/more_keys_for_c" />
+ latin:moreKeys="!label/more_keys_for_c" />
<Key
latin:keyLabel="v"
- latin:moreKeys="@string/more_keys_for_v" />
+ latin:moreKeys="!label/more_keys_for_v" />
<Key
latin:keyLabel="b" />
<Key
latin:keyLabel="n"
- latin:moreKeys="@string/more_keys_for_n" />
+ latin:moreKeys="!label/more_keys_for_n" />
<Key
latin:keyLabel="m" />
</merge>
diff --git a/java/res/xml/rowkeys_qwertz1.xml b/java/res/xml/rowkeys_qwertz1.xml
index 3e11a7ab4..12788968a 100644
--- a/java/res/xml/rowkeys_qwertz1.xml
+++ b/java/res/xml/rowkeys_qwertz1.xml
@@ -29,42 +29,42 @@
latin:keyLabel="w"
latin:keyHintLabel="2"
latin:additionalMoreKeys="2"
- latin:moreKeys="@string/more_keys_for_w" />
+ latin:moreKeys="!label/more_keys_for_w" />
<Key
latin:keyLabel="e"
latin:keyHintLabel="3"
latin:additionalMoreKeys="3"
- latin:moreKeys="@string/more_keys_for_e" />
+ latin:moreKeys="!label/more_keys_for_e" />
<Key
latin:keyLabel="r"
latin:keyHintLabel="4"
latin:additionalMoreKeys="4"
- latin:moreKeys="@string/more_keys_for_r" />
+ latin:moreKeys="!label/more_keys_for_r" />
<Key
latin:keyLabel="t"
latin:keyHintLabel="5"
latin:additionalMoreKeys="5"
- latin:moreKeys="@string/more_keys_for_t" />
+ latin:moreKeys="!label/more_keys_for_t" />
<Key
latin:keyLabel="z"
latin:keyHintLabel="6"
latin:additionalMoreKeys="6"
- latin:moreKeys="@string/more_keys_for_z" />
+ latin:moreKeys="!label/more_keys_for_z" />
<Key
latin:keyLabel="u"
latin:keyHintLabel="7"
latin:additionalMoreKeys="7"
- latin:moreKeys="@string/more_keys_for_u" />
+ latin:moreKeys="!label/more_keys_for_u" />
<Key
latin:keyLabel="i"
latin:keyHintLabel="8"
latin:additionalMoreKeys="8"
- latin:moreKeys="@string/more_keys_for_i" />
+ latin:moreKeys="!label/more_keys_for_i" />
<Key
latin:keyLabel="o"
latin:keyHintLabel="9"
latin:additionalMoreKeys="9"
- latin:moreKeys="@string/more_keys_for_o" />
+ latin:moreKeys="!label/more_keys_for_o" />
<Key
latin:keyLabel="p"
latin:keyHintLabel="0"
diff --git a/java/res/xml/rowkeys_qwertz3.xml b/java/res/xml/rowkeys_qwertz3.xml
index d37cee67f..e969665a5 100644
--- a/java/res/xml/rowkeys_qwertz3.xml
+++ b/java/res/xml/rowkeys_qwertz3.xml
@@ -23,20 +23,20 @@
>
<Key
latin:keyLabel="y"
- latin:moreKeys="@string/more_keys_for_y" />
+ latin:moreKeys="!label/more_keys_for_y" />
<Key
latin:keyLabel="x" />
<Key
latin:keyLabel="c"
- latin:moreKeys="@string/more_keys_for_c" />
+ latin:moreKeys="!label/more_keys_for_c" />
<Key
latin:keyLabel="v"
- latin:moreKeys="@string/more_keys_for_v" />
+ latin:moreKeys="!label/more_keys_for_v" />
<Key
latin:keyLabel="b" />
<Key
latin:keyLabel="n"
- latin:moreKeys="@string/more_keys_for_n" />
+ latin:moreKeys="!label/more_keys_for_n" />
<Key
latin:keyLabel="m" />
</merge>
diff --git a/java/res/xml/rowkeys_south_slavic1.xml b/java/res/xml/rowkeys_south_slavic1.xml
index e3cb89c67..7c9a3bc92 100644
--- a/java/res/xml/rowkeys_south_slavic1.xml
+++ b/java/res/xml/rowkeys_south_slavic1.xml
@@ -36,7 +36,7 @@
latin:keyLabel="&#x0435;"
latin:keyHintLabel="3"
latin:additionalMoreKeys="3"
- latin:moreKeys="@string/more_keys_for_cyrillic_ie" />
+ latin:moreKeys="!label/more_keys_for_cyrillic_ie" />
<!-- U+0440: "р" CYRILLIC SMALL LETTER ER -->
<Key
latin:keyLabel="&#x0440;"
@@ -48,7 +48,7 @@
latin:keyHintLabel="5"
latin:additionalMoreKeys="5" />
<Key
- latin:keyLabel="@string/keylabel_for_south_slavic_row1_6"
+ latin:keyLabel="!label/keylabel_for_south_slavic_row1_6"
latin:keyHintLabel="6"
latin:additionalMoreKeys="6" />
<!-- U+0443: "у" CYRILLIC SMALL LETTER U -->
@@ -61,7 +61,7 @@
latin:keyLabel="&#x0438;"
latin:keyHintLabel="8"
latin:additionalMoreKeys="8"
- latin:moreKeys="@string/more_keys_for_cyrillic_i" />
+ latin:moreKeys="!label/more_keys_for_cyrillic_i" />
<!-- U+043E: "о" CYRILLIC SMALL LETTER O -->
<Key
latin:keyLabel="&#x043E;"
diff --git a/java/res/xml/rowkeys_south_slavic2.xml b/java/res/xml/rowkeys_south_slavic2.xml
index 5a7ecd46e..e4892085d 100644
--- a/java/res/xml/rowkeys_south_slavic2.xml
+++ b/java/res/xml/rowkeys_south_slavic2.xml
@@ -52,5 +52,5 @@
<Key
latin:keyLabel="&#x0447;" />
<Key
- latin:keyLabel="@string/keylabel_for_south_slavic_row2_11" />
+ latin:keyLabel="!label/keylabel_for_south_slavic_row2_11" />
</merge>
diff --git a/java/res/xml/rowkeys_south_slavic3.xml b/java/res/xml/rowkeys_south_slavic3.xml
index 97ff51ee1..d668ddf39 100644
--- a/java/res/xml/rowkeys_south_slavic3.xml
+++ b/java/res/xml/rowkeys_south_slavic3.xml
@@ -22,7 +22,7 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
<Key
- latin:keyLabel="@string/keylabel_for_south_slavic_row3_1" />
+ latin:keyLabel="!label/keylabel_for_south_slavic_row3_1" />
<!-- U+045F: "џ" CYRILLIC SMALL LETTER DZHE -->
<Key
latin:keyLabel="&#x045F;" />
@@ -42,7 +42,7 @@
<Key
latin:keyLabel="&#x043C;" />
<Key
- latin:keyLabel="@string/keylabel_for_south_slavic_row3_8" />
+ latin:keyLabel="!label/keylabel_for_south_slavic_row3_8" />
<!-- U+0436: "ж" CYRILLIC SMALL LETTER ZHE -->
<Key
latin:keyLabel="&#x0436;" />
diff --git a/java/res/xml/rowkeys_symbols1.xml b/java/res/xml/rowkeys_symbols1.xml
index f6d6243d1..f9f8bb16c 100644
--- a/java/res/xml/rowkeys_symbols1.xml
+++ b/java/res/xml/rowkeys_symbols1.xml
@@ -22,43 +22,43 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
<Key
- latin:keyLabel="@string/keylabel_for_symbols_1"
- latin:additionalMoreKeys="@string/additional_more_keys_for_symbols_1"
- latin:moreKeys="@string/more_keys_for_symbols_1" />
+ latin:keyLabel="!label/keylabel_for_symbols_1"
+ latin:additionalMoreKeys="!label/additional_more_keys_for_symbols_1"
+ latin:moreKeys="!label/more_keys_for_symbols_1" />
<Key
- latin:keyLabel="@string/keylabel_for_symbols_2"
- latin:additionalMoreKeys="@string/additional_more_keys_for_symbols_2"
- latin:moreKeys="@string/more_keys_for_symbols_2" />
+ latin:keyLabel="!label/keylabel_for_symbols_2"
+ latin:additionalMoreKeys="!label/additional_more_keys_for_symbols_2"
+ latin:moreKeys="!label/more_keys_for_symbols_2" />
<Key
- latin:keyLabel="@string/keylabel_for_symbols_3"
- latin:additionalMoreKeys="@string/additional_more_keys_for_symbols_3"
- latin:moreKeys="@string/more_keys_for_symbols_3" />
+ latin:keyLabel="!label/keylabel_for_symbols_3"
+ latin:additionalMoreKeys="!label/additional_more_keys_for_symbols_3"
+ latin:moreKeys="!label/more_keys_for_symbols_3" />
<Key
- latin:keyLabel="@string/keylabel_for_symbols_4"
- latin:additionalMoreKeys="@string/additional_more_keys_for_symbols_4"
- latin:moreKeys="@string/more_keys_for_symbols_4" />
+ latin:keyLabel="!label/keylabel_for_symbols_4"
+ latin:additionalMoreKeys="!label/additional_more_keys_for_symbols_4"
+ latin:moreKeys="!label/more_keys_for_symbols_4" />
<Key
- latin:keyLabel="@string/keylabel_for_symbols_5"
- latin:additionalMoreKeys="@string/additional_more_keys_for_symbols_5"
- latin:moreKeys="@string/more_keys_for_symbols_5" />
+ latin:keyLabel="!label/keylabel_for_symbols_5"
+ latin:additionalMoreKeys="!label/additional_more_keys_for_symbols_5"
+ latin:moreKeys="!label/more_keys_for_symbols_5" />
<Key
- latin:keyLabel="@string/keylabel_for_symbols_6"
- latin:additionalMoreKeys="@string/additional_more_keys_for_symbols_6"
- latin:moreKeys="@string/more_keys_for_symbols_6" />
+ latin:keyLabel="!label/keylabel_for_symbols_6"
+ latin:additionalMoreKeys="!label/additional_more_keys_for_symbols_6"
+ latin:moreKeys="!label/more_keys_for_symbols_6" />
<Key
- latin:keyLabel="@string/keylabel_for_symbols_7"
- latin:additionalMoreKeys="@string/additional_more_keys_for_symbols_7"
- latin:moreKeys="@string/more_keys_for_symbols_7" />
+ latin:keyLabel="!label/keylabel_for_symbols_7"
+ latin:additionalMoreKeys="!label/additional_more_keys_for_symbols_7"
+ latin:moreKeys="!label/more_keys_for_symbols_7" />
<Key
- latin:keyLabel="@string/keylabel_for_symbols_8"
- latin:additionalMoreKeys="@string/additional_more_keys_for_symbols_8"
- latin:moreKeys="@string/more_keys_for_symbols_8" />
+ latin:keyLabel="!label/keylabel_for_symbols_8"
+ latin:additionalMoreKeys="!label/additional_more_keys_for_symbols_8"
+ latin:moreKeys="!label/more_keys_for_symbols_8" />
<Key
- latin:keyLabel="@string/keylabel_for_symbols_9"
- latin:additionalMoreKeys="@string/additional_more_keys_for_symbols_9"
- latin:moreKeys="@string/more_keys_for_symbols_9" />
+ latin:keyLabel="!label/keylabel_for_symbols_9"
+ latin:additionalMoreKeys="!label/additional_more_keys_for_symbols_9"
+ latin:moreKeys="!label/more_keys_for_symbols_9" />
<Key
- latin:keyLabel="@string/keylabel_for_symbols_0"
- latin:additionalMoreKeys="@string/additional_more_keys_for_symbols_0"
- latin:moreKeys="@string/more_keys_for_symbols_0" />
+ latin:keyLabel="!label/keylabel_for_symbols_0"
+ latin:additionalMoreKeys="!label/additional_more_keys_for_symbols_0"
+ latin:moreKeys="!label/more_keys_for_symbols_0" />
</merge>
diff --git a/java/res/xml/rowkeys_symbols2.xml b/java/res/xml/rowkeys_symbols2.xml
index 1092421d8..47865a989 100644
--- a/java/res/xml/rowkeys_symbols2.xml
+++ b/java/res/xml/rowkeys_symbols2.xml
@@ -28,21 +28,21 @@
<Key
latin:keyStyle="currencyKeyStyle" />
<Key
- latin:keyLabel="@string/keylabel_for_symbols_percent"
- latin:moreKeys="@string/more_keys_for_symbols_percent" />
+ latin:keyLabel="!label/keylabel_for_symbols_percent"
+ latin:moreKeys="!label/more_keys_for_symbols_percent" />
<Key
latin:keyLabel="&amp;" />
<Key
latin:keyLabel="*"
- latin:moreKeys="@string/more_keys_for_star" />
+ latin:moreKeys="!label/more_keys_for_star" />
<!-- U+2013: "–" EN DASH
- U+2014: "—" EM DASH -->
+ U+2014: "—" EM DASH -->
<Key
latin:keyLabel="-"
latin:moreKeys="_,&#x2013;,&#x2014;" />
<Key
latin:keyLabel="+"
- latin:moreKeys="@string/more_keys_for_plus" />
+ latin:moreKeys="!label/more_keys_for_plus" />
<include
latin:keyboardLayout="@xml/keys_parentheses" />
</merge>
diff --git a/java/res/xml/rowkeys_symbols3.xml b/java/res/xml/rowkeys_symbols3.xml
index 1a484d416..4cef6b255 100644
--- a/java/res/xml/rowkeys_symbols3.xml
+++ b/java/res/xml/rowkeys_symbols3.xml
@@ -31,20 +31,20 @@
latin:moreKeys="&#x00A1;" />
<Key
latin:keyLabel="&quot;"
- latin:moreKeys="@string/more_keys_for_double_quote" />
+ latin:moreKeys="!label/more_keys_for_double_quote" />
<Key
latin:keyLabel="\'"
- latin:moreKeys="@string/more_keys_for_single_quote" />
+ latin:moreKeys="!label/more_keys_for_single_quote" />
<Key
latin:keyLabel=":" />
<Key
- latin:keyLabel="@string/keylabel_for_symbols_semicolon"
- latin:moreKeys="@string/more_keys_for_symbols_semicolon" />
+ latin:keyLabel="!label/keylabel_for_symbols_semicolon"
+ latin:moreKeys="!label/more_keys_for_symbols_semicolon" />
<Key
latin:keyLabel="/" />
<Key
- latin:keyLabel="@string/keylabel_for_symbols_question"
- latin:moreKeys="@string/more_keys_for_symbols_question" />
+ latin:keyLabel="!label/keylabel_for_symbols_question"
+ latin:moreKeys="!label/more_keys_for_symbols_question" />
<Key
latin:keyStyle="deleteKeyStyle"
latin:keyWidth="fillRight"
diff --git a/java/res/xml/rowkeys_symbols_shift1.xml b/java/res/xml/rowkeys_symbols_shift1.xml
index cc00aebcd..af3e87e88 100644
--- a/java/res/xml/rowkeys_symbols_shift1.xml
+++ b/java/res/xml/rowkeys_symbols_shift1.xml
@@ -30,7 +30,7 @@
<!-- U+2022: "•" BULLET -->
<Key
latin:keyLabel="&#x2022;"
- latin:moreKeys="@string/more_keys_for_bullet" />
+ latin:moreKeys="!label/more_keys_for_bullet" />
<!-- U+221A: "√" SQUARE ROOT -->
<Key
latin:keyLabel="&#x221A;" />
diff --git a/java/res/xml/rows_number_normal.xml b/java/res/xml/rows_number_normal.xml
index 6f9429cd8..7015bb2d6 100644
--- a/java/res/xml/rows_number_normal.xml
+++ b/java/res/xml/rows_number_normal.xml
@@ -61,7 +61,7 @@
<Key
latin:keyLabel="."
latin:keyLabelFlags="hasPopupHint"
- latin:moreKeys="@string/more_keys_for_am_pm"
+ latin:moreKeys="!label/more_keys_for_am_pm"
latin:keyStyle="numFunctionalKeyStyle"
latin:keyWidth="fillRight" />
</case>
diff --git a/java/res/xml/rows_symbols4.xml b/java/res/xml/rows_symbols4.xml
index 3e26650e8..de7e043e8 100644
--- a/java/res/xml/rows_symbols4.xml
+++ b/java/res/xml/rows_symbols4.xml
@@ -37,9 +37,9 @@
<!-- latin:hasShortcutKey="false" -->
<default>
<Key
- latin:keyLabel="@string/keylabel_for_comma"
+ latin:keyLabel="!label/keylabel_for_comma"
latin:keyLabelFlags="hasPopupHint"
- latin:additionalMoreKeys="@string/more_keys_for_comma"
+ latin:additionalMoreKeys="!label/more_keys_for_comma"
latin:keyStyle="f1MoreKeysStyle" />
</default>
</switch>
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index fbb13c25f..fa7ec5cbf 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -60,10 +60,12 @@ public class Key {
private static final int LABEL_FLAGS_ALIGN_LEFT = 0x01;
private static final int LABEL_FLAGS_ALIGN_RIGHT = 0x02;
private static final int LABEL_FLAGS_ALIGN_LEFT_OF_CENTER = 0x08;
- private static final int LABEL_FLAGS_LARGE_LETTER = 0x10;
- private static final int LABEL_FLAGS_FONT_NORMAL = 0x20;
- private static final int LABEL_FLAGS_FONT_MONO_SPACE = 0x40;
- public static final int LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO = 0x80;
+ private static final int LABEL_FLAGS_FONT_NORMAL = 0x10;
+ private static final int LABEL_FLAGS_FONT_MONO_SPACE = 0x20;
+ private static final int LABEL_FLAGS_FOLLOW_KEY_RATIO_MASK = 0x1C0;
+ private static final int LABEL_FLAGS_FOLLOW_KEY_LARGE_LETTER_RATIO = 0x40;
+ private static final int LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO = 0x80;
+ private static final int LABEL_FLAGS_FOLLOW_KEY_LABEL_RATIO = 0xC0;
private static final int LABEL_FLAGS_FOLLOW_KEY_HINT_LABEL_RATIO = 0x100;
private static final int LABEL_FLAGS_HAS_POPUP_HINT = 0x200;
private static final int LABEL_FLAGS_HAS_SHIFTED_LETTER_HINT = 0x400;
@@ -189,11 +191,11 @@ public class Key {
* @param row the row that this key belongs to. row's x-coordinate will be the right edge of
* this key.
* @param parser the XML parser containing the attributes for this key
- * @param keyStyles active key styles set
* @throws XmlPullParserException
*/
public Key(Resources res, Keyboard.Params params, Keyboard.Builder.Row row,
- XmlPullParser parser, KeyStyles keyStyles) throws XmlPullParserException {
+ XmlPullParser parser) throws XmlPullParserException {
+ final KeyStyles keyStyles = params.mKeyStyles;
final float horizontalGap = isSpacer() ? 0 : params.mHorizontalGap;
final int keyHeight = row.mRowHeight;
mVerticalGap = params.mVerticalGap;
@@ -210,7 +212,7 @@ public class Key {
throw new XmlParseUtils.ParseException(
"Unknown key style: " + styleName, parser);
} else {
- style = KeyStyles.getEmptyKeyStyle();
+ style = keyStyles.getEmptyKeyStyle();
}
final float keyXPos = row.getKeyX(keyAttr);
@@ -498,16 +500,17 @@ public class Key {
}
public int selectTextSize(int letter, int largeLetter, int label, int hintLabel) {
- if (StringUtils.codePointCount(mLabel) > 1
- && (mLabelFlags & (LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO
- | LABEL_FLAGS_FOLLOW_KEY_HINT_LABEL_RATIO)) == 0) {
- return label;
- } else if ((mLabelFlags & LABEL_FLAGS_FOLLOW_KEY_HINT_LABEL_RATIO) != 0) {
- return hintLabel;
- } else if ((mLabelFlags & LABEL_FLAGS_LARGE_LETTER) != 0) {
+ switch (mLabelFlags & LABEL_FLAGS_FOLLOW_KEY_RATIO_MASK) {
+ case LABEL_FLAGS_FOLLOW_KEY_LARGE_LETTER_RATIO:
return largeLetter;
- } else {
+ case LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO:
return letter;
+ case LABEL_FLAGS_FOLLOW_KEY_LABEL_RATIO:
+ return label;
+ case LABEL_FLAGS_FOLLOW_KEY_HINT_LABEL_RATIO:
+ return hintLabel;
+ default: // No follow key ratio flag specified.
+ return StringUtils.codePointCount(mLabel) == 1 ? letter : label;
}
}
@@ -563,6 +566,12 @@ public class Key {
return (mMoreKeysColumnAndFlags & MORE_KEYS_FLAGS_HAS_LABELS) != 0;
}
+ public int getMoreKeyLabelFlags() {
+ return hasLabelsInMoreKeys()
+ ? LABEL_FLAGS_FOLLOW_KEY_LABEL_RATIO
+ : LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO;
+ }
+
public boolean needsDividersInMoreKeys() {
return (mMoreKeysColumnAndFlags & MORE_KEYS_FLAGS_NEEDS_DIVIDERS) != 0;
}
@@ -709,8 +718,8 @@ public class Key {
public static class Spacer extends Key {
public Spacer(Resources res, Keyboard.Params params, Keyboard.Builder.Row row,
- XmlPullParser parser, KeyStyles keyStyles) throws XmlPullParserException {
- super(res, params, row, parser, keyStyles);
+ XmlPullParser parser) throws XmlPullParserException {
+ super(res, params, row, parser);
}
/**
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index 36a988bb6..58225e95d 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -30,8 +30,11 @@ import android.view.InflateException;
import com.android.inputmethod.keyboard.internal.KeyStyles;
import com.android.inputmethod.keyboard.internal.KeyboardCodesSet;
import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
+import com.android.inputmethod.keyboard.internal.KeyboardLabelsSet;
import com.android.inputmethod.latin.LatinImeLogger;
+import com.android.inputmethod.latin.LocaleUtils.RunInLocale;
import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.SubtypeLocale;
import com.android.inputmethod.latin.Utils;
import com.android.inputmethod.latin.XmlParseUtils;
@@ -43,6 +46,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Locale;
/**
* Loads an XML description of a keyboard and stores the attributes of the keys. A keyboard
@@ -240,6 +244,8 @@ public class Keyboard {
public final ArrayList<Key> mAltCodeKeysWhileTyping = new ArrayList<Key>();
public final KeyboardIconsSet mIconsSet = new KeyboardIconsSet();
public final KeyboardCodesSet mCodesSet = new KeyboardCodesSet();
+ public final KeyboardLabelsSet mLabelsSet = new KeyboardLabelsSet();
+ public final KeyStyles mKeyStyles = new KeyStyles(mLabelsSet);
public KeyboardLayoutSet.KeysCache mKeysCache;
@@ -500,7 +506,6 @@ public class Keyboard {
private boolean mLeftEdge;
private boolean mTopEdge;
private Key mRightEdgeKey = null;
- private final KeyStyles mKeyStyles = new KeyStyles();
/**
* Container for keys in the keyboard. All keys in a row are at the same Y-coordinate.
@@ -777,7 +782,20 @@ public class Keyboard {
params.mThemeId = keyboardAttr.getInt(R.styleable.Keyboard_themeId, 0);
params.mIconsSet.loadIcons(keyboardAttr);
- params.mCodesSet.setLanguage(params.mId.mLocale.getLanguage());
+ final String language = params.mId.mLocale.getLanguage();
+ params.mCodesSet.setLanguage(language);
+ params.mLabelsSet.setLanguage(language);
+ final RunInLocale<Void> job = new RunInLocale<Void>() {
+ @Override
+ protected Void job(Resources res) {
+ params.mLabelsSet.loadStringResources(mContext);
+ return null;
+ }
+ };
+ // Null means the current system locale.
+ final Locale locale = language.equals(SubtypeLocale.NO_LANGUAGE)
+ ? null : params.mId.mLocale;
+ job.runInLocale(mResources, locale);
final int resourceId = keyboardAttr.getResourceId(
R.styleable.Keyboard_touchPositionCorrectionData, 0);
@@ -887,7 +905,7 @@ public class Keyboard {
XmlParseUtils.checkEndTag(TAG_KEY, parser);
if (DEBUG) startEndTag("<%s /> skipped", TAG_KEY);
} else {
- final Key key = new Key(mResources, mParams, row, parser, mKeyStyles);
+ final Key key = new Key(mResources, mParams, row, parser);
if (DEBUG) {
startEndTag("<%s%s %s moreKeys=%s />", TAG_KEY,
(key.isEnabled() ? "" : " disabled"), key,
@@ -904,8 +922,7 @@ public class Keyboard {
XmlParseUtils.checkEndTag(TAG_SPACER, parser);
if (DEBUG) startEndTag("<%s /> skipped", TAG_SPACER);
} else {
- final Key.Spacer spacer = new Key.Spacer(
- mResources, mParams, row, parser, mKeyStyles);
+ final Key.Spacer spacer = new Key.Spacer(mResources, mParams, row, parser);
if (DEBUG) startEndTag("<%s />", TAG_SPACER);
XmlParseUtils.checkEndTag(TAG_SPACER, parser);
endKey(spacer);
@@ -1210,7 +1227,7 @@ public class Keyboard {
skip ? " skipped" : "");
}
if (!skip)
- mKeyStyles.parseKeyStyleAttributes(keyStyleAttr, keyAttrs, parser);
+ mParams.mKeyStyles.parseKeyStyleAttributes(keyStyleAttr, keyAttrs, parser);
} finally {
keyStyleAttr.recycle();
keyAttrs.recycle();
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java b/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
index 51cd90549..803a2948e 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
@@ -29,12 +29,10 @@ import android.view.inputmethod.InputMethodSubtype;
import com.android.inputmethod.compat.EditorInfoCompatUtils;
import com.android.inputmethod.keyboard.KeyboardLayoutSet.Params.ElementParams;
-import com.android.inputmethod.keyboard.internal.KeySpecParser;
import com.android.inputmethod.latin.InputTypeUtils;
import com.android.inputmethod.latin.LatinIME;
import com.android.inputmethod.latin.LatinImeLogger;
import com.android.inputmethod.latin.LocaleUtils;
-import com.android.inputmethod.latin.LocaleUtils.RunInLocale;
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.StringUtils;
import com.android.inputmethod.latin.SubtypeLocale;
@@ -65,9 +63,7 @@ public class KeyboardLayoutSet {
private static final String DEFAULT_KEYBOARD_LAYOUT_SET = "qwerty";
private static final char KEYBOARD_LAYOUT_SET_LOCALE_DELIMITER = ':';
- private static final String KEYBOARD_LAYOUT_SET_RESOURCE_PREFIX = "xml/keyboard_layout_set_";
- private static final int DEFAULT_KEYBOARD_LAYOUT_SET_RESOURCE_ID =
- R.xml.keyboard_layout_set_qwerty;
+ private static final String KEYBOARD_LAYOUT_SET_RESOURCE_PREFIX = "keyboard_layout_set_";
private final Context mContext;
private final Params mParams;
@@ -185,14 +181,7 @@ public class KeyboardLayoutSet {
builder.setAutoGenerate(sKeysCache);
}
final int keyboardXmlId = elementParams.mKeyboardXmlId;
- final RunInLocale<Void> job = new RunInLocale<Void>() {
- @Override
- protected Void job(Resources res) {
- builder.load(keyboardXmlId, id);
- return null;
- }
- };
- job.runInLocale(context.getResources(), id.mLocale);
+ builder.load(keyboardXmlId, id);
builder.setTouchPositionCorrectionEnabled(mParams.mTouchPositionCorrectionEnabled);
builder.setProximityCharsCorrectionEnabled(
elementParams.mProximityCharsCorrectionEnabled);
@@ -319,21 +308,15 @@ public class KeyboardLayoutSet {
throw new RuntimeException("Screen geometry is not specified");
if (mParams.mLocale == null)
throw new RuntimeException("KeyboardLayoutSet subtype is not specified");
+ final String packageName = mResources.getResourcePackageName(
+ R.xml.keyboard_layout_set_qwerty);
final String keyboardLayoutSetName = mParams.mKeyboardLayoutSetName;
- final int xmlId = KeySpecParser.getResourceId(
- mResources, keyboardLayoutSetName, DEFAULT_KEYBOARD_LAYOUT_SET_RESOURCE_ID);
- final RunInLocale<Void> job = new RunInLocale<Void>() {
- @Override
- protected Void job(Resources res) {
- try {
- parseKeyboardLayoutSet(res, xmlId);
- } catch (Exception e) {
- throw new RuntimeException(e.getMessage() + " in " + keyboardLayoutSetName);
- }
- return null;
- }
- };
- job.runInLocale(mResources, mParams.mLocale);
+ final int xmlId = mResources.getIdentifier(keyboardLayoutSetName, "xml", packageName);
+ try {
+ parseKeyboardLayoutSet(mResources, xmlId);
+ } catch (Exception e) {
+ throw new RuntimeException(e.getMessage() + " in " + keyboardLayoutSetName);
+ }
return new KeyboardLayoutSet(mContext, mParams);
}
diff --git a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java
index f8682d8ca..7154086e2 100644
--- a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java
@@ -332,10 +332,7 @@ public class MoreKeysKeyboard extends Keyboard {
@Override
public MoreKeysKeyboard build() {
final MoreKeysKeyboardParams params = mParams;
- // moreKeyFlags == 0 means that the rendered text size will be determined by its
- // label's code point count.
- final int moreKeyFlags = mParentKey.hasLabelsInMoreKeys() ? 0
- : Key.LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO;
+ final int moreKeyFlags = mParentKey.getMoreKeyLabelFlags();
final MoreKeySpec[] moreKeys = mParentKey.mMoreKeys;
for (int n = 0; n < moreKeys.length; n++) {
final MoreKeySpec moreKeySpec = moreKeys[n];
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java b/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java
index 288fb4556..2981a8e5c 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java
@@ -16,7 +16,6 @@
package com.android.inputmethod.keyboard.internal;
-import android.content.res.Resources;
import android.text.TextUtils;
import com.android.inputmethod.keyboard.Keyboard;
@@ -27,18 +26,20 @@ import java.util.ArrayList;
import java.util.Arrays;
/**
- * String parser of moreKeys attribute of Key.
- * The string is comma separated texts each of which represents one "more key".
- * - String resource can be embedded into specification @string/name. This is done before parsing
- * comma.
+ * The string parser of more keys specification.
+ * The specification is comma separated texts each of which represents one "more key".
+ * The specification might have label or string resource reference in it. These references are
+ * expanded before parsing comma.
+ * - Label reference should be a string representation of label (!label/label_name)
+ * - String resource reference should be a string representation of resource (!label/resource_name)
* Each "more key" specification is one of the following:
* - Label optionally followed by keyOutputText or code (keyLabel|keyOutputText).
* - Icon followed by keyOutputText or code (!icon/icon_name|!code/code_name)
* - Icon should be a string representation of icon (!icon/icon_name).
- * - Code should be a code point presented by hexadecimal string prefixed with "0x".
- * Or a string representation of code (!code/code_name).
+ * - Code should be a code point presented by hexadecimal string prefixed with "0x", or a string
+ * representation of code (!code/code_name).
* Special character, comma ',' backslash '\', and bar '|' can be escaped by '\' character.
- * Note that the character '@' and '\' are also parsed by XML parser and CSV parser as well.
+ * Note that the '\' is also parsed by XML parser and CSV parser as well.
* See {@link KeyboardIconsSet} about icon_name.
*/
public class KeySpecParser {
@@ -49,10 +50,8 @@ public class KeySpecParser {
// Constants for parsing.
private static int COMMA = ',';
private static final char ESCAPE_CHAR = '\\';
- private static final char PREFIX_AT = '@';
- private static final char SUFFIX_SLASH = '/';
- private static final String PREFIX_STRING = PREFIX_AT + "string" + SUFFIX_SLASH;
private static final char LABEL_END = '|';
+ private static final String PREFIX_LABEL = "!label/";
private static final String PREFIX_ICON = "!icon/";
private static final String PREFIX_CODE = "!code/";
private static final String PREFIX_HEX = "0x";
@@ -341,17 +340,7 @@ public class KeySpecParser {
}
}
- public static int getResourceId(Resources res, String name, int packageNameResId) {
- String packageName = res.getResourcePackageName(packageNameResId);
- int resId = res.getIdentifier(name, null, packageName);
- if (resId == 0) {
- throw new RuntimeException("Unknown resource: " + name);
- }
- return resId;
- }
-
- private static String resolveStringResource(String rawText, Resources res,
- int packageNameResId) {
+ public static String resolveLabelReference(String rawText, KeyboardLabelsSet labelsSet) {
int level = 0;
String text = rawText;
StringBuilder sb;
@@ -362,21 +351,20 @@ public class KeySpecParser {
}
final int size = text.length();
- if (size < PREFIX_STRING.length()) {
+ if (size < PREFIX_LABEL.length()) {
return text;
}
sb = null;
for (int pos = 0; pos < size; pos++) {
final char c = text.charAt(pos);
- if (c == PREFIX_AT && text.startsWith(PREFIX_STRING, pos)) {
+ if (text.startsWith(PREFIX_LABEL, pos) && labelsSet != null) {
if (sb == null) {
sb = new StringBuilder(text.substring(0, pos));
}
- final int end = searchResourceNameEnd(text, pos + PREFIX_STRING.length());
- final String resName = text.substring(pos + 1, end);
- final int resId = getResourceId(res, resName, packageNameResId);
- sb.append(res.getString(resId));
+ final int end = searchLabelNameEnd(text, pos + PREFIX_LABEL.length());
+ final String name = text.substring(pos + PREFIX_LABEL.length(), end);
+ sb.append(labelsSet.getLabel(name));
pos = end - 1;
} else if (c == ESCAPE_CHAR) {
if (sb != null) {
@@ -397,7 +385,7 @@ public class KeySpecParser {
return text;
}
- private static int searchResourceNameEnd(String text, int start) {
+ private static int searchLabelNameEnd(String text, int start) {
final int size = text.length();
for (int pos = start; pos < size; pos++) {
final char c = text.charAt(pos);
@@ -410,8 +398,8 @@ public class KeySpecParser {
return size;
}
- public static String[] parseCsvString(String rawText, Resources res, int packageNameResId) {
- final String text = resolveStringResource(rawText, res, packageNameResId);
+ public static String[] parseCsvString(String rawText, KeyboardLabelsSet labelsSet) {
+ final String text = resolveLabelReference(rawText, labelsSet);
final int size = text.length();
if (size == 0) {
return null;
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java b/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java
index 405b7ad05..8e0b21607 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java
@@ -34,24 +34,55 @@ public class KeyStyles {
private final HashMap<String, DeclaredKeyStyle> mStyles =
new HashMap<String, DeclaredKeyStyle>();
- private static final KeyStyle EMPTY_KEY_STYLE = new EmptyKeyStyle();
- public interface KeyStyle {
- public String[] getStringArray(TypedArray a, int index);
- public String getString(TypedArray a, int index);
- public int getInt(TypedArray a, int index, int defaultValue);
- public int getFlag(TypedArray a, int index);
+ private final KeyboardLabelsSet mLabelsSet;
+ private final KeyStyle mEmptyKeyStyle;
+
+ public KeyStyles(KeyboardLabelsSet labelsSet) {
+ mLabelsSet = labelsSet;
+ mEmptyKeyStyle = new EmptyKeyStyle(labelsSet);
+ }
+
+ public static abstract class KeyStyle {
+ protected final KeyboardLabelsSet mLabelsSet;
+
+ public KeyStyle(KeyboardLabelsSet labelsSet) {
+ mLabelsSet = labelsSet;
+ }
+
+ public abstract String[] getStringArray(TypedArray a, int index);
+ public abstract String getString(TypedArray a, int index);
+ public abstract int getInt(TypedArray a, int index, int defaultValue);
+ public abstract int getFlag(TypedArray a, int index);
+
+ protected String parseString(TypedArray a, int index) {
+ if (a.hasValue(index)) {
+ return KeySpecParser.resolveLabelReference(a.getString(index), mLabelsSet);
+ }
+ return null;
+ }
+
+ protected String[] parseStringArray(TypedArray a, int index) {
+ if (a.hasValue(index)) {
+ return KeySpecParser.parseCsvString(a.getString(index), mLabelsSet);
+ }
+ return null;
+ }
}
- static class EmptyKeyStyle implements KeyStyle {
+ private static class EmptyKeyStyle extends KeyStyle {
+ public EmptyKeyStyle(KeyboardLabelsSet labelsSet) {
+ super(labelsSet);
+ }
+
@Override
public String[] getStringArray(TypedArray a, int index) {
- return KeyStyles.parseStringArray(a, index);
+ return parseStringArray(a, index);
}
@Override
public String getString(TypedArray a, int index) {
- return a.getString(index);
+ return parseString(a, index);
}
@Override
@@ -65,9 +96,13 @@ public class KeyStyles {
}
}
- static class DeclaredKeyStyle implements KeyStyle {
+ private static class DeclaredKeyStyle extends KeyStyle {
private final HashMap<Integer, Object> mStyleAttributes = new HashMap<Integer, Object>();
+ public DeclaredKeyStyle(KeyboardLabelsSet labelsSet) {
+ super(labelsSet);
+ }
+
@Override
public String[] getStringArray(TypedArray a, int index) {
if (a.hasValue(index)) {
@@ -79,7 +114,7 @@ public class KeyStyles {
@Override
public String getString(TypedArray a, int index) {
if (a.hasValue(index)) {
- return a.getString(index);
+ return parseString(a, index);
}
return (String)mStyleAttributes.get(index);
}
@@ -120,7 +155,7 @@ public class KeyStyles {
private void readString(TypedArray a, int index) {
if (a.hasValue(index)) {
- mStyleAttributes.put(index, a.getString(index));
+ mStyleAttributes.put(index, parseString(a, index));
}
}
@@ -131,16 +166,15 @@ public class KeyStyles {
}
private void readFlag(TypedArray a, int index) {
- final Integer value = (Integer)mStyleAttributes.get(index);
if (a.hasValue(index)) {
+ final Integer value = (Integer)mStyleAttributes.get(index);
mStyleAttributes.put(index, a.getInt(index, 0) | (value != null ? value : 0));
}
}
private void readStringArray(TypedArray a, int index) {
- final String[] value = parseStringArray(a, index);
- if (value != null) {
- mStyleAttributes.put(index, value);
+ if (a.hasValue(index)) {
+ mStyleAttributes.put(index, parseStringArray(a, index));
}
}
@@ -149,14 +183,6 @@ public class KeyStyles {
}
}
- static String[] parseStringArray(TypedArray a, int index) {
- if (a.hasValue(index)) {
- return KeySpecParser.parseCsvString(
- a.getString(index), a.getResources(), R.string.english_ime_name);
- }
- return null;
- }
-
public void parseKeyStyleAttributes(TypedArray keyStyleAttr, TypedArray keyAttrs,
XmlPullParser parser) throws XmlPullParserException {
final String styleName = keyStyleAttr.getString(R.styleable.Keyboard_KeyStyle_styleName);
@@ -169,7 +195,7 @@ public class KeyStyles {
}
}
- final DeclaredKeyStyle style = new DeclaredKeyStyle();
+ final DeclaredKeyStyle style = new DeclaredKeyStyle(mLabelsSet);
if (keyStyleAttr.hasValue(R.styleable.Keyboard_KeyStyle_parentStyle)) {
final String parentStyle = keyStyleAttr.getString(
R.styleable.Keyboard_KeyStyle_parentStyle);
@@ -188,7 +214,7 @@ public class KeyStyles {
return mStyles.get(styleName);
}
- public static KeyStyle getEmptyKeyStyle() {
- return EMPTY_KEY_STYLE;
+ public KeyStyle getEmptyKeyStyle() {
+ return mEmptyKeyStyle;
}
}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardLabelsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardLabelsSet.java
new file mode 100644
index 000000000..a46f3bf1b
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardLabelsSet.java
@@ -0,0 +1,2477 @@
+/*
+ * Copyright (C) 2012 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.keyboard.internal;
+
+import android.content.Context;
+import android.content.res.Resources;
+
+import com.android.inputmethod.latin.R;
+
+import java.util.HashMap;
+
+/**
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ * This file is generated by tools/makelabel.
+ */
+public final class KeyboardLabelsSet {
+ // Language to labels map.
+ private static final HashMap<String, String[]> sLocaleToLabelsMap =
+ new HashMap<String, String[]>();
+ private static final HashMap<String, Integer> sNameToIdMap = new HashMap<String, Integer>();
+
+ private String[] mLabels;
+ // Resource name to label map.
+ private HashMap<String, String> mResourceNameToLabelsMap = new HashMap<String, String>();
+
+ public void setLanguage(final String language) {
+ mLabels = sLocaleToLabelsMap.get(language);
+ if (mLabels == null) {
+ mLabels = LANGUAGE_DEFAULT;
+ }
+ }
+
+ public void loadStringResources(Context context) {
+ loadStringResourcesInternal(context, RESOURCE_NAMES, R.string.english_ime_name);
+ }
+
+ /* package for test */
+ void loadStringResourcesInternal(Context context, final String[] resourceNames,
+ int referenceId) {
+ final Resources res = context.getResources();
+ final String packageName = res.getResourcePackageName(referenceId);
+ for (final String resName : resourceNames) {
+ final int resId = res.getIdentifier(resName, "string", packageName);
+ mResourceNameToLabelsMap.put(resName, res.getString(resId));
+ }
+ }
+
+ public String getLabel(final String name) {
+ if (mResourceNameToLabelsMap.containsKey(name)) {
+ return mResourceNameToLabelsMap.get(name);
+ }
+ final Integer id = sNameToIdMap.get(name);
+ if (id == null) throw new RuntimeException("Unknown label: " + name);
+ final String label = (id < mLabels.length) ? mLabels[id] : null;
+ return (label == null) ? LANGUAGE_DEFAULT[id] : label;
+ }
+
+ private static final String[] RESOURCE_NAMES = {
+ // These labels' name should be aligned with the @string/<name> in values/strings.xml.
+ // Labels for action.
+ "label_go_key",
+ // "label_search_key",
+ "label_send_key",
+ "label_next_key",
+ "label_done_key",
+ "label_previous_key",
+ // Other labels.
+ "label_to_alpha_key",
+ "label_to_symbol_key",
+ "label_to_symbol_with_microphone_key",
+ "label_pause_key",
+ "label_wait_key",
+ };
+
+ private static final String[] NAMES = {
+ /* 0 */ "more_keys_for_a",
+ /* 1 */ "more_keys_for_e",
+ /* 2 */ "more_keys_for_i",
+ /* 3 */ "more_keys_for_o",
+ /* 4 */ "more_keys_for_u",
+ /* 5 */ "more_keys_for_s",
+ /* 6 */ "more_keys_for_n",
+ /* 7 */ "more_keys_for_c",
+ /* 8 */ "more_keys_for_y",
+ /* 9 */ "more_keys_for_d",
+ /* 10 */ "more_keys_for_r",
+ /* 11 */ "more_keys_for_t",
+ /* 12 */ "more_keys_for_z",
+ /* 13 */ "more_keys_for_k",
+ /* 14 */ "more_keys_for_l",
+ /* 15 */ "more_keys_for_g",
+ /* 16 */ "more_keys_for_v",
+ /* 17 */ "more_keys_for_h",
+ /* 18 */ "more_keys_for_j",
+ /* 19 */ "more_keys_for_w",
+ /* 20 */ "keylabel_for_nordic_row1_11",
+ /* 21 */ "keylabel_for_nordic_row2_10",
+ /* 22 */ "keylabel_for_nordic_row2_11",
+ /* 23 */ "more_keys_for_nordic_row2_10",
+ /* 24 */ "more_keys_for_nordic_row2_11",
+ /* 25 */ "keylabel_for_east_slavic_row1_9",
+ /* 26 */ "keylabel_for_east_slavic_row2_1",
+ /* 27 */ "keylabel_for_east_slavic_row3_5",
+ /* 28 */ "more_keys_for_cyrillic_u",
+ /* 29 */ "more_keys_for_cyrillic_ye",
+ /* 30 */ "more_keys_for_cyrillic_en",
+ /* 31 */ "more_keys_for_cyrillic_ha",
+ /* 32 */ "more_keys_for_east_slavic_row2_1",
+ /* 33 */ "more_keys_for_cyrillic_o",
+ /* 34 */ "more_keys_for_cyrillic_soft_sign",
+ /* 35 */ "keylabel_for_south_slavic_row1_6",
+ /* 36 */ "keylabel_for_south_slavic_row2_11",
+ /* 37 */ "keylabel_for_south_slavic_row3_1",
+ /* 38 */ "keylabel_for_south_slavic_row3_8",
+ /* 39 */ "more_keys_for_cyrillic_ie",
+ /* 40 */ "more_keys_for_cyrillic_i",
+ /* 41 */ "more_keys_for_single_quote",
+ /* 42 */ "more_keys_for_double_quote",
+ /* 43 */ "more_keys_for_tablet_double_quote",
+ /* 44 */ "more_keys_for_currency_dollar",
+ /* 45 */ "more_keys_for_currency_euro",
+ /* 46 */ "more_keys_for_currency_pound",
+ /* 47 */ "more_keys_for_currency_general",
+ /* 48 */ "more_keys_for_smiley",
+ /* 49 */ "more_keys_for_punctuation",
+ /* 50 */ "keyhintlabel_for_punctuation",
+ /* 51 */ "keylabel_for_popular_domain",
+ /* 52 */ "more_keys_for_popular_domain",
+ /* 53 */ "keylabel_for_symbols_1",
+ /* 54 */ "keylabel_for_symbols_2",
+ /* 55 */ "keylabel_for_symbols_3",
+ /* 56 */ "keylabel_for_symbols_4",
+ /* 57 */ "keylabel_for_symbols_5",
+ /* 58 */ "keylabel_for_symbols_6",
+ /* 59 */ "keylabel_for_symbols_7",
+ /* 60 */ "keylabel_for_symbols_8",
+ /* 61 */ "keylabel_for_symbols_9",
+ /* 62 */ "keylabel_for_symbols_0",
+ /* 63 */ "additional_more_keys_for_symbols_1",
+ /* 64 */ "additional_more_keys_for_symbols_2",
+ /* 65 */ "additional_more_keys_for_symbols_3",
+ /* 66 */ "additional_more_keys_for_symbols_4",
+ /* 67 */ "additional_more_keys_for_symbols_5",
+ /* 68 */ "additional_more_keys_for_symbols_6",
+ /* 69 */ "additional_more_keys_for_symbols_7",
+ /* 70 */ "additional_more_keys_for_symbols_8",
+ /* 71 */ "additional_more_keys_for_symbols_9",
+ /* 72 */ "additional_more_keys_for_symbols_0",
+ /* 73 */ "more_keys_for_symbols_1",
+ /* 74 */ "more_keys_for_symbols_2",
+ /* 75 */ "more_keys_for_symbols_3",
+ /* 76 */ "more_keys_for_symbols_4",
+ /* 77 */ "more_keys_for_symbols_5",
+ /* 78 */ "more_keys_for_symbols_6",
+ /* 79 */ "more_keys_for_symbols_7",
+ /* 80 */ "more_keys_for_symbols_8",
+ /* 81 */ "more_keys_for_symbols_9",
+ /* 82 */ "more_keys_for_symbols_0",
+ /* 83 */ "more_keys_for_am_pm",
+ /* 84 */ "settings_as_more_key",
+ /* 85 */ "keylabel_for_comma",
+ /* 86 */ "more_keys_for_comma",
+ /* 87 */ "action_next_as_more_key",
+ /* 88 */ "action_previous_as_more_key",
+ /* 89 */ "keylabel_for_symbols_question",
+ /* 90 */ "keylabel_for_symbols_semicolon",
+ /* 91 */ "keylabel_for_symbols_percent",
+ /* 92 */ "more_keys_for_symbols_question",
+ /* 93 */ "more_keys_for_symbols_semicolon",
+ /* 94 */ "more_keys_for_symbols_percent",
+ /* 95 */ "keylabel_for_tablet_comma",
+ /* 96 */ "keyhintlabel_for_tablet_comma",
+ /* 97 */ "more_keys_for_tablet_comma",
+ /* 98 */ "keyhintlabel_for_tablet_period",
+ /* 99 */ "more_keys_for_tablet_period",
+ /* 100 */ "keylabel_for_apostrophe",
+ /* 101 */ "keylabel_for_dash",
+ /* 102 */ "keyhintlabel_for_apostrophe",
+ /* 103 */ "keyhintlabel_for_dash",
+ /* 104 */ "more_keys_for_apostrophe",
+ /* 105 */ "more_keys_for_dash",
+ /* 106 */ "more_keys_for_bullet",
+ /* 107 */ "more_keys_for_star",
+ /* 108 */ "more_keys_for_plus",
+ /* 109 */ "more_keys_for_left_parenthesis",
+ /* 110 */ "more_keys_for_right_parenthesis",
+ /* 111 */ "more_keys_for_less_than",
+ /* 112 */ "more_keys_for_greater_than",
+ /* 113 */ "label_to_more_symbol_key",
+ /* 114 */ "label_to_more_symbol_for_tablet_key",
+ /* 115 */ "label_tab_key",
+ /* 116 */ "label_to_phone_numeric_key",
+ /* 117 */ "label_to_phone_symbols_key",
+ /* 118 */ "label_time_am",
+ /* 119 */ "label_time_pm",
+ };
+
+ private static final String EMPTY = "";
+
+ /* Default labels */
+ private static final String[] LANGUAGE_DEFAULT = {
+ /* 0~ */
+ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
+ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
+ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
+ EMPTY, EMPTY,
+ /* ~40 */
+ /* 41 */ "!fixedColumnOrder!4,\u2018,\u2019,\u201A,\u201B",
+ // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. <string name="more_keys_for_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;</string>
+ /* 42 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB,\u00BB",
+ // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
+ /* 43 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB,\u00BB,\u2018,\u2019,\u201A,\u201B",
+ // U+00A2: "¢" CENT SIGN
+ // U+00A3: "£" POUND SIGN
+ // U+20AC: "€" EURO SIGN
+ // U+00A5: "¥" YEN SIGN
+ // U+20B1: "₱" PESO SIGN
+ /* 44 */ "\u00A2,\u00A3,\u20AC,\u00A5,\u20B1",
+ /* 45 */ "\u00A2,\u00A3,$,\u00A5,\u20B1",
+ /* 46 */ "\u00A2,$,\u20AC,\u00A5,\u20B1",
+ /* 47 */ "\u00A2,$,\u20AC,\u00A3,\u00A5,\u20B1",
+ /* 48 */ "!fixedColumnOrder!5,!hasLabels!,=-O|=-O ,:-P|:-P ,;-)|;-) ,:-(|:-( ,:-)|:-) ,:-!|:-! ,:-$|:-$ ,B-)|B-) ,:O|:O ,:-*|:-* ,:-D|:-D ,:\'(|:\'( ,:-\\\\|:-\\\\ ,O:-)|O:-) ,:-[|:-[ ",
+ /* 49 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\\,,?,@,&,\\%,+,;,/,(,)",
+ /* 50 */ EMPTY,
+ /* 51 */ ".com",
+ // popular web domains for the locale - most popular, displayed on the keyboard
+ /* 52 */ "!hasLabels!,.net,.org,.gov,.edu",
+ /* 53 */ "1",
+ /* 54 */ "2",
+ /* 55 */ "3",
+ /* 56 */ "4",
+ /* 57 */ "5",
+ /* 58 */ "6",
+ /* 59 */ "7",
+ /* 60 */ "8",
+ /* 61 */ "9",
+ /* 62 */ "0",
+ /* 63~ */
+ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
+ /* ~72 */
+ // U+00B9: "¹" SUPERSCRIPT ONE
+ // U+00BD: "½" VULGAR FRACTION ONE HALF
+ // U+2153: "⅓" VULGAR FRACTION ONE THIRD
+ // U+00BC: "¼" VULGAR FRACTION ONE QUARTER
+ // U+215B: "⅛" VULGAR FRACTION ONE EIGHTH
+ /* 73 */ "\u00B9,\u00BD,\u2153,\u00BC,\u215B",
+ // U+00B2: "²" SUPERSCRIPT TWO
+ // U+2154: "⅔" VULGAR FRACTION TWO THIRDS
+ /* 74 */ "\u00B2,\u2154",
+ // U+00B3: "³" SUPERSCRIPT THREE
+ // U+00BE: "¾" VULGAR FRACTION THREE QUARTERS
+ // U+215C: "⅜" VULGAR FRACTION THREE EIGHTHS
+ /* 75 */ "\u00B3,\u00BE,\u215C",
+ // U+2074: "⁴" SUPERSCRIPT FOUR
+ /* 76 */ "\u2074",
+ // U+215D: "⅝" VULGAR FRACTION FIVE EIGHTHS
+ /* 77 */ "\u215D",
+ /* 78 */ EMPTY,
+ // U+215E: "⅞" VULGAR FRACTION SEVEN EIGHTHS
+ /* 79 */ "\u215E",
+ /* 80 */ EMPTY,
+ /* 81 */ EMPTY,
+ // U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N
+ // U+2205: "∅" EMPTY SET
+ /* 82 */ "\u207F,\u2205",
+ /* 83 */ "!fixedColumnOrder!2,!hasLabels!,!label/label_time_am,!label/label_time_pm",
+ /* 84 */ "!icon/settingsKey|!code/key_settings",
+ /* 85 */ ",",
+ /* 86 */ EMPTY,
+ /* 87 */ "!hasLabels!,!label/label_next_key|!code/key_action_next",
+ /* 88 */ "!hasLabels!,!label/label_previous_key|!code/key_action_previous",
+ /* 89 */ "?",
+ /* 90 */ ";",
+ /* 91 */ "%",
+ // U+00BF: "¿" INVERTED QUESTION MARK
+ /* 92 */ "\u00BF",
+ /* 93 */ EMPTY,
+ // U+2030: "‰" PER MILLE SIGN
+ /* 94 */ "\u2030",
+ /* 95 */ ",",
+ /* 96 */ "!",
+ /* 97 */ "!",
+ /* 98 */ "?",
+ /* 99 */ "?",
+ /* 100 */ "\'",
+ /* 101 */ "-",
+ /* 102 */ "\"",
+ /* 103 */ "_",
+ /* 104 */ "\"",
+ /* 105 */ "_",
+ // U+266A: "♪" EIGHTH NOTE
+ // U+2665: "♥" BLACK HEART SUIT
+ // U+2660: "♠" BLACK SPADE SUIT
+ // U+2666: "♦" BLACK DIAMOND SUIT
+ // U+2663: "♣" BLACK CLUB SUIT
+ /* 106 */ "\u266A,\u2665,\u2660,\u2666,\u2663",
+ // U+2020: "†" DAGGER
+ // U+2021: "‡" DOUBLE DAGGER
+ // U+2605: "★" BLACK STAR
+ /* 107 */ "\u2020,\u2021,\u2605",
+ // U+00B1: "±" PLUS-MINUS SIGN
+ /* 108 */ "\u00B1",
+ // The all letters need to be mirrored are found at
+ // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt
+ /* 109 */ "!fixedColumnOrder!3,<,{,[",
+ /* 110 */ "!fixedColumnOrder!3,>,},]",
+ // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ // U+2264: "≤" LESS-THAN OR EQUAL TO
+ // U+2265: "≥" GREATER-THAN EQUAL TO
+ // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ // The following characters don't need BIDI mirroring.
+ // U+2018: "‘" LEFT SINGLE QUOTATION MARK
+ // U+2019: "’" RIGHT SINGLE QUOTATION MARK
+ // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
+ // U+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK
+ // U+201C: "“" LEFT DOUBLE QUOTATION MARK
+ // U+201D: "”" RIGHT DOUBLE QUOTATION MARK
+ // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
+ // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+ /* 111 */ "!fixedColumnOrder!3,\u2039,\u2264,\u00AB",
+ /* 112 */ "!fixedColumnOrder!3,\u203A,\u2265,\u00BB",
+ // Label for "switch to more symbol" modifier key. Must be short to fit on key!
+ /* 113 */ "= \\ <",
+ // Label for "switch to more symbol" modifier key on tablets. Must be short to fit on key!
+ /* 114 */ "~ \\ {",
+ // Label for "Tab" key. Must be short to fit on key!
+ /* 115 */ "Tab",
+ // Label for "switch to phone numeric" key. Must be short to fit on key!
+ /* 116 */ "123",
+ // Label for "switch to phone symbols" key. Must be short to fit on key! U+FF0A: "*" FULLWIDTH ASTERISK
+ // U+FF03: "#" FULLWIDTH NUMBER SIGN
+ /* 117 */ "\uFF0A\uFF03",
+ // Key label for "ante meridiem"
+ /* 118 */ "AM",
+ // Key label for "post meridiem"
+ /* 119 */ "PM",
+ };
+
+ /* Language ar: Arabic */
+ private static final String[] LANGUAGE_ar = {
+ /* 0~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ /* ~41 */
+ // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK <string name="more_keys_for_double_quote">&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string>
+ /* 42 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB",
+ // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB|&#x00AB;;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
+ /* 43 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB,\u2018,\u2019,\u201A,\u201B",
+ /* 44~ */
+ null, null, null, null, null,
+ /* ~48 */
+ // U+061F: "؟" ARABIC QUESTION MARK
+ // U+060C: "،" ARABIC COMMA
+ // U+061B: "؛" ARABIC SEMICOLON U+0650: "ِ" ARABIC KASRA
+ // U+064E: "َ" ARABIC FATHA
+ // U+064D: "ٍ" ARABIC KASRATAN
+ // U+064B: "ً" ARABIC FATHATAN
+ // U+0656: "ٖ" ARABIC SUBSCRIPT ALEF
+ // U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF
+ // U+0655: "ٕ" ARABIC HAMZA BELOW
+ // U+0654: "ٔ" ARABIC HAMZA ABOVE U+064F: "ُ" ARABIC DAMMA
+ // U+064C: "ٌ" ARABIC DAMMATAN
+ // U+0651: "ّ" ARABIC SHADDA
+ // U+0652: "ْ" ARABIC SUKUN
+ // U+0653: "ٓ" ARABIC MADDAH ABOVE
+ // U+0640: "ـ" ARABIC TATWEEL In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label.
+ /* 49 */ "!fixedColumnOrder!8,\",\',-,:,!,\u061F,\u060C,\u061B,\u0650,\u064E,\u064D,\u064B,\u0656,\u0670,\u0655,\u0654,\u064F,\u064C,\u0651,\u0652,\u0653,\u0640\u0640\u0640|\u0640,/",
+ /* 50 */ "\u064B",
+ /* 51 */ null,
+ /* 52 */ null,
+ // U+0661: "١" ARABIC-INDIC DIGIT ONE
+ /* 53 */ "\u0661",
+ // U+0662: "٢" ARABIC-INDIC DIGIT TWO
+ /* 54 */ "\u0662",
+ // U+0663: "٣" ARABIC-INDIC DIGIT THREE
+ /* 55 */ "\u0663",
+ // U+0664: "٤" ARABIC-INDIC DIGIT FOUR
+ /* 56 */ "\u0664",
+ // U+0665: "٥" ARABIC-INDIC DIGIT FIVE
+ /* 57 */ "\u0665",
+ // U+0666: "٦" ARABIC-INDIC DIGIT SIX
+ /* 58 */ "\u0666",
+ // U+0667: "٧" ARABIC-INDIC DIGIT SEVEN
+ /* 59 */ "\u0667",
+ // U+0668: "٨" ARABIC-INDIC DIGIT EIGHT
+ /* 60 */ "\u0668",
+ // U+0669: "٩" ARABIC-INDIC DIGIT NINE
+ /* 61 */ "\u0669",
+ // U+0660: "٠" ARABIC-INDIC DIGIT ZERO
+ /* 62 */ "\u0660",
+ /* 63 */ "1",
+ /* 64 */ "2",
+ /* 65 */ "3",
+ /* 66 */ "4",
+ /* 67 */ "5",
+ /* 68 */ "6",
+ /* 69 */ "7",
+ /* 70 */ "8",
+ /* 71 */ "9",
+ // U+066B: "٫" ARABIC DECIMAL SEPARATOR
+ // U+066C: "٬" ARABIC THOUSANDS SEPARATOR
+ /* 72 */ "0,\u066B,\u066C",
+ /* 73~ */
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ /* ~84 */
+ // U+060C: "،" ARABIC COMMA
+ /* 85 */ "\u060C",
+ /* 86 */ "\\,",
+ /* 87 */ null,
+ /* 88 */ null,
+ /* 89 */ "\u061F",
+ /* 90 */ "\u061B",
+ // U+066A: "٪" ARABIC PERCENT SIGN
+ /* 91 */ "\u066A",
+ /* 92 */ "?",
+ /* 93 */ ";",
+ // U+2030: "‰" PER MILLE SIGN
+ /* 94 */ "%,\u2030",
+ /* 95~ */
+ null, null, null, null, null,
+ /* ~99 */
+ // U+060C: "،" ARABIC COMMA
+ // U+061B: "؛" ARABIC SEMICOLON
+ // U+061F: "؟" ARABIC QUESTION MARK
+ /* 100 */ "\u060C",
+ /* 101 */ ".",
+ /* 102 */ "\u061F",
+ /* 103 */ "\u064B",
+ /* 104 */ "\u061F,\u061B,!,:,-,/,\',\"",
+ // U+0651: "ّ" ARABIC SHADDA
+ // U+0652: "ْ" ARABIC SUKUN
+ // U+064C: "ٌ" ARABIC DAMMATAN
+ // U+0653: "ٓ" ARABIC MADDAH ABOVE
+ // U+064F: "ُ" ARABIC DAMMA U+0650: "ِ" ARABIC KASRA
+ // U+064E: "َ" ARABIC FATHA
+ // U+064B: "ً" ARABIC FATHATAN
+ // U+0640: "ـ" ARABIC TATWEEL
+ // U+064D: "ٍ" ARABIC KASRATAN U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF
+ // U+0656: "ٖ" ARABIC SUBSCRIPT ALEF
+ // U+0654: "ٔ" ARABIC HAMZA ABOVE
+ // U+0655: "ٕ" ARABIC HAMZA BELOW In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label.
+ /* 105 */ "\u0651,\u0652,\u064C,\u0653,\u064F,\u0650,\u064E,\u064B,\u0640\u0640\u0640|\u0640,\u064D,\u0654,\u0656,\u0655,\u0670",
+ // U+266A: "♪" EIGHTH NOTE
+ /* 106 */ "\u266A",
+ // U+2605: "★" BLACK STAR
+ // U+066D: "٭" ARABIC FIVE POINTED STAR
+ /* 107 */ "\u2605,\u066D",
+ /* 108 */ null,
+ // The all letters need to be mirrored are found at
+ // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt U+FD3E: "﴾" ORNATE LEFT PARENTHESIS
+ // U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS TODO: DroidSansArabic lacks the glyph of U+FD3E ORNATE LEFT PARENTHESIS TODO: DroidSansArabic lacks the glyph of U+FD3F ORNATE RIGHT PARENTHESIS
+ /* 109 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]",
+ /* 110 */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,>|<,}|{,]|[",
+ // U+2264: "≤" LESS-THAN OR EQUAL TO
+ // U+2265: "≥" GREATER-THAN EQUAL TO
+ // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ // The following characters don't need BIDI mirroring.
+ // U+2018: "‘" LEFT SINGLE QUOTATION MARK
+ // U+2019: "’" RIGHT SINGLE QUOTATION MARK
+ // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
+ // U+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK
+ // U+201C: "“" LEFT DOUBLE QUOTATION MARK
+ // U+201D: "”" RIGHT DOUBLE QUOTATION MARK
+ // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
+ // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+ /* 111 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB",
+ /* 112 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB",
+ };
+
+ /* Language be: Belarusian */
+ private static final String[] LANGUAGE_be = {
+ /* 0~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null,
+ /* ~24 */
+ // U+045E: "ў" CYRILLIC SMALL LETTER SHORT U
+ /* 25 */ "\u045E",
+ // U+044B: "ы" CYRILLIC SMALL LETTER YERU
+ /* 26 */ "\u044B",
+ // U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ /* 27 */ "\u0456",
+ /* 28~ */
+ null, null, null,
+ /* ~30 */
+ // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+ /* 31 */ "\u044A",
+ /* 32 */ null,
+ /* 33 */ null,
+ // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+ /* 34 */ "\u044A",
+ };
+
+ /* Language ca: Catalan */
+ private static final String[] LANGUAGE_ca = {
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+ // U+00AA: "ª" FEMININE ORDINAL INDICATOR
+ /* 0 */ "\u00E0,\u00E1,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA",
+ // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+ // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+ // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+ // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+ // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+ // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+ // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+ /* 1 */ "\u00E8,\u00E9,\u00EB,\u00EA,\u0119,\u0117,\u0113",
+ // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+ // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+ // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+ // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+ /* 2 */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+ // U+00BA: "º" MASCULINE ORDINAL INDICATOR
+ /* 3 */ "\u00F2,\u00F3,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA",
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ /* 4 */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
+ /* 5 */ null,
+ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ /* 6 */ "\u00F1,\u0144",
+ // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+ // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+ // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+ /* 7 */ "\u00E7,\u0107,\u010D",
+ /* 8~ */
+ null, null, null, null, null, null,
+ /* ~13 */
+ // U+0140: "ŀ" LATIN SMALL LETTER L WITH MIDDLE DOT
+ // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
+ /* 14 */ "\u0140,\u0142",
+ };
+
+ /* Language cs: Czech */
+ private static final String[] LANGUAGE_cs = {
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+ /* 0 */ "\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101",
+ // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+ // U+011B: "ě" LATIN SMALL LETTER E WITH CARON
+ // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+ // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+ // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+ // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+ // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+ // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+ /* 1 */ "\u00E9,\u011B,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
+ // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+ // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+ // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+ // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+ // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+ /* 2 */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B",
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+ /* 3 */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ /* 4 */ "\u00FA,\u016F,\u00FB,\u00FC,\u00F9,\u016B",
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ /* 5 */ "\u0161,\u00DF,\u015B",
+ // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
+ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ /* 6 */ "\u0148,\u00F1,\u0144",
+ // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+ // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+ // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+ /* 7 */ "\u010D,\u00E7,\u0107",
+ // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+ // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+ /* 8 */ "\u00FD,\u00FF",
+ // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+ /* 9 */ "\u010F",
+ // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+ /* 10 */ "\u0159",
+ // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
+ /* 11 */ "\u0165",
+ // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+ // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
+ // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
+ /* 12 */ "\u017E,\u017A,\u017C",
+ };
+
+ /* Language da: Danish */
+ private static final String[] LANGUAGE_da = {
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+ /* 0 */ "\u00E1,\u00E4,\u00E0,\u00E2,\u00E3,\u0101",
+ // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+ // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+ /* 1 */ "\u00E9,\u00EB",
+ // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+ /* 2 */ "\u00ED,\u00EF",
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+ /* 3 */ "\u00F3,\u00F4,\u00F2,\u00F5,\u0153,\u014D",
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ /* 4 */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B",
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ /* 5 */ "\u00DF,\u015B,\u0161",
+ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ /* 6 */ "\u00F1,\u0144",
+ /* 7 */ null,
+ // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+ // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+ /* 8 */ "\u00FD,\u00FF",
+ // U+00F0: "ð" LATIN SMALL LETTER ETH
+ /* 9 */ "\u00F0",
+ /* 10~ */
+ null, null, null, null,
+ /* ~13 */
+ // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
+ /* 14 */ "\u0142",
+ /* 15~ */
+ null, null, null, null, null,
+ /* ~19 */
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ /* 20 */ "\u00E5",
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ /* 21 */ "\u00E6",
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ /* 22 */ "\u00F8",
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ /* 23 */ "\u00E4",
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ /* 24 */ "\u00F6",
+ };
+
+ /* Language de: German */
+ private static final String[] LANGUAGE_de = {
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+ /* 0 */ "\u00E4,\u00E2,\u00E0,\u00E1,\u00E6,\u00E3,\u00E5,\u0101",
+ // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+ /* 1 */ "\u0117",
+ /* 2 */ null,
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+ /* 3 */ "\u00F6,\u00F4,\u00F2,\u00F3,\u00F5,\u0153,\u00F8,\u014D",
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ /* 4 */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B",
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ /* 5 */ "\u00DF,\u015B,\u0161",
+ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ /* 6 */ "\u00F1,\u0144",
+ };
+
+ /* Language en: English */
+ private static final String[] LANGUAGE_en = {
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+ /* 0 */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101",
+ // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+ // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+ // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+ // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+ // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+ /* 1 */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0103",
+ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+ // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+ // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+ // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+ /* 2 */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC",
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ /* 3 */ "\u00F4,\u00F6,\u00F2,\u00F3,\u0153,\u00F8\u014D,\u00F5",
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ /* 4 */ "\u00FB,\u00FC,\u00F9,\u00FA,\u016B",
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ /* 5 */ "\u00DF",
+ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+ /* 6 */ "\u00F1",
+ // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+ /* 7 */ "\u00E7",
+ };
+
+ /* Language es: Spanish */
+ private static final String[] LANGUAGE_es = {
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+ // U+00AA: "ª" FEMININE ORDINAL INDICATOR
+ /* 0 */ "\u00E1,\u00E0,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA",
+ // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+ // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+ // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+ // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+ // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+ // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+ // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+ /* 1 */ "\u00E9,\u00E8,\u00EB,\u00EA,\u0119,\u0117,\u0113",
+ // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+ // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+ // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+ // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+ /* 2 */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+ // U+00BA: "º" MASCULINE ORDINAL INDICATOR
+ /* 3 */ "\u00F3,\u00F2,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA",
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ /* 4 */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
+ /* 5 */ null,
+ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ /* 6 */ "\u00F1,\u0144",
+ // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+ // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+ // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+ /* 7 */ "\u00E7,\u0107,\u010D",
+ /* 8~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null,
+ /* ~48 */
+ // U+00A1: "¡" INVERTED EXCLAMATION MARK
+ // U+00BF: "¿" INVERTED QUESTION MARK
+ /* 49 */ "!fixedColumnOrder!7,#,-,\u00A1,!,\u00BF,\\,,?,\\%,+,;,:,/,(,),@,&,\",\'",
+ };
+
+ /* Language et: Estonian */
+ private static final String[] LANGUAGE_et = {
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
+ /* 0 */ "\u00E4,\u0101,\u00E0,\u00E1,\u00E2,\u00E3,\u00E5,\u00E6,\u0105",
+ // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+ // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+ // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+ // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+ // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+ // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+ // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+ // U+011B: "ě" LATIN SMALL LETTER E WITH CARON
+ /* 1 */ "\u0113,\u00E8,\u0117,\u00E9,\u00EA,\u00EB,\u0119,\u011B",
+ // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+ // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+ // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+ // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+ // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+ // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
+ /* 2 */ "\u012B,\u00EC,\u012F,\u00ED,\u00EE,\u00EF,\u0131",
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ /* 3 */ "\u00F6,\u00F5,\u00F2,\u00F3,\u00F4,\u0153,\u0151,\u00F8",
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
+ // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
+ /* 4 */ "\u00FC,\u016B,\u0173,\u00F9,\u00FA,\u00FB,\u016F,\u0171",
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
+ /* 5 */ "\u0161,\u00DF,\u015B,\u015F",
+ // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
+ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ /* 6 */ "\u0146,\u00F1,\u0144,\u0144",
+ // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+ // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+ // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+ /* 7 */ "\u010D,\u00E7,\u0107",
+ // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+ // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+ /* 8 */ "\u00FD,\u00FF",
+ // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+ /* 9 */ "\u010F",
+ // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
+ // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+ // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
+ /* 10 */ "\u0157,\u0159,\u0155",
+ // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
+ // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
+ /* 11 */ "\u0163,\u0165",
+ // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+ // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
+ // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
+ /* 12 */ "\u017E,\u017C,\u017A",
+ // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
+ /* 13 */ "\u0137",
+ // U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA
+ // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
+ // U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE
+ // U+013E: "ľ" LATIN SMALL LETTER L WITH CARON
+ /* 14 */ "\u013C,\u0142,\u013A,\u013E",
+ // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
+ // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
+ /* 15 */ "\u0123,\u011F",
+ /* 16~ */
+ null, null, null, null,
+ /* ~19 */
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ /* 20 */ "\u00FC",
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ /* 21 */ "\u00F6",
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ /* 22 */ "\u00E4",
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ /* 23 */ "\u00F5",
+ };
+
+ /* Language fa: Persian */
+ private static final String[] LANGUAGE_fa = {
+ /* 0~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ /* ~41 */
+ // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK <string name="more_keys_for_double_quote">&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string>
+ /* 42 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB",
+ // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB|&#x00AB;;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
+ /* 43 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB,\u2018,\u2019,\u201A,\u201B",
+ /* 44~ */
+ null, null, null, null, null,
+ /* ~48 */
+ // U+061F: "؟" ARABIC QUESTION MARK
+ // U+060C: "،" ARABIC COMMA
+ // U+061B: "؛" ARABIC SEMICOLON U+0650: "ِ" ARABIC KASRA
+ // U+064E: "َ" ARABIC FATHA
+ // U+064D: "ٍ" ARABIC KASRATAN
+ // U+064B: "ً" ARABIC FATHATAN
+ // U+0656: "ٖ" ARABIC SUBSCRIPT ALEF
+ // U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF
+ // U+0655: "ٕ" ARABIC HAMZA BELOW
+ // U+0654: "ٔ" ARABIC HAMZA ABOVE U+064F: "ُ" ARABIC DAMMA
+ // U+064C: "ٌ" ARABIC DAMMATAN
+ // U+0651: "ّ" ARABIC SHADDA
+ // U+0652: "ْ" ARABIC SUKUN
+ // U+0653: "ٓ" ARABIC MADDAH ABOVE
+ // U+0640: "ـ" ARABIC TATWEEL In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label.
+ /* 49 */ "!fixedColumnOrder!8,\",\',-,:,!,\u061F,\u060C,\u061B,\u0650,\u064E,\u064D,\u064B,\u0656,\u0670,\u0655,\u0654,\u064F,\u064C,\u0651,\u0652,\u0653,\u0640\u0640\u0640|\u0640,/",
+ /* 50 */ "\u064B",
+ /* 51 */ null,
+ /* 52 */ null,
+ // U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE
+ /* 53 */ "\u06F1",
+ // U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO
+ /* 54 */ "\u06F2",
+ // U+06F3: "۳" EXTENDED ARABIC-INDIC DIGIT THREE
+ /* 55 */ "\u06F3",
+ // U+06F4: "۴" EXTENDED ARABIC-INDIC DIGIT FOUR
+ /* 56 */ "\u06F4",
+ // U+06F5: "۵" EXTENDED ARABIC-INDIC DIGIT FIVE
+ /* 57 */ "\u06F5",
+ // U+06F6: "۶" EXTENDED ARABIC-INDIC DIGIT SIX
+ /* 58 */ "\u06F6",
+ // U+06F7: "۷" EXTENDED ARABIC-INDIC DIGIT SEVEN
+ /* 59 */ "\u06F7",
+ // U+06F8: "۸" EXTENDED ARABIC-INDIC DIGIT EIGHT
+ /* 60 */ "\u06F8",
+ // U+06F9: "۹" EXTENDED ARABIC-INDIC DIGIT NINE
+ /* 61 */ "\u06F9",
+ // U+06F0: "۰" EXTENDED ARABIC-INDIC DIGIT ZERO
+ /* 62 */ "\u06F0",
+ /* 63 */ "1",
+ /* 64 */ "2",
+ /* 65 */ "3",
+ /* 66 */ "4",
+ /* 67 */ "5",
+ /* 68 */ "6",
+ /* 69 */ "7",
+ /* 70 */ "8",
+ /* 71 */ "9",
+ // U+066B: "٫" ARABIC DECIMAL SEPARATOR
+ // U+066C: "٬" ARABIC THOUSANDS SEPARATOR
+ /* 72 */ "0,\u066B,\u066C",
+ /* 73~ */
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ /* ~84 */
+ // U+060C: "،" ARABIC COMMA
+ /* 85 */ "\u060C",
+ /* 86 */ "\\,",
+ /* 87 */ null,
+ /* 88 */ null,
+ /* 89 */ "\u061F",
+ /* 90 */ "\u061B",
+ // U+066A: "٪" ARABIC PERCENT SIGN
+ /* 91 */ "\u066A",
+ /* 92 */ "?",
+ /* 93 */ ";",
+ // U+2030: "‰" PER MILLE SIGN
+ /* 94 */ "%,\u2030",
+ // U+060C: "،" ARABIC COMMA
+ // U+061B: "؛" ARABIC SEMICOLON
+ // U+061F: "؟" ARABIC QUESTION MARK
+ /* 95 */ "\u060C",
+ /* 96 */ "!",
+ /* 97 */ "!,\\,",
+ /* 98 */ "\u061F",
+ /* 99 */ "\u061F,?",
+ /* 100~ */
+ null, null, null,
+ /* ~102 */
+ /* 103 */ "\u064B",
+ /* 104 */ "\u061F,\u061B,!,:,-,/,\',\"",
+ // U+0651: "ّ" ARABIC SHADDA
+ // U+0652: "ْ" ARABIC SUKUN
+ // U+064C: "ٌ" ARABIC DAMMATAN
+ // U+0653: "ٓ" ARABIC MADDAH ABOVE
+ // U+064F: "ُ" ARABIC DAMMA U+0650: "ِ" ARABIC KASRA
+ // U+064E: "َ" ARABIC FATHA
+ // U+064B: "ً" ARABIC FATHATAN
+ // U+0640: "ـ" ARABIC TATWEEL
+ // U+064D: "ٍ" ARABIC KASRATAN U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF
+ // U+0656: "ٖ" ARABIC SUBSCRIPT ALEF
+ // U+0654: "ٔ" ARABIC HAMZA ABOVE
+ // U+0655: "ٕ" ARABIC HAMZA BELOW In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label.
+ /* 105 */ "\u0651,\u0652,\u064C,\u0653,\u064F,\u0650,\u064E,\u064B,\u0640\u0640\u0640|\u0640,\u064D,\u0654,\u0656,\u0655,_,\u0670",
+ // U+266A: "♪" EIGHTH NOTE
+ /* 106 */ "\u266A",
+ // U+2605: "★" BLACK STAR
+ // U+066D: "٭" ARABIC FIVE POINTED STAR
+ /* 107 */ "\u2605,\u066D",
+ /* 108 */ null,
+ // The all letters need to be mirrored are found at
+ // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt U+FD3E: "﴾" ORNATE LEFT PARENTHESIS
+ // U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS TODO: DroidSansArabic lacks the glyph of U+FD3E ORNATE LEFT PARENTHESIS TODO: DroidSansArabic lacks the glyph of U+FD3F ORNATE RIGHT PARENTHESIS
+ /* 109 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]",
+ /* 110 */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,>|<,}|{,]|[",
+ // U+2264: "≤" LESS-THAN OR EQUAL TO
+ // U+2265: "≥" GREATER-THAN EQUAL TO
+ // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ // The following characters don't need BIDI mirroring.
+ // U+2018: "‘" LEFT SINGLE QUOTATION MARK
+ // U+2019: "’" RIGHT SINGLE QUOTATION MARK
+ // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
+ // U+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK
+ // U+201C: "“" LEFT DOUBLE QUOTATION MARK
+ // U+201D: "”" RIGHT DOUBLE QUOTATION MARK
+ // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
+ // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+ /* 111 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB",
+ /* 112 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB",
+ };
+
+ /* Language fi: Finnish */
+ private static final String[] LANGUAGE_fi = {
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+ /* 0 */ "\u00E6,\u00E0,\u00E1,\u00E2,\u00E3,\u0101",
+ /* 1 */ null,
+ /* 2 */ null,
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+ /* 3 */ "\u00F8,\u00F4,\u00F2,\u00F3,\u00F5,\u0153,\u014D",
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ /* 4 */ "\u00FC",
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ /* 5 */ "\u0161,\u00DF,\u015B",
+ /* 6~ */
+ null, null, null, null, null, null,
+ /* ~11 */
+ // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+ // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
+ // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
+ /* 12 */ "\u017E,\u017A,\u017C",
+ /* 13~ */
+ null, null, null, null, null, null, null,
+ /* ~19 */
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ /* 20 */ "\u00E5",
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ /* 21 */ "\u00F6",
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ /* 22 */ "\u00E4",
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ /* 23 */ "\u00F8",
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ /* 24 */ "\u00E6",
+ };
+
+ /* Language fr: French */
+ private static final String[] LANGUAGE_fr = {
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+ // U+00AA: "ª" FEMININE ORDINAL INDICATOR
+ /* 0 */ "\u00E0,\u00E2,%,\u00E6,\u00E1,\u00E4,\u00E3,\u00E5,\u0101,\u00AA",
+ // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+ // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+ // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+ // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+ // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+ // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+ // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+ /* 1 */ "\u00E9,\u00E8,\u00EA,\u00EB,%,\u0119,\u0117,\u0113",
+ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+ // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+ // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+ // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+ // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+ /* 2 */ "\u00EE,%,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+ // U+00BA: "º" MASCULINE ORDINAL INDICATOR
+ /* 3 */ "\u00F4,\u0153,%,\u00F6,\u00F2,\u00F3,\u00F5,\u00F8,\u014D,\u00BA",
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ /* 4 */ "\u00F9,\u00FB,%,\u00FC,\u00FA,\u016B",
+ /* 5 */ null,
+ /* 6 */ null,
+ // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+ // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+ // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+ /* 7 */ "\u00E7,\u0107,\u010D",
+ // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+ /* 8 */ "%,\u00FF",
+ };
+
+ /* Language hi: Hindi */
+ private static final String[] LANGUAGE_hi = {
+ /* 0~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null,
+ /* ~52 */
+ // U+0967: "१" DEVANAGARI DIGIT ONE
+ /* 53 */ "\u0967",
+ // U+0968: "२" DEVANAGARI DIGIT TWO
+ /* 54 */ "\u0968",
+ // U+0969: "३" DEVANAGARI DIGIT THREE
+ /* 55 */ "\u0969",
+ // U+096A: "४" DEVANAGARI DIGIT FOUR
+ /* 56 */ "\u096A",
+ // U+096B: "५" DEVANAGARI DIGIT FIVE
+ /* 57 */ "\u096B",
+ // U+096C: "६" DEVANAGARI DIGIT SIX
+ /* 58 */ "\u096C",
+ // U+096D: "७" DEVANAGARI DIGIT SEVEN
+ /* 59 */ "\u096D",
+ // U+096E: "८" DEVANAGARI DIGIT EIGHT
+ /* 60 */ "\u096E",
+ // U+096F: "९" DEVANAGARI DIGIT NINE
+ /* 61 */ "\u096F",
+ // U+0966: "०" DEVANAGARI DIGIT ZERO
+ /* 62 */ "\u0966",
+ /* 63 */ "1",
+ /* 64 */ "2",
+ /* 65 */ "3",
+ /* 66 */ "4",
+ /* 67 */ "5",
+ /* 68 */ "6",
+ /* 69 */ "7",
+ /* 70 */ "8",
+ /* 71 */ "9",
+ /* 72 */ "0",
+ };
+
+ /* Language hr: Croatian */
+ private static final String[] LANGUAGE_hr = {
+ /* 0~ */
+ null, null, null, null, null,
+ /* ~4 */
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ /* 5 */ "\u0161,\u015B,\u00DF",
+ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ /* 6 */ "\u00F1,\u0144",
+ // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+ // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+ // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+ /* 7 */ "\u010D,\u0107,\u00E7",
+ /* 8 */ null,
+ // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
+ /* 9 */ "\u0111",
+ /* 10 */ null,
+ /* 11 */ null,
+ // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+ // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
+ // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
+ /* 12 */ "\u017E,\u017A,\u017C",
+ };
+
+ /* Language hu: Hungarian */
+ private static final String[] LANGUAGE_hu = {
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+ /* 0 */ "\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101",
+ // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+ // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+ // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+ // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+ // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+ // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+ // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+ /* 1 */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
+ // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+ // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+ // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+ // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+ // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+ /* 2 */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B",
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+ /* 3 */ "\u00F3,\u00F6,\u0151,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ /* 4 */ "\u00FA,\u00FC,\u0171,\u00FB,\u00F9,\u016B",
+ };
+
+ /* Language is: Icelandic */
+ private static final String[] LANGUAGE_is = {
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+ /* 0 */ "\u00E1,\u00E4,\u00E6,\u00E5,\u00E0,\u00E2,\u00E3,\u0101",
+ // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+ // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+ // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+ // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+ // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+ // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+ // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+ /* 1 */ "\u00E9,\u00EB,\u00E8,\u00EA,\u0119,\u0117,\u0113",
+ // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+ // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+ // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+ // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+ /* 2 */ "\u00ED,\u00EF,\u00EE,\u00EC,\u012F,\u012B",
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+ /* 3 */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ /* 4 */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B",
+ /* 5~ */
+ null, null, null,
+ /* ~7 */
+ // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+ // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+ /* 8 */ "\u00FD,\u00FF",
+ // U+00F0: "ð" LATIN SMALL LETTER ETH
+ /* 9 */ "\u00F0",
+ /* 10 */ null,
+ // U+00FE: "þ" LATIN SMALL LETTER THORN
+ /* 11 */ "\u00FE",
+ /* 12~ */
+ null, null, null, null, null, null, null, null,
+ /* ~19 */
+ // U+00F0: "ð" LATIN SMALL LETTER ETH
+ /* 20 */ "\u00F0",
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ /* 21 */ "\u00E6",
+ // U+00FE: "þ" LATIN SMALL LETTER THORN
+ /* 22 */ "\u00FE",
+ };
+
+ /* Language it: Italian */
+ private static final String[] LANGUAGE_it = {
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+ // U+00AA: "ª" FEMININE ORDINAL INDICATOR
+ /* 0 */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101,\u00AA",
+ // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+ // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+ // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+ // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+ // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+ // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+ // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+ /* 1 */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0119,\u0117,\u0113",
+ // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+ // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+ // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+ // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+ // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+ /* 2 */ "\u00EC,\u00ED,\u00EE,\u00EF,\u012F,\u012B",
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+ // U+00BA: "º" MASCULINE ORDINAL INDICATOR
+ /* 3 */ "\u00F2,\u00F3,\u00F4,\u00F6,\u00F5,\u0153,\u00F8,\u014D,\u00BA",
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ /* 4 */ "\u00F9,\u00FA,\u00FB,\u00FC,\u016B",
+ };
+
+ /* Language iw: Hebrew */
+ private static final String[] LANGUAGE_iw = {
+ /* 0~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ /* ~41 */
+ // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK <string name="more_keys_for_double_quote">&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string>
+ /* 42 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB",
+ // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB|&#x00AB;;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
+ /* 43 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB,\u2018,\u2019,\u201A,\u201B",
+ /* 44~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null,
+ /* ~106 */
+ // U+2605: "★" BLACK STAR
+ /* 107 */ "\u2605",
+ // U+00B1: "±" PLUS-MINUS SIGN
+ // U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN
+ /* 108 */ "\u00B1,\uFB29",
+ // The all letters need to be mirrored are found at
+ // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt
+ /* 109 */ "!fixedColumnOrder!3,<|>,{|},[|]",
+ /* 110 */ "!fixedColumnOrder!3,>|<,}|{,]|[",
+ // U+2264: "≤" LESS-THAN OR EQUAL TO
+ // U+2265: "≥" GREATER-THAN EQUAL TO
+ // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ // The following characters don't need BIDI mirroring.
+ // U+2018: "‘" LEFT SINGLE QUOTATION MARK
+ // U+2019: "’" RIGHT SINGLE QUOTATION MARK
+ // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
+ // U+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK
+ // U+201C: "“" LEFT DOUBLE QUOTATION MARK
+ // U+201D: "”" RIGHT DOUBLE QUOTATION MARK
+ // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
+ // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+ /* 111 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB",
+ /* 112 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB",
+ };
+
+ /* Language ky: Kirghiz */
+ private static final String[] LANGUAGE_ky = {
+ /* 0~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null,
+ /* ~24 */
+ // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
+ /* 25 */ "\u0449",
+ // U+044B: "ы" CYRILLIC SMALL LETTER YERU
+ /* 26 */ "\u044B",
+ // U+0438: "и" CYRILLIC SMALL LETTER I
+ /* 27 */ "\u0438",
+ // U+04AF: "ү" CYRILLIC SMALL LETTER STRAIGHT U
+ /* 28 */ "\u04AF",
+ /* 29 */ null,
+ // U+04A3: "ң" CYRILLIC SMALL LETTER EN WITH DESCENDER
+ /* 30 */ "\u04A3",
+ // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+ /* 31 */ "\u044A",
+ /* 32 */ null,
+ // U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O
+ /* 33 */ "\u04E9",
+ // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+ /* 34 */ "\u044A",
+ };
+
+ /* Language lt: Lithuanian */
+ private static final String[] LANGUAGE_lt = {
+ // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ /* 0 */ "\u0105,\u00E4,\u0101,\u00E0,\u00E1,\u00E2,\u00E3,\u00E5,\u00E6",
+ // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+ // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+ // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+ // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+ // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+ // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+ // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+ // U+011B: "ě" LATIN SMALL LETTER E WITH CARON
+ /* 1 */ "\u0117,\u0119,\u0113,\u00E8,\u00E9,\u00EA,\u00EB,\u011B",
+ // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+ // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+ // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+ // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+ // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+ // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
+ /* 2 */ "\u012F,\u012B,\u00EC,\u00ED,\u00EE,\u00EF,\u0131",
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ /* 3 */ "\u00F6,\u00F5,\u00F2,\u00F3,\u00F4,\u0153,\u0151,\u00F8",
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
+ // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
+ /* 4 */ "\u016B,\u0173,\u00FC,\u016B,\u00F9,\u00FA,\u00FB,\u016F,\u0171",
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
+ /* 5 */ "\u0161,\u00DF,\u015B,\u015F",
+ // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
+ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ /* 6 */ "\u0146,\u00F1,\u0144,\u0144",
+ // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+ // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+ // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+ /* 7 */ "\u010D,\u00E7,\u0107",
+ // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+ // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+ /* 8 */ "\u00FD,\u00FF",
+ // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+ /* 9 */ "\u010F",
+ // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
+ // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+ // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
+ /* 10 */ "\u0157,\u0159,\u0155",
+ // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
+ // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
+ /* 11 */ "\u0163,\u0165",
+ // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+ // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
+ // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
+ /* 12 */ "\u017E,\u017C,\u017A",
+ // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
+ /* 13 */ "\u0137",
+ // U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA
+ // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
+ // U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE
+ // U+013E: "ľ" LATIN SMALL LETTER L WITH CARON
+ /* 14 */ "\u013C,\u0142,\u013A,\u013E",
+ // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
+ // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
+ /* 15 */ "\u0123,\u011F",
+ };
+
+ /* Language lv: Latvian */
+ private static final String[] LANGUAGE_lv = {
+ // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
+ /* 0 */ "\u0101,\u00E0,\u00E1,\u00E2,\u00E3,\u00E4,\u00E5,\u00E6,\u0105",
+ // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+ // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+ // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+ // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+ // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+ // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+ // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+ // U+011B: "ě" LATIN SMALL LETTER E WITH CARON
+ /* 1 */ "\u0113,\u0117,\u00E8,\u00E9,\u00EA,\u00EB,\u0119,\u011B",
+ // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+ // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+ // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+ // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+ // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+ // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
+ /* 2 */ "\u012B,\u012F,\u00EC,\u00ED,\u00EE,\u00EF,\u0131",
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ /* 3 */ "\u00F2,\u00F3,\u00F4,\u00F5,\u00F6,\u0153,\u0151,\u00F8",
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
+ // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
+ /* 4 */ "\u016B,\u0173,\u00F9,\u00FA,\u00FB,\u00FC,\u016F,\u0171",
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
+ /* 5 */ "\u0161,\u00DF,\u015B,\u015F",
+ // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
+ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ /* 6 */ "\u0146,\u00F1,\u0144,\u0144",
+ // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+ // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+ // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+ /* 7 */ "\u010D,\u00E7,\u0107",
+ // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+ // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+ /* 8 */ "\u00FD,\u00FF",
+ // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+ /* 9 */ "\u010F",
+ // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
+ // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+ // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
+ /* 10 */ "\u0157,\u0159,\u0155",
+ // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
+ // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
+ /* 11 */ "\u0163,\u0165",
+ // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+ // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
+ // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
+ /* 12 */ "\u017E,\u017C,\u017A",
+ // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
+ /* 13 */ "\u0137",
+ // U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA
+ // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
+ // U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE
+ // U+013E: "ľ" LATIN SMALL LETTER L WITH CARON
+ /* 14 */ "\u013C,\u0142,\u013A,\u013E",
+ // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
+ // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
+ /* 15 */ "\u0123,\u011F",
+ };
+
+ /* Language mk: Macedonian */
+ private static final String[] LANGUAGE_mk = {
+ /* 0~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null,
+ /* ~34 */
+ // U+0455: "ѕ" CYRILLIC SMALL LETTER DZE
+ /* 35 */ "\u0455",
+ // U+045C: "ќ" CYRILLIC SMALL LETTER KJE
+ /* 36 */ "\u045C",
+ // U+0437: "з" CYRILLIC SMALL LETTER ZE
+ /* 37 */ "\u0437",
+ // U+0453: "ѓ" CYRILLIC SMALL LETTER GJE
+ /* 38 */ "\u0453",
+ // U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE
+ /* 39 */ "\u0450",
+ // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE
+ /* 40 */ "\u045D",
+ /* 41 */ null,
+ // U+2018: "‘" LEFT SINGLE QUOTATION MARK
+ // U+2019: "’" RIGHT SINGLE QUOTATION MARK
+ // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
+ // U+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK
+ // U+201C: "“" LEFT DOUBLE QUOTATION MARK
+ // U+201D: "”" RIGHT DOUBLE QUOTATION MARK
+ // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
+ // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. <string name="more_keys_for_double_quote">!fixedColumnOrder!6,&#x201E;,&#x201C;,&#x201D;,&#x201F;,&#x00AB;,&#x00BB;</string>
+ /* 42 */ "!fixedColumnOrder!5,\u201E,\u201C,\u201D,\u00AB,\u00BB",
+ // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
+ /* 43 */ "!fixedColumnOrder!5,\u201E,\u201C,\u201D,\u00AB,\u00BB,\u2018,\u2019,\u201A,\u201B",
+ };
+
+ /* Language nb: Norwegian Bokmål */
+ private static final String[] LANGUAGE_nb = {
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+ /* 0 */ "\u00E0,\u00E4,\u00E1,\u00E2,\u00E3,\u0101",
+ // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+ // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+ // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+ // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+ // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+ // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+ // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+ /* 1 */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
+ /* 2 */ null,
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+ /* 3 */ "\u00F4,\u00F2,\u00F3,\u00F6,\u00F5,\u0153,\u014D",
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ /* 4 */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B",
+ /* 5~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ /* ~19 */
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ /* 20 */ "\u00E5",
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ /* 21 */ "\u00F8",
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ /* 22 */ "\u00E6",
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ /* 23 */ "\u00F6",
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ /* 24 */ "\u00E4",
+ };
+
+ /* Language nl: Dutch */
+ private static final String[] LANGUAGE_nl = {
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+ /* 0 */ "\u00E1,\u00E4,\u00E2,\u00E0,\u00E6,\u00E3,\u00E5,\u0101",
+ // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+ // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+ // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+ // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+ // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+ // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+ // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+ /* 1 */ "\u00E9,\u00EB,\u00EA,\u00E8,\u0119,\u0117,\u0113",
+ // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+ // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+ // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+ // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+ // U+0133: "ij" LATIN SMALL LIGATURE IJ
+ /* 2 */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B,\u0133",
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+ /* 3 */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ /* 4 */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B",
+ /* 5 */ null,
+ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ /* 6 */ "\u00F1,\u0144",
+ /* 7 */ null,
+ // U+0133: "ij" LATIN SMALL LIGATURE IJ
+ /* 8 */ "\u0133",
+ };
+
+ /* Language pl: Polish */
+ private static final String[] LANGUAGE_pl = {
+ // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+ /* 0 */ "\u0105,\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101",
+ // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+ // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+ // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+ // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+ // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+ // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+ // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+ /* 1 */ "\u0119,\u00E8,\u00E9,\u00EA,\u00EB,\u0117,\u0113",
+ /* 2 */ null,
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+ /* 3 */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
+ /* 4 */ null,
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ /* 5 */ "\u015B,\u00DF,\u0161",
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+ /* 6 */ "\u0144,\u00F1",
+ // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+ // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+ // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+ /* 7 */ "\u0107,\u00E7,\u010D",
+ /* 8~ */
+ null, null, null, null,
+ /* ~11 */
+ // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
+ // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
+ // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+ /* 12 */ "\u017C,\u017A,\u017E",
+ /* 13 */ null,
+ // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
+ /* 14 */ "\u0142",
+ };
+
+ /* Language pt: Portuguese */
+ private static final String[] LANGUAGE_pt = {
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ // U+00AA: "ª" FEMININE ORDINAL INDICATOR
+ /* 0 */ "\u00E1,\u00E3,\u00E0,\u00E2,\u00E4,\u00E5,\u00E6,\u00AA",
+ // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+ // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+ // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+ // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+ // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+ // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+ // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+ /* 1 */ "\u00E9,\u00EA,\u00E8,\u0119,\u0117,\u0113,\u00EB",
+ // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+ // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+ // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+ // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+ // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+ /* 2 */ "\u00ED,\u00EE,\u00EC,\u00EF,\u012F,\u012B",
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+ // U+00BA: "º" MASCULINE ORDINAL INDICATOR
+ /* 3 */ "\u00F3,\u00F5,\u00F4,\u00F2,\u00F6,\u0153,\u00F8,\u014D,\u00BA",
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ /* 4 */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
+ /* 5 */ null,
+ /* 6 */ null,
+ // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+ // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+ // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+ /* 7 */ "\u00E7,\u010D,\u0107",
+ };
+
+ /* Language rm: Raeto-Romance */
+ private static final String[] LANGUAGE_rm = {
+ /* 0~ */
+ null, null, null,
+ /* ~2 */
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ /* 3 */ "\u00F2,\u00F3,\u00F6,\u00F4,\u00F5,\u0153,\u00F8",
+ };
+
+ /* Language ro: Romanian */
+ private static final String[] LANGUAGE_ro = {
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+0103: "ă" LATIN SMALL LETTER A WITH BREVE
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+ /* 0 */ "\u00E2,\u00E3,\u0103,\u00E0,\u00E1,\u00E4,\u00E6,\u00E5,\u0101",
+ /* 1 */ null,
+ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+ // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+ // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+ // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+ // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+ /* 2 */ "\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
+ /* 3 */ null,
+ /* 4 */ null,
+ // U+0219: "ș" LATIN SMALL LETTER S WITH COMMA BELOW
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ /* 5 */ "\u0219,\u00DF,\u015B,\u0161",
+ /* 6~ */
+ null, null, null, null, null,
+ /* ~10 */
+ // U+021B: "ț" LATIN SMALL LETTER T WITH COMMA BELOW
+ /* 11 */ "\u021B",
+ };
+
+ /* Language ru: Russian */
+ private static final String[] LANGUAGE_ru = {
+ /* 0~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null,
+ /* ~24 */
+ // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
+ /* 25 */ "\u0449",
+ // U+044B: "ы" CYRILLIC SMALL LETTER YERU
+ /* 26 */ "\u044B",
+ // U+0438: "и" CYRILLIC SMALL LETTER I
+ /* 27 */ "\u0438",
+ /* 28 */ null,
+ // U+0451: "ё" CYRILLIC SMALL LETTER IO
+ /* 29 */ "\u0451",
+ /* 30 */ null,
+ // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+ /* 31 */ "\u044A",
+ /* 32 */ null,
+ /* 33 */ null,
+ // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+ /* 34 */ "\u044A",
+ };
+
+ /* Language sk: Slovak */
+ private static final String[] LANGUAGE_sk = {
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
+ /* 0 */ "\u00E1,\u00E4,\u0101,\u00E0,\u00E2,\u00E3,\u00E5,\u00E6,\u0105",
+ // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+ // U+011B: "ě" LATIN SMALL LETTER E WITH CARON
+ // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+ // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+ // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+ // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+ // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+ // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+ /* 1 */ "\u00E9,\u011B,\u0113,\u0117,\u00E8,\u00EA,\u00EB,\u0119",
+ // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+ // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+ // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+ // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+ // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
+ /* 2 */ "\u00ED,\u012B,\u012F,\u00EC,\u00EE,\u00EF,\u0131",
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ /* 3 */ "\u00F4,\u00F3,\u00F6,\u00F2,\u00F5,\u0153,\u0151,\u00F8",
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
+ /* 4 */ "\u00FA,\u016F,\u00FC,\u016B,\u0173,\u00F9,\u00FB,\u0171",
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
+ /* 5 */ "\u0161,\u00DF,\u015B,\u015F",
+ // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
+ // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
+ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ /* 6 */ "\u0148,\u0146,\u00F1,\u0144,\u0144",
+ // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+ // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+ // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+ /* 7 */ "\u010D,\u00E7,\u0107",
+ // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+ // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+ /* 8 */ "\u00FD,\u00FF",
+ // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+ /* 9 */ "\u010F",
+ // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
+ // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+ // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
+ /* 10 */ "\u0155,\u0159,\u0157",
+ // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
+ // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
+ /* 11 */ "\u0165,\u0163",
+ // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+ // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
+ // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
+ /* 12 */ "\u017E,\u017C,\u017A",
+ // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
+ /* 13 */ "\u0137",
+ // U+013E: "ľ" LATIN SMALL LETTER L WITH CARON
+ // U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE
+ // U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA
+ // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
+ /* 14 */ "\u013E,\u013A,\u013C,\u0142",
+ // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
+ // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
+ /* 15 */ "\u0123,\u011F",
+ };
+
+ /* Language sl: Slovenian */
+ private static final String[] LANGUAGE_sl = {
+ /* 0~ */
+ null, null, null, null, null,
+ /* ~4 */
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ /* 5 */ "\u0161",
+ /* 6 */ null,
+ // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+ // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+ /* 7 */ "\u010D,\u0107",
+ /* 8 */ null,
+ // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
+ /* 9 */ "\u0111",
+ /* 10 */ null,
+ /* 11 */ null,
+ // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+ /* 12 */ "\u017E",
+ };
+
+ /* Language sr: Serbian */
+ private static final String[] LANGUAGE_sr = {
+ /* 0~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null,
+ /* ~34 */
+ // U+0437: "з" CYRILLIC SMALL LETTER ZE
+ /* 35 */ "\u0437",
+ // U+045B: "ћ" CYRILLIC SMALL LETTER TSHE
+ /* 36 */ "\u045B",
+ // U+0455: "ѕ" CYRILLIC SMALL LETTER DZE
+ /* 37 */ "\u0455",
+ // U+0452: "ђ" CYRILLIC SMALL LETTER DJE
+ /* 38 */ "\u0452",
+ // U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE
+ /* 39 */ "\u0450",
+ // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE
+ /* 40 */ "\u045D",
+ /* 41 */ null,
+ // U+2018: "‘" LEFT SINGLE QUOTATION MARK
+ // U+2019: "’" RIGHT SINGLE QUOTATION MARK
+ // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
+ // U+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK
+ // U+201C: "“" LEFT DOUBLE QUOTATION MARK
+ // U+201D: "”" RIGHT DOUBLE QUOTATION MARK
+ // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
+ // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. <string name="more_keys_for_double_quote">!fixedColumnOrder!6,&#x201E;,&#x201C;,&#x201D;,&#x201F;,&#x00AB;,&#x00BB;</string>
+ /* 42 */ "!fixedColumnOrder!5,\u201E,\u201C,\u201D,\u00AB,\u00BB",
+ // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
+ /* 43 */ "!fixedColumnOrder!5,\u201E,\u201C,\u201D,\u00AB,\u00BB,\u2018,\u2019,\u201A,\u201B",
+ };
+
+ /* Language sv: Swedish */
+ private static final String[] LANGUAGE_sv = {
+ /* 0 */ null,
+ // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+ // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+ // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+ // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+ // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+ /* 1 */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119",
+ /* 2 */ null,
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+ /* 3 */ "\u0153,\u00F4,\u00F2,\u00F3,\u00F5,\u014D",
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ /* 4 */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B",
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ /* 5 */ "\u00DF,\u015B,\u0161",
+ /* 6~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ /* ~19 */
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ /* 20 */ "\u00E5",
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ /* 21 */ "\u00F6",
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ /* 22 */ "\u00E4",
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ /* 23 */ "\u00F8",
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ /* 24 */ "\u00E6",
+ };
+
+ /* Language tr: Turkish */
+ private static final String[] LANGUAGE_tr = {
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ /* 0 */ "\u00E2",
+ /* 1 */ null,
+ // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
+ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+ // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+ // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+ // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+ // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+ /* 2 */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+ /* 3 */ "\u00F6,\u00F4,\u0153,\u00F2,\u00F3,\u00F5,\u00F8,\u014D",
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ /* 4 */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B",
+ // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ /* 5 */ "\u015F,\u00DF,\u015B,\u0161",
+ /* 6 */ null,
+ // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+ // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+ // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+ /* 7 */ "\u00E7,\u0107,\u010D",
+ /* 8~ */
+ null, null, null, null, null, null, null,
+ /* ~14 */
+ // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
+ /* 15 */ "\u011F",
+ };
+
+ /* Language uk: Ukrainian */
+ private static final String[] LANGUAGE_uk = {
+ /* 0~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null,
+ /* ~24 */
+ // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
+ /* 25 */ "\u0449",
+ // U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ /* 26 */ "\u0456",
+ // U+0438: "и" CYRILLIC SMALL LETTER I
+ /* 27 */ "\u0438",
+ /* 28~ */
+ null, null, null,
+ /* ~30 */
+ // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+ /* 31 */ "\u044A",
+ // U+0457: "ї" CYRILLIC SMALL LETTER YI
+ /* 32 */ "\u0457",
+ /* 33 */ null,
+ // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+ /* 34 */ "\u044A",
+ };
+
+ /* Language vi: Vietnamese */
+ private static final String[] LANGUAGE_vi = {
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+1EA3: "ả" LATIN SMALL LETTER A WITH HOOK ABOVE
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+1EA1: "ạ" LATIN SMALL LETTER A WITH DOT BELOW
+ // U+0103: "ă" LATIN SMALL LETTER A WITH BREVE
+ // U+1EB1: "ằ" LATIN SMALL LETTER A WITH BREVE AND GRAVE
+ // U+1EAF: "ắ" LATIN SMALL LETTER A WITH BREVE AND ACUTE
+ // U+1EB3: "ẳ" LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+ // U+1EB5: "ẵ" LATIN SMALL LETTER A WITH BREVE AND TILDE
+ // U+1EB7: "ặ" LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+1EA7: "ầ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+ // U+1EA5: "ấ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+ // U+1EA9: "ẩ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+ // U+1EAB: "ẫ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+ // U+1EAD: "ậ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+ /* 0 */ "\u00E0,\u00E1,\u1EA3,\u00E3,\u1EA1,\u0103,\u1EB1,\u1EAF,\u1EB3,\u1EB5,\u1EB7,\u00E2,\u1EA7,\u1EA5,\u1EA9,\u1EAB,\u1EAD",
+ // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+ // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+ // U+1EBB: "ẻ" LATIN SMALL LETTER E WITH HOOK ABOVE
+ // U+1EBD: "ẽ" LATIN SMALL LETTER E WITH TILDE
+ // U+1EB9: "ẹ" LATIN SMALL LETTER E WITH DOT BELOW
+ // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+ // U+1EC1: "ề" LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+ // U+1EBF: "ế" LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+ // U+1EC3: "ể" LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+ // U+1EC5: "ễ" LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+ // U+1EC7: "ệ" LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+ /* 1 */ "\u00E8,\u00E9,\u1EBB,\u1EBD,\u1EB9,\u00EA,\u1EC1,\u1EBF,\u1EC3,\u1EC5,\u1EC7",
+ // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+ // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ // U+1EC9: "ỉ" LATIN SMALL LETTER I WITH HOOK ABOVE
+ // U+0129: "ĩ" LATIN SMALL LETTER I WITH TILDE
+ // U+1ECB: "ị" LATIN SMALL LETTER I WITH DOT BELOW
+ /* 2 */ "\u00EC,\u00ED,\u1EC9,\u0129,\u1ECB",
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+1ECF: "ỏ" LATIN SMALL LETTER O WITH HOOK ABOVE
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+1ECD: "ọ" LATIN SMALL LETTER O WITH DOT BELOW
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+1ED3: "ồ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+ // U+1ED1: "ố" LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+ // U+1ED5: "ổ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+ // U+1ED7: "ỗ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+ // U+1ED9: "ộ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+ // U+01A1: "ơ" LATIN SMALL LETTER O WITH HORN
+ // U+1EDD: "ờ" LATIN SMALL LETTER O WITH HORN AND GRAVE
+ // U+1EDB: "ớ" LATIN SMALL LETTER O WITH HORN AND ACUTE
+ // U+1EDF: "ở" LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+ // U+1EE1: "ỡ" LATIN SMALL LETTER O WITH HORN AND TILDE
+ // U+1EE3: "ợ" LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+ /* 3 */ "\u00F2,\u00F3,\u1ECF,\u00F5,\u1ECD,\u00F4,\u1ED3,\u1ED1,\u1ED5,\u1ED7,\u1ED9,\u01A1,\u1EDD,\u1EDB,\u1EDF,\u1EE1,\u1EE3",
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+1EE7: "ủ" LATIN SMALL LETTER U WITH HOOK ABOVE
+ // U+0169: "ũ" LATIN SMALL LETTER U WITH TILDE
+ // U+1EE5: "ụ" LATIN SMALL LETTER U WITH DOT BELOW
+ // U+01B0: "ư" LATIN SMALL LETTER U WITH HORN
+ // U+1EEB: "ừ" LATIN SMALL LETTER U WITH HORN AND GRAVE
+ // U+1EE9: "ứ" LATIN SMALL LETTER U WITH HORN AND ACUTE
+ // U+1EED: "ử" LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+ // U+1EEF: "ữ" LATIN SMALL LETTER U WITH HORN AND TILDE
+ // U+1EF1: "ự" LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+ /* 4 */ "\u00F9,\u00FA,\u1EE7,\u0169,\u1EE5,\u01B0,\u1EEB,\u1EE9,\u1EED,\u1EEF,\u1EF1",
+ /* 5~ */
+ null, null, null,
+ /* ~7 */
+ // U+1EF3: "ỳ" LATIN SMALL LETTER Y WITH GRAVE
+ // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+ // U+1EF7: "ỷ" LATIN SMALL LETTER Y WITH HOOK ABOVE
+ // U+1EF9: "ỹ" LATIN SMALL LETTER Y WITH TILDE
+ // U+1EF5: "ỵ" LATIN SMALL LETTER Y WITH DOT BELOW
+ /* 8 */ "\u1EF3,\u00FD,\u1EF7,\u1EF9,\u1EF5",
+ // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
+ /* 9 */ "\u0111",
+ };
+
+ /* Language zz: No language */
+ private static final String[] LANGUAGE_zz = {
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+ // U+0103: "ă" LATIN SMALL LETTER A WITH BREVE
+ // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
+ // U+00AA: "ª" FEMININE ORDINAL INDICATOR
+ /* 0 */ "\u00E0,\u00E1,\u00E2,\u00E3,\u00E4,\u00E5,\u00E6,\u00E3,\u00E5,\u0101,\u0103,\u0105,\u00AA",
+ // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+ // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+ // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+ // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+ // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+ // U+0115: "ĕ" LATIN SMALL LETTER E WITH BREVE
+ // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+ // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+ // U+011B: "ě" LATIN SMALL LETTER E WITH CARON
+ /* 1 */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0113,\u0115,\u0117,\u0119,\u011B",
+ // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+ // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+ // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+ // U+0129: "ĩ" LATIN SMALL LETTER I WITH TILDE
+ // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+ // U+012D: "ĭ" LATIN SMALL LETTER I WITH BREVE
+ // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+ // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
+ // U+0133: "ij" LATIN SMALL LIGATURE IJ
+ /* 2 */ "\u00EC,\u00ED,\u00EE,\u00EF,\u0129,\u012B,\u012D,\u012F,\u0131,\u0133",
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+ // U+014F: "ŏ" LATIN SMALL LETTER O WITH BREVE
+ // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+00BA: "º" MASCULINE ORDINAL INDICATOR
+ /* 3 */ "\u00F2,\u00F3,\u00F4,\u00F5,\u00F6,\u00F8,\u014D,\u014F,\u0151,\u0153,\u00BA",
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+0169: "ũ" LATIN SMALL LETTER U WITH TILDE
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ // U+016D: "ŭ" LATIN SMALL LETTER U WITH BREVE
+ // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
+ // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
+ // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
+ /* 4 */ "\u00F9,\u00FA,\u00FB,\u00FC,\u0169,\u016B,\u016D,\u016F,\u0171,\u0173",
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ // U+015D: "ŝ" LATIN SMALL LETTER S WITH CIRCUMFLEX
+ // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ // U+017F: "ſ" LATIN SMALL LETTER LONG S
+ /* 5 */ "\u00DF,\u015B,\u015D,\u015F,\u0161,\u017F",
+ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
+ // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
+ // U+0149: "ʼn" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+ // U+014B: "ŋ" LATIN SMALL LETTER ENG
+ /* 6 */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B",
+ // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+ // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+ // U+0109: "ĉ" LATIN SMALL LETTER C WITH CIRCUMFLEX
+ // U+010B: "ċ" LATIN SMALL LETTER C WITH DOT ABOVE
+ // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+ /* 7 */ "\u00E7,\u0107,\u0109,\u010B,\u010D",
+ // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+ // U+0177: "ŷ" LATIN SMALL LETTER Y WITH CIRCUMFLEX
+ // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+ // U+0133: "ij" LATIN SMALL LIGATURE IJ
+ /* 8 */ "\u00FD,\u0177,\u00FF,\u0133",
+ // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+ // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
+ // U+00F0: "ð" LATIN SMALL LETTER ETH
+ /* 9 */ "\u010F,\u0111,\u00F0",
+ // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
+ // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
+ // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+ /* 10 */ "\u0155,\u0157,\u0159",
+ // U+00FE: "þ" LATIN SMALL LETTER THORN
+ // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
+ // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
+ // U+0167: "ŧ" LATIN SMALL LETTER T WITH STROKE
+ /* 11 */ "\u00FE,\u0163,\u0165,\u0167",
+ // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
+ // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
+ // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+ /* 12 */ "\u017A,\u017C,\u017E",
+ // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
+ // U+0138: "ĸ" LATIN SMALL LETTER KRA
+ /* 13 */ "\u0137,\u0138",
+ // U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE
+ // U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA
+ // U+013E: "ľ" LATIN SMALL LETTER L WITH CARON
+ // U+0140: "ŀ" LATIN SMALL LETTER L WITH MIDDLE DOT
+ // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
+ /* 14 */ "\u013A,\u013C,\u013E,\u0140,\u0142",
+ // U+011D: "ĝ" LATIN SMALL LETTER G WITH CIRCUMFLEX
+ // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
+ // U+0121: "ġ" LATIN SMALL LETTER G WITH DOT ABOVE
+ // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
+ /* 15 */ "\u011D,\u011F,\u0121,\u0123",
+ /* 16 */ null,
+ // U+0125: "ĥ" LATIN SMALL LETTER H WITH CIRCUMFLEX
+ /* 17 */ "\u0125",
+ // U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX
+ /* 18 */ "\u0135",
+ // U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX
+ /* 19 */ "\u0175",
+ };
+
+ private static final Object[] LANGUAGES_AND_LABELS = {
+ "DEFAULT", LANGUAGE_DEFAULT, /* default */
+ "ar", LANGUAGE_ar, /* Arabic */
+ "be", LANGUAGE_be, /* Belarusian */
+ "ca", LANGUAGE_ca, /* Catalan */
+ "cs", LANGUAGE_cs, /* Czech */
+ "da", LANGUAGE_da, /* Danish */
+ "de", LANGUAGE_de, /* German */
+ "en", LANGUAGE_en, /* English */
+ "es", LANGUAGE_es, /* Spanish */
+ "et", LANGUAGE_et, /* Estonian */
+ "fa", LANGUAGE_fa, /* Persian */
+ "fi", LANGUAGE_fi, /* Finnish */
+ "fr", LANGUAGE_fr, /* French */
+ "hi", LANGUAGE_hi, /* Hindi */
+ "hr", LANGUAGE_hr, /* Croatian */
+ "hu", LANGUAGE_hu, /* Hungarian */
+ "is", LANGUAGE_is, /* Icelandic */
+ "it", LANGUAGE_it, /* Italian */
+ "iw", LANGUAGE_iw, /* Hebrew */
+ "ky", LANGUAGE_ky, /* Kirghiz */
+ "lt", LANGUAGE_lt, /* Lithuanian */
+ "lv", LANGUAGE_lv, /* Latvian */
+ "mk", LANGUAGE_mk, /* Macedonian */
+ "nb", LANGUAGE_nb, /* Norwegian Bokmål */
+ "nl", LANGUAGE_nl, /* Dutch */
+ "pl", LANGUAGE_pl, /* Polish */
+ "pt", LANGUAGE_pt, /* Portuguese */
+ "rm", LANGUAGE_rm, /* Raeto-Romance */
+ "ro", LANGUAGE_ro, /* Romanian */
+ "ru", LANGUAGE_ru, /* Russian */
+ "sk", LANGUAGE_sk, /* Slovak */
+ "sl", LANGUAGE_sl, /* Slovenian */
+ "sr", LANGUAGE_sr, /* Serbian */
+ "sv", LANGUAGE_sv, /* Swedish */
+ "tr", LANGUAGE_tr, /* Turkish */
+ "uk", LANGUAGE_uk, /* Ukrainian */
+ "vi", LANGUAGE_vi, /* Vietnamese */
+ "zz", LANGUAGE_zz, /* No language */
+ };
+
+ static {
+ int id = 0;
+ for (final String name : NAMES) {
+ sNameToIdMap.put(name, id++);
+ }
+
+ for (int i = 0; i < LANGUAGES_AND_LABELS.length; i += 2) {
+ final String language = (String)LANGUAGES_AND_LABELS[i];
+ final String[] labels = (String[])LANGUAGES_AND_LABELS[i + 1];
+ sLocaleToLabelsMap.put(language, labels);
+ }
+ }
+}
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
index cc7540e4e..2d958e17d 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -17,11 +17,8 @@
package com.android.inputmethod.latin;
import android.content.Context;
-import android.content.res.AssetFileDescriptor;
-import android.content.res.Resources;
import com.android.inputmethod.keyboard.ProximityInfo;
-import com.android.inputmethod.latin.LocaleUtils.RunInLocale;
import java.util.Arrays;
import java.util.Locale;
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
index e4d839690..b0c2adc79 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
@@ -20,11 +20,8 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.AssetFileDescriptor;
-import android.content.res.Resources;
import android.util.Log;
-import com.android.inputmethod.latin.LocaleUtils.RunInLocale;
-
import java.io.File;
import java.util.ArrayList;
import java.util.Locale;
@@ -155,14 +152,8 @@ class BinaryDictionaryGetter {
* Returns a file address from a resource, or null if it cannot be opened.
*/
private static AssetFileAddress loadFallbackResource(final Context context,
- final int fallbackResId, final Locale locale) {
- final RunInLocale<AssetFileDescriptor> job = new RunInLocale<AssetFileDescriptor>() {
- @Override
- protected AssetFileDescriptor job(Resources res) {
- return res.openRawResourceFd(fallbackResId);
- }
- };
- final AssetFileDescriptor afd = job.runInLocale(context.getResources(), locale);
+ final int fallbackResId) {
+ final AssetFileDescriptor afd = context.getResources().openRawResourceFd(fallbackResId);
if (afd == null) {
Log.e(TAG, "Found the resource but cannot read it. Is it compressed? resId="
+ fallbackResId);
@@ -264,13 +255,13 @@ class BinaryDictionaryGetter {
* - Uses a content provider to get a public dictionary set, as per the protocol described
* in BinaryDictionaryFileDumper.
* If that fails:
- * - Gets a file name from the fallback resource passed as an argument.
+ * - Gets a file name from the built-in dictionary for this locale, if any.
* If that fails:
* - Returns null.
* @return The list of addresses of valid dictionary files, or null.
*/
public static ArrayList<AssetFileAddress> getDictionaryFiles(final Locale locale,
- final Context context, final int fallbackResId) {
+ final Context context) {
// cacheWordListsFromContentProvider returns the list of files it copied to local
// storage, but we don't really care about what was copied NOW: what we want is the
@@ -299,8 +290,9 @@ class BinaryDictionaryGetter {
}
if (!foundMainDict && dictPackSettings.isWordListActive(mainDictId)) {
- final AssetFileAddress fallbackAsset = loadFallbackResource(context, fallbackResId,
- locale);
+ final int fallbackResId =
+ DictionaryFactory.getMainDictionaryResourceId(context.getResources(), locale);
+ final AssetFileAddress fallbackAsset = loadFallbackResource(context, fallbackResId);
if (null != fallbackAsset) {
fileList.add(fallbackAsset);
}
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFactory.java b/java/src/com/android/inputmethod/latin/DictionaryFactory.java
index fedb45407..bf05f3bc3 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFactory.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFactory.java
@@ -21,8 +21,6 @@ import android.content.res.AssetFileDescriptor;
import android.content.res.Resources;
import android.util.Log;
-import com.android.inputmethod.latin.LocaleUtils.RunInLocale;
-
import java.io.File;
import java.util.ArrayList;
import java.util.LinkedList;
@@ -38,24 +36,22 @@ public class DictionaryFactory {
* Initializes a dictionary from a dictionary pack, with explicit flags.
*
* This searches for a content provider providing a dictionary pack for the specified
- * locale. If none is found, it falls back to using the resource passed as fallBackResId
- * as a dictionary.
+ * locale. If none is found, it falls back to the built-in dictionary - if any.
* @param context application context for reading resources
* @param locale the locale for which to create the dictionary
- * @param fallbackResId the id of the resource to use as a fallback if no pack is found
* @param useFullEditDistance whether to use the full edit distance in suggestions
* @return an initialized instance of DictionaryCollection
*/
public static DictionaryCollection createDictionaryFromManager(final Context context,
- final Locale locale, final int fallbackResId, final boolean useFullEditDistance) {
+ final Locale locale, final boolean useFullEditDistance) {
if (null == locale) {
Log.e(TAG, "No locale defined for dictionary");
- return new DictionaryCollection(createBinaryDictionary(context, fallbackResId, locale));
+ return new DictionaryCollection(createBinaryDictionary(context, locale));
}
final LinkedList<Dictionary> dictList = new LinkedList<Dictionary>();
final ArrayList<AssetFileAddress> assetFileList =
- BinaryDictionaryGetter.getDictionaryFiles(locale, context, fallbackResId);
+ BinaryDictionaryGetter.getDictionaryFiles(locale, context);
if (null != assetFileList) {
for (final AssetFileAddress f : assetFileList) {
final BinaryDictionary binaryDictionary =
@@ -77,17 +73,14 @@ public class DictionaryFactory {
* Initializes a dictionary from a dictionary pack, with default flags.
*
* This searches for a content provider providing a dictionary pack for the specified
- * locale. If none is found, it falls back to using the resource passed as fallBackResId
- * as a dictionary.
+ * locale. If none is found, it falls back to the built-in dictionary, if any.
* @param context application context for reading resources
* @param locale the locale for which to create the dictionary
- * @param fallbackResId the id of the resource to use as a fallback if no pack is found
* @return an initialized instance of DictionaryCollection
*/
public static DictionaryCollection createDictionaryFromManager(final Context context,
- final Locale locale, final int fallbackResId) {
- return createDictionaryFromManager(context, locale, fallbackResId,
- false /* useFullEditDistance */);
+ final Locale locale) {
+ return createDictionaryFromManager(context, locale, false /* useFullEditDistance */);
}
/**
@@ -98,16 +91,11 @@ public class DictionaryFactory {
* @return an initialized instance of BinaryDictionary
*/
protected static BinaryDictionary createBinaryDictionary(final Context context,
- final int resId, final Locale locale) {
+ final Locale locale) {
AssetFileDescriptor afd = null;
try {
- final RunInLocale<AssetFileDescriptor> job = new RunInLocale<AssetFileDescriptor>() {
- @Override
- protected AssetFileDescriptor job(Resources res) {
- return res.openRawResourceFd(resId);
- }
- };
- afd = job.runInLocale(context.getResources(), locale);
+ final int resId = getMainDictionaryResourceId(context.getResources(), locale);
+ afd = context.getResources().openRawResourceFd(resId);
if (afd == null) {
Log.e(TAG, "Found the resource but it is compressed. resId=" + resId);
return null;
@@ -123,7 +111,7 @@ public class DictionaryFactory {
return new BinaryDictionary(context, sourceDir, afd.getStartOffset(), afd.getLength(),
false /* useFullEditDistance */, locale);
} catch (android.content.res.Resources.NotFoundException e) {
- Log.e(TAG, "Could not find the resource. resId=" + resId);
+ Log.e(TAG, "Could not find the resource");
return null;
} finally {
if (null != afd) {
@@ -163,41 +151,31 @@ public class DictionaryFactory {
* @return whether a (non-placeholder) dictionary is available or not.
*/
public static boolean isDictionaryAvailable(Context context, Locale locale) {
- final RunInLocale<Boolean> job = new RunInLocale<Boolean>() {
- @Override
- protected Boolean job(Resources res) {
- final int resourceId = getMainDictionaryResourceId(res);
- final AssetFileDescriptor afd = res.openRawResourceFd(resourceId);
- final boolean hasDictionary = isFullDictionary(afd);
- try {
- if (null != afd) afd.close();
- } catch (java.io.IOException e) {
- /* Um, what can we do here exactly? */
- }
- return hasDictionary;
- }
- };
- return job.runInLocale(context.getResources(), locale);
+ final Resources res = context.getResources();
+ final int resourceId = getMainDictionaryResourceId(res, locale);
+ final AssetFileDescriptor afd = res.openRawResourceFd(resourceId);
+ final boolean hasDictionary = isFullDictionary(afd);
+ try {
+ if (null != afd) afd.close();
+ } catch (java.io.IOException e) {
+ /* Um, what can we do here exactly? */
+ }
+ return hasDictionary;
}
// TODO: Do not use the size of the dictionary as an unique dictionary ID.
public static Long getDictionaryId(final Context context, final Locale locale) {
- final RunInLocale<Long> job = new RunInLocale<Long>() {
- @Override
- protected Long job(Resources res) {
- final int resourceId = getMainDictionaryResourceId(res);
- final AssetFileDescriptor afd = res.openRawResourceFd(resourceId);
- final Long size = (afd != null && afd.getLength() > PLACEHOLDER_LENGTH)
- ? afd.getLength()
- : null;
- try {
- if (null != afd) afd.close();
- } catch (java.io.IOException e) {
- }
- return size;
- }
- };
- return job.runInLocale(context.getResources(), locale);
+ final Resources res = context.getResources();
+ final int resourceId = getMainDictionaryResourceId(res, locale);
+ final AssetFileDescriptor afd = res.openRawResourceFd(resourceId);
+ final Long size = (afd != null && afd.getLength() > PLACEHOLDER_LENGTH)
+ ? afd.getLength()
+ : null;
+ try {
+ if (null != afd) afd.close();
+ } catch (java.io.IOException e) {
+ }
+ return size;
}
// TODO: Find the Right Way to find out whether the resource is a placeholder or not.
@@ -214,13 +192,32 @@ public class DictionaryFactory {
return (afd != null && afd.getLength() > PLACEHOLDER_LENGTH);
}
+ private static final String DEFAULT_MAIN_DICT = "main";
+ private static final String MAIN_DICT_PREFIX = "main_";
+
/**
* Returns a main dictionary resource id
+ * @param locale dictionary locale
* @return main dictionary resource id
*/
- public static int getMainDictionaryResourceId(Resources res) {
- final String MAIN_DIC_NAME = "main";
- String packageName = LatinIME.class.getPackage().getName();
- return res.getIdentifier(MAIN_DIC_NAME, "raw", packageName);
+ public static int getMainDictionaryResourceId(Resources res, Locale locale) {
+ final String packageName = LatinIME.class.getPackage().getName();
+ int resId;
+
+ // Try to find main_language_country dictionary.
+ if (!locale.getCountry().isEmpty()) {
+ final String dictLanguageCountry = MAIN_DICT_PREFIX + locale.toString().toLowerCase();
+ if ((resId = res.getIdentifier(dictLanguageCountry, "raw", packageName)) != 0) {
+ return resId;
+ }
+ }
+
+ // Try to find main_language dictionary.
+ final String dictLanguage = MAIN_DICT_PREFIX + locale.getLanguage();
+ if ((resId = res.getIdentifier(dictLanguage, "raw", packageName)) != 0) {
+ return resId;
+ }
+
+ return res.getIdentifier(DEFAULT_MAIN_DICT, "raw", packageName);
}
}
diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
new file mode 100644
index 000000000..53e8b74de
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
@@ -0,0 +1,393 @@
+/*
+ * Copyright (C) 2012 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;
+
+import android.content.Context;
+import android.os.SystemClock;
+import android.util.Log;
+
+import com.android.inputmethod.keyboard.ProximityInfo;
+import com.android.inputmethod.latin.makedict.BinaryDictInputOutput;
+import com.android.inputmethod.latin.makedict.FusionDictionary;
+import com.android.inputmethod.latin.makedict.FusionDictionary.Node;
+import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.concurrent.locks.ReentrantLock;
+
+/**
+ * Abstract base class for an expandable dictionary that can be created and updated dynamically
+ * during runtime. When updated it automatically generates a new binary dictionary to handle future
+ * queries in native code. This binary dictionary is written to internal storage, and potentially
+ * shared across multiple ExpandableBinaryDictionary instances. Updates to each dictionary filename
+ * are controlled across multiple instances to ensure that only one instance can update the same
+ * dictionary at the same time.
+ */
+abstract public class ExpandableBinaryDictionary extends Dictionary {
+
+ /** Used for Log actions from this class */
+ private static final String TAG = ExpandableBinaryDictionary.class.getSimpleName();
+
+ /** Whether to print debug output to log */
+ private static boolean DEBUG = false;
+
+ /**
+ * The maximum length of a word in this dictionary. This is the same value as the binary
+ * dictionary.
+ */
+ protected static final int MAX_WORD_LENGTH = BinaryDictionary.MAX_WORD_LENGTH;
+
+ /**
+ * A static map of locks, each of which controls access to a single binary dictionary file. They
+ * ensure that only one instance can update the same dictionary at the same time. The key for
+ * this map is the filename and the value is the shared dictionary controller associated with
+ * that filename.
+ */
+ private static final HashMap<String, DictionaryController> sSharedDictionaryControllers =
+ new HashMap<String, DictionaryController>();
+
+ /** The application context. */
+ protected final Context mContext;
+
+ /**
+ * The binary dictionary generated dynamically from the fusion dictionary. This is used to
+ * answer unigram and bigram queries.
+ */
+ private BinaryDictionary mBinaryDictionary;
+
+ /** The expandable fusion dictionary used to generate the binary dictionary. */
+ private FusionDictionary mFusionDictionary;
+
+ /** The dictionary type id. */
+ public final int mDicTypeId;
+
+ /**
+ * The name of this dictionary, used as the filename for storing the binary dictionary. Multiple
+ * dictionary instances with the same filename is supported, with access controlled by
+ * DictionaryController.
+ */
+ private final String mFilename;
+
+ /** Controls access to the shared binary dictionary file across multiple instances. */
+ private final DictionaryController mSharedDictionaryController;
+
+ /** Controls access to the local binary dictionary for this instance. */
+ private final DictionaryController mLocalDictionaryController = new DictionaryController();
+
+ /**
+ * Abstract method for loading the unigrams and bigrams of a given dictionary in a background
+ * thread.
+ */
+ protected abstract void loadDictionaryAsync();
+
+ /**
+ * Gets the shared dictionary controller for the given filename.
+ */
+ private static synchronized DictionaryController getSharedDictionaryController(
+ String filename) {
+ DictionaryController controller = sSharedDictionaryControllers.get(filename);
+ if (controller == null) {
+ controller = new DictionaryController();
+ sSharedDictionaryControllers.put(filename, controller);
+ }
+ return controller;
+ }
+
+ /**
+ * Creates a new expandable binary dictionary.
+ *
+ * @param context The application context of the parent.
+ * @param filename The filename for this binary dictionary. Multiple dictionaries with the same
+ * filename is supported.
+ * @param dictType The type of this dictionary.
+ */
+ public ExpandableBinaryDictionary(
+ final Context context, final String filename, final int dictType) {
+ mDicTypeId = dictType;
+ mFilename = filename;
+ mContext = context;
+ mBinaryDictionary = null;
+ mSharedDictionaryController = getSharedDictionaryController(filename);
+ clearFusionDictionary();
+ }
+
+ /**
+ * Closes and cleans up the binary dictionary.
+ */
+ @Override
+ public void close() {
+ // Ensure that no other threads are accessing the local binary dictionary.
+ mLocalDictionaryController.lock();
+ try {
+ if (mBinaryDictionary != null) {
+ mBinaryDictionary.close();
+ mBinaryDictionary = null;
+ }
+ } finally {
+ mLocalDictionaryController.unlock();
+ }
+ }
+
+ /**
+ * Clears the fusion dictionary on the Java side. Note: Does not modify the binary dictionary on
+ * the native side.
+ */
+ public void clearFusionDictionary() {
+ mFusionDictionary = new FusionDictionary(new Node(), new FusionDictionary.DictionaryOptions(
+ new HashMap<String, String>(), false, false));
+ }
+
+ /**
+ * Adds a word unigram to the fusion dictionary. Call updateBinaryDictionary when all changes
+ * are done to update the binary dictionary.
+ */
+ // TODO: Create "cache dictionary" to cache fresh words for frequently updated dictionaries,
+ // considering performance regression.
+ protected void addWord(final String word, final int frequency) {
+ mFusionDictionary.add(word, frequency, null, null);
+ }
+
+ /**
+ * Sets a word bigram in the fusion dictionary. Call updateBinaryDictionary when all changes are
+ * done to update the binary dictionary.
+ */
+ // TODO: Create "cache dictionary" to cache fresh bigrams for frequently updated dictionaries,
+ // considering performance regression.
+ protected void setBigram(final String prevWord, final String word, final int frequency) {
+ mFusionDictionary.setBigram(prevWord, word, frequency);
+ }
+
+ @Override
+ public void getWords(final WordComposer codes, final WordCallback callback,
+ final ProximityInfo proximityInfo) {
+ asyncReloadDictionaryIfRequired();
+ getWordsInner(codes, callback, proximityInfo);
+ }
+
+ protected final void getWordsInner(final WordComposer codes, final WordCallback callback,
+ final ProximityInfo proximityInfo) {
+ // Ensure that there are no concurrent calls to getWords. If there are, do nothing and
+ // return.
+ if (mLocalDictionaryController.tryLock()) {
+ try {
+ if (mBinaryDictionary != null) {
+ mBinaryDictionary.getWords(codes, callback, proximityInfo);
+ }
+ } finally {
+ mLocalDictionaryController.unlock();
+ }
+ }
+ }
+
+ @Override
+ public void getBigrams(final WordComposer codes, final CharSequence previousWord,
+ final WordCallback callback) {
+ asyncReloadDictionaryIfRequired();
+ getBigramsInner(codes, previousWord, callback);
+ }
+
+ protected void getBigramsInner(final WordComposer codes, final CharSequence previousWord,
+ final WordCallback callback) {
+ if (mLocalDictionaryController.tryLock()) {
+ try {
+ if (mBinaryDictionary != null) {
+ mBinaryDictionary.getBigrams(codes, previousWord, callback);
+ }
+ } finally {
+ mLocalDictionaryController.unlock();
+ }
+ }
+ }
+
+ @Override
+ public boolean isValidWord(final CharSequence word) {
+ asyncReloadDictionaryIfRequired();
+ return isValidWordInner(word);
+ }
+
+ protected boolean isValidWordInner(final CharSequence word) {
+ if (mLocalDictionaryController.tryLock()) {
+ try {
+ if (mBinaryDictionary != null) {
+ return mBinaryDictionary.isValidWord(word);
+ }
+ } finally {
+ mLocalDictionaryController.unlock();
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Load the current binary dictionary from internal storage in a background thread. If no binary
+ * dictionary exists, this method will generate one.
+ */
+ protected void loadDictionary() {
+ mLocalDictionaryController.mLastUpdateRequestTime = SystemClock.uptimeMillis();
+ asyncReloadDictionaryIfRequired();
+ }
+
+ /**
+ * Loads the current binary dictionary from internal storage. Assumes the dictionary file
+ * exists.
+ */
+ protected void loadBinaryDictionary() {
+ if (DEBUG) {
+ Log.d(TAG, "Loading binary dictionary: request="
+ + mSharedDictionaryController.mLastUpdateRequestTime + " update="
+ + mSharedDictionaryController.mLastUpdateTime);
+ }
+
+ final File file = new File(mContext.getFilesDir(), mFilename);
+ final String filename = file.getAbsolutePath();
+ final long length = file.length();
+
+ // Build the new binary dictionary
+ final BinaryDictionary newBinaryDictionary =
+ new BinaryDictionary(mContext, filename, 0, length, true /* useFullEditDistance */,
+ null);
+
+ if (mBinaryDictionary != null) {
+ // Ensure all threads accessing the current dictionary have finished before swapping in
+ // the new one.
+ final BinaryDictionary oldBinaryDictionary = mBinaryDictionary;
+ mLocalDictionaryController.lock();
+ mBinaryDictionary = newBinaryDictionary;
+ mLocalDictionaryController.unlock();
+ oldBinaryDictionary.close();
+ } else {
+ mBinaryDictionary = newBinaryDictionary;
+ }
+ }
+
+ /**
+ * Generates and writes a new binary dictionary based on the contents of the fusion dictionary.
+ */
+ private void generateBinaryDictionary() {
+ if (DEBUG) {
+ Log.d(TAG, "Generating binary dictionary: request="
+ + mSharedDictionaryController.mLastUpdateRequestTime + " update="
+ + mSharedDictionaryController.mLastUpdateTime);
+ }
+
+ loadDictionaryAsync();
+
+ final File file = new File(mContext.getFilesDir(), mFilename);
+ FileOutputStream out = null;
+ try {
+ out = new FileOutputStream(file);
+ BinaryDictInputOutput.writeDictionaryBinary(out, mFusionDictionary, 1);
+ out.flush();
+ out.close();
+ clearFusionDictionary();
+ } catch (IOException e) {
+ Log.e(TAG, "IO exception while writing file: " + e);
+ } catch (UnsupportedFormatException e) {
+ Log.e(TAG, "Unsupported format: " + e);
+ } finally {
+ if (out != null) {
+ try {
+ out.close();
+ } catch (IOException e) {
+ // ignore
+ }
+ }
+ }
+ }
+
+ /**
+ * Sets whether or not the dictionary is out of date and requires a reload.
+ */
+ protected void setRequiresReload(final boolean reload) {
+ final long time = reload ? SystemClock.uptimeMillis() : 0;
+ mSharedDictionaryController.mLastUpdateRequestTime = time;
+ mLocalDictionaryController.mLastUpdateRequestTime = time;
+ if (DEBUG) {
+ Log.d(TAG, "Reload request: request=" + time + " update="
+ + mSharedDictionaryController.mLastUpdateTime);
+ }
+ }
+
+ /**
+ * Reloads the dictionary if required. Reload will occur asynchronously in a separate thread.
+ */
+ void asyncReloadDictionaryIfRequired() {
+ new AsyncReloadDictionaryTask().start();
+ }
+
+ /**
+ * Reloads the dictionary if required. Access is controlled on a per dictionary file basis and
+ * supports concurrent calls from multiple instances that share the same dictionary file.
+ */
+ protected final void syncReloadDictionaryIfRequired() {
+ if (mBinaryDictionary != null && !mLocalDictionaryController.isOutOfDate()) {
+ return;
+ }
+
+ // Ensure that only one thread attempts to read or write to the shared binary dictionary
+ // file at the same time.
+ mSharedDictionaryController.lock();
+ try {
+ final long time = SystemClock.uptimeMillis();
+ if (mSharedDictionaryController.isOutOfDate() || !dictionaryFileExists()) {
+ // If the shared dictionary file does not exist or is out of date, the first
+ // instance that acquires the lock will generate a new one.
+ mSharedDictionaryController.mLastUpdateTime = time;
+ mLocalDictionaryController.mLastUpdateTime = time;
+ generateBinaryDictionary();
+ loadBinaryDictionary();
+ } else if (mLocalDictionaryController.isOutOfDate()) {
+ // Otherwise, if only the local dictionary for this instance is out of date, load
+ // the shared dictionary from file.
+ mLocalDictionaryController.mLastUpdateTime = time;
+ loadBinaryDictionary();
+ }
+ } finally {
+ mSharedDictionaryController.unlock();
+ }
+ }
+
+ private boolean dictionaryFileExists() {
+ final File file = new File(mContext.getFilesDir(), mFilename);
+ return file.exists();
+ }
+
+ /**
+ * Thread class for asynchronously reloading and rewriting the binary dictionary.
+ */
+ private class AsyncReloadDictionaryTask extends Thread {
+ @Override
+ public void run() {
+ syncReloadDictionaryIfRequired();
+ }
+ }
+
+ /**
+ * Lock for controlling access to a given binary dictionary and for tracking whether the
+ * dictionary is out of date. Can be shared across multiple dictionary instances that access the
+ * same filename.
+ */
+ private static class DictionaryController extends ReentrantLock {
+ private volatile long mLastUpdateTime = 0;
+ private volatile long mLastUpdateRequestTime = 0;
+
+ private boolean isOutOfDate() {
+ return (mLastUpdateRequestTime > mLastUpdateTime);
+ }
+ }
+}
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index e0fa2f838..7cdeef897 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -493,37 +493,28 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
final String localeStr = mSubtypeSwitcher.getInputLocaleStr();
final Locale keyboardLocale = mSubtypeSwitcher.getInputLocale();
- final Context context = this;
- final RunInLocale<Void> job = new RunInLocale<Void>() {
- @Override
- protected Void job(Resources res) {
- final ContactsDictionary oldContactsDictionary;
- if (mSuggest != null) {
- oldContactsDictionary = mSuggest.getContactsDictionary();
- mSuggest.close();
- } else {
- oldContactsDictionary = null;
- }
+ final ContactsDictionary oldContactsDictionary;
+ if (mSuggest != null) {
+ oldContactsDictionary = mSuggest.getContactsDictionary();
+ mSuggest.close();
+ } else {
+ oldContactsDictionary = null;
+ }
- int mainDicResId = DictionaryFactory.getMainDictionaryResourceId(res);
- mSuggest = new Suggest(context, mainDicResId, keyboardLocale);
- if (mSettingsValues.mAutoCorrectEnabled) {
- mSuggest.setAutoCorrectionThreshold(mSettingsValues.mAutoCorrectionThreshold);
- }
+ mSuggest = new Suggest(this, keyboardLocale);
+ if (mSettingsValues.mAutoCorrectEnabled) {
+ mSuggest.setAutoCorrectionThreshold(mSettingsValues.mAutoCorrectionThreshold);
+ }
- mUserDictionary = new UserDictionary(context, localeStr);
- mSuggest.setUserDictionary(mUserDictionary);
- mIsUserDictionaryAvailable = mUserDictionary.isEnabled();
+ mUserDictionary = new UserDictionary(this, localeStr);
+ mSuggest.setUserDictionary(mUserDictionary);
+ mIsUserDictionaryAvailable = mUserDictionary.isEnabled();
- resetContactsDictionary(oldContactsDictionary);
+ resetContactsDictionary(oldContactsDictionary);
- mUserHistoryDictionary
- = new UserHistoryDictionary(context, localeStr, Suggest.DIC_USER_HISTORY);
- mSuggest.setUserHistoryDictionary(mUserHistoryDictionary);
- return null;
- }
- };
- job.runInLocale(mResources, keyboardLocale);
+ mUserHistoryDictionary = new UserHistoryDictionary(
+ this, localeStr, Suggest.DIC_USER_HISTORY);
+ mSuggest.setUserHistoryDictionary(mUserHistoryDictionary);
}
/**
@@ -559,9 +550,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
}
/* package private */ void resetSuggestMainDict() {
- final Locale keyboardLocale = mSubtypeSwitcher.getInputLocale();
- int mainDicResId = DictionaryFactory.getMainDictionaryResourceId(mResources);
- mSuggest.resetMainDict(this, mainDicResId, keyboardLocale);
+ mSuggest.resetMainDict(this, mSubtypeSwitcher.getInputLocale());
}
@Override
diff --git a/java/src/com/android/inputmethod/latin/SettingsValues.java b/java/src/com/android/inputmethod/latin/SettingsValues.java
index 49ab7f9d7..526acf128 100644
--- a/java/src/com/android/inputmethod/latin/SettingsValues.java
+++ b/java/src/com/android/inputmethod/latin/SettingsValues.java
@@ -97,7 +97,7 @@ public class SettingsValues {
}
}
final String[] suggestPuncsSpec = KeySpecParser.parseCsvString(
- res.getString(R.string.suggested_punctuations), res, R.string.english_ime_name);
+ res.getString(R.string.suggested_punctuations), null);
mSuggestPuncList = createSuggestPuncList(suggestPuncsSpec);
mSymbolsExcludedFromWordSeparators =
res.getString(R.string.symbols_excluded_from_word_separators);
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index fa6664b1a..c3f3bd598 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -104,8 +104,8 @@ public class Suggest implements Dictionary.WordCallback {
private static final int MINIMUM_SAFETY_NET_CHAR_LENGTH = 4;
- public Suggest(final Context context, final int dictionaryResId, final Locale locale) {
- initAsynchronously(context, dictionaryResId, locale);
+ public Suggest(final Context context, final Locale locale) {
+ initAsynchronously(context, locale);
}
/* package for test */ Suggest(final Context context, final File dictionary,
@@ -119,9 +119,8 @@ public class Suggest implements Dictionary.WordCallback {
addOrReplaceDictionary(mUnigramDictionaries, DICT_KEY_WHITELIST, mWhiteListDictionary);
}
- private void initAsynchronously(final Context context, final int dictionaryResId,
- final Locale locale) {
- resetMainDict(context, dictionaryResId, locale);
+ private void initAsynchronously(final Context context, final Locale locale) {
+ resetMainDict(context, locale);
// TODO: read the whitelist and init the pool asynchronously too.
// initPool should be done asynchronously now that the pool is thread-safe.
@@ -146,14 +145,13 @@ public class Suggest implements Dictionary.WordCallback {
}
}
- public void resetMainDict(final Context context, final int dictionaryResId,
- final Locale locale) {
+ public void resetMainDict(final Context context, final Locale locale) {
mMainDict = null;
new Thread("InitializeBinaryDictionary") {
@Override
public void run() {
final Dictionary newMainDict = DictionaryFactory.createDictionaryFromManager(
- context, locale, dictionaryResId);
+ context, locale);
mMainDict = newMainDict;
addOrReplaceDictionary(mUnigramDictionaries, DICT_KEY_MAIN, newMainDict);
addOrReplaceDictionary(mBigramDictionaries, DICT_KEY_MAIN, newMainDict);
diff --git a/java/src/com/android/inputmethod/latin/WhitelistDictionary.java b/java/src/com/android/inputmethod/latin/WhitelistDictionary.java
index 7bb307662..bb3ba8651 100644
--- a/java/src/com/android/inputmethod/latin/WhitelistDictionary.java
+++ b/java/src/com/android/inputmethod/latin/WhitelistDictionary.java
@@ -38,6 +38,7 @@ public class WhitelistDictionary extends ExpandableDictionary {
// TODO: Conform to the async load contact of ExpandableDictionary
public WhitelistDictionary(final Context context, final Locale locale) {
super(context, Suggest.DIC_WHITELIST);
+ // TODO: Move whitelist dictionary into main dictionary.
final RunInLocale<Void> job = new RunInLocale<Void>() {
@Override
protected Void job(Resources res) {
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
index 97296147f..576fbe696 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
@@ -386,10 +386,8 @@ public class AndroidSpellCheckerService extends SpellCheckerService
final int script = getScriptFromLocale(locale);
final ProximityInfo proximityInfo = ProximityInfo.createSpellCheckerProximityInfo(
SpellCheckerProximityInfo.getProximityForScript(script));
- final Resources resources = getResources();
- final int fallbackResourceId = DictionaryFactory.getMainDictionaryResourceId(resources);
final DictionaryCollection dictionaryCollection =
- DictionaryFactory.createDictionaryFromManager(this, locale, fallbackResourceId,
+ DictionaryFactory.createDictionaryFromManager(this, locale,
true /* useFullEditDistance */);
final String localeStr = locale.toString();
Dictionary userDictionary = mUserDictionaries.get(localeStr);