有一些教程了那里的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文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top