0

多言語対応のサイト(Smartyテンプレートを使用)があります。すべての言語は異なるlang.iniファイルにあります。例:lang / eng / lang.ini :(英語)

WELCOME = "Welcome"

lang / hun / lang.ini :(ハンガリー語)

WELCOME = "Üdvözöllek"

次に、index.phpで:

... 
$error=array(); 
if($condition!=$condition2) 
{ 
     $error1 = "This is an error msg"; 
     array_push($error, $error1); 
} 
... 
$this->tpl->assign('error', $error); 
$lang_file=parse_ini_file("lang/". $_SESSION["lang_folder"] ."/lang.ini",true); 
$this->tpl->assignByref("lang",$lang_file); 
$this->tpl->display('index.tpl');

最後にindex.tplで:

... 
{$lang.WELCOME} 
<br /> 
{if isset($error) && $error ne "" } 
   {foreach $error as $error_list} 
      {$error_list} 
   {/foreach} 
{/if} 
...

これで、Welcomeをさまざまな言語(セッションに保存されているパス)で表示できるようになりました。ただし、$ errorは1つの言語にしか表示されず、その値を出力するだけです。選択した言語に応じて印刷するにはどうすればよいですか?$ errorにどこに価値を追加する必要がありますか?

4

1 に答える 1

1

エラーを検出するときは、英語の文字列を配列にプッシュするのではなく、INIファイルから取得するコードをプッシュします。

if($condition!=$condition2) 
{ 
    array_push($error, 'ERROR_ONE'); 
}

次に、Smartyで、$lang通常の配列アクセス構文を使用して、それを配列のキーとして使用します。

{foreach $error as $error_code} 
    {$lang[$error_code]} 
{/foreach}
于 2013-01-13T18:18:20.937 に答える