我用奏鸣曲管理包构建了一个 i18n 管理站点。现在我想用管理员用户的语言环境集更改我的语言环境和翻译。比如,我有两个管理员用户,一个是en(userA),另一个是zh(UserB)。用户的语言环境分别在用户管理仪表板中设置为 en/zh。</p>
我的管理服务:</p>
services:
sonata.admin.post:
class: Acme\StoreBundle\Admin\PostAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: "Content", label: "Project", label_translator_strategy: sonata.admin.label.strategy.underscore }
arguments:
- ~
- Acme\StoreBundle\Entity\Product
- ~
calls:
- [ setTranslationDomain, [AcmeStoreBundle]]
- [ setLabelTranslatorStrategy, [ @sonata.admin.label.strategy.native ]]
然后我的 Resources/translations/AcmeStoreBundle.en.xliff 和 Resources/translations/AcmeStoreBundle.zh.xliff 就像这样:</p>
<?xml version="1.0"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file source-language="en" datatype="plaintext" original="file.ext">
<body>
<trans-unit id="1">
<source>label.product.name</source>
<target>Product Name</target> ##---> zh is diffrent here!!!
</trans-unit>
</body>
</file>
</xliff>
然后,我通过 UserA 登录管理员,消息(产品名称)正常。但是我通过 UserB 登录,消息仍然是 en locale(product name) 。当然,我可以在 parameters.yml (%locale%) 中为 userB 更改全局语言环境,但这对 userA 不利。
那么,如何使用不同管理员的用户区域设置更改我的站点的区域设置(消息或翻译)?提前致谢。