Получать локализованную строку

Я создал локализованные файлы fr_FR_Locale.mo из fr_FR.po.

Я использовал команду sgettext, msginit и msgfmt из терминала.

Я изменил свой местный на французский (fr_FR.utf8).

Но когда я выполняю свой код, я не получаю то, что ожидаю. Вот мой звонок:

setlocale(LC_ALL,"");
bindtextdomain("locale",LC_INTL);
bind_textdomain_codeset("locale", "UTF-8");
textdomain("locale");
printf(gettext("Hello world!"));   

Здесь вывод должен быть не английским, но я получаю те же английские слова.

2 ответа

Возможно, ваш mo-файл не найден. Я не знаю, что означает LC_INTL или где вы установили mo-файл. Но скажем, вы установили его как /usr/local/share/locale/fr/LC_MESSAGES/MyApp.moкод должен выглядеть так:

setlocale(LC_ALL,"");
bindtextdomain("MyApp","/usr/local/share/locale");
bind_textdomain_codeset("MyApp","UTF-8");
textdomain("MyApp");

Пожалуйста, смотрите следующий пост. Это может быть полезным для вас.

Завершите C++ i18n gettext() "Привет мир" пример

Другие вопросы по тегам