@maz-ui/translations 4.5.0 → 4.7.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/chunks/locales.CxxxJnrt.js +130 -0
  2. package/dist/composables/index.js +5 -0
  3. package/dist/composables/useTranslations.d.ts +2 -0
  4. package/dist/composables/useTranslations.js +13 -0
  5. package/dist/index.d.ts +6 -932
  6. package/dist/index.js +43 -0
  7. package/dist/locales/de.d.ts +95 -0
  8. package/dist/locales/{de.mjs → de.js} +9 -8
  9. package/dist/locales/en.d.ts +183 -0
  10. package/dist/locales/{en.mjs → en.js} +3 -2
  11. package/dist/locales/es.d.ts +95 -0
  12. package/dist/locales/{es.mjs → es.js} +25 -24
  13. package/dist/locales/fr.d.ts +95 -0
  14. package/dist/locales/{fr.mjs → fr.js} +16 -15
  15. package/dist/locales/index.d.ts +8 -0
  16. package/dist/locales/index.js +18 -0
  17. package/dist/locales/it.d.ts +95 -0
  18. package/dist/locales/{it.mjs → it.js} +4 -3
  19. package/dist/locales/ja.d.ts +95 -0
  20. package/dist/locales/ja.js +97 -0
  21. package/dist/locales/pt.d.ts +95 -0
  22. package/dist/locales/{pt.mjs → pt.js} +25 -24
  23. package/dist/locales/zh-CN.d.ts +95 -0
  24. package/dist/locales/zh-CN.js +97 -0
  25. package/dist/plugin.d.ts +11 -0
  26. package/dist/plugin.js +11 -0
  27. package/dist/states.d.ts +13 -0
  28. package/dist/states.js +11 -0
  29. package/dist/types.d.ts +75 -0
  30. package/dist/utils/index.d.ts +4 -0
  31. package/dist/utils/index.js +20 -0
  32. package/dist/utils/inject.d.ts +6 -0
  33. package/dist/utils/inject.js +11 -0
  34. package/dist/utils/instance.d.ts +13 -0
  35. package/dist/utils/instance.js +31 -0
  36. package/dist/utils/locales.d.ts +10 -0
  37. package/dist/utils/locales.js +13 -0
  38. package/dist/utils/messages.d.ts +5 -0
  39. package/dist/utils/messages.js +8 -0
  40. package/package.json +41 -11
  41. package/dist/core.mjs +0 -225
  42. package/dist/index.d.mts +0 -932
  43. package/dist/index.mjs +0 -10
  44. package/dist/locales/ja.mjs +0 -96
  45. package/dist/locales/zh-CN.mjs +0 -96
  46. package/dist/plugin.mjs +0 -12
  47. package/dist/useTranslations.mjs +0 -11
