2017-12-04 5 views
1

브라우저가 클라이언트 시스템 로케일 값을 얻는 방법. 브라우저가 클라이언트 컴퓨터의 운영 체제 로캘 값을 선택하는 방법에 대한 내부 프로세스가 궁금합니다. (즉, 클라이언트 OS에서 실행중인 브라우저/앱의 경우 변수 값에 따라 앱/브라우저가 가져오고 요청 헤더 정보로 전송됩니다.)브라우저가 클라이언트 로켈 값을 선택하는 방법은 무엇입니까?

답변

1

매력적인 질문. https://dxr.mozilla.org/mozilla-esr45/source/intl/locale/nsLocaleService.cpp?q=nslocaleservice&redirect_type=direct#69 내가 목록을 만들었다 고에서

당신

  1. Windos XP의 경우 : QT 라이브러리를 사용할 수 GetSystemDefaultLCID()
  2. 경우

    파이어 폭스는이 여기에 다른 운영 체계에 따라 취득하는 방법을 보여 주었다 QLocale :: system(). name(). toUtf8()

  3. 폴백은 C++ getenv("LANG") 매우 원시
  4. Mac에서는 t를 사용합니다. 그의 CFLocaleRef cflocale = CFLocaleCopyCurrent(); How to get the locale of the current user in OSX using C++

또한 추가 정보를 원하시면 여기를 참조 C에 지어진 안드로이드 크롬 브라우저 ++ 자바의 경우, 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()

를 사용 Java.LocaleUtils를 호출합니다
관련 문제