国际化配置
前置说明
国际化语言插件,采用的是原版VueI18n实现,具体见其官网,但我打了hack来兼容适配蒸汽版本的JS逻辑引擎。 具体位置在 tmx-ui/libs/vue-i18n.js。后续你如果要升级可以下载原版本直接替换。
安装语言包
ts
import App from './App'
import Xui from "@/uni_modules/tmx-ui"
//多语言配置类型
import {Tmui4xOptions} from "@/uni_modules/tmx-ui"
//下方是组件内部的语言包
import en from "@/uni_modules/tmx-ui/localLanuage/en.json"
import zhHans from "@/uni_modules/tmx-ui/localLanuage/zh-Hans.json"
import zhHant from "@/uni_modules/tmx-ui/localLanuage/zh-Hant.json"
import ko from "@/uni_modules/tmx-ui/localLanuage/ko.json"
import ja from "@/uni_modules/tmx-ui/localLanuage/ja.json"
//如果你有自己的语言包,你也可以像上面那样导入语言,然后与组件的语言合并。或者你自己新增个语言进去。
// 下方是组件的语言包,以及你自己定义的语言包与组件合并即可。共用一个实例。
const messages : UTSJSONObject = {
"en":{
...en,
"hellow":"Hi~"
},
"zh-Hans":{
...zhHans,
"hellow":"哈喽"
},
"zh-Hant":zhHant,
"ko":ko,
"ja":ja
}
import { createSSRApp } from 'vue'
export function createApp() {
const app = createSSRApp(App)
// 配置语言包
app.use(xui,{i18nOptions:{locale:"zh-Hans",messages},config:null} as Tmui4xOptions)
return {
app
}
}在任意Uts中使用
uts
import { xConfig } from "@/uni_modules/tmx-ui"
// i18n 实例(带类型)
const i18n = xConfig.i18n!
console.log(i18n.t('xx.x'))在Uvue内使用
1.组合式模板内
ts
import { xConfig } from "@/uni_modules/tmx-ui"
// i18n 实例(带类型)
const i18n = xConfig.i18n!
console.log(i18n.t('xx.x'))uts内导入后可以在模板内使用
vue
<x-text>{{i18n.t('xx.x')}}</x-text>i18n实例方法
如果想要看每一个方法的示例,见插件目录内的readme.md文档,有详细的测试案例。
ts
export type I18nGlobal = {
/** 翻译文本。`t(key)` / `t(key, named)` / `t(key, list)` / `t(key, plural)` 多重载 */
t: (key: string, ...args: any[]) => string;
/** 解析已编译消息(rt: resolve translation),通常配合 tm() 使用 */
rt?: (message: any, ...args: any[]) => string;
/** 日期/时间格式化。`d(value)` / `d(value, key)` / `d(value, key, locale)` / `d(value, options)` */
d?: (value: any, ...args: any[]) => string;
/** 数字格式化。`n(value)` / `n(value, key)` / `n(value, key, locale)` / `n(value, options)` */
n?: (value: any, ...args: any[]) => string;
/** 判断 key 是否存在 */
te?: (key: string, locale?: string) => boolean;
/** 取整段消息子树(返回对象/数组结构) */
tm?: (key: string) => any;
/** 当前语言(Ref<string>,可读写) */
locale?: any;
/** 回退语言(Ref<string | string[] | ...>) */
fallbackLocale?: any;
/** 当前已注册的所有语言代码(只读) */
availableLocales?: string[];
/** 全部 messages(只读,结构与 createI18n 的 messages 一致) */
messages?: any;
/** 全部日期时间格式配置(只读) */
datetimeFormats?: any;
/** 全部数字格式配置(只读) */
numberFormats?: any;
/** 取指定语言的 messages */
getLocaleMessage?: (locale: string) => any;
/** 整包覆盖指定语言的 messages */
setLocaleMessage?: (locale: string, message: any) => void;
/** 深度合并指定语言的 messages(不会清空原有 key) */
mergeLocaleMessage?: (locale: string, message: any) => void;
/** 取指定语言的日期时间格式 */
getDateTimeFormat?: (locale: string) => any;
/** 整包覆盖指定语言的日期时间格式 */
setDateTimeFormat?: (locale: string, format: any) => void;
/** 深度合并指定语言的日期时间格式 */
mergeDateTimeFormat?: (locale: string, format: any) => void;
/** 取指定语言的数字格式 */
getNumberFormat?: (locale: string) => any;
/** 整包覆盖指定语言的数字格式 */
setNumberFormat?: (locale: string, format: any) => void;
/** 深度合并指定语言的数字格式 */
mergeNumberFormat?: (locale: string, format: any) => void;
};更多的语言扩展
如果当前默认的语言不足以满足你,就像前置安装那样,自己把语言包补充进去就行。你也可以动态扩展语言包。
附件:语言代码列表
| 代码 | 语言名称 | 地区/脚本 | 备注说明 |
|---|---|---|---|
| zh | 中文 | - | 不区分简繁和地区 |
| zh-CN | 中文 | 中国(大陆) | 简体中文 |
| zh-SG | 中文 | 新加坡 | 简体中文 |
| zh-Hans | 中文 | 简体 | 脚本简体,不限地区 |
| zh-Hant | 中文 | 繁体 | 脚本繁体,不限地区 |
| zh-TW | 中文 | 台湾 | 繁体中文 |
| zh-HK | 中文 | 香港 | 繁体中文 |
| zh-MO | 中文 | 澳门 | 繁体中文 |
| ko | 韩语 | - | 不区分地区 |
| ko-KR | 韩语 | 韩国 | 韩国韩语 |
| ko-KP | 韩语 | 朝鲜 | 朝鲜韩语(极少用) |
| ja | 日语 | - | 不区分地区 |
| ja-JP | 日语 | 日本 | 日本日语 |
| en | 英语 | - | 通用英语 |
| en-US | 英语 | 美国 | 美国英语 |
| en-GB | 英语 | 英国 | 英国英语 |
| en-AU | 英语 | 澳大利亚 | 澳大利亚英语 |
| en-CA | 英语 | 加拿大 | 加拿大英语 |
| en-IN | 英语 | 印度 | 印度英语 |
| fr | 法语 | - | 通用法语 |
| fr-FR | 法语 | 法国 | 法国法语 |
| fr-CA | 法语 | 加拿大 | 加拿大法语 |
| de | 德语 | - | 通用德语 |
| de-DE | 德语 | 德国 | 德国德语 |
| de-AT | 德语 | 奥地利 | 奥地利德语 |
| de-CH | 德语 | 瑞士 | 瑞士德语 |
| es | 西班牙语 | - | 通用西班牙语 |
| es-ES | 西班牙语 | 西班牙 | 西班牙西班牙语 |
| es-MX | 西班牙语 | 墨西哥 | 墨西哥西班牙语 |
| es-AR | 西班牙语 | 阿根廷 | 阿根廷西班牙语 |
| pt | 葡萄牙语 | - | 通用葡萄牙语 |
| pt-PT | 葡萄牙语 | 葡萄牙 | 葡萄牙葡萄牙语 |
| pt-BR | 葡萄牙语 | 巴西 | 巴西葡萄牙语 |
| ru | 俄语 | - | 通用俄语 |
| ru-RU | 俄语 | 俄罗斯 | 俄罗斯俄语 |
| it | 意大利语 | - | 通用意大利语 |
| it-IT | 意大利语 | 意大利 | 意大利意大利语 |
| nl | 荷兰语 | - | 通用荷兰语 |
| nl-NL | 荷兰语 | 荷兰 | 荷兰荷兰语 |
| nl-BE | 荷兰语 | 比利时 | 比利时荷兰语 |
| sv | 瑞典语 | - | 通用瑞典语 |
| sv-SE | 瑞典语 | 瑞典 | 瑞典瑞典语 |
| fi | 芬兰语 | - | 通用芬兰语 |
| fi-FI | 芬兰语 | 芬兰 | 芬兰芬兰语 |
| da | 丹麦语 | - | 通用丹麦语 |
| da-DK | 丹麦语 | 丹麦 | 丹麦丹麦语 |
| pl | 波兰语 | - | 通用波兰语 |
| pl-PL | 波兰语 | 波兰 | 波兰波兰语 |
| tr | 土耳其语 | - | 通用土耳其语 |
| tr-TR | 土耳其语 | 土耳其 | 土耳其土耳其语 |
| el | 希腊语 | - | 通用希腊语 |
| el-GR | 希腊语 | 希腊 | 希腊希腊语 |
| he | 希伯来语 | - | 通用希伯来语 |
| he-IL | 希伯来语 | 以色列 | 以色列希伯来语 |
| ar | 阿拉伯语 | - | 通用阿拉伯语 |
| ar-SA | 阿拉伯语 | 沙特阿拉伯 | 沙特阿拉伯阿拉伯语 |
| ar-EG | 阿拉伯语 | 埃及 | 埃及阿拉伯语 |
| th | 泰语 | - | 通用泰语 |
| th-TH | 泰语 | 泰国 | 泰国泰语 |
| vi | 越南语 | - | 通用越南语 |
| vi-VN | 越南语 | 越南 | 越南越南语 |
| id | 印度尼西亚语 | - | 通用印尼语 |
| id-ID | 印度尼西亚语 | 印度尼西亚 | 印尼印尼语 |
| ms | 马来语 | - | 通用马来语 |
| ms-MY | 马来语 | 马来西亚 | 马来西亚马来语 |
| hi | 印地语 | - | 通用印地语 |
| hi-IN | 印地语 | 印度 | 印度印地语 |
| ur | 乌尔都语 | - | 通用乌尔都语 |
| ur-PK | 乌尔都语 | 巴基斯坦 | 巴基斯坦乌尔都语 |
| ta | 泰米尔语 | - | 通用泰米尔语 |
| ta-IN | 泰米尔语 | 印度 | 印度泰米尔语 |
| bn | 孟加拉语 | - | 通用孟加拉语 |
| bn-BD | 孟加拉语 | 孟加拉国 | 孟加拉国孟加拉语 |
| bn-IN | 孟加拉语 | 印度 | 印度孟加拉语 |
