Windows 7上的Gettext无法翻译

时间:2012-09-10 17:53:34

标签: php windows gettext

使用gettext翻译我的应用程序时遇到问题。

我的代码是:

<?php
$language = 'cs_CZ';
$translatefile = 'default';
setlocale(LC_ALL, $language);
putenv("LANG=".$language);
bindtextdomain($translatefile, __DIR__.'/locale');
textdomain($translatefile);

echo gettext("ADMIN_LOGIN_PROFESSIONAL");

当我运行脚本时,它仍会显示“ADMIN_LOGIN_PROFESSIONAL”。

我的文件结构:

  • 根/
    • 的index.php
    • 区域设置/
      • cs_CZ /
        • LC_MESSAGES /
          • default.mo

我正在运行Windows 7,Apache 2.2.22和PHP 5.3.13。

非常感谢您的帮助......

1 个答案:

答案 0 :(得分:0)

这适用于win 7,php 5.3&amp; 5.4,iis。是不是在linux上测试过的。代码已准备好按strftime('%c')等格式化日期:

/**
 * Setup locale (strings and formats)
 * @param string $lang Lang code in ISO format ('cs')
 * @see locales:   http://www.roseindia.net/tutorials/I18N/locales-list.shtml
 * @see languages: http://msdn.microsoft.com/en-us/library/39cwe7zf%28vs.71%29.aspx
 * @see regions:   http://msdn.microsoft.com/en-us/library/cdax410z%28vs.71%29.aspx
 */
function setAppLocale($lang)
{
    $domain = 'Tis';

    switch ($lang)
    {
        case 'cs':
            $locale = 'czech';
            $strings = 'cs_CZ';
            break;

        case 'en':
            $locale = 'english';
            $strings = 'en_US';
            break;

        case 'de':
            $locale = 'german';
            $strings = 'de_DE';
            break;

        case 'hu':
            $locale = 'hungarian';
            $strings = 'hu_HU';
            break;

        case 'ru':
            $locale = 'russian';
            $strings = 'ru_RU';
            break;
    }

    putenv("LANGUAGE=$strings");
    putenv("LC_ALL=$locale");
    setlocale(LC_ALL, $locale);

    bindtextdomain($domain, APPDIR . "/locale");
    bind_textdomain_codeset($domain, "UTF-8");
    textdomain($domain);
}