main.js 1.2 KB

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