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; |
} |