2

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ルーマニア語用のいくつromanianro_RO、、、、、、 。それらのそれぞれには、翻訳を含むポットファイルが含まれています - .ro_RO.1250Romanian_RomaniaRomanian_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 と関係があるのでしょうか。あなたはなにか考えはありますか?

4

1 に答える 1