使用 drupal 7 翻译 node.tpl.php 文件中的字段

Posted

技术标签:

【中文标题】使用 drupal 7 翻译 node.tpl.php 文件中的字段【英文标题】:Translating fields in node.tpl.php file with drupal 7 【发布时间】:2011-12-25 19:27:17 【问题描述】:

我有一个德鲁巴英语/法语网站。 我有一个名为“广告”的自定义内容类型,其中包含各种字段。 我在主题目录中创建了文件“node--ad.tpl.php” 自定义“广告”内容的显示。 我使用的是像素重载主题和 DRUPAL 7。

我正在尝试翻译字段(标签和值) 通过使用“字段翻译”模块。

当我通过管理员创建或修改内容时,字段翻译工作。

但是,当我显示“广告”类型的内容时,不会翻译字段。 这是因为 drupal 调用 'node--ad.tpl.php' 和翻译 模块可能没有被调用。 删除'node--ad.tpl.php'时,drupal调用默认的node.tpl.php 有类似的结果。

任何帮助将不胜感激, 提前致谢,

注意事项: 1 - 我正确激活了模块的每个依赖项。 2 - 用户界面翻译正常工作。

【问题讨论】:

【参考方案1】:

好的 我发现自己如何做到这一点。 我在这里给出解决方案。 它可能对其他人有所帮助:

首先,在配置 > 区域和语言 > 翻译 > 导入中翻译字段标签和值。不要将值作为字段导入,而是作为用户界面导入。不指定 一个 URL(仅 msgstr 和 msgid)。

现在,您需要在 node.tpl.php 中添加 t() 函数才能使翻译生效。所以:

在node.tpl.php文件中,如果你想翻译字段标签,这样写: $content['field_my_field']['#title'] = t($content['field_my_field']['#title']);

然后翻译字段值这样做: $content['field_my_field']["#items"][0]['value'] = t($content['field_my_field']["#items"][0]['value']);

您现在可以渲染您的字段:print render($content['field_my_field']);

【讨论】:

以上是关于使用 drupal 7 翻译 node.tpl.php 文件中的字段的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 到 Drupal 7 db_select

如何使用 graphql 获得 drupal 节点的特定翻译

PHP Drupal 6:使用i18n模块翻译主要和次要链接

php drupal 8翻译

Drupal 8 更新自定义模块的 language.po 文件

Drupal6:带有i18n模块的可翻译主次链接