gettext返回错误的语言

时间:2015-01-28 16:23:19

标签: php gettext

我在/en_GB/LC_MESSAGES/文件夹中有两个文件domain.po和domain.mo.我在使用Windows 7的本地计算机上使用xampp。 当我设置我的默认语言$lang='it'时,如果$lang== 'en'它返回意大利语,我的页面将以英语翻译,反之亦然。

这是我的代码:

    if ($lang == 'it') {
        $str_language = 'it_IT';
    } 
    else if ($lang == 'en') {
        $str_language = 'en_GB';
    }

    $this->lang = $lang;

    putenv("LANG=$lang");

    putenv("LANGUAGE=$str_language");

    if (defined('LC_ALL')) {
        setlocale(LC_ALL, $str_language);
    }
    else {
        putenv( "LC_ALL={$str_language}");
    }

    // locale path
    $directory = realpath("../dev") . "/lib/lang";

    $domain = 'domain';

    if ( $lang != 'it') {

        $filename = "$directory/$str_language/LC_MESSAGES/$domain.mo";
        $mtime = filemtime($filename); // check its modification time

        // our new unique .MO file
        $filename_new = "$directory/$str_language/LC_MESSAGES/{$domain}_{$mtime}.mo";

        if (!file_exists($filename_new)) {  // check if we have created it before
            // if not, create it now, by copying the original
            copy($filename,$filename_new);
        }

        // compute the new domain name
        $domain_new = "{$domain}_{$mtime}";
    }
    else {
        $domain_new = $domain;
    }


    if (function_exists('bindtextdomain')) {

        bindtextdomain( $domain_new , $directory);

        bind_textdomain_codeset($domain_new, 'UTF-8');
        textdomain($domain_new);
    }`

我该如何解决这个问题? 感谢

编辑:msgid是意大利文,msgstr是英文版 我希望这个问题很清楚。

0 个答案:

没有答案