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

编辑本页

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

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

1 2 3 4
{#消息可以在使用trans过滤器和标签#}时找到{%反式%}ob娱乐下载Symfony很棒{%endtrans%}{{'Sob娱乐下载ymfony是伟大的'|trans}}

谨慎

提取器不能找到在模板(如表单标签或控制器)之外翻译的消息,除非使用翻译或者打电话给反式()方法(从Symfony 5.3开始)。ob娱乐下载在模板中使用变量或表达式的动态翻译也不会被检测到:

1 2 3
{#这个翻译使用了一个Twig变量,所以它不会被检测到#}{%message = 'ob娱乐下载Symfony很棒' %}{{message|trans}}

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

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

中的所有消息fr应用程序的区域设置,运行:

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

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

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

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

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

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

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

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

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

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

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

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

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

方法,当应用程序有很多消息时,只显示未使用的或丢失的消息是很有用的——only-unused——唯一丧失选项:

1 2
PHP bin/控制台调试:翻译en -only-unusedPHP bin/控制台调试:翻译en -only-missing

调试命令退出码

的退出代码调试:翻译命令根据转换的状态而更改。使用以下公共常量来检查它:

12 3 4 5 6 7 8 9 10 11 12 13
使用ob娱乐下载\\FrameworkBundle\命令\TranslationDebugCommand//泛型失败(例如没有翻译)TranslationDebugCommand::EXIT_CODE_GENERAL_ERROR;//没有翻译TranslationDebugCommand::EXIT_CODE_MISSING;//有未使用的翻译TranslationDebugCommand::EXIT_CODE_UNUSED;//一些翻译正在使用备用翻译TranslationDebugCommand::EXIT_CODE_FALLBACK;

这些常量被定义为“位掩码”,所以你可以将它们组合如下:

1 2 3
如果(TranslationDebugCommand::EXIT_CODE_MISSING | translationdebug命令::EXIT_CODE_UNUSED) {/ /……有缺失和/或未使用的翻译

5.1

退出代码在Symfony 5.1中引入ob娱乐下载

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。