Shopify Storefront API

加了 @inContext(language) 商品标题还是原文

现象#

查询已经写了 @inContext(country: DE, language: DE),价格变成 EUR 了,product.title 却仍是英文,descriptionHtml 也没有变化。

原因#

  • 语言只在 Settings → Languages 发布,但没有为该市场启用,指令会自动回落到默认语言
  • 翻译应用只写了 metafield,没有写入 Shopify 的 translation 资源,Storefront 读不到
  • handle 不参与翻译,按 handle 查商品不会让 title 跟着变语言
  • 查询结果被 CDN 或框架缓存,缓存 key 里没有 language,一直命中英文版本

处理步骤#

  1. 用 localization { availableLanguages { isoCode } } 确认 DE 在可用语言列表里
  2. 到后台 Markets 给德国市场勾选德语,保存后等一分钟再查
  3. 用 translatableResource(resourceId:) { translations(locale: "de") { key value } } 确认 title 有译文
  4. 在框架缓存 key 里加入 language 与国家,或对该查询使用 CacheNone()
  5. 换一个确实已翻译的商品复测,排除单个商品漏翻

验收标准#

同一 product(id:) 在 language: DE 下 title 为德语,去掉指令后回到英文,两种结果可并存。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。