SuperAPI AI 工具集

spree-i18n

通用与其它

查看项目

更新于 10-16 01:24

技能介绍

用途:为 Spree 6 商店添加语言、翻译商品/分类/集合等内容、修复缺失翻译并构建多语言店面。

三层翻译面:商家内容用 Mobility 翻译表(spree_<model>_translations,可在后台或 Admin API 编辑);后端字符串用 Rails I18n 与 Spree.t,位于 config/locales/<locale>.yml,可安装社区 spree_i18n gem;后台 React 界面用 i18next JSON 包,@spree/dashboard 自带 ar de en es fr pl zh-CN。商店可用语言由 Markets 的 default_locale 与 supported_locales 决定。

语言解析:Store API 按 X-Spree-Country 解析市场,locale 依次取 X-Spree-Locale 头、?locale= 参数(须在 supported_locales_list 内)、Spree::Current.locale,不支持的值静默回退;Mobility 回退到商店默认语言。客户端可 createClient({ locale: 'fr' })、client.setLocale('de') 或按请求覆盖。

数据翻译:可翻译模型声明 TRANSLATABLE_FIELDS 并 include Spree::TranslatableResource,注册表为 Spree.translatable_resources。读取时默认语言走基础列,其他语言走翻译表并回退。可用 product.upsert_translations('es' => {...}) 写入,空串表示空值、nil 删除该单元格;不在支持语言内会抛 ActiveRecord::RecordInvalid。slug/permalink 按语言唯一,旧 slug 不自动重定向。

Admin API:GET /api/v3/admin/translatable_resources、GET /api/v3/admin/locales、GET /api/v3/admin/products/:id/translations、POST /api/v3/admin/translations/batch(原子写入)、GET /api/v3/admin/translations?resource_type=product 查看覆盖率。批量写入需对应 write_<resource> 权限,翻译不能通过 PATCH /products/:id 写入。

自定义模型:include Spree::TranslatableResource、定义常量、建翻译表并在初始化器中注册;给核心模型加字段需在 decorator 中重设冻结常量。

限制与注意:缓存 Vary 头不含 x-spree-country,自行缓存需按 locale、currency、channel、country 建键;控制台/任务中需先设置 Spree::Current.store、content_locale 与回退;RTL 语言代码为 ar he fa ur yi,店面需自行设置 dir="rtl"。更多细节见 @spree/docs 的 translations、slugs、markets 文档。