目前我在Smarty工作,一直忙于翻译。
我正在使用配置文件进行翻译,但我找不到一种方法来收集配置文件中没有的所有变量。当我的配置文件中没有翻译时,输出为空。
我的配置文件看起来像:
register = "Registreren"
username = "Gebruikersnaam"
password = "Wachtwoord"
login = "Inloggen"
在PHP中我使用:
$this->smarty = new Smarty();
$this->smarty->configLoad(THEME_DIR . "/translations/nl.conf");
$this->translations = $this->smarty->getConfigVars();
echo $this->translations["username"]; // output: Gebruikersnaam
我可以在我的HTML:中使用
{#password#}
{#username#}
{#password#}
{#login#}
但当我想输出一个尚未翻译的var时,如下所示:
{#logout#}
我的结果是空白的。
有人知道发生这种情况时如何使用默认函数吗?或者可能将找不到的var添加到我的配置文件中?或者至少显示var名称,而不是什么都不显示。
有一种方法不需要对每个变量使用|default,但它需要对其中一个核心文件进行一点更改。
smarty/sysplugins/smarty_internal_data.php 第340行
更换
return null
通过
return "#$variable#";
之后,所有未在conf文件中定义的vars都将显示为#name#(即这是您的#password#)。
如果出于某种原因,您希望变量为空,只需在conf文件中将其定义为
variable = ""
我找到的唯一方法是:
{#foo#|default:'foo'}
设置默认值时,如果变量为空,它将显示该字符串。
http://www.smarty.net/docsv2/en/tips.tpl