先确定语言策略,再选择 locale 值
一位商户反映,Checkout 界面已经是法语,商品名称和描述却仍是英语;另一位开发者询问,使用内联价格数据时应该在哪里设置 locale。这是两个不同的问题:选择 Stripe 界面语言,以及提供商户自己的文案。[6][7]
对于 Stripe 托管式 Checkout,如果预期体验是跟随浏览器语言,可以使用 auto。如果顾客明确选择了店铺语言,而且你能提供相匹配的商品和自定义文案,则建议使用受支持的明确 locale。这是实施建议,不代表所有商店都应采用同一策略。
auto 和明确 locale 分别控制什么
创建 Session 的 API 文档说明,locale 留空或设为 auto 时使用浏览器的语言区域设置。托管页面指南进一步限定:只有 Stripe 支持该语言时才显示对应翻译,并说明创建 Session 时传入 locale 可以覆盖浏览器设置。[1][4]
将参数放在创建 Checkout Session 请求的顶层,与 mode、line_items 同级,而不是放在 price_data 中。以下只是请求片段,不是完整集成,也没有执行过。[1]
mode=paymentlocale=fr- 根据已验证的订单,在服务端选择
line_items。
若希望跟随浏览器,将 fr 换成 auto。店铺显示法语并不等于创建 Session 时已经传入法语参数;如果策略要求保持店铺语言,应明确传入解析结果。不要将这里的托管 Session 指南当作修改现有 Elements 实例语言的方法。
把店铺语言映射为 API 支持的值
文档列出的枚举值包括 en、en-GB、fr、fr-CA、es-419、pt-BR、zh、zh-HK 和 zh-TW 等。这只是部分示例,不是完整清单;建立白名单前应核对当前 API 参考。[1]
建议的解析流程是:读取顾客明确选择的语言,通过服务端管理的配置进行映射,检查目标代码是否受支持,再选择经过审核的文案包。例如,店铺使用 en-US 时,应用可以明确映射为 en;这是你自己的映射策略,不是 Stripe 接受任意语言标签的承诺。
如果店铺语言不受支持,应选择并向顾客说明你实际支持的回退语言,或明确选择 auto。不要擅自假定 Stripe 必然回退为某种语言,也不要假定浏览器语言列表的精确协商顺序;本次阅读的来源没有说明这些细节。不要把未经检查的浏览器输入直接当成 API 白名单值。
把界面翻译与商户文案分开管理
Stripe 明确说明不会翻译自定义字段标签,并建议通过 Session locale 让界面语言与标签保持一致。商品数据 API 则单独接收面向顾客的名称和描述字符串。[4][5] 社区问题说明,界面已经本地化,并不证明商品目录也已本地化。[6]
建议这样划分责任:Checkout 处理其自身界面,商户维护并审核商品名称、商品描述、自定义字段标签及附加消息的翻译。不要把 locale 当成商品目录翻译流程。引用的商品结构描述的是传入的字符串,而不是按语言组织的翻译字典。[5]
如果使用已保存的 Price,应检查关联商品的文案,不要假定增加 locale 就会改写它。如果现有集成本来就创建内联商品,可以从文案包中选择翻译后的 product_data.name,并在适用时提供 product_data.description。[5] 建议不要为每位顾客临时修改同一个共享商品名称;应设计清楚目录结构,并保留内部 SKU 与订单的映射。这是设计建议,不是要求仅为翻译就替换现有的价格模型。
附加消息属于商户编写的内容。Stripe 文档说明可以通过 custom_text 提供这些消息,并禁止与 Stripe 生成文本冲突或使其产生歧义的内容。[4] 审核翻译时既要看语言,也要看含义,尤其是配送和同意条款。本指南不讨论如何采集或处理自定义字段答案。
不要把金额格式误认为币种选择
Checkout 也会根据 locale 设置数字和货币显示格式。Stripe 的示例保持 EUR 价格不变:在 auto 模式下,英语浏览器显示 €25.00,德语浏览器显示 25,00 €。[4]
因此,应分别验收显示语言、金额格式和预期扣款币种。金额看起来采用德语格式,不证明集成改变了币种;语言代码也不证明商户所在国家符合开户条件。货币转换、支付方式可用性和结算不在本文范围内。
上线前建议执行的测试矩阵
以下都是拟议测试,尚未执行,也不是观察到的 Stripe 结果。建议创建新的测试 Session,记录浏览器语言配置和请求中的 locale,并分别检查托管界面与商户文案。
- auto/法语浏览器/法语文案包:检查文档描述的跟随浏览器行为,并确认传入的商品及自定义文案为法语。
- auto/英语浏览器/法语文案包:检查这个故意制造的不一致场景。决定是否允许混合语言,不要期待自定义标签自动翻译。
- 明确 fr/英语浏览器/法语文案包:检查界面是否采用明确设置的语言,以及商户文案是否一致。
- 店铺 en-US/映射为 en:确认解析器发送的是受支持的映射值,而不是未经检查地转发店铺语言标签。
- 不受支持的店铺语言:检查应用自己的回退分支、面向顾客的说明及对应文案包。另行观察浏览器语言不受支持的行为,但不要预先宣称 Stripe 的回退结果。
- 相同 EUR 商品/en 与 de:检查分隔符与货币符号位置,同时核对请求中的预期金额和币种。
- 缺少翻译/创建前切换语言:检查配置的回退是否清楚可见,以及新建 Session 是否使用一致的语言决策。还应在窄屏上检查较长的名称和消息。
为便于复现,建议保留 Session ID、请求的 locale、文案包版本以及脱敏截图。不要记录密钥或支付详情。这些都是建议的质量检查措施。
范围、证据与日期
本文针对 Stripe 托管式 Checkout 开展文档研究,核验日期为 2026 年 9 月 23 日。没有使用已登录账户,没有发起支付,也没有执行浏览器语言实验。社区帖子证明存在具体的历史问题,不代表搜索量或当前 API 行为。获取的官方页面没有注明发布日期或更新日期。支持某种语言不等于在某个国家可以开户或使用某种支付方式;本文不承诺全球可用。
来源与日期
- [1] 创建 Checkout Session:语言参数 — 未注明发布日期;未注明更新日期;获取于 2026 年 9 月 23 日。
- [4] 通过自定义组件扩展结账:完全托管页面 — 未注明发布日期;未注明更新日期;获取于 2026 年 9 月 23 日。
- [5] 创建 Checkout Session:内联商品数据 — 未注明发布日期;未注明更新日期;获取于 2026 年 9 月 23 日。
- [6] Stripe 商品描述如何支持两种语言 — 发布于 2023-06-25;未注明更新日期;获取于 2026 年 9 月 23 日。
- [7] 使用自定义价格和 PHP API 时如何设置 Stripe locale — 发布于 2023-08-21;未注明更新日期;获取于 2026 年 9 月 23 日。