Index: chrome/renderer/translate_helper.cc |
diff --git a/chrome/renderer/translate_helper.cc b/chrome/renderer/translate_helper.cc |
index e2d23bf25baec9cc2e0073ddbbb04ff4a782ede6..70dd5ddefc0e7fbb12fc432d331277b47cef6cf8 100644 |
--- a/chrome/renderer/translate_helper.cc |
+++ b/chrome/renderer/translate_helper.cc |
@@ -78,7 +78,20 @@ void TranslateHelper::PageCaptured(const string16& contents) { |
language = language.substr(0, coma_index); |
} |
TrimWhitespaceASCII(language, TRIM_ALL, &language); |
- language = StringToLowerASCII(language); |
+ |
+ // An underscore instead of a dash is a frequent mistake. |
+ size_t underscore_index = language.find('_'); |
+ if (underscore_index != std::string::npos) |
+ language[underscore_index] = '-'; |
+ |
+ // Change everything up to a dash to lower-case and everything after to upper. |
+ size_t dash_index = language.find('-'); |
+ if (dash_index != std::string::npos) { |
+ language = StringToLowerASCII(language.substr(0, dash_index)) + |
+ StringToUpperASCII(language.substr(dash_index)); |
+ } else { |
+ language = StringToLowerASCII(language); |
+ } |
if (language.empty()) { |
base::TimeTicks begin_time = base::TimeTicks::Now(); |