feat: add ctx.i18n.mergeLanguage method

This commit is contained in:
purocean
2022-01-18 15:50:50 +08:00
parent 2d971de15d
commit 19958ca08b
2 changed files with 16 additions and 1 deletions
+11 -1
View File
@@ -1,5 +1,5 @@
import { getCurrentInstance, onBeforeUnmount } from 'vue'
import { Language, MsgPath, translate } from '@share/i18n'
import { Language, MsgPath, mergeLanguage as _mergeLanguage, translate } from '@share/i18n'
import { registerHook, removeHook, triggerHook } from '@fe/core/hook'
import * as storage from '@fe/utils/storage'
import { LanguageName } from '@fe/types'
@@ -42,6 +42,16 @@ export function setLanguage (language: LanguageName) {
triggerHook('I18N_CHANGE_LANGUAGE', { lang })
}
/**
* Merge natural language strings
* @param lang
* @param nls
*/
export function mergeLanguage (lang: Language, nls: Record<string, any>) {
_mergeLanguage(lang, nls)
triggerHook('I18N_CHANGE_LANGUAGE', { lang: getLanguage() })
}
/**
* For vue setup, auto refresh when language change.
* @returns
+5
View File
@@ -1,4 +1,5 @@
import get from 'lodash/get'
import merge from 'lodash/merge'
import en, { BaseLanguage } from './languages/en'
import zhCN from './languages/zh-CN'
@@ -34,3 +35,7 @@ export function translate (lang: Language, path: MsgPath, ...args: string[]) {
return args[idx] || ''
})
}
export function mergeLanguage (lang: Language, nls: Record<string, any>) {
languages[lang] = merge(languages[lang], nls)
}