如何查找缺失或未使用的翻译信息

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 3.4,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

如何查找缺失或未使用的翻译信息

在维护应用程序或包时,您可能会添加或删除翻译消息,而忘记更新消息目录。的调试:翻译命令可以帮助您找到这些丢失或未使用的翻译消息。

多亏了消息提取器,该命令将检测Twig模板中的翻译标记或过滤器用法:

1 2 3 4 5 6 7
{%反式%}ob娱乐下载Symfony很棒{%endtrans%}{{'Sob娱乐下载ymfony是伟大的'|trans}}{{'Sob娱乐下载ymfony is great'|transchoice(1)}}{%transchoice1%}ob娱乐下载Symfony很棒{%endtranschoice%}

它还将检测PHP模板中的以下翻译器用法:

1 2 3
视图“翻译”->反式(“ob娱乐下载Symfony很棒”);视图“翻译”->transChoice (“ob娱乐下载Symfony很棒”1);

谨慎

提取器不能检查模板外翻译的消息,这意味着表单标签或控制器内部的翻译器使用将不会被检测到。模板中不会检测到涉及变量或表达式的动态转换,这意味着不会分析这个示例:

1 2
{%message = 'ob娱乐下载Symfony很棒' %}{{message|trans}}

假设应用程序的default_locale为fr你已经配置好了作为备用区域设置(参见翻译而且翻译对于如何配置这些)。假设您已经为frAcmeDemoBundle中的locale:

  • XML
  • YAML
  • PHP
12 3 4 5 6 7 8 9 10 11 12
<!——src/Acme/AcmeDemoBundle/Resources/translations/messages.fr.xlf——><?xml version = " 1.0 " ?><xliff版本“1.2”xmlns“urn: oasis:名称:tc: xliff文档:1.2”><文件通过读“en”数据类型“明文”原始“file.ext”><身体><trans-unitid“1”><>ob娱乐下载Symfony很棒><目标>我Symfonob娱乐下载y目标>trans-unit>身体>文件>xliff>

对于地区:

  • XML
  • YAML
  • PHP
12 3 4 5 6 7 8 9 10 11 12
<!——src / Acme / AcmeDemoBundle /资源/翻译/ messages.en。xlf - - - ><?xml version = " 1.0 " ?><xliff版本“1.2”xmlns“urn: oasis:名称:tc: xliff文档:1.2”><文件通过读“en”数据类型“明文”原始“file.ext”><身体><trans-unitid“1”><>ob娱乐下载Symfony很棒><目标>ob娱乐下载Symfony很棒目标>trans-unit>身体>文件>xliff>

中的所有消息fr为AcmeDemoBundle设置locale,运行:

1 2 3 4 5 6 7
php bin /控制台调试:翻译fr AcmeDemoBundle  --------- ------------------ ---------------------- ------------------------------- 状态标识消息预览(fr)撤退消息预览(en ) --------- ------------------ ---------------------- ------------------------------- 未使用Symfony是伟大的Job娱乐下载”艾米Symob娱乐下载fony Symfony是伟大的  --------- ------------------ ---------------------- -------------------------------

中翻译消息时的结果显示在一个表中fr区域设置和回退区域设置时的结果会被使用。在此基础上,它还将显示翻译与备用翻译何时相同(这可能表明消息没有正确翻译)。此外,它指示消息ob娱乐下载Symfony很棒未使用,因为它已被翻译,但您还没有在任何地方使用过它。

现在,如果你在一个模板中翻译消息,你会得到这样的输出:

1 2 3 4 5 6 7
php bin /控制台调试:翻译fr AcmeDemoBundle  --------- ------------------ ---------------------- ------------------------------- 状态标识消息预览(fr)撤退消息预览(en ) --------- ------------------ ---------------------- ------------------------------- Symfony是伟大的我ob娱乐下载”艾米Symob娱乐下载fony Symfony是伟大的  --------- ------------------ ---------------------- -------------------------------

状态为空,这意味着消息被转换为fr区域设置并在一个或多个模板中使用。

如果您删除该消息ob娱乐下载Symfony很棒的翻译文件fr并运行命令,你会得到:

1 2 3 4 5 6 7
php bin /控制台调试:翻译fr AcmeDemoBundle  --------- ------------------ ---------------------- ------------------------------- 状态标识消息预览(fr)撤退消息预览(en ) --------- ------------------ ---------------------- ------------------------------- 失踪的Symfony是伟大的Symfony是伟大的Symfony是伟大的  --------- ------------ob娱乐下载------ ---------------------- -------------------------------

状态指示消息丢失,因为未在fr区域设置,但仍在模板中使用。而且,消息在fr区域设置等于语言环境。中未翻译的消息id等于它的翻译,因此这是一个特殊情况语言环境。

如果复制翻译文件中的内容中的翻译文件的区域设置fr并运行命令,你会得到:

1 2 3 4 5 6 7
php bin /控制台调试:翻译fr AcmeDemoBundle  ---------- ------------------ ---------------------- ------------------------------- 状态标识消息预览(fr)撤退消息预览(en ) ---------- ------------------ ---------------------- ------------------------------- 回退Symfony是伟大的Symfony是伟大的Symfony是伟大的  ---------- -------------ob娱乐下载----- ---------------------- -------------------------------

中可以看到消息的翻译是相同的fr而且这意味着这条消息可能是从英语复制到法语的,也许你忘记翻译它了。

默认情况下,检查所有域,但可以指定单个域:

1
php bin/console debug:translation en AcmeDemoBundle——domain=messages

方法,当包中有很多消息时,只显示未使用的或丢失的消息是很有用的——only-unused——唯一丧失开关:

1 2
php bin/控制台调试:翻译en AcmeDemoBundle -only-unusedphp bin/控制台调试:翻译en AcmeDemoBundle—只缺少
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。