UNPKG

super-project

Version:
133 lines (102 loc) 2.87 kB
# 多语言 (i18n) ## 配置方式 在执行构建方法时,传入 `i18n` 对象。例: ```javascript // [构建文件] ./super.build.js const superBuild = require('super-project/core/webpack/enter') /* * 其他代码 */ superBuild({ /* * 其他配置对象 */ i18n: [ ['zh-cn', './locales/zh-cn.json'], ['zh', './locales/zh.json'], ['en', './locales/en.json'] ] }) ``` ## 配置说明 `i18n` 对象有2种配置方法 ### 简易配置 ```javascript const i18n = [ ['zh-cn', './locales/zh-cn.json'], ['zh', './locales/zh.json'], ['en', './locales/en.json'], // [语言ID, 语言包JSON文件的相对路径] ] ``` ### 高级配置 ```javascript const i18n = { // i18n模式,可选 // 当前可用值:'default' || 'redux' // [默认值] prod环境:default | dev环境:redux type: 'default', // i18n方法名,可选 // [默认值] __ expr: '__', // cookie 中使用键值 // [默认值] spLocaleId cookieKey: 'spLocaleId', // cookie 影响的域 // [默认值] 无 domain: '.domain.com', // 语言包,必填 // 参照简易模式配置 locales: [ ['zh-cn', './locales/zh-cn.json'], ['zh', './locales/zh.json'], ['en', './locales/en.json'], // [语言ID, 语言包JSON文件的相对路径] ] } ``` ## 使用 在项目种,使用 `__(key[, key2, key3, ...[, { option1: value1 }])` 方法即可输出/渲染对应的多语言文本。方法名(默认为 `__`)可使用高级方式进行配置。 ### 示例 ```javascript __('About') __('timestamp_now', { time: Date.now() }) __('header.nav.home') __('header.nav', 'home') __('header', 'nav.home') __('header', 'nav', 'home') __('header', 'nav', 'home', { key: 'value' }) __('header', 'nav', currentKey) __('header', 'nav', currentKey, { key: 'value' }) __('header', key1, key2) ``` ### 选项 如果最后一个参数为 `Object` 则表示选项。语言包字符串种的 `${key}` 会使用对象内对应的元素进行替换,例: ```javascript // 语言包 { "timestamp_now": "当前时间戳: ${time}" } // 使用 __('timestamp_now', { time: Date.now() }) ``` ### 多级 语言包JSON支持无限多级。在使用时,每一级之间可用 `.` 连接,或在 `__()` 方法中连续写入每一级的 key 值,例: ```javascript // 语言包 { "header": { "nav": { "home": "Home", "About": "About Me" } } } // 使用 __('header.nav.home') __('header.nav', 'home') __('header', 'nav', 'home') __('header', 'nav.home') // 以上方法结果相同:Home ``` **注**:在 `default` 模式下使用多级模式时,`__()` 方法的第一个变量中尽量多的使用 `.` 连接,以得到最佳效果。如上例中推荐前2个使用方式。