@codee-sh/medusa-plugin-notification-emails 0.0.2 → 0.1.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 (55) hide show
  1. package/.medusa/server/emails-previews/contact-form.js +5 -7
  2. package/.medusa/server/emails-previews/inventory-level.js +23 -0
  3. package/.medusa/server/emails-previews/order-completed.js +20 -14
  4. package/.medusa/server/emails-previews/order-placed.js +19 -13
  5. package/.medusa/server/src/admin/index.js +385 -2364
  6. package/.medusa/server/src/admin/index.mjs +307 -2286
  7. package/.medusa/server/src/api/admin/notification-plugin/render-template/route.js +2 -2
  8. package/.medusa/server/src/hooks/api/orders.js +3 -2
  9. package/.medusa/server/src/templates/emails/base-template/index.js +23 -0
  10. package/.medusa/server/src/templates/emails/base-template/template.js +25 -0
  11. package/.medusa/server/src/templates/emails/blocks/components/heading.js +15 -0
  12. package/.medusa/server/src/templates/emails/blocks/components/product-item.js +14 -0
  13. package/.medusa/server/src/templates/emails/blocks/components/repeater.js +26 -0
  14. package/.medusa/server/src/templates/emails/blocks/components/row.js +13 -0
  15. package/.medusa/server/src/templates/emails/blocks/components/section.js +14 -0
  16. package/.medusa/server/src/templates/emails/blocks/components/separator.js +13 -0
  17. package/.medusa/server/src/templates/emails/blocks/components/text.js +15 -0
  18. package/.medusa/server/src/templates/emails/blocks/index.js +41 -0
  19. package/.medusa/server/src/templates/{shared/i18n → emails/blocks}/types.js +1 -1
  20. package/.medusa/server/src/templates/emails/contact-form/config.js +95 -0
  21. package/.medusa/server/src/templates/emails/contact-form/index.js +6 -17
  22. package/.medusa/server/src/templates/emails/contact-form/translations/de.json +14 -0
  23. package/.medusa/server/src/templates/emails/contact-form/translations/en.json +12 -14
  24. package/.medusa/server/src/templates/emails/contact-form/translations/pl.json +8 -10
  25. package/.medusa/server/src/templates/emails/index.js +183 -92
  26. package/.medusa/server/src/templates/emails/inventory-level/config.js +126 -0
  27. package/.medusa/server/src/templates/emails/inventory-level/index.js +6 -17
  28. package/.medusa/server/src/templates/emails/order-completed/config.js +233 -0
  29. package/.medusa/server/src/templates/emails/order-completed/index.js +6 -17
  30. package/.medusa/server/src/templates/emails/order-completed/translations/en.json +2 -1
  31. package/.medusa/server/src/templates/emails/order-completed/translations/pl.json +2 -1
  32. package/.medusa/server/src/templates/emails/order-placed/config.js +221 -0
  33. package/.medusa/server/src/templates/emails/order-placed/index.js +6 -17
  34. package/.medusa/server/src/templates/emails/order-placed/translations/en.json +1 -1
  35. package/.medusa/server/src/templates/emails/order-placed/translations/pl.json +1 -1
  36. package/.medusa/server/src/templates/emails/types.js +2 -1
  37. package/.medusa/server/src/utils/i18n/i18n.js +194 -0
  38. package/.medusa/server/src/utils/i18n/index.js +18 -0
  39. package/.medusa/server/src/utils/index.js +5 -1
  40. package/.medusa/server/src/utils/is-defined.js +7 -0
  41. package/.medusa/server/src/utils/is-object.js +7 -0
  42. package/.medusa/server/src/utils/pick-value-from-object.js +28 -0
  43. package/package.json +18 -11
  44. package/.medusa/server/src/templates/emails/contact-form/template.js +0 -28
  45. package/.medusa/server/src/templates/emails/contact-form/translations/index.js +0 -15
  46. package/.medusa/server/src/templates/emails/contact-form/types.js +0 -3
  47. package/.medusa/server/src/templates/emails/inventory-level/template.js +0 -28
  48. package/.medusa/server/src/templates/emails/inventory-level/types.js +0 -3
  49. package/.medusa/server/src/templates/emails/order-completed/template.js +0 -36
  50. package/.medusa/server/src/templates/emails/order-completed/types.js +0 -3
  51. package/.medusa/server/src/templates/emails/order-placed/template.js +0 -36
  52. package/.medusa/server/src/templates/emails/order-placed/types.js +0 -3
  53. package/.medusa/server/src/templates/shared/i18n/index.js +0 -6
  54. package/.medusa/server/src/templates/shared/i18n/languages.js +0 -187
  55. package/.medusa/server/src/templates/shared/i18n/utils.js +0 -186
