2012-07-22 91 views
1

我是新來的gettext。Apache gettext窗口無法正常工作/翻譯

這裏是我的設置: /Apache 2.2的 PHP 5.3.6 的Windows 7/

我有以下的阿帕奇/ htdocs中/測試/ 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 & messages.mo我使用的字符集w作爲UTF-8

當我訪問http://localhost/test時,結果是Hello World!當它應該是大廳世界!

作爲測試,我打開命令提示符並導航到測試文件夾。然後,我在

php index.php 

中出現的控制檯中的結果類型是

Hall Welt! 

我不知道爲什麼它不與Apache工作。

回答

2

問題沒有解決傳統的方式。我不得不使用php-gettext代替gettext(php_gettext.dll)默認內置到php中。

詳情:

1)從這裏下載PHP-gettext的:https://launchpad.net/php-gettext/+download 2)在同一文件夾添加下列文件爲index.php文件: - gettext.inc - gettext.php - 流。 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!

0

今天我有同樣的問題上wampserver 2.2,Apache 2.2的Windows 7中,64位。我unistalled它並安裝32 BITS。有用。