Получать локализованную строку
Я создал локализованные файлы 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");
Пожалуйста, смотрите следующий пост. Это может быть полезным для вас.