Вопрос

Я слышал из относительно надежного источника, что 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, должен работать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top