You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony2 Translator如何从其他Bundle调用翻译Domain?

如何在Symfony中跨Bundle调用同名翻译域的内容

嘿,这个场景我之前处理过,其实Symfony的翻译组件已经内置了很直接的解决方案,不用复杂配置,改个参数就能搞定!

核心解决方案:给翻译域加上Bundle标识后缀

你只需要在原来的翻译域名称后面加上@Bundle名称的后缀,就能明确指定要从哪个Bundle的翻译资源中读取内容。

原来的调用代码是:

$translator->trans('mykey', array(), 'mytranslations');

现在改成这样,就能读取BundleB里的mytranslations域对应的mykey翻译了:

$translator->trans('mykey', array(), 'mytranslations@BundleB');

原理说明

Symfony的翻译器支持通过{domain}@{BundleName}的格式定位特定Bundle下的翻译资源。当你加上这个后缀后,翻译组件会直接去BundleB的Resources/translations目录下查找对应语言的mytranslations翻译文件,不再优先使用当前Bundle(BundleA)的翻译内容。

额外补充:Twig模板中的写法

如果需要在Twig模板里实现同样的效果,语法也是类似的:

{{ 'mykey'|trans({}, 'mytranslations@BundleB') }}

注意事项

  • 确保BundleB已经正确注册到你的Symfony项目中,且它的翻译文件(比如mytranslations.en.yml这类)放在BundleB/Resources/translations目录下,命名和格式符合Symfony的规范。

内容的提问来源于stack exchange,提问作者JV Lobo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:15:14