gettext没有翻译显示

我试图在debian上安装gettext,它在我本地计算机上的Wamp上完美工作,但不在服务器上。 我这样做的安装:

apt-get install -V gettext 

我启动这个:

 # apt-cache search --names-only gettext libgettext-ant-tasks-java - Java classes for internationalization (i18n) - Ant tasks gettext-base - GNU Internationalization utilities for the base system gettext-doc - Documentation for GNU gettext gettext-el - Emacs po-mode for editing gettext .po files gettext - GNU Internationalization utilities libgettext-activerecord-ruby-common - GetText localization for Ruby programs using ActiveRecord libgettext-activerecord-ruby1.8 - GetText localization for Ruby programs using ActiveRecord libgettext-activerecord-ruby1.9.1 - GetText localization for Ruby programs using ActiveRecord libgettext-activerecord-ruby - GetText localization for Ruby programs using ActiveRecord libgettext-commons-java - Java classes for internationalization (i18n) libgettext-rails-ruby-doc - Gettext support for Rails 2.3 libgettext-rails-ruby1.8 - Gettext support for Rails >= 2.3 libgettext-rails-ruby - Gettext support for Rails >= 2.3 libgettext-ruby-util - Gettext utilities for ruby (dummy package) libgettext-ruby1.8 - Gettext for ruby1.8 libgettext-ruby1.9.1 - Gettext for ruby1.9.1 libintl-gettext-ruby1.8 - Gettext wrapper for Ruby 1.8 libintl-gettext-ruby - Gettext wrapper for Ruby liblocale-gettext-perl - Using libc functions for internationalization in Perl liblocale-maketext-gettext-perl - Perl module bridging gettext and Maketext localization frameworks libgettext-ocaml-dev - OCaml internationalization library libgettext-ocaml - OCaml internationalization shared library php-gettext - read gettext MO files directly, without requiring anything other than PHP smarty-gettext - Gettext plugin enabling internationalization in Smarty 

我的phpinfo():

 GetText Support enabled 

我的php代码:

  putenv("LANG=nl_NL"); setlocale(LC_ALL, "nl_NL"); bindtextdomain("greetings", "./locale/"); textdomain("greetings"); echo _("Hello World"); 

greetings.po:

 msgid "Hello World" msgstr "Hallo Wereld" 

greetings.mo在:

 locale/nl_NL/LC_MESSAGES/ 

其他信息:

 PHP Version 5.3.3-7+squeeze3 

我跟着很多的教程,但没有一个是可行的 ,最后一个是http://www.aota.net/forums/showthread.php?threadid=10615

通常应该输出“Hallo Wereld”,但它仍然是“Hello World”。 我重新启动了服务器,翻译已经做了一段时间,所以它不是caching问题。

非常感谢你。

一个想法:尝试使用bindtexdomain(...)的完整路径,而没有结尾的斜杠。

编辑/尝试#2:尝试运行未unset LANG并重新启动Apache。

好吧,我刚刚发现如何做到这一点。

所以在Debian上我们这样做:

 dpkg-reconfigure locales 

那么我们选择我们需要的语言。

和代码必须有完全相同的书写,然后当我们键入#locale -a(.utf8如果你选择了一个)

 putenv('LC_ALL=nl_NL.utf8'); setlocale(LC_ALL, "nl_NL.utf8"); bindtextdomain("greetings", "./locale"); textdomain("greetings"); echo gettext("Hello World"); 

奇怪,但它的作品。

有效的解决办法是在你的语言名称后加上“.utf-8”。

另一个解决方案可能是添加“语言环境”没有“.utf8”到您的debian。

我注意到这个结果在OVH服务器(托管公司),您的第一个配置工作:

$ locale -a

EN_GB

en_GB.iso88591

en_GB.iso885915

en_GB.utf8

fr_FR目录

fr_FR.iso88591

fr_FR.iso885915

fr_FR.utf8

和我的debian(synology)服务器中,只有:

$ locale -a

en_GB.utf8

fr_FR.utf8