Merge "Add different ways of reading the dictionary file."
diff --git a/java/res/values-fr/strings.xml b/java/res/values-fr/strings.xml
index 138a225..b7aac94 100644
--- a/java/res/values-fr/strings.xml
+++ b/java/res/values-fr/strings.xml
@@ -36,7 +36,7 @@
     <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Toujours afficher"</string>
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Afficher en mode Portrait"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Toujours masquer"</string>
-    <string name="prefs_settings_key" msgid="4623341240804046498">"Afficher touche paramètr."</string>
+    <string name="prefs_settings_key" msgid="4623341240804046498">"Afficher touche param."</string>
     <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatique"</string>
     <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Toujours afficher"</string>
     <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Toujours masquer"</string>
diff --git a/java/res/values-pl/strings.xml b/java/res/values-pl/strings.xml
index ddaac21..7edd988 100644
--- a/java/res/values-pl/strings.xml
+++ b/java/res/values-pl/strings.xml
@@ -121,22 +121,22 @@
     <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Klawiatura rosyjska"</string>
     <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Klawiatura serbska"</string>
     <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Klawiatura szwedzka"</string>
-    <string name="subtype_mode_af_voice" msgid="7542487489657902699">"Lektor afrikaans"</string>
-    <string name="subtype_mode_cs_voice" msgid="1136386688120958641">"Lektor czeski"</string>
-    <string name="subtype_mode_de_voice" msgid="8378803143958089866">"Lektor niemiecki"</string>
-    <string name="subtype_mode_en_voice" msgid="6643420989651848728">"Lektor angielski"</string>
-    <string name="subtype_mode_es_voice" msgid="1323473601346507487">"Lektor hiszpański"</string>
-    <string name="subtype_mode_fr_voice" msgid="4675914209337824269">"Lektor francuski"</string>
-    <string name="subtype_mode_it_voice" msgid="5077373057157441323">"Głos w języku włoskim"</string>
-    <string name="subtype_mode_ja_voice" msgid="6604859132669646367">"Lektor japoński"</string>
-    <string name="subtype_mode_ko_voice" msgid="4890391190762324561">"Lektor koreański"</string>
-    <string name="subtype_mode_nl_voice" msgid="2603552312869575021">"Głos w języku holenderskim"</string>
-    <string name="subtype_mode_pl_voice" msgid="2076196021014840487">"Lektor polski"</string>
-    <string name="subtype_mode_pt_voice" msgid="8036522712795994397">"Lektor portugalski"</string>
-    <string name="subtype_mode_ru_voice" msgid="8034596947963787529">"Lektor rosyjski"</string>
-    <string name="subtype_mode_tr_voice" msgid="3402067436761140005">"Lektor turecki"</string>
-    <string name="subtype_mode_yue_voice" msgid="1576887891614624263">"Lektor chiński (kantoński)"</string>
-    <string name="subtype_mode_zh_voice" msgid="4360533229467271152">"Lektor chiński (mandaryński)"</string>
-    <string name="subtype_mode_zu_voice" msgid="1146122571698884636">"Lektor isiZulu"</string>
+    <string name="subtype_mode_af_voice" msgid="7542487489657902699">"Mowa afrikaans"</string>
+    <string name="subtype_mode_cs_voice" msgid="1136386688120958641">"Mowa czeska"</string>
+    <string name="subtype_mode_de_voice" msgid="8378803143958089866">"Mowa niemiecka"</string>
+    <string name="subtype_mode_en_voice" msgid="6643420989651848728">"Mowa angielska"</string>
+    <string name="subtype_mode_es_voice" msgid="1323473601346507487">"Mowa hiszpańska"</string>
+    <string name="subtype_mode_fr_voice" msgid="4675914209337824269">"Mowa francuska"</string>
+    <string name="subtype_mode_it_voice" msgid="5077373057157441323">"Mowa włoska"</string>
+    <string name="subtype_mode_ja_voice" msgid="6604859132669646367">"Mowa japońska"</string>
+    <string name="subtype_mode_ko_voice" msgid="4890391190762324561">"Mowa koreańska"</string>
+    <string name="subtype_mode_nl_voice" msgid="2603552312869575021">"Mowa holenderska"</string>
+    <string name="subtype_mode_pl_voice" msgid="2076196021014840487">"Mowa polska"</string>
+    <string name="subtype_mode_pt_voice" msgid="8036522712795994397">"Mowa portugalska"</string>
+    <string name="subtype_mode_ru_voice" msgid="8034596947963787529">"Mowa rosyjska"</string>
+    <string name="subtype_mode_tr_voice" msgid="3402067436761140005">"Mowa turecka"</string>
+    <string name="subtype_mode_yue_voice" msgid="1576887891614624263">"Mowa chińska (kantoński)"</string>
+    <string name="subtype_mode_zh_voice" msgid="4360533229467271152">"Mowa chińska (mandaryński)"</string>
+    <string name="subtype_mode_zu_voice" msgid="1146122571698884636">"Mowa isiZulu"</string>
     <string name="prefs_usability_study_mode" msgid="6937813623647419810">"Tryb badania przydatności"</string>
 </resources>
diff --git a/java/res/values-ru/strings.xml b/java/res/values-ru/strings.xml
index 9e3fea7..21fd02b 100644
--- a/java/res/values-ru/strings.xml
+++ b/java/res/values-ru/strings.xml
@@ -42,7 +42,7 @@
     <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Всегда скрывать"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Автоисправление"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Автоматическое исправление опечаток при вводе знака препинания или пробела"</string>
