多语言 (i18n)
InnoShop 内置多语言支持,涵盖系统、插件、主题三个层级。
支持的语言
| 语言 | 代码 |
|---|---|
| 阿拉伯语 | ar |
| 德语 | de |
| 英语 | en |
| 西班牙语 | es |
| 法语 | fr |
| 印尼语 | id |
| 意大利语 | it |
| 日语 | ja |
| 韩语 | ko |
| 葡萄牙语 | pt |
| 俄语 | ru |
| 泰语 | th |
| 土耳其语 | tr |
| 越南语 | vi |
| 简体中文 | zh-cn |
| 繁体中文(香港) | zh-hk |
Locale 格式
config.json 和 Lang/ 目录中的语言代码使用短横线格式(如 zh-cn),不是下划线格式。
# 正确
"name": { "zh-cn": "支付宝", "en": "Alipay" }
Lang/zh-cn/common.php
# 错误
"name": { "zh_cn": "支付宝" }
Lang/zh_cn/common.php系统语言包
lang/
├── en/
│ ├── common.php # 系统通用翻译
│ ├── front.php # 前台翻译
│ └── panel.php # 后台翻译
└── zh-cn/
├── common.php
├── front.php
└── panel.php调用方式:
php
trans('common/button_submit'); // 系统通用
trans('panel/menu_dashboard'); // 后台
trans('front/cart_empty'); // 前台插件语言包
plugins/YourPlugin/Lang/
├── en/
│ ├── common.php
│ └── panel.php
└── zh-cn/
├── common.php
└── panel.php调用方式:
php
trans('PluginName::common/title'); // 插件翻译
trans('PluginName::panel/menu_title'); // 插件后台翻译主题语言包
themes/your-theme/Lang/
├── en/
│ ├── common.php
│ └── front.php
└── zh-cn/
├── common.php
└── front.php调用方式:
php
theme_trans('common.theme_name'); // 主题翻译
theme_trans('front.nav_home'); // 主题前台翻译视图中混合使用
blade
{{ trans('common/button_submit') }} {{-- 系统语言包 --}}
{{ trans('PluginName::common/title') }} {{-- 插件语言包 --}}
{{ theme_trans('front/nav_home') }} {{-- 主题语言包 --}}最佳实践
- 使用一维数组结构,便于自动化翻译
- 语言键名用下划线连接:
field_title、button_submit - 按功能加前缀:
menu_、button_、field_、message_ - 系统语言包用斜杠(
common/button_submit),插件语言包用双冒号(PluginName::common/title) - 优先复用系统已有的翻译条目
- 配置字段用
label_key引用语言文件,而非硬编码label