@@ -0,0 +1,130 @@
1
+ import { globalState, locale } from "../states.js";
2
+ function getMessage(obj, path) {
3
+ return path.split(".").reduce((current, key) => current?.[key], obj);
4
+ }
5
+ function setMessage(obj, path, value) {
6
+ const keys = path.split("."), lastKey = keys.pop(), target = keys.reduce((current, key) => ((!current[key] || typeof current[key] != "object") && (current[key] = {}), current[key]), obj);
7
+ target[lastKey] = value;
8
+ }
9
+ function isFlattenedObject(obj) {
10
+ return !obj || typeof obj != "object" ? !1 : Object.keys(obj).some((key) => key.includes("."));
11
+ }
12
+ function flattenToNested(flatObj) {
13
+ if (!isFlattenedObject(flatObj))
14
+ return flatObj;
15
+ const nested = {};
16
+ for (const [key, value] of Object.entries(flatObj))
17
+ key.includes(".") ? setMessage(nested, key, value) : nested[key] = value;
18
+ return nested;
19
+ }
20
+ function mergeMessages(target, source) {
21
+ const normalizedSource = flattenToNested(source), result = { ...flattenToNested(target) };
22
+ for (const key in normalizedSource)
23
+ normalizedSource[key] && typeof normalizedSource[key] == "object" ? result[key] = mergeMessages(result[key] || {}, normalizedSource[key]) : result[key] = normalizedSource[key];
24
+ return result;
25
+ }
26
+ function interpolate(message, variables) {
27
+ return variables ? message.replace(/\{(\w+)\}/g, (match, key) => variables[key] !== void 0 ? String(variables[key]) : match) : message;
28
+ }
29
+ function t(key, variables, fallbackLocale) {
30
+ let message = getMessage(globalState.messages[locale.value], key);
31
+ if (!message && fallbackLocale && locale.value !== fallbackLocale && (globalState.loadedLocales.has(fallbackLocale) || loadLocale(fallbackLocale).catch((error) => console.error(`[@maz-ui/translations] Failed to load fallback locale: "${fallbackLocale}"`, error)), message = getMessage(globalState.messages[fallbackLocale], key)), !message && fallbackLocale !== "en" && locale.value !== "en") {
32
+ if (!globalState.loadedLocales.has("en"))
33
+ return loadLocale("en").catch((error) => console.error('[@maz-ui/translations] Failed to load en locale: "en"', error)), key;
34
+ message = getMessage(globalState.messages.en, key);
35
+ }
36
+ return message ? interpolate(String(message), variables) : (console.warn(`[@maz-ui/translations] Translation not found for key: "${key}"`), key);
37
+ }
38
+ const defaultLocalesLoaders = {
39
+ "./locales/en.ts": () => import("../locales/en.js").then((m) => ({ default: m.default })),
40
+ "./locales/de.ts": () => import("../locales/de.js").then((m) => ({ default: m.default })),
41
+ "./locales/es.ts": () => import("../locales/es.js").then((m) => ({ default: m.default })),
42
+ "./locales/fr.ts": () => import("../locales/fr.js").then((m) => ({ default: m.default })),
43
+ "./locales/it.ts": () => import("../locales/it.js").then((m) => ({ default: m.default })),
44
+ "./locales/ja.ts": () => import("../locales/ja.js").then((m) => ({ default: m.default })),
45
+ "./locales/pt.ts": () => import("../locales/pt.js").then((m) => ({ default: m.default })),
46
+ "./locales/zh-CN.ts": () => import("../locales/zh-CN.js").then((m) => ({ default: m.default }))
47
+ }, defaultMessagesCache = /* @__PURE__ */ new Map();
48
+ async function loadDefaultMessages(locale2) {
49
+ if (defaultMessagesCache.has(locale2))
50
+ return defaultMessagesCache.get(locale2);
51
+ const loaderPath = `./locales/${locale2}.ts`, loader = defaultLocalesLoaders[loaderPath];
52
+ if (!loader)
53
+ return {};
54
+ try {
55
+ const messages = (await loader()).default;
56
+ return defaultMessagesCache.set(locale2, messages), messages;
57
+ } catch (error) {
58
+ return console.error(`Failed to load default messages for locale "${locale2}":`, error), {};
59
+ }
60
+ }
61
+ function getAvailableLocales() {
62
+ const locales = /* @__PURE__ */ new Set();
63
+ for (const [path, loader] of Object.entries(defaultLocalesLoaders))
64
+ loader && typeof loader == "function" && locales.add(path.replace("./locales/", "").replace(".ts", ""));
65
+ for (const path of Object.keys(globalState.userMessages))
66
+ locales.add(path);
67
+ return Array.from(locales);
68
+ }
69
+ function loadLocale(targetLocale) {
70
+ if (globalState.loadedLocales.has(targetLocale))
71
+ return Promise.resolve();
72
+ if (globalState.loadingPromises.has(targetLocale))
73
+ return globalState.loadingPromises.get(targetLocale);
74
+ const loadingPromise = (async () => {
75
+ try {
76
+ const localeDefaultMessages = await loadDefaultMessages(targetLocale);
77
+ let localeUserMessages = {};
78
+ const userLoader = globalState.userMessages[targetLocale];
79
+ if (userLoader)
80
+ if (typeof userLoader == "function")
81
+ try {
82
+ const userMessages = await userLoader();
83
+ localeUserMessages = "default" in userMessages ? userMessages.default : userMessages;
84
+ } catch (error) {
85
+ console.error(`Failed to load user translations for locale "${targetLocale}":`, error), localeUserMessages = {};
86
+ }
87
+ else
88
+ localeUserMessages = userLoader;
89
+ globalState.messages[targetLocale] = mergeMessages(localeDefaultMessages, localeUserMessages), globalState.loadedLocales.add(targetLocale);
90
+ } catch (error) {
91
+ console.error(`Failed to load translations for locale "${targetLocale}":`, error), globalState.messages[targetLocale] = {}, globalState.loadedLocales.add(targetLocale);
92
+ } finally {
93
+ globalState.loadingPromises.delete(targetLocale);
94
+ }
95
+ })();
96
+ return globalState.loadingPromises.set(targetLocale, loadingPromise), loadingPromise;
97
+ }
98
+ function getMessages() {
99
+ return globalState.messages;
100
+ }
101
+ function isLocaleLoaded(localeToCheck) {
102
+ return globalState.loadedLocales.has(localeToCheck);
103
+ }
104
+ function isLocaleLoading(localeToCheck) {
105
+ return globalState.loadingPromises.has(localeToCheck);
106
+ }
107
+ function setLocaleMessage(targetLocale, messages) {
108
+ globalState.messages[targetLocale] || (globalState.messages[targetLocale] = {}), globalState.messages[targetLocale] = mergeMessages(globalState.messages[targetLocale], messages), globalState.loadedLocales.add(targetLocale);
109
+ }
110
+ async function setLocale(newLocale) {
111
+ globalState.loadedLocales.has(newLocale) || await loadLocale(newLocale), locale.value = newLocale;
112
+ }
113
+ function getLoadedLocales() {
114
+ return Object.keys(globalState.messages);
115
+ }
116
+ export {
117
+ loadLocale as a,
118
+ getMessages as b,
119
+ isLocaleLoading as c,
120
+ setLocale as d,
121
+ getLoadedLocales as e,
122
+ getMessage as f,
123
+ getAvailableLocales as g,
124
+ interpolate as h,
125
+ isLocaleLoaded as i,
126
+ loadDefaultMessages as l,
127
+ mergeMessages as m,
128
+ setLocaleMessage as s,
129
+ t
130
+ };
@@ -0,0 +1,5 @@
1
+ import "vue";
2
+ import { useTranslations } from "./useTranslations.js";
3
+ export {
4
+ useTranslations
5
+ };
@@ -0,0 +1,2 @@
1
+ import { MazUiTranslationsInstance } from '../types';
2
+ export declare function useTranslations(): MazUiTranslationsInstance;
@@ -0,0 +1,13 @@
1
+ import { inject, getCurrentInstance } from "vue";
2
+ function useTranslations() {
3
+ const injected = inject("mazTranslations", void 0);
4
+ if (injected)
5
+ return injected;
6
+ const instance = getCurrentInstance();
7
+ if (instance?.appContext?.app?.config?.globalProperties?.$mazTranslations)
8
+ return instance.appContext.app.config.globalProperties.$mazTranslations;
9
+ throw new Error("[@maz-ui/translations] You must install the MazUi or MazUiTranslations plugin, or wrap your components in a MazUiProvider, before using useTranslations composable");
10
+ }
11
+ export {
12
+ useTranslations
13
+ };