Index: chrome/browser/translate/translate_manager.cc |
diff --git a/chrome/browser/translate/translate_manager.cc b/chrome/browser/translate/translate_manager.cc |
index a5b3dbb99a9bf2635adce83d309bcfc4a2fe3931..0b20c244ff360945503bd6f2327ac0de8f616cfd 100644 |
--- a/chrome/browser/translate/translate_manager.cc |
+++ b/chrome/browser/translate/translate_manager.cc |
@@ -54,6 +54,7 @@ |
#include "net/http/http_status_code.h" |
#include "net/url_request/url_fetcher.h" |
#include "net/url_request/url_request_status.h" |
+#include "ui/base/l10n/l10n_util.h" |
#include "ui/base/resource/resource_bundle.h" |
#ifdef FILE_MANAGER_EXTENSION |
@@ -314,6 +315,12 @@ bool TranslateManager::IsSupportedLanguage(const std::string& page_language) { |
return supported_languages_.Pointer()->count(page_language) != 0; |
} |
+// static |
+bool TranslateManager::IsAvailableLanguage(const std::string& language) { |
+ std::string locale = g_browser_process->GetApplicationLocale(); |
Takashi Toyoshima
2013/05/21 11:11:43
const std::string&
hajimehoshi
2013/05/22 04:19:27
Done.
|
+ return l10n_util::IsLocaleNameTranslated(language, locale);; |
+} |
+ |
void TranslateManager::Observe(int type, |
const content::NotificationSource& source, |
const content::NotificationDetails& details) { |
@@ -572,6 +579,9 @@ void TranslateManager::InitiateTranslation(WebContents* web_contents, |
if (target_lang.empty() || !IsSupportedLanguage(language_code)) { |
TranslateManagerMetrics::ReportInitiationStatus( |
TranslateManagerMetrics::INITIATION_STATUS_LANGUAGE_IS_NOT_SUPPORTED); |
+ TranslateManagerMetrics::ReportUnsupportedLanguageAtInitiation( |
+ language_code); |
+ |
return; |
} |
@@ -761,14 +771,17 @@ void TranslateManager::DoTranslatePage(WebContents* web_contents, |
void TranslateManager::PageTranslated(WebContents* web_contents, |
PageTranslatedDetails* details) { |
- if ((details->error_type == TranslateErrors::NONE) && |
- !IsSupportedLanguage(details->source_language)) { |
+ if (details->error_type == TranslateErrors::NONE) { |
// TODO(jcivelli): http://crbug.com/9390 We should change the "after |
Takashi Toyoshima
2013/05/21 11:11:43
remove this TODO.
hajimehoshi
2013/05/22 04:19:27
Done.
|
// translate" infobar to support unknown as the original |
// language. |
- TranslateManagerMetrics::ReportUnsupportedLanguage(); |
- details->error_type = TranslateErrors::UNSUPPORTED_LANGUAGE; |
+ std::string language = details->source_language; |
Takashi Toyoshima
2013/05/21 11:11:43
const std::string&
hajimehoshi
2013/05/22 04:19:27
Done.
|
+ if (!IsAvailableLanguage(language)) { |
+ TranslateManagerMetrics::ReportUnavailableLanguage(language); |
+ details->error_type = TranslateErrors::UNSUPPORTED_LANGUAGE; |
+ } |
} |
+ |
Profile* profile = |
Profile::FromBrowserContext(web_contents->GetBrowserContext()); |
PrefService* prefs = profile->GetPrefs(); |