diff options
author | miguelg@chromium.org <miguelg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-17 20:51:28 +0000 |
---|---|---|
committer | miguelg@chromium.org <miguelg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-17 20:51:28 +0000 |
commit | 106634a9ba1b291e7e0275edbef18c8bf5f92887 (patch) | |
tree | f955eee26730361647e8df65b42e60a23d850b24 | |
parent | d6c511ed2c30dd2a06c5b9738082b34e0c6f545b (diff) | |
download | chromium_src-106634a9ba1b291e7e0275edbef18c8bf5f92887.zip chromium_src-106634a9ba1b291e7e0275edbef18c8bf5f92887.tar.gz chromium_src-106634a9ba1b291e7e0275edbef18c8bf5f92887.tar.bz2 |
Remove non translated languages from the dropdowns.
Also replace them with a place holder for now if one translates to or from them
BUG=350932
Review URL: https://codereview.chromium.org/195793022
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@257492 0039d316-1c4b-4281-b951-d872f2087c98
3 files changed, 42 insertions, 5 deletions
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateLanguagePanel.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateLanguagePanel.java index 7375eb3..57df857 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateLanguagePanel.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateLanguagePanel.java @@ -144,6 +144,20 @@ public class TranslateLanguagePanel : mSessionOptions.sourceLanguageIndex(); if (opposite < position) position -= 1; + List<String> allLanguages = mSessionOptions.allLanguages(); + + // Non translated languages are skipped so the position might be + // off as well. We only deal with one of them at at a time. + int placeHolderIndex = -1; + for (int i = 0; i < allLanguages.size(); i++) { + if (allLanguages.get(i).isEmpty()) { + placeHolderIndex = i; + } + } + + if (position >= placeHolderIndex && placeHolderIndex != -1) + position -= 1; + return position; } @@ -171,7 +185,7 @@ public class TranslateLanguagePanel ArrayList<SpinnerLanguageElement> result = new ArrayList<SpinnerLanguageElement>(); List<String> languages = mSessionOptions.allLanguages(); for (int i = 0; i < languages.size(); ++i) { - if (i != avoidLanguage) { + if (i != avoidLanguage && !languages.get(i).isEmpty()) { result.add(new SpinnerLanguageElement(languages.get(i), i)); } } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateOptions.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateOptions.java index 59b2c6a..e1be664 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateOptions.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateOptions.java @@ -33,6 +33,9 @@ public class TranslateOptions { private int mTargetLanguageIndex; private final boolean mTriggeredFromMenu; + // Placeholder while i18tn is supported. + private static final String UNTRANSLATED_LANGUAGE_PLAHOLDER = "\ud83c\udfc4"; + private TranslateOptions(int sourceLanguageCode, int targetLanguageCode, String[] allLanguages, boolean neverLanguage, boolean neverDomain, boolean alwaysLanguage, boolean triggeredFromMenu, boolean[] originalOptions) { @@ -74,14 +77,22 @@ public class TranslateOptions { } public String sourceLanguage() { - if (checkLanguageBoundaries(mSourceLanguageIndex)) + if (checkLanguageBoundaries(mSourceLanguageIndex)) { + if (mAllLanguages[mSourceLanguageIndex].isEmpty()) { + return TranslateOptions.UNTRANSLATED_LANGUAGE_PLAHOLDER; + } return mAllLanguages[mSourceLanguageIndex]; + } return ""; } public String targetLanguage() { - if (checkLanguageBoundaries(mTargetLanguageIndex)) + if (checkLanguageBoundaries(mTargetLanguageIndex)) { + if (mAllLanguages[mTargetLanguageIndex].isEmpty()) { + return TranslateOptions.UNTRANSLATED_LANGUAGE_PLAHOLDER; + } return mAllLanguages[mTargetLanguageIndex]; + } return ""; } diff --git a/chrome/browser/ui/android/infobars/translate_infobar.cc b/chrome/browser/ui/android/infobars/translate_infobar.cc index 4e31605..f4404fa 100644 --- a/chrome/browser/ui/android/infobars/translate_infobar.cc +++ b/chrome/browser/ui/android/infobars/translate_infobar.cc @@ -7,7 +7,9 @@ #include "base/android/jni_android.h" #include "base/android/jni_array.h" #include "base/android/jni_helper.h" +#include "base/strings/utf_string_conversions.h" #include "chrome/browser/translate/translate_infobar_delegate.h" +#include "components/translate/core/browser/translate_download_manager.h" #include "grit/generated_resources.h" #include "jni/TranslateInfoBarDelegate_jni.h" #include "ui/base/l10n/l10n_util.h" @@ -38,8 +40,18 @@ ScopedJavaLocalRef<jobject> TranslateInfoBar::CreateRenderInfoBar(JNIEnv* env) { TranslateInfoBarDelegate* delegate = GetDelegate(); std::vector<base::string16> languages; languages.reserve(delegate->num_languages()); - for (size_t i = 0; i < delegate->num_languages(); ++i) - languages.push_back(delegate->language_name_at(i)); + + const std::string& locale = + TranslateDownloadManager::GetInstance()->application_locale(); + + for (size_t i = 0; i < delegate->num_languages(); ++i) { + std::string lang = delegate->language_code_at(i); + if (!l10n_util::IsLocaleNameTranslated(lang.c_str(), locale)) { + languages.push_back(base::UTF8ToUTF16("")); + } else { + languages.push_back(delegate->language_name_at(i)); + } + } base::android::ScopedJavaLocalRef<jobjectArray> java_languages = base::android::ToJavaArrayOfStrings(env, languages); |