Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(575)

Unified Diff: chrome/browser/translate/translate_manager.cc

Issue 15295004: Translate: enable against unknown languages with server side detection (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: (rebase for dcommit) Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/translate/translate_manager.cc
diff --git a/chrome/browser/translate/translate_manager.cc b/chrome/browser/translate/translate_manager.cc
index 383e577e27a780b53a26c7e08d1e75298985e367..1046922ec62af6e459ac1b4fa785e94b5041e1be 100644
--- a/chrome/browser/translate/translate_manager.cc
+++ b/chrome/browser/translate/translate_manager.cc
@@ -31,6 +31,7 @@
#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/browser_tabstrip.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
+#include "chrome/common/chrome_constants.h"
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/language_detection_details.h"
@@ -678,7 +679,7 @@ void TranslateManager::InitiateTranslationPosted(
}
void TranslateManager::TranslatePage(WebContents* web_contents,
- const std::string& source_lang,
+ const std::string& original_source_lang,
const std::string& target_lang) {
NavigationEntry* entry = web_contents->GetController().GetActiveEntry();
if (!entry) {
@@ -689,6 +690,15 @@ void TranslateManager::TranslatePage(WebContents* web_contents,
Profile* profile =
Profile::FromBrowserContext(web_contents->GetBrowserContext());
+ std::string source_lang(original_source_lang);
+
+ // Translation can be kicked by context menu against unsupported languages.
+ // Unsupported language strings should be replaced with
+ // kUnknownLanguageCode in order to send a translation request with enabling
+ // server side auto language detection.
+ if (!IsSupportedLanguage(source_lang))
+ source_lang = std::string(chrome::kUnknownLanguageCode);
+
TranslateInfoBarDelegate::Create(
InfoBarService::FromWebContents(web_contents), true,
TranslateInfoBarDelegate::TRANSLATING, TranslateErrors::NONE,
@@ -782,10 +792,11 @@ void TranslateManager::DoTranslatePage(WebContents* web_contents,
void TranslateManager::PageTranslated(WebContents* web_contents,
PageTranslatedDetails* details) {
if ((details->error_type == TranslateErrors::NONE) &&
+ details->source_language != chrome::kUnknownLanguageCode &&
!IsSupportedLanguage(details->source_language)) {
- // TODO(jcivelli): http://crbug.com/9390 We should change the "after
- // translate" infobar to support unknown as the original
- // language.
+ // TODO(toyoshim): http://crbug.com/242142 We should check if
+ // l10n_util::GetDisplayNameForLocale() support |source_language| here.
+ // Also, following metrics should be modified to have language code.
TranslateManagerMetrics::ReportUnsupportedLanguage();
details->error_type = TranslateErrors::UNSUPPORTED_LANGUAGE;
}
« no previous file with comments | « chrome/browser/translate/translate_infobar_delegate.cc ('k') | chrome/browser/translate/translate_manager_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698