38 lines
940 B
TypeScript
38 lines
940 B
TypeScript
import { createI18n } from 'vue-i18n'
|
||
|
||
import en from './en.json'
|
||
import zhHans from './zh-Hans.json' // 简体中文
|
||
|
||
const messages = {
|
||
en,
|
||
'zh-Hans': zhHans, // key 不能乱写,查看截图 screenshots/i18n.png
|
||
}
|
||
|
||
const i18n = createI18n({
|
||
locale: uni.getLocale(), // 获取已设置的语言,fallback 语言需要再 manifest.config.ts 中设置
|
||
messages,
|
||
})
|
||
|
||
console.log(uni.getLocale())
|
||
console.log(i18n.global.locale)
|
||
|
||
/**
|
||
* 非 vue 文件使用这个方法
|
||
* @param { string } localeKey 多语言的key,eg: "app.name"
|
||
*/
|
||
export const translate = (localeKey: string) => {
|
||
if (!localeKey) {
|
||
console.error(`[i18n] Function translate(), localeKey param is required`)
|
||
return ''
|
||
}
|
||
const locale = uni.getLocale()
|
||
console.log('locale:', locale)
|
||
|
||
const message = messages[locale]
|
||
if (Object.keys(message).includes(localeKey)) {
|
||
return message[localeKey]
|
||
}
|
||
return localeKey
|
||
}
|
||
export default i18n
|