получать локализованную строку - PullRequest
3 голосов
/ 27 декабря 2010

Я создал локализованные 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 ]

0 голосов
/ 30 марта 2014

Возможно, ваш 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");
0 голосов
/ 20 января 2011

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

Полный пример C ++ i18n gettext () "Hello World"

...