如何查找缺失或未使用的翻译信息
编辑本页警告:您正在浏览的文档欧宝官网下载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
你已经配置好了在
作为备用区域设置(参见翻译而且翻译对于如何配置这些)。假设您已经为fr
AcmeDemoBundle中的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-unused$php bin/控制台调试:翻译en AcmeDemoBundle—只缺少