gettext の使用に問題があります。
これは私がロケールを設定する方法です:
$lang = 'romanian';
putenv("LANG=$lang");
$smarty->assign('lang',$lang);
setlocale(LC_ALL, $lang);
if (setlocale(LC_ALL, $lang)==false) print ' false'; else print setlocale(LC_ALL, $lang);
bindtextdomain("messages", realpath("../locale"));
textdomain("messages");
これは を出力Romanian_Romania.1250
するので、 setlocale 関数は問題なく動作すると思います。
私の .tpl ファイルの例:
{_('Login')}:<br>
<b style="color:blue;">{$user.name}</b>
<br>
<a href="logout.php">{_('Logout')}</a>
フォルダーに翻訳を含むいくつかのフォルダーを作成しました\locale
。は私のデフォルト言語用です-スロバキア語とsk_SK
ルーマニア語用のいくつromanian
かro_RO
、、、、、、 。それらのそれぞれには、翻訳を含むポットファイルが含まれています - .ro_RO.1250
Romanian_Romania
Romanian_Romania.1250
\LC_MESSAGES\messages.pot
何が起こるか: フォルダ内のすべての翻訳sk_SK
が翻訳されます。フォルダの名前を変更すると、すべてが正しく翻訳されます。しかし、私が何をしても、他のフォルダーは取得されません。私はこの問題にかなり長い間取り組んでおり、いくつかの言語設定とさまざまなフォルダー名を試しました。
例 1:
sk_SK フォルダーに、文字列 'Login' - 'SKSKSK' の翻訳を含むポット ファイルがあります。
ro_RO フォルダーに、文字列 'Login' - 'RORORO' の翻訳を含むポット ファイルがあります。
ブラウザに「SKSKSK」と表示されます
例 2:
sk_SK フォルダーに、文字列 'Login' - 'RORORO' の翻訳を含むポット ファイルがあります。
ro_RO フォルダーには、文字列 'Login' - 'SKSKSK' の翻訳を含むポット ファイルがあります。
ブラウザに「RORORO」と表示されます
問題は Smarty と関係があるのでしょうか。あなたはなにか考えはありますか?