Index: chrome/common/metrics/metrics_util.cc |
diff --git a/chrome/common/metrics/metrics_util.cc b/chrome/common/metrics/metrics_util.cc |
index 775501d98f8e019fd81d5b47b866e96ba1bc4d0e..a69aa01af2a2fe8134bf05baded49b13ee24c19f 100644 |
--- a/chrome/common/metrics/metrics_util.cc |
+++ b/chrome/common/metrics/metrics_util.cc |
@@ -5,6 +5,8 @@ |
#include "chrome/common/metrics/metrics_util.h" |
#include "base/sha1.h" |
+#include "base/string_util.h" |
+#include "base/strings/string_tokenizer.h" |
#include "base/sys_byteorder.h" |
namespace metrics { |
@@ -24,4 +26,26 @@ uint32 HashName(const std::string& name) { |
return base::ByteSwapToLE32(bits); |
} |
+int ToLanguageCode(const std::string& locale) { |
+ base::StringTokenizer parts(locale, "-_"); |
+ if (!parts.GetNext()) |
+ return 0; |
+ |
+ std::string language_part = parts.token(); |
+ StringToLowerASCII(&language_part); |
+ |
+ int language_code = 0; |
+ for (std::string::iterator it = language_part.begin(); |
+ it != language_part.end(); ++it) { |
+ char ch = *it; |
+ if (ch < 'a' || 'z' < ch) |
+ return 0; |
+ |
+ language_code <<= 8; |
+ language_code += ch; |
+ } |
+ |
+ return language_code; |
+} |
+ |
} // namespace metrics |