浏览器如何选择客户端区域设置值。

时间:2017-12-04 23:57:37

标签: browser internationalization operating-system locale

浏览器如何获取客户端计算机区域设置值。我很好奇浏览器如何获取客户端计算机的操作系统区域设置值的内部过程。 (即对于在客户端操作系统上运行的浏览器/任何应用程序,这些应用程序/浏览器将作为请求标头信息获取和发送哪个变量值?)

1 个答案:

答案 0 :(得分:1)

引人入胜的问题。

Firefox已根据不同的操作系统显示了它是如何获得此功能的:https://dxr.mozilla.org/mozilla-esr45/source/intl/locale/nsLocaleService.cpp?q=nslocaleservice&redirect_type=direct#69

由此我为你创建了一个列表

  1. Windos XP:GetSystemDefaultLCID()
  2. 如果QT库可用QLocale :: system()。name()。toUtf8()
  3. 后备是C ++ getenv("LANG")非常原始
  4. Mac使用此CFLocaleRef cflocale = CFLocaleCopyCurrent();有关详细信息,请参阅此处How to get the locale of the current user in OSX using C++
  5. 另外,用c ++构建的Androids Chromium浏览器调用Java.LocaleUtils,它使用Java的Locale.getDefault()

    std::string GetDefaultLocaleString() {
      JNIEnv* env = base::android::AttachCurrentThread();
      ScopedJavaLocalRef<jstring> locale =
          Java_LocaleUtils_getDefaultLocaleString(env);
      return ConvertJavaStringToUTF8(locale);
    }
    

    https://docs.oracle.com/javase/7/docs/api/java/util/Locale.html#getDefault()