如何找到丢失或未使用的翻译消息吗

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 5.2,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

如何找到丢失或未使用的翻译消息吗

维护应用程序或包时,您可以添加或删除翻译消息,忘记更新消息目录。的调试:翻译命令帮助你发现这些失踪或未使用的翻译消息模板:

1 2 3 4
{#消息可以发现当使用反式过滤器和标签#}{%反式%}欧宝娱乐app下载地址Symfony是伟大的{%endtrans%}{{Sy欧宝娱乐app下载地址mfony是伟大的”|反式}}

谨慎

外面的萃取器找不到消息翻译模板,如表单标签或控制器。动态模板中使用变量或表达式的翻译不是检测:

1 2 3
{#这个翻译使用一根树枝变量,所以它不会被探测到#}{%消息= ' Symfo欧宝娱乐app下载地址ny是伟大的' %}{{消息|反式}}

假设您的应用程序的default_localefr你已经配置了作为后备区域(见翻译翻译如何配置这些)。假设你已经安装的一些翻译fr地区:

  • XML
  • YAML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12
< !——翻译/ 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”><>欧宝娱乐app下载地址Symfony是伟大的< /><目标>我Symfon欧宝娱乐app下载地址y< /目标>< /trans-unit>< /身体>< /文件>< /xliff>

地区:

  • XML
  • YAML
  • PHP
1 2 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”><>欧宝娱乐app下载地址Symfony是伟大的< /><目标>欧宝娱乐app下载地址Symfony是伟大的< /目标>< /trans-unit>< /身体>< /文件>< /xliff>

检查中的所有消息fr语言环境的应用程序,运行:

1 2 3 4 5 6 7
美元php bin /控制台调试:翻译fr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -国家Id信息预览(fr)撤退消息预览(en) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 欧宝娱乐app下载地址- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -未使用Symfony是伟大的J”艾米Sym欧宝娱乐app下载地址fony Symfony是伟大的- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

它显示了一个表结果当翻译的消息fr语言环境,结果当回退的地区将被使用。除此之外,它还将向您展示当翻译是一样的回退翻译(这可能表明消息不正确翻译)。此外,它表明该消息欧宝娱乐app下载地址Symfony是伟大的是未使用的,因为它是翻译,但是你还没有在任何地方使用它。

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

1 2 3 4 5 6 7
美元php bin /控制台调试:翻译fr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -国家Id信息预览(fr)撤退消息预览(en) - - - - - - - - - - - - - - - - - - - - - - - - - - - -欧宝娱乐app下载地址 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Symfony是伟大的J”艾米Sym欧宝娱乐app下载地址fony Symfony是伟大的- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

状态为空这意味着信息是翻译的fr语言环境和使用的一个或多个模板。

如果你删除消息欧宝娱乐app下载地址Symfony是伟大的从你的翻译文件fr语言环境和运行该命令,你将得到:

1 2 3 4 5 6 7
美元php bin /控制台调试:翻译fr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -国家Id信息预览(fr)撤退消息预览(en) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -欧宝娱乐app下载地址 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -失踪Symfony是伟大的Symfony是伟大的Symfony是伟大的- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

状态指示消息丢失,因为它没有翻译fr地区但它仍然是在模板中使用。此外,消息的fr语言环境等于的消息语言环境。这是一个特例,因为翻译消息id等于其翻译语言环境。

如果你复制翻译文件的内容现场的翻译文件fr语言环境和运行该命令,你将得到:

1 2 3 4 5 6 7
美元php bin /控制台调试:翻译fr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -国家Id信息预览(fr)撤退消息预览(en) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 欧宝娱乐app下载地址- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -回退Symfony是伟大的Symfony是伟大的Symfony是伟大的- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

你可以看到消息的翻译是相同的fr地区这意味着这个消息可能是复制从英语到法语和也许你忘记翻译了。

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

1
美元php bin /控制台调试:翻译en -域=消息

当应用程序有很多信息,它是有用的只显示未使用或只失踪的消息,通过使用——only-unused——唯一丧失选项:

1 2
美元php bin /控制台调试:——only-unused翻译美元php bin /控制台调试:翻译en -唯一丧失

调试命令退出代码

的退出代码调试:翻译命令取决于翻译的状态变化。使用以下公共常量来检查:

1 2 3 4 5 6 7 8 9 10 11 12 13
使用欧宝娱乐app下载地址\\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 | TranslationDebugCommand::EXIT_CODE_UNUSED) {/ /……有丢失和/或未使用的翻译}

5.1

退出代码在Symfony 5.1中引入的欧宝娱乐app下载地址

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。