Php 使用Drupal,如何强制t(';';)填充字符串?

Php 使用Drupal,如何强制t(';';)填充字符串?,php,drupal,internationalization,Php,Drupal,Internationalization,我试图确保数据库中存在所有可翻译字符串。其中一些错误很少出现(各种形式的验证错误),因此复制它们是一件痛苦的事情 相反,我创建了一个管理模块,一旦调用该模块,它将遍历所有可翻译字符串的数组并执行echo t(“[数组中的字符串]”) 在此之后,我希望能够使用admin/config/regional/translate/translate翻译这些字符串。但并不是所有人都在那里 我错过了什么 如果由于某种原因无法进入,是否有任何功能可以强制进入 尝试以下方法 foreach(array(t('f

我试图确保数据库中存在所有可翻译字符串。其中一些错误很少出现(各种形式的验证错误),因此复制它们是一件痛苦的事情

相反,我创建了一个管理模块,一旦调用该模块,它将遍历所有可翻译字符串的数组并执行
echo t(“[数组中的字符串]”)

在此之后,我希望能够使用
admin/config/regional/translate/translate
翻译这些字符串。但并不是所有人都在那里

  • 我错过了什么
  • 如果由于某种原因无法进入,是否有任何功能可以强制进入
尝试以下方法

foreach(array(t('foo'), t('bar')) as $t) {
    echo $t;
}
千万不要使用
t()
来转换变量,例如调用
t($text)
。了解函数

但无论如何,最好的方法是从您的模块中创建
.po
文件,并使用导出工具将其导出到Drupal

此模块将提取您所有的可翻译字符串,并将其保存到特定语言的文件中,然后您可以在您希望使用模块的任何其他站点中使用该文件。

按照Vlad Stratulat的建议安装并使用“翻译模板提取器”模块。 该模块允许您解析所有模块和主题,并提取t()函数中使用的所有字符串

结果是一个包含所有原始/翻译字符串对的.po文件。 您可以打开.po(这是一个纯文本文件,因此请使用您喜爱的文本编辑器或POEdit软件),检查并翻译缺少的字符串。
最后,在Drupal中重新上传完整的.po。

如果可能的话,我更愿意在代码中完成。这个模块肯定会给你很大帮助。为什么
t()
foreach(数组(t('foo'),t('bar'))作为$t)
上下文中工作,但在回显时没有?你看到我更新的答案了吗?我在那里回显了
$t
变量,它是
t('string')
的结果。它的目的是什么?我不在乎产量。我只需要将数组中的字符串保存到数据库中。您可以显示一个代码示例吗?它非常简单,如
。文本按预期打印。但是,它没有保存到数据库中。我可以自己创建
.po
文件吗?我有一个数组中的所有字符串。哪里可以获得
.po
文件规范?是的,.po格式很简单,您可以手动创建自己的规范,但为了简单起见,我建议您让模块解析所有规范!你可以复制这个文件的格式:(我的Iconizer模块,加泰罗尼亚翻译)那个家伙不想听我的。