gettext переводы не показывались - PullRequest
0 голосов
/ 10 января 2012

Я пытаюсь установить gettext на debian, он отлично работает на 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».Я перезапустил сервер, и перевод был сделан некоторое время назад, так что это не проблема с кэшем.

Большое спасибо.

Ответы [ 3 ]

1 голос
/ 10 января 2012

Хорошо, я только что обнаружил, как это сделать.

Итак, на 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 голос
/ 10 января 2012

Идея: попробуйте использовать полный путь в bindtexdomain(...) без косой черты.

Редактировать / попробовать # 2: Попробуйте запустить unset LANG и перезапустить Apache.

0 голосов
/ 09 октября 2014

Эффективно, решение заключается в добавлении «.utf-8» после имени вашего языка.

Другое решение может заключаться в добавлении «locales» без «.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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...