3

アプリケーションを 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/
          • デフォルト.mo

Windows 7、Apache 2.2.22、および PHP 5.3.13 を実行しています。

助けてくれてありがとう...

4

2 に答える 2

0

これは私のために働く:

$language = 'cs_CZ';
$translatefile = 'default';
putenv("LC_ALL=".$language);
setlocale(LC_ALL, $language);

bindtextdomain($translatefile, '/locale');
textdomain($translatefile);

echo gettext("ADMIN_LOGIN_PROFESSIONAL");
于 2012-09-10T18:13:33.740 に答える
0

これは、win 7、php 5.3および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);
}
于 2013-01-15T07:14:03.717 に答える