如何创建一个以可翻译片段为名称的实体



我想在插件中创建一个新的客户组。此客户组的名称应该是可翻译的。我怎样才能做到这一点?这是我到现在为止的代码:

$customerGroupRepository->create([
[
'id' => Uuid::randomHex(),
'registrationActive' => false,
'displayGross' => true,
'translations' => [
Defaults::LANGUAGE_SYSTEM => [
'name' => 'Customer group',
],
'de_DE' => [
'name' => 'Kundengruppe',
],
'en_GB' => [
'name' => 'Customer group',
]
]
],
], $context);

但这行不通。无论我在商店软件后端选择哪种语言,客户组的名称都是"客户组"。

区域设置需要包括连字符:de-DEen-GB

使用正确的语言环境,应该将它们解析为language.id

不过,一般来说,首先获取language实体的id,然后将其用作密钥并不是一个坏主意。作为一种预防措施,确保语言/区域设置存在。

language.id:

[
// ...
'translations' => [
Defaults::LANGUAGE_SYSTEM => [
'name' => 'Customer group',
],
'9e4f6342174749aa897c5b64d57d7996' => [
'name' => 'Kundengruppe',
],
'0a7f24f26e48436d9f3b343fc43b65b7' => [
'name' => 'Customer group',
]
]
]

带区域设置:

[
// ...
'translations' => [
Defaults::LANGUAGE_SYSTEM => [
'name' => 'Customer group',
],
'de-DE' => [
'name' => 'Kundengruppe',
],
'en-GB' => [
'name' => 'Customer group',
]
]
]

两者都应该有效。

最新更新