如何在Smarty中获取所有未翻译的文本


How to get all not translated texts in Smarty

目前我在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