如何从SonataAdmin捆绑包中检测丢失或未使用的翻译?
Symfony中有一个很好的tool,用于跟踪丢失/未使用的翻译:
php bin/console debug:translation en AppBundle
但是,它无法识别SonataAdmin表单字段标签的翻译。当我运行命令时,响应是:
---------- ---------- ------------------------------ ----------------------
State Domain Id Message Preview (en)
---------- ---------- ------------------------------ ----------------------
unused messages app.treasure_type.form.title Treasure
---------- ---------- ------------------------------ ----------------------
应该说使用翻译,因为它实际上已经使用并且工作正常:
$formMapper
->add('title', null, [
'label' => 'app.treasure_type.form.title',
]);
翻译文件 在src / AppBundle / Resources / translations / messages.en.yml
中app.treasure_type.form.title: "Treasure"
app / config / config.yml中的配置
parameters:
locale: en
framework:
translator: { fallbacks: ['%locale%'] }
答案 0 :(得分:0)
尝试以下方法之一:
php bin/console debug:translation en --all
php bin/console debug:translation en src/YourNamespace/YourBundle
php bin/console debug:translation en src/YourBundle
php bin/console debug:translation en app
尝试使用以下选项缩小搜索范围:
- 域[DOMAIN] - 消息域(例如--domain messages
,--domain validators
,--domain SonataAdminBundle
)
- only-missing - 仅显示缺失的消息
- 全部 - 加载来自所有已注册包的消息
考虑将后端使用的消息移动到它自己的域中。
答案 1 :(得分:0)
解决方案是使用JMSTranslationBundle,它能够从Admin类中提取翻译。
composer require jms/translation-bundle
下一步是在AppKernel中启用bundle。然后提取翻译密钥 - 使用命令:
php bin/console translation:extract en --bundle=AppBundle