我正在尝试在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 in:
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”。 我重新启动了服务器并且已经进行了一段时间的翻译,所以这不是缓存问题。
非常感谢。
答案 0 :(得分:1)
一个想法:尝试使用bindtexdomain(...)
中的完整路径而不使用尾部斜杠。
编辑/尝试#2:
尝试运行unset LANG
并重新启动Apache。
答案 1 :(得分:1)
好的,我刚刚发现了如何制作它。
所以在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");
奇怪但是有效。
答案 2 :(得分:0)
有效地,解决方案是在您的语言名称后添加“.utf-8”。
另一个解决方案可能是在没有“.utf8”的情况下将“locales”添加到你的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