Gettext без локали процесса - PullRequest
1 голос
/ 17 февраля 2010

Я хочу использовать gettext для i18n. Но мне нужно перевести сообщения на разные языки. Можно ли указать локаль для одного вызова gettext?

Ответы [ 3 ]

1 голос
/ 13 февраля 2012

Если вы используете несколько потоков, вы можете использовать gettext, если вы используете средства, связанные с локалью, указанные в POSIX.1-2008 (и реализованные в GLIBC 2.3). Ключевой функцией, которую вы бы использовали, является uselocale, что немного похоже на setlocale, но только для текущего потока.

Если вы используете Windows, то вам не повезло - MSVCRT не предоставляет эквивалент uselocale, и я полагаю, что на этой платформе libintl эмулирует сам setlocale, не потокобезопасным способом IIRC.

0 голосов
/ 16 марта 2010

Я хочу использовать gettext для i18n. Но мне нужно перевести сообщения на разные языки.

Если ваше приложение однопоточное, вы можете переключить язык, иначе вы не сможете использовать Для этого есть библиотека gettext.

Можно ли указать локаль для одного вызова gettext?

Вы можете использовать библиотеку неофициального повышения Boost.Locale , которая поддерживает каталоги сообщений gettext. Но это только C++.

0 голосов
/ 17 февраля 2010

Как видно из Замены для gettext У меня были подобные проблемы, только это ухудшается, если вам нужно поддерживать больше платформ.

По сути, gettext действительно подходит только для однопоточных интерактивных программ.

Если у вас есть такая возможность, то используйте другую систему перевода (ICU выглядит неплохо).

В противном случае есть несколько библиотек, которые непосредственно читают файлы .mo и могут предоставить перевод по вашему желанию:

http://art -blog.no-ip.info / CppCMS / блог / запись / 16

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...