【问题标题】:gettext no translations showedgettext 没有显示翻译
【发布时间】:2012-01-10 04:32:30
【问题描述】:

我正在尝试在 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”。 我重新启动了服务器,并且翻译已经进行了一段时间,所以这不是缓存问题。

非常感谢。

【问题讨论】:

    标签: php linux debian


    【解决方案1】:

    一个想法:尝试在bindtexdomain(...) 中使用不带斜杠的完整路径。

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

    【讨论】:

    • 我找到了方法,我回答了我的问题。我给了你+1的答案,即使它没有帮助我:-)谢谢。
    【解决方案2】:

    好的,我刚刚发现了如何制作它。

    所以在 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");
    

    奇怪,但它有效。

    【讨论】:

      【解决方案3】:

      实际上,一种解决方案是在您的语言名称后添加“.utf-8”。

      另一种解决方案可能是在您的 debian 中添加不带“.utf8”的“locales”。

      我在 OVH 服务器(托管公司)中注意到此结果,您的第一个配置正在其上运行:

      $ 语言环境-a

      zh_CN

      zh_GB.iso88591

      zh_CN.iso885915

      zh_GB.utf8

      fr_FR

      fr_FR.iso88591

      fr_FR.iso885915

      fr_FR.utf8

      仅在我的 debian (synology) 服务器中:

      $ 语言环境-a

      zh_GB.utf8

      fr_FR.utf8

      【讨论】:

        猜你喜欢
        • 2012-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多