summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormiguelg@chromium.org <miguelg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-17 20:51:28 +0000
committermiguelg@chromium.org <miguelg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-17 20:51:28 +0000
commit106634a9ba1b291e7e0275edbef18c8bf5f92887 (patch)
treef955eee26730361647e8df65b42e60a23d850b24
parentd6c511ed2c30dd2a06c5b9738082b34e0c6f545b (diff)
downloadchromium_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
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateLanguagePanel.java16
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateOptions.java15
-rw-r--r--chrome/browser/ui/android/infobars/translate_infobar.cc16
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);