JMSTranslationBundle提取翻译遇未知注解错误,能否忽略?
解决JMS Translation Bundle提取翻译时的未知注解错误问题
嘿,我完全懂你遇到的这个麻烦!当你执行这条翻译提取命令:
php bin/console translation:extract pt --dir=./src/ --output-dir=./app/Resources/translations
碰到的那两个语义错误,其实是可以通过配置忽略掉的,下面给你几种靠谱的解决办法:
方法一:精准忽略指定的未知注解(推荐)
如果你确定@created和@optional这两个注解和翻译完全无关,也不需要在代码里处理它们的逻辑,直接在JMS Translation Bundle的配置文件(一般是app/config/config.yml)里添加忽略规则就行:
jms_translation: configs: app: ignored_annotations: - created - optional
这样配置后,翻译提取命令就会自动跳过这两个注解的检查,不会再报错啦。
方法二:全局忽略所有未知注解(慎用)
要是你项目里还有很多类似的未知注解,一个个加太麻烦,可以开启全局忽略未知注解的开关,但这个方式不推荐,因为可能会漏掉一些本该注意的注解问题:
jms_translation: configs: app: ignore_unknown_annotations: true
方法三:补充缺失的use语句(如果注解是有用的)
要是这两个注解其实是某个第三方库的(比如@optional可能是JMS Serializer的注解,@created可能是Doctrine的时间戳注解),那你得找到它们对应的命名空间,在对应的类里添加use语句:
比如如果@optional是JMS Serializer的,就在Ups\Entity\Tradeability\TariffInfo类顶部加:
use JMS\Serializer\Annotation\Optional;
如果@created是Doctrine的,就在InvoiceBundle\Service\CodeGeneratorService类顶部加:
use Doctrine\ORM\Mapping\CreatedAt;
(具体命名空间要看你用的注解库,这里只是举例子哦)
总结一下,优先用方法一精准忽略,毕竟这样不会影响其他注解的检查;如果注解是有用的,就补全use语句;实在没办法再考虑全局忽略。
内容的提问来源于stack exchange,提问作者Developer
相关产品推荐
相关产品推荐

