diff --git a/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java b/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java index 9564e27da..db2ecebc8 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java @@ -212,7 +212,7 @@ protected void onCreate(Bundle savedInstanceState) { // Set a global exception handler as soon as possible GlobalExceptionHandler.register(this.getApplicationContext()); - LocaleUtils.init(this); + LocaleUtils.init(); if (DeviceType.isOculusBuild()) { workaroundGeckoSigAction(); @@ -225,6 +225,7 @@ protected void onCreate(Bundle savedInstanceState) { SessionStore.get().setContext(this, extras); SessionStore.get().initializeServices(); SessionStore.get().initializeStores(this); + SessionStore.get().setLocales(LocaleUtils.getPreferredLocales(this)); // Create broadcast receiver for getting crash messages from crash process IntentFilter intentFilter = new IntentFilter(); diff --git a/app/src/common/shared/org/mozilla/vrbrowser/browser/SettingsStore.java b/app/src/common/shared/org/mozilla/vrbrowser/browser/SettingsStore.java index 567870e50..b6a00c00a 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/browser/SettingsStore.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/browser/SettingsStore.java @@ -421,7 +421,7 @@ public String getVoiceSearchLocale() { String language = mPrefs.getString( mContext.getString(R.string.settings_key_voice_search_language), null); if (language == null) { - return LocaleUtils.getDefaultVoiceSearchLocale(mContext); + return LocaleUtils.getDefaultSupportedLocale(); } return language; } @@ -436,7 +436,7 @@ public String getDisplayLocale() { String language = mPrefs.getString( mContext.getString(R.string.settings_key_display_language), null); if (language == null) { - return LocaleUtils.getDefaultDisplayLocale(mContext); + return LocaleUtils.getDefaultSupportedLocale(); } return language; } diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/keyboards/GermanKeyboard.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/keyboards/GermanKeyboard.java index 9ef380c45..f990636b6 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/keyboards/GermanKeyboard.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/keyboards/GermanKeyboard.java @@ -66,6 +66,6 @@ public String getSpaceKeyText(String aComposingText) { @Override public String[] getDomains(String... domains) { - return super.getDomains(".de"); + return super.getDomains(".de", ".at", ".ch"); } } diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/keyboards/RussianKeyboard.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/keyboards/RussianKeyboard.java index 32ac4ae41..db3a465fb 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/keyboards/RussianKeyboard.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/keyboards/RussianKeyboard.java @@ -65,9 +65,4 @@ public Locale getLocale() { public String getSpaceKeyText(String aComposingText) { return StringUtils.getStringByLocale(mContext, R.string.settings_language_russian, getLocale()); } - - @Override - public String[] getDomains(String... domains) { - return super.getDomains(".ru"); - } } diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/keyboards/SpanishKeyboard.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/keyboards/SpanishKeyboard.java index e813b5c8b..fae2f95b4 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/keyboards/SpanishKeyboard.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/keyboards/SpanishKeyboard.java @@ -48,9 +48,4 @@ public Locale getLocale() { public String getSpaceKeyText(String aComposingText) { return StringUtils.getStringByLocale(mContext, R.string.settings_language_spanish, getLocale()); } - - @Override - public String[] getDomains(String... domains) { - return super.getDomains(".es"); - } } diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/KeyboardWidget.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/KeyboardWidget.java index 6eda45a0d..55fd77831 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/KeyboardWidget.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/KeyboardWidget.java @@ -185,17 +185,17 @@ private void initialize(Context aContext) { mKeyboards = new ArrayList<>(); mKeyboards.add(new EnglishKeyboard(aContext)); - mKeyboards.add(new ItalianKeyboard(aContext)); + mKeyboards.add(new ChinesePinyinKeyboard(aContext)); + mKeyboards.add(new ChineseZhuyinKeyboard(aContext)); + mKeyboards.add(new JapaneseKeyboard(aContext)); mKeyboards.add(new FrenchKeyboard(aContext)); mKeyboards.add(new GermanKeyboard(aContext)); mKeyboards.add(new SpanishKeyboard(aContext)); mKeyboards.add(new RussianKeyboard(aContext)); - mKeyboards.add(new ChinesePinyinKeyboard(aContext)); - mKeyboards.add(new ChineseZhuyinKeyboard(aContext)); mKeyboards.add(new KoreanKeyboard(aContext)); - mKeyboards.add(new JapaneseKeyboard(aContext)); - mKeyboards.add(new PolishKeyboard(aContext)); + mKeyboards.add(new ItalianKeyboard(aContext)); mKeyboards.add(new DanishKeyboard(aContext)); + mKeyboards.add(new PolishKeyboard(aContext)); mKeyboards.add(new NorwegianKeyboard(aContext)); mKeyboards.add(new SwedishKeyboard(aContext)); mKeyboards.add(new FinnishKeyboard(aContext)); @@ -686,7 +686,7 @@ private void handleGlobeClick() { if (mLanguageSelectorView.getItems() == null || mLanguageSelectorView.getItems().size() == 0) { ArrayList items = new ArrayList<>(); for (KeyboardInterface keyboard: mKeyboards) { - items.add(new KeyboardSelectorView.Item(keyboard.getKeyboardTitle(), keyboard)); + items.add(new KeyboardSelectorView.Item(StringUtils.capitalize(keyboard.getKeyboardTitle()), keyboard)); } mLanguageSelectorView.setItems(items); } diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/ContentLanguageOptionsView.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/ContentLanguageOptionsView.java index cf47de95f..bf9208822 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/ContentLanguageOptionsView.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/ContentLanguageOptionsView.java @@ -25,6 +25,7 @@ import org.mozilla.vrbrowser.utils.LocaleUtils; import java.util.Arrays; +import java.util.Collections; public class ContentLanguageOptionsView extends SettingsView { @@ -115,9 +116,9 @@ public void onMoveDown(View view, Language language) { private void saveCurrentLanguages() { SettingsStore.getInstance(getContext()).setContentLocales( - LocaleUtils.getLanguageIdsFromList(mPreferredAdapter.getItems())); + LocaleUtils.getLocalesFromLanguages(mPreferredAdapter.getItems())); SessionStore.get().setLocales( - LocaleUtils.getLanguageIdsFromList(mPreferredAdapter.getItems())); + LocaleUtils.getLocalesFromLanguages(mPreferredAdapter.getItems())); } private void refreshLanguages() { @@ -129,8 +130,8 @@ private void refreshLanguages() { @Override protected boolean reset() { - SettingsStore.getInstance(getContext()).setContentLocales(Arrays.asList(LocaleUtils.getSystemLocale())); - SessionStore.get().setLocales(Arrays.asList(LocaleUtils.getSystemLocale())); + SettingsStore.getInstance(getContext()).setContentLocales(Collections.singletonList(LocaleUtils.getSystemLocale())); + SessionStore.get().setLocales(Collections.singletonList(LocaleUtils.getSystemLocale())); LocaleUtils.resetLanguages(); refreshLanguages(); diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/DisplayLanguageOptionsView.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/DisplayLanguageOptionsView.java index 06032b9c7..60ba2cb00 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/DisplayLanguageOptionsView.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/DisplayLanguageOptionsView.java @@ -48,9 +48,11 @@ private void initialize(Context aContext) { // Footer mBinding.footerLayout.setFooterButtonClickListener(mResetListener); - String language = LocaleUtils.getDisplayLocale(getContext()); + mBinding.languageRadio.setOptions(LocaleUtils.getSupportedLocalizedLanguages(getContext())); + + String locale = LocaleUtils.getDisplayLocale(getContext()); mBinding.languageRadio.setOnCheckedChangeListener(mLanguageListener); - setLanguage(mBinding.languageRadio.getIdForValue(language), false); + setLanguage(LocaleUtils.getIndexForSupportedLocale(locale), false); } @Override @@ -58,18 +60,18 @@ protected boolean reset() { String systemLocale = LocaleUtils.getSystemLocale(); String currentLocale = LocaleUtils.getCurrentLocale(); if (!currentLocale.equalsIgnoreCase(systemLocale)) { - setLanguage(mBinding.languageRadio.getIdForValue(systemLocale), true); + setLanguage(LocaleUtils.getIndexForSupportedLocale(systemLocale), true); return true; } else { - setLanguage(mBinding.languageRadio.getIdForValue(systemLocale), false); + setLanguage(LocaleUtils.getIndexForSupportedLocale(systemLocale), false); return false; } } private RadioGroupSetting.OnCheckedChangeListener mLanguageListener = (radioGroup, checkedId, doApply) -> { String currentLocale = LocaleUtils.getCurrentLocale(); - String locale = mBinding.languageRadio.getValueForId(mBinding.languageRadio.getCheckedRadioButtonId()).toString(); + String locale = LocaleUtils.getSupportedLocaleForIndex(mBinding.languageRadio.getCheckedRadioButtonId()); if (!locale.equalsIgnoreCase(currentLocale)) { setLanguage(checkedId, true); @@ -86,8 +88,8 @@ private void setLanguage(int checkedId, boolean doApply) { mBinding.languageRadio.setOnCheckedChangeListener(mLanguageListener); if (doApply) { - String language = mBinding.languageRadio.getValueForId(checkedId).toString(); - LocaleUtils.setDisplayLocale(getContext(), language); + String locale = LocaleUtils.getSupportedLocaleForIndex(checkedId); + LocaleUtils.setDisplayLocale(getContext(), locale); if (mDelegate != null) { mDelegate.showRestartDialog(); diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/LanguageOptionsView.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/LanguageOptionsView.java index a3c2c1db2..4455e01fa 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/LanguageOptionsView.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/LanguageOptionsView.java @@ -92,7 +92,7 @@ protected void onDismiss() { }; private void setVoiceLanguage() { - mBinding.voiceSearchLanguageDescription.setText(getSpannedLanguageText(LocaleUtils.getVoiceSearchLanguageString(getContext())), TextView.BufferType.SPANNABLE); + mBinding.voiceSearchLanguageDescription.setText(getSpannedLanguageText(LocaleUtils.getVoiceSearchLanguage(getContext())), TextView.BufferType.SPANNABLE); } private void setContentLanguage() { @@ -105,7 +105,7 @@ private void setContentLanguage() { } private void setDisplayLanguage() { - mBinding.displayLanguageDescription.setText(getSpannedLanguageText(LocaleUtils.getDisplayCurrentLanguageString())); + mBinding.displayLanguageDescription.setText(getSpannedLanguageText(LocaleUtils.getDisplayLanguage())); } private int getLanguageIndex(@NonNull String text) { diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/VoiceSearchLanguageOptionsView.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/VoiceSearchLanguageOptionsView.java index 748e308c2..95e8282c5 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/VoiceSearchLanguageOptionsView.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/VoiceSearchLanguageOptionsView.java @@ -48,16 +48,18 @@ private void initialize(Context aContext) { // Footer mBinding.footerLayout.setFooterButtonClickListener(mResetListener); - String language = LocaleUtils.getVoiceSearchLocale(getContext()); + mBinding.languageRadio.setOptions(LocaleUtils.getSupportedLocalizedLanguages(getContext())); + + String locale = LocaleUtils.getVoiceSearchLocale(getContext()); mBinding.languageRadio.setOnCheckedChangeListener(mLanguageListener); - setLanguage(mBinding.languageRadio.getIdForValue(language), false); + setLanguage(LocaleUtils.getIndexForSupportedLocale(locale), false); } @Override protected boolean reset() { - String value = mBinding.languageRadio.getValueForId(mBinding.languageRadio.getCheckedRadioButtonId()).toString(); + String value = LocaleUtils.getSupportedLocaleForIndex(mBinding.languageRadio.getCheckedRadioButtonId()); if (!value.equals(LocaleUtils.getSystemLocale())) { - setLanguage(mBinding.languageRadio.getIdForValue(LocaleUtils.getSystemLocale()), true); + setLanguage(LocaleUtils.getIndexForSupportedLocale(LocaleUtils.getSystemLocale()), true); } return false; @@ -76,7 +78,7 @@ private void setLanguage(int checkedId, boolean doApply) { mBinding.languageRadio.setChecked(checkedId, doApply); mBinding.languageRadio.setOnCheckedChangeListener(mLanguageListener); - LocaleUtils.setVoiceSearchLocale(getContext(), mBinding.languageRadio.getValueForId(checkedId).toString()); + LocaleUtils.setVoiceSearchLocale(getContext(), LocaleUtils.getSupportedLocaleForIndex(checkedId)); } @Override diff --git a/app/src/common/shared/org/mozilla/vrbrowser/utils/LocaleUtils.java b/app/src/common/shared/org/mozilla/vrbrowser/utils/LocaleUtils.java index 970363ae4..1f8407b1b 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/utils/LocaleUtils.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/utils/LocaleUtils.java @@ -6,18 +6,19 @@ import android.os.Build; import androidx.annotation.NonNull; +import androidx.annotation.StringRes; import org.mozilla.vrbrowser.R; import org.mozilla.vrbrowser.browser.SettingsStore; -import org.mozilla.vrbrowser.browser.engine.SessionStore; import org.mozilla.vrbrowser.ui.adapters.Language; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Locale; +import java.util.Optional; import java.util.stream.Collectors; +import java.util.stream.Stream; import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR1; import static android.os.Build.VERSION_CODES.N; @@ -27,10 +28,8 @@ public class LocaleUtils { private static Locale mSystemLocale; private static HashMap mLanguagesCache; - public static void init(Context context) { + public static void init() { getAllLanguages(); - SessionStore.get().setLocales( - LocaleUtils.getLanguageIdsFromList(getPreferredLanguages(context))); } public static void saveSystemLocale() { @@ -75,7 +74,7 @@ public static Language getCurrentLocaleLanguage() { return mLanguagesCache.get(getCurrentLocale()); } - public static List getLanguageIdsFromList(@NonNull final List languages) { + public static List getLocalesFromLanguages(@NonNull final List languages) { List result = new ArrayList<>(); for (Language language : languages) { result.add(language.getId()); @@ -84,6 +83,10 @@ public static List getLanguageIdsFromList(@NonNull final List return result; } + public static List getPreferredLocales(@NonNull Context context) { + return LocaleUtils.getLocalesFromLanguages(LocaleUtils.getPreferredLanguages(context)); + } + public static List getPreferredLanguages(@NonNull Context aContext) { HashMap languages = getAllLanguages(); List savedLanguages = SettingsStore.getInstance(aContext).getContentLocales(); @@ -106,40 +109,14 @@ public static List getPreferredLanguages(@NonNull Context aContext) { public static List getAvailableLanguages() { HashMap languages = getAllLanguages(); - List availableLanguages = languages.values().stream() + return languages.values().stream() .sorted((o1, o2) -> o1.getName().compareToIgnoreCase(o2.getName())) .collect(Collectors.toList()); - - return availableLanguages; - } - - @NonNull - public static List getSupportedVoiceLanguages(@NonNull Context aContext) { - return Arrays.asList(aContext.getResources().getStringArray( - R.array.developer_options_voice_search_languages_values)); - } - - @NonNull - public static List getSupportedDisplayLanguages(@NonNull Context aContext) { - return Arrays.asList(aContext.getResources().getStringArray( - R.array.developer_options_display_languages_values)); - } - - @NonNull - public static String getDefaultVoiceSearchLocale(@NonNull Context aContext) { - String locale = getCurrentLocale(); - List supportedLanguages = getSupportedVoiceLanguages(aContext); - if (!supportedLanguages.contains(locale)) { - return supportedLanguages.get(0); - } - - return locale; } @NonNull public static String getVoiceSearchLocale(@NonNull Context aContext) { - String locale = SettingsStore.getInstance(aContext).getVoiceSearchLocale(); - return mapOldLocaleToNew(locale); + return SettingsStore.getInstance(aContext).getVoiceSearchLocale(); } public static void setVoiceSearchLocale(@NonNull Context context, @NonNull String locale) { @@ -147,22 +124,11 @@ public static void setVoiceSearchLocale(@NonNull Context context, @NonNull Strin } @NonNull - public static String getVoiceSearchLanguageString(@NonNull Context aContext) { + public static String getVoiceSearchLanguage(@NonNull Context aContext) { String language = LocaleUtils.getVoiceSearchLocale(aContext); return getAllLanguages().get(language).getName(); } - @NonNull - public static String getDefaultDisplayLocale(@NonNull Context aContext) { - String locale = getCurrentLocale(); - List supportedLanguages = getSupportedDisplayLanguages(aContext); - if (!supportedLanguages.contains(locale)) { - return supportedLanguages.get(0); - } - - return locale; - } - @NonNull public static String getDisplayLocale(Context context) { String locale = SettingsStore.getInstance(context).getDisplayLocale(); @@ -174,7 +140,7 @@ public static void setDisplayLocale(@NonNull Context context, @NonNull String lo } @NonNull - public static String getDisplayCurrentLanguageString() { + public static String getDisplayLanguage() { return getAllLanguages().get(getCurrentLocale()).getName(); } @@ -223,4 +189,77 @@ public static String mapToMozillaSpeechLocales(@NonNull String locale) { return locale; } + public static class LocalizedLanguage { + public @StringRes int name; + public Locale locale; + + private LocalizedLanguage() {} + + public static LocalizedLanguage create(@StringRes int name, @NonNull Locale locale) { + LocalizedLanguage language = new LocalizedLanguage(); + language.name = name; + language.locale = locale; + + return language; + } + } + + private static List localizedSupportedLanguages = Stream.of( + LocalizedLanguage.create(R.string.settings_language_english, new Locale("en", "US")), + LocalizedLanguage.create(R.string.settings_language_traditional_chinese, new Locale.Builder().setLanguage("zh").setScript("Hant").setRegion("TW").build()), + LocalizedLanguage.create(R.string.settings_language_simplified_chinese, new Locale.Builder().setLanguage("zh").setScript("Hans").setRegion("CN").build()), + LocalizedLanguage.create(R.string.settings_language_japanese, new Locale("ja", "JP")), + LocalizedLanguage.create(R.string.settings_language_french, new Locale("fr", "FR")), + LocalizedLanguage.create(R.string.settings_language_german, new Locale("de", "DE")), + LocalizedLanguage.create(R.string.settings_language_spanish, new Locale("es", "ES")), + LocalizedLanguage.create(R.string.settings_language_russian, new Locale("ru", "RU")), + LocalizedLanguage.create(R.string.settings_language_korean, new Locale("ko", "KR")), + LocalizedLanguage.create(R.string.settings_language_italian, new Locale("it", "IT")), + LocalizedLanguage.create(R.string.settings_language_danish, new Locale("da", "DK")), + LocalizedLanguage.create(R.string.settings_language_polish, new Locale("pl", "PL")), + LocalizedLanguage.create(R.string.settings_language_norwegian, new Locale("nb", "NO")), + LocalizedLanguage.create(R.string.settings_language_swedish, new Locale("sv", "SE")), + LocalizedLanguage.create(R.string.settings_language_finnish, new Locale("fi", "FI")), + LocalizedLanguage.create(R.string.settings_language_dutch, new Locale("nl", "NL")) + ).collect(Collectors.toList()); + + public static String[] getSupportedLocalizedLanguages(@NonNull Context context) { + return LocaleUtils.localizedSupportedLanguages.stream().map( + item -> StringUtils.capitalize(StringUtils.getStringByLocale(context, item.name, item.locale))). + collect(Collectors.toList()).toArray(new String[]{}); + } + + public static List getSupportedLocales() { + return LocaleUtils.localizedSupportedLanguages.stream().map( + item -> item.locale.toLanguageTag()). + collect(Collectors.toList()); + } + + public static int getIndexForSupportedLocale(@NonNull String locale) { + Optional locLang = localizedSupportedLanguages.stream().filter(item -> item.locale.toLanguageTag().equals(locale)).findFirst(); + return locLang.map(localizedLanguage -> localizedSupportedLanguages.indexOf(localizedLanguage)).orElse(0); + } + + public static String getSupportedLocalizedLanguageForIndex(@NonNull Context context, int index) { + return StringUtils.capitalize( + StringUtils.getStringByLocale( + context, + localizedSupportedLanguages.get(index).name, + localizedSupportedLanguages.get(index).locale)); + } + + public static String getSupportedLocaleForIndex(int index) { + return localizedSupportedLanguages.get(index).locale.toLanguageTag(); + } + + public static String getDefaultSupportedLocale() { + String locale = getCurrentLocale(); + List supportedLocales = getSupportedLocales(); + if (!supportedLocales.contains(locale)) { + return supportedLocales.get(0); + } + + return locale; + } + } diff --git a/app/src/main/res/layout/options_language_display.xml b/app/src/main/res/layout/options_language_display.xml index 46718ebf0..981bdf61c 100644 --- a/app/src/main/res/layout/options_language_display.xml +++ b/app/src/main/res/layout/options_language_display.xml @@ -37,9 +37,7 @@ android:id="@+id/languageRadio" android:layout_width="match_parent" android:layout_height="match_parent" - app:layout="@layout/setting_radio_group_v" - app:options="@array/developer_options_display_languages" - app:values="@array/developer_options_display_languages_values" /> + app:layout="@layout/setting_radio_group_v" /> diff --git a/app/src/main/res/layout/options_language_voice.xml b/app/src/main/res/layout/options_language_voice.xml index 9accc6a18..ce0b6cbcb 100644 --- a/app/src/main/res/layout/options_language_voice.xml +++ b/app/src/main/res/layout/options_language_voice.xml @@ -37,9 +37,7 @@ android:id="@+id/languageRadio" android:layout_width="match_parent" android:layout_height="match_parent" - app:layout="@layout/setting_radio_group_v" - app:options="@array/developer_options_voice_search_languages" - app:values="@array/developer_options_voice_search_languages_values" /> + app:layout="@layout/setting_radio_group_v" /> ABC %&= - English (US) - 繁體中文 - 简体中文 - 日本語 - Français - Deutsch - Español (España) - Español - Русский - 한국어 - Italiano - Polski - Dansk - Norsk - Svensk - Suomea - Nederlands - 选定 空格 确认 diff --git a/app/src/main/res/values/options_values.xml b/app/src/main/res/values/options_values.xml index dc126c965..0ab3c7aff 100644 --- a/app/src/main/res/values/options_values.xml +++ b/app/src/main/res/values/options_values.xml @@ -84,86 +84,6 @@ 3 - - - @string/language_en_US - @string/language_cmn_Hant_TW - @string/language_cmn_Hans_CN - @string/language_ja_JP - @string/language_fr_FR - @string/language_de_DE - @string/language_es_ES - @string/language_ru - @string/language_ko_KR - @string/language_it_IT - @string/language_da_DK - @string/language_pl_PL - @string/language_nb_NO - @string/language_sv_SE - @string/language_fi_FI - @string/language_nl_NL - - - - en-US - zh-Hant-TW - zh-Hans-CN - ja-JP - fr-FR - de-DE - es-ES - ru-RU - ko-KR - it-IT - da-DK - pl-PL - nb-NO - sv-SE - fi-FI - nl-NL - - - - - @string/language_en_US - @string/language_cmn_Hant_TW - @string/language_cmn_Hans_CN - @string/language_ja_JP - @string/language_fr_FR - @string/language_de_DE - @string/language_es_ES - @string/language_es - @string/language_ru - @string/language_ko_KR - @string/language_it_IT - @string/language_da_DK - @string/language_pl_PL - @string/language_nb_NO - @string/language_sv_SE - @string/language_fi_FI - @string/language_nl_NL - - - - en-US - zh-Hant-TW - zh-Hans-CN - ja-JP - fr-FR - de-DE - es-ES - es - ru-RU - ko-KR - it-IT - da-DK - pl-PL - nb-NO - sv-SE - fi-FI - nl-NL - - @string/history_clear_range_today