diff options
Diffstat (limited to 'java')
93 files changed, 983 insertions, 781 deletions
diff --git a/java/res/values-af/strings.xml b/java/res/values-af/strings.xml index 20c66c7a7..a74822c9e 100644 --- a/java/res/values-af/strings.xml +++ b/java/res/values-af/strings.xml @@ -118,10 +118,8 @@ <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_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Engels (VK) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Engels (VS) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Geen taal nie"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Geen taal (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Geen taal nie (QWERTZ)"</string> diff --git a/java/res/values-am/strings.xml b/java/res/values-am/strings.xml index 33fd6c6d6..32dedda37 100644 --- a/java/res/values-am/strings.xml +++ b/java/res/values-am/strings.xml @@ -118,10 +118,8 @@ <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_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"እንግሊዘኛ (ዩናይትድ ኪንግደም) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"እንግሊዘኛ (አሜሪካ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"ምንም ቋንቋ"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"ቋንቋ አልባ (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"ቋንቋ አልባ (QWERTZ)"</string> diff --git a/java/res/values-ar/strings.xml b/java/res/values-ar/strings.xml index 26aebc293..b525da397 100644 --- a/java/res/values-ar/strings.xml +++ b/java/res/values-ar/strings.xml @@ -118,10 +118,8 @@ <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_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"الإنجليزية (المملكة المتحدة) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"الإنجليزية (الولايات المتحدة) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"بدون لغة"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"بدون لغة (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"بدون لغة (QWERTZ)"</string> diff --git a/java/res/values-be/strings.xml b/java/res/values-be/strings.xml index 95e9a4bac..d58437c20 100644 --- a/java/res/values-be/strings.xml +++ b/java/res/values-be/strings.xml @@ -118,10 +118,8 @@ <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_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Англійская (Вялікабрытанія) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Англійская (ЗША) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Мова не выбрана"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Мова не выбрана (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Няма мовы (QWERTZ)"</string> diff --git a/java/res/values-bg/strings.xml b/java/res/values-bg/strings.xml index e45b88eda..bba08ee15 100644 --- a/java/res/values-bg/strings.xml +++ b/java/res/values-bg/strings.xml @@ -118,10 +118,8 @@ <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_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"английски (Великобр.) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"английски (САЩ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Без език"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Без език („QWERTY“)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Без език (QWERTZ)"</string> diff --git a/java/res/values-ca/strings.xml b/java/res/values-ca/strings.xml index 726f3e3eb..167a6d5b7 100644 --- a/java/res/values-ca/strings.xml +++ b/java/res/values-ca/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tema del teclat"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Anglès (Regne Unit)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Anglès (EUA)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Anglès (Regne Unit) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Anglès (Estats Units) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Cap idioma"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Cap idioma (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Cap idioma (QWERTZ)"</string> diff --git a/java/res/values-cs/strings.xml b/java/res/values-cs/strings.xml index 77a4ffa4c..8535fc1ab 100644 --- a/java/res/values-cs/strings.xml +++ b/java/res/values-cs/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Motiv klávesnice"</string> <string name="subtype_en_GB" msgid="88170601942311355">"angličtina (Spojené království)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"angličtina (USA)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"angličtina (VB) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"angličtina (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Žádný jazyk"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Žádný jazyk (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Žádný jazyk (QWERTZ)"</string> diff --git a/java/res/values-da/strings.xml b/java/res/values-da/strings.xml index 8dd946613..47619dc05 100644 --- a/java/res/values-da/strings.xml +++ b/java/res/values-da/strings.xml @@ -45,7 +45,7 @@ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Standard"</string> <string name="use_contacts_dict" msgid="4435317977804180815">"Foreslå navne på kontakter"</string> <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Brug navne fra Kontaktpersoner til forslag og rettelser"</string> - <string name="enable_span_insert" msgid="7204653105667167620">"Aktiver fornyet rettelse"</string> + <string name="enable_span_insert" msgid="7204653105667167620">"Aktivér fornyet rettelse"</string> <string name="enable_span_insert_summary" msgid="2947317657871394467">"Angiv forslag til fornyet rettelse"</string> <string name="auto_cap" msgid="1719746674854628252">"Skriv aut. med stort"</string> <string name="configure_dictionaries_title" msgid="4238652338556902049">"Tillægsordbøger"</string> @@ -113,15 +113,13 @@ <string name="select_language" msgid="3693815588777926848">"Inputsprog"</string> <string name="hint_add_to_dictionary" msgid="573678656946085380">"Tryk igen for at gemme"</string> <string name="has_dictionary" msgid="6071847973466625007">"Ordbog er tilgængelig"</string> - <string name="prefs_enable_log" msgid="6620424505072963557">"Aktiver brugerfeedback"</string> + <string name="prefs_enable_log" msgid="6620424505072963557">"Aktivér brugerfeedback"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Vær med til at forbedre denne inputmetode ved at sende anvendelsesstatistikker og rapporter om nedbrud til Google."</string> <string name="keyboard_layout" msgid="8451164783510487501">"Tastaturtema"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Engelsk (Storbritannien)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Engelsk (USA)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Engelsk (Storbritannien) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Engelsk (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Intet sprog"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Ingen sprog (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Intet sprog (QWERTZ)"</string> diff --git a/java/res/values-de/strings.xml b/java/res/values-de/strings.xml index 3db95b15b..de26c325d 100644 --- a/java/res/values-de/strings.xml +++ b/java/res/values-de/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tastaturdesign"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Englisch (Großbritannien)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Englisch (USA)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Englisch (GB) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Englisch (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Keine Sprache"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Keine Sprache (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Keine Sprache (QWERTZ)"</string> diff --git a/java/res/values-el/strings.xml b/java/res/values-el/strings.xml index 01f18fc78..131cb4a67 100644 --- a/java/res/values-el/strings.xml +++ b/java/res/values-el/strings.xml @@ -118,10 +118,8 @@ <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_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Αγγλικά (ΗΒ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Αγγλικά (ΗΠΑ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Καμία γλώσσα"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Καμία γλώσσα (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Καμία γλώσσα (QWERTZ)"</string> diff --git a/java/res/values-en-rGB/strings.xml b/java/res/values-en-rGB/strings.xml index 895e38868..2fd8b9b82 100644 --- a/java/res/values-en-rGB/strings.xml +++ b/java/res/values-en-rGB/strings.xml @@ -118,10 +118,8 @@ <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_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"English (UK) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"English (US) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"No language"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"No language (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"No language (QWERTZ)"</string> diff --git a/java/res/values-es-rUS/strings.xml b/java/res/values-es-rUS/strings.xml index b271725c1..b998e9074 100644 --- a/java/res/values-es-rUS/strings.xml +++ b/java/res/values-es-rUS/strings.xml @@ -118,10 +118,8 @@ <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_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Inglés (Reino Unido) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Inglés (EE.UU.) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Ningún idioma"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Ningún idioma (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Sin idioma (QWERTZ)"</string> diff --git a/java/res/values-es/strings.xml b/java/res/values-es/strings.xml index ef435ed94..488449960 100644 --- a/java/res/values-es/strings.xml +++ b/java/res/values-es/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tema de 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_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Inglés (Reino Unido) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Inglés (EE.UU.) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Ningún idioma"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Ningún idioma (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Ningún idioma (QWERTZ)"</string> diff --git a/java/res/values-et/strings.xml b/java/res/values-et/strings.xml index aee6407e7..1e1bba615 100644 --- a/java/res/values-et/strings.xml +++ b/java/res/values-et/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Klaviatuuri teema"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Inglise (UK)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Inglise (USA)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Inglise (UK) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Inglise (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Keel puudub"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Keel puudub (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Keel puudub (QWERTZ)"</string> diff --git a/java/res/values-fa/strings.xml b/java/res/values-fa/strings.xml index 5ba1cbf0f..9f8c915a6 100644 --- a/java/res/values-fa/strings.xml +++ b/java/res/values-fa/strings.xml @@ -122,10 +122,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"طرح زمینه صفحه کلید"</string> <string name="subtype_en_GB" msgid="88170601942311355">"انگیسی (UK)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"انگیسی (US)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"انگلیسی (انگلستان) ( <xliff:g id="LAYOUT">%s</xliff:g> )"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"انگلیسی (ایالات متحده) ( <xliff:g id="LAYOUT">%s</xliff:g> )"</string> <string name="subtype_no_language" msgid="141420857808801746">"زبانی موجود نیست"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"هیچ کدام از زبانها (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"هیچکدام از زبانها (QWERTZ)"</string> diff --git a/java/res/values-fi/strings.xml b/java/res/values-fi/strings.xml index a8eba545c..5ac436b1d 100644 --- a/java/res/values-fi/strings.xml +++ b/java/res/values-fi/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Näppäimistöteema"</string> <string name="subtype_en_GB" msgid="88170601942311355">"englanti (Iso-Britannia)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"englanti (Yhdysvallat)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"englanti (Iso-Britannia) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"englanti (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Ei kieltä"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Ei kieltä (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Ei kieltä (QWERTZ)"</string> diff --git a/java/res/values-fr/strings.xml b/java/res/values-fr/strings.xml index e365b018f..3f559c00b 100644 --- a/java/res/values-fr/strings.xml +++ b/java/res/values-fr/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Thème du clavier"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Anglais (Royaume-Uni)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Anglais (États-Unis)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Anglais (Royaume-Uni) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Anglais (États-Unis) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Aucune langue"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Pas de langue (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Aucune langue (QWERTZ)"</string> diff --git a/java/res/values-hi/strings.xml b/java/res/values-hi/strings.xml index d6f0b665e..6cbdf5668 100644 --- a/java/res/values-hi/strings.xml +++ b/java/res/values-hi/strings.xml @@ -71,9 +71,9 @@ <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_symbol_key" msgid="8516904117128967293">"?123"</string> - <string name="label_to_symbol_with_microphone_key" msgid="9035925553010061906">"123"</string> + <string name="label_to_alpha_key" msgid="4793983863798817523">"कखग"</string> + <string name="label_to_symbol_key" msgid="8516904117128967293">"?१२३"</string> + <string name="label_to_symbol_with_microphone_key" msgid="9035925553010061906">"१२३"</string> <string name="label_pause_key" msgid="181098308428035340">"रोकें"</string> <string name="label_wait_key" msgid="6402152600878093134">"प्रतीक्षा करें"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"ज़ोर से बोली गई पासवर्ड कुंजियां सुनने के लिए हेडसेट प्लग इन करें."</string> @@ -118,10 +118,8 @@ <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_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"अंग्रेज़ी (यूके) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"अंग्रेज़ी (यूएस) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"कोई भाषा नहीं"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"कोई भाषा नहीं (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"कोई भाषा नहीं (QWERTZ)"</string> diff --git a/java/res/values-hr/strings.xml b/java/res/values-hr/strings.xml index 256fe0c9d..8116146bc 100644 --- a/java/res/values-hr/strings.xml +++ b/java/res/values-hr/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tema tipkovnice"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Engleski (UK)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Engleski (SAD)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"engleski (UK) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"engleski (SAD) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Nema jezika"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Nema jezika (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Nema jezika (QWERTZ)"</string> diff --git a/java/res/values-hu/strings.xml b/java/res/values-hu/strings.xml index f0f298cf8..9d0182c8d 100644 --- a/java/res/values-hu/strings.xml +++ b/java/res/values-hu/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Billentyűzettéma"</string> <string name="subtype_en_GB" msgid="88170601942311355">"angol (brit)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"angol (amerikai)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"angol (brit) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"angol (amerikai) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Nincs nyelv"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Nincs nyelv (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Nincs nyelv (QWERTZ)"</string> diff --git a/java/res/values-in/strings.xml b/java/res/values-in/strings.xml index ac116ef6b..073eacb2f 100644 --- a/java/res/values-in/strings.xml +++ b/java/res/values-in/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tema keyboard"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Inggris (Inggris)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Inggris (AS)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Inggris (Inggris) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Inggris (AS) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Tidak ada bahasa"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Tanpa bahasa (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Tanpa bahasa (QWERTZ)"</string> diff --git a/java/res/values-it/strings.xml b/java/res/values-it/strings.xml index 48603f5de..c3d9ab134 100644 --- a/java/res/values-it/strings.xml +++ b/java/res/values-it/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tema della tastiera"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Inglese (UK)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Inglese (USA)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Inglese (Regno Unito) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Inglese (Stati Uniti) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Nessuna lingua"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Nessuna lingua (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Nessuna lingua (QWERTZ)"</string> diff --git a/java/res/values-iw/strings.xml b/java/res/values-iw/strings.xml index 6eb8d0fc9..6368f4c39 100644 --- a/java/res/values-iw/strings.xml +++ b/java/res/values-iw/strings.xml @@ -118,10 +118,8 @@ <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_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"אנגלית (בריטניה) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"אנגלית (ארה\"ב) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"ללא שפה"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"אין שפה (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"אין שפה (QWERTZ)"</string> diff --git a/java/res/values-ja/strings.xml b/java/res/values-ja/strings.xml index fbe67de78..684bceae7 100644 --- a/java/res/values-ja/strings.xml +++ b/java/res/values-ja/strings.xml @@ -68,7 +68,7 @@ <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>:保存しました"</string> <string name="label_go_key" msgid="1635148082137219148">"実行"</string> <string name="label_next_key" msgid="362972844525672568">"次へ"</string> - <string name="label_previous_key" msgid="1211868118071386787">"前"</string> + <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> @@ -118,10 +118,8 @@ <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_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"英語(英国)(<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"英語(米国)(<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"言語設定なし"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"言語設定なし(QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"言語設定なし(QWERTZ)"</string> diff --git a/java/res/values-ko/strings.xml b/java/res/values-ko/strings.xml index 93785d729..3e870492b 100644 --- a/java/res/values-ko/strings.xml +++ b/java/res/values-ko/strings.xml @@ -118,10 +118,8 @@ <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_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"영어(영국) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"영어(미국) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"언어가 없음"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"언어가 없음(QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"언어 없음(QWERTZ)"</string> diff --git a/java/res/values-lt/strings.xml b/java/res/values-lt/strings.xml index 49ac08f47..be6dd3a0c 100644 --- a/java/res/values-lt/strings.xml +++ b/java/res/values-lt/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Klaviatūros tema"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Anglų k. (JK)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Anglų k. (JAV)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Angliška (JK) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Angliška (JAV) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Kalbos nėra"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Nėra kalbos (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Nėra kalbos (QWERTZ)"</string> diff --git a/java/res/values-lv/strings.xml b/java/res/values-lv/strings.xml index 07724588a..86cb128c0 100644 --- a/java/res/values-lv/strings.xml +++ b/java/res/values-lv/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tastatūras motīvs"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Angļu valoda (Lielbritānija)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Angļu valoda (ASV)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Angļu (Lielbritānija) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Angļu (ASV) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Nav valodas"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Nav valodas (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Nav valodas (QWERTZ)"</string> diff --git a/java/res/values-ms/strings.xml b/java/res/values-ms/strings.xml index cd9a81876..e862f1ebb 100644 --- a/java/res/values-ms/strings.xml +++ b/java/res/values-ms/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tema papan kekunci"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Bahasa Inggeris (UK)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Bahasa Inggeris (AS)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Bahasa Inggeris (UK) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Bahasa Inggeris (AS) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Tiada bahasa"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Tiada bahasa (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Tiada bahasa (QWERTZ)"</string> diff --git a/java/res/values-nb/strings.xml b/java/res/values-nb/strings.xml index fc3ea0e90..ce1ebb9fa 100644 --- a/java/res/values-nb/strings.xml +++ b/java/res/values-nb/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tastaturtema"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Engelsk (Storbritannia)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Engelsk (USA)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Engelsk (Storbritannia) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Engelsk (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Ingen språk"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Ingen språk (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Ingen språk (QWERTZ)"</string> diff --git a/java/res/values-nl/strings.xml b/java/res/values-nl/strings.xml index 3a1aa4a9b..0c9a20a93 100644 --- a/java/res/values-nl/strings.xml +++ b/java/res/values-nl/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Toetsenbordthema"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Engels (GB)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Engels (VS)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Engels (VK) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Engels (VS) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Geen taal"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Geen taal (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Geen taal (QWERTZ)"</string> diff --git a/java/res/values-pl/strings.xml b/java/res/values-pl/strings.xml index cface965c..9a1a2ad43 100644 --- a/java/res/values-pl/strings.xml +++ b/java/res/values-pl/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Motyw klawiatury"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Angielska (Wielka Brytania)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Angielska (Stany Zjednoczone)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"angielski (UK) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"angielski (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Brak języka"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Brak języka (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Brak języka (QWERTZ)"</string> diff --git a/java/res/values-pt-rPT/strings.xml b/java/res/values-pt-rPT/strings.xml index 8fa997574..59404b8e8 100644 --- a/java/res/values-pt-rPT/strings.xml +++ b/java/res/values-pt-rPT/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tema do teclado"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Inglês (RU)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Inglês (EUA)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Inglês (RU) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Inglês (EUA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Nenhum idioma"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Nenhum idioma (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Nenhum idioma (QWERTZ)"</string> diff --git a/java/res/values-pt/strings.xml b/java/res/values-pt/strings.xml index bda486570..9fd58504c 100644 --- a/java/res/values-pt/strings.xml +++ b/java/res/values-pt/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tema do teclado"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Inglês (Reino Unido)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Inglês (EUA)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Inglês (Reino Unido) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Inglês (EUA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Sem idioma"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Nenhum idioma (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Nenhum idioma (QWERTZ)"</string> diff --git a/java/res/values-ro/strings.xml b/java/res/values-ro/strings.xml index 207aaa7a8..95d7793a3 100644 --- a/java/res/values-ro/strings.xml +++ b/java/res/values-ro/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Temă pentru tastatură"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Engleză (Marea Britanie)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Engleză (S.U.A.)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Engleză (Regatul Unit) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Engleză (S.U.A.) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Nicio limbă"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Nicio limbă (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Nicio limbă (QWERTZ)"</string> diff --git a/java/res/values-ru/strings.xml b/java/res/values-ru/strings.xml index 7ccc8f4db..246da3439 100644 --- a/java/res/values-ru/strings.xml +++ b/java/res/values-ru/strings.xml @@ -118,10 +118,8 @@ <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_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Английская (Великобр.) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Английская (США) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Язык не указан"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Язык не указан (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Язык не задан (QWERTZ)"</string> diff --git a/java/res/values-sk/strings.xml b/java/res/values-sk/strings.xml index 7066d8b9d..c0c8433ef 100644 --- a/java/res/values-sk/strings.xml +++ b/java/res/values-sk/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Motív klávesnice"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Anglická klávesnica (UK)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Anglická klávesnica (US)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"angličtina (VB) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"angličtina (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Žiadny jazyk"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Žiadny jazyk (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Žiadny jazyk (QWERTZ)"</string> diff --git a/java/res/values-sl/strings.xml b/java/res/values-sl/strings.xml index 1c5841d9b..9b5da7566 100644 --- a/java/res/values-sl/strings.xml +++ b/java/res/values-sl/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tema tipkovnice"</string> <string name="subtype_en_GB" msgid="88170601942311355">"angleščina (Združeno kraljestvo)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"angleščina (ZDA)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Angleška (VB) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Angleška (ZDA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Ni jezika"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Ni jezika (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Ni jezika (QWERTZ)"</string> diff --git a/java/res/values-sv/strings.xml b/java/res/values-sv/strings.xml index fb09889fd..9d247446d 100644 --- a/java/res/values-sv/strings.xml +++ b/java/res/values-sv/strings.xml @@ -118,10 +118,8 @@ <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_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Engelskt (brittiskt) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Engelskt (amerikanskt) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Inget språk"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Inget språk (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Inget språk (QWERTZ)"</string> diff --git a/java/res/values-sw/strings.xml b/java/res/values-sw/strings.xml index 0578dcb9a..e87a947bf 100644 --- a/java/res/values-sw/strings.xml +++ b/java/res/values-sw/strings.xml @@ -118,10 +118,8 @@ <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_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Kiingereza (Uingereza) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Kiingereza (Marekani) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Hakuna lugha"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Hakuna lugha (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Hakuna lugha (QWERTZ)"</string> diff --git a/java/res/values-tl/strings.xml b/java/res/values-tl/strings.xml index fb0d5e4d3..958eed356 100644 --- a/java/res/values-tl/strings.xml +++ b/java/res/values-tl/strings.xml @@ -118,10 +118,8 @@ <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_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Ingles (UK) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Ingles (US) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Walang wika"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Walang wika (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Walang wika (QWERTZ)"</string> diff --git a/java/res/values-uk/strings.xml b/java/res/values-uk/strings.xml index cb6d719b7..c6fed0449 100644 --- a/java/res/values-uk/strings.xml +++ b/java/res/values-uk/strings.xml @@ -118,10 +118,8 @@ <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_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Англійська (Великобр.) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Англійська (США) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Мову не вибрано"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Немає мови (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Без мови (QWERTZ)"</string> diff --git a/java/res/values-vi/strings.xml b/java/res/values-vi/strings.xml index abc586cd4..eff426b91 100644 --- a/java/res/values-vi/strings.xml +++ b/java/res/values-vi/strings.xml @@ -118,10 +118,8 @@ <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_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Tiếng Anh (Anh) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Tiếng Anh (Mỹ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Không có ngôn ngữ nào"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Không có ngôn ngữ (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"0 ngôn ngữ (QWERTZ)"</string> diff --git a/java/res/values-zh-rCN/strings.xml b/java/res/values-zh-rCN/strings.xml index ee1c3f5b8..d0e1df0e2 100644 --- a/java/res/values-zh-rCN/strings.xml +++ b/java/res/values-zh-rCN/strings.xml @@ -118,10 +118,8 @@ <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_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"英语(英国)(<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"英语(美国)(<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"无语言"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"无语言(QWERTY 键盘)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"无语言(QWERTZ 键盘)"</string> diff --git a/java/res/values-zh-rTW/strings.xml b/java/res/values-zh-rTW/strings.xml index 25ba4c3eb..4371b431f 100644 --- a/java/res/values-zh-rTW/strings.xml +++ b/java/res/values-zh-rTW/strings.xml @@ -118,10 +118,8 @@ <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_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"英文 (英國) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"英文 (美國) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"無語言"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"無語言 (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"無語言 (QWERTZ)"</string> diff --git a/java/res/values-zu/strings.xml b/java/res/values-zu/strings.xml index edbde7a38..7b1ba1405 100644 --- a/java/res/values-zu/strings.xml +++ b/java/res/values-zu/strings.xml @@ -118,10 +118,8 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Indikimba yekhibhodi"</string> <string name="subtype_en_GB" msgid="88170601942311355">"i-English(UK)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"i-English (US)"</string> - <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) --> - <skip /> - <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) --> - <skip /> + <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"I-English (UK) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> + <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"I-English (US) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string> <string name="subtype_no_language" msgid="141420857808801746">"Akunalimi"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Akunalimi (QWERTY)"</string> <string name="subtype_no_language_qwertz" msgid="1177848172397202890">"Alukho ulimi (QWERTZ)"</string> diff --git a/java/res/xml-sw600dp/key_dash.xml b/java/res/xml-sw600dp/key_dash.xml index a7c3727da..f7e0b3436 100644 --- a/java/res/xml-sw600dp/key_dash.xml +++ b/java/res/xml-sw600dp/key_dash.xml @@ -28,11 +28,21 @@ <Key latin:keyLabel="_" /> </case> + <case + latin:languageCode="ar|fa" + > + <!-- U+064B: "ً" ARABIC FATHATAN --> + <Key + latin:keyLabel="." + latin:keyHintLabel="ً" + latin:moreKeys="!text/more_keys_for_arabic_diacritics" + latin:keyStyle="hasShiftedLetterHintStyle" /> + </case> <default> <Key - latin:keyLabel="!text/keylabel_for_dash" - latin:keyHintLabel="!text/keyhintlabel_for_dash" - latin:moreKeys="!text/more_keys_for_dash" + latin:keyLabel="-" + latin:keyHintLabel="_" + latin:moreKeys="_" latin:keyStyle="hasShiftedLetterHintStyle" /> </default> </switch> diff --git a/java/res/xml-sw600dp/key_space.xml b/java/res/xml-sw600dp/key_space.xml index 234c80391..86af89f50 100644 --- a/java/res/xml-sw600dp/key_space.xml +++ b/java/res/xml-sw600dp/key_space.xml @@ -30,7 +30,7 @@ latin:keyStyle="languageSwitchKeyStyle" /> <Key latin:keyStyle="spaceKeyStyle" - latin:keyWidth="25.50%p" /> + latin:keyWidth="27.0%p" /> <Key latin:keyStyle="zwnjKeyStyle" /> </case> @@ -40,7 +40,7 @@ > <Key latin:keyStyle="spaceKeyStyle" - latin:keyWidth="34.00%p" /> + latin:keyWidth="36.0%p" /> <Key latin:keyStyle="zwnjKeyStyle" /> </case> @@ -51,13 +51,13 @@ latin:keyStyle="languageSwitchKeyStyle" /> <Key latin:keyStyle="spaceKeyStyle" - latin:keyWidth="34.00%p" /> + latin:keyWidth="36.0%p" /> </case> <!-- languageSwitchKeyEnabled="false" --> <default> <Key latin:keyStyle="spaceKeyStyle" - latin:keyWidth="42.50%p" /> + latin:keyWidth="45.0%p" /> </default> </switch> </merge> diff --git a/java/res/xml-sw600dp/keys_f1f2.xml b/java/res/xml-sw600dp/keys_f1f2.xml index 14b7231c9..9d2968720 100644 --- a/java/res/xml-sw600dp/keys_f1f2.xml +++ b/java/res/xml-sw600dp/keys_f1f2.xml @@ -27,7 +27,7 @@ > <Key latin:keyStyle="comKeyStyle" - latin:keyWidth="17.8%p" /> + latin:keyWidth="17.0%p" /> </case> <default> <switch> diff --git a/java/res/xml-sw600dp/row_dvorak4.xml b/java/res/xml-sw600dp/row_dvorak4.xml index 63ab8a835..ffc3427c5 100644 --- a/java/res/xml-sw600dp/row_dvorak4.xml +++ b/java/res/xml-sw600dp/row_dvorak4.xml @@ -22,22 +22,22 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Row - latin:keyWidth="8.9%p" + latin:keyWidth="9.0%p" > <Key latin:keyStyle="toSymbolKeyStyle" - latin:keyWidth="13.0%p" /> + latin:keyWidth="10.0%p" /> <include latin:keyboardLayout="@xml/keys_f1f2" /> <include - latin:keyXPos="30.750%p" + latin:keyXPos="28.0%p" latin:keyboardLayout="@xml/key_space" /> <include latin:keyboardLayout="@xml/key_question_exclamation" /> <include latin:keyboardLayout="@xml/key_dash" /> <include - latin:keyXPos="-10.00%p" + latin:keyXPos="-9.0%p" latin:keyWidth="fillRight" latin:keyboardLayout="@xml/key_shortcut" /> </Row> diff --git a/java/res/xml-sw600dp/row_hebrew4.xml b/java/res/xml-sw600dp/row_hebrew4.xml index 90441fba8..114a5cc16 100644 --- a/java/res/xml-sw600dp/row_hebrew4.xml +++ b/java/res/xml-sw600dp/row_hebrew4.xml @@ -22,20 +22,20 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <Key latin:keyStyle="toSymbolKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.0%p" /> <include latin:keyboardLayout="@xml/keys_f1f2" /> <include - latin:keyXPos="28.75%p" + latin:keyXPos="28.0%p" latin:keyboardLayout="@xml/key_space" /> <include latin:keyboardLayout="@xml/keys_comma_period" /> <include - latin:keyXPos="-8.5%p" + latin:keyXPos="-9.0%p" latin:keyWidth="fillRight" latin:keyboardLayout="@xml/key_shortcut" /> </Row> diff --git a/java/res/xml-sw600dp/row_qwerty4.xml b/java/res/xml-sw600dp/row_qwerty4.xml index 5008696fd..a4ba8a4c3 100644 --- a/java/res/xml-sw600dp/row_qwerty4.xml +++ b/java/res/xml-sw600dp/row_qwerty4.xml @@ -22,22 +22,22 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <Key latin:keyStyle="toSymbolKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.0%p" /> <include latin:keyboardLayout="@xml/keys_f1f2" /> <include - latin:keyXPos="28.75%p" + latin:keyXPos="28.0%p" latin:keyboardLayout="@xml/key_space" /> <include latin:keyboardLayout="@xml/key_apostrophe" /> <include latin:keyboardLayout="@xml/key_dash" /> <include - latin:keyXPos="-8.5%p" + latin:keyXPos="-9.0%p" latin:keyWidth="fillRight" latin:keyboardLayout="@xml/key_shortcut" /> </Row> diff --git a/java/res/xml-sw600dp/row_symbols4.xml b/java/res/xml-sw600dp/row_symbols4.xml index a4fe5faaa..20d1a7dff 100644 --- a/java/res/xml-sw600dp/row_symbols4.xml +++ b/java/res/xml-sw600dp/row_symbols4.xml @@ -22,17 +22,17 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <Key latin:keyStyle="toAlphaKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.0%p" /> <Key - latin:keyStyle="smileyKeyStyle" /> + latin:keyLabel="/" /> <Key latin:keyLabel="\@" /> <include - latin:keyXPos="28.75%p" + latin:keyXPos="28.0%p" latin:keyboardLayout="@xml/key_space" /> <Key latin:keyLabel=""" @@ -40,7 +40,7 @@ <Key latin:keyLabel="_" /> <include - latin:keyXPos="-8.5%p" + latin:keyXPos="-9.0%p" latin:keyWidth="fillRight" latin:keyboardLayout="@xml/key_shortcut" /> </Row> diff --git a/java/res/xml-sw600dp/row_symbols_shift4.xml b/java/res/xml-sw600dp/row_symbols_shift4.xml index ffb6e7fe5..fd7b37032 100644 --- a/java/res/xml-sw600dp/row_symbols_shift4.xml +++ b/java/res/xml-sw600dp/row_symbols_shift4.xml @@ -22,18 +22,16 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <Key latin:keyStyle="toAlphaKeyStyle" - latin:keyWidth="11.75%p" /> - <Key - latin:keyStyle="smileyKeyStyle" /> + latin:keyWidth="10.0%p" /> <include - latin:keyXPos="28.75%p" + latin:keyXPos="28.0%p" latin:keyboardLayout="@xml/key_space" /> <include - latin:keyXPos="-8.5%p" + latin:keyXPos="-9.0%p" latin:keyWidth="fillRight" latin:keyboardLayout="@xml/key_shortcut" /> </Row> diff --git a/java/res/xml-sw600dp/rowkeys_symbols3.xml b/java/res/xml-sw600dp/rowkeys_symbols3.xml index 4eb9618cf..4bfa0d730 100644 --- a/java/res/xml-sw600dp/rowkeys_symbols3.xml +++ b/java/res/xml-sw600dp/rowkeys_symbols3.xml @@ -48,10 +48,9 @@ latin:moreKeys="!text/more_keys_for_comma" /> <Key latin:keyLabel="." /> - <!-- U+00A1: "¡" INVERTED EXCLAMATION MARK --> <Key - latin:keyLabel="!" - latin:moreKeys="¡" /> + latin:keyLabel="!text/keylabel_for_symbols_exclamation" + latin:moreKeys="!text/more_keys_for_symbols_exclamation" /> <Key latin:keyLabel="!text/keylabel_for_symbols_question" latin:moreKeys="!text/more_keys_for_symbols_question" /> diff --git a/java/res/xml-sw600dp/rows_10_10_7_symbols.xml b/java/res/xml-sw600dp/rows_10_10_7_symbols.xml index d016eb8d0..44c967c04 100644 --- a/java/res/xml-sw600dp/rows_10_10_7_symbols.xml +++ b/java/res/xml-sw600dp/rows_10_10_7_symbols.xml @@ -26,34 +26,33 @@ <include latin:keyboardLayout="@xml/key_styles_currency" /> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_symbols1" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_symbols2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <Key latin:keyStyle="toMoreSymbolKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.0%p" /> <include latin:keyboardLayout="@xml/rowkeys_symbols3" /> <Key latin:keyStyle="toMoreSymbolKeyStyle" - latin:keyXPos="-11.75%p" latin:keyWidth="fillRight" /> </Row> <include diff --git a/java/res/xml-sw600dp/rows_10_10_7_symbols_shift.xml b/java/res/xml-sw600dp/rows_10_10_7_symbols_shift.xml index d4496b82f..3d3b59f22 100644 --- a/java/res/xml-sw600dp/rows_10_10_7_symbols_shift.xml +++ b/java/res/xml-sw600dp/rows_10_10_7_symbols_shift.xml @@ -26,34 +26,33 @@ <include latin:keyboardLayout="@xml/key_styles_currency" /> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_symbols_shift1" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_symbols_shift2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <Key latin:keyStyle="backFromMoreSymbolKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.0%p" /> <include latin:keyboardLayout="@xml/rowkeys_symbols_shift3" /> <Key latin:keyStyle="backFromMoreSymbolKeyStyle" - latin:keyXPos="-11.75%p" latin:keyWidth="fillRight" /> </Row> <include diff --git a/java/res/xml-sw600dp/rows_arabic.xml b/java/res/xml-sw600dp/rows_arabic.xml index bc21854c0..ec7c2ad96 100644 --- a/java/res/xml-sw600dp/rows_arabic.xml +++ b/java/res/xml-sw600dp/rows_arabic.xml @@ -24,29 +24,29 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="7.727%p" + latin:keyWidth="8.182%p" > <include latin:keyboardLayout="@xml/rowkeys_arabic1" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.727%p" + latin:keyWidth="8.182%p" > <include latin:keyboardLayout="@xml/rowkeys_arabic2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.727%p" + latin:keyWidth="8.182%p" > <include latin:keyboardLayout="@xml/rowkeys_arabic3" - latin:keyXPos="7.727%p" /> + latin:keyXPos="4.091%p" /> </Row> <include latin:keyboardLayout="@xml/row_qwerty4" /> diff --git a/java/res/xml-sw600dp/rows_azerty.xml b/java/res/xml-sw600dp/rows_azerty.xml index 137c654a8..824ee38f3 100644 --- a/java/res/xml-sw600dp/rows_azerty.xml +++ b/java/res/xml-sw600dp/rows_azerty.xml @@ -24,37 +24,36 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_azerty1" latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_azerty2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.0%p" /> <include latin:keyboardLayout="@xml/rowkeys_azerty3" /> <include latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyXPos="-11.75%p" latin:keyWidth="fillRight" /> </Row> <include diff --git a/java/res/xml-sw600dp/rows_bulgarian.xml b/java/res/xml-sw600dp/rows_bulgarian.xml index 682c72a0d..72532369c 100644 --- a/java/res/xml-sw600dp/rows_bulgarian.xml +++ b/java/res/xml-sw600dp/rows_bulgarian.xml @@ -24,37 +24,36 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="7.727%p" + latin:keyWidth="8.182%p" > <include latin:keyboardLayout="@xml/rowkeys_bulgarian1" latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.727%p" + latin:keyWidth="8.182%p" > <include latin:keyboardLayout="@xml/rowkeys_bulgarian2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.65%p" + latin:keyWidth="8.182%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.0%p" /> <include latin:keyboardLayout="@xml/rowkeys_bulgarian3" /> <include latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyXPos="-11.75%p" latin:keyWidth="fillRight" /> </Row> <include diff --git a/java/res/xml-sw600dp/rows_bulgarian_bds.xml b/java/res/xml-sw600dp/rows_bulgarian_bds.xml index 863296432..db6220e8e 100644 --- a/java/res/xml-sw600dp/rows_bulgarian_bds.xml +++ b/java/res/xml-sw600dp/rows_bulgarian_bds.xml @@ -24,30 +24,30 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="7.727%p" + latin:keyWidth="8.182%p" > <include latin:keyboardLayout="@xml/rowkeys_bulgarian_bds1" latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.727%p" + latin:keyWidth="8.182%p" > <include latin:keyboardLayout="@xml/rowkeys_bulgarian_bds2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.65%p" + latin:keyWidth="8.182%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.0%p" /> <include latin:keyboardLayout="@xml/rowkeys_bulgarian_bds3" /> <include diff --git a/java/res/xml-sw600dp/rows_colemak.xml b/java/res/xml-sw600dp/rows_colemak.xml index a94381893..f7e903bb5 100644 --- a/java/res/xml-sw600dp/rows_colemak.xml +++ b/java/res/xml-sw600dp/rows_colemak.xml @@ -24,7 +24,7 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_colemak1" @@ -33,30 +33,29 @@ latin:keyboardLayout="@xml/key_colemak_colon" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_colemak2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.0%p" /> <include latin:keyboardLayout="@xml/rowkeys_colemak3" /> <include latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyXPos="-11.75%p" latin:keyWidth="fillRight" /> </Row> <include diff --git a/java/res/xml-sw600dp/rows_dvorak.xml b/java/res/xml-sw600dp/rows_dvorak.xml index 83d1feece..2fa8eb205 100644 --- a/java/res/xml-sw600dp/rows_dvorak.xml +++ b/java/res/xml-sw600dp/rows_dvorak.xml @@ -24,7 +24,7 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/keys_dvorak_123" /> @@ -33,28 +33,27 @@ latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_dvorak2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.0%p" /> <include latin:keyboardLayout="@xml/rowkeys_dvorak3" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyXPos="-11.75%p" latin:keyWidth="fillRight" /> </Row> <include diff --git a/java/res/xml-sw600dp/rows_east_slavic.xml b/java/res/xml-sw600dp/rows_east_slavic.xml index 76a6cc364..309625516 100644 --- a/java/res/xml-sw600dp/rows_east_slavic.xml +++ b/java/res/xml-sw600dp/rows_east_slavic.xml @@ -24,30 +24,30 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="7.727%p" + latin:keyWidth="8.182%p" > <include latin:keyboardLayout="@xml/rowkeys_east_slavic1" latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.727%p" + latin:keyWidth="8.182%p" > <include latin:keyboardLayout="@xml/rowkeys_east_slavic2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.727%p" + latin:keyWidth="8.182%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.0%p" /> <include latin:keyboardLayout="@xml/rowkeys_east_slavic3" /> <include diff --git a/java/res/xml-sw600dp/rows_farsi.xml b/java/res/xml-sw600dp/rows_farsi.xml index 9daba6d0a..1ce658648 100644 --- a/java/res/xml-sw600dp/rows_farsi.xml +++ b/java/res/xml-sw600dp/rows_farsi.xml @@ -24,31 +24,31 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="7.727%p" + latin:keyWidth="8.182%p" > <include latin:keyboardLayout="@xml/rowkeys_farsi1" /> </Row> <Row - latin:keyWidth="7.727%p" + latin:keyWidth="8.182%p" > <include latin:keyboardLayout="@xml/rowkeys_farsi2" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.727%p" + latin:keyWidth="8.182%p" > <include latin:keyboardLayout="@xml/rowkeys_farsi3" - latin:keyXPos="7.727%p" /> + latin:keyXPos="4.091%p" /> <include latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <include latin:keyboardLayout="@xml/row_qwerty4" /> diff --git a/java/res/xml-sw600dp/rows_georgian.xml b/java/res/xml-sw600dp/rows_georgian.xml index 89ef09f66..61d3eb05a 100644 --- a/java/res/xml-sw600dp/rows_georgian.xml +++ b/java/res/xml-sw600dp/rows_georgian.xml @@ -24,38 +24,37 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_georgian1" latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_georgian2" - latin:keyXPos="5.875%p" /> + latin:keyXPos="4.5%p" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.0%p" /> <include latin:keyboardLayout="@xml/rowkeys_georgian3" /> <include latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyXPos="-11.75%p" latin:keyWidth="fillRight" /> </Row> <include diff --git a/java/res/xml-sw600dp/rows_greek.xml b/java/res/xml-sw600dp/rows_greek.xml index 24cbd6289..6a10228fb 100644 --- a/java/res/xml-sw600dp/rows_greek.xml +++ b/java/res/xml-sw600dp/rows_greek.xml @@ -24,7 +24,7 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/key_greek_semicolon" /> @@ -33,31 +33,30 @@ latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_greek2" - latin:keyXPos="5.875%p" /> + latin:keyXPos="4.5%p" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.0%p" /> <include latin:keyboardLayout="@xml/rowkeys_greek3" /> <include latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyXPos="-11.75%p" latin:keyWidth="fillRight" /> </Row> <include diff --git a/java/res/xml-sw600dp/rows_hebrew.xml b/java/res/xml-sw600dp/rows_hebrew.xml index 0a7bdf165..f9e6f51ab 100644 --- a/java/res/xml-sw600dp/rows_hebrew.xml +++ b/java/res/xml-sw600dp/rows_hebrew.xml @@ -24,7 +24,7 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/key_apostrophe" /> @@ -34,23 +34,23 @@ latin:keyboardLayout="@xml/rowkeys_hebrew1" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_hebrew2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_hebrew3" - latin:keyXPos="11.75%p" /> + latin:keyXPos="10.0%p" /> </Row> <include latin:keyboardLayout="@xml/row_hebrew4" /> diff --git a/java/res/xml-sw600dp/rows_hindi.xml b/java/res/xml-sw600dp/rows_hindi.xml index 267e96fc9..967846519 100644 --- a/java/res/xml-sw600dp/rows_hindi.xml +++ b/java/res/xml-sw600dp/rows_hindi.xml @@ -24,30 +24,30 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="7.727%p" + latin:keyWidth="8.182%p" > <include latin:keyboardLayout="@xml/rowkeys_hindi1" latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.727%p" + latin:keyWidth="8.182%p" > <include latin:keyboardLayout="@xml/rowkeys_hindi2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.727%p" + latin:keyWidth="8.182%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.0%p" /> <include latin:keyboardLayout="@xml/rowkeys_hindi3" /> <include diff --git a/java/res/xml-sw600dp/rows_nordic.xml b/java/res/xml-sw600dp/rows_nordic.xml index 93373b637..43144030f 100644 --- a/java/res/xml-sw600dp/rows_nordic.xml +++ b/java/res/xml-sw600dp/rows_nordic.xml @@ -24,39 +24,39 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="7.727%p" + latin:keyWidth="8.182%p" > <include latin:keyboardLayout="@xml/rowkeys_nordic1" latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.727%p" + latin:keyWidth="8.182%p" > <include latin:keyboardLayout="@xml/rowkeys_nordic2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.727%p" + latin:keyWidth="8.182%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.0%p" /> <Spacer - latin:keyWidth="3.479%p" /> + latin:keyWidth="3.181%p" /> <include latin:keyboardLayout="@xml/rowkeys_qwerty3" /> <include latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyXPos="-11.75%p" + latin:keyXPos="-10.0%p" latin:keyWidth="fillRight" /> </Row> <include diff --git a/java/res/xml-sw600dp/rows_pcqwerty.xml b/java/res/xml-sw600dp/rows_pcqwerty.xml index 0c74114fd..fa6080a19 100644 --- a/java/res/xml-sw600dp/rows_pcqwerty.xml +++ b/java/res/xml-sw600dp/rows_pcqwerty.xml @@ -30,7 +30,7 @@ latin:keyboardLayout="@xml/rowkeys_pcqwerty1" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="7.0%p" @@ -52,7 +52,7 @@ latin:keyboardLayout="@xml/rowkeys_pcqwerty3" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="7.0%p" diff --git a/java/res/xml-sw600dp/rows_pcqwerty_symbols.xml b/java/res/xml-sw600dp/rows_pcqwerty_symbols.xml index dd8df4e09..5e1aa6382 100644 --- a/java/res/xml-sw600dp/rows_pcqwerty_symbols.xml +++ b/java/res/xml-sw600dp/rows_pcqwerty_symbols.xml @@ -32,7 +32,7 @@ latin:keyboardLayout="@xml/rowkeys_pcqwerty1" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="7.0%p" @@ -53,7 +53,7 @@ latin:keyboardLayout="@xml/rowkeys_pcqwerty3" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="7.0%p" diff --git a/java/res/xml-sw600dp/rows_qwerty.xml b/java/res/xml-sw600dp/rows_qwerty.xml index 29aea3fdc..bac02fd9a 100644 --- a/java/res/xml-sw600dp/rows_qwerty.xml +++ b/java/res/xml-sw600dp/rows_qwerty.xml @@ -24,38 +24,37 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_qwerty1" latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_qwerty2" - latin:keyXPos="5.875%p" /> + latin:keyXPos="4.5%p" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.0%p" /> <include latin:keyboardLayout="@xml/rowkeys_qwerty3" /> <include latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyXPos="-11.75%p" latin:keyWidth="fillRight" /> </Row> <include diff --git a/java/res/xml-sw600dp/rows_qwertz.xml b/java/res/xml-sw600dp/rows_qwertz.xml index abbc7db89..98ddd0843 100644 --- a/java/res/xml-sw600dp/rows_qwertz.xml +++ b/java/res/xml-sw600dp/rows_qwertz.xml @@ -24,38 +24,37 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_qwertz1" latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_qwerty2" - latin:keyXPos="5.875%p" /> + latin:keyXPos="4.5%p" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.0%p" /> <include latin:keyboardLayout="@xml/rowkeys_qwertz3" /> <include latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyXPos="-11.75%p" latin:keyWidth="fillRight" /> </Row> <include diff --git a/java/res/xml-sw600dp/rows_south_slavic.xml b/java/res/xml-sw600dp/rows_south_slavic.xml index 68d86a9a2..e53a2ee92 100644 --- a/java/res/xml-sw600dp/rows_south_slavic.xml +++ b/java/res/xml-sw600dp/rows_south_slavic.xml @@ -24,30 +24,30 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="7.727%p" + latin:keyWidth="8.182%p" > <include latin:keyboardLayout="@xml/rowkeys_south_slavic1" latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.727%p" + latin:keyWidth="8.182%p" > <include latin:keyboardLayout="@xml/rowkeys_south_slavic2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.727%p" + latin:keyWidth="8.182%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.0%p" /> <include latin:keyboardLayout="@xml/rowkeys_south_slavic3" /> <include diff --git a/java/res/xml-sw600dp/rows_spanish.xml b/java/res/xml-sw600dp/rows_spanish.xml index 8c965b2ff..b48ee0155 100644 --- a/java/res/xml-sw600dp/rows_spanish.xml +++ b/java/res/xml-sw600dp/rows_spanish.xml @@ -24,37 +24,36 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_qwerty1" latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_spanish2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.0%p" /> <include latin:keyboardLayout="@xml/rowkeys_qwerty3" /> <include latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyXPos="-11.75%p" latin:keyWidth="fillRight" /> </Row> <include diff --git a/java/res/xml-sw600dp/rows_symbols.xml b/java/res/xml-sw600dp/rows_symbols.xml index 57ec70de1..3d0593dab 100644 --- a/java/res/xml-sw600dp/rows_symbols.xml +++ b/java/res/xml-sw600dp/rows_symbols.xml @@ -26,35 +26,34 @@ <include latin:keyboardLayout="@xml/key_styles_currency" /> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_symbols1" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_symbols2" - latin:keyXPos="5.875%p" /> + latin:keyXPos="4.5%p" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <Key latin:keyStyle="toMoreSymbolKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.0%p" /> <include latin:keyboardLayout="@xml/rowkeys_symbols3" /> <Key latin:keyStyle="toMoreSymbolKeyStyle" - latin:keyXPos="-11.75%p" latin:keyWidth="fillRight" /> </Row> <include diff --git a/java/res/xml-sw600dp/rows_symbols_shift.xml b/java/res/xml-sw600dp/rows_symbols_shift.xml index c46661ec7..0050c0c15 100644 --- a/java/res/xml-sw600dp/rows_symbols_shift.xml +++ b/java/res/xml-sw600dp/rows_symbols_shift.xml @@ -26,35 +26,34 @@ <include latin:keyboardLayout="@xml/key_styles_currency" /> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_symbols_shift1" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <include latin:keyboardLayout="@xml/rowkeys_symbols_shift2" - latin:keyXPos="5.875%p" /> + latin:keyXPos="4.5%p" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="9.0%p" > <Key latin:keyStyle="backFromMoreSymbolKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.0%p" /> <include latin:keyboardLayout="@xml/rowkeys_symbols_shift3" /> <Key latin:keyStyle="backFromMoreSymbolKeyStyle" - latin:keyXPos="-11.75%p" latin:keyWidth="fillRight" /> </Row> <include diff --git a/java/res/xml-sw600dp/rows_thai.xml b/java/res/xml-sw600dp/rows_thai.xml index c387081a3..c1fe55b39 100644 --- a/java/res/xml-sw600dp/rows_thai.xml +++ b/java/res/xml-sw600dp/rows_thai.xml @@ -24,38 +24,38 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="7.354%p" + latin:keyWidth="7.5%p" > <include latin:keyboardLayout="@xml/rowkeys_thai1" - latin:keyXPos="4.396%p" /> + latin:keyXPos="3.75%p" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.354%p" + latin:keyWidth="7.5%p" > <include latin:keyboardLayout="@xml/rowkeys_thai2" latin:keyXPos="0.719%p" /> </Row> <Row - latin:keyWidth="7.354%p" + latin:keyWidth="7.5%p" > <include latin:keyboardLayout="@xml/rowkeys_thai3" - latin:keyXPos="4.396%p" /> + latin:keyXPos="3.75%p" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.354%p" + latin:keyWidth="7.5%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.0%p" /> <include latin:keyboardLayout="@xml/rowkeys_thai4" /> <include diff --git a/java/res/xml/key_styles_common.xml b/java/res/xml/key_styles_common.xml index 6b64985a6..819cdc6a9 100644 --- a/java/res/xml/key_styles_common.xml +++ b/java/res/xml/key_styles_common.xml @@ -201,7 +201,6 @@ <key-style latin:styleName="punctuationKeyStyle" latin:keyLabel="." - latin:keyHintLabel="!text/keyhintlabel_for_punctuation" latin:keyLabelFlags="hasPopupHint" latin:moreKeys="!text/more_keys_for_punctuation" latin:backgroundType="functional" /> diff --git a/java/res/xml/row_qwerty4.xml b/java/res/xml/row_qwerty4.xml index 678034960..ecb95e7a5 100644 --- a/java/res/xml/row_qwerty4.xml +++ b/java/res/xml/row_qwerty4.xml @@ -32,8 +32,23 @@ <include latin:keyXPos="25%p" latin:keyboardLayout="@xml/key_space" /> - <Key - latin:keyStyle="punctuationKeyStyle" /> + <switch> + <case + latin:languageCode="ar|fa" + > + <!-- U+064B: "ً" ARABIC FATHATAN --> + <Key + latin:keyLabel="." + latin:keyHintLabel="ً" + latin:keyLabelFlags="hasPopupHint|hasShiftedLetterHint" + latin:moreKeys="!text/more_keys_for_arabic_diacritics" + latin:backgroundType="functional" /> + </case> + <default> + <Key + latin:keyStyle="punctuationKeyStyle" /> + </default> + </switch> <Key latin:keyStyle="enterKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml/rowkeys_symbols3.xml b/java/res/xml/rowkeys_symbols3.xml index 0518c1954..2b2d9a4ea 100644 --- a/java/res/xml/rowkeys_symbols3.xml +++ b/java/res/xml/rowkeys_symbols3.xml @@ -21,10 +21,9 @@ <merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > - <!-- U+00A1: "¡" INVERTED EXCLAMATION MARK --> <Key - latin:keyLabel="!" - latin:moreKeys="¡" /> + latin:keyLabel="!text/keylabel_for_symbols_exclamation" + latin:moreKeys="!text/more_keys_for_symbols_exclamation" /> <Key latin:keyLabel=""" latin:moreKeys="!text/more_keys_for_double_quote" /> diff --git a/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java b/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java index d7cd8e23a..955cb4c42 100644 --- a/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java +++ b/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java @@ -90,6 +90,7 @@ public class AccessibilityEntityProvider extends AccessibilityNodeProviderCompat final AccessibilityEvent event = AccessibilityEvent.obtain(eventType); event.setPackageName(mKeyboardView.getContext().getPackageName()); event.setClassName(key.getClass().getName()); + event.setContentDescription(keyDescription); event.setEnabled(true); final AccessibilityRecordCompat record = new AccessibilityRecordCompat(event); @@ -158,12 +159,12 @@ public class AccessibilityEntityProvider extends AccessibilityNodeProviderCompat info = AccessibilityNodeInfoCompat.obtain(); info.setPackageName(mKeyboardView.getContext().getPackageName()); info.setClassName(key.getClass().getName()); + info.setContentDescription(keyDescription); info.setBoundsInParent(boundsInParent); info.setBoundsInScreen(boundsInScreen); info.setParent(mKeyboardView); info.setSource(mKeyboardView, virtualViewId); info.setBoundsInScreen(boundsInScreen); - info.setText(keyDescription); info.setEnabled(true); } diff --git a/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java b/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java index ba814e390..34817ba4e 100644 --- a/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java +++ b/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java @@ -23,6 +23,7 @@ import android.support.v4.view.ViewCompat; import android.support.v4.view.accessibility.AccessibilityEventCompat; import android.view.MotionEvent; import android.view.View; +import android.view.ViewConfiguration; import android.view.accessibility.AccessibilityEvent; import com.android.inputmethod.keyboard.Key; @@ -41,6 +42,12 @@ public class AccessibleKeyboardViewProxy extends AccessibilityDelegateCompat { private Key mLastHoverKey = null; + /** + * Inset in pixels to look for keys when the user's finger exits the + * keyboard area. See {@link ViewConfiguration#getScaledEdgeSlop()}. + */ + private int mEdgeSlop; + public static void init(InputMethodService inputMethod) { sInstance.initInternal(inputMethod); } @@ -55,6 +62,7 @@ public class AccessibleKeyboardViewProxy extends AccessibilityDelegateCompat { private void initInternal(InputMethodService inputMethod) { mInputMethod = inputMethod; + mEdgeSlop = ViewConfiguration.get(inputMethod).getScaledEdgeSlop(); } /** @@ -108,8 +116,14 @@ public class AccessibleKeyboardViewProxy extends AccessibilityDelegateCompat { mLastHoverKey = key; switch (event.getAction()) { - case MotionEvent.ACTION_HOVER_ENTER: case MotionEvent.ACTION_HOVER_EXIT: + // Make sure we're not getting an EXIT event because the user slid + // off the keyboard area, then force a key press. + if (pointInView(x, y)) { + tracker.onRegisterKey(key); + } + //$FALL-THROUGH$ + case MotionEvent.ACTION_HOVER_ENTER: return onHoverKey(key, event); case MotionEvent.ACTION_HOVER_MOVE: if (key != previousKey) { @@ -123,6 +137,20 @@ public class AccessibleKeyboardViewProxy extends AccessibilityDelegateCompat { } /** + * Utility method to determine whether the given point, in local + * coordinates, is inside the view, where the area of the view is contracted + * by the edge slop factor. + * + * @param localX The local x-coordinate. + * @param localY The local y-coordinate. + */ + private boolean pointInView(int localX, int localY) { + return (localX >= mEdgeSlop) && (localY >= mEdgeSlop) + && (localX < (mView.getWidth() - mEdgeSlop)) + && (localY < (mView.getHeight() - mEdgeSlop)); + } + + /** * Simulates a transition between two {@link Key}s by sending a HOVER_EXIT * on the previous key, a HOVER_ENTER on the current key, and a HOVER_MOVE * on the current key. diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java index aeca839f1..337ae9c17 100644 --- a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java @@ -140,7 +140,7 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke final PointerTracker tracker = (PointerTracker) msg.obj; switch (msg.what) { case MSG_REPEAT_KEY: - tracker.onRepeatKey(tracker.getKey()); + tracker.onRegisterKey(tracker.getKey()); startKeyRepeatTimer(tracker, mParams.mKeyRepeatInterval); break; case MSG_LONGPRESS_KEY: diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java index c62c3ddbc..6ad854d1b 100644 --- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java +++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java @@ -714,7 +714,7 @@ public class PointerTracker { private void startRepeatKey(Key key) { if (key != null && key.isRepeatable()) { - onRepeatKey(key); + onRegisterKey(key); mTimerProxy.startKeyRepeatTimer(this); mIsRepeatableKey = true; } else { @@ -722,7 +722,7 @@ public class PointerTracker { } } - public void onRepeatKey(Key key) { + public void onRegisterKey(Key key) { if (key != null) { detectAndSendKey(key, key.mX, key.mY); if (!key.altCodeWhileTyping() && !key.isModifier()) { diff --git a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java index 6b59a8dae..90394ce5e 100644 --- a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java +++ b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java @@ -21,7 +21,6 @@ import android.text.TextUtils; import com.android.inputmethod.keyboard.Keyboard.Params.TouchPositionCorrection; import com.android.inputmethod.latin.JniUtils; -import com.android.inputmethod.latin.spellcheck.SpellCheckerProximityInfo; import java.util.Arrays; import java.util.HashMap; @@ -75,15 +74,12 @@ public class ProximityInfo { return new ProximityInfo("", 1, 1, 1, 1, 1, 1, EMPTY_KEY_ARRAY, null); } - public static ProximityInfo createSpellCheckerProximityInfo(final int[] proximity) { + public static ProximityInfo createSpellCheckerProximityInfo(final int[] proximity, + int rowSize, int gridWidth, int gridHeight) { final ProximityInfo spellCheckerProximityInfo = createDummyProximityInfo(); spellCheckerProximityInfo.mNativeProximityInfo = spellCheckerProximityInfo.setProximityInfoNative("", - SpellCheckerProximityInfo.ROW_SIZE, - SpellCheckerProximityInfo.PROXIMITY_GRID_WIDTH, - SpellCheckerProximityInfo.PROXIMITY_GRID_HEIGHT, - SpellCheckerProximityInfo.PROXIMITY_GRID_WIDTH, - SpellCheckerProximityInfo.PROXIMITY_GRID_HEIGHT, + rowSize, gridWidth, gridHeight, gridWidth, gridHeight, 1, proximity, 0, null, null, null, null, null, null, null, null); return spellCheckerProximityInfo; } diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java index 1b516755f..425b5e0bf 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java @@ -161,80 +161,79 @@ public final class KeyboardTextsSet { /* 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 */ "more_keys_for_star", - /* 52 */ "more_keys_for_plus", - /* 53 */ "more_keys_for_left_parenthesis", - /* 54 */ "more_keys_for_right_parenthesis", - /* 55 */ "more_keys_for_less_than", - /* 56 */ "more_keys_for_greater_than", - /* 57 */ "keylabel_for_popular_domain", - /* 58 */ "more_keys_for_popular_domain", - /* 59 */ "keylabel_for_symbols_1", - /* 60 */ "keylabel_for_symbols_2", - /* 61 */ "keylabel_for_symbols_3", - /* 62 */ "keylabel_for_symbols_4", - /* 63 */ "keylabel_for_symbols_5", - /* 64 */ "keylabel_for_symbols_6", - /* 65 */ "keylabel_for_symbols_7", - /* 66 */ "keylabel_for_symbols_8", - /* 67 */ "keylabel_for_symbols_9", - /* 68 */ "keylabel_for_symbols_0", - /* 69 */ "additional_more_keys_for_symbols_1", - /* 70 */ "additional_more_keys_for_symbols_2", - /* 71 */ "additional_more_keys_for_symbols_3", - /* 72 */ "additional_more_keys_for_symbols_4", - /* 73 */ "additional_more_keys_for_symbols_5", - /* 74 */ "additional_more_keys_for_symbols_6", - /* 75 */ "additional_more_keys_for_symbols_7", - /* 76 */ "additional_more_keys_for_symbols_8", - /* 77 */ "additional_more_keys_for_symbols_9", - /* 78 */ "additional_more_keys_for_symbols_0", - /* 79 */ "more_keys_for_symbols_1", - /* 80 */ "more_keys_for_symbols_2", - /* 81 */ "more_keys_for_symbols_3", - /* 82 */ "more_keys_for_symbols_4", - /* 83 */ "more_keys_for_symbols_5", - /* 84 */ "more_keys_for_symbols_6", - /* 85 */ "more_keys_for_symbols_7", - /* 86 */ "more_keys_for_symbols_8", - /* 87 */ "more_keys_for_symbols_9", - /* 88 */ "more_keys_for_symbols_0", - /* 89 */ "keylabel_for_comma", - /* 90 */ "more_keys_for_comma", - /* 91 */ "keylabel_for_symbols_question", - /* 92 */ "keylabel_for_symbols_semicolon", - /* 93 */ "keylabel_for_symbols_percent", - /* 94 */ "more_keys_for_symbols_question", - /* 95 */ "more_keys_for_symbols_semicolon", - /* 96 */ "more_keys_for_symbols_percent", - /* 97 */ "keylabel_for_tablet_comma", - /* 98 */ "keyhintlabel_for_tablet_comma", - /* 99 */ "more_keys_for_tablet_comma", - /* 100 */ "keyhintlabel_for_tablet_period", - /* 101 */ "more_keys_for_tablet_period", - /* 102 */ "keylabel_for_apostrophe", - /* 103 */ "keylabel_for_dash", - /* 104 */ "keyhintlabel_for_apostrophe", - /* 105 */ "keyhintlabel_for_dash", - /* 106 */ "more_keys_for_apostrophe", - /* 107 */ "more_keys_for_dash", - /* 108 */ "more_keys_for_bullet", - /* 109 */ "more_keys_for_am_pm", - /* 110 */ "settings_as_more_key", - /* 111 */ "shortcut_as_more_key", - /* 112 */ "action_next_as_more_key", - /* 113 */ "action_previous_as_more_key", - /* 114 */ "label_to_more_symbol_key", - /* 115 */ "label_to_more_symbol_for_tablet_key", - /* 116 */ "label_tab_key", - /* 117 */ "label_to_phone_numeric_key", - /* 118 */ "label_to_phone_symbols_key", - /* 119 */ "label_time_am", - /* 120 */ "label_time_pm", - /* 121 */ "label_to_symbol_key_pcqwerty", + /* 48 */ "more_keys_for_punctuation", + /* 49 */ "more_keys_for_star", + /* 50 */ "more_keys_for_bullet", + /* 51 */ "more_keys_for_plus", + /* 52 */ "more_keys_for_left_parenthesis", + /* 53 */ "more_keys_for_right_parenthesis", + /* 54 */ "more_keys_for_less_than", + /* 55 */ "more_keys_for_greater_than", + /* 56 */ "keylabel_for_symbols_1", + /* 57 */ "keylabel_for_symbols_2", + /* 58 */ "keylabel_for_symbols_3", + /* 59 */ "keylabel_for_symbols_4", + /* 60 */ "keylabel_for_symbols_5", + /* 61 */ "keylabel_for_symbols_6", + /* 62 */ "keylabel_for_symbols_7", + /* 63 */ "keylabel_for_symbols_8", + /* 64 */ "keylabel_for_symbols_9", + /* 65 */ "keylabel_for_symbols_0", + /* 66 */ "additional_more_keys_for_symbols_1", + /* 67 */ "additional_more_keys_for_symbols_2", + /* 68 */ "additional_more_keys_for_symbols_3", + /* 69 */ "additional_more_keys_for_symbols_4", + /* 70 */ "additional_more_keys_for_symbols_5", + /* 71 */ "additional_more_keys_for_symbols_6", + /* 72 */ "additional_more_keys_for_symbols_7", + /* 73 */ "additional_more_keys_for_symbols_8", + /* 74 */ "additional_more_keys_for_symbols_9", + /* 75 */ "additional_more_keys_for_symbols_0", + /* 76 */ "more_keys_for_symbols_1", + /* 77 */ "more_keys_for_symbols_2", + /* 78 */ "more_keys_for_symbols_3", + /* 79 */ "more_keys_for_symbols_4", + /* 80 */ "more_keys_for_symbols_5", + /* 81 */ "more_keys_for_symbols_6", + /* 82 */ "more_keys_for_symbols_7", + /* 83 */ "more_keys_for_symbols_8", + /* 84 */ "more_keys_for_symbols_9", + /* 85 */ "more_keys_for_symbols_0", + /* 86 */ "keylabel_for_comma", + /* 87 */ "more_keys_for_comma", + /* 88 */ "keylabel_for_symbols_exclamation", + /* 89 */ "keylabel_for_symbols_question", + /* 90 */ "keylabel_for_symbols_semicolon", + /* 91 */ "keylabel_for_symbols_percent", + /* 92 */ "more_keys_for_symbols_exclamation", + /* 93 */ "more_keys_for_symbols_question", + /* 94 */ "more_keys_for_symbols_semicolon", + /* 95 */ "more_keys_for_symbols_percent", + /* 96 */ "keylabel_for_tablet_comma", + /* 97 */ "keyhintlabel_for_tablet_comma", + /* 98 */ "more_keys_for_tablet_comma", + /* 99 */ "keyhintlabel_for_tablet_period", + /* 100 */ "more_keys_for_tablet_period", + /* 101 */ "keylabel_for_apostrophe", + /* 102 */ "keyhintlabel_for_apostrophe", + /* 103 */ "more_keys_for_apostrophe", + /* 104 */ "more_keys_for_am_pm", + /* 105 */ "settings_as_more_key", + /* 106 */ "shortcut_as_more_key", + /* 107 */ "action_next_as_more_key", + /* 108 */ "action_previous_as_more_key", + /* 109 */ "label_to_more_symbol_key", + /* 110 */ "label_to_more_symbol_for_tablet_key", + /* 111 */ "label_tab_key", + /* 112 */ "label_to_phone_numeric_key", + /* 113 */ "label_to_phone_symbols_key", + /* 114 */ "label_time_am", + /* 115 */ "label_time_pm", + /* 116 */ "label_to_symbol_key_pcqwerty", + /* 117 */ "keylabel_for_popular_domain", + /* 118 */ "more_keys_for_popular_domain", + /* 119 */ "more_keys_for_smiley", + /* 120 */ "more_keys_for_arabic_diacritics", }; private static final String EMPTY = ""; @@ -263,19 +262,23 @@ public final class KeyboardTextsSet { /* 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, + /* 48 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\\,,?,@,&,\\%,+,;,/,(,)", // U+2020: "†" DAGGER // U+2021: "‡" DOUBLE DAGGER // U+2605: "★" BLACK STAR - /* 51 */ "\u2020,\u2021,\u2605", + /* 49 */ "\u2020,\u2021,\u2605", + // U+266A: "♪" EIGHTH NOTE + // U+2665: "♥" BLACK HEART SUIT + // U+2660: "♠" BLACK SPADE SUIT + // U+2666: "♦" BLACK DIAMOND SUIT + // U+2663: "♣" BLACK CLUB SUIT + /* 50 */ "\u266A,\u2665,\u2660,\u2666,\u2663", // U+00B1: "±" PLUS-MINUS SIGN - /* 52 */ "\u00B1", + /* 51 */ "\u00B1", // The all letters need to be mirrored are found at // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt - /* 53 */ "!fixedColumnOrder!3,<,{,[", - /* 54 */ "!fixedColumnOrder!3,>,},]", + /* 52 */ "!fixedColumnOrder!3,<,{,[", + /* 53 */ "!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 @@ -291,99 +294,110 @@ public final class KeyboardTextsSet { // U+201D: "”" RIGHT DOUBLE QUOTATION MARK // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK - /* 55 */ "!fixedColumnOrder!3,\u2039,\u2264,\u00AB", - /* 56 */ "!fixedColumnOrder!3,\u203A,\u2265,\u00BB", - /* 57 */ ".com", - // popular web domains for the locale - most popular, displayed on the keyboard - /* 58 */ "!hasLabels!,.net,.org,.gov,.edu", - /* 59 */ "1", - /* 60 */ "2", - /* 61 */ "3", - /* 62 */ "4", - /* 63 */ "5", - /* 64 */ "6", - /* 65 */ "7", - /* 66 */ "8", - /* 67 */ "9", - /* 68 */ "0", - /* 69~ */ + /* 54 */ "!fixedColumnOrder!3,\u2039,\u2264,\u00AB", + /* 55 */ "!fixedColumnOrder!3,\u203A,\u2265,\u00BB", + /* 56 */ "1", + /* 57 */ "2", + /* 58 */ "3", + /* 59 */ "4", + /* 60 */ "5", + /* 61 */ "6", + /* 62 */ "7", + /* 63 */ "8", + /* 64 */ "9", + /* 65 */ "0", + /* 66~ */ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - /* ~78 */ + /* ~75 */ // 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 - /* 79 */ "\u00B9,\u00BD,\u2153,\u00BC,\u215B", + /* 76 */ "\u00B9,\u00BD,\u2153,\u00BC,\u215B", // U+00B2: "²" SUPERSCRIPT TWO // U+2154: "⅔" VULGAR FRACTION TWO THIRDS - /* 80 */ "\u00B2,\u2154", + /* 77 */ "\u00B2,\u2154", // U+00B3: "³" SUPERSCRIPT THREE // U+00BE: "¾" VULGAR FRACTION THREE QUARTERS // U+215C: "⅜" VULGAR FRACTION THREE EIGHTHS - /* 81 */ "\u00B3,\u00BE,\u215C", + /* 78 */ "\u00B3,\u00BE,\u215C", // U+2074: "⁴" SUPERSCRIPT FOUR - /* 82 */ "\u2074", + /* 79 */ "\u2074", // U+215D: "⅝" VULGAR FRACTION FIVE EIGHTHS - /* 83 */ "\u215D", - /* 84 */ EMPTY, + /* 80 */ "\u215D", + /* 81 */ EMPTY, // U+215E: "⅞" VULGAR FRACTION SEVEN EIGHTHS - /* 85 */ "\u215E", - /* 86 */ EMPTY, - /* 87 */ EMPTY, + /* 82 */ "\u215E", + /* 83 */ EMPTY, + /* 84 */ EMPTY, // U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N // U+2205: "∅" EMPTY SET - /* 88 */ "\u207F,\u2205", - /* 89 */ ",", - /* 90 */ EMPTY, - /* 91 */ "?", - /* 92 */ ";", - /* 93 */ "%", + /* 85 */ "\u207F,\u2205", + /* 86 */ ",", + /* 87 */ EMPTY, + /* 88 */ "!", + /* 89 */ "?", + /* 90 */ ";", + /* 91 */ "%", + // U+00A1: "¡" INVERTED EXCLAMATION MARK + /* 92 */ "\u00A1", // U+00BF: "¿" INVERTED QUESTION MARK - /* 94 */ "\u00BF", - /* 95 */ EMPTY, + /* 93 */ "\u00BF", + /* 94 */ EMPTY, // U+2030: "‰" PER MILLE SIGN - /* 96 */ "\u2030", - /* 97 */ ",", + /* 95 */ "\u2030", + /* 96 */ ",", + /* 97 */ "!", /* 98 */ "!", - /* 99 */ "!", + /* 99 */ "?", /* 100 */ "?", - /* 101 */ "?", - /* 102 */ "\'", - /* 103 */ "-", - /* 104 */ "\"", - /* 105 */ "_", - /* 106 */ "\"", - /* 107 */ "_", - // U+266A: "♪" EIGHTH NOTE - // U+2665: "♥" BLACK HEART SUIT - // U+2660: "♠" BLACK SPADE SUIT - // U+2666: "♦" BLACK DIAMOND SUIT - // U+2663: "♣" BLACK CLUB SUIT - /* 108 */ "\u266A,\u2665,\u2660,\u2666,\u2663", - /* 109 */ "!fixedColumnOrder!2,!hasLabels!,!text/label_time_am,!text/label_time_pm", - /* 110 */ "!icon/settings_key|!code/key_settings", - /* 111 */ "!icon/shortcut_key|!code/key_shortcut", - /* 112 */ "!hasLabels!,!text/label_next_key|!code/key_action_next", - /* 113 */ "!hasLabels!,!text/label_previous_key|!code/key_action_previous", + /* 101 */ "\'", + /* 102 */ "\"", + /* 103 */ "\"", + /* 104 */ "!fixedColumnOrder!2,!hasLabels!,!text/label_time_am,!text/label_time_pm", + /* 105 */ "!icon/settings_key|!code/key_settings", + /* 106 */ "!icon/shortcut_key|!code/key_shortcut", + /* 107 */ "!hasLabels!,!text/label_next_key|!code/key_action_next", + /* 108 */ "!hasLabels!,!text/label_previous_key|!code/key_action_previous", // Label for "switch to more symbol" modifier key. Must be short to fit on key! - /* 114 */ "= \\ <", + /* 109 */ "= \\ <", // Label for "switch to more symbol" modifier key on tablets. Must be short to fit on key! - /* 115 */ "~ \\ {", + /* 110 */ "~ \\ {", // Label for "Tab" key. Must be short to fit on key! - /* 116 */ "Tab", + /* 111 */ "Tab", // Label for "switch to phone numeric" key. Must be short to fit on key! - /* 117 */ "123", + /* 112 */ "123", // Label for "switch to phone symbols" key. Must be short to fit on key! // U+FF0A: "*" FULLWIDTH ASTERISK // U+FF03: "#" FULLWIDTH NUMBER SIGN - /* 118 */ "\uFF0A\uFF03", + /* 113 */ "\uFF0A\uFF03", // Key label for "ante meridiem" - /* 119 */ "AM", + /* 114 */ "AM", // Key label for "post meridiem" - /* 120 */ "PM", + /* 115 */ "PM", // Label for "switch to symbols" key on PC QWERTY layout - /* 121 */ "Sym", + /* 116 */ "Sym", + /* 117 */ ".com", + // popular web domains for the locale - most popular, displayed on the keyboard + /* 118 */ "!hasLabels!,.net,.org,.gov,.edu", + /* 119 */ "!fixedColumnOrder!5,!hasLabels!,=-O|=-O ,:-P|:-P ,;-)|;-) ,:-(|:-( ,:-)|:-) ,:-!|:-! ,:-$|:-$ ,B-)|B-) ,:O|:O ,:-*|:-* ,:-D|:-D ,:\'(|:\'( ,:-\\\\|:-\\\\ ,O:-)|O:-) ,:-[|:-[ ", + // U+064F: "ُ" ARABIC DAMMA + // U+064C: "ٌ" ARABIC DAMMATAN + // U+0651: "ّ" ARABIC SHADDA + // U+0652: "ْ" ARABIC SUKUN + // U+0653: "ٓ" ARABIC MADDAH ABOVE + // U+064D: "ٍ" ARABIC KASRATAN + // U+064B: "ً" ARABIC FATHATAN + // U+0650: "ِ" ARABIC KASRA + // U+064E: "َ" ARABIC FATHA + // U+0640: "ـ" ARABIC TATWEEL + // U+0656: "ٖ" ARABIC SUBSCRIPT ALEF + // U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF + // U+0655: "ٕ" ARABIC HAMZA BELOW + // U+0654: "ٔ" ARABIC HAMZA ABOVE + // In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. + /* 120 */ "!fixedColumnOrder!5,\u064F,\u064C,\u0651,\u0652,\u0653,\u064D,\u064B,\u0650,\u064E,\u0640\u0640\u0640|\u0640,\u0656,\u0670,\u0655,\u0654", }; /* Language ar: Arabic */ @@ -400,38 +414,24 @@ public final class KeyboardTextsSet { // <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,“,”,„,‟,«|»,»|«;,‘,’,‚,‛</string> /* 43 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB,\u2018,\u2019,\u201A,\u201B", /* 44~ */ - null, null, null, null, null, - /* ~48 */ + null, null, null, null, + /* ~47 */ // 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", + /* 48 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\u060C,\u061F,@,&,\\%,+,\u061B,/,(,)", // U+2605: "★" BLACK STAR // U+066D: "٭" ARABIC FIVE POINTED STAR - /* 51 */ "\u2605,\u066D", - /* 52 */ null, + /* 49 */ "\u2605,\u066D", + // U+266A: "♪" EIGHTH NOTE + /* 50 */ "\u266A", + /* 51 */ 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 - /* 53 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]", - /* 54 */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,>|<,}|{,]|[", + /* 52 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]", + /* 53 */ "!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 @@ -447,85 +447,65 @@ public final class KeyboardTextsSet { // U+201D: "”" RIGHT DOUBLE QUOTATION MARK // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK - /* 55 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB", - /* 56 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB", - /* 57 */ null, - /* 58 */ null, + /* 54 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB", + /* 55 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB", // U+0661: "١" ARABIC-INDIC DIGIT ONE - /* 59 */ "\u0661", + /* 56 */ "\u0661", // U+0662: "٢" ARABIC-INDIC DIGIT TWO - /* 60 */ "\u0662", + /* 57 */ "\u0662", // U+0663: "٣" ARABIC-INDIC DIGIT THREE - /* 61 */ "\u0663", + /* 58 */ "\u0663", // U+0664: "٤" ARABIC-INDIC DIGIT FOUR - /* 62 */ "\u0664", + /* 59 */ "\u0664", // U+0665: "٥" ARABIC-INDIC DIGIT FIVE - /* 63 */ "\u0665", + /* 60 */ "\u0665", // U+0666: "٦" ARABIC-INDIC DIGIT SIX - /* 64 */ "\u0666", + /* 61 */ "\u0666", // U+0667: "٧" ARABIC-INDIC DIGIT SEVEN - /* 65 */ "\u0667", + /* 62 */ "\u0667", // U+0668: "٨" ARABIC-INDIC DIGIT EIGHT - /* 66 */ "\u0668", + /* 63 */ "\u0668", // U+0669: "٩" ARABIC-INDIC DIGIT NINE - /* 67 */ "\u0669", + /* 64 */ "\u0669", // U+0660: "٠" ARABIC-INDIC DIGIT ZERO - /* 68 */ "\u0660", - /* 69 */ "1", - /* 70 */ "2", - /* 71 */ "3", - /* 72 */ "4", - /* 73 */ "5", - /* 74 */ "6", - /* 75 */ "7", - /* 76 */ "8", - /* 77 */ "9", + /* 65 */ "\u0660", + /* 66 */ "1", + /* 67 */ "2", + /* 68 */ "3", + /* 69 */ "4", + /* 70 */ "5", + /* 71 */ "6", + /* 72 */ "7", + /* 73 */ "8", + /* 74 */ "9", // U+066B: "٫" ARABIC DECIMAL SEPARATOR // U+066C: "٬" ARABIC THOUSANDS SEPARATOR - /* 78 */ "0,\u066B,\u066C", - /* 79~ */ + /* 75 */ "0,\u066B,\u066C", + /* 76~ */ null, null, null, null, null, null, null, null, null, null, - /* ~88 */ + /* ~85 */ // U+060C: "،" ARABIC COMMA - /* 89 */ "\u060C", - /* 90 */ "\\,", - /* 91 */ "\u061F", - /* 92 */ "\u061B", + /* 86 */ "\u060C", + /* 87 */ "\\,", + /* 88 */ null, + /* 89 */ "\u061F", + /* 90 */ "\u061B", // U+066A: "٪" ARABIC PERCENT SIGN - /* 93 */ "\u066A", - /* 94 */ "?", - /* 95 */ ";", + /* 91 */ "\u066A", + /* 92 */ null, + /* 93 */ "?", + /* 94 */ ";", // U+2030: "‰" PER MILLE SIGN - /* 96 */ "\\%,\u2030", - /* 97~ */ + /* 95 */ "\\%,\u2030", + /* 96~ */ null, null, null, null, null, - /* ~101 */ + /* ~100 */ // U+060C: "،" ARABIC COMMA // U+061B: "؛" ARABIC SEMICOLON // U+061F: "؟" ARABIC QUESTION MARK - /* 102 */ "\u060C", - /* 103 */ ".", - /* 104 */ "\u061F", - /* 105 */ "\u064B", - /* 106 */ "\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. - /* 107 */ "\u0651,\u0652,\u064C,\u0653,\u064F,\u0650,\u064E,\u064B,\u0640\u0640\u0640|\u0640,\u064D,\u0654,\u0656,\u0655,\u0670", - // U+266A: "♪" EIGHTH NOTE - /* 108 */ "\u266A", + /* 101 */ "\u060C", + /* 102 */ "\u061F", + /* 103 */ "\u061F,\u061B,!,:,-,/,\',\"", }; /* Language be: Belarusian */ @@ -881,11 +861,31 @@ public final class KeyboardTextsSet { /* 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 */ + null, null, null, null, null, null, null, null, null, null, + /* ~47 */ + // U+00A1: "¡" INVERTED EXCLAMATION MARK + // U+00BF: "¿" INVERTED QUESTION MARK + /* 48 */ "!fixedColumnOrder!9,\",\',#,-,\u00A1,!,\u00BF,\\,,?,@,&,\\%,+,;,:,/,(,)", + /* 49~ */ + 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, + /* ~87 */ // U+00A1: "¡" INVERTED EXCLAMATION MARK + /* 88 */ "\u00A1", // U+00BF: "¿" INVERTED QUESTION MARK - /* 49 */ "!fixedColumnOrder!7,#,-,\u00A1,!,\u00BF,\\,,?,\\%,+,;,:,/,(,),@,&,\",\'", + /* 89 */ "\u00BF", + /* 90 */ null, + /* 91 */ null, + /* 92 */ "!", + /* 93 */ "?", + /* 94~ */ + null, null, null, + /* ~96 */ + /* 97 */ "\u00A1", + /* 98 */ "\u00A1,!", + /* 99 */ "\u00BF", + /* 100 */ "\u00BF,?", }; /* Language et: Estonian */ @@ -1002,38 +1002,24 @@ public final class KeyboardTextsSet { // <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,“,”,„,‟,«|»,»|«;,‘,’,‚,‛</string> /* 43 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB,\u2018,\u2019,\u201A,\u201B", /* 44~ */ - null, null, null, null, null, - /* ~48 */ + null, null, null, null, + /* ~47 */ // 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", + /* 48 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\u060C,\u061F,@,&,\\%,+,\u061B,/,(,)", // U+2605: "★" BLACK STAR // U+066D: "٭" ARABIC FIVE POINTED STAR - /* 51 */ "\u2605,\u066D", - /* 52 */ null, + /* 49 */ "\u2605,\u066D", + // U+266A: "♪" EIGHTH NOTE + /* 50 */ "\u266A", + /* 51 */ 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 - /* 53 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]", - /* 54 */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,>|<,}|{,]|[", + /* 52 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]", + /* 53 */ "!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 @@ -1049,87 +1035,67 @@ public final class KeyboardTextsSet { // U+201D: "”" RIGHT DOUBLE QUOTATION MARK // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK - /* 55 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB", - /* 56 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB", - /* 57 */ null, - /* 58 */ null, + /* 54 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB", + /* 55 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB", // U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE - /* 59 */ "\u06F1", + /* 56 */ "\u06F1", // U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO - /* 60 */ "\u06F2", + /* 57 */ "\u06F2", // U+06F3: "۳" EXTENDED ARABIC-INDIC DIGIT THREE - /* 61 */ "\u06F3", + /* 58 */ "\u06F3", // U+06F4: "۴" EXTENDED ARABIC-INDIC DIGIT FOUR - /* 62 */ "\u06F4", + /* 59 */ "\u06F4", // U+06F5: "۵" EXTENDED ARABIC-INDIC DIGIT FIVE - /* 63 */ "\u06F5", + /* 60 */ "\u06F5", // U+06F6: "۶" EXTENDED ARABIC-INDIC DIGIT SIX - /* 64 */ "\u06F6", + /* 61 */ "\u06F6", // U+06F7: "۷" EXTENDED ARABIC-INDIC DIGIT SEVEN - /* 65 */ "\u06F7", + /* 62 */ "\u06F7", // U+06F8: "۸" EXTENDED ARABIC-INDIC DIGIT EIGHT - /* 66 */ "\u06F8", + /* 63 */ "\u06F8", // U+06F9: "۹" EXTENDED ARABIC-INDIC DIGIT NINE - /* 67 */ "\u06F9", + /* 64 */ "\u06F9", // U+06F0: "۰" EXTENDED ARABIC-INDIC DIGIT ZERO - /* 68 */ "\u06F0", - /* 69 */ "1", - /* 70 */ "2", - /* 71 */ "3", - /* 72 */ "4", - /* 73 */ "5", - /* 74 */ "6", - /* 75 */ "7", - /* 76 */ "8", - /* 77 */ "9", + /* 65 */ "\u06F0", + /* 66 */ "1", + /* 67 */ "2", + /* 68 */ "3", + /* 69 */ "4", + /* 70 */ "5", + /* 71 */ "6", + /* 72 */ "7", + /* 73 */ "8", + /* 74 */ "9", // U+066B: "٫" ARABIC DECIMAL SEPARATOR // U+066C: "٬" ARABIC THOUSANDS SEPARATOR - /* 78 */ "0,\u066B,\u066C", - /* 79~ */ + /* 75 */ "0,\u066B,\u066C", + /* 76~ */ null, null, null, null, null, null, null, null, null, null, - /* ~88 */ + /* ~85 */ // U+060C: "،" ARABIC COMMA - /* 89 */ "\u060C", - /* 90 */ "\\,", - /* 91 */ "\u061F", - /* 92 */ "\u061B", + /* 86 */ "\u060C", + /* 87 */ "\\,", + /* 88 */ null, + /* 89 */ "\u061F", + /* 90 */ "\u061B", // U+066A: "٪" ARABIC PERCENT SIGN - /* 93 */ "\u066A", - /* 94 */ "?", - /* 95 */ ";", + /* 91 */ "\u066A", + /* 92 */ null, + /* 93 */ "?", + /* 94 */ ";", // U+2030: "‰" PER MILLE SIGN - /* 96 */ "\\%,\u2030", + /* 95 */ "\\%,\u2030", // U+060C: "،" ARABIC COMMA // U+061B: "؛" ARABIC SEMICOLON // U+061F: "؟" ARABIC QUESTION MARK - /* 97 */ "\u060C", - /* 98 */ "!", - /* 99 */ "!,\\,", - /* 100 */ "\u061F", - /* 101 */ "\u061F,?", - /* 102~ */ - null, null, null, - /* ~104 */ - /* 105 */ "\u064B", - /* 106 */ "\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. - /* 107 */ "\u0651,\u0652,\u064C,\u0653,\u064F,\u0650,\u064E,\u064B,\u0640\u0640\u0640|\u0640,\u064D,\u0654,\u0656,\u0655,_,\u0670", - // U+266A: "♪" EIGHTH NOTE - /* 108 */ "\u266A", + /* 96 */ "\u060C", + /* 97 */ "!", + /* 98 */ "!,\\,", + /* 99 */ "\u061F", + /* 100 */ "\u061F,?", + /* 101 */ null, + /* 102 */ null, + /* 103 */ "\u061F,\u061B,!,:,-,/,\',\"", }; /* Language fi: Finnish */ @@ -1238,38 +1204,38 @@ public final class KeyboardTextsSet { 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, - /* ~58 */ + null, null, null, null, null, null, null, null, null, null, null, + /* ~55 */ // U+0967: "१" DEVANAGARI DIGIT ONE - /* 59 */ "\u0967", + /* 56 */ "\u0967", // U+0968: "२" DEVANAGARI DIGIT TWO - /* 60 */ "\u0968", + /* 57 */ "\u0968", // U+0969: "३" DEVANAGARI DIGIT THREE - /* 61 */ "\u0969", + /* 58 */ "\u0969", // U+096A: "४" DEVANAGARI DIGIT FOUR - /* 62 */ "\u096A", + /* 59 */ "\u096A", // U+096B: "५" DEVANAGARI DIGIT FIVE - /* 63 */ "\u096B", + /* 60 */ "\u096B", // U+096C: "६" DEVANAGARI DIGIT SIX - /* 64 */ "\u096C", + /* 61 */ "\u096C", // U+096D: "७" DEVANAGARI DIGIT SEVEN - /* 65 */ "\u096D", + /* 62 */ "\u096D", // U+096E: "८" DEVANAGARI DIGIT EIGHT - /* 66 */ "\u096E", + /* 63 */ "\u096E", // U+096F: "९" DEVANAGARI DIGIT NINE - /* 67 */ "\u096F", + /* 64 */ "\u096F", // U+0966: "०" DEVANAGARI DIGIT ZERO - /* 68 */ "\u0966", - /* 69 */ "1", - /* 70 */ "2", - /* 71 */ "3", - /* 72 */ "4", - /* 73 */ "5", - /* 74 */ "6", - /* 75 */ "7", - /* 76 */ "8", - /* 77 */ "9", - /* 78 */ "0", + /* 65 */ "\u0966", + /* 66 */ "1", + /* 67 */ "2", + /* 68 */ "3", + /* 69 */ "4", + /* 70 */ "5", + /* 71 */ "6", + /* 72 */ "7", + /* 73 */ "8", + /* 74 */ "9", + /* 75 */ "0", }; /* Language hr: Croatian */ @@ -1466,17 +1432,18 @@ public final class KeyboardTextsSet { // <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,“,”,„,‟,«|»,»|«;,‘,’,‚,‛</string> /* 43 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB,\u2018,\u2019,\u201A,\u201B", /* 44~ */ - null, null, null, null, null, null, null, - /* ~50 */ + null, null, null, null, null, + /* ~48 */ // U+2605: "★" BLACK STAR - /* 51 */ "\u2605", + /* 49 */ "\u2605", + /* 50 */ null, // U+00B1: "±" PLUS-MINUS SIGN // U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN - /* 52 */ "\u00B1,\uFB29", + /* 51 */ "\u00B1,\uFB29", // The all letters need to be mirrored are found at // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt - /* 53 */ "!fixedColumnOrder!3,<|>,{|},[|]", - /* 54 */ "!fixedColumnOrder!3,>|<,}|{,]|[", + /* 52 */ "!fixedColumnOrder!3,<|>,{|},[|]", + /* 53 */ "!fixedColumnOrder!3,>|<,}|{,]|[", // U+2264: "≤" LESS-THAN OR EQUAL TO // U+2265: "≥" GREATER-THAN EQUAL TO // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK @@ -1492,8 +1459,8 @@ public final class KeyboardTextsSet { // U+201D: "”" RIGHT DOUBLE QUOTATION MARK // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK - /* 55 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB", - /* 56 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB", + /* 54 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB", + /* 55 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB", }; /* Language ky: Kirghiz */ diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java index a644ec0d9..cc20f4294 100644 --- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java +++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java @@ -17,6 +17,7 @@ package com.android.inputmethod.latin; import android.content.Context; +import android.text.TextUtils; import com.android.inputmethod.keyboard.ProximityInfo; @@ -84,6 +85,7 @@ public class BinaryDictionary extends Dictionary { int typedLetterMultiplier, int fullWordMultiplier, int maxWordLength, int maxWords); private native void closeNative(long dict); private native boolean isValidWordNative(long dict, int[] word, int wordLength); + private native boolean isValidBigramNative(long dict, int[] word1, int[] word2); private native int getSuggestionsNative(long dict, long proximityInfo, int[] xCoordinates, int[] yCoordinates, int[] inputCodes, int codesSize, int[] prevWordForBigrams, boolean useFullEditDistance, char[] outputChars, int[] scores); @@ -204,6 +206,15 @@ public class BinaryDictionary extends Dictionary { return isValidWordNative(mNativeDict, chars, chars.length); } + // TODO: Add a batch process version (isValidBigramMultiple?) to avoid excessive numbers of jni + // calls when checking for changes in an entire dictionary. + public boolean isValidBigram(CharSequence word1, CharSequence word2) { + if (TextUtils.isEmpty(word1) || TextUtils.isEmpty(word2)) return false; + int[] chars1 = StringUtils.toCodePointArray(word1.toString()); + int[] chars2 = StringUtils.toCodePointArray(word2.toString()); + return isValidBigramNative(mNativeDict, chars1, chars2); + } + @Override public synchronized void close() { closeInternal(); diff --git a/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java index 65f97e987..22787c218 100644 --- a/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java +++ b/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java @@ -18,6 +18,7 @@ import android.content.ContentResolver; import android.content.Context; import android.database.ContentObserver; import android.database.Cursor; +import android.os.SystemClock; import android.provider.BaseColumns; import android.provider.ContactsContract.Contacts; import android.text.TextUtils; @@ -30,18 +31,27 @@ import java.util.Locale; public class ContactsBinaryDictionary extends ExpandableBinaryDictionary { private static final String[] PROJECTION = {BaseColumns._ID, Contacts.DISPLAY_NAME,}; + private static final String[] PROJECTION_ID_ONLY = {BaseColumns._ID}; private static final String TAG = ContactsBinaryDictionary.class.getSimpleName(); private static final String NAME = "contacts"; + private static boolean DEBUG = false; + /** * Frequency for contacts information into the dictionary */ private static final int FREQUENCY_FOR_CONTACTS = 40; private static final int FREQUENCY_FOR_CONTACTS_BIGRAM = 90; + /** The maximum number of contacts that this dictionary supports. */ + private static final int MAX_CONTACT_COUNT = 10000; + private static final int INDEX_NAME = 1; + /** The number of contacts in the most recent dictionary rebuild. */ + static private int sContactCountAtLastRebuild = 0; + private ContentObserver mObserver; /** @@ -98,6 +108,7 @@ public class ContactsBinaryDictionary extends ExpandableBinaryDictionary { if (cursor != null) { try { if (cursor.moveToFirst()) { + sContactCountAtLastRebuild = getContactCount(); addWords(cursor); } } finally { @@ -125,15 +136,28 @@ public class ContactsBinaryDictionary extends ExpandableBinaryDictionary { private void addWords(Cursor cursor) { clearFusionDictionary(); - while (!cursor.isAfterLast()) { + int count = 0; + while (!cursor.isAfterLast() && count < MAX_CONTACT_COUNT) { String name = cursor.getString(INDEX_NAME); - if (name != null && -1 == name.indexOf('@')) { + if (isValidName(name)) { addName(name); + ++count; } cursor.moveToNext(); } } + private int getContactCount() { + // TODO: consider switching to a rawQuery("select count(*)...") on the database if + // performance is a bottleneck. + final Cursor cursor = mContext.getContentResolver().query( + Contacts.CONTENT_URI, PROJECTION_ID_ONLY, null, null, null); + if (cursor != null) { + return cursor.getCount(); + } + return 0; + } + /** * Adds the words in a name (e.g., firstname/lastname) to the binary dictionary along with their * bigrams depending on locale. @@ -144,16 +168,9 @@ public class ContactsBinaryDictionary extends ExpandableBinaryDictionary { // TODO: Better tokenization for non-Latin writing systems for (int i = 0; i < len; i++) { if (Character.isLetter(name.codePointAt(i))) { - int j; - for (j = i + 1; j < len; j++) { - final int codePoint = name.codePointAt(j); - if (!(codePoint == Keyboard.CODE_DASH || codePoint == Keyboard.CODE_SINGLE_QUOTE - || Character.isLetter(codePoint))) { - break; - } - } - String word = name.substring(i, j); - i = j - 1; + int end = getWordEndPosition(name, len, i); + String word = name.substring(i, end); + i = end - 1; // Don't add single letter words, possibly confuses // capitalization of i. final int wordLen = word.codePointCount(0, word.length()); @@ -169,4 +186,100 @@ public class ContactsBinaryDictionary extends ExpandableBinaryDictionary { } } } + + /** + * Returns the index of the last letter in the word, starting from position startIndex. + */ + private static int getWordEndPosition(String string, int len, int startIndex) { + int end; + int cp = 0; + for (end = startIndex + 1; end < len; end += Character.charCount(cp)) { + cp = string.codePointAt(end); + if (!(cp == Keyboard.CODE_DASH || cp == Keyboard.CODE_SINGLE_QUOTE + || Character.isLetter(cp))) { + break; + } + } + return end; + } + + @Override + protected boolean hasContentChanged() { + final long startTime = SystemClock.uptimeMillis(); + final int contactCount = getContactCount(); + if (contactCount > MAX_CONTACT_COUNT) { + // If there are too many contacts then return false. In this rare case it is impossible + // to include all of them anyways and the cost of rebuilding the dictionary is too high. + // TODO: Sort and check only the MAX_CONTACT_COUNT most recent contacts? + return false; + } + if (contactCount != sContactCountAtLastRebuild) { + return true; + } + // Check all contacts since it's not possible to find out which names have changed. + // This is needed because it's possible to receive extraneous onChange events even when no + // name has changed. + Cursor cursor = mContext.getContentResolver().query( + Contacts.CONTENT_URI, PROJECTION, null, null, null); + if (cursor != null) { + try { + if (cursor.moveToFirst()) { + while (!cursor.isAfterLast()) { + String name = cursor.getString(INDEX_NAME); + if (isValidName(name) && !isNameInDictionary(name)) { + if (DEBUG) { + Log.d(TAG, "Contact name missing: " + name + " (runtime = " + + (SystemClock.uptimeMillis() - startTime) + " ms)"); + } + return true; + } + cursor.moveToNext(); + } + } + } finally { + cursor.close(); + } + } + if (DEBUG) { + Log.d(TAG, "No contacts changed. (runtime = " + (SystemClock.uptimeMillis() - startTime) + + " ms)"); + } + return false; + } + + private static boolean isValidName(String name) { + if (name != null && -1 == name.indexOf('@')) { + return true; + } + return false; + } + + /** + * Checks if the words in a name are in the current binary dictionary. + */ + private boolean isNameInDictionary(String name) { + int len = name.codePointCount(0, name.length()); + String prevWord = null; + for (int i = 0; i < len; i++) { + if (Character.isLetter(name.codePointAt(i))) { + int end = getWordEndPosition(name, len, i); + String word = name.substring(i, end); + i = end - 1; + final int wordLen = word.codePointCount(0, word.length()); + if (wordLen < MAX_WORD_LENGTH && wordLen > 1) { + if (!TextUtils.isEmpty(prevWord) && mUseFirstLastBigrams) { + if (!super.isValidBigramLocked(prevWord, word)) { + return false; + } + } else { + if (!super.isValidWordLocked(word)) { + return false; + } + } + prevWord = word; + } + } + } + return true; + } } diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java index 3d89226c0..22d8f24f1 100644 --- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java +++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java @@ -96,6 +96,13 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { protected abstract void loadDictionaryAsync(); /** + * Indicates that the source dictionary content has changed and a rebuild of the binary file is + * required. If it returns false, the next reload will only read the current binary dictionary + * from file. Note that the shared binary dictionary is locked when this is called. + */ + protected abstract boolean hasContentChanged(); + + /** * Gets the shared dictionary controller for the given filename. */ private static synchronized DictionaryController getSharedDictionaryController( @@ -148,8 +155,9 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { * the native side. */ public void clearFusionDictionary() { - mFusionDictionary = new FusionDictionary(new Node(), new FusionDictionary.DictionaryOptions( - new HashMap<String, String>(), false, false)); + mFusionDictionary = new FusionDictionary(new Node(), + new FusionDictionary.DictionaryOptions(new HashMap<String, String>(), false, + false)); } /** @@ -224,9 +232,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { protected boolean isValidWordInner(final CharSequence word) { if (mLocalDictionaryController.tryLock()) { try { - if (mBinaryDictionary != null) { - return mBinaryDictionary.isValidWord(word); - } + return isValidWordLocked(word); } finally { mLocalDictionaryController.unlock(); } @@ -234,6 +240,32 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { return false; } + protected boolean isValidWordLocked(final CharSequence word) { + if (mBinaryDictionary == null) return false; + return mBinaryDictionary.isValidWord(word); + } + + protected boolean isValidBigram(final CharSequence word1, final CharSequence word2) { + if (mBinaryDictionary == null) return false; + return mBinaryDictionary.isValidBigram(word1, word2); + } + + protected boolean isValidBigramInner(final CharSequence word1, final CharSequence word2) { + if (mLocalDictionaryController.tryLock()) { + try { + return isValidBigramLocked(word1, word2); + } finally { + mLocalDictionaryController.unlock(); + } + } + return false; + } + + protected boolean isValidBigramLocked(final CharSequence word1, final CharSequence word2) { + if (mBinaryDictionary == null) return false; + return mBinaryDictionary.isValidBigram(word1, word2); + } + /** * Load the current binary dictionary from internal storage in a background thread. If no binary * dictionary exists, this method will generate one. @@ -315,12 +347,16 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { } /** - * Sets whether or not the dictionary is out of date and requires a reload. + * Marks that the dictionary is out of date and requires a reload. + * + * @param requiresRebuild Indicates that the source dictionary content has changed and a rebuild + * of the binary file is required. If not true, the next reload process will only read + * the current binary dictionary from file. */ - protected void setRequiresReload(final boolean reload) { - final long time = reload ? SystemClock.uptimeMillis() : 0; - mSharedDictionaryController.mLastUpdateRequestTime = time; + protected void setRequiresReload(final boolean requiresRebuild) { + final long time = SystemClock.uptimeMillis(); mLocalDictionaryController.mLastUpdateRequestTime = time; + mSharedDictionaryController.mLastUpdateRequestTime = time; if (DEBUG) { Log.d(TAG, "Reload request: request=" + time + " update=" + mSharedDictionaryController.mLastUpdateTime); @@ -351,21 +387,30 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { 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; + if (hasContentChanged()) { + // If the source content has changed, rebuild the binary dictionary. + mSharedDictionaryController.mLastUpdateTime = time; + generateBinaryDictionary(); + loadBinaryDictionary(); + } else { + // If not, the reload request was unnecessary so revert LastUpdateRequestTime + // to LastUpdateTime. + mSharedDictionaryController.mLastUpdateRequestTime = + mSharedDictionaryController.mLastUpdateTime; + } + } else if (mBinaryDictionary == null || mLocalDictionaryController.mLastUpdateTime + < mSharedDictionaryController.mLastUpdateTime) { + // Otherwise, if the local dictionary is older than the shared dictionary, load the + // shared dictionary. loadBinaryDictionary(); } + mLocalDictionaryController.mLastUpdateTime = time; } finally { mSharedDictionaryController.unlock(); } } + // TODO: cache the file's existence so that we avoid doing a disk access each time. private boolean dictionaryFileExists() { final File file = new File(mContext.getFilesDir(), mFilename); return file.exists(); diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index b7385ed21..70ff69a93 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -635,6 +635,12 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen Log.d(TAG, "onStartInputView: editorInfo:" + String.format("inputType=0x%08x imeOptions=0x%08x", editorInfo.inputType, editorInfo.imeOptions)); + Log.d(TAG, "All caps = " + + ((editorInfo.inputType & InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS) != 0) + + ", sentence caps = " + + ((editorInfo.inputType & InputType.TYPE_TEXT_FLAG_CAP_SENTENCES) != 0) + + ", word caps = " + + ((editorInfo.inputType & InputType.TYPE_TEXT_FLAG_CAP_WORDS) != 0)); } if (ProductionFlag.IS_EXPERIMENTAL) { ResearchLogger.latinIME_onStartInputViewInternal(editorInfo, mPrefs); diff --git a/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java b/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java index d82d503c4..3c818cc56 100644 --- a/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java +++ b/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java @@ -174,6 +174,7 @@ public class BinaryDictInputOutput { private static final int MAX_CHARGROUPS_IN_A_NODE = 0x7FFF; // 32767 private static final int MAX_TERMINAL_FREQUENCY = 255; + private static final int MAX_BIGRAM_FREQUENCY = 15; // Arbitrary limit to how much passes we consider address size compression should // terminate in. At the time of this writing, our largest dictionary completes @@ -722,15 +723,17 @@ public class BinaryDictInputOutput { } /** - * Makes the flag value for an attribute. + * Makes the flag value for a bigram. * - * @param more whether there are more attributes after this one. - * @param offset the offset of the attribute. - * @param frequency the frequency of the attribute, 0..15 + * @param more whether there are more bigrams after this one. + * @param offset the offset of the bigram. + * @param bigramFrequency the frequency of the bigram, 0..255. + * @param unigramFrequency the unigram frequency of the same word, 0..255. + * @param word the second bigram, for debugging purposes * @return the flags */ - private static final int makeAttributeFlags(final boolean more, final int offset, - final int frequency) { + private static final int makeBigramFlags(final boolean more, final int offset, + int bigramFrequency, final int unigramFrequency, final String word) { int bigramFlags = (more ? FLAG_ATTRIBUTE_HAS_NEXT : 0) + (offset < 0 ? FLAG_ATTRIBUTE_OFFSET_NEGATIVE : 0); switch (getByteSize(offset)) { @@ -746,7 +749,21 @@ public class BinaryDictInputOutput { default: throw new RuntimeException("Strange offset size"); } - bigramFlags += frequency & FLAG_ATTRIBUTE_FREQUENCY; + if (unigramFrequency > bigramFrequency) { + MakedictLog.e("Unigram freq is superior to bigram freq for \"" + word + + "\". Bigram freq is " + bigramFrequency + ", unigram freq for " + + word + " is " + unigramFrequency); + bigramFrequency = unigramFrequency; + } + // We compute the difference between 255 (which means probability = 1) and the + // unigram score. We split this into discrete 16 steps, and this is the value + // we store into the 4 bits of the bigrams frequency. + final float bigramRatio = (float)(bigramFrequency - unigramFrequency) + / (MAX_TERMINAL_FREQUENCY - unigramFrequency); + // TODO: if the bigram freq is very close to the unigram frequency, we don't want + // to include the bigram in the binary dictionary at all. + final int discretizedFrequency = Math.round(bigramRatio * MAX_BIGRAM_FREQUENCY); + bigramFlags += discretizedFrequency & FLAG_ATTRIBUTE_FREQUENCY; return bigramFlags; } @@ -854,11 +871,14 @@ public class BinaryDictInputOutput { final Iterator bigramIterator = group.mBigrams.iterator(); while (bigramIterator.hasNext()) { final WeightedString bigram = (WeightedString)bigramIterator.next(); - final int addressOfBigram = findAddressOfWord(dict, bigram.mWord); + final CharGroup target = + FusionDictionary.findWordInTree(dict.mRoot, bigram.mWord); + final int addressOfBigram = target.mCachedAddress; + final int unigramFrequencyForThisWord = target.mFrequency; ++groupAddress; final int offset = addressOfBigram - groupAddress; - int bigramFlags = makeAttributeFlags(bigramIterator.hasNext(), offset, - bigram.mFrequency); + int bigramFlags = makeBigramFlags(bigramIterator.hasNext(), offset, + bigram.mFrequency, unigramFrequencyForThisWord, bigram.mWord); buffer[index++] = (byte)bigramFlags; final int bigramShift = writeVariableAddress(buffer, index, Math.abs(offset)); index += bigramShift; diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java index f41645283..6f7f0c333 100644 --- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java +++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java @@ -23,6 +23,7 @@ import android.service.textservice.SpellCheckerService; import android.text.TextUtils; import android.util.Log; import android.util.LruCache; +import android.view.textservice.SentenceSuggestionsInfo; import android.view.textservice.SuggestionsInfo; import android.view.textservice.TextInfo; @@ -392,7 +393,10 @@ public class AndroidSpellCheckerService extends SpellCheckerService public DictAndProximity createDictAndProximity(final Locale locale) { final int script = getScriptFromLocale(locale); final ProximityInfo proximityInfo = ProximityInfo.createSpellCheckerProximityInfo( - SpellCheckerProximityInfo.getProximityForScript(script)); + SpellCheckerProximityInfo.getProximityForScript(script), + SpellCheckerProximityInfo.ROW_SIZE, + SpellCheckerProximityInfo.PROXIMITY_GRID_WIDTH, + SpellCheckerProximityInfo.PROXIMITY_GRID_HEIGHT); final DictionaryCollection dictionaryCollection = DictionaryFactory.createDictionaryFromManager(this, locale, true /* useFullEditDistance */); @@ -484,6 +488,10 @@ public class AndroidSpellCheckerService extends SpellCheckerService } mUnigramSuggestionsInfoCache.put(query, new SuggestionsParams(suggestions, flags)); } + + public void remove(String key) { + mUnigramSuggestionsInfoCache.remove(key); + } } AndroidSpellCheckerSession(final AndroidSpellCheckerService service) { @@ -566,6 +574,96 @@ public class AndroidSpellCheckerService extends SpellCheckerService return (letterCount * 4 < length * 3); } + private SentenceSuggestionsInfo fixWronglyInvalidatedWordWithSingleQuote( + TextInfo ti, SentenceSuggestionsInfo ssi) { + final String typedText = ti.getText(); + if (!typedText.contains(SINGLE_QUOTE)) { + return null; + } + final int N = ssi.getSuggestionsCount(); + final ArrayList<Integer> additionalOffsets = new ArrayList<Integer>(); + final ArrayList<Integer> additionalLengths = new ArrayList<Integer>(); + final ArrayList<SuggestionsInfo> additionalSuggestionsInfos = + new ArrayList<SuggestionsInfo>(); + for (int i = 0; i < N; ++i) { + final SuggestionsInfo si = ssi.getSuggestionsInfoAt(i); + final int flags = si.getSuggestionsAttributes(); + if ((flags & SuggestionsInfo.RESULT_ATTR_IN_THE_DICTIONARY) == 0) { + continue; + } + final int offset = ssi.getOffsetAt(i); + final int length = ssi.getLengthAt(i); + final String subText = typedText.substring(offset, offset + length); + if (!subText.contains(SINGLE_QUOTE)) { + continue; + } + final String[] splitTexts = subText.split(SINGLE_QUOTE, -1); + if (splitTexts == null || splitTexts.length <= 1) { + continue; + } + final int splitNum = splitTexts.length; + for (int j = 0; j < splitNum; ++j) { + final String splitText = splitTexts[j]; + if (TextUtils.isEmpty(splitText)) { + continue; + } + if (mSuggestionsCache.getSuggestionsFromCache(splitText) == null) { + continue; + } + final int newLength = splitText.length(); + // Neither RESULT_ATTR_IN_THE_DICTIONARY nor RESULT_ATTR_LOOKS_LIKE_TYPO + final int newFlags = 0; + final SuggestionsInfo newSi = new SuggestionsInfo(newFlags, EMPTY_STRING_ARRAY); + newSi.setCookieAndSequence(si.getCookie(), si.getSequence()); + if (DBG) { + Log.d(TAG, "Override and remove old span over: " + + splitText + ", " + offset + "," + newLength); + } + additionalOffsets.add(offset); + additionalLengths.add(newLength); + additionalSuggestionsInfos.add(newSi); + } + } + final int additionalSize = additionalOffsets.size(); + if (additionalSize <= 0) { + return null; + } + final int suggestionsSize = N + additionalSize; + final int[] newOffsets = new int[suggestionsSize]; + final int[] newLengths = new int[suggestionsSize]; + final SuggestionsInfo[] newSuggestionsInfos = new SuggestionsInfo[suggestionsSize]; + int i; + for (i = 0; i < N; ++i) { + newOffsets[i] = ssi.getOffsetAt(i); + newLengths[i] = ssi.getLengthAt(i); + newSuggestionsInfos[i] = ssi.getSuggestionsInfoAt(i); + } + for (; i < suggestionsSize; ++i) { + newOffsets[i] = additionalOffsets.get(i - N); + newLengths[i] = additionalLengths.get(i - N); + newSuggestionsInfos[i] = additionalSuggestionsInfos.get(i - N); + } + return new SentenceSuggestionsInfo(newSuggestionsInfos, newOffsets, newLengths); + } + + @Override + public SentenceSuggestionsInfo[] onGetSentenceSuggestionsMultiple( + TextInfo[] textInfos, int suggestionsLimit) { + final SentenceSuggestionsInfo[] retval = super.onGetSentenceSuggestionsMultiple( + textInfos, suggestionsLimit); + if (retval == null || retval.length != textInfos.length) { + return retval; + } + for (int i = 0; i < retval.length; ++i) { + final SentenceSuggestionsInfo tempSsi = + fixWronglyInvalidatedWordWithSingleQuote(textInfos[i], retval[i]); + if (tempSsi != null) { + retval[i] = tempSsi; + } + } + return retval; + } + // Note : this must be reentrant /** * Gets a list of suggestions for a specific string. This returns a list of possible |