Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Drupal 6:为什么要使用!t()中的标记?_Drupal_Drupal 6 - Fatal编程技术网

Drupal 6:为什么要使用!t()中的标记?

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),则对于遇到的任何新内容以及尚未翻译的内容,翻译查找将失败。占

我正在阅读专业Drupal开发,第二版。它说,以下是必要的:

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(‘数字1’)
  • t(‘数字2’)
  • t(‘数字3’)
  • 鉴于

    t('Number !count', array('!count' => $count);
    
    它只会寻找一个翻译,将数字“原样”注入其中

    另一个好处是,翻译人员可以将占位符放置在适合目标语言用法的不同位置,例如提供“!将“whatever”计算为翻译字符串。在上述示例中,这将导致:

  • “1随便”
  • “2随便什么”
  • “3随便什么”

  • 使用“%”将用
    标记围绕占位符以突出显示,“@”将通过
    check_plain()
    来转义标记。

    t()的第一个参数是一个文本字符串;函数调用
    t(“您最喜欢的颜色是$color”)
    不会向函数传递文本字符串,用于提取要翻译的字符串的脚本将无法提取要翻译的字符串。实际上,提取脚本将提取
    “您最喜欢的颜色是$color”
    (注意字符串中的变量没有被替换),但这不是运行时传递给
    t()
    的字符串