Shopware Admin模块创建产品时无法传入translations多语言翻译如何解决
问题原因
- Shopware Admin Module的实体变更生成器处理
translations一对多关联字段时,会调用forEach遍历传入值,你当前为translations赋值的是键为语言ID的对象,对象本身不支持forEach方法,因此触发类型错误。 - Admin API原生HTTP接口确实支持传入键为语言ID的翻译对象,但前端Admin Module的
repository层做了封装,要求translations必须传入数组格式。
translations正确结构
translations需要为数组格式,每个数组元素为对应语言的翻译对象,必须包含languageId字段指定目标语言,再传入对应要翻译的字段即可,正确写法示例:
// 替换你原来的translations对象赋值部分即可 newProduct.translations = [ { languageId: '2fbb5fe2e29a4d70aa5854ce7ce3e20b', name: 'Das TestProdukt ' + randomProductHash, description: 'deutscher Beschreibungstext' }, { languageId: '2d7d7d698f634a04b5796e49aa846ae6', name: 'The testProduct ' + randomProductHash, description: 'english description content' } ];
补充说明
- 无需手动修改
context.systemLanguageId,只要每个翻译项的languageId配置正确,保存时会自动关联对应语言的翻译值。 - 直接赋值给产品实例的基础字段(比如
newProduct.name)会默认作为当前上下文语言的翻译值,优先级低于translations中对应语言的配置内容。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

