集成阅读约 9 分钟

测试 Shopify 加拿大本地化

用一份配置快照和成对访问来测试 Shopify 加拿大本地化,把 IP、入口 URL、语言、已保存的选择和收货地址各自的影响区分开来。

本页内容

先从你的 Shopify 在线商店的配置入手,然后比较来自加拿大和非加拿大的首次访问,两次都访问同一个中性 URL。保持语言、浏览器状态和商品不变。明确的加拿大 URL 回答的是另一个问题,所以要单独测试。

可下载的工作表提供六组比较对和十二条空白的访问记录。选择与你的问题相关的比较对即可,不必六组全做。本地检查脚本能发现缺失的声明和指定的对照错误。这些文件没有测量任何 Shopify 或代理的行为。

下载 JSON 工作表、Python 检查脚本和 README。如果想用电子表格查看,请把配置 CSV和访问 CSV放在一起。检查脚本读取的是 JSON;编辑 CSV 不会更新它。

访问之前先记录配置

保存一份 JSON 副本,并根据你所管理的商店填写 configuration。为这份快照指定一个 ID、UTC 时间戳和一个私有的证据引用。记录:

  • 启用的市场和货币;各市场的 URL 使用共享域名、专用域名还是混合域名。
  • 实际的国家和语言重定向设置、各市场已发布的语言、选择器以及已保存选择的行为。
  • 配送规则和任何第三方路由,或填 none。
  • 测试用的商品或购物车、浏览器版本、视口、时区和一个较短的测试时间窗口。

使用未登录的浏览器,并拒绝位置权限。账户或已授权的坐标会给这套流程引入额外的输入。在一组比较期间保持配置和库存稳定;它们发生变化时,重新记录一份快照。

以你的商店中实际存在的配送设置为准。Shopify 正在逐步把配送配置文件和运费迁移为按市场划分的配送选项。它的州/省级子区域市场目前处于抢先体验阶段,可独立定制的内容仅限配送选项。这两项功能都不是使用本工作表的前提。配送设置,市场类型。

对每一组相关的比较对,把 applicable 设为 true,写下 expected_rule 及其证据,并在执行之前为两次访问各写一个 expected_outcome。未使用的比较对保留为 applicable: false,并填写 inapplicable_reason。如果配置的规则把两个输入映射到同一种体验,结果保持不变也可能是正确的。

先做同一 URL 的 IP 比较

把 neutral_entry_url 设为约定的首次访问入口,用来测试位置选择。不要用预先选定的加拿大域名或路径来代替。如果你的设置没有合适的公共入口,就把这一组标记为不适用,并说明原因。

根据你获得授权的 IP 观测结果填写 exits.CA 和 exits.control。对照出口必须位于加拿大境外。记录检查服务或目标、UTC 时间戳、观测到的国家,以及一个 egress_id:用于标识所观测出口地址的私有引用或摘要。独立 IP 检查工具给出的国家结果并不能确定 Shopify 自己的位置判断;Shopify 提醒说,IP 地理定位可能不准确。本地化注意事项。

访问入口出口语言浏览器状态收货地址
ip-A同一个中性 URL观测为 CAen-CA全新,未登录未填写
ip-B同一个中性 URL观测为非 CA 的对照出口en-CA另一个全新上下文,未登录未填写

每次访问都打开一个新的隔离上下文,不复用存储状态、购物车或旧的配置文件。在填写地址之前记录首次落地的页面,然后关闭上下文。Shopify 的文档把自动重定向描述为首个页面的行为,因此在已有会话中四处浏览属于另一种比较。首个页面的重定向。

分别记录最终 URL、所选国家、市场、语言和货币。共享域名的市场可以在不改变 URL 的情况下改变显示的内容;专用的市场域名则可能重定向 URL。因此,仅凭 URL 变化不适合作为通用的通过条件。取决于域名的重定向。

作为市场证据,请截取相关选择器的状态和配置映射,或一份获得授权的店面诊断结果。国家和市场不一定一一对应:一个市场可以包含多个国家。仅凭 CAD 或 HTTP 200 并不能确定选中了哪个市场。Shopify 的 Liquid localization 对象会给出所选国家、语言以及适用的国家/地区市场;下载文件中不包含经过测试的 Liquid 检测代码。国家和地区市场的范围。

加入与症状对应的比较

保持快照、商品或购物车以及浏览器设置不变。每次全新访问都使用自己的上下文;已保存选择的比较则有意只保留事先准备好的选择。

比较对两次访问之间的变化保持不变有助于诊断什么
url中性入口 → 已配置的加拿大入口CA 出口、en-CA、全新上下文入口 URL 与已配置重定向之间的相互作用。
language浏览器语言偏好 en-CA → fr-CA加拿大入口、CA 出口、全新上下文已配置的法语体验是否出现。
saved全新上下文 → 有意保留的手动选择加拿大入口、CA 出口、fr-CA回访时是否沿用记录下来的选择器选择。
province经批准的安大略省收货地址 → 魁北克省收货地址加拿大入口、CA 出口、en-CA、等同的全新购物车这两个目的地的配送结果。
cross_border经批准的非 CA 收货地址 → 安大略省收货地址对照市场入口、非 CA 出口、en-CA、等同的全新购物车目的地改变之后结账环节的变化。

