Drupal 6 : Why use ! t() 中的标记?

标签 drupal drupal-6

我正在阅读Pro Drupal Development,第二版。它说以下是必要的:

t("Your favorite color is !color", array('!color' => "$color"));

但它也说!占位符意味着不会对字符串进行任何转换。那么为什么不只是:

t("Your favorite color is $color");

谢谢。

最佳答案

t() 用于查找所包含字符串的翻译。如果该字符串中直接有可变内容(示例中为 $color),则对于遇到且尚未翻译的任何新内容,翻译查找将失败。占位符允许翻译器仅翻译字符串的固定部分,并且仍然允许注入(inject)可变内容。

修饰符“!”、“%”、“@”只是让您更好地控制如何插入,而“!”意味着字符串将按原样插入。

最明显的例子是数字:

如果你有

t("Number $count");

并且您使用不同的数字(例如 1,2,3)多次调用它,每次 t() 都会为不同的字符串查找不同的翻译:

  1. t('数字 1')
  2. t('数字 2')
  3. t('数字 3')

而与

t('Number !count', array('!count' => $count);

它只会查找一个翻译,将数字“按原样”注入(inject)其中!

另一个好处是,翻译者可以通过提供以下内容将占位符放置在适合目标语言用法的不同位置: '!countwhatever' 作为翻译字符串。对于上面的示例,这将导致:

  1. “1 随便”
  2. “2 随便”
  3. “3 随便”

使用“%”会将占位符括起来 <em>用于突出显示的标签,“@”将贯穿 check_plain()逃避标记。

关于Drupal 6 : Why use ! t() 中的标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1318946/

相关文章:

drupal - 如何在 Drupal 6 的用户/注册表单中添加语言切换器

php - 更新后 Drupal 失败

drupal - 如何使内容的标题独一无二

javascript - Drupal 7 #ajax 更改事件阻止同一元素上的其他更改事件处理程序

php - 自定义模块是在 Drupal 中访问外部 API 的最佳方式吗?

drupal - 禁用所有编辑悬停项

Drupal, View : how to avoid duplicated?

PHP反序列化(): Error at offset

javascript - Plone 还是 Drupal 更适合大量的 JavaScript 集成?

javascript - 如何使用 drupal View 使图像流链接到内容或产品