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

时间:2014-04-10 14:48:14

标签: php 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名称而不是任何内容。

2 个答案:

答案 0 :(得分:1)

对于每个变量,有一种方法不需要使用| default,但它需要对其中一个核心文件稍作修改。

在smarty / sysplugins / smarty_internal_data.php的第340行

替换

return null

通过

return "#$variable#";

在此之后,未在conf文件中定义的所有变量将显示为#name#(即这是#password#)。

如果由于某种原因你想要一个变量为空,只需在conf文件中将其定义为

variable = ""

答案 1 :(得分:0)

我发现的唯一方法是:

{#foo#|default:'foo'}

设置默认值,如果变量为空,则显示该字符串。

http://www.smarty.net/docsv2/en/tips.tpl