加了 @inContext(language) 商品标题还是原文
现象#
查询已经写了 @inContext(country: DE, language: DE),价格变成 EUR 了,product.title 却仍是英文,descriptionHtml 也没有变化。
原因#
- 语言只在 Settings → Languages 发布,但没有为该市场启用,指令会自动回落到默认语言
- 翻译应用只写了 metafield,没有写入 Shopify 的 translation 资源,Storefront 读不到
- handle 不参与翻译,按 handle 查商品不会让 title 跟着变语言
- 查询结果被 CDN 或框架缓存,缓存 key 里没有 language,一直命中英文版本
处理步骤#
- 用
localization { availableLanguages { isoCode } }确认 DE 在可用语言列表里 - 到后台 Markets 给德国市场勾选德语,保存后等一分钟再查
- 用
translatableResource(resourceId:) { translations(locale: "de") { key value } }确认 title 有译文 - 在框架缓存 key 里加入 language 与国家,或对该查询使用
CacheNone() - 换一个确实已翻译的商品复测,排除单个商品漏翻
验收标准#
同一 product(id:) 在 language: DE 下 title 为德语,去掉指令后回到英文,两种结果可并存。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。