diff options
Diffstat (limited to 'java')
231 files changed, 976 insertions, 6120 deletions
diff --git a/java/AndroidManifest.xml b/java/AndroidManifest.xml index e663c90f2..9f62e9779 100644 --- a/java/AndroidManifest.xml +++ b/java/AndroidManifest.xml @@ -49,15 +49,6 @@ </intent-filter> </activity> - <activity android:name="com.android.inputmethod.deprecated.languageswitcher.InputLanguageSelection" - android:label="@string/language_selection_title"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <action android:name="com.android.inputmethod.latin.INPUT_LANGUAGE_SELECTION"/> - <category android:name="android.intent.category.DEFAULT" /> - </intent-filter> - </activity> - <receiver android:name="SuggestionSpanPickedNotificationReceiver" android:enabled="true"> <intent-filter> <action android:name="android.text.style.SUGGESTION_PICKED" /> diff --git a/java/proguard.flags b/java/proguard.flags index e33706c47..2ee1a263f 100644 --- a/java/proguard.flags +++ b/java/proguard.flags @@ -1,6 +1,10 @@ -keep class com.android.inputmethod.latin.BinaryDictionary { int mDictLength; - <init>(...); + <init>(...); +} + +-keep class com.android.inputmethod.latin.Flag { + *; } -keep class com.android.inputmethod.latin.Suggest { @@ -8,13 +12,6 @@ com.android.inputmethod.latin.SuggestedWords getSuggestions(...); } --keep class com.android.inputmethod.latin.UserBigramDictionary { - void setDatabaseMax(int); - void setDatabaseDelete(int); - void waitUntilUpdateDBDone(); - void waitForDictionaryLoading(); -} - -keep class com.android.inputmethod.latin.AutoCorrection { java.lang.CharSequence getAutoCorrectionWord(); } @@ -23,18 +20,10 @@ boolean equalsIgnoreCase(...); } --keep class com.android.inputmethod.latin.spellcheck.SpellChecker { - *; -} - -keep class com.android.inputmethod.latin.spellcheck.SpellCheckerSettingsFragment { *; } --keep class com.android.inputmethod.latin.SettingsActivity { - *; -} - -keep class com.android.inputmethod.keyboard.LatinKeyboardView { # Keep getter/setter methods for ObjectAnimator int getLanguageOnSpacebarAnimAlpha(); @@ -51,6 +40,10 @@ void setLogFileManager(...); } +-keep class com.android.inputmethod.keyboard.KeyboardSet$Builder { + void setTouchPositionCorrectionEnabled(...); +} + # The support library contains references to newer platform versions. # Don't warn about those in case this app is linking against an older # platform version. We know about them, and they are safe. diff --git a/java/res/drawable-hdpi/caution.png b/java/res/drawable-hdpi/caution.png Binary files differdeleted file mode 100644 index 61eb4dd62..000000000 --- a/java/res/drawable-hdpi/caution.png +++ /dev/null diff --git a/java/res/drawable-hdpi/ic_mic_dialog.png b/java/res/drawable-hdpi/ic_mic_dialog.png Binary files differdeleted file mode 100644 index 6107f876e..000000000 --- a/java/res/drawable-hdpi/ic_mic_dialog.png +++ /dev/null diff --git a/java/res/drawable-hdpi/ic_suggest_strip_microphone.png b/java/res/drawable-hdpi/ic_suggest_strip_microphone.png Binary files differdeleted file mode 100644 index 189a861fb..000000000 --- a/java/res/drawable-hdpi/ic_suggest_strip_microphone.png +++ /dev/null diff --git a/java/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png b/java/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png Binary files differdeleted file mode 100644 index b4a6e373b..000000000 --- a/java/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png +++ /dev/null diff --git a/java/res/drawable-hdpi/mic_base.png b/java/res/drawable-hdpi/mic_base.png Binary files differdeleted file mode 100644 index 504a1aa2a..000000000 --- a/java/res/drawable-hdpi/mic_base.png +++ /dev/null diff --git a/java/res/drawable-hdpi/mic_full.png b/java/res/drawable-hdpi/mic_full.png Binary files differdeleted file mode 100644 index 3f4a67657..000000000 --- a/java/res/drawable-hdpi/mic_full.png +++ /dev/null diff --git a/java/res/drawable-hdpi/mic_slash.png b/java/res/drawable-hdpi/mic_slash.png Binary files differdeleted file mode 100644 index c3b10929b..000000000 --- a/java/res/drawable-hdpi/mic_slash.png +++ /dev/null diff --git a/java/res/drawable-hdpi/vs_dialog_blue.9.png b/java/res/drawable-hdpi/vs_dialog_blue.9.png Binary files differdeleted file mode 100644 index 4f813ead3..000000000 --- a/java/res/drawable-hdpi/vs_dialog_blue.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/vs_dialog_red.9.png b/java/res/drawable-hdpi/vs_dialog_red.9.png Binary files differdeleted file mode 100644 index a2055600e..000000000 --- a/java/res/drawable-hdpi/vs_dialog_red.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/vs_dialog_yellow.9.png b/java/res/drawable-hdpi/vs_dialog_yellow.9.png Binary files differdeleted file mode 100644 index ce664b676..000000000 --- a/java/res/drawable-hdpi/vs_dialog_yellow.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/vs_popup_mic_edge.png b/java/res/drawable-hdpi/vs_popup_mic_edge.png Binary files differdeleted file mode 100644 index 4ff6337a2..000000000 --- a/java/res/drawable-hdpi/vs_popup_mic_edge.png +++ /dev/null diff --git a/java/res/drawable-mdpi/caution.png b/java/res/drawable-mdpi/caution.png Binary files differdeleted file mode 100644 index eaef53425..000000000 --- a/java/res/drawable-mdpi/caution.png +++ /dev/null diff --git a/java/res/drawable-mdpi/ic_mic_dialog.png b/java/res/drawable-mdpi/ic_mic_dialog.png Binary files differdeleted file mode 100644 index 77613ca05..000000000 --- a/java/res/drawable-mdpi/ic_mic_dialog.png +++ /dev/null diff --git a/java/res/drawable-mdpi/ic_suggest_strip_microphone.png b/java/res/drawable-mdpi/ic_suggest_strip_microphone.png Binary files differdeleted file mode 100644 index 18f314a61..000000000 --- a/java/res/drawable-mdpi/ic_suggest_strip_microphone.png +++ /dev/null diff --git a/java/res/drawable-mdpi/ic_suggest_strip_microphone_swipe.png b/java/res/drawable-mdpi/ic_suggest_strip_microphone_swipe.png Binary files differdeleted file mode 100644 index ff629b674..000000000 --- a/java/res/drawable-mdpi/ic_suggest_strip_microphone_swipe.png +++ /dev/null diff --git a/java/res/drawable-mdpi/mic_base.png b/java/res/drawable-mdpi/mic_base.png Binary files differdeleted file mode 100644 index 53e29ff4b..000000000 --- a/java/res/drawable-mdpi/mic_base.png +++ /dev/null diff --git a/java/res/drawable-mdpi/mic_full.png b/java/res/drawable-mdpi/mic_full.png Binary files differdeleted file mode 100644 index e3e3dfac3..000000000 --- a/java/res/drawable-mdpi/mic_full.png +++ /dev/null diff --git a/java/res/drawable-mdpi/mic_slash.png b/java/res/drawable-mdpi/mic_slash.png Binary files differdeleted file mode 100644 index d04b56344..000000000 --- a/java/res/drawable-mdpi/mic_slash.png +++ /dev/null diff --git a/java/res/drawable-mdpi/vs_dialog_blue.9.png b/java/res/drawable-mdpi/vs_dialog_blue.9.png Binary files differdeleted file mode 100644 index cf27e8f43..000000000 --- a/java/res/drawable-mdpi/vs_dialog_blue.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/vs_dialog_red.9.png b/java/res/drawable-mdpi/vs_dialog_red.9.png Binary files differdeleted file mode 100644 index 6c08d5a30..000000000 --- a/java/res/drawable-mdpi/vs_dialog_red.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/vs_dialog_yellow.9.png b/java/res/drawable-mdpi/vs_dialog_yellow.9.png Binary files differdeleted file mode 100644 index 2fb06c263..000000000 --- a/java/res/drawable-mdpi/vs_dialog_yellow.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/vs_popup_mic_edge.png b/java/res/drawable-mdpi/vs_popup_mic_edge.png Binary files differdeleted file mode 100644 index 4ff6337a2..000000000 --- a/java/res/drawable-mdpi/vs_popup_mic_edge.png +++ /dev/null diff --git a/java/res/drawable-xhdpi/caution.png b/java/res/drawable-xhdpi/caution.png Binary files differdeleted file mode 100644 index cfc3f7547..000000000 --- a/java/res/drawable-xhdpi/caution.png +++ /dev/null diff --git a/java/res/drawable-xhdpi/ic_mic_dialog.png b/java/res/drawable-xhdpi/ic_mic_dialog.png Binary files differdeleted file mode 100644 index 5d6399c0a..000000000 --- a/java/res/drawable-xhdpi/ic_mic_dialog.png +++ /dev/null diff --git a/java/res/drawable-xhdpi/ic_suggest_strip_microphone.png b/java/res/drawable-xhdpi/ic_suggest_strip_microphone.png Binary files differdeleted file mode 100644 index d65d28708..000000000 --- a/java/res/drawable-xhdpi/ic_suggest_strip_microphone.png +++ /dev/null diff --git a/java/res/drawable-xhdpi/ic_suggest_strip_microphone_swipe.png b/java/res/drawable-xhdpi/ic_suggest_strip_microphone_swipe.png Binary files differdeleted file mode 100644 index 889378a6a..000000000 --- a/java/res/drawable-xhdpi/ic_suggest_strip_microphone_swipe.png +++ /dev/null diff --git a/java/res/drawable-xhdpi/mic_base.png b/java/res/drawable-xhdpi/mic_base.png Binary files differdeleted file mode 100644 index 5c060bec9..000000000 --- a/java/res/drawable-xhdpi/mic_base.png +++ /dev/null diff --git a/java/res/drawable-xhdpi/mic_full.png b/java/res/drawable-xhdpi/mic_full.png Binary files differdeleted file mode 100644 index 32ffe124e..000000000 --- a/java/res/drawable-xhdpi/mic_full.png +++ /dev/null diff --git a/java/res/drawable-xhdpi/mic_slash.png b/java/res/drawable-xhdpi/mic_slash.png Binary files differdeleted file mode 100644 index 18b22542b..000000000 --- a/java/res/drawable-xhdpi/mic_slash.png +++ /dev/null diff --git a/java/res/drawable-xhdpi/vs_dialog_blue.9.png b/java/res/drawable-xhdpi/vs_dialog_blue.9.png Binary files differdeleted file mode 100644 index 3284d78ef..000000000 --- a/java/res/drawable-xhdpi/vs_dialog_blue.9.png +++ /dev/null diff --git a/java/res/drawable-xhdpi/vs_dialog_red.9.png b/java/res/drawable-xhdpi/vs_dialog_red.9.png Binary files differdeleted file mode 100644 index 5af2465b5..000000000 --- a/java/res/drawable-xhdpi/vs_dialog_red.9.png +++ /dev/null diff --git a/java/res/drawable-xhdpi/vs_dialog_yellow.9.png b/java/res/drawable-xhdpi/vs_dialog_yellow.9.png Binary files differdeleted file mode 100644 index 4f50439de..000000000 --- a/java/res/drawable-xhdpi/vs_dialog_yellow.9.png +++ /dev/null diff --git a/java/res/drawable-xhdpi/vs_popup_mic_edge.png b/java/res/drawable-xhdpi/vs_popup_mic_edge.png Binary files differdeleted file mode 100644 index 1063cb464..000000000 --- a/java/res/drawable-xhdpi/vs_popup_mic_edge.png +++ /dev/null diff --git a/java/res/layout-sw768dp/recognition_status.xml b/java/res/layout-sw768dp/recognition_status.xml deleted file mode 100644 index d476651c6..000000000 --- a/java/res/layout-sw768dp/recognition_status.xml +++ /dev/null @@ -1,101 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2011, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> -<RelativeLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_height="wrap_content" - android:layout_width="match_parent" - android:background="@drawable/background_voice"> - <LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/popup_layout" - android:orientation="vertical" - android:layout_height="371dp" - android:layout_width="500dp" - android:layout_centerInParent="true" - android:background="@drawable/vs_dialog_red"> - <TextView - android:id="@+id/text" - android:text="@string/voice_error" - android:layout_height="wrap_content" - android:layout_width="wrap_content" - android:singleLine="true" - android:layout_marginTop="10dp" - android:textSize="28sp" - android:textColor="#ffffff" - android:layout_gravity="center" - android:visibility="invisible"/> - <RelativeLayout - android:layout_height="0dp" - android:layout_width="match_parent" - android:layout_weight="1.0"> - <com.android.inputmethod.deprecated.voice.SoundIndicator - android:id="@+id/sound_indicator" - android:src="@drawable/mic_full" - android:background="@drawable/mic_base" - android:adjustViewBounds="true" - android:layout_height="wrap_content" - android:layout_width="wrap_content" - android:layout_centerInParent="true" - android:visibility="gone"/> - <ImageView - android:id="@+id/image" - android:src="@drawable/mic_slash" - android:layout_height="wrap_content" - android:layout_width="wrap_content" - android:layout_centerInParent="true" - android:visibility="visible"/> - <ProgressBar - android:id="@+id/progress" - android:indeterminate="true" - android:indeterminateOnly="false" - android:layout_height="60dp" - android:layout_width="60dp" - android:layout_centerInParent="true" - android:visibility="gone"/> - </RelativeLayout> - <!-- - The text is set by the code. We specify a random text (voice_error), so the - text view does not have a zero height. This is necessary to keep the slash - mic and the recording mic is the same position - --> - <TextView - android:id="@+id/language" - android:text="@string/voice_error" - android:layout_height="wrap_content" - android:layout_width="wrap_content" - android:singleLine="true" - android:textSize="14sp" - android:layout_marginBottom="3dp" - android:layout_gravity="center" - android:textColor="#ffffff" - android:visibility="invisible"/> - <Button - android:id="@+id/button" - android:layout_width="match_parent" - android:layout_height="54dp" - android:singleLine="true" - android:focusable="true" - android:text="@string/cancel" - android:layout_gravity="center_horizontal" - android:background="@drawable/btn_center" - android:textColor="#ffffff" - android:textSize="19sp" /> - </LinearLayout> -</RelativeLayout> diff --git a/java/res/layout/recognition_status.xml b/java/res/layout/recognition_status.xml deleted file mode 100644 index 578788831..000000000 --- a/java/res/layout/recognition_status.xml +++ /dev/null @@ -1,102 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2009, 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. -*/ ---> -<RelativeLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_height="wrap_content" - android:layout_width="match_parent" - android:background="@drawable/background_voice"> - <LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/popup_layout" - android:orientation="vertical" - android:layout_height="371dp" - android:layout_width="500dp" - android:layout_centerInParent="true" - android:background="@drawable/vs_dialog_red"> - <TextView - android:id="@+id/text" - android:text="@string/voice_error" - android:layout_height="wrap_content" - android:layout_width="wrap_content" - android:singleLine="true" - android:layout_marginTop="10dp" - android:textSize="20sp" - android:textColor="#ffffff" - android:layout_gravity="center" - android:visibility="invisible"/> - <RelativeLayout - android:layout_height="0dp" - android:layout_width="match_parent" - android:layout_weight="1.0"> - <com.android.inputmethod.deprecated.voice.SoundIndicator - android:id="@+id/sound_indicator" - android:src="@drawable/mic_full" - android:background="@drawable/mic_base" - android:adjustViewBounds="true" - android:layout_height="wrap_content" - android:layout_width="wrap_content" - android:layout_centerInParent="true" - android:visibility="gone"/> - <ImageView - android:id="@+id/image" - android:src="@drawable/mic_slash" - android:layout_height="wrap_content" - android:layout_width="wrap_content" - android:layout_centerInParent="true" - android:visibility="visible"/> - <ProgressBar - android:id="@+id/progress" - android:indeterminate="true" - android:indeterminateOnly="false" - android:layout_height="60dp" - android:layout_width="60dp" - android:layout_centerInParent="true" - android:visibility="gone"/> - </RelativeLayout> - <!-- - The text is set by the code. We specify a random text (voice_error), so the - text view does not have a zero height. This is necessary to keep the slash - mic and the recording mic is the same position - --> - <TextView - android:id="@+id/language" - android:text="@string/voice_error" - android:layout_height="wrap_content" - android:layout_width="wrap_content" - android:singleLine="true" - android:textSize="15sp" - android:layout_marginTop="3dp" - android:layout_marginBottom="3dp" - android:layout_gravity="center" - android:textColor="#ffffff" - android:visibility="invisible"/> - <Button - android:id="@+id/button" - android:layout_width="match_parent" - android:layout_height="30dp" - android:singleLine="true" - android:focusable="true" - android:text="@string/cancel" - android:layout_gravity="center_horizontal" - android:background="@drawable/btn_center" - android:textColor="#ffffff" - android:textSize="15sp" /> - </LinearLayout> -</RelativeLayout> diff --git a/java/res/layout/voice_punctuation_hint.xml b/java/res/layout/voice_punctuation_hint.xml deleted file mode 100644 index b32feb6e2..000000000 --- a/java/res/layout/voice_punctuation_hint.xml +++ /dev/null @@ -1,49 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2009, 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. -*/ ---> - -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="horizontal" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@drawable/keyboard_suggest_strip"> - - <!-- TODO: Use dark mic icon. --> - <ImageView android:id="@+id/image" - android:layout_height="wrap_content" - android:layout_width="wrap_content" - android:paddingLeft="8dp" - android:paddingRight="8dp" - android:layout_gravity="center_horizontal" - android:src="@drawable/ic_suggest_strip_microphone" - /> - - <TextView android:id="@+id/text" - android:text="@string/voice_punctuation_hint" - android:layout_height="wrap_content" - android:layout_width="wrap_content" - android:paddingTop="2dp" - android:paddingRight="3dp" - android:textSize="13sp" - android:textColor="#888888" - android:layout_gravity="center_horizontal" - /> - -</LinearLayout> diff --git a/java/res/layout/voice_swipe_hint.xml b/java/res/layout/voice_swipe_hint.xml deleted file mode 100644 index b1e27c281..000000000 --- a/java/res/layout/voice_swipe_hint.xml +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2009, 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. -*/ ---> - -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="horizontal" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@drawable/keyboard_suggest_strip" - android:gravity="center_horizontal" - android:paddingTop="2dp"> - - <TextView android:id="@+id/text" - android:text="@string/voice_swipe_hint" - android:layout_height="wrap_content" - android:layout_width="wrap_content" - android:paddingTop="10dp" - android:paddingRight="6dp" - android:textSize="13sp" - android:textColor="#888888" - android:layout_gravity="center_horizontal" - /> - - <ImageView - android:layout_height="wrap_content" - android:layout_width="wrap_content" - android:layout_gravity="center_horizontal" - android:src="@drawable/ic_suggest_strip_microphone" - /> - - <ImageView - android:layout_height="wrap_content" - android:layout_width="wrap_content" - android:layout_gravity="center_horizontal" - android:src="@drawable/ic_suggest_strip_microphone_swipe" - /> - - -</LinearLayout> diff --git a/java/res/values-af/strings.xml b/java/res/values-af/strings.xml index b1f7658d3..b2525ad2d 100644 --- a/java/res/values-af/strings.xml +++ b/java/res/values-af/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Lettermodus"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Foonmodus"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Foonsimbool-modus"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Steminvoering"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Steminvoering vir jou taal word nie tans ondersteun nie, maar werk wel in Engels."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Steminvoer gebruik Google se spraakherkenning. "<a href="http://m.google.com/privacy">"Die Mobiel-privaatheidsbeleid"</a>" is van toepassing."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Om steminvoer af te skakel, gaan na invoermetode-instellings."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Om steminvoer te gebruik, druk die mikrofoonknoppie."</string> - <string name="voice_listening" msgid="467518160751321844">"Praat nou"</string> - <string name="voice_working" msgid="6666937792815731889">"Werkend"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Fout. Probeer asseblief weer."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Kon nie koppel nie"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Fout, te veel spraak."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Oudioprobleem"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Bedienerfout"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Geen spraak gehoor nie"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Geen passings gevind nie"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Stemsoek nie geïnstalleer nie"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Wenk:"</b>" Sleep oor die sleutelbord om te praat"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Wenk:"</b>" Probeer volgende keer om leestekens soos \"punt\", \"komma\" of \"vraagteken\" hardop te sê."</string> - <string name="cancel" msgid="6830980399865683324">"Kanselleer"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Steminvoerinstellings"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Op hoofsleutelbord"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Op simbolesleutelbord"</string> @@ -128,11 +108,10 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikrofoon op hoofsleutelbord"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikrofoon op simbolesleutelbord"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Steminvoer is gedeaktiveer"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Kies invoermetode"</string> <string name="configure_input_method" msgid="373356270290742459">"Stel invoermetodes op"</string> <string name="language_selection_title" msgid="1651299598555326750">"Invoertale"</string> <string name="select_language" msgid="3693815588777926848">"Invoertale"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Raak weer om te stoor"</string> + <string name="hint_add_to_dictionary" msgid="573678656946085380">"Raak weer om te stoor"</string> <string name="has_dictionary" msgid="6071847973466625007">"Woordeboek beskikbaar"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Aktiveer gebruikerterugvoer"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Help hierdie invoermetode-redigeerder te verbeter deur gebruikstatistiek en omvalverslae outomaties na Google te stuur."</string> diff --git a/java/res/values-am/strings.xml b/java/res/values-am/strings.xml index bb0c493b2..927956851 100644 --- a/java/res/values-am/strings.xml +++ b/java/res/values-am/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"የደብዳቤዎች ሁኔታ ላይ"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"የስልክ ሁኔታ ላይ"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"የስልክ ምልክቶች ሁኔታ ላይ"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"የድምፅ ግቤ ት"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"የድምፅ ግቤት በአሁኑ ጊዜ ለእርስዎን ቋንቋ አይደግፍም፣ ግን በእንግሊዘኛ ይሰራል።"</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"የድምፅ ግቤት የGoogleን ንግግር ለይቶ ማወቂያ ይጠቀማል።"<a href="http://m.google.com/privacy">"የተንቀሳቃሽ ስልክ ግላዊ ፖሊሲ"</a>" ይተገበራል።"</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"የድምፅ ግቤት ለማጥፋት፣ወደ ግቤት ሜተድ ቅንብሮች ሂድ።"</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"የድምፅግቤት ለመጠቀም፣ የማይክራፎንየድምፅ ማጉያ አዝራር ተጫን።"</string> - <string name="voice_listening" msgid="467518160751321844">"አሁን ተናገር"</string> - <string name="voice_working" msgid="6666937792815731889">"ሥራ ላይ"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"ስህተት፣ እባክዎ እንደገና ይሞክሩ።"</string> - <string name="voice_network_error" msgid="6649556447401862563">"ማያያዝ አልተቻለም"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"ስህተት፣ በጣም ብዙ ንግግር።"</string> - <string name="voice_audio_error" msgid="5072707727016414454">"የድምፅ ችግር"</string> - <string name="voice_server_error" msgid="7807129913977261644">"የአገልጋይ ስህተት"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"ምንም ንግግር አልተሰማም"</string> - <string name="voice_no_match" msgid="4285117547030179174">"ምንም ተመሳሳይ አልተገኘም።"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"የድምፅ ፍለጋአልተጫነም"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"ምክር፡"</b>" ለመናገር በቁልፍሰሌዳ ላይ አንሸራት"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"ምክር፡"</b>" ሌላ ጊዜ፣ እንደ \"period\", \"comma\", ወይም \"question mark\" ያሉ ስርዓተ ነጥቦችን ለመናገር ሞክር።"</string> - <string name="cancel" msgid="6830980399865683324">"ይቅር"</string> - <string name="ok" msgid="7898366843681727667">"እሺ"</string> <string name="voice_input" msgid="3583258583521397548">"የድምፅ ግቤት ቁልፍ"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"በዋናቁልፍ ሰሌዳ ላይ"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"በምልክቶች ቁልፍ ሰሌዳ ላይ"</string> @@ -128,11 +108,10 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"ድምፅ ማጉያ በዋናው ቁልፍሰሌዳው ላይ"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"የድምፅ ማጉያ ምልክትበቁልፍ ሰሌዳላይ"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"የድምፅ ግቤት ቦዝኗል"</string> - <string name="selectInputMethod" msgid="315076553378705821">"የግቤት ሜተድ ምረጥ"</string> <string name="configure_input_method" msgid="373356270290742459">"ግቤት ሜተዶችን አዋቀር"</string> <string name="language_selection_title" msgid="1651299598555326750">"ቋንቋዎች አግቤት"</string> <string name="select_language" msgid="3693815588777926848">"ቋንቋዎች አግቤት"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← ለማስቀመጥ ድጋሚ ንካ"</string> + <string name="hint_add_to_dictionary" msgid="573678656946085380">"ለማስቀመጥ እንደገና ንካ"</string> <string name="has_dictionary" msgid="6071847973466625007">"መዝገበ ቃላት አለ"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"የተጠቃሚ ግብረ ምላሽ አንቃ"</string> <string name="prefs_description_log" msgid="5827825607258246003">"ወደ Google የተሰናከለ ሪፖርቶች እና አጠቃቀም ስታስቲክስ በራስ ሰር በመላክ ይህን ግቤት ሜተድ አርትኢ እገዛ ያሻሽላል።"</string> diff --git a/java/res/values-ar/strings.xml b/java/res/values-ar/strings.xml index 46c9d8a91..9daa01220 100644 --- a/java/res/values-ar/strings.xml +++ b/java/res/values-ar/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"وضع الأحرف"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"وضع الهاتف"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"وضع رموز الهاتف"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"الإدخال الصوتي"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"الإدخال الصوتي غير معتمد حاليًا للغتك، ولكنه يعمل باللغة الإنجليزية."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"يستخدم الإدخال الصوتي خاصية التعرف على الكلام من Google. تنطبق "<a href="http://m.google.com/privacy">"سياسة خصوصية الجوال"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"لإيقاف الإدخال الصوتي، انتقل إلى إعدادات طريقة الإدخال."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"لاستخدام الإدخال الصوتي، اضغط على زر الميكروفون."</string> - <string name="voice_listening" msgid="467518160751321844">"تحدث الآن"</string> - <string name="voice_working" msgid="6666937792815731889">"العمل"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"خطأ. الرجاء المحاولة مرة أخرى."</string> - <string name="voice_network_error" msgid="6649556447401862563">"تعذر الاتصال"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"خطأ، كلام أكثر مما ينبغي."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"مشكلة بالإعدادات الصوتية"</string> - <string name="voice_server_error" msgid="7807129913977261644">"خطأ في الخادم"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"لم يتم سماع كلام"</string> - <string name="voice_no_match" msgid="4285117547030179174">"لم يتمّ العثور على أية تطابقات"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"لم يتم تثبيت البحث الصوتي"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"تلميح:"</b>" مرر عبر لوحة المفاتيح للتحدث"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"تلميح:"</b>" جرب في المرة التالية نطق الترقيم مثل \"نقطة\" أو \"فاصلة\" أو \"علامة استفهام\"."</string> - <string name="cancel" msgid="6830980399865683324">"إلغاء"</string> - <string name="ok" msgid="7898366843681727667">"موافق"</string> <string name="voice_input" msgid="3583258583521397548">"مفتاح الإدخال الصوتي"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"لوحة مفاتيح رئيسية"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"لوحة مفاتيح الرموز"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"ميكروفون على لوحة مفاتيح رئيسية"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"ميكروفون على لوحة مفاتيح الرموز"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"الإدخال الصوتي مُعطل"</string> - <string name="selectInputMethod" msgid="315076553378705821">"تحديد طريقة الإرسال"</string> <string name="configure_input_method" msgid="373356270290742459">"تهيئة طرق الإدخال"</string> <string name="language_selection_title" msgid="1651299598555326750">"لغات الإدخال"</string> <string name="select_language" msgid="3693815588777926848">"لغات الإدخال"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← المس مرة أخرى للحفظ"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"القاموس متاح"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"تمكين ملاحظات المستخدم"</string> <string name="prefs_description_log" msgid="5827825607258246003">"المساعدة في تحسين محرر طريقة الإرسال هذا من خلال إرسال إحصاءات الاستخدام وتقارير الأعطال تلقائيًا إلى Google."</string> diff --git a/java/res/values-be/donottranslate-more-keys.xml b/java/res/values-be/donottranslate-more-keys.xml index 1550ddb17..835553a1f 100644 --- a/java/res/values-be/donottranslate-more-keys.xml +++ b/java/res/values-be/donottranslate-more-keys.xml @@ -19,7 +19,13 @@ --> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <!-- U+045E: "ў" CYRILLIC SMALL LETTER SHORT U --> - <string name="keylabel_for_cyrillic_shcha">ў</string> + <string name="keylabel_for_east_slavic_row1_9">ў</string> + <!-- U+044B: "ы" CYRILLIC SMALL LETTER YERU --> + <string name="keylabel_for_east_slavic_row2_1">ы</string> <!-- U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I --> - <string name="keylabel_for_cyrillic_i">і</string> + <string name="keylabel_for_east_slavic_row3_5">і</string> + <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN --> + <string name="more_keys_for_cyrillic_ha">ъ</string> + <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN --> + <string name="more_keys_for_cyrillic_soft_sign">ъ</string> </resources> diff --git a/java/res/values-be/strings.xml b/java/res/values-be/strings.xml index fb72634b0..ab00be926 100644 --- a/java/res/values-be/strings.xml +++ b/java/res/values-be/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Рэжым лiтар"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Рэжым тэлефона"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Рэжым тэлефонных знакаў"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Галасавы ўвод"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Галасавы ўвод пакуль не падтрымліваецца для вашай мовы, але працуе на англійскай мове."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Галасавы набор выкарыстоўвае распазнанне гаворкі Google. Ужываецца "<a href="http://m.google.com/privacy">"палiтыка прыватнасцi для мабiльных прылад"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Каб адключыць галасавы ўвод, перайдзіце ў налады метаду ўводу."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Каб выкарыстоўваць галасавы ўвод, націсніце кнопку мікрафона."</string> - <string name="voice_listening" msgid="467518160751321844">"Гаварыце"</string> - <string name="voice_working" msgid="6666937792815731889">"Апрацоўка"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Памылка. Паспрабуйце яшчэ."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Не атрымалася ўсталяваць падключэнне"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Памылка, зашмат гаворкі."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Праблема з гукам"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Памылка сервера"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Не чуваць гаворку"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Няма супадзенняў"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Галасавы пошук не ўсталяваны"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Падказка:"</b>" Правядзіце пальцам праз клавіятуру, каб казаць"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Падказка:"</b>" У наступны раз паспрабуйце прагаворваць такiя знакі пунктуацыі, як \"кропка\", \"коска\" або \"пытальнік\"."</string> - <string name="cancel" msgid="6830980399865683324">"Адмяніць"</string> - <string name="ok" msgid="7898366843681727667">"ОК"</string> <string name="voice_input" msgid="3583258583521397548">"Ключ галасавога ўводу"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"На асн. клавіятуры"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"На сімв. клавіятуры"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Мік. на асн. клав."</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Мік. на сімв. клав."</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Галасавы набор адкл."</string> - <string name="selectInputMethod" msgid="315076553378705821">"Выберыце метад уводу"</string> <string name="configure_input_method" msgid="373356270290742459">"Налада метадаў уводу"</string> <string name="language_selection_title" msgid="1651299598555326750">"Мовы ўводу"</string> <string name="select_language" msgid="3693815588777926848">"Мовы ўводу"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"... Дакраніцеся яшчэ раз, каб захаваць"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"Слоўнік даступны"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Уключыць зваротную сувязь з карыстальнікамі"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Дапамажыце палепшыць гэты рэдактар метаду ўводу, аўтаматычна адпраўляючы статыстыку выкарыстання і справаздачы аб збоях Google."</string> diff --git a/java/res/values-bg/strings.xml b/java/res/values-bg/strings.xml index c92b95c21..c7c7a2510 100644 --- a/java/res/values-bg/strings.xml +++ b/java/res/values-bg/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Режим за букви"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Режим за телефон"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Режим за символи на телефона"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Гласово въвеждане"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"За вашия език понастоящем не се поддържа гласово въвеждане, но можете да го използвате на английски."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Гласовото въвеждане използва функцията на Google за разпознаване на говор. В сила е "<a href="http://m.google.com/privacy">"Декларацията за поверителност за мобилни устройства"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"За да изключите гласовото въвеждане, отворете настройките за метода за въвеждане."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"За да използвате гласово въвеждане, натиснете бутона на микрофона."</string> - <string name="voice_listening" msgid="467518160751321844">"Говорете сега"</string> - <string name="voice_working" msgid="6666937792815731889">"Обработва се"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Грешка. Моля, опитайте отново."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Не можа да се свърже"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Грешка, твърде много речева информация."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Аудиопроблем"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Грешка в сървъра"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Не се чува реч"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Нямаше съответствия"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Не е инсталирано гласово търсене"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Съвет:"</b>" Прокарайте палец през клавиатурата, за да говорите"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Съвет:"</b>" Следващия път опитайте да произнесете знаците за пунктуация, напр. „точка“, „запетая“ или „въпросителен знак“."</string> - <string name="cancel" msgid="6830980399865683324">"Отказ"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Клавиш за гласово въвеждане"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"На осн. клавиатура"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"На клав. на симв."</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Микр. на осн. клав."</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Микр. на клав. на симв."</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Глас. въвежд. е деакт."</string> - <string name="selectInputMethod" msgid="315076553378705821">"Избор на метод на въвеждане"</string> <string name="configure_input_method" msgid="373356270290742459">"Конфигуриране на въвеждането"</string> <string name="language_selection_title" msgid="1651299598555326750">"Входни езици"</string> <string name="select_language" msgid="3693815588777926848">"Езици за въвеждане"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Докоснете отново, за да запазите"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"Има достъп до речник"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Активиране на отзивите от потребителите"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Помогнете за подобряването на този редактор за въвеждане чрез автоматично изпращане до Google на статистически данни за употребата и сигнали за сривове."</string> diff --git a/java/res/values-ca/strings.xml b/java/res/values-ca/strings.xml index 578580320..a530ac16e 100644 --- a/java/res/values-ca/strings.xml +++ b/java/res/values-ca/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Mode de lletres"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Mode de telèfon"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Mode de símbols de telèfon"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Entrada de veu"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Actualment, l\'entrada de veu no és compatible amb el vostre idioma, però funciona en anglès."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"L\'entrada de veu utilitza el reconeixement de veu de Google. S\'hi aplica la "<a href="http://m.google.com/privacy">"Política de privadesa de Google per a mòbils"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Per desactivar l\'entada de veu, vés a la configuració del mètode d\'entrada."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Per utilitzar l\'entrada de veu, prem el botó del micròfon."</string> - <string name="voice_listening" msgid="467518160751321844">"Parleu ara"</string> - <string name="voice_working" msgid="6666937792815731889">"S\'està treballant"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Error. Torneu-ho a provar."</string> - <string name="voice_network_error" msgid="6649556447401862563">"No s\'ha pogut connectar"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Error; s\'ha parlat massa."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Problema d\'àudio"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Error del servidor"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"No s\'escolten paraules"</string> - <string name="voice_no_match" msgid="4285117547030179174">"No hi ha resultats"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Cerca per veu no instal·lada"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Consell:"</b>" Feu lliscar el dit pel teclat per parlar"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Suggeriment:"</b>" La propera vegada, proveu de dir la puntuació, com ara \"punt\", \"coma\" o \"interrogant\"."</string> - <string name="cancel" msgid="6830980399865683324">"Cancel·la"</string> - <string name="ok" msgid="7898366843681727667">"D\'acord"</string> <string name="voice_input" msgid="3583258583521397548">"Clau de l\'entrada de veu"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Al teclat principal"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Al tecl. de símb."</string> @@ -128,11 +108,10 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Micro en tecl. princ."</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Micro en tecl. símb."</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Entr. veu desactiv."</string> - <string name="selectInputMethod" msgid="315076553378705821">"Selecciona el mètode d\'entrada"</string> <string name="configure_input_method" msgid="373356270290742459">"Configura mètodes d\'entrada"</string> <string name="language_selection_title" msgid="1651299598555326750">"Idiomes d\'entrada"</string> <string name="select_language" msgid="3693815588777926848">"Idiomes d\'entrada"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Torna a tocar per desar"</string> + <string name="hint_add_to_dictionary" msgid="573678656946085380">"Torna a tocar per desar"</string> <string name="has_dictionary" msgid="6071847973466625007">"Diccionari disponible"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Activa els comentaris de l\'usuari"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Ajuda a millorar aquest editor de mètodes d\'entrada enviant automàticament estadístiques d\'ús i informes de bloqueigs a Google."</string> diff --git a/java/res/values-cs/strings.xml b/java/res/values-cs/strings.xml index d5989d791..0e7ad8bbc 100644 --- a/java/res/values-cs/strings.xml +++ b/java/res/values-cs/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Režim písmen"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Režim telefonu"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Režim telefonních symbolů"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Hlasový vstup"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Pro váš jazyk aktuálně není hlasový vstup podporován, ale funguje v angličtině."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Hlasový vstup používá rozpoznávání hlasu Google a vztahují se na něj "<a href="http://m.google.com/privacy">"Zásady ochrany osobních údajů pro mobilní služby"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Chcete-li vypnout hlasový vstup, přejděte do nastavení metod vstupu."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Chcete-li použít hlasový vstup, stiskněte tlačítko mikrofonu."</string> - <string name="voice_listening" msgid="467518160751321844">"Mluvte"</string> - <string name="voice_working" msgid="6666937792815731889">"Probíhá zpracování"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Chyba. Zkuste to prosím znovu."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Připojení se nezdařilo."</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Chyba, řeč je příliš dlouhá."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Problém se zvukem"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Chyba serveru"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Nebyla detekována žádná řeč."</string> - <string name="voice_no_match" msgid="4285117547030179174">"Nebyly nalezeny žádné shody"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Hlasové vyhledávání není nainstalováno"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Nápověda:"</b>" Chcete-li aktivovat hlasový vstup, přejeďte prstem přes klávesnici."</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Nápověda:"</b>" Příště zkuste vyslovit interpunkci, například „tečka“, „čárka“ nebo „otazník“."</string> - <string name="cancel" msgid="6830980399865683324">"Zrušit"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Klíč hlasového vstupu"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Na hlavní klávesnici"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Na klávesnici se symb."</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikr. na hlav. kláv."</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikr. na kláv. se symb."</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Hlasový vstup vypnut"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Výběr metody zadávání dat"</string> <string name="configure_input_method" msgid="373356270290742459">"Konfigurace metod vstupu"</string> <string name="language_selection_title" msgid="1651299598555326750">"Vstupní jazyky"</string> <string name="select_language" msgid="3693815588777926848">"Jazyky vstupu"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Dalším dotykem slovo uložíte"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"K dispozici je slovník"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Aktivovat zasílání statistik užívání a zpráv o selhání"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Automatickým zasíláním statistik o užívání editoru zadávání dat a zpráv o jeho selhání do Googlu můžete přispět k vylepšení tohoto nástroje."</string> diff --git a/java/res/values-da/donottranslate-more-keys.xml b/java/res/values-da/donottranslate-more-keys.xml index 739ab09e7..acc0c534d 100644 --- a/java/res/values-da/donottranslate-more-keys.xml +++ b/java/res/values-da/donottranslate-more-keys.xml @@ -59,13 +59,13 @@ <!-- U+0142: "ł" LATIN SMALL LETTER L WITH STROKE --> <string name="more_keys_for_l">ł</string> <!-- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE --> - <string name="keylabel_for_scandinavia_row1_11">å</string> + <string name="keylabel_for_nordic_row1_11">å</string> <!-- U+00E6: "æ" LATIN SMALL LETTER AE --> - <string name="keylabel_for_scandinavia_row2_10">æ</string> + <string name="keylabel_for_nordic_row2_10">æ</string> <!-- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE --> - <string name="keylabel_for_scandinavia_row2_11">ø</string> + <string name="keylabel_for_nordic_row2_11">ø</string> <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS --> - <string name="more_keys_for_scandinavia_row2_10">ä</string> + <string name="more_keys_for_nordic_row2_10">ä</string> <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS --> - <string name="more_keys_for_scandinavia_row2_11">ö</string> + <string name="more_keys_for_nordic_row2_11">ö</string> </resources> diff --git a/java/res/values-da/strings.xml b/java/res/values-da/strings.xml index 97dec329b..cccd088da 100644 --- a/java/res/values-da/strings.xml +++ b/java/res/values-da/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Bogstavtilstand"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Telefontilstand"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Telefonsymboltilstand"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Stemmeinput"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Stemmeinput understøttes i øjeblikket ikke for dit sprog, men fungerer på engelsk."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Stemmeinput anvender Googles stemmegenkendelse. "<a href="http://m.google.com/privacy">"Fortrolighedspolitikken for mobilenheder"</a>" gælder."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Slå stemmeinput fra i indstillingerne for inputmetode."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Brug stemmeinput ved at trykke på mikrofonknappen."</string> - <string name="voice_listening" msgid="467518160751321844">"Tal nu"</string> - <string name="voice_working" msgid="6666937792815731889">"Arbejder"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Fejl. Prøv igen."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Kunne ikke oprette forbindelse"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Fejl. For meget tale."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Lydproblem"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Serverfejl"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Der høres ingen tale"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Der blev ikke fundet nogen matches"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Stemmesøgning er ikke installeret"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Tip:"</b>" Glid hen over tastaturet for at tale"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Tip:"</b>" Næste gang kan du forsøge at sige tegnsætning, f.eks. \"punktum\", \"komma\" eller \"spørgsmålstegn\"."</string> - <string name="cancel" msgid="6830980399865683324">"Annuller"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Nøgle til stemmeinput"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"På hovedtastatur"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"På symboltastatur"</string> @@ -128,11 +108,10 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mik. på hovedtastatur"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mik. på symboltastatur"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Stemmeinput deaktiveret"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Vælg inputmetode"</string> <string name="configure_input_method" msgid="373356270290742459">"Konfigurer inputmetoder"</string> <string name="language_selection_title" msgid="1651299598555326750">"Inputsprog"</string> <string name="select_language" msgid="3693815588777926848">"Inputsprog"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Tryk igen for at gemme"</string> + <string name="hint_add_to_dictionary" msgid="573678656946085380">"Tryk igen for at gemme"</string> <string name="has_dictionary" msgid="6071847973466625007">"Ordbog er tilgængelig"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Aktiver brugerfeedback"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Vær med til at forbedre denne inputmetode ved at sende anvendelsesstatistikker og rapporter om nedbrud til Google."</string> diff --git a/java/res/values-de/strings.xml b/java/res/values-de/strings.xml index 75ef10655..cf0678165 100644 --- a/java/res/values-de/strings.xml +++ b/java/res/values-de/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Buchstabenmodus"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Telefonmodus"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Telefon-Symbolmodus"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Spracheingabe"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Spracheingaben werden zurzeit nicht für Ihre Sprache unterstützt, funktionieren jedoch in Englisch."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Die Spracheingabe verwendet die Spracherkennung von Google. Es gelten die "<a href="http://m.google.com/privacy">"Google Mobile-Datenschutzbestimmungen"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Rufen Sie zum Deaktivieren der Spracheingabe die Einstellungen für die Eingabemethode auf."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Drücken Sie zur Verwendung der Spracheingabe die Mikrofonschaltfläche."</string> - <string name="voice_listening" msgid="467518160751321844">"Jetzt sprechen"</string> - <string name="voice_working" msgid="6666937792815731889">"Vorgang läuft"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Fehler. Versuchen Sie es erneut.."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Keine Verbindung"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Fehler – Text zu lang"</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Audio-Problem"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Serverfehler"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Keine Sprache zu hören"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Keine Treffer gefunden"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Sprachsuche nicht installiert"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Hinweis:"</b>" Ziehen Sie zum Sprechen den Finger über die Tastatur."</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Hinweis:"</b>" Versuchen Sie beim nächsten Mal, Satzzeichen wie \"Punkt\", \"Komma\" oder \"Fragezeichen\" per Sprachbefehl einzugeben."</string> - <string name="cancel" msgid="6830980399865683324">"Abbrechen"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Taste für Spracheingabe"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Auf Haupttastatur"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Auf Symboltastatur"</string> @@ -128,11 +108,10 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikro auf Haupttastatur"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikro auf Symboltastatur"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Spracheingabe deaktiviert"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Eingabemethode auswählen"</string> <string name="configure_input_method" msgid="373356270290742459">"Eingabemethoden konfigurieren"</string> <string name="language_selection_title" msgid="1651299598555326750">"Eingabesprachen"</string> <string name="select_language" msgid="3693815588777926848">"Eingabesprachen"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Zum Speichern erneut berühren"</string> + <string name="hint_add_to_dictionary" msgid="573678656946085380">"Zum Speichern erneut berühren"</string> <string name="has_dictionary" msgid="6071847973466625007">"Wörterbuch verfügbar"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Nutzer-Feedback aktivieren"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Tragen Sie zur Verbesserung dieses Eingabemethodeneditors bei, indem Sie automatisch Nutzungsstatistiken und Absturzberichte an Google senden."</string> diff --git a/java/res/values-el/strings.xml b/java/res/values-el/strings.xml index fb2bff331..da0cb3680 100644 --- a/java/res/values-el/strings.xml +++ b/java/res/values-el/strings.xml @@ -39,7 +39,7 @@ <string name="advanced_settings_summary" msgid="4487980456152830271">"Επιλογές για έμπειρους χρήστες"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Άλλη μέθοδος εισόδου"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Το κλειδί αλλαγής γλώσσας καλύπτει και άλλες μεθόδους εισόδου"</string> - <string name="suppress_language_switch_key" msgid="8003788410354806368">"Κατάργ.κλειδ.αλλαγ.γλωσσ."</string> + <string name="suppress_language_switch_key" msgid="8003788410354806368">"Κατάργ. κλειδιού γλώσσας"</string> <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Χρόνος εξαφ. αναδ. παραθ."</string> <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Χωρίς καθυστέρ."</string> <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Προεπιλογή"</string> @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Λειτουργία γραμμάτων"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Λειτουργία τηλεφώνου"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Λειτουργία συμβόλων τηλεφώνου"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Φωνητική είσοδος"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Η φωνητική είσοδος δεν υποστηρίζεται αυτή τη στιγμή για τη γλώσσα σας, ωστόσο λειτουργεί στα Αγγλικά."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Οι φωνητικές εντολές χρησιμοποιούν την τεχνολογία αναγνώρισης φωνής της Google. Ισχύει "<a href="http://m.google.com/privacy">"η Πολιτική Απορρήτου για κινητά"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Για να απενεργοποιήσετε τις φωνητικές εντολές, μεταβείτε στις ρυθμίσεις της μεθόδου εισαγωγής."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Για τη χρήση φωνητικών εντολών, πατήστε το κουμπί του μικροφώνου."</string> - <string name="voice_listening" msgid="467518160751321844">"Μιλήστε τώρα"</string> - <string name="voice_working" msgid="6666937792815731889">"Σε λειτουργία"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Σφάλμα. Δοκιμάστε ξανά."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Δεν ήταν δυνατή η σύνδεση"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Σφάλμα, πολλές λέξεις."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Πρόβλημα ήχου"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Σφάλμα διακομιστή"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Δεν ακούγεται ομιλία"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Δεν βρέθηκε καμία αντιστοίχιση"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Η Φωνητική αναζήτηση δεν εγκαταστάθηκε"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Υπόδειξη:"</b>" Σύρετε κατά μήκος του πληκτρολογίου για να μιλήσετε"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Υπόδειξη:"</b>" Την επόμενη φορά, προσπαθήστε να προφέρετε σημεία στίξης, όπως \"τελεία\", \"κόμμα\" ή \"ερωτηματικό\"."</string> - <string name="cancel" msgid="6830980399865683324">"Ακύρωση"</string> - <string name="ok" msgid="7898366843681727667">"ΟΚ"</string> <string name="voice_input" msgid="3583258583521397548">"Κλειδί φωνητικής εξόδου"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Στο κύριο πληκτρολ."</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Πληκτρ. συμβ. ενερ."</string> @@ -128,11 +108,10 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Μικ. στο κύριο πληκ."</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Μικ. στο πληκ. συμβ."</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Απεν. φωνητ. είσοδος"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Επιλογή μεθόδου εισόδου"</string> <string name="configure_input_method" msgid="373356270290742459">"Διαμόρφωση μεθόδων εισαγωγής"</string> <string name="language_selection_title" msgid="1651299598555326750">"Γλώσσες εισόδου"</string> <string name="select_language" msgid="3693815588777926848">"Γλώσσες εισόδου"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Αγγίξτε ξανά για αποθήκευση"</string> + <string name="hint_add_to_dictionary" msgid="573678656946085380">"Αγγίξτε ξανά για αποθήκευση"</string> <string name="has_dictionary" msgid="6071847973466625007">"Λεξικό διαθέσιμο"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Ενεργοποίηση σχολίων χρηστών"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Βοηθήστε μας να βελτιώσουμε αυτό το πρόγραμμα επεξεργασίας μεθόδου εισόδου στέλνοντας αυτόματα στατιστικά στοιχεία και αναφορές σφαλμάτων στην Google."</string> diff --git a/java/res/values-en-rGB/strings.xml b/java/res/values-en-rGB/strings.xml index 53d025213..0aae21e38 100644 --- a/java/res/values-en-rGB/strings.xml +++ b/java/res/values-en-rGB/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Letters mode"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Phone mode"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Phone symbols mode"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Voice input"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Voice input is not currently supported for your language, but does work in English."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Voice input uses Google\'s speech recognition. "<a href="http://m.google.com/privacy">"The Mobile Privacy Policy"</a>" applies."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"To turn off voice input, go to input method settings."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"To use voice input, press the microphone button."</string> - <string name="voice_listening" msgid="467518160751321844">"Speak now"</string> - <string name="voice_working" msgid="6666937792815731889">"Working"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Error: Please try again."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Couldn\'t connect"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Error, too much speech."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Audio problem"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Server error"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"No speech heard"</string> - <string name="voice_no_match" msgid="4285117547030179174">"No matches found"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Voice search not installed"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Hint:"</b>" Swipe across keyboard to speak"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Hint:"</b>" Next time, try speaking punctuation marks, like \"full stop\", \"comma\" or \"question mark\"."</string> - <string name="cancel" msgid="6830980399865683324">"Cancel"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Voice input key"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"On main keyboard"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"On symbols keyboard"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mic on main keyboard"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mic on symbols keyboard"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Voice input is disabled"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Select input method"</string> <string name="configure_input_method" msgid="373356270290742459">"Configure input methods"</string> <string name="language_selection_title" msgid="1651299598555326750">"Input languages"</string> <string name="select_language" msgid="3693815588777926848">"Input languages"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Touch again to save"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"Dictionary available"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Enable user feedback"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Help improve this input method editor by sending usage statistics and crash reports automatically to Google."</string> diff --git a/java/res/values-es-rUS/strings.xml b/java/res/values-es-rUS/strings.xml index aec1703a3..b9c4963a4 100644 --- a/java/res/values-es-rUS/strings.xml +++ b/java/res/values-es-rUS/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Modo Letras"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Modo Teléfono"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Modo Símbolos del teléfono"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Entrada por voz"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"La entrada por voz no está admitida en tu idioma, pero sí funciona en inglés."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"La entrada de voz usa el reconocimiento de voz de Google. "<a href="http://m.google.com/privacy">"Se aplica la política de privacidad para"</a>" celulares."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Para desactivar la entrada de voz, ve a la configuración de métodos de entrada."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Para utilizar entrada de voz, presiona el botón micrófono."</string> - <string name="voice_listening" msgid="467518160751321844">"Habla ahora"</string> - <string name="voice_working" msgid="6666937792815731889">"Procesando"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Error. Vuelve a intentarlo."</string> - <string name="voice_network_error" msgid="6649556447401862563">"No se pudo establecer la conexión."</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Error, demasiado discurso."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Problema de audio"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Error del servidor"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"No se oyó la voz"</string> - <string name="voice_no_match" msgid="4285117547030179174">"No se encontraron coincidencias"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Búsqueda por voz no instalada"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Sugerencia:"</b>" Deslizar en el teclado para hablar"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Sugerencia:"</b>" La próxima vez intenta decir la puntuación como \"punto\", \"coma\" o \"signo de pregunta\"."</string> - <string name="cancel" msgid="6830980399865683324">"Cancelar"</string> - <string name="ok" msgid="7898366843681727667">"Aceptar"</string> <string name="voice_input" msgid="3583258583521397548">"Tecla de entrada por voz"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"En el teclado principal"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"En el teclado de símbolos"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Micrófono en el teclado principal"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Micrófono en el teclado de símbolos"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"La entrada por voz está inhabilitada"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Seleccionar método de entrada"</string> <string name="configure_input_method" msgid="373356270290742459">"Configurar métodos de entrada"</string> <string name="language_selection_title" msgid="1651299598555326750">"Idiomas de entrada"</string> <string name="select_language" msgid="3693815588777926848">"Idiomas de entrada"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Tocar de nuevo para guardar"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"Diccionario disponible"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Activar los comentarios del usuario"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Ayuda a mejorar este editor de método de introducción de texto al enviar las estadísticas de uso y los informes de error a Google."</string> diff --git a/java/res/values-es/strings.xml b/java/res/values-es/strings.xml index 3dd151964..a746c3710 100644 --- a/java/res/values-es/strings.xml +++ b/java/res/values-es/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Modo de letras"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Modo de teléfono"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Modo de símbolos de teléfono"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Introducción de voz"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Actualmente la introducción de voz no está disponible en tu idioma, pero se puede utilizar en inglés."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"La entrada de voz utiliza el reconocimiento de voz de Google. Se aplica la "<a href="http://m.google.com/privacy">"Política de privacidad de Google para móviles"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Para desactivar la función de entrada de voz, accede a los ajustes del método de introducción de texto."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Para utilizar la entrada de voz, pulsa el botón de micrófono."</string> - <string name="voice_listening" msgid="467518160751321844">"Habla ahora"</string> - <string name="voice_working" msgid="6666937792815731889">"En curso"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Se ha producido un error. Inténtalo de nuevo."</string> - <string name="voice_network_error" msgid="6649556447401862563">"No se ha podido establecer conexión."</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Se ha producido un error debido a un exceso de introducción de datos de voz."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Problema de audio"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Error del servidor"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Ninguna conversación escuchada"</string> - <string name="voice_no_match" msgid="4285117547030179174">"No se ha encontrado ninguna coincidencia."</string> - <string name="voice_not_installed" msgid="5552450909753842415">"La búsqueda por voz no está instalada."</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Sugerencia:"</b>" muévete por el teclado para hablar."</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Sugerencia:"</b>" la próxima vez, prueba a indicar signos de puntuación como, por ejemplo, \"punto\", \"coma\" o \"signo de interrogación\"."</string> - <string name="cancel" msgid="6830980399865683324">"Cancelar"</string> - <string name="ok" msgid="7898366843681727667">"Aceptar"</string> <string name="voice_input" msgid="3583258583521397548">"Tecla de entrada de voz"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"En teclado principal"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"En teclado de símbolos"</string> @@ -128,11 +108,10 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Micrófono en teclado principal"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Micro en teclado de símbolos"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Entrada de voz inhabilitada"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Selecciona un método de introducción de texto"</string> <string name="configure_input_method" msgid="373356270290742459">"Configurar métodos de introducción"</string> <string name="language_selection_title" msgid="1651299598555326750">"Idiomas"</string> <string name="select_language" msgid="3693815588777926848">"Idiomas de entrada"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Volver a tocar para guardar"</string> + <string name="hint_add_to_dictionary" msgid="573678656946085380">"Toca otra vez para guardar."</string> <string name="has_dictionary" msgid="6071847973466625007">"Hay un diccionario disponible"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Habilitar comentarios de usuarios"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Ayuda a mejorar este editor de método de introducción de texto enviando estadísticas de uso e informes de error a Google."</string> diff --git a/java/res/values-et/donottranslate-more-keys.xml b/java/res/values-et/donottranslate-more-keys.xml index be66b42f5..69cf654a6 100644 --- a/java/res/values-et/donottranslate-more-keys.xml +++ b/java/res/values-et/donottranslate-more-keys.xml @@ -104,11 +104,11 @@ U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE --> <string name="more_keys_for_g">ģ,ğ</string> <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS --> - <string name="keylabel_for_scandinavia_row1_11">ü</string> + <string name="keylabel_for_nordic_row1_11">ü</string> <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS --> - <string name="keylabel_for_scandinavia_row2_10">ö</string> + <string name="keylabel_for_nordic_row2_10">ö</string> <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS --> - <string name="keylabel_for_scandinavia_row2_11">ä</string> + <string name="keylabel_for_nordic_row2_11">ä</string> <!-- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE --> - <string name="more_keys_for_scandinavia_row2_10">õ</string> + <string name="more_keys_for_nordic_row2_10">õ</string> </resources> diff --git a/java/res/values-et/strings.xml b/java/res/values-et/strings.xml index 010891ce6..1c7f14e17 100644 --- a/java/res/values-et/strings.xml +++ b/java/res/values-et/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Tähtede režiim"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Telefonirežiim"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Telefoni sümbolite režiim"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Kõnesisend"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Kõnesisendit ei toetata praegu teie keeles, kuid see töötab inglise keeles."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Kõnesisend kasutab Google\'i kõnetuvastust. Kehtivad "<a href="http://m.google.com/privacy">"Mobile\'i privaatsuseeskirjad"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Kõnesisendi väljalülitamiseks minge sisestusmeetodi seadete juurde."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Kõnesisendi kasutamiseks vajutage mikrofoni nuppu."</string> - <string name="voice_listening" msgid="467518160751321844">"Alustage rääkimist"</string> - <string name="voice_working" msgid="6666937792815731889">"Töötab"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Viga. Proovige uuesti."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Ühendamine nurjus."</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Viga. Liiga palju kõnet."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Heli probleem"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Serveri viga"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Kõne pole kuuldav"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Ühtki vastet ei leitud"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Hääleotsing pole installitud"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Vihje:"</b>" rääkimiseks libistage sõrme üle ekraani"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Vihje:"</b>" proovige järgmine kord kirjavahemärkide ütlemist, nt „punkt”, „koma” või „küsimärk”."</string> - <string name="cancel" msgid="6830980399865683324">"Tühista"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Häälesisendi klahv"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Peamisel klaviatuuril"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Sümbol. klaviatuuril"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikr. peam. klaviat."</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikr. sümb. klaviat."</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Kõnesisend on keelatud"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Sisestusmeet. valim."</string> <string name="configure_input_method" msgid="373356270290742459">"Sisestusmeetodite seadistamine"</string> <string name="language_selection_title" msgid="1651299598555326750">"Sisestuskeeled"</string> <string name="select_language" msgid="3693815588777926848">"Sisestuskeeled"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"←Salvestamiseks puudutage uuesti"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"Sõnastik saadaval"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Luba kasutaja tagasiside"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Saatke Google\'ile automaatselt kasutusstatistikat ja krahhiaruandeid ning aidake seda sisestusmeetodi redigeerijat parandada."</string> diff --git a/java/res/values-fa/strings.xml b/java/res/values-fa/strings.xml index 2696ed626..fb3654e83 100644 --- a/java/res/values-fa/strings.xml +++ b/java/res/values-fa/strings.xml @@ -105,26 +105,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"حالت حروف"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"حالت تلفن"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"حالت نمادهای تلفن"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"ورودی صوتی"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"ورودی صوتی در حال حاضر برای زبان شما پشتیبانی نمی شود اما برای زبان انگلیسی فعال است."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"ورودی صوتی از تشخیص صدای Google استفاده می کند. "<a href="http://m.google.com/privacy">"خط مشی رازداری Mobile "</a>" اعمال می شود."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"برای خاموش کردن ورودی صدا، به تنظیمات روش ورودی بروید."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"برای استفاده از ورودی صوتی، دکمه میکروفن را فشار دهید."</string> - <string name="voice_listening" msgid="467518160751321844">"اکنون صحبت کنید"</string> - <string name="voice_working" msgid="6666937792815731889">"در حال کار"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"خطا: لطفاً دوباره امتحان کنید."</string> - <string name="voice_network_error" msgid="6649556447401862563">"متصل نشد"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"خطا، گفتار بسیار زیاد است."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"مشکل صوتی"</string> - <string name="voice_server_error" msgid="7807129913977261644">"خطای سرور"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"گفتاری شنیده نشد"</string> - <string name="voice_no_match" msgid="4285117547030179174">"مورد منطبقی یافت نشد"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"جستجوی صوتی نصب نشده است"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"نکته: "</b>" برای صحبت روی صفحه کلید ضربه بزنید"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"نکته: دفعه دیگر، از نشانه گذاری های گفتاری مانند \"نقطه\"، \"کاما\" یا \"علامت سؤال\" استفاده کنید."</b></string> - <string name="cancel" msgid="6830980399865683324">"لغو"</string> - <string name="ok" msgid="7898366843681727667">"تأیید"</string> <string name="voice_input" msgid="3583258583521397548">"کلید ورودی صدا"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"در صفحه کلید اصلی"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"در صفحه کلید نمادها"</string> @@ -132,11 +112,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"میکروفن در صفحه کلید اصلی"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"میکروفن در صفحه کلید نمادها"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"ورودی صدا غیرفعال است"</string> - <string name="selectInputMethod" msgid="315076553378705821">"انتخاب روش ورودی"</string> <string name="configure_input_method" msgid="373356270290742459">"پیکربندی روش های ورودی"</string> <string name="language_selection_title" msgid="1651299598555326750">"زبان های ورودی"</string> <string name="select_language" msgid="3693815588777926848">"زبانهای ورودی"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← جهت ذخیره دوباره لمس کنید"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"دیکشنری موجود است"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"فعال کردن بازخورد کاربر"</string> <string name="prefs_description_log" msgid="5827825607258246003">"با ارسال خودکار آمارهای کاربرد و گزارش های خرابی به Google، به بهبود این ویرایشگر روش ورودی کمک کنید."</string> diff --git a/java/res/values-fi/donottranslate-more-keys.xml b/java/res/values-fi/donottranslate-more-keys.xml index 9b5fa786a..25b785845 100644 --- a/java/res/values-fi/donottranslate-more-keys.xml +++ b/java/res/values-fi/donottranslate-more-keys.xml @@ -44,13 +44,13 @@ U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE --> <string name="more_keys_for_z">ž,ź,ż</string> <!-- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE --> - <string name="keylabel_for_scandinavia_row1_11">å</string> + <string name="keylabel_for_nordic_row1_11">å</string> <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS --> - <string name="keylabel_for_scandinavia_row2_10">ö</string> + <string name="keylabel_for_nordic_row2_10">ö</string> <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS --> - <string name="keylabel_for_scandinavia_row2_11">ä</string> + <string name="keylabel_for_nordic_row2_11">ä</string> <!-- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE --> - <string name="more_keys_for_scandinavia_row2_10">ø</string> + <string name="more_keys_for_nordic_row2_10">ø</string> <!-- U+00E6: "æ" LATIN SMALL LETTER AE --> - <string name="more_keys_for_scandinavia_row2_11">æ</string> + <string name="more_keys_for_nordic_row2_11">æ</string> </resources> diff --git a/java/res/values-fi/strings.xml b/java/res/values-fi/strings.xml index 012f628ac..774817872 100644 --- a/java/res/values-fi/strings.xml +++ b/java/res/values-fi/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Näppäimistötila"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Puhelintila"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Puhelinsymbolit-tila"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Äänisyöte"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Äänisyötettä ei vielä tueta kielelläsi, mutta voit käyttää sitä englanniksi."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Äänisyöte käyttää Googlen puheentunnistusta. "<a href="http://m.google.com/privacy">"Mobile-tietosuojakäytäntö"</a>" on voimassa."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Siirry syöttöasetuksiin poistaaksesi äänisyötteen käytöstä."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Ota äänisyöte käyttöön painamalla mikrofonikuvaketta."</string> - <string name="voice_listening" msgid="467518160751321844">"Puhu nyt"</string> - <string name="voice_working" msgid="6666937792815731889">"Työstetään"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Virhe. Yritä uudelleen."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Ei yhteyttä"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Virhe, liikaa puhetta."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Ääniongelma"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Palvelinvirhe"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Puhetta ei kuulu"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Ei vastineita"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Puhehakua ei asennettu"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Vihje:"</b>" liu\'uta sormea näppäimistöllä ja puhu"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Vihje:"</b>" kokeile seuraavalla kerralla puhua välimerkit, kuten \"period\" (piste), \"comma\" (pilkku) tai \"question mark\" (kysymysmerkki)."</string> - <string name="cancel" msgid="6830980399865683324">"Peruuta"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Ääniohjausavain"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Päänäppäimistössä"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Symbolinäppäimistössä"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikr. päänäppäim."</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikr. symbolinäppäim."</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Ääniohjaus on pois käytöstä"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Valitse syöttötapa"</string> <string name="configure_input_method" msgid="373356270290742459">"Määritä syöttötavat"</string> <string name="language_selection_title" msgid="1651299598555326750">"Syöttökielet"</string> <string name="select_language" msgid="3693815588777926848">"Syöttökielet"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Tallenna koskettamalla uudelleen"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"Sanakirja saatavilla"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Ota käyttäjäpalaute käyttöön"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Auta parantamaan tätä syöttötavan muokkausohjelmaa lähettämällä automaattisesti käyttötietoja ja kaatumisraportteja Googlelle."</string> diff --git a/java/res/values-fr/strings.xml b/java/res/values-fr/strings.xml index 1998be550..f2c7fbe85 100644 --- a/java/res/values-fr/strings.xml +++ b/java/res/values-fr/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Mode Lettres"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Mode Téléphone"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Mode Symboles du téléphone"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Saisie vocale"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"La saisie vocale n\'est pas encore prise en charge pour votre langue, mais elle fonctionne en anglais."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"La saisie vocale fait appel à la reconnaissance vocale de Google. Les "<a href="http://m.google.com/privacy">"Règles de confidentialité Google Mobile"</a>" s\'appliquent."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Pour désactiver la saisie vocale, accédez aux paramètres du mode de saisie."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Pour utiliser la saisie vocale, appuyez sur la touche du microphone."</string> - <string name="voice_listening" msgid="467518160751321844">"Parlez maintenant"</string> - <string name="voice_working" msgid="6666937792815731889">"Traitement en cours"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Erreur. Veuillez réessayer."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Connexion impossible"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Erreur, discours trop long."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Problème audio"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Erreur serveur"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Aucune requête vocale détectée"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Aucune correspondance n\'a été trouvée."</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Recherche vocale non installée"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Astuce :"</b>" Faites glisser votre doigt sur le clavier pour parler."</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Astuce :"</b>" La prochaine fois, essayez de prononcer la ponctuation, en énonçant des termes tels que \"point\", \"virgule\" ou \"point d\'interrogation\"."</string> - <string name="cancel" msgid="6830980399865683324">"Annuler"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Touche de saisie vocale"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Sur clavier principal"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Sur clavier symboles"</string> @@ -128,11 +108,10 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Micro sur le clavier principal"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Micro sur clavier symboles"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Saisie vocale désactivée"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Sélectionner un mode de saisie."</string> <string name="configure_input_method" msgid="373356270290742459">"Configurer les modes de saisie"</string> <string name="language_selection_title" msgid="1651299598555326750">"Langues de saisie"</string> <string name="select_language" msgid="3693815588777926848">"Langues de saisie"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Appuyer de nouveau pour enregistrer"</string> + <string name="hint_add_to_dictionary" msgid="573678656946085380">"Appuyer de nouveau pour enregistrer"</string> <string name="has_dictionary" msgid="6071847973466625007">"Dictionnaire disponible"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Autoriser les commentaires des utilisateurs"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Contribuer à l\'amélioration de cet éditeur du mode de saisie grâce à l\'envoi automatique de statistiques d\'utilisation et de rapports d\'incident à Google."</string> diff --git a/java/res/values-hi/donottranslate-more-keys.xml b/java/res/values-hi/donottranslate-more-keys.xml new file mode 100644 index 000000000..19bcb9dda --- /dev/null +++ b/java/res/values-hi/donottranslate-more-keys.xml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- U+0967: "१" DEVANAGARI DIGIT ONE --> + <string name="keylabel_for_symbols_1">१</string> + <!-- U+0968: "२" DEVANAGARI DIGIT TWO --> + <string name="keylabel_for_symbols_2">२</string> + <!-- U+0969: "३" DEVANAGARI DIGIT THREE --> + <string name="keylabel_for_symbols_3">३</string> + <!-- U+096A: "४" DEVANAGARI DIGIT FOUR --> + <string name="keylabel_for_symbols_4">४</string> + <!-- U+096B: "५" DEVANAGARI DIGIT FIVE --> + <string name="keylabel_for_symbols_5">५</string> + <!-- U+096C: "६" DEVANAGARI DIGIT SIX --> + <string name="keylabel_for_symbols_6">६</string> + <!-- U+096D: "७" DEVANAGARI DIGIT SEVEN --> + <string name="keylabel_for_symbols_7">७</string> + <!-- U+096E: "८" DEVANAGARI DIGIT EIGHT --> + <string name="keylabel_for_symbols_8">८</string> + <!-- U+096F: "९" DEVANAGARI DIGIT NINE --> + <string name="keylabel_for_symbols_9">९</string> + <!-- U+0966: "०" DEVANAGARI DIGIT ZERO --> + <string name="keylabel_for_symbols_0">०</string> + <string name="additional_more_keys_for_symbols_1">1</string> + <string name="additional_more_keys_for_symbols_2">2</string> + <string name="additional_more_keys_for_symbols_3">3</string> + <string name="additional_more_keys_for_symbols_4">4</string> + <string name="additional_more_keys_for_symbols_5">5</string> + <string name="additional_more_keys_for_symbols_6">6</string> + <string name="additional_more_keys_for_symbols_7">7</string> + <string name="additional_more_keys_for_symbols_8">8</string> + <string name="additional_more_keys_for_symbols_9">9</string> + <string name="additional_more_keys_for_symbols_0">0</string> +</resources> diff --git a/java/res/values-hi/strings.xml b/java/res/values-hi/strings.xml index 5c5ec884b..2e2b77607 100644 --- a/java/res/values-hi/strings.xml +++ b/java/res/values-hi/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"अक्षर मोड"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"फ़ोन मोड"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"फ़ोन प्रतीक मोड"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"ध्वनि इनपुट"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"ध्वनि इनपुट आपकी भाषा के लिए अभी समर्थित नहीं है, पर अंग्रेज़ी में कार्य करता है."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"ध्वनि इनपुट Google की वाक् पहचान का उपयोग करता है. "<a href="http://m.google.com/privacy">"मोबाइल गोपनीयता नीति"</a>" लागू होती है."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"ध्वनि इनपुट बंद करने के लिए, इनपुट पद्धति सेटिंग पर जाएं."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"ध्वनि इनपुट का उपयोग करने के लिए, माइक्रोफ़ोन बटन दबाएं."</string> - <string name="voice_listening" msgid="467518160751321844">"अब बोलें"</string> - <string name="voice_working" msgid="6666937792815731889">"कार्य कर रहा है"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"त्रुटि. कृपया पुन: प्रयास करें."</string> - <string name="voice_network_error" msgid="6649556447401862563">"कनेक्ट नहीं कर सका"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"त्रुटि, बहुत अधिक बातचीत."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"ऑडियो समस्या"</string> - <string name="voice_server_error" msgid="7807129913977261644">"सर्वर त्रुटि"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"कोई बातचीत नहीं सुनाई दी"</string> - <string name="voice_no_match" msgid="4285117547030179174">"कोई मिलान नहीं मिले"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"ध्वनि खोज इंस्टॉल नहीं है"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"संकेत:"</b>" बोलने के लिए कीबोर्ड पर स्वाइप करें"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"संकेत:"</b>" अगली बार, विरामचिन्ह बोलने का प्रयास करें जैसे \"पूर्णविराम\", \"अल्पविराम\", या \"प्रश्नचिह्न\"."</string> - <string name="cancel" msgid="6830980399865683324">"रद्द करें"</string> - <string name="ok" msgid="7898366843681727667">"ठीक"</string> <string name="voice_input" msgid="3583258583521397548">"ध्वनि इनपुट कुंजी"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"मुख्य कीबोर्ड पर"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"प्रतीक कीबोर्ड पर"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"मुख्य कीबोर्ड पर माइक"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"प्रतीक कीबोर्ड पर माइक"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"ध्वनि इनपुट अक्षम है"</string> - <string name="selectInputMethod" msgid="315076553378705821">"इनपुट विधि का चयन करें"</string> <string name="configure_input_method" msgid="373356270290742459">"इनपुट पद्धति कॉन्फ़िगर करें"</string> <string name="language_selection_title" msgid="1651299598555326750">"इनपुट भाषा"</string> <string name="select_language" msgid="3693815588777926848">"इनपुट भाषाएं"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← सहेजने के लिए फिर से स्पर्श करें"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"शब्दकोश उपलब्ध है"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"उपयोगकर्ता फ़ीडबैक सक्षम करें"</string> <string name="prefs_description_log" msgid="5827825607258246003">"उपयोग के आंकड़े और क्रैश रिपोर्ट Google को स्वचालित रूप से भेज कर इस इनपुट पद्धति संपादक को बेहतर बनाने में सहायता करें."</string> diff --git a/java/res/values-hr/strings.xml b/java/res/values-hr/strings.xml index 2c227061d..e416816b2 100644 --- a/java/res/values-hr/strings.xml +++ b/java/res/values-hr/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Način pisanja slova"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Telefonski način rada"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Način unosa telefonskih simbola"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Glasovni ulaz"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Vaš jezik trenutno nije podržan za glasovni unos, ali radi za engleski."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Glasovni unos upotrebljava Googleovo prepoznavanje govora. Primjenjuju se "<a href="http://m.google.com/privacy">"Pravila o privatnosti za uslugu Mobile"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Za isključivanje glasovnog unosa idite na postavke načina unosa."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Za upotrebu glasovnog unosa pritisnite gumb mikrofona."</string> - <string name="voice_listening" msgid="467518160751321844">"Govorite sad"</string> - <string name="voice_working" msgid="6666937792815731889">"Obrada"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Pogreška. Pokušajte ponovo."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Spajanje nije bilo moguće"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Pogreška, predugi govor."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Problem sa zvukom"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Pogreška na poslužitelju"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Nije se čuo govor"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Nisu pronađeni rezultati"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Glasovno pretraživanje nije instalirano"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Savjet:"</b>" Prijeđite preko tipkovnice pa govorite"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Savjet:"</b>" Sljedeći put pokušajte izgovoriti znakove interpunkcije poput \"točka, \"zarez\" ili \"upitnik\"."</string> - <string name="cancel" msgid="6830980399865683324">"Odustani"</string> - <string name="ok" msgid="7898366843681727667">"U redu"</string> <string name="voice_input" msgid="3583258583521397548">"Tipka za glasovni unos"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Na glavnoj tipkovnici"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Na tipkovnici simb."</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikrofon na gl. tipkovnici"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mik. na tipk. simb."</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Glas. unos onemog."</string> - <string name="selectInputMethod" msgid="315076553378705821">"Odabir ulazne metode"</string> <string name="configure_input_method" msgid="373356270290742459">"Konfiguriraj načine ulaza"</string> <string name="language_selection_title" msgid="1651299598555326750">"Jezici unosa"</string> <string name="select_language" msgid="3693815588777926848">"Jezici unosa"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Dodirnite opet za spremanje"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"Rječnik je dostupan"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Omogući korisničke povratne informacije"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Pomozite u poboljšanju ovog urednika ulazne metode automatskim slanjem statistike upotrebe i padova Googleu."</string> diff --git a/java/res/values-hu/strings.xml b/java/res/values-hu/strings.xml index e4b63634a..7e466ed40 100644 --- a/java/res/values-hu/strings.xml +++ b/java/res/values-hu/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"\"Betű\" mód"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"\"Telefon\" mód"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"\"Telefonos szimbólumok\" mód"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Hangbevitel"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"A hangbevitel szolgáltatás jelenleg nem támogatja az Ön nyelvét, ám angolul működik."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"A hangbevitel a Google beszédfelismerő technológiáját használja, amelyre a "<a href="http://m.google.com/privacy">"Mobil adatvédelmi irányelvek"</a>" érvényesek."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"A hangbevitelt a beviteli mód beállításai között lehet kikapcsolni."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"A hangbevitel használatához nyomja meg a mikrofon gombot."</string> - <string name="voice_listening" msgid="467518160751321844">"Most beszéljen"</string> - <string name="voice_working" msgid="6666937792815731889">"Feldolgozás"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Hiba történt. Kérjük, próbálja újra."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Nem sikerült kapcsolódni"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Hiba történt; túl sokat beszélt."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Hangprobléma"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Szerverhiba"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Nem hallatszott beszéd"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Nem található egyezés"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"A hangalapú keresés nincs telepítve"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Tipp:"</b>" húzza végig az ujját a billentyűzeten a beszédhez"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Tipp:"</b>" következő alkalommal próbálja ki az írásjelek kimondását is, pl. \"period\", \"comma\" vagy \"question mark\"."</string> - <string name="cancel" msgid="6830980399865683324">"Mégse"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Hangbeviteli gomb"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"A fő billentyűzeten"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Szimbólumoknál"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikr. a billentyűzeten"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikr. a szimbólumoknál"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Hangbevivel KI"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Beviteli mód kiválasztása"</string> <string name="configure_input_method" msgid="373356270290742459">"Beviteli módok beállítása"</string> <string name="language_selection_title" msgid="1651299598555326750">"Beviteli nyelvek"</string> <string name="select_language" msgid="3693815588777926848">"Beviteli nyelvek"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Érintse meg újra a mentéshez"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"Van elérhető szótár"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Felhasználói visszajelzés engedélyezése"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Segíthet ennek a beviteli módszernek a javításában, ha engedélyezi a használati statisztikák és a hibajelentések elküldését a Google-nak."</string> diff --git a/java/res/values-in/strings.xml b/java/res/values-in/strings.xml index 4456f0860..39b41c021 100644 --- a/java/res/values-in/strings.xml +++ b/java/res/values-in/strings.xml @@ -37,7 +37,7 @@ <string name="misc_category" msgid="6894192814868233453">"Opsi lain"</string> <string name="advanced_settings" msgid="362895144495591463">"Setelan lanjutan"</string> <string name="advanced_settings_summary" msgid="4487980456152830271">"Opsi untuk ahli"</string> - <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Alihkn k mtode msukn lain"</string> + <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Beralih ke metode masukan lain"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Tombol beralih bahasa juga mencakup metode masukan lain"</string> <string name="suppress_language_switch_key" msgid="8003788410354806368">"Redam tombol alih bahasa"</string> <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Tundaan singkir munculan kunci"</string> @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Mode huruf"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Mode telepon"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Mode simbol telepon"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Masukan suara"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Masukan suara saat ini tidak didukung untuk bahasa Anda, tetapi bekerja dalam Bahasa Inggris."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Masukan suara menggunakan pengenalan ucapan Google. "<a href="http://m.google.com/privacy">"Kebijakan Privasi Seluler"</a>" berlaku."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Untuk mematikan masukan suara, buka setelan metode masukan."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Untuk menggunakan masukan suara, tekan tombol mikrofon."</string> - <string name="voice_listening" msgid="467518160751321844">"Ucapkan sekarang"</string> - <string name="voice_working" msgid="6666937792815731889">"Bekerja"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Kesalahan: Coba lagi."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Tidak dapat menyambung"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Kesalahan, terlalu banyak ucapan."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Masalah audio"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Kesalahan server"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Tidak terdengar ucapan"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Tak ditemukan yang cocok"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Penelusuran suara tidak terpasang"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Petunjuk:"</b>" Gesek keyboard untuk berbicara"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Petunjuk:"</b>" Selanjutnya, coba ucapkan tanda baca seperti \"titik\", \"koma\", atau \"tanda tanya\"."</string> - <string name="cancel" msgid="6830980399865683324">"Batal"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Tombol masukan suara"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Pada keyboard utama"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Pada keyboard simbol"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mik pada keyboard utama"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mik pada keyboard simbol"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Masukan suara dinonaktifkan"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Pilih metode masukan"</string> <string name="configure_input_method" msgid="373356270290742459">"Konfigurasikan metode masukan"</string> <string name="language_selection_title" msgid="1651299598555326750">"Bahasa masukan"</string> <string name="select_language" msgid="3693815588777926848">"Bahasa masukan"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Sentuh sekali lagi untuk menyimpan"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"Kamus yang tersedia"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Aktifkan masukan pengguna"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Bantu tingkatkan metode editor masukan dengan mengirim statistik penggunaan dan laporan kerusakan ke Google secara otomatis."</string> diff --git a/java/res/values-is/donottranslate-more-keys.xml b/java/res/values-is/donottranslate-more-keys.xml index 2c3fa1e2e..284aae930 100644 --- a/java/res/values-is/donottranslate-more-keys.xml +++ b/java/res/values-is/donottranslate-more-keys.xml @@ -65,9 +65,9 @@ <!-- U+00FE: "þ" LATIN SMALL LETTER THORN --> <string name="more_keys_for_t">þ</string> <!-- U+00F0: "ð" LATIN SMALL LETTER ETH --> - <string name="keylabel_for_scandinavia_row1_11">ð</string> + <string name="keylabel_for_nordic_row1_11">ð</string> <!-- U+00E6: "æ" LATIN SMALL LETTER AE --> - <string name="keylabel_for_scandinavia_row2_10">æ</string> + <string name="keylabel_for_nordic_row2_10">æ</string> <!-- U+00FE: "þ" LATIN SMALL LETTER THORN --> - <string name="keylabel_for_scandinavia_row2_11">þ</string> + <string name="keylabel_for_nordic_row2_11">þ</string> </resources> diff --git a/java/res/values-it/strings.xml b/java/res/values-it/strings.xml index a3f01e157..3e27f4eb8 100644 --- a/java/res/values-it/strings.xml +++ b/java/res/values-it/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Modalità lettere"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Modalità telefono"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Modalità simboli telefono"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Comandi vocali"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"I comandi vocali non sono attualmente supportati per la tua lingua ma funzionano in inglese."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"L\'input vocale utilizza il riconoscimento vocale di Google. Sono valide le "<a href="http://m.google.com/privacy">"norme sulla privacy di Google Mobile"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Per disattivare l\'input vocale, vai alle impostazioni del metodo di input."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Per utilizzare l\'input vocale, premi il pulsante del microfono."</string> - <string name="voice_listening" msgid="467518160751321844">"Parla ora"</string> - <string name="voice_working" msgid="6666937792815731889">"Elaborazione..."</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Errore. Riprova più tardi."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Impossibile connettersi."</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Errore: conversazione troppo lunga."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Problema audio"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Errore del server"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Nessuna frase vocale rilevata"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Nessuna corrispondenza trovata"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Ricerca vocale non installata"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Suggerimento."</b>" Fai scorrere il dito sulla tastiera per parlare"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Suggerimento."</b>" La prossima volta, prova a pronunciare termini relativi alla punteggiatura come \"punto\", \"virgola\" o \"punto di domanda\"."</string> - <string name="cancel" msgid="6830980399865683324">"Annulla"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Tasto immissione vocale"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Su tastiera principale"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Su tastiera simboli"</string> @@ -128,11 +108,10 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mic su tastiera principale"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mic su tastiera simboli"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Comandi vocali disatt."</string> - <string name="selectInputMethod" msgid="315076553378705821">"Seleziona metodo di inserimento"</string> <string name="configure_input_method" msgid="373356270290742459">"Configura metodi di immissione"</string> <string name="language_selection_title" msgid="1651299598555326750">"Lingue comandi"</string> <string name="select_language" msgid="3693815588777926848">"Lingue comandi"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Tocca di nuovo per salvare"</string> + <string name="hint_add_to_dictionary" msgid="573678656946085380">"Tocca di nuovo per salvare"</string> <string name="has_dictionary" msgid="6071847973466625007">"Dizionario disponibile"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Attiva commenti degli utenti"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Aiuta a migliorare l\'editor del metodo di inserimento inviando automaticamente a Google statistiche sull\'utilizzo e segnalazioni sugli arresti anomali."</string> diff --git a/java/res/values-iw/strings.xml b/java/res/values-iw/strings.xml index dabbd4d05..2d8f8dc1c 100644 --- a/java/res/values-iw/strings.xml +++ b/java/res/values-iw/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"מצב אותיות"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"מצב טלפון"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"מצב סמלי טלפון"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"קלט קולי"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"קלט קולי אינו נתמך בשלב זה בשפתך, אך הוא פועל באנגלית."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"קלט קולי משתמש בזיהוי דיבור של Google. "<a href="http://m.google.com/privacy">"מדיניות הפרטיות של \'Google לנייד\'"</a>" חלה במקרה זה."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"כדי לכבות את הקלט הקולי, עבור להגדרות של שיטת קלט."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"כדי להשתמש בקלט קולי, לחץ על לחצן המיקרופון."</string> - <string name="voice_listening" msgid="467518160751321844">"דבר עכשיו"</string> - <string name="voice_working" msgid="6666937792815731889">"פועל"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"שגיאה. נסה שוב."</string> - <string name="voice_network_error" msgid="6649556447401862563">"אין אפשרות להתחבר"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"שגיאה, קטע דיבור ארוך מדי."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"בעיה באודיו"</string> - <string name="voice_server_error" msgid="7807129913977261644">"שגיאת שרת"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"לא ניתן לשמוע דיבור"</string> - <string name="voice_no_match" msgid="4285117547030179174">"לא נמצאו התאמות"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"חיפוש קולי לא מותקן"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"רמז:"</b>" העבר על המקלדת כדי לדבר"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"רמז:"</b>" בפעם הבאה, נסה לומר את סימני הפיסוק כגון \"נקודה\", \"פסיק\" או \"סימן שאלה\"."</string> - <string name="cancel" msgid="6830980399865683324">"ביטול"</string> - <string name="ok" msgid="7898366843681727667">"אישור"</string> <string name="voice_input" msgid="3583258583521397548">"מקש קלט קולי"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"במקלדת הראשית"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"במקלדת סמלים"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"מיקרופון במקלדת הראשית"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"מיקרופון במקלדת סמלים"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"הקלט הקולי מושבת"</string> - <string name="selectInputMethod" msgid="315076553378705821">"בחר שיטת קלט"</string> <string name="configure_input_method" msgid="373356270290742459">"הגדרת שיטות קלט"</string> <string name="language_selection_title" msgid="1651299598555326750">"שפות קלט"</string> <string name="select_language" msgid="3693815588777926848">"שפות קלט"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← גע פעם נוספת לשמירה"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"מילון זמין"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"הפוך משוב ממשתמשים לפעיל"</string> <string name="prefs_description_log" msgid="5827825607258246003">"עזור לשפר את עורך שיטת הקלט על ידי שליחה אוטומטית של סטטיסטיקת שימוש ודוחות קריסת מחשב ל-Google."</string> diff --git a/java/res/values-ja/strings.xml b/java/res/values-ja/strings.xml index 42b54fb50..439a652e0 100644 --- a/java/res/values-ja/strings.xml +++ b/java/res/values-ja/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"英数モード"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"電話モード"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"電話記号モード"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"音声入力"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"音声入力は現在英語には対応していますが、日本語には対応していません。"</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"音声入力ではGoogleの音声認識技術を利用します。"<a href="http://m.google.com/privacy">"モバイルプライバシーポリシー"</a>"が適用されます。"</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"音声入力をOFFにするには、入力方法の設定を開きます。"</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"音声入力するには、マイクボタンを押してください。"</string> - <string name="voice_listening" msgid="467518160751321844">"お話しください"</string> - <string name="voice_working" msgid="6666937792815731889">"処理中"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"エラーです。もう一度お試しください。"</string> - <string name="voice_network_error" msgid="6649556447401862563">"接続できませんでした"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"音声が長すぎてエラーになりました。"</string> - <string name="voice_audio_error" msgid="5072707727016414454">"オーディオエラー"</string> - <string name="voice_server_error" msgid="7807129913977261644">"サーバーエラー"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"音声が聞き取れません"</string> - <string name="voice_no_match" msgid="4285117547030179174">"該当なし"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Voice Searchはインストールされていません"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"ヒント:"</b>" 音声入力するにはキーボードをスワイプします"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"ヒント:"</b>" 次回は句読点として「period」、「comma」、「question mark」などの音声入力を試してみてください。"</string> - <string name="cancel" msgid="6830980399865683324">"キャンセル"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"音声入力キー"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"メインキーボード上"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"記号キーボード上"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"メインキーボードのマイク"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"記号キーボードのマイク"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"音声入力は無効です"</string> - <string name="selectInputMethod" msgid="315076553378705821">"入力方法の選択"</string> <string name="configure_input_method" msgid="373356270290742459">"入力方法を設定"</string> <string name="language_selection_title" msgid="1651299598555326750">"入力言語"</string> <string name="select_language" msgid="3693815588777926848">"入力言語"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"←保存するにはもう一度タップ"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"辞書を利用できます"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"ユーザーフィードバックを有効にする"</string> <string name="prefs_description_log" msgid="5827825607258246003">"IMEの機能向上のため、使用統計状況やクラッシュレポートをGoogleに自動送信します。"</string> diff --git a/java/res/values-ko/strings.xml b/java/res/values-ko/strings.xml index 8543f2e85..a2863c7e8 100644 --- a/java/res/values-ko/strings.xml +++ b/java/res/values-ko/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"문자 모드"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"다이얼 모드"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"전화 기호 모드"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"음성 입력"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"음성 입력은 현재 자국어로 지원되지 않으며 영어로 작동됩니다."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"음성 입력에서는 Google의 음성 인식 기능을 사용합니다. "<a href="http://m.google.com/privacy">"모바일 개인정보취급방침"</a>"이 적용됩니다."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"음성 입력을 사용하지 않으려면 입력 방법 설정으로 이동하세요."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"음성 입력을 사용하려면 마이크 버튼을 누르세요."</string> - <string name="voice_listening" msgid="467518160751321844">"지금 말하세요."</string> - <string name="voice_working" msgid="6666937792815731889">"인식 중"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"오류가 발생했습니다. 다시 시도해 보세요."</string> - <string name="voice_network_error" msgid="6649556447401862563">"연결할 수 없습니다."</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"음성을 너무 많이 입력했습니다."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"오디오 문제"</string> - <string name="voice_server_error" msgid="7807129913977261644">"서버 오류"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"음성이 인식되지 않았습니다."</string> - <string name="voice_no_match" msgid="4285117547030179174">"일치하는 항목 없음"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"음성 검색이 설치되지 않았습니다."</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"도움말:"</b>" 키보드 위로 손가락을 미끄러지듯 움직이고 나서 말하세요."</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"도움말:"</b>" 다음 번에는 \'마침표\', \'쉼표\', \'물음표\'와 같은 구두점을 말해 보세요."</string> - <string name="cancel" msgid="6830980399865683324">"취소"</string> - <string name="ok" msgid="7898366843681727667">"확인"</string> <string name="voice_input" msgid="3583258583521397548">"음성 입력 키"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"기본 키보드"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"기호 키보드"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"기본 키보드의 마이크"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"기호 키보드의 마이크"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"음성 입력이 사용 중지됨"</string> - <string name="selectInputMethod" msgid="315076553378705821">"입력 방법 선택"</string> <string name="configure_input_method" msgid="373356270290742459">"입력 방법 설정"</string> <string name="language_selection_title" msgid="1651299598555326750">"입력 언어"</string> <string name="select_language" msgid="3693815588777926848">"입력 언어"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← 저장하려면 다시 터치하세요."</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"사전 사용 가능"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"사용자 의견 사용"</string> <string name="prefs_description_log" msgid="5827825607258246003">"사용 통계 및 충돌 보고서를 Google에 자동으로 전송하여 입력 방법 편집기의 개선에 도움을 줍니다."</string> diff --git a/java/res/values-ky/donottranslate-more-keys.xml b/java/res/values-ky/donottranslate-more-keys.xml index b67a9f15d..fd90248b2 100644 --- a/java/res/values-ky/donottranslate-more-keys.xml +++ b/java/res/values-ky/donottranslate-more-keys.xml @@ -18,10 +18,20 @@ */ --> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- U+0449: "щ" CYRILLIC SMALL LETTER SHCHA --> + <string name="keylabel_for_east_slavic_row1_9">щ</string> + <!-- U+044B: "ы" CYRILLIC SMALL LETTER YERU --> + <string name="keylabel_for_east_slavic_row2_1">ы</string> + <!-- U+0438: "и" CYRILLIC SMALL LETTER I --> + <string name="keylabel_for_east_slavic_row3_5">и</string> <!-- U+04AF: "ү" CYRILLIC SMALL LETTER STRAIGHT U --> <string name="more_keys_for_cyrillic_u">ү</string> <!-- U+04A3: "ң" CYRILLIC SMALL LETTER EN WITH DESCENDER --> <string name="more_keys_for_cyrillic_en">ң</string> + <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN --> + <string name="more_keys_for_cyrillic_ha">ъ</string> <!-- U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O --> <string name="more_keys_for_cyrillic_o">ө</string> + <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN --> + <string name="more_keys_for_cyrillic_soft_sign">ъ</string> </resources> diff --git a/java/res/values-lt/strings.xml b/java/res/values-lt/strings.xml index a0192b859..8349dcdad 100644 --- a/java/res/values-lt/strings.xml +++ b/java/res/values-lt/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Raidžių režimas"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Telefono režimas"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Telefono simbolių režimas"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Balso įvestis"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Šiuo metu balso įvestis jūsų kompiuteryje nepalaikoma, bet ji veikia anglų k."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Balso įvesčiai naudojamas „Google“ kalbos atpažinimas. Taikoma "<a href="http://m.google.com/privacy">"privatumo politika mobiliesiems"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Jei norite išjungti balso įvestį, eikite į įvesties metodo nustatymus."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Jei norite naudoti balso įvestį, paspauskite mikrofono mygtuką."</string> - <string name="voice_listening" msgid="467518160751321844">"Kalbėkite dabar"</string> - <string name="voice_working" msgid="6666937792815731889">"Veikia"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Klaida. Bandykite dar kartą."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Nepavyko prijungti"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Klaida, per daug kalbos."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Problema su garsu"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Serverio klaida"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Negirdima jokia kalba"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Atitikmenų nerasta"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Balso paieška neįdiegta"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Užuomina:"</b>" perbraukite klaviatūra, kad galėtumėte kalbėti"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Užuomina:"</b>" kitą kartą pabandykite sakyti skyrybos ženklų pavadinimus, pvz., „taškas“, „kablelis“ arba „klaustukas“."</string> - <string name="cancel" msgid="6830980399865683324">"Atšaukti"</string> - <string name="ok" msgid="7898366843681727667">"Gerai"</string> <string name="voice_input" msgid="3583258583521397548">"Įvesties balsu klavišas"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Pagr. klaviatūroje"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Simbolių klaviatūr."</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikrof. pagr. klav."</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikrof. simb. klav."</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Balso įv. neleidž."</string> - <string name="selectInputMethod" msgid="315076553378705821">"Pasirinkti įvesties metodą"</string> <string name="configure_input_method" msgid="373356270290742459">"Konfigūruoti įvesties metodus"</string> <string name="language_selection_title" msgid="1651299598555326750">"Įvesties kalbos"</string> <string name="select_language" msgid="3693815588777926848">"Įvesties kalbos"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Kad išsaugotumėte, dar kartą palieskite"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"Žodynas galimas"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Įgalinti naudotojų atsiliepimus"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Padėkite patobulinti šią įvesties metodo redagavimo programą automatiškai „Google“ siųsdami naudojimo statistiką ir strigčių ataskaitas."</string> diff --git a/java/res/values-lv/strings.xml b/java/res/values-lv/strings.xml index 2ba1293ad..b406692dc 100644 --- a/java/res/values-lv/strings.xml +++ b/java/res/values-lv/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Burtu režīms"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Tālruņa režīms"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Tālruņa simbolu režīms"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Balss ievade"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Balss ievade jūsu valodā pašlaik netiek atbalstīta, taču tā ir pieejama angļu valodā."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Balss ievadei tiek izmantota Google runas atpazīšanas funkcija. Uz šīs funkcijas lietošanu attiecas "<a href="http://m.google.com/privacy">"mobilo sakaru ierīču lietošanas konfidencialitātes politika"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Lai izslēgtu balss ievadi, atveriet ievades metodes iestatījumus."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Lai izmantotu balss ievadi, nospiediet mikrofona taustiņu."</string> - <string name="voice_listening" msgid="467518160751321844">"Runājiet!"</string> - <string name="voice_working" msgid="6666937792815731889">"Notiek apstrāde"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Kļūda. Lūdzu, mēģiniet vēlreiz."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Nevar izveidot savienojumu."</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Kļūda, pārāk ilga balss ievade."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Audio problēma"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Servera kļūda"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Nekas nav dzirdams."</string> - <string name="voice_no_match" msgid="4285117547030179174">"Nav atrasta neviena atbilstība."</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Balss meklēšana nav instalēta."</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Ieteikums:"</b>" slidiniet pirkstu pār tastatūru, lai veiktu balss ievadi."</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Ieteikums:"</b>" nākamreiz mēģiniet izrunāt pieturzīmes, piemēram, “punkts”, “komats” vai “jautājuma zīme”."</string> - <string name="cancel" msgid="6830980399865683324">"Atcelt"</string> - <string name="ok" msgid="7898366843681727667">"Labi"</string> <string name="voice_input" msgid="3583258583521397548">"Balss ievades atslēga"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Uz galv. tastatūras"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Uz simbolu tastat."</string> @@ -128,11 +108,10 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikr.uz galv.tastat."</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikr.uz simb.tastat."</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Balss iev. atspējota"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Atlasīt ievades metodi"</string> <string name="configure_input_method" msgid="373356270290742459">"Ievades metožu konfigurēšana"</string> <string name="language_selection_title" msgid="1651299598555326750">"Ievades valodas"</string> <string name="select_language" msgid="3693815588777926848">"Ievades valodas"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Pieskarieties vēlreiz, lai saglabātu"</string> + <string name="hint_add_to_dictionary" msgid="573678656946085380">"Pieskarieties vēlreiz, lai saglabātu."</string> <string name="has_dictionary" msgid="6071847973466625007">"Ir pieejama vārdnīca."</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Iespējot lietotāju atsauksmes"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Palīdziet uzlabot šo ievades metodes redaktoru, automātiski nosūtot lietojuma statistiku un pārskatus par avārijām uzņēmumam Google."</string> diff --git a/java/res/values-mk/donottranslate-more-keys.xml b/java/res/values-mk/donottranslate-more-keys.xml index e96a306b6..d0cccf61b 100644 --- a/java/res/values-mk/donottranslate-more-keys.xml +++ b/java/res/values-mk/donottranslate-more-keys.xml @@ -18,15 +18,14 @@ */ --> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <!-- NOTE: Macedonian layouts are based on Serbian ones with the following key replacements. --> <!-- U+0455: "ѕ" CYRILLIC SMALL LETTER DZE --> - <string name="keylabel_for_cyrillic_ze">ѕ</string> + <string name="keylabel_for_south_slavic_row1_6">ѕ</string> <!-- U+045C: "ќ" CYRILLIC SMALL LETTER KJE --> - <string name="keylabel_for_cyrillic_tshe">ќ</string> + <string name="keylabel_for_south_slavic_row2_11">ќ</string> <!-- U+0437: "з" CYRILLIC SMALL LETTER ZE --> - <string name="keylabel_for_cyrillic_dze">з</string> + <string name="keylabel_for_south_slavic_row3_1">з</string> <!-- U+0453: "ѓ" CYRILLIC SMALL LETTER GJE --> - <string name="keylabel_for_cyrillic_dje">ѓ</string> + <string name="keylabel_for_south_slavic_row3_8">ѓ</string> <!-- U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE --> <string name="more_keys_for_cyrillic_ie">ѐ</string> <!-- U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE --> diff --git a/java/res/values-ms/strings.xml b/java/res/values-ms/strings.xml index 246c4d7a0..71cceff33 100644 --- a/java/res/values-ms/strings.xml +++ b/java/res/values-ms/strings.xml @@ -39,7 +39,7 @@ <string name="advanced_settings_summary" msgid="4487980456152830271">"Pilihan untuk pakar"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Tukar ke kaedah input lain"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Kunci pertukaran bahasa meliputi kaedah masukan lain juga"</string> - <string name="suppress_language_switch_key" msgid="8003788410354806368">"Tekan kunci ptukaran bhs"</string> + <string name="suppress_language_switch_key" msgid="8003788410354806368">"Tekan kunci alih bahasa"</string> <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Pop tmbl knci ketpkn lengah"</string> <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Tiada lengah"</string> <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Lalai"</string> @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Mod huruf"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Mod telefon"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Mod simbol telefon"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Input suara"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Input suara tidak disokong untuk bahasa anda pada masa ini tetapi ia berfungsi dalam bahasa Inggeris."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Input suara menggunakan pengecaman pertuturan Google. "<a href="http://m.google.com/privacy">"Dasar Privasi Mudah Alih"</a>" digunakan."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Untuk mematikan input suara, pergi ke tetapan kaedah input."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Untuk menggunakan input suara, tekan butang mikrofon."</string> - <string name="voice_listening" msgid="467518160751321844">"Sebutkan sekarang"</string> - <string name="voice_working" msgid="6666937792815731889">"Berfungsi"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Ralat. Sila cuba lagi."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Tidak boleh disambungkan"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Ralat, terlalu banyak pertuturan."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Masalah audio"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Ralat pelayan"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Tiada pertuturan didengari"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Tiada padanan ditemui"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Carian suara tidak dipasang"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021">"Petunjuk"<b>":"</b>" Leret merentasi papan kekunci untuk bercakap"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Petunjuk:"</b>" Lain kali, cuba ucapkan tanda baca seperti \"titik\", \"koma\" atau \"tanda soal\"."</string> - <string name="cancel" msgid="6830980399865683324">"Batal"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Kunci input suara"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Hidpkn kekunci utama"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Pd ppn k’unci simbol"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mik. pd kekunci utma"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mik. pd kekunci smbl"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Input suara dilmphkn"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Pilih kaedah input"</string> <string name="configure_input_method" msgid="373356270290742459">"Konfigurasikan kaedah input"</string> <string name="language_selection_title" msgid="1651299598555326750">"Bahasa input"</string> <string name="select_language" msgid="3693815588777926848">"Bahasa input"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Sentuh sekali lagi untuk menyimpan"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"Kamus tersedia"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Dayakan maklum balas pengguna"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Bantu memperbaik editor input ini dengan menghantar statistik penggunaan dan laporan runtuhan kepada Google."</string> diff --git a/java/res/values-nb/donottranslate-more-keys.xml b/java/res/values-nb/donottranslate-more-keys.xml index 7248d983e..49e6d5faf 100644 --- a/java/res/values-nb/donottranslate-more-keys.xml +++ b/java/res/values-nb/donottranslate-more-keys.xml @@ -48,13 +48,13 @@ U+016B: "ū" LATIN SMALL LETTER U WITH MACRON --> <string name="more_keys_for_u">ü,û,ù,ú,ū</string> <!-- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE --> - <string name="keylabel_for_scandinavia_row1_11">å</string> + <string name="keylabel_for_nordic_row1_11">å</string> <!-- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE --> - <string name="keylabel_for_scandinavia_row2_10">ø</string> + <string name="keylabel_for_nordic_row2_10">ø</string> <!-- U+00E6: "æ" LATIN SMALL LETTER AE --> - <string name="keylabel_for_scandinavia_row2_11">æ</string> + <string name="keylabel_for_nordic_row2_11">æ</string> <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS --> - <string name="more_keys_for_scandinavia_row2_10">ö</string> + <string name="more_keys_for_nordic_row2_10">ö</string> <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS --> - <string name="more_keys_for_scandinavia_row2_11">ä</string> + <string name="more_keys_for_nordic_row2_11">ä</string> </resources> diff --git a/java/res/values-nb/strings.xml b/java/res/values-nb/strings.xml index 183312806..c412ea0dd 100644 --- a/java/res/values-nb/strings.xml +++ b/java/res/values-nb/strings.xml @@ -38,8 +38,8 @@ <string name="advanced_settings" msgid="362895144495591463">"Avanserte innstillinger"</string> <string name="advanced_settings_summary" msgid="4487980456152830271">"Alternativer for eksperter"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Bytt inndatametode"</string> - <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Nøkkelen for språkbytte dekker også andre inndatametoder"</string> - <string name="suppress_language_switch_key" msgid="8003788410354806368">"Skjul språkbyttenøkkelen"</string> + <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Tasten for språkbytte dekker også andre inndatametoder"</string> + <string name="suppress_language_switch_key" msgid="8003788410354806368">"Skjul språkbyttetasten"</string> <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Tregt tastevindu"</string> <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"U/ forsinkelse"</string> <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Standard"</string> @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Bokstavmodus"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Ringemodus"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Ringemodus med symboler"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Stemmedata"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Stemmedata håndteres foreløpig ikke på ditt språk, men fungerer på engelsk."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Google Voice bruker Googles talegjenkjenning. "<a href="http://m.google.com/privacy">"Personvernreglene for mobil"</a>" gjelder."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Gå til innstillinger for inndatametode for å slå av stemmedata."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Trykk på mikrofonknappen for å aktivere stemmedata."</string> - <string name="voice_listening" msgid="467518160751321844">"Snakk nå"</string> - <string name="voice_working" msgid="6666937792815731889">"Arbeider"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Feil. Prøv på nytt."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Kunne ikke koble til"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Feil – for mye tale"</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Lydproblem"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Tjenerfeil"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Ingen tale høres"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Ingen treff"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Talesøk ikke installert"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021">"Hint:"<b>" Sveip over tastaturet for å snakke"</b></string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Hint:"</b>" Neste gang kan du prøve å tale inn tegnsettingen ved for eksempel å si «punktum», «komma» eller «spørsmålstegn»."</string> - <string name="cancel" msgid="6830980399865683324">"Avbryt"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Tast for taleinndata"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"På hovedtastatur"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"På talltastatur"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikrofon på hovedtast."</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikrofon på talltastatur"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Taleinndata er deaktiv."</string> - <string name="selectInputMethod" msgid="315076553378705821">"Velg inndatametode"</string> <string name="configure_input_method" msgid="373356270290742459">"Konfigurer inndatametoder"</string> <string name="language_selection_title" msgid="1651299598555326750">"Inndataspråk"</string> <string name="select_language" msgid="3693815588777926848">"Inndataspråk"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"Trykk på nytt for å lagre"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"Ordbok tilgjengelig"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Aktiver brukertilbakemelding"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Ved å sende bruksstatistikk og programstopprapporter til Google automatisk, hjelper du oss med å gjøre redigeringsfunksjonen for denne inndatametoden enda bedre."</string> diff --git a/java/res/values-nl/donottranslate-more-keys.xml b/java/res/values-nl/donottranslate-more-keys.xml index 4f5cbee55..73768aff2 100644 --- a/java/res/values-nl/donottranslate-more-keys.xml +++ b/java/res/values-nl/donottranslate-more-keys.xml @@ -40,8 +40,9 @@ U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX U+012F: "į" LATIN SMALL LETTER I WITH OGONEK - U+012B: "ī" LATIN SMALL LETTER I WITH MACRON --> - <string name="more_keys_for_i">í,ï,ì,î,į,ī</string> + U+012B: "ī" LATIN SMALL LETTER I WITH MACRON + U+0133: "ij" LATIN SMALL LIGATURE IJ --> + <string name="more_keys_for_i">í,ï,ì,î,į,ī,ij</string> <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX @@ -60,4 +61,6 @@ <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE --> <string name="more_keys_for_n">ñ,ń</string> + <!-- U+0133: "ij" LATIN SMALL LIGATURE IJ --> + <string name="more_keys_for_y">ij</string> </resources> diff --git a/java/res/values-nl/strings.xml b/java/res/values-nl/strings.xml index 8f9124ea9..8f33aa963 100644 --- a/java/res/values-nl/strings.xml +++ b/java/res/values-nl/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Alfanumeriek toetsenbord"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Toetsenbord telefoon"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Telefoonsymbolen"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Spraakinvoer"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Spraakinvoer wordt momenteel niet ondersteund in uw taal, maar is wel beschikbaar in het Engels."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Spraakinvoer maakt gebruik van de spraakherkenning van Google. Het "<a href="http://m.google.com/privacy">"Privacybeleid van Google Mobile"</a>" is van toepassing."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Als u spraakinvoer wilt uitschakelen, gaat u naar de instellingen voor invoermethoden."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Druk op de microfoontoets om spraakinvoer te gebruiken."</string> - <string name="voice_listening" msgid="467518160751321844">"Nu spreken"</string> - <string name="voice_working" msgid="6666937792815731889">"Wordt uitgevoerd"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Fout. Probeer het opnieuw."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Kan geen verbinding maken"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Fout, te lange spraakinvoer."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Audioprobleem"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Serverfout"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Geen spraak te horen"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Geen resultaten gevonden"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Spraakgestuurd zoeken is niet geïnstalleerd"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Hint:"</b>" schuif over het toetsenbord om te spreken"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Hint:"</b>" spreek de volgende keer interpunctie uit, zoals \'period\' (punt), \'comma\' (komma) of \'question mark\' (vraagteken)."</string> - <string name="cancel" msgid="6830980399865683324">"Annuleren"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Sleutel voor spraakinvoer"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Op hoofdtoetsenbord"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Op symbooltoetsenb."</string> @@ -128,11 +108,10 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mic op hoofdtoetsb."</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mic op symb.toetsb."</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Spraakinvoer is uit"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Invoermethode selecteren"</string> <string name="configure_input_method" msgid="373356270290742459">"Invoermethoden configureren"</string> <string name="language_selection_title" msgid="1651299598555326750">"Invoertalen"</string> <string name="select_language" msgid="3693815588777926848">"Invoertalen"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Raak nogmaals aan om op te slaan"</string> + <string name="hint_add_to_dictionary" msgid="573678656946085380">"Raak nogmaals aan om op te slaan"</string> <string name="has_dictionary" msgid="6071847973466625007">"Woordenboek beschikbaar"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Gebruikersfeedback inschakelen."</string> <string name="prefs_description_log" msgid="5827825607258246003">"Help deze invoermethode te verbeteren door automatisch gebruiksstatistieken en crashmeldingen naar Google te verzenden."</string> diff --git a/java/res/values-pl/strings.xml b/java/res/values-pl/strings.xml index 2c91bb5ba..ea358c0c6 100644 --- a/java/res/values-pl/strings.xml +++ b/java/res/values-pl/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Tryb liter"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Tryb telefonu"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Tryb symboli telefonu"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Wprowadzanie głosowe"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Wprowadzanie głosowe obecnie nie jest obsługiwane w Twoim języku, ale działa w języku angielskim."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Funkcja wprowadzania głosowego wykorzystuje mechanizm rozpoznawania mowy. Obowiązuje "<a href="http://m.google.com/privacy">"Polityka prywatności w usługach mobilnych"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Aby wyłączyć rozpoznawanie mowy, przejdź do ustawień sposobu wprowadzania tekstu."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Aby użyć wprowadzania głosowego, naciśnij przycisk mikrofonu."</string> - <string name="voice_listening" msgid="467518160751321844">"Mów teraz"</string> - <string name="voice_working" msgid="6666937792815731889">"W toku"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Błąd. Spróbuj ponownie."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Nie można nawiązać połączenia"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Błąd, zbyt długa wypowiedź."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Problem z dźwiękiem"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Błąd serwera"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Nie wykryto mowy"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Brak wyników"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Wyszukiwanie głosowe nie jest zainstalowane"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Wskazówka:"</b>" przesuń palcem po klawiaturze, aby mówić."</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Wskazówka:"</b>" następnym razem spróbuj wypowiadać nazwy znaków interpunkcyjnych: „kropka”, „przecinek” lub „pytajnik”."</string> - <string name="cancel" msgid="6830980399865683324">"Anuluj"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Klawisz rozpoznawania mowy"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Na klawiaturze głównej"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Na klawiaturze z symbolami"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikrofon na klawiaturze głównej"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikrofon na klawiaturze z symbolami"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Wprowadzanie głosowe jest wyłączone"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Wybierz sposób wprowadzania tekstu"</string> <string name="configure_input_method" msgid="373356270290742459">"Konfiguruj metody wprowadzania"</string> <string name="language_selection_title" msgid="1651299598555326750">"Języki wprowadzania"</string> <string name="select_language" msgid="3693815588777926848">"Języki wprowadzania"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Dotknij ponownie, aby zapisać"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"Słownik dostępny"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Włącz przesyłanie opinii użytkownika"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Pomóż ulepszyć edytor wprowadzania tekstu, automatycznie wysyłając do Google statystyki użycia i raporty o awariach."</string> diff --git a/java/res/values-pt-rPT/strings.xml b/java/res/values-pt-rPT/strings.xml index 6d59c6eaf..7a0c6c20d 100644 --- a/java/res/values-pt-rPT/strings.xml +++ b/java/res/values-pt-rPT/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Modo de letras"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Modo de telemóvel"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Modo de símbolos de telemóvel"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Entrada de voz"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Actualmente, a entrada de voz não é suportada para o seu idioma, mas funciona em inglês."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"A entrada de voz utiliza o reconhecimento de voz da Google. É aplicável a "<a href="http://m.google.com/privacy">"Política de privacidade do Google Mobile"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Para desactivar a entrada de voz, aceda às definições do método de entrada."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Para utilizar a entrada de voz, prima o botão do microfone."</string> - <string name="voice_listening" msgid="467518160751321844">"Falar agora"</string> - <string name="voice_working" msgid="6666937792815731889">"A executar"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Erro. Tente novamente."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Não foi possível ligar"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Erro, discurso demasiado longo."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Problema de áudio"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Erro no servidor"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Nenhuma voz ouvida"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Não foram encontradas correspondências"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Pesquisa de voz não instalada"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Sugestão:"</b>" Deslize no teclado para falar"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Sugestão:"</b>" Da próxima vez, experimente dizer a pontuação como \"ponto final\", \"vírgula\" ou \"ponto de interrogação\"."</string> - <string name="cancel" msgid="6830980399865683324">"Cancelar"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Chave de entrada de voz"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"No teclado principal"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"No teclado símbolos"</string> @@ -128,11 +108,10 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mic. tecl. principal"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mic. tecl. símbolos"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Entr. voz desact."</string> - <string name="selectInputMethod" msgid="315076553378705821">"Selecionar método de entrada"</string> <string name="configure_input_method" msgid="373356270290742459">"Configurar métodos de introdução"</string> <string name="language_selection_title" msgid="1651299598555326750">"Idiomas de entrada"</string> <string name="select_language" msgid="3693815588777926848">"Idiomas de introdução"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Toque novamente para guardar"</string> + <string name="hint_add_to_dictionary" msgid="573678656946085380">"Toque novamente para guardar"</string> <string name="has_dictionary" msgid="6071847973466625007">"Dicionário disponível"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Activar comentários do utilizador"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Envie automaticamente estatísticas de utilização e relatórios de falhas para a Google e ajude-nos a melhorar este editor de método de introdução."</string> diff --git a/java/res/values-pt/strings.xml b/java/res/values-pt/strings.xml index e89db807f..9a0cf30de 100644 --- a/java/res/values-pt/strings.xml +++ b/java/res/values-pt/strings.xml @@ -38,7 +38,7 @@ <string name="advanced_settings" msgid="362895144495591463">"Configurações avançadas"</string> <string name="advanced_settings_summary" msgid="4487980456152830271">"Opções para especialistas"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Outros métodos de entrada"</string> - <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"A tecla para mudar o idioma também cobre outro métodos de entrada"</string> + <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"A tecla p/ mudar o idioma também cobre outros métodos de entrada"</string> <string name="suppress_language_switch_key" msgid="8003788410354806368">"Ocult. tecla mudar idioma"</string> <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Dispens. atraso chave princ."</string> <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Sem atraso"</string> @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Modo de cartas"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Modo de telefone"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Modo de símbolos de telefone"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Entrada de voz"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"A entrada de voz não é suportada no momento para o seu idioma, mas funciona em inglês."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"A entrada de texto por voz usa o reconhecimento de voz do Google. "<a href="http://m.google.com/privacy">"A política de privacidade para celulares"</a>" é aplicada."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Para desativar a entrada de texto por voz, vá para configurações do método de entrada."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Para usar a entrada de texto por voz, pressione o botão do microfone."</string> - <string name="voice_listening" msgid="467518160751321844">"Fale agora"</string> - <string name="voice_working" msgid="6666937792815731889">"Trabalhando"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Erro. Tente novamente."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Não foi possível conectar"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Erro, fala muito longa."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Problema com o áudio"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Erro do servidor"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Nenhuma fala ouvida"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Não há resultados compatíveis"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"A pesquisa por voz não está instalada"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Dica:"</b>" Deslize sobre o teclado para falar"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Dica:"</b>" Da próxima vez, tente falar o nome da pontuação como \"ponto\", \"vírgula\" ou \"ponto de interrogação\"."</string> - <string name="cancel" msgid="6830980399865683324">"Cancelar"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Chave de entrada de texto por voz"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"No teclado principal"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"No teclado de símb."</string> @@ -128,11 +108,10 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mic. no teclado"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mic. no teclado"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Texto por voz desat."</string> - <string name="selectInputMethod" msgid="315076553378705821">"Selecionar método de entrada"</string> <string name="configure_input_method" msgid="373356270290742459">"Configurar métodos de entrada"</string> <string name="language_selection_title" msgid="1651299598555326750">"Idiomas de entrada"</string> <string name="select_language" msgid="3693815588777926848">"Idiomas de entrada"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Toque novamente para salvar"</string> + <string name="hint_add_to_dictionary" msgid="573678656946085380">"Toque novamente para salvar"</string> <string name="has_dictionary" msgid="6071847973466625007">"Dicionário disponível"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Ativar comentário do usuário"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Ajude a melhorar este editor de método de entrada enviando automaticamente ao Google estatísticas de uso e relatórios de falhas."</string> diff --git a/java/res/values-rm/strings.xml b/java/res/values-rm/strings.xml index 8fcb67d46..bacb7d47c 100644 --- a/java/res/values-rm/strings.xml +++ b/java/res/values-rm/strings.xml @@ -170,29 +170,6 @@ <skip /> <!-- no translation found for spoken_description_mode_phone_shift (5499629753962641227) --> <skip /> - <string name="voice_warning_title" msgid="4419354150908395008">"Cumonds vocals"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"\"Cumonds vocals en Vossa lingua na vegnan actualmain betg sustegnids, ma la funcziun è disponibla per englais.\""</string> - <!-- no translation found for voice_warning_may_not_understand (5596289095878251072) --> - <skip /> - <!-- no translation found for voice_warning_how_to_turn_off (3190378129944934856) --> - <skip /> - <!-- no translation found for voice_hint_dialog_message (1420686286820661548) --> - <skip /> - <string name="voice_listening" msgid="467518160751321844">"Ussa discurrer"</string> - <string name="voice_working" msgid="6666937792815731889">"Operaziun en progress"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Errur. Empruvai anc ina giada."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Impussibel da connectar."</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Errur - discurrì memia ditg."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Problem audio"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Errur dal server"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Betg udì ina frasa vocala"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Betg chattà correspundenzas"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Betg installà la tschertga vocala"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Commentari:"</b>" Stritgai cun il det sur la tastatura per discurrer."</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754">"\""<b>"Commentari:"</b>" Empruvai la proxima giada d\'agiuntar segns d\'interpuncziun sco \"\"punct\"\", \"\"comma\"\" u \"\"segn da dumonda\"\" cun cumonds vocals.\""</string> - <string name="cancel" msgid="6830980399865683324">"Interrumper"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <!-- no translation found for voice_input (3583258583521397548) --> <skip /> <!-- no translation found for voice_input_modes_main_keyboard (3360660341121083174) --> @@ -207,14 +184,12 @@ <skip /> <!-- no translation found for voice_input_modes_summary_off (63875609591897607) --> <skip /> - <!-- no translation found for selectInputMethod (315076553378705821) --> - <skip /> <!-- no translation found for configure_input_method (373356270290742459) --> <skip /> <string name="language_selection_title" msgid="1651299598555326750">"Linguas da cumonds vocals"</string> <!-- no translation found for select_language (3693815588777926848) --> <skip /> - <!-- no translation found for hint_add_to_dictionary (9006292060636342317) --> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> <skip /> <string name="has_dictionary" msgid="6071847973466625007">"Dicziunari disponibel"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Activar il feedback da l\'utilisader"</string> diff --git a/java/res/values-ro/strings.xml b/java/res/values-ro/strings.xml index bd62d62c9..a33805160 100644 --- a/java/res/values-ro/strings.xml +++ b/java/res/values-ro/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Modul Alfanumeric"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Modul Telefon"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Modul Telefon cu simboluri"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Intrare voce"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Intrarea vocală nu este acceptată în prezent pentru limba dvs., însă funcţionează în limba engleză."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Intrarea vocală utilizează funcţia Google de recunoaştere vocală. Se aplică "<a href="http://m.google.com/privacy">"Politica de confidenţialitate Google Mobil"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Pentru a dezactiva intrarea vocală, accesaţi setările metodei de intrare."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Pentru a utiliza intrarea vocală, apăsaţi pe butonul Microfon."</string> - <string name="voice_listening" msgid="467518160751321844">"Vorbiţi acum"</string> - <string name="voice_working" msgid="6666937792815731889">"Se analizează"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Eroare. Încercaţi din nou."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Conectare imposibilă"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Eroare, discurs prea lung."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Problemă audio"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Eroare de server"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Nu s-a auzit vorbirea"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Nicio potrivire"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Căutarea vocală nu este instalată"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Indiciu:"</b>" glisaţi de-a lungul tastaturii pentru a vorbi"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Indiciu:"</b>" data viitoare, încercaţi să rostiţi şi punctuaţia, cum ar fi „punct”, „virgulă”, sau „semn de întrebare”."</string> - <string name="cancel" msgid="6830980399865683324">"Anulaţi"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Tastă pentru intrarea vocală"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Pe tastat. princip."</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Pe tastat. simbol."</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mic. pe tast. princ."</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Micr. pe tast. simb."</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Intr. vocală dezact."</string> - <string name="selectInputMethod" msgid="315076553378705821">"Selectaţi metoda de introducere a textului"</string> <string name="configure_input_method" msgid="373356270290742459">"Configuraţi metodele de intrare"</string> <string name="language_selection_title" msgid="1651299598555326750">"Selectaţi limba"</string> <string name="select_language" msgid="3693815588777926848">"Limbi de intrare"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Atingeţi din nou pentru a salva"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"Dicţionar disponibil"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Activaţi feedback de la utilizatori"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Ajutaţi la îmbunătăţirea acestui instrument de editare a metodelor de introducere a textului trimiţând în mod automat la Google statistici de utilizare şi rapoarte de blocare."</string> diff --git a/java/res/values-ru/donottranslate-more-keys.xml b/java/res/values-ru/donottranslate-more-keys.xml index a1a22e5aa..0bb57074c 100644 --- a/java/res/values-ru/donottranslate-more-keys.xml +++ b/java/res/values-ru/donottranslate-more-keys.xml @@ -18,6 +18,16 @@ */ --> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- U+0449: "щ" CYRILLIC SMALL LETTER SHCHA --> + <string name="keylabel_for_east_slavic_row1_9">щ</string> + <!-- U+044B: "ы" CYRILLIC SMALL LETTER YERU --> + <string name="keylabel_for_east_slavic_row2_1">ы</string> + <!-- U+0438: "и" CYRILLIC SMALL LETTER I --> + <string name="keylabel_for_east_slavic_row3_5">и</string> <!-- U+0451: "ё" CYRILLIC SMALL LETTER IO --> <string name="more_keys_for_cyrillic_ye">ё</string> + <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN --> + <string name="more_keys_for_cyrillic_ha">ъ</string> + <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN --> + <string name="more_keys_for_cyrillic_soft_sign">ъ</string> </resources> diff --git a/java/res/values-ru/strings.xml b/java/res/values-ru/strings.xml index ef759b129..3ec5daf7e 100644 --- a/java/res/values-ru/strings.xml +++ b/java/res/values-ru/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Режим ввода текста"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Режим набора номера"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Режим телефонных символов"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Голосовой ввод"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"В настоящее время функция голосового ввода не поддерживает ваш язык, но вы можете пользоваться ей на английском."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Голосовой ввод использует алгоритмы распознавания речи Google. Действует "<a href="http://m.google.com/privacy">"политика конфиденциальности для мобильных устройств"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Функция голосового ввода отключается в настройках способа ввода."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Чтобы использовать голосовой ввод, нажмите кнопку микрофона."</string> - <string name="voice_listening" msgid="467518160751321844">"Говорите"</string> - <string name="voice_working" msgid="6666937792815731889">"Обработка запроса"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Ошибка. Повторите попытку."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Ошибка подключения"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Слишком длинная фраза"</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Неполадка со звуком"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Ошибка сервера"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Речи не слышно"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Ничего не найдено"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Голосовой поиск не установлен"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Совет"</b>". Проведите пальцем по клавиатуре для голосового ввода."</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Совет"</b>". В следующий раз проговаривайте знаки препинания, например \"точка\", \"запятая\", \"вопросительный знак\"."</string> - <string name="cancel" msgid="6830980399865683324">"Отмена"</string> - <string name="ok" msgid="7898366843681727667">"ОК"</string> <string name="voice_input" msgid="3583258583521397548">"Ключ голосового ввода"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Значок на основной клавиатуре"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Значок на клавиатуре символов"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Значок на основной клавиатуре"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Значок на клавиатуре символов"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Голосовой ввод откл."</string> - <string name="selectInputMethod" msgid="315076553378705821">"Выбрать способ ввода"</string> <string name="configure_input_method" msgid="373356270290742459">"Настройка способов ввода"</string> <string name="language_selection_title" msgid="1651299598555326750">"Языки ввода"</string> <string name="select_language" msgid="3693815588777926848">"Языки ввода"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Нажмите, чтобы сохранить"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"Доступен словарь"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Включить отправку сведений"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Помогите усовершенствовать редактор способа ввода, разрешив отправку статистики и отчетов о сбоях в Google."</string> diff --git a/java/res/values-sk/strings.xml b/java/res/values-sk/strings.xml index 3b06d5a84..95ebad1bf 100644 --- a/java/res/values-sk/strings.xml +++ b/java/res/values-sk/strings.xml @@ -39,7 +39,7 @@ <string name="advanced_settings_summary" msgid="4487980456152830271">"Možnosti pre odborníkov"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Prepnúť na iné metódy vstupu"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Kláves na prepnutie jazyka pokrýva aj ďalšie metódy vstupu"</string> - <string name="suppress_language_switch_key" msgid="8003788410354806368">"Blok. kláves na prep. jazyka"</string> + <string name="suppress_language_switch_key" msgid="8003788410354806368">"Blok. kláves prep. jazyka"</string> <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Onesk. zrušenia kľúč. kon. okna"</string> <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Bez oneskorenia"</string> <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Predvolená"</string> @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Režim písmen"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Režim telefónu"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Režim telefónnych symbolov"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Hlasový vstup"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Pre váš jazyk aktuálne nie je hlasový vstup podporovaný, ale funguje v angličtine."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Hlasový vstup používa rozpoznávanie hlasu Google. Na používanie hlasového vstupu sa vzťahujú "<a href="http://m.google.com/privacy">"Pravidlá ochrany osobných údajov pre mobilné služby"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Ak chcete vypnúť hlasový vstup, prejdite na nastavenia metódy vstupu."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Ak chcete použiť hlasový vstup, stlačte tlačidlo mikrofón."</string> - <string name="voice_listening" msgid="467518160751321844">"Hovorte"</string> - <string name="voice_working" msgid="6666937792815731889">"Prebieha spracovanie"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Chyba. Skúste to znova."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Pripojenie sa nepodarilo."</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Chyba, reč je príliš dlhá."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Problém so zvukom"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Chyba servera"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Nebola zistená žiadna reč."</string> - <string name="voice_no_match" msgid="4285117547030179174">"Nenašli sa žiadne zhody"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Hlasové vyhľadávanie nie je nainštalované"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Tip:"</b>" Ak chcete aktivovať hlasový vstup, prejdite prstom po klávesnici."</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Tip:"</b>" Nabudúce skúste vysloviť interpunkciu, napríklad „bodka“, „čiarka“ alebo „otáznik“."</string> - <string name="cancel" msgid="6830980399865683324">"Zrušiť"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Kľúč hlasového vstupu"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Na hlavnej klávesnici"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Na klávesnici so symbolmi"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikrofón na hlavnej klávesnici"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikrofón na klávesnici so symbolmi"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Hlasový vstup je zakázaný"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Výber metódy vstupu"</string> <string name="configure_input_method" msgid="373356270290742459">"Konfigurovať metódy vstupu"</string> <string name="language_selection_title" msgid="1651299598555326750">"Jazyky vstupu"</string> <string name="select_language" msgid="3693815588777926848">"Jazyky vstupu"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Ďalším dotykom slovo uložíte"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"K dispozícii je slovník"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Povoliť spätnú väzbu od používateľov"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Automatickým zasielaním štatistík o využívaní editora metódy vstupu a správ o jeho zlyhaní do služby Google môžete prispieť k vylepšeniu tohto nástroja."</string> diff --git a/java/res/values-sl/strings.xml b/java/res/values-sl/strings.xml index be33ff8a1..636894844 100644 --- a/java/res/values-sl/strings.xml +++ b/java/res/values-sl/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Način črk"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Način telefona"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Način simbolov telefona"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Glasovni vnos"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Glasovni vnos trenutno ni podprt v vašem jeziku, deluje pa v angleščini."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Glasovni vnos uporablja Googlovo prepoznavanje govora. Zanj velja "<a href="http://m.google.com/privacy">"pravilnik o zasebnosti za mobilne naprave"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Glasovni vnos izklopite v nastavitvah načina vnosa."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Če želite uporabljati glasovni vnos, pritisnite gumb z mikrofonom."</string> - <string name="voice_listening" msgid="467518160751321844">"Začnite govoriti"</string> - <string name="voice_working" msgid="6666937792815731889">"Obdelava"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Napaka. Poskusite znova."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Povezava ni mogoča"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Napaka, preveč govora."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Težave z zvokom"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Napaka strežnika"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Govora se ne sliši"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Ni rezultatov"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Glasovno iskanje ni nameščeno"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Nasvet:"</b>" za govorjenje s prstom povlecite po tipkovnici"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Nasvet:"</b>" naslednjič poskusite ločila izgovoriti, npr. »pika«, »vejica« ali »vprašaj«."</string> - <string name="cancel" msgid="6830980399865683324">"Prekliči"</string> - <string name="ok" msgid="7898366843681727667">"V redu"</string> <string name="voice_input" msgid="3583258583521397548">"Tipka za glasovni vnos"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Na glavni tipkovnici"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Na tipk. s simboli"</string> @@ -128,11 +108,10 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mik. na glavni tipk."</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mik. na tipk. s sim."</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Glas. vnos je onem."</string> - <string name="selectInputMethod" msgid="315076553378705821">"Izberite način vnosa"</string> <string name="configure_input_method" msgid="373356270290742459">"Nastavitev načinov vnosa"</string> <string name="language_selection_title" msgid="1651299598555326750">"Jeziki vnosa"</string> <string name="select_language" msgid="3693815588777926848">"Jeziki vnosa"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Še enkrat se dotaknite, da shranite"</string> + <string name="hint_add_to_dictionary" msgid="573678656946085380">"Dotaknite se še enkrat, da shranite"</string> <string name="has_dictionary" msgid="6071847973466625007">"Slovar je na voljo"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Omogoči povratne informacije uporabnikov"</string> <string name="prefs_description_log" msgid="5827825607258246003">"S samodejnim pošiljanjem statističnih podatkov o uporabi in poročil o zrušitvah Googlu nam lahko pomagate izboljšati urejevalnik načina vnosa."</string> diff --git a/java/res/values-sr/donottranslate-more-keys.xml b/java/res/values-sr/donottranslate-more-keys.xml new file mode 100644 index 000000000..e85d3d7a2 --- /dev/null +++ b/java/res/values-sr/donottranslate-more-keys.xml @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- U+0437: "з" CYRILLIC SMALL LETTER ZE --> + <string name="keylabel_for_south_slavic_row1_6">з</string> + <!-- U+045B: "ћ" CYRILLIC SMALL LETTER TSHE --> + <string name="keylabel_for_south_slavic_row2_11">ћ</string> + <!-- U+0455: "ѕ" CYRILLIC SMALL LETTER DZE --> + <string name="keylabel_for_south_slavic_row3_1">ѕ</string> + <!-- U+0452: "ђ" CYRILLIC SMALL LETTER DJE --> + <string name="keylabel_for_south_slavic_row3_8">ђ</string> + <!-- U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE --> + <string name="more_keys_for_cyrillic_ie">ѐ</string> + <!-- U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE --> + <string name="more_keys_for_cyrillic_i">ѝ</string> + <!-- U+2018: "‘" LEFT SINGLE QUOTATION MARK + U+2019: "’" RIGHT SINGLE QUOTATION MARK + U+201A: "‚" SINGLE LOW-9 QUOTATION MARK + U+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK + U+201C: "“" LEFT DOUBLE QUOTATION MARK + U+201D: "”" RIGHT DOUBLE QUOTATION MARK + U+201E: "„" DOUBLE LOW-9 QUOTATION MARK + U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK --> + <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. --> + <!-- <string name="more_keys_for_double_quote">!fixedColumnOrder!6,„,“,”,‟,«,»</string> --> + <string name="more_keys_for_double_quote">!fixedColumnOrder!5,„,“,”,«,»</string> + <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. --> + <!-- <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,“,”,„,‟,«,»,‘,’,‚,‛</string> --> + <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!5,„,“,”,«,»,‘,’,‚,‛</string> +</resources> diff --git a/java/res/values-sr/strings.xml b/java/res/values-sr/strings.xml index 745ed1e33..49aefd156 100644 --- a/java/res/values-sr/strings.xml +++ b/java/res/values-sr/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Режим слова"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Режим телефона"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Режим симбола телефона"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Гласовни унос"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Гласовни унос тренутно није подржан за ваш језик, али функционише на енглеском."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Гласовни унос користи Google-ову функцију за препознавање гласа. Примењује се "<a href="http://m.google.com/privacy">"политика приватности за мобилне уређаје"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Да бисте искључили гласовни унос, идите на подешавања за начин уноса."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Да бисте користили гласовни унос, притисните дугме за микрофон."</string> - <string name="voice_listening" msgid="467518160751321844">"Говорите сада"</string> - <string name="voice_working" msgid="6666937792815731889">"Обрада"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Грешка. Покушајте поново."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Повезивање није могуће"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Грешка, говорите предуго."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Проблем са звуком"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Грешка сервера"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Не чује се говор"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Нема подударања"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Гласовна претрага није инсталирана"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Савет:"</b>" Превуците прстом преко тастатуре за гласовни унос"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Савет:"</b>" Следећи пут покушајте да изговорите знакове интерпункције као што су „тачка“, „зарез“ или „знак питања“."</string> - <string name="cancel" msgid="6830980399865683324">"Откажи"</string> - <string name="ok" msgid="7898366843681727667">"Потврди"</string> <string name="voice_input" msgid="3583258583521397548">"Тастер за гласовни унос"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"На главној тастатури"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"На тастатури са симболима"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Микрофон на главној тастатури"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Микрофон на тастатури са симболима"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Гласовни унос је онемогућен"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Изаберите метод уноса"</string> <string name="configure_input_method" msgid="373356270290742459">"Конфигурисање метода уноса"</string> <string name="language_selection_title" msgid="1651299598555326750">"Језици за унос"</string> <string name="select_language" msgid="3693815588777926848">"Језици уноса"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Поново додирните да бисте сачували"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"Речник је доступан"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Омогући повратну информацију корисника"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Помозите да се побољша овај уређивач режима уноса тако што ће се аутоматски послати статистика о коришћењу и извештаји о грешкама компанији Google."</string> diff --git a/java/res/values-sv/donottranslate-more-keys.xml b/java/res/values-sv/donottranslate-more-keys.xml index e3662df69..d479191f4 100644 --- a/java/res/values-sv/donottranslate-more-keys.xml +++ b/java/res/values-sv/donottranslate-more-keys.xml @@ -42,13 +42,13 @@ U+0161: "š" LATIN SMALL LETTER S WITH CARON --> <string name="more_keys_for_s">ß,ś,š</string> <!-- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE --> - <string name="keylabel_for_scandinavia_row1_11">å</string> + <string name="keylabel_for_nordic_row1_11">å</string> <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS --> - <string name="keylabel_for_scandinavia_row2_10">ö</string> + <string name="keylabel_for_nordic_row2_10">ö</string> <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS --> - <string name="keylabel_for_scandinavia_row2_11">ä</string> + <string name="keylabel_for_nordic_row2_11">ä</string> <!-- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE --> - <string name="more_keys_for_scandinavia_row2_10">ø</string> + <string name="more_keys_for_nordic_row2_10">ø</string> <!-- U+00E6: "æ" LATIN SMALL LETTER AE --> - <string name="more_keys_for_scandinavia_row2_11">æ</string> + <string name="more_keys_for_nordic_row2_11">æ</string> </resources> diff --git a/java/res/values-sv/strings.xml b/java/res/values-sv/strings.xml index 9cac393e7..3c5ecd526 100644 --- a/java/res/values-sv/strings.xml +++ b/java/res/values-sv/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Bokstavsläge"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Telefonläge"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Telefonsymbolläge"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Röstindata"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Röstindata stöds inte på ditt språk än, men tjänsten fungerar på engelska."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Röstinmatning använder sig av Googles tjänst för taligenkänning. "<a href="http://m.google.com/privacy">"Sekretesspolicyn för mobila enheter"</a>" gäller."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Om du vill stänga av röstinmatning öppnar du inställningarna för inmatningsmetod."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Om du vill använda röstinmatning trycker du på mikrofonknappen."</string> - <string name="voice_listening" msgid="467518160751321844">"Tala nu"</string> - <string name="voice_working" msgid="6666937792815731889">"Fungerar"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Fel. Försök igen."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Det gick inte att ansluta"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Fel, för mycket tal."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Ljudproblem"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Serverfel"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Hörde inget tal"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Inga träffar hittades"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Voice Search är inte installerat"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Tips!"</b>" Dra över tangentbordet om du vill tala"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Tips!"</b>" Nästa gång testar du att säga skiljetecknen, som \"punkt\", \"komma\" eller \"frågetecken\"."</string> - <string name="cancel" msgid="6830980399865683324">"Avbryt"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Röstinmatningsknapp"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"På huvudtangentbord"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"På symboltangentbord"</string> @@ -128,11 +108,10 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mick huvudtangentbord"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mick bland symboler"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Röstinmatning inaktiv"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Välj inmatningsmetod"</string> <string name="configure_input_method" msgid="373356270290742459">"Konfigurera inmatningsmetoder"</string> <string name="language_selection_title" msgid="1651299598555326750">"Inmatningsspråk"</string> <string name="select_language" msgid="3693815588777926848">"Inmatningsspråk"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Tryck igen för att spara"</string> + <string name="hint_add_to_dictionary" msgid="573678656946085380">"Spara genom att trycka igen"</string> <string name="has_dictionary" msgid="6071847973466625007">"En ordlista är tillgänglig"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Aktivera synpunkter från användare"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Du kan hjälpa till att förbättra inmatningsmetoden genom att automatiskt skicka användningsstatistik och felrapporter till Google."</string> diff --git a/java/res/values-sw/strings.xml b/java/res/values-sw/strings.xml index 4a7a1ff85..e849ade44 100644 --- a/java/res/values-sw/strings.xml +++ b/java/res/values-sw/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Hali ya barua"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Hali ya simu"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Hali ya alama za simu"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Uingizaji wa sauti"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Uingizaji wa sauti hauhimiliwi kwa lugha yako kwa sasa, lakini inafanya kazi kwa Kiingereza."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Uingizaji wa sauti hutumia utambuaji wa usemi wa Google. "<a href="http://m.google.com/privacy">"Sera ya Faragha ya Simu za mkononi "</a>" hutumika."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Ili kuzima uingizaji sauti, nenda kwa mipangilio ya mbinu ya uingizaji."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Ili kutumia uingizaji wa sauti, bonyeza kitufe cha maikrofoni."</string> - <string name="voice_listening" msgid="467518160751321844">"Ongea sasa"</string> - <string name="voice_working" msgid="6666937792815731889">"Inafanya kazi"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Hitilafu. Tafadhali jaribu tena."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Haiwezi kuunganisha"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Hitilafu, usemi ni zaidi."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Tatizo la sauti"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Hitilafu ya Seva"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Hakuna matamshi yaliyosikizwa"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Hakuna zinazolingana zilizopatikana."</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Utafutaji wa sauti haujawekwa"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Kidokezo:"</b>" Telezesha kidole kwenye kibodi ili utamke"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Kidokezo:"</b>" Wakati mwingine, jaribu kutamka uakifishaji kama vile \"kituo\", \"koma\", au \"kiulizio cha swali\"."</string> - <string name="cancel" msgid="6830980399865683324">"Ghairi"</string> - <string name="ok" msgid="7898366843681727667">"Sawa"</string> <string name="voice_input" msgid="3583258583521397548">"Kibao cha kuingizia sauti"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Kwenye kibodi kuu"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Kwenye kibodi ya ishara"</string> @@ -128,11 +108,10 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Maikrofoni kwenye kibodi kuu"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Maikrofoni kwenye kibodi ya ishara"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Uingizaji sauti umelemazwa"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Chagua mtindo wa uingizaji"</string> <string name="configure_input_method" msgid="373356270290742459">"Sanidi mbinu za uingizaji"</string> <string name="language_selection_title" msgid="1651299598555326750">"Lugha za uingizaji"</string> <string name="select_language" msgid="3693815588777926848">"Lugha zinazoruhusiwa"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Gusa tena ili kuhifadhi"</string> + <string name="hint_add_to_dictionary" msgid="573678656946085380">"Gusa tena ili kuhifadhi"</string> <string name="has_dictionary" msgid="6071847973466625007">"Kamusi inapatikana"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Wezesha maoni ya watumiaji"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Saidia kuimarisha mbinu ya uingizaji wa kihariri, kwa kutuma takwimu za matumizi na ripoti za kuvurugika kwa Google kiotomatiki."</string> diff --git a/java/res/values-th/strings.xml b/java/res/values-th/strings.xml index d255f44cf..15157c245 100644 --- a/java/res/values-th/strings.xml +++ b/java/res/values-th/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"โหมดตัวอักษร"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"โหมดโทรศัพท์"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"โหมดสัญลักษณ์โทรศัพท์"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"การป้อนข้อมูลด้วยเสียง"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"ขณะนี้การป้อนข้อมูลด้วยเสียงยังไม่ได้รับการสนับสนุนในภาษาของคุณ แต่ใช้ได้ในภาษาอังกฤษ"</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"ป้อนข้อมูลด้วยเสียงใช้การจดจำคำพูดของ Google "<a href="http://m.google.com/privacy">" นโยบายส่วนบุคคลของมือถือ"</a>"มีผลบังคับใช้"</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"หากต้องการปิดการป้อนข้อมูลด้วยเสียง ไปที่การตั้งค่าวิธีการป้อนข้อมูล"</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"หากต้องการใช้การป้อนข้อมูลด้วยเสียง ให้กดปุ่มไมโครโฟน"</string> - <string name="voice_listening" msgid="467518160751321844">"พูดได้เลย"</string> - <string name="voice_working" msgid="6666937792815731889">"กำลังทำงาน"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"ข้อผิดพลาด โปรดลองอีกครั้ง"</string> - <string name="voice_network_error" msgid="6649556447401862563">"ไม่สามารถเชื่อมต่อได้"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"ข้อผิดพลาด คำพูดยาวเกินไป"</string> - <string name="voice_audio_error" msgid="5072707727016414454">"ปัญหาด้านเสียง"</string> - <string name="voice_server_error" msgid="7807129913977261644">"ข้อผิดพลาดของเซิร์ฟเวอร์"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"ไม่ได้ยินเสียง"</string> - <string name="voice_no_match" msgid="4285117547030179174">"ไม่พบรายการที่ตรงกัน"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"ไม่ได้ติดตั้ง Voice Search"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"คำแนะนำ:"</b>" กวาดผ่านแป้นพิมพ์เพื่อพูด"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"คำแนะนำ:"</b>" ครั้งต่อไป ให้ลองเอ่ยถึงเครื่องหมายวรรคตอน เช่น \"มหัพภาค\" \"จุลภาค\" หรือ \"เครื่องหมายคำถาม\""</string> - <string name="cancel" msgid="6830980399865683324">"ยกเลิก"</string> - <string name="ok" msgid="7898366843681727667">"ตกลง"</string> <string name="voice_input" msgid="3583258583521397548">"แป้นการป้อนข้อมูลด้วยเสียง"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"บนแป้นพิมพ์หลัก"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"บนแป้นพิมพ์สัญลักษณ์"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"ไมค์บนแป้นพิมพ์หลัก"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"ไมค์บนแป้นพิมพ์สัญลักษณ์"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"ปิดใช้งานป้อนข้อมูลด้วยเสียง"</string> - <string name="selectInputMethod" msgid="315076553378705821">"เลือกวิธีการป้อนข้อมูล"</string> <string name="configure_input_method" msgid="373356270290742459">"กำหนดค่าวิธีการป้อนข้อมูล"</string> <string name="language_selection_title" msgid="1651299598555326750">"ภาษาในการป้อนข้อมูล"</string> <string name="select_language" msgid="3693815588777926848">"ภาษาสำหรับการป้อนข้อมูล"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← แตะอีกครั้งเพื่อบันทึก"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"มีพจนานุกรมให้ใช้งาน"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"เปิดใช้งานการแสดงความคิดเห็นจากผู้ใช้"</string> <string name="prefs_description_log" msgid="5827825607258246003">"ช่วยปรับปรุงตัวแก้ไขวิธีการป้อนข้อมูลนี้โดยการส่งสถิติการใช้งานและรายงานการขัดข้องถึง Google โดยอัตโนมัติ"</string> diff --git a/java/res/values-tl/strings.xml b/java/res/values-tl/strings.xml index 336a0831e..36f9002f4 100644 --- a/java/res/values-tl/strings.xml +++ b/java/res/values-tl/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Mode ng mga titik"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Mode ng telepono"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Mode ng mga simbolo ng telepono"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Pag-input ng boses"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Hindi kasalukuyang suportado ang pag-input ng boses para sa iyong wika, ngunit gumagana sa Ingles."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Gumagamit ang pag-input ng boses ng speech recognition ng Google. Nalalapat "<a href="http://m.google.com/privacy">"Ang Patakaran sa Privacy ng Mobile"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Upang i-off ang pag-input ng boses, pumunta sa mga setting ng pamamaraan ng pag-input."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Upang gamitin ang pag-input ng boses, pindutin ang pindutan na mikropono."</string> - <string name="voice_listening" msgid="467518160751321844">"Magsalita ngayon"</string> - <string name="voice_working" msgid="6666937792815731889">"Nagtatrabaho"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Error. Pakisubukang muli."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Hindi makakonekta"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Error, masyadong maraming pananalita."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Problema sa audio"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Error sa server"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Walang narinig na pananalita"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Walang nakitang mga tugma"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Hindi naka-install ang paghahanap ng boses"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Pahiwatig:"</b>" Mag-swipe sa keyboard upang magsalita"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Pahiwatig:"</b>" Sa susunod, subukang magsalita ng bantas tulad ng \"tuldok\", \"kuwit\", o \"tandang pananong\"."</string> - <string name="cancel" msgid="6830980399865683324">"Kanselahin"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Voice input key"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Sa pangunahing keyboard"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Sa keyboard ng mga simbolo"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mic sa pangunahing keyboard"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mic sa keyboard ng mga simbolo"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Hindi pinagana ang voice input"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Pumili ng paraan ng pag-input"</string> <string name="configure_input_method" msgid="373356270290742459">"I-configure ang mga pamamaraan ng pag-input"</string> <string name="language_selection_title" msgid="1651299598555326750">"Mag-input ng mga wika"</string> <string name="select_language" msgid="3693815588777926848">"Mga wika ng input"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Pinduting muli upang i-save"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"Available ang diksyunaryo"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Paganahin ang feedback ng user"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Tumulong na pahusayin ang editor ng paraan ng pag-input na ito sa pamamagitan ng awtomatikong pagpapadala ng mga istatistika ng paggamit at mga ulat ng crash sa Google."</string> diff --git a/java/res/values-tr/strings.xml b/java/res/values-tr/strings.xml index 8689adcbe..1978a6f1e 100644 --- a/java/res/values-tr/strings.xml +++ b/java/res/values-tr/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Harf modu"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Telefon modu"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Telefon sembolleri modu"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Ses girişi"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Ses girişi, şu anda sizin diliniz için desteklenmiyor ama İngilizce dilinde kullanılabilir."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Ses girişi Google\'ın konuşma tanıma işlevini kullanır. "<a href="http://m.google.com/privacy">" Mobil Gizlilik Politikası"</a>" geçerlidir."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Ses girişini kapatmak için giriş yöntemi ayarlarına gidin."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Ses girişini kullanmak için mikrofon düğmesine basın."</string> - <string name="voice_listening" msgid="467518160751321844">"Şimdi konuşun"</string> - <string name="voice_working" msgid="6666937792815731889">"Çalışıyor"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Hata. Lütfen tekrar deneyin."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Bağlanamadı"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Hata, çok uzun konuşma."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Ses sorunu"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Sunucu hatası"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Konuşma duyulmadı"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Eşleşme bulunamadı"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Sesle arama yüklenmedi"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"İpucu:"</b>" Konuşmak için parmağınızı klavye üzerinde kaydırın"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"İpucu:"</b>" Sonraki sefer, \"nokta\", \"virgül\" veya \"soru işareti\" gibi noktalama işaretlerini telaffuz etmeyi deneyin."</string> - <string name="cancel" msgid="6830980399865683324">"İptal"</string> - <string name="ok" msgid="7898366843681727667">"Tamam"</string> <string name="voice_input" msgid="3583258583521397548">"Ses girişi tuşu"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Ana klavyede"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Simge klavyesinde"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Ana klavyede mikrfn"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Simge klavysnd mikrf"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Sesle grş devre dışı"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Giriş yöntemini seç"</string> <string name="configure_input_method" msgid="373356270290742459">"Giriş yöntemlerini yapılandır"</string> <string name="language_selection_title" msgid="1651299598555326750">"Giriş dilleri"</string> <string name="select_language" msgid="3693815588777926848">"Giriş dilleri"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Kaydetmek için tekrar dokunun"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"Sözlük kullanılabilir"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Kullanıcı geri bildirimini etkinleştir"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Kullanım istatistiklerini ve kilitlenme raporlarını Google\'a otomatik olarak göndererek bu giriş yöntemi düzenleyicisinin iyileştirilmesine yardımcı olun."</string> diff --git a/java/res/values-uk/donottranslate-more-keys.xml b/java/res/values-uk/donottranslate-more-keys.xml index 323eaafbb..32397049a 100644 --- a/java/res/values-uk/donottranslate-more-keys.xml +++ b/java/res/values-uk/donottranslate-more-keys.xml @@ -18,8 +18,16 @@ */ --> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- U+0449: "щ" CYRILLIC SMALL LETTER SHCHA --> + <string name="keylabel_for_east_slavic_row1_9">щ</string> <!-- U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I --> - <string name="keylabel_for_cyrillic_yery">і</string> + <string name="keylabel_for_east_slavic_row2_1">і</string> + <!-- U+0438: "и" CYRILLIC SMALL LETTER I --> + <string name="keylabel_for_east_slavic_row3_5">и</string> + <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN --> + <string name="more_keys_for_cyrillic_ha">ъ</string> <!-- U+0457: "ї" CYRILLIC SMALL LETTER YI --> - <string name="more_keys_for_cyrillic_yery">ї</string> + <string name="more_keys_for_east_slavic_row2_1">ї</string> + <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN --> + <string name="more_keys_for_cyrillic_soft_sign">ъ</string> </resources> diff --git a/java/res/values-uk/strings.xml b/java/res/values-uk/strings.xml index f449becec..6541c945d 100644 --- a/java/res/values-uk/strings.xml +++ b/java/res/values-uk/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Режим букв і цифр"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Режим набору номера"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Режим набору символів"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Голос. ввід"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Голос. ввід наразі не підтрим. для вашої мови, але можна користуватися англійською."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Голосовий ввід використовує розпізнавання мовлення Google. Застосовується "<a href="http://m.google.com/privacy">"Політика конфіденційності для мобільних пристроїв"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Щоб вимкнути голосовий ввід, перейдіть до налаштувань методів введення."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Щоб використовувати голосовий ввід, натисніть кнопку мікрофона."</string> - <string name="voice_listening" msgid="467518160751321844">"Диктуйте"</string> - <string name="voice_working" msgid="6666937792815731889">"Працює"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Помилка. Спробуйте ще раз."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Неможл. під\'єднатися"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Помилка. Забагато продикт."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Проблема з аудіо"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Помилка сервера"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Не чути диктув."</string> - <string name="voice_no_match" msgid="4285117547030179174">"Збігів не знайдено"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Голос. пошук не встановлено"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Підк:"</b>" горт. на клавіат., щоб продикт."</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Підказка:"</b>" наступного разу продикт. знаки пункт. такі як \"крапка\", \"кома\" чи \"знак пит\"."</string> - <string name="cancel" msgid="6830980399865683324">"Скасувати"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Ключ голосового вводу"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"На основ. клавіатурі"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Символьна клавіатура"</string> @@ -128,11 +108,10 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Miкр. на осн. клав."</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Miкр. на симв. клавіат."</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Голос. ввід вимкнено"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Вибрати метод введення"</string> <string name="configure_input_method" msgid="373356270290742459">"Налаштування методів введення"</string> <string name="language_selection_title" msgid="1651299598555326750">"Мови вводу"</string> <string name="select_language" msgid="3693815588777926848">"Мови введення"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Торкн. ще, щоб збер."</string> + <string name="hint_add_to_dictionary" msgid="573678656946085380">"Торкніться знову, щоб зберегти"</string> <string name="has_dictionary" msgid="6071847973466625007">"Словник доступний"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Увімк. відгуки корист."</string> <string name="prefs_description_log" msgid="5827825607258246003">"Допоможіть покращ. редактор методу введ., автомат. надсилаючи в Google статистику використ. та звіти про збої."</string> diff --git a/java/res/values-vi/strings.xml b/java/res/values-vi/strings.xml index 01179845f..f37372991 100644 --- a/java/res/values-vi/strings.xml +++ b/java/res/values-vi/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Chế độ chữ cái"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Chế độ điện thoại"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Chế độ biểu tượng điện thoại"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Nhập liệu bằng giọng nói"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Nhập liệu bằng giọng nói hiện không được hỗ trợ cho ngôn ngữ của bạn nhưng hoạt động với ngôn ngữ tiếng Anh."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Nhập liệu bằng giọng nói sử dụng nhận dạng giọng nói của Google. Áp dụng "<a href="http://m.google.com/privacy">"Chính sách bảo mật dành cho điện thoại di động"</a>"."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Để tắt nhập liệu bằng giọng nói, đi tới cài đặt phương pháp nhập liệu."</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Để sử dụng nhập liệu bằng giọng nói, hãy nhấn nút micrô."</string> - <string name="voice_listening" msgid="467518160751321844">"Nói ngay"</string> - <string name="voice_working" msgid="6666937792815731889">"Đang hoạt động"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Lỗi. Vui lòng thử lại."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Không thể kết nối"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Lỗi, quá nhiều câu thoại."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Sự cố âm thanh"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Lỗi máy chủ"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Không nghe thấy tiếng nói nào"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Không tìm thấy kết quả phù hợp"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Tìm kiếm bằng giọng nói chưa được cài đặt"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Gợi ý:"</b>" Trượt qua bàn phím để nói"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Gợi ý:"</b>" Lần tới, thử nói dấu câu như \"dấu chấm\", \"dấu phẩy\" hoặc \"dấu hỏi\"."</string> - <string name="cancel" msgid="6830980399865683324">"Hủy"</string> - <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="3583258583521397548">"Khóa nhập giọng nói"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Trên bàn phím chính"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Trên bàn phím biểu tượng"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Micrô trên bàn phím chính"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Micrô trên bàn phím biểu tượng"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Nhập liệu bằng giọng nói đã bị tắt"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Chọn phương thức nhập"</string> <string name="configure_input_method" msgid="373356270290742459">"Định cấu hình phương thức nhập"</string> <string name="language_selection_title" msgid="1651299598555326750">"Ngôn ngữ nhập"</string> <string name="select_language" msgid="3693815588777926848">"Ngôn ngữ nhập"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Chạm lại để lưu"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"Có sẵn từ điển"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Bật phản hồi của người dùng"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Giúp nâng cao trình chỉnh sửa phương thức nhập này bằng cách tự động gửi thống kê sử dụng và báo cáo sự cố cho Google."</string> diff --git a/java/res/values-zh-rCN/strings.xml b/java/res/values-zh-rCN/strings.xml index 0e94806a7..876056b96 100644 --- a/java/res/values-zh-rCN/strings.xml +++ b/java/res/values-zh-rCN/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"字母模式"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"电话模式"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"电话符号模式"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"语音输入"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"语音输入功能当前还不支持您的语言,您只能输入英语语音。"</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"语音输入采用了 Google 的语音识别技术,因此请遵守"<a href="http://m.google.com/privacy">"“Google 移动”隐私权政策"</a>"。"</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"要关闭语音输入功能,请转至输入法设置。"</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"要使用语音输入功能,请按“麦克风”按钮。"</string> - <string name="voice_listening" msgid="467518160751321844">"请开始说话"</string> - <string name="voice_working" msgid="6666937792815731889">"正在处理"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"出错,请重试。"</string> - <string name="voice_network_error" msgid="6649556447401862563">"无法连接"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"出错,语音过长。"</string> - <string name="voice_audio_error" msgid="5072707727016414454">"音频问题"</string> - <string name="voice_server_error" msgid="7807129913977261644">"服务器出错"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"未听到语音"</string> - <string name="voice_no_match" msgid="4285117547030179174">"未找到匹配项"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"未安装语音搜索"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"提示:"</b>"在键盘上滑动手指可激活语音功能"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"提示:"</b>"稍后,请尝试使用语音输入标点符号,如“句号”、“逗号”或“问号”。"</string> - <string name="cancel" msgid="6830980399865683324">"取消"</string> - <string name="ok" msgid="7898366843681727667">"确定"</string> <string name="voice_input" msgid="3583258583521397548">"语音输入键"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"主键盘上"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"符号键盘上"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"主键盘上的麦克风"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"符号键盘上的麦克风"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"语音输入功能已停用"</string> - <string name="selectInputMethod" msgid="315076553378705821">"选择输入法"</string> <string name="configure_input_method" msgid="373356270290742459">"配置输入法"</string> <string name="language_selection_title" msgid="1651299598555326750">"输入语言"</string> <string name="select_language" msgid="3693815588777926848">"输入语言"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← 再次触摸即可保存"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"提供字典"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"启用用户反馈"</string> <string name="prefs_description_log" msgid="5827825607258246003">"自动向 Google 发送使用情况统计信息和崩溃报告,帮助改进该输入法编辑器。"</string> diff --git a/java/res/values-zh-rTW/strings.xml b/java/res/values-zh-rTW/strings.xml index ac8da4325..88e53b4d4 100644 --- a/java/res/values-zh-rTW/strings.xml +++ b/java/res/values-zh-rTW/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"字母模式"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"撥號模式"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"撥號符號模式"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"語音輸入"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"語音輸入目前不支援您的語言,但是可以辨識英文。"</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"語音輸入使用 Google 的語音辨識功能,並遵循《"<a href="http://m.google.com/privacy">"行動服務隱私權政策"</a>"》。"</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"如要關閉語音輸入,請前往輸入法設定。"</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"如要使用語音輸入,請按下麥克風按鈕。"</string> - <string name="voice_listening" msgid="467518160751321844">"請說話"</string> - <string name="voice_working" msgid="6666937792815731889">"辨識中"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"發生錯誤,請再試一次。"</string> - <string name="voice_network_error" msgid="6649556447401862563">"無法連線"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"錯誤:語音內容過長。"</string> - <string name="voice_audio_error" msgid="5072707727016414454">"音訊問題"</string> - <string name="voice_server_error" msgid="7807129913977261644">"伺服器錯誤"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"沒有聽到任何聲音"</string> - <string name="voice_no_match" msgid="4285117547030179174">"找不到相符的項目"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"未安裝語音搜尋"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"提示:"</b>"滑過鍵盤即可說話"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"提示:"</b>"下次可嘗試說出標點符號,例如「句號」、「逗號」或「問號」。"</string> - <string name="cancel" msgid="6830980399865683324">"取消"</string> - <string name="ok" msgid="7898366843681727667">"確定"</string> <string name="voice_input" msgid="3583258583521397548">"語音輸入按鍵"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"主鍵盤上"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"符號鍵盤上"</string> @@ -128,11 +108,11 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"主鍵盤上的麥克風"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"符號鍵盤上的麥克風"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"語音輸入已停用"</string> - <string name="selectInputMethod" msgid="315076553378705821">"選擇輸入法"</string> <string name="configure_input_method" msgid="373356270290742459">"設定輸入法"</string> <string name="language_selection_title" msgid="1651299598555326750">"輸入語言"</string> <string name="select_language" msgid="3693815588777926848">"輸入語言"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← 再次輕觸即可儲存"</string> + <!-- no translation found for hint_add_to_dictionary (573678656946085380) --> + <skip /> <string name="has_dictionary" msgid="6071847973466625007">"可使用字典"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"啟用使用者意見回饋"</string> <string name="prefs_description_log" msgid="5827825607258246003">"自動將使用統計資料和當機報告傳送給 Google,協助改善這個輸入法編輯器。"</string> diff --git a/java/res/values-zu/strings.xml b/java/res/values-zu/strings.xml index 799a262b6..79b1f2514 100644 --- a/java/res/values-zu/strings.xml +++ b/java/res/values-zu/strings.xml @@ -101,26 +101,6 @@ <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Imodi yezinhlamvu"</string> <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Imodi yefoni"</string> <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Imodi yezimpawu zefoni"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Okufakwa ngezwi"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Okufakwa ngezwi akusekelwa olimini lwakho, kodwa kuyasebenza nge-English."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Okufakwayo ngezwi kusebenzisa ukufanisa izwi kwe-Google. "<a href="http://m.google.com/privacy">"Inqubomgomo Yobumfihlo Yefoni"</a>" iyasebenza."</string> - <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Ukuvala okufakwayo ngezwi, iya kuzilungiselelo zendlela yokufakwayo"</string> - <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Ukusebenzisa okufakwayo ngezwi, cindezela inkinobho yemakrofoni."</string> - <string name="voice_listening" msgid="467518160751321844">"Khuluma manje"</string> - <string name="voice_working" msgid="6666937792815731889">"Kuyasebenza"</string> - <string name="voice_initializing" msgid="661962047129906646"></string> - <string name="voice_error" msgid="5140896300312186162">"Iphutha. Sicela uzame futhi."</string> - <string name="voice_network_error" msgid="6649556447401862563">"Ayikwazanga ukuxhuma"</string> - <string name="voice_too_much_speech" msgid="5746973620134227376">"Iphutha, kunamagama amaningi."</string> - <string name="voice_audio_error" msgid="5072707727016414454">"Inkinga yomsindo"</string> - <string name="voice_server_error" msgid="7807129913977261644">"Iphutha leseva"</string> - <string name="voice_speech_timeout" msgid="8461817525075498795">"Awekho amagama azwakele"</string> - <string name="voice_no_match" msgid="4285117547030179174">"Akukho okufanayo okutholiwe"</string> - <string name="voice_not_installed" msgid="5552450909753842415">"Ukusesha ngezwi akufakiwe"</string> - <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Isexwayiso:"</b>"Shintshela kwikhibhodi ukuze ukhulume"</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Isixwayiso: "</b>"Esikhathini esilandelayo, zama ukukhuluma izimpimiselo ezinjengo \"isikhathi, \"ikhefu\" noma \"uphawu lombuzo\"."</string> - <string name="cancel" msgid="6830980399865683324">"Khansela"</string> - <string name="ok" msgid="7898366843681727667">"KULUNGILE"</string> <string name="voice_input" msgid="3583258583521397548">"Inkinobho yokufaka izwi"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Kwikhibhodi eyisisekelo"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Ikhibhodi yezimpawu"</string> @@ -128,11 +108,10 @@ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"I-mic kwikhibhodi eyisisekelo"</string> <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Ikhibhodi yezimpawu ze-mic"</string> <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Okufakwayo ngezwi kuvinjelwe"</string> - <string name="selectInputMethod" msgid="315076553378705821">"Khetha indlela yokufaka"</string> <string name="configure_input_method" msgid="373356270290742459">"Misa izindlela zokufakwayo"</string> <string name="language_selection_title" msgid="1651299598555326750">"Izilimi zokufakwayo"</string> <string name="select_language" msgid="3693815588777926848">"Izilimi zokufakwayo"</string> - <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Thinta futhi ukulondoloza"</string> + <string name="hint_add_to_dictionary" msgid="573678656946085380">"Thinta futhi ukuze ulondoloze"</string> <string name="has_dictionary" msgid="6071847973466625007">"Isichazamazwi siyatholakala"</string> <string name="prefs_enable_log" msgid="6620424505072963557">"Vumela impendulo yomsebenzisi"</string> <string name="prefs_description_log" msgid="5827825607258246003">"Siza ukuthuthukisa lo mhleli wendlela yokufakwa ngokusithumela ngokuzenzakalela izibalo zokusetshenziswa nokukhubeka ku-Google."</string> diff --git a/java/res/values-zz/donottranslate-more-keys.xml b/java/res/values-zz/donottranslate-more-keys.xml new file mode 100644 index 000000000..eb984a469 --- /dev/null +++ b/java/res/values-zz/donottranslate-more-keys.xml @@ -0,0 +1,139 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE + U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE + U+00E6: "æ" LATIN SMALL LETTER AE + U+0101: "ā" LATIN SMALL LETTER A WITH MACRON + U+0103: "ă" LATIN SMALL LETTER A WITH BREVE + U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK + U+00AA: "ª" FEMININE ORDINAL INDICATOR --> + <string name="more_keys_for_a">à,á,â,ã,ä,å,æ,ã,å,ā,ă,ą,ª</string> + <!-- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE + U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE + U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX + U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS + U+0113: "ē" LATIN SMALL LETTER E WITH MACRON + U+0115: "ĕ" LATIN SMALL LETTER E WITH BREVE + U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE + U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK + U+011B: "ě" LATIN SMALL LETTER E WITH CARON --> + <string name="more_keys_for_e">è,é,ê,ë,ē,ĕ,ė,ę,ě</string> + <!-- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE + U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE + U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX + U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS + U+0129: "ĩ" LATIN SMALL LETTER I WITH TILDE + U+012B: "ī" LATIN SMALL LETTER I WITH MACRON + U+012D: "ĭ" LATIN SMALL LETTER I WITH BREVE + U+012F: "į" LATIN SMALL LETTER I WITH OGONEK + U+0131: "ı" LATIN SMALL LETTER DOTLESS I + U+0133: "ij" LATIN SMALL LIGATURE IJ --> + <string name="more_keys_for_i">ì,í,î,ï,ĩ,ī,ĭ,į,ı,ij</string> + <!-- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE + U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + U+014F: "ŏ" LATIN SMALL LETTER O WITH BREVE + U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE + U+0153: "œ" LATIN SMALL LIGATURE OE + U+00BA: "º" MASCULINE ORDINAL INDICATOR --> + <string name="more_keys_for_o">ò,ó,ô,õ,ö,ø,ō,ŏ,ő,œ,º</string> + <!-- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE + U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE + U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX + U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS + U+0169: "ũ" LATIN SMALL LETTER U WITH TILDE + U+016B: "ū" LATIN SMALL LETTER U WITH MACRON + U+016D: "ŭ" LATIN SMALL LETTER U WITH BREVE + U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE + U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE + U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK --> + <string name="more_keys_for_u">ù,ú,û,ü,ũ,ū,ŭ,ů,ű,ų</string> + <!-- U+00DF: "ß" LATIN SMALL LETTER SHARP S + U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE + U+015D: "ŝ" LATIN SMALL LETTER S WITH CIRCUMFLEX + U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA + U+0161: "š" LATIN SMALL LETTER S WITH CARON + U+017F: "ſ" LATIN SMALL LETTER LONG S --> + <string name="more_keys_for_s">ß,ś,ŝ,ş,š,ſ</string> + <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE + U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE + U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA + U+0148: "ň" LATIN SMALL LETTER N WITH CARON + U+0149: "ʼn" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE + U+014B: "ŋ" LATIN SMALL LETTER ENG --> + <string name="more_keys_for_n">ñ,ń,ņ,ň,ʼn,ŋ</string> + <!-- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA + U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE + U+0109: "ĉ" LATIN SMALL LETTER C WITH CIRCUMFLEX + U+010B: "ċ" LATIN SMALL LETTER C WITH DOT ABOVE + U+010D: "č" LATIN SMALL LETTER C WITH CARON --> + <string name="more_keys_for_c">ç,ć,ĉ,ċ,č</string> + <!-- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE + U+0177: "ŷ" LATIN SMALL LETTER Y WITH CIRCUMFLEX + U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS + U+0133: "ij" LATIN SMALL LIGATURE IJ --> + <string name="more_keys_for_y">ý,ŷ,ÿ,ij</string> + <!-- U+010F: "ď" LATIN SMALL LETTER D WITH CARON + U+0111: "đ" LATIN SMALL LETTER D WITH STROKE + U+00F0: "ð" LATIN SMALL LETTER ETH --> + <string name="more_keys_for_d">ď,đ,ð</string> + <!-- U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE + U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA + U+0159: "ř" LATIN SMALL LETTER R WITH CARON --> + <string name="more_keys_for_r">ŕ,ŗ,ř</string> + <!-- U+00FE: "þ" LATIN SMALL LETTER THORN + U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA + U+0165: "ť" LATIN SMALL LETTER T WITH CARON + U+0167: "ŧ" LATIN SMALL LETTER T WITH STROKE --> + <string name="more_keys_for_t">þ,ţ,ť,ŧ</string> + <!-- U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE + U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE + U+017E: "ž" LATIN SMALL LETTER Z WITH CARON --> + <string name="more_keys_for_z">ź,ż,ž</string> + <!-- U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA + U+0138: "ĸ" LATIN SMALL LETTER KRA --> + <string name="more_keys_for_k">ķ,ĸ</string> + <!-- U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE + U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA + U+013E: "ľ" LATIN SMALL LETTER L WITH CARON + U+0140: "ŀ" LATIN SMALL LETTER L WITH MIDDLE DOT + U+0142: "ł" LATIN SMALL LETTER L WITH STROKE --> + <string name="more_keys_for_l">ĺ,ļ,ľ,ŀ,ł</string> + <!-- U+011D: "ĝ" LATIN SMALL LETTER G WITH CIRCUMFLEX + U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE + U+0121: "ġ" LATIN SMALL LETTER G WITH DOT ABOVE + U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA --> + <string name="more_keys_for_g">ĝ,ğ,ġ,ģ</string> + <!-- U+0125: "ĥ" LATIN SMALL LETTER H WITH CIRCUMFLEX --> + <string name="more_keys_for_h">ĥ</string> + <!-- U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX --> + <string name="more_keys_for_j">ĵ</string> + <!-- U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX --> + <string name="more_keys_for_w">ŵ</string> +</resources> diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index 3d4e776a7..b3f30c638 100644 --- a/java/res/values/attrs.xml +++ b/java/res/values/attrs.xml @@ -403,10 +403,9 @@ <attr name="parentStyle" format="string" /> </declare-styleable> - <!-- TODO: Should be removed. This is no longer required if InputMethodSubtype is supported. --> <declare-styleable name="KeyboardSet"> - <!-- Locale of the keyboard layouts --> - <attr name="keyboardLocale" format="string" /> + <!-- Disable shortcut key. Shortcut key is enabled by default. --> + <attr name="disableShortcutKey" format="boolean" /> </declare-styleable> <declare-styleable name="KeyboardSet_Element"> diff --git a/java/res/values/donottranslate-more-keys.xml b/java/res/values/donottranslate-more-keys.xml index 79e12f86a..9b2780571 100644 --- a/java/res/values/donottranslate-more-keys.xml +++ b/java/res/values/donottranslate-more-keys.xml @@ -35,34 +35,28 @@ <string name="more_keys_for_l"></string> <string name="more_keys_for_g"></string> <string name="more_keys_for_v"></string> - <string name="keylabel_for_scandinavia_row1_11"></string> - <string name="keylabel_for_scandinavia_row2_10"></string> - <string name="keylabel_for_scandinavia_row2_11"></string> - <string name="more_keys_for_scandinavia_row2_10"></string> - <string name="more_keys_for_scandinavia_row2_11"></string> - <!-- U+0449: "щ" CYRILLIC SMALL LETTER SHCHA --> - <string name="keylabel_for_cyrillic_shcha">щ</string> - <!-- U+044B: "ы" CYRILLIC SMALL LETTER YERU --> - <string name="keylabel_for_cyrillic_yery">ы</string> - <!-- U+0438: "и" CYRILLIC SMALL LETTER I --> - <string name="keylabel_for_cyrillic_i">и</string> - <!-- U+0437: "з" CYRILLIC SMALL LETTER ZE --> - <string name="keylabel_for_cyrillic_ze">з</string> - <!-- U+045B: "ћ" CYRILLIC SMALL LETTER TSHE --> - <string name="keylabel_for_cyrillic_tshe">ћ</string> - <!-- U+0455: "ѕ" CYRILLIC SMALL LETTER DZE --> - <string name="keylabel_for_cyrillic_dze">ѕ</string> - <!-- U+0452: "ђ" CYRILLIC SMALL LETTER DJE --> - <string name="keylabel_for_cyrillic_dje">ђ</string> + <string name="more_keys_for_h"></string> + <string name="more_keys_for_j"></string> + <string name="more_keys_for_w"></string> + <string name="keylabel_for_nordic_row1_11"></string> + <string name="keylabel_for_nordic_row2_10"></string> + <string name="keylabel_for_nordic_row2_11"></string> + <string name="more_keys_for_nordic_row2_10"></string> + <string name="more_keys_for_nordic_row2_11"></string> + <string name="keylabel_for_east_slavic_row1_9"></string> + <string name="keylabel_for_east_slavic_row2_1"></string> + <string name="keylabel_for_east_slavic_row3_5"></string> <string name="more_keys_for_cyrillic_u"></string> <string name="more_keys_for_cyrillic_ye"></string> <string name="more_keys_for_cyrillic_en"></string> - <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN --> - <string name="more_keys_for_cyrillic_ha">ъ</string> - <string name="more_keys_for_cyrillic_yery"></string> + <string name="more_keys_for_cyrillic_ha"></string> + <string name="more_keys_for_east_slavic_row2_1"></string> <string name="more_keys_for_cyrillic_o"></string> - <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN --> - <string name="more_keys_for_cyrillic_soft_sign">ъ</string> + <string name="more_keys_for_cyrillic_soft_sign"></string> + <string name="keylabel_for_south_slavic_row1_6"></string> + <string name="keylabel_for_south_slavic_row2_11"></string> + <string name="keylabel_for_south_slavic_row3_1"></string> + <string name="keylabel_for_south_slavic_row3_8"></string> <string name="more_keys_for_cyrillic_ie"></string> <string name="more_keys_for_cyrillic_i"></string> <!-- U+00A2: "¢" CENT SIGN diff --git a/java/res/values/donottranslate.xml b/java/res/values/donottranslate.xml index 74c68464c..68a8cabce 100644 --- a/java/res/values/donottranslate.xml +++ b/java/res/values/donottranslate.xml @@ -156,18 +156,22 @@ <string-array name="subtype_locale_exception_keys"> <item>en_US</item> <item>en_GB</item> - <item>de_ZZ</item> + <item>de_QY</item> + <item>zz_QY</item> </string-array> <string-array name="subtype_locale_exception_values"> <item>English (US)</item> <item>English (UK)</item> - <item>Deutsch (QWERTY)</item> + <item>@string/subtype_generic_qwerty</item> + <item>@string/subtype_qwerty</item> </string-array> <!-- Generic subtype label --> <string name="subtype_generic">%s</string> <!-- Description for generic QWERTY keyboard subtype --> <string name="subtype_generic_qwerty">%s (QWERTY)</string> + <!-- Description for language agnostic QWERTY keyboard subtype --> + <string name="subtype_qwerty">QWERTY</string> <!-- dictionary pack package name /settings activity (for shared prefs and settings) --> <string name="dictionary_pack_package_name">com.google.android.inputmethod.latin.dictionarypack</string> diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml index e1ac387fa..4f038e1a5 100644 --- a/java/res/values/strings.xml +++ b/java/res/values/strings.xml @@ -207,75 +207,6 @@ <!-- Spoken feedback after changing to the shifted phone dialer (symbols) keyboard. --> <string name="spoken_description_mode_phone_shift">Phone symbols mode</string> - <!-- Voice related labels --> - - <!-- Title of the warning dialog that shows when a user initiates voice input for - the first time. --> - <string name="voice_warning_title">Voice input</string> - - <!-- Message that gets put at the top of the warning dialog if the user is attempting to use - voice input in a currently unsupported locale. Voice input will work for such a user, - but it will only recognize them in English. --> - <string name="voice_warning_locale_not_supported">Voice input is not currently supported for your language, but does work in English.</string> - - <!-- Message of the warning dialog that shows when a user initiates voice input for - the first time, or turns it on in settings. [CHAR LIMIT=200] --> - <string name="voice_warning_may_not_understand">Voice input uses Google\'s speech recognition. <a href="http://m.google.com/privacy">The Mobile Privacy Policy</a> applies.</string> - - <!-- An additional part of the warning dialog for voice input that only shows when the user - actually initiates voice input, rather than just turning it on in settings. [CHAR LIMIT=200] --> - <string name="voice_warning_how_to_turn_off">To turn off voice input, go to input method settings.</string> - - <!-- Message to show when user enables the voice input settings (which says - "Press the microphone button"). [CHAR LIMIT=100] --> - <string name="voice_hint_dialog_message">To use voice input, press the microphone button.</string> - - <!-- Short message to tell the user the system is ready for them to speak. --> - <string name="voice_listening">Speak now</string> - - <!-- Short message shown after the user finishes speaking. --> - <string name="voice_working">Working</string> - - <!-- Short message shown before the user should speak. --> - <string name="voice_initializing"></string> - - <!-- Short message shown when a generic error occurs. --> - <string name="voice_error">Error. Please try again.</string> - - <!-- Short message shown for a network error. --> - <string name="voice_network_error">Couldn\'t connect</string> - - <!-- Short message shown for a network error where the utterance was really long, - in which case we should suggest that the user speak less. --> - <string name="voice_too_much_speech">Error, too much speech.</string> - - <!-- Short message shown for an audio error. --> - <string name="voice_audio_error">Audio problem</string> - - <!-- Short message shown for an error with the voice server. --> - <string name="voice_server_error">Server error</string> - - <!-- Short message shown when no speech is heard. --> - <string name="voice_speech_timeout">No speech heard</string> - - <!-- Short message shown when the server couldn't parse any speech. --> - <string name="voice_no_match">No matches found</string> - - <!-- Short message shown when the user initiates voice and voice search is not installed. --> - <string name="voice_not_installed">Voice search not installed</string> - - <!-- Short hint shown in candidate view to explain voice input. --> - <string name="voice_swipe_hint"><b>Hint:</b> Swipe across keyboard to speak</string> - - <!-- Short hint shown in candidate view to explain that user can speak punctuation. --> - <string name="voice_punctuation_hint"><b>Hint:</b> Next time, try speaking punctuation like \"period\", \"comma\", or \"question mark\".</string> - - <!-- Label on button to stop recognition. Must be short to fit on button. --> - <string name="cancel">Cancel</string> - - <!-- Label on button when an error occurs --> - <string name="ok">OK</string> - <!-- Preferences item for enabling speech input --> <string name="voice_input">Voice input key</string> @@ -294,9 +225,6 @@ <!-- On settings screen, voice input pop-up menu summary text to never show voice key [CHAR LIMIT=20] --> <string name="voice_input_modes_summary_off">Voice input is disabled</string> - <!-- Title of the dialog for selecting input methods. [CHAR LIMIT=20] --> - <string name="selectInputMethod">Select input method</string> - <!-- Title for configuring input method settings [CHAR LIMIT=35] --> <string name="configure_input_method">Configure input methods</string> diff --git a/java/res/xml-ar/keyboard_set.xml b/java/res/xml-ar/keyboard_set.xml index c37d128d7..88d320144 100644 --- a/java/res/xml-ar/keyboard_set.xml +++ b/java/res/xml-ar/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="ar" > + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_arabic" diff --git a/java/res/xml-be/keyboard_set.xml b/java/res/xml-be/keyboard_set.xml index 1b865ede0..959f644ea 100644 --- a/java/res/xml-be/keyboard_set.xml +++ b/java/res/xml-be/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="be"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_east_slavic" diff --git a/java/res/xml-bg/keyboard_set.xml b/java/res/xml-bg/keyboard_set.xml index e824826b3..593ad977c 100644 --- a/java/res/xml-bg/keyboard_set.xml +++ b/java/res/xml-bg/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="bg"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_bulgarian" diff --git a/java/res/xml-cs/keyboard_set.xml b/java/res/xml-cs/keyboard_set.xml index 6dea17aa5..f9f74516f 100644 --- a/java/res/xml-cs/keyboard_set.xml +++ b/java/res/xml-cs/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="cs"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_qwertz" diff --git a/java/res/xml-da/keyboard_set.xml b/java/res/xml-da/keyboard_set.xml index cc1096f37..0db9b1f59 100644 --- a/java/res/xml-da/keyboard_set.xml +++ b/java/res/xml-da/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="da"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_nordic" diff --git a/java/res/xml-de-rZZ/keyboard_set.xml b/java/res/xml-de-rQY/keyboard_set.xml index e874bda5f..8966ddbb0 100644 --- a/java/res/xml-de-rZZ/keyboard_set.xml +++ b/java/res/xml-de-rQY/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="de"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_qwerty" diff --git a/java/res/xml-de/keyboard_set.xml b/java/res/xml-de/keyboard_set.xml index 3b648e521..f9f74516f 100644 --- a/java/res/xml-de/keyboard_set.xml +++ b/java/res/xml-de/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="de"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_qwertz" diff --git a/java/res/xml-el/keyboard_set.xml b/java/res/xml-el/keyboard_set.xml index 5809e7f74..af74e12c5 100644 --- a/java/res/xml-el/keyboard_set.xml +++ b/java/res/xml-el/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="el"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_greek" diff --git a/java/res/xml-es/keyboard_set.xml b/java/res/xml-es/keyboard_set.xml index fd968fceb..4ff5b54f2 100644 --- a/java/res/xml-es/keyboard_set.xml +++ b/java/res/xml-es/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="es,es_US"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_spanish" diff --git a/java/res/xml-et/keyboard_set.xml b/java/res/xml-et/keyboard_set.xml index ddddcc64f..0db9b1f59 100644 --- a/java/res/xml-et/keyboard_set.xml +++ b/java/res/xml-et/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="et"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_nordic" diff --git a/java/res/xml-fa/keyboard_set.xml b/java/res/xml-fa/keyboard_set.xml index 0d16f8d7e..f508f8f29 100644 --- a/java/res/xml-fa/keyboard_set.xml +++ b/java/res/xml-fa/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="fa" > + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_farsi" diff --git a/java/res/xml-fi/keyboard_set.xml b/java/res/xml-fi/keyboard_set.xml index c40e828d6..0db9b1f59 100644 --- a/java/res/xml-fi/keyboard_set.xml +++ b/java/res/xml-fi/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="fi"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_nordic" diff --git a/java/res/xml-fr-rCA/keyboard_set.xml b/java/res/xml-fr-rCA/keyboard_set.xml index 8d780f544..8966ddbb0 100644 --- a/java/res/xml-fr-rCA/keyboard_set.xml +++ b/java/res/xml-fr-rCA/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="fr_CA"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_qwerty" diff --git a/java/res/xml-fr-rCH/keyboard_set.xml b/java/res/xml-fr-rCH/keyboard_set.xml index 601d2bc64..f9f74516f 100644 --- a/java/res/xml-fr-rCH/keyboard_set.xml +++ b/java/res/xml-fr-rCH/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="fr_CH"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_qwertz" diff --git a/java/res/xml-fr/keyboard_set.xml b/java/res/xml-fr/keyboard_set.xml index 4b827ca1b..2ac25c91d 100644 --- a/java/res/xml-fr/keyboard_set.xml +++ b/java/res/xml-fr/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="fr"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_azerty" diff --git a/java/res/xml-hi/keyboard_set.xml b/java/res/xml-hi/keyboard_set.xml index cb4dece2d..c1fd0712d 100644 --- a/java/res/xml-hi/keyboard_set.xml +++ b/java/res/xml-hi/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="hi"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_hindi" diff --git a/java/res/xml-hr/keyboard_set.xml b/java/res/xml-hr/keyboard_set.xml index 511644077..f9f74516f 100644 --- a/java/res/xml-hr/keyboard_set.xml +++ b/java/res/xml-hr/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="hr"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_qwertz" diff --git a/java/res/xml-hu/keyboard_set.xml b/java/res/xml-hu/keyboard_set.xml index 2139ac746..f9f74516f 100644 --- a/java/res/xml-hu/keyboard_set.xml +++ b/java/res/xml-hu/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="hu"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_qwertz" diff --git a/java/res/xml-is/keyboard_set.xml b/java/res/xml-is/keyboard_set.xml index c2ac94489..44edbba3e 100644 --- a/java/res/xml-is/keyboard_set.xml +++ b/java/res/xml-is/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="is"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_nordic" diff --git a/java/res/xml-iw/keyboard_set.xml b/java/res/xml-iw/keyboard_set.xml index d1da41a6b..6c51fb085 100644 --- a/java/res/xml-iw/keyboard_set.xml +++ b/java/res/xml-iw/keyboard_set.xml @@ -19,18 +19,17 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="iw"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_hebrew" latin:enableProximityCharsCorrection="true" /> <Element latin:elementName="symbols" - latin:elementKeyboard="@xml/kbd_symbols" /> + latin:elementKeyboard="@xml/kbd_hebrew_symbols" /> <Element latin:elementName="symbolsShifted" - latin:elementKeyboard="@xml/kbd_symbols_shift" /> + latin:elementKeyboard="@xml/kbd_hebrew_symbols_shift" /> <Element latin:elementName="phone" latin:elementKeyboard="@xml/kbd_phone" /> diff --git a/java/res/xml-ka/keyboard_set.xml b/java/res/xml-ka/keyboard_set.xml index 2be94689f..bc3df1ed0 100644 --- a/java/res/xml-ka/keyboard_set.xml +++ b/java/res/xml-ka/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="ka"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_georgian" diff --git a/java/res/xml-ky/keyboard_set.xml b/java/res/xml-ky/keyboard_set.xml index 0226bda5f..959f644ea 100644 --- a/java/res/xml-ky/keyboard_set.xml +++ b/java/res/xml-ky/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="ky"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_east_slavic" diff --git a/java/res/xml-mk/keyboard_set.xml b/java/res/xml-mk/keyboard_set.xml index 93874892e..6b8b84434 100644 --- a/java/res/xml-mk/keyboard_set.xml +++ b/java/res/xml-mk/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="mk"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_south_slavic" diff --git a/java/res/xml-nb/keyboard_set.xml b/java/res/xml-nb/keyboard_set.xml index 1675ed293..0db9b1f59 100644 --- a/java/res/xml-nb/keyboard_set.xml +++ b/java/res/xml-nb/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="nb"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_nordic" diff --git a/java/res/xml-pl/keyboard_set.xml b/java/res/xml-pl/keyboard_set.xml index fb0d13b98..8966ddbb0 100644 --- a/java/res/xml-pl/keyboard_set.xml +++ b/java/res/xml-pl/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="pl"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_qwerty" diff --git a/java/res/xml-pt/keyboard_set.xml b/java/res/xml-pt/keyboard_set.xml index f8140aac1..8966ddbb0 100644 --- a/java/res/xml-pt/keyboard_set.xml +++ b/java/res/xml-pt/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="pt"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_qwerty" diff --git a/java/res/xml-ro/keyboard_set.xml b/java/res/xml-ro/keyboard_set.xml index 73030fdc1..8966ddbb0 100644 --- a/java/res/xml-ro/keyboard_set.xml +++ b/java/res/xml-ro/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="ro"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_qwerty" diff --git a/java/res/xml-ru/keyboard_set.xml b/java/res/xml-ru/keyboard_set.xml index 393d58ef1..959f644ea 100644 --- a/java/res/xml-ru/keyboard_set.xml +++ b/java/res/xml-ru/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="ru"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_east_slavic" diff --git a/java/res/xml-sk/keyboard_set.xml b/java/res/xml-sk/keyboard_set.xml index db27b6107..8966ddbb0 100644 --- a/java/res/xml-sk/keyboard_set.xml +++ b/java/res/xml-sk/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="sk"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_qwerty" diff --git a/java/res/xml-sl/keyboard_set.xml b/java/res/xml-sl/keyboard_set.xml index 31f4714a9..8966ddbb0 100644 --- a/java/res/xml-sl/keyboard_set.xml +++ b/java/res/xml-sl/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="sl"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_qwerty" diff --git a/java/res/xml-sr/keyboard_set.xml b/java/res/xml-sr/keyboard_set.xml index f59f3a99d..5098134a7 100644 --- a/java/res/xml-sr/keyboard_set.xml +++ b/java/res/xml-sr/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="sr"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_south_slavic" diff --git a/java/res/xml-sv/keyboard_set.xml b/java/res/xml-sv/keyboard_set.xml index 2b106e0dc..0db9b1f59 100644 --- a/java/res/xml-sv/keyboard_set.xml +++ b/java/res/xml-sv/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="sv"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_nordic" diff --git a/java/res/drawable/background_voice.xml b/java/res/xml-sw600dp/kbd_hebrew_symbols.xml index 49a419110..66254dea0 100644 --- a/java/res/drawable/background_voice.xml +++ b/java/res/xml-sw600dp/kbd_hebrew_symbols.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2011, The Android Open Source Project +** Copyright 2012, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -17,9 +17,10 @@ ** limitations under the License. */ --> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <gradient - android:startColor="#ff000000" - android:endColor="#ff000e29" - android:angle="90" /> -</shape> + +<Keyboard + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/rows_10_10_7_symbols" /> +</Keyboard> diff --git a/java/res/xml-sw600dp/kbd_hebrew_symbols_shift.xml b/java/res/xml-sw600dp/kbd_hebrew_symbols_shift.xml new file mode 100644 index 000000000..3c5ed5e09 --- /dev/null +++ b/java/res/xml-sw600dp/kbd_hebrew_symbols_shift.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<Keyboard + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/rows_10_10_7_symbols_shift" /> +</Keyboard> diff --git a/java/res/xml-sw600dp/key_shortcut.xml b/java/res/xml-sw600dp/key_shortcut.xml index 8869ab930..d4c45ad22 100644 --- a/java/res/xml-sw600dp/key_shortcut.xml +++ b/java/res/xml-sw600dp/key_shortcut.xml @@ -28,7 +28,7 @@ > <Key latin:keyStyle="shortcutKeyStyle" - latin:keyLabelFlags="hasPopupHint" + latin:keyLabelFlags="hasPopupHint|preserveCase" latin:moreKeys="@string/settings_as_more_key" latin:keyWidth="fillBoth" /> </case> diff --git a/java/res/xml-sw600dp/rows_hindi.xml b/java/res/xml-sw600dp/rows_hindi.xml index 6bec7f0b5..6c98e080e 100644 --- a/java/res/xml-sw600dp/rows_hindi.xml +++ b/java/res/xml-sw600dp/rows_hindi.xml @@ -44,7 +44,7 @@ latin:keyWidth="fillBoth" /> </Row> <Row - latin:keyWidth="6.923%p" + latin:keyWidth="7.5%p" > <Key latin:keyStyle="shiftKeyStyle" diff --git a/java/res/xml-sw768dp/rows_10_10_7_symbols.xml b/java/res/xml-sw768dp/rows_10_10_7_symbols.xml index 9901decec..1d61d999b 100644 --- a/java/res/xml-sw768dp/rows_10_10_7_symbols.xml +++ b/java/res/xml-sw768dp/rows_10_10_7_symbols.xml @@ -36,7 +36,6 @@ latin:keyboardLayout="@xml/rowkeys_symbols1" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyXPos="-9.219%p" latin:keyWidth="fillRight" /> </Row> <Row @@ -50,7 +49,6 @@ latin:keyboardLayout="@xml/rowkeys_symbols2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyXPos="-15.704%p" latin:keyWidth="fillBoth" /> </Row> <Row diff --git a/java/res/xml-sw768dp/rows_10_10_7_symbols_shift.xml b/java/res/xml-sw768dp/rows_10_10_7_symbols_shift.xml index b6aa20246..d22f8331d 100644 --- a/java/res/xml-sw768dp/rows_10_10_7_symbols_shift.xml +++ b/java/res/xml-sw768dp/rows_10_10_7_symbols_shift.xml @@ -36,7 +36,6 @@ latin:keyboardLayout="@xml/rowkeys_symbols_shift1" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyXPos="-9.219%p" latin:keyWidth="fillBoth" /> </Row> <Row @@ -50,7 +49,6 @@ latin:keyboardLayout="@xml/rowkeys_symbols_shift2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyXPos="-15.704%p" latin:keyWidth="fillBoth" /> </Row> <Row diff --git a/java/res/xml-sw768dp/rows_arabic.xml b/java/res/xml-sw768dp/rows_arabic.xml index d5f287e2f..eaa64e5af 100644 --- a/java/res/xml-sw768dp/rows_arabic.xml +++ b/java/res/xml-sw768dp/rows_arabic.xml @@ -29,12 +29,11 @@ <Key latin:keyStyle="tabKeyStyle" latin:keyLabelFlags="alignLeft" - latin:keyWidth="7.500%p" /> + latin:keyWidth="7.969%p" /> <include latin:keyboardLayout="@xml/rowkeys_arabic1" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyXPos="-11.500%p" latin:keyWidth="fillBoth" /> </Row> <Row @@ -43,12 +42,11 @@ <Key latin:keyStyle="toSymbolKeyStyle" latin:keyLabelFlags="alignLeft" - latin:keyWidth="9.375%p" /> + latin:keyWidth="11.172%p" /> <include latin:keyboardLayout="@xml/rowkeys_arabic2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyXPos="-9.375%p" latin:keyWidth="fillBoth" /> </Row> <Row @@ -56,7 +54,7 @@ > <include latin:keyboardLayout="@xml/rowkeys_arabic3" - latin:keyXPos="12.750%p" /> + latin:keyXPos="13.829%p" /> </Row> <include latin:keyboardLayout="@xml/row_qwerty4" /> diff --git a/java/res/xml-sw768dp/rows_azerty.xml b/java/res/xml-sw768dp/rows_azerty.xml index 3637ce7d4..1fc1a0630 100644 --- a/java/res/xml-sw768dp/rows_azerty.xml +++ b/java/res/xml-sw768dp/rows_azerty.xml @@ -35,7 +35,6 @@ latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyXPos="-9.219%p" latin:keyWidth="fillBoth" /> </Row> <Row @@ -49,7 +48,6 @@ latin:keyboardLayout="@xml/rowkeys_azerty2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyXPos="-15.704%p" latin:keyWidth="fillBoth" /> </Row> <Row @@ -64,7 +62,6 @@ latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyXPos="-13.750%p" latin:keyWidth="fillBoth" /> </Row> <include diff --git a/java/res/xml-sw768dp/rows_bulgarian.xml b/java/res/xml-sw768dp/rows_bulgarian.xml index 5f59f7087..cb05fd5aa 100644 --- a/java/res/xml-sw768dp/rows_bulgarian.xml +++ b/java/res/xml-sw768dp/rows_bulgarian.xml @@ -24,11 +24,12 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="7.333%p" + latin:keyWidth="7.186%p" > <Key latin:keyStyle="tabKeyStyle" - latin:keyLabelFlags="alignLeft" /> + latin:keyLabelFlags="alignLeft" + latin:keyWidth="7.969%p" /> <include latin:keyboardLayout="@xml/rowkeys_bulgarian1" latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> @@ -37,12 +38,12 @@ latin:keyWidth="fillBoth" /> </Row> <Row - latin:keyWidth="7.194%p" + latin:keyWidth="7.186%p" > <Key latin:keyStyle="toSymbolKeyStyle" latin:keyLabelFlags="alignLeft" - latin:keyWidth="9.375%p" /> + latin:keyWidth="11.172%p" /> <include latin:keyboardLayout="@xml/rowkeys_bulgarian2" /> <Key @@ -54,7 +55,7 @@ > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="14.375%p" /> + latin:keyWidth="13.829%p" /> <include latin:keyboardLayout="@xml/rowkeys_bulgarian3" /> <include diff --git a/java/res/xml-sw768dp/rows_east_slavic.xml b/java/res/xml-sw768dp/rows_east_slavic.xml index ba57b75c4..480881bb6 100644 --- a/java/res/xml-sw768dp/rows_east_slavic.xml +++ b/java/res/xml-sw768dp/rows_east_slavic.xml @@ -24,11 +24,12 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="7.125%p" + latin:keyWidth="7.000%p" > <Key latin:keyStyle="tabKeyStyle" - latin:keyLabelFlags="alignLeft" /> + latin:keyLabelFlags="alignLeft" + latin:keyWidth="7.969%p" /> <include latin:keyboardLayout="@xml/rowkeys_east_slavic1" latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> @@ -40,25 +41,24 @@ latin:keyWidth="fillBoth" /> </Row> <Row - latin:keyWidth="7.125%p" + latin:keyWidth="7.000%p" > <Key latin:keyStyle="toSymbolKeyStyle" latin:keyLabelFlags="alignLeft" - latin:keyWidth="9.375%p" /> + latin:keyWidth="11.172%p" /> <include latin:keyboardLayout="@xml/rowkeys_east_slavic2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyXPos="-9.375%p" latin:keyWidth="fillBoth" /> </Row> <Row - latin:keyWidth="7.125%p" + latin:keyWidth="7.000%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="12.750%p" /> + latin:keyWidth="13.829%p" /> <include latin:keyboardLayout="@xml/rowkeys_east_slavic3" /> <include diff --git a/java/res/xml-sw768dp/rows_farsi.xml b/java/res/xml-sw768dp/rows_farsi.xml index b969ff21c..28ea6fff5 100644 --- a/java/res/xml-sw768dp/rows_farsi.xml +++ b/java/res/xml-sw768dp/rows_farsi.xml @@ -24,11 +24,12 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="7.125%p" + latin:keyWidth="7.000%p" > <Key latin:keyStyle="tabKeyStyle" - latin:keyLabelFlags="alignLeft" /> + latin:keyLabelFlags="alignLeft" + latin:keyWidth="7.969%p" /> <include latin:keyboardLayout="@xml/rowkeys_farsi1" /> <Key @@ -46,7 +47,6 @@ latin:keyboardLayout="@xml/rowkeys_farsi2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyXPos="-9.375%p" latin:keyWidth="fillBoth" /> </Row> <Row diff --git a/java/res/xml-sw768dp/rows_georgian.xml b/java/res/xml-sw768dp/rows_georgian.xml index 0471e8f1c..3805b5d88 100644 --- a/java/res/xml-sw768dp/rows_georgian.xml +++ b/java/res/xml-sw768dp/rows_georgian.xml @@ -35,7 +35,6 @@ latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyXPos="-9.219%p" latin:keyWidth="fillBoth"/> </Row> <Row @@ -49,7 +48,6 @@ latin:keyboardLayout="@xml/rowkeys_georgian2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyXPos="-15.704%p" latin:keyWidth="fillBoth" /> </Row> <Row diff --git a/java/res/xml-sw768dp/rows_greek.xml b/java/res/xml-sw768dp/rows_greek.xml index 983abe14c..c0b38dc15 100644 --- a/java/res/xml-sw768dp/rows_greek.xml +++ b/java/res/xml-sw768dp/rows_greek.xml @@ -47,7 +47,6 @@ latin:keyboardLayout="@xml/rowkeys_greek2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyXPos="-15.704%p" latin:keyWidth="fillBoth" /> </Row> <Row @@ -62,7 +61,6 @@ latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyXPos="-13.750%p" latin:keyWidth="fillBoth" /> </Row> <include diff --git a/java/res/xml-sw768dp/rows_hebrew.xml b/java/res/xml-sw768dp/rows_hebrew.xml index 891872ccc..476071a5e 100644 --- a/java/res/xml-sw768dp/rows_hebrew.xml +++ b/java/res/xml-sw768dp/rows_hebrew.xml @@ -36,7 +36,6 @@ latin:keyboardLayout="@xml/rowkeys_hebrew1" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyXPos="-12.000%p" latin:keyWidth="fillBoth" /> </Row> <Row @@ -45,20 +44,19 @@ <Key latin:keyStyle="toSymbolKeyStyle" latin:keyLabelFlags="alignLeft" - latin:keyWidth="11.172%p" /> + latin:keyWidth="10.167%p" /> <include latin:keyboardLayout="@xml/rowkeys_hebrew2" /> - </Row> + <Key + latin:keyStyle="enterKeyStyle" + latin:keyWidth="fillBoth" /> + </Row> <Row latin:keyWidth="8.047%p" > <include latin:keyboardLayout="@xml/rowkeys_hebrew3" latin:keyXPos="13.829%p" /> - <Key - latin:keyStyle="enterKeyStyle" - latin:keyXPos="-10.400%p" - latin:keyWidth="fillBoth" /> </Row> <include latin:keyboardLayout="@xml/row_qwerty4" /> diff --git a/java/res/xml-sw768dp/rows_hindi.xml b/java/res/xml-sw768dp/rows_hindi.xml index bb1884227..86e925fb1 100644 --- a/java/res/xml-sw768dp/rows_hindi.xml +++ b/java/res/xml-sw768dp/rows_hindi.xml @@ -28,7 +28,8 @@ > <Key latin:keyStyle="tabKeyStyle" - latin:keyLabelFlags="alignLeft" /> + latin:keyLabelFlags="alignLeft" + latin:keyWidth="7.969%p" /> <include latin:keyboardLayout="@xml/rowkeys_hindi1" latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> @@ -37,12 +38,12 @@ latin:keyWidth="fillBoth" /> </Row> <Row - latin:keyWidth="7.194%p" + latin:keyWidth="7.186%p" > <Key latin:keyStyle="toSymbolKeyStyle" latin:keyLabelFlags="alignLeft" - latin:keyWidth="9.375%p" /> + latin:keyWidth="11.172%p" /> <include latin:keyboardLayout="@xml/rowkeys_hindi2" /> <Key @@ -50,15 +51,18 @@ latin:keyWidth="fillBoth" /> </Row> <Row - latin:keyWidth="7.135%p" + latin:keyWidth="7.040%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="14.375%p" /> + latin:keyWidth="13.829%p" /> <include latin:keyboardLayout="@xml/rowkeys_hindi3" /> <include latin:keyboardLayout="@xml/keys_comma_period" /> + <Key + latin:keyStyle="shiftKeyStyle" + latin:keyWidth="fillBoth" /> </Row> <include latin:keyboardLayout="@xml/row_qwerty4" /> diff --git a/java/res/xml-sw768dp/rows_nordic.xml b/java/res/xml-sw768dp/rows_nordic.xml index 348972469..fbee1c3f0 100644 --- a/java/res/xml-sw768dp/rows_nordic.xml +++ b/java/res/xml-sw768dp/rows_nordic.xml @@ -29,42 +29,40 @@ <Key latin:keyStyle="tabKeyStyle" latin:keyLabelFlags="alignLeft" - latin:keyWidth="7.500%p" /> + latin:keyWidth="7.969%p" /> <include latin:keyboardLayout="@xml/rowkeys_nordic1" latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyXPos="-11.500%p" latin:keyWidth="fillBoth" /> </Row> <Row - latin:keyWidth="7.375%p" + latin:keyWidth="7.227%p" > <Key latin:keyStyle="toSymbolKeyStyle" latin:keyLabelFlags="alignLeft" - latin:keyWidth="9.375%p" /> + latin:keyWidth="11.172%p" /> <include latin:keyboardLayout="@xml/rowkeys_nordic2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyXPos="-9.375%p" latin:keyWidth="fillBoth" /> </Row> <Row - latin:keyWidth="7.375%p" + latin:keyWidth="7.227%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="12.750%p" /> + latin:keyWidth="13.829%p" /> <include latin:keyboardLayout="@xml/rowkeys_qwerty3" /> <include latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyXPos="-12.750%p" + latin:keyXPos="-13.750%p" latin:keyWidth="fillRight" /> </Row> <include diff --git a/java/res/xml-sw768dp/rows_qwerty.xml b/java/res/xml-sw768dp/rows_qwerty.xml index 8f0b762c5..edfb4011d 100644 --- a/java/res/xml-sw768dp/rows_qwerty.xml +++ b/java/res/xml-sw768dp/rows_qwerty.xml @@ -35,7 +35,6 @@ latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyXPos="-9.219%p" latin:keyWidth="fillBoth"/> </Row> <Row @@ -49,7 +48,6 @@ latin:keyboardLayout="@xml/rowkeys_qwerty2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyXPos="-15.704%p" latin:keyWidth="fillBoth" /> </Row> <Row diff --git a/java/res/xml-sw768dp/rows_qwertz.xml b/java/res/xml-sw768dp/rows_qwertz.xml index e3d1c61f0..7e755067d 100644 --- a/java/res/xml-sw768dp/rows_qwertz.xml +++ b/java/res/xml-sw768dp/rows_qwertz.xml @@ -35,7 +35,6 @@ latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyXPos="-9.219%p" latin:keyWidth="fillBoth"/> </Row> <Row @@ -49,7 +48,6 @@ latin:keyboardLayout="@xml/rowkeys_qwerty2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyXPos="-15.704%p" latin:keyWidth="fillBoth" /> </Row> <Row diff --git a/java/res/xml-sw768dp/rows_south_slavic.xml b/java/res/xml-sw768dp/rows_south_slavic.xml index 0de8ff84c..7ea0ff465 100644 --- a/java/res/xml-sw768dp/rows_south_slavic.xml +++ b/java/res/xml-sw768dp/rows_south_slavic.xml @@ -24,21 +24,21 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="7.125%p" + latin:keyWidth="7.000%p" > <Key latin:keyStyle="tabKeyStyle" - latin:keyLabelFlags="alignLeft" /> + latin:keyLabelFlags="alignLeft" + latin:keyWidth="7.969%p" /> <include latin:keyboardLayout="@xml/rowkeys_south_slavic1" latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyXPos="-9.219%p" latin:keyWidth="fillBoth" /> </Row> <Row - latin:keyWidth="7.250%p" + latin:keyWidth="7.000%p" > <Key latin:keyStyle="toSymbolKeyStyle" @@ -48,11 +48,10 @@ latin:keyboardLayout="@xml/rowkeys_south_slavic2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyXPos="-15.704%p" latin:keyWidth="fillBoth" /> </Row> <Row - latin:keyWidth="7.250%p" + latin:keyWidth="7.000%p" > <Key latin:keyStyle="shiftKeyStyle" @@ -61,6 +60,9 @@ latin:keyboardLayout="@xml/rowkeys_south_slavic3" /> <include latin:keyboardLayout="@xml/keys_comma_period" /> + <Key + latin:keyStyle="shiftKeyStyle" + latin:keyWidth="fillBoth" /> </Row> <include latin:keyboardLayout="@xml/row_qwerty4" /> diff --git a/java/res/xml-sw768dp/rows_spanish.xml b/java/res/xml-sw768dp/rows_spanish.xml index e4690f396..fc3388d53 100644 --- a/java/res/xml-sw768dp/rows_spanish.xml +++ b/java/res/xml-sw768dp/rows_spanish.xml @@ -35,7 +35,6 @@ latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyXPos="-9.219%p" latin:keyWidth="fillBoth"/> </Row> <Row @@ -49,7 +48,6 @@ latin:keyboardLayout="@xml/rowkeys_spanish2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyXPos="-15.704%p" latin:keyWidth="fillBoth" /> </Row> <Row diff --git a/java/res/xml-sw768dp/rows_symbols.xml b/java/res/xml-sw768dp/rows_symbols.xml index 3902aef8e..ed2df18d7 100644 --- a/java/res/xml-sw768dp/rows_symbols.xml +++ b/java/res/xml-sw768dp/rows_symbols.xml @@ -36,7 +36,6 @@ latin:keyboardLayout="@xml/rowkeys_symbols1" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyXPos="-9.219%p" latin:keyWidth="fillRight" /> </Row> <Row @@ -50,7 +49,6 @@ latin:keyboardLayout="@xml/rowkeys_symbols2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyXPos="-15.704%p" latin:keyWidth="fillBoth" /> </Row> <Row diff --git a/java/res/xml-sw768dp/rows_symbols_shift.xml b/java/res/xml-sw768dp/rows_symbols_shift.xml index 7cfff3741..30e1df0bf 100644 --- a/java/res/xml-sw768dp/rows_symbols_shift.xml +++ b/java/res/xml-sw768dp/rows_symbols_shift.xml @@ -36,7 +36,6 @@ latin:keyboardLayout="@xml/rowkeys_symbols_shift1" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyXPos="-9.219%p" latin:keyWidth="fillBoth" /> </Row> <Row @@ -50,7 +49,6 @@ latin:keyboardLayout="@xml/rowkeys_symbols_shift2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyXPos="-15.704%p" latin:keyWidth="fillBoth" /> </Row> <Row diff --git a/java/res/xml-sw768dp/rows_thai_symbols.xml b/java/res/xml-sw768dp/rows_thai_symbols.xml index 4a251b770..20f22bc5b 100644 --- a/java/res/xml-sw768dp/rows_thai_symbols.xml +++ b/java/res/xml-sw768dp/rows_thai_symbols.xml @@ -33,7 +33,6 @@ latin:keyXPos="7.969%p" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyXPos="-9.219%p" latin:keyWidth="fillRight" /> </Row> <Row @@ -57,7 +56,6 @@ latin:keyboardLayout="@xml/rowkeys_symbols2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyXPos="-15.704%p" latin:keyWidth="fillBoth" /> </Row> <Row diff --git a/java/res/xml-sw768dp/rows_thai_symbols_shift.xml b/java/res/xml-sw768dp/rows_thai_symbols_shift.xml index 21002c6c8..467dd19ad 100644 --- a/java/res/xml-sw768dp/rows_thai_symbols_shift.xml +++ b/java/res/xml-sw768dp/rows_thai_symbols_shift.xml @@ -33,7 +33,6 @@ latin:keyXPos="7.969%p" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyXPos="-9.219%p" latin:keyWidth="fillBoth" /> </Row> <Row @@ -57,7 +56,6 @@ latin:keyboardLayout="@xml/rowkeys_symbols_shift2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyXPos="-15.704%p" latin:keyWidth="fillBoth" /> </Row> <Row diff --git a/java/res/xml-th/keyboard_set.xml b/java/res/xml-th/keyboard_set.xml index 7362d8724..99e81b85e 100644 --- a/java/res/xml-th/keyboard_set.xml +++ b/java/res/xml-th/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="th"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_thai" diff --git a/java/res/xml-tr/keyboard_set.xml b/java/res/xml-tr/keyboard_set.xml index 01822a933..8966ddbb0 100644 --- a/java/res/xml-tr/keyboard_set.xml +++ b/java/res/xml-tr/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="tr"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_qwerty" diff --git a/java/res/xml-uk/keyboard_set.xml b/java/res/xml-uk/keyboard_set.xml index d782c9823..959f644ea 100644 --- a/java/res/xml-uk/keyboard_set.xml +++ b/java/res/xml-uk/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="uk"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_east_slavic" diff --git a/java/res/xml-vi/keyboard_set.xml b/java/res/xml-vi/keyboard_set.xml index e5f744f7a..8966ddbb0 100644 --- a/java/res/xml-vi/keyboard_set.xml +++ b/java/res/xml-vi/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="vi"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_qwerty" diff --git a/java/res/xml-zz-rQY/keyboard_set.xml b/java/res/xml-zz-rQY/keyboard_set.xml new file mode 100644 index 000000000..6fa97017c --- /dev/null +++ b/java/res/xml-zz-rQY/keyboard_set.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<KeyboardSet + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:disableShortcutKey="true" > + <Element + latin:elementName="alphabet" + latin:elementKeyboard="@xml/kbd_qwerty" + latin:enableProximityCharsCorrection="true" /> + <Element + latin:elementName="symbols" + latin:elementKeyboard="@xml/kbd_symbols" /> + <Element + latin:elementName="symbolsShifted" + latin:elementKeyboard="@xml/kbd_symbols_shift" /> + <Element + latin:elementName="phone" + latin:elementKeyboard="@xml/kbd_phone" /> + <Element + latin:elementName="phoneSymbols" + latin:elementKeyboard="@xml/kbd_phone_symbols" /> + <Element + latin:elementName="number" + latin:elementKeyboard="@xml/kbd_number" /> +</KeyboardSet> diff --git a/java/res/xml/kbd_hebrew_symbols.xml b/java/res/xml/kbd_hebrew_symbols.xml new file mode 100644 index 000000000..7e075df48 --- /dev/null +++ b/java/res/xml/kbd_hebrew_symbols.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<Keyboard + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/rows_symbols" /> +</Keyboard> diff --git a/java/res/xml/kbd_hebrew_symbols_shift.xml b/java/res/xml/kbd_hebrew_symbols_shift.xml new file mode 100644 index 000000000..25db3c84d --- /dev/null +++ b/java/res/xml/kbd_hebrew_symbols_shift.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<Keyboard + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/rows_symbols_shift" /> +</Keyboard> diff --git a/java/res/xml/key_styles_common.xml b/java/res/xml/key_styles_common.xml index 66d8d4d9d..d5a9a2629 100644 --- a/java/res/xml/key_styles_common.xml +++ b/java/res/xml/key_styles_common.xml @@ -34,7 +34,7 @@ <default> <key-style latin:styleName="f1MoreKeysStyle" - latin:keyLabelFlags="hasPopupHint" + latin:keyLabelFlags="hasPopupHint|preserveCase" latin:moreKeys="@string/settings_as_more_key" latin:backgroundType="functional" /> </default> diff --git a/java/res/xml/keyboard_set.xml b/java/res/xml/keyboard_set.xml index 83f9ea01c..8966ddbb0 100644 --- a/java/res/xml/keyboard_set.xml +++ b/java/res/xml/keyboard_set.xml @@ -19,8 +19,7 @@ --> <KeyboardSet - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardLocale="en_GB,en_US"> + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> <Element latin:elementName="alphabet" latin:elementKeyboard="@xml/kbd_qwerty" diff --git a/java/res/xml/language_prefs.xml b/java/res/xml/language_prefs.xml deleted file mode 100644 index b7a4c07db..000000000 --- a/java/res/xml/language_prefs.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2009 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. ---> - -<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" - android:title="@string/language_selection_title"> -</PreferenceScreen> diff --git a/java/res/xml/method.xml b/java/res/xml/method.xml index d6ded6689..7a21a856b 100644 --- a/java/res/xml/method.xml +++ b/java/res/xml/method.xml @@ -27,7 +27,7 @@ cs: Czech/qwertz da: Danish/nordic de: German/qwertz - de_ZZ: German (QWERTY)/qwerty + de_QY: German (QWERTY)/qwerty el: Greek/greek en_US: English United States/qwerty en_GB: English Great Britain/qwerty @@ -63,6 +63,7 @@ tr: Turkish/qwerty uk: Ukrainian/east_slavic vi: Vietnamese/qwerty + zz_QY: QWERTY/qwerty --> <!-- TODO: use <lang>_keyboard icon instead of a common keyboard icon. --> <!-- If IME doesn't have an applicable subtype, the first subtype will be used as a default @@ -74,7 +75,7 @@ android:label="@string/subtype_en_US" android:imeSubtypeLocale="en_US" android:imeSubtypeMode="keyboard" - android:imeSubtypeExtraValue="TrySuppressingImeSwitcher,AsciiCapable,EnabledWhenDefaultIsNotAsciiCapable" + android:imeSubtypeExtraValue="TrySuppressingImeSwitcher,AsciiCapable" /> <subtype android:icon="@drawable/ic_subtype_keyboard" android:label="@string/subtype_en_GB" @@ -119,7 +120,7 @@ android:label="@string/subtype_generic_qwerty" android:imeSubtypeLocale="de" android:imeSubtypeMode="keyboard" - android:imeSubtypeExtraValue="AsciiCapable,KeyboardLocale=de_ZZ" + android:imeSubtypeExtraValue="AsciiCapable,KeyboardLocale=de_QY" /> <subtype android:icon="@drawable/ic_subtype_keyboard" android:label="@string/subtype_generic" @@ -310,4 +311,10 @@ android:imeSubtypeMode="keyboard" android:imeSubtypeExtraValue="AsciiCapable" /> + <subtype android:icon="@drawable/ic_subtype_keyboard" + android:label="@string/subtype_qwerty" + android:imeSubtypeLocale="zz_QY" + android:imeSubtypeMode="keyboard" + android:imeSubtypeExtraValue="AsciiCapable,EnabledWhenDefaultIsNotAsciiCapable" + /> </input-method> diff --git a/java/res/xml/rowkeys_azerty2.xml b/java/res/xml/rowkeys_azerty2.xml index 11bcd67c7..ff0b06240 100644 --- a/java/res/xml/rowkeys_azerty2.xml +++ b/java/res/xml/rowkeys_azerty2.xml @@ -35,9 +35,11 @@ latin:keyLabel="g" latin:moreKeys="@string/more_keys_for_g" /> <Key - latin:keyLabel="h" /> + latin:keyLabel="h" + latin:moreKeys="@string/more_keys_for_h" /> <Key - latin:keyLabel="j" /> + latin:keyLabel="j" + latin:moreKeys="@string/more_keys_for_j" /> <Key latin:keyLabel="k" latin:moreKeys="@string/more_keys_for_k" /> diff --git a/java/res/xml/rowkeys_azerty3.xml b/java/res/xml/rowkeys_azerty3.xml index 1a0eaccdc..b81c3c5a1 100644 --- a/java/res/xml/rowkeys_azerty3.xml +++ b/java/res/xml/rowkeys_azerty3.xml @@ -22,7 +22,8 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="w" /> + latin:keyLabel="w" + latin:moreKeys="@string/more_keys_for_w" /> <Key latin:keyLabel="x" /> <Key diff --git a/java/res/xml/rowkeys_east_slavic1.xml b/java/res/xml/rowkeys_east_slavic1.xml index ab83d99ce..04c6ef6ab 100644 --- a/java/res/xml/rowkeys_east_slavic1.xml +++ b/java/res/xml/rowkeys_east_slavic1.xml @@ -65,7 +65,7 @@ latin:keyHintLabel="8" latin:additionalMoreKeys="8" /> <Key - latin:keyLabel="@string/keylabel_for_cyrillic_shcha" + latin:keyLabel="@string/keylabel_for_east_slavic_row1_9" latin:keyHintLabel="9" latin:additionalMoreKeys="9" /> <!-- U+0437: "з" CYRILLIC SMALL LETTER ZE --> diff --git a/java/res/xml/rowkeys_east_slavic2.xml b/java/res/xml/rowkeys_east_slavic2.xml index 20415bc80..57b037367 100644 --- a/java/res/xml/rowkeys_east_slavic2.xml +++ b/java/res/xml/rowkeys_east_slavic2.xml @@ -25,8 +25,8 @@ <Key latin:keyLabel="ф" /> <Key - latin:keyLabel="@string/keylabel_for_cyrillic_yery" - latin:moreKeys="@string/more_keys_for_cyrillic_yery" /> + latin:keyLabel="@string/keylabel_for_east_slavic_row2_1" + latin:moreKeys="@string/more_keys_for_east_slavic_row2_1" /> <!-- U+0432: "в" CYRILLIC SMALL LETTER VE --> <Key latin:keyLabel="в" /> diff --git a/java/res/xml/rowkeys_east_slavic3.xml b/java/res/xml/rowkeys_east_slavic3.xml index bb6722356..b0f7aed7b 100644 --- a/java/res/xml/rowkeys_east_slavic3.xml +++ b/java/res/xml/rowkeys_east_slavic3.xml @@ -34,7 +34,7 @@ <Key latin:keyLabel="м" /> <Key - latin:keyLabel="@string/keylabel_for_cyrillic_i" /> + latin:keyLabel="@string/keylabel_for_east_slavic_row3_5" /> <!-- U+0442: "т" CYRILLIC SMALL LETTER TE --> <Key latin:keyLabel="т" /> diff --git a/java/res/xml/rowkeys_hindi1.xml b/java/res/xml/rowkeys_hindi1.xml index fe54d9ea9..eb99de96d 100644 --- a/java/res/xml/rowkeys_hindi1.xml +++ b/java/res/xml/rowkeys_hindi1.xml @@ -26,80 +26,50 @@ latin:keyboardSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" > <!-- U+0914: "औ" DEVANAGARI LETTER AU - U+0912/U+0902: "ऒं" DEVANAGARI LETTER SHORT O//DEVANAGARI SIGN ANUSVARA - U+0967: "१" DEVANAGARI DIGIT ONE --> + U+0912/U+0902: "ऒं" DEVANAGARI LETTER SHORT O//DEVANAGARI SIGN ANUSVARA --> <Key latin:keyLabel="औ" - latin:moreKeys="ऒं,%" - latin:keyHintLabel="1" - latin:additionalMoreKeys="१,1" /> + latin:moreKeys="ऒं" /> <!-- U+0910: "ऐ" DEVANAGARI LETTER AI - U+0910/U+0902: "ऐं" DEVANAGARI LETTER AI/DEVANAGARI SIGN ANUSVARA - U+0968: "२" DEVANAGARI DIGIT TWO --> + U+0910/U+0902: "ऐं" DEVANAGARI LETTER AI/DEVANAGARI SIGN ANUSVARA --> <Key latin:keyLabel="ऐ" - latin:moreKeys="ऐं,%" - latin:keyHintLabel="2" - latin:additionalMoreKeys="२,2" /> + latin:moreKeys="ऐं" /> <!-- U+0906: "आ" DEVANAGARI LETTER AA U+0906/U+0902: "आं" DEVANAGARI LETTER AA/DEVANAGARI SIGN ANUSVARA - U+0906/U+0901: "आँ" DEVANAGARI LETTER AA/DEVANAGARI SIGN CANDRABINDU - U+0969: "३" DEVANAGARI DIGIT THREE --> + U+0906/U+0901: "आँ" DEVANAGARI LETTER AA/DEVANAGARI SIGN CANDRABINDU --> <Key latin:keyLabel="आ" - latin:moreKeys="आं,आँ,%" - latin:keyHintLabel="3" - latin:additionalMoreKeys="३,3" /> + latin:moreKeys="आं,आँ" /> <!-- U+0908: "ई" DEVANAGARI LETTER II - U+0908/U+0902: "ईं" DEVANAGARI LETTER II/DEVANAGARI SIGN ANUSVARA - U+096A: "४" DEVANAGARI DIGIT FOUR --> + U+0908/U+0902: "ईं" DEVANAGARI LETTER II/DEVANAGARI SIGN ANUSVARA --> <Key latin:keyLabel="ई" - latin:moreKeys="ईं,%" - latin:keyHintLabel="4" - latin:additionalMoreKeys="४,4" /> + latin:moreKeys="ईं" /> <!-- U+090A: "ऊ" DEVANAGARI LETTER UU U+090A/U+0902: "ऊं" DEVANAGARI LETTER UU/DEVANAGARI SIGN ANUSVARA - U+090A/U+0901: "ऊँ" DEVANAGARI LETTER UU/DEVANAGARI SIGN CANDRABINDU - U+096B: "५" DEVANAGARI DIGIT FIVE --> + U+090A/U+0901: "ऊँ" DEVANAGARI LETTER UU/DEVANAGARI SIGN CANDRABINDU --> <Key latin:keyLabel="ऊ" - latin:moreKeys="ऊं,ऊँ,%" - latin:keyHintLabel="5" - latin:additionalMoreKeys="५,5" /> - <!-- U+092D: "भ" DEVANAGARI LETTER BHA - U+096C: "६" DEVANAGARI DIGIT SIX --> + latin:moreKeys="ऊं,ऊँ" /> + <!-- U+092D: "भ" DEVANAGARI LETTER BHA --> <Key - latin:keyLabel="भ" - latin:keyHintLabel="6" - latin:additionalMoreKeys="६,6" /> - <!-- U+0903: "ः" DEVANAGARI SIGN VISARGA - U+096D: "७" DEVANAGARI DIGIT SEVEN --> + latin:keyLabel="भ" /> + <!-- U+0903: "ः" DEVANAGARI SIGN VISARGA --> <Key - latin:keyLabel="ः" - latin:keyHintLabel="7" - latin:additionalMoreKeys="७,7" /> - <!-- U+0918: "घ" DEVANAGARI LETTER GHA - U+096E: "८" DEVANAGARI DIGIT EIGHT --> + latin:keyLabel="ः" /> + <!-- U+0918: "घ" DEVANAGARI LETTER GHA --> <Key - latin:keyLabel="घ" - latin:keyHintLabel="8" - latin:additionalMoreKeys="८,8" /> + latin:keyLabel="घ" /> <!-- U+0927: "ध" DEVANAGARI LETTER DHA U+0915/U+094D/U+0937: "क्ष" DEVANAGARI LETTER KA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER SSA - U+0936/U+094D/U+0930: "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA - U+096F: "९" DEVANAGARI DIGIT NINE --> + U+0936/U+094D/U+0930: "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA --> <Key latin:keyLabel="ध" - latin:moreKeys="क्ष,श्र,%" - latin:keyHintLabel="9" - latin:additionalMoreKeys="9" /> - <!-- U+091D: "झ" DEVANAGARI LETTER JHA - U+0966: "०" DEVANAGARI DIGIT ZERO --> + latin:moreKeys="क्ष,श्र" /> + <!-- U+091D: "झ" DEVANAGARI LETTER JHA --> <Key - latin:keyLabel="झ" - latin:keyHintLabel="0" - latin:additionalMoreKeys="०,0" /> + latin:keyLabel="झ" /> <!-- U+0922: "ढ" DEVANAGARI LETTER DDHA --> <Key latin:keyLabel="ढ" /> diff --git a/java/res/xml/rowkeys_hindi3.xml b/java/res/xml/rowkeys_hindi3.xml index 7d43d57c7..c023115ee 100644 --- a/java/res/xml/rowkeys_hindi3.xml +++ b/java/res/xml/rowkeys_hindi3.xml @@ -28,9 +28,6 @@ <!-- U+0911: "ऑ" DEVANAGARI LETTER CANDRA O --> <Key latin:keyLabel="ऑ" /> - <!-- U+090E: "ऎ" DEVANAGARI LETTER SHORT E --> - <Key - latin:keyLabel="ऎ" /> <!-- U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU U+0945: "ॅ" DEVANAGARI VOWEL SIGN CANDRA E--> <Key @@ -66,9 +63,6 @@ <!-- U+0949: "ॉ" DEVANAGARI VOWEL SIGN CANDRA O --> <Key latin:keyLabel="ॉ" /> - <!-- U+0946: "ॆ" DEVANAGARI VOWEL SIGN SHORT E --> - <Key - latin:keyLabel="ॆ" /> <!-- U+0902: "ं" DEVANAGARI SIGN ANUSVARA --> <Key latin:keyLabel="ं" /> diff --git a/java/res/xml/rowkeys_nordic1.xml b/java/res/xml/rowkeys_nordic1.xml index 355b62654..056895f1f 100644 --- a/java/res/xml/rowkeys_nordic1.xml +++ b/java/res/xml/rowkeys_nordic1.xml @@ -24,5 +24,5 @@ <include latin:keyboardLayout="@xml/rowkeys_qwerty1" /> <Key - latin:keyLabel="@string/keylabel_for_scandinavia_row1_11" /> + latin:keyLabel="@string/keylabel_for_nordic_row1_11" /> </merge> diff --git a/java/res/xml/rowkeys_nordic2.xml b/java/res/xml/rowkeys_nordic2.xml index 58e6bc2e7..0033ea1bb 100644 --- a/java/res/xml/rowkeys_nordic2.xml +++ b/java/res/xml/rowkeys_nordic2.xml @@ -24,9 +24,9 @@ <include latin:keyboardLayout="@xml/rowkeys_qwerty2" /> <Key - latin:keyLabel="@string/keylabel_for_scandinavia_row2_10" - latin:moreKeys="@string/more_keys_for_scandinavia_row2_10" /> + latin:keyLabel="@string/keylabel_for_nordic_row2_10" + latin:moreKeys="@string/more_keys_for_nordic_row2_10" /> <Key - latin:keyLabel="@string/keylabel_for_scandinavia_row2_11" - latin:moreKeys="@string/more_keys_for_scandinavia_row2_11" /> + latin:keyLabel="@string/keylabel_for_nordic_row2_11" + latin:moreKeys="@string/more_keys_for_nordic_row2_11" /> </merge> diff --git a/java/res/xml/rowkeys_qwerty1.xml b/java/res/xml/rowkeys_qwerty1.xml index bd5e9a271..19067a70c 100644 --- a/java/res/xml/rowkeys_qwerty1.xml +++ b/java/res/xml/rowkeys_qwerty1.xml @@ -28,7 +28,8 @@ <Key latin:keyLabel="w" latin:keyHintLabel="2" - latin:additionalMoreKeys="2" /> + latin:additionalMoreKeys="2" + latin:moreKeys="@string/more_keys_for_w" /> <Key latin:keyLabel="e" latin:keyHintLabel="3" diff --git a/java/res/xml/rowkeys_qwerty2.xml b/java/res/xml/rowkeys_qwerty2.xml index 4c983dfce..2fa8214a8 100644 --- a/java/res/xml/rowkeys_qwerty2.xml +++ b/java/res/xml/rowkeys_qwerty2.xml @@ -36,9 +36,11 @@ latin:keyLabel="g" latin:moreKeys="@string/more_keys_for_g" /> <Key - latin:keyLabel="h" /> + latin:keyLabel="h" + latin:moreKeys="@string/more_keys_for_h" /> <Key - latin:keyLabel="j" /> + latin:keyLabel="j" + latin:moreKeys="@string/more_keys_for_j" /> <Key latin:keyLabel="k" latin:moreKeys="@string/more_keys_for_k" /> diff --git a/java/res/xml/rowkeys_qwertz1.xml b/java/res/xml/rowkeys_qwertz1.xml index 27b8a7653..3e11a7ab4 100644 --- a/java/res/xml/rowkeys_qwertz1.xml +++ b/java/res/xml/rowkeys_qwertz1.xml @@ -28,7 +28,8 @@ <Key latin:keyLabel="w" latin:keyHintLabel="2" - latin:additionalMoreKeys="2" /> + latin:additionalMoreKeys="2" + latin:moreKeys="@string/more_keys_for_w" /> <Key latin:keyLabel="e" latin:keyHintLabel="3" diff --git a/java/res/xml/rowkeys_south_slavic1.xml b/java/res/xml/rowkeys_south_slavic1.xml index 5485d866e..e3cb89c67 100644 --- a/java/res/xml/rowkeys_south_slavic1.xml +++ b/java/res/xml/rowkeys_south_slavic1.xml @@ -48,7 +48,7 @@ latin:keyHintLabel="5" latin:additionalMoreKeys="5" /> <Key - latin:keyLabel="@string/keylabel_for_cyrillic_ze" + latin:keyLabel="@string/keylabel_for_south_slavic_row1_6" latin:keyHintLabel="6" latin:additionalMoreKeys="6" /> <!-- U+0443: "у" CYRILLIC SMALL LETTER U --> diff --git a/java/res/xml/rowkeys_south_slavic2.xml b/java/res/xml/rowkeys_south_slavic2.xml index f30f42c1a..5a7ecd46e 100644 --- a/java/res/xml/rowkeys_south_slavic2.xml +++ b/java/res/xml/rowkeys_south_slavic2.xml @@ -52,5 +52,5 @@ <Key latin:keyLabel="ч" /> <Key - latin:keyLabel="@string/keylabel_for_cyrillic_tshe" /> + latin:keyLabel="@string/keylabel_for_south_slavic_row2_11" /> </merge> diff --git a/java/res/xml/rowkeys_south_slavic3.xml b/java/res/xml/rowkeys_south_slavic3.xml index 303fad8c7..97ff51ee1 100644 --- a/java/res/xml/rowkeys_south_slavic3.xml +++ b/java/res/xml/rowkeys_south_slavic3.xml @@ -22,7 +22,7 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="@string/keylabel_for_cyrillic_dze" /> + latin:keyLabel="@string/keylabel_for_south_slavic_row3_1" /> <!-- U+045F: "џ" CYRILLIC SMALL LETTER DZHE --> <Key latin:keyLabel="џ" /> @@ -42,7 +42,7 @@ <Key latin:keyLabel="м" /> <Key - latin:keyLabel="@string/keylabel_for_cyrillic_dje" /> + latin:keyLabel="@string/keylabel_for_south_slavic_row3_8" /> <!-- U+0436: "ж" CYRILLIC SMALL LETTER ZHE --> <Key latin:keyLabel="ж" /> diff --git a/java/res/xml/rowkeys_thai1.xml b/java/res/xml/rowkeys_thai1.xml index 54ec327b0..943112a1a 100644 --- a/java/res/xml/rowkeys_thai1.xml +++ b/java/res/xml/rowkeys_thai1.xml @@ -27,44 +27,28 @@ > <!-- U+0E0E: "ฎ" THAI CHARACTER DO CHADA --> <Key - latin:keyLabel="ฎ" - latin:keyHintLabel="1" - latin:additionalMoreKeys="1" /> + latin:keyLabel="ฎ" /> <!-- U+0E11: "ฑ" THAI CHARACTER THO NANGMONTHO --> <Key - latin:keyLabel="ฑ" - latin:keyHintLabel="2" - latin:additionalMoreKeys="2" /> + latin:keyLabel="ฑ" /> <!-- U+0E18: "ธ" THAI CHARACTER THO THONG --> <Key - latin:keyLabel="ธ" - latin:keyHintLabel="3" - latin:additionalMoreKeys="3" /> + latin:keyLabel="ธ" /> <!-- U+0E13: "ณ" THAI CHARACTER NO NEN --> <Key - latin:keyLabel="ณ" - latin:keyHintLabel="4" - latin:additionalMoreKeys="4" /> + latin:keyLabel="ณ" /> <!-- U+0E0D: "ญ" THAI CHARACTER YO YING --> <Key - latin:keyLabel="ญ" - latin:keyHintLabel="5" - latin:additionalMoreKeys="5" /> + latin:keyLabel="ญ" /> <!-- U+0E10: "ฐ" THAI CHARACTER THO THAN --> <Key - latin:keyLabel="ฐ" - latin:keyHintLabel="6" - latin:additionalMoreKeys="6" /> + latin:keyLabel="ฐ" /> <!-- U+0E03: "ฃ" THAI CHARACTER KHO KHUAT --> <Key - latin:keyLabel="ฃ" - latin:keyHintLabel="7" - latin:additionalMoreKeys="7" /> + latin:keyLabel="ฃ" /> <!-- U+0E05: "ฅ" THAI CHARACTER KHO KHON --> <Key - latin:keyLabel="ฅ" - latin:keyHintLabel="8" - latin:additionalMoreKeys="8" /> + latin:keyLabel="ฅ" /> <!-- U+0E51: "๑" THAI DIGIT ONE U+0E52: "๒" THAI DIGIT TWO U+0E53: "๓" THAI DIGIT THREE @@ -72,9 +56,7 @@ U+0E55: "๕" THAI DIGIT FIVE --> <Key latin:keyLabel="๑" - latin:moreKeys="๒,๓,๔,๕,%" - latin:keyHintLabel="9" - latin:additionalMoreKeys="9" /> + latin:moreKeys="!fixedColumnOrder!4,๒,๓,๔,๕" /> <!-- U+0E56: "๖" THAI DIGIT SIX U+0E57: "๗" THAI DIGIT SEVEN U+0E58: "๘" THAI DIGIT EIGHT @@ -82,9 +64,7 @@ U+0E50: "๐" THAI DIGIT ZERO --> <Key latin:keyLabel="๖" - latin:moreKeys="๗,๘,๙,๐,%" - latin:keyHintLabel="0" - latin:additionalMoreKeys="0" /> + latin:moreKeys="!fixedColumnOrder!4,๗,๘,๙,๐" /> </case> <default> <!-- U+0E20: "ภ" THAI CHARACTER PHO SAMPHAO --> diff --git a/java/res/xml/rows_east_slavic.xml b/java/res/xml/rows_east_slavic.xml index 019361250..5d3d768f3 100644 --- a/java/res/xml/rows_east_slavic.xml +++ b/java/res/xml/rows_east_slavic.xml @@ -36,11 +36,11 @@ latin:keyboardLayout="@xml/rowkeys_east_slavic2" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="8.711%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.8%p" /> <include latin:keyboardLayout="@xml/rowkeys_east_slavic3" /> <Key diff --git a/java/res/xml/rows_hindi.xml b/java/res/xml/rows_hindi.xml index 42d89b546..5c631ebff 100644 --- a/java/res/xml/rows_hindi.xml +++ b/java/res/xml/rows_hindi.xml @@ -36,11 +36,11 @@ latin:keyboardLayout="@xml/rowkeys_hindi2" /> </Row> <Row - latin:keyWidth="7.65%p" + latin:keyWidth="8.711%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.8%p" /> <include latin:keyboardLayout="@xml/rowkeys_hindi3" /> <Key diff --git a/java/res/xml/rows_nordic.xml b/java/res/xml/rows_nordic.xml index 51d20e83f..3068917f5 100644 --- a/java/res/xml/rows_nordic.xml +++ b/java/res/xml/rows_nordic.xml @@ -36,17 +36,20 @@ latin:keyboardLayout="@xml/rowkeys_nordic2" /> </Row> <Row - latin:keyWidth="10%p" + latin:keyWidth="9.2%p" > <Key latin:keyStyle="shiftKeyStyle" latin:keyWidth="15%p" latin:visualInsetsRight="1%p" /> + <Spacer + latin:keyWidth="2.8%p" /> <include latin:keyboardLayout="@xml/rowkeys_qwerty3" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" + latin:keyXPos="-15%p" + latin:keyWidth="fillRight" latin:visualInsetsLeft="1%p" /> </Row> <include diff --git a/java/res/xml/rows_south_slavic.xml b/java/res/xml/rows_south_slavic.xml index 31bb38984..05442848d 100644 --- a/java/res/xml/rows_south_slavic.xml +++ b/java/res/xml/rows_south_slavic.xml @@ -36,11 +36,11 @@ latin:keyboardLayout="@xml/rowkeys_south_slavic2" /> </Row> <Row - latin:keyWidth="8.5%p" + latin:keyWidth="8.711%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="11.75%p" /> + latin:keyWidth="10.8%p" /> <include latin:keyboardLayout="@xml/rowkeys_south_slavic3" /> <Key diff --git a/java/src/com/android/inputmethod/compat/ArraysCompatUtils.java b/java/src/com/android/inputmethod/compat/ArraysCompatUtils.java deleted file mode 100644 index 011473bef..000000000 --- a/java/src/com/android/inputmethod/compat/ArraysCompatUtils.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.inputmethod.compat; - -import android.util.Log; - -import java.lang.reflect.Method; -import java.util.Arrays; - -public class ArraysCompatUtils { - private static final String TAG = ArraysCompatUtils.class.getSimpleName(); - - private static final Method METHOD_Arrays_binarySearch = CompatUtils - .getMethod(Arrays.class, "binarySearch", int[].class, int.class, int.class, int.class); - - public static int binarySearch(int[] array, int startIndex, int endIndex, int value) { - if (METHOD_Arrays_binarySearch != null) { - final Object index = CompatUtils.invoke(null, 0, METHOD_Arrays_binarySearch, - array, startIndex, endIndex, value); - return (Integer)index; - } else { - return compatBinarySearch(array, startIndex, endIndex, value); - } - } - - // TODO: Implement fast binary search - /* package for testing */ - static int compatBinarySearch(int[] array, int startIndex, int endIndex, int value) { - // Output error log because this method has strict performance penalty. - // Note that this method has been called only from spell checker and spell checker exists - // only from IceCreamSandwich and after, so that there is no chance on pre-ICS device to - // invoke this method. - Log.e(TAG, "Invoked expensive binarySearch"); - - if (startIndex > endIndex) throw new IllegalArgumentException(); - if (startIndex < 0 || endIndex > array.length) throw new ArrayIndexOutOfBoundsException(); - - final int work[] = new int[endIndex - startIndex]; - System.arraycopy(array, startIndex, work, 0, work.length); - final int index = Arrays.binarySearch(work, value); - if (index >= 0) { - return index + startIndex; - } else { - return ~(~index + startIndex); - } - } -} diff --git a/java/src/com/android/inputmethod/compat/CompatUtils.java b/java/src/com/android/inputmethod/compat/CompatUtils.java index b42633cd9..ba82a06ac 100644 --- a/java/src/com/android/inputmethod/compat/CompatUtils.java +++ b/java/src/com/android/inputmethod/compat/CompatUtils.java @@ -32,8 +32,6 @@ public class CompatUtils { // TODO: Can these be constants instead of literal String constants? private static final String INPUT_METHOD_SUBTYPE_SETTINGS = "android.settings.INPUT_METHOD_SUBTYPE_SETTINGS"; - private static final String INPUT_LANGUAGE_SELECTION = - "com.android.inputmethod.latin.INPUT_LANGUAGE_SELECTION"; public static Intent getInputLanguageSelectionIntent(String inputMethodId, int flagsForSubtypeSettings) { @@ -51,11 +49,9 @@ public class CompatUtils { if (flagsForSubtypeSettings > 0) { intent.setFlags(flagsForSubtypeSettings); } - } else { - action = INPUT_LANGUAGE_SELECTION; - intent = new Intent(action); + return intent; } - return intent; + throw new RuntimeException("Language selection doesn't supported on this platform"); } public static Class<?> getClass(String className) { diff --git a/java/src/com/android/inputmethod/compat/InputConnectionCompatUtils.java b/java/src/com/android/inputmethod/compat/InputConnectionCompatUtils.java deleted file mode 100644 index 7d00b6007..000000000 --- a/java/src/com/android/inputmethod/compat/InputConnectionCompatUtils.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.inputmethod.compat; - -import com.android.inputmethod.latin.EditingUtils.SelectedWord; - -import android.view.inputmethod.InputConnection; - -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; - -public class InputConnectionCompatUtils { - private static final Class<?> CLASS_CorrectionInfo = CompatUtils - .getClass("android.view.inputmethod.CorrectionInfo"); - private static final Class<?>[] INPUT_TYPE_CorrectionInfo = new Class<?>[] { int.class, - CharSequence.class, CharSequence.class }; - private static final Constructor<?> CONSTRUCTOR_CorrectionInfo = CompatUtils - .getConstructor(CLASS_CorrectionInfo, INPUT_TYPE_CorrectionInfo); - private static final Method METHOD_InputConnection_commitCorrection = CompatUtils - .getMethod(InputConnection.class, "commitCorrection", CLASS_CorrectionInfo); - private static final Method METHOD_getSelectedText = CompatUtils - .getMethod(InputConnection.class, "getSelectedText", int.class); - private static final Method METHOD_setComposingRegion = CompatUtils - .getMethod(InputConnection.class, "setComposingRegion", int.class, int.class); - public static final boolean RECORRECTION_SUPPORTED; - - static { - RECORRECTION_SUPPORTED = METHOD_getSelectedText != null - && METHOD_setComposingRegion != null; - } - - public static void commitCorrection(InputConnection ic, int offset, CharSequence oldText, - CharSequence newText) { - if (ic == null || CONSTRUCTOR_CorrectionInfo == null - || METHOD_InputConnection_commitCorrection == null) { - return; - } - Object[] args = { offset, oldText, newText }; - Object correctionInfo = CompatUtils.newInstance(CONSTRUCTOR_CorrectionInfo, args); - if (correctionInfo != null) { - CompatUtils.invoke(ic, null, METHOD_InputConnection_commitCorrection, - correctionInfo); - } - } - - - /** - * Returns the selected text between the selStart and selEnd positions. - */ - public static CharSequence getSelectedText(InputConnection ic, int selStart, int selEnd) { - // Use reflection, for backward compatibility - return (CharSequence) CompatUtils.invoke( - ic, null, METHOD_getSelectedText, 0); - } - - /** - * Tries to set the text into composition mode if there is support for it in the framework. - */ - public static void underlineWord(InputConnection ic, SelectedWord word) { - // Use reflection, for backward compatibility - // If method not found, there's nothing we can do. It still works but just wont underline - // the word. - CompatUtils.invoke( - ic, null, METHOD_setComposingRegion, word.mStart, word.mEnd); - } -} diff --git a/java/src/com/android/inputmethod/compat/InputMethodManagerCompatWrapper.java b/java/src/com/android/inputmethod/compat/InputMethodManagerCompatWrapper.java index a4ff8238c..3df6bea4b 100644 --- a/java/src/com/android/inputmethod/compat/InputMethodManagerCompatWrapper.java +++ b/java/src/com/android/inputmethod/compat/InputMethodManagerCompatWrapper.java @@ -29,7 +29,6 @@ import android.util.Log; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodManager; -import com.android.inputmethod.deprecated.LanguageSwitcherProxy; import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.SubtypeSwitcher; import com.android.inputmethod.latin.SubtypeUtils; @@ -68,14 +67,6 @@ public class InputMethodManagerCompatWrapper { private static final InputMethodManagerCompatWrapper sInstance = new InputMethodManagerCompatWrapper(); - public static final boolean SUBTYPE_SUPPORTED; - - static { - // This static initializer guarantees that METHOD_getShortcutInputMethodsAndSubtypes is - // already instantiated. - SUBTYPE_SUPPORTED = METHOD_getShortcutInputMethodsAndSubtypes != null; - } - // For the compatibility, IMM will create dummy subtypes if subtypes are not found. // This is required to be false if the current behavior is broken. For now, it's ok to be true. public static final boolean FORCE_ENABLE_VOICE_EVEN_WITH_NO_VOICE_SUBTYPES = @@ -87,7 +78,6 @@ public class InputMethodManagerCompatWrapper { private InputMethodManager mImm; private PackageManager mPackageManager; private ApplicationInfo mApplicationInfo; - private LanguageSwitcherProxy mLanguageSwitcherProxy; private String mLatinImePackageName; public static InputMethodManagerCompatWrapper getInstance() { @@ -103,39 +93,20 @@ public class InputMethodManagerCompatWrapper { sInstance.mLatinImePackageName = service.getPackageName(); sInstance.mPackageManager = service.getPackageManager(); sInstance.mApplicationInfo = service.getApplicationInfo(); - sInstance.mLanguageSwitcherProxy = LanguageSwitcherProxy.getInstance(); } public InputMethodSubtypeCompatWrapper getCurrentInputMethodSubtype() { - if (!SUBTYPE_SUPPORTED) { - return new InputMethodSubtypeCompatWrapper( - 0, 0, mLanguageSwitcherProxy.getInputLocale().toString(), KEYBOARD_MODE, ""); - } Object o = CompatUtils.invoke(mImm, null, METHOD_getCurrentInputMethodSubtype); return new InputMethodSubtypeCompatWrapper(o); } public InputMethodSubtypeCompatWrapper getLastInputMethodSubtype() { - if (!SUBTYPE_SUPPORTED) { - return new InputMethodSubtypeCompatWrapper( - 0, 0, mLanguageSwitcherProxy.getInputLocale().toString(), KEYBOARD_MODE, ""); - } Object o = CompatUtils.invoke(mImm, null, METHOD_getLastInputMethodSubtype); return new InputMethodSubtypeCompatWrapper(o); } public List<InputMethodSubtypeCompatWrapper> getEnabledInputMethodSubtypeList( InputMethodInfoCompatWrapper imi, boolean allowsImplicitlySelectedSubtypes) { - if (!SUBTYPE_SUPPORTED) { - String[] languages = mLanguageSwitcherProxy.getEnabledLanguages( - allowsImplicitlySelectedSubtypes); - List<InputMethodSubtypeCompatWrapper> subtypeList = - new ArrayList<InputMethodSubtypeCompatWrapper>(); - for (String lang: languages) { - subtypeList.add(new InputMethodSubtypeCompatWrapper(0, 0, lang, KEYBOARD_MODE, "")); - } - return subtypeList; - } Object retval = CompatUtils.invoke(mImm, null, METHOD_getEnabledInputMethodSubtypeList, (imi != null ? imi.getInputMethodInfo() : null), allowsImplicitlySelectedSubtypes); if (retval == null || !(retval instanceof List<?>) || ((List<?>)retval).isEmpty()) { @@ -228,16 +199,10 @@ public class InputMethodManagerCompatWrapper { } public boolean switchToLastInputMethod(IBinder token) { - if (SubtypeSwitcher.getInstance().isDummyVoiceMode()) { - return true; - } return (Boolean)CompatUtils.invoke(mImm, false, METHOD_switchToLastInputMethod, token); } public boolean switchToNextInputMethod(IBinder token, boolean onlyCurrentIme) { - if (SubtypeSwitcher.getInstance().isDummyVoiceMode()) { - return true; - } return (Boolean)CompatUtils.invoke(mImm, false, METHOD_switchToNextInputMethod, token, onlyCurrentIme); } @@ -253,88 +218,6 @@ public class InputMethodManagerCompatWrapper { public void showInputMethodPicker() { if (mImm == null) return; - if (SUBTYPE_SUPPORTED) { - mImm.showInputMethodPicker(); - return; - } - - // The code below are based on {@link InputMethodManager#showInputMethodMenuInternal}. - - final InputMethodInfoCompatWrapper myImi = SubtypeUtils.getInputMethodInfo( - mLatinImePackageName); - final List<InputMethodSubtypeCompatWrapper> myImsList = getEnabledInputMethodSubtypeList( - myImi, true); - final InputMethodSubtypeCompatWrapper currentIms = getCurrentInputMethodSubtype(); - final List<InputMethodInfoCompatWrapper> imiList = getEnabledInputMethodList(); - imiList.remove(myImi); - final PackageManager pm = mPackageManager; - Collections.sort(imiList, new Comparator<InputMethodInfoCompatWrapper>() { - @Override - public int compare(InputMethodInfoCompatWrapper imi1, - InputMethodInfoCompatWrapper imi2) { - final CharSequence imiId1 = imi1.loadLabel(pm) + "/" + imi1.getId(); - final CharSequence imiId2 = imi2.loadLabel(pm) + "/" + imi2.getId(); - return imiId1.toString().compareTo(imiId2.toString()); - } - }); - - final int myImsCount = myImsList.size(); - final int imiCount = imiList.size(); - final CharSequence[] items = new CharSequence[myImsCount + imiCount]; - - int checkedItem = 0; - int index = 0; - final CharSequence myImiLabel = myImi.loadLabel(mPackageManager); - for (int i = 0; i < myImsCount; i++) { - InputMethodSubtypeCompatWrapper ims = myImsList.get(i); - if (currentIms.equals(ims)) - checkedItem = index; - final CharSequence title = TextUtils.concat( - ims.getDisplayName(mService, mLatinImePackageName, mApplicationInfo), - " (" + myImiLabel, ")"); - items[index] = title; - index++; - } - - for (int i = 0; i < imiCount; i++) { - final InputMethodInfoCompatWrapper imi = imiList.get(i); - final CharSequence title = imi.loadLabel(mPackageManager); - items[index] = title; - index++; - } - - final InputMethodServiceCompatWrapper service = mService; - final OnClickListener buttonListener = new OnClickListener() { - @Override - public void onClick(DialogInterface di, int whichButton) { - final Intent intent = new Intent("android.settings.INPUT_METHOD_SETTINGS"); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK - | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED - | Intent.FLAG_ACTIVITY_CLEAR_TOP); - service.startActivity(intent); - } - }; - final IBinder token = service.getWindow().getWindow().getAttributes().token; - final OnClickListener selectionListener = new OnClickListener() { - @Override - public void onClick(DialogInterface di, int which) { - di.dismiss(); - if (which < myImsCount) { - final int imsIndex = which; - final InputMethodSubtypeCompatWrapper ims = myImsList.get(imsIndex); - service.notifyOnCurrentInputMethodSubtypeChanged(ims); - } else { - final int imiIndex = which - myImsCount; - final InputMethodInfoCompatWrapper imi = imiList.get(imiIndex); - setInputMethodAndSubtype(token, imi.getId(), null); - } - } - }; - - final AlertDialog.Builder builder = new AlertDialog.Builder(mService) - .setTitle(mService.getString(R.string.selectInputMethod)) - .setNeutralButton(R.string.configure_input_method, buttonListener) - .setSingleChoiceItems(items, checkedItem, selectionListener); - mService.showOptionDialogInternal(builder.create()); + mImm.showInputMethodPicker(); } } diff --git a/java/src/com/android/inputmethod/compat/InputMethodServiceCompatWrapper.java b/java/src/com/android/inputmethod/compat/InputMethodServiceCompatWrapper.java index 8e2ee0f7a..7c15be300 100644 --- a/java/src/com/android/inputmethod/compat/InputMethodServiceCompatWrapper.java +++ b/java/src/com/android/inputmethod/compat/InputMethodServiceCompatWrapper.java @@ -23,7 +23,6 @@ import android.view.Window; import android.view.WindowManager; import android.view.inputmethod.InputMethodSubtype; -import com.android.inputmethod.deprecated.LanguageSwitcherProxy; import com.android.inputmethod.keyboard.KeyboardSwitcher; import com.android.inputmethod.latin.SubtypeSwitcher; @@ -87,9 +86,6 @@ public class InputMethodServiceCompatWrapper extends InputMethodService { if (subtype != null) { if (!InputMethodManagerCompatWrapper.FORCE_ENABLE_VOICE_EVEN_WITH_NO_VOICE_SUBTYPES && !subtype.isDummy()) return; - if (!InputMethodManagerCompatWrapper.SUBTYPE_SUPPORTED) { - LanguageSwitcherProxy.getInstance().setLocale(subtype.getLocale()); - } SubtypeSwitcher.getInstance().updateSubtype(subtype); } } diff --git a/java/src/com/android/inputmethod/compat/SharedPreferencesCompat.java b/java/src/com/android/inputmethod/compat/SharedPreferencesCompat.java deleted file mode 100644 index 38736f3a1..000000000 --- a/java/src/com/android/inputmethod/compat/SharedPreferencesCompat.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.inputmethod.compat; - -import android.content.SharedPreferences; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -/** - * Reflection utils to call SharedPreferences$Editor.apply when possible, - * falling back to commit when apply isn't available. - */ -public class SharedPreferencesCompat { - private static final Method sApplyMethod = findApplyMethod(); - - private static Method findApplyMethod() { - try { - return SharedPreferences.Editor.class.getMethod("apply"); - } catch (NoSuchMethodException unused) { - // fall through - } - return null; - } - - public static void apply(SharedPreferences.Editor editor) { - if (sApplyMethod != null) { - try { - sApplyMethod.invoke(editor); - return; - } catch (InvocationTargetException unused) { - // fall through - } catch (IllegalAccessException unused) { - // fall through - } - } - editor.commit(); - } -} diff --git a/java/src/com/android/inputmethod/deprecated/LanguageSwitcherProxy.java b/java/src/com/android/inputmethod/deprecated/LanguageSwitcherProxy.java deleted file mode 100644 index 290e6b554..000000000 --- a/java/src/com/android/inputmethod/deprecated/LanguageSwitcherProxy.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -package com.android.inputmethod.deprecated; - -import com.android.inputmethod.compat.InputMethodManagerCompatWrapper; -import com.android.inputmethod.deprecated.languageswitcher.LanguageSwitcher; -import com.android.inputmethod.latin.LatinIME; -import com.android.inputmethod.latin.Settings; - -import android.content.SharedPreferences; -import android.content.res.Configuration; - -import java.util.Locale; - -// This class is used only when the IME doesn't use method.xml for language switching. -public class LanguageSwitcherProxy implements SharedPreferences.OnSharedPreferenceChangeListener { - private static final LanguageSwitcherProxy sInstance = new LanguageSwitcherProxy(); - private LatinIME mService; - private LanguageSwitcher mLanguageSwitcher; - private SharedPreferences mPrefs; - - public static LanguageSwitcherProxy getInstance() { - if (InputMethodManagerCompatWrapper.SUBTYPE_SUPPORTED) return null; - return sInstance; - } - - public static void init(LatinIME service, SharedPreferences prefs) { - if (InputMethodManagerCompatWrapper.SUBTYPE_SUPPORTED) return; - final Configuration conf = service.getResources().getConfiguration(); - sInstance.mLanguageSwitcher = new LanguageSwitcher(service); - sInstance.mLanguageSwitcher.loadLocales(prefs, conf.locale); - sInstance.mPrefs = prefs; - sInstance.mService = service; - prefs.registerOnSharedPreferenceChangeListener(sInstance); - } - - public static void onConfigurationChanged(Configuration conf) { - if (InputMethodManagerCompatWrapper.SUBTYPE_SUPPORTED) return; - sInstance.mLanguageSwitcher.onConfigurationChanged(conf, sInstance.mPrefs); - } - - public static void loadSettings() { - if (InputMethodManagerCompatWrapper.SUBTYPE_SUPPORTED) return; - sInstance.mLanguageSwitcher.loadLocales(sInstance.mPrefs, null); - } - - public int getLocaleCount() { - return mLanguageSwitcher.getLocaleCount(); - } - - public String[] getEnabledLanguages(boolean allowImplicitlySelectedLanguages) { - return mLanguageSwitcher.getEnabledLanguages(allowImplicitlySelectedLanguages); - } - - public Locale getInputLocale() { - return mLanguageSwitcher.getInputLocale(); - } - - public void setLocale(String localeStr) { - mLanguageSwitcher.setLocale(localeStr); - mLanguageSwitcher.persist(mPrefs); - } - - @Override - public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { - // PREF_SELECTED_LANGUAGES: enabled input subtypes - // PREF_INPUT_LANGUAGE: current input subtype - if (key.equals(Settings.PREF_SELECTED_LANGUAGES) - || key.equals(Settings.PREF_INPUT_LANGUAGE)) { - mLanguageSwitcher.loadLocales(prefs, null); - if (mService != null) { - mService.onRefreshKeyboard(); - } - } - } -} diff --git a/java/src/com/android/inputmethod/deprecated/VoiceProxy.java b/java/src/com/android/inputmethod/deprecated/VoiceProxy.java deleted file mode 100644 index 87d1c118b..000000000 --- a/java/src/com/android/inputmethod/deprecated/VoiceProxy.java +++ /dev/null @@ -1,854 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -package com.android.inputmethod.deprecated; - -import android.app.AlertDialog; -import android.content.ContentResolver; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.SharedPreferences; -import android.content.res.Configuration; -import android.net.Uri; -import android.os.AsyncTask; -import android.os.IBinder; -import android.preference.PreferenceManager; -import android.provider.Browser; -import android.speech.SpeechRecognizer; -import android.text.SpannableStringBuilder; -import android.text.Spanned; -import android.text.TextUtils; -import android.text.method.LinkMovementMethod; -import android.text.style.URLSpan; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.ViewParent; -import android.view.Window; -import android.view.WindowManager; -import android.view.inputmethod.EditorInfo; -import android.view.inputmethod.ExtractedTextRequest; -import android.view.inputmethod.InputConnection; -import android.widget.TextView; - -import com.android.inputmethod.compat.InputMethodManagerCompatWrapper; -import com.android.inputmethod.compat.InputMethodServiceCompatWrapper; -import com.android.inputmethod.compat.SharedPreferencesCompat; -import com.android.inputmethod.deprecated.voice.FieldContext; -import com.android.inputmethod.deprecated.voice.Hints; -import com.android.inputmethod.deprecated.voice.SettingsUtil; -import com.android.inputmethod.deprecated.voice.VoiceInput; -import com.android.inputmethod.keyboard.KeyboardSwitcher; -import com.android.inputmethod.keyboard.LatinKeyboardView; -import com.android.inputmethod.latin.EditingUtils; -import com.android.inputmethod.latin.LastComposedWord; -import com.android.inputmethod.latin.LatinIME; -import com.android.inputmethod.latin.LatinIME.UIHandler; -import com.android.inputmethod.latin.LatinImeLogger; -import com.android.inputmethod.latin.R; -import com.android.inputmethod.latin.StringUtils; -import com.android.inputmethod.latin.SubtypeSwitcher; -import com.android.inputmethod.latin.Utils; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class VoiceProxy implements VoiceInput.UiListener { - private static final VoiceProxy sInstance = new VoiceProxy(); - - public static final boolean VOICE_INSTALLED = - !InputMethodServiceCompatWrapper.CAN_HANDLE_ON_CURRENT_INPUT_METHOD_SUBTYPE_CHANGED; - private static final boolean ENABLE_VOICE_BUTTON = true; - private static final String PREF_VOICE_MODE = "voice_mode"; - // Whether or not the user has used voice input before (and thus, whether to show the - // first-run warning dialog or not). - private static final String PREF_HAS_USED_VOICE_INPUT = "has_used_voice_input"; - // Whether or not the user has used voice input from an unsupported locale UI before. - // For example, the user has a Chinese UI but activates voice input. - private static final String PREF_HAS_USED_VOICE_INPUT_UNSUPPORTED_LOCALE = - "has_used_voice_input_unsupported_locale"; - private static final int RECOGNITIONVIEW_HEIGHT_THRESHOLD_RATIO = 6; - // TODO: Adjusted on phones for now - private static final int RECOGNITIONVIEW_MINIMUM_HEIGHT_DIP = 244; - - private static final String TAG = VoiceProxy.class.getSimpleName(); - private static final boolean DEBUG = LatinImeLogger.sDBG; - - private boolean mAfterVoiceInput; - private boolean mConfigurationChanging; - private boolean mHasUsedVoiceInput; - private boolean mHasUsedVoiceInputUnsupportedLocale; - private boolean mImmediatelyAfterVoiceInput; - private boolean mIsShowingHint; - private boolean mLocaleSupportedForVoiceInput; - private boolean mPasswordText; - private boolean mRecognizing; - private boolean mShowingVoiceSuggestions; - private boolean mVoiceButtonEnabled; - private boolean mVoiceButtonOnPrimary; - private boolean mVoiceInputHighlighted; - - private int mMinimumVoiceRecognitionViewHeightPixel; - private InputMethodManagerCompatWrapper mImm; - private LatinIME mService; - private AlertDialog mVoiceWarningDialog; - private VoiceInput mVoiceInput; - private final VoiceResults mVoiceResults = new VoiceResults(); - private Hints mHints; - private UIHandler mHandler; - private SubtypeSwitcher mSubtypeSwitcher; - - // For each word, a list of potential replacements, usually from voice. - private final Map<String, List<CharSequence>> mWordToSuggestions = - new HashMap<String, List<CharSequence>>(); - - public static VoiceProxy init(LatinIME context, SharedPreferences prefs, UIHandler h) { - sInstance.initInternal(context, prefs, h); - return sInstance; - } - - public static VoiceProxy getInstance() { - return sInstance; - } - - private void initInternal(LatinIME service, SharedPreferences prefs, UIHandler h) { - if (!VOICE_INSTALLED) { - return; - } - mService = service; - mHandler = h; - mMinimumVoiceRecognitionViewHeightPixel = Utils.dipToPixel( - Utils.getDipScale(service), RECOGNITIONVIEW_MINIMUM_HEIGHT_DIP); - mImm = InputMethodManagerCompatWrapper.getInstance(); - mSubtypeSwitcher = SubtypeSwitcher.getInstance(); - mVoiceInput = new VoiceInput(service, this); - mHints = new Hints(service, prefs, new Hints.Display() { - @Override - public void showHint(int viewResource) { - View view = LayoutInflater.from(mService).inflate(viewResource, null); - mIsShowingHint = true; - } - }); - } - - private VoiceProxy() { - // Intentional empty constructor for singleton. - } - - public void resetVoiceStates(boolean isPasswordText) { - mAfterVoiceInput = false; - mImmediatelyAfterVoiceInput = false; - mShowingVoiceSuggestions = false; - mVoiceInputHighlighted = false; - mPasswordText = isPasswordText; - } - - public void flushVoiceInputLogs() { - if (!VOICE_INSTALLED) { - return; - } - if (!mConfigurationChanging) { - if (mAfterVoiceInput) { - mVoiceInput.flushAllTextModificationCounters(); - mVoiceInput.logInputEnded(); - } - mVoiceInput.flushLogs(); - mVoiceInput.cancel(); - } - } - - public void flushAndLogAllTextModificationCounters(int index, CharSequence suggestion, - String wordSeparators) { - if (!VOICE_INSTALLED) { - return; - } - if (mAfterVoiceInput && mShowingVoiceSuggestions) { - mVoiceInput.flushAllTextModificationCounters(); - // send this intent AFTER logging any prior aggregated edits. - mVoiceInput.logTextModifiedByChooseSuggestion(suggestion.toString(), index, - wordSeparators, mService.getCurrentInputConnection()); - } - } - - private void showVoiceWarningDialog(final boolean swipe, IBinder token) { - if (mVoiceWarningDialog != null && mVoiceWarningDialog.isShowing()) { - return; - } - AlertDialog.Builder builder = new UrlLinkAlertDialogBuilder(mService); - builder.setCancelable(true); - builder.setIcon(R.drawable.ic_mic_dialog); - builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int whichButton) { - mVoiceInput.logKeyboardWarningDialogOk(); - reallyStartListening(swipe); - } - }); - builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int whichButton) { - mVoiceInput.logKeyboardWarningDialogCancel(); - switchToLastInputMethod(); - } - }); - // When the dialog is dismissed by user's cancellation, switch back to the last input method - builder.setOnCancelListener(new DialogInterface.OnCancelListener() { - @Override - public void onCancel(DialogInterface arg0) { - mVoiceInput.logKeyboardWarningDialogCancel(); - switchToLastInputMethod(); - } - }); - - final CharSequence message; - if (mLocaleSupportedForVoiceInput) { - message = TextUtils.concat( - mService.getText(R.string.voice_warning_may_not_understand), "\n\n", - mService.getText(R.string.voice_warning_how_to_turn_off)); - } else { - message = TextUtils.concat( - mService.getText(R.string.voice_warning_locale_not_supported), "\n\n", - mService.getText(R.string.voice_warning_may_not_understand), "\n\n", - mService.getText(R.string.voice_warning_how_to_turn_off)); - } - builder.setMessage(message); - builder.setTitle(R.string.voice_warning_title); - mVoiceWarningDialog = builder.create(); - final Window window = mVoiceWarningDialog.getWindow(); - final WindowManager.LayoutParams lp = window.getAttributes(); - lp.token = token; - lp.type = WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG; - window.setAttributes(lp); - window.addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); - mVoiceInput.logKeyboardWarningDialogShown(); - mVoiceWarningDialog.show(); - } - - private static class UrlLinkAlertDialogBuilder extends AlertDialog.Builder { - private AlertDialog mAlertDialog; - - public UrlLinkAlertDialogBuilder(Context context) { - super(context); - } - - @Override - public AlertDialog.Builder setMessage(CharSequence message) { - return super.setMessage(replaceURLSpan(message)); - } - - private Spanned replaceURLSpan(CharSequence message) { - // Replace all spans with the custom span - final SpannableStringBuilder ssb = new SpannableStringBuilder(message); - for (URLSpan span : ssb.getSpans(0, ssb.length(), URLSpan.class)) { - int spanStart = ssb.getSpanStart(span); - int spanEnd = ssb.getSpanEnd(span); - int spanFlags = ssb.getSpanFlags(span); - ssb.removeSpan(span); - ssb.setSpan(new ClickableSpan(span.getURL()), spanStart, spanEnd, spanFlags); - } - return ssb; - } - - @Override - public AlertDialog create() { - final AlertDialog dialog = super.create(); - - dialog.setOnShowListener(new DialogInterface.OnShowListener() { - @Override - public void onShow(DialogInterface dialogInterface) { - // Make URL in the dialog message click-able. - TextView textView = (TextView) mAlertDialog.findViewById(android.R.id.message); - if (textView != null) { - textView.setMovementMethod(LinkMovementMethod.getInstance()); - } - } - }); - mAlertDialog = dialog; - return dialog; - } - - class ClickableSpan extends URLSpan { - public ClickableSpan(String url) { - super(url); - } - - @Override - public void onClick(View widget) { - Uri uri = Uri.parse(getURL()); - Context context = widget.getContext(); - Intent intent = new Intent(Intent.ACTION_VIEW, uri); - // Add this flag to start an activity from service - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName()); - // Dismiss the warning dialog and go back to the previous IME. - // TODO: If we can find a way to bring the new activity to front while keeping - // the warning dialog, we don't need to dismiss it here. - mAlertDialog.cancel(); - context.startActivity(intent); - } - } - } - - public void showPunctuationHintIfNecessary() { - if (!VOICE_INSTALLED) { - return; - } - InputConnection ic = mService.getCurrentInputConnection(); - if (!mImmediatelyAfterVoiceInput && mAfterVoiceInput && ic != null) { - if (mHints.showPunctuationHintIfNecessary(ic)) { - mVoiceInput.logPunctuationHintDisplayed(); - } - } - mImmediatelyAfterVoiceInput = false; - } - - public void hideVoiceWindow() { - if (!VOICE_INSTALLED) { - return; - } - if (!mConfigurationChanging) { - if (mAfterVoiceInput) - mVoiceInput.logInputEnded(); - if (mVoiceWarningDialog != null && mVoiceWarningDialog.isShowing()) { - mVoiceInput.logKeyboardWarningDialogDismissed(); - mVoiceWarningDialog.dismiss(); - mVoiceWarningDialog = null; - } - if (VOICE_INSTALLED & mRecognizing) { - mVoiceInput.cancel(); - } - } - mWordToSuggestions.clear(); - } - - public void setCursorAndSelection(int newSelEnd, int newSelStart) { - if (!VOICE_INSTALLED) { - return; - } - if (mAfterVoiceInput) { - mVoiceInput.setCursorPos(newSelEnd); - mVoiceInput.setSelectionSpan(newSelEnd - newSelStart); - } - } - - public void setVoiceInputHighlighted(boolean b) { - mVoiceInputHighlighted = b; - } - - public void setShowingVoiceSuggestions(boolean b) { - mShowingVoiceSuggestions = b; - } - - public boolean isVoiceButtonEnabled() { - return mVoiceButtonEnabled; - } - - public boolean isVoiceButtonOnPrimary() { - return mVoiceButtonOnPrimary; - } - - public boolean isVoiceInputHighlighted() { - return mVoiceInputHighlighted; - } - - public boolean isRecognizing() { - return mRecognizing; - } - - public boolean needsToShowWarningDialog() { - return !mHasUsedVoiceInput - || (!mLocaleSupportedForVoiceInput && !mHasUsedVoiceInputUnsupportedLocale); - } - - public boolean getAndResetIsShowingHint() { - boolean ret = mIsShowingHint; - mIsShowingHint = false; - return ret; - } - - private void revertVoiceInput() { - InputConnection ic = mService.getCurrentInputConnection(); - if (ic != null) ic.commitText("", 1); - mService.updateSuggestions(); - mVoiceInputHighlighted = false; - } - - public void commitVoiceInput() { - if (VOICE_INSTALLED && mVoiceInputHighlighted) { - InputConnection ic = mService.getCurrentInputConnection(); - if (ic != null) ic.finishComposingText(); - mService.updateSuggestions(); - mVoiceInputHighlighted = false; - } - } - - public boolean logAndRevertVoiceInput() { - if (!VOICE_INSTALLED) { - return false; - } - if (mVoiceInputHighlighted) { - mVoiceInput.incrementTextModificationDeleteCount( - mVoiceResults.candidates.get(0).toString().length()); - revertVoiceInput(); - return true; - } else { - return false; - } - } - - public void rememberReplacedWord(CharSequence suggestion,String wordSeparators) { - if (!VOICE_INSTALLED) { - return; - } - if (mShowingVoiceSuggestions) { - // Retain the replaced word in the alternatives array. - String wordToBeReplaced = EditingUtils.getWordAtCursor( - mService.getCurrentInputConnection(), wordSeparators); - if (!mWordToSuggestions.containsKey(wordToBeReplaced)) { - wordToBeReplaced = wordToBeReplaced.toLowerCase(); - } - if (mWordToSuggestions.containsKey(wordToBeReplaced)) { - List<CharSequence> suggestions = mWordToSuggestions.get(wordToBeReplaced); - if (suggestions.contains(suggestion)) { - suggestions.remove(suggestion); - } - suggestions.add(wordToBeReplaced); - mWordToSuggestions.remove(wordToBeReplaced); - mWordToSuggestions.put(suggestion.toString(), suggestions); - } - } - } - - public void handleBackspace() { - if (!VOICE_INSTALLED) { - return; - } - if (mAfterVoiceInput) { - // Don't log delete if the user is pressing delete at - // the beginning of the text box (hence not deleting anything) - if (mVoiceInput.getCursorPos() > 0) { - // If anything was selected before the delete was pressed, increment the - // delete count by the length of the selection - int deleteLen = mVoiceInput.getSelectionSpan() > 0 ? - mVoiceInput.getSelectionSpan() : 1; - mVoiceInput.incrementTextModificationDeleteCount(deleteLen); - } - } - } - - public void handleCharacter() { - if (!VOICE_INSTALLED) { - return; - } - commitVoiceInput(); - if (mAfterVoiceInput) { - // Assume input length is 1. This assumption fails for smiley face insertions. - mVoiceInput.incrementTextModificationInsertCount(1); - } - } - - public void handleSeparator() { - if (!VOICE_INSTALLED) { - return; - } - commitVoiceInput(); - if (mAfterVoiceInput){ - // Assume input length is 1. This assumption fails for smiley face insertions. - mVoiceInput.incrementTextModificationInsertPunctuationCount(1); - } - } - - public void handleClose() { - if (!VOICE_INSTALLED) { - return; - } - if (mRecognizing) { - mVoiceInput.cancel(); - } - } - - - public void handleVoiceResults(boolean capitalizeFirstWord) { - if (!VOICE_INSTALLED) { - return; - } - mAfterVoiceInput = true; - mImmediatelyAfterVoiceInput = true; - - InputConnection ic = mService.getCurrentInputConnection(); - if (!mService.isFullscreenMode()) { - // Start listening for updates to the text from typing, etc. - if (ic != null) { - ExtractedTextRequest req = new ExtractedTextRequest(); - ic.getExtractedText(req, InputConnection.GET_EXTRACTED_TEXT_MONITOR); - } - } - mService.vibrate(); - - final List<CharSequence> nBest = new ArrayList<CharSequence>(); - for (String c : mVoiceResults.candidates) { - if (capitalizeFirstWord) { - c = Character.toUpperCase(c.charAt(0)) + c.substring(1, c.length()); - } - nBest.add(c); - } - if (nBest.size() == 0) { - return; - } - String bestResult = nBest.get(0).toString(); - mVoiceInput.logVoiceInputDelivered(bestResult.length()); - mHints.registerVoiceResult(bestResult); - - if (ic != null) ic.beginBatchEdit(); // To avoid extra updates on committing older text - mService.commitTyped(ic, LastComposedWord.NOT_A_SEPARATOR); - EditingUtils.appendText(ic, bestResult); - if (ic != null) ic.endBatchEdit(); - - mVoiceInputHighlighted = true; - mWordToSuggestions.putAll(mVoiceResults.alternatives); - onCancelVoice(); - } - - public void switchToRecognitionStatusView(final Configuration configuration) { - if (!VOICE_INSTALLED) { - return; - } - mHandler.post(new Runnable() { - @Override - public void run() { -// mService.setCandidatesViewShown(false); - mRecognizing = true; - mVoiceInput.newView(); - View v = mVoiceInput.getView(); - - ViewParent p = v.getParent(); - if (p != null && p instanceof ViewGroup) { - ((ViewGroup) p).removeView(v); - } - - View keyboardView = KeyboardSwitcher.getInstance().getKeyboardView(); - - // The full height of the keyboard is difficult to calculate - // as the dimension is expressed in "mm" and not in "pixel" - // As we add mm, we don't know how the rounding is going to work - // thus we may end up with few pixels extra (or less). - if (keyboardView != null) { - View popupLayout = v.findViewById(R.id.popup_layout); - final int displayHeight = - mService.getResources().getDisplayMetrics().heightPixels; - final int currentHeight = popupLayout.getLayoutParams().height; - final int keyboardHeight = keyboardView.getHeight(); - if (mMinimumVoiceRecognitionViewHeightPixel > keyboardHeight - || mMinimumVoiceRecognitionViewHeightPixel > currentHeight) { - popupLayout.getLayoutParams().height = - mMinimumVoiceRecognitionViewHeightPixel; - } else if (keyboardHeight > currentHeight || keyboardHeight - > (displayHeight / RECOGNITIONVIEW_HEIGHT_THRESHOLD_RATIO)) { - popupLayout.getLayoutParams().height = keyboardHeight; - } - } - mService.setInputView(v); - mService.updateInputViewShown(); - - if (configuration != null) { - mVoiceInput.onConfigurationChanged(configuration); - } - }}); - } - - private void switchToLastInputMethod() { - if (!VOICE_INSTALLED) { - return; - } - final IBinder token = mService.getWindow().getWindow().getAttributes().token; - new AsyncTask<Void, Void, Boolean>() { - @Override - protected Boolean doInBackground(Void... params) { - return mImm.switchToLastInputMethod(token); - } - - @Override - protected void onPostExecute(Boolean result) { - // Calls in this method need to be done in the same thread as the thread which - // called switchToLastInputMethod() - if (!result) { - if (DEBUG) { - Log.d(TAG, "Couldn't switch back to last IME."); - } - // Because the current IME and subtype failed to switch to any other IME and - // subtype by switchToLastInputMethod, the current IME and subtype should keep - // being LatinIME and voice subtype in the next time. And for re-showing voice - // mode, the state of voice input should be reset and the voice view should be - // hidden. - mVoiceInput.reset(); - mService.requestHideSelf(0); - } else { - // Notify an event that the current subtype was changed. This event will be - // handled if "onCurrentInputMethodSubtypeChanged" can't be implemented - // when the API level is 10 or previous. - mService.notifyOnCurrentInputMethodSubtypeChanged(null); - } - } - }.execute(); - } - - private void reallyStartListening(boolean swipe) { - if (!VOICE_INSTALLED) { - return; - } - if (!mHasUsedVoiceInput) { - // The user has started a voice input, so remember that in the - // future (so we don't show the warning dialog after the first run). - SharedPreferences.Editor editor = - PreferenceManager.getDefaultSharedPreferences(mService).edit(); - editor.putBoolean(PREF_HAS_USED_VOICE_INPUT, true); - SharedPreferencesCompat.apply(editor); - mHasUsedVoiceInput = true; - } - - if (!mLocaleSupportedForVoiceInput && !mHasUsedVoiceInputUnsupportedLocale) { - // The user has started a voice input from an unsupported locale, so remember that - // in the future (so we don't show the warning dialog the next time they do this). - SharedPreferences.Editor editor = - PreferenceManager.getDefaultSharedPreferences(mService).edit(); - editor.putBoolean(PREF_HAS_USED_VOICE_INPUT_UNSUPPORTED_LOCALE, true); - SharedPreferencesCompat.apply(editor); - mHasUsedVoiceInputUnsupportedLocale = true; - } - - // Clear N-best suggestions - mService.clearSuggestions(); - - FieldContext context = makeFieldContext(); - mVoiceInput.startListening(context, swipe); - switchToRecognitionStatusView(null); - } - - public void startListening(final boolean swipe, IBinder token) { - if (!VOICE_INSTALLED) { - return; - } - // TODO: remove swipe which is no longer used. - if (needsToShowWarningDialog()) { - // Calls reallyStartListening if user clicks OK, does nothing if user clicks Cancel. - showVoiceWarningDialog(swipe, token); - } else { - reallyStartListening(swipe); - } - } - - private boolean fieldCanDoVoice(FieldContext fieldContext) { - return !mPasswordText - && mVoiceInput != null - && !mVoiceInput.isBlacklistedField(fieldContext); - } - - private boolean shouldShowVoiceButton(FieldContext fieldContext, EditorInfo editorInfo) { - @SuppressWarnings("deprecation") - final boolean noMic = StringUtils.inPrivateImeOptions(null, - LatinIME.IME_OPTION_NO_MICROPHONE_COMPAT, editorInfo) - || StringUtils.inPrivateImeOptions(mService.getPackageName(), - LatinIME.IME_OPTION_NO_MICROPHONE, editorInfo); - return ENABLE_VOICE_BUTTON && fieldCanDoVoice(fieldContext) && !noMic - && SpeechRecognizer.isRecognitionAvailable(mService); - } - - public static boolean isRecognitionAvailable(Context context) { - return SpeechRecognizer.isRecognitionAvailable(context); - } - - public void loadSettings(EditorInfo editorInfo, SharedPreferences sp) { - if (!VOICE_INSTALLED) { - return; - } - mHasUsedVoiceInput = sp.getBoolean(PREF_HAS_USED_VOICE_INPUT, false); - mHasUsedVoiceInputUnsupportedLocale = - sp.getBoolean(PREF_HAS_USED_VOICE_INPUT_UNSUPPORTED_LOCALE, false); - - mLocaleSupportedForVoiceInput = SubtypeSwitcher.isVoiceSupported( - mService, SubtypeSwitcher.getInstance().getInputLocaleStr()); - - final String voiceMode = sp.getString(PREF_VOICE_MODE, - mService.getString(R.string.voice_mode_main)); - mVoiceButtonEnabled = !voiceMode.equals(mService.getString(R.string.voice_mode_off)) - && shouldShowVoiceButton(makeFieldContext(), editorInfo); - mVoiceButtonOnPrimary = voiceMode.equals(mService.getString(R.string.voice_mode_main)); - } - - public void destroy() { - if (!VOICE_INSTALLED) { - return; - } - if (mVoiceInput != null) { - mVoiceInput.destroy(); - } - } - - public void onStartInputView(IBinder keyboardViewToken) { - if (!VOICE_INSTALLED) { - return; - } - // If keyboardViewToken is null, keyboardView is not attached but voiceView is attached. - IBinder windowToken = keyboardViewToken != null ? keyboardViewToken - : mVoiceInput.getView().getWindowToken(); - // If IME is in voice mode, but still needs to show the voice warning dialog, - // keep showing the warning. - if (mSubtypeSwitcher.isVoiceMode() && windowToken != null) { - // Close keyboard view if it is been shown. - final LatinKeyboardView keyboardView = KeyboardSwitcher.getInstance().getKeyboardView(); - if (keyboardView != null && keyboardView.isShown()) - keyboardView.purgeKeyboardAndClosing(); - startListening(false, windowToken); - } - // If we have no token, onAttachedToWindow will take care of showing dialog and start - // listening. - } - - public void onAttachedToWindow() { - if (!VOICE_INSTALLED) { - return; - } - // After onAttachedToWindow, we can show the voice warning dialog. See startListening() - // above. - VoiceInputWrapper.getInstance().setVoiceInput(mVoiceInput, mSubtypeSwitcher); - } - - public void onConfigurationChanged(Configuration configuration) { - if (!VOICE_INSTALLED) { - return; - } - if (mRecognizing) { - switchToRecognitionStatusView(configuration); - } - } - - @Override - public void onCancelVoice() { - if (!VOICE_INSTALLED) { - return; - } - if (mRecognizing) { - if (mSubtypeSwitcher.isVoiceMode()) { - // If voice mode is being canceled within LatinIME (i.e. time-out or user - // cancellation etc.), onCancelVoice() will be called first. LatinIME thinks it's - // still in voice mode. LatinIME needs to call switchToLastInputMethod(). - // Note that onCancelVoice() will be called again from SubtypeSwitcher. - switchToLastInputMethod(); - } else if (mSubtypeSwitcher.isKeyboardMode()) { - // If voice mode is being canceled out of LatinIME (i.e. by user's IME switching or - // as a result of switchToLastInputMethod() etc.), - // onCurrentInputMethodSubtypeChanged() will be called first. LatinIME will know - // that it's in keyboard mode and SubtypeSwitcher will call onCancelVoice(). - mRecognizing = false; - mService.switchToKeyboardView(); - } - } - } - - @Override - public void onVoiceResults(List<String> candidates, - Map<String, List<CharSequence>> alternatives) { - if (!VOICE_INSTALLED) { - return; - } - if (!mRecognizing) { - return; - } - mVoiceResults.candidates = candidates; - mVoiceResults.alternatives = alternatives; - mHandler.updateVoiceResults(); - } - - private FieldContext makeFieldContext() { - SubtypeSwitcher switcher = SubtypeSwitcher.getInstance(); - return new FieldContext(mService.getCurrentInputConnection(), - mService.getCurrentInputEditorInfo(), switcher.getInputLocaleStr(), - switcher.getEnabledLanguages()); - } - - // TODO: make this private (proguard issue) - public static class VoiceResults { - List<String> candidates; - Map<String, List<CharSequence>> alternatives; - } - - public static class VoiceInputWrapper { - private static final VoiceInputWrapper sInputWrapperInstance = new VoiceInputWrapper(); - private VoiceInput mVoiceInput; - public static VoiceInputWrapper getInstance() { - return sInputWrapperInstance; - } - private void setVoiceInput(VoiceInput voiceInput, SubtypeSwitcher switcher) { - if (!VOICE_INSTALLED) { - return; - } - if (mVoiceInput == null && voiceInput != null) { - mVoiceInput = voiceInput; - } - switcher.setVoiceInputWrapper(this); - } - - private VoiceInputWrapper() { - } - - public void cancel() { - if (!VOICE_INSTALLED) { - return; - } - if (mVoiceInput != null) mVoiceInput.cancel(); - } - - public void reset() { - if (!VOICE_INSTALLED) { - return; - } - if (mVoiceInput != null) mVoiceInput.reset(); - } - } - - // A list of locales which are supported by default for voice input, unless we get a - // different list from Gservices. - private static final String DEFAULT_VOICE_INPUT_SUPPORTED_LOCALES = - "en " + - "en_US " + - "en_GB " + - "en_AU " + - "en_CA " + - "en_IE " + - "en_IN " + - "en_NZ " + - "en_SG " + - "en_ZA "; - - public static String getSupportedLocalesString (ContentResolver resolver) { - return SettingsUtil.getSettingsString( - resolver, - SettingsUtil.LATIN_IME_VOICE_INPUT_SUPPORTED_LOCALES, - DEFAULT_VOICE_INPUT_SUPPORTED_LOCALES); - } - - public void startChangingConfiguration() { - mConfigurationChanging = true; - } - - public void finishChangingConfiguration() { - mConfigurationChanging = false; - } -} diff --git a/java/src/com/android/inputmethod/deprecated/compat/VoiceInputLoggerCompatUtils.java b/java/src/com/android/inputmethod/deprecated/compat/VoiceInputLoggerCompatUtils.java deleted file mode 100644 index 488390fbc..000000000 --- a/java/src/com/android/inputmethod/deprecated/compat/VoiceInputLoggerCompatUtils.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.inputmethod.deprecated.compat; - -import com.android.common.userhappiness.UserHappinessSignals; -import com.android.inputmethod.compat.CompatUtils; - -import java.lang.reflect.Method; - -public class VoiceInputLoggerCompatUtils { - public static final String EXTRA_TEXT_REPLACED_LENGTH = "length"; - public static final String EXTRA_BEFORE_N_BEST_CHOOSE = "before"; - public static final String EXTRA_AFTER_N_BEST_CHOOSE = "after"; - private static final Method METHOD_UserHappinessSignals_setHasVoiceLoggingInfo = - CompatUtils.getMethod(UserHappinessSignals.class, "setHasVoiceLoggingInfo", - boolean.class); - - public static void setHasVoiceLoggingInfoCompat(boolean hasLoggingInfo) { - CompatUtils.invoke(null, null, METHOD_UserHappinessSignals_setHasVoiceLoggingInfo, - hasLoggingInfo); - } -} diff --git a/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java b/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java deleted file mode 100644 index 421ee6529..000000000 --- a/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java +++ /dev/null @@ -1,255 +0,0 @@ -/* - * Copyright (C) 2008-2009 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.deprecated.languageswitcher; - -import android.content.SharedPreferences; -import android.content.SharedPreferences.Editor; -import android.content.res.Resources; -import android.os.Bundle; -import android.preference.CheckBoxPreference; -import android.preference.PreferenceActivity; -import android.preference.PreferenceGroup; -import android.preference.PreferenceManager; -import android.text.TextUtils; -import android.util.Pair; - -import com.android.inputmethod.compat.SharedPreferencesCompat; -import com.android.inputmethod.keyboard.KeyboardSet; -import com.android.inputmethod.latin.DictionaryFactory; -import com.android.inputmethod.latin.LocaleUtils; -import com.android.inputmethod.latin.R; -import com.android.inputmethod.latin.Settings; -import com.android.inputmethod.latin.StringUtils; - -import org.xmlpull.v1.XmlPullParserException; - -import java.io.IOException; -import java.text.Collator; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map.Entry; -import java.util.TreeMap; - -public class InputLanguageSelection extends PreferenceActivity { - - private SharedPreferences mPrefs; - private String mSelectedLanguages; - private HashMap<CheckBoxPreference, Locale> mLocaleMap = - new HashMap<CheckBoxPreference, Locale>(); - - private static class LocaleEntry implements Comparable<Object> { - private static Collator sCollator = Collator.getInstance(); - - private String mLabel; - public final Locale mLocale; - - public LocaleEntry(String label, Locale locale) { - this.mLabel = label; - this.mLocale = locale; - } - - @Override - public String toString() { - return this.mLabel; - } - - @Override - public int compareTo(Object o) { - return sCollator.compare(this.mLabel, ((LocaleEntry) o).mLabel); - } - } - - @Override - protected void onCreate(Bundle icicle) { - super.onCreate(icicle); - addPreferencesFromResource(R.xml.language_prefs); - // Get the settings preferences - mPrefs = PreferenceManager.getDefaultSharedPreferences(this); - mSelectedLanguages = mPrefs.getString(Settings.PREF_SELECTED_LANGUAGES, ""); - String[] languageList = mSelectedLanguages.split(","); - ArrayList<LocaleEntry> availableLanguages = getUniqueLocales(); - PreferenceGroup parent = getPreferenceScreen(); - final HashMap<Long, LocaleEntry> dictionaryIdLocaleMap = new HashMap<Long, LocaleEntry>(); - final TreeMap<LocaleEntry, Boolean> localeHasDictionaryMap = - new TreeMap<LocaleEntry, Boolean>(); - for (int i = 0; i < availableLanguages.size(); i++) { - LocaleEntry loc = availableLanguages.get(i); - Locale locale = loc.mLocale; - final Pair<Long, Boolean> hasDictionaryOrLayout = hasDictionaryOrLayout(locale); - final Long dictionaryId = hasDictionaryOrLayout.first; - final boolean hasLayout = hasDictionaryOrLayout.second; - final boolean hasDictionary = dictionaryId != null; - // Add this locale to the supported list if: - // 1) this locale has a layout/ 2) this locale has a dictionary - // If some locales have no layout but have a same dictionary, the shortest locale - // will be added to the supported list. - if (!hasLayout && !hasDictionary) { - continue; - } - if (hasLayout) { - localeHasDictionaryMap.put(loc, hasDictionary); - } - if (!hasDictionary) { - continue; - } - if (dictionaryIdLocaleMap.containsKey(dictionaryId)) { - final String newLocale = locale.toString(); - final String oldLocale = - dictionaryIdLocaleMap.get(dictionaryId).mLocale.toString(); - // Check if this locale is more appropriate to be the candidate of the input locale. - if (oldLocale.length() <= newLocale.length() && !hasLayout) { - // Don't add this new locale to the map<dictionary id, locale> if: - // 1) the new locale's name is longer than the existing one, and - // 2) the new locale doesn't have its layout - continue; - } - } - dictionaryIdLocaleMap.put(dictionaryId, loc); - } - - for (LocaleEntry localeEntry : dictionaryIdLocaleMap.values()) { - if (!localeHasDictionaryMap.containsKey(localeEntry)) { - localeHasDictionaryMap.put(localeEntry, true); - } - } - - for (Entry<LocaleEntry, Boolean> entry : localeHasDictionaryMap.entrySet()) { - final LocaleEntry localeEntry = entry.getKey(); - final Locale locale = localeEntry.mLocale; - final Boolean hasDictionary = entry.getValue(); - CheckBoxPreference pref = new CheckBoxPreference(this); - pref.setTitle(localeEntry.mLabel); - boolean checked = isLocaleIn(locale, languageList); - pref.setChecked(checked); - if (hasDictionary) { - pref.setSummary(R.string.has_dictionary); - } - mLocaleMap.put(pref, locale); - parent.addPreference(pref); - } - } - - private boolean isLocaleIn(Locale locale, String[] list) { - String lang = get5Code(locale); - for (int i = 0; i < list.length; i++) { - if (lang.equalsIgnoreCase(list[i])) return true; - } - return false; - } - - private Pair<Long, Boolean> hasDictionaryOrLayout(Locale locale) { - if (locale == null) return new Pair<Long, Boolean>(null, false); - final Resources res = getResources(); - final Locale saveLocale = LocaleUtils.setSystemLocale(res, locale); - final Long dictionaryId = DictionaryFactory.getDictionaryId(this, locale); - boolean hasLayout = false; - - try { - final String localeStr = locale.toString(); - final String[] layoutCountryCodes = KeyboardSet.parseKeyboardLocale( - getResources(), R.xml.keyboard_set).split(",", -1); - if (!TextUtils.isEmpty(localeStr) && layoutCountryCodes.length > 0) { - for (String s : layoutCountryCodes) { - if (s.equals(localeStr)) { - hasLayout = true; - break; - } - } - } - } catch (XmlPullParserException e) { - } catch (IOException e) { - } - LocaleUtils.setSystemLocale(res, saveLocale); - return new Pair<Long, Boolean>(dictionaryId, hasLayout); - } - - private String get5Code(Locale locale) { - String country = locale.getCountry(); - return locale.getLanguage() - + (TextUtils.isEmpty(country) ? "" : "_" + country); - } - - @Override - protected void onResume() { - super.onResume(); - } - - @Override - protected void onPause() { - super.onPause(); - // Save the selected languages - String checkedLanguages = ""; - PreferenceGroup parent = getPreferenceScreen(); - int count = parent.getPreferenceCount(); - for (int i = 0; i < count; i++) { - CheckBoxPreference pref = (CheckBoxPreference) parent.getPreference(i); - if (pref.isChecked()) { - checkedLanguages += get5Code(mLocaleMap.get(pref)) + ","; - } - } - if (checkedLanguages.length() < 1) checkedLanguages = null; // Save null - Editor editor = mPrefs.edit(); - editor.putString(Settings.PREF_SELECTED_LANGUAGES, checkedLanguages); - SharedPreferencesCompat.apply(editor); - } - - public ArrayList<LocaleEntry> getUniqueLocales() { - String[] locales = getAssets().getLocales(); - Arrays.sort(locales); - ArrayList<LocaleEntry> uniqueLocales = new ArrayList<LocaleEntry>(); - - final int origSize = locales.length; - LocaleEntry[] preprocess = new LocaleEntry[origSize]; - int finalSize = 0; - for (int i = 0 ; i < origSize; i++ ) { - String s = locales[i]; - int len = s.length(); - String language = ""; - String country = ""; - if (len == 5) { - language = s.substring(0, 2); - country = s.substring(3, 5); - } else if (len < 5) { - language = s; - } - Locale l = new Locale(language, country); - - // Exclude languages that are not relevant to LatinIME - if (TextUtils.isEmpty(language)) { - continue; - } - - if (finalSize == 0) { - preprocess[finalSize++] = - new LocaleEntry(StringUtils.getFullDisplayName(l, false), l); - } else { - if (s.equals("zz_ZZ")) { - // ignore this locale - } else { - final String displayName = StringUtils.getFullDisplayName(l, false); - preprocess[finalSize++] = new LocaleEntry(displayName, l); - } - } - } - for (int i = 0; i < finalSize ; i++) { - uniqueLocales.add(preprocess[i]); - } - return uniqueLocales; - } -} diff --git a/java/src/com/android/inputmethod/deprecated/languageswitcher/LanguageSwitcher.java b/java/src/com/android/inputmethod/deprecated/languageswitcher/LanguageSwitcher.java deleted file mode 100644 index 7e2627c81..000000000 --- a/java/src/com/android/inputmethod/deprecated/languageswitcher/LanguageSwitcher.java +++ /dev/null @@ -1,234 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -package com.android.inputmethod.deprecated.languageswitcher; - -import com.android.inputmethod.compat.SharedPreferencesCompat; -import com.android.inputmethod.latin.LatinIME; -import com.android.inputmethod.latin.LatinImeLogger; -import com.android.inputmethod.latin.LocaleUtils; -import com.android.inputmethod.latin.Settings; - -import android.content.SharedPreferences; -import android.content.SharedPreferences.Editor; -import android.content.res.Configuration; -import android.text.TextUtils; -import android.util.Log; - -import java.util.ArrayList; -import java.util.Locale; - -/** - * Keeps track of list of selected input languages and the current - * input language that the user has selected. - */ -public class LanguageSwitcher { - private static final String TAG = LanguageSwitcher.class.getSimpleName(); - - @SuppressWarnings("unused") - private static final String KEYBOARD_MODE = "keyboard"; - private static final String[] EMPTY_STIRNG_ARRAY = new String[0]; - - private final ArrayList<Locale> mLocales = new ArrayList<Locale>(); - private final LatinIME mIme; - private String[] mSelectedLanguageArray = EMPTY_STIRNG_ARRAY; - private String mSelectedLanguages; - private int mCurrentIndex = 0; - private String mDefaultInputLanguage; - private Locale mDefaultInputLocale; - private Locale mSystemLocale; - - public LanguageSwitcher(LatinIME ime) { - mIme = ime; - } - - public int getLocaleCount() { - return mLocales.size(); - } - - public void onConfigurationChanged(Configuration conf, SharedPreferences prefs) { - final Locale newLocale = conf.locale; - if (!getSystemLocale().toString().equals(newLocale.toString())) { - loadLocales(prefs, newLocale); - } - } - - /** - * Loads the currently selected input languages from shared preferences. - * @param sp shared preference for getting the current input language and enabled languages - * @param systemLocale the current system locale, stored for changing the current input language - * based on the system current system locale. - * @return whether there was any change - */ - public boolean loadLocales(SharedPreferences sp, Locale systemLocale) { - if (LatinImeLogger.sDBG) { - Log.d(TAG, "load locales"); - } - if (systemLocale != null) { - setSystemLocale(systemLocale); - } - String selectedLanguages = sp.getString(Settings.PREF_SELECTED_LANGUAGES, null); - String currentLanguage = sp.getString(Settings.PREF_INPUT_LANGUAGE, null); - if (TextUtils.isEmpty(selectedLanguages)) { - mSelectedLanguageArray = EMPTY_STIRNG_ARRAY; - mSelectedLanguages = null; - loadDefaults(); - if (mLocales.size() == 0) { - return false; - } - mLocales.clear(); - return true; - } - if (selectedLanguages.equals(mSelectedLanguages)) { - return false; - } - mSelectedLanguageArray = selectedLanguages.split(","); - mSelectedLanguages = selectedLanguages; // Cache it for comparison later - constructLocales(); - mCurrentIndex = 0; - if (currentLanguage != null) { - // Find the index - mCurrentIndex = 0; - for (int i = 0; i < mLocales.size(); i++) { - if (mSelectedLanguageArray[i].equals(currentLanguage)) { - mCurrentIndex = i; - break; - } - } - // If we didn't find the index, use the first one - } - return true; - } - - private void loadDefaults() { - if (LatinImeLogger.sDBG) { - Log.d(TAG, "load default locales:"); - } - mDefaultInputLocale = mIme.getResources().getConfiguration().locale; - String country = mDefaultInputLocale.getCountry(); - mDefaultInputLanguage = mDefaultInputLocale.getLanguage() + - (TextUtils.isEmpty(country) ? "" : "_" + country); - } - - private void constructLocales() { - mLocales.clear(); - for (final String lang : mSelectedLanguageArray) { - final Locale locale = LocaleUtils.constructLocaleFromString(lang); - mLocales.add(locale); - } - } - - /** - * Returns the currently selected input language code, or the display language code if - * no specific locale was selected for input. - */ - public String getInputLanguage() { - if (getLocaleCount() == 0) return mDefaultInputLanguage; - - return mSelectedLanguageArray[mCurrentIndex]; - } - - /** - * Returns the list of enabled language codes. - */ - public String[] getEnabledLanguages(boolean allowImplicitlySelectedLanguages) { - if (mSelectedLanguageArray.length == 0 && allowImplicitlySelectedLanguages) { - return new String[] { mDefaultInputLanguage }; - } - return mSelectedLanguageArray; - } - - /** - * Returns the currently selected input locale, or the display locale if no specific - * locale was selected for input. - */ - public Locale getInputLocale() { - if (getLocaleCount() == 0) return mDefaultInputLocale; - - return mLocales.get(mCurrentIndex); - } - - private int nextLocaleIndex() { - final int size = mLocales.size(); - return (mCurrentIndex + 1) % size; - } - - private int prevLocaleIndex() { - final int size = mLocales.size(); - return (mCurrentIndex - 1 + size) % size; - } - - /** - * Returns the next input locale in the list. Wraps around to the beginning of the - * list if we're at the end of the list. - */ - public Locale getNextInputLocale() { - if (getLocaleCount() == 0) return mDefaultInputLocale; - return mLocales.get(nextLocaleIndex()); - } - - /** - * Sets the system locale (display UI) used for comparing with the input language. - * @param locale the locale of the system - */ - private void setSystemLocale(Locale locale) { - mSystemLocale = locale; - } - - /** - * Returns the system locale. - * @return the system locale - */ - private Locale getSystemLocale() { - return mSystemLocale; - } - - /** - * Returns the previous input locale in the list. Wraps around to the end of the - * list if we're at the beginning of the list. - */ - public Locale getPrevInputLocale() { - if (getLocaleCount() == 0) return mDefaultInputLocale; - return mLocales.get(prevLocaleIndex()); - } - - public void reset() { - mCurrentIndex = 0; - } - - public void next() { - mCurrentIndex = nextLocaleIndex(); - } - - public void prev() { - mCurrentIndex = prevLocaleIndex(); - } - - public void setLocale(String localeStr) { - final int N = mLocales.size(); - for (int i = 0; i < N; ++i) { - if (mLocales.get(i).toString().equals(localeStr)) { - mCurrentIndex = i; - } - } - } - - public void persist(SharedPreferences prefs) { - Editor editor = prefs.edit(); - editor.putString(Settings.PREF_INPUT_LANGUAGE, getInputLanguage()); - SharedPreferencesCompat.apply(editor); - } -} diff --git a/java/src/com/android/inputmethod/deprecated/voice/FieldContext.java b/java/src/com/android/inputmethod/deprecated/voice/FieldContext.java deleted file mode 100644 index fd2cf3d25..000000000 --- a/java/src/com/android/inputmethod/deprecated/voice/FieldContext.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (C) 2009 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.deprecated.voice; - -import android.os.Bundle; -import android.util.Log; -import android.view.inputmethod.EditorInfo; -import android.view.inputmethod.ExtractedText; -import android.view.inputmethod.ExtractedTextRequest; -import android.view.inputmethod.InputConnection; - -/** - * Represents information about a given text field, which can be passed - * to the speech recognizer as context information. - */ -public class FieldContext { - private static final boolean DBG = false; - - static final String LABEL = "label"; - static final String HINT = "hint"; - static final String PACKAGE_NAME = "packageName"; - static final String FIELD_ID = "fieldId"; - static final String FIELD_NAME = "fieldName"; - static final String SINGLE_LINE = "singleLine"; - static final String INPUT_TYPE = "inputType"; - static final String IME_OPTIONS = "imeOptions"; - static final String SELECTED_LANGUAGE = "selectedLanguage"; - static final String ENABLED_LANGUAGES = "enabledLanguages"; - - Bundle mFieldInfo; - - public FieldContext(InputConnection conn, EditorInfo editorInfo, - String selectedLanguage, String[] enabledLanguages) { - mFieldInfo = new Bundle(); - addEditorInfoToBundle(editorInfo, mFieldInfo); - addInputConnectionToBundle(conn, mFieldInfo); - addLanguageInfoToBundle(selectedLanguage, enabledLanguages, mFieldInfo); - if (DBG) Log.i("FieldContext", "Bundle = " + mFieldInfo.toString()); - } - - private static String safeToString(Object o) { - if (o == null) { - return ""; - } - return o.toString(); - } - - private static void addEditorInfoToBundle(EditorInfo info, Bundle bundle) { - if (info == null) { - return; - } - - bundle.putString(LABEL, safeToString(info.label)); - bundle.putString(HINT, safeToString(info.hintText)); - bundle.putString(PACKAGE_NAME, safeToString(info.packageName)); - bundle.putInt(FIELD_ID, info.fieldId); - bundle.putString(FIELD_NAME, safeToString(info.fieldName)); - bundle.putInt(INPUT_TYPE, info.inputType); - bundle.putInt(IME_OPTIONS, info.imeOptions); - } - - @SuppressWarnings("static-access") - private static void addInputConnectionToBundle( - InputConnection conn, Bundle bundle) { - if (conn == null) { - return; - } - - ExtractedText et = conn.getExtractedText(new ExtractedTextRequest(), 0); - if (et == null) { - return; - } - bundle.putBoolean(SINGLE_LINE, (et.flags & et.FLAG_SINGLE_LINE) > 0); - } - - private static void addLanguageInfoToBundle( - String selectedLanguage, String[] enabledLanguages, Bundle bundle) { - bundle.putString(SELECTED_LANGUAGE, selectedLanguage); - bundle.putStringArray(ENABLED_LANGUAGES, enabledLanguages); - } - - public Bundle getBundle() { - return mFieldInfo; - } - - @Override - public String toString() { - return mFieldInfo.toString(); - } -} diff --git a/java/src/com/android/inputmethod/deprecated/voice/Hints.java b/java/src/com/android/inputmethod/deprecated/voice/Hints.java deleted file mode 100644 index 17a19bf23..000000000 --- a/java/src/com/android/inputmethod/deprecated/voice/Hints.java +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Copyright (C) 2009 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.deprecated.voice; - -import com.android.inputmethod.compat.SharedPreferencesCompat; -import com.android.inputmethod.latin.R; - -import android.content.ContentResolver; -import android.content.Context; -import android.content.SharedPreferences; -import android.view.inputmethod.InputConnection; - -import java.util.Calendar; -import java.util.HashMap; -import java.util.Map; - -/** - * Logic to determine when to display hints on usage to the user. - */ -public class Hints { - public interface Display { - public void showHint(int viewResource); - } - - private static final String PREF_VOICE_HINT_NUM_UNIQUE_DAYS_SHOWN = - "voice_hint_num_unique_days_shown"; - private static final String PREF_VOICE_HINT_LAST_TIME_SHOWN = - "voice_hint_last_time_shown"; - private static final String PREF_VOICE_INPUT_LAST_TIME_USED = - "voice_input_last_time_used"; - private static final String PREF_VOICE_PUNCTUATION_HINT_VIEW_COUNT = - "voice_punctuation_hint_view_count"; - private static final int DEFAULT_SWIPE_HINT_MAX_DAYS_TO_SHOW = 7; - private static final int DEFAULT_PUNCTUATION_HINT_MAX_DISPLAYS = 7; - - private final Context mContext; - private final SharedPreferences mPrefs; - private final Display mDisplay; - private boolean mVoiceResultContainedPunctuation; - private int mSwipeHintMaxDaysToShow; - private int mPunctuationHintMaxDisplays; - - // Only show punctuation hint if voice result did not contain punctuation. - static final Map<CharSequence, String> SPEAKABLE_PUNCTUATION - = new HashMap<CharSequence, String>(); - static { - SPEAKABLE_PUNCTUATION.put(",", "comma"); - SPEAKABLE_PUNCTUATION.put(".", "period"); - SPEAKABLE_PUNCTUATION.put("?", "question mark"); - } - - public Hints(Context context, SharedPreferences prefs, Display display) { - mContext = context; - mPrefs = prefs; - mDisplay = display; - - ContentResolver cr = mContext.getContentResolver(); - mSwipeHintMaxDaysToShow = SettingsUtil.getSettingsInt( - cr, - SettingsUtil.LATIN_IME_VOICE_INPUT_SWIPE_HINT_MAX_DAYS, - DEFAULT_SWIPE_HINT_MAX_DAYS_TO_SHOW); - mPunctuationHintMaxDisplays = SettingsUtil.getSettingsInt( - cr, - SettingsUtil.LATIN_IME_VOICE_INPUT_PUNCTUATION_HINT_MAX_DISPLAYS, - DEFAULT_PUNCTUATION_HINT_MAX_DISPLAYS); - } - - public boolean showSwipeHintIfNecessary(boolean fieldRecommended) { - if (fieldRecommended && shouldShowSwipeHint()) { - showHint(R.layout.voice_swipe_hint); - return true; - } - - return false; - } - - public boolean showPunctuationHintIfNecessary(InputConnection ic) { - if (!mVoiceResultContainedPunctuation - && ic != null - && getAndIncrementPref(PREF_VOICE_PUNCTUATION_HINT_VIEW_COUNT) - < mPunctuationHintMaxDisplays) { - CharSequence charBeforeCursor = ic.getTextBeforeCursor(1, 0); - if (SPEAKABLE_PUNCTUATION.containsKey(charBeforeCursor)) { - showHint(R.layout.voice_punctuation_hint); - return true; - } - } - - return false; - } - - public void registerVoiceResult(String text) { - // Update the current time as the last time voice input was used. - SharedPreferences.Editor editor = mPrefs.edit(); - editor.putLong(PREF_VOICE_INPUT_LAST_TIME_USED, System.currentTimeMillis()); - SharedPreferencesCompat.apply(editor); - - mVoiceResultContainedPunctuation = false; - for (CharSequence s : SPEAKABLE_PUNCTUATION.keySet()) { - if (text.indexOf(s.toString()) >= 0) { - mVoiceResultContainedPunctuation = true; - break; - } - } - } - - private boolean shouldShowSwipeHint() { - final SharedPreferences prefs = mPrefs; - - int numUniqueDaysShown = prefs.getInt(PREF_VOICE_HINT_NUM_UNIQUE_DAYS_SHOWN, 0); - - // If we've already shown the hint for enough days, we'll return false. - if (numUniqueDaysShown < mSwipeHintMaxDaysToShow) { - - long lastTimeVoiceWasUsed = prefs.getLong(PREF_VOICE_INPUT_LAST_TIME_USED, 0); - - // If the user has used voice today, we'll return false. (We don't show the hint on - // any day that the user has already used voice.) - if (!isFromToday(lastTimeVoiceWasUsed)) { - return true; - } - } - - return false; - } - - /** - * Determines whether the provided time is from some time today (i.e., this day, month, - * and year). - */ - private boolean isFromToday(long timeInMillis) { - if (timeInMillis == 0) return false; - - Calendar today = Calendar.getInstance(); - today.setTimeInMillis(System.currentTimeMillis()); - - Calendar timestamp = Calendar.getInstance(); - timestamp.setTimeInMillis(timeInMillis); - - return (today.get(Calendar.YEAR) == timestamp.get(Calendar.YEAR) && - today.get(Calendar.DAY_OF_MONTH) == timestamp.get(Calendar.DAY_OF_MONTH) && - today.get(Calendar.MONTH) == timestamp.get(Calendar.MONTH)); - } - - private void showHint(int hintViewResource) { - final SharedPreferences prefs = mPrefs; - - int numUniqueDaysShown = prefs.getInt(PREF_VOICE_HINT_NUM_UNIQUE_DAYS_SHOWN, 0); - long lastTimeHintWasShown = prefs.getLong(PREF_VOICE_HINT_LAST_TIME_SHOWN, 0); - - // If this is the first time the hint is being shown today, increase the saved values - // to represent that. We don't need to increase the last time the hint was shown unless - // it is a different day from the current value. - if (!isFromToday(lastTimeHintWasShown)) { - SharedPreferences.Editor editor = prefs.edit(); - editor.putInt(PREF_VOICE_HINT_NUM_UNIQUE_DAYS_SHOWN, numUniqueDaysShown + 1); - editor.putLong(PREF_VOICE_HINT_LAST_TIME_SHOWN, System.currentTimeMillis()); - SharedPreferencesCompat.apply(editor); - } - - if (mDisplay != null) { - mDisplay.showHint(hintViewResource); - } - } - - private int getAndIncrementPref(String pref) { - final SharedPreferences prefs = mPrefs; - int value = prefs.getInt(pref, 0); - SharedPreferences.Editor editor = prefs.edit(); - editor.putInt(pref, value + 1); - SharedPreferencesCompat.apply(editor); - return value; - } -} diff --git a/java/src/com/android/inputmethod/deprecated/voice/RecognitionView.java b/java/src/com/android/inputmethod/deprecated/voice/RecognitionView.java deleted file mode 100644 index ff8b1abce..000000000 --- a/java/src/com/android/inputmethod/deprecated/voice/RecognitionView.java +++ /dev/null @@ -1,355 +0,0 @@ -/* - * Copyright (C) 2009 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.deprecated.voice; - -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.CornerPathEffect; -import android.graphics.Paint; -import android.graphics.Path; -import android.graphics.PathEffect; -import android.graphics.drawable.Drawable; -import android.os.Handler; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.View.OnClickListener; -import android.widget.Button; -import android.widget.ImageView; -import android.widget.ProgressBar; -import android.widget.TextView; - -import com.android.inputmethod.latin.R; -import com.android.inputmethod.latin.StringUtils; -import com.android.inputmethod.latin.SubtypeSwitcher; - -import java.io.ByteArrayOutputStream; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.nio.ShortBuffer; -import java.util.Locale; - -/** - * The user interface for the "Speak now" and "working" states. - * Displays a recognition dialog (with waveform, voice meter, etc.), - * plays beeps, shows errors, etc. - */ -public class RecognitionView { - private static final String TAG = "RecognitionView"; - - private Handler mUiHandler; // Reference to UI thread - private View mView; - private Context mContext; - - private TextView mText; - private ImageView mImage; - private View mProgress; - private SoundIndicator mSoundIndicator; - private TextView mLanguage; - private Button mButton; - - private Drawable mInitializing; - private Drawable mError; - - private static final int INIT = 0; - private static final int LISTENING = 1; - private static final int WORKING = 2; - private static final int READY = 3; - - private int mState = INIT; - - private final View mPopupLayout; - - private final Drawable mListeningBorder; - private final Drawable mWorkingBorder; - private final Drawable mErrorBorder; - - public RecognitionView(Context context, OnClickListener clickListener) { - mUiHandler = new Handler(); - - LayoutInflater inflater = (LayoutInflater) context.getSystemService( - Context.LAYOUT_INFLATER_SERVICE); - - mView = inflater.inflate(R.layout.recognition_status, null); - - mPopupLayout= mView.findViewById(R.id.popup_layout); - - // Pre-load volume level images - Resources r = context.getResources(); - - mListeningBorder = r.getDrawable(R.drawable.vs_dialog_red); - mWorkingBorder = r.getDrawable(R.drawable.vs_dialog_blue); - mErrorBorder = r.getDrawable(R.drawable.vs_dialog_yellow); - - mInitializing = r.getDrawable(R.drawable.mic_slash); - mError = r.getDrawable(R.drawable.caution); - - mImage = (ImageView) mView.findViewById(R.id.image); - mProgress = mView.findViewById(R.id.progress); - mSoundIndicator = (SoundIndicator) mView.findViewById(R.id.sound_indicator); - - mButton = (Button) mView.findViewById(R.id.button); - mButton.setOnClickListener(clickListener); - mText = (TextView) mView.findViewById(R.id.text); - mLanguage = (TextView) mView.findViewById(R.id.language); - - mContext = context; - } - - public View getView() { - return mView; - } - - public void restoreState() { - mUiHandler.post(new Runnable() { - @Override - public void run() { - // Restart the spinner - if (mState == WORKING) { - ((ProgressBar) mProgress).setIndeterminate(false); - ((ProgressBar) mProgress).setIndeterminate(true); - } - } - }); - } - - public void showInitializing() { - mUiHandler.post(new Runnable() { - @Override - public void run() { - mState = INIT; - prepareDialog(mContext.getText(R.string.voice_initializing), mInitializing, - mContext.getText(R.string.cancel)); - } - }); - } - - public void showListening() { - Log.d(TAG, "#showListening"); - mUiHandler.post(new Runnable() { - @Override - public void run() { - mState = LISTENING; - prepareDialog(mContext.getText(R.string.voice_listening), null, - mContext.getText(R.string.cancel)); - } - }); - } - - public void updateVoiceMeter(float rmsdB) { - mSoundIndicator.setRmsdB(rmsdB); - } - - public void showError(final String message) { - mUiHandler.post(new Runnable() { - @Override - public void run() { - mState = READY; - prepareDialog(message, mError, mContext.getText(R.string.ok)); - } - }); - } - - public void showWorking( - final ByteArrayOutputStream waveBuffer, - final int speechStartPosition, - final int speechEndPosition) { - mUiHandler.post(new Runnable() { - @Override - public void run() { - mState = WORKING; - prepareDialog(mContext.getText(R.string.voice_working), null, mContext - .getText(R.string.cancel)); - final ShortBuffer buf = ByteBuffer.wrap(waveBuffer.toByteArray()).order( - ByteOrder.nativeOrder()).asShortBuffer(); - buf.position(0); - waveBuffer.reset(); - showWave(buf, speechStartPosition / 2, speechEndPosition / 2); - } - }); - } - - private void prepareDialog(CharSequence text, Drawable image, - CharSequence btnTxt) { - - /* - * The mic of INIT and of LISTENING has to be displayed in the same position. To accomplish - * that, some text visibility are not set as GONE but as INVISIBLE. - */ - switch (mState) { - case INIT: - mText.setVisibility(View.INVISIBLE); - - mProgress.setVisibility(View.GONE); - - mImage.setVisibility(View.VISIBLE); - mImage.setImageResource(R.drawable.mic_slash); - - mSoundIndicator.setVisibility(View.GONE); - mSoundIndicator.stop(); - - mLanguage.setVisibility(View.INVISIBLE); - - mPopupLayout.setBackgroundDrawable(mListeningBorder); - break; - case LISTENING: - mText.setVisibility(View.VISIBLE); - mText.setText(text); - - mProgress.setVisibility(View.GONE); - - mImage.setVisibility(View.GONE); - - mSoundIndicator.setVisibility(View.VISIBLE); - mSoundIndicator.start(); - - Locale locale = SubtypeSwitcher.getInstance().getInputLocale(); - - mLanguage.setVisibility(View.VISIBLE); - mLanguage.setText(StringUtils.getFullDisplayName(locale, true)); - - mPopupLayout.setBackgroundDrawable(mListeningBorder); - break; - case WORKING: - - mText.setVisibility(View.VISIBLE); - mText.setText(text); - - mProgress.setVisibility(View.VISIBLE); - - mImage.setVisibility(View.VISIBLE); - - mSoundIndicator.setVisibility(View.GONE); - mSoundIndicator.stop(); - - mLanguage.setVisibility(View.GONE); - - mPopupLayout.setBackgroundDrawable(mWorkingBorder); - break; - case READY: - mText.setVisibility(View.VISIBLE); - mText.setText(text); - - mProgress.setVisibility(View.GONE); - - mImage.setVisibility(View.VISIBLE); - mImage.setImageResource(R.drawable.caution); - - mSoundIndicator.setVisibility(View.GONE); - mSoundIndicator.stop(); - - mLanguage.setVisibility(View.GONE); - - mPopupLayout.setBackgroundDrawable(mErrorBorder); - break; - default: - Log.w(TAG, "Unknown state " + mState); - } - mPopupLayout.requestLayout(); - mButton.setText(btnTxt); - } - - /** - * @return an average abs of the specified buffer. - */ - private static int getAverageAbs(ShortBuffer buffer, int start, int i, int npw) { - int from = start + i * npw; - int end = from + npw; - int total = 0; - for (int x = from; x < end; x++) { - total += Math.abs(buffer.get(x)); - } - return total / npw; - } - - - /** - * Shows waveform of input audio. - * - * Copied from version in VoiceSearch's RecognitionActivity. - * - * TODO: adjust stroke width based on the size of data. - * TODO: use dip rather than pixels. - */ - private void showWave(ShortBuffer waveBuffer, int startPosition, int endPosition) { - final int w = ((View) mImage.getParent()).getWidth(); - final int h = ((View) mImage.getParent()).getHeight(); - if (w <= 0 || h <= 0) { - // view is not visible this time. Skip drawing. - return; - } - final Bitmap b = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); - final Canvas c = new Canvas(b); - final Paint paint = new Paint(); - paint.setColor(0xFFFFFFFF); // 0xAARRGGBB - paint.setAntiAlias(true); - paint.setStyle(Paint.Style.STROKE); - paint.setAlpha(80); - - final PathEffect effect = new CornerPathEffect(3); - paint.setPathEffect(effect); - - final int numSamples = waveBuffer.remaining(); - int endIndex; - if (endPosition == 0) { - endIndex = numSamples; - } else { - endIndex = Math.min(endPosition, numSamples); - } - - int startIndex = startPosition - 2000; // include 250ms before speech - if (startIndex < 0) { - startIndex = 0; - } - final int numSamplePerWave = 200; // 8KHz 25ms = 200 samples - final float scale = 10.0f / 65536.0f; - - final int count = (endIndex - startIndex) / numSamplePerWave; - final float deltaX = 1.0f * w / count; - int yMax = h / 2; - Path path = new Path(); - c.translate(0, yMax); - float x = 0; - path.moveTo(x, 0); - for (int i = 0; i < count; i++) { - final int avabs = getAverageAbs(waveBuffer, startIndex, i , numSamplePerWave); - int sign = ( (i & 01) == 0) ? -1 : 1; - final float y = Math.min(yMax, avabs * h * scale) * sign; - path.lineTo(x, y); - x += deltaX; - path.lineTo(x, y); - } - if (deltaX > 4) { - paint.setStrokeWidth(2); - } else { - paint.setStrokeWidth(Math.max(0, (int) (deltaX -.05))); - } - c.drawPath(path, paint); - mImage.setImageBitmap(b); - } - - public void finish() { - mUiHandler.post(new Runnable() { - @Override - public void run() { - mSoundIndicator.stop(); - } - }); - } -} diff --git a/java/src/com/android/inputmethod/deprecated/voice/SettingsUtil.java b/java/src/com/android/inputmethod/deprecated/voice/SettingsUtil.java deleted file mode 100644 index 855a09a1d..000000000 --- a/java/src/com/android/inputmethod/deprecated/voice/SettingsUtil.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (C) 2009 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.deprecated.voice; - -import android.content.ContentResolver; -import android.provider.Settings; - -/** - * Utility for retrieving settings from Settings.Secure. - */ -public class SettingsUtil { - /** - * A whitespace-separated list of supported locales for voice input from the keyboard. - */ - public static final String LATIN_IME_VOICE_INPUT_SUPPORTED_LOCALES = - "latin_ime_voice_input_supported_locales"; - - /** - * A whitespace-separated list of recommended app packages for voice input from the - * keyboard. - */ - public static final String LATIN_IME_VOICE_INPUT_RECOMMENDED_PACKAGES = - "latin_ime_voice_input_recommended_packages"; - - /** - * The maximum number of unique days to show the swipe hint for voice input. - */ - public static final String LATIN_IME_VOICE_INPUT_SWIPE_HINT_MAX_DAYS = - "latin_ime_voice_input_swipe_hint_max_days"; - - /** - * The maximum number of times to show the punctuation hint for voice input. - */ - public static final String LATIN_IME_VOICE_INPUT_PUNCTUATION_HINT_MAX_DISPLAYS = - "latin_ime_voice_input_punctuation_hint_max_displays"; - - /** - * Endpointer parameters for voice input from the keyboard. - */ - public static final String LATIN_IME_SPEECH_MINIMUM_LENGTH_MILLIS = - "latin_ime_speech_minimum_length_millis"; - public static final String LATIN_IME_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS = - "latin_ime_speech_input_complete_silence_length_millis"; - public static final String LATIN_IME_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS = - "latin_ime_speech_input_possibly_complete_silence_length_millis"; - - /** - * Min and max volume levels that can be displayed on the "speak now" screen. - */ - public static final String LATIN_IME_MIN_MICROPHONE_LEVEL = - "latin_ime_min_microphone_level"; - public static final String LATIN_IME_MAX_MICROPHONE_LEVEL = - "latin_ime_max_microphone_level"; - - /** - * The number of sentence-level alternates to request of the server. - */ - public static final String LATIN_IME_MAX_VOICE_RESULTS = "latin_ime_max_voice_results"; - - /** - * Get a string-valued setting. - * - * @param cr The content resolver to use - * @param key The setting to look up - * @param defaultValue The default value to use if none can be found - * @return The value of the setting, or defaultValue if it couldn't be found - */ - public static String getSettingsString(ContentResolver cr, String key, String defaultValue) { - String result = Settings.Secure.getString(cr, key); - return (result == null) ? defaultValue : result; - } - - /** - * Get an int-valued setting. - * - * @param cr The content resolver to use - * @param key The setting to look up - * @param defaultValue The default value to use if the setting couldn't be found or parsed - * @return The value of the setting, or defaultValue if it couldn't be found or parsed - */ - public static int getSettingsInt(ContentResolver cr, String key, int defaultValue) { - return Settings.Secure.getInt(cr, key, defaultValue); - } - - /** - * Get a float-valued setting. - * - * @param cr The content resolver to use - * @param key The setting to look up - * @param defaultValue The default value to use if the setting couldn't be found or parsed - * @return The value of the setting, or defaultValue if it couldn't be found or parsed - */ - public static float getSettingsFloat(ContentResolver cr, String key, float defaultValue) { - return Settings.Secure.getFloat(cr, key, defaultValue); - } -} diff --git a/java/src/com/android/inputmethod/deprecated/voice/SoundIndicator.java b/java/src/com/android/inputmethod/deprecated/voice/SoundIndicator.java deleted file mode 100644 index 25b314085..000000000 --- a/java/src/com/android/inputmethod/deprecated/voice/SoundIndicator.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -package com.android.inputmethod.deprecated.voice; - -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.Bitmap.Config; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.PorterDuff; -import android.graphics.PorterDuffXfermode; -import android.graphics.Rect; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; -import android.os.Handler; -import android.util.AttributeSet; -import android.widget.ImageView; - -import com.android.inputmethod.latin.R; - -/** - * A widget which shows the volume of audio using a microphone icon - */ -public class SoundIndicator extends ImageView { - @SuppressWarnings("unused") - private static final String TAG = "SoundIndicator"; - - private static final float UP_SMOOTHING_FACTOR = 0.9f; - private static final float DOWN_SMOOTHING_FACTOR = 0.4f; - - private static final float AUDIO_METER_MIN_DB = 7.0f; - private static final float AUDIO_METER_DB_RANGE = 20.0f; - - private static final long FRAME_DELAY = 50; - - private Bitmap mDrawingBuffer; - private Canvas mBufferCanvas; - private Bitmap mEdgeBitmap; - private float mLevel = 0.0f; - private Drawable mFrontDrawable; - private Paint mClearPaint; - private Paint mMultPaint; - private int mEdgeBitmapOffset; - - private Handler mHandler; - - private Runnable mDrawFrame = new Runnable() { - public void run() { - invalidate(); - mHandler.postDelayed(mDrawFrame, FRAME_DELAY); - } - }; - - public SoundIndicator(Context context) { - this(context, null); - } - - public SoundIndicator(Context context, AttributeSet attrs) { - super(context, attrs); - - mFrontDrawable = getDrawable(); - BitmapDrawable edgeDrawable = - (BitmapDrawable) context.getResources().getDrawable(R.drawable.vs_popup_mic_edge); - mEdgeBitmap = edgeDrawable.getBitmap(); - mEdgeBitmapOffset = mEdgeBitmap.getHeight() / 2; - - mDrawingBuffer = - Bitmap.createBitmap(mFrontDrawable.getIntrinsicWidth(), - mFrontDrawable.getIntrinsicHeight(), Config.ARGB_8888); - - mBufferCanvas = new Canvas(mDrawingBuffer); - - // Initialize Paints. - mClearPaint = new Paint(); - mClearPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); - - mMultPaint = new Paint(); - mMultPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.MULTIPLY)); - - mHandler = new Handler(); - } - - @Override - public void onDraw(Canvas canvas) { - //super.onDraw(canvas); - - float w = getWidth(); - float h = getHeight(); - - // Clear the buffer canvas - mBufferCanvas.drawRect(0, 0, w, h, mClearPaint); - - // Set its clip so we don't draw the front image all the way to the top - Rect clip = new Rect(0, - (int) ((1.0 - mLevel) * (h + mEdgeBitmapOffset)) - mEdgeBitmapOffset, - (int) w, - (int) h); - - mBufferCanvas.save(); - mBufferCanvas.clipRect(clip); - - // Draw the front image - mFrontDrawable.setBounds(new Rect(0, 0, (int) w, (int) h)); - mFrontDrawable.draw(mBufferCanvas); - - mBufferCanvas.restore(); - - // Draw the edge image on top of the buffer image with a multiply mode - mBufferCanvas.drawBitmap(mEdgeBitmap, 0, clip.top, mMultPaint); - - // Draw the buffer image (on top of the background image) - canvas.drawBitmap(mDrawingBuffer, 0, 0, null); - } - - /** - * Sets the sound level - * - * @param rmsdB The level of the sound, in dB. - */ - public void setRmsdB(float rmsdB) { - float level = ((rmsdB - AUDIO_METER_MIN_DB) / AUDIO_METER_DB_RANGE); - - level = Math.min(Math.max(0.0f, level), 1.0f); - - // We smooth towards the new level - if (level > mLevel) { - mLevel = (level - mLevel) * UP_SMOOTHING_FACTOR + mLevel; - } else { - mLevel = (level - mLevel) * DOWN_SMOOTHING_FACTOR + mLevel; - } - invalidate(); - } - - public void start() { - mHandler.post(mDrawFrame); - } - - public void stop() { - mHandler.removeCallbacks(mDrawFrame); - } -} diff --git a/java/src/com/android/inputmethod/deprecated/voice/VoiceInput.java b/java/src/com/android/inputmethod/deprecated/voice/VoiceInput.java deleted file mode 100644 index 8969a2168..000000000 --- a/java/src/com/android/inputmethod/deprecated/voice/VoiceInput.java +++ /dev/null @@ -1,692 +0,0 @@ -/* - * Copyright (C) 2009 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.deprecated.voice; - -import com.android.inputmethod.latin.EditingUtils; -import com.android.inputmethod.latin.LatinImeLogger; -import com.android.inputmethod.latin.R; -import com.android.inputmethod.latin.StaticInnerHandlerWrapper; - -import android.content.ContentResolver; -import android.content.Context; -import android.content.Intent; -import android.content.res.Configuration; -import android.os.Build; -import android.os.Bundle; -import android.os.Message; -import android.os.Parcelable; -import android.speech.RecognitionListener; -import android.speech.RecognizerIntent; -import android.speech.SpeechRecognizer; -import android.util.Log; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.inputmethod.InputConnection; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -/** - * Speech recognition input, including both user interface and a background - * process to stream audio to the network recognizer. This class supplies a - * View (getView()), which it updates as recognition occurs. The user of this - * class is responsible for making the view visible to the user, as well as - * handling various events returned through UiListener. - */ -public class VoiceInput implements OnClickListener { - private static final String TAG = "VoiceInput"; - private static final String EXTRA_RECOGNITION_CONTEXT = - "android.speech.extras.RECOGNITION_CONTEXT"; - private static final String EXTRA_CALLING_PACKAGE = "calling_package"; - private static final String EXTRA_ALTERNATES = "android.speech.extra.ALTERNATES"; - private static final int MAX_ALT_LIST_LENGTH = 6; - private static boolean DBG = LatinImeLogger.sDBG; - - private static final String DEFAULT_RECOMMENDED_PACKAGES = - "com.android.mms " + - "com.google.android.gm " + - "com.google.android.talk " + - "com.google.android.apps.googlevoice " + - "com.android.email " + - "com.android.browser "; - - // WARNING! Before enabling this, fix the problem with calling getExtractedText() in - // landscape view. It causes Extracted text updates to be rejected due to a token mismatch - public static boolean ENABLE_WORD_CORRECTIONS = true; - - // Dummy word suggestion which means "delete current word" - public static final String DELETE_SYMBOL = " \u00D7 "; // times symbol - - private Whitelist mRecommendedList; - private Whitelist mBlacklist; - - private VoiceInputLogger mLogger; - - // Names of a few extras defined in VoiceSearch's RecognitionController - // Note, the version of voicesearch that shipped in Froyo returns the raw - // RecognitionClientAlternates protocol buffer under the key "alternates", - // so a VS market update must be installed on Froyo devices in order to see - // alternatives. - private static final String ALTERNATES_BUNDLE = "alternates_bundle"; - - // This is copied from the VoiceSearch app. - @SuppressWarnings("unused") - private static final class AlternatesBundleKeys { - public static final String ALTERNATES = "alternates"; - public static final String CONFIDENCE = "confidence"; - public static final String LENGTH = "length"; - public static final String MAX_SPAN_LENGTH = "max_span_length"; - public static final String SPANS = "spans"; - public static final String SPAN_KEY_DELIMITER = ":"; - public static final String START = "start"; - public static final String TEXT = "text"; - } - - // Names of a few intent extras defined in VoiceSearch's RecognitionService. - // These let us tweak the endpointer parameters. - private static final String EXTRA_SPEECH_MINIMUM_LENGTH_MILLIS = - "android.speech.extras.SPEECH_INPUT_MINIMUM_LENGTH_MILLIS"; - private static final String EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS = - "android.speech.extras.SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS"; - private static final String EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS = - "android.speech.extras.SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS"; - - // The usual endpointer default value for input complete silence length is 0.5 seconds, - // but that's used for things like voice search. For dictation-like voice input like this, - // we go with a more liberal value of 1 second. This value will only be used if a value - // is not provided from Gservices. - private static final String INPUT_COMPLETE_SILENCE_LENGTH_DEFAULT_VALUE_MILLIS = "1000"; - - // Used to record part of that state for logging purposes. - public static final int DEFAULT = 0; - public static final int LISTENING = 1; - public static final int WORKING = 2; - public static final int ERROR = 3; - - private int mAfterVoiceInputDeleteCount = 0; - private int mAfterVoiceInputInsertCount = 0; - private int mAfterVoiceInputInsertPunctuationCount = 0; - private int mAfterVoiceInputCursorPos = 0; - private int mAfterVoiceInputSelectionSpan = 0; - - private int mState = DEFAULT; - - private final static int MSG_RESET = 1; - - private final UIHandler mHandler = new UIHandler(this); - - private static class UIHandler extends StaticInnerHandlerWrapper<VoiceInput> { - public UIHandler(VoiceInput outerInstance) { - super(outerInstance); - } - - @Override - public void handleMessage(Message msg) { - if (msg.what == MSG_RESET) { - final VoiceInput voiceInput = getOuterInstance(); - voiceInput.mState = DEFAULT; - voiceInput.mRecognitionView.finish(); - voiceInput.mUiListener.onCancelVoice(); - } - } - }; - - /** - * Events relating to the recognition UI. You must implement these. - */ - public interface UiListener { - - /** - * @param recognitionResults a set of transcripts for what the user - * spoke, sorted by likelihood. - */ - public void onVoiceResults( - List<String> recognitionResults, - Map<String, List<CharSequence>> alternatives); - - /** - * Called when the user cancels speech recognition. - */ - public void onCancelVoice(); - } - - private SpeechRecognizer mSpeechRecognizer; - private RecognitionListener mRecognitionListener; - private RecognitionView mRecognitionView; - private UiListener mUiListener; - private Context mContext; - - /** - * @param context the service or activity in which we're running. - * @param uiHandler object to receive events from VoiceInput. - */ - public VoiceInput(Context context, UiListener uiHandler) { - mLogger = VoiceInputLogger.getLogger(context); - mRecognitionListener = new ImeRecognitionListener(); - mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(context); - mSpeechRecognizer.setRecognitionListener(mRecognitionListener); - mUiListener = uiHandler; - mContext = context; - newView(); - - String recommendedPackages = SettingsUtil.getSettingsString( - context.getContentResolver(), - SettingsUtil.LATIN_IME_VOICE_INPUT_RECOMMENDED_PACKAGES, - DEFAULT_RECOMMENDED_PACKAGES); - - mRecommendedList = new Whitelist(); - for (String recommendedPackage : recommendedPackages.split("\\s+")) { - mRecommendedList.addApp(recommendedPackage); - } - - mBlacklist = new Whitelist(); - mBlacklist.addApp("com.google.android.setupwizard"); - } - - public void setCursorPos(int pos) { - mAfterVoiceInputCursorPos = pos; - } - - public int getCursorPos() { - return mAfterVoiceInputCursorPos; - } - - public void setSelectionSpan(int span) { - mAfterVoiceInputSelectionSpan = span; - } - - public int getSelectionSpan() { - return mAfterVoiceInputSelectionSpan; - } - - public void incrementTextModificationDeleteCount(int count){ - mAfterVoiceInputDeleteCount += count; - // Send up intents for other text modification types - if (mAfterVoiceInputInsertCount > 0) { - logTextModifiedByTypingInsertion(mAfterVoiceInputInsertCount); - mAfterVoiceInputInsertCount = 0; - } - if (mAfterVoiceInputInsertPunctuationCount > 0) { - logTextModifiedByTypingInsertionPunctuation(mAfterVoiceInputInsertPunctuationCount); - mAfterVoiceInputInsertPunctuationCount = 0; - } - - } - - public void incrementTextModificationInsertCount(int count){ - mAfterVoiceInputInsertCount += count; - if (mAfterVoiceInputSelectionSpan > 0) { - // If text was highlighted before inserting the char, count this as - // a delete. - mAfterVoiceInputDeleteCount += mAfterVoiceInputSelectionSpan; - } - // Send up intents for other text modification types - if (mAfterVoiceInputDeleteCount > 0) { - logTextModifiedByTypingDeletion(mAfterVoiceInputDeleteCount); - mAfterVoiceInputDeleteCount = 0; - } - if (mAfterVoiceInputInsertPunctuationCount > 0) { - logTextModifiedByTypingInsertionPunctuation(mAfterVoiceInputInsertPunctuationCount); - mAfterVoiceInputInsertPunctuationCount = 0; - } - } - - public void incrementTextModificationInsertPunctuationCount(int count){ - mAfterVoiceInputInsertPunctuationCount += count; - if (mAfterVoiceInputSelectionSpan > 0) { - // If text was highlighted before inserting the char, count this as - // a delete. - mAfterVoiceInputDeleteCount += mAfterVoiceInputSelectionSpan; - } - // Send up intents for aggregated non-punctuation insertions - if (mAfterVoiceInputDeleteCount > 0) { - logTextModifiedByTypingDeletion(mAfterVoiceInputDeleteCount); - mAfterVoiceInputDeleteCount = 0; - } - if (mAfterVoiceInputInsertCount > 0) { - logTextModifiedByTypingInsertion(mAfterVoiceInputInsertCount); - mAfterVoiceInputInsertCount = 0; - } - } - - public void flushAllTextModificationCounters() { - if (mAfterVoiceInputInsertCount > 0) { - logTextModifiedByTypingInsertion(mAfterVoiceInputInsertCount); - mAfterVoiceInputInsertCount = 0; - } - if (mAfterVoiceInputDeleteCount > 0) { - logTextModifiedByTypingDeletion(mAfterVoiceInputDeleteCount); - mAfterVoiceInputDeleteCount = 0; - } - if (mAfterVoiceInputInsertPunctuationCount > 0) { - logTextModifiedByTypingInsertionPunctuation(mAfterVoiceInputInsertPunctuationCount); - mAfterVoiceInputInsertPunctuationCount = 0; - } - } - - /** - * The configuration of the IME changed and may have caused the views to be layed out - * again. Restore the state of the recognition view. - */ - public void onConfigurationChanged(Configuration configuration) { - mRecognitionView.restoreState(); - mRecognitionView.getView().dispatchConfigurationChanged(configuration); - } - - /** - * @return true if field is blacklisted for voice - */ - public boolean isBlacklistedField(FieldContext context) { - return mBlacklist.matches(context); - } - - /** - * Used to decide whether to show voice input hints for this field, etc. - * - * @return true if field is recommended for voice - */ - public boolean isRecommendedField(FieldContext context) { - return mRecommendedList.matches(context); - } - - /** - * Start listening for speech from the user. This will grab the microphone - * and start updating the view provided by getView(). It is the caller's - * responsibility to ensure that the view is visible to the user at this stage. - * - * @param context the same FieldContext supplied to voiceIsEnabled() - * @param swipe whether this voice input was started by swipe, for logging purposes - */ - public void startListening(FieldContext context, boolean swipe) { - if (DBG) { - Log.d(TAG, "startListening: " + context); - } - - if (mState != DEFAULT) { - Log.w(TAG, "startListening in the wrong status " + mState); - } - - // If everything works ok, the voice input should be already in the correct state. As this - // class can be called by third-party, we call reset just to be on the safe side. - reset(); - - Locale locale = Locale.getDefault(); - String localeString = locale.getLanguage() + "-" + locale.getCountry(); - - mLogger.start(localeString, swipe); - - mState = LISTENING; - - mRecognitionView.showInitializing(); - startListeningAfterInitialization(context); - } - - /** - * Called only when the recognition manager's initialization completed - * - * @param context context with which {@link #startListening(FieldContext, boolean)} was executed - */ - private void startListeningAfterInitialization(FieldContext context) { - Intent intent = makeIntent(); - intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, ""); - intent.putExtra(EXTRA_RECOGNITION_CONTEXT, context.getBundle()); - intent.putExtra(EXTRA_CALLING_PACKAGE, "VoiceIME"); - intent.putExtra(EXTRA_ALTERNATES, true); - intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, - SettingsUtil.getSettingsInt( - mContext.getContentResolver(), - SettingsUtil.LATIN_IME_MAX_VOICE_RESULTS, - 1)); - // Get endpointer params from Gservices. - // TODO: Consider caching these values for improved performance on slower devices. - final ContentResolver cr = mContext.getContentResolver(); - putEndpointerExtra( - cr, - intent, - SettingsUtil.LATIN_IME_SPEECH_MINIMUM_LENGTH_MILLIS, - EXTRA_SPEECH_MINIMUM_LENGTH_MILLIS, - null /* rely on endpointer default */); - putEndpointerExtra( - cr, - intent, - SettingsUtil.LATIN_IME_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, - EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, - INPUT_COMPLETE_SILENCE_LENGTH_DEFAULT_VALUE_MILLIS - /* our default value is different from the endpointer's */); - putEndpointerExtra( - cr, - intent, - SettingsUtil. - LATIN_IME_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS, - EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS, - null /* rely on endpointer default */); - - mSpeechRecognizer.startListening(intent); - } - - /** - * Gets the value of the provided Gservices key, attempts to parse it into a long, - * and if successful, puts the long value as an extra in the provided intent. - */ - private void putEndpointerExtra(ContentResolver cr, Intent i, - String gservicesKey, String intentExtraKey, String defaultValue) { - long l = -1; - String s = SettingsUtil.getSettingsString(cr, gservicesKey, defaultValue); - if (s != null) { - try { - l = Long.valueOf(s); - } catch (NumberFormatException e) { - Log.e(TAG, "could not parse value for " + gservicesKey + ": " + s); - } - } - - if (l != -1) i.putExtra(intentExtraKey, l); - } - - public void destroy() { - mSpeechRecognizer.destroy(); - } - - /** - * Creates a new instance of the view that is returned by {@link #getView()} - * Clients should use this when a previously returned view is stuck in a - * layout that is being thrown away and a new one is need to show to the - * user. - */ - public void newView() { - mRecognitionView = new RecognitionView(mContext, this); - } - - /** - * @return a view that shows the recognition flow--e.g., "Speak now" and - * "working" dialogs. - */ - public View getView() { - return mRecognitionView.getView(); - } - - /** - * Handle the cancel button. - */ - @Override - public void onClick(View view) { - switch(view.getId()) { - case R.id.button: - cancel(); - break; - } - } - - public void logTextModifiedByTypingInsertion(int length) { - mLogger.textModifiedByTypingInsertion(length); - } - - public void logTextModifiedByTypingInsertionPunctuation(int length) { - mLogger.textModifiedByTypingInsertionPunctuation(length); - } - - public void logTextModifiedByTypingDeletion(int length) { - mLogger.textModifiedByTypingDeletion(length); - } - - public void logTextModifiedByChooseSuggestion(String suggestion, int index, - String wordSeparators, InputConnection ic) { - String wordToBeReplaced = EditingUtils.getWordAtCursor(ic, wordSeparators); - // If we enable phrase-based alternatives, only send up the first word - // in suggestion and wordToBeReplaced. - mLogger.textModifiedByChooseSuggestion(suggestion.length(), wordToBeReplaced.length(), - index, wordToBeReplaced, suggestion); - } - - public void logKeyboardWarningDialogShown() { - mLogger.keyboardWarningDialogShown(); - } - - public void logKeyboardWarningDialogDismissed() { - mLogger.keyboardWarningDialogDismissed(); - } - - public void logKeyboardWarningDialogOk() { - mLogger.keyboardWarningDialogOk(); - } - - public void logKeyboardWarningDialogCancel() { - mLogger.keyboardWarningDialogCancel(); - } - - public void logSwipeHintDisplayed() { - mLogger.swipeHintDisplayed(); - } - - public void logPunctuationHintDisplayed() { - mLogger.punctuationHintDisplayed(); - } - - public void logVoiceInputDelivered(int length) { - mLogger.voiceInputDelivered(length); - } - - public void logInputEnded() { - mLogger.inputEnded(); - } - - public void flushLogs() { - mLogger.flush(); - } - - private static Intent makeIntent() { - Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); - - // On Cupcake, use VoiceIMEHelper since VoiceSearch doesn't support. - // On Donut, always use VoiceSearch, since VoiceIMEHelper and - // VoiceSearch may conflict. - if (Build.VERSION.RELEASE.equals("1.5")) { - intent = intent.setClassName( - "com.google.android.voiceservice", - "com.google.android.voiceservice.IMERecognitionService"); - } else { - intent = intent.setClassName( - "com.google.android.voicesearch", - "com.google.android.voicesearch.RecognitionService"); - } - - return intent; - } - - /** - * Reset the current voice recognition. - */ - public void reset() { - if (mState != DEFAULT) { - mState = DEFAULT; - - // Remove all pending tasks (e.g., timers to cancel voice input) - mHandler.removeMessages(MSG_RESET); - - mSpeechRecognizer.cancel(); - mRecognitionView.finish(); - } - } - - /** - * Cancel in-progress speech recognition. - */ - public void cancel() { - switch (mState) { - case LISTENING: - mLogger.cancelDuringListening(); - break; - case WORKING: - mLogger.cancelDuringWorking(); - break; - case ERROR: - mLogger.cancelDuringError(); - break; - } - - reset(); - mUiListener.onCancelVoice(); - } - - private int getErrorStringId(int errorType, boolean endpointed) { - switch (errorType) { - // We use CLIENT_ERROR to signify that voice search is not available on the device. - case SpeechRecognizer.ERROR_CLIENT: - return R.string.voice_not_installed; - case SpeechRecognizer.ERROR_NETWORK: - return R.string.voice_network_error; - case SpeechRecognizer.ERROR_NETWORK_TIMEOUT: - return endpointed ? - R.string.voice_network_error : R.string.voice_too_much_speech; - case SpeechRecognizer.ERROR_AUDIO: - return R.string.voice_audio_error; - case SpeechRecognizer.ERROR_SERVER: - return R.string.voice_server_error; - case SpeechRecognizer.ERROR_SPEECH_TIMEOUT: - return R.string.voice_speech_timeout; - case SpeechRecognizer.ERROR_NO_MATCH: - return R.string.voice_no_match; - default: return R.string.voice_error; - } - } - - private void onError(int errorType, boolean endpointed) { - Log.i(TAG, "error " + errorType); - mLogger.error(errorType); - onError(mContext.getString(getErrorStringId(errorType, endpointed))); - } - - private void onError(String error) { - mState = ERROR; - mRecognitionView.showError(error); - // Wait a couple seconds and then automatically dismiss message. - mHandler.sendMessageDelayed(Message.obtain(mHandler, MSG_RESET), 2000); - } - - private class ImeRecognitionListener implements RecognitionListener { - // Waveform data - final ByteArrayOutputStream mWaveBuffer = new ByteArrayOutputStream(); - int mSpeechStart; - private boolean mEndpointed = false; - - @Override - public void onReadyForSpeech(Bundle noiseParams) { - mRecognitionView.showListening(); - } - - @Override - public void onBeginningOfSpeech() { - mEndpointed = false; - mSpeechStart = mWaveBuffer.size(); - } - - @Override - public void onRmsChanged(float rmsdB) { - mRecognitionView.updateVoiceMeter(rmsdB); - } - - @Override - public void onBufferReceived(byte[] buf) { - try { - mWaveBuffer.write(buf); - } catch (IOException e) { - // ignore. - } - } - - @Override - public void onEndOfSpeech() { - mEndpointed = true; - mState = WORKING; - mRecognitionView.showWorking(mWaveBuffer, mSpeechStart, mWaveBuffer.size()); - } - - @Override - public void onError(int errorType) { - mState = ERROR; - VoiceInput.this.onError(errorType, mEndpointed); - } - - @Override - public void onResults(Bundle resultsBundle) { - List<String> results = resultsBundle - .getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION); - // VS Market update is needed for IME froyo clients to access the alternatesBundle - // TODO: verify this. - Bundle alternatesBundle = resultsBundle.getBundle(ALTERNATES_BUNDLE); - mState = DEFAULT; - - final Map<String, List<CharSequence>> alternatives = - new HashMap<String, List<CharSequence>>(); - - if (ENABLE_WORD_CORRECTIONS && alternatesBundle != null && results.size() > 0) { - // Use the top recognition result to map each alternative's start:length to a word. - String[] words = results.get(0).split(" "); - Bundle spansBundle = alternatesBundle.getBundle(AlternatesBundleKeys.SPANS); - for (String key : spansBundle.keySet()) { - // Get the word for which these alternates correspond to. - Bundle spanBundle = spansBundle.getBundle(key); - int start = spanBundle.getInt(AlternatesBundleKeys.START); - int length = spanBundle.getInt(AlternatesBundleKeys.LENGTH); - // Only keep single-word based alternatives. - if (length == 1 && start < words.length) { - // Get the alternatives associated with the span. - // If a word appears twice in a recognition result, - // concatenate the alternatives for the word. - List<CharSequence> altList = alternatives.get(words[start]); - if (altList == null) { - altList = new ArrayList<CharSequence>(); - alternatives.put(words[start], altList); - } - Parcelable[] alternatesArr = spanBundle - .getParcelableArray(AlternatesBundleKeys.ALTERNATES); - for (int j = 0; j < alternatesArr.length && - altList.size() < MAX_ALT_LIST_LENGTH; j++) { - Bundle alternateBundle = (Bundle) alternatesArr[j]; - String alternate = alternateBundle.getString(AlternatesBundleKeys.TEXT); - // Don't allow duplicates in the alternates list. - if (!altList.contains(alternate)) { - altList.add(alternate); - } - } - } - } - } - - if (results.size() > 5) { - results = results.subList(0, 5); - } - mUiListener.onVoiceResults(results, alternatives); - mRecognitionView.finish(); - } - - @Override - public void onPartialResults(final Bundle partialResults) { - // currently - do nothing - } - - @Override - public void onEvent(int eventType, Bundle params) { - // do nothing - reserved for events that might be added in the future - } - } -} diff --git a/java/src/com/android/inputmethod/deprecated/voice/VoiceInputLogger.java b/java/src/com/android/inputmethod/deprecated/voice/VoiceInputLogger.java deleted file mode 100644 index 22e8207bf..000000000 --- a/java/src/com/android/inputmethod/deprecated/voice/VoiceInputLogger.java +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Copyright (C) 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. - */ - -package com.android.inputmethod.deprecated.voice; - -import com.android.common.speech.LoggingEvents; -import com.android.inputmethod.deprecated.compat.VoiceInputLoggerCompatUtils; - -import android.content.Context; -import android.content.Intent; - -/** - * Provides the logging facility for voice input events. This fires broadcasts back to - * the voice search app which then logs on our behalf. - * - * Note that debug console logging does not occur in this class. If you want to - * see console output of these logging events, there is a boolean switch to turn - * on on the VoiceSearch side. - */ -public class VoiceInputLogger { - @SuppressWarnings("unused") - private static final String TAG = VoiceInputLogger.class.getSimpleName(); - - private static VoiceInputLogger sVoiceInputLogger; - - private final Context mContext; - - // The base intent used to form all broadcast intents to the logger - // in VoiceSearch. - private final Intent mBaseIntent; - - // This flag is used to indicate when there are voice events that - // need to be flushed. - private boolean mHasLoggingInfo = false; - - /** - * Returns the singleton of the logger. - * - * @param contextHint a hint context used when creating the logger instance. - * Ignored if the singleton instance already exists. - */ - public static synchronized VoiceInputLogger getLogger(Context contextHint) { - if (sVoiceInputLogger == null) { - sVoiceInputLogger = new VoiceInputLogger(contextHint); - } - return sVoiceInputLogger; - } - - public VoiceInputLogger(Context context) { - mContext = context; - - mBaseIntent = new Intent(LoggingEvents.ACTION_LOG_EVENT); - mBaseIntent.putExtra(LoggingEvents.EXTRA_APP_NAME, LoggingEvents.VoiceIme.APP_NAME); - } - - private Intent newLoggingBroadcast(int event) { - Intent i = new Intent(mBaseIntent); - i.putExtra(LoggingEvents.EXTRA_EVENT, event); - return i; - } - - public void flush() { - if (hasLoggingInfo()) { - Intent i = new Intent(mBaseIntent); - i.putExtra(LoggingEvents.EXTRA_FLUSH, true); - mContext.sendBroadcast(i); - setHasLoggingInfo(false); - } - } - - public void keyboardWarningDialogShown() { - setHasLoggingInfo(true); - mContext.sendBroadcast(newLoggingBroadcast( - LoggingEvents.VoiceIme.KEYBOARD_WARNING_DIALOG_SHOWN)); - } - - public void keyboardWarningDialogDismissed() { - setHasLoggingInfo(true); - mContext.sendBroadcast(newLoggingBroadcast( - LoggingEvents.VoiceIme.KEYBOARD_WARNING_DIALOG_DISMISSED)); - } - - public void keyboardWarningDialogOk() { - setHasLoggingInfo(true); - mContext.sendBroadcast(newLoggingBroadcast( - LoggingEvents.VoiceIme.KEYBOARD_WARNING_DIALOG_OK)); - } - - public void keyboardWarningDialogCancel() { - setHasLoggingInfo(true); - mContext.sendBroadcast(newLoggingBroadcast( - LoggingEvents.VoiceIme.KEYBOARD_WARNING_DIALOG_CANCEL)); - } - - public void settingsWarningDialogShown() { - setHasLoggingInfo(true); - mContext.sendBroadcast(newLoggingBroadcast( - LoggingEvents.VoiceIme.SETTINGS_WARNING_DIALOG_SHOWN)); - } - - public void settingsWarningDialogDismissed() { - setHasLoggingInfo(true); - mContext.sendBroadcast(newLoggingBroadcast( - LoggingEvents.VoiceIme.SETTINGS_WARNING_DIALOG_DISMISSED)); - } - - public void settingsWarningDialogOk() { - setHasLoggingInfo(true); - mContext.sendBroadcast(newLoggingBroadcast( - LoggingEvents.VoiceIme.SETTINGS_WARNING_DIALOG_OK)); - } - - public void settingsWarningDialogCancel() { - setHasLoggingInfo(true); - mContext.sendBroadcast(newLoggingBroadcast( - LoggingEvents.VoiceIme.SETTINGS_WARNING_DIALOG_CANCEL)); - } - - public void swipeHintDisplayed() { - setHasLoggingInfo(true); - mContext.sendBroadcast(newLoggingBroadcast(LoggingEvents.VoiceIme.SWIPE_HINT_DISPLAYED)); - } - - public void cancelDuringListening() { - setHasLoggingInfo(true); - mContext.sendBroadcast(newLoggingBroadcast(LoggingEvents.VoiceIme.CANCEL_DURING_LISTENING)); - } - - public void cancelDuringWorking() { - setHasLoggingInfo(true); - mContext.sendBroadcast(newLoggingBroadcast(LoggingEvents.VoiceIme.CANCEL_DURING_WORKING)); - } - - public void cancelDuringError() { - setHasLoggingInfo(true); - mContext.sendBroadcast(newLoggingBroadcast(LoggingEvents.VoiceIme.CANCEL_DURING_ERROR)); - } - - public void punctuationHintDisplayed() { - setHasLoggingInfo(true); - mContext.sendBroadcast(newLoggingBroadcast( - LoggingEvents.VoiceIme.PUNCTUATION_HINT_DISPLAYED)); - } - - public void error(int code) { - setHasLoggingInfo(true); - Intent i = newLoggingBroadcast(LoggingEvents.VoiceIme.ERROR); - i.putExtra(LoggingEvents.VoiceIme.EXTRA_ERROR_CODE, code); - mContext.sendBroadcast(i); - } - - public void start(String locale, boolean swipe) { - setHasLoggingInfo(true); - Intent i = newLoggingBroadcast(LoggingEvents.VoiceIme.START); - i.putExtra(LoggingEvents.VoiceIme.EXTRA_START_LOCALE, locale); - i.putExtra(LoggingEvents.VoiceIme.EXTRA_START_SWIPE, swipe); - i.putExtra(LoggingEvents.EXTRA_TIMESTAMP, System.currentTimeMillis()); - mContext.sendBroadcast(i); - } - - public void voiceInputDelivered(int length) { - setHasLoggingInfo(true); - Intent i = newLoggingBroadcast(LoggingEvents.VoiceIme.VOICE_INPUT_DELIVERED); - i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_LENGTH, length); - mContext.sendBroadcast(i); - } - - public void textModifiedByTypingInsertion(int length) { - setHasLoggingInfo(true); - Intent i = newLoggingBroadcast(LoggingEvents.VoiceIme.TEXT_MODIFIED); - i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_LENGTH, length); - i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_TYPE, - LoggingEvents.VoiceIme.TEXT_MODIFIED_TYPE_TYPING_INSERTION); - mContext.sendBroadcast(i); - } - - public void textModifiedByTypingInsertionPunctuation(int length) { - setHasLoggingInfo(true); - Intent i = newLoggingBroadcast(LoggingEvents.VoiceIme.TEXT_MODIFIED); - i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_LENGTH, length); - i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_TYPE, - LoggingEvents.VoiceIme.TEXT_MODIFIED_TYPE_TYPING_INSERTION_PUNCTUATION); - mContext.sendBroadcast(i); - } - - public void textModifiedByTypingDeletion(int length) { - setHasLoggingInfo(true); - Intent i = newLoggingBroadcast(LoggingEvents.VoiceIme.TEXT_MODIFIED); - i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_LENGTH, length); - i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_TYPE, - LoggingEvents.VoiceIme.TEXT_MODIFIED_TYPE_TYPING_DELETION); - - mContext.sendBroadcast(i); - } - - - public void textModifiedByChooseSuggestion(int suggestionLength, int replacedPhraseLength, - int index, String before, String after) { - setHasLoggingInfo(true); - Intent i = newLoggingBroadcast(LoggingEvents.VoiceIme.TEXT_MODIFIED); - i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_LENGTH, suggestionLength); - i.putExtra(VoiceInputLoggerCompatUtils.EXTRA_TEXT_REPLACED_LENGTH, replacedPhraseLength); - i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_TYPE, - LoggingEvents.VoiceIme.TEXT_MODIFIED_TYPE_CHOOSE_SUGGESTION); - i.putExtra(LoggingEvents.VoiceIme.EXTRA_N_BEST_CHOOSE_INDEX, index); - i.putExtra(VoiceInputLoggerCompatUtils.EXTRA_BEFORE_N_BEST_CHOOSE, before); - i.putExtra(VoiceInputLoggerCompatUtils.EXTRA_AFTER_N_BEST_CHOOSE, after); - mContext.sendBroadcast(i); - } - - public void inputEnded() { - setHasLoggingInfo(true); - mContext.sendBroadcast(newLoggingBroadcast(LoggingEvents.VoiceIme.INPUT_ENDED)); - } - - public void voiceInputSettingEnabled() { - setHasLoggingInfo(true); - mContext.sendBroadcast(newLoggingBroadcast( - LoggingEvents.VoiceIme.VOICE_INPUT_SETTING_ENABLED)); - } - - public void voiceInputSettingDisabled() { - setHasLoggingInfo(true); - mContext.sendBroadcast(newLoggingBroadcast( - LoggingEvents.VoiceIme.VOICE_INPUT_SETTING_DISABLED)); - } - - private void setHasLoggingInfo(boolean hasLoggingInfo) { - mHasLoggingInfo = hasLoggingInfo; - // If applications that call UserHappinessSignals.userAcceptedImeText - // make that call after VoiceInputLogger.flush() calls this method with false, we - // will lose those happiness signals. For example, consider the gmail sequence: - // 1. compose message - // 2. speak message into message field - // 3. type subject into subject field - // 4. press send - // We will NOT get the signal that the user accepted the voice inputted message text - // because when the user tapped on the subject field, the ime's flush will be triggered - // and the hasLoggingInfo will be then set to false. So by the time the user hits send - // we have essentially forgotten about any voice input. - // However the following (more common) use case is properly logged - // 1. compose message - // 2. type subject in subject field - // 3. speak message in message field - // 4. press send - VoiceInputLoggerCompatUtils.setHasVoiceLoggingInfoCompat(hasLoggingInfo); - } - - private boolean hasLoggingInfo(){ - return mHasLoggingInfo; - } - -} diff --git a/java/src/com/android/inputmethod/deprecated/voice/WaveformImage.java b/java/src/com/android/inputmethod/deprecated/voice/WaveformImage.java deleted file mode 100644 index 8ed279f42..000000000 --- a/java/src/com/android/inputmethod/deprecated/voice/WaveformImage.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (C) 2008-2009 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.deprecated.voice; - -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Paint; - -import java.io.ByteArrayOutputStream; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.nio.ShortBuffer; - -/** - * Utility class to draw a waveform into a bitmap, given a byte array - * that represents the waveform as a sequence of 16-bit integers. - * Adapted from RecognitionActivity.java. - */ -public class WaveformImage { - private static final int SAMPLING_RATE = 8000; - - private WaveformImage() { - // Intentional empty constructor. - } - - public static Bitmap drawWaveform( - ByteArrayOutputStream waveBuffer, int w, int h, int start, int end) { - final Bitmap b = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); - final Canvas c = new Canvas(b); - final Paint paint = new Paint(); - paint.setColor(0xFFFFFFFF); // 0xRRGGBBAA - paint.setAntiAlias(true); - paint.setStrokeWidth(0); - - final ShortBuffer buf = ByteBuffer - .wrap(waveBuffer.toByteArray()) - .order(ByteOrder.nativeOrder()) - .asShortBuffer(); - buf.position(0); - - final int numSamples = waveBuffer.size() / 2; - final int delay = (SAMPLING_RATE * 100 / 1000); - int endIndex = end / 2 + delay; - if (end == 0 || endIndex >= numSamples) { - endIndex = numSamples; - } - int index = start / 2 - delay; - if (index < 0) { - index = 0; - } - final int size = endIndex - index; - int numSamplePerPixel = 32; - int delta = size / (numSamplePerPixel * w); - if (delta == 0) { - numSamplePerPixel = size / w; - delta = 1; - } - - final float scale = 3.5f / 65536.0f; - // do one less column to make sure we won't read past - // the buffer. - try { - for (int i = 0; i < w - 1 ; i++) { - final float x = i; - for (int j = 0; j < numSamplePerPixel; j++) { - final short s = buf.get(index); - final float y = (h / 2) - (s * h * scale); - c.drawPoint(x, y, paint); - index += delta; - } - } - } catch (IndexOutOfBoundsException e) { - // this can happen, but we don't care - } - - return b; - } -} diff --git a/java/src/com/android/inputmethod/deprecated/voice/Whitelist.java b/java/src/com/android/inputmethod/deprecated/voice/Whitelist.java deleted file mode 100644 index 6c5f52ae2..000000000 --- a/java/src/com/android/inputmethod/deprecated/voice/Whitelist.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (C) 2009 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.deprecated.voice; - -import android.os.Bundle; - -import java.util.ArrayList; -import java.util.List; - -/** - * A set of text fields where speech has been explicitly enabled. - */ -public class Whitelist { - private List<Bundle> mConditions; - - public Whitelist() { - mConditions = new ArrayList<Bundle>(); - } - - public Whitelist(List<Bundle> conditions) { - this.mConditions = conditions; - } - - public void addApp(String app) { - Bundle bundle = new Bundle(); - bundle.putString("packageName", app); - mConditions.add(bundle); - } - - /** - * @return true if the field is a member of the whitelist. - */ - public boolean matches(FieldContext context) { - for (Bundle condition : mConditions) { - if (matches(condition, context.getBundle())) { - return true; - } - } - return false; - } - - /** - * @return true of all values in condition are matched by a value - * in target. - */ - private boolean matches(Bundle condition, Bundle target) { - for (String key : condition.keySet()) { - if (!condition.getString(key).equals(target.getString(key))) { - return false; - } - } - return true; - } -} diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSet.java b/java/src/com/android/inputmethod/keyboard/KeyboardSet.java index 1bf2fc04e..f0c773ff4 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardSet.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardSet.java @@ -98,6 +98,7 @@ public class KeyboardSet { int mMode; EditorInfo mEditorInfo; boolean mTouchPositionCorrectionEnabled; + boolean mDisableShortcutKey; boolean mVoiceKeyEnabled; boolean mVoiceKeyOnMain; boolean mNoSettingsKey; @@ -200,11 +201,11 @@ public class KeyboardSet { final Params params = mParams; final boolean isSymbols = (keyboardSetElementId == KeyboardId.ELEMENT_SYMBOLS || keyboardSetElementId == KeyboardId.ELEMENT_SYMBOLS_SHIFTED); - final boolean hasShortcutKey = params.mVoiceKeyEnabled - && (isSymbols != params.mVoiceKeyOnMain); + final boolean voiceKeyEnabled = params.mVoiceKeyEnabled && !params.mDisableShortcutKey; + final boolean hasShortcutKey = voiceKeyEnabled && (isSymbols != params.mVoiceKeyOnMain); return new KeyboardId(keyboardSetElementId, params.mLocale, params.mOrientation, params.mWidth, params.mMode, params.mEditorInfo, params.mNoSettingsKey, - params.mVoiceKeyEnabled, hasShortcutKey, params.mLanguageSwitchKeyEnabled); + voiceKeyEnabled, hasShortcutKey, params.mLanguageSwitchKeyEnabled); } public static class Builder { @@ -293,6 +294,11 @@ public class KeyboardSet { if (event == XmlPullParser.START_TAG) { final String tag = parser.getName(); if (TAG_KEYBOARD_SET.equals(tag)) { + final TypedArray a = mResources.obtainAttributes( + Xml.asAttributeSet(parser), R.styleable.KeyboardSet); + mParams.mDisableShortcutKey = a.getBoolean( + R.styleable.KeyboardSet_disableShortcutKey, false); + a.recycle(); parseKeyboardSetContent(parser); } else { throw new XmlParseUtils.IllegalStartTag(parser, TAG_KEYBOARD_SET); @@ -390,30 +396,4 @@ public class KeyboardSet { } } } - - // TODO: Should be removed. This is no longer required if {@link InputMethodSubtype} is - // supported. - public static String parseKeyboardLocale(Resources res, int resId) - throws XmlPullParserException, IOException { - final XmlPullParser parser = res.getXml(resId); - if (parser == null) - return ""; - int event; - while ((event = parser.next()) != XmlPullParser.END_DOCUMENT) { - if (event == XmlPullParser.START_TAG) { - final String tag = parser.getName(); - if (TAG_KEYBOARD_SET.equals(tag)) { - final TypedArray keyboardSetAttr = res.obtainAttributes( - Xml.asAttributeSet(parser), R.styleable.KeyboardSet); - final String locale = keyboardSetAttr.getString( - R.styleable.KeyboardSet_keyboardLocale); - keyboardSetAttr.recycle(); - return locale; - } else { - throw new XmlParseUtils.IllegalStartTag(parser, TAG_KEYBOARD_SET); - } - } - } - return ""; - } } diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java index 7194cced3..62bcf6ca8 100644 --- a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java @@ -39,7 +39,6 @@ import android.widget.PopupWindow; import com.android.inputmethod.accessibility.AccessibilityUtils; import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy; -import com.android.inputmethod.deprecated.VoiceProxy; import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy; import com.android.inputmethod.keyboard.PointerTracker.TimerProxy; import com.android.inputmethod.keyboard.internal.KeySpecParser; @@ -828,12 +827,6 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke } } - @Override - protected void onAttachedToWindow() { - // Token is available from here. - VoiceProxy.getInstance().onAttachedToWindow(); - } - /** * Receives hover events from the input framework. This method overrides * View.dispatchHoverEvent(MotionEvent) on SDK version ICS or higher. On diff --git a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java index 5c1808613..6b59a8dae 100644 --- a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java +++ b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java @@ -213,6 +213,31 @@ public class ProximityInfo { touchPositionCorrection); } + public void fillArrayWithNearestKeyCodes(int x, int y, int primaryKeyCode, int[] dest) { + final int destLength = dest.length; + if (destLength < 1) { + return; + } + int index = 0; + if (primaryKeyCode > Keyboard.CODE_SPACE) { + dest[index++] = primaryKeyCode; + } + final Key[] nearestKeys = getNearestKeys(x, y); + for (Key key : nearestKeys) { + if (index >= destLength) { + break; + } + final int code = key.mCode; + if (code <= Keyboard.CODE_SPACE) { + break; + } + dest[index++] = code; + } + if (index < destLength) { + dest[index] = KeyDetector.NOT_A_CODE; + } + } + public Key[] getNearestKeys(int x, int y) { if (mGridNeighbors == null) { return EMPTY_KEY_ARRAY; diff --git a/java/src/com/android/inputmethod/latin/AudioAndHapticFeedbackManager.java b/java/src/com/android/inputmethod/latin/AudioAndHapticFeedbackManager.java index 9c5ccc76b..55664d411 100644 --- a/java/src/com/android/inputmethod/latin/AudioAndHapticFeedbackManager.java +++ b/java/src/com/android/inputmethod/latin/AudioAndHapticFeedbackManager.java @@ -21,8 +21,8 @@ import android.media.AudioManager; import android.view.HapticFeedbackConstants; import android.view.View; -import com.android.inputmethod.compat.VibratorCompatWrapper; import com.android.inputmethod.keyboard.Keyboard; +import com.android.inputmethod.latin.VibratorUtils; /** * This class gathers audio feedback and haptic feedback functions. @@ -33,13 +33,13 @@ import com.android.inputmethod.keyboard.Keyboard; public class AudioAndHapticFeedbackManager { final private SettingsValues mSettingsValues; final private AudioManager mAudioManager; - final private VibratorCompatWrapper mVibrator; + final private VibratorUtils mVibratorUtils; private boolean mSoundOn; public AudioAndHapticFeedbackManager(final LatinIME latinIme, final SettingsValues settingsValues) { mSettingsValues = settingsValues; - mVibrator = VibratorCompatWrapper.getInstance(latinIme); + mVibratorUtils = VibratorUtils.getInstance(latinIme); mAudioManager = (AudioManager) latinIme.getSystemService(Context.AUDIO_SERVICE); mSoundOn = reevaluateIfSoundIsOn(); } @@ -93,8 +93,8 @@ public class AudioAndHapticFeedbackManager { HapticFeedbackConstants.KEYBOARD_TAP, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); } - } else if (mVibrator != null) { - mVibrator.vibrate(mSettingsValues.mKeypressVibrationDuration); + } else if (mVibratorUtils != null) { + mVibratorUtils.vibrate(mSettingsValues.mKeypressVibrationDuration); } } diff --git a/java/src/com/android/inputmethod/latin/AutoCorrection.java b/java/src/com/android/inputmethod/latin/AutoCorrection.java index ef88f9906..38444a10c 100644 --- a/java/src/com/android/inputmethod/latin/AutoCorrection.java +++ b/java/src/com/android/inputmethod/latin/AutoCorrection.java @@ -16,6 +16,8 @@ package com.android.inputmethod.latin; +import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; + import android.text.TextUtils; import android.util.Log; @@ -30,8 +32,9 @@ public class AutoCorrection { // Purely static class: can't instantiate. } - public static CharSequence computeAutoCorrectionWord(HashMap<String, Dictionary> dictionaries, - WordComposer wordComposer, ArrayList<CharSequence> suggestions, int[] sortedScores, + public static CharSequence computeAutoCorrectionWord( + HashMap<String, Dictionary> dictionaries, + WordComposer wordComposer, ArrayList<SuggestedWordInfo> suggestions, CharSequence consideredWord, double autoCorrectionThreshold, CharSequence whitelistedWord) { if (hasAutoCorrectionForWhitelistedWord(whitelistedWord)) { @@ -40,8 +43,8 @@ public class AutoCorrection { dictionaries, wordComposer, suggestions, consideredWord)) { return consideredWord; } else if (hasAutoCorrectionForBinaryDictionary(wordComposer, suggestions, - sortedScores, consideredWord, autoCorrectionThreshold)) { - return suggestions.get(0); + consideredWord, autoCorrectionThreshold)) { + return suggestions.get(0).mWord; } return null; } @@ -89,22 +92,23 @@ public class AutoCorrection { private static boolean hasAutoCorrectionForConsideredWord( HashMap<String, Dictionary> dictionaries, WordComposer wordComposer, - ArrayList<CharSequence> suggestions, CharSequence consideredWord) { + ArrayList<SuggestedWordInfo> suggestions, CharSequence consideredWord) { if (TextUtils.isEmpty(consideredWord)) return false; return wordComposer.size() > 1 && suggestions.size() > 0 && !allowsToBeAutoCorrected(dictionaries, consideredWord, false); } private static boolean hasAutoCorrectionForBinaryDictionary(WordComposer wordComposer, - ArrayList<CharSequence> suggestions, int[] sortedScores, + ArrayList<SuggestedWordInfo> suggestions, CharSequence consideredWord, double autoCorrectionThreshold) { - if (wordComposer.size() > 1 && suggestions.size() > 0 && sortedScores.length > 0) { - final CharSequence autoCorrectionSuggestion = suggestions.get(0); - final int autoCorrectionSuggestionScore = sortedScores[0]; + if (wordComposer.size() > 1 && suggestions.size() > 0) { + final SuggestedWordInfo autoCorrectionSuggestion = suggestions.get(0); + //final int autoCorrectionSuggestionScore = sortedScores[0]; + final int autoCorrectionSuggestionScore = autoCorrectionSuggestion.mScore; // TODO: when the normalized score of the first suggestion is nearly equals to // the normalized score of the second suggestion, behave less aggressive. final double normalizedScore = BinaryDictionary.calcNormalizedScore( - consideredWord.toString(), autoCorrectionSuggestion.toString(), + consideredWord.toString(), autoCorrectionSuggestion.mWord.toString(), autoCorrectionSuggestionScore); if (DBG) { Log.d(TAG, "Normalized " + consideredWord + "," + autoCorrectionSuggestion + "," diff --git a/java/src/com/android/inputmethod/latin/EditingUtils.java b/java/src/com/android/inputmethod/latin/EditingUtils.java index 1e8ad1840..b3f613bae 100644 --- a/java/src/com/android/inputmethod/latin/EditingUtils.java +++ b/java/src/com/android/inputmethod/latin/EditingUtils.java @@ -1,12 +1,12 @@ /* * Copyright (C) 2009 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 @@ -16,8 +16,6 @@ package com.android.inputmethod.latin; -import com.android.inputmethod.compat.InputConnectionCompatUtils; - import android.text.TextUtils; import android.view.inputmethod.ExtractedText; import android.view.inputmethod.ExtractedTextRequest; @@ -246,7 +244,7 @@ public class EditingUtils { if (selStart == selEnd) { // There is just a cursor, so get the word at the cursor // getWordRangeAtCursor returns null if the connection is null - EditingUtils.Range range = getWordRangeAtCursor(ic, wordSeparators); + final EditingUtils.Range range = getWordRangeAtCursor(ic, wordSeparators); if (range != null && !TextUtils.isEmpty(range.mWord)) { return new SelectedWord(selStart - range.mCharsBefore, selEnd + range.mCharsAfter, range.mWord); @@ -254,20 +252,19 @@ public class EditingUtils { } else { if (null == ic) return null; // Is the previous character empty or a word separator? If not, return null. - CharSequence charsBefore = ic.getTextBeforeCursor(1, 0); + final CharSequence charsBefore = ic.getTextBeforeCursor(1, 0); if (!isWordBoundary(charsBefore, wordSeparators)) { return null; } // Is the next character empty or a word separator? If not, return null. - CharSequence charsAfter = ic.getTextAfterCursor(1, 0); + final CharSequence charsAfter = ic.getTextAfterCursor(1, 0); if (!isWordBoundary(charsAfter, wordSeparators)) { return null; } // Extract the selection alone - CharSequence touching = InputConnectionCompatUtils.getSelectedText( - ic, selStart, selEnd); + final CharSequence touching = ic.getSelectedText(0); if (TextUtils.isEmpty(touching)) return null; // Is any part of the selection a separator? If so, return null. final int length = touching.length(); diff --git a/java/src/com/android/inputmethod/latin/ExpandableDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableDictionary.java index 098913bef..46d11fa37 100644 --- a/java/src/com/android/inputmethod/latin/ExpandableDictionary.java +++ b/java/src/com/android/inputmethod/latin/ExpandableDictionary.java @@ -18,6 +18,7 @@ package com.android.inputmethod.latin; import android.content.Context; +import com.android.inputmethod.keyboard.KeyDetector; import com.android.inputmethod.keyboard.Keyboard; import com.android.inputmethod.keyboard.ProximityInfo; @@ -209,13 +210,19 @@ public class ExpandableDictionary extends Dictionary { @SuppressWarnings("unused") final ProximityInfo proximityInfo) { mInputLength = codes.size(); if (mCodes.length < mInputLength) mCodes = new int[mInputLength][]; + final int[] xCoordinates = codes.getXCoordinates(); + final int[] yCoordinates = codes.getYCoordinates(); // Cache the codes so that we don't have to lookup an array list for (int i = 0; i < mInputLength; i++) { // TODO: Calculate proximity info here. if (mCodes[i] == null || mCodes[i].length < 1) { - mCodes[i] = new int[1]; + mCodes[i] = new int[ProximityInfo.MAX_PROXIMITY_CHARS_SIZE]; } - mCodes[i][0] = codes.getCodeAt(i); + final int x = xCoordinates != null && i < xCoordinates.length ? + xCoordinates[i] : WordComposer.NOT_A_COORDINATE; + final int y = xCoordinates != null && i < yCoordinates.length ? + yCoordinates[i] : WordComposer.NOT_A_COORDINATE; + proximityInfo.fillArrayWithNearestKeyCodes(x, y, codes.getCodeAt(i), mCodes[i]); } mMaxDepth = mInputLength * 3; getWordsRec(mRoots, codes, mWordBuilder, 0, false, 1, 0, -1, callback); @@ -328,7 +335,7 @@ public class ExpandableDictionary extends Dictionary { for (int j = 0; j < alternativesSize; j++) { final int addedAttenuation = (j > 0 ? 1 : 2); final int currentChar = currentChars[j]; - if (currentChar == -1) { + if (currentChar == KeyDetector.NOT_A_CODE) { break; } if (currentChar == lowerC || currentChar == c) { diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index e6094d9e1..69780d0fd 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -46,22 +46,18 @@ import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.ViewParent; import android.view.inputmethod.CompletionInfo; +import android.view.inputmethod.CorrectionInfo; import android.view.inputmethod.EditorInfo; -import android.view.inputmethod.ExtractedText; import android.view.inputmethod.InputConnection; import com.android.inputmethod.accessibility.AccessibilityUtils; import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy; import com.android.inputmethod.compat.CompatUtils; import com.android.inputmethod.compat.EditorInfoCompatUtils; -import com.android.inputmethod.compat.InputConnectionCompatUtils; import com.android.inputmethod.compat.InputMethodManagerCompatWrapper; import com.android.inputmethod.compat.InputMethodServiceCompatWrapper; import com.android.inputmethod.compat.InputMethodSubtypeCompatWrapper; -import com.android.inputmethod.compat.InputTypeCompatUtils; import com.android.inputmethod.compat.SuggestionSpanUtils; -import com.android.inputmethod.deprecated.LanguageSwitcherProxy; -import com.android.inputmethod.deprecated.VoiceProxy; import com.android.inputmethod.keyboard.Keyboard; import com.android.inputmethod.keyboard.KeyboardActionListener; import com.android.inputmethod.keyboard.KeyboardId; @@ -193,7 +189,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar private SharedPreferences mPrefs; /* package for tests */ final KeyboardSwitcher mKeyboardSwitcher; private final SubtypeSwitcher mSubtypeSwitcher; - private VoiceProxy mVoiceProxy; private boolean mShouldSwitchToLastSubtype = true; private UserDictionary mUserDictionary; @@ -234,7 +229,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar public static class UIHandler extends StaticInnerHandlerWrapper<LatinIME> { private static final int MSG_UPDATE_SHIFT_STATE = 1; - private static final int MSG_VOICE_RESULTS = 2; private static final int MSG_SPACE_TYPED = 4; private static final int MSG_SET_BIGRAM_PREDICTIONS = 5; private static final int MSG_PENDING_IMS_CALLBACK = 6; @@ -272,11 +266,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar case MSG_SET_BIGRAM_PREDICTIONS: latinIme.updateBigramPredictions(); break; - case MSG_VOICE_RESULTS: - final Keyboard keyboard = switcher.getKeyboard(); - latinIme.mVoiceProxy.handleVoiceResults(latinIme.preferCapitalization() - || (keyboard != null && keyboard.isShiftedOrShiftLocked())); - break; } } @@ -311,10 +300,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar removeMessages(MSG_SET_BIGRAM_PREDICTIONS); } - public void updateVoiceResults() { - sendMessage(obtainMessage(MSG_VOICE_RESULTS)); - } - public void startDoubleSpacesTimer() { removeMessages(MSG_SPACE_TYPED); sendMessageDelayed(obtainMessage(MSG_SPACE_TYPED), mDoubleSpacesTurnIntoPeriodTimeout); @@ -436,7 +421,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar if (ProductionFlag.IS_EXPERIMENTAL) { ResearchLogger.init(this, prefs); } - LanguageSwitcherProxy.init(this, prefs); InputMethodManagerCompatWrapper.init(this); SubtypeSwitcher.init(this); KeyboardSwitcher.init(this, prefs); @@ -476,7 +460,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION); registerReceiver(mReceiver, filter); - mVoiceProxy = VoiceProxy.init(this, prefs, mHandler); final IntentFilter packageFilter = new IntentFilter(); packageFilter.addAction(Intent.ACTION_PACKAGE_ADDED); @@ -577,7 +560,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar } unregisterReceiver(mReceiver); unregisterReceiver(mDictionaryPackInstallReceiver); - mVoiceProxy.destroy(); LatinImeLogger.commit(); LatinImeLogger.onDestroy(); super.onDestroy(); @@ -596,14 +578,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar if (isShowingOptionDialog()) mOptionsDialog.dismiss(); } - - mVoiceProxy.startChangingConfiguration(); super.onConfigurationChanged(conf); - mVoiceProxy.onConfigurationChanged(conf); - mVoiceProxy.finishChangingConfiguration(); - - // This will work only when the subtype is not supported. - LanguageSwitcherProxy.onConfigurationChanged(conf); } @Override @@ -698,13 +673,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar mSubtypeSwitcher.updateParametersOnStartInputView(); - // Most such things we decide below in initializeInputAttributesAndGetMode, but we need to - // know now whether this is a password text field, because we need to know now whether we - // want to enable the voice button. - final int inputType = editorInfo.inputType; - mVoiceProxy.resetVoiceStates(InputTypeCompatUtils.isPasswordInputType(inputType) - || InputTypeCompatUtils.isVisiblePasswordInputType(inputType)); - // The EditorInfo might have a flag that affects fullscreen mode. // Note: This call should be done by InputMethodService? updateFullscreenMode(); @@ -726,9 +694,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar if (mSuggest != null && mSettingsValues.mAutoCorrectEnabled) { mSuggest.setAutoCorrectionThreshold(mSettingsValues.mAutoCorrectionThreshold); } - mVoiceProxy.loadSettings(editorInfo, mPrefs); - // This will work only when the subtype is not supported. - LanguageSwitcherProxy.loadSettings(); if (mSubtypeSwitcher.isKeyboardMode()) { switcher.loadKeyboard(editorInfo, mSettingsValues); @@ -746,8 +711,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar mSettingsValues.mKeyPreviewPopupDismissDelay); inputView.setProximityCorrectionEnabled(true); - mVoiceProxy.onStartInputView(inputView.getWindowToken()); - if (TRACE) Debug.startMethodTracing("/data/trace/latinime"); } @@ -763,8 +726,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar LatinImeLogger.commit(); - mVoiceProxy.flushVoiceInputLogs(); - KeyboardView inputView = mKeyboardSwitcher.getKeyboardView(); if (inputView != null) inputView.closing(); if (mUserHistoryDictionary != null) mUserHistoryDictionary.flushPendingWrites(); @@ -780,18 +741,25 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar } @Override - public void onUpdateExtractedText(int token, ExtractedText text) { - super.onUpdateExtractedText(token, text); - mVoiceProxy.showPunctuationHintIfNecessary(); - } - - @Override public void onUpdateSelection(int oldSelStart, int oldSelEnd, int newSelStart, int newSelEnd, int composingSpanStart, int composingSpanEnd) { super.onUpdateSelection(oldSelStart, oldSelEnd, newSelStart, newSelEnd, composingSpanStart, composingSpanEnd); + if (ProductionFlag.IS_EXPERIMENTAL) { + if (ResearchLogger.UnsLogGroup.ON_UPDATE_SELECTION.isEnabled) { + final String s = "onUpdateSelection: oss=" + oldSelStart + + ", ose=" + oldSelEnd + + ", lss=" + mLastSelectionStart + + ", lse=" + mLastSelectionEnd + + ", nss=" + newSelStart + + ", nse=" + newSelEnd + + ", cs=" + composingSpanStart + + ", ce=" + composingSpanEnd; + ResearchLogger.logUnstructured(ResearchLogger.UnsLogGroup.ON_UPDATE_SELECTION, s); + } + } if (DEBUG) { Log.i(TAG, "onUpdateSelection: oss=" + oldSelStart + ", ose=" + oldSelEnd @@ -803,8 +771,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar + ", ce=" + composingSpanEnd); } - mVoiceProxy.setCursorAndSelection(newSelEnd, newSelStart); - // TODO: refactor the following code to be less contrived. // "newSelStart != composingSpanEnd" || "newSelEnd != composingSpanEnd" means // that the cursor is not at the end of the composing span, or there is a selection. @@ -892,7 +858,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar mOptionsDialog.dismiss(); mOptionsDialog = null; } - mVoiceProxy.hideVoiceWindow(); super.hideWindow(); } @@ -1081,7 +1046,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar if (ic != null) { ic.finishComposingText(); } - mVoiceProxy.setVoiceInputHighlighted(false); } private void resetComposingState(final boolean alsoResetLastComposedWord) { @@ -1171,14 +1135,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar private void onSettingsKeyPressed() { if (isShowingOptionDialog()) return; - if (InputMethodServiceCompatWrapper.CAN_HANDLE_ON_CURRENT_INPUT_METHOD_SUBTYPE_CHANGED) { - showSubtypeSelectorAndSettings(); - } else if (SubtypeUtils.hasMultipleEnabledIMEsOrSubtypes( - false /* exclude aux subtypes */)) { - showOptionsMenu(); - } else { - launchSettings(); - } + showSubtypeSelectorAndSettings(); } // Virtual codes representing custom requests. These are used in onCustomRequest() below. @@ -1338,7 +1295,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar @Override public void onTextInput(CharSequence text) { - mVoiceProxy.commitVoiceInput(); final InputConnection ic = getCurrentInputConnection(); if (ic == null) return; ic.beginBatchEdit(); @@ -1383,7 +1339,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar } private void handleBackspace(final int spaceState) { - if (mVoiceProxy.logAndRevertVoiceInput()) return; final InputConnection ic = getCurrentInputConnection(); if (ic == null) return; ic.beginBatchEdit(); @@ -1393,8 +1348,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar // "ic" may not be null. private void handleBackspaceWhileInBatchEdit(final int spaceState, final InputConnection ic) { - mVoiceProxy.handleBackspace(); - // In many cases, we may have to put the keyboard in auto-shift state again. mHandler.postUpdateShiftState(); @@ -1493,7 +1446,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar private void handleCharacter(final int primaryCode, final int x, final int y, final int spaceState) { - mVoiceProxy.handleCharacter(); final InputConnection ic = getCurrentInputConnection(); if (null != ic) ic.beginBatchEdit(); // TODO: if ic is null, does it make any sense to call this? @@ -1569,8 +1521,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar // Returns true if we did an autocorrection, false otherwise. private boolean handleSeparator(final int primaryCode, final int x, final int y, final int spaceState) { - mVoiceProxy.handleSeparator(); - // Should dismiss the "Touch again to save" message when handling separator if (mSuggestionsView != null && mSuggestionsView.dismissAddToDictionaryHint()) { mHandler.cancelUpdateBigramPredictions(); @@ -1656,7 +1606,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar private void handleClose() { commitTyped(getCurrentInputConnection(), LastComposedWord.NOT_A_SEPARATOR); - mVoiceProxy.handleClose(); requestHideSelf(0); LatinKeyboardView inputView = mKeyboardSwitcher.getKeyboardView(); if (inputView != null) @@ -1736,8 +1685,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar public void updateSuggestions() { // Check if we have a suggestion engine attached. - if ((mSuggest == null || !isSuggestionsRequested()) - && !mVoiceProxy.isVoiceInputHighlighted()) { + if ((mSuggest == null || !isSuggestionsRequested())) { if (mWordComposer.isComposingWord()) { Log.w(TAG, "Called updateSuggestions but suggestions were not requested!"); mWordComposer.setAutoCorrection(mWordComposer.getTypedWord()); @@ -1837,8 +1785,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar if (!typedWord.equals(autoCorrection) && null != ic) { // This will make the correction flash for a short while as a visual clue // to the user that auto-correction happened. - InputConnectionCompatUtils.commitCorrection(ic, - mLastSelectionEnd - typedWord.length(), typedWord, autoCorrection); + ic.commitCorrection(new CorrectionInfo(mLastSelectionEnd - typedWord.length(), + typedWord, autoCorrection)); } } } @@ -1846,8 +1794,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar @Override public void pickSuggestionManually(final int index, final CharSequence suggestion) { final SuggestedWords suggestedWords = mSuggestionsView.getSuggestions(); - mVoiceProxy.flushAndLogAllTextModificationCounters(index, suggestion, - mSettingsValues.mWordSeparators); if (SPACE_STATE_PHANTOM == mSpaceState && suggestion.length() > 0) { int firstChar = Character.codePointAt(suggestion, 0); @@ -1940,7 +1886,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar final int separatorCode) { final InputConnection ic = getCurrentInputConnection(); if (ic != null) { - mVoiceProxy.rememberReplacedWord(bestWord, mSettingsValues.mWordSeparators); if (mSettingsValues.mEnableSuggestionSpanInsertion) { final SuggestedWords suggestedWords = mSuggestionsView.getSuggestions(); ic.commitText(SuggestionSpanUtils.getTextWithSuggestionSpan( @@ -2193,11 +2138,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar // Notify that language or mode have been changed and toggleLanguage will update KeyboardID // according to new language or mode. public void onRefreshKeyboard() { - if (!CAN_HANDLE_ON_CURRENT_INPUT_METHOD_SUBTYPE_CHANGED) { - // Before Honeycomb, Voice IME is in LatinIME and it changes the current input view, - // so that we need to re-create the keyboard input view here. - setInputView(mKeyboardSwitcher.onCreateInputView()); - } // When the device locale is changed in SetupWizard etc., this method may get called via // onConfigurationChanged before SoftInputWindow is shown. if (mKeyboardSwitcher.getKeyboardView() != null) { @@ -2256,11 +2196,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar } }; - // TODO: remove this method when VoiceProxy has been removed - public void vibrate() { - mFeedbackManager.vibrate(mKeyboardSwitcher.getKeyboardView()); - } - private void updateCorrectionMode() { // TODO: cleanup messy flags final boolean shouldAutoCorrect = mSettingsValues.mAutoCorrectEnabled @@ -2328,32 +2263,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar showOptionDialogInternal(builder.create()); } - private void showOptionsMenu() { - final CharSequence title = getString(R.string.english_ime_input_options); - final CharSequence[] items = new CharSequence[] { - getString(R.string.selectInputMethod), - getString(R.string.english_ime_settings), - }; - final DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface di, int position) { - di.dismiss(); - switch (position) { - case 0: - mImm.showInputMethodPicker(); - break; - case 1: - launchSettings(); - break; - } - } - }; - final AlertDialog.Builder builder = new AlertDialog.Builder(this) - .setItems(items, listener) - .setTitle(title); - showOptionDialogInternal(builder.create()); - } - @Override protected void dump(FileDescriptor fd, PrintWriter fout, String[] args) { super.dump(fd, fout, args); diff --git a/java/src/com/android/inputmethod/latin/ResearchLogger.java b/java/src/com/android/inputmethod/latin/ResearchLogger.java index 570333cb7..c5fb61f78 100644 --- a/java/src/com/android/inputmethod/latin/ResearchLogger.java +++ b/java/src/com/android/inputmethod/latin/ResearchLogger.java @@ -259,20 +259,33 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang write(LogGroup.STATE_CHANGE, subgroup + "\t" + details); } + public static enum UnsLogGroup { + // TODO: expand to include one flag per log point + // TODO: support selective enabling of flags + ON_UPDATE_SELECTION; + + public boolean isEnabled = true; + } + + public static void logUnstructured(UnsLogGroup logGroup, String details) { + } + private void write(final LogGroup logGroup, final String log) { + // TODO: rewrite in native for better performance mLoggingHandler.post(new Runnable() { @Override public void run() { final long currentTime = System.currentTimeMillis(); - mDate.setTime(currentTime); final long upTime = SystemClock.uptimeMillis(); - - final String printString = String.format("%s\t%d\t%s\t%s\n", - mDateFormat.format(mDate), upTime, logGroup.mLogString, log); + final StringBuilder builder = new StringBuilder(); + builder.append(currentTime); + builder.append('\t'); builder.append(upTime); + builder.append('\t'); builder.append(logGroup.mLogString); + builder.append('\t'); builder.append(log); if (LatinImeLogger.sDBG) { Log.d(TAG, "Write: " + '[' + logGroup.mLogString + ']' + log); } - if (mLogFileManager.append(printString)) { + if (mLogFileManager.append(builder.toString())) { // success } else { if (LatinImeLogger.sDBG) { diff --git a/java/src/com/android/inputmethod/latin/Settings.java b/java/src/com/android/inputmethod/latin/Settings.java index 110264892..fd61292df 100644 --- a/java/src/com/android/inputmethod/latin/Settings.java +++ b/java/src/com/android/inputmethod/latin/Settings.java @@ -44,16 +44,14 @@ import android.widget.TextView; import com.android.inputmethod.compat.CompatUtils; import com.android.inputmethod.compat.InputMethodServiceCompatWrapper; -import com.android.inputmethod.compat.VibratorCompatWrapper; -import com.android.inputmethod.deprecated.VoiceProxy; +import com.android.inputmethod.latin.VibratorUtils; import com.android.inputmethod.latin.define.ProductionFlag; import com.android.inputmethodcommon.InputMethodSettingsActivity; import java.util.Locale; public class Settings extends InputMethodSettingsActivity - implements SharedPreferences.OnSharedPreferenceChangeListener, - DialogInterface.OnDismissListener, OnPreferenceClickListener { + implements SharedPreferences.OnSharedPreferenceChangeListener, OnPreferenceClickListener { private static final String TAG = Settings.class.getSimpleName(); public static final boolean ENABLE_EXPERIMENTAL_SETTINGS = false; @@ -92,9 +90,6 @@ public class Settings extends InputMethodSettingsActivity public static final String PREF_SELECTED_LANGUAGES = "selected_languages"; public static final String PREF_DEBUG_SETTINGS = "debug_settings"; - // Dialog ids - private static final int VOICE_INPUT_CONFIRM_DIALOG = 0; - private PreferenceScreen mInputLanguageSelection; private PreferenceScreen mKeypressVibrationDurationSettingsPref; private PreferenceScreen mKeypressSoundVolumeSettingsPref; @@ -113,7 +108,6 @@ public class Settings extends InputMethodSettingsActivity private TextView mKeypressVibrationDurationSettingsTextView; private TextView mKeypressSoundVolumeSettingsTextView; - private boolean mOkClicked = false; private String mVoiceModeOff; private void ensureConsistencyOfAutoCorrectionSettings() { @@ -185,7 +179,7 @@ public class Settings extends InputMethodSettingsActivity generalSettings.removePreference(mVoicePreference); } - if (!VibratorCompatWrapper.getInstance(context).hasVibrator()) { + if (!VibratorUtils.getInstance(context).hasVibrator()) { generalSettings.removePreference(findPreference(PREF_VIBRATE_ON)); } @@ -291,9 +285,7 @@ public class Settings extends InputMethodSettingsActivity public void onResume() { super.onResume(); final boolean isShortcutImeEnabled = SubtypeSwitcher.getInstance().isShortcutImeEnabled(); - if (isShortcutImeEnabled - || (VoiceProxy.VOICE_INSTALLED - && VoiceProxy.isRecognitionAvailable(getActivityInternal()))) { + if (isShortcutImeEnabled) { updateVoiceModeSummary(); } else { getPreferenceScreen().removePreference(mVoicePreference); @@ -312,13 +304,7 @@ public class Settings extends InputMethodSettingsActivity @Override public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { (new BackupManager(getActivityInternal())).dataChanged(); - // If turning on voice input, show dialog - if (key.equals(PREF_VOICE_MODE) && !mVoiceOn) { - if (!prefs.getString(PREF_VOICE_MODE, mVoiceModeOff) - .equals(mVoiceModeOff)) { - showVoiceConfirmation(); - } - } else if (key.equals(PREF_POPUP_ON)) { + if (key.equals(PREF_POPUP_ON)) { final ListPreference popupDismissDelay = (ListPreference)findPreference(PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY); if (null != popupDismissDelay) { @@ -363,84 +349,16 @@ public class Settings extends InputMethodSettingsActivity lp.setSummary(lp.getEntries()[lp.findIndexOfValue(lp.getValue())]); } - private void showVoiceConfirmation() { - mOkClicked = false; - getActivityInternal().showDialog(VOICE_INPUT_CONFIRM_DIALOG); - // Make URL in the dialog message clickable - if (mDialog != null) { - TextView textView = (TextView) mDialog.findViewById(android.R.id.message); - if (textView != null) { - textView.setMovementMethod(LinkMovementMethod.getInstance()); - } - } - } - private void updateVoiceModeSummary() { mVoicePreference.setSummary( getResources().getStringArray(R.array.voice_input_modes_summary) [mVoicePreference.findIndexOfValue(mVoicePreference.getValue())]); } - @Override - protected Dialog onCreateDialog(int id) { - switch (id) { - case VOICE_INPUT_CONFIRM_DIALOG: - DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int whichButton) { - if (whichButton == DialogInterface.BUTTON_NEGATIVE) { - mVoicePreference.setValue(mVoiceModeOff); - } else if (whichButton == DialogInterface.BUTTON_POSITIVE) { - mOkClicked = true; - } - } - }; - AlertDialog.Builder builder = new AlertDialog.Builder(getActivityInternal()) - .setTitle(R.string.voice_warning_title) - .setPositiveButton(android.R.string.ok, listener) - .setNegativeButton(android.R.string.cancel, listener); - - // Get the current list of supported locales and check the current locale against - // that list, to decide whether to put a warning that voice input will not work in - // the current language as part of the pop-up confirmation dialog. - boolean localeSupported = SubtypeSwitcher.isVoiceSupported( - this, Locale.getDefault().toString()); - - final CharSequence message; - if (localeSupported) { - message = TextUtils.concat( - getText(R.string.voice_warning_may_not_understand), "\n\n", - getText(R.string.voice_hint_dialog_message)); - } else { - message = TextUtils.concat( - getText(R.string.voice_warning_locale_not_supported), "\n\n", - getText(R.string.voice_warning_may_not_understand), "\n\n", - getText(R.string.voice_hint_dialog_message)); - } - builder.setMessage(message); - AlertDialog dialog = builder.create(); - mDialog = dialog; - dialog.setOnDismissListener(this); - return dialog; - default: - Log.e(TAG, "unknown dialog " + id); - return null; - } - } - - @Override - public void onDismiss(DialogInterface dialog) { - if (!mOkClicked) { - // This assumes that onPreferenceClick gets called first, and this if the user - // agreed after the warning, we set the mOkClicked value to true. - mVoicePreference.setValue(mVoiceModeOff); - } - } - private void refreshEnablingsOfKeypressSoundAndVibrationSettings( SharedPreferences sp, Resources res) { if (mKeypressVibrationDurationSettingsPref != null) { - final boolean hasVibrator = VibratorCompatWrapper.getInstance(this).hasVibrator(); + final boolean hasVibrator = VibratorUtils.getInstance(this).hasVibrator(); final boolean vibrateOn = hasVibrator && sp.getBoolean(Settings.PREF_VIBRATE_ON, res.getBoolean(R.bool.config_default_vibration_enabled)); mKeypressVibrationDurationSettingsPref.setEnabled(vibrateOn); @@ -503,7 +421,7 @@ public class Settings extends InputMethodSettingsActivity @Override public void onStopTrackingTouch(SeekBar arg0) { final int tempMs = arg0.getProgress(); - VibratorCompatWrapper.getInstance(context).vibrate(tempMs); + VibratorUtils.getInstance(context).vibrate(tempMs); } }); sb.setProgress(currentMs); diff --git a/java/src/com/android/inputmethod/latin/SettingsValues.java b/java/src/com/android/inputmethod/latin/SettingsValues.java index c1335fdfe..f76cc7e44 100644 --- a/java/src/com/android/inputmethod/latin/SettingsValues.java +++ b/java/src/com/android/inputmethod/latin/SettingsValues.java @@ -23,8 +23,9 @@ import android.util.Log; import android.view.inputmethod.EditorInfo; import com.android.inputmethod.compat.InputTypeCompatUtils; -import com.android.inputmethod.compat.VibratorCompatWrapper; import com.android.inputmethod.keyboard.internal.KeySpecParser; +import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; +import com.android.inputmethod.latin.VibratorUtils; import java.util.ArrayList; import java.util.Arrays; @@ -162,7 +163,7 @@ public class SettingsValues { if (puncs != null) { for (final String puncSpec : puncs) { puncList.add(new SuggestedWords.SuggestedWordInfo( - KeySpecParser.getLabel(puncSpec))); + KeySpecParser.getLabel(puncSpec), SuggestedWordInfo.MAX_SCORE)); } } return new SuggestedWords(puncList, @@ -187,7 +188,7 @@ public class SettingsValues { private static boolean isVibrateOn(final Context context, final SharedPreferences prefs, final Resources res) { - final boolean hasVibrator = VibratorCompatWrapper.getInstance(context).hasVibrator(); + final boolean hasVibrator = VibratorUtils.getInstance(context).hasVibrator(); return hasVibrator && prefs.getBoolean(Settings.PREF_VIBRATE_ON, res.getBoolean(R.bool.config_default_vibration_enabled)); } diff --git a/java/src/com/android/inputmethod/latin/SubtypeLocale.java b/java/src/com/android/inputmethod/latin/SubtypeLocale.java index 917521c40..66c13bd2e 100644 --- a/java/src/com/android/inputmethod/latin/SubtypeLocale.java +++ b/java/src/com/android/inputmethod/latin/SubtypeLocale.java @@ -36,10 +36,16 @@ public class SubtypeLocale { } public static String getFullDisplayName(Locale locale) { - String localeCode = locale.toString(); + final String localeCode = locale.toString(); for (int index = 0; index < sExceptionKeys.length; index++) { - if (sExceptionKeys[index].equals(localeCode)) - return sExceptionValues[index]; + if (sExceptionKeys[index].equals(localeCode)) { + final String value = sExceptionValues[index]; + if (value.indexOf("%s") >= 0) { + final String languageName = locale.getDisplayLanguage(locale); + return String.format(value, languageName); + } + return value; + } } return locale.getDisplayName(locale); } diff --git a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java index 3524c72f6..de2e8be3d 100644 --- a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java +++ b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java @@ -33,7 +33,6 @@ import android.util.Log; import com.android.inputmethod.compat.InputMethodInfoCompatWrapper; import com.android.inputmethod.compat.InputMethodManagerCompatWrapper; import com.android.inputmethod.compat.InputMethodSubtypeCompatWrapper; -import com.android.inputmethod.deprecated.VoiceProxy; import com.android.inputmethod.keyboard.KeyboardSwitcher; import java.util.ArrayList; @@ -76,7 +75,6 @@ public class SubtypeSwitcher { private Locale mSystemLocale; private Locale mInputLocale; private String mInputLocaleStr; - private VoiceProxy.VoiceInputWrapper mVoiceInputWrapper; /*-----------------------------------------------------------*/ private boolean mIsNetworkConnected; @@ -108,7 +106,6 @@ public class SubtypeSwitcher { mInputLocaleStr = null; mCurrentSubtype = null; mAllEnabledSubtypesOfCurrentInputMethod = null; - mVoiceInputWrapper = null; final NetworkInfo info = mConnectivityManager.getActiveNetworkInfo(); mIsNetworkConnected = (info != null && info.isConnected()); @@ -234,34 +231,12 @@ public class SubtypeSwitcher { } mCurrentSubtype = newSubtype; - // If the old mode is voice input, we need to reset or cancel its status. - // We cancel its status when we change mode, while we reset otherwise. if (isKeyboardMode()) { - if (modeChanged) { - if (VOICE_MODE.equals(oldMode) && mVoiceInputWrapper != null) { - mVoiceInputWrapper.cancel(); - } - } if (modeChanged || languageChanged) { updateShortcutIME(); mService.onRefreshKeyboard(); } - } else if (isVoiceMode() && mVoiceInputWrapper != null) { - if (VOICE_MODE.equals(oldMode)) { - mVoiceInputWrapper.reset(); - } - // If needsToShowWarningDialog is true, voice input need to show warning before - // show recognition view. - if (languageChanged || modeChanged - || VoiceProxy.getInstance().needsToShowWarningDialog()) { - triggerVoiceIME(); - } } else { - if (VOICE_MODE.equals(oldMode) && mVoiceInputWrapper != null) { - // We need to reset the voice input to release the resources and to reset its status - // as it is not the current input mode. - mVoiceInputWrapper.reset(); - } final String packageName = mService.getPackageName(); int version = -1; try { @@ -270,7 +245,7 @@ public class SubtypeSwitcher { } catch (NameNotFoundException e) { } Log.w(TAG, "Unknown subtype mode: " + newMode + "," + version + ", " + packageName - + ", " + mVoiceInputWrapper + ". IME is already changed to other IME."); + + ". IME is already changed to other IME."); if (newSubtype != null) { Log.w(TAG, "Subtype mode:" + newSubtype.getMode()); Log.w(TAG, "Subtype locale:" + newSubtype.getLocale()); @@ -477,40 +452,6 @@ public class SubtypeSwitcher { return KEYBOARD_MODE.equals(getCurrentSubtypeMode()); } - - /////////////////////////// - // Voice Input functions // - /////////////////////////// - - public boolean setVoiceInputWrapper(VoiceProxy.VoiceInputWrapper vi) { - if (mVoiceInputWrapper == null && vi != null) { - mVoiceInputWrapper = vi; - if (isVoiceMode()) { - if (DBG) { - Log.d(TAG, "Set and call voice input.: " + getInputLocaleStr()); - } - triggerVoiceIME(); - return true; - } - } - return false; - } - - public boolean isVoiceMode() { - return null == mCurrentSubtype ? false : VOICE_MODE.equals(getCurrentSubtypeMode()); - } - - public boolean isDummyVoiceMode() { - return mCurrentSubtype != null && mCurrentSubtype.getOriginalObject() == null - && VOICE_MODE.equals(getCurrentSubtypeMode()); - } - - private void triggerVoiceIME() { - if (!mService.isInputViewShown()) return; - VoiceProxy.getInstance().startListening(false, - KeyboardSwitcher.getInstance().getKeyboardView().getWindowToken()); - } - public String getInputLanguageName() { return StringUtils.getDisplayLanguage(getInputLocale()); } @@ -537,18 +478,4 @@ public class SubtypeSwitcher { public String getCurrentSubtypeMode() { return null != mCurrentSubtype ? mCurrentSubtype.getMode() : KEYBOARD_MODE; } - - - public static boolean isVoiceSupported(Context context, String locale) { - // Get the current list of supported locales and check the current locale against that - // list. We cache this value so as not to check it every time the user starts a voice - // input. Because this method is called by onStartInputView, this should mean that as - // long as the locale doesn't change while the user is keeping the IME open, the - // value should never be stale. - String supportedLocalesString = VoiceProxy.getSupportedLocalesString( - context.getContentResolver()); - List<String> voiceInputSupportedLocales = Arrays.asList( - supportedLocalesString.split("\\s+")); - return voiceInputSupportedLocales.contains(locale); - } } diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java index 9ae2506f4..b31f3019c 100644 --- a/java/src/com/android/inputmethod/latin/Suggest.java +++ b/java/src/com/android/inputmethod/latin/Suggest.java @@ -26,7 +26,6 @@ import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; import java.io.File; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Locale; @@ -93,11 +92,9 @@ public class Suggest implements Dictionary.WordCallback { private static final int PREF_MAX_BIGRAMS = 60; private double mAutoCorrectionThreshold; - private int[] mScores = new int[mPrefMaxSuggestions]; - private int[] mBigramScores = new int[PREF_MAX_BIGRAMS]; - private ArrayList<CharSequence> mSuggestions = new ArrayList<CharSequence>(); - private ArrayList<CharSequence> mBigramSuggestions = new ArrayList<CharSequence>(); + private ArrayList<SuggestedWordInfo> mSuggestions = new ArrayList<SuggestedWordInfo>(); + private ArrayList<SuggestedWordInfo> mBigramSuggestions = new ArrayList<SuggestedWordInfo>(); private CharSequence mConsideredWord; // TODO: Remove these member variables by passing more context to addWord() callback method @@ -230,10 +227,8 @@ public class Suggest implements Dictionary.WordCallback { return sb; } - protected void addBigramToSuggestions(CharSequence bigram) { - final StringBuilder sb = new StringBuilder(getApproxMaxWordLength()); - sb.append(bigram); - mSuggestions.add(sb); + protected void addBigramToSuggestions(SuggestedWordInfo bigram) { + mSuggestions.add(bigram); } private static final WordComposer sEmptyWordComposer = new WordComposer(); @@ -242,15 +237,13 @@ public class Suggest implements Dictionary.WordCallback { mIsFirstCharCapitalized = false; mIsAllUpperCase = false; mTrailingSingleQuotesCount = 0; - mSuggestions = new ArrayList<CharSequence>(mPrefMaxSuggestions); - Arrays.fill(mScores, 0); + mSuggestions = new ArrayList<SuggestedWordInfo>(mPrefMaxSuggestions); // Treating USER_TYPED as UNIGRAM suggestion for logging now. LatinImeLogger.onAddSuggestedWord("", Suggest.DIC_USER_TYPED, Dictionary.UNIGRAM); mConsideredWord = ""; - Arrays.fill(mBigramScores, 0); - mBigramSuggestions = new ArrayList<CharSequence>(PREF_MAX_BIGRAMS); + mBigramSuggestions = new ArrayList<SuggestedWordInfo>(PREF_MAX_BIGRAMS); CharSequence lowerPrevWord = prevWordForBigram.toString().toLowerCase(); if (mMainDict != null && mMainDict.isValidWord(lowerPrevWord)) { @@ -265,9 +258,9 @@ public class Suggest implements Dictionary.WordCallback { addBigramToSuggestions(mBigramSuggestions.get(i)); } - StringUtils.removeDupes(mSuggestions); + SuggestedWordInfo.removeDups(mSuggestions); - return new SuggestedWords(SuggestedWords.getFromCharSequenceList(mSuggestions), + return new SuggestedWords(mSuggestions, false /* typedWordValid */, false /* hasAutoCorrectionCandidate */, false /* allowsToBeAutoCorrected */, @@ -283,8 +276,7 @@ public class Suggest implements Dictionary.WordCallback { mIsFirstCharCapitalized = wordComposer.isFirstCharCapitalized(); mIsAllUpperCase = wordComposer.isAllUpperCase(); mTrailingSingleQuotesCount = wordComposer.trailingSingleQuotesCount(); - mSuggestions = new ArrayList<CharSequence>(mPrefMaxSuggestions); - Arrays.fill(mScores, 0); + mSuggestions = new ArrayList<SuggestedWordInfo>(mPrefMaxSuggestions); final String typedWord = wordComposer.getTypedWord(); final String consideredWord = mTrailingSingleQuotesCount > 0 @@ -296,8 +288,7 @@ public class Suggest implements Dictionary.WordCallback { if (wordComposer.size() <= 1 && (correctionMode == CORRECTION_FULL_BIGRAM)) { // At first character typed, search only the bigrams - Arrays.fill(mBigramScores, 0); - mBigramSuggestions = new ArrayList<CharSequence>(PREF_MAX_BIGRAMS); + mBigramSuggestions = new ArrayList<SuggestedWordInfo>(PREF_MAX_BIGRAMS); if (!TextUtils.isEmpty(prevWordForBigram)) { CharSequence lowerPrevWord = prevWordForBigram.toString().toLowerCase(); @@ -317,12 +308,14 @@ public class Suggest implements Dictionary.WordCallback { // Word entered: return only bigrams that match the first char of the typed word final char currentChar = consideredWord.charAt(0); // TODO: Must pay attention to locale when changing case. + // TODO: Use codepoint instead of char final char currentCharUpper = Character.toUpperCase(currentChar); int count = 0; final int bigramSuggestionSize = mBigramSuggestions.size(); for (int i = 0; i < bigramSuggestionSize; i++) { - final CharSequence bigramSuggestion = mBigramSuggestions.get(i); - final char bigramSuggestionFirstChar = bigramSuggestion.charAt(0); + final SuggestedWordInfo bigramSuggestion = mBigramSuggestions.get(i); + final char bigramSuggestionFirstChar = + (char)bigramSuggestion.codePointAt(0); if (bigramSuggestionFirstChar == currentChar || bigramSuggestionFirstChar == currentCharUpper) { addBigramToSuggestions(bigramSuggestion); @@ -359,7 +352,7 @@ public class Suggest implements Dictionary.WordCallback { if (CORRECTION_FULL == correctionMode || CORRECTION_FULL_BIGRAM == correctionMode) { final CharSequence autoCorrection = AutoCorrection.computeAutoCorrectionWord(mUnigramDictionaries, wordComposer, - mSuggestions, mScores, consideredWord, mAutoCorrectionThreshold, + mSuggestions, consideredWord, mAutoCorrectionThreshold, whitelistedWord); hasAutoCorrection = (null != autoCorrection); } else { @@ -372,20 +365,22 @@ public class Suggest implements Dictionary.WordCallback { for (int i = mTrailingSingleQuotesCount - 1; i >= 0; --i) { sb.appendCodePoint(Keyboard.CODE_SINGLE_QUOTE); } - mSuggestions.add(0, sb.toString()); + mSuggestions.add(0, new SuggestedWordInfo( + sb.toString(), SuggestedWordInfo.MAX_SCORE)); } else { - mSuggestions.add(0, whitelistedWord); + mSuggestions.add(0, new SuggestedWordInfo( + whitelistedWord, SuggestedWordInfo.MAX_SCORE)); } } - mSuggestions.add(0, typedWord); - StringUtils.removeDupes(mSuggestions); + mSuggestions.add(0, new SuggestedWordInfo(typedWord, SuggestedWordInfo.MAX_SCORE)); + SuggestedWordInfo.removeDups(mSuggestions); final ArrayList<SuggestedWordInfo> suggestionsList; if (DBG) { - suggestionsList = getSuggestionsInfoListWithDebugInfo(typedWord, mSuggestions, mScores); + suggestionsList = getSuggestionsInfoListWithDebugInfo(typedWord, mSuggestions); } else { - suggestionsList = SuggestedWords.getFromCharSequenceList(mSuggestions); + suggestionsList = mSuggestions; } // TODO: Change this scheme - a boolean is not enough. A whitelisted word may be "valid" @@ -415,50 +410,45 @@ public class Suggest implements Dictionary.WordCallback { false /* isObsoleteSuggestions */); } - // This assumes the scores[] array is at least as long as suggestions.size() - 1. private static ArrayList<SuggestedWordInfo> getSuggestionsInfoListWithDebugInfo( - final String typedWord, final ArrayList<CharSequence> suggestions, final int[] scores) { - // TODO: this doesn't take into account the fact that removing dupes from mSuggestions - // may have made mScores[] and mSuggestions out of sync. - final CharSequence autoCorrectionSuggestion = suggestions.get(0); + final String typedWord, final ArrayList<SuggestedWordInfo> suggestions) { + final SuggestedWordInfo typedWordInfo = suggestions.get(0); + typedWordInfo.setDebugString("+"); double normalizedScore = BinaryDictionary.calcNormalizedScore( - typedWord, autoCorrectionSuggestion.toString(), scores[0]); + typedWord, typedWordInfo.toString(), typedWordInfo.mScore); final int suggestionsSize = suggestions.size(); final ArrayList<SuggestedWordInfo> suggestionsList = new ArrayList<SuggestedWordInfo>(suggestionsSize); - suggestionsList.add(new SuggestedWordInfo(autoCorrectionSuggestion, "+")); + suggestionsList.add(typedWordInfo); // Note: i here is the index in mScores[], but the index in mSuggestions is one more // than i because we added the typed word to mSuggestions without touching mScores. - for (int i = 0; i < scores.length && i < suggestionsSize - 1; ++i) { + for (int i = 0; i < suggestionsSize - 1; ++i) { + final SuggestedWordInfo cur = suggestions.get(i + 1); final String scoreInfoString; if (normalizedScore > 0) { - scoreInfoString = String.format("%d (%4.2f)", scores[i], normalizedScore); + scoreInfoString = String.format("%d (%4.2f)", cur.mScore, normalizedScore); normalizedScore = 0.0; } else { - scoreInfoString = Integer.toString(scores[i]); + scoreInfoString = Integer.toString(cur.mScore); } - suggestionsList.add(new SuggestedWordInfo(suggestions.get(i + 1), scoreInfoString)); - } - for (int i = scores.length; i < suggestionsSize; ++i) { - suggestionsList.add(new SuggestedWordInfo(suggestions.get(i), "--")); + cur.setDebugString(scoreInfoString); + suggestionsList.add(cur); } return suggestionsList; } + // TODO: Use codepoint instead of char @Override public boolean addWord(final char[] word, final int offset, final int length, int score, final int dicTypeId, final int dataType) { int dataTypeForLog = dataType; - final ArrayList<CharSequence> suggestions; - final int[] sortedScores; + final ArrayList<SuggestedWordInfo> suggestions; final int prefMaxSuggestions; if (dataType == Dictionary.BIGRAM) { suggestions = mBigramSuggestions; - sortedScores = mBigramScores; prefMaxSuggestions = PREF_MAX_BIGRAMS; } else { suggestions = mSuggestions; - sortedScores = mScores; prefMaxSuggestions = mPrefMaxSuggestions; } @@ -469,13 +459,13 @@ public class Suggest implements Dictionary.WordCallback { // TODO: remove this surrounding if clause and move this logic to // getSuggestedWordBuilder. if (suggestions.size() > 0) { - final String currentHighestWord = suggestions.get(0).toString(); + final SuggestedWordInfo currentHighestWord = suggestions.get(0); // If the current highest word is also equal to typed word, we need to compare // frequency to determine the insertion position. This does not ensure strictly // correct ordering, but ensures the top score is on top which is enough for // removing duplicates correctly. - if (StringUtils.equalsIgnoreCase(currentHighestWord, word, offset, length) - && score <= sortedScores[0]) { + if (StringUtils.equalsIgnoreCase(currentHighestWord.mWord, word, offset, length) + && score <= currentHighestWord.mScore) { pos = 1; } } @@ -486,7 +476,7 @@ public class Suggest implements Dictionary.WordCallback { if(bigramSuggestion >= 0) { dataTypeForLog = Dictionary.BIGRAM; // turn freq from bigram into multiplier specified above - double multiplier = (((double) mBigramScores[bigramSuggestion]) + double multiplier = (((double) mBigramSuggestions.get(bigramSuggestion).mScore) / MAXIMUM_BIGRAM_FREQUENCY) * (BIGRAM_MULTIPLIER_MAX - BIGRAM_MULTIPLIER_MIN) + BIGRAM_MULTIPLIER_MIN; @@ -500,10 +490,12 @@ public class Suggest implements Dictionary.WordCallback { } // Check the last one's score and bail - if (sortedScores[prefMaxSuggestions - 1] >= score) return true; - while (pos < prefMaxSuggestions) { - if (sortedScores[pos] < score - || (sortedScores[pos] == score && length < suggestions.get(pos).length())) { + if (suggestions.size() >= prefMaxSuggestions + && suggestions.get(prefMaxSuggestions - 1).mScore >= score) return true; + while (pos < suggestions.size()) { + final int curScore = suggestions.get(pos).mScore; + if (curScore < score + || (curScore == score && length < suggestions.get(pos).codePointCount())) { break; } pos++; @@ -513,8 +505,6 @@ public class Suggest implements Dictionary.WordCallback { return true; } - System.arraycopy(sortedScores, pos, sortedScores, pos + 1, prefMaxSuggestions - pos - 1); - sortedScores[pos] = score; final StringBuilder sb = new StringBuilder(getApproxMaxWordLength()); // TODO: Must pay attention to locale when changing case. if (mIsAllUpperCase) { @@ -530,7 +520,7 @@ public class Suggest implements Dictionary.WordCallback { for (int i = mTrailingSingleQuotesCount - 1; i >= 0; --i) { sb.appendCodePoint(Keyboard.CODE_SINGLE_QUOTE); } - suggestions.add(pos, sb); + suggestions.add(pos, new SuggestedWordInfo(sb, score)); if (suggestions.size() > prefMaxSuggestions) { suggestions.remove(prefMaxSuggestions); } else { @@ -539,15 +529,16 @@ public class Suggest implements Dictionary.WordCallback { return true; } + // TODO: Use codepoint instead of char private int searchBigramSuggestion(final char[] word, final int offset, final int length) { // TODO This is almost O(n^2). Might need fix. // search whether the word appeared in bigram data int bigramSuggestSize = mBigramSuggestions.size(); for (int i = 0; i < bigramSuggestSize; i++) { - if (mBigramSuggestions.get(i).length() == length) { + if (mBigramSuggestions.get(i).codePointCount() == length) { boolean chk = true; for (int j = 0; j < length; j++) { - if (mBigramSuggestions.get(i).charAt(j) != word[offset+j]) { + if (mBigramSuggestions.get(i).codePointAt(j) != word[offset+j]) { chk = false; break; } diff --git a/java/src/com/android/inputmethod/latin/SuggestedWords.java b/java/src/com/android/inputmethod/latin/SuggestedWords.java index ef8e58e0c..0c0ce182f 100644 --- a/java/src/com/android/inputmethod/latin/SuggestedWords.java +++ b/java/src/com/android/inputmethod/latin/SuggestedWords.java @@ -56,6 +56,10 @@ public class SuggestedWords { return mSuggestedWordInfoList.get(pos).mWord; } + public SuggestedWordInfo getWordInfo(int pos) { + return mSuggestedWordInfoList.get(pos); + } + public SuggestedWordInfo getInfo(int pos) { return mSuggestedWordInfoList.get(pos); } @@ -79,20 +83,12 @@ public class SuggestedWords { + " words=" + Arrays.toString(mSuggestedWordInfoList.toArray()); } - public static ArrayList<SuggestedWordInfo> getFromCharSequenceList( - final ArrayList<CharSequence> wordList) { - final ArrayList<SuggestedWordInfo> result = new ArrayList<SuggestedWordInfo>(); - for (CharSequence word : wordList) { - if (null != word) result.add(new SuggestedWordInfo(word)); - } - return result; - } - public static ArrayList<SuggestedWordInfo> getFromApplicationSpecifiedCompletions( final CompletionInfo[] infos) { final ArrayList<SuggestedWordInfo> result = new ArrayList<SuggestedWordInfo>(); for (CompletionInfo info : infos) { - if (null != info) result.add(new SuggestedWordInfo(info.getText())); + if (null != info) result.add(new SuggestedWordInfo(info.getText(), + SuggestedWordInfo.MAX_SCORE)); } return result; } @@ -103,14 +99,15 @@ public class SuggestedWords { final CharSequence typedWord, final SuggestedWords previousSuggestions) { final ArrayList<SuggestedWordInfo> suggestionsList = new ArrayList<SuggestedWordInfo>(); final HashSet<String> alreadySeen = new HashSet<String>(); - suggestionsList.add(new SuggestedWordInfo(typedWord)); + suggestionsList.add(new SuggestedWordInfo(typedWord, SuggestedWordInfo.MAX_SCORE)); alreadySeen.add(typedWord.toString()); final int previousSize = previousSuggestions.size(); for (int pos = 1; pos < previousSize; pos++) { - final String prevWord = previousSuggestions.getWord(pos).toString(); + final SuggestedWordInfo prevWordInfo = previousSuggestions.getWordInfo(pos); + final String prevWord = prevWordInfo.mWord.toString(); // Filter out duplicate suggestion. if (!alreadySeen.contains(prevWord)) { - suggestionsList.add(new SuggestedWordInfo(prevWord)); + suggestionsList.add(prevWordInfo); alreadySeen.add(prevWord); } } @@ -118,30 +115,64 @@ public class SuggestedWords { } public static class SuggestedWordInfo { + public static final int MAX_SCORE = Integer.MAX_VALUE; + private final String mWordStr; public final CharSequence mWord; - private final String mDebugString; + public final int mScore; + public final int mCodePointCount; + private String mDebugString = ""; - public SuggestedWordInfo(final CharSequence word) { + public SuggestedWordInfo(final CharSequence word, final int score) { + mWordStr = word.toString(); mWord = word; - mDebugString = ""; + mScore = score; + mCodePointCount = mWordStr.codePointCount(0, mWordStr.length()); } - public SuggestedWordInfo(final CharSequence word, final String debugString) { - mWord = word; - if (null == debugString) throw new NullPointerException(""); - mDebugString = debugString; + + public void setDebugString(String str) { + if (null == str) throw new NullPointerException("Debug info is null"); + mDebugString = str; } public String getDebugString() { return mDebugString; } + public int codePointCount() { + return mCodePointCount; + } + + public int codePointAt(int i) { + return mWordStr.codePointAt(i); + } + @Override public String toString() { if (TextUtils.isEmpty(mDebugString)) { - return mWord.toString(); + return mWordStr; } else { - return mWord.toString() + " (" + mDebugString.toString() + ")"; + return mWordStr + " (" + mDebugString.toString() + ")"; + } + } + + // TODO: Consolidate this method and StringUtils.removeDupes() in the future. + public static void removeDups(ArrayList<SuggestedWordInfo> candidates) { + if (candidates.size() <= 1) { + return; + } + int i = 1; + while(i < candidates.size()) { + final SuggestedWordInfo cur = candidates.get(i); + for (int j = 0; j < i; ++j) { + final SuggestedWordInfo previous = candidates.get(j); + if (TextUtils.equals(cur.mWord, previous.mWord)) { + candidates.remove(cur.mScore < previous.mScore ? i : j); + --i; + break; + } + } + ++i; } } } diff --git a/java/src/com/android/inputmethod/compat/VibratorCompatWrapper.java b/java/src/com/android/inputmethod/latin/VibratorUtils.java index 2fb8b8710..33ffdd9c9 100644 --- a/java/src/com/android/inputmethod/compat/VibratorCompatWrapper.java +++ b/java/src/com/android/inputmethod/latin/VibratorUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011 The Android Open Source Project + * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,38 +14,37 @@ * limitations under the License. */ -package com.android.inputmethod.compat; +package com.android.inputmethod.latin; import android.content.Context; import android.os.Vibrator; -import java.lang.reflect.Method; - -public class VibratorCompatWrapper { - private static final Method METHOD_hasVibrator = CompatUtils.getMethod(Vibrator.class, - "hasVibrator"); - - private static final VibratorCompatWrapper sInstance = new VibratorCompatWrapper(); +public class VibratorUtils { + private static final VibratorUtils sInstance = new VibratorUtils(); private Vibrator mVibrator; - private VibratorCompatWrapper() { + private VibratorUtils() { + // This utility class is not publicly instantiable. } - public static VibratorCompatWrapper getInstance(Context context) { + public static VibratorUtils getInstance(Context context) { if (sInstance.mVibrator == null) { - sInstance.mVibrator = - (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); + sInstance.mVibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); } return sInstance; } public boolean hasVibrator() { - if (mVibrator == null) + if (mVibrator == null) { return false; - return (Boolean) CompatUtils.invoke(mVibrator, true, METHOD_hasVibrator); + } + return mVibrator.hasVibrator(); } public void vibrate(long milliseconds) { + if (mVibrator == null) { + return; + } mVibrator.vibrate(milliseconds); } } diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java index 5a173857e..7b13e40c2 100644 --- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java +++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java @@ -26,7 +26,6 @@ import android.util.Log; import android.view.textservice.SuggestionsInfo; import android.view.textservice.TextInfo; -import com.android.inputmethod.compat.ArraysCompatUtils; import com.android.inputmethod.compat.SuggestionsInfoCompatUtils; import com.android.inputmethod.keyboard.ProximityInfo; import com.android.inputmethod.latin.BinaryDictionary; @@ -237,7 +236,7 @@ public class AndroidSpellCheckerService extends SpellCheckerService @Override synchronized public boolean addWord(char[] word, int wordOffset, int wordLength, int score, int dicTypeId, int dataType) { - final int positionIndex = ArraysCompatUtils.binarySearch(mScores, 0, mLength, score); + final int positionIndex = Arrays.binarySearch(mScores, 0, mLength, score); // binarySearch returns the index if the element exists, and -<insertion index> - 1 // if it doesn't. See documentation for binarySearch. final int insertIndex = positionIndex >= 0 ? positionIndex : -positionIndex - 1; |