Drupal 6:为什么要使用!t()中的标记?
我正在阅读专业Drupal开发,第二版。它说,以下是必要的:Drupal 6:为什么要使用!t()中的标记?,drupal,drupal-6,Drupal,Drupal 6,我正在阅读专业Drupal开发,第二版。它说,以下是必要的: t("Your favorite color is !color", array('!color' => "$color")); 但是它也说了这个!!占位符表示不会对字符串进行任何转换。那么,为什么不: t("Your favorite color is $color"); 谢谢。t()用于查找所附字符串的翻译。如果该字符串中直接包含可变内容(示例中为color),则对于遇到的任何新内容以及尚未翻译的内容,翻译查找将失败。占
t("Your favorite color is !color", array('!color' => "$color"));
但是它也说了这个!!占位符表示不会对字符串进行任何转换。那么,为什么不:
t("Your favorite color is $color");
谢谢。t()用于查找所附字符串的翻译。如果该字符串中直接包含可变内容(示例中为color),则对于遇到的任何新内容以及尚未翻译的内容,翻译查找将失败。占位符允许翻译人员仅翻译字符串的固定部分,并且仍然允许插入可变内容
修饰符“!”、“%”、“@”只需使用“!”就可以对插入过程进行更多的控制这意味着字符串将按原样插入
最明显的例子是数字:
如果你有
t("Number $count");
你用不同的数字调用它几次,比如说1,2,3,每次t()都会为不同的字符串寻找不同的翻译:
t('Number !count', array('!count' => $count);
它只会寻找一个翻译,将数字“原样”注入其中
另一个好处是,翻译人员可以将占位符放置在适合目标语言用法的不同位置,例如提供“!将“whatever”计算为翻译字符串。在上述示例中,这将导致:
使用“%”将用
标记围绕占位符以突出显示,“@”将通过check_plain()
来转义标记。t()的第一个参数是一个文本字符串;函数调用t(“您最喜欢的颜色是$color”)
不会向函数传递文本字符串,用于提取要翻译的字符串的脚本将无法提取要翻译的字符串。实际上,提取脚本将提取“您最喜欢的颜色是$color”
(注意字符串中的变量没有被替换),但这不是运行时传递给t()
的字符串