如何从奏鸣曲管理标签调试缺失的翻译

时间:2017-10-08 11:25:16

标签: php symfony translation sonata-admin

如何从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%'] }

2 个答案:

答案 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