Windows上的PHP gettext

有一些教程用于gettext(w / Poedit)…不幸的是,这主要是针对UNIX环境。 更不幸的是,我正在Windows XP上运行我的WAMP服务器(但是我正在为UNIX环境开发),而且没有任何教程可以使gettext正常工作。 从手册页( http://us3.php.net/manual/en/book.gettext.php )看来,这是Windows环境中的一个不同的过程。 我已经尝试了一些在评论中的解决scheme,但我仍然无法得到它的工作! 请,我已经花了很多时间在这个,希望有人可以指出我正确的方向来得到这个东西的工作! (我敢肯定,还有其他人分享我的挫折)。 到目前为止我的设置,我只得到输出“Hello World!” 而我应该得到翻译的string。

这是我的设置/代码到目前为止:

<?php // test.php if (!defined('LC_MESSAGES')) { define('LC_MESSAGES', 6); } $locale = "deu_DEU"; // apparently the locales are different on a WINDOWS platform putenv("LC_ALL=$locale"); setlocale(LC_ALL, $locale); bindtextdomain("greetings", ".\locale"); textdomain("greetings"); echo _("Hello World"); ?> 

文件夹结构

根目录:C:\ Program Files \ WampServer 2 \ www
 test.php:C:\ Program Files \ WampServer 2 \ www \ site
 .po:C:\ Program Files \ WampServer 2 \ www \ site \ locale \ deu_DEU \ LC_MESSAGES \ greetings.po
 .mo:C:\ Program Files \ WampServer 2 \ www \ site \ locale \ deu_DEU \ LC_MESSAGES \ greetings.mo

请指教! 谢谢你的时间 :)

Solutions Collecting From Web of "Windows上的PHP gettext"

我在我的本地机器上使用gettext时遇到了问题,经过一些搜索,我发现这个页面解决了我的问题: http : //www.kipras.com/getting-gettext-to-work-in-apache-on-窗户/ 96

我从网页引用:

在Linux服务器(或任何其他服务器窗口),做到这一点是这样的:

 setlocale(LC_MESSAGES, “en_US”); 

在Windows上设置位置的正确方法是这样的:

 putenv(“LC_ALL=en_US”); 

我也有同样的问题,浪费了将近一天的时间。 最后,我找到了一个非常简单的解决方案,即卸载WAMP server(版本2.1),并安装更新的版本 (Wampserver 2.1e – 32位)。 这很奇怪,但它完全解决了这个问题。

以下是适用于我的示例代码:

 <?php $locale = "deu_DEU"; putenv("LC_ALL=$locale"); setlocale(LC_ALL, $locale); bindtextdomain("greetings", "./locale"); textdomain("greetings"); echo _("Hello World"); ?> 

希望能帮助到你。

我没有对此进行全面的调查,但是我相信你的一个错误是你使用了无效的区域代码 – 即使在Windows上,区域代码是相同的 – 这些是gettext语言环境,它们是跨平台的。

请尝试使用“de”作为区域代码,它应该工作。 还要确保你的PHP已经安装并激活了gettext扩展(用phpinfo检查)。

也许为时已晚,但我有类似的问题,直到我在我的WAMP的PHP设置中启用“短打开标签”

这是为我工作的解决方案。 这适用于最新的wampserver。 (来源: http : //www.extradrm.com/blog/?p=1035 )

1)从这里下载php-gettext: https : //launchpad.net/php-gettext/+download并解压缩

2)在包的根目录中找到以下与test-language.php相同的文件夹: – gettext.inc – gettext.php – streams.php

3)打开你的php.ini并注释掉wampserver php_gettext.dll:

;extension=php_gettext.dll

4)这是新的测试文件test-language.php

 <?php error_reporting(E_ALL | E_STRICT); // define constants define('PROJECT_DIR', realpath('./')); define('LOCALE_DIR', 'C:/wamp/www/test/locale'); define('DEFAULT_LOCALE', 'es_ES'); require_once('gettext.inc'); $supported_locales = array('en_US', 'sr_CS', 'de_CH','es_ES'); $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"); ?> 

完成所有这些之后,您必须创建locale文件夹,en_US(或其他语言)文件夹,LC_MESSAGES文件夹,然后放置messages.po文件。

这是因为我没有安装语言环境。