main.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import App from "./App";
  2. import uviewPlus from "uview-plus";
  3. import { createPinia } from "pinia";
  4. import { messages } from "./locale/index";
  5. import { interpolateTemplate } from "./locale/utils";
  6. import vEllipsis from './directives/v-ellipsis'
  7. import { createI18n } from "vue-i18n";
  8. import { routeInterceptor } from '@/utils/routeInterceptor.js'
  9. export const i18n = createI18n({
  10. legacy: false,
  11. allowComposition: true,
  12. locale: uni.getStorageSync("lang") || "cn",
  13. messages,
  14. });
  15. const pinia = createPinia();
  16. const originalT = i18n.global.t;
  17. i18n.global.t = function (key, param1, param2) {
  18. const result = originalT.call(this, key, param1, param2);
  19. if (param1 === undefined && param2 === undefined) {
  20. return result;
  21. }
  22. let values = param1;
  23. if (
  24. typeof param1 === "object" &&
  25. !Array.isArray(param1) &&
  26. Array.isArray(param2)
  27. ) {
  28. values = param1;
  29. } else if (Array.isArray(param1)) {
  30. values = param1;
  31. } else if (typeof param1 === "object" && param1 !== null) {
  32. values = param1;
  33. } else if (param1 !== undefined) {
  34. values = [param1];
  35. }
  36. return interpolateTemplate(result, values);
  37. };
  38. // #ifdef VUE3
  39. import { createSSRApp } from "vue";
  40. export function createApp() {
  41. const app = createSSRApp(App);
  42. app.directive('ellipsis', vEllipsis)
  43. app.use(uviewPlus);
  44. app.use(pinia);
  45. app.use(i18n);
  46. routeInterceptor.install()
  47. return {
  48. app,
  49. };
  50. }
  51. // #endif