店铺本地化文件

店铺本地化文件是以 .json 文件扩展名保存的 JSON 文件。它们存储在主题中展示在店铺上的翻译字符串。这些翻译可以通过 SHOPLINE 语言编辑器被商家访问。

与硬编码的文本字符串不同,主题的 layout、templates、snippets 和 sections 可以使用 Handlebars 翻译 helper(t helper)引用这些翻译。这样可以从 locale 文件中返回当前选择的语言的翻译字符串。

使用 t helper 的时候,你可以使用插入动态值翻译。


位置

店铺本地化文件位于主题的 locales 目录中:

└── theme
...
├── config
└── locales
├── en.json
...

配置定义

店铺本地化文件需要遵循特定的命名结构,同时也遵循基本的组织结构:

  • 类别:翻译的顶级类别。
  • :类别内的第二级翻译分组。
  • 描述:第三级,代表单个的翻译。
{
"products": {
"product_list": {
"load_more_tip": "custom text",
...
},
...
},
...
}
提示

命名翻译描述时,尽量提供足够的描述以便给翻译提供上下文。例如:order.order_details.insuranceService_content_emailorder.order_details.email 提供了更多的上下文。

文件命名

本地化文件的命名必须遵循标准的 IETF 语言标记命名法,其中第一个小写字母代码代表语言,后面以 .json结尾。例如:

语言名称格式
Englishen.json
Indonesianid.json
Thaith.json

比较例外的是中文-简体、中文-繁体,它们分别是:

语言名称格式
中文-简体zh-hans-cn.json
中文-繁体zh-hant-tw.json

内容

为了确保翻译正确映射,并尽可能简化商家的操作过程,你应该组织你的字段结构以翻译主题结构。

例如,结构的前两级可能如下所示:

第一级第二级
general404、面包屑、搜索(结果页和空态页)、分页
blogs文章、文章评论、博客侧边栏
cart购物车内容、更新、注释、结帐链接
collection分类、分类相关
products产品、产品相关
layout一般字段标题和标识符
customer帐户、订单(列表和详细信息)、帐户激活、地址、登录名、密码、注册
contact联系表单、表单错误
home_page空态页、精选、帮助
gift_cards标题、使用条款
笔记

如果你在代码片段中使用翻译,那么你应该将它们与最相关的类别分组。例如,如果你有一个名为 related-products.html 的代码片段,那么任何相关的翻译都应该包含在 products 组中。


用法

在处理店铺本地化文件时,请注意以下事项:

引用店铺翻译

要引用主题中当前选择的语言所对应的店铺语言文件中的翻译,可以使用翻译字段和 Handlebars 翻译 helper(t helper)。

例如,假设你有英语、法语和西班牙语的多语言文件。在这种情况下,每个相关语言文件中可能包含以下内容:

/locales/en.default.json (English)

{
"products": {
"product_list": {
"load_more_tip": "Loading more items"
}
}
}

/locales/id.json (Indonesian)

{
"products": {
"product_list": {
"load_more_tip": "Muat lebih banyak proyek"
}
}
}

/locales/th.json (Thai)

{
"products": {
"product_list": {
"load_more_tip": "โหลดรายการเพิ่มเติม"
}
}
}

要引用此翻译,你可以使用如下代码:

<span>{{ t 'products.product_list.load_more_tip' }}</span>
提示

在 Handlebars 中引用翻译字段时,必须将它们用单引号(')或双引号(")包裹起来。

输出内容是根据每个多语言文件中的配置定义的:

// English
<span>Your email</span>
// Indonesian
<span>Muat lebih banyak proyek</span>
// Thai
<span>โหลดรายการเพิ่มเติม</span>

插入动态值

翻译字符串可以进行插值操作,这意味着你可以在字符串中包含变量,字符串在 Handlebars 中引用时动态填充。

例如,你可以在你的多语言文件中包含以下内容:

/locales/en.json

{
"blog": {
"comment": {
"single_count": "{{count}} comments"
}
}
}

当你在主题中引用该翻译时,可以为 count 变量指定一个值:

/layout/theme.html

<h2>
{{#if article.comments_count == 5}}
{{t "blog.comment.single_count" count=article.comments_count}}
{{/if}}
</h2>

count 分配值为 5,此代码输出为:

<h2>5 comments</h2>
这篇文章对你有帮助吗?

Error loading component.

Error loading component.