Shopify Storefront API

@inContext 传国家和语言怎么写才生效

现象#

写成 query($country: CountryCode) @inContext(country: $country),GraphQL 直接报枚举相关错误;把变量去掉后价格仍是店铺本位币,localization.country 也没变。

原因#

  • @inContext 的参数必须是字面量枚举,不能用查询变量传入
  • 国家与语言使用 CountryCode、LanguageCode 枚举,必须大写,小写 de 不是合法值
  • 指令要挂在 operation 上,挂在 product 字段上不会改变整段查询的上下文
  • 目标国家未在 Markets 启用,或语言未发布,上下文会静默回落到主市场

处理步骤#

  1. 把指令写在 operation 上:query @inContext(country: DE, language: DE) { ... }
  2. 需要用变量切换时,在服务端按国家生成两份查询文本,不要拼接用户输入
  3. 在 Markets 里确认 DE 市场已激活,且德语已发布到该市场
  4. 用 localization { country { isoCode } availableCountries { isoCode } } 验证上下文
  5. 对比同商品的 price.currencyCode 是否从 USD 变成 EUR

验收标准#

响应里 price.currencyCode 为 EUR,localization.country.isoCode 为 DE,商品标题为德语译文。

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