Apache gettext窗口不起作用/翻译

时间:2012-07-22 06:46:43

标签: php windows apache gettext

我是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合作。

2 个答案:

答案 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。它有效。