@inContext 传国家和语言怎么写才生效
现象#
写成 query($country: CountryCode) @inContext(country: $country),GraphQL 直接报枚举相关错误;把变量去掉后价格仍是店铺本位币,localization.country 也没变。
原因#
- @inContext 的参数必须是字面量枚举,不能用查询变量传入
- 国家与语言使用 CountryCode、LanguageCode 枚举,必须大写,小写 de 不是合法值
- 指令要挂在 operation 上,挂在 product 字段上不会改变整段查询的上下文
- 目标国家未在 Markets 启用,或语言未发布,上下文会静默回落到主市场
处理步骤#
- 把指令写在 operation 上:
query @inContext(country: DE, language: DE) { ... } - 需要用变量切换时,在服务端按国家生成两份查询文本,不要拼接用户输入
- 在 Markets 里确认 DE 市场已激活,且德语已发布到该市场
- 用
localization { country { isoCode } availableCountries { isoCode } }验证上下文 - 对比同商品的
price.currencyCode是否从 USD 变成 EUR
验收标准#
响应里 price.currencyCode 为 EUR,localization.country.isoCode 为 DE,商品标题为德语译文。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。