Существует ли способ получить доступ к локали, используемой gettext под окнами?

У меня есть программа, где i18n обрабатывается gettext. Программа хорошо работает, однако по некоторым причинам я должен знать название локали, используемой gettext во времени выполнения (что-то как 'fr_FR') под win32.

Я изучил gettext источники, и существует довольно пугающая функция, которая вычисляет его на всех платформах (gl_locale_name в файле C, названном "localename.h/c"). Однако этот файл, кажется, не установлен вместе с gettext или libintl, таким образом, я, может казаться, не вызываю функцию. Там другая функция обеспечивается gettext для получения этого значения? Или в другом пакете (повышение, бойкое, что-нибудь?)

(На связанной ноте существует вещь, названная станд.:: локаль в библиотеке стандарта C++, и согласно документу, называя станд.:: локаль ("") должна создать локаль с настройками системы, если я не ошибаюсь..., но затем именем является 'C' под окнами. Действительно ли это - жизнеспособный способ получить имя локали? Что я делаю неправильно?)

1
задан phtrivier 2 May 2010 в 15:49
поделиться

3 ответа

Оказывается, функция "gl_locale_name" не является частью gettext напрямую, а скорее частью gnulib - http://www.gnu.org/software/gnulib. Я только сегодня обнаружил этот пакет.

Так что получить пресловутый заголовок localename.h в моем проекте было делом

gnulib-tool --import localename

Затем функция gl_locale_name прекрасно работает при кросс-компиляции.

Спасибо всем за ответы!

1
ответ дан 3 September 2019 в 00:54
поделиться

В Windows обычно используется функция GetUserDefaultLCID которая возвращает целочисленное значение идентификатора локали. Чтобы преобразовать LCID в строку типа 'fr_FR', вам нужно сопоставить его с информацией из http://msdn.microsoft.com/en-us/library/ms776260

1
ответ дан 3 September 2019 в 00:54
поделиться

Вы можете использовать setlocale (NULL), чтобы получить языковой стандарт из CRT. Но по винде понятия не имею. Кроме того, gettext - довольно общая функция, и вам нужно будет более конкретно указать, что такое gettext.

0
ответ дан 3 September 2019 в 00:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: