Browse Source

add: 添加设置语言接口

liutian 1 year ago
parent
commit
b0a9041dfa

+ 3 - 3
packages/webview/src/apis/index.js

@@ -1,15 +1,14 @@
 import core from '@/core';
 import { useViewerStore } from '@/stores/modules/viewer';
-import { useDocumentStore } from '@/stores/modules/document';
 
 import disableElements from './disableElements';
 import enableElements from './enableElements';
 import setHeaderItems from './setHeaderItems';
 import setActiceToolMode from './setActiceToolMode';
+import setLanguage from './setLanguage';
 
 export default () => {
   const useViewer = useViewerStore()
-  const useDocument = useDocumentStore()
 
   const CORE_NAMESPACE = 'Core';
   const UI_NAMESPACE = 'UI';
@@ -26,6 +25,7 @@ export default () => {
     enableElements: enableElements(useViewer),
     setHeaderItems: setHeaderItems(useViewer),
     setActiceToolMode: setActiceToolMode(useViewer),
+    setLanguage: setLanguage
   }
   const documentViewer = core.getDocumentViewer(1);
 
@@ -41,4 +41,4 @@ export default () => {
     },
     [UI_NAMESPACE]: objForWebViewerUI,
   };
-}
+}

+ 21 - 0
packages/webview/src/apis/setLanguage.js

@@ -0,0 +1,21 @@
+/**
+ * Set the language of WebViewer UI.
+ * @method UI.setLanguage
+ * @param {string} language The language WebViewer UI will use. By default, following languages are supported: en, zh_cn, fr.
+ * @example
+WebViewer(...)
+  .then(function(instance) {
+    instance.UI.setLanguage('zh-CN'); // set the language to 简体中文
+  });
+ */
+
+import i18n from '../i18n'
+const { locale } = i18n.global
+
+export default (language) => {
+  if (language !== 'zh-CN' && language !== 'en') {
+    language = 'en'
+  }
+  locale.value = language
+  window.localStorage.setItem('currentLanguage', language)
+}

+ 1 - 1
packages/webview/src/components/Dialogs/LanguageDialog.vue

@@ -45,7 +45,7 @@
 
   const handleLanguage = () => {
     locale.value = selectedLanguage.value
-    window.localStorage.setItem('language', selectedLanguage.value)
+    window.localStorage.setItem('currentLanguage', selectedLanguage.value)
     useViewer.closeElement('languageDialog')
   }
 </script>

+ 22 - 0
packages/webview/src/i18n.js

@@ -0,0 +1,22 @@
+import { createI18n } from 'vue-i18n'
+import en from '../locales/en.json'
+import zhCN from '../locales/zh-CN.json'
+
+let language = window.localStorage.getItem('currentLanguage') || 'en'
+if (language !== 'zh-CN' && language !== 'en') {
+  language = 'en'
+}
+
+const i18n = createI18n({
+  // something vue-i18n options here ...
+  legacy: false,
+  // locale: language === 'zh-CN' ? 'zh-CN' : 'en', // 根据浏览器语言设置
+  locale: language,
+  fallbackLocale: 'en',
+  messages: {
+    en,
+    'zh-CN': zhCN
+  }
+})
+
+export default i18n

+ 1 - 17
packages/webview/src/main.js

@@ -1,8 +1,6 @@
 import { createApp } from 'vue'
-import { createI18n } from 'vue-i18n'
-import en from '../locales/en.json'
-import zhCN from '../locales/zh-CN.json'
 
+import i18n from './i18n'
 import App from '@/components/App/index.vue'
 import { setupStore } from '@/stores'
 
@@ -10,20 +8,6 @@ import './assets/main.scss'
 
 import defineWebViewerInstanceUIAPIs from '@/apis'
 
-const language = window.localStorage.getItem('language') || window.navigator.language
-
-const i18n = createI18n({
-  // something vue-i18n options here ...
-  legacy: false,
-  // locale: language === 'zh-CN' ? 'zh-CN' : 'en', // 根据浏览器语言设置
-  locale: 'en',
-  fallbackLocale: 'en',
-  messages: {
-    en,
-    'zh-CN': zhCN
-  }
-})
-
 const app = createApp(App)
 
 setupStore(app)