create-procode 1.0.0 → 1.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/README.md +28 -2
- package/package.json +1 -1
- package/src/args.mjs +6 -0
- package/src/cli.mjs +123 -1
- package/src/deps.mjs +208 -195
- package/src/multiLanguage.mjs +409 -0
- package/templates/base/README.md.tmpl +5 -3
- package/templates/base/src/assets/styles/index.scss.tmpl +149 -146
- package/templates/base/vite.config.ts.tmpl +83 -54
- package/templates/multi-language/locales/fr/core.json +76 -0
- package/templates/multi-language/locales/fr/kendo.json +181 -0
- package/templates/multi-language/locales/fr/template.json +169 -0
- package/templates/multi-language/locales/fr/widget.json +65 -0
- package/templates/multi-language/locales/hi/core.json +76 -0
- package/templates/multi-language/locales/hi/kendo.json +181 -0
- package/templates/multi-language/locales/hi/template.json +169 -0
- package/templates/multi-language/locales/hi/widget.json +65 -0
- package/templates/multi-language/sample/fr.json +55 -0
- package/templates/multi-language/sample/hi.json +55 -0
- package/templates/tests/src/Module/schemas.test.ts +50 -0
- package/templates/tests-multi-language/src/multiLanguage/enText.ts +68 -0
- package/templates/tests-multi-language/src/multiLanguage/translations.test.ts +92 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
{
|
|
2
|
+
"grid.noRecords": "कोई रिकॉर्ड उपलब्ध नहीं",
|
|
3
|
+
"grid.groupPanelEmpty": "उस कॉलम के अनुसार समूहित करने के लिए कॉलम हेडर को खींचकर यहाँ छोड़ें",
|
|
4
|
+
"grid.groupExpand": "समूह विस्तृत करें",
|
|
5
|
+
"grid.groupCollapse": "समूह संक्षिप्त करें",
|
|
6
|
+
"grid.detailExpand": "विवरण पंक्ति विस्तृत करें",
|
|
7
|
+
"grid.detailCollapse": "विवरण पंक्ति संक्षिप्त करें",
|
|
8
|
+
"grid.filterApplyButton": "लागू करें",
|
|
9
|
+
"grid.filterClearButton": "साफ़ करें",
|
|
10
|
+
"grid.filterClearAllButton": "सभी फ़िल्टर साफ़ करें",
|
|
11
|
+
"grid.filterResetButton": "रीसेट",
|
|
12
|
+
"grid.filterSubmitButton": "फ़िल्टर",
|
|
13
|
+
"grid.filterTitle": "फ़िल्टर",
|
|
14
|
+
"grid.filterAriaLabel": "फ़िल्टर",
|
|
15
|
+
"grid.filterChooseOperator": "ऑपरेटर चुनें",
|
|
16
|
+
"grid.filterSelectAll": "सभी चुनें",
|
|
17
|
+
"grid.filterCheckAll": "सभी चिह्नित करें",
|
|
18
|
+
"grid.filterEqOperator": "के बराबर है",
|
|
19
|
+
"grid.filterNotEqOperator": "के बराबर नहीं है",
|
|
20
|
+
"grid.filterIsNullOperator": "शून्य (null) है",
|
|
21
|
+
"grid.filterIsNotNullOperator": "शून्य (null) नहीं है",
|
|
22
|
+
"grid.filterIsEmptyOperator": "खाली है",
|
|
23
|
+
"grid.filterIsNotEmptyOperator": "खाली नहीं है",
|
|
24
|
+
"grid.filterStartsWithOperator": "से शुरू होता है",
|
|
25
|
+
"grid.filterContainsOperator": "शामिल है",
|
|
26
|
+
"grid.filterNotContainsOperator": "शामिल नहीं है",
|
|
27
|
+
"grid.filterEndsWithOperator": "पर समाप्त होता है",
|
|
28
|
+
"grid.filterGteOperator": "से अधिक या बराबर है",
|
|
29
|
+
"grid.filterGtOperator": "से अधिक है",
|
|
30
|
+
"grid.filterLteOperator": "से कम या बराबर है",
|
|
31
|
+
"grid.filterLtOperator": "से कम है",
|
|
32
|
+
"grid.filterIsTrue": "सही है",
|
|
33
|
+
"grid.filterIsFalse": "ग़लत है",
|
|
34
|
+
"grid.filterBooleanAll": "(सभी)",
|
|
35
|
+
"grid.filterAfterOrEqualOperator": "के बाद या उसी दिन है",
|
|
36
|
+
"grid.filterAfterOperator": "के बाद है",
|
|
37
|
+
"grid.filterBeforeOperator": "से पहले है",
|
|
38
|
+
"grid.filterBeforeOrEqualOperator": "से पहले या उसी दिन है",
|
|
39
|
+
"grid.filterAndLogic": "और",
|
|
40
|
+
"grid.filterOrLogic": "या",
|
|
41
|
+
"grid.sortAscending": "आरोही क्रम में",
|
|
42
|
+
"grid.sortDescending": "अवरोही क्रम में",
|
|
43
|
+
"grid.sortAriaLabel": "क्रमबद्ध करने योग्य",
|
|
44
|
+
"grid.groupPanelAriaLabel": "समूह पैनल",
|
|
45
|
+
"grid.gridAriaLabel": "तालिका",
|
|
46
|
+
"grid.selectRow": "पंक्ति चुनें",
|
|
47
|
+
"grid.columnMenu": "कॉलम मेनू",
|
|
48
|
+
"grid.searchPlaceholder": "खोजें",
|
|
49
|
+
"grid.searchboxPlaceholder": "खोजें...",
|
|
50
|
+
"grid.pagerItemsPerPage": "आइटम प्रति पृष्ठ",
|
|
51
|
+
"grid.pagerInfo": "{2} में से {0} - {1} आइटम",
|
|
52
|
+
"grid.pagerFirstPage": "पहले पृष्ठ पर जाएँ",
|
|
53
|
+
"grid.pagerPreviousPage": "पिछले पृष्ठ पर जाएँ",
|
|
54
|
+
"grid.pagerNextPage": "अगले पृष्ठ पर जाएँ",
|
|
55
|
+
"grid.pagerLastPage": "अंतिम पृष्ठ पर जाएँ",
|
|
56
|
+
"grid.pagerPage": "पृष्ठ",
|
|
57
|
+
"grid.pagerOf": "में से",
|
|
58
|
+
"grid.pagerPageSizeAriaLabel": "पृष्ठ आकार",
|
|
59
|
+
"grid.pagerPageNumberLabel": "पृष्ठ संख्या टाइप करें",
|
|
60
|
+
"grid.pagerMoreButtonLabel": "और पृष्ठ",
|
|
61
|
+
"pager.itemsPerPage": "आइटम प्रति पृष्ठ",
|
|
62
|
+
"pager.pageSelection": "पृष्ठ चुनें",
|
|
63
|
+
"pager.info": "{2} में से {0} - {1} आइटम",
|
|
64
|
+
"pager.firstPage": "पहले पृष्ठ पर जाएँ",
|
|
65
|
+
"pager.previousPage": "पिछले पृष्ठ पर जाएँ",
|
|
66
|
+
"pager.nextPage": "अगले पृष्ठ पर जाएँ",
|
|
67
|
+
"pager.lastPage": "अंतिम पृष्ठ पर जाएँ",
|
|
68
|
+
"pager.page": "पृष्ठ",
|
|
69
|
+
"pager.of": "में से",
|
|
70
|
+
"pager.pageLabel": "पृष्ठ",
|
|
71
|
+
"pager.ariaLabel": "पृष्ठ नेविगेशन",
|
|
72
|
+
"pager.pageSizeAriaLabel": "पृष्ठ आकार",
|
|
73
|
+
"pager.mobileSelect": "चुनें",
|
|
74
|
+
"pager.moreButtonLabel": "और पृष्ठ",
|
|
75
|
+
"pager.pageNumberLabel": "पृष्ठ संख्या टाइप करें",
|
|
76
|
+
"sort.ariaLabel": "क्रमबद्ध करने योग्य",
|
|
77
|
+
"filter.ariaLabel": "फ़िल्टर",
|
|
78
|
+
"filter.eqOperator": "के बराबर है",
|
|
79
|
+
"filter.notEqOperator": "के बराबर नहीं है",
|
|
80
|
+
"filter.isNullOperator": "शून्य (null) है",
|
|
81
|
+
"filter.isNotNullOperator": "शून्य (null) नहीं है",
|
|
82
|
+
"filter.isEmptyOperator": "खाली है",
|
|
83
|
+
"filter.isNotEmptyOperator": "खाली नहीं है",
|
|
84
|
+
"filter.startsWithOperator": "से शुरू होता है",
|
|
85
|
+
"filter.containsOperator": "शामिल है",
|
|
86
|
+
"filter.notContainsOperator": "शामिल नहीं है",
|
|
87
|
+
"filter.endsWithOperator": "पर समाप्त होता है",
|
|
88
|
+
"filter.gteOperator": "से अधिक या बराबर है",
|
|
89
|
+
"filter.gtOperator": "से अधिक है",
|
|
90
|
+
"filter.lteOperator": "से कम या बराबर है",
|
|
91
|
+
"filter.ltOperator": "से कम है",
|
|
92
|
+
"filter.isTrue": "सही है",
|
|
93
|
+
"filter.isFalse": "ग़लत है",
|
|
94
|
+
"filter.afterOrEqualOperator": "के बाद या उसी दिन है",
|
|
95
|
+
"filter.afterOperator": "के बाद है",
|
|
96
|
+
"filter.beforeOperator": "से पहले है",
|
|
97
|
+
"filter.beforeOrEqualOperator": "से पहले या उसी दिन है",
|
|
98
|
+
"filter.andLogic": "और",
|
|
99
|
+
"filter.orLogic": "या",
|
|
100
|
+
"calendar.today": "आज",
|
|
101
|
+
"calendar.titleAriaLabel": "मूल दृश्य पर जाएँ:",
|
|
102
|
+
"datepicker.toggleCalendar": "कैलेंडर टॉगल करें",
|
|
103
|
+
"datepicker.selectDate": "दिनांक चुनें",
|
|
104
|
+
"dateinput.increment": "मान बढ़ाएँ",
|
|
105
|
+
"dateinput.decrement": "मान घटाएँ",
|
|
106
|
+
"dateinput.clear": "साफ़ करें",
|
|
107
|
+
"multiviewcalendar.prevView": "पिछले दृश्य पर जाएँ",
|
|
108
|
+
"multiviewcalendar.nextView": "अगले दृश्य पर जाएँ",
|
|
109
|
+
"timepicker.now": "अभी",
|
|
110
|
+
"timepicker.set": "सेट करें",
|
|
111
|
+
"timepicker.cancel": "रद्द करें",
|
|
112
|
+
"timepicker.selectNow": "अभी का समय चुनें",
|
|
113
|
+
"timepicker.toggleTimeSelector": "समय चयनकर्ता टॉगल करें",
|
|
114
|
+
"timepicker.toggleClock": "घड़ी टॉगल करें",
|
|
115
|
+
"timepicker.selectTime": "समय चुनें",
|
|
116
|
+
"datetimepicker.date": "दिनांक",
|
|
117
|
+
"datetimepicker.time": "समय",
|
|
118
|
+
"datetimepicker.cancel": "रद्द करें",
|
|
119
|
+
"datetimepicker.set": "सेट करें",
|
|
120
|
+
"datetimepicker.toggleDateTimeSelector": "दिनांक-समय चयनकर्ता टॉगल करें",
|
|
121
|
+
"datetimepicker.selectDateAndTime": "दिनांक और समय चुनें",
|
|
122
|
+
"daterangepicker.cancel": "रद्द करें",
|
|
123
|
+
"daterangepicker.set": "सेट करें",
|
|
124
|
+
"daterangepicker.start": "प्रारंभ",
|
|
125
|
+
"daterangepicker.end": "समाप्ति",
|
|
126
|
+
"daterangepicker.selectStartDate": "प्रारंभ दिनांक",
|
|
127
|
+
"daterangepicker.selectEndDate": "समाप्ति दिनांक",
|
|
128
|
+
"daterangepicker.swapStartEnd": "प्रारंभ और समाप्ति मान अदला-बदली करें",
|
|
129
|
+
"dropdowns.clear": "साफ़ करें",
|
|
130
|
+
"dropdowns.nodata": "कोई डेटा नहीं मिला।",
|
|
131
|
+
"dropdowns.dropDownListArrowBtnAriaLabel": "चुनें",
|
|
132
|
+
"dropdowns.dropDownListAdaptiveFilterPlaceholder": "फ़िल्टर",
|
|
133
|
+
"dropdowns.listFilterAriaLabel": "खोजें",
|
|
134
|
+
"dropdowns.autoCompleteListAriaLabel": "सुझाव",
|
|
135
|
+
"dropdowns.listAriaLabel": "विकल्प",
|
|
136
|
+
"dropdowns.selectAllText": "सभी चुनें",
|
|
137
|
+
"dropdowns.itemsSelectedText": "{0} आइटम चयनित",
|
|
138
|
+
"dropdowns.summaryTagText": "+{0} और",
|
|
139
|
+
"dropdowns.comboArrowBtnAriaLabelExpand": "कॉम्बो बॉक्स विस्तृत करें",
|
|
140
|
+
"dropdowns.comboArrowBtnAriaLabelCollapse": "कॉम्बो बॉक्स संक्षिप्त करें",
|
|
141
|
+
"upload.cancel": "रद्द करें",
|
|
142
|
+
"upload.clearSelectedFiles": "साफ़ करें",
|
|
143
|
+
"upload.dropFilesHere": "अपलोड करने के लिए फ़ाइलें यहाँ छोड़ें",
|
|
144
|
+
"upload.dropZoneHint": "अपलोड करने के लिए फ़ाइलें खींचकर यहाँ छोड़ें।",
|
|
145
|
+
"upload.headerStatusUploaded": "पूर्ण",
|
|
146
|
+
"upload.headerStatusUploading": "अपलोड हो रहा है...",
|
|
147
|
+
"upload.invalidFileExtension": "इस फ़ाइल प्रकार की अनुमति नहीं है।",
|
|
148
|
+
"upload.invalidFiles": "अमान्य फ़ाइल(ें)। कृपया फ़ाइल अपलोड की आवश्यकताएँ जाँचें।",
|
|
149
|
+
"upload.invalidMaxFileSize": "फ़ाइल का आकार बहुत बड़ा है।",
|
|
150
|
+
"upload.invalidMinFileSize": "फ़ाइल का आकार बहुत छोटा है।",
|
|
151
|
+
"upload.remove": "हटाएँ",
|
|
152
|
+
"upload.retry": "पुनः प्रयास करें",
|
|
153
|
+
"upload.select": "फ़ाइलें चुनें...",
|
|
154
|
+
"upload.selectTitle": "और फ़ाइलें चुनने के लिए दबाएँ",
|
|
155
|
+
"upload.selectNoFilesTitle": "कोई फ़ाइल चयनित नहीं",
|
|
156
|
+
"upload.uploadSelectedFiles": "अपलोड करें",
|
|
157
|
+
"upload.total": "कुल",
|
|
158
|
+
"upload.files": "फ़ाइलें",
|
|
159
|
+
"upload.statusUploaded": "फ़ाइल(ें) सफलतापूर्वक अपलोड हुईं।",
|
|
160
|
+
"upload.statusUploadFailed": "फ़ाइल(ें) अपलोड नहीं हो सकीं।",
|
|
161
|
+
"upload.dropZoneNote": "केवल {0} फ़ाइलों की अनुमति है।",
|
|
162
|
+
"dialogs.windowMaximizeButton": "अधिकतम करें",
|
|
163
|
+
"dialogs.windowMinimizeButton": "न्यूनतम करें",
|
|
164
|
+
"dialogs.windowRestoreButton": "पुनर्स्थापित करें",
|
|
165
|
+
"dialogs.windowCloseButton": "बंद करें",
|
|
166
|
+
"numerictextbox.increment": "मान बढ़ाएँ",
|
|
167
|
+
"numerictextbox.decrement": "मान घटाएँ",
|
|
168
|
+
"slider.increment": "बढ़ाएँ",
|
|
169
|
+
"slider.decrement": "घटाएँ",
|
|
170
|
+
"slider.dragTitle": "खींचें",
|
|
171
|
+
"slider.ariaLabel": "स्लाइडर",
|
|
172
|
+
"switch.ariaLabel": "स्विच मान टॉगल करें",
|
|
173
|
+
"checkbox.optionalText": "(वैकल्पिक)",
|
|
174
|
+
"rating.ariaLabel": "रेटिंग",
|
|
175
|
+
"flatColorPicker.cancelBtn": "रद्द करें",
|
|
176
|
+
"flatColorPicker.applyBtn": "लागू करें",
|
|
177
|
+
"flatColorPicker.clearBtn": "रंग मान साफ़ करें",
|
|
178
|
+
"colorPicker.adaptiveTitle": "रंग चुनें",
|
|
179
|
+
"colorPicker.ariaLabel": "रंग चयनकर्ता",
|
|
180
|
+
"splitButton.toggleDropdown": "ड्रॉपडाउन टॉगल करें"
|
|
181
|
+
}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
{
|
|
2
|
+
"languageSelector.label": "भाषा",
|
|
3
|
+
"languageSelector.current": "भाषा: {language}",
|
|
4
|
+
"alert.yes": "हाँ",
|
|
5
|
+
"alert.no": "नहीं",
|
|
6
|
+
"alert.ok": "ठीक है",
|
|
7
|
+
"menu.noImage": "कोई छवि नहीं",
|
|
8
|
+
"tabs.scrollBack": "टैब पीछे स्क्रॉल करें",
|
|
9
|
+
"tabs.scrollForward": "टैब आगे स्क्रॉल करें",
|
|
10
|
+
"stepper.progress": "प्रगति",
|
|
11
|
+
"stepper.optional": "वैकल्पिक",
|
|
12
|
+
"stepper.stepLabel": "चरण {n}",
|
|
13
|
+
"stepper.needsAttention": ", ध्यान देने की आवश्यकता है",
|
|
14
|
+
"stepper.completed": ", पूर्ण",
|
|
15
|
+
"toolbar.common.close": "बंद करें",
|
|
16
|
+
"toolbar.common.clearSearch": "खोज साफ़ करें",
|
|
17
|
+
"toolbar.common.searchPlaceholder": "खोजने के लिए यहाँ टाइप करें . . .",
|
|
18
|
+
"toolbar.globalSearch.search": "खोजें",
|
|
19
|
+
"toolbar.advancedSearch.button": "उन्नत खोज",
|
|
20
|
+
"toolbar.advancedSearch.filterHeader": "फ़िल्टर",
|
|
21
|
+
"toolbar.advancedSearch.operatorHeader": "ऑपरेटर",
|
|
22
|
+
"toolbar.advancedSearch.valueHeader": "मान",
|
|
23
|
+
"toolbar.advancedSearch.selectFilter": "फ़िल्टर चुनें...",
|
|
24
|
+
"toolbar.advancedSearch.selectOperator": "ऑपरेटर चुनें...",
|
|
25
|
+
"toolbar.advancedSearch.add": "जोड़ें",
|
|
26
|
+
"toolbar.advancedSearch.addRow": "फ़िल्टर पंक्ति जोड़ें",
|
|
27
|
+
"toolbar.advancedSearch.remove": "हटाएँ",
|
|
28
|
+
"toolbar.advancedSearch.removeRow": "यह फ़िल्टर पंक्ति हटाएँ",
|
|
29
|
+
"toolbar.advancedSearch.clearFilter": "फ़िल्टर साफ़ करें",
|
|
30
|
+
"toolbar.advancedSearch.cancel": "रद्द करें",
|
|
31
|
+
"toolbar.advancedSearch.applyFilter": "फ़िल्टर लागू करें",
|
|
32
|
+
"toolbar.advancedSearch.operators.equal": "बराबर है",
|
|
33
|
+
"toolbar.advancedSearch.operators.notEqual": "बराबर नहीं है",
|
|
34
|
+
"toolbar.advancedSearch.operators.includes": "शामिल है",
|
|
35
|
+
"toolbar.advancedSearch.operators.notIncludes": "शामिल नहीं है",
|
|
36
|
+
"toolbar.advancedSearch.operators.isEmpty": "खाली है",
|
|
37
|
+
"toolbar.advancedSearch.operators.isNotEmpty": "खाली नहीं है",
|
|
38
|
+
"toolbar.advancedSearch.operators.greaterThan": "से अधिक है",
|
|
39
|
+
"toolbar.advancedSearch.operators.greaterThanOrEqual": "से अधिक या बराबर है",
|
|
40
|
+
"toolbar.advancedSearch.operators.lessThan": "से कम है",
|
|
41
|
+
"toolbar.advancedSearch.operators.lessThanOrEqual": "से कम या बराबर है",
|
|
42
|
+
"toolbar.advancedSearch.operators.between": "के बीच है",
|
|
43
|
+
"toolbar.advancedSearch.operators.notBetween": "के बीच नहीं है",
|
|
44
|
+
"toolbar.advancedSearch.operators.inList": "सूची में है",
|
|
45
|
+
"toolbar.advancedSearch.operators.notInList": "सूची में नहीं है",
|
|
46
|
+
"toolbar.advancedSearch.value.selectValues": "मान चुनें",
|
|
47
|
+
"toolbar.advancedSearch.value.selectValue": "मान चुनें...",
|
|
48
|
+
"toolbar.advancedSearch.value.typeValue": "मान टाइप करें...",
|
|
49
|
+
"toolbar.advancedSearch.value.from": "से",
|
|
50
|
+
"toolbar.advancedSearch.value.to": "तक",
|
|
51
|
+
"toolbar.advancedSearch.value.true": "सही",
|
|
52
|
+
"toolbar.advancedSearch.value.false": "ग़लत",
|
|
53
|
+
"toolbar.advancedSearch.rowError.chooseFilter": "इस पंक्ति के लिए एक फ़िल्टर चुनें।",
|
|
54
|
+
"toolbar.advancedSearch.rowError.chooseOperator": "इस पंक्ति के लिए एक ऑपरेटर चुनें।",
|
|
55
|
+
"toolbar.advancedSearch.rowError.enterValue": "इस पंक्ति के लिए एक मान दर्ज करें।",
|
|
56
|
+
"toolbar.advancedSearch.criteria.label": "मिलान मानदंड",
|
|
57
|
+
"toolbar.advancedSearch.criteria.reset": "ऊपर की पंक्तियों पर रीसेट करें",
|
|
58
|
+
"toolbar.advancedSearch.criteria.copy": "व्यंजक कॉपी करें",
|
|
59
|
+
"toolbar.advancedSearch.criteria.hint": "ऊपर की पंक्तियों को AND / OR से जोड़ें और कोष्ठकों से समूहित करें — ((1) OR (2)) AND (3)।",
|
|
60
|
+
"toolbar.advancedSearch.criteria.errors.empty": "एक मानदंड व्यंजक दर्ज करें — उदाहरण के लिए {example}।",
|
|
61
|
+
"toolbar.advancedSearch.criteria.errors.stray": "\"{token}\" मानदंड व्यंजक का हिस्सा नहीं है। {row} जैसे पंक्ति टोकन को AND या OR से जोड़कर उपयोग करें।",
|
|
62
|
+
"toolbar.advancedSearch.criteria.errors.incomplete": "मानदंड व्यंजक अधूरा है — यह वहाँ समाप्त होता है जहाँ एक पंक्ति अपेक्षित थी।",
|
|
63
|
+
"toolbar.advancedSearch.criteria.errors.bareNumber": "पंक्ति संख्याओं को कोष्ठकों में रखें — {number} नहीं, ({number}) लिखें।",
|
|
64
|
+
"toolbar.advancedSearch.criteria.errors.logicNeedsRows": "\"{operator}\" के दोनों ओर एक पंक्ति होनी चाहिए।",
|
|
65
|
+
"toolbar.advancedSearch.criteria.errors.unmatchedClose": "मानदंड व्यंजक में बेमेल \")\" है।",
|
|
66
|
+
"toolbar.advancedSearch.criteria.errors.unclosedOpen": "मानदंड व्यंजक में \"(\" बंद नहीं किया गया है।",
|
|
67
|
+
"toolbar.advancedSearch.criteria.errors.leftover": "मानदंड व्यंजक के अंत में \"{token}\" शेष रह गया है।",
|
|
68
|
+
"toolbar.advancedSearch.criteria.errors.outOfRangeSingle": "({row}) कोई फ़िल्टर पंक्ति नहीं है — इस फ़िल्टर में एक ही पंक्ति है, {first}।",
|
|
69
|
+
"toolbar.advancedSearch.criteria.errors.outOfRange": "({row}) कोई फ़िल्टर पंक्ति नहीं है — {first} से {last} तक का उपयोग करें।",
|
|
70
|
+
"toolbar.advancedSearch.criteria.errors.duplicate": "({row}) एक से अधिक बार उपयोग हुई है — प्रत्येक फ़िल्टर पंक्ति का ठीक एक बार उल्लेख करें।",
|
|
71
|
+
"toolbar.advancedSearch.criteria.errors.missing_one": "{rows} मानदंड में नहीं है — प्रत्येक फ़िल्टर पंक्ति का उपयोग होना चाहिए, या उसे हटाएँ।",
|
|
72
|
+
"toolbar.advancedSearch.criteria.errors.missing_other": "{rows} मानदंड में नहीं हैं — प्रत्येक फ़िल्टर पंक्ति का उपयोग होना चाहिए, या उन्हें हटाएँ।",
|
|
73
|
+
"toolbar.export.button": "निर्यात",
|
|
74
|
+
"toolbar.export.headerList": "हेडर सूची",
|
|
75
|
+
"toolbar.export.optionTitle": "{type} - {scope}",
|
|
76
|
+
"toolbar.export.previousExports": "पिछले निर्यात",
|
|
77
|
+
"toolbar.export.download": "डाउनलोड",
|
|
78
|
+
"toolbar.export.downloadAria": "निर्यात डाउनलोड करें",
|
|
79
|
+
"toolbar.export.failed": "विफल",
|
|
80
|
+
"toolbar.export.failedAria": "निर्यात विफल",
|
|
81
|
+
"toolbar.export.inProcess": "प्रक्रियाधीन",
|
|
82
|
+
"toolbar.export.inProcessAria": "निर्यात प्रक्रियाधीन",
|
|
83
|
+
"toolbar.export.delete": "हटाएँ",
|
|
84
|
+
"toolbar.export.deleteAria": "निर्यात हटाएँ",
|
|
85
|
+
"toolbar.groupBy.button": "समूहित करें",
|
|
86
|
+
"toolbar.groupBy.popupTitle": "नया समूह चुनें",
|
|
87
|
+
"toolbar.groupBy.label": "समूहित करें",
|
|
88
|
+
"toolbar.groupBy.placeholder": "समूह चुनें",
|
|
89
|
+
"toolbar.groupBy.saveAndContinue": "सहेजें और जारी रखें",
|
|
90
|
+
"toolbar.quickFilter.button": "त्वरित फ़िल्टर",
|
|
91
|
+
"toolbar.quickFilter.filter": "फ़िल्टर",
|
|
92
|
+
"toolbar.quickFilter.select": "चुनें...",
|
|
93
|
+
"toolbar.reset.button": "रीसेट",
|
|
94
|
+
"toolbar.setting.button": "सेटिंग",
|
|
95
|
+
"toolbar.setting.columnChooser": "कॉलम चयनकर्ता",
|
|
96
|
+
"toolbar.setting.changeToGrid": "ग्रिड दृश्य में बदलें",
|
|
97
|
+
"toolbar.setting.changeToCard": "कार्ड दृश्य में बदलें",
|
|
98
|
+
"toolbar.columnChooser.restore": "पुनर्स्थापित करें",
|
|
99
|
+
"toolbar.columnChooser.apply": "लागू करें",
|
|
100
|
+
"toolbar.columnChooser.searchColumns": "कॉलम खोजें",
|
|
101
|
+
"toolbar.columnChooser.noFieldsFound": "कोई फ़ील्ड नहीं मिली",
|
|
102
|
+
"toolbar.columnChooser.selectedCount_one": "{count} कॉलम चयनित",
|
|
103
|
+
"toolbar.columnChooser.selectedCount_other": "{count} कॉलम चयनित",
|
|
104
|
+
"toolbar.columnChooser.noneSelected": "कोई फ़ील्ड चयनित नहीं",
|
|
105
|
+
"toolbar.columnChooser.includeInCard": "कार्ड में शामिल करें",
|
|
106
|
+
"toolbar.columnChooser.freeze": "स्थिर करें",
|
|
107
|
+
"toolbar.columnChooser.removeColumn": "कॉलम हटाएँ",
|
|
108
|
+
"toolbar.views.systemDefault": "सिस्टम डिफ़ॉल्ट",
|
|
109
|
+
"toolbar.views.selectView": "दृश्य चुनें",
|
|
110
|
+
"toolbar.views.unsavedChanges": "असहेजे परिवर्तन",
|
|
111
|
+
"toolbar.views.createView": "+ दृश्य बनाएँ",
|
|
112
|
+
"toolbar.views.deleteTitle": "दृश्य हटाएँ",
|
|
113
|
+
"toolbar.views.deleteConfirm": "क्या आप वाकई \"{name}\" हटाना चाहते हैं?",
|
|
114
|
+
"toolbar.views.deleteBody": "यह कार्रवाई पूर्ववत नहीं की जा सकती।",
|
|
115
|
+
"toolbar.views.edit": "संपादित करें",
|
|
116
|
+
"toolbar.views.renameAria": "दृश्य का नाम बदलें",
|
|
117
|
+
"toolbar.views.delete": "हटाएँ",
|
|
118
|
+
"toolbar.views.deleteAria": "दृश्य हटाएँ",
|
|
119
|
+
"toolbar.views.save": "सहेजें",
|
|
120
|
+
"toolbar.views.saveAria": "दृश्य सहेजें",
|
|
121
|
+
"toolbar.views.default": "डिफ़ॉल्ट",
|
|
122
|
+
"toolbar.views.setDefault": "डिफ़ॉल्ट बनाएँ",
|
|
123
|
+
"toolbar.views.setDefaultAria": "डिफ़ॉल्ट दृश्य के रूप में सेट करें",
|
|
124
|
+
"toolbar.views.createTitle": "नया दृश्य बनाएँ",
|
|
125
|
+
"toolbar.views.editTitle": "दृश्य संपादित करें",
|
|
126
|
+
"toolbar.views.viewName": "दृश्य का नाम",
|
|
127
|
+
"toolbar.views.namePlaceholder": "यहाँ टाइप करें...",
|
|
128
|
+
"toolbar.views.startWith": "इससे शुरू करें",
|
|
129
|
+
"toolbar.views.startWithAria": "इससे शुरू करें",
|
|
130
|
+
"toolbar.views.copyFrom": "यहाँ से कॉपी करें",
|
|
131
|
+
"toolbar.views.create": "बनाएँ",
|
|
132
|
+
"toolbar.views.loadingSummary": "दृश्य सेटअप लोड हो रहा है…",
|
|
133
|
+
"toolbar.views.currentEmpty": "अभी केवल स्क्रीन का डिफ़ॉल्ट सेटअप लागू है — वही सहेजा जाएगा",
|
|
134
|
+
"toolbar.views.copyEmpty": "इस दृश्य में अभी कुछ सहेजा नहीं गया है — नया दृश्य डिफ़ॉल्ट सेटअप से शुरू होगा",
|
|
135
|
+
"toolbar.views.willBeSaved": "सहेजा जाएगा",
|
|
136
|
+
"toolbar.views.source.currentLabel": "वर्तमान सेटअप",
|
|
137
|
+
"toolbar.views.source.currentHint": "दृश्य बनाता है और अभी लागू सब कुछ सहेजता है — आपके परिवर्तन और स्क्रीन के डिफ़ॉल्ट",
|
|
138
|
+
"toolbar.views.source.defaultLabel": "डिफ़ॉल्ट सेटअप",
|
|
139
|
+
"toolbar.views.source.defaultHint": "एक खाली दृश्य बनाता है जो स्क्रीन के डिफ़ॉल्ट कॉन्फ़िगरेशन पर खुलता है",
|
|
140
|
+
"toolbar.views.source.copyLabel": "मौजूदा कॉपी करें",
|
|
141
|
+
"toolbar.views.source.copyHint": "किसी अन्य दृश्य के सहेजे गए सेटअप के साथ दृश्य बनाता है",
|
|
142
|
+
"toolbar.views.nameError.required": "आवश्यक",
|
|
143
|
+
"toolbar.views.nameError.tooLong": "अधिकतम {max} अक्षरों की अनुमति है",
|
|
144
|
+
"toolbar.views.errors.duplicateName": "इसी नाम की एक स्क्रीन पहले से मौजूद है। कृपया कोई अन्य नाम चुनें।",
|
|
145
|
+
"toolbar.views.errors.createWithConfigFailed": "चयनित कॉन्फ़िगरेशन के साथ दृश्य नहीं बनाया जा सका। कृपया पुनः प्रयास करें।",
|
|
146
|
+
"toolbar.views.errors.createFailed": "स्क्रीन बनाते समय एक अप्रत्याशित त्रुटि हुई।",
|
|
147
|
+
"toolbar.views.errors.renameFailed": "स्क्रीन का नाम बदलते समय एक अप्रत्याशित त्रुटि हुई।",
|
|
148
|
+
"toolbar.views.summary.search": "खोज \"{query}\"",
|
|
149
|
+
"toolbar.views.summary.advancedFilters_one": "{count} उन्नत फ़िल्टर",
|
|
150
|
+
"toolbar.views.summary.advancedFilters_other": "{count} उन्नत फ़िल्टर",
|
|
151
|
+
"toolbar.views.summary.quickFilters_one": "{count} त्वरित फ़िल्टर",
|
|
152
|
+
"toolbar.views.summary.quickFilters_other": "{count} त्वरित फ़िल्टर",
|
|
153
|
+
"toolbar.views.summary.columnFilters_one": "{count} कॉलम फ़िल्टर",
|
|
154
|
+
"toolbar.views.summary.columnFilters_other": "{count} कॉलम फ़िल्टर",
|
|
155
|
+
"toolbar.views.summary.columns_one": "{count} कॉलम",
|
|
156
|
+
"toolbar.views.summary.columns_other": "{count} कॉलम",
|
|
157
|
+
"toolbar.views.summary.sortedBy_one": "{count} फ़ील्ड से क्रमबद्ध",
|
|
158
|
+
"toolbar.views.summary.sortedBy_other": "{count} फ़ील्ड से क्रमबद्ध",
|
|
159
|
+
"toolbar.views.summary.groupedByCount_one": "{count} फ़ील्ड से समूहित",
|
|
160
|
+
"toolbar.views.summary.groupedByCount_other": "{count} फ़ील्ड से समूहित",
|
|
161
|
+
"toolbar.views.summary.groupedBy": "{name} से समूहित",
|
|
162
|
+
"toolbar.views.summary.groupedByMore": "{name} +{more} से समूहित",
|
|
163
|
+
"toolbar.views.summary.widgetDefault": "{summary} (विजेट डिफ़ॉल्ट)",
|
|
164
|
+
"toolbar.views.summary.gridView": "ग्रिड दृश्य",
|
|
165
|
+
"toolbar.views.summary.cardView": "कार्ड दृश्य",
|
|
166
|
+
"toolbar.views.summary.allRowsPerPage": "प्रति पृष्ठ सभी पंक्तियाँ",
|
|
167
|
+
"toolbar.views.summary.rowsPerPage_one": "प्रति पृष्ठ {count} पंक्ति",
|
|
168
|
+
"toolbar.views.summary.rowsPerPage_other": "प्रति पृष्ठ {count} पंक्तियाँ"
|
|
169
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"grid.search": "खोजें",
|
|
3
|
+
"grid.clearSearch": "खोज साफ़ करें",
|
|
4
|
+
"grid.searchPlaceholder": "खोजने के लिए यहाँ टाइप करें . . .",
|
|
5
|
+
"grid.showSearchFor": "{subject} के लिए खोज दिखाएँ",
|
|
6
|
+
"grid.hideSearchFor": "{subject} के लिए खोज छिपाएँ",
|
|
7
|
+
"grid.showColumnSearch": "कॉलम खोज दिखाएँ",
|
|
8
|
+
"grid.hideColumnSearch": "कॉलम खोज छिपाएँ",
|
|
9
|
+
"grid.searchApplied": "{label} (लागू)",
|
|
10
|
+
"grid.searchAppliedCount": "{label} ({count} लागू)",
|
|
11
|
+
"grid.selected_one": "आपने {count} आइटम चुना है।",
|
|
12
|
+
"grid.selected_other": "आपने {count} आइटम चुने हैं।",
|
|
13
|
+
"grid.selectAll_one": "ग्रिड का {count} आइटम चुनें",
|
|
14
|
+
"grid.selectAll_other": "ग्रिड के सभी {count} आइटम चुनें",
|
|
15
|
+
"grid.unselectAll_one": "ग्रिड से {count} आइटम का चयन हटाएँ",
|
|
16
|
+
"grid.unselectAll_other": "ग्रिड से सभी {count} आइटम का चयन हटाएँ",
|
|
17
|
+
"grid.clearSelection": "(चयन साफ़ करें)",
|
|
18
|
+
"grid.selectAction": "कोई कार्रवाई चुनें",
|
|
19
|
+
"grid.aiAssistant": "AI सहायक",
|
|
20
|
+
"grid.groupCount": "{count} आइटम",
|
|
21
|
+
"grid.removeGrouping": "{column} समूहन हटाएँ",
|
|
22
|
+
"grid.ai.user": "उपयोगकर्ता",
|
|
23
|
+
"grid.ai.close": "AI सहायक बंद करें",
|
|
24
|
+
"grid.ai.placeholder": "मुझसे अपना डेटा क्रमबद्ध, फ़िल्टर या विश्लेषण करने को कहें...",
|
|
25
|
+
"grid.ai.error": "क्षमा करें, आपके अनुरोध को संसाधित करते समय एक त्रुटि हुई। कृपया पुनः प्रयास करें।",
|
|
26
|
+
"grid.ai.suggestions.sortByName": "डेटा को नाम के आरोही क्रम में क्रमबद्ध करें",
|
|
27
|
+
"grid.ai.suggestions.groupByCategory": "डेटा को श्रेणी के अनुसार समूहित करें",
|
|
28
|
+
"grid.ai.suggestions.activeOnly": "केवल सक्रिय रिकॉर्ड दिखाएँ",
|
|
29
|
+
"grid.ai.suggestions.exportPdf": "PDF में निर्यात करें",
|
|
30
|
+
"grid.ai.demoAttachment.title": "डेमो विजेट",
|
|
31
|
+
"grid.ai.demoAttachment.body": "यह चैट में दिखाया गया एक नमूना विजेट है। आप इसे चार्ट, तालिकाएँ या कोई अन्य सामग्री दिखाने के लिए अनुकूलित कर सकते हैं।",
|
|
32
|
+
"grid.ai.demoAttachment.navigate": "नेविगेट करने के लिए: \"abc.com\"",
|
|
33
|
+
"grid.ai.demoAttachment.button": "मुझे क्लिक करें",
|
|
34
|
+
"multiSelect.selectedCount_one": "{count} चयनित",
|
|
35
|
+
"multiSelect.selectedCount_other": "{count} चयनित",
|
|
36
|
+
"cardGrid.range": "{total} में से 1 - {shown} आइटम",
|
|
37
|
+
"cardGrid.noMoreRecords": "लोड करने के लिए और रिकॉर्ड नहीं हैं!",
|
|
38
|
+
"cardGrid.loadMore": "और रिकॉर्ड लोड करें",
|
|
39
|
+
"cardGrid.groupCount_one": "{count} आइटम",
|
|
40
|
+
"cardGrid.groupCount_other": "{count} आइटम",
|
|
41
|
+
"dualList.available": "उपलब्ध",
|
|
42
|
+
"dualList.selected": "चयनित",
|
|
43
|
+
"dualList.searchPlaceholder": "खोजें…",
|
|
44
|
+
"dualList.empty": "कोई नहीं",
|
|
45
|
+
"dualList.addAll": "सभी जोड़ें",
|
|
46
|
+
"dualList.addSelected": "चयनित जोड़ें",
|
|
47
|
+
"dualList.removeSelected": "चयनित हटाएँ",
|
|
48
|
+
"dualList.removeAll": "सभी हटाएँ",
|
|
49
|
+
"dualList.countLabel": "{count} आइटम",
|
|
50
|
+
"dualList.countOf": "{total} में से {shown} आइटम",
|
|
51
|
+
"dualList.searchList": "{title} खोजें",
|
|
52
|
+
"dualList.scrollForMore": "और देखने के लिए स्क्रॉल करें…",
|
|
53
|
+
"dualList.loading": "लोड हो रहा है…",
|
|
54
|
+
"tagInput.noMatches": "कोई मिलान नहीं",
|
|
55
|
+
"tagInput.pressEnterToAdd": "\"{text}\" जोड़ने के लिए Enter दबाएँ",
|
|
56
|
+
"tagInput.scrollForMore": "और देखने के लिए स्क्रॉल करें…",
|
|
57
|
+
"fileUpload.invalidFileExtension": "इस फ़ाइल प्रकार की अनुमति नहीं है।",
|
|
58
|
+
"fileUpload.invalidMaxFileSize": "फ़ाइल बहुत बड़ी है।",
|
|
59
|
+
"fileUpload.invalidMinFileSize": "फ़ाइल बहुत छोटी है।",
|
|
60
|
+
"fileUpload.maxFilesExceeded": "{max} से अधिक फ़ाइलें नहीं।",
|
|
61
|
+
"fileUpload.duplicate": "पहले से जोड़ी गई है।",
|
|
62
|
+
"fileUpload.unreadable": "फ़ाइल पढ़ी नहीं जा सकी।",
|
|
63
|
+
"fileUpload.remove": "{name} हटाएँ",
|
|
64
|
+
"fileUpload.noFiles": "कोई फ़ाइल नहीं"
|
|
65
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"activate": "Activer",
|
|
3
|
+
"active": "Actif",
|
|
4
|
+
"addContact": "Ajouter un contact",
|
|
5
|
+
"anythingTheTeamShouldKnow": "Tout ce que l'équipe doit savoir",
|
|
6
|
+
"asiaPacific": "Asie-Pacifique",
|
|
7
|
+
"cancel": "Annuler",
|
|
8
|
+
"changeTheStatusOfTheSelectedContacts": "Modifier le statut des contacts sélectionnés ?",
|
|
9
|
+
"city": "Ville",
|
|
10
|
+
"confirmation": "Confirmation",
|
|
11
|
+
"contactDetails": "Coordonnées du contact",
|
|
12
|
+
"contacts": "Contacts",
|
|
13
|
+
"contactSaved": "Contact enregistré",
|
|
14
|
+
"countContactSWillBeUpdated": "{count} contact{s} vont être mis à jour.",
|
|
15
|
+
"deactivate": "Désactiver",
|
|
16
|
+
"delete": "Supprimer",
|
|
17
|
+
"deleteTheSelectedContacts": "Supprimer les contacts sélectionnés ?",
|
|
18
|
+
"department": "Service",
|
|
19
|
+
"departments": "Services",
|
|
20
|
+
"eGCtA1b2": "ex. CT_A1B2",
|
|
21
|
+
"email": "E-mail",
|
|
22
|
+
"engineering": "Ingénierie",
|
|
23
|
+
"europe": "Europe",
|
|
24
|
+
"finance": "Finance",
|
|
25
|
+
"fullName": "Nom complet",
|
|
26
|
+
"joined": "Arrivée",
|
|
27
|
+
"keepThem": "Les conserver",
|
|
28
|
+
"keepTheNameUnder40Characters": "Le nom doit faire moins de 40 caractères",
|
|
29
|
+
"name": "Nom",
|
|
30
|
+
"nameCompanyCom": "nom@entreprise.com",
|
|
31
|
+
"no": "Non",
|
|
32
|
+
"northAmerica": "Amérique du Nord",
|
|
33
|
+
"notes": "Notes",
|
|
34
|
+
"notesAreLimitedTo200Characters": "Les notes sont limitées à 200 caractères",
|
|
35
|
+
"onlyAskedForTheSalesDepartment": "Demandé uniquement pour le service Ventes",
|
|
36
|
+
"pleaseChooseADepartment": "Veuillez choisir un service",
|
|
37
|
+
"pleaseEnterAName": "Veuillez saisir un nom",
|
|
38
|
+
"pleaseEnterAnEmailAddress": "Veuillez saisir une adresse e-mail",
|
|
39
|
+
"referenceCode": "Code de référence",
|
|
40
|
+
"sales": "Ventes",
|
|
41
|
+
"salesRegion": "Région commerciale",
|
|
42
|
+
"save": "Enregistrer",
|
|
43
|
+
"saved": "Enregistré",
|
|
44
|
+
"selectADepartment": "Sélectionnez un service",
|
|
45
|
+
"selectARegion": "Sélectionnez une région",
|
|
46
|
+
"selectRowsForBulkActionsClickA": "Sélectionnez des lignes pour les actions groupées, cliquez sur un nom pour le modifier, ou ajoutez un contact. Tout le comportement de cette page est déclaré dans src/Module/Sample/Contacts.json.",
|
|
47
|
+
"status": "Statut",
|
|
48
|
+
"support": "Support",
|
|
49
|
+
"thatDoesNotLookLikeAnEmail": "Cette adresse e-mail ne semble pas valide",
|
|
50
|
+
"totalContacts": "Total des contacts",
|
|
51
|
+
"useCapitalsDigitsAndUnderscoreOnly": "Utilisez uniquement des majuscules, des chiffres et le trait de soulignement",
|
|
52
|
+
"yesChangeIt": "Oui, modifier",
|
|
53
|
+
"youAreAboutToDeleteCountContact": "Vous allez supprimer {count} contact{s}. Cette action est irréversible.",
|
|
54
|
+
"yyyyMmDd": "aaaa-mm-jj"
|
|
55
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"activate": "सक्रिय करें",
|
|
3
|
+
"active": "सक्रिय",
|
|
4
|
+
"addContact": "संपर्क जोड़ें",
|
|
5
|
+
"anythingTheTeamShouldKnow": "टीम को जो कुछ भी जानना चाहिए",
|
|
6
|
+
"asiaPacific": "एशिया-प्रशांत",
|
|
7
|
+
"cancel": "रद्द करें",
|
|
8
|
+
"changeTheStatusOfTheSelectedContacts": "चुने गए संपर्कों की स्थिति बदलें?",
|
|
9
|
+
"city": "शहर",
|
|
10
|
+
"confirmation": "पुष्टि",
|
|
11
|
+
"contactDetails": "संपर्क विवरण",
|
|
12
|
+
"contacts": "संपर्क",
|
|
13
|
+
"contactSaved": "संपर्क सहेजा गया",
|
|
14
|
+
"countContactSWillBeUpdated": "{count} संपर्क अपडेट किए जाएँगे।",
|
|
15
|
+
"deactivate": "निष्क्रिय करें",
|
|
16
|
+
"delete": "हटाएँ",
|
|
17
|
+
"deleteTheSelectedContacts": "चुने गए संपर्क हटाएँ?",
|
|
18
|
+
"department": "विभाग",
|
|
19
|
+
"departments": "विभाग",
|
|
20
|
+
"eGCtA1b2": "उदा. CT_A1B2",
|
|
21
|
+
"email": "ईमेल",
|
|
22
|
+
"engineering": "इंजीनियरिंग",
|
|
23
|
+
"europe": "यूरोप",
|
|
24
|
+
"finance": "वित्त",
|
|
25
|
+
"fullName": "पूरा नाम",
|
|
26
|
+
"joined": "शामिल होने की तिथि",
|
|
27
|
+
"keepThem": "रहने दें",
|
|
28
|
+
"keepTheNameUnder40Characters": "नाम 40 अक्षरों से कम रखें",
|
|
29
|
+
"name": "नाम",
|
|
30
|
+
"nameCompanyCom": "name@company.com",
|
|
31
|
+
"no": "नहीं",
|
|
32
|
+
"northAmerica": "उत्तरी अमेरिका",
|
|
33
|
+
"notes": "टिप्पणियाँ",
|
|
34
|
+
"notesAreLimitedTo200Characters": "टिप्पणियाँ 200 अक्षरों तक सीमित हैं",
|
|
35
|
+
"onlyAskedForTheSalesDepartment": "केवल बिक्री विभाग के लिए पूछा जाता है",
|
|
36
|
+
"pleaseChooseADepartment": "कृपया एक विभाग चुनें",
|
|
37
|
+
"pleaseEnterAName": "कृपया एक नाम दर्ज करें",
|
|
38
|
+
"pleaseEnterAnEmailAddress": "कृपया एक ईमेल पता दर्ज करें",
|
|
39
|
+
"referenceCode": "संदर्भ कोड",
|
|
40
|
+
"sales": "बिक्री",
|
|
41
|
+
"salesRegion": "बिक्री क्षेत्र",
|
|
42
|
+
"save": "सहेजें",
|
|
43
|
+
"saved": "सहेजा गया",
|
|
44
|
+
"selectADepartment": "एक विभाग चुनें",
|
|
45
|
+
"selectARegion": "एक क्षेत्र चुनें",
|
|
46
|
+
"selectRowsForBulkActionsClickA": "सामूहिक कार्रवाई के लिए पंक्तियाँ चुनें, संपादित करने के लिए किसी नाम पर क्लिक करें, या नया संपर्क जोड़ें। इस पृष्ठ का हर व्यवहार src/Module/Sample/Contacts.json में घोषित है।",
|
|
47
|
+
"status": "स्थिति",
|
|
48
|
+
"support": "सहायता",
|
|
49
|
+
"thatDoesNotLookLikeAnEmail": "यह ईमेल पता सही नहीं लगता",
|
|
50
|
+
"totalContacts": "कुल संपर्क",
|
|
51
|
+
"useCapitalsDigitsAndUnderscoreOnly": "केवल बड़े अक्षर, अंक और अंडरस्कोर का उपयोग करें",
|
|
52
|
+
"yesChangeIt": "हाँ, बदलें",
|
|
53
|
+
"youAreAboutToDeleteCountContact": "आप {count} संपर्क हटाने वाले हैं। यह पूर्ववत नहीं किया जा सकता।",
|
|
54
|
+
"yyyyMmDd": "yyyy-mm-dd"
|
|
55
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { beforeAll, describe, expect, it } from "vitest";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Wiring guards for every screen under src/Module.
|
|
5
|
+
*
|
|
6
|
+
* Each failure this file catches is SILENT at runtime: a slug with no branch in
|
|
7
|
+
* getSchemaBySlugService is "page not found" with nothing in the console, and two
|
|
8
|
+
* screens sharing a screenId share one adapter. Add a screen JSON and these run
|
|
9
|
+
* against it with no edit here.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
// constant.ts reads the auth cookie when it loads, and the registries reach it
|
|
13
|
+
// through their imports. Stub the two browser globals before anything loads —
|
|
14
|
+
// hence the dynamic import in beforeAll rather than a static one (that would be
|
|
15
|
+
// hoisted above these lines; top-level await is unavailable at the es2020 target
|
|
16
|
+
// vite.config.ts keeps for Kendo).
|
|
17
|
+
(globalThis as any).document ??= { cookie: "" };
|
|
18
|
+
(globalThis as any).window ??= { location: { search: "" } };
|
|
19
|
+
|
|
20
|
+
let getSchemaBySlugService: (slug: string, appCode: string) => unknown;
|
|
21
|
+
beforeAll(async () => {
|
|
22
|
+
({ getSchemaBySlugService } = await import("./index"));
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
/** Every JSON under src/Module that is a screen (has a rootScreenElement). */
|
|
26
|
+
const screens = Object.entries(
|
|
27
|
+
import.meta.glob<Record<string, any>>("./**/*.json", { eager: true, import: "default" }),
|
|
28
|
+
).filter(([, schema]) => schema && typeof schema === "object" && "rootScreenElement" in schema);
|
|
29
|
+
|
|
30
|
+
describe("screens under src/Module", () => {
|
|
31
|
+
it("each declares a slug and a screenId", () => {
|
|
32
|
+
const missing = screens
|
|
33
|
+
.filter(([, schema]) => !schema.slug || !schema.screenId)
|
|
34
|
+
.map(([file]) => file);
|
|
35
|
+
expect(missing).toEqual([]);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it("each slug is registered in getSchemaBySlugService (else the URL is page-not-found)", () => {
|
|
39
|
+
const unregistered = screens
|
|
40
|
+
.filter(([, schema]) => schema.slug && getSchemaBySlugService(schema.slug, "") !== schema)
|
|
41
|
+
.map(([file, schema]) => `${file} (slug "${schema.slug}")`);
|
|
42
|
+
expect(unregistered).toEqual([]);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it("no two screens share a screenId (they would share one adapter)", () => {
|
|
46
|
+
const ids = screens.map(([, schema]) => schema.screenId).filter(Boolean);
|
|
47
|
+
const duplicates = ids.filter((id, i) => ids.indexOf(id) !== i);
|
|
48
|
+
expect(duplicates).toEqual([]);
|
|
49
|
+
});
|
|
50
|
+
});
|