如果在共享域名上中性入口和加拿大入口完全相同,url 这组对比就不适用。ip 这组仍然可以检查该共享入口上的内容。对于不同的 URL,请观察你的设置中实际发生的相互作用,而不要假定 URL 与 IP 之间存在通用的优先顺序。

对于语言这一组,请核实浏览器实际的语言偏好。法语重定向要求语言重定向已启用,并且法语已添加、已分配给相关市场、已翻译并已发布。Shopify 举例说明了一个已配置的 .ca 店面重定向到 .ca/fr;这只是文档中的示例,而不是要强加给每家商店的 URL 模式。语言要求。

对于 saved-B,从干净的状态开始,用商店的选择器手动选择目标国家和英语,然后在同一个上下文中再次访问。记录确切的步骤。导入不相关的旧配置文件会带来未知的状态。Shopify 的文档说明,手动选择会在之后的访问中保留。已保存的选择器偏好。

对于地址相关的比较对,请引用私下保存、经过批准的完整测试地址。两次访问之间重置购物车和结账流程,并停在你获得授权的观测点,不要下单。安大略省对比魁北克省比较的是两个目的地;它并不能把省份与邮编、街道或半径规则区分开。对于本地配送,还要保持库存、履约和结账条件不变。本地配送的适用条件。

填写地址之后,再检查一次结账体验。Shopify 的文档说明,最终体验由收货目的地决定,并举了一位美国访客填写加拿大地址的例子。因此,首次落地成功并不代表跨境比较已经完成。结账本地化。

解读哪些变了,哪些没变

把实际输入和观测结果写入每次访问,然后把 observation.status 设为 observed。保留最终 URL、所选国家、市场证据、语言、货币、UTC 时间和证据引用。地址比较还要包含配送选项,如果没有则记录 none。

对照你在访问之前写下的预期,使用 match、mismatch 或 inconclusive。如果 selected_country、market、market_evidence、language 或 currency 中有一项无法获得,请记录 unavailable,选择 inconclusive 并说明缺口。final_url 仍然要求填写观测到的 HTTP(S) URL;没有它,记录就不完整。失败和无定论的记录也要保留。

虚构的解读示例:假设一份记录下来的共享域名配置把加拿大访客分配到加拿大市场,把美国访客分配到美国市场。两次访问最终停在同一个 URL。获得授权的市场证据表明 ip-A 是加拿大,ip-B 是美国。即使没有发生重定向,这也与所声明的规则相符。如果唯一的证据是一个 CAD 价格,那么市场选择仍然无法下结论。这个示例不包含任何商家的实际观测结果。

如果两个输入本应选中同一个市场,那么相同的输出可以算作相符。如果所声明的规则预测是不同的市场,而两次观测却指向同一个市场,请保留这一不符记录,并检查设置、实际入口、全新状态以及 Shopify 的位置判断。URL 不同再加上语言不同,无法单独分离出出口的影响。

把 actual_inputs 与计划进行比较。如果出口发生了轮换、商品变了或复用了旧会话,请恢复对照条件并重做这一组。保留原始记录。如果之后的某一组使用了不同的观测出口 ID,请使用一条新的工作表记录;先前的 IP 证据并不适用于新的地址。

在本地检查记录

把检查脚本放在 JSON 旁边。Python 3.10 或更高版本只用到标准库:

sh
python3 validate_shopify_canada.py shopify-canada-worksheet.json

空白的下载文件返回 INCOMPLETE_RECORD,退出码为 2。填写完成的计划可以返回 PLAN_COMPLETE,退出码为 0:通过本地检查的只是它的声明和成对输入。这并不代表 Shopify 测试通过。

填入观测结果之后:

sh
python3 validate_shopify_canada.py shopify-canada-worksheet.json --observations

RECORD_COMPLETE 表示所声明的观测字段和对照条件通过了检查脚本。其中可以包含 mismatch 和 inconclusive 结果;它并不验证商店运行正常,也不验证观测结果属实。

编辑 JSON 之后导出访问视图:

sh
python3 validate_shopify_canada.py shopify-canada-worksheet.json --export-csv shopify-canada-visits.csv

把配置与导出的文件放在一起保存。检查脚本报告记录不完整时,请阅读返回的 errors;不要为了让命令成功而用预期值去填补缺失的观测结果。

方法与范围

该工作表依据文中链接的 Shopify 文档整理而成,文档核对于 2026 年 9 月 26 日(UTC)。它的检查脚本在 Python 3.14.7、macOS 15.7.4 arm64 上通过了使用虚构记录的 28 项离线测试中的全部 28 项。这些测试包括缺少市场证据、出口发生变化、IP 与语言输入混在一起、已登录状态、已授予位置权限,以及在首次访问的 IP 比较对中填写了地址。Python 3.10 的语法经过检查;实际运行使用的是 3.14.7。

这些结果只说明经过测试的记录检查。没有测试任何 Shopify 商店、浏览器、代理、结账流程或地址的适用性。该流程面向已配置的 Shopify 在线商店;无头店面、B2B 和自定义路由需要各自的规则。检查脚本无法确定 IP 定位的准确性、应用的隐藏行为、税费是否正确或实际的配送适用性。

如果对网络出口有要求,请使用加拿大代理选择页面。本指南和下载文件无需注册即可获取。ipvolt 尚未确认是否提供加拿大代理。获取早期访问。开放访问时发一封邮件。仅此而已。

参考来源与延伸阅读

本指南参考的技术资料。请以你所安装版本的文档以及代理服务商支持的配置为准。