题
有一些教程了那里的gettext(W / poEdit的)......不幸的是,它是多为UNIX环境。而更不幸的是,我跑我的WAMP的服务器上的Windows XP(但我开发UNIX环境),并没有教程可以得到的gettext为我工作正常。从该名男子页( http://us3.php.net/manual/en/ book.gettext.php ),看来,它是在Windows环境中的不同过程。我已经尝试了一些解决方案的意见,但我仍然不能得到它的工作!拜托,我已经花了很多时间在这,希望有人能指出我在正确的方向让这件事的工作! (我敢肯定有其他人在那里谁分享我的无奈)。因此,与我的设置到目前为止,我只得到输出的“Hello World!”而我应该得到的转换后的字符串。
下面是我的设置/代码到目前为止:
<?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");
?>
文件夹结构
root: 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
请指教!感谢您的时间:)
解决方案 6
这是因为没有安装区域设置。
其他提示
我遇到问题的gettext我的本地机器上工作时,和一些搜索后,我找到了这个网页它解决我的问题: http://www.kipras.com/getting -gettext到工作在Apache的上窗口/ 96
我从网页引用:
在Linux服务器(或任何其它服务器 除了窗口),做事情是这样的 这样:
setlocale(LC_MESSAGES, “en_US”);
正确的方法来设置局部性上 窗口是这样的:
putenv(“LC_ALL=en_US”);
我有同样的问题,并浪费了几乎一天左右就可以了。最后,我发现了一个很简单的解决方案,即卸载WAMP服务器(版本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的语言环境,他们是跨平台。
请尝试使用只是“德”为区域设置代码,它应该工作。另外要确保你的PHP已经gettext扩展安装并激活(含的phpinfo检查)。
可能为时已晚,但直到我在WAMP PHP设置启用“短开放标签”我有类似的问题。
这是对我工作的解决方案。这适用于最新的wampserver。 (来源: http://www.extradrm.com/blog/?p=1035)
https://launchpad.net/php-gettext/:1)从这里下载PHP-gettext的+下载
并将其解压缩2)加入在同一文件夹中的测试language.php包根发现了以下文件: - gettext.inc - gettext.php - streams.php
3)打开你的php.ini和注释wampserver php_gettext.dll:
;extension=php_gettext.dll
4)这是一个新的测试文件的测试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");
?>
在所有这一切,你必须创建语言文件夹,EN_US(或其他语言)文件夹,文件夹LC_MESSAGES,然后把messages.po文件。