Index: chrome/browser/translate/translate_manager.cc |
diff --git a/chrome/browser/translate/translate_manager.cc b/chrome/browser/translate/translate_manager.cc |
index 1046922ec62af6e459ac1b4fa785e94b5041e1be..5bb5699fd0d83ff9e3d6254238eb9af1cecdf245 100644 |
--- a/chrome/browser/translate/translate_manager.cc |
+++ b/chrome/browser/translate/translate_manager.cc |
@@ -57,6 +57,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 |
@@ -317,6 +318,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) { |
+ const std::string& locale = g_browser_process->GetApplicationLocale(); |
+ return l10n_util::IsLocaleNameTranslated(language, locale);; |
+} |
+ |
void TranslateManager::Observe(int type, |
const content::NotificationSource& source, |
const content::NotificationDetails& details) { |
@@ -593,6 +600,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; |
} |
@@ -791,14 +801,12 @@ 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(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; |
+ if (details->error_type == TranslateErrors::NONE) { |
+ const std::string& language = details->source_language; |
+ if (!IsAvailableLanguage(language)) { |
+ TranslateManagerMetrics::ReportUnavailableLanguage(language); |
+ details->error_type = TranslateErrors::UNSUPPORTED_LANGUAGE; |
+ } |
} |
Profile* profile = |