【问题标题】:How to get all not translated texts in Smarty如何在 Smarty 中获取所有未翻译的文本
【发布时间】:2014-04-10 14:48:13
【问题描述】:

目前我正在与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#}

但是当我想像这样输出一个尚未翻译的变量时:

{#logout#}

我的结果是空白的。

有谁知道发生这种情况时如何使用默认功能?或者也许将 not found var 添加到我的配置文件中?或者至少,显示 var 名称而不是什么。

【问题讨论】:

    标签: php smarty


    【解决方案1】:

    有一种方法不需要对每个变量都使用 |default,但它需要对其中一个核心文件进行一些更改。

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

    替换

    return null
    

    通过

    return "#$variable#";
    

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

    如果出于某种原因您希望变量为空,只需在 conf 文件中将其定义为

    variable = ""
    

    【讨论】:

    • 完美!这样,我可以将未翻译的变量存储在 not-translated.conf 谢谢!
    【解决方案2】:

    我找到的唯一方法是:

    {#foo#|default:'foo'}
    

    设置一个默认值,如果变量为空,它将显示该字符串。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-20
      • 1970-01-01
      相关资源
      最近更新 更多