i38n이 gettext에 의해 처리되는 프로그램이 있습니다. 프로그램은 잘 작동하지만, win32에서 런타임시 gettext ('fr_FR'과 같은)에서 사용되는 로케일 이름을 알아야합니다.Windows에서 gettext가 사용하는 로케일에 액세스하는 방법이 있습니까?
gettext 소스를 조사한 결과, 모든 플랫폼 (gl_locale_name, "localename.h/c"라는 C 파일)에서이를 계산하는 아주 무서운 기능이 있습니다. 그러나이 파일은 gettext 또는 libintl과 함께 설치되지 않으므로이 함수를 호출 할 수 없습니다. 이 값을 얻기 위해 gettext가 제공하는 다른 함수가 있습니까? 또는 다른 패키지 (boost, glib, anything?)
(관련 메모에는 C++ 표준 라이브러리에서 std :: locale) 잘못 입력하지 않으면 시스템의 설정으로 로케일을 만들어야합니다 ...하지만 이름이 'C'입니다. 로케일 이름을 가져올 수있는 실행 가능한 방법입니까? 내가 잘못하고있는 것은 무엇입니까?)
잘 모르겠다 ... gettext 패키지의 gettext() 함수를 사용하여 문자열을 변환하고있다 ... 런타임에 GNU/Linux와 내가 가지고있는 두 로케일의 윈도우를 모두 잘 해석한다. 번역 된 문자열. 그러나 나는 런타임에 사용자의 로케일을 알아야합니다. 나는 gettext (또는 아마도 libintl?)이 이것을 처리하기 때문에 그것을 얻는 방법이 있어야한다고 생각했다. – phtrivier
그래서 이것을 시도 : setlocale (LC_MESSAGES, ""); char * l = setlocale (LC_MESSAGES, NULL); printf ("로캘 : % s \ n", l); (내 뉴런 중 몇 개가 튀긴 후 로케일을 얻으려고하면, 에헴을 불러야합니다.) 리눅스에서는 적절한 로케일을 얻을 수 있습니다 (mingw로 크로스 컴파일 한 후). -cross-env, 깔끔한 패키지, 체크 아웃), 그냥 "(null)"을 출력합니다. 가끔은 잠자리에들 때가 될 때가 있습니다. – phtrivier