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

如何在Shopware插件中创建名称可翻译的客户组

解决Shopware客户组多语言翻译不生效问题

问题出在你直接使用语言代码(如de_DE、en_GB)作为翻译数组的键,而Shopware要求翻译关联的是语言实体的ID,而非语言代码。系统无法识别这些代码对应的语言,因此始终显示默认语言的翻译内容。

修正步骤:

  • 先通过languageRepository根据语言代码获取对应的语言ID
  • 将翻译数组的键替换为获取到的语言ID
  • 操作时确保上下文($context)权限足够,插件安装场景建议使用Context::createDefaultContext()

修正后的代码示例:

// 从DI容器获取languageRepository(可在插件类构造函数注入)
/** @var LanguageRepository $languageRepository */
$languageRepository = $this->container->get('language.repository');

// 根据语言代码查询对应ID
$deLangId = $languageRepository->search((new Criteria())->addFilter(new EqualsFilter('code', 'de_DE')), $context)->first()->getId();
$enGbLangId = $languageRepository->search((new Criteria())->addFilter(new EqualsFilter('code', 'en_GB')), $context)->first()->getId();

// 创建带多语言翻译的客户组
$customerGroupRepository->create([
    [
        'id' => Uuid::randomHex(),
        'registrationActive' => false,
        'displayGross' => true,
        'translations' => [
            Defaults::LANGUAGE_SYSTEM => [
                'name' => 'Customer group',
            ],
            $deLangId => [
                'name' => 'Kundengruppe',
            ],
            $enGbLangId => [
                'name' => 'Customer group',
            ]
        ]
    ],
], $context);

额外注意事项:

  • 确保目标语言(de_DE、en_GB)已在Shopware后台安装并启用
  • 若在插件install方法中执行,优先使用Context::createDefaultContext()避免语言上下文干扰
  • 可添加语言存在性判断,防止因语言未安装导致的报错

内容的提问来源于stack exchange,提问作者M.E.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 10:21:38