Вопрос
Я слышал из относительно надежного источника, что gettext не требует системных локалей для его работы. Но я пробовал несколько учебных пособий, и если у меня нет locale-gen'd (in arch) fi_FI.utf8, я не смогу показать переводы.
root@junior:~/programming/Projects/Cpp/web/test# LANG=fi_FI.utf8 bin/hello Hello world! This is package: web-cms root@junior:~/programming/Projects/Cpp/web/test# sed -i 's/#fi_FI.UTF-8/fi_FI.UTF-8/' /etc/locale.gen && locale-gen Generating locales... en_GB.UTF-8... done en_US.UTF-8... done fi_FI.UTF-8... done Generation complete. root@junior:~/programming/Projects/Cpp/web/test# LANG=fi_FI.utf8 bin/hello Terve maailma Tämä on paketti: web-cms
Решение
Вы правильно слышали? Насколько я знаю, для работы gettext вам нужны системные локали. Однако вам не нужно устанавливать все переводы для этих системных локалей только для того, чтобы сделать свой "привет миром" работа.
Другие советы
setenv("LANGUAGE", languagecode);
Если языковым кодом является "fr", а у вас есть "fr / LC_MESSAGES / .mo" файл в каталоге, указанном bindtextdomain, должен работать.
Не связан с StackOverflow