Skip to content

多语言 (i18n)

InnoShop 内置多语言支持,涵盖系统、插件、主题三个层级。

支持的语言

语言代码
阿拉伯语ar
德语de
英语en
西班牙语es
法语fr
印尼语id
意大利语it
日语ja
韩语ko
葡萄牙语pt
俄语ru
泰语th
土耳其语tr
越南语vi
简体中文zh-cn
繁体中文(香港)zh-hk

Locale 格式

config.jsonLang/ 目录中的语言代码使用短横线格式(如 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') }}           {{-- 主题语言包 --}}

最佳实践

  1. 使用一维数组结构,便于自动化翻译
  2. 语言键名用下划线连接:field_titlebutton_submit
  3. 按功能加前缀:menu_button_field_message_
  4. 系统语言包用斜杠(common/button_submit),插件语言包用双冒号(PluginName::common/title
  5. 优先复用系统已有的翻译条目
  6. 配置字段用 label_key 引用语言文件,而非硬编码 label

帆连科技 · 基于 OSL 3.0 许可发布