@codee-sh/medusa-plugin-notification-emails 0.0.1 → 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.
- package/.medusa/server/emails-previews/contact-form.js +5 -7
- package/.medusa/server/emails-previews/inventory-level.js +23 -0
- package/.medusa/server/emails-previews/order-completed.js +20 -14
- package/.medusa/server/emails-previews/order-placed.js +19 -13
- package/.medusa/server/src/admin/index.js +392 -2528
- package/.medusa/server/src/admin/index.mjs +314 -2450
- package/.medusa/server/src/api/admin/notification-plugin/render-template/route.js +2 -2
- package/.medusa/server/src/hooks/api/orders.js +3 -2
- package/.medusa/server/src/templates/emails/base-template/index.js +23 -0
- package/.medusa/server/src/templates/emails/base-template/template.js +25 -0
- package/.medusa/server/src/templates/emails/blocks/components/heading.js +15 -0
- package/.medusa/server/src/templates/emails/blocks/components/product-item.js +14 -0
- package/.medusa/server/src/templates/emails/blocks/components/repeater.js +26 -0
- package/.medusa/server/src/templates/emails/blocks/components/row.js +13 -0
- package/.medusa/server/src/templates/emails/blocks/components/section.js +14 -0
- package/.medusa/server/src/templates/emails/blocks/components/separator.js +13 -0
- package/.medusa/server/src/templates/emails/blocks/components/text.js +15 -0
- package/.medusa/server/src/templates/emails/blocks/index.js +41 -0
- package/.medusa/server/src/templates/{shared/i18n → emails/blocks}/types.js +1 -1
- package/.medusa/server/src/templates/emails/contact-form/config.js +95 -0
- package/.medusa/server/src/templates/emails/contact-form/index.js +6 -17
- package/.medusa/server/src/templates/emails/contact-form/translations/de.json +14 -0
- package/.medusa/server/src/templates/emails/contact-form/translations/en.json +12 -14
- package/.medusa/server/src/templates/emails/contact-form/translations/pl.json +8 -10
- package/.medusa/server/src/templates/emails/index.js +191 -45
- package/.medusa/server/src/templates/emails/inventory-level/config.js +126 -0
- package/.medusa/server/src/templates/emails/inventory-level/index.js +8 -0
- package/.medusa/server/src/templates/emails/inventory-level/translations/en.json +12 -0
- package/.medusa/server/src/templates/emails/{contact-form → inventory-level}/translations/index.js +1 -1
- package/.medusa/server/src/templates/emails/inventory-level/translations/pl.json +14 -0
- package/.medusa/server/src/templates/emails/order-completed/config.js +233 -0
- package/.medusa/server/src/templates/emails/order-completed/index.js +6 -17
- package/.medusa/server/src/templates/emails/order-completed/translations/en.json +2 -1
- package/.medusa/server/src/templates/emails/order-completed/translations/pl.json +2 -1
- package/.medusa/server/src/templates/emails/order-placed/config.js +221 -0
- package/.medusa/server/src/templates/emails/order-placed/index.js +6 -17
- package/.medusa/server/src/templates/emails/order-placed/translations/en.json +1 -1
- package/.medusa/server/src/templates/emails/order-placed/translations/pl.json +1 -1
- package/.medusa/server/src/templates/emails/types.js +3 -1
- package/.medusa/server/src/utils/i18n/i18n.js +194 -0
- package/.medusa/server/src/utils/i18n/index.js +18 -0
- package/.medusa/server/src/utils/index.js +5 -1
- package/.medusa/server/src/utils/is-defined.js +7 -0
- package/.medusa/server/src/utils/is-object.js +7 -0
- package/.medusa/server/src/utils/pick-value-from-object.js +28 -0
- package/README.md +8 -8
- package/package.json +18 -11
- package/.medusa/server/src/templates/emails/contact-form/template.js +0 -28
- package/.medusa/server/src/templates/emails/contact-form/types.js +0 -3
- package/.medusa/server/src/templates/emails/order-completed/template.js +0 -36
- package/.medusa/server/src/templates/emails/order-completed/types.js +0 -3
- package/.medusa/server/src/templates/emails/order-placed/template.js +0 -36
- package/.medusa/server/src/templates/emails/order-placed/types.js +0 -3
- package/.medusa/server/src/templates/shared/i18n/index.js +0 -6
- package/.medusa/server/src/templates/shared/i18n/languages.js +0 -187
- 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3RlbXBsYXRlcy9zaGFyZWQvaTE4bi9sYW5ndWFnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNENBK0J3QjtBQUdYLFFBQUEsU0FBUyxHQUFlO0lBQ25DO1FBQ0UsSUFBSSxFQUFFLElBQUk7UUFDVixZQUFZLEVBQUUsVUFBVTtRQUN4QixHQUFHLEVBQUUsSUFBSTtRQUNULFdBQVcsRUFBRSxXQUFFO0tBQ2hCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsSUFBSTtRQUNWLFlBQVksRUFBRSxXQUFXO1FBQ3pCLEdBQUcsRUFBRSxJQUFJO1FBQ1QsV0FBVyxFQUFFLFdBQUU7S0FDaEI7SUFDRDtRQUNFLElBQUksRUFBRSxJQUFJO1FBQ1YsWUFBWSxFQUFFLFNBQVM7UUFDdkIsR0FBRyxFQUFFLElBQUk7UUFDVCxXQUFXLEVBQUUsYUFBSTtLQUNsQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLElBQUk7UUFDVixZQUFZLEVBQUUsU0FBUztRQUN2QixHQUFHLEVBQUUsSUFBSTtRQUNULFdBQVcsRUFBRSxXQUFFO0tBQ2hCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsSUFBSTtRQUNWLFlBQVksRUFBRSxVQUFVO1FBQ3hCLEdBQUcsRUFBRSxJQUFJO1FBQ1QsV0FBVyxFQUFFLFdBQUU7S0FDaEI7SUFDRDtRQUNFLElBQUksRUFBRSxJQUFJO1FBQ1YsWUFBWSxFQUFFLFNBQVM7UUFDdkIsR0FBRyxFQUFFLElBQUk7UUFDVCxXQUFXLEVBQUUsV0FBRTtLQUNoQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLElBQUk7UUFDVixZQUFZLEVBQUUsVUFBVTtRQUN4QixHQUFHLEVBQUUsSUFBSTtRQUNULFdBQVcsRUFBRSxXQUFFO0tBQ2hCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsSUFBSTtRQUNWLFlBQVksRUFBRSxPQUFPO1FBQ3JCLEdBQUcsRUFBRSxLQUFLO1FBQ1YsV0FB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
|
|
@@ -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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
|