【问题标题】:Is it possible to put variables inside config files?是否可以将变量放入配置文件中?
【发布时间】:2010-10-05 11:45:53
【问题描述】:

我使用 smarty 允许在我的网站上使用不同的语言,到目前为止效果还不错。我将文本存储在不同部分的配置文件中。

但是还有这样的句子:

您有 6 封新邮件!”,德语为“Sie haben 6 neue Mails!

现在数字之前和数字后面都有文本,这是从数据库中加载的。我想把它放到配置文件中,然后自己加载数字。

所以我的“text.conf”中有这个

[en]
mail_count = "You have $NUMBER new mails!"
[de]
mail_count = "Sie haben $NUMBER neue Mails!"

这在我的“show_text.php”中

$smarty->assign('NUMBER', 6);

这样的事情可能吗?也许是 Smarty 3.0?

提前致谢, BH

【问题讨论】:

    标签: smarty config


    【解决方案1】:

    您可以使用 sprintf 语法。这个例子来自一个类似寻呼机的东西:

    results = "Results %s to %s of %s total"
    
    {#results#|sprintf:$start:$end:$total}
    

    【讨论】:

    • 它有点工作,但仍然不是预期的效果:你仍然必须添加这个 sprintf 的东西,不能直接把变量给 smarty。我已经找到的一个解决方案接近这个解决方案,但会使用“replace”而不是“sprintf”。还是谢谢!
    【解决方案2】:

    我刚试过这个,它可以工作,但它相当难看......

    • 创建一个文件“number.tpl”,其中包含

    {$NUMBER}

    • 在你的 conf 文件中是这样的

    mail_count = "你有 {包括 file='number.tpl'} 新邮件!”

    我猜是因为 smarty 变量只适用于 tpl 文件。

    【讨论】:

    • 这对我来说根本不起作用,内部包含没有执行,我得到的文本是“你有 {include file='number.tpl'} 新邮件!”跨度>
    • 我正在做的是在 Firefox 浏览器中运行 show_text.php 文件。你在这样做吗?
    【解决方案3】:

    读取配置文件时,需要使用打开

    $cfg = $smarty->fetch('path/to/file');
    

    之后,您拥有 $cfg 变量中的整个文件内容,并替换了 {$NUMBER}。

    【讨论】:

      【解决方案4】:

      我现在没有 Smarty 来测试这个,但如果你在配置条目中正确声明变量,它应该可以工作,例如:

      ail_count = "You have {$NUMBER} new mails!"
      

      【讨论】:

      • 不,很遗憾没有。我已经试过了,输出是“你有 {$NUMBER} 封新邮件!”
      猜你喜欢
      • 2020-01-30
      • 2022-11-24
      • 2016-01-07
      • 2019-03-06
      • 2016-09-13
      • 1970-01-01
      • 1970-01-01
      • 2012-03-20
      • 1970-01-01
      相关资源
      最近更新 更多