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} 
...

现在欢迎可以以不同的语言出现(存储在会话中的路径)。但是 $error 只出现一种语言,只打印出它的值。如何根据选择的语言打印出来?我应该在哪里为 $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 回答