diff --git a/src/renderer/services/i18n.ts b/src/renderer/services/i18n.ts index 953b7d65..a1493524 100644 --- a/src/renderer/services/i18n.ts +++ b/src/renderer/services/i18n.ts @@ -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) { + _mergeLanguage(lang, nls) + triggerHook('I18N_CHANGE_LANGUAGE', { lang: getLanguage() }) +} + /** * For vue setup, auto refresh when language change. * @returns diff --git a/src/share/i18n/index.ts b/src/share/i18n/index.ts index df25e83a..3f9474ed 100644 --- a/src/share/i18n/index.ts +++ b/src/share/i18n/index.ts @@ -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) { + languages[lang] = merge(languages[lang], nls) +}