如何查找缺失或未使用的翻译信息
编辑本页如何查找缺失或未使用的翻译信息
在维护应用程序或包时,您可能会添加或删除翻译消息,而忘记更新消息目录。的调试:翻译
命令帮助您找到这些丢失或未使用的翻译消息模板:
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-unused$PHP 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娱乐下载