aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/AndroidManifest.xml4
-rw-r--r--java/res/values-ar/strings.xml2
-rw-r--r--java/res/values-b+sr+Latn/strings-action-keys.xml31
-rw-r--r--java/res/values-b+sr+Latn/strings-appname.xml27
-rw-r--r--java/res/values-b+sr+Latn/strings-config-important-notice.xml24
-rw-r--r--java/res/values-b+sr+Latn/strings-emoji-descriptions.xml1767
-rw-r--r--java/res/values-b+sr+Latn/strings-letter-descriptions.xml208
-rw-r--r--java/res/values-b+sr+Latn/strings-talkback-descriptions.xml96
-rw-r--r--java/res/values-b+sr+Latn/strings.xml212
-rw-r--r--java/res/values-el/strings-talkback-descriptions.xml2
-rw-r--r--java/res/values-es/strings.xml2
-rw-r--r--java/res/values-hy-rAM/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-pl/strings-talkback-descriptions.xml2
-rw-r--r--java/res/values-ro/strings-emoji-descriptions.xml2
-rw-r--r--java/res/values-ro/strings.xml22
-rw-r--r--java/res/values-zh-rTW/strings.xml4
-rw-r--r--java/res/values/strings.xml18
-rw-r--r--java/res/xml/method.xml7
-rw-r--r--java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityDelegate.java4
-rw-r--r--java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java17
-rw-r--r--java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatUtils.java18
-rw-r--r--java/src/com/android/inputmethod/compat/LocaleListCompatUtils.java40
-rw-r--r--java/src/com/android/inputmethod/compat/UserManagerCompatUtils.java80
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java11
-rw-r--r--java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java20
-rw-r--r--java/src/com/android/inputmethod/latin/EmojiAltPhysicalKeyDetector.java246
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java56
-rw-r--r--java/src/com/android/inputmethod/latin/RichInputMethodManager.java41
-rw-r--r--java/src/com/android/inputmethod/latin/RichInputMethodSubtype.java25
29 files changed, 2858 insertions, 132 deletions
diff --git a/java/AndroidManifest.xml b/java/AndroidManifest.xml
index 8882cdea5..9bb16c7ff 100644
--- a/java/AndroidManifest.xml
+++ b/java/AndroidManifest.xml
@@ -38,7 +38,9 @@
<application android:label="@string/english_ime_name"
android:icon="@drawable/ic_launcher_keyboard"
android:supportsRtl="true"
- android:allowBackup="true">
+ android:allowBackup="true"
+ android:defaultToDeviceProtectedStorage="true"
+ android:directBootAware="true">
<!-- Services -->
<service android:name="LatinIME"
diff --git a/java/res/values-ar/strings.xml b/java/res/values-ar/strings.xml
index 58b8e7089..1d9bf2272 100644
--- a/java/res/values-ar/strings.xml
+++ b/java/res/values-ar/strings.xml
@@ -140,7 +140,7 @@
<string name="prefs_enable_emoji_alt_physical_key" msgid="5963640002335470112">"الرموز التعبيرية للوحة مفاتيح فعلية"</string>
<string name="prefs_enable_emoji_alt_physical_key_summary" msgid="5259484820941627827">"‏مفتاح Alt الفعلي يعرض لوحة الرموز التعبيرية"</string>
<string name="button_default" msgid="3988017840431881491">"الافتراضية"</string>
- <string name="setup_welcome_title" msgid="6112821709832031715">"أهلاً بك في <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+ <string name="setup_welcome_title" msgid="6112821709832031715">"مرحبا بكم في <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="setup_welcome_additional_description" msgid="8150252008545768953">"مع الكتابة بالإشارة"</string>
<string name="setup_start_action" msgid="8936036460897347708">"بدء الاستخدام"</string>
<string name="setup_next_action" msgid="371821437915144603">"الخطوة التالية"</string>
diff --git a/java/res/values-b+sr+Latn/strings-action-keys.xml b/java/res/values-b+sr+Latn/strings-action-keys.xml
new file mode 100644
index 000000000..ca265d286
--- /dev/null
+++ b/java/res/values-b+sr+Latn/strings-action-keys.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="label_go_key" msgid="4033615332628671065">"Idi"</string>
+ <string name="label_next_key" msgid="5586407279258592635">"Sled"</string>
+ <string name="label_previous_key" msgid="1421141755779895275">"Preth"</string>
+ <string name="label_done_key" msgid="7564866296502630852">"Gotov"</string>
+ <string name="label_send_key" msgid="482252074224462163">"Šalji"</string>
+ <string name="label_search_key" msgid="7965186050435796642">"Traži"</string>
+ <string name="label_pause_key" msgid="2225922926459730642">"Pauza"</string>
+ <string name="label_wait_key" msgid="5891247853595466039">"Čekaj"</string>
+</resources>
diff --git a/java/res/values-b+sr+Latn/strings-appname.xml b/java/res/values-b+sr+Latn/strings-appname.xml
new file mode 100644
index 000000000..0a30cab3d
--- /dev/null
+++ b/java/res/values-b+sr+Latn/strings-appname.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="english_ime_name" msgid="5940510615957428904">"Android tastatura (AOSP)"</string>
+ <string name="spell_checker_service_name" msgid="1254221805440242662">"Android provera pravopisa (AOSP)"</string>
+ <string name="english_ime_settings" msgid="5760361067176802794">"Podešavanja Android tastature (AOSP)"</string>
+ <string name="android_spell_checker_settings" msgid="6123949487832861885">"Podešavanja Android provere pravopisa (AOSP)"</string>
+</resources>
diff --git a/java/res/values-b+sr+Latn/strings-config-important-notice.xml b/java/res/values-b+sr+Latn/strings-config-important-notice.xml
new file mode 100644
index 000000000..f71731ea1
--- /dev/null
+++ b/java/res/values-b+sr+Latn/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Koristi komunikacije i unete podatke radi poboljšanja predloga"</string>
+</resources>
diff --git a/java/res/values-b+sr+Latn/strings-emoji-descriptions.xml b/java/res/values-b+sr+Latn/strings-emoji-descriptions.xml
new file mode 100644
index 000000000..0c0dc3697
--- /dev/null
+++ b/java/res/values-b+sr+Latn/strings-emoji-descriptions.xml
@@ -0,0 +1,1767 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--
+ These Emoji symbols are unsupported by TTS.
+ TODO: Remove this file when TTS/TalkBack support these Emoji symbols.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="spoken_emoji_00A9" msgid="2859822817116803638">"Znak za autorska prava"</string>
+ <string name="spoken_emoji_00AE" msgid="7708335454134589027">"Znak za registrovani brend"</string>
+ <string name="spoken_emoji_203C" msgid="153340916701508663">"Dvostruki znak uzvika"</string>
+ <string name="spoken_emoji_2049" msgid="4877256448299555371">"Znak uzvika i znak pitanja"</string>
+ <string name="spoken_emoji_2122" msgid="9188440722954720429">"Znak žiga"</string>
+ <string name="spoken_emoji_2139" msgid="9114342638917304327">"Izvor informacija"</string>
+ <string name="spoken_emoji_2194" msgid="8055202727034946680">"Strelica nalevo i nadesno"</string>
+ <string name="spoken_emoji_2195" msgid="8028122253301087407">"Strelica nagore i nadole"</string>
+ <string name="spoken_emoji_2196" msgid="4019164898967854363">"Strelica severozapad"</string>
+ <string name="spoken_emoji_2197" msgid="4255723717709017801">"Strelica severoistok"</string>
+ <string name="spoken_emoji_2198" msgid="1452063451313622090">"Strelica jugoistok"</string>
+ <string name="spoken_emoji_2199" msgid="6942722693368807849">"Strelica jugozapad"</string>
+ <string name="spoken_emoji_21A9" msgid="5204750172335111188">"Zakrivljena strelica nalevo"</string>
+ <string name="spoken_emoji_21AA" msgid="3950259884359247006">"Zakrivljena strelica nadesno"</string>
+ <string name="spoken_emoji_231A" msgid="6751448803233874993">"Ručni sat"</string>
+ <string name="spoken_emoji_231B" msgid="5956428809948426182">"Peščani sat"</string>
+ <!-- no translation found for spoken_emoji_2328 (8004906090359197446) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_23CF (8619437871899719070) -->
+ <skip />
+ <string name="spoken_emoji_23E9" msgid="4022497733535162237">"Crni dvostruki trougao usmeren nadesno"</string>
+ <string name="spoken_emoji_23EA" msgid="2251396938087774944">"Crni dvostruki trougao usmeren nalevo"</string>
+ <string name="spoken_emoji_23EB" msgid="3746885195641491865">"Crni dvostruki trougao usmeren nagore"</string>
+ <string name="spoken_emoji_23EC" msgid="7852372752901163416">"Crni dvostruki trougao usmeren nadole"</string>
+ <!-- no translation found for spoken_emoji_23ED (4064850193044573080) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_23EE (9014449600450857793) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_23EF (3823680845887006998) -->
+ <skip />
+ <string name="spoken_emoji_23F0" msgid="8474219588750627870">"Alarm"</string>
+ <!-- no translation found for spoken_emoji_23F1 (2303619241672210658) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_23F2 (2178084138229786936) -->
+ <skip />
+ <string name="spoken_emoji_23F3" msgid="166900119581024371">"Peščani sat sa peskom koji teče"</string>
+ <!-- no translation found for spoken_emoji_23F8 (1924914079210161141) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_23F9 (1268967989320035023) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_23FA (3359902126862990795) -->
+ <skip />
+ <string name="spoken_emoji_24C2" msgid="3948348737566038470">"Zaokruženo veliko latinično slovo m"</string>
+ <string name="spoken_emoji_25AA" msgid="7865181015100227349">"Mali crni kvadrat"</string>
+ <string name="spoken_emoji_25AB" msgid="6446532820937381457">"Mali beli kvadrat"</string>
+ <string name="spoken_emoji_25B6" msgid="2423897708496040947">"Crni trougao usmeren nadesno"</string>
+ <string name="spoken_emoji_25C0" msgid="3595083440074484934">"Crni trougao usmeren nalevo"</string>
+ <string name="spoken_emoji_25FB" msgid="4838691986881215419">"Srednji beli kvadrat"</string>
+ <string name="spoken_emoji_25FC" msgid="7008859564991191050">"Srednji crni kvadrat"</string>
+ <string name="spoken_emoji_25FD" msgid="7673439755069217479">"Srednje mali beli kvadrat"</string>
+ <string name="spoken_emoji_25FE" msgid="6782214109919768923">"Srednje mali crni kvadrat"</string>
+ <string name="spoken_emoji_2600" msgid="2272722634618990413">"Crno sunce sa zracima"</string>
+ <string name="spoken_emoji_2601" msgid="6205136889311537150">"Oblak"</string>
+ <!-- no translation found for spoken_emoji_2602 (6293136501817877234) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_2603 (7285313121103197207) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_2604 (8632808648689048735) -->
+ <skip />
+ <string name="spoken_emoji_260E" msgid="8670395193046424238">"Crni telefon"</string>
+ <string name="spoken_emoji_2611" msgid="4530550203347054611">"Opcija sa znakom potvrde"</string>
+ <string name="spoken_emoji_2614" msgid="1612791247861229500">"Kišobran sa kišnim kapima"</string>
+ <string name="spoken_emoji_2615" msgid="3320562382424018588">"Vruć napitak"</string>
+ <!-- no translation found for spoken_emoji_2618 (5581533965699965354) -->
+ <skip />
+ <string name="spoken_emoji_261D" msgid="4690554173549768467">"Beli podignuti kažiprst"</string>
+ <!-- no translation found for spoken_emoji_2620 (4434290857196023657) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_2622 (2534880989000210921) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_2623 (141484483765762677) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_2626 (2857954123507187408) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_262A (6726891928565290372) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_262E (3189887039765290178) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_262F (7138150472623738307) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_2638 (9073003565602256277) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_2639 (6128305824180156835) -->
+ <skip />
+ <string name="spoken_emoji_263A" msgid="3170094381521989300">"Belo nasmejano lice"</string>
+ <string name="spoken_emoji_2648" msgid="4621241062667020673">"Ovan"</string>
+ <string name="spoken_emoji_2649" msgid="7694461245947059086">"Bik"</string>
+ <string name="spoken_emoji_264A" msgid="1258074605878705030">"Blizanci"</string>
+ <string name="spoken_emoji_264B" msgid="4409219914377810956">"Rak"</string>
+ <string name="spoken_emoji_264C" msgid="6520255367817054163">"Lav"</string>
+ <string name="spoken_emoji_264D" msgid="1504758945499854018">"Devica"</string>
+ <string name="spoken_emoji_264E" msgid="2354847104530633519">"Vaga"</string>
+ <string name="spoken_emoji_264F" msgid="5822933280406416112">"Škorpija"</string>
+ <string name="spoken_emoji_2650" msgid="4832481156714796163">"Strelac"</string>
+ <string name="spoken_emoji_2651" msgid="840953134601595090">"Jarac"</string>
+ <string name="spoken_emoji_2652" msgid="3586925968718775281">"Vodolija"</string>
+ <string name="spoken_emoji_2653" msgid="8420547731496254492">"Ribe"</string>
+ <string name="spoken_emoji_2660" msgid="4541170554542412536">"Crni pik"</string>
+ <string name="spoken_emoji_2663" msgid="3669352721942285724">"Crni tref"</string>
+ <string name="spoken_emoji_2665" msgid="6347941599683765843">"Crni herc"</string>
+ <string name="spoken_emoji_2666" msgid="8296769213401115999">"Crni karo"</string>
+ <string name="spoken_emoji_2668" msgid="7063148281053820386">"Termalni izvori"</string>
+ <string name="spoken_emoji_267B" msgid="21716857176812762">"Crni univerzalni simbol za reciklažu"</string>
+ <string name="spoken_emoji_267F" msgid="8833496533226475443">"Simbol invalidskih kolica"</string>
+ <!-- no translation found for spoken_emoji_2692 (633276166375803852) -->
+ <skip />
+ <string name="spoken_emoji_2693" msgid="7443148847598433088">"Sidro"</string>
+ <!-- no translation found for spoken_emoji_2694 (4114117110598973648) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_2696 (7920282042498350920) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_2697 (7576307101162421601) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_2699 (8525225054232323125) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_269B (9146644473418235977) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_269C (1883421369883009835) -->
+ <skip />
+ <string name="spoken_emoji_26A0" msgid="6272635532992727510">"Znak upozorenja"</string>
+ <string name="spoken_emoji_26A1" msgid="5604749644693339145">"Znak za visoki napon"</string>
+ <string name="spoken_emoji_26AA" msgid="8005748091690377153">"Srednji beli krug"</string>
+ <string name="spoken_emoji_26AB" msgid="1655910278422753244">"Srednji crni krug"</string>
+ <!-- no translation found for spoken_emoji_26B0 (5742048235215593821) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_26B1 (2096529437455909562) -->
+ <skip />
+ <string name="spoken_emoji_26BD" msgid="1545218197938889737">"Fudbalska lopta"</string>
+ <string name="spoken_emoji_26BE" msgid="8959760533076498209">"Bejzbol"</string>
+ <string name="spoken_emoji_26C4" msgid="3045791757044255626">"Sneško bez snega"</string>
+ <string name="spoken_emoji_26C5" msgid="5580129409712578639">"Sunce iza oblaka"</string>
+ <!-- no translation found for spoken_emoji_26C8 (4641925705576445058) -->
+ <skip />
+ <string name="spoken_emoji_26CE" msgid="8963656417276062998">"Zmijonoša"</string>
+ <!-- no translation found for spoken_emoji_26CF (1048987245528185548) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_26D1 (5122253261153603676) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_26D3 (7567590167882104907) -->
+ <skip />
+ <string name="spoken_emoji_26D4" msgid="2231451988209604130">"Zabranjen ulaz"</string>
+ <!-- no translation found for spoken_emoji_26E9 (5219739268764945756) -->
+ <skip />
+ <string name="spoken_emoji_26EA" msgid="7513319636103804907">"Crkva"</string>
+ <!-- no translation found for spoken_emoji_26F0 (8690606275240650121) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_26F1 (7617840615623596077) -->
+ <skip />
+ <string name="spoken_emoji_26F2" msgid="7134115206158891037">"Fontana"</string>
+ <string name="spoken_emoji_26F3" msgid="4912302210162075465">"Zastava u rupi"</string>
+ <!-- no translation found for spoken_emoji_26F4 (8296597141413923967) -->
+ <skip />
+ <string name="spoken_emoji_26F5" msgid="4766328116769075217">"Jedrenjak"</string>
+ <!-- no translation found for spoken_emoji_26F7 (5002838791562917075) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_26F8 (2326041972852924376) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_26F9 (1588803158145064802) -->
+ <skip />
+ <string name="spoken_emoji_26FA" msgid="5888017494809199037">"Šator"</string>
+ <string name="spoken_emoji_26FD" msgid="2417060622927453534">"Pumpa za gorivo"</string>
+ <string name="spoken_emoji_2702" msgid="4005741160717451912">"Crne makaze"</string>
+ <string name="spoken_emoji_2705" msgid="164605766946697759">"Beli popunjeni znak potvrde"</string>
+ <string name="spoken_emoji_2708" msgid="7153840886849268988">"Avion"</string>
+ <string name="spoken_emoji_2709" msgid="2217319160724311369">"Koverta"</string>
+ <string name="spoken_emoji_270A" msgid="508347232762319473">"Podignuta pesnica"</string>
+ <string name="spoken_emoji_270B" msgid="6640562128327753423">"Podignuta ruka"</string>
+ <string name="spoken_emoji_270C" msgid="1344288035704944581">"Znak pobede"</string>
+ <!-- no translation found for spoken_emoji_270D (8850355355131892496) -->
+ <skip />
+ <string name="spoken_emoji_270F" msgid="6108251586067318718">"Olovka"</string>
+ <string name="spoken_emoji_2712" msgid="6320544535087710482">"Crno pero"</string>
+ <string name="spoken_emoji_2714" msgid="1968242800064001654">"Popunjeni znak potvrde"</string>
+ <string name="spoken_emoji_2716" msgid="511941294762977228">"Popunjen znak za množenje x"</string>
+ <!-- no translation found for spoken_emoji_271D (2367275551961395862) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_2721 (4150694777322944905) -->
+ <skip />
+ <string name="spoken_emoji_2728" msgid="5650330815808691881">"Iskre"</string>
+ <string name="spoken_emoji_2733" msgid="8915809595141157327">"Osmokraka zvezda"</string>
+ <string name="spoken_emoji_2734" msgid="4846583547980754332">"Osmokraka crna zvezda"</string>
+ <string name="spoken_emoji_2744" msgid="4350636647760161042">"Pahuljica"</string>
+ <string name="spoken_emoji_2747" msgid="3718282973916474455">"Iskra"</string>
+ <string name="spoken_emoji_274C" msgid="2752145886733295314">"Znak x"</string>
+ <string name="spoken_emoji_274E" msgid="4262918689871098338">"Inverzni znak x"</string>
+ <string name="spoken_emoji_2753" msgid="6935897159942119808">"Ornament sa crnim znakom pitanja"</string>
+ <string name="spoken_emoji_2754" msgid="7277504915105532954">"Ornament sa belim znakom pitanja"</string>
+ <string name="spoken_emoji_2755" msgid="6853076969826960210">"Ornament sa belim znakom uzvika"</string>
+ <string name="spoken_emoji_2757" msgid="3707907828776912174">"Popunjen simbol znaka uzvika"</string>
+ <!-- no translation found for spoken_emoji_2763 (3255858123691890971) -->
+ <skip />
+ <string name="spoken_emoji_2764" msgid="4214257843609432167">"Potpuno crno srce"</string>
+ <string name="spoken_emoji_2795" msgid="6563954833786162168">"Popunjen znak plus"</string>
+ <string name="spoken_emoji_2796" msgid="5990926508250772777">"Popunjen znak minus"</string>
+ <string name="spoken_emoji_2797" msgid="24694184172879174">"Popunjen znak deljenja"</string>
+ <string name="spoken_emoji_27A1" msgid="3513434778263100580">"Crna strelica nadesno"</string>
+ <string name="spoken_emoji_27B0" msgid="203395646864662198">"Petlja"</string>
+ <string name="spoken_emoji_27BF" msgid="4940514642375640510">"Dvostruka petlja"</string>
+ <string name="spoken_emoji_2934" msgid="9062130477982973457">"Strelica usmerena nadesno pa nagore"</string>
+ <string name="spoken_emoji_2935" msgid="6198710960720232074">"Strelica usmerena nadesno pa nadole"</string>
+ <string name="spoken_emoji_2B05" msgid="4813405635410707690">"Crna strelica nalevo"</string>
+ <string name="spoken_emoji_2B06" msgid="1223172079106250748">"Crna strelica nagore"</string>
+ <string name="spoken_emoji_2B07" msgid="1599124424746596150">"Crna strelica nadole"</string>
+ <string name="spoken_emoji_2B1B" msgid="3461247311988501626">"Veliki crni kvadrat"</string>
+ <string name="spoken_emoji_2B1C" msgid="5793146430145248915">"Veliki beli kvadrat"</string>
+ <string name="spoken_emoji_2B50" msgid="3850845519526950524">"Srednja bela zvezda"</string>
+ <string name="spoken_emoji_2B55" msgid="9137882158811541824">"Popunjeni veliki krug"</string>
+ <string name="spoken_emoji_3030" msgid="4609172241893565639">"Talasasta crtica"</string>
+ <string name="spoken_emoji_303D" msgid="2545833934975907505">"Znak za razdvajanje delova"</string>
+ <string name="spoken_emoji_3297" msgid="928912923628973800">"Zaokruženi ideograf za čestitanje"</string>
+ <string name="spoken_emoji_3299" msgid="3930347573693668426">"Zaokruženi ideograf za tajnu"</string>
+ <string name="spoken_emoji_1F004" msgid="1705216181345894600">"Mahjong pločica sa crvenim zmajem"</string>
+ <string name="spoken_emoji_1F0CF" msgid="7601493592085987866">"Karta za igranje sa crnim džokerom"</string>
+ <string name="spoken_emoji_1F170" msgid="3817698686602826773">"Krvna grupa A"</string>
+ <string name="spoken_emoji_1F171" msgid="3684218589626650242">"Krvna grupa B"</string>
+ <string name="spoken_emoji_1F17E" msgid="2978809190364779029">"Nulta krvna grupa"</string>
+ <string name="spoken_emoji_1F17F" msgid="463634348668462040">"Parking"</string>
+ <string name="spoken_emoji_1F18E" msgid="1650705325221496768">"Krvna grupa AB"</string>
+ <string name="spoken_emoji_1F191" msgid="5386969264431429221">"CL u kvadratu"</string>
+ <string name="spoken_emoji_1F192" msgid="8324226436829162496">"„Cool“ u kvadratu"</string>
+ <string name="spoken_emoji_1F193" msgid="4731758603321515364">"„Free“ u kvadratu"</string>
+ <string name="spoken_emoji_1F194" msgid="4903128609556175887">"„ID“ u kvadratu"</string>
+ <string name="spoken_emoji_1F195" msgid="1433142500411060924">"„New“ u kvadratu"</string>
+ <string name="spoken_emoji_1F196" msgid="8825160701159634202">"„N G“ u kvadratu"</string>
+ <string name="spoken_emoji_1F197" msgid="7841079241554176535">"„OK“ u kvadratu"</string>
+ <string name="spoken_emoji_1F198" msgid="7020298909426960622">"„SOS“ u kvadratu"</string>
+ <string name="spoken_emoji_1F199" msgid="5971252667136235630">"„Up“ sa uzvičnikom u kvadratu"</string>
+ <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"„VS“ u kvadratu"</string>
+ <string name="spoken_emoji_1F201" msgid="7000490044681139002">"Katakana znak za „ovde“ u kvadratu"</string>
+ <string name="spoken_emoji_1F202" msgid="8560906958695043947">"Katakana znak za uslugu u kvadratu"</string>
+ <string name="spoken_emoji_1F21A" msgid="1496435317324514033">"Ideograf „Besplatno“ u kvadratu"</string>
+ <string name="spoken_emoji_1F22F" msgid="609797148862445402">"Ideograf „Rezervisano mesto“ u kvadratu"</string>
+ <string name="spoken_emoji_1F232" msgid="8125716331632035820">"Ideograf „Zabrana“ u kvadratu"</string>
+ <string name="spoken_emoji_1F233" msgid="8749401090457355028">"Ideograf „Slobodno mesto“ u kvadratu"</string>
+ <string name="spoken_emoji_1F234" msgid="3546951604285970768">"Ideograf „Prihvatanje“ u kvadratu"</string>
+ <string name="spoken_emoji_1F235" msgid="5320186982841793711">"Ideograf „Sve je popunjeno“ u kvadratu"</string>
+ <string name="spoken_emoji_1F236" msgid="879755752069393034">"Ideograf „Plaćeno“ u kvadratu"</string>
+ <string name="spoken_emoji_1F237" msgid="6741807001205851437">"Ideograf „Mesečno“ u kvadratu"</string>
+ <string name="spoken_emoji_1F238" msgid="5504414186438196912">"Ideograf „Prijava“ u kvadratu"</string>
+ <string name="spoken_emoji_1F239" msgid="1634067311597618959">"Ideograf „Popust“ u kvadratu"</string>
+ <string name="spoken_emoji_1F23A" msgid="3107862957630169536">"Ideograf „Radimo“ u kvadratu"</string>
+ <string name="spoken_emoji_1F250" msgid="6586943922806727907">"Zaokruženi ideograf „Prednost“"</string>
+ <string name="spoken_emoji_1F251" msgid="9099032855993346948">"Zaokruženi ideograf „Prihvati“"</string>
+ <string name="spoken_emoji_1F300" msgid="4720098285295840383">"Ciklon"</string>
+ <string name="spoken_emoji_1F301" msgid="3601962477653752974">"Magla"</string>
+ <string name="spoken_emoji_1F302" msgid="3404357123421753593">"Zatvoreni kišobran"</string>
+ <string name="spoken_emoji_1F303" msgid="3899301321538188206">"Zvezdana noć"</string>
+ <string name="spoken_emoji_1F304" msgid="2767148930689050040">"Izlazak sunca iznad planina"</string>
+ <string name="spoken_emoji_1F305" msgid="9165812924292061196">"Izlazak sunca"</string>
+ <string name="spoken_emoji_1F306" msgid="5889294736109193104">"Grad u sumrak"</string>
+ <string name="spoken_emoji_1F307" msgid="2714290867291163713">"Zalazak sunca iznad zgrada"</string>
+ <string name="spoken_emoji_1F308" msgid="688704703985173377">"Duga"</string>
+ <string name="spoken_emoji_1F309" msgid="6217981957992313528">"Most noću"</string>
+ <string name="spoken_emoji_1F30A" msgid="4329309263152110893">"Vodeni talas"</string>
+ <string name="spoken_emoji_1F30B" msgid="5729430693700923112">"Vulkan"</string>
+ <string name="spoken_emoji_1F30C" msgid="2961230863217543082">"Mlečni put"</string>
+ <string name="spoken_emoji_1F30D" msgid="1113905673331547953">"Zemaljska kugla sa Evropom i Afrikom"</string>
+ <string name="spoken_emoji_1F30E" msgid="5278512600749223671">"Zemaljska kugla sa Amerikama"</string>
+ <string name="spoken_emoji_1F30F" msgid="5718144880978707493">"Zemaljska kugla sa Azijom i Australijom"</string>
+ <string name="spoken_emoji_1F310" msgid="2959618582975247601">"Zemaljska kugla sa meridijanima"</string>
+ <string name="spoken_emoji_1F311" msgid="623906380914895542">"Simbol mladog meseca"</string>
+ <string name="spoken_emoji_1F312" msgid="4458575672576125401">"Simbol mesečevog srpa u porastu"</string>
+ <string name="spoken_emoji_1F313" msgid="7599181787989497294">"Simbol prve četvrti meseca"</string>
+ <string name="spoken_emoji_1F314" msgid="4898293184964365413">"Simbol meseca između prve četvrti i punog meseca"</string>
+ <string name="spoken_emoji_1F315" msgid="3218117051779496309">"Simbol punog meseca"</string>
+ <string name="spoken_emoji_1F316" msgid="2061317145777689569">"Simbol meseca između punog meseca i poslednje četvrti"</string>
+ <string name="spoken_emoji_1F317" msgid="2721090687319539049">"Simbol poslednje četvrti meseca"</string>
+ <string name="spoken_emoji_1F318" msgid="3814091755648887570">"Simbol mesečevog srpa u opadanju"</string>
+ <string name="spoken_emoji_1F319" msgid="4074299824890459465">"Mesečev srp"</string>
+ <string name="spoken_emoji_1F31A" msgid="3092285278116977103">"Mlad mesec sa licem"</string>
+ <string name="spoken_emoji_1F31B" msgid="2658562138386927881">"Prva četvrt meseca sa licem"</string>
+ <string name="spoken_emoji_1F31C" msgid="7914768515547867384">"Poslednja četvrt meseca sa licem"</string>
+ <string name="spoken_emoji_1F31D" msgid="1925730459848297182">"Pun mesec sa licem"</string>
+ <string name="spoken_emoji_1F31E" msgid="8022112382524084418">"Sunce sa licem"</string>
+ <string name="spoken_emoji_1F31F" msgid="1051661214137766369">"Sjajna zvezda"</string>
+ <string name="spoken_emoji_1F320" msgid="5450591979068216115">"Zvezda padalica"</string>
+ <!-- no translation found for spoken_emoji_1F321 (581288529301493075) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F324 (2930891297836314896) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F325 (5282092301688177705) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F326 (165046788529872891) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F327 (4384791469343260600) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F328 (1991614733939171872) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F329 (6016235695016510649) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F32A (5889026615334911758) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F32B (3223192457131343118) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F32C (3479270390051226956) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F32D (8869598854109228966) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F32E (6077879860650582531) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F32F (6730078269862769637) -->
+ <skip />
+ <string name="spoken_emoji_1F330" msgid="3115760035618051575">"Kesten"</string>
+ <string name="spoken_emoji_1F331" msgid="5658888205290008691">"Mladica"</string>
+ <string name="spoken_emoji_1F332" msgid="2935650450421165938">"Zimzeleno drvo"</string>
+ <string name="spoken_emoji_1F333" msgid="5898847427062482675">"Listopadno drvo"</string>
+ <string name="spoken_emoji_1F334" msgid="6183375224678417894">"Palma"</string>
+ <string name="spoken_emoji_1F335" msgid="5352418412103584941">"Kaktus"</string>
+ <!-- no translation found for spoken_emoji_1F336 (5912660172314184275) -->
+ <skip />
+ <string name="spoken_emoji_1F337" msgid="3839107352363566289">"Lala"</string>
+ <string name="spoken_emoji_1F338" msgid="6389970364260468490">"Cvet trešnje"</string>
+ <string name="spoken_emoji_1F339" msgid="9128891447985256151">"Ruža"</string>
+ <string name="spoken_emoji_1F33A" msgid="2025828400095233078">"Hibiskus"</string>
+ <string name="spoken_emoji_1F33B" msgid="8163868254348448552">"Suncokret"</string>
+ <string name="spoken_emoji_1F33C" msgid="6850371206262335812">"Cvat"</string>
+ <string name="spoken_emoji_1F33D" msgid="9033484052864509610">"Klip kukuruza"</string>
+ <string name="spoken_emoji_1F33E" msgid="2540173396638444120">"Stabljika pirinča"</string>
+ <string name="spoken_emoji_1F33F" msgid="4384823344364908558">"Bilje"</string>
+ <string name="spoken_emoji_1F340" msgid="3494255459156499305">"Detelina sa četiri lista"</string>
+ <string name="spoken_emoji_1F341" msgid="4581959481754990158">"Javorov list"</string>
+ <string name="spoken_emoji_1F342" msgid="3119068426871821222">"Opali list"</string>
+ <string name="spoken_emoji_1F343" msgid="2663317495805149004">"Opali list leprša na vetru"</string>
+ <string name="spoken_emoji_1F344" msgid="2738517881678722159">"Pečurka"</string>
+ <string name="spoken_emoji_1F345" msgid="6135288642349085554">"Paradajz"</string>
+ <string name="spoken_emoji_1F346" msgid="2075395322785406367">"Patlidžan"</string>
+ <string name="spoken_emoji_1F347" msgid="7753453754963890571">"Grožđe"</string>
+ <string name="spoken_emoji_1F348" msgid="1247076837284932788">"Dinja"</string>
+ <string name="spoken_emoji_1F349" msgid="5563054555180611086">"Lubenica"</string>
+ <string name="spoken_emoji_1F34A" msgid="4688661208570160524">"Mandarina"</string>
+ <string name="spoken_emoji_1F34B" msgid="4335318423164185706">"Limun"</string>
+ <string name="spoken_emoji_1F34C" msgid="3712827239858159474">"Banana"</string>
+ <string name="spoken_emoji_1F34D" msgid="7712521967162622936">"Ananas"</string>
+ <string name="spoken_emoji_1F34E" msgid="1859466882598614228">"Crvena jabuka"</string>
+ <string name="spoken_emoji_1F34F" msgid="8251711032295005633">"Zelena jabuka"</string>
+ <string name="spoken_emoji_1F350" msgid="625802980159197701">"Kruška"</string>
+ <string name="spoken_emoji_1F351" msgid="4269460120610911895">"Breskva"</string>
+ <string name="spoken_emoji_1F352" msgid="965600953360182635">"Trešnje"</string>
+ <string name="spoken_emoji_1F353" msgid="7068623879906925592">"Jagoda"</string>
+ <string name="spoken_emoji_1F354" msgid="45162285238888494">"Hamburger"</string>
+ <string name="spoken_emoji_1F355" msgid="9157587635526433283">"Parče pice"</string>
+ <string name="spoken_emoji_1F356" msgid="2667196119149852244">"Meso sa koskom"</string>
+ <string name="spoken_emoji_1F357" msgid="8022817413851052256">"Batak"</string>
+ <string name="spoken_emoji_1F358" msgid="3042693264748036476">"Pirinčani kreker"</string>
+ <string name="spoken_emoji_1F359" msgid="3988148661730121958">"Kuglica od pirinča"</string>
+ <string name="spoken_emoji_1F35A" msgid="1763824172198327268">"Kuvani pirinač"</string>
+ <string name="spoken_emoji_1F35B" msgid="62530406745717835">"Pirinač sa karijem"</string>
+ <string name="spoken_emoji_1F35C" msgid="7537756539198945509">"Vruća činija"</string>
+ <string name="spoken_emoji_1F35D" msgid="8173523083861875196">"Špagete"</string>
+ <string name="spoken_emoji_1F35E" msgid="2935428307894662571">"Hleb"</string>
+ <string name="spoken_emoji_1F35F" msgid="4840297386785728443">"Pomfrit"</string>
+ <string name="spoken_emoji_1F360" msgid="4094659855684686801">"Pečeni slatki krompir"</string>
+ <string name="spoken_emoji_1F361" msgid="6475486395784096109">"Dango"</string>
+ <string name="spoken_emoji_1F362" msgid="5004692577661076275">"Oden"</string>
+ <string name="spoken_emoji_1F363" msgid="1606603765717743806">"Suši"</string>
+ <string name="spoken_emoji_1F364" msgid="6550457766169570811">"Prženi škampi"</string>
+ <string name="spoken_emoji_1F365" msgid="4963815540953316307">"Riblja pljeskavica sa šarom vrtloga"</string>
+ <string name="spoken_emoji_1F366" msgid="7862401745277049404">"Tečni sladoled"</string>
+ <string name="spoken_emoji_1F367" msgid="7447972978281980414">"Lomljeni led"</string>
+ <string name="spoken_emoji_1F368" msgid="7790003146142724913">"Sladoled"</string>
+ <string name="spoken_emoji_1F369" msgid="7383712944084857350">"Krofna"</string>
+ <string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Kolačić"</string>
+ <string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Čokoladica"</string>
+ <string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Bombona"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lizalica"</string>
+ <string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Krem"</string>
+ <string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Ćup sa medom"</string>
+ <string name="spoken_emoji_1F370" msgid="7243244547866114951">"Tortica"</string>
+ <string name="spoken_emoji_1F371" msgid="6731527040552916358">"Kutija sa ručkom"</string>
+ <string name="spoken_emoji_1F372" msgid="1635035323832181733">"Činija hrane"</string>
+ <string name="spoken_emoji_1F373" msgid="7799289534289221045">"Kuvanje"</string>
+ <string name="spoken_emoji_1F374" msgid="5973820884987069131">"Viljuška i nož"</string>
+ <string name="spoken_emoji_1F375" msgid="1074832087699617700">"Šoljica bez drške"</string>
+ <string name="spoken_emoji_1F376" msgid="6499274685584852067">"Flaša sakea i čaša"</string>
+ <string name="spoken_emoji_1F377" msgid="1762398562314172075">"Čaša vina"</string>
+ <string name="spoken_emoji_1F378" msgid="5528234560590117516">"Čaša koktela"</string>
+ <string name="spoken_emoji_1F379" msgid="790581290787943325">"Tropsko piće"</string>
+ <string name="spoken_emoji_1F37A" msgid="391966822450619516">"Krigla piva"</string>
+ <string name="spoken_emoji_1F37B" msgid="9015043286465670662">"Krigle piva koje se kucaju"</string>
+ <string name="spoken_emoji_1F37C" msgid="2532113819464508894">"Flašica za bebe"</string>
+ <!-- no translation found for spoken_emoji_1F37D (8887228479219886429) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F37E (37593222775513943) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F37F (4196704853559909123) -->
+ <skip />
+ <string name="spoken_emoji_1F380" msgid="3487363857092458827">"Traka"</string>
+ <string name="spoken_emoji_1F381" msgid="614180683680675444">"Upakovan poklon"</string>
+ <string name="spoken_emoji_1F382" msgid="4720497171946687501">"Rođendanska torta"</string>
+ <string name="spoken_emoji_1F383" msgid="3536505941578757623">"Izrezbarena bundeva"</string>
+ <string name="spoken_emoji_1F384" msgid="1797870204479059004">"Novogodišnja jelka"</string>
+ <string name="spoken_emoji_1F385" msgid="1754174063483626367">"Božić Bata"</string>
+ <string name="spoken_emoji_1F386" msgid="2130445450758114746">"Vatromet"</string>
+ <string name="spoken_emoji_1F387" msgid="3403182563117999933">"Prskalica"</string>
+ <string name="spoken_emoji_1F388" msgid="2903047203723251804">"Balon"</string>
+ <string name="spoken_emoji_1F389" msgid="2352830665883549388">"Žurka"</string>
+ <string name="spoken_emoji_1F38A" msgid="6280428984773641322">"Konfete"</string>
+ <string name="spoken_emoji_1F38B" msgid="4902225837479015489">"Drvo tanabata"</string>
+ <string name="spoken_emoji_1F38C" msgid="7623268024030989365">"Ukrštene zastave"</string>
+ <string name="spoken_emoji_1F38D" msgid="8237542796124408528">"Ukras za jelku"</string>
+ <string name="spoken_emoji_1F38E" msgid="5373397476238212371">"Japanske lutke"</string>
+ <string name="spoken_emoji_1F38F" msgid="8754091376829552844">"Vetrokaz u obliku šarana"</string>
+ <string name="spoken_emoji_1F390" msgid="8903307048095431374">"Viseći metalni zvončići"</string>
+ <string name="spoken_emoji_1F391" msgid="2134952069191911841">"Ceremonija gledanja meseca"</string>
+ <string name="spoken_emoji_1F392" msgid="6380405493914304737">"Školska torba"</string>
+ <string name="spoken_emoji_1F393" msgid="6947890064872470996">"Kapa za diplomce"</string>
+ <!-- no translation found for spoken_emoji_1F396 (8356140738000265647) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F397 (5249863289838097468) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F399 (6087019010423147017) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F39A (1627914548345466924) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F39B (648039433701743585) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F39E (2918731924907952534) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F39F (2427606024950432412) -->
+ <skip />
+ <string name="spoken_emoji_1F3A0" msgid="3572095190082826057">"Konj sa vrteške"</string>
+ <string name="spoken_emoji_1F3A1" msgid="4300565511681058798">"Panoramski točak"</string>
+ <string name="spoken_emoji_1F3A2" msgid="15486093912232140">"Luna-park"</string>
+ <string name="spoken_emoji_1F3A3" msgid="921739319504942924">"Štap za pecanje i riba"</string>
+ <string name="spoken_emoji_1F3A4" msgid="7497596355346856950">"Mikrofon"</string>
+ <string name="spoken_emoji_1F3A5" msgid="4290497821228183002">"Filmska kamera"</string>
+ <string name="spoken_emoji_1F3A6" msgid="26019057872319055">"Bioskop"</string>
+ <string name="spoken_emoji_1F3A7" msgid="837856608794094105">"Slušalice"</string>
+ <string name="spoken_emoji_1F3A8" msgid="2332260356509244587">"Slikarska paleta"</string>
+ <string name="spoken_emoji_1F3A9" msgid="9045869366525115256">"Cilindar"</string>
+ <string name="spoken_emoji_1F3AA" msgid="5728760354237132">"Cirkuski šator"</string>
+ <string name="spoken_emoji_1F3AB" msgid="1657997517193216284">"Karta"</string>
+ <string name="spoken_emoji_1F3AC" msgid="4317366554314492152">"Režiserska tabla"</string>
+ <string name="spoken_emoji_1F3AD" msgid="607157286336130470">"Umetnički nastup"</string>
+ <string name="spoken_emoji_1F3AE" msgid="2902308174671548150">"Video igra"</string>
+ <string name="spoken_emoji_1F3AF" msgid="5420539221790296407">"Direktan pogodak"</string>
+ <string name="spoken_emoji_1F3B0" msgid="7440244806527891956">"Slot-mašina"</string>
+ <string name="spoken_emoji_1F3B1" msgid="545544382391379234">"Bilijar"</string>
+ <string name="spoken_emoji_1F3B2" msgid="8302262034774787493">"Kockica za igru"</string>
+ <string name="spoken_emoji_1F3B3" msgid="5180870610771027520">"Kuglanje"</string>
+ <string name="spoken_emoji_1F3B4" msgid="4723852033266071564">"Karte za igranje sa cvetom"</string>
+ <string name="spoken_emoji_1F3B5" msgid="1998470239850548554">"Muzička nota"</string>
+ <string name="spoken_emoji_1F3B6" msgid="3827730457113941705">"Više muzičkih nota"</string>
+ <string name="spoken_emoji_1F3B7" msgid="5503403099445042180">"Saksofon"</string>
+ <string name="spoken_emoji_1F3B8" msgid="3985658156795011430">"Gitara"</string>
+ <string name="spoken_emoji_1F3B9" msgid="5596295757967881451">"Klavijatura"</string>
+ <string name="spoken_emoji_1F3BA" msgid="4284064120340683558">"Truba"</string>
+ <string name="spoken_emoji_1F3BB" msgid="2856598510069988745">"Violina"</string>
+ <string name="spoken_emoji_1F3BC" msgid="1608424748821446230">"Notni zapis"</string>
+ <string name="spoken_emoji_1F3BD" msgid="5490786111375627777">"Sportska majica sa trakom"</string>
+ <string name="spoken_emoji_1F3BE" msgid="1851613105691627931">"Teniski reket i loptica"</string>
+ <string name="spoken_emoji_1F3BF" msgid="6862405997423247921">"Skija i skijaška čizma"</string>
+ <string name="spoken_emoji_1F3C0" msgid="7421420756115104085">"Košarkaška lopta i obruč"</string>
+ <string name="spoken_emoji_1F3C1" msgid="6926537251677319922">"Zastava za kraj trke"</string>
+ <string name="spoken_emoji_1F3C2" msgid="5708596929237987082">"Snouborder"</string>
+ <string name="spoken_emoji_1F3C3" msgid="5850982999510115824">"Trkač"</string>
+ <string name="spoken_emoji_1F3C4" msgid="8468355585994639838">"Surfer"</string>
+ <!-- no translation found for spoken_emoji_1F3C5 (3256434181486954695) -->
+ <skip />
+ <string name="spoken_emoji_1F3C6" msgid="9094474706847545409">"Trofej"</string>
+ <string name="spoken_emoji_1F3C7" msgid="8172206200368370116">"Konjske trke"</string>
+ <string name="spoken_emoji_1F3C8" msgid="5619171461277597709">"Američki fudbal"</string>
+ <string name="spoken_emoji_1F3C9" msgid="6371294008765871043">"Ragbi"</string>
+ <string name="spoken_emoji_1F3CA" msgid="130977831787806932">"Plivač"</string>
+ <!-- no translation found for spoken_emoji_1F3CB (6201404884476413631) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3CC (5773930948380166403) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3CD (3174865701360723287) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3CE (298990178863007728) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3CF (220014996836173720) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3D0 (1515966148588308407) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3D1 (9065400886436849028) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3D2 (9113415091165206322) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3D3 (5392602379011857837) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3D4 (5682806162641888464) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3D5 (485622019934191893) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3D6 (8056487018845189239) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3D7 (9200931466909972688) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3D8 (4060224387880105443) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3D9 (5239036983837296458) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3DA (4479002058414881869) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3DB (5481092245291634716) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3DC (7540751465637885253) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3DD (2957722522033693226) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3DE (8767730963119889199) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3DF (360348087882746758) -->
+ <skip />
+ <string name="spoken_emoji_1F3E0" msgid="6277213201655811842">"Kuća"</string>
+ <string name="spoken_emoji_1F3E1" msgid="233476176077538885">"Kuća sa baštom"</string>
+ <string name="spoken_emoji_1F3E2" msgid="919736380093964570">"Poslovna zgrada"</string>
+ <string name="spoken_emoji_1F3E3" msgid="6177606081825094184">"Japanska pošta"</string>
+ <string name="spoken_emoji_1F3E4" msgid="717377871070970293">"Evropska pošta"</string>
+ <string name="spoken_emoji_1F3E5" msgid="1350532500431776780">"Bolnica"</string>
+ <string name="spoken_emoji_1F3E6" msgid="342132788513806214">"Banka"</string>
+ <string name="spoken_emoji_1F3E7" msgid="6322352038284944265">"Bankomat"</string>
+ <string name="spoken_emoji_1F3E8" msgid="5864918444350599907">"Hotel"</string>
+ <string name="spoken_emoji_1F3E9" msgid="7830416185375326938">"Romantični hotel"</string>
+ <string name="spoken_emoji_1F3EA" msgid="5081084413084360479">"Prodavnica"</string>
+ <string name="spoken_emoji_1F3EB" msgid="7010966528205150525">"Škola"</string>
+ <string name="spoken_emoji_1F3EC" msgid="4845978861878295154">"Robna kuća"</string>
+ <string name="spoken_emoji_1F3ED" msgid="3980316226665215370">"Fabrika"</string>
+ <string name="spoken_emoji_1F3EE" msgid="1253964276770550248">"Izakaja lampa"</string>
+ <string name="spoken_emoji_1F3EF" msgid="1128975573507389883">"Japanski dvorac"</string>
+ <string name="spoken_emoji_1F3F0" msgid="1544632297502291578">"Evropski dvorac"</string>
+ <!-- no translation found for spoken_emoji_1F3F3 (6471977885401554862) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3F4 (6634164537580574234) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3F5 (5247950040998935573) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3F7 (5140855387008703511) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3F8 (7061216387824058281) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3F9 (1287386031701875351) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3FA (972388608151034163) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3FB (2482905976407635663) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3FC (2438230702000819552) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3FD (8205610118230779658) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3FE (2707903021796601195) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3FF (12056714027518795) -->
+ <skip />
+ <string name="spoken_emoji_1F400" msgid="2063034795679578294">"Pacov"</string>
+ <string name="spoken_emoji_1F401" msgid="6736421616217369594">"Miš"</string>
+ <string name="spoken_emoji_1F402" msgid="7276670995895485604">"Vo"</string>
+ <string name="spoken_emoji_1F403" msgid="8045709541897118928">"Vodeni bivo"</string>
+ <string name="spoken_emoji_1F404" msgid="5240777285676662335">"Krava"</string>
+ <!-- no translation found for spoken_emoji_1F405 (4304847753343143926) -->
+ <skip />
+ <string name="spoken_emoji_1F406" msgid="5163461930159540018">"Leopard"</string>
+ <string name="spoken_emoji_1F407" msgid="6905370221172708160">"Zec"</string>
+ <string name="spoken_emoji_1F408" msgid="1362164550508207284">"Mačka"</string>
+ <string name="spoken_emoji_1F409" msgid="8476130983168866013">"Zmaj"</string>
+ <string name="spoken_emoji_1F40A" msgid="1149626786411545043">"Krokodil"</string>
+ <string name="spoken_emoji_1F40B" msgid="5199104921208397643">"Kit"</string>
+ <string name="spoken_emoji_1F40C" msgid="2704006052881702675">"Puž"</string>
+ <string name="spoken_emoji_1F40D" msgid="8648186663643157522">"Zmija"</string>
+ <string name="spoken_emoji_1F40E" msgid="7219137467573327268">"Konj"</string>
+ <string name="spoken_emoji_1F40F" msgid="7834336676729040395">"Ovan"</string>
+ <string name="spoken_emoji_1F410" msgid="8686765722255775031">"Koza"</string>
+ <string name="spoken_emoji_1F411" msgid="3585715397876383525">"Ovca"</string>
+ <string name="spoken_emoji_1F412" msgid="4924794582980077838">"Majmun"</string>
+ <string name="spoken_emoji_1F413" msgid="1460475310405677377">"Petao"</string>
+ <string name="spoken_emoji_1F414" msgid="5857296282631892219">"Kokoška"</string>
+ <string name="spoken_emoji_1F415" msgid="5920041074892949527">"Pas"</string>
+ <string name="spoken_emoji_1F416" msgid="4362403392912540286">"Prase"</string>
+ <string name="spoken_emoji_1F417" msgid="6836978415840795128">"Vepar"</string>
+ <string name="spoken_emoji_1F418" msgid="7926161463897783691">"Slon"</string>
+ <string name="spoken_emoji_1F419" msgid="1055233959755784186">"Oktopod"</string>
+ <string name="spoken_emoji_1F41A" msgid="5195666556511558060">"Spiralna školjka"</string>
+ <string name="spoken_emoji_1F41B" msgid="7652480167465557832">"Buba"</string>
+ <string name="spoken_emoji_1F41C" msgid="1123461148697574239">"Mrav"</string>
+ <string name="spoken_emoji_1F41D" msgid="718579308764058851">"Pčela"</string>
+ <string name="spoken_emoji_1F41E" msgid="6766305509608115467">"Bubamara"</string>
+ <string name="spoken_emoji_1F41F" msgid="1207261298343160838">"Riba"</string>
+ <string name="spoken_emoji_1F420" msgid="1041145003133609221">"Tropska riba"</string>
+ <string name="spoken_emoji_1F421" msgid="1748378324417438751">"Naduvana riba"</string>
+ <string name="spoken_emoji_1F422" msgid="4106724877523329148">"Kornjača"</string>
+ <string name="spoken_emoji_1F423" msgid="4077407945958691907">"Pile koje se ispililo"</string>
+ <string name="spoken_emoji_1F424" msgid="6911326019270172283">"Pile"</string>
+ <string name="spoken_emoji_1F425" msgid="5466514196557885577">"Pile spreda"</string>
+ <string name="spoken_emoji_1F426" msgid="2163979138772892755">"Ptica"</string>
+ <string name="spoken_emoji_1F427" msgid="3585670324511212961">"Pingvin"</string>
+ <string name="spoken_emoji_1F428" msgid="7955440808647898579">"Koala"</string>
+ <string name="spoken_emoji_1F429" msgid="5028269352809819035">"Pudlica"</string>
+ <string name="spoken_emoji_1F42A" msgid="4681926706404032484">"Jednogrba kamila"</string>
+ <string name="spoken_emoji_1F42B" msgid="2725166074981558322">"Dvogrba kamila"</string>
+ <string name="spoken_emoji_1F42C" msgid="6764791873413727085">"Delfin"</string>
+ <string name="spoken_emoji_1F42D" msgid="1033643138546864251">"Lice miša"</string>
+ <string name="spoken_emoji_1F42E" msgid="8099223337120508820">"Lice krave"</string>
+ <string name="spoken_emoji_1F42F" msgid="2104743989330781572">"Lice tigra"</string>
+ <string name="spoken_emoji_1F430" msgid="525492897063150160">"Lice zeca"</string>
+ <string name="spoken_emoji_1F431" msgid="6051358666235016851">"Lice mačke"</string>
+ <string name="spoken_emoji_1F432" msgid="7698001871193018305">"Lice zmaja"</string>
+ <string name="spoken_emoji_1F433" msgid="3762356053512899326">"Kit koji je izronio"</string>
+ <string name="spoken_emoji_1F434" msgid="3619943222159943226">"Lice konja"</string>
+ <string name="spoken_emoji_1F435" msgid="59199202683252958">"Lice majmuna"</string>
+ <string name="spoken_emoji_1F436" msgid="340544719369009828">"Lice psa"</string>
+ <string name="spoken_emoji_1F437" msgid="1219818379784982585">"Lice praseta"</string>
+ <string name="spoken_emoji_1F438" msgid="9128124743321008210">"Lice žabe"</string>
+ <string name="spoken_emoji_1F439" msgid="1424161319554642266">"Lice hrčka"</string>
+ <string name="spoken_emoji_1F43A" msgid="6727645488430385584">"Lice vuka"</string>
+ <string name="spoken_emoji_1F43B" msgid="5397170068392865167">"Lice medveda"</string>
+ <string name="spoken_emoji_1F43C" msgid="2715995734367032431">"Lice pande"</string>
+ <string name="spoken_emoji_1F43D" msgid="6005480717951776597">"Njuška praseta"</string>
+ <string name="spoken_emoji_1F43E" msgid="8917626103219080547">"Otisci šapa"</string>
+ <!-- no translation found for spoken_emoji_1F43F (84025195766364970) -->
+ <skip />
+ <string name="spoken_emoji_1F440" msgid="7144338258163384433">"Oči"</string>
+ <!-- no translation found for spoken_emoji_1F441 (5716781405495001412) -->
+ <skip />
+ <string name="spoken_emoji_1F442" msgid="1905515392292676124">"Uvo"</string>
+ <string name="spoken_emoji_1F443" msgid="1491504447758933115">"Nos"</string>
+ <string name="spoken_emoji_1F444" msgid="3654613047946080332">"Usta"</string>
+ <string name="spoken_emoji_1F445" msgid="7024905244040509204">"Jezik"</string>
+ <string name="spoken_emoji_1F446" msgid="2150365643636471745">"Spoljni deo bele šake sa kažiprstom nagore"</string>
+ <string name="spoken_emoji_1F447" msgid="8794022344940891388">"Spoljni deo bele šake sa kažiprstom nadole"</string>
+ <string name="spoken_emoji_1F448" msgid="3261812959215550650">"Spoljni deo bele šake sa kažiprstom nalevo"</string>
+ <string name="spoken_emoji_1F449" msgid="4764447975177805991">"Spoljni deo bele šake sa kažiprstom nadesno"</string>
+ <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"Pesnica"</string>
+ <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"Ruka koja maše"</string>
+ <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"Znak rukom „U redu“"</string>
+ <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"Palac okrenut nagore"</string>
+ <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"Palac okrenut nadole"</string>
+ <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"Tapšanje"</string>
+ <string name="spoken_emoji_1F450" msgid="1012021072085157054">"Otvorene šake"</string>
+ <string name="spoken_emoji_1F451" msgid="8257466714629051320">"Kruna"</string>
+ <string name="spoken_emoji_1F452" msgid="4567394011149905466">"Ženski šešir"</string>
+ <string name="spoken_emoji_1F453" msgid="5978410551173163010">"Naočare"</string>
+ <string name="spoken_emoji_1F454" msgid="348469036193323252">"Kravata"</string>
+ <string name="spoken_emoji_1F455" msgid="5665118831861433578">"Majica"</string>
+ <string name="spoken_emoji_1F456" msgid="1890991330923356408">"Farmerke"</string>
+ <string name="spoken_emoji_1F457" msgid="3904310482655702620">"Haljina"</string>
+ <string name="spoken_emoji_1F458" msgid="5704243858031107692">"Kimono"</string>
+ <string name="spoken_emoji_1F459" msgid="3553148747050035251">"Bikini"</string>
+ <string name="spoken_emoji_1F45A" msgid="1389654639484716101">"Ženska garderoba"</string>
+ <string name="spoken_emoji_1F45B" msgid="1113293170254222904">"Tašnica"</string>
+ <string name="spoken_emoji_1F45C" msgid="3410257778598006936">"Tašna"</string>
+ <string name="spoken_emoji_1F45D" msgid="812176504300064819">"Torbica"</string>
+ <string name="spoken_emoji_1F45E" msgid="2901741399934723562">"Muška cipela"</string>
+ <string name="spoken_emoji_1F45F" msgid="6828566359287798863">"Patika"</string>
+ <string name="spoken_emoji_1F460" msgid="305863879170420855">"Cipela sa visokom štiklom"</string>
+ <string name="spoken_emoji_1F461" msgid="5160493217831417630">"Ženska sandala"</string>
+ <string name="spoken_emoji_1F462" msgid="1722897795554863734">"Ženske čizme"</string>
+ <string name="spoken_emoji_1F463" msgid="5850772903593010699">"Otisci stopala"</string>
+ <string name="spoken_emoji_1F464" msgid="1228335905487734913">"Silueta biste"</string>
+ <string name="spoken_emoji_1F465" msgid="4461307702499679879">"Silueta bisti"</string>
+ <string name="spoken_emoji_1F466" msgid="1938873085514108889">"Dečak"</string>
+ <string name="spoken_emoji_1F467" msgid="8237080594860144998">"Devojčica"</string>
+ <string name="spoken_emoji_1F468" msgid="6081300722526675382">"Muškarac"</string>
+ <string name="spoken_emoji_1F469" msgid="1090140923076108158">"Žena"</string>
+ <string name="spoken_emoji_1F46A" msgid="5063570981942606595">"Porodica"</string>
+ <string name="spoken_emoji_1F46B" msgid="6795882374287327952">"Muškarac i žena se drže za ruke"</string>
+ <string name="spoken_emoji_1F46C" msgid="6844464165783964495">"Dvojica muškaraca se drže za ruke"</string>
+ <string name="spoken_emoji_1F46D" msgid="2316773068014053180">"Dve žene se drže za ruke"</string>
+ <string name="spoken_emoji_1F46E" msgid="5897625605860822401">"Policajac"</string>
+ <string name="spoken_emoji_1F46F" msgid="7716871657717641490">"Žena sa zečjim ušima"</string>
+ <string name="spoken_emoji_1F470" msgid="6409995400510338892">"Nevesta sa velom"</string>
+ <string name="spoken_emoji_1F471" msgid="3058247860441670806">"Plavokosa osoba"</string>
+ <string name="spoken_emoji_1F472" msgid="3928854667819339142">"Muškarac sa gua pi mao kapom"</string>
+ <string name="spoken_emoji_1F473" msgid="5921952095808988381">"Muškarac sa turbanom"</string>
+ <string name="spoken_emoji_1F474" msgid="1082237499496725183">"Stariji čovek"</string>
+ <string name="spoken_emoji_1F475" msgid="7280323988642212761">"Starija žena"</string>
+ <string name="spoken_emoji_1F476" msgid="4713322657821088296">"Beba"</string>
+ <string name="spoken_emoji_1F477" msgid="2197036131029221370">"Radnik na gradilištu"</string>
+ <string name="spoken_emoji_1F478" msgid="7245521193493488875">"Princeza"</string>
+ <string name="spoken_emoji_1F479" msgid="6876475321015553972">"Japanski džin"</string>
+ <string name="spoken_emoji_1F47A" msgid="3900813633102703571">"Japanski goblin"</string>
+ <string name="spoken_emoji_1F47B" msgid="2608250873194079390">"Duh"</string>
+ <string name="spoken_emoji_1F47C" msgid="3838699131276537421">"Beba anđeo"</string>
+ <string name="spoken_emoji_1F47D" msgid="2874077455888369538">"Vanzemaljac"</string>
+ <string name="spoken_emoji_1F47E" msgid="3642607168625579507">"Čudovište vanzemaljac"</string>
+ <string name="spoken_emoji_1F47F" msgid="441605977269926252">"Đavolčić"</string>
+ <string name="spoken_emoji_1F480" msgid="3696253485164878739">"Lobanja"</string>
+ <string name="spoken_emoji_1F481" msgid="320408708521966893">"Osoba koja daje informacije"</string>
+ <string name="spoken_emoji_1F482" msgid="3424354860245608949">"Čuvar"</string>
+ <string name="spoken_emoji_1F483" msgid="3221113594843849083">"Plesač"</string>
+ <string name="spoken_emoji_1F484" msgid="7348014979080444885">"Karmin"</string>
+ <string name="spoken_emoji_1F485" msgid="6133507975565116339">"Lak za nokte"</string>
+ <string name="spoken_emoji_1F486" msgid="9085459968247394155">"Masaža lica"</string>
+ <string name="spoken_emoji_1F487" msgid="1479113637259592150">"Frizura"</string>
+ <string name="spoken_emoji_1F488" msgid="6922559285234100252">"Berberski znak"</string>
+ <string name="spoken_emoji_1F489" msgid="8114863680950147305">"Špric"</string>
+ <string name="spoken_emoji_1F48A" msgid="8526843630145963032">"Pilula"</string>
+ <string name="spoken_emoji_1F48B" msgid="2538528967897640292">"Otisak poljupca"</string>
+ <string name="spoken_emoji_1F48C" msgid="1681173271652890232">"Ljubavno pismo"</string>
+ <string name="spoken_emoji_1F48D" msgid="8259886164999042373">"Prsten"</string>
+ <string name="spoken_emoji_1F48E" msgid="8777981696011111101">"Dragulj"</string>
+ <string name="spoken_emoji_1F48F" msgid="741593675183677907">"Poljubac"</string>
+ <string name="spoken_emoji_1F490" msgid="4482549128959806736">"Buket"</string>
+ <string name="spoken_emoji_1F491" msgid="2305245307882441500">"Par sa srcem"</string>
+ <string name="spoken_emoji_1F492" msgid="3884119934804475732">"Venčanje"</string>
+ <string name="spoken_emoji_1F493" msgid="1208828371565525121">"Srce koje kuca"</string>
+ <string name="spoken_emoji_1F494" msgid="6198876398509338718">"Slomljeno srce"</string>
+ <string name="spoken_emoji_1F495" msgid="9206202744967130919">"Dva srca"</string>
+ <string name="spoken_emoji_1F496" msgid="5436953041732207775">"Svetlucavo srce"</string>
+ <string name="spoken_emoji_1F497" msgid="7285142863951448473">"Srce koje raste"</string>
+ <string name="spoken_emoji_1F498" msgid="7940131245037575715">"Srce probodeno strelom"</string>
+ <string name="spoken_emoji_1F499" msgid="4453235040265550009">"Plavo srce"</string>
+ <string name="spoken_emoji_1F49A" msgid="6262178648366971405">"Zeleno srce"</string>
+ <string name="spoken_emoji_1F49B" msgid="8085384999750714368">"Žuto srce"</string>
+ <string name="spoken_emoji_1F49C" msgid="453829540120898698">"Ljubičasto srce"</string>
+ <string name="spoken_emoji_1F49D" msgid="3460534750224161888">"Srce sa trakom"</string>
+ <string name="spoken_emoji_1F49E" msgid="4490636226072523867">"Srca koja se okreću"</string>
+ <string name="spoken_emoji_1F49F" msgid="2059319756421226336">"Ukras u obliku srca"</string>
+ <string name="spoken_emoji_1F4A0" msgid="1954850380550212038">"Oblik dijamanta sa tačkom u sredini"</string>
+ <string name="spoken_emoji_1F4A1" msgid="403137413540909021">"Električna sijalica"</string>
+ <string name="spoken_emoji_1F4A2" msgid="2604192053295622063">"Simbol ljutnje"</string>
+ <string name="spoken_emoji_1F4A3" msgid="6378351742957821735">"Bomba"</string>
+ <string name="spoken_emoji_1F4A4" msgid="7217736258870346625">"Simbol spavanja"</string>
+ <string name="spoken_emoji_1F4A5" msgid="5401995723541239858">"Simbol sudara"</string>
+ <string name="spoken_emoji_1F4A6" msgid="3837802182716483848">"Simbol kapi znoja"</string>
+ <string name="spoken_emoji_1F4A7" msgid="5718438987757885141">"Kapljica"</string>
+ <string name="spoken_emoji_1F4A8" msgid="4472108229720006377">"Simbol crte"</string>
+ <string name="spoken_emoji_1F4A9" msgid="1240958472788430032">"Gomila izmeta"</string>
+ <string name="spoken_emoji_1F4AA" msgid="8427525538635146416">"Stegnuti biceps"</string>
+ <string name="spoken_emoji_1F4AB" msgid="5484114759939427459">"Simbol vrtoglavice"</string>
+ <string name="spoken_emoji_1F4AC" msgid="5571196638219612682">"Oblačić za govor"</string>
+ <string name="spoken_emoji_1F4AD" msgid="353174619257798652">"Balončić za razmišljanje"</string>
+ <string name="spoken_emoji_1F4AE" msgid="1223142786927162641">"Beli cvet"</string>
+ <string name="spoken_emoji_1F4AF" msgid="3526278354452138397">"Simbol za sto poena"</string>
+ <string name="spoken_emoji_1F4B0" msgid="4124102195175124156">"Vreća novca"</string>
+ <string name="spoken_emoji_1F4B1" msgid="8339494003418572905">"Menjačnica"</string>
+ <string name="spoken_emoji_1F4B2" msgid="3179159430187243132">"Popunjen simbol dolara"</string>
+ <string name="spoken_emoji_1F4B3" msgid="5375412518221759596">"Kreditna kartica"</string>
+ <string name="spoken_emoji_1F4B4" msgid="1068592463669453204">"Novčanica sa znakom jena"</string>
+ <string name="spoken_emoji_1F4B5" msgid="1426708699891832564">"Novčanica sa znakom dolara"</string>
+ <string name="spoken_emoji_1F4B6" msgid="8289249930736444837">"Novčanica sa znakom evra"</string>
+ <string name="spoken_emoji_1F4B7" msgid="5245100496860739429">"Novčanica sa znakom funte"</string>
+ <string name="spoken_emoji_1F4B8" msgid="4401099580477164440">"Novac sa krilima"</string>
+ <string name="spoken_emoji_1F4B9" msgid="647509393536679903">"Dijagram sa rastućim trendom i znakom jena"</string>
+ <string name="spoken_emoji_1F4BA" msgid="1269737854891046321">"Sedište"</string>
+ <string name="spoken_emoji_1F4BB" msgid="6252883563347816451">"Lični računar"</string>
+ <string name="spoken_emoji_1F4BC" msgid="6182597732218446206">"Akten-tašna"</string>
+ <string name="spoken_emoji_1F4BD" msgid="5820961044768829176">"Mini-disk"</string>
+ <string name="spoken_emoji_1F4BE" msgid="4754542485835379808">"Disketa"</string>
+ <string name="spoken_emoji_1F4BF" msgid="2237481756984721795">"Optički disk"</string>
+ <string name="spoken_emoji_1F4C0" msgid="491582501089694461">"DVD"</string>
+ <string name="spoken_emoji_1F4C1" msgid="6645461382494158111">"Direktorijum datoteke"</string>
+ <string name="spoken_emoji_1F4C2" msgid="8095638715523765338">"Otvoreni direktorijum datoteke"</string>
+ <string name="spoken_emoji_1F4C3" msgid="3727274466173970142">"Uvijena stranica"</string>
+ <string name="spoken_emoji_1F4C4" msgid="4382570710795501612">"Stranica okrenuta nagore"</string>
+ <string name="spoken_emoji_1F4C5" msgid="8693944622627762487">"Kalendar"</string>
+ <string name="spoken_emoji_1F4C6" msgid="8469908708708424640">"Kalendar sa listovima koji se cepaju"</string>
+ <string name="spoken_emoji_1F4C7" msgid="2665313547987324495">"Indeks kartica"</string>
+ <string name="spoken_emoji_1F4C8" msgid="8007686702282833600">"Dijagram sa rastućim trendom"</string>
+ <string name="spoken_emoji_1F4C9" msgid="2271951411192893684">"Dijagram sa opadajućim trendom"</string>
+ <string name="spoken_emoji_1F4CA" msgid="3525692829622381444">"Trakasti grafikon"</string>
+ <string name="spoken_emoji_1F4CB" msgid="977639227554095521">"Tabla za poruke"</string>
+ <string name="spoken_emoji_1F4CC" msgid="156107396088741574">"Pribadača"</string>
+ <string name="spoken_emoji_1F4CD" msgid="4266572175361190231">"Okrugla pribadača"</string>
+ <string name="spoken_emoji_1F4CE" msgid="6294288509864968290">"Spajalica"</string>
+ <string name="spoken_emoji_1F4CF" msgid="149679400831136810">"Prav lenjir"</string>
+ <string name="spoken_emoji_1F4D0" msgid="8130339336619202915">"Trougaoni lenjir"</string>
+ <string name="spoken_emoji_1F4D1" msgid="5852176364856284968">"Obeleživači stranica"</string>
+ <string name="spoken_emoji_1F4D2" msgid="2276810154105920052">"Glavna knjiga"</string>
+ <string name="spoken_emoji_1F4D3" msgid="5873386492793610808">"Beležnica"</string>
+ <string name="spoken_emoji_1F4D4" msgid="4754469936418776360">"Beležnica sa dekorativnom koricom"</string>
+ <string name="spoken_emoji_1F4D5" msgid="4642713351802778905">"Zatvorena knjiga"</string>
+ <string name="spoken_emoji_1F4D6" msgid="6987347918381807186">"Otvorena knjiga"</string>
+ <string name="spoken_emoji_1F4D7" msgid="7813394163241379223">"Zelena knjiga"</string>
+ <string name="spoken_emoji_1F4D8" msgid="7189799718984979521">"Plava knjiga"</string>
+ <string name="spoken_emoji_1F4D9" msgid="3874664073186440225">"Narandžasta knjiga"</string>
+ <string name="spoken_emoji_1F4DA" msgid="872212072924287762">"Knjige"</string>
+ <string name="spoken_emoji_1F4DB" msgid="2015183603583392969">"Značka sa imenom"</string>
+ <string name="spoken_emoji_1F4DC" msgid="5075845110932456783">"Svitak"</string>
+ <string name="spoken_emoji_1F4DD" msgid="2494006707147586786">"Memorandum"</string>
+ <string name="spoken_emoji_1F4DE" msgid="7883008605002117671">"Telefonska slušalica"</string>
+ <string name="spoken_emoji_1F4DF" msgid="3538610110623780465">"Pejdžer"</string>
+ <string name="spoken_emoji_1F4E0" msgid="2960778342609543077">"Faks"</string>
+ <string name="spoken_emoji_1F4E1" msgid="6269733703719242108">"Satelitska antena"</string>
+ <string name="spoken_emoji_1F4E2" msgid="1987535386302883116">"Razglas"</string>
+ <string name="spoken_emoji_1F4E3" msgid="5588916572878599224">"Navijački megafon"</string>
+ <string name="spoken_emoji_1F4E4" msgid="2063561529097749707">"Dokumenti za slanje"</string>
+ <string name="spoken_emoji_1F4E5" msgid="3232462702926143576">"Primljeni dokumenti"</string>
+ <string name="spoken_emoji_1F4E6" msgid="3399454337197561635">"Paket"</string>
+ <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"Simbol imejla"</string>
+ <string name="spoken_emoji_1F4E8" msgid="30698793974124123">"Dolazna poruka"</string>
+ <string name="spoken_emoji_1F4E9" msgid="5947550337678643166">"Strelica nadole iznad koverte"</string>
+ <string name="spoken_emoji_1F4EA" msgid="772614045207213751">"Zatvoreno poštansko sanduče sa spuštenom zastavom"</string>
+ <string name="spoken_emoji_1F4EB" msgid="6491414165464146137">"Zatvoreno poštansko sanduče sa podignutom zastavom"</string>
+ <string name="spoken_emoji_1F4EC" msgid="7369517138779988438">"Otvoreno poštansko sanduče sa podignutom zastavom"</string>
+ <string name="spoken_emoji_1F4ED" msgid="5657520436285454241">"Otvoreno poštansko sanduče sa spuštenom zastavom"</string>
+ <string name="spoken_emoji_1F4EE" msgid="8464138906243608614">"Poštansko sanduče"</string>
+ <string name="spoken_emoji_1F4EF" msgid="8801427577198798226">"Poštanski rog"</string>
+ <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"Novine"</string>
+ <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"Mobilni telefon"</string>
+ <string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"Mobilni telefon sa strelicom nadesno sa leve strane"</string>
+ <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"Režim vibracije"</string>
+ <string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"Mobilni telefon je isključen"</string>
+ <string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"Bez mobilnih telefona"</string>
+ <string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"Antena sa trakama"</string>
+ <string name="spoken_emoji_1F4F7" msgid="2643891943105989039">"Kamera"</string>
+ <!-- no translation found for spoken_emoji_1F4F8 (6874216216317936645) -->
+ <skip />
+ <string name="spoken_emoji_1F4F9" msgid="4475626303058218048">"Video kamera"</string>
+ <string name="spoken_emoji_1F4FA" msgid="1079796186652960775">"Televizor"</string>
+ <string name="spoken_emoji_1F4FB" msgid="3848729587403760645">"Radio"</string>
+ <string name="spoken_emoji_1F4FC" msgid="8370432508874310054">"Video kaseta"</string>
+ <!-- no translation found for spoken_emoji_1F4FD (992184090920043081) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F4FF (6566102135671766103) -->
+ <skip />
+ <string name="spoken_emoji_1F500" msgid="2389947994502144547">"Ukrštene strelice nadesno"</string>
+ <string name="spoken_emoji_1F501" msgid="2132188352433347009">"Kružne strelice nadesno i nalevo u smeru kazaljki na satu"</string>
+ <string name="spoken_emoji_1F502" msgid="2361976580513178391">"Kružne strelice nadesno i nalevo u smeru kazaljki na satu preko kojih stoji uokviren broj jedan"</string>
+ <string name="spoken_emoji_1F503" msgid="8936283551917858793">"Kružne strelice nadole i nagore u smeru kazaljki na satu"</string>
+ <string name="spoken_emoji_1F504" msgid="708290317843535943">"Kružne strelice nadole i nagore u smeru suprotnom kazaljki na satu"</string>
+ <string name="spoken_emoji_1F505" msgid="6348909939004951860">"Simbol slabog osvetljenja"</string>
+ <string name="spoken_emoji_1F506" msgid="4449609297521280173">"Simbol jakog osvetljenja"</string>
+ <string name="spoken_emoji_1F507" msgid="7136386694923708448">"Precrtani zvučnik"</string>
+ <string name="spoken_emoji_1F508" msgid="5063567689831527865">"Zvučnik"</string>
+ <string name="spoken_emoji_1F509" msgid="3948050077992370791">"Zvučnik sa jednim zvučnim talasom"</string>
+ <string name="spoken_emoji_1F50A" msgid="5818194948677277197">"Zvučnik sa tri zvučna talasa"</string>
+ <string name="spoken_emoji_1F50B" msgid="8083470451266295876">"Baterija"</string>
+ <string name="spoken_emoji_1F50C" msgid="7793219132036431680">"Električni utikač"</string>
+ <string name="spoken_emoji_1F50D" msgid="8140244710637926780">"Lupa okrenuta nalevo"</string>
+ <string name="spoken_emoji_1F50E" msgid="4751821352839693365">"Lupa okrenuta nadesno"</string>
+ <string name="spoken_emoji_1F50F" msgid="915079280472199605">"Katanac sa perom"</string>
+ <string name="spoken_emoji_1F510" msgid="7658381761691758318">"Zatvoren katanac sa ključem"</string>
+ <string name="spoken_emoji_1F511" msgid="262319867774655688">"Ključ"</string>
+ <string name="spoken_emoji_1F512" msgid="5628688337255115175">"Katanac"</string>
+ <string name="spoken_emoji_1F513" msgid="8579201846619420981">"Otvoreni katanac"</string>
+ <string name="spoken_emoji_1F514" msgid="7027268683047322521">"Zvono"</string>
+ <string name="spoken_emoji_1F515" msgid="8903179856036069242">"Precrtano zvono"</string>
+ <string name="spoken_emoji_1F516" msgid="108097933937925381">"Obeleživač"</string>
+ <string name="spoken_emoji_1F517" msgid="2450846665734313397">"Simbol veze"</string>
+ <string name="spoken_emoji_1F518" msgid="7028220286841437832">"Dugme za izbor"</string>
+ <string name="spoken_emoji_1F519" msgid="8211189165075445687">"Strelica nalevo iznad „Back“"</string>
+ <string name="spoken_emoji_1F51A" msgid="823966751787338892">"Strelica nalevo iznad „End“"</string>
+ <string name="spoken_emoji_1F51B" msgid="5920570742107943382">"Strelica nalevo i nadesno iznad „On“ sa uzvičnikom"</string>
+ <string name="spoken_emoji_1F51C" msgid="110609810659826676">"Strelica nadesno iznad „Soon“"</string>
+ <string name="spoken_emoji_1F51D" msgid="4087697222026095447">"Strelica nagore iznad „Top“"</string>
+ <string name="spoken_emoji_1F51E" msgid="8512873526157201775">"Zabranjeno za osobe mlađe od 18 godina"</string>
+ <string name="spoken_emoji_1F51F" msgid="8673370823728653973">"Taster sa brojem 10"</string>
+ <string name="spoken_emoji_1F520" msgid="7335109890337048900">"Simbol unosa za velika latinična slova"</string>
+ <string name="spoken_emoji_1F521" msgid="2693185864450925778">"Simbol unosa za mala latinična slova"</string>
+ <string name="spoken_emoji_1F522" msgid="8419130286280673347">"Simbol unosa za brojeve"</string>
+ <string name="spoken_emoji_1F523" msgid="3318053476401719421">"Ulazni simbol za simbole"</string>
+ <string name="spoken_emoji_1F524" msgid="1625073997522316331">"Simbol unosa za latinična slova"</string>
+ <string name="spoken_emoji_1F525" msgid="4083884189172963790">"Požar"</string>
+ <string name="spoken_emoji_1F526" msgid="2035494936742643580">"Baterijska lampa"</string>
+ <string name="spoken_emoji_1F527" msgid="134257142354034271">"Francuski ključ"</string>
+ <string name="spoken_emoji_1F528" msgid="700627429570609375">"Čekić"</string>
+ <string name="spoken_emoji_1F529" msgid="7480548235904988573">"Šraf i zavrtanj"</string>
+ <string name="spoken_emoji_1F52A" msgid="7613580031502317893">"Hočo"</string>
+ <string name="spoken_emoji_1F52B" msgid="4554906608328118613">"Pištolj"</string>
+ <string name="spoken_emoji_1F52C" msgid="1330294501371770790">"Mikroskop"</string>
+ <string name="spoken_emoji_1F52D" msgid="7549551775445177140">"Teleskop"</string>
+ <string name="spoken_emoji_1F52E" msgid="4457099417872625141">"Kristalna kugla"</string>
+ <string name="spoken_emoji_1F52F" msgid="8899031001317442792">"Šestokraka zvezda sa tačkom u sredini"</string>
+ <string name="spoken_emoji_1F530" msgid="3572898444281774023">"Japanski simbol za početnika"</string>
+ <string name="spoken_emoji_1F531" msgid="5225633376450025396">"Amblem trozupca"</string>
+ <string name="spoken_emoji_1F532" msgid="9169568490485180779">"Dugme sa crnim kvadratom"</string>
+ <string name="spoken_emoji_1F533" msgid="6554193837201918598">"Dugme sa belim kvadratom"</string>
+ <string name="spoken_emoji_1F534" msgid="8339298801331865340">"Veliki crveni krug"</string>
+ <string name="spoken_emoji_1F535" msgid="1227403104835533512">"Veliki plavi krug"</string>
+ <string name="spoken_emoji_1F536" msgid="5477372445510469331">"Veliki narandžasti dijamant"</string>
+ <string name="spoken_emoji_1F537" msgid="3158915214347274626">"Veliki plavi dijamant"</string>
+ <string name="spoken_emoji_1F538" msgid="4300084249474451991">"Mali narandžasti dijamant"</string>
+ <string name="spoken_emoji_1F539" msgid="6535159756325742275">"Mali plavi dijamant"</string>
+ <string name="spoken_emoji_1F53A" msgid="3728196273988781389">"Crveni trougao usmeren nagore"</string>
+ <string name="spoken_emoji_1F53B" msgid="7182097039614128707">"Crveni trougao usmeren nadole"</string>
+ <string name="spoken_emoji_1F53C" msgid="4077022046319615029">"Mali crveni trougao usmeren nagore"</string>
+ <string name="spoken_emoji_1F53D" msgid="3939112784894620713">"Mali crveni trougao usmeren nadole"</string>
+ <!-- no translation found for spoken_emoji_1F549 (4488493812823912137) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F54A (6329445861053369293) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F54B (1632185618342057203) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F54C (2444758230008443504) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F54D (8871149889908118955) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F54E (2602602033588655819) -->
+ <skip />
+ <string name="spoken_emoji_1F550" msgid="7761392621689986218">"Brojčanik koji pokazuje jedan sat"</string>
+ <string name="spoken_emoji_1F551" msgid="2699448504113431716">"Brojčanik koji pokazuje dva sata"</string>
+ <string name="spoken_emoji_1F552" msgid="5872107867411853750">"Brojčanik koji pokazuje tri sata"</string>
+ <string name="spoken_emoji_1F553" msgid="8490966286158640743">"Brojčanik koji pokazuje četiri sata"</string>
+ <string name="spoken_emoji_1F554" msgid="7662585417832909280">"Brojčanik koji pokazuje pet sati"</string>
+ <string name="spoken_emoji_1F555" msgid="5564698204520412009">"Brojčanik koji pokazuje šest sati"</string>
+ <string name="spoken_emoji_1F556" msgid="7325712194836512205">"Brojčanik koji pokazuje sedam sati"</string>
+ <string name="spoken_emoji_1F557" msgid="4398343183682848693">"Brojčanik koji pokazuje osam sati"</string>
+ <string name="spoken_emoji_1F558" msgid="3110507820404018172">"Brojčanik koji pokazuje devet sati"</string>
+ <string name="spoken_emoji_1F559" msgid="2972160366448337839">"Brojčanik koji pokazuje deset sati"</string>
+ <string name="spoken_emoji_1F55A" msgid="5568112876681714834">"Brojčanik koji pokazuje jedanaest sati"</string>
+ <string name="spoken_emoji_1F55B" msgid="6731739890330659276">"Brojčanik koji pokazuje dvanaest sati"</string>
+ <string name="spoken_emoji_1F55C" msgid="7838853679879115890">"Brojčanik koji pokazuje pola dva"</string>
+ <string name="spoken_emoji_1F55D" msgid="3518832144255922544">"Brojčanik koji pokazuje pola tri"</string>
+ <string name="spoken_emoji_1F55E" msgid="3092760695634993002">"Brojčanik koji pokazuje pola četiri"</string>
+ <string name="spoken_emoji_1F55F" msgid="2326720311892906763">"Brojčanik koji pokazuje pola pet"</string>
+ <string name="spoken_emoji_1F560" msgid="5771339179963924448">"Brojčanik koji pokazuje pola šest"</string>
+ <string name="spoken_emoji_1F561" msgid="3139944777062475382">"Brojčanik koji pokazuje pola sedam"</string>
+ <string name="spoken_emoji_1F562" msgid="8273944611162457084">"Brojčanik koji pokazuje pola osam"</string>
+ <string name="spoken_emoji_1F563" msgid="8643976903718136299">"Brojčanik koji pokazuje pola devet"</string>
+ <string name="spoken_emoji_1F564" msgid="3511070239796141638">"Brojčanik koji pokazuje pola deset"</string>
+ <string name="spoken_emoji_1F565" msgid="4567451985272963088">"Brojčanik koji pokazuje pola jedanaest"</string>
+ <string name="spoken_emoji_1F566" msgid="2790552288169929810">"Brojčanik koji pokazuje pola dvanaest"</string>
+ <string name="spoken_emoji_1F567" msgid="9026037362100689337">"Brojčanik koji pokazuje pola jedan"</string>
+ <!-- no translation found for spoken_emoji_1F56F (2425394083258103670) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F570 (2611444774363424788) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F573 (1039753319384915644) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F574 (1370973157808858727) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F575 (3393287560881832534) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F576 (6510040886626337527) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F577 (1745605672232546738) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F578 (5843261607004481128) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F579 (356353388497335187) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F587 (1529578701645787678) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F58A (5535685878758638056) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F58B (8383182102775796958) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F58C (3645908884921776727) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F58D (8498569396909368249) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F590 (1764003432828568259) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F595 (2331418391124951688) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F596 (1326418921526428839) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5A5 (5652785146334053695) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5A8 (1431495880490623659) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5B1 (5175363198176970281) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5B2 (638466571223781802) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5BC (2406817930103032256) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5C2 (5722791826015378721) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5C3 (2361411623100608566) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5C4 (5699005642361736394) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5D1 (8837990226577655561) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5D2 (875563245704330618) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5D3 (5759637997516385074) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5DC (2134509111665528807) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5DD (2537536524658220506) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5DE (369717954301912562) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5E1 (4756313645316161687) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5E3 (725415936980269374) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5EF (6775383222346053007) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5F3 (5365297662012404100) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5FA (4806783543043181633) -->
+ <skip />
+ <string name="spoken_emoji_1F5FB" msgid="9037503671676124015">"Planina Fudži"</string>
+ <string name="spoken_emoji_1F5FC" msgid="1409415995817242150">"Tokijski toranj"</string>
+ <string name="spoken_emoji_1F5FD" msgid="2562726956654429582">"Kip slobode"</string>
+ <string name="spoken_emoji_1F5FE" msgid="1184469756905210580">"Silueta Japana"</string>
+ <string name="spoken_emoji_1F5FF" msgid="6003594799354942297">"Mojai"</string>
+ <string name="spoken_emoji_1F600" msgid="7601109464776835283">"Lice sa širokim osmehom"</string>
+ <string name="spoken_emoji_1F601" msgid="746026523967444503">"Lice sa širokim osmehom i nasmejanim očima"</string>
+ <string name="spoken_emoji_1F602" msgid="8354558091785198246">"Lice sa suzama radosnicama"</string>
+ <string name="spoken_emoji_1F603" msgid="3861022912544159823">"Nasmejano lice sa otvorenim ustima"</string>
+ <string name="spoken_emoji_1F604" msgid="5119021072966343531">"Nasmejano lice sa otvorenim ustima i nasmejanim očima"</string>
+ <string name="spoken_emoji_1F605" msgid="6140813923973561735">"Nasmejano lice sa otvorenim ustima, obliveno hladnim znojem"</string>
+ <string name="spoken_emoji_1F606" msgid="3549936813966832799">"Nasmejano lice sa otvorenim ustima i čvrsto zatvorenim očima"</string>
+ <string name="spoken_emoji_1F607" msgid="2826424078212384817">"Nasmejano lice sa oreolom"</string>
+ <string name="spoken_emoji_1F608" msgid="7343559595089811640">"Nasmejano lice sa rogovima"</string>
+ <string name="spoken_emoji_1F609" msgid="5481030187207504405">"Lice koje namiguje"</string>
+ <string name="spoken_emoji_1F60A" msgid="5023337769148679767">"Nasmejano lice sa nasmejanim očima"</string>
+ <string name="spoken_emoji_1F60B" msgid="3005248217216195694">"Lice koje uživa u ukusnoj hrani"</string>
+ <string name="spoken_emoji_1F60C" msgid="349384012958268496">"Lice sa izrazom olakšanja"</string>
+ <string name="spoken_emoji_1F60D" msgid="7921853137164938391">"Nasmejano lice sa očima u obliku srca"</string>
+ <string name="spoken_emoji_1F60E" msgid="441718886380605643">"Nasmejano lice sa naočarima za sunce"</string>
+ <string name="spoken_emoji_1F60F" msgid="2674453144890180538">"Lice koje se zlobno smeška"</string>
+ <string name="spoken_emoji_1F610" msgid="3225675825334102369">"Lice sa neutralnim izrazom"</string>
+ <string name="spoken_emoji_1F611" msgid="7199179827619679668">"Bezizražajno lice"</string>
+ <string name="spoken_emoji_1F612" msgid="985081329745137998">"Lice kome nije zabavno"</string>
+ <string name="spoken_emoji_1F613" msgid="5548607684830303562">"Lice obliveno hladnim znojem"</string>
+ <string name="spoken_emoji_1F614" msgid="3196305665259916390">"Zamišljeno lice"</string>
+ <string name="spoken_emoji_1F615" msgid="3051674239303969101">"Zbunjeno lice"</string>
+ <string name="spoken_emoji_1F616" msgid="8124887056243813089">"Lice u nedoumici"</string>
+ <string name="spoken_emoji_1F617" msgid="7052733625511122870">"Lice koje ljubi"</string>
+ <string name="spoken_emoji_1F618" msgid="408207170572303753">"Lice koje šalje poljubac"</string>
+ <string name="spoken_emoji_1F619" msgid="8645430335143153645">"Lice koje ljubi sa nasmejanim očima"</string>
+ <string name="spoken_emoji_1F61A" msgid="2882157190974340247">"Lice koje ljubi sa zatvorenim očima"</string>
+ <string name="spoken_emoji_1F61B" msgid="3765927202787211499">"Lice sa isplaženim jezikom"</string>
+ <string name="spoken_emoji_1F61C" msgid="198943912107589389">"Lice koje se plazi i namiguje"</string>
+ <string name="spoken_emoji_1F61D" msgid="7643546385877816182">"Lice koje se plazi sa čvrsto zatvorenim očima"</string>
+ <string name="spoken_emoji_1F61E" msgid="1528732952202098364">"Razočarano lice"</string>
+ <string name="spoken_emoji_1F61F" msgid="1853664164636082404">"Zabrinuto lice"</string>
+ <string name="spoken_emoji_1F620" msgid="6051942001307375830">"Ljutito lice"</string>
+ <string name="spoken_emoji_1F621" msgid="2114711878097257704">"Nadureno lice"</string>
+ <string name="spoken_emoji_1F622" msgid="29291014645931822">"Uplakano lice"</string>
+ <string name="spoken_emoji_1F623" msgid="7803959833595184773">"Istrajno lice"</string>
+ <string name="spoken_emoji_1F624" msgid="8637637647725752799">"Lice sa pobedničkim izrazom"</string>
+ <string name="spoken_emoji_1F625" msgid="6153625183493635030">"Razočarano lice kome je laknulo"</string>
+ <string name="spoken_emoji_1F626" msgid="6179485689935562950">"Namršteno lice sa otvorenim ustima"</string>
+ <string name="spoken_emoji_1F627" msgid="8566204052903012809">"Namučeno lice"</string>
+ <string name="spoken_emoji_1F628" msgid="8875777401624904224">"Uplašeno lice"</string>
+ <string name="spoken_emoji_1F629" msgid="1411538490319190118">"Oprezno lice"</string>
+ <string name="spoken_emoji_1F62A" msgid="4726686726690289969">"Pospano lice"</string>
+ <string name="spoken_emoji_1F62B" msgid="3221980473921623613">"Umorno lice"</string>
+ <string name="spoken_emoji_1F62C" msgid="4616356691941225182">"Lice sa grimasom"</string>
+ <string name="spoken_emoji_1F62D" msgid="4283677508698812232">"Lice koje plače naglas"</string>
+ <string name="spoken_emoji_1F62E" msgid="726083405284353894">"Lice sa otvorenim ustima"</string>
+ <string name="spoken_emoji_1F62F" msgid="7746620088234710962">"Lice koje ućutkuje"</string>
+ <string name="spoken_emoji_1F630" msgid="3298804852155581163">"Lice sa otvorenim ustima, obliveno hladnim znojem"</string>
+ <string name="spoken_emoji_1F631" msgid="1603391150954646779">"Lice koje vrišti u strahu"</string>
+ <string name="spoken_emoji_1F632" msgid="4846193232203976013">"Zapanjeno lice"</string>
+ <string name="spoken_emoji_1F633" msgid="4023593836629700443">"Zajapureno lice"</string>
+ <string name="spoken_emoji_1F634" msgid="3155265083246248129">"Uspavano lice"</string>
+ <string name="spoken_emoji_1F635" msgid="4616691133452764482">"Lice kome se vrti"</string>
+ <string name="spoken_emoji_1F636" msgid="947000211822375683">"Lice bez usta"</string>
+ <string name="spoken_emoji_1F637" msgid="1269551267347165774">"Lice sa medicinskom maskom"</string>
+ <string name="spoken_emoji_1F638" msgid="3410766467496872301">"Lice mačke sa širokim osmehom i nasmejanim očima"</string>
+ <string name="spoken_emoji_1F639" msgid="1833417519781022031">"Lice mačke sa suzama radosnicama"</string>
+ <string name="spoken_emoji_1F63A" msgid="8566294484007152613">"Nasmejano lice mačke sa otvorenim ustima"</string>
+ <string name="spoken_emoji_1F63B" msgid="74417995938927571">"Nasmejano lice mačke sa očima u obliku srca"</string>
+ <string name="spoken_emoji_1F63C" msgid="6472812005729468870">"Lice mačke sa kiselim osmehom"</string>
+ <string name="spoken_emoji_1F63D" msgid="1638398369553349509">"Lice mačke koje ljubi sa zatvorenim očima"</string>
+ <string name="spoken_emoji_1F63E" msgid="6788969063020278986">"Nadureno lice mačke"</string>
+ <string name="spoken_emoji_1F63F" msgid="1207234562459550185">"Uplakano lice mačke"</string>
+ <string name="spoken_emoji_1F640" msgid="6023054549904329638">"Umorno lice mačke"</string>
+ <!-- no translation found for spoken_emoji_1F641 (2580807588556383139) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F642 (1150197386159721331) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F643 (7631520433919530552) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F644 (446284817942609022) -->
+ <skip />
+ <string name="spoken_emoji_1F645" msgid="5202090629227587076">"Lice sa izrazom „nešto nije u redu“"</string>
+ <string name="spoken_emoji_1F646" msgid="6734425134415138134">"Lice sa izrazom odobravanja"</string>
+ <string name="spoken_emoji_1F647" msgid="1090285518444205483">"Osoba koja se duboko klanja"</string>
+ <string name="spoken_emoji_1F648" msgid="8978535230610522356">"Majmun koji ne vidi ništa loše"</string>
+ <string name="spoken_emoji_1F649" msgid="8486145279809495102">"Majmun koji ne čuje ništa loše"</string>
+ <string name="spoken_emoji_1F64A" msgid="1237524974033228660">"Majmun koji ne govori ništa loše"</string>
+ <string name="spoken_emoji_1F64B" msgid="4251150782016370475">"Srećna osoba sa podignutom rukom"</string>
+ <string name="spoken_emoji_1F64C" msgid="5446231430684558344">"Osoba koja je iz radosti podigla ruke"</string>
+ <string name="spoken_emoji_1F64D" msgid="4646485595309482342">"Namrštena osoba"</string>
+ <string name="spoken_emoji_1F64E" msgid="3376579939836656097">"Nadurena osoba"</string>
+ <string name="spoken_emoji_1F64F" msgid="1044439574356230711">"Osoba sa spojenim rukama"</string>
+ <string name="spoken_emoji_1F680" msgid="513263736012689059">"Raketa"</string>
+ <string name="spoken_emoji_1F681" msgid="9201341783850525339">"Helikopter"</string>
+ <string name="spoken_emoji_1F682" msgid="8046933583867498698">"Parna lokomotiva"</string>
+ <string name="spoken_emoji_1F683" msgid="8772750354339223092">"Vagon"</string>
+ <string name="spoken_emoji_1F684" msgid="346396777356203608">"Brzi voz"</string>
+ <string name="spoken_emoji_1F685" msgid="1237059817190832730">"Brzi voz sa zaobljenim vrhom"</string>
+ <string name="spoken_emoji_1F686" msgid="3525197227223620343">"Voz"</string>
+ <string name="spoken_emoji_1F687" msgid="5110143437960392837">"Metro"</string>
+ <string name="spoken_emoji_1F688" msgid="4702085029871797965">"Gradska železnica"</string>
+ <string name="spoken_emoji_1F689" msgid="2375851019798817094">"Stanica"</string>
+ <string name="spoken_emoji_1F68A" msgid="6368370859718717198">"Tramvaj"</string>
+ <string name="spoken_emoji_1F68B" msgid="2920160427117436633">"Vagon tramvaja"</string>
+ <string name="spoken_emoji_1F68C" msgid="1061520934758810864">"Autobus"</string>
+ <string name="spoken_emoji_1F68D" msgid="2890059031360969304">"Autobus koji stiže"</string>
+ <string name="spoken_emoji_1F68E" msgid="6234042976027309654">"Trolejbus"</string>
+ <string name="spoken_emoji_1F68F" msgid="5871099334672012107">"Autobusko stajalište"</string>
+ <string name="spoken_emoji_1F690" msgid="8080964620200195262">"Minibus"</string>
+ <string name="spoken_emoji_1F691" msgid="999173032408730501">"Hitna pomoć"</string>
+ <string name="spoken_emoji_1F692" msgid="1712863785341849487">"Vatrogasna kola"</string>
+ <string name="spoken_emoji_1F693" msgid="7987109037389768934">"Policijski auto"</string>
+ <string name="spoken_emoji_1F694" msgid="6061658916653884608">"Policijski auto koji stiže"</string>
+ <string name="spoken_emoji_1F695" msgid="6913445460364247283">"Taksi"</string>
+ <string name="spoken_emoji_1F696" msgid="6391604457418285404">"Taksi koji stiže"</string>
+ <string name="spoken_emoji_1F697" msgid="7978399334396733790">"Automobil"</string>
+ <string name="spoken_emoji_1F698" msgid="7006050861129732018">"Automobil koji stiže"</string>
+ <string name="spoken_emoji_1F699" msgid="630317052666590607">"Kamp-vozilo"</string>
+ <string name="spoken_emoji_1F69A" msgid="4739797891735823577">"Kamion za isporuku"</string>
+ <string name="spoken_emoji_1F69B" msgid="4715997280786620649">"Kamion sa prikolicom"</string>
+ <string name="spoken_emoji_1F69C" msgid="5557395610750818161">"Traktor"</string>
+ <string name="spoken_emoji_1F69D" msgid="5467164189942951047">"Pruga sa jednim kolosekom"</string>
+ <string name="spoken_emoji_1F69E" msgid="169238196389832234">"Planinska pruga"</string>
+ <string name="spoken_emoji_1F69F" msgid="7508128757012845102">"Viseća železnica"</string>
+ <string name="spoken_emoji_1F6A0" msgid="8733056213790160147">"Planinska žičara"</string>
+ <string name="spoken_emoji_1F6A1" msgid="4666516337749347253">"Viseći tramvaj"</string>
+ <string name="spoken_emoji_1F6A2" msgid="4511220588943129583">"Brod"</string>
+ <string name="spoken_emoji_1F6A3" msgid="8412962252222205387">"Čamac"</string>
+ <string name="spoken_emoji_1F6A4" msgid="8867571300266339211">"Brzi motorni čamac"</string>
+ <string name="spoken_emoji_1F6A5" msgid="7650260812741963884">"Horizontalni semafor"</string>
+ <string name="spoken_emoji_1F6A6" msgid="485575967773793454">"Vertikalni semafor"</string>
+ <string name="spoken_emoji_1F6A7" msgid="6411048933816976794">"Znak za građevinske radove"</string>
+ <string name="spoken_emoji_1F6A8" msgid="6345717218374788364">"Rotaciono svetlo policijskog automobila"</string>
+ <string name="spoken_emoji_1F6A9" msgid="6586380356807600412">"Trouglasta zastava na stubu"</string>
+ <string name="spoken_emoji_1F6AA" msgid="8954448167261738885">"Vrata"</string>
+ <string name="spoken_emoji_1F6AB" msgid="5313946262888343544">"Simbol za zabranjen ulaz"</string>
+ <string name="spoken_emoji_1F6AC" msgid="6946858177965948288">"Simbol za pušenje"</string>
+ <string name="spoken_emoji_1F6AD" msgid="6320088669185507241">"Simbol zabranjenog pušenja"</string>
+ <string name="spoken_emoji_1F6AE" msgid="1062469925352817189">"Simbol koji upozorava gde treba bacati otpad"</string>
+ <string name="spoken_emoji_1F6AF" msgid="2286668056123642208">"Simbol zabrane bacanja otpada"</string>
+ <string name="spoken_emoji_1F6B0" msgid="179424763882990952">"Simbol vode za piće"</string>
+ <string name="spoken_emoji_1F6B1" msgid="5585212805429161877">"Simbol vode koja nije za piće"</string>
+ <string name="spoken_emoji_1F6B2" msgid="1771885082068421875">"Bicikl"</string>
+ <string name="spoken_emoji_1F6B3" msgid="8033779581263314408">"Zabranjeno za bicikle"</string>
+ <string name="spoken_emoji_1F6B4" msgid="1999538449018476947">"Biciklista"</string>
+ <string name="spoken_emoji_1F6B5" msgid="340846352660993117">"Planinski biciklista"</string>
+ <string name="spoken_emoji_1F6B6" msgid="4351024386495098336">"Pešak"</string>
+ <string name="spoken_emoji_1F6B7" msgid="4564800655866838802">"Zabranjeno za pešake"</string>
+ <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"Deca prelaze"</string>
+ <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"Simbol muškog toaleta"</string>
+ <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"Simbol ženskog toaleta"</string>
+ <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"Toalet"</string>
+ <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"Simbol za bebe"</string>
+ <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"Toalet"</string>
+ <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"WC"</string>
+ <string name="spoken_emoji_1F6BF" msgid="906336365928291207">"Tuš"</string>
+ <string name="spoken_emoji_1F6C0" msgid="4592099854378821599">"Kupatilo"</string>
+ <string name="spoken_emoji_1F6C1" msgid="2845056048320031158">"Kada"</string>
+ <string name="spoken_emoji_1F6C2" msgid="8117262514698011877">"Pasoška kontrola"</string>
+ <string name="spoken_emoji_1F6C3" msgid="1176342001834630675">"Carina"</string>
+ <string name="spoken_emoji_1F6C4" msgid="1477622834179978886">"Preuzimanje prtljaga"</string>
+ <string name="spoken_emoji_1F6C5" msgid="2495834050856617451">"Ostavljeni prtljag"</string>
+ <!-- no translation found for spoken_emoji_1F6CB (3573872215992460856) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6CC (5533098630848925915) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6CD (4591419999684883647) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6CE (3747424887764059629) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6CF (4913111315645834484) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6D0 (7538197710400229967) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6E0 (3263282970310123206) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6E1 (6426910766335807918) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6E2 (5167605828052365314) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6E3 (1107731664336606313) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6E4 (5902467073917590761) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6E5 (5188878074701467086) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6E9 (5852950271931619238) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6EB (2733806707250741222) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6EC (4869529552294301253) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6F0 (3448012994947964984) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6F3 (1127894976097893258) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F910 (4360725090163247960) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F911 (8595715714642200771) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F912 (6361337370946123054) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F913 (3175822147540114526) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F914 (3784454242803834936) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F915 (8277232429785015709) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F916 (4717142652070467513) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F917 (5434814678071084726) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F918 (6065030046434546286) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F980 (7396183110343909685) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F981 (1201691097417167784) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F982 (7295087763708065402) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F983 (9086413570044829984) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F984 (5757150507762082864) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F9C0 (3346738126264740148) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_0023_20E3 (3693649188523505503) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_002A_20E3 (6500437684406442358) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_0030_20E3 (6312420508970951699) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_0031_20E3 (5101790681679370329) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_0032_20E3 (6852105251673250734) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_0033_20E3 (6436737625517381721) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_0034_20E3 (7652958059237626893) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_0035_20E3 (1222504383755215423) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_0036_20E3 (7251599202525740371) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_0037_20E3 (7717155024038170161) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_0038_20E3 (744556233370117245) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_0039_20E3 (1891172571916106023) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1E8 (515584542061392145) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1E9 (9021988927513031086) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1EA (4856101611523027311) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1EB (3716145572492094038) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1EC (7286661601747455727) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1EE (94989132936786231) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1F1 (182374112533705554) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1F2 (8083744008211394946) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1F4 (1162797094210816783) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1F6 (8423968169207301745) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1F7 (6876638422035482357) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1F8 (8277196879892990334) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1F9 (2248522124836544558) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1FA (4458840480641529325) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1FC (1163927173985102777) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1FD (3030463315371570615) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1FF (612355136879823825) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1E6 (8760838318301758538) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1E7 (3157629488105877061) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1E9 (3576256753416957572) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1EA (664083045789831960) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1EB (1288425089161930952) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1EC (7159669370784906474) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1ED (6171060568325681800) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1EE (8825724034337572789) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1EF (481381108368354037) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1F1 (323880581960666092) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1F2 (6865529687293471865) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1F3 (6196184089269330603) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1F4 (7901700697723663375) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1F6 (3206988419974375148) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1F7 (3483402348221577606) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1F8 (3399891901314769071) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1F9 (8985883748925470425) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1FB (3357087874695825993) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1FC (2010150990697392924) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1FE (7660069185149104762) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1FF (4808586235664381640) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1E6 (1994799795544707087) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1E8 (4545193589020675153) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1E9 (971846413301682398) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1EB (7040500840320409927) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1EC (7814411108372534362) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1ED (7525661715353339833) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1EE (918386022730555752) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1F0 (1272608483604229355) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1F1 (4368512465692540121) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1F2 (1029570029642994892) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1F3 (1409448857910840128) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1F4 (6875493644298026833) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1F5 (2538762550371590224) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1F7 (888554264338218550) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1FA (4443590407200355667) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1FB (5581596688027484825) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1FC (7291024802305602214) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1FD (2788698554656649228) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1FE (5037633794290940318) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1FF (5384200881950442912) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E9_1F1EA (4047812762841623779) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E9_1F1EC (3569858113686878222) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E9_1F1EF (5200510107957246395) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E9_1F1F0 (8230065040498090250) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E9_1F1F2 (6971088854496559333) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E9_1F1F4 (2684281180913271831) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E9_1F1FF (5134944828411359548) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EA_1F1E6 (5992703503107448385) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EA_1F1E8 (7604769613933532639) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EA_1F1EA (780881058311953116) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EA_1F1EC (5379955220214737541) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EA_1F1ED (608191363783136124) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EA_1F1F7 (1974034165386559979) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EA_1F1F8 (7667964716717428380) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EA_1F1F9 (4028236645746627833) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EA_1F1FA (2605433302354957477) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EB_1F1EE (825447084506872225) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EB_1F1EF (1029994540873767904) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EB_1F1F0 (2992979756365410511) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EB_1F1F2 (1986035899283103062) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EB_1F1F4 (2441016703335601117) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EB_1F1F7 (6052493581307010327) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1E6 (8950853954004506523) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1E7 (8888357158195515349) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1E9 (3463286702486956748) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1EA (1180536780790586881) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1EB (1203001730316543314) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1EC (1840977808701617077) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1ED (8783297421754572238) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1EE (2567172982673015319) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1F1 (8178317151097107486) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1F2 (8595547572836079090) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1F3 (3646326386653741855) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1F5 (6864411408511905871) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1F6 (2059115105795502868) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1F7 (6459258808903505755) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1F8 (5458754397575470944) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1F9 (1467915615110741560) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1FA (4393335139566648919) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1FC (3425188247186220041) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1FE (1021690400460955309) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1ED_1F1F0 (3761740442568650190) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1ED_1F1F2 (6910358977247451757) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1ED_1F1F3 (1646439132096214446) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1ED_1F1F7 (1052046916656026391) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1ED_1F1F9 (8078385390509081446) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1ED_1F1FA (8804528562628572718) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EE_1F1E8 (3140919483825058219) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EE_1F1E9 (5502581798727777828) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EE_1F1EA (644825647040215471) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EE_1F1F1 (5743874630545163729) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EE_1F1F2 (3120136719636059223) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EE_1F1F3 (7645444982385343194) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EE_1F1F4 (9194565409945825135) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EE_1F1F6 (8988731584319817673) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EE_1F1F7 (2725630029704415631) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EE_1F1F8 (1010746786020461229) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EE_1F1F9 (9197939415727389837) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EF_1F1EA (2768571528360031663) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EF_1F1F2 (5221399784104523954) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EF_1F1F4 (5417778604376647557) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EF_1F1F5 (6507273654908139469) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F0_1F1EA (21237090866742866) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F0_1F1EC (8276011655824240009) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F0_1F1ED (6083653169314926215) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F0_1F1EE (9065926492362391494) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F0_1F1F2 (3247483394872878766) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F0_1F1F3 (5367548209741205839) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F0_1F1F5 (8936494847635883781) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F0_1F1F7 (6083499745947821288) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F0_1F1FC (1379041347924516759) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F0_1F1FE (4109777537443572630) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F0_1F1FF (552222434607517957) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F1_1F1E6 (5166202354177379139) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F1_1F1E7 (5664910004482751646) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F1_1F1E8 (4030901907323824445) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F1_1F1EE (1173785145388735876) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F1_1F1F0 (3577045271636841729) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F1_1F1F7 (7993304871488957893) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F1_1F1F8 (5224840012819747543) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F1_1F1F9 (3594812865734584207) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F1_1F1FA (224221840159454205) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F1_1F1FB (7718987237653945359) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F1_1F1FE (5998022588266933168) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1E6 (8965537225940059216) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1E8 (5827062380829465964) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1E9 (1226461313141287009) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1EA (559788800834584573) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1EB (5222394276026013118) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1EC (7183384701516848699) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1ED (6898522028833048325) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1F0 (7068152815895976960) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1F1 (7611046424376988616) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1F2 (491461913101284240) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1F3 (1450454181585256539) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1F4 (3352572139711280528) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1F5 (7536142087380383112) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1F6 (5424070233210033210) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1F7 (108173332528207905) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1F8 (4922582142276070473) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1F9 (3215356274998633531) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1FA (7064984448662302120) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1FB (7349657291755821742) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1FC (2970112458704297219) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1FD (6249447018233900361) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1FE (2415463066267602417) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1FF (5374300224943425292) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1E6 (7995033472926590061) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1E8 (6673558559311734824) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1EA (5248874974108203948) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1EB (8586671186548769011) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1EC (3610271061141196804) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1EE (3793576318302879471) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1F1 (7394150679646822106) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1F4 (4823752697520630443) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1F5 (8143013034442974213) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1F7 (2718588476956930593) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1FA (2136206841853719289) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1FF (7114679379862776721) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F4_1F1F2 (1366056698822189642) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1E6 (2318048598212415394) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1EA (3843366473938653876) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1EB (5842604724881232116) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1EC (1527509030357350666) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1ED (4519745708610996392) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1F0 (6461277576429215252) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1F1 (8076361813157658785) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1F2 (2895871984922747795) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1F3 (3351998070564812928) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1F7 (2273664192514768865) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1F8 (4184730889323208578) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1F9 (6088372177025496872) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1FC (6503480614531765009) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1FE (8948077259790298897) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F6_1F1E6 (5941022501487103264) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F7_1F1EA (6520393107511408733) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F7_1F1F4 (24771949751001440) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F7_1F1F8 (3958542649861771783) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F7_1F1FA (1079726084663529719) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F7_1F1FC (3705031663938652819) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1E6 (2776179858340260230) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1E7 (3665472085378450456) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1E8 (4466400506433158307) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1E9 (5614788248607521243) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1EA (2665982185283861392) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1EC (1054034328208566506) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1ED (4263061939910522547) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1EE (6565744105871887098) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1EF (3016523221609614043) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1F0 (5390016769601791982) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1F1 (6403850165793367854) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1F2 (4310711409277111575) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1F3 (6489885135970927076) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1F4 (5341079828952201668) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1F7 (8817875467979840211) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1F8 (2660263148212045846) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1F9 (8238122890022856070) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1FB (4615906903576645230) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1FD (4404781163148659815) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1FE (7179176431724187154) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1FF (8456502038439909076) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1E6 (7462600413724750923) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1E8 (8714687302692115701) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1E9 (4271932459960645451) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1EB (8824845043239747091) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1EC (6378688671192754868) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1ED (3342706257317087047) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1EF (1902800890327368738) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1F0 (5328199482828913429) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1F1 (8753850591122992884) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1F2 (5491037548857189992) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1F3 (7278463413655866267) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1F4 (7624316225889181844) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1F7 (5932331866489640094) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1F9 (4042249888728442471) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1FB (4705386325884538832) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1FC (9106106156487112003) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1FF (6594567669471176195) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FA_1F1E6 (7516283481055191487) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FA_1F1EC (7713151466830788434) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FA_1F1F2 (169503347987231777) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FA_1F1F8 (3794069376561841694) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FA_1F1FE (7768717385050492537) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FA_1F1FF (1957036711159158590) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FB_1F1E6 (6686626035855100794) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FB_1F1E8 (958901562721846738) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FB_1F1EA (8171514854370897858) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FB_1F1EC (7825072244650491600) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FB_1F1EE (8177320330941963456) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FB_1F1F3 (6211275163002022414) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FB_1F1FA (7638199094441690866) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FC_1F1EB (2750545602487865333) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FC_1F1F8 (1717055707936794276) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FD_1F1F0 (8924460310127605012) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FE_1F1EA (5020385658435288646) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FE_1F1F9 (5627032701159894458) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FF_1F1E6 (3518155724469542909) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FF_1F1F2 (1316086892525163001) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FF_1F1FC (7229025296887296741) -->
+ <skip />
+</resources>
diff --git a/java/res/values-b+sr+Latn/strings-letter-descriptions.xml b/java/res/values-b+sr+Latn/strings-letter-descriptions.xml
new file mode 100644
index 000000000..53a5721ee
--- /dev/null
+++ b/java/res/values-b+sr+Latn/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!--
+ These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+ These symbols (spoken_symbol_*) are also unsupported by TTS.
+ TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Znak za redni broj u ženskom rodu"</string>
+ <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Znak mikro"</string>
+ <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Znak za redni broj u muškom rodu"</string>
+ <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Oštro s"</string>
+ <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"Kratkouzlazno a"</string>
+ <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"Dugouzlazno a"</string>
+ <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A sa cirkumfleksom"</string>
+ <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A sa tildom"</string>
+ <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A sa umlautom"</string>
+ <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A sa kružićem iznad"</string>
+ <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"Ligatura a i e"</string>
+ <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C sa sediljom"</string>
+ <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"Kratkouzlazno e"</string>
+ <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"Dugouzlazno e"</string>
+ <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E sa cirkumfleksom"</string>
+ <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E sa umlautom"</string>
+ <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"Kratkouzlazno i"</string>
+ <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"Dugouzlazno i"</string>
+ <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I sa cirkumfleksom"</string>
+ <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I sa umlautom"</string>
+ <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Et"</string>
+ <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N sa tildom"</string>
+ <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"Kratkouzlazno o"</string>
+ <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"Dugouzlazno o"</string>
+ <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O sa cirkumfleksom"</string>
+ <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O sa tildom"</string>
+ <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O sa umlautom"</string>
+ <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"Precrtano o"</string>
+ <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"Kratkouzlazno u"</string>
+ <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"Dugouzlazno u"</string>
+ <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U sa cirkumfleksom"</string>
+ <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U sa umlautom"</string>
+ <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Dugouzlazni ipsilon"</string>
+ <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Torn"</string>
+ <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Ipsilon sa umlautom"</string>
+ <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A sa makronom"</string>
+ <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A sa brevom"</string>
+ <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A sa ogonekom"</string>
+ <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"Dugouzlazno c"</string>
+ <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C sa cirkumfleksom"</string>
+ <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C sa tačkom iznad"</string>
+ <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"Č"</string>
+ <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D sa kvačicom"</string>
+ <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"Đ"</string>
+ <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E sa makronom"</string>
+ <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E sa brevom"</string>
+ <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E sa tačkom iznad"</string>
+ <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E sa ogonekom"</string>
+ <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E sa kvačicom"</string>
+ <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G sa cirkumfleksom"</string>
+ <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G sa brevom"</string>
+ <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G sa tačkom iznad"</string>
+ <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G sa sediljom"</string>
+ <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H sa cirkumfleksom"</string>
+ <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"Precrtano h"</string>
+ <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I sa tildom"</string>
+ <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I sa makronom"</string>
+ <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I sa brevom"</string>
+ <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I sa ogonekom"</string>
+ <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I bez tačke"</string>
+ <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"Ligatura i i j"</string>
+ <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J sa cirkumfleksom"</string>
+ <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K sa sediljom"</string>
+ <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+ <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"Dugouzlazno l"</string>
+ <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L sa sediljom"</string>
+ <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L sa kvačicom"</string>
+ <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L sa tačkom na sredini"</string>
+ <string name="spoken_accented_letter_0142" msgid="752931798111122240">"Precrtano l"</string>
+ <string name="spoken_accented_letter_0144" msgid="201843550323875352">"Dugouzlazno n"</string>
+ <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N sa sediljom"</string>
+ <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N sa kvačicom"</string>
+ <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N kome prethodi apostrof"</string>
+ <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Angma"</string>
+ <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O sa makronom"</string>
+ <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O sa brevom"</string>
+ <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O sa dvostrukim akutnim akcentom"</string>
+ <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"Ligatura o i e"</string>
+ <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"Dugouzlazno r"</string>
+ <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R sa sediljom"</string>
+ <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R sa kvačicom"</string>
+ <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"Dugouzlazno s"</string>
+ <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S sa cirkumfleksom"</string>
+ <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S sa sediljom"</string>
+ <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"Š"</string>
+ <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T sa sediljom"</string>
+ <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T sa kvačicom"</string>
+ <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"Precrtano t"</string>
+ <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U sa tildom"</string>
+ <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U sa makronom"</string>
+ <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U sa brevom"</string>
+ <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U sa kružićem iznad"</string>
+ <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U sa dvostrukim akutnim akcentom"</string>
+ <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U sa ogonekom"</string>
+ <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"Duplo ve sa cirkumfleksom"</string>
+ <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Ipsilon sa cirkumfleksom"</string>
+ <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Dugouzlazno z"</string>
+ <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z sa tačkom iznad"</string>
+ <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Ž"</string>
+ <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Dugo s"</string>
+ <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O sa rogom"</string>
+ <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U sa rogom"</string>
+ <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S sa zarezom ispod"</string>
+ <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T sa zarezom ispod"</string>
+ <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Šva"</string>
+ <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A sa tačkom ispod"</string>
+ <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A sa kukom iznad"</string>
+ <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A sa cirkumfleksom, dugouzlazno"</string>
+ <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A sa cirkumfleksom, kratkouzlazno"</string>
+ <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A sa cirkumfleksom i kukom iznad"</string>
+ <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A sa cirkumfleksom i tildom"</string>
+ <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A sa cirkumfleksom i tačkom ispod"</string>
+ <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A sa brevom, dugouzlazno"</string>
+ <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A sa brevom, kratkouzlazno"</string>
+ <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A sa brevom i kukom iznad"</string>
+ <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A sa brevom i tildom"</string>
+ <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A sa brevom i tačkom ispod"</string>
+ <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E sa tačkom ispod"</string>
+ <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E sa kukom iznad"</string>
+ <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E sa tildom"</string>
+ <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E sa cirkumfleksom, dugouzlazno"</string>
+ <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E sa cirkumfleksom, kratkouzlazno"</string>
+ <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E sa cirkumfleksom i kukom iznad"</string>
+ <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E sa cirkumfleksom i tildom"</string>
+ <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E sa cirkumfleksom i tačkom ispod"</string>
+ <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I sa kukom iznad"</string>
+ <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I sa tačkom ispod"</string>
+ <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O sa tačkom ispod"</string>
+ <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O sa kukom iznad"</string>
+ <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O sa cirkumfleksom, dugouzlazno"</string>
+ <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O sa cirkumfleksom, kratkouzlazno"</string>
+ <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O sa cirkumfleksom i kukom iznad"</string>
+ <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O sa cirkumfleksom i tildom"</string>
+ <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O sa cirkumfleksom i tačkom ispod"</string>
+ <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O sa rogom, dugouzlazno"</string>
+ <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O sa rogom, kratkouzlazno"</string>
+ <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O sa rogom i kukom iznad"</string>
+ <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O sa rogom i tildom"</string>
+ <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O sa rogom i tačkom ispod"</string>
+ <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U sa tačkom ispod"</string>
+ <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U sa kukom iznad"</string>
+ <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U sa rogom, dugouzlazno"</string>
+ <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U sa rogom, kratkouzlazno"</string>
+ <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U sa rogom i kukom iznad"</string>
+ <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U sa rogom i tildom"</string>
+ <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U sa rogom i tačkom ispod"</string>
+ <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Kratkouzlazni ipsilon"</string>
+ <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Ipsilon sa tačkom ispod"</string>
+ <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Ipsilon sa kukom iznad"</string>
+ <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Ipsilon sa tildom"</string>
+ <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Obrnuti znak uzvika"</string>
+ <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Levi dvostruki uglasti navodnici"</string>
+ <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Tačka na sredini"</string>
+ <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Jedan u eksponentnom tekstu"</string>
+ <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Desni dvostruki uglasti navodnici"</string>
+ <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Obrnuti znak pitanja"</string>
+ <string name="spoken_symbol_2018" msgid="4886476295598930225">"Levi jednostruki navodnik"</string>
+ <string name="spoken_symbol_2019" msgid="8892530161598134083">"Desni jednostruki navodnik"</string>
+ <string name="spoken_symbol_201A" msgid="2072987157683446644">"Jednostruki donji otvoreni navodnik"</string>
+ <string name="spoken_symbol_201C" msgid="4588048378803665427">"Levi dvostruki navodnik"</string>
+ <string name="spoken_symbol_201D" msgid="1642776849495925895">"Desni dvostruki navodnik"</string>
+ <string name="spoken_symbol_2020" msgid="9084628638189344431">"Obelisk"</string>
+ <string name="spoken_symbol_2021" msgid="5081396468559426475">"Dvostruki obelisk"</string>
+ <string name="spoken_symbol_2030" msgid="9068837172419431755">"Znak za promil"</string>
+ <string name="spoken_symbol_2032" msgid="3014506329156664396">"Prim"</string>
+ <string name="spoken_symbol_2033" msgid="1251022699713475088">"Dupli prim"</string>
+ <string name="spoken_symbol_2039" msgid="6989616457213775957">"Levi jednostruki uglasti navodnik"</string>
+ <string name="spoken_symbol_203A" msgid="31245095449823701">"Desni jednostruki uglasti navodnik"</string>
+ <string name="spoken_symbol_2074" msgid="2116717717093306894">"Četiri u eksponentnom tekstu"</string>
+ <string name="spoken_symbol_207F" msgid="1706731172134246659">"Malo latinično n u eksponentnom tekstu"</string>
+ <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Znak za pezo"</string>
+ <string name="spoken_symbol_2105" msgid="7289404939366976829">"Za"</string>
+ <string name="spoken_symbol_2192" msgid="827804523596125414">"Strelica nadesno"</string>
+ <string name="spoken_symbol_2193" msgid="2659541693445985717">"Strelica nadole"</string>
+ <string name="spoken_symbol_2205" msgid="4457188084269117343">"Prazan skup"</string>
+ <string name="spoken_symbol_2206" msgid="4856786565708380687">"Povećanje"</string>
+ <string name="spoken_symbol_2264" msgid="5092061257745123554">"Manje ili jednako"</string>
+ <string name="spoken_symbol_2265" msgid="1907966479878036357">"Veće ili jednako"</string>
+ <string name="spoken_symbol_2605" msgid="5202920479405857753">"Crna zvezdica"</string>
+</resources>
diff --git a/java/res/values-b+sr+Latn/strings-talkback-descriptions.xml b/java/res/values-b+sr+Latn/strings-talkback-descriptions.xml
new file mode 100644
index 000000000..556b5ab79
--- /dev/null
+++ b/java/res/values-b+sr+Latn/strings-talkback-descriptions.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="spoken_use_headphones" msgid="4313642710742229868">"Uključite slušalice da biste čuli naglas izgovorene tastere za lozinku."</string>
+ <string name="spoken_current_text_is" msgid="4240549866156675799">"Trenutni tekst je %s"</string>
+ <string name="spoken_no_text_entered" msgid="1711276837961785646">"Tekst nije unet"</string>
+ <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> ispravlja <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> u <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+ <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> obavlja automatsko ispravljanje"</string>
+ <string name="spoken_empty_suggestion" msgid="4250215619373459752">"Nema predloga"</string>
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Nepoznati znak"</string>
+ <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+ <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Još simbola"</string>
+ <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+ <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Simboli"</string>
+ <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+ <string name="spoken_description_delete" msgid="3878902286264983302">"Izbriši"</string>
+ <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Simboli"</string>
+ <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Slova"</string>
+ <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Brojevi"</string>
+ <string name="spoken_description_settings" msgid="7281251004003143204">"Podešavanja"</string>
+ <string name="spoken_description_tab" msgid="8210782459446866716">"Kartica"</string>
+ <string name="spoken_description_space" msgid="5908716896642059145">"Razmak"</string>
+ <string name="spoken_description_mic" msgid="6153138783813452464">"Glasovni unos"</string>
+ <string name="spoken_description_emoji" msgid="7990051553008088470">"Emodži"</string>
+ <string name="spoken_description_return" msgid="3183692287397645708">"Return"</string>
+ <string name="spoken_description_search" msgid="5099937658231911288">"Pretraži"</string>
+ <string name="spoken_description_dot" msgid="5644176501632325560">"Tačka"</string>
+ <string name="spoken_description_language_switch" msgid="6818666779313544553">"Prebaci jezik"</string>
+ <string name="spoken_description_action_next" msgid="431761808119616962">"Prethodno"</string>
+ <string name="spoken_description_action_previous" msgid="2919072174697865110">"Sledeće"</string>
+ <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift je omogućen"</string>
+ <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock je omogućen"</string>
+ <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Režim simbola"</string>
+ <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Režim Još simbola"</string>
+ <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Režim slova"</string>
+ <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Režim telefona"</string>
+ <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Režim simbola telefona"</string>
+ <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Tastatura je sakrivena"</string>
+ <string name="announce_keyboard_mode" msgid="6698257917367823205">"Prikazujemo tastaturu u režimu <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+ <string name="keyboard_mode_date" msgid="6597407244976713364">"datum"</string>
+ <string name="keyboard_mode_date_time" msgid="3642804408726668808">"datum i vreme"</string>
+ <string name="keyboard_mode_email" msgid="1239682082047693644">"imejl"</string>
+ <string name="keyboard_mode_im" msgid="3812086215529493501">"razmena poruka"</string>
+ <string name="keyboard_mode_number" msgid="5395042245837996809">"broj"</string>
+ <string name="keyboard_mode_phone" msgid="2486230278064523665">"telefon"</string>
+ <string name="keyboard_mode_text" msgid="9138789594969187494">"tekst"</string>
+ <string name="keyboard_mode_time" msgid="8558297845514402675">"vreme"</string>
+ <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+ <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Nedavni kontakti"</string>
+ <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Ljudi"</string>
+ <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Predmeti"</string>
+ <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Priroda"</string>
+ <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Mesta"</string>
+ <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Simboli"</string>
+ <string name="spoken_descrption_emoji_category_flags" msgid="5971573825866381472">"Zastave"</string>
+ <string name="spoken_descrption_emoji_category_eight_smiley_people" msgid="5682663819532433464">"Smajliji i ljudi"</string>
+ <string name="spoken_descrption_emoji_category_eight_animals_nature" msgid="5844950234883716704">"Životinje i priroda"</string>
+ <string name="spoken_descrption_emoji_category_eight_food_drink" msgid="6196944764485349650">"Hrana i piće"</string>
+ <string name="spoken_descrption_emoji_category_eight_travel_places" msgid="3834085499381434611">"Putovanja i mesta"</string>
+ <string name="spoken_descrption_emoji_category_eight_activity" msgid="4795281669042975993">"Aktivnosti"</string>
+ <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emotikoni"</string>
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Veliko <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"Veliko I"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Veliko I sa tačkom iznad"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Nepoznat simbol"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Nepoznati emodži"</string>
+ <string name="spoken_emoticon_3A_2D_21_20" msgid="2410905667389534573">"Lice kome je dosadno"</string>
+ <string name="spoken_emoticon_3A_2D_24_20" msgid="2481260475945560438">"Postiđeno lice"</string>
+ <string name="spoken_emoticon_42_2D_29_20" msgid="1063205250387128068">"Lice sa naočarima za sunce"</string>
+ <string name="spoken_emoticon_3A_4F_20" msgid="532695091593447238">"Iznenađeno lice"</string>
+ <string name="spoken_emoticon_3A_2D_2A_20" msgid="5612342617244114291">"Lice koje ljubi"</string>
+ <string name="spoken_emoticon_3A_2D_5B_20" msgid="2223507987759905920">"Namršteno lice"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Dostupni su alternativni znaci"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternativni znaci su odbačeni"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Dostupni su alternativni predlozi"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternativni predlozi su odbačeni"</string>
+</resources>
diff --git a/java/res/values-b+sr+Latn/strings.xml b/java/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 000000000..e072371f6
--- /dev/null
+++ b/java/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2008, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="english_ime_input_options" msgid="3909945612939668554">"Opcije unosa"</string>
+ <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Potraži imena kontakata"</string>
+ <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Kontrolor pravopisa koristi unose sa liste kontakata"</string>
+ <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibriraj na pritisak tastera"</string>
+ <string name="sound_on_keypress" msgid="6093592297198243644">"Zvuk na pritisak tastera"</string>
+ <string name="popup_on_keypress" msgid="123894815723512944">"Iskačući prozor prilikom pritiska tastera"</string>
+ <string name="settings_screen_preferences" msgid="2696713156722014624">"Podešavanja"</string>
+ <string name="settings_screen_accounts" msgid="2786418968536696670">"Nalozi i privatnost"</string>
+ <string name="settings_screen_appearance" msgid="7358046399111611615">"Izgled i rasporedi"</string>
+ <string name="settings_screen_gesture" msgid="8826372746901183556">"Kucanje pokretima"</string>
+ <string name="settings_screen_correction" msgid="1616818407747682955">"Ispravljanje teksta"</string>
+ <string name="settings_screen_advanced" msgid="7472408607625972994">"Napredno"</string>
+ <string name="settings_screen_theme" msgid="2137262503543943871">"Tema"</string>
+ <string name="enable_split_keyboard" msgid="4177264923999493614">"Omogući podeljenu tastaturu"</string>
+ <string name="cloud_sync_title" msgid="8579271074443847055">"Sinhronizuj Google tastaturu"</string>
+ <string name="cloud_sync_summary" msgid="7684887161145650857">"Sinhronizacija je uključena"</string>
+ <string name="cloud_sync_summary_disabled" msgid="4553338970382825796">"Sinhronizujte lični rečnik na svim uređajima"</string>
+ <string name="sync_now_title" msgid="3088838136743277721">"Sinhronizuj odmah"</string>
+ <string name="clear_sync_data_title" msgid="8582001557037069154">"Želite da izbrišete podatke iz klauda"</string>
+ <string name="clear_sync_data_summary" msgid="993477139012576584">"Briše sinhronizovane podatke sa Google-a"</string>
+ <string name="clear_sync_data_confirmation" msgid="2811931135574727678">"Izbrisaćemo sinhronizovane podatke iz klauda. Da li ste sigurni?"</string>
+ <string name="clear_sync_data_ok" msgid="613104067705915132">"Izbriši"</string>
+ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Otkaži"</string>
+ <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"Sinhronizovaćemo lični rečnik i napravićemo njegovu rezervnu kopiju na Google serverima. Možda ćemo prikupljati statističke podatke o učestalosti reči da bismo poboljšali proizvode. Prikupljanje i korišćenje svih informacija će biti u skladu sa "<a href="https://www.google.com/policies/privacy">"Google-ovom politikom privatnosti"</a>"."</string>
+ <string name="add_account_to_enable_sync" msgid="7836932571852055265">"Dodajte Google nalog na uređaj da biste omogućili ovu funkciju"</string>
+ <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sinhroniz. nije dostupna za uređaje sa nalozima Google Apps for Business"</string>
+ <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Prebaci na druge metode unosa"</string>
+ <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Taster za prebacivanje jezika obuhvata i druge metode unosa"</string>
+ <string name="show_language_switch_key" msgid="5915478828318774384">"Taster za prebacivanje jezika"</string>
+ <string name="show_language_switch_key_summary" msgid="7343403647474265713">"Prikaži kada je omogućeno više jezika unosa"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Odloži odbacivanje iskačućeg prozora tastera"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Bez odlaganja"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Podrazumevano"</string>
+ <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g> ms"</string>
+ <string name="settings_system_default" msgid="6268225104743331821">"Podrazumevano"</string>
+ <string name="use_contacts_dict" msgid="4435317977804180815">"Predloži imena kontakata"</string>
+ <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Koristi imena iz Kontakata za predloge i ispravke"</string>
+ <string name="use_personalized_dicts" msgid="5167396352105467626">"Personalizovani predlozi"</string>
+ <string name="enable_metrics_logging" msgid="5506372337118822837">"Poboljšajte aplikaciju <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+ <string name="use_double_space_period" msgid="8781529969425082860">"Tačka i razmak"</string>
+ <string name="use_double_space_period_summary" msgid="6532892187247952799">"Dvostrukim dodirom razmaka umeće se tačka praćena razmakom"</string>
+ <string name="auto_cap" msgid="1719746674854628252">"Automatski unos velikih slova"</string>
+ <string name="auto_cap_summary" msgid="7934452761022946874">"Pisanje velikog slova na početku svake rečenice"</string>
+ <string name="edit_personal_dictionary" msgid="3996910038952940420">"Lični rečnik"</string>
+ <string name="configure_dictionaries_title" msgid="4238652338556902049">"Pomoćni rečnici"</string>
+ <string name="main_dictionary" msgid="4798763781818361168">"Glavni rečnik"</string>
+ <string name="prefs_show_suggestions" msgid="8026799663445531637">"Prikaži predloge za ispravku"</string>
+ <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Prikazivanje predloženih reči tokom unosa teksta"</string>
+ <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"Blokiraj uvredljive reči"</string>
+ <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Nema predlaganja potencijalno uvredljivih reči"</string>
+ <string name="auto_correction" msgid="7630720885194996950">"Autom. ispravljanje"</string>
+ <string name="auto_correction_summary" msgid="5625751551134658006">"Razmak i interpunkcija automatski ispravljaju greške u kucanju"</string>
+ <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Isključi"</string>
+ <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Umereno"</string>
+ <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"Agresivno"</string>
+ <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"Veoma agresivno"</string>
+ <string name="bigram_prediction" msgid="1084449187723948550">"Predlozi za sledeću reč"</string>
+ <string name="bigram_prediction_summary" msgid="3896362682751109677">"Koristi prethodnu reč pri davanju predloga"</string>
+ <string name="gesture_input" msgid="826951152254563827">"Omogući unos pokretom"</string>
+ <string name="gesture_input_summary" msgid="9180350639305731231">"Unesite reč prevlačenjem prsta preko od slova do slova na ekranu"</string>
+ <string name="gesture_preview_trail" msgid="3802333369335722221">"Prikaži trag pokreta"</string>
+ <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dinamički plutajući pregled"</string>
+ <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Prikazuje predloženu reč pri unosu pokretom"</string>
+ <string name="gesture_space_aware" msgid="2078291600664682496">"Pokret za fraze"</string>
+ <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Unosite razmake tokom pokreta prelaskom do tastera za razmak"</string>
+ <string name="voice_input" msgid="3583258583521397548">"Taster za glasovni unos"</string>
+ <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Nijedan metod glasovnog unosa nije omogućen. Proverite Podešavanja jezika i unosa."</string>
+ <string name="configure_input_method" msgid="373356270290742459">"Konfigurisanje metoda unosa"</string>
+ <string name="language_selection_title" msgid="3666971864764478269">"Jezici"</string>
+ <string name="help_and_feedback" msgid="5328219371839879161">"Pomoć i povratne informacije"</string>
+ <string name="select_language" msgid="5709487854987078367">"Jezici"</string>
+ <string name="hint_add_to_dictionary" msgid="573678656946085380">"Ponovo dodirnite da biste sačuvali"</string>
+ <string name="hint_add_to_dictionary_without_word" msgid="3040385779511255101">"Dodirnite ovde da biste sačuvali"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"Rečnik je dostupan"</string>
+ <string name="keyboard_layout" msgid="8451164783510487501">"Tema tastature"</string>
+ <string name="switch_accounts" msgid="3321216593719006162">"Promenite nalog"</string>
+ <string name="no_accounts_selected" msgid="2073821619103904330">"Nije izabran nijedan nalog"</string>
+ <string name="account_selected" msgid="2846876462199625974">"Trenutno koristite <xliff:g id="EMAIL_ADDRESS">%1$s</xliff:g>"</string>
+ <string name="account_select_ok" msgid="9141195141763227797">"Potvrdi"</string>
+ <string name="account_select_cancel" msgid="5181012062618504340">"Otkaži"</string>
+ <string name="account_select_sign_out" msgid="3299651159390187933">"Odjavi me"</string>
+ <string name="account_select_title" msgid="6279711684772922649">"Izaberite nalog koji ćete koristiti"</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"engleski (UK)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"engleski (SAD)"</string>
+ <string name="subtype_es_US" msgid="5583145191430180200">"španski (SAD)"</string>
+ <string name="subtype_hi_ZZ" msgid="8860448146262798623">"hengleski"</string>
+ <string name="subtype_sr_ZZ" msgid="9059219552986034343">"srpski (latinica)"</string>
+ <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"engleski (UK) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+ <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"engleski (SAD) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+ <string name="subtype_with_layout_es_US" msgid="510930471167541338">"španski (SAD) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+ <string name="subtype_with_layout_hi_ZZ" msgid="6827402953860547044">"hengleski (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+ <string name="subtype_with_layout_sr_ZZ" msgid="2859024772719772407">"srpski (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+ <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tradicionalni)"</string>
+ <string name="subtype_generic_compact" msgid="3353673321203202922">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (kompaktna)"</string>
+ <string name="subtype_no_language" msgid="7137390094240139495">"Nema jezika (abeceda)"</string>
+ <string name="subtype_no_language_qwerty" msgid="244337630616742604">"abeceda (QWERTY)"</string>
+ <string name="subtype_no_language_qwertz" msgid="443066912507547976">"abeceda (QWERTZ)"</string>
+ <string name="subtype_no_language_azerty" msgid="8144348527575640087">"abeceda (AZERTY)"</string>
+ <string name="subtype_no_language_dvorak" msgid="1564494667584718094">"abeceda (Dvorak)"</string>
+ <string name="subtype_no_language_colemak" msgid="5837418400010302623">"abeceda (Colemak)"</string>
+ <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"abeceda (PC)"</string>
+ <string name="subtype_emoji" msgid="7483586578074549196">"Emotikoni"</string>
+ <string name="keyboard_theme" msgid="4909551808526178852">"Tema tastature"</string>
+ <string name="custom_input_styles_title" msgid="8429952441821251512">"Prilagođeni stilovi unosa"</string>
+ <string name="add_style" msgid="6163126614514489951">"Dodajte stil"</string>
+ <string name="add" msgid="8299699805688017798">"Dodaj"</string>
+ <string name="remove" msgid="4486081658752944606">"Ukloni"</string>
+ <string name="save" msgid="7646738597196767214">"Sačuvaj"</string>
+ <string name="subtype_locale" msgid="8576443440738143764">"Jezik"</string>
+ <string name="keyboard_layout_set" msgid="4309233698194565609">"Raspored"</string>
+ <string name="custom_input_style_note_message" msgid="8826731320846363423">"Prilagođeni stil unosa treba da bude omogućen da biste počeli da ga koristite. Želite li da ga omogućite sada?"</string>
+ <string name="enable" msgid="5031294444630523247">"Omogući"</string>
+ <string name="not_now" msgid="6172462888202790482">"Ne sada"</string>
+ <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Isti stil unosa već postoji: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Trajanje vibracije pri pritisku"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Jačina zvuka pri pritisku"</string>
+ <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Odlaganje pri dugom pritisku"</string>
+ <string name="prefs_enable_emoji_alt_physical_key" msgid="5963640002335470112">"Emodži za fizičku tastaturu"</string>
+ <string name="prefs_enable_emoji_alt_physical_key_summary" msgid="5259484820941627827">"Fizički taster Alt pokazuje paletu emodžija"</string>
+ <string name="button_default" msgid="3988017840431881491">"Podrazumevano"</string>
+ <string name="setup_welcome_title" msgid="6112821709832031715">"Dobro došli u <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+ <string name="setup_welcome_additional_description" msgid="8150252008545768953">"pomoću Kucanja pokretima"</string>
+ <string name="setup_start_action" msgid="8936036460897347708">"Započnimo"</string>
+ <string name="setup_next_action" msgid="371821437915144603">"Sledeći korak"</string>
+ <string name="setup_steps_title" msgid="6400373034871816182">"Podešavanje aplikacije <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+ <string name="setup_step1_title" msgid="3147967630253462315">"Omogućite aplikaciju <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+ <string name="setup_step1_instruction" msgid="2578631936624637241">"Potvrdite aplikaciju „<xliff:g id="APPLICATION_NAME">%s</xliff:g>“ u Podešavanjima jezika i unosa. Tako joj odobravate pokretanje na uređaju."</string>
+ <string name="setup_step1_finished_instruction" msgid="10761482004957994">"Aplikacija <xliff:g id="APPLICATION_NAME">%s</xliff:g> je već omogućena u Podešavanjima jezika i unosa tako da je ovaj korak gotov. Pređimo na sledeći!"</string>
+ <string name="setup_step1_action" msgid="4366513534999901728">"Omogući u Podešavanjima"</string>
+ <string name="setup_step2_title" msgid="6860725447906690594">"Prebacite na <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+ <string name="setup_step2_instruction" msgid="9141481964870023336">"Zatim izaberite „<xliff:g id="APPLICATION_NAME">%s</xliff:g>“ kao aktivni metod unosa teksta."</string>
+ <string name="setup_step2_action" msgid="1660330307159824337">"Prebaci metode unosa"</string>
+ <string name="setup_step3_title" msgid="3154757183631490281">"Čestitamo, sve je spremno!"</string>
+ <string name="setup_step3_instruction" msgid="8025981829605426000">"Sada možete da kucate u svim omiljenim aplikacijama pomoću <xliff:g id="APPLICATION_NAME">%s</xliff:g>."</string>
+ <string name="setup_step3_action" msgid="600879797256942259">"Konfiguriši dodatne jezike"</string>
+ <string name="setup_finish_action" msgid="276559243409465389">"Završeno"</string>
+ <string name="show_setup_wizard_icon" msgid="5008028590593710830">"Prikaži ikonu aplikacije"</string>
+ <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"Ikona aplikacije se prikazuje u pokretaču"</string>
+ <string name="app_name" msgid="6320102637491234792">"Dobavljač rečnika"</string>
+ <string name="dictionary_provider_name" msgid="3027315045397363079">"Dobavljač rečnika"</string>
+ <string name="dictionary_service_name" msgid="6237472350693511448">"Usluga rečnika"</string>
+ <string name="download_description" msgid="6014835283119198591">"Informacije o ažuriranju rečnika"</string>
+ <string name="dictionary_settings_title" msgid="8091417676045693313">"Pomoćni rečnici"</string>
+ <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"Rečnik je dostupan"</string>
+ <string name="dictionary_settings_summary" msgid="5305694987799824349">"Podešavanja za rečnike"</string>
+ <string name="user_dictionaries" msgid="3582332055892252845">"Korisnički rečnici"</string>
+ <string name="default_user_dict_pref_name" msgid="1625055720489280530">"Korisnički rečnik"</string>
+ <string name="dictionary_available" msgid="4728975345815214218">"Rečnik je dostupan"</string>
+ <string name="dictionary_downloading" msgid="2982650524622620983">"Trenutno se preuzima"</string>
+ <string name="dictionary_installed" msgid="8081558343559342962">"Instaliran je"</string>
+ <string name="dictionary_disabled" msgid="8950383219564621762">"Instaliran je i onemogućen"</string>
+ <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"Problem pri povezivanju s uslugom rečnika"</string>
+ <string name="no_dictionaries_available" msgid="8039920716566132611">"Nema dostupnih rečnika"</string>
+ <string name="check_for_updates_now" msgid="8087688440916388581">"Osveži"</string>
+ <string name="last_update" msgid="730467549913588780">"Poslednje ažuriranje"</string>
+ <string name="message_updating" msgid="4457761393932375219">"Traže se ažuriranja"</string>
+ <string name="message_loading" msgid="5638680861387748936">"Učitava se…"</string>
+ <string name="main_dict_description" msgid="3072821352793492143">"Glavni rečnik"</string>
+ <string name="cancel" msgid="6830980399865683324">"Otkaži"</string>
+ <string name="go_to_settings" msgid="3876892339342569259">"Podešavanja"</string>
+ <string name="install_dict" msgid="180852772562189365">"Instaliraj"</string>
+ <string name="cancel_download_dict" msgid="7843340278507019303">"Otkaži"</string>
+ <string name="delete_dict" msgid="756853268088330054">"Izbriši"</string>
+ <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Dostupan je rečnik za izabrani jezik na mobilnom uređaju.&lt;br/&gt; Preporučujemo vam da &lt;b&gt;preuzmete&lt;/b&gt; rečnik za <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> da biste poboljšali doživljaj kucanja.&lt;br/&gt; &lt;br/&gt; Preuzimanje može da traje minut ili dva preko 3G mreže. Troškovi će možda biti naplaćeni ako nemate &lt;b&gt;pretplatnički paket bez ograničenja&lt;/b&gt;.&lt;br/&gt; Ako niste sigurni koji pretplatnički paket imate, preporučujemo vam da pronađete Wi-Fi vezu da biste automatski započeli preuzimanje.&lt;br/&gt; &lt;br/&gt; Savet: Rečnike možete da preuzimate i uklanjate ako odete na &lt;b&gt;Jezik i unos&lt;/b&gt; u meniju &lt;b&gt;Podešavanja&lt;/b&gt; na mobilnom uređaju."</string>
+ <string name="download_over_metered" msgid="1643065851159409546">"Preuzmi odmah (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
+ <string name="do_not_download_over_metered" msgid="2176209579313941583">"Preuzmi preko Wi-Fi-ja"</string>
+ <string name="dict_available_notification_title" msgid="4583842811218581658">"Dostupan je rečnik za <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
+ <string name="dict_available_notification_description" msgid="1075194169443163487">"Pritisnite za pregled i preuzimanje"</string>
+ <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Preuzimanje: Predlozi za <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> će uskoro biti spremni."</string>
+ <string name="version_text" msgid="2715354215568469385">"Verzija <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Dodaj"</string>
+ <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Dodavanje u rečnik"</string>
+ <string name="user_dict_settings_add_screen_title" msgid="5818914331629278758">"Fraza"</string>
+ <string name="user_dict_settings_add_dialog_more_options" msgid="5671682004887093112">"Više opcija"</string>
+ <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"Manje opcija"</string>
+ <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"Potvrdi"</string>
+ <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"Reč:"</string>
+ <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"Prečica:"</string>
+ <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"Jezik:"</string>
+ <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"Unesite reč"</string>
+ <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"Opcionalna prečica"</string>
+ <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"Izmena reči"</string>
+ <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"Izmeni"</string>
+ <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"Izbriši"</string>
+ <string name="user_dict_settings_empty_text" msgid="558499587532668203">"Nemate nijednu reč u korisničkom rečniku. Dodajte reč dodirom na dugme Dodaj (+)."</string>
+ <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"Za sve jezike"</string>
+ <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"Još jezika..."</string>
+ <string name="user_dict_settings_delete" msgid="110413335187193859">"Izbriši"</string>
+ <string name="user_dict_fast_scroll_alphabet" msgid="5431919401558285473">" ABVGDĐEŽZIJKLLJMNNJOPRSTĆUFHCČDŽŠ"</string>
+</resources>
diff --git a/java/res/values-el/strings-talkback-descriptions.xml b/java/res/values-el/strings-talkback-descriptions.xml
index 8e3527135..3331d40f3 100644
--- a/java/res/values-el/strings-talkback-descriptions.xml
+++ b/java/res/values-el/strings-talkback-descriptions.xml
@@ -64,7 +64,7 @@
<string name="keyboard_mode_phone" msgid="2486230278064523665">"τηλέφωνο"</string>
<string name="keyboard_mode_text" msgid="9138789594969187494">"κείμενο"</string>
<string name="keyboard_mode_time" msgid="8558297845514402675">"ώρα"</string>
- <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+ <string name="keyboard_mode_url" msgid="8072011652949962550">"διεύθυνση URL"</string>
<string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Πρόσφατα"</string>
<string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Άτομα"</string>
<string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Αντικείμενα"</string>
diff --git a/java/res/values-es/strings.xml b/java/res/values-es/strings.xml
index a5a63ff01..b57c1325d 100644
--- a/java/res/values-es/strings.xml
+++ b/java/res/values-es/strings.xml
@@ -43,7 +43,7 @@
<string name="clear_sync_data_confirmation" msgid="2811931135574727678">"Los datos sincronizados se eliminarán de la nube. ¿Continuar?"</string>
<string name="clear_sync_data_ok" msgid="613104067705915132">"Eliminar"</string>
<string name="cloud_sync_cancel" msgid="5877481252150919037">"Cancelar"</string>
- <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"El diccionario personal se sincroniza con los servidores de Google, donde se crea una copia de seguridad. Se puede recopilar información estadística sobre frecuencia de palabras para mejorar nuestros productos. Toda la información se recopila y se utiliza siguiendo las disposiciones de la "<a href="https://www.google.com/policies/privacy">"Política de Privacidad de Google"</a>"."</string>
+ <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"El diccionario personal se sincroniza con los servidores de Google, donde se crea una copia de seguridad. Se puede recopilar información estadística sobre frecuencia de palabras para mejorar nuestros productos. Toda la información se recopila y se utiliza siguiendo las disposiciones de la "<a href="https://www.google.com/policies/privacy">"Política de privacidad de Google"</a>"."</string>
<string name="add_account_to_enable_sync" msgid="7836932571852055265">"Añade una cuenta de Google al dispositivo para activar la función"</string>
<string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"Sinc. no disponible en dispositivos con cuentas de Google Apps for Business"</string>
<string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Otros métodos de introducción"</string>
diff --git a/java/res/values-hy-rAM/strings-emoji-descriptions.xml b/java/res/values-hy-rAM/strings-emoji-descriptions.xml
index e8bfb545e..275409c2d 100644
--- a/java/res/values-hy-rAM/strings-emoji-descriptions.xml
+++ b/java/res/values-hy-rAM/strings-emoji-descriptions.xml
@@ -763,7 +763,7 @@
<string name="spoken_emoji_1F4B9" msgid="647509393536679903">"Աճման միտումով և իենի նշանով գրաֆիկ"</string>
<string name="spoken_emoji_1F4BA" msgid="1269737854891046321">"Նստատեղ"</string>
<string name="spoken_emoji_1F4BB" msgid="6252883563347816451">"Անհատական համակարգիչ"</string>
- <string name="spoken_emoji_1F4BC" msgid="6182597732218446206">"Պանակ"</string>
+ <string name="spoken_emoji_1F4BC" msgid="6182597732218446206">"Թղթապանակ"</string>
<string name="spoken_emoji_1F4BD" msgid="5820961044768829176">"Փոքր սկավառակ"</string>
<string name="spoken_emoji_1F4BE" msgid="4754542485835379808">"Ճկուն սկավառակ"</string>
<string name="spoken_emoji_1F4BF" msgid="2237481756984721795">"Օպտիկական սկավառակ"</string>
diff --git a/java/res/values-pl/strings-talkback-descriptions.xml b/java/res/values-pl/strings-talkback-descriptions.xml
index 2538f6ff6..6eda11030 100644
--- a/java/res/values-pl/strings-talkback-descriptions.xml
+++ b/java/res/values-pl/strings-talkback-descriptions.xml
@@ -43,7 +43,7 @@
<string name="spoken_description_emoji" msgid="7990051553008088470">"Emotikony"</string>
<string name="spoken_description_return" msgid="3183692287397645708">"Enter"</string>
<string name="spoken_description_search" msgid="5099937658231911288">"Szukaj"</string>
- <string name="spoken_description_dot" msgid="5644176501632325560">"Punktor"</string>
+ <string name="spoken_description_dot" msgid="5644176501632325560">"Kropka"</string>
<string name="spoken_description_language_switch" msgid="6818666779313544553">"Przełącz język"</string>
<string name="spoken_description_action_next" msgid="431761808119616962">"Dalej"</string>
<string name="spoken_description_action_previous" msgid="2919072174697865110">"Wstecz"</string>
diff --git a/java/res/values-ro/strings-emoji-descriptions.xml b/java/res/values-ro/strings-emoji-descriptions.xml
index cae27908a..35a0e38b0 100644
--- a/java/res/values-ro/strings-emoji-descriptions.xml
+++ b/java/res/values-ro/strings-emoji-descriptions.xml
@@ -116,7 +116,7 @@
<string name="spoken_emoji_264B" msgid="4409219914377810956">"Rac"</string>
<string name="spoken_emoji_264C" msgid="6520255367817054163">"Leu"</string>
<string name="spoken_emoji_264D" msgid="1504758945499854018">"Fecioară"</string>
- <string name="spoken_emoji_264E" msgid="2354847104530633519">"Balanță"</string>
+ <string name="spoken_emoji_264E" msgid="2354847104530633519">"Balanţă"</string>
<string name="spoken_emoji_264F" msgid="5822933280406416112">"Scorpion"</string>
<string name="spoken_emoji_2650" msgid="4832481156714796163">"Săgetător"</string>
<string name="spoken_emoji_2651" msgid="840953134601595090">"Capricorn"</string>
diff --git a/java/res/values-ro/strings.xml b/java/res/values-ro/strings.xml
index 2270ee9f4..5c3cbb518 100644
--- a/java/res/values-ro/strings.xml
+++ b/java/res/values-ro/strings.xml
@@ -20,13 +20,13 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="english_ime_input_options" msgid="3909945612939668554">"Opțiuni de introducere text"</string>
+ <string name="english_ime_input_options" msgid="3909945612939668554">"Opţiuni de introducere text"</string>
<string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Verificare nume în agendă"</string>
<string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Verificatorul ortografic utilizează intrări din lista de contacte"</string>
<string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrare la apăsarea tastei"</string>
<string name="sound_on_keypress" msgid="6093592297198243644">"Sunet la apăsarea tastei"</string>
<string name="popup_on_keypress" msgid="123894815723512944">"Pop-up la apăsarea tastei"</string>
- <string name="settings_screen_preferences" msgid="2696713156722014624">"Preferințe"</string>
+ <string name="settings_screen_preferences" msgid="2696713156722014624">"Preferinţe"</string>
<string name="settings_screen_accounts" msgid="2786418968536696670">"Conturi și confidențialitate"</string>
<string name="settings_screen_appearance" msgid="7358046399111611615">"Aspect"</string>
<string name="settings_screen_gesture" msgid="8826372746901183556">"Tastare gestuală"</string>
@@ -49,24 +49,24 @@
<string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Comut. alte metode de introd."</string>
<string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Tasta de comutare între limbi include și alte metode de introd."</string>
<string name="show_language_switch_key" msgid="5915478828318774384">"Tastă comutare limbi"</string>
- <string name="show_language_switch_key_summary" msgid="7343403647474265713">"Afișați când sunt activate mai multe limbi de intrare"</string>
+ <string name="show_language_switch_key_summary" msgid="7343403647474265713">"Afişaţi când sunt activate mai multe limbi de intrare"</string>
<string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Închidere pop-up taste"</string>
<string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Fără întârziere"</string>
<string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Prestabilit"</string>
<string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g> msec."</string>
<string name="settings_system_default" msgid="6268225104743331821">"Valoare prestabilită"</string>
<string name="use_contacts_dict" msgid="4435317977804180815">"Sugerați nume din Agendă"</string>
- <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Utilizați numele din Agendă pentru sugestii și corecții"</string>
+ <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Utilizaţi numele din Agendă pentru sugestii și corecții"</string>
<string name="use_personalized_dicts" msgid="5167396352105467626">"Sugestii personalizate"</string>
<string name="enable_metrics_logging" msgid="5506372337118822837">"Îmbunătățiți <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="use_double_space_period" msgid="8781529969425082860">"Inserează punct spațiu"</string>
<string name="use_double_space_period_summary" msgid="6532892187247952799">"Dubla atingere a barei de spațiu inserează punct urmat de spațiu"</string>
<string name="auto_cap" msgid="1719746674854628252">"Scriere automată cu majuscule"</string>
- <string name="auto_cap_summary" msgid="7934452761022946874">"Scrie cu majusculă primul cuvânt din fiecare propoziție"</string>
+ <string name="auto_cap_summary" msgid="7934452761022946874">"Scrie cu majusculă primul cuvânt din fiecare propoziţie"</string>
<string name="edit_personal_dictionary" msgid="3996910038952940420">"Dicționar personal"</string>
<string name="configure_dictionaries_title" msgid="4238652338556902049">"Dicționare suplimentare"</string>
- <string name="main_dictionary" msgid="4798763781818361168">"Dicționar principal"</string>
- <string name="prefs_show_suggestions" msgid="8026799663445531637">"Afișați sugestii de corectare"</string>
+ <string name="main_dictionary" msgid="4798763781818361168">"Dicţionar principal"</string>
+ <string name="prefs_show_suggestions" msgid="8026799663445531637">"Afişaţi sugestii de corectare"</string>
<string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Afișează sugestii de cuvinte în timpul introducerii textului"</string>
<string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"Blocați cuvintele jignitoare"</string>
<string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Nu se sugerează cuvinte potențial jignitoare"</string>
@@ -79,10 +79,10 @@
<string name="bigram_prediction" msgid="1084449187723948550">"Sugestii pentru cuvântul următor"</string>
<string name="bigram_prediction_summary" msgid="3896362682751109677">"Utilizează cuvântul anterior pentru sugestii"</string>
<string name="gesture_input" msgid="826951152254563827">"Activați tastarea gestuală"</string>
- <string name="gesture_input_summary" msgid="9180350639305731231">"Introduceți un cuvânt glisând ușor între litere"</string>
+ <string name="gesture_input_summary" msgid="9180350639305731231">"Introduceţi un cuvânt glisând ușor între litere"</string>
<string name="gesture_preview_trail" msgid="3802333369335722221">"Se afișează urma gestului"</string>
<string name="gesture_floating_preview_text" msgid="4443240334739381053">"Sugestie flotantă dinamică"</string>
- <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Afișați cuvântul sugerat când utilizați gesturi"</string>
+ <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Afişaţi cuvântul sugerat când utilizaţi gesturi"</string>
<string name="gesture_space_aware" msgid="2078291600664682496">"Gest expresie"</string>
<string name="gesture_space_aware_summary" msgid="4371385818348528538">"Introduceți spații în timpul gesturilor, glisând pe tasta spațiu"</string>
<string name="voice_input" msgid="3583258583521397548">"Tastă pentru intrarea vocală"</string>
@@ -93,7 +93,7 @@
<string name="select_language" msgid="5709487854987078367">"Limbi"</string>
<string name="hint_add_to_dictionary" msgid="573678656946085380">"Atingeți din nou pentru a salva"</string>
<string name="hint_add_to_dictionary_without_word" msgid="3040385779511255101">"Atingeți aici pentru a salva"</string>
- <string name="has_dictionary" msgid="6071847973466625007">"Dicționar disponibil"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"Dicţionar disponibil"</string>
<string name="keyboard_layout" msgid="8451164783510487501">"Temă pentru tastatură"</string>
<string name="switch_accounts" msgid="3321216593719006162">"Comutați între conturi"</string>
<string name="no_accounts_selected" msgid="2073821619103904330">"Niciun cont selectat"</string>
@@ -126,7 +126,7 @@
<string name="custom_input_styles_title" msgid="8429952441821251512">"Stiluri personalizate"</string>
<string name="add_style" msgid="6163126614514489951">"Stil"</string>
<string name="add" msgid="8299699805688017798">"Adăugați"</string>
- <string name="remove" msgid="4486081658752944606">"Eliminați"</string>
+ <string name="remove" msgid="4486081658752944606">"Eliminaţi"</string>
<string name="save" msgid="7646738597196767214">"Salvați"</string>
<string name="subtype_locale" msgid="8576443440738143764">"Limbă"</string>
<string name="keyboard_layout_set" msgid="4309233698194565609">"Aspect"</string>
diff --git a/java/res/values-zh-rTW/strings.xml b/java/res/values-zh-rTW/strings.xml
index a9db22787..d0de0e8e2 100644
--- a/java/res/values-zh-rTW/strings.xml
+++ b/java/res/values-zh-rTW/strings.xml
@@ -59,8 +59,8 @@
<string name="use_contacts_dict_summary" msgid="6599983334507879959">"根據「聯絡人」名稱提供建議與修正"</string>
<string name="use_personalized_dicts" msgid="5167396352105467626">"個人化建議"</string>
<string name="enable_metrics_logging" msgid="5506372337118822837">"協助改善 <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
- <string name="use_double_space_period" msgid="8781529969425082860">"輕觸兩下空格鍵即插入句號"</string>
- <string name="use_double_space_period_summary" msgid="6532892187247952799">"輕觸兩下空格鍵可插入句號另加一個空格"</string>
+ <string name="use_double_space_period" msgid="8781529969425082860">"輕按兩下空格鍵即插入句號"</string>
+ <string name="use_double_space_period_summary" msgid="6532892187247952799">"輕按兩下空格鍵可插入句號另加一個空格"</string>
<string name="auto_cap" msgid="1719746674854628252">"自動大寫"</string>
<string name="auto_cap_summary" msgid="7934452761022946874">"句首字詞大寫"</string>
<string name="edit_personal_dictionary" msgid="3996910038952940420">"個人字典"</string>
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index eeb5a20c9..6b985cec9 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -184,7 +184,7 @@
<!-- Preferences item for enabling speech input -->
<string name="voice_input">Voice input key</string>
<!-- The summary text to describe the reason why the "Voice input key" option is disabled. [CHAR LIMIT=100] -->
- <string name="voice_input_disabled_summary">No voice input methods enabled. Check Language &amp; input settings.</string>
+ <string name="voice_input_disabled_summary">No voice input methods enabled. Check Languages&#160;&amp; input settings.</string>
<!-- Title for configuring input method settings [CHAR LIMIT=35] -->
<string name="configure_input_method">Configure input methods</string>
@@ -200,9 +200,9 @@
<string name="select_language">Languages</string>
<!-- Add to dictionary hint -->
- <string name="hint_add_to_dictionary">Touch again to save</string>
+ <string name="hint_add_to_dictionary">Tap again to save</string>
<!-- Add to dictionary hint -->
- <string name="hint_add_to_dictionary_without_word">Touch here to save</string>
+ <string name="hint_add_to_dictionary_without_word">Tap here to save</string>
<!-- Inform the user that a particular language has an available dictionary -->
<string name="has_dictionary">Dictionary available</string>
@@ -408,10 +408,10 @@ mobile devices. [CHAR LIMIT=25] -->
<!-- Title of the 1st step in the setup wizard. [CHAR LIMIT=64] -->
<string name="setup_step1_title">"Enable <xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>"</string>
<!-- Detailed instruction of the 1st step in the setup wizard. [CHAR LIMIT=120] -->
- <string name="setup_step1_instruction">"Please check \"<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>\" in your Language &amp; input settings. This will authorize it to run on your device."</string>
+ <string name="setup_step1_instruction">"Please check \"<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>\" in your Languages&#160;&amp; input settings. This will authorize it to run on your device."</string>
<!-- Detailed instruction of the already finished 1st step in the setup wizard. [CHAR LIMIT=120] -->
- <string name="setup_step1_finished_instruction">"<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g> is already enabled in your Language &amp; input settings, so this step is done. On to the next one!"</string>
- <!-- The label of the button that triggers the Language & input settings in order to enable the keyboard. [CHAR_LIMIT=64] -->
+ <string name="setup_step1_finished_instruction">"<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g> is already enabled in your Languages&#160;&amp; input settings, so this step is done. On to the next one!"</string>
+ <!-- The label of the button that triggers the Languages & input settings in order to enable the keyboard. [CHAR_LIMIT=64] -->
<string name="setup_step1_action">Enable in Settings</string>
<!-- Ordinal number of the 2nd step in the setup wizard. [CHAR LIMIT=5] -->
<string name="setup_step2_bullet" translatable="false">2</string>
@@ -494,14 +494,14 @@ mobile devices. [CHAR LIMIT=25] -->
<!-- Action to delete a dictionary file [CHAR_LIMIT=15] -->
<string name="delete_dict">Delete</string>
- <!-- Message in the popup informing the user a dictionary is available for their language, and asking for a decision to download over their mobile data plan or not. The reason we ask for this is, the data is large and may be downloaded over a paid-per-megabyte connection but a dictionary is also essential to type comfortably, so we ask the user. This only pops in selected cases, when there is no dictionary at all currently, and the only available network seems to be metered. The "Language & input" part should be set to the actual name of the option (message ID 5292716747264442359 in the translation console). [CHAR_LIMIT=700] -->
+ <!-- Message in the popup informing the user a dictionary is available for their language, and asking for a decision to download over their mobile data plan or not. The reason we ask for this is, the data is large and may be downloaded over a paid-per-megabyte connection but a dictionary is also essential to type comfortably, so we ask the user. This only pops in selected cases, when there is no dictionary at all currently, and the only available network seems to be metered. The "Languages & input" part should be set to the actual name of the option (message ID 5292716747264442359 in the translation console). [CHAR_LIMIT=700] -->
<string name="should_download_over_metered_prompt">The selected language on your mobile device has an available dictionary.&lt;br/>
We recommend &lt;b>downloading&lt;/b> the <xliff:g id="LANGUAGE_NAME" example="English">%1$s</xliff:g> dictionary to improve your typing experience.&lt;br/>
&lt;br/>
The download could take a minute or two over 3G. Charges may apply if you don\'t have an &lt;b>unlimited data plan&lt;/b>.&lt;br/>
If you are not sure which data plan you have, we recommend finding a Wi-Fi connection to start the download automatically.&lt;br/>
&lt;br/>
-Tip: You can download and remove dictionaries by going to &lt;b>Language &amp; input&lt;/b> in the &lt;b>Settings&lt;/b> menu of your mobile device.</string>
+Tip: You can download and remove dictionaries by going to &lt;b>Languages&#160;&amp; input&lt;/b> in the &lt;b>Settings&lt;/b> menu of your mobile device.</string>
<string name="download_over_metered">Download now (<xliff:g id="SIZE_IN_MEGABYTES" example="0.7">%1$.1f</xliff:g>MB)</string>
<string name="do_not_download_over_metered">Download over Wi-Fi</string>
<!-- The text of the "dictionary available" notification. -->
@@ -562,7 +562,7 @@ Tip: You can download and remove dictionaries by going to &lt;b>Language &amp; i
<string name="user_dict_settings_context_menu_delete_title">Delete</string>
<!-- User dictionary settings. The text to show when there are no user-defined words in the dictionary [CHAR LIMIT=200] -->
<!-- This resource is corresponding to msgid="8165273379942105271" -->
- <string name="user_dict_settings_empty_text">You don\'t have any words in the user dictionary. Add a word by touching the Add (+) button.</string>
+ <string name="user_dict_settings_empty_text">You don\'t have any words in the user dictionary. To add a word, tap the Add (+) button.</string>
<!-- User dictionary settings. The list item to choose to insert a word into the user dictionary for all languages -->
<!-- This resource is corresponding to msgid="6742000040975959247" -->
<string name="user_dict_settings_all_languages">For all languages</string>
diff --git a/java/res/xml/method.xml b/java/res/xml/method.xml
index 0b0c93e84..3ab254307 100644
--- a/java/res/xml/method.xml
+++ b/java/res/xml/method.xml
@@ -120,6 +120,7 @@
android:label="@string/subtype_en_US"
android:subtypeId="0xc9194f98"
android:imeSubtypeLocale="en_US"
+ android:languageTag="en-US"
android:imeSubtypeMode="keyboard"
android:imeSubtypeExtraValue="TrySuppressingImeSwitcher,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
android:isAsciiCapable="true"
@@ -128,6 +129,7 @@
android:label="@string/subtype_en_GB"
android:subtypeId="0xb045e755"
android:imeSubtypeLocale="en_GB"
+ android:languageTag="en-GB"
android:imeSubtypeMode="keyboard"
android:imeSubtypeExtraValue="TrySuppressingImeSwitcher,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
android:isAsciiCapable="true"
@@ -320,6 +322,7 @@
android:label="@string/subtype_generic"
android:subtypeId="0x324da12c"
android:imeSubtypeLocale="fr"
+ android:languageTag="fr"
android:imeSubtypeMode="keyboard"
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
android:isAsciiCapable="true"
@@ -328,6 +331,7 @@
android:label="@string/subtype_generic"
android:subtypeId="0xeadbb691"
android:imeSubtypeLocale="fr_CA"
+ android:languageTag="fr-CA"
android:imeSubtypeMode="keyboard"
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
android:isAsciiCapable="true"
@@ -336,6 +340,7 @@
android:label="@string/subtype_generic"
android:subtypeId="0xeadc55f5"
android:imeSubtypeLocale="fr_CH"
+ android:languageTag="fr-CH"
android:imeSubtypeMode="keyboard"
android:imeSubtypeExtraValue="KeyboardLayoutSet=swiss,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
android:isAsciiCapable="true"
@@ -668,6 +673,7 @@
android:label="@string/subtype_sr_ZZ"
android:subtypeId="0xf4a5569c"
android:imeSubtypeLocale="sr_ZZ"
+ android:languageTag="sr-Latn"
android:imeSubtypeMode="keyboard"
android:imeSubtypeExtraValue="KeyboardLayoutSet=serbian_qwertz,AsciiCapable,EmojiCapable"
android:isAsciiCapable="true"
@@ -735,6 +741,7 @@
android:label="@string/subtype_generic"
android:subtypeId="0xf08285ef"
android:imeSubtypeLocale="tl"
+ android:languageTag="fil"
android:imeSubtypeMode="keyboard"
android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable,EmojiCapable"
android:isAsciiCapable="true"
diff --git a/java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityDelegate.java b/java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityDelegate.java
index e80982fc7..edda32d52 100644
--- a/java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityDelegate.java
+++ b/java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityDelegate.java
@@ -110,7 +110,9 @@ public final class MainKeyboardAccessibilityDelegate
* Called when the keyboard is hidden and accessibility is enabled.
*/
public void onHideWindow() {
- announceKeyboardHidden();
+ if (mLastKeyboardMode != KEYBOARD_IS_HIDDEN) {
+ announceKeyboardHidden();
+ }
mLastKeyboardMode = KEYBOARD_IS_HIDDEN;
}
diff --git a/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java b/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java
index 7eefa221a..56ce8f5e6 100644
--- a/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java
+++ b/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java
@@ -19,6 +19,7 @@ package com.android.inputmethod.compat;
import android.view.inputmethod.EditorInfo;
import java.lang.reflect.Field;
+import java.util.Locale;
public final class EditorInfoCompatUtils {
// Note that EditorInfo.IME_FLAG_FORCE_ASCII has been introduced
@@ -27,6 +28,8 @@ public final class EditorInfoCompatUtils {
EditorInfo.class, "IME_FLAG_FORCE_ASCII");
private static final Integer OBJ_IME_FLAG_FORCE_ASCII = (Integer) CompatUtils.getFieldValue(
null /* receiver */, null /* defaultValue */, FIELD_IME_FLAG_FORCE_ASCII);
+ private static final Field FIELD_HINT_LOCALES = CompatUtils.getField(
+ EditorInfo.class, "hintLocales");
private EditorInfoCompatUtils() {
// This utility class is not publicly instantiable.
@@ -78,4 +81,18 @@ public final class EditorInfoCompatUtils {
}
return (action != null) ? flags + action : flags.toString();
}
+
+ public static Locale getPrimaryHintLocale(final EditorInfo editorInfo) {
+ if (editorInfo == null) {
+ return null;
+ }
+ final Object localeList = CompatUtils.getFieldValue(editorInfo, null, FIELD_HINT_LOCALES);
+ if (localeList == null) {
+ return null;
+ }
+ if (LocaleListCompatUtils.isEmpty(localeList)) {
+ return null;
+ }
+ return LocaleListCompatUtils.get(localeList, 0);
+ }
}
diff --git a/java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatUtils.java b/java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatUtils.java
index 58ad4bd4c..d123a1799 100644
--- a/java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatUtils.java
+++ b/java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatUtils.java
@@ -17,14 +17,17 @@
package com.android.inputmethod.compat;
import android.os.Build;
+import android.text.TextUtils;
import android.view.inputmethod.InputMethodSubtype;
import com.android.inputmethod.annotations.UsedForTesting;
import com.android.inputmethod.latin.RichInputMethodSubtype;
import com.android.inputmethod.latin.common.Constants;
+import com.android.inputmethod.latin.common.LocaleUtils;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
+import java.util.Locale;
import javax.annotation.Nonnull;
@@ -78,6 +81,21 @@ public final class InputMethodSubtypeCompatUtils {
|| subtype.containsExtraValueKey(Constants.Subtype.ExtraValue.ASCII_CAPABLE);
}
+ // Note that InputMethodSubtype.getLanguageTag() is expected to be available in Android N+.
+ private static final Method GET_LANGUAGE_TAG =
+ CompatUtils.getMethod(InputMethodSubtype.class, "getLanguageTag");
+
+ public static Locale getLocaleObject(final InputMethodSubtype subtype) {
+ // Locale.forLanguageTag() is available only in Android L and later.
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ final String languageTag = (String) CompatUtils.invoke(subtype, null, GET_LANGUAGE_TAG);
+ if (!TextUtils.isEmpty(languageTag)) {
+ return Locale.forLanguageTag(languageTag);
+ }
+ }
+ return LocaleUtils.constructLocaleFromString(subtype.getLocale());
+ }
+
@UsedForTesting
public static boolean isAsciiCapableWithAPI(final InputMethodSubtype subtype) {
return (Boolean)CompatUtils.invoke(subtype, false, METHOD_isAsciiCapable);
diff --git a/java/src/com/android/inputmethod/compat/LocaleListCompatUtils.java b/java/src/com/android/inputmethod/compat/LocaleListCompatUtils.java
new file mode 100644
index 000000000..1c49cd4d2
--- /dev/null
+++ b/java/src/com/android/inputmethod/compat/LocaleListCompatUtils.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.compat;
+
+import java.lang.reflect.Method;
+import java.util.Locale;
+
+public final class LocaleListCompatUtils {
+ private static final Class CLASS_LocaleList = CompatUtils.getClass("android.util.LocaleList");
+ private static final Method METHOD_get =
+ CompatUtils.getMethod(CLASS_LocaleList, "get", int.class);
+ private static final Method METHOD_isEmpty =
+ CompatUtils.getMethod(CLASS_LocaleList, "isEmpty");
+
+ private LocaleListCompatUtils() {
+ // This utility class is not publicly instantiable.
+ }
+
+ public static boolean isEmpty(final Object localeList) {
+ return (Boolean) CompatUtils.invoke(localeList, Boolean.FALSE, METHOD_isEmpty);
+ }
+
+ public static Locale get(final Object localeList, final int index) {
+ return (Locale) CompatUtils.invoke(localeList, null, METHOD_get, index);
+ }
+}
diff --git a/java/src/com/android/inputmethod/compat/UserManagerCompatUtils.java b/java/src/com/android/inputmethod/compat/UserManagerCompatUtils.java
new file mode 100644
index 000000000..5dee31629
--- /dev/null
+++ b/java/src/com/android/inputmethod/compat/UserManagerCompatUtils.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.compat;
+
+import android.content.Context;
+import android.os.Build;
+import android.os.UserManager;
+import android.support.annotation.IntDef;
+
+import java.lang.annotation.Retention;
+import java.lang.reflect.Method;
+
+import static java.lang.annotation.RetentionPolicy.SOURCE;
+
+/**
+ * A temporary solution until {@code UserManagerCompat.isUserUnlocked()} in the support-v4 library
+ * becomes publicly available.
+ */
+public final class UserManagerCompatUtils {
+ private static final Method METHOD_isUserUnlocked;
+
+ static {
+ // We do not try to search the method in Android M and prior.
+ if (BuildCompatUtils.EFFECTIVE_SDK_INT <= Build.VERSION_CODES.M) {
+ METHOD_isUserUnlocked = null;
+ } else {
+ METHOD_isUserUnlocked = CompatUtils.getMethod(UserManager.class, "isUserUnlocked");
+ }
+ }
+
+ private UserManagerCompatUtils() {
+ // This utility class is not publicly instantiable.
+ }
+
+ public static final int LOCK_STATE_UNKNOWN = 0;
+ public static final int LOCK_STATE_UNLOCKED = 1;
+ public static final int LOCK_STATE_LOCKED = 2;
+
+ @Retention(SOURCE)
+ @IntDef({LOCK_STATE_UNKNOWN, LOCK_STATE_UNLOCKED, LOCK_STATE_LOCKED})
+ public @interface LockState {}
+
+ /**
+ * Check if the calling user is running in an "unlocked" state. A user is unlocked only after
+ * they've entered their credentials (such as a lock pattern or PIN), and credential-encrypted
+ * private app data storage is available.
+ * @param context context from which {@link UserManager} should be obtained.
+ * @return One of {@link LockState}.
+ */
+ @LockState
+ public static int getUserLockState(final Context context) {
+ if (METHOD_isUserUnlocked == null) {
+ return LOCK_STATE_UNKNOWN;
+ }
+ final UserManager userManager = context.getSystemService(UserManager.class);
+ if (userManager == null) {
+ return LOCK_STATE_UNKNOWN;
+ }
+ final Boolean result =
+ (Boolean) CompatUtils.invoke(userManager, null, METHOD_isUserUnlocked);
+ if (result == null) {
+ return LOCK_STATE_UNKNOWN;
+ }
+ return result ? LOCK_STATE_UNLOCKED : LOCK_STATE_LOCKED;
+ }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java b/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
index 47013fe9e..26ff051bb 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
@@ -32,6 +32,7 @@ import android.view.inputmethod.InputMethodSubtype;
import com.android.inputmethod.compat.EditorInfoCompatUtils;
import com.android.inputmethod.compat.InputMethodSubtypeCompatUtils;
+import com.android.inputmethod.compat.UserManagerCompatUtils;
import com.android.inputmethod.keyboard.internal.KeyboardBuilder;
import com.android.inputmethod.keyboard.internal.KeyboardParams;
import com.android.inputmethod.keyboard.internal.UniqueKeysCache;
@@ -275,6 +276,16 @@ public final class KeyboardLayoutSet {
params.mIsPasswordField = InputTypeUtils.isPasswordInputType(editorInfo.inputType);
params.mNoSettingsKey = InputAttributes.inPrivateImeOptions(
mPackageName, NO_SETTINGS_KEY, editorInfo);
+
+ // When the device is still unlocked, features like showing the IME setting app need to
+ // be locked down.
+ // TODO: Switch to {@code UserManagerCompat.isUserUnlocked()} in the support-v4 library
+ // when it becomes publicly available.
+ @UserManagerCompatUtils.LockState
+ final int lockState = UserManagerCompatUtils.getUserLockState(context);
+ if (lockState == UserManagerCompatUtils.LOCK_STATE_LOCKED) {
+ params.mNoSettingsKey = true;
+ }
}
public Builder setKeyboardGeometry(final int keyboardWidth, final int keyboardHeight) {
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
index 75b7962cb..b57e483d1 100644
--- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
@@ -196,6 +196,8 @@ final class EmojiCategory {
addShownCategoryId(EmojiCategory.ID_FLAGS);
}
}
+ } else {
+ addShownCategoryId(EmojiCategory.ID_SYMBOLS);
}
addShownCategoryId(EmojiCategory.ID_EMOTICONS);
@@ -204,9 +206,14 @@ final class EmojiCategory {
recentsKbd.loadRecentKeys(mCategoryKeyboardMap.values());
mCurrentCategoryId = Settings.readLastShownEmojiCategoryId(mPrefs, defaultCategoryId);
- if (mCurrentCategoryId == EmojiCategory.ID_RECENTS &&
+ Log.i(TAG, "Last Emoji category id is " + mCurrentCategoryId);
+ if (!isShownCategoryId(mCurrentCategoryId)) {
+ Log.i(TAG, "Last emoji category " + mCurrentCategoryId +
+ " is invalid, starting in " + defaultCategoryId);
+ mCurrentCategoryId = defaultCategoryId;
+ } else if (mCurrentCategoryId == EmojiCategory.ID_RECENTS &&
recentsKbd.getSortedKeys().isEmpty()) {
- Log.i(TAG, "No recent emojis found, starting in category " + mCurrentCategoryId);
+ Log.i(TAG, "No recent emojis found, starting in category " + defaultCategoryId);
mCurrentCategoryId = defaultCategoryId;
}
}
@@ -219,6 +226,15 @@ final class EmojiCategory {
mShownCategories.add(properties);
}
+ private boolean isShownCategoryId(final int categoryId) {
+ for (final CategoryProperties prop : mShownCategories) {
+ if (prop.mCategoryId == categoryId) {
+ return true;
+ }
+ }
+ return false;
+ }
+
public static String getCategoryName(final int categoryId, final int categoryPageId) {
return sCategoryName[categoryId] + "-" + categoryPageId;
}
diff --git a/java/src/com/android/inputmethod/latin/EmojiAltPhysicalKeyDetector.java b/java/src/com/android/inputmethod/latin/EmojiAltPhysicalKeyDetector.java
index 2529424c0..8924e0a3d 100644
--- a/java/src/com/android/inputmethod/latin/EmojiAltPhysicalKeyDetector.java
+++ b/java/src/com/android/inputmethod/latin/EmojiAltPhysicalKeyDetector.java
@@ -18,14 +18,15 @@ package com.android.inputmethod.latin;
import android.content.res.Resources;
import android.util.Log;
+import android.util.Pair;
import android.view.KeyEvent;
import com.android.inputmethod.keyboard.KeyboardSwitcher;
import com.android.inputmethod.latin.settings.Settings;
-import java.util.HashMap;
+import java.util.ArrayList;
import java.util.HashSet;
-import java.util.Map;
+import java.util.List;
import java.util.Set;
import javax.annotation.Nonnull;
@@ -35,121 +36,172 @@ import javax.annotation.Nonnull;
*/
final class EmojiAltPhysicalKeyDetector {
private static final String TAG = "EmojiAltPhysicalKeyDetector";
+ private static final boolean DEBUG = false;
- private final Map<Integer, Integer> mEmojiSwitcherMap;
- private final Map<Integer, Integer> mSymbolsShiftedSwitcherMap;
- private final Map<Integer, Integer> mCombinedSwitcherMap;
+ private List<EmojiHotKeys> mHotKeysList;
- // Set of keys codes that have been used as modifiers.
- private Set<Integer> mActiveModifiers;
+ private static class HotKeySet extends HashSet<Pair<Integer, Integer>> { };
+
+ private abstract class EmojiHotKeys {
+ private final String mName;
+ private final HotKeySet mKeySet;
+
+ boolean mCanFire;
+ int mMetaState;
+
+ public EmojiHotKeys(final String name, HotKeySet keySet) {
+ mName = name;
+ mKeySet = keySet;
+ mCanFire = false;
+ }
+
+ public void onKeyDown(@Nonnull final KeyEvent keyEvent) {
+ if (DEBUG) {
+ Log.d(TAG, "EmojiHotKeys.onKeyDown() - " + mName + " - considering " + keyEvent);
+ }
+
+ final Pair<Integer, Integer> key =
+ Pair.create(keyEvent.getKeyCode(), keyEvent.getMetaState());
+ if (mKeySet.contains(key)) {
+ if (DEBUG) {
+ Log.d(TAG, "EmojiHotKeys.onKeyDown() - " + mName + " - enabling action");
+ }
+ mCanFire = true;
+ mMetaState = keyEvent.getMetaState();
+ } else if (mCanFire) {
+ if (DEBUG) {
+ Log.d(TAG, "EmojiHotKeys.onKeyDown() - " + mName + " - disabling action");
+ }
+ mCanFire = false;
+ }
+ }
+
+ public void onKeyUp(@Nonnull final KeyEvent keyEvent) {
+ if (DEBUG) {
+ Log.d(TAG, "EmojiHotKeys.onKeyUp() - " + mName + " - considering " + keyEvent);
+ }
+
+ final int keyCode = keyEvent.getKeyCode();
+ int metaState = keyEvent.getMetaState();
+ if (KeyEvent.isModifierKey(keyCode)) {
+ // Try restoring meta stat in case the released key was a modifier.
+ // I am sure one can come up with scenarios to break this, but it
+ // seems to work well in practice.
+ metaState |= mMetaState;
+ }
+
+ final Pair<Integer, Integer> key = Pair.create(keyCode, metaState);
+ if (mKeySet.contains(key)) {
+ if (mCanFire) {
+ if (!keyEvent.isCanceled()) {
+ if (DEBUG) {
+ Log.d(TAG, "EmojiHotKeys.onKeyUp() - " + mName + " - firing action");
+ }
+ action();
+ } else {
+ // This key up event was a part of key combinations and
+ // should be ignored.
+ if (DEBUG) {
+ Log.d(TAG, "EmojiHotKeys.onKeyUp() - " + mName + " - canceled, ignoring action");
+ }
+ }
+ mCanFire = false;
+ }
+ }
+
+ if (mCanFire) {
+ if (DEBUG) {
+ Log.d(TAG, "EmojiHotKeys.onKeyUp() - " + mName + " - disabling action");
+ }
+ mCanFire = false;
+ }
+ }
+
+ protected abstract void action();
+ }
public EmojiAltPhysicalKeyDetector(@Nonnull final Resources resources) {
- mEmojiSwitcherMap = parseSwitchDefinition(resources, R.array.keyboard_switcher_emoji);
- mSymbolsShiftedSwitcherMap = parseSwitchDefinition(
+ mHotKeysList = new ArrayList<EmojiHotKeys>();
+
+ final HotKeySet emojiSwitchSet = parseHotKeys(
+ resources, R.array.keyboard_switcher_emoji);
+ final EmojiHotKeys emojiHotKeys = new EmojiHotKeys("emoji", emojiSwitchSet) {
+ @Override
+ protected void action() {
+ final KeyboardSwitcher switcher = KeyboardSwitcher.getInstance();
+ switcher.onToggleKeyboard(KeyboardSwitcher.KeyboardSwitchState.EMOJI);
+ }
+ };
+ mHotKeysList.add(emojiHotKeys);
+
+ final HotKeySet symbolsSwitchSet = parseHotKeys(
resources, R.array.keyboard_switcher_symbols_shifted);
- mCombinedSwitcherMap = new HashMap<>();
- mCombinedSwitcherMap.putAll(mEmojiSwitcherMap);
- mCombinedSwitcherMap.putAll(mSymbolsShiftedSwitcherMap);
- mActiveModifiers = new HashSet<>();
+ final EmojiHotKeys symbolsHotKeys = new EmojiHotKeys("symbols", symbolsSwitchSet) {
+ @Override
+ protected void action() {
+ final KeyboardSwitcher switcher = KeyboardSwitcher.getInstance();
+ switcher.onToggleKeyboard(KeyboardSwitcher.KeyboardSwitchState.SYMBOLS_SHIFTED);
+ }
+ };
+ mHotKeysList.add(symbolsHotKeys);
}
- private static Map<Integer, Integer> parseSwitchDefinition(
- @Nonnull final Resources resources,
- final int resourceId) {
- final Map<Integer, Integer> definition = new HashMap<>();
- final String name = resources.getResourceEntryName(resourceId);
- final String[] values = resources.getStringArray(resourceId);
- for (int i = 0; values != null && i < values.length; i++) {
- String[] valuePair = values[i].split(",");
- if (valuePair.length != 2) {
- Log.w(TAG, "Expected 2 integers in " + name + "[" + i + "] : " + values[i]);
- }
- try {
- definition.put(Integer.parseInt(valuePair[0]), Integer.parseInt(valuePair[1]));
- } catch (NumberFormatException e) {
- Log.w(TAG, "Failed to parse " + name + "[" + i + "] : " + values[i], e);
+ public void onKeyDown(@Nonnull final KeyEvent keyEvent) {
+ if (DEBUG) {
+ Log.d(TAG, "onKeyDown(): " + keyEvent);
+ }
+
+ if (shouldProcessEvent(keyEvent)) {
+ for (EmojiHotKeys hotKeys : mHotKeysList) {
+ hotKeys.onKeyDown(keyEvent);
}
}
- return definition;
}
- /**
- * Determine whether an up key event came from a mapped modifier key.
- *
- * @param keyEvent an up key event.
- */
public void onKeyUp(@Nonnull final KeyEvent keyEvent) {
- Log.d(TAG, "onKeyUp() : " + keyEvent);
- if (!Settings.getInstance().getCurrent().mEnableEmojiAltPhysicalKey) {
- // The feature is disabled.
- Log.d(TAG, "onKeyUp() : Disabled");
- return;
+ if (DEBUG) {
+ Log.d(TAG, "onKeyUp(): " + keyEvent);
}
- if (keyEvent.isCanceled()) {
- // This key up event was a part of key combinations and should be ignored.
- Log.d(TAG, "onKeyUp() : Canceled");
- return;
- }
- final Integer mappedModifier = getMappedModifier(keyEvent);
- if (mappedModifier != null) {
- // If the key was modified by a mapped key, then ignore the next time
- // the same modifier key comes up.
- Log.d(TAG, "onKeyUp() : Using Modifier: " + mappedModifier);
- mActiveModifiers.add(mappedModifier);
- return;
- }
- final int keyCode = keyEvent.getKeyCode();
- if (mActiveModifiers.contains(keyCode)) {
- // Used as a modifier, not a standalone key press.
- Log.d(TAG, "onKeyUp() : Used as Modifier: " + keyCode);
- mActiveModifiers.remove(keyCode);
- return;
- }
- if (!isMappedKeyCode(keyEvent)) {
- // Nothing special about this key.
- Log.d(TAG, "onKeyUp() : Not Mapped: " + keyCode);
- return;
- }
- final KeyboardSwitcher switcher = KeyboardSwitcher.getInstance();
- if (mEmojiSwitcherMap.keySet().contains(keyCode)) {
- switcher.onToggleKeyboard(KeyboardSwitcher.KeyboardSwitchState.EMOJI);
- } else if (mSymbolsShiftedSwitcherMap.keySet().contains(keyCode)) {
- switcher.onToggleKeyboard(KeyboardSwitcher.KeyboardSwitchState.SYMBOLS_SHIFTED);
- } else {
- Log.w(TAG, "Cannot toggle on keyCode: " + keyCode);
+
+ if (shouldProcessEvent(keyEvent)) {
+ for (EmojiHotKeys hotKeys : mHotKeysList) {
+ hotKeys.onKeyUp(keyEvent);
+ }
}
}
- /**
- * @param keyEvent pressed key event
- * @return true iff the user pressed a mapped modifier key.
- */
- private boolean isMappedKeyCode(@Nonnull final KeyEvent keyEvent) {
- return mCombinedSwitcherMap.get(keyEvent.getKeyCode()) != null;
+ private static boolean shouldProcessEvent(@Nonnull final KeyEvent keyEvent) {
+ if (!Settings.getInstance().getCurrent().mEnableEmojiAltPhysicalKey) {
+ // The feature is disabled.
+ if (DEBUG) {
+ Log.d(TAG, "shouldProcessEvent(): Disabled");
+ }
+ return false;
+ }
+
+ return true;
}
- /**
- * @param keyEvent pressed key event
- * @return the mapped modifier used with this key opress, if any.
- */
- private Integer getMappedModifier(@Nonnull final KeyEvent keyEvent) {
- final int keyCode = keyEvent.getKeyCode();
- final int metaState = keyEvent.getMetaState();
- for (int mappedKeyCode : mCombinedSwitcherMap.keySet()) {
- if (keyCode == mappedKeyCode) {
- Log.d(TAG, "getMappedModifier() : KeyCode = MappedKeyCode = " + mappedKeyCode);
- continue;
- }
- final Integer mappedMeta = mCombinedSwitcherMap.get(mappedKeyCode);
- if (mappedMeta == null || mappedMeta.intValue() == -1) {
- continue;
+ private static HotKeySet parseHotKeys(
+ @Nonnull final Resources resources, final int resourceId) {
+ final HotKeySet keySet = new HotKeySet();
+ final String name = resources.getResourceEntryName(resourceId);
+ final String[] values = resources.getStringArray(resourceId);
+ for (int i = 0; values != null && i < values.length; i++) {
+ String[] valuePair = values[i].split(",");
+ if (valuePair.length != 2) {
+ Log.w(TAG, "Expected 2 integers in " + name + "[" + i + "] : " + values[i]);
}
- if ((metaState & mappedMeta) != 0) {
- Log.d(TAG, "getMappedModifier() : MetaState(" + metaState
- + ") contains MappedMeta(" + mappedMeta + ")");
- return mappedKeyCode;
+ try {
+ final Integer keyCode = Integer.parseInt(valuePair[0]);
+ final Integer metaState = Integer.parseInt(valuePair[1]);
+ final Pair<Integer, Integer> key = Pair.create(
+ keyCode, KeyEvent.normalizeMetaState(metaState));
+ keySet.add(key);
+ } catch (NumberFormatException e) {
+ Log.w(TAG, "Failed to parse " + name + "[" + i + "] : " + values[i], e);
}
}
- return null;
+ return keySet;
}
}
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 25a5de250..1764ded8c 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -30,8 +30,10 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Configuration;
import android.content.res.Resources;
+import android.graphics.Color;
import android.inputmethodservice.InputMethodService;
import android.media.AudioManager;
+import android.os.Build;
import android.os.Debug;
import android.os.IBinder;
import android.os.Message;
@@ -53,7 +55,10 @@ import android.view.inputmethod.InputMethodSubtype;
import com.android.inputmethod.accessibility.AccessibilityUtils;
import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.compat.BuildCompatUtils;
+import com.android.inputmethod.compat.EditorInfoCompatUtils;
import com.android.inputmethod.compat.InputMethodServiceCompatUtils;
+import com.android.inputmethod.compat.InputMethodSubtypeCompatUtils;
import com.android.inputmethod.compat.ViewOutlineProviderCompatUtils;
import com.android.inputmethod.compat.ViewOutlineProviderCompatUtils.InsetsUpdater;
import com.android.inputmethod.dictionarypack.DictionaryPackConstants;
@@ -175,8 +180,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
private static final int MSG_WAIT_FOR_DICTIONARY_LOAD = 8;
private static final int MSG_DEALLOCATE_MEMORY = 9;
private static final int MSG_RESUME_SUGGESTIONS_FOR_START_INPUT = 10;
+ private static final int MSG_SWITCH_LANGUAGE_AUTOMATICALLY = 11;
// Update this when adding new messages
- private static final int MSG_LAST = MSG_RESUME_SUGGESTIONS_FOR_START_INPUT;
+ private static final int MSG_LAST = MSG_SWITCH_LANGUAGE_AUTOMATICALLY;
private static final int ARG1_NOT_GESTURE_INPUT = 0;
private static final int ARG1_DISMISS_GESTURE_FLOATING_PREVIEW_TEXT = 1;
@@ -270,6 +276,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
case MSG_DEALLOCATE_MEMORY:
latinIme.deallocateMemory();
break;
+ case MSG_SWITCH_LANGUAGE_AUTOMATICALLY:
+ latinIme.switchLanguage((InputMethodSubtype)msg.obj);
+ break;
}
}
@@ -388,6 +397,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
obtainMessage(MSG_UPDATE_TAIL_BATCH_INPUT_COMPLETED, suggestedWords).sendToTarget();
}
+ public void postSwitchLanguage(final InputMethodSubtype subtype) {
+ obtainMessage(MSG_SWITCH_LANGUAGE_AUTOMATICALLY, subtype).sendToTarget();
+ }
+
// Working variables for the following methods.
private boolean mIsOrientationChanging;
private boolean mPendingSuccessiveImsCallback;
@@ -703,7 +716,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
private boolean isImeSuppressedByHardwareKeyboard() {
final KeyboardSwitcher switcher = KeyboardSwitcher.getInstance();
- return switcher.isImeSuppressedByHardwareKeyboard(
+ return !onEvaluateInputViewShown() && switcher.isImeSuppressedByHardwareKeyboard(
mSettings.getCurrent(), switcher.getKeyboardSwitchState());
}
@@ -794,6 +807,19 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
void onStartInputInternal(final EditorInfo editorInfo, final boolean restarting) {
super.onStartInput(editorInfo, restarting);
+
+ // If the primary hint language does not match the current subtype language, then try
+ // to switch to the primary hint language.
+ // TODO: Support all the locales in EditorInfo#hintLocales.
+ final Locale primaryHintLocale = EditorInfoCompatUtils.getPrimaryHintLocale(editorInfo);
+ if (primaryHintLocale == null) {
+ return;
+ }
+ final InputMethodSubtype newSubtype = mRichImm.findSubtypeByLocale(primaryHintLocale);
+ if (newSubtype == null || newSubtype.equals(mRichImm.getCurrentSubtype().getRawSubtype())) {
+ return;
+ }
+ mHandler.postSwitchLanguage(newSubtype);
}
@SuppressWarnings("deprecation")
@@ -968,12 +994,19 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
}
@Override
+ public void onWindowShown() {
+ super.onWindowShown();
+ setNavigationBarVisibility(isInputViewShown());
+ }
+
+ @Override
public void onWindowHidden() {
super.onWindowHidden();
final MainKeyboardView mainKeyboardView = mKeyboardSwitcher.getMainKeyboardView();
if (mainKeyboardView != null) {
mainKeyboardView.closing();
}
+ setNavigationBarVisibility(false);
}
void onFinishInputInternal() {
@@ -1293,6 +1326,11 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
return mOptionsDialog != null && mOptionsDialog.isShowing();
}
+ public void switchLanguage(final InputMethodSubtype subtype) {
+ final IBinder token = getWindow().getWindow().getAttributes().token;
+ mRichImm.setInputMethodAndSubtype(token, subtype);
+ }
+
// TODO: Revise the language switch key behavior to make it much smarter and more reasonable.
public void switchToNextSubtype() {
final IBinder token = getWindow().getWindow().getAttributes().token;
@@ -1650,6 +1688,11 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// Hooks for hardware keyboard
@Override
public boolean onKeyDown(final int keyCode, final KeyEvent keyEvent) {
+ if (mEmojiAltPhysicalKeyDetector == null) {
+ mEmojiAltPhysicalKeyDetector = new EmojiAltPhysicalKeyDetector(
+ getApplicationContext().getResources());
+ }
+ mEmojiAltPhysicalKeyDetector.onKeyDown(keyEvent);
if (!ProductionFlags.IS_HARDWARE_KEYBOARD_SUPPORTED) {
return super.onKeyDown(keyCode, keyEvent);
}
@@ -1865,4 +1908,13 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
}
return mRichImm.shouldOfferSwitchingToNextInputMethod(token, fallbackValue);
}
+
+ private void setNavigationBarVisibility(final boolean visible) {
+ if (BuildCompatUtils.EFFECTIVE_SDK_INT > Build.VERSION_CODES.M) {
+ // For N and later, IMEs can specify Color.TRANSPARENT to make the navigation bar
+ // transparent. For other colors the system uses the default color.
+ getWindow().getWindow().setNavigationBarColor(
+ visible ? Color.BLACK : Color.TRANSPARENT);
+ }
+ }
}
diff --git a/java/src/com/android/inputmethod/latin/RichInputMethodManager.java b/java/src/com/android/inputmethod/latin/RichInputMethodManager.java
index ef946c8bc..3beb51d68 100644
--- a/java/src/com/android/inputmethod/latin/RichInputMethodManager.java
+++ b/java/src/com/android/inputmethod/latin/RichInputMethodManager.java
@@ -32,6 +32,7 @@ import android.view.inputmethod.InputMethodSubtype;
import com.android.inputmethod.annotations.UsedForTesting;
import com.android.inputmethod.compat.InputMethodManagerCompatWrapper;
+import com.android.inputmethod.compat.InputMethodSubtypeCompatUtils;
import com.android.inputmethod.latin.settings.Settings;
import com.android.inputmethod.latin.utils.AdditionalSubtypeUtils;
import com.android.inputmethod.latin.utils.LanguageOnSpacebarUtils;
@@ -428,6 +429,46 @@ public class RichInputMethodManager {
return null;
}
+ public InputMethodSubtype findSubtypeByLocale(final Locale locale) {
+ // Find the best subtype based on a straightforward matching algorithm.
+ // TODO: Use LocaleList#getFirstMatch() instead.
+ final List<InputMethodSubtype> subtypes =
+ getMyEnabledInputMethodSubtypeList(true /* allowsImplicitlySelectedSubtypes */);
+ final int count = subtypes.size();
+ for (int i = 0; i < count; ++i) {
+ final InputMethodSubtype subtype = subtypes.get(i);
+ final Locale subtypeLocale = InputMethodSubtypeCompatUtils.getLocaleObject(subtype);
+ if (subtypeLocale.equals(locale)) {
+ return subtype;
+ }
+ }
+ for (int i = 0; i < count; ++i) {
+ final InputMethodSubtype subtype = subtypes.get(i);
+ final Locale subtypeLocale = InputMethodSubtypeCompatUtils.getLocaleObject(subtype);
+ if (subtypeLocale.getLanguage().equals(locale.getLanguage()) &&
+ subtypeLocale.getCountry().equals(locale.getCountry()) &&
+ subtypeLocale.getVariant().equals(locale.getVariant())) {
+ return subtype;
+ }
+ }
+ for (int i = 0; i < count; ++i) {
+ final InputMethodSubtype subtype = subtypes.get(i);
+ final Locale subtypeLocale = InputMethodSubtypeCompatUtils.getLocaleObject(subtype);
+ if (subtypeLocale.getLanguage().equals(locale.getLanguage()) &&
+ subtypeLocale.getCountry().equals(locale.getCountry())) {
+ return subtype;
+ }
+ }
+ for (int i = 0; i < count; ++i) {
+ final InputMethodSubtype subtype = subtypes.get(i);
+ final Locale subtypeLocale = InputMethodSubtypeCompatUtils.getLocaleObject(subtype);
+ if (subtypeLocale.getLanguage().equals(locale.getLanguage())) {
+ return subtype;
+ }
+ }
+ return null;
+ }
+
public void setInputMethodAndSubtype(final IBinder token, final InputMethodSubtype subtype) {
mImmWrapper.mImm.setInputMethodAndSubtype(
token, getInputMethodIdOfThisIme(), subtype);
diff --git a/java/src/com/android/inputmethod/latin/RichInputMethodSubtype.java b/java/src/com/android/inputmethod/latin/RichInputMethodSubtype.java
index 9d7849ffc..cc589229e 100644
--- a/java/src/com/android/inputmethod/latin/RichInputMethodSubtype.java
+++ b/java/src/com/android/inputmethod/latin/RichInputMethodSubtype.java
@@ -18,14 +18,17 @@ package com.android.inputmethod.latin;
import static com.android.inputmethod.latin.common.Constants.Subtype.KEYBOARD_MODE;
+import android.os.Build;
import android.util.Log;
import android.view.inputmethod.InputMethodSubtype;
+import com.android.inputmethod.compat.BuildCompatUtils;
import com.android.inputmethod.compat.InputMethodSubtypeCompatUtils;
import com.android.inputmethod.latin.common.Constants;
import com.android.inputmethod.latin.common.LocaleUtils;
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
+import java.util.HashMap;
import java.util.Locale;
import javax.annotation.Nonnull;
@@ -40,14 +43,29 @@ import javax.annotation.Nullable;
public class RichInputMethodSubtype {
private static final String TAG = RichInputMethodSubtype.class.getSimpleName();
+ private static final HashMap<Locale, Locale> sLocaleMap = initializeLocaleMap();
+ private static final HashMap<Locale, Locale> initializeLocaleMap() {
+ final HashMap<Locale, Locale> map = new HashMap<>();
+ if (BuildCompatUtils.EFFECTIVE_SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ // Locale#forLanguageTag is available on API Level 21+.
+ // TODO: Remove this workaround once when we become able to deal with "sr-Latn".
+ map.put(Locale.forLanguageTag("sr-Latn"), new Locale("sr_ZZ"));
+ }
+ return map;
+ }
+
@Nonnull
private final InputMethodSubtype mSubtype;
@Nonnull
private final Locale mLocale;
+ @Nonnull
+ private final Locale mOriginalLocale;
public RichInputMethodSubtype(@Nonnull final InputMethodSubtype subtype) {
mSubtype = subtype;
- mLocale = LocaleUtils.constructLocaleFromString(mSubtype.getLocale());
+ mOriginalLocale = InputMethodSubtypeCompatUtils.getLocaleObject(mSubtype);
+ final Locale mappedLocale = sLocaleMap.get(mOriginalLocale);
+ mLocale = mappedLocale != null ? mappedLocale : mOriginalLocale;
}
// Extra values are determined by the primary subtype. This is probably right, but
@@ -128,6 +146,11 @@ public class RichInputMethodSubtype {
return mLocale;
}
+ @Nonnull
+ public Locale getOriginalLocale() {
+ return mOriginalLocale;
+ }
+
public boolean isRtlSubtype() {
// The subtype is considered RTL if the language of the main subtype is RTL.
return LocaleUtils.isRtlLanguage(mLocale);