2012-01-10 96 views
0

我想在debian上安裝gettext,它在我本地計算機上的Wamp上完美工作,但不在服務器上。我這樣做是爲了安裝:gettext沒有翻譯顯示

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"); 

問候。 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」。 我重新啓動了服務器,並且翻譯已經進行了一段時間,所以它不是緩存問題。

非常感謝。

回答

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"); 

奇怪,但它的工作原理。

1

一個想法:嘗試使用bindtexdomain(...)中的完整路徑,不要有斜線。編輯/嘗試#2: 嘗試運行unset LANG並重新啓動Apache。

+0

不:-( – user1040899 2012-01-10 04:40:46

+0

與更新工作另一個想法。 – 2012-01-10 05:00:22

+0

我找到了方法,我回答了我的問題。我給了你+1的答案,即使它沒有幫助我:-)謝謝。 – user1040899 2012-01-10 05:06:32

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

一個d在我的Debian(羣暉)服務器,只有:

$ locale -a命令

en_GB.utf8

fr_FR.utf8