@djangocfg/ext-support 1.0.21 → 1.0.22

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/dist/i18n.cjs ADDED
@@ -0,0 +1,246 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/i18n/index.ts
20
+ var i18n_exports = {};
21
+ __export(i18n_exports, {
22
+ SUPPORT_NAMESPACE: () => SUPPORT_NAMESPACE,
23
+ supportI18n: () => supportI18n,
24
+ supportTranslations: () => supportTranslations
25
+ });
26
+ module.exports = __toCommonJS(i18n_exports);
27
+ var import_i18n = require("@djangocfg/ext-base/i18n");
28
+
29
+ // src/i18n/locales/en.ts
30
+ var en = {
31
+ layout: {
32
+ title: "Support Center",
33
+ titleShort: "Support",
34
+ subtitle: "Get help from our support team",
35
+ newTicket: "New Ticket"
36
+ },
37
+ status: {
38
+ open: "Open",
39
+ waitingForUser: "Waiting for you",
40
+ waitingForAdmin: "Waiting for support",
41
+ resolved: "Resolved",
42
+ closed: "Closed"
43
+ },
44
+ ticketList: {
45
+ noTickets: "No tickets yet",
46
+ noTicketsDescription: "Create your first support ticket to get help",
47
+ loadingMore: "Loading more...",
48
+ loadMore: "Load more",
49
+ allLoaded: "All {count} tickets loaded"
50
+ },
51
+ createTicket: {
52
+ title: "New Support Ticket",
53
+ description: "Describe your issue and we will help you",
54
+ subjectLabel: "Subject",
55
+ subjectPlaceholder: "Brief description of your issue",
56
+ messageLabel: "Message",
57
+ messagePlaceholder: "Describe your issue in detail...",
58
+ cancel: "Cancel",
59
+ creating: "Creating...",
60
+ create: "Create Ticket"
61
+ },
62
+ validation: {
63
+ subjectRequired: "Subject is required",
64
+ subjectTooLong: "Subject is too long (max 200 characters)",
65
+ messageRequired: "Message is required",
66
+ messageTooLong: "Message is too long (max 5000 characters)"
67
+ },
68
+ messages: {
69
+ ticketCreated: "Ticket created successfully",
70
+ ticketCreateFailed: "Failed to create ticket",
71
+ messageSent: "Message sent",
72
+ messageSendFailed: "Failed to send message"
73
+ },
74
+ messageInput: {
75
+ placeholder: "Type your message...",
76
+ ticketClosed: "Ticket closed",
77
+ ticketClosedDescription: "This ticket has been closed. Create a new ticket if you need further assistance."
78
+ },
79
+ messageList: {
80
+ noTicketSelected: "No ticket selected",
81
+ noTicketSelectedDescription: "Select a ticket from the list to view messages",
82
+ noMessages: "No messages yet",
83
+ noMessagesDescription: "Start the conversation by sending a message",
84
+ loadingOlder: "Loading older messages...",
85
+ loadOlder: "Load older messages",
86
+ supportTeam: "Support Team",
87
+ staff: "Staff"
88
+ },
89
+ time: {
90
+ justNow: "Just now",
91
+ minutesAgo: "{count} min ago",
92
+ hoursAgo: "{count}h ago",
93
+ daysAgo: "{count}d ago"
94
+ }
95
+ };
96
+
97
+ // src/i18n/locales/ru.ts
98
+ var ru = {
99
+ layout: {
100
+ title: "\u0426\u0435\u043D\u0442\u0440 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0438",
101
+ titleShort: "\u041F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0430",
102
+ subtitle: "\u041F\u043E\u043B\u0443\u0447\u0438\u0442\u0435 \u043F\u043E\u043C\u043E\u0449\u044C \u043E\u0442 \u043D\u0430\u0448\u0435\u0439 \u043A\u043E\u043C\u0430\u043D\u0434\u044B \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0438",
103
+ newTicket: "\u041D\u043E\u0432\u043E\u0435 \u043E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0435"
104
+ },
105
+ status: {
106
+ open: "\u041E\u0442\u043A\u0440\u044B\u0442",
107
+ waitingForUser: "\u041E\u0436\u0438\u0434\u0430\u0435\u0442 \u0432\u0430\u0441",
108
+ waitingForAdmin: "\u041E\u0436\u0438\u0434\u0430\u0435\u0442 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0443",
109
+ resolved: "\u0420\u0435\u0448\u0451\u043D",
110
+ closed: "\u0417\u0430\u043A\u0440\u044B\u0442"
111
+ },
112
+ ticketList: {
113
+ noTickets: "\u041D\u0435\u0442 \u043E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0439",
114
+ noTicketsDescription: "\u0421\u043E\u0437\u0434\u0430\u0439\u0442\u0435 \u043F\u0435\u0440\u0432\u043E\u0435 \u043E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043F\u043E\u043C\u043E\u0449\u044C",
115
+ loadingMore: "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430...",
116
+ loadMore: "\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0435\u0449\u0451",
117
+ allLoaded: "\u0412\u0441\u0435 {count} \u043E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0439 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043D\u043E"
118
+ },
119
+ createTicket: {
120
+ title: "\u041D\u043E\u0432\u043E\u0435 \u043E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0435",
121
+ description: "\u041E\u043F\u0438\u0448\u0438\u0442\u0435 \u0432\u0430\u0448\u0443 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0443, \u0438 \u043C\u044B \u043F\u043E\u043C\u043E\u0436\u0435\u043C \u0432\u0430\u043C",
122
+ subjectLabel: "\u0422\u0435\u043C\u0430",
123
+ subjectPlaceholder: "\u041A\u0440\u0430\u0442\u043A\u043E\u0435 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u044B",
124
+ messageLabel: "\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435",
125
+ messagePlaceholder: "\u041E\u043F\u0438\u0448\u0438\u0442\u0435 \u0432\u0430\u0448\u0443 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0443 \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u043E...",
126
+ cancel: "\u041E\u0442\u043C\u0435\u043D\u0430",
127
+ creating: "\u0421\u043E\u0437\u0434\u0430\u043D\u0438\u0435...",
128
+ create: "\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0435"
129
+ },
130
+ validation: {
131
+ subjectRequired: "\u0422\u0435\u043C\u0430 \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u0430",
132
+ subjectTooLong: "\u0422\u0435\u043C\u0430 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u0434\u043B\u0438\u043D\u043D\u0430\u044F (\u043C\u0430\u043A\u0441. 200 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432)",
133
+ messageRequired: "\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E",
134
+ messageTooLong: "\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u0434\u043B\u0438\u043D\u043D\u043E\u0435 (\u043C\u0430\u043A\u0441. 5000 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432)"
135
+ },
136
+ messages: {
137
+ ticketCreated: "\u041E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0435 \u0441\u043E\u0437\u0434\u0430\u043D\u043E",
138
+ ticketCreateFailed: "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u043E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0435",
139
+ messageSent: "\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E",
140
+ messageSendFailed: "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435"
141
+ },
142
+ messageInput: {
143
+ placeholder: "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435...",
144
+ ticketClosed: "\u041E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0435 \u0437\u0430\u043A\u0440\u044B\u0442\u043E",
145
+ ticketClosedDescription: "\u042D\u0442\u043E \u043E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0435 \u0437\u0430\u043A\u0440\u044B\u0442\u043E. \u0421\u043E\u0437\u0434\u0430\u0439\u0442\u0435 \u043D\u043E\u0432\u043E\u0435, \u0435\u0441\u043B\u0438 \u0432\u0430\u043C \u043D\u0443\u0436\u043D\u0430 \u043F\u043E\u043C\u043E\u0449\u044C."
146
+ },
147
+ messageList: {
148
+ noTicketSelected: "\u041E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0435 \u043D\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043E",
149
+ noTicketSelectedDescription: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0435 \u0438\u0437 \u0441\u043F\u0438\u0441\u043A\u0430 \u0434\u043B\u044F \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439",
150
+ noMessages: "\u041D\u0435\u0442 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439",
151
+ noMessagesDescription: "\u041D\u0430\u0447\u043D\u0438\u0442\u0435 \u0434\u0438\u0430\u043B\u043E\u0433, \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0432 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435",
152
+ loadingOlder: "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0441\u0442\u0430\u0440\u044B\u0445 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439...",
153
+ loadOlder: "\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0441\u0442\u0430\u0440\u044B\u0435",
154
+ supportTeam: "\u0421\u043B\u0443\u0436\u0431\u0430 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0438",
155
+ staff: "\u0421\u043E\u0442\u0440\u0443\u0434\u043D\u0438\u043A"
156
+ },
157
+ time: {
158
+ justNow: "\u0422\u043E\u043B\u044C\u043A\u043E \u0447\u0442\u043E",
159
+ minutesAgo: "{count} \u043C\u0438\u043D \u043D\u0430\u0437\u0430\u0434",
160
+ hoursAgo: "{count}\u0447 \u043D\u0430\u0437\u0430\u0434",
161
+ daysAgo: "{count}\u0434 \u043D\u0430\u0437\u0430\u0434"
162
+ }
163
+ };
164
+
165
+ // src/i18n/locales/ko.ts
166
+ var ko = {
167
+ layout: {
168
+ title: "\uACE0\uAC1D\uC9C0\uC6D0 \uC13C\uD130",
169
+ titleShort: "\uACE0\uAC1D\uC9C0\uC6D0",
170
+ subtitle: "\uACE0\uAC1D\uC9C0\uC6D0\uD300\uC758 \uB3C4\uC6C0\uC744 \uBC1B\uC73C\uC138\uC694",
171
+ newTicket: "\uC0C8 \uBB38\uC758"
172
+ },
173
+ status: {
174
+ open: "\uC5F4\uB9BC",
175
+ waitingForUser: "\uD68C\uC2E0 \uB300\uAE30",
176
+ waitingForAdmin: "\uC9C0\uC6D0\uD300 \uB300\uAE30",
177
+ resolved: "\uD574\uACB0\uB428",
178
+ closed: "\uC885\uB8CC"
179
+ },
180
+ ticketList: {
181
+ noTickets: "\uBB38\uC758 \uB0B4\uC5ED \uC5C6\uC74C",
182
+ noTicketsDescription: "\uCCAB \uBC88\uC9F8 \uBB38\uC758\uB97C \uB4F1\uB85D\uD558\uC5EC \uB3C4\uC6C0\uC744 \uBC1B\uC73C\uC138\uC694",
183
+ loadingMore: "\uBD88\uB7EC\uC624\uB294 \uC911...",
184
+ loadMore: "\uB354 \uBCF4\uAE30",
185
+ allLoaded: "\uCD1D {count}\uAC1C\uC758 \uBB38\uC758\uAC00 \uB85C\uB4DC\uB428"
186
+ },
187
+ createTicket: {
188
+ title: "\uC0C8 \uBB38\uC758",
189
+ description: "\uBB38\uC81C\uB97C \uC124\uBA85\uD574 \uC8FC\uC2DC\uBA74 \uB3C4\uC6C0\uC744 \uB4DC\uB9AC\uACA0\uC2B5\uB2C8\uB2E4",
190
+ subjectLabel: "\uC81C\uBAA9",
191
+ subjectPlaceholder: "\uBB38\uC81C\uC5D0 \uB300\uD55C \uAC04\uB7B5\uD55C \uC124\uBA85",
192
+ messageLabel: "\uB0B4\uC6A9",
193
+ messagePlaceholder: "\uBB38\uC81C\uB97C \uC790\uC138\uD788 \uC124\uBA85\uD574 \uC8FC\uC138\uC694...",
194
+ cancel: "\uCDE8\uC18C",
195
+ creating: "\uC0DD\uC131 \uC911...",
196
+ create: "\uBB38\uC758 \uB4F1\uB85D"
197
+ },
198
+ validation: {
199
+ subjectRequired: "\uC81C\uBAA9\uC744 \uC785\uB825\uD574 \uC8FC\uC138\uC694",
200
+ subjectTooLong: "\uC81C\uBAA9\uC774 \uB108\uBB34 \uAE41\uB2C8\uB2E4 (\uCD5C\uB300 200\uC790)",
201
+ messageRequired: "\uB0B4\uC6A9\uC744 \uC785\uB825\uD574 \uC8FC\uC138\uC694",
202
+ messageTooLong: "\uB0B4\uC6A9\uC774 \uB108\uBB34 \uAE41\uB2C8\uB2E4 (\uCD5C\uB300 5000\uC790)"
203
+ },
204
+ messages: {
205
+ ticketCreated: "\uBB38\uC758\uAC00 \uB4F1\uB85D\uB418\uC5C8\uC2B5\uB2C8\uB2E4",
206
+ ticketCreateFailed: "\uBB38\uC758 \uB4F1\uB85D\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4",
207
+ messageSent: "\uBA54\uC2DC\uC9C0\uAC00 \uC804\uC1A1\uB418\uC5C8\uC2B5\uB2C8\uB2E4",
208
+ messageSendFailed: "\uBA54\uC2DC\uC9C0 \uC804\uC1A1\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4"
209
+ },
210
+ messageInput: {
211
+ placeholder: "\uBA54\uC2DC\uC9C0\uB97C \uC785\uB825\uD558\uC138\uC694...",
212
+ ticketClosed: "\uBB38\uC758 \uC885\uB8CC\uB428",
213
+ ticketClosedDescription: "\uC774 \uBB38\uC758\uB294 \uC885\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uCD94\uAC00 \uB3C4\uC6C0\uC774 \uD544\uC694\uD558\uC2DC\uBA74 \uC0C8 \uBB38\uC758\uB97C \uB4F1\uB85D\uD574 \uC8FC\uC138\uC694."
214
+ },
215
+ messageList: {
216
+ noTicketSelected: "\uBB38\uC758\uAC00 \uC120\uD0DD\uB418\uC9C0 \uC54A\uC74C",
217
+ noTicketSelectedDescription: "\uBA54\uC2DC\uC9C0\uB97C \uBCF4\uB824\uBA74 \uBAA9\uB85D\uC5D0\uC11C \uBB38\uC758\uB97C \uC120\uD0DD\uD558\uC138\uC694",
218
+ noMessages: "\uBA54\uC2DC\uC9C0 \uC5C6\uC74C",
219
+ noMessagesDescription: "\uBA54\uC2DC\uC9C0\uB97C \uBCF4\uB0B4 \uB300\uD654\uB97C \uC2DC\uC791\uD558\uC138\uC694",
220
+ loadingOlder: "\uC774\uC804 \uBA54\uC2DC\uC9C0 \uBD88\uB7EC\uC624\uB294 \uC911...",
221
+ loadOlder: "\uC774\uC804 \uBA54\uC2DC\uC9C0 \uBCF4\uAE30",
222
+ supportTeam: "\uACE0\uAC1D\uC9C0\uC6D0\uD300",
223
+ staff: "\uB2F4\uB2F9\uC790"
224
+ },
225
+ time: {
226
+ justNow: "\uBC29\uAE08 \uC804",
227
+ minutesAgo: "{count}\uBD84 \uC804",
228
+ hoursAgo: "{count}\uC2DC\uAC04 \uC804",
229
+ daysAgo: "{count}\uC77C \uC804"
230
+ }
231
+ };
232
+
233
+ // src/i18n/index.ts
234
+ var SUPPORT_NAMESPACE = "support";
235
+ var supportI18n = (0, import_i18n.createExtensionI18n)({
236
+ namespace: SUPPORT_NAMESPACE,
237
+ defaultLocale: "en",
238
+ locales: { en, ru, ko }
239
+ });
240
+ var supportTranslations = supportI18n.getAllTranslations();
241
+ // Annotate the CommonJS export names for ESM import in node:
242
+ 0 && (module.exports = {
243
+ SUPPORT_NAMESPACE,
244
+ supportI18n,
245
+ supportTranslations
246
+ });
@@ -0,0 +1,99 @@
1
+ import * as _djangocfg_ext_base_i18n from '@djangocfg/ext-base/i18n';
2
+ import { ExtensionKeys, PathKeys } from '@djangocfg/ext-base/i18n';
3
+
4
+ /**
5
+ * Support Extension I18n Types
6
+ */
7
+
8
+ /**
9
+ * All valid keys for support translations (with namespace)
10
+ */
11
+ type SupportKeys = ExtensionKeys<'support', SupportTranslations>;
12
+ /**
13
+ * Keys without namespace prefix (for createTypedExtensionT)
14
+ */
15
+ type SupportLocalKeys = PathKeys<SupportTranslations>;
16
+ interface SupportTranslations {
17
+ /** Layout */
18
+ layout: {
19
+ title: string;
20
+ titleShort: string;
21
+ subtitle: string;
22
+ newTicket: string;
23
+ };
24
+ /** Ticket statuses */
25
+ status: {
26
+ open: string;
27
+ waitingForUser: string;
28
+ waitingForAdmin: string;
29
+ resolved: string;
30
+ closed: string;
31
+ };
32
+ /** Ticket list */
33
+ ticketList: {
34
+ noTickets: string;
35
+ noTicketsDescription: string;
36
+ loadingMore: string;
37
+ loadMore: string;
38
+ allLoaded: string;
39
+ };
40
+ /** Create ticket dialog */
41
+ createTicket: {
42
+ title: string;
43
+ description: string;
44
+ subjectLabel: string;
45
+ subjectPlaceholder: string;
46
+ messageLabel: string;
47
+ messagePlaceholder: string;
48
+ cancel: string;
49
+ creating: string;
50
+ create: string;
51
+ };
52
+ /** Validation */
53
+ validation: {
54
+ subjectRequired: string;
55
+ subjectTooLong: string;
56
+ messageRequired: string;
57
+ messageTooLong: string;
58
+ };
59
+ /** Messages */
60
+ messages: {
61
+ ticketCreated: string;
62
+ ticketCreateFailed: string;
63
+ messageSent: string;
64
+ messageSendFailed: string;
65
+ };
66
+ /** Message input */
67
+ messageInput: {
68
+ placeholder: string;
69
+ ticketClosed: string;
70
+ ticketClosedDescription: string;
71
+ };
72
+ /** Message list */
73
+ messageList: {
74
+ noTicketSelected: string;
75
+ noTicketSelectedDescription: string;
76
+ noMessages: string;
77
+ noMessagesDescription: string;
78
+ loadingOlder: string;
79
+ loadOlder: string;
80
+ supportTeam: string;
81
+ staff: string;
82
+ };
83
+ /** Time labels */
84
+ time: {
85
+ justNow: string;
86
+ minutesAgo: string;
87
+ hoursAgo: string;
88
+ daysAgo: string;
89
+ };
90
+ }
91
+
92
+ /** Support extension namespace */
93
+ declare const SUPPORT_NAMESPACE: "support";
94
+ declare const supportI18n: _djangocfg_ext_base_i18n.ExtensionI18n<SupportTranslations>;
95
+ declare const supportTranslations: Record<string, {
96
+ [namespace: string]: SupportTranslations;
97
+ }>;
98
+
99
+ export { SUPPORT_NAMESPACE, type SupportKeys, type SupportLocalKeys, type SupportTranslations, supportI18n, supportTranslations };
package/dist/i18n.d.ts ADDED
@@ -0,0 +1,99 @@
1
+ import * as _djangocfg_ext_base_i18n from '@djangocfg/ext-base/i18n';
2
+ import { ExtensionKeys, PathKeys } from '@djangocfg/ext-base/i18n';
3
+
4
+ /**
5
+ * Support Extension I18n Types
6
+ */
7
+
8
+ /**
9
+ * All valid keys for support translations (with namespace)
10
+ */
11
+ type SupportKeys = ExtensionKeys<'support', SupportTranslations>;
12
+ /**
13
+ * Keys without namespace prefix (for createTypedExtensionT)
14
+ */
15
+ type SupportLocalKeys = PathKeys<SupportTranslations>;
16
+ interface SupportTranslations {
17
+ /** Layout */
18
+ layout: {
19
+ title: string;
20
+ titleShort: string;
21
+ subtitle: string;
22
+ newTicket: string;
23
+ };
24
+ /** Ticket statuses */
25
+ status: {
26
+ open: string;
27
+ waitingForUser: string;
28
+ waitingForAdmin: string;
29
+ resolved: string;
30
+ closed: string;
31
+ };
32
+ /** Ticket list */
33
+ ticketList: {
34
+ noTickets: string;
35
+ noTicketsDescription: string;
36
+ loadingMore: string;
37
+ loadMore: string;
38
+ allLoaded: string;
39
+ };
40
+ /** Create ticket dialog */
41
+ createTicket: {
42
+ title: string;
43
+ description: string;
44
+ subjectLabel: string;
45
+ subjectPlaceholder: string;
46
+ messageLabel: string;
47
+ messagePlaceholder: string;
48
+ cancel: string;
49
+ creating: string;
50
+ create: string;
51
+ };
52
+ /** Validation */
53
+ validation: {
54
+ subjectRequired: string;
55
+ subjectTooLong: string;
56
+ messageRequired: string;
57
+ messageTooLong: string;
58
+ };
59
+ /** Messages */
60
+ messages: {
61
+ ticketCreated: string;
62
+ ticketCreateFailed: string;
63
+ messageSent: string;
64
+ messageSendFailed: string;
65
+ };
66
+ /** Message input */
67
+ messageInput: {
68
+ placeholder: string;
69
+ ticketClosed: string;
70
+ ticketClosedDescription: string;
71
+ };
72
+ /** Message list */
73
+ messageList: {
74
+ noTicketSelected: string;
75
+ noTicketSelectedDescription: string;
76
+ noMessages: string;
77
+ noMessagesDescription: string;
78
+ loadingOlder: string;
79
+ loadOlder: string;
80
+ supportTeam: string;
81
+ staff: string;
82
+ };
83
+ /** Time labels */
84
+ time: {
85
+ justNow: string;
86
+ minutesAgo: string;
87
+ hoursAgo: string;
88
+ daysAgo: string;
89
+ };
90
+ }
91
+
92
+ /** Support extension namespace */
93
+ declare const SUPPORT_NAMESPACE: "support";
94
+ declare const supportI18n: _djangocfg_ext_base_i18n.ExtensionI18n<SupportTranslations>;
95
+ declare const supportTranslations: Record<string, {
96
+ [namespace: string]: SupportTranslations;
97
+ }>;
98
+
99
+ export { SUPPORT_NAMESPACE, type SupportKeys, type SupportLocalKeys, type SupportTranslations, supportI18n, supportTranslations };
package/dist/i18n.js ADDED
@@ -0,0 +1,220 @@
1
+ // src/i18n/index.ts
2
+ import { createExtensionI18n } from "@djangocfg/ext-base/i18n";
3
+
4
+ // src/i18n/locales/en.ts
5
+ var en = {
6
+ layout: {
7
+ title: "Support Center",
8
+ titleShort: "Support",
9
+ subtitle: "Get help from our support team",
10
+ newTicket: "New Ticket"
11
+ },
12
+ status: {
13
+ open: "Open",
14
+ waitingForUser: "Waiting for you",
15
+ waitingForAdmin: "Waiting for support",
16
+ resolved: "Resolved",
17
+ closed: "Closed"
18
+ },
19
+ ticketList: {
20
+ noTickets: "No tickets yet",
21
+ noTicketsDescription: "Create your first support ticket to get help",
22
+ loadingMore: "Loading more...",
23
+ loadMore: "Load more",
24
+ allLoaded: "All {count} tickets loaded"
25
+ },
26
+ createTicket: {
27
+ title: "New Support Ticket",
28
+ description: "Describe your issue and we will help you",
29
+ subjectLabel: "Subject",
30
+ subjectPlaceholder: "Brief description of your issue",
31
+ messageLabel: "Message",
32
+ messagePlaceholder: "Describe your issue in detail...",
33
+ cancel: "Cancel",
34
+ creating: "Creating...",
35
+ create: "Create Ticket"
36
+ },
37
+ validation: {
38
+ subjectRequired: "Subject is required",
39
+ subjectTooLong: "Subject is too long (max 200 characters)",
40
+ messageRequired: "Message is required",
41
+ messageTooLong: "Message is too long (max 5000 characters)"
42
+ },
43
+ messages: {
44
+ ticketCreated: "Ticket created successfully",
45
+ ticketCreateFailed: "Failed to create ticket",
46
+ messageSent: "Message sent",
47
+ messageSendFailed: "Failed to send message"
48
+ },
49
+ messageInput: {
50
+ placeholder: "Type your message...",
51
+ ticketClosed: "Ticket closed",
52
+ ticketClosedDescription: "This ticket has been closed. Create a new ticket if you need further assistance."
53
+ },
54
+ messageList: {
55
+ noTicketSelected: "No ticket selected",
56
+ noTicketSelectedDescription: "Select a ticket from the list to view messages",
57
+ noMessages: "No messages yet",
58
+ noMessagesDescription: "Start the conversation by sending a message",
59
+ loadingOlder: "Loading older messages...",
60
+ loadOlder: "Load older messages",
61
+ supportTeam: "Support Team",
62
+ staff: "Staff"
63
+ },
64
+ time: {
65
+ justNow: "Just now",
66
+ minutesAgo: "{count} min ago",
67
+ hoursAgo: "{count}h ago",
68
+ daysAgo: "{count}d ago"
69
+ }
70
+ };
71
+
72
+ // src/i18n/locales/ru.ts
73
+ var ru = {
74
+ layout: {
75
+ title: "\u0426\u0435\u043D\u0442\u0440 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0438",
76
+ titleShort: "\u041F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0430",
77
+ subtitle: "\u041F\u043E\u043B\u0443\u0447\u0438\u0442\u0435 \u043F\u043E\u043C\u043E\u0449\u044C \u043E\u0442 \u043D\u0430\u0448\u0435\u0439 \u043A\u043E\u043C\u0430\u043D\u0434\u044B \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0438",
78
+ newTicket: "\u041D\u043E\u0432\u043E\u0435 \u043E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0435"
79
+ },
80
+ status: {
81
+ open: "\u041E\u0442\u043A\u0440\u044B\u0442",
82
+ waitingForUser: "\u041E\u0436\u0438\u0434\u0430\u0435\u0442 \u0432\u0430\u0441",
83
+ waitingForAdmin: "\u041E\u0436\u0438\u0434\u0430\u0435\u0442 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0443",
84
+ resolved: "\u0420\u0435\u0448\u0451\u043D",
85
+ closed: "\u0417\u0430\u043A\u0440\u044B\u0442"
86
+ },
87
+ ticketList: {
88
+ noTickets: "\u041D\u0435\u0442 \u043E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0439",
89
+ noTicketsDescription: "\u0421\u043E\u0437\u0434\u0430\u0439\u0442\u0435 \u043F\u0435\u0440\u0432\u043E\u0435 \u043E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043F\u043E\u043C\u043E\u0449\u044C",
90
+ loadingMore: "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430...",
91
+ loadMore: "\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0435\u0449\u0451",
92
+ allLoaded: "\u0412\u0441\u0435 {count} \u043E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0439 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043D\u043E"
93
+ },
94
+ createTicket: {
95
+ title: "\u041D\u043E\u0432\u043E\u0435 \u043E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0435",
96
+ description: "\u041E\u043F\u0438\u0448\u0438\u0442\u0435 \u0432\u0430\u0448\u0443 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0443, \u0438 \u043C\u044B \u043F\u043E\u043C\u043E\u0436\u0435\u043C \u0432\u0430\u043C",
97
+ subjectLabel: "\u0422\u0435\u043C\u0430",
98
+ subjectPlaceholder: "\u041A\u0440\u0430\u0442\u043A\u043E\u0435 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u044B",
99
+ messageLabel: "\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435",
100
+ messagePlaceholder: "\u041E\u043F\u0438\u0448\u0438\u0442\u0435 \u0432\u0430\u0448\u0443 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0443 \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u043E...",
101
+ cancel: "\u041E\u0442\u043C\u0435\u043D\u0430",
102
+ creating: "\u0421\u043E\u0437\u0434\u0430\u043D\u0438\u0435...",
103
+ create: "\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0435"
104
+ },
105
+ validation: {
106
+ subjectRequired: "\u0422\u0435\u043C\u0430 \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u0430",
107
+ subjectTooLong: "\u0422\u0435\u043C\u0430 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u0434\u043B\u0438\u043D\u043D\u0430\u044F (\u043C\u0430\u043A\u0441. 200 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432)",
108
+ messageRequired: "\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E",
109
+ messageTooLong: "\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u0434\u043B\u0438\u043D\u043D\u043E\u0435 (\u043C\u0430\u043A\u0441. 5000 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432)"
110
+ },
111
+ messages: {
112
+ ticketCreated: "\u041E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0435 \u0441\u043E\u0437\u0434\u0430\u043D\u043E",
113
+ ticketCreateFailed: "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u043E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0435",
114
+ messageSent: "\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E",
115
+ messageSendFailed: "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435"
116
+ },
117
+ messageInput: {
118
+ placeholder: "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435...",
119
+ ticketClosed: "\u041E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0435 \u0437\u0430\u043A\u0440\u044B\u0442\u043E",
120
+ ticketClosedDescription: "\u042D\u0442\u043E \u043E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0435 \u0437\u0430\u043A\u0440\u044B\u0442\u043E. \u0421\u043E\u0437\u0434\u0430\u0439\u0442\u0435 \u043D\u043E\u0432\u043E\u0435, \u0435\u0441\u043B\u0438 \u0432\u0430\u043C \u043D\u0443\u0436\u043D\u0430 \u043F\u043E\u043C\u043E\u0449\u044C."
121
+ },
122
+ messageList: {
123
+ noTicketSelected: "\u041E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0435 \u043D\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043E",
124
+ noTicketSelectedDescription: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043E\u0431\u0440\u0430\u0449\u0435\u043D\u0438\u0435 \u0438\u0437 \u0441\u043F\u0438\u0441\u043A\u0430 \u0434\u043B\u044F \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439",
125
+ noMessages: "\u041D\u0435\u0442 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439",
126
+ noMessagesDescription: "\u041D\u0430\u0447\u043D\u0438\u0442\u0435 \u0434\u0438\u0430\u043B\u043E\u0433, \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0432 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435",
127
+ loadingOlder: "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0441\u0442\u0430\u0440\u044B\u0445 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439...",
128
+ loadOlder: "\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0441\u0442\u0430\u0440\u044B\u0435",
129
+ supportTeam: "\u0421\u043B\u0443\u0436\u0431\u0430 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0438",
130
+ staff: "\u0421\u043E\u0442\u0440\u0443\u0434\u043D\u0438\u043A"
131
+ },
132
+ time: {
133
+ justNow: "\u0422\u043E\u043B\u044C\u043A\u043E \u0447\u0442\u043E",
134
+ minutesAgo: "{count} \u043C\u0438\u043D \u043D\u0430\u0437\u0430\u0434",
135
+ hoursAgo: "{count}\u0447 \u043D\u0430\u0437\u0430\u0434",
136
+ daysAgo: "{count}\u0434 \u043D\u0430\u0437\u0430\u0434"
137
+ }
138
+ };
139
+
140
+ // src/i18n/locales/ko.ts
141
+ var ko = {
142
+ layout: {
143
+ title: "\uACE0\uAC1D\uC9C0\uC6D0 \uC13C\uD130",
144
+ titleShort: "\uACE0\uAC1D\uC9C0\uC6D0",
145
+ subtitle: "\uACE0\uAC1D\uC9C0\uC6D0\uD300\uC758 \uB3C4\uC6C0\uC744 \uBC1B\uC73C\uC138\uC694",
146
+ newTicket: "\uC0C8 \uBB38\uC758"
147
+ },
148
+ status: {
149
+ open: "\uC5F4\uB9BC",
150
+ waitingForUser: "\uD68C\uC2E0 \uB300\uAE30",
151
+ waitingForAdmin: "\uC9C0\uC6D0\uD300 \uB300\uAE30",
152
+ resolved: "\uD574\uACB0\uB428",
153
+ closed: "\uC885\uB8CC"
154
+ },
155
+ ticketList: {
156
+ noTickets: "\uBB38\uC758 \uB0B4\uC5ED \uC5C6\uC74C",
157
+ noTicketsDescription: "\uCCAB \uBC88\uC9F8 \uBB38\uC758\uB97C \uB4F1\uB85D\uD558\uC5EC \uB3C4\uC6C0\uC744 \uBC1B\uC73C\uC138\uC694",
158
+ loadingMore: "\uBD88\uB7EC\uC624\uB294 \uC911...",
159
+ loadMore: "\uB354 \uBCF4\uAE30",
160
+ allLoaded: "\uCD1D {count}\uAC1C\uC758 \uBB38\uC758\uAC00 \uB85C\uB4DC\uB428"
161
+ },
162
+ createTicket: {
163
+ title: "\uC0C8 \uBB38\uC758",
164
+ description: "\uBB38\uC81C\uB97C \uC124\uBA85\uD574 \uC8FC\uC2DC\uBA74 \uB3C4\uC6C0\uC744 \uB4DC\uB9AC\uACA0\uC2B5\uB2C8\uB2E4",
165
+ subjectLabel: "\uC81C\uBAA9",
166
+ subjectPlaceholder: "\uBB38\uC81C\uC5D0 \uB300\uD55C \uAC04\uB7B5\uD55C \uC124\uBA85",
167
+ messageLabel: "\uB0B4\uC6A9",
168
+ messagePlaceholder: "\uBB38\uC81C\uB97C \uC790\uC138\uD788 \uC124\uBA85\uD574 \uC8FC\uC138\uC694...",
169
+ cancel: "\uCDE8\uC18C",
170
+ creating: "\uC0DD\uC131 \uC911...",
171
+ create: "\uBB38\uC758 \uB4F1\uB85D"
172
+ },
173
+ validation: {
174
+ subjectRequired: "\uC81C\uBAA9\uC744 \uC785\uB825\uD574 \uC8FC\uC138\uC694",
175
+ subjectTooLong: "\uC81C\uBAA9\uC774 \uB108\uBB34 \uAE41\uB2C8\uB2E4 (\uCD5C\uB300 200\uC790)",
176
+ messageRequired: "\uB0B4\uC6A9\uC744 \uC785\uB825\uD574 \uC8FC\uC138\uC694",
177
+ messageTooLong: "\uB0B4\uC6A9\uC774 \uB108\uBB34 \uAE41\uB2C8\uB2E4 (\uCD5C\uB300 5000\uC790)"
178
+ },
179
+ messages: {
180
+ ticketCreated: "\uBB38\uC758\uAC00 \uB4F1\uB85D\uB418\uC5C8\uC2B5\uB2C8\uB2E4",
181
+ ticketCreateFailed: "\uBB38\uC758 \uB4F1\uB85D\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4",
182
+ messageSent: "\uBA54\uC2DC\uC9C0\uAC00 \uC804\uC1A1\uB418\uC5C8\uC2B5\uB2C8\uB2E4",
183
+ messageSendFailed: "\uBA54\uC2DC\uC9C0 \uC804\uC1A1\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4"
184
+ },
185
+ messageInput: {
186
+ placeholder: "\uBA54\uC2DC\uC9C0\uB97C \uC785\uB825\uD558\uC138\uC694...",
187
+ ticketClosed: "\uBB38\uC758 \uC885\uB8CC\uB428",
188
+ ticketClosedDescription: "\uC774 \uBB38\uC758\uB294 \uC885\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uCD94\uAC00 \uB3C4\uC6C0\uC774 \uD544\uC694\uD558\uC2DC\uBA74 \uC0C8 \uBB38\uC758\uB97C \uB4F1\uB85D\uD574 \uC8FC\uC138\uC694."
189
+ },
190
+ messageList: {
191
+ noTicketSelected: "\uBB38\uC758\uAC00 \uC120\uD0DD\uB418\uC9C0 \uC54A\uC74C",
192
+ noTicketSelectedDescription: "\uBA54\uC2DC\uC9C0\uB97C \uBCF4\uB824\uBA74 \uBAA9\uB85D\uC5D0\uC11C \uBB38\uC758\uB97C \uC120\uD0DD\uD558\uC138\uC694",
193
+ noMessages: "\uBA54\uC2DC\uC9C0 \uC5C6\uC74C",
194
+ noMessagesDescription: "\uBA54\uC2DC\uC9C0\uB97C \uBCF4\uB0B4 \uB300\uD654\uB97C \uC2DC\uC791\uD558\uC138\uC694",
195
+ loadingOlder: "\uC774\uC804 \uBA54\uC2DC\uC9C0 \uBD88\uB7EC\uC624\uB294 \uC911...",
196
+ loadOlder: "\uC774\uC804 \uBA54\uC2DC\uC9C0 \uBCF4\uAE30",
197
+ supportTeam: "\uACE0\uAC1D\uC9C0\uC6D0\uD300",
198
+ staff: "\uB2F4\uB2F9\uC790"
199
+ },
200
+ time: {
201
+ justNow: "\uBC29\uAE08 \uC804",
202
+ minutesAgo: "{count}\uBD84 \uC804",
203
+ hoursAgo: "{count}\uC2DC\uAC04 \uC804",
204
+ daysAgo: "{count}\uC77C \uC804"
205
+ }
206
+ };
207
+
208
+ // src/i18n/index.ts
209
+ var SUPPORT_NAMESPACE = "support";
210
+ var supportI18n = createExtensionI18n({
211
+ namespace: SUPPORT_NAMESPACE,
212
+ defaultLocale: "en",
213
+ locales: { en, ru, ko }
214
+ });
215
+ var supportTranslations = supportI18n.getAllTranslations();
216
+ export {
217
+ SUPPORT_NAMESPACE,
218
+ supportI18n,
219
+ supportTranslations
220
+ };