php-gettext не работает - PullRequest
       31

php-gettext не работает

0 голосов
/ 04 декабря 2011

Я пытаюсь настроить локализацию с помощью php-gettext, но, похоже, она не работает, несмотря ни на что.

У меня есть index.php:

<?php require_once "localization.php";?>

<a href="?locale=en_US">English</a> |
<a href="?locale=de_DE">German</a> 

<br>
<?php echo _("Hello World!"); ?><br>
<?php echo _("My name is"); ?> Bob.

и localization.php

<?php $locale = false;
if (isset($_GET["locale"])) { $locale = $_GET["locale"];}
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("messages", "./locale");
textdomain("messages");

Я также создал файлы перевода в ./locale/de_DE/LC_MESSAGES/messages.po / .mo

Я пытаюсь сделать это под Ubuntu 11.04 (natty), PHP версии 5.3.5-1ubuntu7.3, apache2

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 04 декабря 2011

Попробуйте:

<?php
$directory = dirname(__FILE__).'/locale';
$domain = 'messages';
$locale ="your_locale"; //like pt_BR.utf8";

putenv("LANG=".$locale); //not needed for my tests, but people say it's useful for windows

setlocale( LC_MESSAGES, $locale);
bindtextdomain($domain, $directory);
textdomain($domain);
bind_textdomain_codeset($domain, 'UTF-8');
?>
0 голосов
/ 06 мая 2013

Может быть, слишком поздно, но у меня возникла та же проблема:

1-й - вам нужно добавить .utf8 к вашей $locale строке 2-й - убедитесь, что ваша система поддерживает язык, используя locale -a, еслине установить язык, например de_DE: sudo apt-get install language-pack-de-base

$locale = "de_DE.utf8";
if (isset($_GET["locale"])) $locale = $_GET["locale"];

$domain = 'messages';
$directory = dirname(__FILE__);//your path to locale folder may differ

setlocale( LC_MESSAGES, $locale);
bindtextdomain($domain, $directory);
textdomain($domain);
bind_textdomain_codeset($domain, 'UTF-8');
...