bill 3 часов назад
Родитель
Сommit
8914a301a7
6 измененных файлов с 7201 добавлено и 6 удалено
  1. 7138 0
      package-lock.json
  2. 1 0
      package.json
  3. 2 0
      src/example/fuse/main.ts
  4. 17 6
      src/global.d.ts
  5. 42 0
      src/lang/index.ts
  6. 1 0
      src/lang/locales/zh.json

Разница между файлами не показана из-за своего большого размера
+ 7138 - 0
package-lock.json


+ 1 - 0
package.json

@@ -41,6 +41,7 @@
     "vite-plugin-html": "^3.2.2",
     "vite-plugin-svg-icons": "^2.0.1",
     "vue": "^3.5.13",
+    "vue-i18n": "^11.2.7",
     "vue-konva": "^3.2.0",
     "vue-router": "^4.5.0"
   },

+ 2 - 0
src/example/fuse/main.ts

@@ -6,11 +6,13 @@ import { createApp } from 'vue'
 import App from './App.vue'
 import Icon from '@/components/icon/index.vue'
 import {router} from "./router";
+import { setupI18n } from '@/lang'
 
 
 const app = createApp(App)
 app.component('Icon', Icon)
 app.use(router)
+setupI18n(app)
 app.mount('#app')
 
 console.log('当前版本', __VERSION__)

+ 17 - 6
src/global.d.ts

@@ -1,11 +1,22 @@
-declare global {  
+declare global {
   // 声明为全局常量(TypeScript 只用于类型检查,运行时不会自动在 window 上创建)
   const __VERSION__: string;
   const __BUILD_TIME__: string;
 
-  interface Window {  
-    platform: any
-  }  
-}  
+  interface Window {
+    platform: any;
+  }
 
-export {};  
+  declare type I18nGlobalTranslation = {
+    (key: string): string;
+    (key: string, locale: string): string;
+    (key: string, locale: string, list: unknown[]): string;
+    (key: string, locale: string, named: Record<string, unknown>): string;
+    (key: string, list: unknown[]): string;
+    (key: string, named: Record<string, unknown>): string;
+  };
+
+  declare const $t: I18nGlobalTranslation;
+}
+
+export {};

+ 42 - 0
src/lang/index.ts

@@ -0,0 +1,42 @@
+import { App } from "vue";
+import { createI18n, I18n as BaseI18n } from "vue-i18n";
+import { params } from "@/example/env";
+import zh from "./locales/zh.json";
+
+type I18n = BaseI18n & {
+  global: {
+    t: I18nGlobalTranslation;
+    change(langName: langNameEum): void;
+  };
+};
+
+// 语言支持
+export enum langNameEum {
+  zh = "zh",
+}
+
+export const lang = params.value.lang || langNameEum.zh;
+export const availableLocales = {
+    [langNameEum.zh]: "中文",
+}
+const i18n: I18n = createI18n({
+  legacy: false,
+  fallbackLocale: langNameEum.zh,
+  availableLocales: availableLocales,
+  locale: lang,
+  sync: true,
+  silentTranslationWarn: true,
+  missingWarn: false,
+  silentFallbackWarn: true,
+}) as I18n;
+i18n.global.setLocaleMessage(langNameEum.zh, zh);
+
+i18n.global.change = (lang) => {
+  params.value.lang = lang
+  // location.reload()
+}
+export const ui18n = i18n.global
+export const setupI18n = (app: App) => {
+  app.config.globalProperties.$t = i18n.global.t
+  app.use(i18n)
+}

+ 1 - 0
src/lang/locales/zh.json

@@ -0,0 +1 @@
+{}