Browse Source

first commit

xiaodai2017 2 years ago
parent
commit
137fc0a37e
4 changed files with 17 additions and 2 deletions
  1. 7 0
      build/plugins.ts
  2. 7 1
      src/layout/index.vue
  3. 2 0
      src/layout/types.ts
  4. 1 1
      vite.config.ts

+ 7 - 0
build/plugins.ts

@@ -6,6 +6,7 @@ import svgLoader from "vite-svg-loader";
 import legacy from "@vitejs/plugin-legacy";
 import vueJsx from "@vitejs/plugin-vue-jsx";
 import { viteMockServe } from "vite-plugin-mock";
+import VueI18n from "@intlify/vite-plugin-vue-i18n";
 import { visualizer } from "rollup-plugin-visualizer";
 import removeConsole from "vite-plugin-remove-console";
 import themePreprocessorPlugin from "@pureadmin/theme";
@@ -17,6 +18,12 @@ export function getPluginsList(command, VITE_LEGACY) {
   const lifecycle = process.env.npm_lifecycle_event;
   return [
     vue(),
+    // https://github.com/intlify/bundle-tools/tree/main/packages/vite-plugin-vue-i18n
+    VueI18n({
+      runtimeOnly: true,
+      compositionOnly: true,
+      include: [resolve("locales/**")]
+    }),
     // jsx、tsx语法支持
     vueJsx(),
     Unocss(),

+ 7 - 1
src/layout/index.vue

@@ -8,6 +8,7 @@ import {
   getCurrentInstance
 } from "vue";
 import { setType } from "./types";
+import { useI18n } from "vue-i18n";
 import { routerArrays } from "./types";
 import { emitter } from "/@/utils/mitt";
 import { deviceDetection } from "@pureadmin/utils";
@@ -40,7 +41,12 @@ const layout = computed(() => {
     // eslint-disable-next-line vue/no-side-effects-in-computed-properties
     instance.$storage.tags = routerArrays;
   }
-
+  // 国际化
+  if (!instance.$storage.locale) {
+    // eslint-disable-next-line
+    instance.$storage.locale = { locale: instance.$config?.Locale ?? "zh" };
+    useI18n().locale.value = instance.$config?.Locale ?? "zh";
+  }
   // 导航
   if (!instance.$storage.layout) {
     // eslint-disable-next-line vue/no-side-effects-in-computed-properties

+ 2 - 0
src/layout/types.ts

@@ -12,6 +12,7 @@ export const routerArrays: Array<RouteConfigs> = [
 
 export type routeMetaType = {
   title?: string;
+  i18n?: boolean;
   icon?: string;
   showLink?: boolean;
   savedPosition?: boolean;
@@ -64,6 +65,7 @@ export type childrenType = {
   meta?: {
     icon?: string;
     title?: string;
+    i18n?: boolean;
     showParent?: boolean;
     extraIcon?: {
       svg?: boolean;

+ 1 - 1
vite.config.ts

@@ -61,7 +61,7 @@ export default ({ command, mode }: ConfigEnv): UserConfigExport => {
     },
     plugins: getPluginsList(command, VITE_LEGACY),
     optimizeDeps: {
-      include: ["pinia", "lodash-es", "@vueuse/core"],
+      include: ["pinia", "vue-i18n", "lodash-es", "@vueuse/core"],
       exclude: ["@pureadmin/theme/dist/browser-utils"]
     },
     build: {