我正在阅读Pro Drupal Development,第二版.它说以下是必要的:
t("Your favorite color is !color", array('!color' => "$color"));
Run Code Online (Sandbox Code Playgroud)
但它也说了!占位符表示不对字符串进行任何转换.那么为什么不呢:
t("Your favorite color is $color");
Run Code Online (Sandbox Code Playgroud)
谢谢.
Hen*_*pel 12
t()用于查找包含的字符串的转换.如果您在该字符串中直接包含可变内容(示例中为$ color),则对于遇到但尚未翻译的任何新内容,翻译查找将失败.占位符允许翻译者仅翻译字符串的固定部分,并仍然允许注入可变内容.
修饰符"!","%","@"只是给你了一些更多的控制如何插入发生,以"!" 意味着字符串将按原样插入.
最明显的例子是数字:
如果你有
t("Number $count");
Run Code Online (Sandbox Code Playgroud)
并且你用不同的数字多次调用它,例如1,2,3,每次t()为不同的字符串寻找不同的翻译:
而与
t('Number !count', array('!count' => $count);
Run Code Online (Sandbox Code Playgroud)
它只会寻找一个翻译,将数字"原样"注入其中!
另一个好处是,翻译者可以通过提供例如'!count whatever'作为翻译字符串,将占位符放置在适合目标语言使用的不同位置.通过上面的示例,这将导致:
使用'%'会在占位符周围添加<em>
标记以突出显示,'@'将运行它check_plain()
来转义标记.
归档时间: |
|
查看次数: |
900 次 |
最近记录: |