-    <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Выкл."</string>
+    <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Откл."</string>
     <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Умеренное"</string>
     <string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Активное"</string>
     <string name="bigram_suggestion" msgid="1323347224043514969">"Биграммные подсказки"</string>
@@ -89,12 +89,12 @@
     <string name="cancel" msgid="6830980399865683324">"Отмена"</string>
     <string name="ok" msgid="7898366843681727667">"ОК"</string>
     <string name="voice_input" msgid="2466640768843347841">"Голосовой ввод"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"На осн. клавиатуре"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"На клавиатуре симв."</string>
+    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Значок на основной клавиатуре"</string>
+    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Значок на клавиатуре символов"</string>
     <string name="voice_input_modes_off" msgid="3745699748218082014">"Выкл."</string>
-    <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="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="language_selection_title" msgid="1651299598555326750">"Языки ввода"</string>
     <string name="language_selection_summary" msgid="187110938289512256">"Для изменения языка проведите пальцем по пробелу"</string>
diff --git a/java/src/com/android/inputmethod/compat/CompatUtils.java b/java/src/com/android/inputmethod/compat/CompatUtils.java
new file mode 100644
index 0000000..e1e812d
--- /dev/null
+++ b/java/src/com/android/inputmethod/compat/CompatUtils.java
@@ -0,0 +1,51 @@
+/*
+ * 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.content.Intent;
+import android.text.TextUtils;
+
+public class CompatUtils {
+    private static final String EXTRA_INPUT_METHOD_ID = "input_method_id";
+    // 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) {
+        final String action;
+        Intent intent;
+        if (android.os.Build.VERSION.SDK_INT
+                >= /* android.os.Build.VERSION_CODES.HONEYCOMB */ 11) {
+            // Refer to android.provider.Settings.ACTION_INPUT_METHOD_SUBTYPE_SETTINGS
+            action = INPUT_METHOD_SUBTYPE_SETTINGS;
+            intent = new Intent(action);
+            if (!TextUtils.isEmpty(inputMethodId)) {
+                intent.putExtra(EXTRA_INPUT_METHOD_ID, inputMethodId);
+            }
+            if (flagsForSubtypeSettings > 0) {
+                intent.setFlags(flagsForSubtypeSettings);
+            }
+        } else {
+            action = INPUT_LANGUAGE_SELECTION;
+            intent = new Intent(action);
+        }
+        return intent;
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index e5beb2c..297abfc 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -16,6 +16,7 @@
 
 package com.android.inputmethod.latin;
 
+import com.android.inputmethod.compat.CompatUtils;
 import com.android.inputmethod.deprecated.VoiceConnector;
 import com.android.inputmethod.keyboard.Keyboard;
 import com.android.inputmethod.keyboard.KeyboardActionListener;
@@ -2241,13 +2242,10 @@
                 di.dismiss();
                 switch (position) {
                 case 0:
-                    Intent intent = new Intent(
-                            android.provider.Settings.ACTION_INPUT_METHOD_SUBTYPE_SETTINGS);
-                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+                    Intent intent = CompatUtils.getInputLanguageSelectionIntent(
+                            mInputMethodId, Intent.FLAG_ACTIVITY_NEW_TASK
                             | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
                             | Intent.FLAG_ACTIVITY_CLEAR_TOP);
-                    intent.putExtra(android.provider.Settings.EXTRA_INPUT_METHOD_ID,
-                            mInputMethodId);
                     startActivity(intent);
                     break;
                 case 1:
diff --git a/java/src/com/android/inputmethod/latin/Settings.java b/java/src/com/android/inputmethod/latin/Settings.java
index 15ea62c..873b9ef 100644
--- a/java/src/com/android/inputmethod/latin/Settings.java
+++ b/java/src/com/android/inputmethod/latin/Settings.java
@@ -16,11 +16,13 @@
 
 package com.android.inputmethod.latin;
 
+import com.android.inputmethod.compat.CompatUtils;
 import com.android.inputmethod.deprecated.VoiceConnector;
 
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.app.backup.BackupManager;
+import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.SharedPreferences;
@@ -38,6 +40,7 @@
 import android.text.TextUtils;
 import android.text.method.LinkMovementMethod;
 import android.util.Log;
+import android.view.inputmethod.InputMethodManager;
 import android.widget.TextView;
 
 import java.util.Locale;
@@ -221,16 +224,10 @@
     @Override
     public boolean onPreferenceClick(Preference pref) {
         if (pref == mInputLanguageSelection) {
-            final String action;
-            if (android.os.Build.VERSION.SDK_INT
-                    >= /* android.os.Build.VERSION_CODES.HONEYCOMB */ 11) {
-                // Refer to android.provider.Settings.ACTION_INPUT_METHOD_SUBTYPE_SETTINGS
-                // TODO: Can this be a constant instead of literal String constant?
-                action = "android.settings.INPUT_METHOD_SUBTYPE_SETTINGS";
-            } else {
-                action = "com.android.inputmethod.latin.INPUT_LANGUAGE_SELECTION";
-            }
-            startActivity(new Intent(action));
+            startActivity(CompatUtils.getInputLanguageSelectionIntent(
+                    Utils.getInputMethodId(
+                            (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE),
+                            getApplicationInfo().packageName), 0));
             return true;
         }
         return false;