@@ -1,187 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.languages = void 0;
4
- const locale_1 = require("date-fns/locale");
5
- exports.languages = [
6
- {
7
- code: "bs",
8
- display_name: "Bosanski",
9
- ltr: true,
10
- date_locale: locale_1.bs,
11
- },
12
- {
13
- code: "bg",
14
- display_name: "Български",
15
- ltr: true,
16
- date_locale: locale_1.bg,
17
- },
18
- {
19
- code: "en",
20
- display_name: "English",
21
- ltr: true,
22
- date_locale: locale_1.enUS,
23
- },
24
- {
25
- code: "es",
26
- display_name: "Español",
27
- ltr: true,
28
- date_locale: locale_1.es,
29
- },
30
- {
31
- code: "el",
32
- display_name: "Ελληνικά",
33
- ltr: true,
34
- date_locale: locale_1.el,
35
- },
36
- {
37
- code: "de",
38
- display_name: "Deutsch",
39
- ltr: true,
40
- date_locale: locale_1.de,
41
- },
42
- {
43
- code: "fr",
44
- display_name: "Français",
45
- ltr: true,
46
- date_locale: locale_1.fr,
47
- },
48
- {
49
- code: "he",
50
- display_name: "עברית",
51
- ltr: false,
52
- date_locale: locale_1.he,
53
- },
54
- {
55
- code: "hu",
56
- display_name: "Magyar",
57
- ltr: true,
58
- date_locale: locale_1.hu,
59
- },
60
- {
61
- code: "it",
62
- display_name: "Italiano",
63
- ltr: true,
64
- date_locale: locale_1.it,
65
- },
66
- {
67
- code: "ja",
68
- display_name: "日本語",
69
- ltr: true,
70
- date_locale: locale_1.ja,
71
- },
72
- {
73
- code: "pl",
74
- display_name: "Polski",
75
- ltr: true,
76
- date_locale: locale_1.pl,
77
- },
78
- {
79
- code: "ptBR",
80
- display_name: "Português (Brasil)",
81
- ltr: true,
82
- date_locale: locale_1.ptBR,
83
- },
84
- {
85
- code: "ptPT",
86
- display_name: "Português (Portugal)",
87
- ltr: true,
88
- date_locale: locale_1.pt,
89
- },
90
- {
91
- code: "tr",
92
- display_name: "Türkçe",
93
- ltr: true,
94
- date_locale: locale_1.tr,
95
- },
96
- {
97
- code: "th",
98
- display_name: "ไทย",
99
- ltr: true,
100
- date_locale: locale_1.th,
101
- },
102
- {
103
- code: "uk",
104
- display_name: "Українська",
105
- ltr: true,
106
- date_locale: locale_1.uk,
107
- },
108
- {
109
- code: "ro",
110
- display_name: "Română",
111
- ltr: true,
112
- date_locale: locale_1.ro,
113
- },
114
- {
115
- code: "mk",
116
- display_name: "Македонски",
117
- ltr: true,
118
- date_locale: locale_1.mk,
119
- },
120
- {
121
- code: "mn",
122
- display_name: "Монгол",
123
- ltr: true,
124
- date_locale: locale_1.mn,
125
- },
126
- {
127
- code: "ar",
128
- display_name: "العربية",
129
- ltr: false,
130
- date_locale: locale_1.ar,
131
- },
132
- {
133
- code: "zhCN",
134
- display_name: "简体中文",
135
- ltr: true,
136
- date_locale: locale_1.zhCN,
137
- },
138
- {
139
- code: "fa",
140
- display_name: "فارسی",
141
- ltr: false,
142
- date_locale: locale_1.faIR,
143
- },
144
- {
145
- code: "cs",
146
- display_name: "Čeština",
147
- ltr: true,
148
- date_locale: locale_1.cs,
149
- },
150
- {
151
- code: "ru",
152
- display_name: "Русский",
153
- ltr: true,
154
- date_locale: locale_1.ru,
155
- },
156
- {
157
- code: "lt",
158
- display_name: "Lietuviškai",
159
- ltr: true,
160
- date_locale: locale_1.lt,
161
- },
162
- {
163
- code: "vi",
164
- display_name: "Tiếng Việt",
165
- ltr: true,
166
- date_locale: locale_1.vi,
167
- },
168
- {
169
- code: "id",
170
- display_name: "Bahasa Indonesia",
171
- ltr: true,
172
- date_locale: locale_1.id,
173
- },
174
- {
175
- code: "ko",
176
- display_name: "한국어",
177
- ltr: true,
178
- date_locale: locale_1.ko,
179
- },
180
- {
181
- code: "nl",
182
- display_name: "Nederlands",
183
- ltr: true,
184
- date_locale: locale_1.nl,
185
- },
186
- ];
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3RlbXBsYXRlcy9zaGFyZWQvaTE4bi9sYW5ndWFnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNENBK0J3QjtBQUdYLFFBQUEsU0FBUyxHQUFlO0lBQ25DO1FBQ0UsSUFBSSxFQUFFLElBQUk7UUFDVixZQUFZLEVBQUUsVUFBVTtRQUN4QixHQUFHLEVBQUUsSUFBSTtRQUNULFdBQVcsRUFBRSxXQUFFO0tBQ2hCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsSUFBSTtRQUNWLFlBQVksRUFBRSxXQUFXO1FBQ3pCLEdBQUcsRUFBRSxJQUFJO1FBQ1QsV0FBVyxFQUFFLFdBQUU7S0FDaEI7SUFDRDtRQUNFLElBQUksRUFBRSxJQUFJO1FBQ1YsWUFBWSxFQUFFLFNBQVM7UUFDdkIsR0FBRyxFQUFFLElBQUk7UUFDVCxXQUFXLEVBQUUsYUFBSTtLQUNsQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLElBQUk7UUFDVixZQUFZLEVBQUUsU0FBUztRQUN2QixHQUFHLEVBQUUsSUFBSTtRQUNULFdBQVcsRUFBRSxXQUFFO0tBQ2hCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsSUFBSTtRQUNWLFlBQVksRUFBRSxVQUFVO1FBQ3hCLEdBQUcsRUFBRSxJQUFJO1FBQ1QsV0FBVyxFQUFFLFdBQUU7S0FDaEI7SUFDRDtRQUNFLElBQUksRUFBRSxJQUFJO1FBQ1YsWUFBWSxFQUFFLFNBQVM7UUFDdkIsR0FBRyxFQUFFLElBQUk7UUFDVCxXQUFXLEVBQUUsV0FBRTtLQUNoQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLElBQUk7UUFDVixZQUFZLEVBQUUsVUFBVTtRQUN4QixHQUFHLEVBQUUsSUFBSTtRQUNULFdBQVcsRUFBRSxXQUFFO0tBQ2hCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsSUFBSTtRQUNWLFlBQVksRUFBRSxPQUFPO1FBQ3JCLEdBQUcsRUFBRSxLQUFLO1FBQ1YsV0FBVyxFQUFFLFdBQUU7S0FDaEI7SUFDRDtRQUNFLElBQUksRUFBRSxJQUFJO1FBQ1YsWUFBWSxFQUFFLFFBQVE7UUFDdEIsR0FBRyxFQUFFLElBQUk7UUFDVCxXQUFXLEVBQUUsV0FBRTtLQUNoQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLElBQUk7UUFDVixZQUFZLEVBQUUsVUFBVTtRQUN4QixHQUFHLEVBQUUsSUFBSTtRQUNULFdBQVcsRUFBRSxXQUFFO0tBQ2hCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsSUFBSTtRQUNWLFlBQVksRUFBRSxLQUFLO1FBQ25CLEdBQUcsRUFBRSxJQUFJO1FBQ1QsV0FBVyxFQUFFLFdBQUU7S0FDaEI7SUFDRDtRQUNFLElBQUksRUFBRSxJQUFJO1FBQ1YsWUFBWSxFQUFFLFFBQVE7UUFDdEIsR0FBRyxFQUFFLElBQUk7UUFDVCxXQUFXLEVBQUUsV0FBRTtLQUNoQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLE1BQU07UUFDWixZQUFZLEVBQUUsb0JBQW9CO1FBQ2xDLEdBQUcsRUFBRSxJQUFJO1FBQ1QsV0FBVyxFQUFFLGFBQUk7S0FDbEI7SUFDRDtRQUNFLElBQUksRUFBRSxNQUFNO1FBQ1osWUFBWSxFQUFFLHNCQUFzQjtRQUNwQyxHQUFHLEVBQUUsSUFBSTtRQUNULFdBQVcsRUFBRSxXQUFFO0tBQ2hCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsSUFBSTtRQUNWLFlBQVksRUFBRSxRQUFRO1FBQ3RCLEdBQUcsRUFBRSxJQUFJO1FBQ1QsV0FBVyxFQUFFLFdBQUU7S0FDaEI7SUFDRDtRQUNFLElBQUksRUFBRSxJQUFJO1FBQ1YsWUFBWSxFQUFFLEtBQUs7UUFDbkIsR0FBRyxFQUFFLElBQUk7UUFDVCxXQUFXLEVBQUUsV0FBRTtLQUNoQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLElBQUk7UUFDVixZQUFZLEVBQUUsWUFBWTtRQUMxQixHQUFHLEVBQUUsSUFBSTtRQUNULFdBQVcsRUFBRSxXQUFFO0tBQ2hCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsSUFBSTtRQUNWLFlBQVksRUFBRSxRQUFRO1FBQ3RCLEdBQUcsRUFBRSxJQUFJO1FBQ1QsV0FBVyxFQUFFLFdBQUU7S0FDaEI7SUFDRDtRQUNFLElBQUksRUFBRSxJQUFJO1FBQ1YsWUFBWSxFQUFFLFlBQVk7UUFDMUIsR0FBRyxFQUFFLElBQUk7UUFDVCxXQUFXLEVBQUUsV0FBRTtLQUNoQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLElBQUk7UUFDVixZQUFZLEVBQUUsUUFBUTtRQUN0QixHQUFHLEVBQUUsSUFBSTtRQUNULFdBQVcsRUFBRSxXQUFFO0tBQ2hCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsSUFBSTtRQUNWLFlBQVksRUFBRSxTQUFTO1FBQ3ZCLEdBQUcsRUFBRSxLQUFLO1FBQ1YsV0FBVyxFQUFFLFdBQUU7S0FDaEI7SUFDRDtRQUNFLElBQUksRUFBRSxNQUFNO1FBQ1osWUFBWSxFQUFFLE1BQU07UUFDcEIsR0FBRyxFQUFFLElBQUk7UUFDVCxXQUFXLEVBQUUsYUFBSTtLQUNsQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLElBQUk7UUFDVixZQUFZLEVBQUUsT0FBTztRQUNyQixHQUFHLEVBQUUsS0FBSztRQUNWLFdBQVcsRUFBRSxhQUFJO0tBQ2xCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsSUFBSTtRQUNWLFlBQVksRUFBRSxTQUFTO1FBQ3ZCLEdBQUcsRUFBRSxJQUFJO1FBQ1QsV0FBVyxFQUFFLFdBQUU7S0FDaEI7SUFDRDtRQUNFLElBQUksRUFBRSxJQUFJO1FBQ1YsWUFBWSxFQUFFLFNBQVM7UUFDdkIsR0FBRyxFQUFFLElBQUk7UUFDVCxXQUFXLEVBQUUsV0FBRTtLQUNoQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLElBQUk7UUFDVixZQUFZLEVBQUUsYUFBYTtRQUMzQixHQUFHLEVBQUUsSUFBSTtRQUNULFdBQVcsRUFBRSxXQUFFO0tBQ2hCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsSUFBSTtRQUNWLFlBQVksRUFBRSxZQUFZO1FBQzFCLEdBQUcsRUFBRSxJQUFJO1FBQ1QsV0FBVyxFQUFFLFdBQUU7S0FDaEI7SUFDRDtRQUNFLElBQUksRUFBRSxJQUFJO1FBQ1YsWUFBWSxFQUFFLGtCQUFrQjtRQUNoQyxHQUFHLEVBQUUsSUFBSTtRQUNULFdBQVcsRUFBRSxXQUFFO0tBQ2hCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsSUFBSTtRQUNWLFlBQVksRUFBRSxLQUFLO1FBQ25CLEdBQUcsRUFBRSxJQUFJO1FBQ1QsV0FBVyxFQUFFLFdBQUU7S0FDaEI7SUFDRDtRQUNFLElBQUksRUFBRSxJQUFJO1FBQ1YsWUFBWSxFQUFFLFlBQVk7UUFDMUIsR0FBRyxFQUFFLElBQUk7UUFDVCxXQUFXLEVBQUUsV0FBRTtLQUNoQjtDQUNGLENBQUEifQ==
@@ -1,186 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getTranslations = getTranslations;
7
- const i18next_1 = __importDefault(require("i18next"));
8
- // Cache for i18next instances per namespace (template)
9
- const i18nextInstances = new Map();
10
- /**
11
- * Check if value is a plain object (not array, null, etc.)
12
- * Based on Medusa's isObject implementation
13
- */
14
- function isObject(value) {
15
- return (value !== null &&
16
- typeof value === "object" &&
17
- !Array.isArray(value) &&
18
- !(value instanceof Date) &&
19
- !(value instanceof RegExp));
20
- }
21
- /**
22
- * Simple deep merge for objects (not arrays)
23
- * Arrays are replaced, not merged
24
- * Functions are preserved as-is
25
- *
26
- * @param target - Target object
27
- * @param source - Source object to merge
28
- * @returns Merged object
29
- */
30
- function deepMergeObjects(target, source) {
31
- if (!isObject(target) || !isObject(source)) {
32
- return source;
33
- }
34
- const result = { ...target };
35
- for (const [key, value] of Object.entries(source)) {
36
- if (isObject(value) && isObject(result[key])) {
37
- // Recursively merge nested objects
38
- result[key] = deepMergeObjects(result[key], value);
39
- }
40
- else {
41
- // Replace or add value
42
- result[key] = value;
43
- }
44
- }
45
- return result;
46
- }
47
- /**
48
- * Flatten translations structure - extracts 'general' object properties to root level
49
- * This allows JSON files to have nested structure while templates use flat structure
50
- *
51
- * @param translations - Translations object (may contain 'general' wrapper)
52
- * @returns Flattened translations object
53
- */
54
- function flattenTranslations(translations) {
55
- if (!isObject(translations) || !translations.general) {
56
- return translations;
57
- }
58
- // Extract 'general' properties to root level
59
- const { general, ...rest } = translations;
60
- return { ...general, ...rest };
61
- }
62
- /**
63
- * Get or create i18next instance for a specific namespace
64
- * Each template gets its own i18next instance to avoid conflicts
65
- *
66
- * @param namespace - Namespace identifier (usually template name)
67
- * @param baseResources - Base translation resources for all locales
68
- * @param customResources - Optional custom translation resources to merge
69
- * @returns i18next instance
70
- */
71
- function getI18nextInstance(namespace, baseResources, customResources) {
72
- // Build resources object for all languages
73
- const i18nextResources = {};
74
- for (const [lang, translations] of Object.entries(baseResources)) {
75
- i18nextResources[lang] = {
76
- [namespace]: translations || {}
77
- };
78
- }
79
- // Merge custom resources if provided
80
- if (customResources) {
81
- for (const [lang, translations] of Object.entries(customResources)) {
82
- if (translations) {
83
- if (!i18nextResources[lang]) {
84
- i18nextResources[lang] = {};
85
- }
86
- if (!i18nextResources[lang][namespace]) {
87
- i18nextResources[lang][namespace] = {};
88
- }
89
- i18nextResources[lang][namespace] = deepMergeObjects(i18nextResources[lang][namespace], translations);
90
- }
91
- }
92
- }
93
- // Check if instance exists and update it, or create new one
94
- if (i18nextInstances.has(namespace)) {
95
- const instance = i18nextInstances.get(namespace);
96
- // Update resources for all languages
97
- for (const [lang, resources] of Object.entries(i18nextResources)) {
98
- instance.addResourceBundle(lang, namespace, resources[namespace] || {}, true, true);
99
- }
100
- return instance;
101
- }
102
- // Create new i18next instance
103
- const instance = i18next_1.default.createInstance();
104
- instance.init({
105
- lng: 'pl',
106
- fallbackLng: 'pl',
107
- defaultNS: namespace,
108
- ns: [namespace],
109
- interpolation: {
110
- escapeValue: false,
111
- prefix: '{{',
112
- suffix: '}}',
113
- },
114
- resources: i18nextResources
115
- });
116
- i18nextInstances.set(namespace, instance);
117
- return instance;
118
- }
119
- /**
120
- * Create translation helper that uses i18next directly
121
- * Provides convenient t(key, data) method for accessing translations
122
- *
123
- * @param i18n - i18next instance
124
- * @param namespace - Namespace for i18next (e.g., 'translation')
125
- * @param translations - Base translations object for fallback/defaultValue
126
- * @returns Translation helper object with t() method
127
- */
128
- function createTranslationHelper(i18n, namespace, translations) {
129
- return {
130
- t: (key, data) => {
131
- // Build full key with namespace
132
- const fullKey = `${namespace}:${key}`;
133
- // Get default value from translations object if available
134
- const keys = key.split('.');
135
- let defaultValue = translations;
136
- for (const k of keys) {
137
- if (defaultValue && typeof defaultValue === 'object') {
138
- defaultValue = defaultValue[k];
139
- }
140
- else {
141
- defaultValue = undefined;
142
- break;
143
- }
144
- }
145
- return i18n.t(fullKey, {
146
- ...(data || {}),
147
- defaultValue: typeof defaultValue === 'string' ? defaultValue : key,
148
- interpolation: { escapeValue: false },
149
- returnObjects: false
150
- });
151
- }
152
- };
153
- }
154
- /**
155
- * Get translations for a specific locale using i18next
156
- * Supports multiple languages with fallback mechanism
157
- * Maintains compatibility with existing code (functions, customTranslations)
158
- *
159
- * @param locale - Target locale
160
- * @param translations - Record of translations by locale (from JSON imports)
161
- * @param customTranslations - Optional custom translations to merge deeply
162
- * @param namespace - Optional namespace for i18next (defaults to 'translation')
163
- * @returns Translations object compatible with existing code
164
- */
165
- function getTranslations(locale, translations, customTranslations, namespace = 'translation') {
166
- // Flatten translations structure
167
- const flattenedTranslations = Object.fromEntries(Object.entries(translations).map(([lang, trans]) => [lang, flattenTranslations(trans)]));
168
- // Flatten custom translations if provided
169
- const flattenedCustomTranslations = customTranslations
170
- ? Object.fromEntries(Object.entries(customTranslations)
171
- .filter(([, trans]) => isObject(trans))
172
- .map(([lang, trans]) => [lang, flattenTranslations(trans)]))
173
- : {};
174
- // Get or create i18next instance with merged resources
175
- const i18n = getI18nextInstance(namespace, flattenedTranslations, Object.keys(flattenedCustomTranslations).length > 0 ? flattenedCustomTranslations : undefined);
176
- i18n.changeLanguage(locale);
177
- // Merge base and custom translations for current locale
178
- const baseTranslations = flattenedTranslations[locale] || flattenedTranslations['pl'] || {};
179
- const customForLocale = flattenedCustomTranslations[locale];
180
- const mergedTranslations = customForLocale && isObject(customForLocale)
181
- ? deepMergeObjects(baseTranslations, customForLocale)
182
- : baseTranslations;
183
- // Return translation helper with direct i18next access
184
- return createTranslationHelper(i18n, namespace, mergedTranslations);
185
- }
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvdGVtcGxhdGVzL3NoYXJlZC9pMThuL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBMkxBLDBDQXNDQztBQWpPRCxzREFBOEI7QUFFOUIsdURBQXVEO0FBQ3ZELE1BQU0sZ0JBQWdCLEdBQWdDLElBQUksR0FBRyxFQUFFLENBQUM7QUFFaEU7OztHQUdHO0FBQ0gsU0FBUyxRQUFRLENBQUMsS0FBVTtJQUMxQixPQUFPLENBQ0wsS0FBSyxLQUFLLElBQUk7UUFDZCxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQ3pCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDckIsQ0FBQyxDQUFDLEtBQUssWUFBWSxJQUFJLENBQUM7UUFDeEIsQ0FBQyxDQUFDLEtBQUssWUFBWSxNQUFNLENBQUMsQ0FDM0IsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsZ0JBQWdCLENBQUMsTUFBVyxFQUFFLE1BQVc7SUFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzNDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFFN0IsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNsRCxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM3QyxtQ0FBbUM7WUFDbkMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENB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