我是gettext的新手。
这是我的设置: / Apache 2.2 PHP 5.3.6 Windows 7 /
我在 Apache / htdocs / test / index.php
中有以下代码<?php
$language = 'de_DE';
$translatefile = 'messages';
setlocale(LC_ALL, $language);
putenv("LANG=".$language);
bindtextdomain($translatefile, 'C:/locale');
textdomain($translatefile);
echo gettext("Hello World!");
?>
我使用PoEdit在 locale / de_DE / LC_MESSAGES / messsages.po &amp;下生成必要的翻译。 messages.mo我使用的字符集是 UTF-8
当我访问http://localhost/test
时,结果是Hello World!什么时候应该是Hall Welt!
作为测试,我打开命令提示符并导航到测试文件夹。然后我输入了
php index.php
控制台中出现的结果是
Hall Welt!
我不确定为什么它不能与Apache合作。
答案 0 :(得分:2)
传统方式没有解决问题。我不得不使用php-gettext而不是gettext(php_gettext.dll)默认内置到php中。
详细说明:
1)从这里下载php-gettext:https://launchpad.net/php-gettext/+download 2)在index.php所在的文件夹中添加以下文件: - gettext.inc - gettext.php - streams.php 3)这是新的index.php
<?php
error_reporting(E_ALL | E_STRICT);
// define constants
define('PROJECT_DIR', realpath('./'));
define('LOCALE_DIR', 'C:/locale');
define('DEFAULT_LOCALE', 'de_DE');
require_once('gettext.inc');
$supported_locales = array('en_US', 'sr_CS', 'de_CH');
$encoding = 'UTF-8';
$locale = (isset($_GET['lang']))? $_GET['lang'] : DEFAULT_LOCALE;
//var_dump($locale);die();
// gettext setup
T_setlocale(LC_MESSAGES, $locale);
// Set the text domain as 'messages'
$domain = 'messages';
bindtextdomain($domain, LOCALE_DIR);
// bind_textdomain_codeset is supported only in PHP 4.2.0+
if (function_exists('bind_textdomain_codeset'))
bind_textdomain_codeset($domain, $encoding);
textdomain($domain);
echo gettext("Hello World!");
?>
4)打开你的php.ini并注释掉php_gettext.dll:
;extension=php_gettext.dll
访问http://localhost/test
,您会看到Hall Welt!
答案 1 :(得分:0)
我今天在wampserver 2.2,apache 2.2 windows 7,64 BITS上遇到了同样的问题。我取消了它并安装了32个BITS。它有效。