我试图在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