@nice2dev/i18n 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/index.cjs +9 -9
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +2513 -805
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { useMemo as b, useContext as
|
|
3
|
-
const
|
|
1
|
+
import { jsx as O } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo as b, useContext as B, createContext as I, useEffect as L, useState as x, useCallback as ee } from "react";
|
|
3
|
+
const T = [
|
|
4
4
|
"en",
|
|
5
5
|
"pl",
|
|
6
6
|
"de",
|
|
@@ -40,7 +40,7 @@ const j = [
|
|
|
40
40
|
// Filipino
|
|
41
41
|
"ms"
|
|
42
42
|
// Malay
|
|
43
|
-
],
|
|
43
|
+
], Ee = {
|
|
44
44
|
// ── Global / Generic ──
|
|
45
45
|
ok: "OK",
|
|
46
46
|
cancel: "Cancel",
|
|
@@ -144,6 +144,180 @@ const j = [
|
|
|
144
144
|
"navShell.home.sections.openTabs": "Open now",
|
|
145
145
|
"navShell.home.sections.shortcuts": "Your shortcuts",
|
|
146
146
|
"navShell.home.sections.allViews": "All views",
|
|
147
|
+
// ── NiceTutorial (autoplay controls) ──
|
|
148
|
+
"tutorial.play": "Play",
|
|
149
|
+
"tutorial.pause": "Pause",
|
|
150
|
+
"tutorial.speed": "Speed",
|
|
151
|
+
"tutorial.close": "Close",
|
|
152
|
+
// ── NiceTutorial launcher (generic) ──
|
|
153
|
+
"tutorial.start": "Tutorial",
|
|
154
|
+
"tutorial.startAria": "Start tutorial",
|
|
155
|
+
"tutorial.next": "Next",
|
|
156
|
+
"tutorial.back": "Back",
|
|
157
|
+
"tutorial.finish": "Finish",
|
|
158
|
+
"tutorial.skip": "Skip",
|
|
159
|
+
"tutorial.stepOf": "of",
|
|
160
|
+
// ── NiceModuleEditor tour ──
|
|
161
|
+
"tutorial.moduleEditor.browser.title": "Module browser",
|
|
162
|
+
"tutorial.moduleEditor.browser.content": "Pick a module here to open its manifest, entities and translations.",
|
|
163
|
+
"tutorial.moduleEditor.validate.title": "Validate",
|
|
164
|
+
"tutorial.moduleEditor.validate.content": "Check the module against the manifest schema. Issues appear in the status bar and output.",
|
|
165
|
+
"tutorial.moduleEditor.save.title": "Save",
|
|
166
|
+
"tutorial.moduleEditor.save.content": "Persist your changes through the configured data provider (e.g. write files back to disk).",
|
|
167
|
+
"tutorial.manifestEditor.intro.title": "Manifest editor",
|
|
168
|
+
"tutorial.manifestEditor.intro.content": "Edit the manifest in schema-driven sections. Toggle Form ⇄ JSON per section; validation appears in the status bar.",
|
|
169
|
+
"tutorial.schemaForm.intro.title": "Schema form",
|
|
170
|
+
"tutorial.schemaForm.intro.content": "This form is generated from a schema. Required fields and validation errors are flagged; use the JSON toggle for raw editing.",
|
|
171
|
+
"tutorial.entityEditor.intro.title": "Entity editor",
|
|
172
|
+
"tutorial.entityEditor.intro.content": "Add entities on the left, then edit each entity’s metadata and its fields (type, keys, constraints) on the right.",
|
|
173
|
+
"tutorial.i18nEditor.intro.title": "Translations",
|
|
174
|
+
"tutorial.i18nEditor.intro.content": "Edit translations as a keys × locales grid. Add keys and locales; amber cells mark missing translations.",
|
|
175
|
+
"tutorial.formBuilder.intro.title": "Form builder",
|
|
176
|
+
"tutorial.formBuilder.intro.content": "Drag fields from the palette onto the canvas, then configure each field in the properties panel. Export the schema when done.",
|
|
177
|
+
"tutorial.formDesigner.intro.title": "Form designer",
|
|
178
|
+
"tutorial.formDesigner.intro.content": "Design data-entry forms with sections, lookups and calculated fields; bind them to your entity and preview live.",
|
|
179
|
+
"tutorial.paymentProviderConfig.intro.title": "Payment provider",
|
|
180
|
+
"tutorial.paymentProviderConfig.intro.content": "Pick a provider, fill its credentials (secrets are masked), choose test/live, enable methods and copy the webhook URL.",
|
|
181
|
+
"tutorial.webhookTester.intro.title": "Webhook tester",
|
|
182
|
+
"tutorial.webhookTester.intro.content": "Pick a saved payload (or write one), optionally sign it, send it to the endpoint and inspect the response.",
|
|
183
|
+
"tutorial.apiDesigner.intro.title": "API designer",
|
|
184
|
+
"tutorial.apiDesigner.intro.content": "Define endpoints, parameters, request/response schemas and security for your OpenAPI document.",
|
|
185
|
+
"tutorial.apiTester.intro.title": "API tester",
|
|
186
|
+
"tutorial.apiTester.intro.content": "Build requests with collections and environment variables, send them and assert on the responses.",
|
|
187
|
+
"tutorial.integrationBuilder.intro.title": "Integration builder",
|
|
188
|
+
"tutorial.integrationBuilder.intro.content": "Wire a flow of nodes (triggers → actions → error handling) and connect them to build an integration.",
|
|
189
|
+
"tutorial.scriptRunner.intro.title": "Script runner",
|
|
190
|
+
"tutorial.scriptRunner.intro.content": "Write a script and sample input, click Run, then inspect the result and captured logs below.",
|
|
191
|
+
"tutorial.lifecycleHooks.intro.title": "Lifecycle hooks",
|
|
192
|
+
"tutorial.lifecycleHooks.intro.content": "Bind handlers to each trigger, set their order and enable flag, and add an optional condition that gates execution.",
|
|
193
|
+
"tutorial.revisionHistory.intro.title": "Revision history",
|
|
194
|
+
"tutorial.revisionHistory.intro.content": "Pick a revision, choose another to compare, review the side-by-side diff, then restore an earlier version if needed.",
|
|
195
|
+
"tutorial.markdownEditor.intro.title": "Markdown editor",
|
|
196
|
+
"tutorial.markdownEditor.intro.content": "Write Markdown with the formatting toolbar; toggle the live preview to see the rendered result, and export to HTML.",
|
|
197
|
+
"tutorial.htmlEditor.intro.title": "Rich text editor",
|
|
198
|
+
"tutorial.htmlEditor.intro.content": "Format text with the toolbar, insert links, images and tables, and switch to HTML or Markdown source when you need it.",
|
|
199
|
+
"tutorial.documentEditor.intro.title": "Document editor",
|
|
200
|
+
"tutorial.documentEditor.intro.content": "Compose a document from blocks: use the toolbar or slash commands to add headings, lists, media and more, then export to HTML.",
|
|
201
|
+
"tutorial.codeEditor.intro.title": "Code editor",
|
|
202
|
+
"tutorial.codeEditor.intro.content": "Edit code with syntax highlighting, IntelliSense and the toolbar. Ctrl+S saves; the status bar shows the cursor position and any problems.",
|
|
203
|
+
"tutorial.kanbanBoard.intro.title": "Kanban board",
|
|
204
|
+
"tutorial.kanbanBoard.intro.content": 'Drag cards between columns to change their status, add cards with the "+" button, and click a card to edit its details.',
|
|
205
|
+
"tutorial.queryBuilder.intro.title": "Query builder",
|
|
206
|
+
"tutorial.queryBuilder.intro.content": "Add tables, pick columns, define joins, conditions and sorting visually — the SQL is generated for you. Switch to the SQL tab to review it.",
|
|
207
|
+
"tutorial.stateDesigner.intro.title": "State designer",
|
|
208
|
+
"tutorial.stateDesigner.intro.content": "Model your store as slices with fields and actions, pick a target (e.g. Zustand) and export ready-to-use state-management code.",
|
|
209
|
+
"tutorial.componentDesigner.intro.title": "Component designer",
|
|
210
|
+
"tutorial.componentDesigner.intro.content": "Name your component, declare its props with types and requirements, and preview the generated TypeScript interface live.",
|
|
211
|
+
"tutorial.pageBuilder.intro.title": "Page builder",
|
|
212
|
+
"tutorial.pageBuilder.intro.content": "Drag components from the sidebar onto the responsive grid, switch the desktop/tablet/mobile preview, and save the layout.",
|
|
213
|
+
"tutorial.lowCodeStudio.intro.title": "Low-code studio",
|
|
214
|
+
"tutorial.lowCodeStudio.intro.content": "Drag components from the sidebar onto the canvas, then switch between Design, Preview and Code tabs to build and export your app.",
|
|
215
|
+
"tutorial.testBuilder.intro.title": "Test builder",
|
|
216
|
+
"tutorial.testBuilder.intro.content": "Build test suites visually: add cases and interaction steps with assertions, run them, and export to a ready-to-run .test.tsx file.",
|
|
217
|
+
"tutorial.workflowDesigner.intro.title": "Workflow designer",
|
|
218
|
+
"tutorial.workflowDesigner.intro.content": "Add states and transitions on the canvas, validate the flow, simulate it, then test or publish your workflow.",
|
|
219
|
+
"tutorial.themeBuilder.intro.title": "Theme builder",
|
|
220
|
+
"tutorial.themeBuilder.intro.content": "Start from a preset, tweak colors, typography and other tokens by section, preview live, then apply or export the theme.",
|
|
221
|
+
"tutorial.filterBuilder.intro.title": "Filter builder",
|
|
222
|
+
"tutorial.filterBuilder.intro.content": "Build complex AND/OR filter trees: add conditions and nested groups, choose fields and operators, and save reusable presets.",
|
|
223
|
+
"tutorial.diagramDesigner.intro.title": "Diagram designer",
|
|
224
|
+
"tutorial.diagramDesigner.intro.content": "Drag shapes from the palette onto the canvas, connect them with connectors, edit properties on the right, then export to SVG, PNG or JSON.",
|
|
225
|
+
"tutorial.reportBuilder.intro.title": "Report builder",
|
|
226
|
+
"tutorial.reportBuilder.intro.content": "Drag sections onto the report, bind them to data sources, arrange the layout, then export to PDF, HTML or XLSX.",
|
|
227
|
+
"tutorial.erpReportDesigner.intro.title": "Report designer",
|
|
228
|
+
"tutorial.erpReportDesigner.intro.content": "Lay out banded reports: drop elements (fields, expressions, charts) into bands, bind data connections, edit properties, then preview and export.",
|
|
229
|
+
"tutorial.recipeEditor.intro.title": "Recipe editor",
|
|
230
|
+
"tutorial.recipeEditor.intro.content": "Edit recipe details, add and reorder ingredients and steps, attach photos, and import or export the recipe as JSON.",
|
|
231
|
+
"tutorial.pipelineEditor.intro.title": "Pipeline editor",
|
|
232
|
+
"tutorial.pipelineEditor.intro.content": "Build a CI/CD pipeline from stages, jobs and steps; set triggers, variables and secrets; then validate, save and run it.",
|
|
233
|
+
"tutorial.mergeRequestBuilder.intro.title": "Merge request builder",
|
|
234
|
+
"tutorial.mergeRequestBuilder.intro.content": "Pick source and target branches, write the title and description, add reviewers, labels and linked issues, then preview and submit.",
|
|
235
|
+
"tutorial.automationRuleEditor.intro.title": "Automation rule editor",
|
|
236
|
+
"tutorial.automationRuleEditor.intro.content": "Define the trigger, add optional conditions, then list the actions to run — switch between the three sections using the tabs.",
|
|
237
|
+
"tutorial.sceneActionBuilder.intro.title": "Scene action builder",
|
|
238
|
+
"tutorial.sceneActionBuilder.intro.content": "Add an action per device, set its target state and an optional delay, reorder them, and preview the scene sequence.",
|
|
239
|
+
"tutorial.backupTagEditor.intro.title": "Backup tags",
|
|
240
|
+
"tutorial.backupTagEditor.intro.content": "Tag this backup for easy retrieval: type a label and pick a color, or add one of the suggested tags; auto-generated tags are protected.",
|
|
241
|
+
"tutorial.dataMergeBuilder.intro.title": "Data merge",
|
|
242
|
+
"tutorial.dataMergeBuilder.intro.content": "Walk through the steps: choose source and target branches, preview changes, resolve conflicts, set options, then confirm the merge.",
|
|
243
|
+
"tutorial.invoiceLineEditor.intro.title": "Invoice lines",
|
|
244
|
+
"tutorial.invoiceLineEditor.intro.content": "Add line items with quantity, unit price, VAT and discount — net, gross and the VAT breakdown are calculated automatically.",
|
|
245
|
+
"tutorial.keyValueEditor.intro.title": "Key/value editor",
|
|
246
|
+
"tutorial.keyValueEditor.intro.content": "Add key/value rows for headers, params, env vars or config; mask secret values, toggle rows on/off, and watch for duplicate keys.",
|
|
247
|
+
"tutorial.imageEditor.intro.title": "Image editor",
|
|
248
|
+
"tutorial.imageEditor.intro.content": "Use the toolbar to crop, rotate, flip, adjust brightness/contrast and annotate; undo/redo your edits, then save the result.",
|
|
249
|
+
"tutorial.cropEditor.intro.title": "Crop editor",
|
|
250
|
+
"tutorial.cropEditor.intro.content": "Drag the crop box over the image, pick an aspect ratio, rotate, flip or zoom, then use the result.",
|
|
251
|
+
"tutorial.pdfAnnotationEditor.intro.title": "PDF annotations",
|
|
252
|
+
"tutorial.pdfAnnotationEditor.intro.content": "Pick a tool from the toolbar (highlight, underline, freehand, text…), mark up the page, navigate pages and zoom as needed.",
|
|
253
|
+
"tutorial.videoEditor.intro.title": "Video editor",
|
|
254
|
+
"tutorial.videoEditor.intro.content": "Add media to the timeline tracks, trim and arrange clips, edit clip properties, preview playback, then export the video.",
|
|
255
|
+
// ── Phase 4: domain-package editors ──
|
|
256
|
+
"tutorial.viewBuilder.intro.title": "View builder",
|
|
257
|
+
"tutorial.viewBuilder.intro.content": "Drag controls from the palette into the grid cells, configure each cell in the properties panel, and import, export or save the view.",
|
|
258
|
+
"tutorial.dashboardDesigner.intro.title": "Dashboard designer",
|
|
259
|
+
"tutorial.dashboardDesigner.intro.content": "Drag widgets from the palette onto the grid, resize and arrange them, configure each in the property panel, then preview or export the dashboard.",
|
|
260
|
+
"tutorial.workflowDesignerCanvas.intro.title": "Workflow designer",
|
|
261
|
+
"tutorial.workflowDesignerCanvas.intro.content": "Add trigger, action and condition nodes to the canvas and connect them; manage variables, validate the flow, then export it.",
|
|
262
|
+
"tutorial.armatureEditor.intro.title": "Armature editor",
|
|
263
|
+
"tutorial.armatureEditor.intro.content": "Select bones to edit their transforms, add or reparent bones, configure IK chains, and save or load poses.",
|
|
264
|
+
"tutorial.morphTargetEditor.intro.title": "Morph target editor",
|
|
265
|
+
"tutorial.morphTargetEditor.intro.content": "Blend the mesh’s morph targets with the per-target influence sliders, create or delete targets, and preview the interpolation.",
|
|
266
|
+
"tutorial.terrainEditor.intro.title": "Terrain editor",
|
|
267
|
+
"tutorial.terrainEditor.intro.content": "Sculpt the heightmap with brushes (raise, lower, flatten, smooth, noise), splat texture layers, generate procedural terrain, and import/export heightmaps.",
|
|
268
|
+
"tutorial.materialEditor.intro.title": "Material editor",
|
|
269
|
+
"tutorial.materialEditor.intro.content": "Build a shader as a node graph: drag nodes from the palette, wire their ports together, edit properties, and preview the compiled material.",
|
|
270
|
+
"tutorial.particleEditor.intro.title": "Particle editor",
|
|
271
|
+
"tutorial.particleEditor.intro.content": "Pick a particle system, tune its emitter and modules in the inspector, and play, pause or stop the live preview.",
|
|
272
|
+
"tutorial.uvEditor.intro.title": "UV editor",
|
|
273
|
+
"tutorial.uvEditor.intro.content": "Edit the mesh’s UV layout over the texture: select and transform UVs with the tools, switch UV channels, and apply your changes.",
|
|
274
|
+
"tutorial.fontEditor.intro.title": "Font editor",
|
|
275
|
+
"tutorial.fontEditor.intro.content": "Edit glyphs on the unicode grid, adjust font metrics and per-glyph paths and bearings, then export the font.",
|
|
276
|
+
"tutorial.iconEditor.intro.title": "Icon editor",
|
|
277
|
+
"tutorial.iconEditor.intro.content": "Draw and edit SVG shapes on the grid, tweak stroke and variant settings, preview on different backgrounds, and export to SVG, React or PNG.",
|
|
278
|
+
"tutorial.uiDesigner.intro.title": "UI designer",
|
|
279
|
+
"tutorial.uiDesigner.intro.content": "Drag components from the palette onto the canvas, edit their props in the panel, preview responsive breakpoints, and export to React/TSX.",
|
|
280
|
+
"tutorial.gameEditor.intro.title": "Game editor",
|
|
281
|
+
"tutorial.gameEditor.intro.content": "Build your scene in the viewport using the hierarchy and asset panels, tweak entities in the inspector, and save the project.",
|
|
282
|
+
"tutorial.levelEditor.intro.title": "Level editor",
|
|
283
|
+
"tutorial.levelEditor.intro.content": "Build the game world: place and snap objects across layers, paint terrain, lay out splines and lights, then bake lightmaps.",
|
|
284
|
+
"tutorial.gameMaterialEditor.intro.title": "Material editor",
|
|
285
|
+
"tutorial.gameMaterialEditor.intro.content": "Author a shader as a node graph: add and connect shader nodes, edit their properties, and compile the material.",
|
|
286
|
+
"tutorial.gameParticleEditor.intro.title": "Particle editor",
|
|
287
|
+
"tutorial.gameParticleEditor.intro.content": "Tune the particle system in the inspector — emitter, lifetime, curves and rendering — and play, pause or restart the live preview.",
|
|
288
|
+
"tutorial.floorPlanEditor.intro.title": "Floor plan editor",
|
|
289
|
+
"tutorial.floorPlanEditor.intro.content": "Draw rooms and zones with the tools, place devices on the plan, switch floors and toggle overlays like dimensions, grid and occupancy.",
|
|
290
|
+
"tutorial.buildingSceneEditor.intro.title": "Scene editor",
|
|
291
|
+
"tutorial.buildingSceneEditor.intro.content": "Create scenes that set multiple devices at once: pick a scene, choose device target states, then save or activate it.",
|
|
292
|
+
"tutorial.buildingAutomationEditor.intro.title": "Automation editor",
|
|
293
|
+
"tutorial.buildingAutomationEditor.intro.content": "Create building automations: pick one from the list, define its triggers, conditions and actions, then save, enable or delete it.",
|
|
294
|
+
"tutorial.spatialEditor.intro.title": "Spatial editor",
|
|
295
|
+
"tutorial.spatialEditor.intro.content": "Lay out floor plans across modes: draw walls, rooms and objects with the tools, manage layers, snap to the grid, then export.",
|
|
296
|
+
"tutorial.decisionTreeEditor.intro.title": "Decision tree editor",
|
|
297
|
+
"tutorial.decisionTreeEditor.intro.content": "Explore the decision tree: click nodes to inspect conditions and outcomes, toggle metrics, probabilities and samples, and highlight a path for an input.",
|
|
298
|
+
"tutorial.diagramEditor.intro.title": "Diagram editor",
|
|
299
|
+
"tutorial.diagramEditor.intro.content": "Pick a tool to add and connect nodes on the canvas, edit them in the property panel, and export the diagram from the toolbar.",
|
|
300
|
+
"tutorial.contractEditor.intro.title": "Contract editor",
|
|
301
|
+
"tutorial.contractEditor.intro.content": "Assemble the contract from the clause library, fill template variables, track versions and approvals, then save or export to PDF/DOCX/HTML.",
|
|
302
|
+
"tutorial.invoiceDesigner.intro.title": "Invoice designer",
|
|
303
|
+
"tutorial.invoiceDesigner.intro.content": "Drag elements onto the invoice canvas, bind them to data fields, align with the grid and rulers, then save or export to PDF.",
|
|
304
|
+
"tutorial.presentationEditor.intro.title": "Presentation editor",
|
|
305
|
+
"tutorial.presentationEditor.intro.content": "Build slides from the thumbnail rail, add and arrange elements on the canvas, edit them in the property panel, then present or export.",
|
|
306
|
+
// ── Phase 4 tail: standalone packages (ui-bi/ui-video/ui-ai/ui-math/ui-audio) ──
|
|
307
|
+
"tutorial.dashboardStudio.intro.title": "Dashboard studio",
|
|
308
|
+
"tutorial.dashboardStudio.intro.content": "Drag widgets from the palette onto the grid, bind them to data sources, add filters, then toggle Edit/View, refresh and save.",
|
|
309
|
+
"tutorial.biReportBuilder.intro.title": "Report builder",
|
|
310
|
+
"tutorial.biReportBuilder.intro.content": "Drag elements from the palette onto the report, bind them to data sources, switch design/preview, then export to PDF or Excel.",
|
|
311
|
+
"tutorial.etlBuilder.intro.title": "ETL builder",
|
|
312
|
+
"tutorial.etlBuilder.intro.content": "Wire sources → transformations → destinations into a pipeline, switch the views, then run it and save the configuration.",
|
|
313
|
+
"tutorial.videoEditorPro.intro.title": "Video editor",
|
|
314
|
+
"tutorial.videoEditorPro.intro.content": "Add media to the timeline, arrange and trim clips, apply effects and transitions, then configure and run the export.",
|
|
315
|
+
"tutorial.mlStudio.intro.title": "ML studio",
|
|
316
|
+
"tutorial.mlStudio.intro.content": "Work through the tabs: prepare datasets, run experiments, compare and pick models, then deploy the best one.",
|
|
317
|
+
"tutorial.mathEditor.intro.title": "Math editor",
|
|
318
|
+
"tutorial.mathEditor.intro.content": "Write equations as LaTeX or insert symbols from the palette; switch to handwriting input, and preview the rendered formula live.",
|
|
319
|
+
"tutorial.dmxEditor.intro.title": "DMX editor",
|
|
320
|
+
"tutorial.dmxEditor.intro.content": "Pick the FTDI device and port, then set each DMX channel’s value with the sliders to control your lighting fixtures live.",
|
|
147
321
|
// ── Sidebar context menu ──
|
|
148
322
|
"sidebar.menu.open": "Open",
|
|
149
323
|
"sidebar.menu.openNewTab": "Open in new tab",
|
|
@@ -785,7 +959,7 @@ const j = [
|
|
|
785
959
|
"vectorEditor.layers.hide": "Hide",
|
|
786
960
|
"vectorEditor.layers.lock": "Lock",
|
|
787
961
|
"vectorEditor.layers.unlock": "Unlock"
|
|
788
|
-
},
|
|
962
|
+
}, ye = {
|
|
789
963
|
ok: "OK",
|
|
790
964
|
cancel: "Anuluj",
|
|
791
965
|
save: "Zapisz",
|
|
@@ -887,6 +1061,180 @@ const j = [
|
|
|
887
1061
|
"navShell.home.sections.openTabs": "Otwarte teraz",
|
|
888
1062
|
"navShell.home.sections.shortcuts": "Twoje skróty",
|
|
889
1063
|
"navShell.home.sections.allViews": "Wszystkie widoki",
|
|
1064
|
+
// ── NiceTutorial (autoplay controls) ──
|
|
1065
|
+
"tutorial.play": "Odtwórz",
|
|
1066
|
+
"tutorial.pause": "Pauza",
|
|
1067
|
+
"tutorial.speed": "Prędkość",
|
|
1068
|
+
"tutorial.close": "Zamknij",
|
|
1069
|
+
// ── NiceTutorial launcher (generic) ──
|
|
1070
|
+
"tutorial.start": "Samouczek",
|
|
1071
|
+
"tutorial.startAria": "Uruchom samouczek",
|
|
1072
|
+
"tutorial.next": "Dalej",
|
|
1073
|
+
"tutorial.back": "Wstecz",
|
|
1074
|
+
"tutorial.finish": "Zakończ",
|
|
1075
|
+
"tutorial.skip": "Pomiń",
|
|
1076
|
+
"tutorial.stepOf": "z",
|
|
1077
|
+
// ── NiceModuleEditor tour ──
|
|
1078
|
+
"tutorial.moduleEditor.browser.title": "Przeglądarka modułów",
|
|
1079
|
+
"tutorial.moduleEditor.browser.content": "Wybierz moduł, aby otworzyć jego manifest, encje i tłumaczenia.",
|
|
1080
|
+
"tutorial.moduleEditor.validate.title": "Walidacja",
|
|
1081
|
+
"tutorial.moduleEditor.validate.content": "Sprawdź moduł względem schematu manifestu. Problemy pojawią się na pasku statusu i w logach.",
|
|
1082
|
+
"tutorial.moduleEditor.save.title": "Zapis",
|
|
1083
|
+
"tutorial.moduleEditor.save.content": "Zapisz zmiany przez skonfigurowany data provider (np. zapis plików na dysk).",
|
|
1084
|
+
"tutorial.manifestEditor.intro.title": "Edytor manifestu",
|
|
1085
|
+
"tutorial.manifestEditor.intro.content": "Edytuj manifest w sekcjach opartych na schemacie. Przełączaj Formularz ⇄ JSON w sekcji; walidacja widoczna na pasku statusu.",
|
|
1086
|
+
"tutorial.schemaForm.intro.title": "Formularz ze schematu",
|
|
1087
|
+
"tutorial.schemaForm.intro.content": "Ten formularz jest generowany ze schematu. Pola wymagane i błędy walidacji są oznaczane; użyj przełącznika JSON do edycji surowej.",
|
|
1088
|
+
"tutorial.entityEditor.intro.title": "Edytor encji",
|
|
1089
|
+
"tutorial.entityEditor.intro.content": "Dodawaj encje po lewej, a po prawej edytuj metadane encji i jej pola (typ, klucze, ograniczenia).",
|
|
1090
|
+
"tutorial.i18nEditor.intro.title": "Tłumaczenia",
|
|
1091
|
+
"tutorial.i18nEditor.intro.content": "Edytuj tłumaczenia w siatce klucze × locale. Dodawaj klucze i języki; bursztynowe komórki oznaczają braki.",
|
|
1092
|
+
"tutorial.formBuilder.intro.title": "Kreator formularzy",
|
|
1093
|
+
"tutorial.formBuilder.intro.content": "Przeciągaj pola z palety na kanwę, a potem konfiguruj każde pole w panelu właściwości. Na koniec wyeksportuj schemat.",
|
|
1094
|
+
"tutorial.formDesigner.intro.title": "Projektant formularzy",
|
|
1095
|
+
"tutorial.formDesigner.intro.content": "Projektuj formularze z sekcjami, lookupami i polami wyliczanymi; powiąż je z encją i podglądaj na żywo.",
|
|
1096
|
+
"tutorial.paymentProviderConfig.intro.title": "Dostawca płatności",
|
|
1097
|
+
"tutorial.paymentProviderConfig.intro.content": "Wybierz dostawcę, uzupełnij dane (sekrety są maskowane), wybierz test/live, włącz metody i skopiuj URL webhooka.",
|
|
1098
|
+
"tutorial.webhookTester.intro.title": "Tester webhooków",
|
|
1099
|
+
"tutorial.webhookTester.intro.content": "Wybierz zapisany payload (lub napisz własny), opcjonalnie go podpisz, wyślij na endpoint i sprawdź odpowiedź.",
|
|
1100
|
+
"tutorial.apiDesigner.intro.title": "Projektant API",
|
|
1101
|
+
"tutorial.apiDesigner.intro.content": "Zdefiniuj endpointy, parametry, schematy żądań/odpowiedzi i zabezpieczenia dokumentu OpenAPI.",
|
|
1102
|
+
"tutorial.apiTester.intro.title": "Tester API",
|
|
1103
|
+
"tutorial.apiTester.intro.content": "Buduj żądania z kolekcjami i zmiennymi środowiska, wysyłaj je i sprawdzaj asercje na odpowiedziach.",
|
|
1104
|
+
"tutorial.integrationBuilder.intro.title": "Kreator integracji",
|
|
1105
|
+
"tutorial.integrationBuilder.intro.content": "Połącz przepływ węzłów (wyzwalacze → akcje → obsługa błędów), aby zbudować integrację.",
|
|
1106
|
+
"tutorial.scriptRunner.intro.title": "Runner skryptów",
|
|
1107
|
+
"tutorial.scriptRunner.intro.content": "Napisz skrypt i przykładowe dane wejściowe, kliknij Uruchom, a poniżej sprawdź wynik i przechwycone logi.",
|
|
1108
|
+
"tutorial.lifecycleHooks.intro.title": "Haki cyklu życia",
|
|
1109
|
+
"tutorial.lifecycleHooks.intro.content": "Przypisz uchwyty do każdego wyzwalacza, ustaw ich kolejność i flagę włączenia oraz dodaj opcjonalny warunek wykonania.",
|
|
1110
|
+
"tutorial.revisionHistory.intro.title": "Historia wersji",
|
|
1111
|
+
"tutorial.revisionHistory.intro.content": "Wybierz wersję, wskaż drugą do porównania, przejrzyj różnice obok siebie, a w razie potrzeby przywróć wcześniejszą wersję.",
|
|
1112
|
+
"tutorial.markdownEditor.intro.title": "Edytor Markdown",
|
|
1113
|
+
"tutorial.markdownEditor.intro.content": "Pisz w Markdown za pomocą paska formatowania; włącz podgląd na żywo, aby zobaczyć wynik, i eksportuj do HTML.",
|
|
1114
|
+
"tutorial.htmlEditor.intro.title": "Edytor tekstu sformatowanego",
|
|
1115
|
+
"tutorial.htmlEditor.intro.content": "Formatuj tekst paskiem narzędzi, wstawiaj linki, obrazy i tabele oraz przełączaj się na źródło HTML lub Markdown, gdy tego potrzebujesz.",
|
|
1116
|
+
"tutorial.documentEditor.intro.title": "Edytor dokumentów",
|
|
1117
|
+
"tutorial.documentEditor.intro.content": "Twórz dokument z bloków: użyj paska narzędzi lub komend slash, aby dodać nagłówki, listy, media i więcej, a następnie wyeksportuj do HTML.",
|
|
1118
|
+
"tutorial.codeEditor.intro.title": "Edytor kodu",
|
|
1119
|
+
"tutorial.codeEditor.intro.content": "Edytuj kod z podświetlaniem składni, IntelliSense i paskiem narzędzi. Ctrl+S zapisuje; pasek stanu pokazuje pozycję kursora i ewentualne problemy.",
|
|
1120
|
+
"tutorial.kanbanBoard.intro.title": "Tablica Kanban",
|
|
1121
|
+
"tutorial.kanbanBoard.intro.content": 'Przeciągaj karty między kolumnami, aby zmienić ich status, dodawaj karty przyciskiem „+", a kliknij kartę, aby edytować jej szczegóły.',
|
|
1122
|
+
"tutorial.queryBuilder.intro.title": "Kreator zapytań",
|
|
1123
|
+
"tutorial.queryBuilder.intro.content": "Dodawaj tabele, wybieraj kolumny, definiuj złączenia, warunki i sortowanie wizualnie — SQL zostanie wygenerowany automatycznie. Przejdź na kartę SQL, aby go sprawdzić.",
|
|
1124
|
+
"tutorial.stateDesigner.intro.title": "Projektant stanu",
|
|
1125
|
+
"tutorial.stateDesigner.intro.content": "Modeluj magazyn jako wycinki z polami i akcjami, wybierz cel (np. Zustand) i wyeksportuj gotowy kod zarządzania stanem.",
|
|
1126
|
+
"tutorial.componentDesigner.intro.title": "Projektant komponentów",
|
|
1127
|
+
"tutorial.componentDesigner.intro.content": "Nazwij komponent, zadeklaruj jego właściwości wraz z typami i wymaganiami oraz zobacz na żywo wygenerowany interfejs TypeScript.",
|
|
1128
|
+
"tutorial.pageBuilder.intro.title": "Kreator stron",
|
|
1129
|
+
"tutorial.pageBuilder.intro.content": "Przeciągaj komponenty z paska bocznego na responsywną siatkę, przełączaj podgląd desktop/tablet/mobile i zapisz układ.",
|
|
1130
|
+
"tutorial.lowCodeStudio.intro.title": "Studio low-code",
|
|
1131
|
+
"tutorial.lowCodeStudio.intro.content": "Przeciągaj komponenty z paska bocznego na kanwę, a następnie przełączaj się między kartami Projekt, Podgląd i Kod, aby zbudować i wyeksportować aplikację.",
|
|
1132
|
+
"tutorial.testBuilder.intro.title": "Kreator testów",
|
|
1133
|
+
"tutorial.testBuilder.intro.content": "Buduj zestawy testów wizualnie: dodawaj przypadki i kroki interakcji z asercjami, uruchamiaj je i eksportuj do gotowego pliku .test.tsx.",
|
|
1134
|
+
"tutorial.workflowDesigner.intro.title": "Projektant przepływów",
|
|
1135
|
+
"tutorial.workflowDesigner.intro.content": "Dodawaj stany i przejścia na kanwie, sprawdzaj poprawność przepływu, symuluj go, a następnie testuj lub publikuj swój workflow.",
|
|
1136
|
+
"tutorial.themeBuilder.intro.title": "Kreator motywów",
|
|
1137
|
+
"tutorial.themeBuilder.intro.content": "Zacznij od gotowego motywu, dostosuj kolory, typografię i inne tokeny według sekcji, podglądaj na żywo, a następnie zastosuj lub wyeksportuj motyw.",
|
|
1138
|
+
"tutorial.filterBuilder.intro.title": "Kreator filtrów",
|
|
1139
|
+
"tutorial.filterBuilder.intro.content": "Buduj złożone drzewa filtrów AND/OR: dodawaj warunki i zagnieżdżone grupy, wybieraj pola i operatory oraz zapisuj wielokrotnego użytku presety.",
|
|
1140
|
+
"tutorial.diagramDesigner.intro.title": "Projektant diagramów",
|
|
1141
|
+
"tutorial.diagramDesigner.intro.content": "Przeciągaj kształty z palety na kanwę, łącz je konektorami, edytuj właściwości po prawej, a następnie eksportuj do SVG, PNG lub JSON.",
|
|
1142
|
+
"tutorial.reportBuilder.intro.title": "Kreator raportów",
|
|
1143
|
+
"tutorial.reportBuilder.intro.content": "Przeciągaj sekcje na raport, wiąż je ze źródłami danych, układaj układ, a następnie eksportuj do PDF, HTML lub XLSX.",
|
|
1144
|
+
"tutorial.erpReportDesigner.intro.title": "Projektant raportów",
|
|
1145
|
+
"tutorial.erpReportDesigner.intro.content": "Projektuj raporty pasmowe: umieszczaj elementy (pola, wyrażenia, wykresy) w pasmach, wiąż połączenia danych, edytuj właściwości, a następnie podglądaj i eksportuj.",
|
|
1146
|
+
"tutorial.recipeEditor.intro.title": "Edytor przepisów",
|
|
1147
|
+
"tutorial.recipeEditor.intro.content": "Edytuj szczegóły przepisu, dodawaj i zmieniaj kolejność składników i kroków, dołączaj zdjęcia oraz importuj lub eksportuj przepis jako JSON.",
|
|
1148
|
+
"tutorial.pipelineEditor.intro.title": "Edytor pipeline’ów",
|
|
1149
|
+
"tutorial.pipelineEditor.intro.content": "Zbuduj pipeline CI/CD z etapów, zadań i kroków; ustaw wyzwalacze, zmienne i sekrety; następnie sprawdź, zapisz i uruchom go.",
|
|
1150
|
+
"tutorial.mergeRequestBuilder.intro.title": "Kreator merge requestów",
|
|
1151
|
+
"tutorial.mergeRequestBuilder.intro.content": "Wybierz gałąź źródłową i docelową, napisz tytuł i opis, dodaj recenzentów, etykiety i powiązane zgłoszenia, a następnie podejrzyj i wyślij.",
|
|
1152
|
+
"tutorial.automationRuleEditor.intro.title": "Edytor reguł automatyzacji",
|
|
1153
|
+
"tutorial.automationRuleEditor.intro.content": "Zdefiniuj wyzwalacz, dodaj opcjonalne warunki, a następnie wypisz akcje do wykonania — przełączaj się między trzema sekcjami za pomocą kart.",
|
|
1154
|
+
"tutorial.sceneActionBuilder.intro.title": "Kreator akcji sceny",
|
|
1155
|
+
"tutorial.sceneActionBuilder.intro.content": "Dodaj akcję dla każdego urządzenia, ustaw jego stan docelowy i opcjonalne opóźnienie, zmieniaj kolejność i podglądaj sekwencję sceny.",
|
|
1156
|
+
"tutorial.backupTagEditor.intro.title": "Tagi kopii zapasowej",
|
|
1157
|
+
"tutorial.backupTagEditor.intro.content": "Otaguj tę kopię zapasową dla łatwego odnalezienia: wpisz etykietę i wybierz kolor lub dodaj jeden z sugerowanych tagów; tagi automatyczne są chronione.",
|
|
1158
|
+
"tutorial.dataMergeBuilder.intro.title": "Scalanie danych",
|
|
1159
|
+
"tutorial.dataMergeBuilder.intro.content": "Przejdź przez kroki: wybierz gałąź źródłową i docelową, podejrzyj zmiany, rozwiąż konflikty, ustaw opcje, a następnie potwierdź scalanie.",
|
|
1160
|
+
"tutorial.invoiceLineEditor.intro.title": "Pozycje faktury",
|
|
1161
|
+
"tutorial.invoiceLineEditor.intro.content": "Dodawaj pozycje z ilością, ceną jednostkową, VAT i rabatem — kwoty netto, brutto i rozbicie VAT są obliczane automatycznie.",
|
|
1162
|
+
"tutorial.keyValueEditor.intro.title": "Edytor klucz/wartość",
|
|
1163
|
+
"tutorial.keyValueEditor.intro.content": "Dodawaj wiersze klucz/wartość dla nagłówków, parametrów, zmiennych środowiskowych lub konfiguracji; maskuj sekrety, włączaj/wyłączaj wiersze i wykrywaj duplikaty kluczy.",
|
|
1164
|
+
"tutorial.imageEditor.intro.title": "Edytor obrazów",
|
|
1165
|
+
"tutorial.imageEditor.intro.content": "Użyj paska narzędzi, aby przyciąć, obrócić, odbić, dostosować jasność/kontrast i dodać adnotacje; cofaj/ponawiaj zmiany, a następnie zapisz wynik.",
|
|
1166
|
+
"tutorial.cropEditor.intro.title": "Edytor kadrowania",
|
|
1167
|
+
"tutorial.cropEditor.intro.content": "Przeciągnij ramkę kadrowania na obrazie, wybierz proporcje, obróć, odbij lub przybliż, a następnie użyj wyniku.",
|
|
1168
|
+
"tutorial.pdfAnnotationEditor.intro.title": "Adnotacje PDF",
|
|
1169
|
+
"tutorial.pdfAnnotationEditor.intro.content": "Wybierz narzędzie z paska (zakreślacz, podkreślenie, odręczne, tekst…), nanieś adnotacje na stronę, przechodź między stronami i przybliżaj w razie potrzeby.",
|
|
1170
|
+
"tutorial.videoEditor.intro.title": "Edytor wideo",
|
|
1171
|
+
"tutorial.videoEditor.intro.content": "Dodawaj media do ścieżek osi czasu, przycinaj i układaj klipy, edytuj właściwości klipów, podglądaj odtwarzanie, a następnie eksportuj wideo.",
|
|
1172
|
+
// ── Phase 4: edytory pakietów domenowych ──
|
|
1173
|
+
"tutorial.viewBuilder.intro.title": "Kreator widoków",
|
|
1174
|
+
"tutorial.viewBuilder.intro.content": "Przeciągaj kontrolki z palety do komórek siatki, konfiguruj każdą komórkę w panelu właściwości oraz importuj, eksportuj lub zapisz widok.",
|
|
1175
|
+
"tutorial.dashboardDesigner.intro.title": "Projektant dashboardów",
|
|
1176
|
+
"tutorial.dashboardDesigner.intro.content": "Przeciągaj widżety z palety na siatkę, zmieniaj ich rozmiar i układ, konfiguruj każdy w panelu właściwości, a następnie podglądaj lub eksportuj dashboard.",
|
|
1177
|
+
"tutorial.workflowDesignerCanvas.intro.title": "Projektant przepływów",
|
|
1178
|
+
"tutorial.workflowDesignerCanvas.intro.content": "Dodawaj na kanwę węzły wyzwalaczy, akcji i warunków i łącz je; zarządzaj zmiennymi, sprawdzaj poprawność przepływu, a następnie eksportuj.",
|
|
1179
|
+
"tutorial.armatureEditor.intro.title": "Edytor szkieletu",
|
|
1180
|
+
"tutorial.armatureEditor.intro.content": "Zaznaczaj kości, aby edytować ich transformacje, dodawaj lub zmieniaj rodzica kości, konfiguruj łańcuchy IK oraz zapisuj i wczytuj pozy.",
|
|
1181
|
+
"tutorial.morphTargetEditor.intro.title": "Edytor morph targetów",
|
|
1182
|
+
"tutorial.morphTargetEditor.intro.content": "Mieszaj morph targety siatki suwakami wpływu, twórz lub usuwaj cele i podglądaj interpolację.",
|
|
1183
|
+
"tutorial.terrainEditor.intro.title": "Edytor terenu",
|
|
1184
|
+
"tutorial.terrainEditor.intro.content": "Rzeźb mapę wysokości pędzlami (podnieś, obniż, spłaszcz, wygładź, szum), nakładaj warstwy tekstur, generuj teren proceduralnie oraz importuj/eksportuj mapy wysokości.",
|
|
1185
|
+
"tutorial.materialEditor.intro.title": "Edytor materiałów",
|
|
1186
|
+
"tutorial.materialEditor.intro.content": "Zbuduj shader jako graf węzłów: przeciągaj węzły z palety, łącz ich porty, edytuj właściwości i podglądaj skompilowany materiał.",
|
|
1187
|
+
"tutorial.particleEditor.intro.title": "Edytor cząstek",
|
|
1188
|
+
"tutorial.particleEditor.intro.content": "Wybierz system cząstek, dostrój jego emiter i moduły w inspektorze oraz odtwarzaj, pauzuj lub zatrzymuj podgląd na żywo.",
|
|
1189
|
+
"tutorial.uvEditor.intro.title": "Edytor UV",
|
|
1190
|
+
"tutorial.uvEditor.intro.content": "Edytuj układ UV siatki na teksturze: zaznaczaj i przekształcaj UV narzędziami, przełączaj kanały UV i zatwierdzaj zmiany.",
|
|
1191
|
+
"tutorial.fontEditor.intro.title": "Edytor fontów",
|
|
1192
|
+
"tutorial.fontEditor.intro.content": "Edytuj glify na siatce unicode, dostosuj metryki fontu oraz ścieżki i odstępy poszczególnych glifów, a następnie wyeksportuj font.",
|
|
1193
|
+
"tutorial.iconEditor.intro.title": "Edytor ikon",
|
|
1194
|
+
"tutorial.iconEditor.intro.content": "Rysuj i edytuj kształty SVG na siatce, dostosuj ustawienia obrysu i wariantu, podglądaj na różnych tłach i eksportuj do SVG, React lub PNG.",
|
|
1195
|
+
"tutorial.uiDesigner.intro.title": "Projektant UI",
|
|
1196
|
+
"tutorial.uiDesigner.intro.content": "Przeciągaj komponenty z palety na kanwę, edytuj ich właściwości w panelu, podglądaj responsywne punkty i eksportuj do React/TSX.",
|
|
1197
|
+
"tutorial.gameEditor.intro.title": "Edytor gier",
|
|
1198
|
+
"tutorial.gameEditor.intro.content": "Buduj scenę w widoku, korzystając z paneli hierarchii i zasobów, dostrajaj encje w inspektorze i zapisz projekt.",
|
|
1199
|
+
"tutorial.levelEditor.intro.title": "Edytor poziomów",
|
|
1200
|
+
"tutorial.levelEditor.intro.content": "Buduj świat gry: rozmieszczaj i przyciągaj obiekty na warstwach, maluj teren, układaj splajny i światła, a następnie wypiecz lightmapy.",
|
|
1201
|
+
"tutorial.gameMaterialEditor.intro.title": "Edytor materiałów",
|
|
1202
|
+
"tutorial.gameMaterialEditor.intro.content": "Twórz shader jako graf węzłów: dodawaj i łącz węzły shadera, edytuj ich właściwości i kompiluj materiał.",
|
|
1203
|
+
"tutorial.gameParticleEditor.intro.title": "Edytor cząstek",
|
|
1204
|
+
"tutorial.gameParticleEditor.intro.content": "Dostrój system cząstek w inspektorze — emiter, czas życia, krzywe i renderowanie — oraz odtwarzaj, pauzuj lub restartuj podgląd na żywo.",
|
|
1205
|
+
"tutorial.floorPlanEditor.intro.title": "Edytor rzutu kondygnacji",
|
|
1206
|
+
"tutorial.floorPlanEditor.intro.content": "Rysuj pomieszczenia i strefy narzędziami, rozmieszczaj urządzenia na planie, przełączaj kondygnacje i włączaj nakładki, takie jak wymiary, siatka i obłożenie.",
|
|
1207
|
+
"tutorial.buildingSceneEditor.intro.title": "Edytor scen",
|
|
1208
|
+
"tutorial.buildingSceneEditor.intro.content": "Twórz sceny ustawiające wiele urządzeń naraz: wybierz scenę, określ stany docelowe urządzeń, a następnie zapisz lub aktywuj.",
|
|
1209
|
+
"tutorial.buildingAutomationEditor.intro.title": "Edytor automatyzacji",
|
|
1210
|
+
"tutorial.buildingAutomationEditor.intro.content": "Twórz automatyzacje budynku: wybierz jedną z listy, zdefiniuj jej wyzwalacze, warunki i akcje, a następnie zapisz, włącz lub usuń.",
|
|
1211
|
+
"tutorial.spatialEditor.intro.title": "Edytor przestrzenny",
|
|
1212
|
+
"tutorial.spatialEditor.intro.content": "Projektuj rzuty w różnych trybach: rysuj ściany, pomieszczenia i obiekty narzędziami, zarządzaj warstwami, przyciągaj do siatki i eksportuj.",
|
|
1213
|
+
"tutorial.decisionTreeEditor.intro.title": "Edytor drzewa decyzyjnego",
|
|
1214
|
+
"tutorial.decisionTreeEditor.intro.content": "Eksploruj drzewo decyzyjne: klikaj węzły, aby sprawdzić warunki i wyniki, włączaj metryki, prawdopodobieństwa i próbki oraz podświetlaj ścieżkę dla danych wejściowych.",
|
|
1215
|
+
"tutorial.diagramEditor.intro.title": "Edytor diagramów",
|
|
1216
|
+
"tutorial.diagramEditor.intro.content": "Wybierz narzędzie, aby dodawać i łączyć węzły na kanwie, edytuj je w panelu właściwości i eksportuj diagram z paska narzędzi.",
|
|
1217
|
+
"tutorial.contractEditor.intro.title": "Edytor umów",
|
|
1218
|
+
"tutorial.contractEditor.intro.content": "Złóż umowę z biblioteki klauzul, uzupełnij zmienne szablonu, śledź wersje i zatwierdzenia, a następnie zapisz lub wyeksportuj do PDF/DOCX/HTML.",
|
|
1219
|
+
"tutorial.invoiceDesigner.intro.title": "Projektant faktur",
|
|
1220
|
+
"tutorial.invoiceDesigner.intro.content": "Przeciągaj elementy na kanwę faktury, wiąż je z polami danych, wyrównuj do siatki i linijek, a następnie zapisz lub wyeksportuj do PDF.",
|
|
1221
|
+
"tutorial.presentationEditor.intro.title": "Edytor prezentacji",
|
|
1222
|
+
"tutorial.presentationEditor.intro.content": "Buduj slajdy z paska miniatur, dodawaj i układaj elementy na kanwie, edytuj je w panelu właściwości, a następnie prezentuj lub eksportuj.",
|
|
1223
|
+
// ── Phase 4 tail: pakiety samodzielne (ui-bi/ui-video/ui-ai/ui-math/ui-audio) ──
|
|
1224
|
+
"tutorial.dashboardStudio.intro.title": "Studio dashboardów",
|
|
1225
|
+
"tutorial.dashboardStudio.intro.content": "Przeciągaj widżety z palety na siatkę, wiąż je ze źródłami danych, dodawaj filtry, a następnie przełączaj Edycja/Podgląd, odświeżaj i zapisz.",
|
|
1226
|
+
"tutorial.biReportBuilder.intro.title": "Kreator raportów",
|
|
1227
|
+
"tutorial.biReportBuilder.intro.content": "Przeciągaj elementy z palety na raport, wiąż je ze źródłami danych, przełączaj projekt/podgląd, a następnie eksportuj do PDF lub Excela.",
|
|
1228
|
+
"tutorial.etlBuilder.intro.title": "Kreator ETL",
|
|
1229
|
+
"tutorial.etlBuilder.intro.content": "Połącz źródła → transformacje → miejsca docelowe w potok, przełączaj widoki, a następnie uruchom go i zapisz konfigurację.",
|
|
1230
|
+
"tutorial.videoEditorPro.intro.title": "Edytor wideo",
|
|
1231
|
+
"tutorial.videoEditorPro.intro.content": "Dodawaj media na oś czasu, układaj i przycinaj klipy, nakładaj efekty i przejścia, a następnie skonfiguruj i uruchom eksport.",
|
|
1232
|
+
"tutorial.mlStudio.intro.title": "Studio ML",
|
|
1233
|
+
"tutorial.mlStudio.intro.content": "Przejdź przez karty: przygotuj zbiory danych, uruchom eksperymenty, porównaj i wybierz modele, a następnie wdroż najlepszy.",
|
|
1234
|
+
"tutorial.mathEditor.intro.title": "Edytor matematyczny",
|
|
1235
|
+
"tutorial.mathEditor.intro.content": "Pisz równania w LaTeX lub wstawiaj symbole z palety; przełącz się na pismo odręczne i podglądaj renderowany wzór na żywo.",
|
|
1236
|
+
"tutorial.dmxEditor.intro.title": "Edytor DMX",
|
|
1237
|
+
"tutorial.dmxEditor.intro.content": "Wybierz urządzenie i port FTDI, a następnie ustaw wartość każdego kanału DMX suwakami, aby sterować oprawami oświetleniowymi na żywo.",
|
|
890
1238
|
// ── Sidebar context menu ──
|
|
891
1239
|
"sidebar.menu.open": "Otwórz",
|
|
892
1240
|
"sidebar.menu.openNewTab": "Otwórz w nowej karcie",
|
|
@@ -1491,7 +1839,7 @@ const j = [
|
|
|
1491
1839
|
"vectorEditor.layers.hide": "Ukryj",
|
|
1492
1840
|
"vectorEditor.layers.lock": "Zablokuj",
|
|
1493
1841
|
"vectorEditor.layers.unlock": "Odblokuj"
|
|
1494
|
-
},
|
|
1842
|
+
}, ze = {
|
|
1495
1843
|
ok: "OK",
|
|
1496
1844
|
cancel: "Abbrechen",
|
|
1497
1845
|
save: "Speichern",
|
|
@@ -2193,8 +2541,179 @@ const j = [
|
|
|
2193
2541
|
"vectorEditor.layers.show": "Einblenden",
|
|
2194
2542
|
"vectorEditor.layers.hide": "Ausblenden",
|
|
2195
2543
|
"vectorEditor.layers.lock": "Sperren",
|
|
2196
|
-
"vectorEditor.layers.unlock": "Entsperren"
|
|
2197
|
-
|
|
2544
|
+
"vectorEditor.layers.unlock": "Entsperren",
|
|
2545
|
+
// Tutorials (1.0.22)
|
|
2546
|
+
"tutorial.play": "Abspielen",
|
|
2547
|
+
"tutorial.pause": "Pause",
|
|
2548
|
+
"tutorial.speed": "Geschwindigkeit",
|
|
2549
|
+
"tutorial.close": "Schließen",
|
|
2550
|
+
"tutorial.start": "Tutorial",
|
|
2551
|
+
"tutorial.startAria": "Tutorial starten",
|
|
2552
|
+
"tutorial.next": "Weiter",
|
|
2553
|
+
"tutorial.back": "Zurück",
|
|
2554
|
+
"tutorial.finish": "Fertig",
|
|
2555
|
+
"tutorial.skip": "Überspringen",
|
|
2556
|
+
"tutorial.stepOf": "von",
|
|
2557
|
+
"tutorial.moduleEditor.browser.title": "Modul-Browser",
|
|
2558
|
+
"tutorial.moduleEditor.browser.content": "Wählen Sie hier ein Modul, um sein Manifest, seine Entitäten und Übersetzungen zu öffnen.",
|
|
2559
|
+
"tutorial.moduleEditor.validate.title": "Prüfen",
|
|
2560
|
+
"tutorial.moduleEditor.validate.content": "Prüfen Sie das Modul gegen das Manifest-Schema. Probleme erscheinen in der Statusleiste und in der Ausgabe.",
|
|
2561
|
+
"tutorial.moduleEditor.save.title": "Speichern",
|
|
2562
|
+
"tutorial.moduleEditor.save.content": "Speichern Sie Ihre Änderungen über den konfigurierten Datenanbieter (z. B. Dateien zurück auf die Festplatte schreiben).",
|
|
2563
|
+
"tutorial.manifestEditor.intro.title": "Manifest-Editor",
|
|
2564
|
+
"tutorial.manifestEditor.intro.content": "Bearbeiten Sie das Manifest in schemagesteuerten Abschnitten. Schalten Sie pro Abschnitt zwischen Formular ⇄ JSON um; die Validierung erscheint in der Statusleiste.",
|
|
2565
|
+
"tutorial.schemaForm.intro.title": "Schema-Formular",
|
|
2566
|
+
"tutorial.schemaForm.intro.content": "Dieses Formular wird aus einem Schema erzeugt. Pflichtfelder und Validierungsfehler werden markiert; nutzen Sie den JSON-Umschalter für die Rohbearbeitung.",
|
|
2567
|
+
"tutorial.entityEditor.intro.title": "Entitäten-Editor",
|
|
2568
|
+
"tutorial.entityEditor.intro.content": "Fügen Sie links Entitäten hinzu und bearbeiten Sie rechts die Metadaten jeder Entität sowie ihre Felder (Typ, Schlüssel, Einschränkungen).",
|
|
2569
|
+
"tutorial.i18nEditor.intro.title": "Übersetzungen",
|
|
2570
|
+
"tutorial.i18nEditor.intro.content": "Bearbeiten Sie Übersetzungen als Raster aus Schlüsseln × Sprachen. Fügen Sie Schlüssel und Sprachen hinzu; bernsteinfarbene Zellen markieren fehlende Übersetzungen.",
|
|
2571
|
+
"tutorial.formBuilder.intro.title": "Formular-Builder",
|
|
2572
|
+
"tutorial.formBuilder.intro.content": "Ziehen Sie Felder aus der Palette auf die Arbeitsfläche und konfigurieren Sie jedes Feld im Eigenschaftenbereich. Exportieren Sie das Schema, wenn Sie fertig sind.",
|
|
2573
|
+
"tutorial.formDesigner.intro.title": "Formular-Designer",
|
|
2574
|
+
"tutorial.formDesigner.intro.content": "Gestalten Sie Eingabeformulare mit Abschnitten, Nachschlagefeldern und berechneten Feldern; binden Sie sie an Ihre Entität und sehen Sie eine Live-Vorschau.",
|
|
2575
|
+
"tutorial.paymentProviderConfig.intro.title": "Zahlungsanbieter",
|
|
2576
|
+
"tutorial.paymentProviderConfig.intro.content": "Wählen Sie einen Anbieter, geben Sie seine Zugangsdaten ein (Geheimnisse werden maskiert), wählen Sie Test/Live, aktivieren Sie Methoden und kopieren Sie die Webhook-URL.",
|
|
2577
|
+
"tutorial.webhookTester.intro.title": "Webhook-Tester",
|
|
2578
|
+
"tutorial.webhookTester.intro.content": "Wählen Sie eine gespeicherte Nutzlast (oder schreiben Sie eine), signieren Sie sie optional, senden Sie sie an den Endpunkt und prüfen Sie die Antwort.",
|
|
2579
|
+
"tutorial.apiDesigner.intro.title": "API-Designer",
|
|
2580
|
+
"tutorial.apiDesigner.intro.content": "Definieren Sie Endpunkte, Parameter, Anfrage-/Antwortschemata und Sicherheit für Ihr OpenAPI-Dokument.",
|
|
2581
|
+
"tutorial.apiTester.intro.title": "API-Tester",
|
|
2582
|
+
"tutorial.apiTester.intro.content": "Erstellen Sie Anfragen mit Sammlungen und Umgebungsvariablen, senden Sie sie und prüfen Sie die Antworten.",
|
|
2583
|
+
"tutorial.integrationBuilder.intro.title": "Integrations-Builder",
|
|
2584
|
+
"tutorial.integrationBuilder.intro.content": "Verdrahten Sie einen Ablauf aus Knoten (Auslöser → Aktionen → Fehlerbehandlung) und verbinden Sie sie, um eine Integration zu bauen.",
|
|
2585
|
+
"tutorial.scriptRunner.intro.title": "Skript-Runner",
|
|
2586
|
+
"tutorial.scriptRunner.intro.content": "Schreiben Sie ein Skript und Beispieleingaben, klicken Sie auf Ausführen und prüfen Sie unten das Ergebnis und die erfassten Protokolle.",
|
|
2587
|
+
"tutorial.lifecycleHooks.intro.title": "Lebenszyklus-Hooks",
|
|
2588
|
+
"tutorial.lifecycleHooks.intro.content": "Binden Sie Handler an jeden Auslöser, legen Sie ihre Reihenfolge und das Aktiv-Kennzeichen fest und fügen Sie eine optionale Bedingung hinzu, die die Ausführung steuert.",
|
|
2589
|
+
"tutorial.revisionHistory.intro.title": "Versionsverlauf",
|
|
2590
|
+
"tutorial.revisionHistory.intro.content": "Wählen Sie eine Version, wählen Sie eine weitere zum Vergleich, prüfen Sie den Side-by-Side-Vergleich und stellen Sie bei Bedarf eine frühere Version wieder her.",
|
|
2591
|
+
"tutorial.markdownEditor.intro.title": "Markdown-Editor",
|
|
2592
|
+
"tutorial.markdownEditor.intro.content": "Schreiben Sie Markdown mit der Formatierungsleiste; schalten Sie die Live-Vorschau ein, um das gerenderte Ergebnis zu sehen, und exportieren Sie nach HTML.",
|
|
2593
|
+
"tutorial.htmlEditor.intro.title": "Rich-Text-Editor",
|
|
2594
|
+
"tutorial.htmlEditor.intro.content": "Formatieren Sie Text mit der Symbolleiste, fügen Sie Links, Bilder und Tabellen ein und wechseln Sie bei Bedarf zur HTML- oder Markdown-Quelle.",
|
|
2595
|
+
"tutorial.documentEditor.intro.title": "Dokument-Editor",
|
|
2596
|
+
"tutorial.documentEditor.intro.content": "Erstellen Sie ein Dokument aus Blöcken: Nutzen Sie die Symbolleiste oder Slash-Befehle, um Überschriften, Listen, Medien und mehr hinzuzufügen, und exportieren Sie nach HTML.",
|
|
2597
|
+
"tutorial.codeEditor.intro.title": "Code-Editor",
|
|
2598
|
+
"tutorial.codeEditor.intro.content": "Bearbeiten Sie Code mit Syntaxhervorhebung, IntelliSense und der Symbolleiste. Strg+S speichert; die Statusleiste zeigt die Cursorposition und etwaige Probleme.",
|
|
2599
|
+
"tutorial.kanbanBoard.intro.title": "Kanban-Board",
|
|
2600
|
+
"tutorial.kanbanBoard.intro.content": "Ziehen Sie Karten zwischen Spalten, um ihren Status zu ändern, fügen Sie Karten mit der Schaltfläche „+“ hinzu und klicken Sie auf eine Karte, um ihre Details zu bearbeiten.",
|
|
2601
|
+
"tutorial.queryBuilder.intro.title": "Abfrage-Builder",
|
|
2602
|
+
"tutorial.queryBuilder.intro.content": "Fügen Sie Tabellen hinzu, wählen Sie Spalten, definieren Sie Joins, Bedingungen und Sortierung visuell – das SQL wird für Sie erzeugt. Wechseln Sie zum SQL-Tab, um es zu prüfen.",
|
|
2603
|
+
"tutorial.stateDesigner.intro.title": "State-Designer",
|
|
2604
|
+
"tutorial.stateDesigner.intro.content": "Modellieren Sie Ihren Store als Slices mit Feldern und Aktionen, wählen Sie ein Ziel (z. B. Zustand) und exportieren Sie einsatzfertigen State-Management-Code.",
|
|
2605
|
+
"tutorial.componentDesigner.intro.title": "Komponenten-Designer",
|
|
2606
|
+
"tutorial.componentDesigner.intro.content": "Benennen Sie Ihre Komponente, deklarieren Sie ihre Props mit Typen und Anforderungen und sehen Sie die erzeugte TypeScript-Schnittstelle live in der Vorschau.",
|
|
2607
|
+
"tutorial.pageBuilder.intro.title": "Seiten-Builder",
|
|
2608
|
+
"tutorial.pageBuilder.intro.content": "Ziehen Sie Komponenten aus der Seitenleiste auf das responsive Raster, wechseln Sie die Desktop-/Tablet-/Mobil-Vorschau und speichern Sie das Layout.",
|
|
2609
|
+
"tutorial.lowCodeStudio.intro.title": "Low-Code-Studio",
|
|
2610
|
+
"tutorial.lowCodeStudio.intro.content": "Ziehen Sie Komponenten aus der Seitenleiste auf die Arbeitsfläche und wechseln Sie zwischen den Tabs Design, Vorschau und Code, um Ihre App zu bauen und zu exportieren.",
|
|
2611
|
+
"tutorial.testBuilder.intro.title": "Test-Builder",
|
|
2612
|
+
"tutorial.testBuilder.intro.content": "Erstellen Sie Test-Suiten visuell: Fügen Sie Fälle und Interaktionsschritte mit Assertions hinzu, führen Sie sie aus und exportieren Sie in eine lauffähige .test.tsx-Datei.",
|
|
2613
|
+
"tutorial.workflowDesigner.intro.title": "Workflow-Designer",
|
|
2614
|
+
"tutorial.workflowDesigner.intro.content": "Fügen Sie Zustände und Übergänge auf der Arbeitsfläche hinzu, validieren Sie den Ablauf, simulieren Sie ihn und testen oder veröffentlichen Sie dann Ihren Workflow.",
|
|
2615
|
+
"tutorial.themeBuilder.intro.title": "Theme-Builder",
|
|
2616
|
+
"tutorial.themeBuilder.intro.content": "Starten Sie mit einer Vorlage, passen Sie Farben, Typografie und weitere Tokens abschnittsweise an, sehen Sie eine Live-Vorschau und wenden Sie das Theme an oder exportieren Sie es.",
|
|
2617
|
+
"tutorial.filterBuilder.intro.title": "Filter-Builder",
|
|
2618
|
+
"tutorial.filterBuilder.intro.content": "Bauen Sie komplexe UND/ODER-Filterbäume: Fügen Sie Bedingungen und verschachtelte Gruppen hinzu, wählen Sie Felder und Operatoren und speichern Sie wiederverwendbare Vorlagen.",
|
|
2619
|
+
"tutorial.diagramDesigner.intro.title": "Diagramm-Designer",
|
|
2620
|
+
"tutorial.diagramDesigner.intro.content": "Ziehen Sie Formen aus der Palette auf die Arbeitsfläche, verbinden Sie sie mit Konnektoren, bearbeiten Sie Eigenschaften rechts und exportieren Sie nach SVG, PNG oder JSON.",
|
|
2621
|
+
"tutorial.reportBuilder.intro.title": "Bericht-Builder",
|
|
2622
|
+
"tutorial.reportBuilder.intro.content": "Ziehen Sie Abschnitte auf den Bericht, binden Sie sie an Datenquellen, ordnen Sie das Layout an und exportieren Sie nach PDF, HTML oder XLSX.",
|
|
2623
|
+
"tutorial.erpReportDesigner.intro.title": "Bericht-Designer",
|
|
2624
|
+
"tutorial.erpReportDesigner.intro.content": "Gestalten Sie Bänderberichte: Platzieren Sie Elemente (Felder, Ausdrücke, Diagramme) in Bändern, binden Sie Datenverbindungen, bearbeiten Sie Eigenschaften und sehen Sie dann Vorschau und Export.",
|
|
2625
|
+
"tutorial.recipeEditor.intro.title": "Rezept-Editor",
|
|
2626
|
+
"tutorial.recipeEditor.intro.content": "Bearbeiten Sie die Rezeptdetails, fügen Sie Zutaten und Schritte hinzu und ordnen Sie sie neu, hängen Sie Fotos an und importieren oder exportieren Sie das Rezept als JSON.",
|
|
2627
|
+
"tutorial.pipelineEditor.intro.title": "Pipeline-Editor",
|
|
2628
|
+
"tutorial.pipelineEditor.intro.content": "Bauen Sie eine CI/CD-Pipeline aus Stufen, Jobs und Schritten; legen Sie Auslöser, Variablen und Geheimnisse fest und validieren, speichern und starten Sie sie dann.",
|
|
2629
|
+
"tutorial.mergeRequestBuilder.intro.title": "Merge-Request-Builder",
|
|
2630
|
+
"tutorial.mergeRequestBuilder.intro.content": "Wählen Sie Quell- und Zielbranch, schreiben Sie Titel und Beschreibung, fügen Sie Reviewer, Labels und verknüpfte Issues hinzu und prüfen und senden Sie dann.",
|
|
2631
|
+
"tutorial.automationRuleEditor.intro.title": "Automatisierungsregel-Editor",
|
|
2632
|
+
"tutorial.automationRuleEditor.intro.content": "Definieren Sie den Auslöser, fügen Sie optionale Bedingungen hinzu und listen Sie dann die auszuführenden Aktionen auf – wechseln Sie über die Tabs zwischen den drei Abschnitten.",
|
|
2633
|
+
"tutorial.sceneActionBuilder.intro.title": "Szenen-Aktions-Builder",
|
|
2634
|
+
"tutorial.sceneActionBuilder.intro.content": "Fügen Sie pro Gerät eine Aktion hinzu, legen Sie ihren Zielzustand und eine optionale Verzögerung fest, ordnen Sie sie neu und sehen Sie eine Vorschau der Szenensequenz.",
|
|
2635
|
+
"tutorial.backupTagEditor.intro.title": "Backup-Tags",
|
|
2636
|
+
"tutorial.backupTagEditor.intro.content": "Versehen Sie dieses Backup mit Tags zur einfachen Wiederfindung: Geben Sie eine Bezeichnung ein und wählen Sie eine Farbe, oder fügen Sie einen der vorgeschlagenen Tags hinzu; automatisch erzeugte Tags sind geschützt.",
|
|
2637
|
+
"tutorial.dataMergeBuilder.intro.title": "Daten-Zusammenführung",
|
|
2638
|
+
"tutorial.dataMergeBuilder.intro.content": "Gehen Sie die Schritte durch: Wählen Sie Quell- und Zielbranch, sehen Sie eine Vorschau der Änderungen, lösen Sie Konflikte, legen Sie Optionen fest und bestätigen Sie dann die Zusammenführung.",
|
|
2639
|
+
"tutorial.invoiceLineEditor.intro.title": "Rechnungspositionen",
|
|
2640
|
+
"tutorial.invoiceLineEditor.intro.content": "Fügen Sie Positionen mit Menge, Einzelpreis, MwSt. und Rabatt hinzu – Netto, Brutto und die MwSt.-Aufschlüsselung werden automatisch berechnet.",
|
|
2641
|
+
"tutorial.keyValueEditor.intro.title": "Schlüssel/Wert-Editor",
|
|
2642
|
+
"tutorial.keyValueEditor.intro.content": "Fügen Sie Schlüssel/Wert-Zeilen für Header, Parameter, Umgebungsvariablen oder Konfiguration hinzu; maskieren Sie geheime Werte, schalten Sie Zeilen ein/aus und achten Sie auf doppelte Schlüssel.",
|
|
2643
|
+
"tutorial.imageEditor.intro.title": "Bild-Editor",
|
|
2644
|
+
"tutorial.imageEditor.intro.content": "Nutzen Sie die Symbolleiste zum Zuschneiden, Drehen, Spiegeln, Anpassen von Helligkeit/Kontrast und Annotieren; machen Sie Bearbeitungen rückgängig oder wiederholen Sie sie und speichern Sie das Ergebnis.",
|
|
2645
|
+
"tutorial.cropEditor.intro.title": "Zuschneide-Editor",
|
|
2646
|
+
"tutorial.cropEditor.intro.content": "Ziehen Sie den Zuschneiderahmen über das Bild, wählen Sie ein Seitenverhältnis, drehen, spiegeln oder zoomen Sie und verwenden Sie dann das Ergebnis.",
|
|
2647
|
+
"tutorial.pdfAnnotationEditor.intro.title": "PDF-Anmerkungen",
|
|
2648
|
+
"tutorial.pdfAnnotationEditor.intro.content": "Wählen Sie ein Werkzeug aus der Symbolleiste (Hervorheben, Unterstreichen, Freihand, Text …), kommentieren Sie die Seite und navigieren und zoomen Sie nach Bedarf.",
|
|
2649
|
+
"tutorial.videoEditor.intro.title": "Video-Editor",
|
|
2650
|
+
"tutorial.videoEditor.intro.content": "Fügen Sie Medien zu den Timeline-Spuren hinzu, schneiden und ordnen Sie Clips, bearbeiten Sie Clip-Eigenschaften, sehen Sie eine Wiedergabe-Vorschau und exportieren Sie dann das Video.",
|
|
2651
|
+
"tutorial.viewBuilder.intro.title": "Ansichts-Builder",
|
|
2652
|
+
"tutorial.viewBuilder.intro.content": "Ziehen Sie Steuerelemente aus der Palette in die Rasterzellen, konfigurieren Sie jede Zelle im Eigenschaftenbereich und importieren, exportieren oder speichern Sie die Ansicht.",
|
|
2653
|
+
"tutorial.dashboardDesigner.intro.title": "Dashboard-Designer",
|
|
2654
|
+
"tutorial.dashboardDesigner.intro.content": "Ziehen Sie Widgets aus der Palette auf das Raster, ändern Sie ihre Größe und ordnen Sie sie an, konfigurieren Sie jedes im Eigenschaftenbereich und sehen Sie dann Vorschau oder Export des Dashboards.",
|
|
2655
|
+
"tutorial.workflowDesignerCanvas.intro.title": "Workflow-Designer",
|
|
2656
|
+
"tutorial.workflowDesignerCanvas.intro.content": "Fügen Sie Auslöser-, Aktions- und Bedingungsknoten zur Arbeitsfläche hinzu und verbinden Sie sie; verwalten Sie Variablen, validieren Sie den Ablauf und exportieren Sie ihn dann.",
|
|
2657
|
+
"tutorial.armatureEditor.intro.title": "Armature-Editor",
|
|
2658
|
+
"tutorial.armatureEditor.intro.content": "Wählen Sie Knochen, um ihre Transformationen zu bearbeiten, fügen Sie Knochen hinzu oder ordnen Sie sie neu zu, konfigurieren Sie IK-Ketten und speichern oder laden Sie Posen.",
|
|
2659
|
+
"tutorial.morphTargetEditor.intro.title": "Morph-Target-Editor",
|
|
2660
|
+
"tutorial.morphTargetEditor.intro.content": "Mischen Sie die Morph-Targets des Meshes mit den Einflussreglern pro Target, erstellen oder löschen Sie Targets und sehen Sie eine Vorschau der Interpolation.",
|
|
2661
|
+
"tutorial.terrainEditor.intro.title": "Terrain-Editor",
|
|
2662
|
+
"tutorial.terrainEditor.intro.content": "Formen Sie die Höhenkarte mit Pinseln (Anheben, Absenken, Glätten, Weichzeichnen, Rauschen), tragen Sie Texturebenen auf, erzeugen Sie prozedurales Terrain und importieren/exportieren Sie Höhenkarten.",
|
|
2663
|
+
"tutorial.materialEditor.intro.title": "Material-Editor",
|
|
2664
|
+
"tutorial.materialEditor.intro.content": "Bauen Sie einen Shader als Knotengraph: Ziehen Sie Knoten aus der Palette, verdrahten Sie ihre Ports, bearbeiten Sie Eigenschaften und sehen Sie eine Vorschau des kompilierten Materials.",
|
|
2665
|
+
"tutorial.particleEditor.intro.title": "Partikel-Editor",
|
|
2666
|
+
"tutorial.particleEditor.intro.content": "Wählen Sie ein Partikelsystem, justieren Sie seinen Emitter und seine Module im Inspektor und spielen, pausieren oder stoppen Sie die Live-Vorschau.",
|
|
2667
|
+
"tutorial.uvEditor.intro.title": "UV-Editor",
|
|
2668
|
+
"tutorial.uvEditor.intro.content": "Bearbeiten Sie das UV-Layout des Meshes über der Textur: Wählen und transformieren Sie UVs mit den Werkzeugen, wechseln Sie UV-Kanäle und wenden Sie Ihre Änderungen an.",
|
|
2669
|
+
"tutorial.fontEditor.intro.title": "Schriftart-Editor",
|
|
2670
|
+
"tutorial.fontEditor.intro.content": "Bearbeiten Sie Glyphen im Unicode-Raster, passen Sie Schriftmetriken sowie Pfade und Vorschübe pro Glyphe an und exportieren Sie dann die Schriftart.",
|
|
2671
|
+
"tutorial.iconEditor.intro.title": "Icon-Editor",
|
|
2672
|
+
"tutorial.iconEditor.intro.content": "Zeichnen und bearbeiten Sie SVG-Formen im Raster, passen Sie Kontur- und Varianteneinstellungen an, sehen Sie eine Vorschau auf verschiedenen Hintergründen und exportieren Sie nach SVG, React oder PNG.",
|
|
2673
|
+
"tutorial.uiDesigner.intro.title": "UI-Designer",
|
|
2674
|
+
"tutorial.uiDesigner.intro.content": "Ziehen Sie Komponenten aus der Palette auf die Arbeitsfläche, bearbeiten Sie ihre Props im Bereich, sehen Sie responsive Breakpoints in der Vorschau und exportieren Sie nach React/TSX.",
|
|
2675
|
+
"tutorial.gameEditor.intro.title": "Spiel-Editor",
|
|
2676
|
+
"tutorial.gameEditor.intro.content": "Bauen Sie Ihre Szene im Viewport mithilfe der Hierarchie- und Asset-Bereiche, justieren Sie Entitäten im Inspektor und speichern Sie das Projekt.",
|
|
2677
|
+
"tutorial.levelEditor.intro.title": "Level-Editor",
|
|
2678
|
+
"tutorial.levelEditor.intro.content": "Bauen Sie die Spielwelt: Platzieren und rasten Sie Objekte über Ebenen ein, malen Sie Terrain, legen Sie Splines und Lichter an und backen Sie dann Lightmaps.",
|
|
2679
|
+
"tutorial.gameMaterialEditor.intro.title": "Material-Editor",
|
|
2680
|
+
"tutorial.gameMaterialEditor.intro.content": "Erstellen Sie einen Shader als Knotengraph: Fügen Sie Shader-Knoten hinzu und verbinden Sie sie, bearbeiten Sie ihre Eigenschaften und kompilieren Sie das Material.",
|
|
2681
|
+
"tutorial.gameParticleEditor.intro.title": "Partikel-Editor",
|
|
2682
|
+
"tutorial.gameParticleEditor.intro.content": "Justieren Sie das Partikelsystem im Inspektor – Emitter, Lebensdauer, Kurven und Rendering – und spielen, pausieren oder starten Sie die Live-Vorschau neu.",
|
|
2683
|
+
"tutorial.floorPlanEditor.intro.title": "Grundriss-Editor",
|
|
2684
|
+
"tutorial.floorPlanEditor.intro.content": "Zeichnen Sie Räume und Zonen mit den Werkzeugen, platzieren Sie Geräte im Plan, wechseln Sie Etagen und schalten Sie Overlays wie Maße, Raster und Belegung um.",
|
|
2685
|
+
"tutorial.buildingSceneEditor.intro.title": "Szenen-Editor",
|
|
2686
|
+
"tutorial.buildingSceneEditor.intro.content": "Erstellen Sie Szenen, die mehrere Geräte auf einmal einstellen: Wählen Sie eine Szene, legen Sie die Zielzustände der Geräte fest und speichern oder aktivieren Sie sie.",
|
|
2687
|
+
"tutorial.buildingAutomationEditor.intro.title": "Automatisierungs-Editor",
|
|
2688
|
+
"tutorial.buildingAutomationEditor.intro.content": "Erstellen Sie Gebäudeautomatisierungen: Wählen Sie eine aus der Liste, definieren Sie ihre Auslöser, Bedingungen und Aktionen und speichern, aktivieren oder löschen Sie sie.",
|
|
2689
|
+
"tutorial.spatialEditor.intro.title": "Raum-Editor",
|
|
2690
|
+
"tutorial.spatialEditor.intro.content": "Gestalten Sie Grundrisse über verschiedene Modi: Zeichnen Sie Wände, Räume und Objekte mit den Werkzeugen, verwalten Sie Ebenen, rasten Sie am Raster ein und exportieren Sie.",
|
|
2691
|
+
"tutorial.decisionTreeEditor.intro.title": "Entscheidungsbaum-Editor",
|
|
2692
|
+
"tutorial.decisionTreeEditor.intro.content": "Erkunden Sie den Entscheidungsbaum: Klicken Sie auf Knoten, um Bedingungen und Ergebnisse zu prüfen, schalten Sie Metriken, Wahrscheinlichkeiten und Stichproben um und heben Sie einen Pfad für eine Eingabe hervor.",
|
|
2693
|
+
"tutorial.diagramEditor.intro.title": "Diagramm-Editor",
|
|
2694
|
+
"tutorial.diagramEditor.intro.content": "Wählen Sie ein Werkzeug, um Knoten auf der Arbeitsfläche hinzuzufügen und zu verbinden, bearbeiten Sie sie im Eigenschaftenbereich und exportieren Sie das Diagramm über die Symbolleiste.",
|
|
2695
|
+
"tutorial.contractEditor.intro.title": "Vertrags-Editor",
|
|
2696
|
+
"tutorial.contractEditor.intro.content": "Stellen Sie den Vertrag aus der Klauselbibliothek zusammen, füllen Sie Vorlagenvariablen aus, verfolgen Sie Versionen und Freigaben und speichern oder exportieren Sie nach PDF/DOCX/HTML.",
|
|
2697
|
+
"tutorial.invoiceDesigner.intro.title": "Rechnungs-Designer",
|
|
2698
|
+
"tutorial.invoiceDesigner.intro.content": "Ziehen Sie Elemente auf die Rechnungsfläche, binden Sie sie an Datenfelder, richten Sie sie mit Raster und Linealen aus und speichern oder exportieren Sie nach PDF.",
|
|
2699
|
+
"tutorial.presentationEditor.intro.title": "Präsentations-Editor",
|
|
2700
|
+
"tutorial.presentationEditor.intro.content": "Bauen Sie Folien aus der Miniaturleiste, fügen Sie Elemente auf der Fläche hinzu und ordnen Sie sie an, bearbeiten Sie sie im Eigenschaftenbereich und präsentieren oder exportieren Sie dann.",
|
|
2701
|
+
"tutorial.dashboardStudio.intro.title": "Dashboard-Studio",
|
|
2702
|
+
"tutorial.dashboardStudio.intro.content": "Ziehen Sie Widgets aus der Palette auf das Raster, binden Sie sie an Datenquellen, fügen Sie Filter hinzu und schalten Sie dann zwischen Bearbeiten/Ansicht um, aktualisieren und speichern Sie.",
|
|
2703
|
+
"tutorial.biReportBuilder.intro.title": "Bericht-Builder",
|
|
2704
|
+
"tutorial.biReportBuilder.intro.content": "Ziehen Sie Elemente aus der Palette auf den Bericht, binden Sie sie an Datenquellen, wechseln Sie zwischen Entwurf/Vorschau und exportieren Sie nach PDF oder Excel.",
|
|
2705
|
+
"tutorial.etlBuilder.intro.title": "ETL-Builder",
|
|
2706
|
+
"tutorial.etlBuilder.intro.content": "Verdrahten Sie Quellen → Transformationen → Ziele zu einer Pipeline, wechseln Sie die Ansichten und führen Sie sie dann aus und speichern Sie die Konfiguration.",
|
|
2707
|
+
"tutorial.videoEditorPro.intro.title": "Video-Editor",
|
|
2708
|
+
"tutorial.videoEditorPro.intro.content": "Fügen Sie Medien zur Timeline hinzu, ordnen und schneiden Sie Clips, wenden Sie Effekte und Übergänge an und konfigurieren und starten Sie dann den Export.",
|
|
2709
|
+
"tutorial.mlStudio.intro.title": "ML-Studio",
|
|
2710
|
+
"tutorial.mlStudio.intro.content": "Arbeiten Sie sich durch die Tabs: Bereiten Sie Datensätze vor, führen Sie Experimente durch, vergleichen und wählen Sie Modelle und stellen Sie das beste bereit.",
|
|
2711
|
+
"tutorial.mathEditor.intro.title": "Mathe-Editor",
|
|
2712
|
+
"tutorial.mathEditor.intro.content": "Schreiben Sie Gleichungen als LaTeX oder fügen Sie Symbole aus der Palette ein; wechseln Sie zur Handschrifteingabe und sehen Sie die gerenderte Formel live in der Vorschau.",
|
|
2713
|
+
"tutorial.dmxEditor.intro.title": "DMX-Editor",
|
|
2714
|
+
"tutorial.dmxEditor.intro.content": "Wählen Sie das FTDI-Gerät und den Port und stellen Sie dann den Wert jedes DMX-Kanals mit den Reglern ein, um Ihre Lichtgeräte live zu steuern.",
|
|
2715
|
+
"sidebar.prefs.order.visibilityHint": "Die Reihenfolge gilt für die obersten Einträge innerhalb jeder Quellgruppe. Klappen Sie einen Quell-Header zu, um beim Überprüfen der Änderung nur die obersten Einträge zu sehen."
|
|
2716
|
+
}, Ce = {
|
|
2198
2717
|
ok: "OK",
|
|
2199
2718
|
cancel: "Annuler",
|
|
2200
2719
|
save: "Enregistrer",
|
|
@@ -2896,8 +3415,179 @@ const j = [
|
|
|
2896
3415
|
"vectorEditor.layers.show": "Afficher",
|
|
2897
3416
|
"vectorEditor.layers.hide": "Masquer",
|
|
2898
3417
|
"vectorEditor.layers.lock": "Verrouiller",
|
|
2899
|
-
"vectorEditor.layers.unlock": "Déverrouiller"
|
|
2900
|
-
|
|
3418
|
+
"vectorEditor.layers.unlock": "Déverrouiller",
|
|
3419
|
+
// Tutorials (1.0.22)
|
|
3420
|
+
"tutorial.play": "Lecture",
|
|
3421
|
+
"tutorial.pause": "Pause",
|
|
3422
|
+
"tutorial.speed": "Vitesse",
|
|
3423
|
+
"tutorial.close": "Fermer",
|
|
3424
|
+
"tutorial.start": "Tutoriel",
|
|
3425
|
+
"tutorial.startAria": "Démarrer le tutoriel",
|
|
3426
|
+
"tutorial.next": "Suivant",
|
|
3427
|
+
"tutorial.back": "Précédent",
|
|
3428
|
+
"tutorial.finish": "Terminer",
|
|
3429
|
+
"tutorial.skip": "Passer",
|
|
3430
|
+
"tutorial.stepOf": "sur",
|
|
3431
|
+
"tutorial.moduleEditor.browser.title": "Explorateur de modules",
|
|
3432
|
+
"tutorial.moduleEditor.browser.content": "Sélectionnez ici un module pour ouvrir son manifeste, ses entités et ses traductions.",
|
|
3433
|
+
"tutorial.moduleEditor.validate.title": "Valider",
|
|
3434
|
+
"tutorial.moduleEditor.validate.content": "Vérifiez le module par rapport au schéma du manifeste. Les problèmes apparaissent dans la barre d’état et la sortie.",
|
|
3435
|
+
"tutorial.moduleEditor.save.title": "Enregistrer",
|
|
3436
|
+
"tutorial.moduleEditor.save.content": "Enregistrez vos modifications via le fournisseur de données configuré (par ex. réécrire les fichiers sur le disque).",
|
|
3437
|
+
"tutorial.manifestEditor.intro.title": "Éditeur de manifeste",
|
|
3438
|
+
"tutorial.manifestEditor.intro.content": "Modifiez le manifeste par sections pilotées par schéma. Basculez entre Formulaire ⇄ JSON par section ; la validation apparaît dans la barre d’état.",
|
|
3439
|
+
"tutorial.schemaForm.intro.title": "Formulaire de schéma",
|
|
3440
|
+
"tutorial.schemaForm.intro.content": "Ce formulaire est généré à partir d’un schéma. Les champs obligatoires et les erreurs de validation sont signalés ; utilisez le bouton JSON pour l’édition brute.",
|
|
3441
|
+
"tutorial.entityEditor.intro.title": "Éditeur d’entités",
|
|
3442
|
+
"tutorial.entityEditor.intro.content": "Ajoutez des entités à gauche, puis modifiez à droite les métadonnées de chaque entité et ses champs (type, clés, contraintes).",
|
|
3443
|
+
"tutorial.i18nEditor.intro.title": "Traductions",
|
|
3444
|
+
"tutorial.i18nEditor.intro.content": "Modifiez les traductions sous forme de grille clés × langues. Ajoutez des clés et des langues ; les cellules ambrées signalent les traductions manquantes.",
|
|
3445
|
+
"tutorial.formBuilder.intro.title": "Générateur de formulaires",
|
|
3446
|
+
"tutorial.formBuilder.intro.content": "Faites glisser des champs depuis la palette vers le canevas, puis configurez chaque champ dans le panneau des propriétés. Exportez le schéma une fois terminé.",
|
|
3447
|
+
"tutorial.formDesigner.intro.title": "Concepteur de formulaires",
|
|
3448
|
+
"tutorial.formDesigner.intro.content": "Concevez des formulaires de saisie avec sections, listes de recherche et champs calculés ; liez-les à votre entité et prévisualisez en direct.",
|
|
3449
|
+
"tutorial.paymentProviderConfig.intro.title": "Prestataire de paiement",
|
|
3450
|
+
"tutorial.paymentProviderConfig.intro.content": "Choisissez un prestataire, renseignez ses identifiants (les secrets sont masqués), choisissez test/production, activez les méthodes et copiez l’URL du webhook.",
|
|
3451
|
+
"tutorial.webhookTester.intro.title": "Testeur de webhook",
|
|
3452
|
+
"tutorial.webhookTester.intro.content": "Choisissez une charge utile enregistrée (ou écrivez-en une), signez-la éventuellement, envoyez-la au point de terminaison et examinez la réponse.",
|
|
3453
|
+
"tutorial.apiDesigner.intro.title": "Concepteur d’API",
|
|
3454
|
+
"tutorial.apiDesigner.intro.content": "Définissez les points de terminaison, les paramètres, les schémas de requête/réponse et la sécurité de votre document OpenAPI.",
|
|
3455
|
+
"tutorial.apiTester.intro.title": "Testeur d’API",
|
|
3456
|
+
"tutorial.apiTester.intro.content": "Construisez des requêtes avec des collections et des variables d’environnement, envoyez-les et vérifiez les réponses.",
|
|
3457
|
+
"tutorial.integrationBuilder.intro.title": "Générateur d’intégrations",
|
|
3458
|
+
"tutorial.integrationBuilder.intro.content": "Reliez un flux de nœuds (déclencheurs → actions → gestion des erreurs) et connectez-les pour construire une intégration.",
|
|
3459
|
+
"tutorial.scriptRunner.intro.title": "Exécuteur de scripts",
|
|
3460
|
+
"tutorial.scriptRunner.intro.content": "Écrivez un script et un exemple d’entrée, cliquez sur Exécuter, puis examinez le résultat et les journaux capturés ci-dessous.",
|
|
3461
|
+
"tutorial.lifecycleHooks.intro.title": "Hooks de cycle de vie",
|
|
3462
|
+
"tutorial.lifecycleHooks.intro.content": "Associez des gestionnaires à chaque déclencheur, définissez leur ordre et leur indicateur d’activation, et ajoutez une condition facultative qui contrôle l’exécution.",
|
|
3463
|
+
"tutorial.revisionHistory.intro.title": "Historique des révisions",
|
|
3464
|
+
"tutorial.revisionHistory.intro.content": "Choisissez une révision, sélectionnez-en une autre à comparer, examinez la comparaison côte à côte, puis restaurez une version antérieure si nécessaire.",
|
|
3465
|
+
"tutorial.markdownEditor.intro.title": "Éditeur Markdown",
|
|
3466
|
+
"tutorial.markdownEditor.intro.content": "Écrivez du Markdown avec la barre de mise en forme ; activez l’aperçu en direct pour voir le rendu, puis exportez en HTML.",
|
|
3467
|
+
"tutorial.htmlEditor.intro.title": "Éditeur de texte enrichi",
|
|
3468
|
+
"tutorial.htmlEditor.intro.content": "Mettez en forme le texte avec la barre d’outils, insérez des liens, des images et des tableaux, et basculez vers la source HTML ou Markdown au besoin.",
|
|
3469
|
+
"tutorial.documentEditor.intro.title": "Éditeur de documents",
|
|
3470
|
+
"tutorial.documentEditor.intro.content": "Composez un document à partir de blocs : utilisez la barre d’outils ou les commandes slash pour ajouter des titres, des listes, des médias et plus, puis exportez en HTML.",
|
|
3471
|
+
"tutorial.codeEditor.intro.title": "Éditeur de code",
|
|
3472
|
+
"tutorial.codeEditor.intro.content": "Modifiez le code avec coloration syntaxique, IntelliSense et barre d’outils. Ctrl+S enregistre ; la barre d’état indique la position du curseur et les éventuels problèmes.",
|
|
3473
|
+
"tutorial.kanbanBoard.intro.title": "Tableau Kanban",
|
|
3474
|
+
"tutorial.kanbanBoard.intro.content": "Faites glisser les cartes entre les colonnes pour changer leur statut, ajoutez des cartes avec le bouton « + » et cliquez sur une carte pour modifier ses détails.",
|
|
3475
|
+
"tutorial.queryBuilder.intro.title": "Générateur de requêtes",
|
|
3476
|
+
"tutorial.queryBuilder.intro.content": "Ajoutez des tables, choisissez des colonnes, définissez visuellement les jointures, conditions et tris — le SQL est généré pour vous. Passez à l’onglet SQL pour le vérifier.",
|
|
3477
|
+
"tutorial.stateDesigner.intro.title": "Concepteur d’état",
|
|
3478
|
+
"tutorial.stateDesigner.intro.content": "Modélisez votre store en tranches avec des champs et des actions, choisissez une cible (par ex. Zustand) et exportez du code de gestion d’état prêt à l’emploi.",
|
|
3479
|
+
"tutorial.componentDesigner.intro.title": "Concepteur de composants",
|
|
3480
|
+
"tutorial.componentDesigner.intro.content": "Nommez votre composant, déclarez ses props avec leurs types et exigences, et prévisualisez en direct l’interface TypeScript générée.",
|
|
3481
|
+
"tutorial.pageBuilder.intro.title": "Générateur de pages",
|
|
3482
|
+
"tutorial.pageBuilder.intro.content": "Faites glisser des composants depuis la barre latérale sur la grille responsive, changez l’aperçu bureau/tablette/mobile et enregistrez la mise en page.",
|
|
3483
|
+
"tutorial.lowCodeStudio.intro.title": "Studio low-code",
|
|
3484
|
+
"tutorial.lowCodeStudio.intro.content": "Faites glisser des composants depuis la barre latérale sur le canevas, puis basculez entre les onglets Conception, Aperçu et Code pour construire et exporter votre application.",
|
|
3485
|
+
"tutorial.testBuilder.intro.title": "Générateur de tests",
|
|
3486
|
+
"tutorial.testBuilder.intro.content": "Construisez visuellement des suites de tests : ajoutez des cas et des étapes d’interaction avec des assertions, exécutez-les et exportez vers un fichier .test.tsx prêt à l’emploi.",
|
|
3487
|
+
"tutorial.workflowDesigner.intro.title": "Concepteur de workflow",
|
|
3488
|
+
"tutorial.workflowDesigner.intro.content": "Ajoutez des états et des transitions sur le canevas, validez le flux, simulez-le, puis testez ou publiez votre workflow.",
|
|
3489
|
+
"tutorial.themeBuilder.intro.title": "Générateur de thème",
|
|
3490
|
+
"tutorial.themeBuilder.intro.content": "Partez d’un préréglage, ajustez les couleurs, la typographie et d’autres jetons par section, prévisualisez en direct, puis appliquez ou exportez le thème.",
|
|
3491
|
+
"tutorial.filterBuilder.intro.title": "Générateur de filtres",
|
|
3492
|
+
"tutorial.filterBuilder.intro.content": "Construisez des arbres de filtres ET/OU complexes : ajoutez des conditions et des groupes imbriqués, choisissez les champs et opérateurs, et enregistrez des préréglages réutilisables.",
|
|
3493
|
+
"tutorial.diagramDesigner.intro.title": "Concepteur de diagrammes",
|
|
3494
|
+
"tutorial.diagramDesigner.intro.content": "Faites glisser des formes depuis la palette sur le canevas, reliez-les avec des connecteurs, modifiez les propriétés à droite, puis exportez en SVG, PNG ou JSON.",
|
|
3495
|
+
"tutorial.reportBuilder.intro.title": "Générateur de rapports",
|
|
3496
|
+
"tutorial.reportBuilder.intro.content": "Faites glisser des sections sur le rapport, liez-les à des sources de données, organisez la mise en page, puis exportez en PDF, HTML ou XLSX.",
|
|
3497
|
+
"tutorial.erpReportDesigner.intro.title": "Concepteur de rapports",
|
|
3498
|
+
"tutorial.erpReportDesigner.intro.content": "Disposez des rapports en bandes : déposez des éléments (champs, expressions, graphiques) dans les bandes, liez les connexions de données, modifiez les propriétés, puis prévisualisez et exportez.",
|
|
3499
|
+
"tutorial.recipeEditor.intro.title": "Éditeur de recettes",
|
|
3500
|
+
"tutorial.recipeEditor.intro.content": "Modifiez les détails de la recette, ajoutez et réorganisez les ingrédients et les étapes, joignez des photos et importez ou exportez la recette en JSON.",
|
|
3501
|
+
"tutorial.pipelineEditor.intro.title": "Éditeur de pipeline",
|
|
3502
|
+
"tutorial.pipelineEditor.intro.content": "Construisez un pipeline CI/CD à partir d’étapes, de tâches et de pas ; définissez déclencheurs, variables et secrets ; puis validez, enregistrez et exécutez-le.",
|
|
3503
|
+
"tutorial.mergeRequestBuilder.intro.title": "Générateur de merge request",
|
|
3504
|
+
"tutorial.mergeRequestBuilder.intro.content": "Choisissez les branches source et cible, rédigez le titre et la description, ajoutez relecteurs, étiquettes et tickets liés, puis prévisualisez et soumettez.",
|
|
3505
|
+
"tutorial.automationRuleEditor.intro.title": "Éditeur de règles d’automatisation",
|
|
3506
|
+
"tutorial.automationRuleEditor.intro.content": "Définissez le déclencheur, ajoutez des conditions facultatives, puis listez les actions à exécuter — basculez entre les trois sections à l’aide des onglets.",
|
|
3507
|
+
"tutorial.sceneActionBuilder.intro.title": "Générateur d’actions de scène",
|
|
3508
|
+
"tutorial.sceneActionBuilder.intro.content": "Ajoutez une action par appareil, définissez son état cible et un délai facultatif, réorganisez-les et prévisualisez la séquence de la scène.",
|
|
3509
|
+
"tutorial.backupTagEditor.intro.title": "Étiquettes de sauvegarde",
|
|
3510
|
+
"tutorial.backupTagEditor.intro.content": "Étiquetez cette sauvegarde pour la retrouver facilement : saisissez un libellé et choisissez une couleur, ou ajoutez l’une des étiquettes suggérées ; les étiquettes générées automatiquement sont protégées.",
|
|
3511
|
+
"tutorial.dataMergeBuilder.intro.title": "Fusion de données",
|
|
3512
|
+
"tutorial.dataMergeBuilder.intro.content": "Suivez les étapes : choisissez les branches source et cible, prévisualisez les modifications, résolvez les conflits, définissez les options, puis confirmez la fusion.",
|
|
3513
|
+
"tutorial.invoiceLineEditor.intro.title": "Lignes de facture",
|
|
3514
|
+
"tutorial.invoiceLineEditor.intro.content": "Ajoutez des lignes avec quantité, prix unitaire, TVA et remise — le net, le brut et le détail de la TVA sont calculés automatiquement.",
|
|
3515
|
+
"tutorial.keyValueEditor.intro.title": "Éditeur clé/valeur",
|
|
3516
|
+
"tutorial.keyValueEditor.intro.content": "Ajoutez des lignes clé/valeur pour les en-têtes, paramètres, variables d’environnement ou configuration ; masquez les valeurs secrètes, activez/désactivez les lignes et surveillez les clés en double.",
|
|
3517
|
+
"tutorial.imageEditor.intro.title": "Éditeur d’images",
|
|
3518
|
+
"tutorial.imageEditor.intro.content": "Utilisez la barre d’outils pour recadrer, pivoter, retourner, ajuster la luminosité/le contraste et annoter ; annulez/rétablissez vos modifications, puis enregistrez le résultat.",
|
|
3519
|
+
"tutorial.cropEditor.intro.title": "Éditeur de recadrage",
|
|
3520
|
+
"tutorial.cropEditor.intro.content": "Faites glisser le cadre de recadrage sur l’image, choisissez un format, pivotez, retournez ou zoomez, puis utilisez le résultat.",
|
|
3521
|
+
"tutorial.pdfAnnotationEditor.intro.title": "Annotations PDF",
|
|
3522
|
+
"tutorial.pdfAnnotationEditor.intro.content": "Choisissez un outil dans la barre d’outils (surligner, souligner, main levée, texte…), annotez la page, naviguez entre les pages et zoomez au besoin.",
|
|
3523
|
+
"tutorial.videoEditor.intro.title": "Éditeur vidéo",
|
|
3524
|
+
"tutorial.videoEditor.intro.content": "Ajoutez des médias aux pistes de la timeline, découpez et organisez les clips, modifiez leurs propriétés, prévisualisez la lecture, puis exportez la vidéo.",
|
|
3525
|
+
"tutorial.viewBuilder.intro.title": "Générateur de vues",
|
|
3526
|
+
"tutorial.viewBuilder.intro.content": "Faites glisser des contrôles depuis la palette dans les cellules de la grille, configurez chaque cellule dans le panneau des propriétés, et importez, exportez ou enregistrez la vue.",
|
|
3527
|
+
"tutorial.dashboardDesigner.intro.title": "Concepteur de tableau de bord",
|
|
3528
|
+
"tutorial.dashboardDesigner.intro.content": "Faites glisser des widgets depuis la palette sur la grille, redimensionnez-les et organisez-les, configurez chacun dans le panneau des propriétés, puis prévisualisez ou exportez le tableau de bord.",
|
|
3529
|
+
"tutorial.workflowDesignerCanvas.intro.title": "Concepteur de workflow",
|
|
3530
|
+
"tutorial.workflowDesignerCanvas.intro.content": "Ajoutez des nœuds de déclencheur, d’action et de condition sur le canevas et reliez-les ; gérez les variables, validez le flux, puis exportez-le.",
|
|
3531
|
+
"tutorial.armatureEditor.intro.title": "Éditeur d’armature",
|
|
3532
|
+
"tutorial.armatureEditor.intro.content": "Sélectionnez des os pour modifier leurs transformations, ajoutez ou reparentez des os, configurez les chaînes IK et enregistrez ou chargez des poses.",
|
|
3533
|
+
"tutorial.morphTargetEditor.intro.title": "Éditeur de morph targets",
|
|
3534
|
+
"tutorial.morphTargetEditor.intro.content": "Mélangez les morph targets du maillage avec les curseurs d’influence par cible, créez ou supprimez des cibles et prévisualisez l’interpolation.",
|
|
3535
|
+
"tutorial.terrainEditor.intro.title": "Éditeur de terrain",
|
|
3536
|
+
"tutorial.terrainEditor.intro.content": "Sculptez la carte de hauteur avec des pinceaux (élever, abaisser, aplatir, lisser, bruit), appliquez des couches de texture, générez du terrain procédural et importez/exportez des cartes de hauteur.",
|
|
3537
|
+
"tutorial.materialEditor.intro.title": "Éditeur de matériaux",
|
|
3538
|
+
"tutorial.materialEditor.intro.content": "Construisez un shader sous forme de graphe de nœuds : faites glisser des nœuds depuis la palette, reliez leurs ports, modifiez les propriétés et prévisualisez le matériau compilé.",
|
|
3539
|
+
"tutorial.particleEditor.intro.title": "Éditeur de particules",
|
|
3540
|
+
"tutorial.particleEditor.intro.content": "Choisissez un système de particules, ajustez son émetteur et ses modules dans l’inspecteur, et lisez, mettez en pause ou arrêtez l’aperçu en direct.",
|
|
3541
|
+
"tutorial.uvEditor.intro.title": "Éditeur UV",
|
|
3542
|
+
"tutorial.uvEditor.intro.content": "Modifiez la disposition UV du maillage par-dessus la texture : sélectionnez et transformez les UV avec les outils, changez de canal UV et appliquez vos modifications.",
|
|
3543
|
+
"tutorial.fontEditor.intro.title": "Éditeur de police",
|
|
3544
|
+
"tutorial.fontEditor.intro.content": "Modifiez les glyphes sur la grille Unicode, ajustez les métriques de la police ainsi que les tracés et chasses par glyphe, puis exportez la police.",
|
|
3545
|
+
"tutorial.iconEditor.intro.title": "Éditeur d’icônes",
|
|
3546
|
+
"tutorial.iconEditor.intro.content": "Dessinez et modifiez des formes SVG sur la grille, ajustez les réglages de contour et de variante, prévisualisez sur différents arrière-plans et exportez en SVG, React ou PNG.",
|
|
3547
|
+
"tutorial.uiDesigner.intro.title": "Concepteur d’interface",
|
|
3548
|
+
"tutorial.uiDesigner.intro.content": "Faites glisser des composants depuis la palette sur le canevas, modifiez leurs props dans le panneau, prévisualisez les points de rupture responsives et exportez en React/TSX.",
|
|
3549
|
+
"tutorial.gameEditor.intro.title": "Éditeur de jeu",
|
|
3550
|
+
"tutorial.gameEditor.intro.content": "Construisez votre scène dans la fenêtre à l’aide des panneaux de hiérarchie et d’assets, ajustez les entités dans l’inspecteur et enregistrez le projet.",
|
|
3551
|
+
"tutorial.levelEditor.intro.title": "Éditeur de niveau",
|
|
3552
|
+
"tutorial.levelEditor.intro.content": "Construisez le monde du jeu : placez et alignez des objets sur plusieurs couches, peignez le terrain, disposez splines et lumières, puis précalculez les lightmaps.",
|
|
3553
|
+
"tutorial.gameMaterialEditor.intro.title": "Éditeur de matériaux",
|
|
3554
|
+
"tutorial.gameMaterialEditor.intro.content": "Créez un shader sous forme de graphe de nœuds : ajoutez et reliez des nœuds de shader, modifiez leurs propriétés et compilez le matériau.",
|
|
3555
|
+
"tutorial.gameParticleEditor.intro.title": "Éditeur de particules",
|
|
3556
|
+
"tutorial.gameParticleEditor.intro.content": "Ajustez le système de particules dans l’inspecteur — émetteur, durée de vie, courbes et rendu — et lisez, mettez en pause ou redémarrez l’aperçu en direct.",
|
|
3557
|
+
"tutorial.floorPlanEditor.intro.title": "Éditeur de plan",
|
|
3558
|
+
"tutorial.floorPlanEditor.intro.content": "Dessinez des pièces et des zones avec les outils, placez des appareils sur le plan, changez d’étage et activez les superpositions comme les cotes, la grille et l’occupation.",
|
|
3559
|
+
"tutorial.buildingSceneEditor.intro.title": "Éditeur de scènes",
|
|
3560
|
+
"tutorial.buildingSceneEditor.intro.content": "Créez des scènes qui règlent plusieurs appareils à la fois : choisissez une scène, définissez les états cibles des appareils, puis enregistrez-la ou activez-la.",
|
|
3561
|
+
"tutorial.buildingAutomationEditor.intro.title": "Éditeur d’automatisation",
|
|
3562
|
+
"tutorial.buildingAutomationEditor.intro.content": "Créez des automatisations de bâtiment : choisissez-en une dans la liste, définissez ses déclencheurs, conditions et actions, puis enregistrez-la, activez-la ou supprimez-la.",
|
|
3563
|
+
"tutorial.spatialEditor.intro.title": "Éditeur spatial",
|
|
3564
|
+
"tutorial.spatialEditor.intro.content": "Disposez des plans selon différents modes : dessinez murs, pièces et objets avec les outils, gérez les couches, alignez sur la grille, puis exportez.",
|
|
3565
|
+
"tutorial.decisionTreeEditor.intro.title": "Éditeur d’arbre de décision",
|
|
3566
|
+
"tutorial.decisionTreeEditor.intro.content": "Explorez l’arbre de décision : cliquez sur les nœuds pour examiner les conditions et les résultats, affichez métriques, probabilités et échantillons, et mettez en évidence un chemin pour une entrée.",
|
|
3567
|
+
"tutorial.diagramEditor.intro.title": "Éditeur de diagrammes",
|
|
3568
|
+
"tutorial.diagramEditor.intro.content": "Choisissez un outil pour ajouter et relier des nœuds sur le canevas, modifiez-les dans le panneau des propriétés et exportez le diagramme depuis la barre d’outils.",
|
|
3569
|
+
"tutorial.contractEditor.intro.title": "Éditeur de contrats",
|
|
3570
|
+
"tutorial.contractEditor.intro.content": "Assemblez le contrat à partir de la bibliothèque de clauses, remplissez les variables du modèle, suivez les versions et approbations, puis enregistrez ou exportez en PDF/DOCX/HTML.",
|
|
3571
|
+
"tutorial.invoiceDesigner.intro.title": "Concepteur de factures",
|
|
3572
|
+
"tutorial.invoiceDesigner.intro.content": "Faites glisser des éléments sur le canevas de la facture, liez-les à des champs de données, alignez avec la grille et les règles, puis enregistrez ou exportez en PDF.",
|
|
3573
|
+
"tutorial.presentationEditor.intro.title": "Éditeur de présentation",
|
|
3574
|
+
"tutorial.presentationEditor.intro.content": "Construisez des diapositives depuis le rail de miniatures, ajoutez et disposez des éléments sur le canevas, modifiez-les dans le panneau des propriétés, puis présentez ou exportez.",
|
|
3575
|
+
"tutorial.dashboardStudio.intro.title": "Studio de tableau de bord",
|
|
3576
|
+
"tutorial.dashboardStudio.intro.content": "Faites glisser des widgets depuis la palette sur la grille, liez-les à des sources de données, ajoutez des filtres, puis basculez entre Édition/Vue, actualisez et enregistrez.",
|
|
3577
|
+
"tutorial.biReportBuilder.intro.title": "Générateur de rapports",
|
|
3578
|
+
"tutorial.biReportBuilder.intro.content": "Faites glisser des éléments depuis la palette sur le rapport, liez-les à des sources de données, basculez entre conception/aperçu, puis exportez en PDF ou Excel.",
|
|
3579
|
+
"tutorial.etlBuilder.intro.title": "Générateur ETL",
|
|
3580
|
+
"tutorial.etlBuilder.intro.content": "Reliez sources → transformations → destinations en un pipeline, changez de vue, puis exécutez-le et enregistrez la configuration.",
|
|
3581
|
+
"tutorial.videoEditorPro.intro.title": "Éditeur vidéo",
|
|
3582
|
+
"tutorial.videoEditorPro.intro.content": "Ajoutez des médias à la timeline, organisez et découpez les clips, appliquez effets et transitions, puis configurez et lancez l’export.",
|
|
3583
|
+
"tutorial.mlStudio.intro.title": "Studio ML",
|
|
3584
|
+
"tutorial.mlStudio.intro.content": "Parcourez les onglets : préparez les jeux de données, lancez des expériences, comparez et choisissez des modèles, puis déployez le meilleur.",
|
|
3585
|
+
"tutorial.mathEditor.intro.title": "Éditeur mathématique",
|
|
3586
|
+
"tutorial.mathEditor.intro.content": "Écrivez des équations en LaTeX ou insérez des symboles depuis la palette ; passez à la saisie manuscrite et prévisualisez la formule rendue en direct.",
|
|
3587
|
+
"tutorial.dmxEditor.intro.title": "Éditeur DMX",
|
|
3588
|
+
"tutorial.dmxEditor.intro.content": "Choisissez le périphérique FTDI et le port, puis réglez la valeur de chaque canal DMX avec les curseurs pour piloter vos projecteurs en direct.",
|
|
3589
|
+
"sidebar.prefs.order.visibilityHint": "L’ordre s’applique aux éléments de premier niveau dans chaque groupe de source. Repliez un en-tête de source pour ne voir que les entrées de premier niveau lors de la vérification."
|
|
3590
|
+
}, Se = {
|
|
2901
3591
|
ok: "OK",
|
|
2902
3592
|
cancel: "Cancelar",
|
|
2903
3593
|
save: "Guardar",
|
|
@@ -3259,7 +3949,516 @@ const j = [
|
|
|
3259
3949
|
"wm.closeAll": "Cerrar todo",
|
|
3260
3950
|
"wm.minimizeAll": "Minimizar todo",
|
|
3261
3951
|
"wm.newWindow": "Nueva ventana",
|
|
3262
|
-
"wm.moveToFront": "Al frente"
|
|
3952
|
+
"wm.moveToFront": "Al frente",
|
|
3953
|
+
// Tutorials + UI strings (1.0.22)
|
|
3954
|
+
"tutorial.play": "Reproducir",
|
|
3955
|
+
"tutorial.pause": "Pausa",
|
|
3956
|
+
"tutorial.speed": "Velocidad",
|
|
3957
|
+
"tutorial.close": "Cerrar",
|
|
3958
|
+
"tutorial.start": "Tutorial",
|
|
3959
|
+
"tutorial.startAria": "Iniciar el tutorial",
|
|
3960
|
+
"tutorial.next": "Siguiente",
|
|
3961
|
+
"tutorial.back": "Atrás",
|
|
3962
|
+
"tutorial.finish": "Finalizar",
|
|
3963
|
+
"tutorial.skip": "Omitir",
|
|
3964
|
+
"tutorial.stepOf": "de",
|
|
3965
|
+
"tutorial.moduleEditor.browser.title": "Explorador de módulos",
|
|
3966
|
+
"tutorial.moduleEditor.browser.content": "Selecciona aquí un módulo para abrir su manifiesto, sus entidades y sus traducciones.",
|
|
3967
|
+
"tutorial.moduleEditor.validate.title": "Validar",
|
|
3968
|
+
"tutorial.moduleEditor.validate.content": "Comprueba el módulo con el esquema del manifiesto. Los problemas aparecen en la barra de estado y en la salida.",
|
|
3969
|
+
"tutorial.moduleEditor.save.title": "Guardar",
|
|
3970
|
+
"tutorial.moduleEditor.save.content": "Guarda tus cambios mediante el proveedor de datos configurado (p. ej. escribir los archivos de nuevo en el disco).",
|
|
3971
|
+
"tutorial.manifestEditor.intro.title": "Editor de manifiesto",
|
|
3972
|
+
"tutorial.manifestEditor.intro.content": "Edita el manifiesto en secciones basadas en esquema. Cambia entre Formulario ⇄ JSON por sección; la validación aparece en la barra de estado.",
|
|
3973
|
+
"tutorial.schemaForm.intro.title": "Formulario de esquema",
|
|
3974
|
+
"tutorial.schemaForm.intro.content": "Este formulario se genera a partir de un esquema. Los campos obligatorios y los errores de validación se resaltan; usa el conmutador JSON para la edición en bruto.",
|
|
3975
|
+
"tutorial.entityEditor.intro.title": "Editor de entidades",
|
|
3976
|
+
"tutorial.entityEditor.intro.content": "Añade entidades a la izquierda y edita a la derecha los metadatos de cada entidad y sus campos (tipo, claves, restricciones).",
|
|
3977
|
+
"tutorial.i18nEditor.intro.title": "Traducciones",
|
|
3978
|
+
"tutorial.i18nEditor.intro.content": "Edita las traducciones como una cuadrícula de claves × idiomas. Añade claves e idiomas; las celdas ámbar marcan las traducciones que faltan.",
|
|
3979
|
+
"tutorial.formBuilder.intro.title": "Generador de formularios",
|
|
3980
|
+
"tutorial.formBuilder.intro.content": "Arrastra campos desde la paleta al lienzo y configura cada campo en el panel de propiedades. Exporta el esquema cuando termines.",
|
|
3981
|
+
"tutorial.formDesigner.intro.title": "Diseñador de formularios",
|
|
3982
|
+
"tutorial.formDesigner.intro.content": "Diseña formularios de entrada de datos con secciones, campos de búsqueda y campos calculados; vincúlalos a tu entidad y previsualiza en vivo.",
|
|
3983
|
+
"tutorial.paymentProviderConfig.intro.title": "Proveedor de pagos",
|
|
3984
|
+
"tutorial.paymentProviderConfig.intro.content": "Elige un proveedor, rellena sus credenciales (los secretos se enmascaran), elige prueba/producción, activa métodos y copia la URL del webhook.",
|
|
3985
|
+
"tutorial.webhookTester.intro.title": "Probador de webhooks",
|
|
3986
|
+
"tutorial.webhookTester.intro.content": "Elige una carga útil guardada (o escribe una), fírmala opcionalmente, envíala al endpoint e inspecciona la respuesta.",
|
|
3987
|
+
"tutorial.apiDesigner.intro.title": "Diseñador de API",
|
|
3988
|
+
"tutorial.apiDesigner.intro.content": "Define endpoints, parámetros, esquemas de solicitud/respuesta y la seguridad de tu documento OpenAPI.",
|
|
3989
|
+
"tutorial.apiTester.intro.title": "Probador de API",
|
|
3990
|
+
"tutorial.apiTester.intro.content": "Crea solicitudes con colecciones y variables de entorno, envíalas y verifica las respuestas.",
|
|
3991
|
+
"tutorial.integrationBuilder.intro.title": "Generador de integraciones",
|
|
3992
|
+
"tutorial.integrationBuilder.intro.content": "Conecta un flujo de nodos (disparadores → acciones → gestión de errores) para construir una integración.",
|
|
3993
|
+
"tutorial.scriptRunner.intro.title": "Ejecutor de scripts",
|
|
3994
|
+
"tutorial.scriptRunner.intro.content": "Escribe un script y datos de ejemplo, haz clic en Ejecutar y revisa el resultado y los registros capturados abajo.",
|
|
3995
|
+
"tutorial.lifecycleHooks.intro.title": "Hooks de ciclo de vida",
|
|
3996
|
+
"tutorial.lifecycleHooks.intro.content": "Asocia controladores a cada disparador, define su orden y su indicador de activación, y añade una condición opcional que controle la ejecución.",
|
|
3997
|
+
"tutorial.revisionHistory.intro.title": "Historial de revisiones",
|
|
3998
|
+
"tutorial.revisionHistory.intro.content": "Elige una revisión, selecciona otra para comparar, revisa la comparación en paralelo y restaura una versión anterior si es necesario.",
|
|
3999
|
+
"tutorial.markdownEditor.intro.title": "Editor de Markdown",
|
|
4000
|
+
"tutorial.markdownEditor.intro.content": "Escribe Markdown con la barra de formato; activa la vista previa en vivo para ver el resultado y expórtalo a HTML.",
|
|
4001
|
+
"tutorial.htmlEditor.intro.title": "Editor de texto enriquecido",
|
|
4002
|
+
"tutorial.htmlEditor.intro.content": "Da formato al texto con la barra de herramientas, inserta enlaces, imágenes y tablas, y cambia al código HTML o Markdown cuando lo necesites.",
|
|
4003
|
+
"tutorial.documentEditor.intro.title": "Editor de documentos",
|
|
4004
|
+
"tutorial.documentEditor.intro.content": "Compón un documento a partir de bloques: usa la barra de herramientas o los comandos con barra para añadir títulos, listas, multimedia y más, y expórtalo a HTML.",
|
|
4005
|
+
"tutorial.codeEditor.intro.title": "Editor de código",
|
|
4006
|
+
"tutorial.codeEditor.intro.content": "Edita código con resaltado de sintaxis, IntelliSense y barra de herramientas. Ctrl+S guarda; la barra de estado muestra la posición del cursor y los problemas.",
|
|
4007
|
+
"tutorial.kanbanBoard.intro.title": "Tablero Kanban",
|
|
4008
|
+
"tutorial.kanbanBoard.intro.content": "Arrastra tarjetas entre columnas para cambiar su estado, añade tarjetas con el botón «+» y haz clic en una tarjeta para editar sus detalles.",
|
|
4009
|
+
"tutorial.queryBuilder.intro.title": "Generador de consultas",
|
|
4010
|
+
"tutorial.queryBuilder.intro.content": "Añade tablas, elige columnas y define uniones, condiciones y ordenación de forma visual: el SQL se genera por ti. Cambia a la pestaña SQL para revisarlo.",
|
|
4011
|
+
"tutorial.stateDesigner.intro.title": "Diseñador de estado",
|
|
4012
|
+
"tutorial.stateDesigner.intro.content": "Modela tu store como slices con campos y acciones, elige un destino (p. ej. Zustand) y exporta código de gestión de estado listo para usar.",
|
|
4013
|
+
"tutorial.componentDesigner.intro.title": "Diseñador de componentes",
|
|
4014
|
+
"tutorial.componentDesigner.intro.content": "Nombra tu componente, declara sus props con tipos y requisitos, y previsualiza en vivo la interfaz TypeScript generada.",
|
|
4015
|
+
"tutorial.pageBuilder.intro.title": "Generador de páginas",
|
|
4016
|
+
"tutorial.pageBuilder.intro.content": "Arrastra componentes desde la barra lateral a la cuadrícula responsiva, cambia la vista previa de escritorio/tableta/móvil y guarda el diseño.",
|
|
4017
|
+
"tutorial.lowCodeStudio.intro.title": "Estudio low-code",
|
|
4018
|
+
"tutorial.lowCodeStudio.intro.content": "Arrastra componentes desde la barra lateral al lienzo y cambia entre las pestañas Diseño, Vista previa y Código para construir y exportar tu aplicación.",
|
|
4019
|
+
"tutorial.testBuilder.intro.title": "Generador de pruebas",
|
|
4020
|
+
"tutorial.testBuilder.intro.content": "Crea suites de pruebas de forma visual: añade casos y pasos de interacción con aserciones, ejecútalos y exporta a un archivo .test.tsx listo para usar.",
|
|
4021
|
+
"tutorial.workflowDesigner.intro.title": "Diseñador de flujos de trabajo",
|
|
4022
|
+
"tutorial.workflowDesigner.intro.content": "Añade estados y transiciones en el lienzo, valida el flujo, simúlalo y luego prueba o publica tu flujo de trabajo.",
|
|
4023
|
+
"tutorial.themeBuilder.intro.title": "Generador de temas",
|
|
4024
|
+
"tutorial.themeBuilder.intro.content": "Parte de un preajuste, ajusta colores, tipografía y otros tokens por sección, previsualiza en vivo y luego aplica o exporta el tema.",
|
|
4025
|
+
"tutorial.filterBuilder.intro.title": "Generador de filtros",
|
|
4026
|
+
"tutorial.filterBuilder.intro.content": "Construye árboles de filtros Y/O complejos: añade condiciones y grupos anidados, elige campos y operadores y guarda preajustes reutilizables.",
|
|
4027
|
+
"tutorial.diagramDesigner.intro.title": "Diseñador de diagramas",
|
|
4028
|
+
"tutorial.diagramDesigner.intro.content": "Arrastra formas desde la paleta al lienzo, conéctalas con conectores, edita las propiedades a la derecha y exporta a SVG, PNG o JSON.",
|
|
4029
|
+
"tutorial.reportBuilder.intro.title": "Generador de informes",
|
|
4030
|
+
"tutorial.reportBuilder.intro.content": "Arrastra secciones al informe, vincúlalas a fuentes de datos, organiza el diseño y exporta a PDF, HTML o XLSX.",
|
|
4031
|
+
"tutorial.erpReportDesigner.intro.title": "Diseñador de informes",
|
|
4032
|
+
"tutorial.erpReportDesigner.intro.content": "Diseña informes por bandas: coloca elementos (campos, expresiones, gráficos) en las bandas, vincula conexiones de datos, edita propiedades y luego previsualiza y exporta.",
|
|
4033
|
+
"tutorial.recipeEditor.intro.title": "Editor de recetas",
|
|
4034
|
+
"tutorial.recipeEditor.intro.content": "Edita los detalles de la receta, añade y reordena ingredientes y pasos, adjunta fotos e importa o exporta la receta como JSON.",
|
|
4035
|
+
"tutorial.pipelineEditor.intro.title": "Editor de pipeline",
|
|
4036
|
+
"tutorial.pipelineEditor.intro.content": "Construye un pipeline CI/CD a partir de etapas, trabajos y pasos; define disparadores, variables y secretos; y luego valídalo, guárdalo y ejecútalo.",
|
|
4037
|
+
"tutorial.mergeRequestBuilder.intro.title": "Generador de merge request",
|
|
4038
|
+
"tutorial.mergeRequestBuilder.intro.content": "Elige las ramas de origen y destino, escribe el título y la descripción, añade revisores, etiquetas e incidencias vinculadas, y luego previsualiza y envía.",
|
|
4039
|
+
"tutorial.automationRuleEditor.intro.title": "Editor de reglas de automatización",
|
|
4040
|
+
"tutorial.automationRuleEditor.intro.content": "Define el disparador, añade condiciones opcionales y luego enumera las acciones a ejecutar: cambia entre las tres secciones con las pestañas.",
|
|
4041
|
+
"tutorial.sceneActionBuilder.intro.title": "Generador de acciones de escena",
|
|
4042
|
+
"tutorial.sceneActionBuilder.intro.content": "Añade una acción por dispositivo, define su estado objetivo y un retardo opcional, reordénalas y previsualiza la secuencia de la escena.",
|
|
4043
|
+
"tutorial.backupTagEditor.intro.title": "Etiquetas de copia de seguridad",
|
|
4044
|
+
"tutorial.backupTagEditor.intro.content": "Etiqueta esta copia de seguridad para encontrarla fácilmente: escribe una etiqueta y elige un color, o añade una de las etiquetas sugeridas; las etiquetas generadas automáticamente están protegidas.",
|
|
4045
|
+
"tutorial.dataMergeBuilder.intro.title": "Combinación de datos",
|
|
4046
|
+
"tutorial.dataMergeBuilder.intro.content": "Sigue los pasos: elige las ramas de origen y destino, previsualiza los cambios, resuelve los conflictos, define las opciones y luego confirma la combinación.",
|
|
4047
|
+
"tutorial.invoiceLineEditor.intro.title": "Líneas de factura",
|
|
4048
|
+
"tutorial.invoiceLineEditor.intro.content": "Añade líneas con cantidad, precio unitario, IVA y descuento: el neto, el bruto y el desglose del IVA se calculan automáticamente.",
|
|
4049
|
+
"tutorial.keyValueEditor.intro.title": "Editor de clave/valor",
|
|
4050
|
+
"tutorial.keyValueEditor.intro.content": "Añade filas de clave/valor para cabeceras, parámetros, variables de entorno o configuración; enmascara los valores secretos, activa/desactiva filas y vigila las claves duplicadas.",
|
|
4051
|
+
"tutorial.imageEditor.intro.title": "Editor de imágenes",
|
|
4052
|
+
"tutorial.imageEditor.intro.content": "Usa la barra de herramientas para recortar, rotar, voltear, ajustar brillo/contraste y anotar; deshaz/rehaz tus ediciones y guarda el resultado.",
|
|
4053
|
+
"tutorial.cropEditor.intro.title": "Editor de recorte",
|
|
4054
|
+
"tutorial.cropEditor.intro.content": "Arrastra el marco de recorte sobre la imagen, elige una relación de aspecto, rota, voltea o haz zoom y luego usa el resultado.",
|
|
4055
|
+
"tutorial.pdfAnnotationEditor.intro.title": "Anotaciones de PDF",
|
|
4056
|
+
"tutorial.pdfAnnotationEditor.intro.content": "Elige una herramienta de la barra (resaltar, subrayar, mano alzada, texto…), anota la página y navega y haz zoom según necesites.",
|
|
4057
|
+
"tutorial.videoEditor.intro.title": "Editor de vídeo",
|
|
4058
|
+
"tutorial.videoEditor.intro.content": "Añade medios a las pistas de la línea de tiempo, recorta y organiza clips, edita sus propiedades, previsualiza la reproducción y luego exporta el vídeo.",
|
|
4059
|
+
"tutorial.viewBuilder.intro.title": "Generador de vistas",
|
|
4060
|
+
"tutorial.viewBuilder.intro.content": "Arrastra controles desde la paleta a las celdas de la cuadrícula, configura cada celda en el panel de propiedades e importa, exporta o guarda la vista.",
|
|
4061
|
+
"tutorial.dashboardDesigner.intro.title": "Diseñador de paneles",
|
|
4062
|
+
"tutorial.dashboardDesigner.intro.content": "Arrastra widgets desde la paleta a la cuadrícula, cambia su tamaño y organízalos, configura cada uno en el panel de propiedades y luego previsualiza o exporta el panel.",
|
|
4063
|
+
"tutorial.workflowDesignerCanvas.intro.title": "Diseñador de flujos de trabajo",
|
|
4064
|
+
"tutorial.workflowDesignerCanvas.intro.content": "Añade nodos de disparador, acción y condición al lienzo y conéctalos; gestiona las variables, valida el flujo y luego expórtalo.",
|
|
4065
|
+
"tutorial.armatureEditor.intro.title": "Editor de esqueleto",
|
|
4066
|
+
"tutorial.armatureEditor.intro.content": "Selecciona huesos para editar sus transformaciones, añade o reasigna huesos, configura cadenas IK y guarda o carga poses.",
|
|
4067
|
+
"tutorial.morphTargetEditor.intro.title": "Editor de morph targets",
|
|
4068
|
+
"tutorial.morphTargetEditor.intro.content": "Mezcla los morph targets de la malla con los deslizadores de influencia por objetivo, crea o elimina objetivos y previsualiza la interpolación.",
|
|
4069
|
+
"tutorial.terrainEditor.intro.title": "Editor de terreno",
|
|
4070
|
+
"tutorial.terrainEditor.intro.content": "Esculpe el mapa de altura con pinceles (elevar, bajar, aplanar, suavizar, ruido), aplica capas de textura, genera terreno procedural e importa/exporta mapas de altura.",
|
|
4071
|
+
"tutorial.materialEditor.intro.title": "Editor de materiales",
|
|
4072
|
+
"tutorial.materialEditor.intro.content": "Construye un shader como un grafo de nodos: arrastra nodos desde la paleta, conecta sus puertos, edita propiedades y previsualiza el material compilado.",
|
|
4073
|
+
"tutorial.particleEditor.intro.title": "Editor de partículas",
|
|
4074
|
+
"tutorial.particleEditor.intro.content": "Elige un sistema de partículas, ajusta su emisor y sus módulos en el inspector y reproduce, pausa o detén la vista previa en vivo.",
|
|
4075
|
+
"tutorial.uvEditor.intro.title": "Editor de UV",
|
|
4076
|
+
"tutorial.uvEditor.intro.content": "Edita la disposición UV de la malla sobre la textura: selecciona y transforma UVs con las herramientas, cambia de canal UV y aplica tus cambios.",
|
|
4077
|
+
"tutorial.fontEditor.intro.title": "Editor de fuentes",
|
|
4078
|
+
"tutorial.fontEditor.intro.content": "Edita glifos en la cuadrícula Unicode, ajusta las métricas de la fuente y los trazados y espaciados por glifo, y luego exporta la fuente.",
|
|
4079
|
+
"tutorial.iconEditor.intro.title": "Editor de iconos",
|
|
4080
|
+
"tutorial.iconEditor.intro.content": "Dibuja y edita formas SVG en la cuadrícula, ajusta los parámetros de trazo y variante, previsualiza sobre distintos fondos y exporta a SVG, React o PNG.",
|
|
4081
|
+
"tutorial.uiDesigner.intro.title": "Diseñador de interfaz",
|
|
4082
|
+
"tutorial.uiDesigner.intro.content": "Arrastra componentes desde la paleta al lienzo, edita sus props en el panel, previsualiza los breakpoints responsivos y exporta a React/TSX.",
|
|
4083
|
+
"tutorial.gameEditor.intro.title": "Editor de juego",
|
|
4084
|
+
"tutorial.gameEditor.intro.content": "Construye tu escena en el viewport con los paneles de jerarquía y de recursos, ajusta las entidades en el inspector y guarda el proyecto.",
|
|
4085
|
+
"tutorial.levelEditor.intro.title": "Editor de niveles",
|
|
4086
|
+
"tutorial.levelEditor.intro.content": "Construye el mundo del juego: coloca y ajusta objetos por capas, pinta el terreno, dispón splines y luces y luego hornea los lightmaps.",
|
|
4087
|
+
"tutorial.gameMaterialEditor.intro.title": "Editor de materiales",
|
|
4088
|
+
"tutorial.gameMaterialEditor.intro.content": "Crea un shader como un grafo de nodos: añade y conecta nodos de shader, edita sus propiedades y compila el material.",
|
|
4089
|
+
"tutorial.gameParticleEditor.intro.title": "Editor de partículas",
|
|
4090
|
+
"tutorial.gameParticleEditor.intro.content": "Ajusta el sistema de partículas en el inspector (emisor, vida útil, curvas y renderizado) y reproduce, pausa o reinicia la vista previa en vivo.",
|
|
4091
|
+
"tutorial.floorPlanEditor.intro.title": "Editor de planos",
|
|
4092
|
+
"tutorial.floorPlanEditor.intro.content": "Dibuja habitaciones y zonas con las herramientas, coloca dispositivos en el plano, cambia de planta y activa superposiciones como cotas, cuadrícula y ocupación.",
|
|
4093
|
+
"tutorial.buildingSceneEditor.intro.title": "Editor de escenas",
|
|
4094
|
+
"tutorial.buildingSceneEditor.intro.content": "Crea escenas que configuran varios dispositivos a la vez: elige una escena, define los estados objetivo de los dispositivos y luego guárdala o actívala.",
|
|
4095
|
+
"tutorial.buildingAutomationEditor.intro.title": "Editor de automatización",
|
|
4096
|
+
"tutorial.buildingAutomationEditor.intro.content": "Crea automatizaciones del edificio: elige una de la lista, define sus disparadores, condiciones y acciones, y luego guárdala, actívala o elimínala.",
|
|
4097
|
+
"tutorial.spatialEditor.intro.title": "Editor espacial",
|
|
4098
|
+
"tutorial.spatialEditor.intro.content": "Diseña planos en varios modos: dibuja paredes, habitaciones y objetos con las herramientas, gestiona capas, ajusta a la cuadrícula y luego exporta.",
|
|
4099
|
+
"tutorial.decisionTreeEditor.intro.title": "Editor de árbol de decisión",
|
|
4100
|
+
"tutorial.decisionTreeEditor.intro.content": "Explora el árbol de decisión: haz clic en los nodos para revisar condiciones y resultados, muestra métricas, probabilidades y muestras, y resalta una ruta para una entrada.",
|
|
4101
|
+
"tutorial.diagramEditor.intro.title": "Editor de diagramas",
|
|
4102
|
+
"tutorial.diagramEditor.intro.content": "Elige una herramienta para añadir y conectar nodos en el lienzo, edítalos en el panel de propiedades y exporta el diagrama desde la barra de herramientas.",
|
|
4103
|
+
"tutorial.contractEditor.intro.title": "Editor de contratos",
|
|
4104
|
+
"tutorial.contractEditor.intro.content": "Ensambla el contrato a partir de la biblioteca de cláusulas, rellena las variables de la plantilla, controla versiones y aprobaciones, y luego guárdalo o expórtalo a PDF/DOCX/HTML.",
|
|
4105
|
+
"tutorial.invoiceDesigner.intro.title": "Diseñador de facturas",
|
|
4106
|
+
"tutorial.invoiceDesigner.intro.content": "Arrastra elementos al lienzo de la factura, vincúlalos a campos de datos, alinéalos con la cuadrícula y las reglas, y luego guárdala o expórtala a PDF.",
|
|
4107
|
+
"tutorial.presentationEditor.intro.title": "Editor de presentaciones",
|
|
4108
|
+
"tutorial.presentationEditor.intro.content": "Construye diapositivas desde la tira de miniaturas, añade y organiza elementos en el lienzo, edítalos en el panel de propiedades y luego presenta o exporta.",
|
|
4109
|
+
"tutorial.dashboardStudio.intro.title": "Estudio de paneles",
|
|
4110
|
+
"tutorial.dashboardStudio.intro.content": "Arrastra widgets desde la paleta a la cuadrícula, vincúlalos a fuentes de datos, añade filtros y luego cambia entre Editar/Ver, actualiza y guarda.",
|
|
4111
|
+
"tutorial.biReportBuilder.intro.title": "Generador de informes",
|
|
4112
|
+
"tutorial.biReportBuilder.intro.content": "Arrastra elementos desde la paleta al informe, vincúlalos a fuentes de datos, cambia entre diseño/vista previa y exporta a PDF o Excel.",
|
|
4113
|
+
"tutorial.etlBuilder.intro.title": "Generador de ETL",
|
|
4114
|
+
"tutorial.etlBuilder.intro.content": "Conecta orígenes → transformaciones → destinos en un pipeline, cambia las vistas y luego ejecútalo y guarda la configuración.",
|
|
4115
|
+
"tutorial.videoEditorPro.intro.title": "Editor de vídeo",
|
|
4116
|
+
"tutorial.videoEditorPro.intro.content": "Añade medios a la línea de tiempo, organiza y recorta clips, aplica efectos y transiciones, y luego configura y ejecuta la exportación.",
|
|
4117
|
+
"tutorial.mlStudio.intro.title": "Estudio de ML",
|
|
4118
|
+
"tutorial.mlStudio.intro.content": "Avanza por las pestañas: prepara conjuntos de datos, ejecuta experimentos, compara y elige modelos y luego despliega el mejor.",
|
|
4119
|
+
"tutorial.mathEditor.intro.title": "Editor de matemáticas",
|
|
4120
|
+
"tutorial.mathEditor.intro.content": "Escribe ecuaciones en LaTeX o inserta símbolos desde la paleta; cambia a la entrada manuscrita y previsualiza la fórmula renderizada en vivo.",
|
|
4121
|
+
"tutorial.dmxEditor.intro.title": "Editor DMX",
|
|
4122
|
+
"tutorial.dmxEditor.intro.content": "Elige el dispositivo FTDI y el puerto, y luego ajusta el valor de cada canal DMX con los deslizadores para controlar tus luminarias en vivo.",
|
|
4123
|
+
"nav.help": "Ayuda",
|
|
4124
|
+
"navShell.home.title": "Inicio",
|
|
4125
|
+
"navShell.help.next": "Siguiente",
|
|
4126
|
+
"navShell.help.back": "Atrás",
|
|
4127
|
+
"navShell.help.finish": "Finalizar",
|
|
4128
|
+
"navShell.help.skip": "Omitir",
|
|
4129
|
+
"navShell.help.stepOf": "de",
|
|
4130
|
+
"navShell.help.topNav.title": "Navegación superior",
|
|
4131
|
+
"navShell.help.topNav.body": "Usa la barra superior para cambiar de espacio de trabajo, buscar, cambiar el tema o el idioma y abrir las notificaciones.",
|
|
4132
|
+
"navShell.help.sidebar.title": "Barra lateral",
|
|
4133
|
+
"navShell.help.sidebar.body": "Explora las vistas disponibles agrupadas por sección. Elige una vista para abrirla en una pestaña nueva.",
|
|
4134
|
+
"navShell.help.tabs.title": "Pestañas",
|
|
4135
|
+
"navShell.help.tabs.body": "Cada vista abierta vive en su propia pestaña. Fija las que más uses y haz clic derecho para más acciones.",
|
|
4136
|
+
"navShell.help.content.title": "Espacio de trabajo",
|
|
4137
|
+
"navShell.help.content.body": "El área principal muestra la vista activa. Cambiar de pestaña o de entrada de la barra lateral cambia el contenido aquí.",
|
|
4138
|
+
"navShell.home.subtitle": "Retoma donde lo dejaste.",
|
|
4139
|
+
"navShell.home.empty": "Abre una vista desde la barra lateral o las pestañas de arriba para llenar tu espacio de trabajo.",
|
|
4140
|
+
"navShell.home.greeting.morning": "Buenos días",
|
|
4141
|
+
"navShell.home.greeting.afternoon": "Buenas tardes",
|
|
4142
|
+
"navShell.home.greeting.evening": "Buenas noches",
|
|
4143
|
+
"navShell.home.greeting.night": "Hola",
|
|
4144
|
+
"navShell.home.sections.openTabs": "Abiertas ahora",
|
|
4145
|
+
"navShell.home.sections.shortcuts": "Tus accesos directos",
|
|
4146
|
+
"navShell.home.sections.allViews": "Todas las vistas",
|
|
4147
|
+
"sidebar.menu.open": "Abrir",
|
|
4148
|
+
"sidebar.menu.openNewTab": "Abrir en una pestaña nueva",
|
|
4149
|
+
"sidebar.menu.openBrowserTab": "Abrir en una pestaña nueva del navegador",
|
|
4150
|
+
"sidebar.menu.pinFavorite": "Añadir a favoritos",
|
|
4151
|
+
"sidebar.menu.unpinFavorite": "Quitar de favoritos",
|
|
4152
|
+
"sidebar.menu.hide": "Ocultar",
|
|
4153
|
+
"sidebar.menu.copyLink": "Copiar enlace",
|
|
4154
|
+
"sidebar.menu.pinSource": "Fijar origen",
|
|
4155
|
+
"sidebar.menu.unpinSource": "Dejar de fijar origen",
|
|
4156
|
+
"sidebar.menu.hideSource": "Ocultar origen",
|
|
4157
|
+
"sidebar.prefs.general": "General",
|
|
4158
|
+
"sidebar.prefs.display": "Visualización",
|
|
4159
|
+
"sidebar.prefs.order": "Orden",
|
|
4160
|
+
"sidebar.prefs.hidden": "Elementos ocultos",
|
|
4161
|
+
"sidebar.prefs.reset": "Restablecer",
|
|
4162
|
+
"sidebar.prefs.general.title": "General",
|
|
4163
|
+
"sidebar.prefs.general.desc": "Comportamiento del árbol de la barra lateral y qué hace un clic izquierdo.",
|
|
4164
|
+
"sidebar.prefs.general.autoExpand": "Expandir automáticamente todas las ramas",
|
|
4165
|
+
"sidebar.prefs.general.autoExpandHint": "Cuando está desactivado, las ramas empiezan contraídas y recuerdan el último estado por sesión.",
|
|
4166
|
+
"sidebar.prefs.general.leftClickBehavior": "Comportamiento del clic izquierdo",
|
|
4167
|
+
"sidebar.prefs.general.focusExisting": "Enfocar la pestaña existente",
|
|
4168
|
+
"sidebar.prefs.general.openNew": "Abrir siempre en una pestaña nueva",
|
|
4169
|
+
"sidebar.prefs.general.leftClickHint": "Clic derecho → «Abrir en una pestaña nueva» está siempre disponible, independientemente de este ajuste.",
|
|
4170
|
+
"sidebar.prefs.display.title": "Visualización",
|
|
4171
|
+
"sidebar.prefs.display.desc": "Qué modos aparecen en la tira y hasta qué profundidad llega el árbol en cada modo.",
|
|
4172
|
+
"sidebar.prefs.display.enableModeIcons": "Mostrar los iconos del selector de modos",
|
|
4173
|
+
"sidebar.prefs.display.enabledModes": "Modos visibles",
|
|
4174
|
+
"sidebar.prefs.display.preferencesAlwaysOn": "Preferencias se muestra siempre.",
|
|
4175
|
+
"sidebar.prefs.display.maxDepth": "Profundidad del árbol por modo",
|
|
4176
|
+
"sidebar.prefs.order.title": "Ordenar elementos",
|
|
4177
|
+
"sidebar.prefs.order.desc": "Arrastra los elementos para reordenar cómo aparecen en el modo seleccionado.",
|
|
4178
|
+
"sidebar.prefs.order.pickMode": "Modo",
|
|
4179
|
+
"sidebar.prefs.order.visibilityHint": "El orden se aplica a los elementos de nivel superior dentro de cada grupo de origen. Contrae una cabecera de origen para ver solo las entradas de nivel superior al verificar el cambio.",
|
|
4180
|
+
"sidebar.prefs.order.empty": "No hay elementos reordenables en este modo.",
|
|
4181
|
+
"sidebar.prefs.order.resetMode": "Restablecer al orden predeterminado",
|
|
4182
|
+
"sidebar.prefs.hidden.title": "Elementos ocultos",
|
|
4183
|
+
"sidebar.prefs.hidden.desc": "Elementos que ocultaste del árbol. Restáuralos para recuperarlos.",
|
|
4184
|
+
"sidebar.prefs.hidden.empty": "Nada oculto todavía.",
|
|
4185
|
+
"sidebar.prefs.hidden.restore": "Restaurar",
|
|
4186
|
+
"sidebar.prefs.reset.title": "Restablecer",
|
|
4187
|
+
"sidebar.prefs.reset.desc": "Borra todas las personalizaciones y restaura el diseño original de la barra lateral.",
|
|
4188
|
+
"sidebar.prefs.reset.button": "Restablecer todas las preferencias",
|
|
4189
|
+
"sidebar.prefs.reset.confirm": "Esto borrará tus favoritos, los elementos ocultos, el orden personalizado y todas las demás preferencias de la barra lateral. No se puede deshacer.",
|
|
4190
|
+
"sidebar.prefs.reset.confirmYes": "Sí, restablecer todo",
|
|
4191
|
+
"sidebar.prefs.reset.cancel": "Cancelar",
|
|
4192
|
+
"noCode.title": "Estudio No-Code",
|
|
4193
|
+
"noCode.description": "Crea aplicaciones visualmente",
|
|
4194
|
+
"noCode.newProject": "Nuevo proyecto",
|
|
4195
|
+
"noCode.openProject": "Abrir proyecto",
|
|
4196
|
+
"noCode.saveProject": "Guardar proyecto",
|
|
4197
|
+
"noCode.exportProject": "Exportar proyecto",
|
|
4198
|
+
"noCode.importProject": "Importar proyecto",
|
|
4199
|
+
"noCode.projectName": "Nombre del proyecto",
|
|
4200
|
+
"noCode.projectSettings": "Configuración del proyecto",
|
|
4201
|
+
"noCode.recentProjects": "Proyectos recientes",
|
|
4202
|
+
"noCode.templates": "Plantillas",
|
|
4203
|
+
"noCode.preview": "Vista previa",
|
|
4204
|
+
"noCode.codeView": "Vista de código",
|
|
4205
|
+
"noCode.splitView": "Vista dividida",
|
|
4206
|
+
"noCode.visualView": "Vista visual",
|
|
4207
|
+
"noCode.generate": "Generar código",
|
|
4208
|
+
"noCode.deploy": "Desplegar",
|
|
4209
|
+
"noCode.componentDesigner.title": "Diseñador de componentes",
|
|
4210
|
+
"noCode.componentDesigner.newComponent": "Nuevo componente",
|
|
4211
|
+
"noCode.componentDesigner.componentName": "Nombre del componente",
|
|
4212
|
+
"noCode.componentDesigner.addProp": "Añadir prop",
|
|
4213
|
+
"noCode.componentDesigner.editProp": "Editar prop",
|
|
4214
|
+
"noCode.componentDesigner.deleteProp": "Eliminar prop",
|
|
4215
|
+
"noCode.componentDesigner.propName": "Nombre de la prop",
|
|
4216
|
+
"noCode.componentDesigner.propType": "Tipo de prop",
|
|
4217
|
+
"noCode.componentDesigner.propRequired": "Obligatoria",
|
|
4218
|
+
"noCode.componentDesigner.propDefault": "Valor por defecto",
|
|
4219
|
+
"noCode.componentDesigner.addState": "Añadir estado",
|
|
4220
|
+
"noCode.componentDesigner.stateName": "Nombre del estado",
|
|
4221
|
+
"noCode.componentDesigner.stateType": "Tipo de estado",
|
|
4222
|
+
"noCode.componentDesigner.stateDefault": "Valor inicial",
|
|
4223
|
+
"noCode.componentDesigner.addHook": "Añadir hook",
|
|
4224
|
+
"noCode.componentDesigner.hooks": "Hooks",
|
|
4225
|
+
"noCode.componentDesigner.template": "Plantilla",
|
|
4226
|
+
"noCode.componentDesigner.styles": "Estilos",
|
|
4227
|
+
"noCode.componentDesigner.events": "Eventos",
|
|
4228
|
+
"noCode.componentDesigner.palette": "Paleta de componentes",
|
|
4229
|
+
"noCode.componentDesigner.dragDrop": "Arrastra componentes aquí",
|
|
4230
|
+
"noCode.pageBuilder.title": "Generador de páginas",
|
|
4231
|
+
"noCode.pageBuilder.newPage": "Nueva página",
|
|
4232
|
+
"noCode.pageBuilder.pageName": "Nombre de la página",
|
|
4233
|
+
"noCode.pageBuilder.pageRoute": "Ruta",
|
|
4234
|
+
"noCode.pageBuilder.addSection": "Añadir sección",
|
|
4235
|
+
"noCode.pageBuilder.editSection": "Editar sección",
|
|
4236
|
+
"noCode.pageBuilder.deleteSection": "Eliminar sección",
|
|
4237
|
+
"noCode.pageBuilder.sectionLayout": "Diseño de la sección",
|
|
4238
|
+
"noCode.pageBuilder.columns": "Columnas",
|
|
4239
|
+
"noCode.pageBuilder.responsive": "Responsivo",
|
|
4240
|
+
"noCode.pageBuilder.mobile": "Móvil",
|
|
4241
|
+
"noCode.pageBuilder.tablet": "Tableta",
|
|
4242
|
+
"noCode.pageBuilder.desktop": "Escritorio",
|
|
4243
|
+
"noCode.pageBuilder.showGrid": "Mostrar cuadrícula",
|
|
4244
|
+
"noCode.pageBuilder.hideGrid": "Ocultar cuadrícula",
|
|
4245
|
+
"noCode.pageBuilder.metadata": "Metadatos de la página",
|
|
4246
|
+
"noCode.pageBuilder.seo": "Configuración SEO",
|
|
4247
|
+
"noCode.stateDesigner.title": "Diseñador de estado",
|
|
4248
|
+
"noCode.stateDesigner.newStore": "Nuevo store",
|
|
4249
|
+
"noCode.stateDesigner.storeName": "Nombre del store",
|
|
4250
|
+
"noCode.stateDesigner.storeType": "Tipo de store",
|
|
4251
|
+
"noCode.stateDesigner.addState": "Añadir campo de estado",
|
|
4252
|
+
"noCode.stateDesigner.addAction": "Añadir acción",
|
|
4253
|
+
"noCode.stateDesigner.editAction": "Editar acción",
|
|
4254
|
+
"noCode.stateDesigner.deleteAction": "Eliminar acción",
|
|
4255
|
+
"noCode.stateDesigner.actionName": "Nombre de la acción",
|
|
4256
|
+
"noCode.stateDesigner.actionParams": "Parámetros",
|
|
4257
|
+
"noCode.stateDesigner.actionBody": "Cuerpo de la acción",
|
|
4258
|
+
"noCode.stateDesigner.asyncAction": "Acción asíncrona",
|
|
4259
|
+
"noCode.stateDesigner.addSelector": "Añadir selector",
|
|
4260
|
+
"noCode.stateDesigner.selectorName": "Nombre del selector",
|
|
4261
|
+
"noCode.stateDesigner.selectorBody": "Lógica del selector",
|
|
4262
|
+
"noCode.stateDesigner.persistence": "Persistencia",
|
|
4263
|
+
"noCode.stateDesigner.devtools": "DevTools",
|
|
4264
|
+
"noCode.apiFlow.title": "Diseñador de flujos de API",
|
|
4265
|
+
"noCode.apiFlow.newEndpoint": "Nuevo endpoint",
|
|
4266
|
+
"noCode.apiFlow.endpointUrl": "URL del endpoint",
|
|
4267
|
+
"noCode.apiFlow.method": "Método HTTP",
|
|
4268
|
+
"noCode.apiFlow.headers": "Cabeceras",
|
|
4269
|
+
"noCode.apiFlow.body": "Cuerpo de la solicitud",
|
|
4270
|
+
"noCode.apiFlow.response": "Respuesta",
|
|
4271
|
+
"noCode.apiFlow.auth": "Autenticación",
|
|
4272
|
+
"noCode.apiFlow.authType": "Tipo de autenticación",
|
|
4273
|
+
"noCode.apiFlow.bearerToken": "Token Bearer",
|
|
4274
|
+
"noCode.apiFlow.apiKey": "Clave de API",
|
|
4275
|
+
"noCode.apiFlow.testEndpoint": "Probar endpoint",
|
|
4276
|
+
"noCode.apiFlow.mockResponse": "Respuesta simulada",
|
|
4277
|
+
"noCode.apiFlow.errorHandling": "Gestión de errores",
|
|
4278
|
+
"noCode.apiFlow.retry": "Política de reintentos",
|
|
4279
|
+
"noCode.apiFlow.cache": "Almacenamiento en caché",
|
|
4280
|
+
"noCode.dataMapper.title": "Mapeador de datos",
|
|
4281
|
+
"noCode.dataMapper.sourceSchema": "Esquema de origen",
|
|
4282
|
+
"noCode.dataMapper.targetSchema": "Esquema de destino",
|
|
4283
|
+
"noCode.dataMapper.addMapping": "Añadir mapeo",
|
|
4284
|
+
"noCode.dataMapper.editMapping": "Editar mapeo",
|
|
4285
|
+
"noCode.dataMapper.deleteMapping": "Eliminar mapeo",
|
|
4286
|
+
"noCode.dataMapper.sourceField": "Campo de origen",
|
|
4287
|
+
"noCode.dataMapper.targetField": "Campo de destino",
|
|
4288
|
+
"noCode.dataMapper.transform": "Transformar",
|
|
4289
|
+
"noCode.dataMapper.validation": "Validación",
|
|
4290
|
+
"noCode.dataMapper.testData": "Datos de prueba",
|
|
4291
|
+
"noCode.dataMapper.preview": "Previsualizar resultado",
|
|
4292
|
+
"noCode.dataMapper.autoMap": "Mapeo automático",
|
|
4293
|
+
"noCode.eventOrchestrator.title": "Orquestador de eventos",
|
|
4294
|
+
"noCode.eventOrchestrator.newFlow": "Nuevo flujo de eventos",
|
|
4295
|
+
"noCode.eventOrchestrator.flowName": "Nombre del flujo",
|
|
4296
|
+
"noCode.eventOrchestrator.trigger": "Disparador",
|
|
4297
|
+
"noCode.eventOrchestrator.triggerType": "Tipo de disparador",
|
|
4298
|
+
"noCode.eventOrchestrator.addHandler": "Añadir controlador",
|
|
4299
|
+
"noCode.eventOrchestrator.editHandler": "Editar controlador",
|
|
4300
|
+
"noCode.eventOrchestrator.deleteHandler": "Eliminar controlador",
|
|
4301
|
+
"noCode.eventOrchestrator.handlerName": "Nombre del controlador",
|
|
4302
|
+
"noCode.eventOrchestrator.debounce": "Debounce",
|
|
4303
|
+
"noCode.eventOrchestrator.throttle": "Throttle",
|
|
4304
|
+
"noCode.eventOrchestrator.delay": "Retardo",
|
|
4305
|
+
"noCode.eventOrchestrator.condition": "Condición",
|
|
4306
|
+
"noCode.eventOrchestrator.chain": "Encadenar eventos",
|
|
4307
|
+
"noCode.testBuilder.title": "Generador de pruebas",
|
|
4308
|
+
"noCode.testBuilder.newTest": "Nueva prueba",
|
|
4309
|
+
"noCode.testBuilder.testName": "Nombre de la prueba",
|
|
4310
|
+
"noCode.testBuilder.testDescription": "Descripción",
|
|
4311
|
+
"noCode.testBuilder.addScenario": "Añadir escenario",
|
|
4312
|
+
"noCode.testBuilder.editScenario": "Editar escenario",
|
|
4313
|
+
"noCode.testBuilder.deleteScenario": "Eliminar escenario",
|
|
4314
|
+
"noCode.testBuilder.addAssertion": "Añadir aserción",
|
|
4315
|
+
"noCode.testBuilder.assertionType": "Tipo de aserción",
|
|
4316
|
+
"noCode.testBuilder.expected": "Valor esperado",
|
|
4317
|
+
"noCode.testBuilder.actual": "Valor real",
|
|
4318
|
+
"noCode.testBuilder.mock": "Configuración de mock",
|
|
4319
|
+
"noCode.testBuilder.runTests": "Ejecutar pruebas",
|
|
4320
|
+
"noCode.testBuilder.testsPassed": "Pruebas superadas",
|
|
4321
|
+
"noCode.testBuilder.testsFailed": "Pruebas fallidas",
|
|
4322
|
+
"noCode.testBuilder.coverage": "Cobertura",
|
|
4323
|
+
"noCode.testBuilder.accessibility": "Comprobación de accesibilidad",
|
|
4324
|
+
"noCode.codeTemplate.title": "Plantillas de código",
|
|
4325
|
+
"noCode.codeTemplate.newTemplate": "Nueva plantilla",
|
|
4326
|
+
"noCode.codeTemplate.templateName": "Nombre de la plantilla",
|
|
4327
|
+
"noCode.codeTemplate.templateEngine": "Motor de plantillas",
|
|
4328
|
+
"noCode.codeTemplate.variables": "Variables",
|
|
4329
|
+
"noCode.codeTemplate.addVariable": "Añadir variable",
|
|
4330
|
+
"noCode.codeTemplate.variableName": "Nombre de la variable",
|
|
4331
|
+
"noCode.codeTemplate.variableType": "Tipo de variable",
|
|
4332
|
+
"noCode.codeTemplate.variableDefault": "Valor por defecto",
|
|
4333
|
+
"noCode.codeTemplate.generateFiles": "Generar archivos",
|
|
4334
|
+
"noCode.codeTemplate.outputPath": "Ruta de salida",
|
|
4335
|
+
"noCode.codeTemplate.presets": "Preajustes",
|
|
4336
|
+
"noCode.codeTemplate.presetReact": "Componente React",
|
|
4337
|
+
"noCode.codeTemplate.presetNextPage": "Página de Next.js",
|
|
4338
|
+
"noCode.codeTemplate.presetHook": "Hook personalizado",
|
|
4339
|
+
"noCode.codeTemplate.presetStore": "Módulo de store",
|
|
4340
|
+
"noCode.codePreview.title": "Vista previa del código",
|
|
4341
|
+
"noCode.codePreview.showDiff": "Mostrar diferencias",
|
|
4342
|
+
"noCode.codePreview.hideDiff": "Ocultar diferencias",
|
|
4343
|
+
"noCode.codePreview.copyCode": "Copiar código",
|
|
4344
|
+
"noCode.codePreview.downloadCode": "Descargar código",
|
|
4345
|
+
"noCode.codePreview.importCode": "Importar código",
|
|
4346
|
+
"noCode.codePreview.language": "Lenguaje",
|
|
4347
|
+
"noCode.codePreview.format": "Formatear código",
|
|
4348
|
+
"noCode.codePreview.linesChanged": "Líneas cambiadas",
|
|
4349
|
+
"noCode.codePreview.noChanges": "Sin cambios",
|
|
4350
|
+
"vectorEditor.menu.file": "Archivo",
|
|
4351
|
+
"vectorEditor.menu.edit": "Editar",
|
|
4352
|
+
"vectorEditor.menu.object": "Objeto",
|
|
4353
|
+
"vectorEditor.menu.path": "Trazado",
|
|
4354
|
+
"vectorEditor.menu.view": "Ver",
|
|
4355
|
+
"vectorEditor.menu.newCanvas": "Nuevo lienzo",
|
|
4356
|
+
"vectorEditor.menu.openSvg": "Abrir SVG…",
|
|
4357
|
+
"vectorEditor.menu.pasteSvg": "Pegar SVG…",
|
|
4358
|
+
"vectorEditor.menu.exportSvg": "Exportar SVG",
|
|
4359
|
+
"vectorEditor.menu.exportPng": "Exportar PNG",
|
|
4360
|
+
"vectorEditor.menu.exportJpg": "Exportar JPG",
|
|
4361
|
+
"vectorEditor.menu.exportWebp": "Exportar WebP",
|
|
4362
|
+
"vectorEditor.menu.exportBmp": "Exportar BMP",
|
|
4363
|
+
"vectorEditor.menu.saveToLibrary": "📦 Guardar en la biblioteca",
|
|
4364
|
+
"vectorEditor.menu.exportIconSnippet": "📋 Exportar fragmento de icono",
|
|
4365
|
+
"vectorEditor.menu.exportIcon": "📋 Exportar icono",
|
|
4366
|
+
"vectorEditor.menu.undo": "Deshacer (Ctrl+Z)",
|
|
4367
|
+
"vectorEditor.menu.redo": "Rehacer (Ctrl+Y)",
|
|
4368
|
+
"vectorEditor.menu.copy": "Copiar (Ctrl+C)",
|
|
4369
|
+
"vectorEditor.menu.paste": "Pegar (Ctrl+V)",
|
|
4370
|
+
"vectorEditor.menu.duplicate": "Duplicar (Ctrl+D)",
|
|
4371
|
+
"vectorEditor.menu.delete": "Eliminar (Supr)",
|
|
4372
|
+
"vectorEditor.menu.bringToFront": "Traer al frente",
|
|
4373
|
+
"vectorEditor.menu.sendToBack": "Enviar al fondo",
|
|
4374
|
+
"vectorEditor.menu.flipH": "Voltear horizontal",
|
|
4375
|
+
"vectorEditor.menu.flipV": "Voltear vertical",
|
|
4376
|
+
"vectorEditor.menu.alignLeft": "Alinear a la izquierda",
|
|
4377
|
+
"vectorEditor.menu.alignCenter": "Centrar",
|
|
4378
|
+
"vectorEditor.menu.alignRight": "Alinear a la derecha",
|
|
4379
|
+
"vectorEditor.menu.union": "Unión (∪)",
|
|
4380
|
+
"vectorEditor.menu.subtract": "Restar (−)",
|
|
4381
|
+
"vectorEditor.menu.intersect": "Intersecar (∩)",
|
|
4382
|
+
"vectorEditor.menu.exclude": "Excluir (⊕)",
|
|
4383
|
+
"vectorEditor.menu.outlineStroke": "Contornear trazo",
|
|
4384
|
+
"vectorEditor.menu.snapToGrid": "Ajustar a la cuadrícula",
|
|
4385
|
+
"vectorEditor.menu.snap": "Ajustar",
|
|
4386
|
+
"vectorEditor.menu.secondShape": "2.ª forma",
|
|
4387
|
+
"vectorEditor.tabs.properties": "Propiedades",
|
|
4388
|
+
"vectorEditor.tabs.layers": "Capas",
|
|
4389
|
+
"vectorEditor.tabs.library": "Biblioteca",
|
|
4390
|
+
"vectorEditor.tabs.timeline": "Línea de tiempo",
|
|
4391
|
+
"vectorEditor.timeline.preset": "Preajuste",
|
|
4392
|
+
"vectorEditor.timeline.duration": "Duración (ms)",
|
|
4393
|
+
"vectorEditor.timeline.repeat": "Repetir",
|
|
4394
|
+
"vectorEditor.timeline.direction": "Dirección",
|
|
4395
|
+
"vectorEditor.timeline.remove": "Eliminar animación",
|
|
4396
|
+
"vectorEditor.timeline.play": "Reproducir",
|
|
4397
|
+
"vectorEditor.timeline.pause": "Pausa",
|
|
4398
|
+
"vectorEditor.timeline.stop": "Detener",
|
|
4399
|
+
"vectorEditor.timeline.copyCss": "Copiar CSS",
|
|
4400
|
+
"vectorEditor.timeline.keyframes": "Fotogramas clave",
|
|
4401
|
+
"vectorEditor.timeline.addKeyframe": "+ Añadir fotograma clave",
|
|
4402
|
+
"vectorEditor.timeline.noSelection": "Selecciona una forma para animarla.",
|
|
4403
|
+
"vectorEditor.timeline.animationTitle": "Animación",
|
|
4404
|
+
"vectorEditor.timeline.playbackTitle": "Reproducción",
|
|
4405
|
+
"vectorEditor.timeline.attachHint": "Selecciona una forma para adjuntar una animación.",
|
|
4406
|
+
"vectorEditor.timeline.playLabel": "▶ Reproducir",
|
|
4407
|
+
"vectorEditor.timeline.pauseLabel": "⏸ Pausa",
|
|
4408
|
+
"vectorEditor.timeline.stopLabel": "⏹ Detener",
|
|
4409
|
+
"vectorEditor.timeline.copyCssKeyframes": "📋 Copiar fotogramas clave CSS",
|
|
4410
|
+
"vectorEditor.timeline.tLabel": "t",
|
|
4411
|
+
"vectorEditor.layers.empty": "Aún no hay capas. Usa las herramientas para dibujar o inserta desde la pestaña Biblioteca.",
|
|
4412
|
+
"vectorEditor.layers.moveUp": "Subir",
|
|
4413
|
+
"vectorEditor.layers.moveDown": "Bajar",
|
|
4414
|
+
"vectorEditor.library.passProp": "Pasa una prop library a NiceVectorEditor para llenar esta pestaña con iconos insertables.",
|
|
4415
|
+
"vectorEditor.statusBar.zoom": "Zoom",
|
|
4416
|
+
"vectorEditor.statusBar.shapes": "forma(s)",
|
|
4417
|
+
"vectorEditor.statusBar.selected": "Seleccionado",
|
|
4418
|
+
"vectorEditor.statusBar.snap": "Ajuste",
|
|
4419
|
+
"vectorEditor.library.empty": "No hay iconos en la biblioteca.",
|
|
4420
|
+
"vectorEditor.snippet.title": "✅ Fragmento de icono copiado al portapapeles",
|
|
4421
|
+
"vectorEditor.snippet.pasteHint": "Pegar en",
|
|
4422
|
+
"vectorEditor.snippet.copyAgain": "Copiar de nuevo",
|
|
4423
|
+
"vectorEditor.snippet.close": "Cerrar",
|
|
4424
|
+
"vectorEditor.properties.appearance": "Apariencia",
|
|
4425
|
+
"vectorEditor.properties.fill": "Relleno",
|
|
4426
|
+
"vectorEditor.properties.solid": "Sólido",
|
|
4427
|
+
"vectorEditor.properties.gradient": "Degradado",
|
|
4428
|
+
"vectorEditor.properties.hideEditor": "▼ Ocultar editor",
|
|
4429
|
+
"vectorEditor.properties.editGradient": "► Editar degradado",
|
|
4430
|
+
"vectorEditor.properties.type": "Tipo",
|
|
4431
|
+
"vectorEditor.properties.linear": "Lineal",
|
|
4432
|
+
"vectorEditor.properties.radial": "Radial",
|
|
4433
|
+
"vectorEditor.properties.angle": "Ángulo",
|
|
4434
|
+
"vectorEditor.properties.cx": "CX",
|
|
4435
|
+
"vectorEditor.properties.cy": "CY",
|
|
4436
|
+
"vectorEditor.properties.r": "R",
|
|
4437
|
+
"vectorEditor.properties.colorStops": "Paradas de color:",
|
|
4438
|
+
"vectorEditor.properties.addStop": "+ Añadir parada",
|
|
4439
|
+
"vectorEditor.properties.removeStop": "- Eliminar",
|
|
4440
|
+
"vectorEditor.properties.stroke": "Trazo",
|
|
4441
|
+
"vectorEditor.properties.width": "Ancho",
|
|
4442
|
+
"vectorEditor.properties.opacity": "Opacidad",
|
|
4443
|
+
"vectorEditor.properties.rotation": "Rotación",
|
|
4444
|
+
"vectorEditor.properties.toolOptions": "Opciones de la herramienta",
|
|
4445
|
+
"vectorEditor.properties.radius": "Radio",
|
|
4446
|
+
"vectorEditor.properties.sides": "Lados",
|
|
4447
|
+
"vectorEditor.properties.points": "Puntos",
|
|
4448
|
+
"vectorEditor.properties.innerR": "R interior",
|
|
4449
|
+
"vectorEditor.properties.size": "Tamaño",
|
|
4450
|
+
"vectorEditor.properties.font": "Fuente",
|
|
4451
|
+
"vectorEditor.properties.grid": "Cuadrícula",
|
|
4452
|
+
"vectorEditor.properties.transform": "Transformar",
|
|
4453
|
+
"vectorEditor.properties.x": "X",
|
|
4454
|
+
"vectorEditor.properties.y": "Y",
|
|
4455
|
+
"vectorEditor.properties.w": "An",
|
|
4456
|
+
"vectorEditor.properties.h": "Al",
|
|
4457
|
+
"vectorEditor.layers.title": "Capas",
|
|
4458
|
+
"vectorEditor.layers.show": "Mostrar",
|
|
4459
|
+
"vectorEditor.layers.hide": "Ocultar",
|
|
4460
|
+
"vectorEditor.layers.lock": "Bloquear",
|
|
4461
|
+
"vectorEditor.layers.unlock": "Desbloquear"
|
|
3263
4462
|
}, De = {
|
|
3264
4463
|
ok: "OK",
|
|
3265
4464
|
cancel: "Annulla",
|
|
@@ -3374,7 +4573,7 @@ const j = [
|
|
|
3374
4573
|
"lang.ko": "Coreano",
|
|
3375
4574
|
"lang.zh": "Cinese",
|
|
3376
4575
|
"lang.ar": "Arabo"
|
|
3377
|
-
},
|
|
4576
|
+
}, je = {
|
|
3378
4577
|
ok: "OK",
|
|
3379
4578
|
cancel: "Cancelar",
|
|
3380
4579
|
save: "Salvar",
|
|
@@ -3737,7 +4936,7 @@ const j = [
|
|
|
3737
4936
|
"wm.minimizeAll": "Minimizar todos",
|
|
3738
4937
|
"wm.newWindow": "Nova janela",
|
|
3739
4938
|
"wm.moveToFront": "Trazer para frente"
|
|
3740
|
-
},
|
|
4939
|
+
}, Ae = {
|
|
3741
4940
|
ok: "OK",
|
|
3742
4941
|
cancel: "Annuleren",
|
|
3743
4942
|
save: "Opslaan",
|
|
@@ -3822,7 +5021,7 @@ const j = [
|
|
|
3822
5021
|
"lang.ko": "Koreaans",
|
|
3823
5022
|
"lang.zh": "Chinees",
|
|
3824
5023
|
"lang.ar": "Arabisch"
|
|
3825
|
-
},
|
|
5024
|
+
}, Pe = {
|
|
3826
5025
|
ok: "OK",
|
|
3827
5026
|
cancel: "Avbryt",
|
|
3828
5027
|
save: "Spara",
|
|
@@ -3892,7 +5091,7 @@ const j = [
|
|
|
3892
5091
|
"lang.ko": "Koreanska",
|
|
3893
5092
|
"lang.zh": "Kinesiska",
|
|
3894
5093
|
"lang.ar": "Arabiska"
|
|
3895
|
-
},
|
|
5094
|
+
}, xe = {
|
|
3896
5095
|
ok: "OK",
|
|
3897
5096
|
cancel: "Avbryt",
|
|
3898
5097
|
save: "Lagre",
|
|
@@ -3955,7 +5154,7 @@ const j = [
|
|
|
3955
5154
|
"lang.ko": "Koreansk",
|
|
3956
5155
|
"lang.zh": "Kinesisk",
|
|
3957
5156
|
"lang.ar": "Arabisk"
|
|
3958
|
-
},
|
|
5157
|
+
}, Te = {
|
|
3959
5158
|
ok: "OK",
|
|
3960
5159
|
cancel: "Annuller",
|
|
3961
5160
|
save: "Gem",
|
|
@@ -4018,7 +5217,7 @@ const j = [
|
|
|
4018
5217
|
"lang.ko": "Koreansk",
|
|
4019
5218
|
"lang.zh": "Kinesisk",
|
|
4020
5219
|
"lang.ar": "Arabisk"
|
|
4021
|
-
},
|
|
5220
|
+
}, Be = {
|
|
4022
5221
|
ok: "OK",
|
|
4023
5222
|
cancel: "Peruuta",
|
|
4024
5223
|
save: "Tallenna",
|
|
@@ -4507,7 +5706,7 @@ const j = [
|
|
|
4507
5706
|
"lang.ko": "Kórejčina",
|
|
4508
5707
|
"lang.zh": "Čínština",
|
|
4509
5708
|
"lang.ar": "Arabčina"
|
|
4510
|
-
},
|
|
5709
|
+
}, Ne = {
|
|
4511
5710
|
ok: "OK",
|
|
4512
5711
|
cancel: "Mégse",
|
|
4513
5712
|
save: "Mentés",
|
|
@@ -4680,7 +5879,7 @@ const j = [
|
|
|
4680
5879
|
"lang.ko": "Корейски",
|
|
4681
5880
|
"lang.zh": "Китайски",
|
|
4682
5881
|
"lang.ar": "Арабски"
|
|
4683
|
-
},
|
|
5882
|
+
}, Oe = {
|
|
4684
5883
|
ok: "OK",
|
|
4685
5884
|
cancel: "Скасувати",
|
|
4686
5885
|
save: "Зберегти",
|
|
@@ -5042,7 +6241,516 @@ const j = [
|
|
|
5042
6241
|
"wm.closeAll": "Закрити всі",
|
|
5043
6242
|
"wm.minimizeAll": "Згорнути всі",
|
|
5044
6243
|
"wm.newWindow": "Нове вікно",
|
|
5045
|
-
"wm.moveToFront": "На передній план"
|
|
6244
|
+
"wm.moveToFront": "На передній план",
|
|
6245
|
+
// Tutorials + UI strings (1.0.22)
|
|
6246
|
+
"tutorial.play": "Відтворити",
|
|
6247
|
+
"tutorial.pause": "Пауза",
|
|
6248
|
+
"tutorial.speed": "Швидкість",
|
|
6249
|
+
"tutorial.close": "Закрити",
|
|
6250
|
+
"tutorial.start": "Посібник",
|
|
6251
|
+
"tutorial.startAria": "Запустити посібник",
|
|
6252
|
+
"tutorial.next": "Далі",
|
|
6253
|
+
"tutorial.back": "Назад",
|
|
6254
|
+
"tutorial.finish": "Завершити",
|
|
6255
|
+
"tutorial.skip": "Пропустити",
|
|
6256
|
+
"tutorial.stepOf": "з",
|
|
6257
|
+
"tutorial.moduleEditor.browser.title": "Браузер модулів",
|
|
6258
|
+
"tutorial.moduleEditor.browser.content": "Виберіть тут модуль, щоб відкрити його маніфест, сутності та переклади.",
|
|
6259
|
+
"tutorial.moduleEditor.validate.title": "Перевірити",
|
|
6260
|
+
"tutorial.moduleEditor.validate.content": "Перевірте модуль за схемою маніфесту. Проблеми з’являються в рядку стану та у виводі.",
|
|
6261
|
+
"tutorial.moduleEditor.save.title": "Зберегти",
|
|
6262
|
+
"tutorial.moduleEditor.save.content": "Збережіть зміни через налаштований постачальник даних (напр., запис файлів назад на диск).",
|
|
6263
|
+
"tutorial.manifestEditor.intro.title": "Редактор маніфесту",
|
|
6264
|
+
"tutorial.manifestEditor.intro.content": "Редагуйте маніфест у розділах на основі схеми. Перемикайте Форма ⇄ JSON для кожного розділу; перевірка з’являється в рядку стану.",
|
|
6265
|
+
"tutorial.schemaForm.intro.title": "Форма за схемою",
|
|
6266
|
+
"tutorial.schemaForm.intro.content": "Ця форма генерується зі схеми. Обов’язкові поля та помилки перевірки підсвічуються; використовуйте перемикач JSON для прямого редагування.",
|
|
6267
|
+
"tutorial.entityEditor.intro.title": "Редактор сутностей",
|
|
6268
|
+
"tutorial.entityEditor.intro.content": "Додавайте сутності ліворуч, а праворуч редагуйте метадані кожної сутності та її поля (тип, ключі, обмеження).",
|
|
6269
|
+
"tutorial.i18nEditor.intro.title": "Переклади",
|
|
6270
|
+
"tutorial.i18nEditor.intro.content": "Редагуйте переклади як таблицю ключі × мови. Додавайте ключі та мови; бурштинові клітинки позначають відсутні переклади.",
|
|
6271
|
+
"tutorial.formBuilder.intro.title": "Конструктор форм",
|
|
6272
|
+
"tutorial.formBuilder.intro.content": "Перетягуйте поля з палітри на полотно та налаштовуйте кожне поле на панелі властивостей. Експортуйте схему, коли завершите.",
|
|
6273
|
+
"tutorial.formDesigner.intro.title": "Дизайнер форм",
|
|
6274
|
+
"tutorial.formDesigner.intro.content": "Проєктуйте форми введення даних із розділами, полями пошуку та обчислюваними полями; прив’яжіть їх до сутності та переглядайте наживо.",
|
|
6275
|
+
"tutorial.paymentProviderConfig.intro.title": "Платіжний провайдер",
|
|
6276
|
+
"tutorial.paymentProviderConfig.intro.content": "Виберіть провайдера, заповніть облікові дані (секрети приховуються), виберіть тест/робочий режим, увімкніть методи та скопіюйте URL вебхука.",
|
|
6277
|
+
"tutorial.webhookTester.intro.title": "Тестер вебхуків",
|
|
6278
|
+
"tutorial.webhookTester.intro.content": "Виберіть збережене корисне навантаження (або напишіть своє), за потреби підпишіть його, надішліть на endpoint і перегляньте відповідь.",
|
|
6279
|
+
"tutorial.apiDesigner.intro.title": "Дизайнер API",
|
|
6280
|
+
"tutorial.apiDesigner.intro.content": "Визначте endpoint-и, параметри, схеми запиту/відповіді та безпеку вашого документа OpenAPI.",
|
|
6281
|
+
"tutorial.apiTester.intro.title": "Тестер API",
|
|
6282
|
+
"tutorial.apiTester.intro.content": "Створюйте запити з колекціями та змінними середовища, надсилайте їх і перевіряйте відповіді.",
|
|
6283
|
+
"tutorial.integrationBuilder.intro.title": "Конструктор інтеграцій",
|
|
6284
|
+
"tutorial.integrationBuilder.intro.content": "З’єднайте потік вузлів (тригери → дії → обробка помилок), щоб побудувати інтеграцію.",
|
|
6285
|
+
"tutorial.scriptRunner.intro.title": "Запуск скриптів",
|
|
6286
|
+
"tutorial.scriptRunner.intro.content": "Напишіть скрипт і приклад вхідних даних, натисніть «Виконати» та перегляньте результат і зібрані журнали нижче.",
|
|
6287
|
+
"tutorial.lifecycleHooks.intro.title": "Хуки життєвого циклу",
|
|
6288
|
+
"tutorial.lifecycleHooks.intro.content": "Прив’яжіть обробники до кожного тригера, задайте їхній порядок і прапорець активації та додайте необов’язкову умову, що керує виконанням.",
|
|
6289
|
+
"tutorial.revisionHistory.intro.title": "Історія версій",
|
|
6290
|
+
"tutorial.revisionHistory.intro.content": "Виберіть версію, виберіть іншу для порівняння, перегляньте відмінності поряд і за потреби відновіть попередню версію.",
|
|
6291
|
+
"tutorial.markdownEditor.intro.title": "Редактор Markdown",
|
|
6292
|
+
"tutorial.markdownEditor.intro.content": "Пишіть Markdown за допомогою панелі форматування; увімкніть попередній перегляд наживо, щоб бачити результат, і експортуйте у HTML.",
|
|
6293
|
+
"tutorial.htmlEditor.intro.title": "Редактор форматованого тексту",
|
|
6294
|
+
"tutorial.htmlEditor.intro.content": "Форматуйте текст за допомогою панелі інструментів, вставляйте посилання, зображення й таблиці та за потреби переходьте до коду HTML або Markdown.",
|
|
6295
|
+
"tutorial.documentEditor.intro.title": "Редактор документів",
|
|
6296
|
+
"tutorial.documentEditor.intro.content": "Складайте документ із блоків: використовуйте панель інструментів або slash-команди, щоб додавати заголовки, списки, медіа тощо, і експортуйте у HTML.",
|
|
6297
|
+
"tutorial.codeEditor.intro.title": "Редактор коду",
|
|
6298
|
+
"tutorial.codeEditor.intro.content": "Редагуйте код із підсвічуванням синтаксису, IntelliSense та панеллю інструментів. Ctrl+S зберігає; рядок стану показує позицію курсора та проблеми.",
|
|
6299
|
+
"tutorial.kanbanBoard.intro.title": "Дошка Kanban",
|
|
6300
|
+
"tutorial.kanbanBoard.intro.content": "Перетягуйте картки між колонками, щоб змінити їхній статус, додавайте картки кнопкою «+» та клацніть картку, щоб редагувати її деталі.",
|
|
6301
|
+
"tutorial.queryBuilder.intro.title": "Конструктор запитів",
|
|
6302
|
+
"tutorial.queryBuilder.intro.content": "Додавайте таблиці, обирайте стовпці та візуально визначайте з’єднання, умови й сортування — SQL генерується автоматично. Перейдіть на вкладку SQL, щоб переглянути його.",
|
|
6303
|
+
"tutorial.stateDesigner.intro.title": "Дизайнер стану",
|
|
6304
|
+
"tutorial.stateDesigner.intro.content": "Змоделюйте сховище як зрізи з полями та діями, виберіть ціль (напр., Zustand) і експортуйте готовий код керування станом.",
|
|
6305
|
+
"tutorial.componentDesigner.intro.title": "Дизайнер компонентів",
|
|
6306
|
+
"tutorial.componentDesigner.intro.content": "Назвіть компонент, оголосіть його props із типами та вимогами й переглядайте згенерований інтерфейс TypeScript наживо.",
|
|
6307
|
+
"tutorial.pageBuilder.intro.title": "Конструктор сторінок",
|
|
6308
|
+
"tutorial.pageBuilder.intro.content": "Перетягуйте компоненти з бічної панелі на адаптивну сітку, перемикайте перегляд для комп’ютера/планшета/мобільного та зберігайте макет.",
|
|
6309
|
+
"tutorial.lowCodeStudio.intro.title": "Студія low-code",
|
|
6310
|
+
"tutorial.lowCodeStudio.intro.content": "Перетягуйте компоненти з бічної панелі на полотно та перемикайтеся між вкладками «Дизайн», «Перегляд» і «Код», щоб створити та експортувати застосунок.",
|
|
6311
|
+
"tutorial.testBuilder.intro.title": "Конструктор тестів",
|
|
6312
|
+
"tutorial.testBuilder.intro.content": "Створюйте набори тестів візуально: додавайте випадки та кроки взаємодії з перевірками, запускайте їх і експортуйте у готовий файл .test.tsx.",
|
|
6313
|
+
"tutorial.workflowDesigner.intro.title": "Дизайнер робочих процесів",
|
|
6314
|
+
"tutorial.workflowDesigner.intro.content": "Додавайте стани й переходи на полотні, перевіряйте потік, симулюйте його, а потім тестуйте або публікуйте робочий процес.",
|
|
6315
|
+
"tutorial.themeBuilder.intro.title": "Конструктор тем",
|
|
6316
|
+
"tutorial.themeBuilder.intro.content": "Почніть із пресету, налаштовуйте кольори, типографіку та інші токени за розділами, переглядайте наживо, а потім застосуйте або експортуйте тему.",
|
|
6317
|
+
"tutorial.filterBuilder.intro.title": "Конструктор фільтрів",
|
|
6318
|
+
"tutorial.filterBuilder.intro.content": "Будуйте складні дерева фільтрів І/АБО: додавайте умови та вкладені групи, обирайте поля й оператори та зберігайте багаторазові пресети.",
|
|
6319
|
+
"tutorial.diagramDesigner.intro.title": "Дизайнер діаграм",
|
|
6320
|
+
"tutorial.diagramDesigner.intro.content": "Перетягуйте фігури з палітри на полотно, з’єднуйте їх конекторами, редагуйте властивості праворуч і експортуйте у SVG, PNG або JSON.",
|
|
6321
|
+
"tutorial.reportBuilder.intro.title": "Конструктор звітів",
|
|
6322
|
+
"tutorial.reportBuilder.intro.content": "Перетягуйте розділи у звіт, прив’язуйте їх до джерел даних, упорядковуйте макет і експортуйте у PDF, HTML або XLSX.",
|
|
6323
|
+
"tutorial.erpReportDesigner.intro.title": "Дизайнер звітів",
|
|
6324
|
+
"tutorial.erpReportDesigner.intro.content": "Проєктуйте стрічкові звіти: розміщуйте елементи (поля, вирази, діаграми) у стрічках, прив’язуйте з’єднання даних, редагуйте властивості, а потім переглядайте та експортуйте.",
|
|
6325
|
+
"tutorial.recipeEditor.intro.title": "Редактор рецептів",
|
|
6326
|
+
"tutorial.recipeEditor.intro.content": "Редагуйте деталі рецепта, додавайте та змінюйте порядок інгредієнтів і кроків, прикріплюйте фото та імпортуйте чи експортуйте рецепт як JSON.",
|
|
6327
|
+
"tutorial.pipelineEditor.intro.title": "Редактор конвеєра",
|
|
6328
|
+
"tutorial.pipelineEditor.intro.content": "Будуйте конвеєр CI/CD зі стадій, завдань і кроків; задавайте тригери, змінні та секрети; а потім перевіряйте, зберігайте та запускайте його.",
|
|
6329
|
+
"tutorial.mergeRequestBuilder.intro.title": "Конструктор merge request",
|
|
6330
|
+
"tutorial.mergeRequestBuilder.intro.content": "Виберіть гілки джерела й призначення, напишіть заголовок і опис, додайте рецензентів, мітки та пов’язані задачі, а потім перегляньте та надішліть.",
|
|
6331
|
+
"tutorial.automationRuleEditor.intro.title": "Редактор правил автоматизації",
|
|
6332
|
+
"tutorial.automationRuleEditor.intro.content": "Визначте тригер, додайте необов’язкові умови, а потім перелічіть дії для виконання — перемикайтеся між трьома розділами за допомогою вкладок.",
|
|
6333
|
+
"tutorial.sceneActionBuilder.intro.title": "Конструктор дій сцени",
|
|
6334
|
+
"tutorial.sceneActionBuilder.intro.content": "Додайте дію для кожного пристрою, задайте її цільовий стан і необов’язкову затримку, змініть порядок і перегляньте послідовність сцени.",
|
|
6335
|
+
"tutorial.backupTagEditor.intro.title": "Теги резервної копії",
|
|
6336
|
+
"tutorial.backupTagEditor.intro.content": "Позначте цю резервну копію тегами для зручного пошуку: введіть підпис і виберіть колір або додайте один із запропонованих тегів; автоматично створені теги захищені.",
|
|
6337
|
+
"tutorial.dataMergeBuilder.intro.title": "Об’єднання даних",
|
|
6338
|
+
"tutorial.dataMergeBuilder.intro.content": "Пройдіть кроки: виберіть гілки джерела й призначення, перегляньте зміни, вирішіть конфлікти, задайте параметри, а потім підтвердьте об’єднання.",
|
|
6339
|
+
"tutorial.invoiceLineEditor.intro.title": "Рядки рахунка",
|
|
6340
|
+
"tutorial.invoiceLineEditor.intro.content": "Додавайте позиції з кількістю, ціною за одиницю, ПДВ і знижкою — нетто, брутто та розбивку ПДВ обчислюються автоматично.",
|
|
6341
|
+
"tutorial.keyValueEditor.intro.title": "Редактор ключ/значення",
|
|
6342
|
+
"tutorial.keyValueEditor.intro.content": "Додавайте рядки ключ/значення для заголовків, параметрів, змінних середовища чи конфігурації; приховуйте секретні значення, вмикайте/вимикайте рядки та стежте за дублікатами ключів.",
|
|
6343
|
+
"tutorial.imageEditor.intro.title": "Редактор зображень",
|
|
6344
|
+
"tutorial.imageEditor.intro.content": "Використовуйте панель інструментів, щоб обрізати, обертати, віддзеркалювати, налаштовувати яскравість/контраст та робити позначки; скасовуйте/повторюйте зміни та зберігайте результат.",
|
|
6345
|
+
"tutorial.cropEditor.intro.title": "Редактор обрізання",
|
|
6346
|
+
"tutorial.cropEditor.intro.content": "Перетягніть рамку обрізання на зображення, виберіть співвідношення сторін, обертайте, віддзеркалюйте або масштабуйте, а потім використайте результат.",
|
|
6347
|
+
"tutorial.pdfAnnotationEditor.intro.title": "Анотації PDF",
|
|
6348
|
+
"tutorial.pdfAnnotationEditor.intro.content": "Виберіть інструмент на панелі (виділення, підкреслення, від руки, текст…), робіть позначки на сторінці, гортайте сторінки та масштабуйте за потреби.",
|
|
6349
|
+
"tutorial.videoEditor.intro.title": "Відеоредактор",
|
|
6350
|
+
"tutorial.videoEditor.intro.content": "Додавайте медіа на доріжки таймлайну, обрізайте та впорядковуйте кліпи, редагуйте їхні властивості, переглядайте відтворення, а потім експортуйте відео.",
|
|
6351
|
+
"tutorial.viewBuilder.intro.title": "Конструктор подань",
|
|
6352
|
+
"tutorial.viewBuilder.intro.content": "Перетягуйте елементи керування з палітри в клітинки сітки, налаштовуйте кожну клітинку на панелі властивостей та імпортуйте, експортуйте чи зберігайте подання.",
|
|
6353
|
+
"tutorial.dashboardDesigner.intro.title": "Дизайнер дашбордів",
|
|
6354
|
+
"tutorial.dashboardDesigner.intro.content": "Перетягуйте віджети з палітри на сітку, змінюйте їхній розмір і впорядковуйте, налаштовуйте кожен на панелі властивостей, а потім переглядайте або експортуйте дашборд.",
|
|
6355
|
+
"tutorial.workflowDesignerCanvas.intro.title": "Дизайнер робочих процесів",
|
|
6356
|
+
"tutorial.workflowDesignerCanvas.intro.content": "Додавайте на полотно вузли тригерів, дій та умов і з’єднуйте їх; керуйте змінними, перевіряйте потік, а потім експортуйте його.",
|
|
6357
|
+
"tutorial.armatureEditor.intro.title": "Редактор скелета",
|
|
6358
|
+
"tutorial.armatureEditor.intro.content": "Виберіть кістки, щоб редагувати їхні трансформації, додавайте або змінюйте батьківські кістки, налаштовуйте IK-ланцюги та зберігайте чи завантажуйте пози.",
|
|
6359
|
+
"tutorial.morphTargetEditor.intro.title": "Редактор морф-цілей",
|
|
6360
|
+
"tutorial.morphTargetEditor.intro.content": "Змішуйте морф-цілі сітки повзунками впливу для кожної цілі, створюйте чи видаляйте цілі та переглядайте інтерполяцію.",
|
|
6361
|
+
"tutorial.terrainEditor.intro.title": "Редактор ландшафту",
|
|
6362
|
+
"tutorial.terrainEditor.intro.content": "Скульптуруйте карту висот пензлями (підняти, опустити, вирівняти, згладити, шум), накладайте текстурні шари, генеруйте процедурний ландшафт та імпортуйте/експортуйте карти висот.",
|
|
6363
|
+
"tutorial.materialEditor.intro.title": "Редактор матеріалів",
|
|
6364
|
+
"tutorial.materialEditor.intro.content": "Будуйте шейдер як граф вузлів: перетягуйте вузли з палітри, з’єднуйте їхні порти, редагуйте властивості та переглядайте скомпільований матеріал.",
|
|
6365
|
+
"tutorial.particleEditor.intro.title": "Редактор частинок",
|
|
6366
|
+
"tutorial.particleEditor.intro.content": "Виберіть систему частинок, налаштуйте її емітер і модулі в інспекторі та відтворюйте, призупиняйте чи зупиняйте перегляд наживо.",
|
|
6367
|
+
"tutorial.uvEditor.intro.title": "Редактор UV",
|
|
6368
|
+
"tutorial.uvEditor.intro.content": "Редагуйте UV-розгортку сітки поверх текстури: виділяйте та трансформуйте UV інструментами, перемикайте UV-канали та застосовуйте зміни.",
|
|
6369
|
+
"tutorial.fontEditor.intro.title": "Редактор шрифтів",
|
|
6370
|
+
"tutorial.fontEditor.intro.content": "Редагуйте гліфи на сітці Unicode, налаштовуйте метрики шрифту, контури та відступи для кожного гліфа, а потім експортуйте шрифт.",
|
|
6371
|
+
"tutorial.iconEditor.intro.title": "Редактор іконок",
|
|
6372
|
+
"tutorial.iconEditor.intro.content": "Малюйте та редагуйте SVG-фігури на сітці, налаштовуйте параметри обведення та варіанта, переглядайте на різних фонах та експортуйте у SVG, React або PNG.",
|
|
6373
|
+
"tutorial.uiDesigner.intro.title": "Дизайнер інтерфейсу",
|
|
6374
|
+
"tutorial.uiDesigner.intro.content": "Перетягуйте компоненти з палітри на полотно, редагуйте їхні props на панелі, переглядайте адаптивні breakpoint-и та експортуйте у React/TSX.",
|
|
6375
|
+
"tutorial.gameEditor.intro.title": "Редактор гри",
|
|
6376
|
+
"tutorial.gameEditor.intro.content": "Будуйте сцену у вікні перегляду за допомогою панелей ієрархії та ресурсів, налаштовуйте сутності в інспекторі та зберігайте проєкт.",
|
|
6377
|
+
"tutorial.levelEditor.intro.title": "Редактор рівнів",
|
|
6378
|
+
"tutorial.levelEditor.intro.content": "Будуйте ігровий світ: розміщуйте та прив’язуйте об’єкти за шарами, малюйте ландшафт, розставляйте сплайни й світло, а потім запікайте карти освітлення.",
|
|
6379
|
+
"tutorial.gameMaterialEditor.intro.title": "Редактор матеріалів",
|
|
6380
|
+
"tutorial.gameMaterialEditor.intro.content": "Створіть шейдер як граф вузлів: додавайте та з’єднуйте вузли шейдера, редагуйте їхні властивості та компілюйте матеріал.",
|
|
6381
|
+
"tutorial.gameParticleEditor.intro.title": "Редактор частинок",
|
|
6382
|
+
"tutorial.gameParticleEditor.intro.content": "Налаштуйте систему частинок в інспекторі — емітер, час життя, криві та рендеринг — і відтворюйте, призупиняйте чи перезапускайте перегляд наживо.",
|
|
6383
|
+
"tutorial.floorPlanEditor.intro.title": "Редактор планів приміщень",
|
|
6384
|
+
"tutorial.floorPlanEditor.intro.content": "Малюйте кімнати та зони інструментами, розміщуйте пристрої на плані, перемикайте поверхи та вмикайте накладки, як-от розміри, сітку й заповненість.",
|
|
6385
|
+
"tutorial.buildingSceneEditor.intro.title": "Редактор сцен",
|
|
6386
|
+
"tutorial.buildingSceneEditor.intro.content": "Створюйте сцени, що налаштовують кілька пристроїв одночасно: виберіть сцену, задайте цільові стани пристроїв, а потім збережіть чи активуйте її.",
|
|
6387
|
+
"tutorial.buildingAutomationEditor.intro.title": "Редактор автоматизації",
|
|
6388
|
+
"tutorial.buildingAutomationEditor.intro.content": "Створюйте автоматизації будівлі: виберіть одну зі списку, визначте її тригери, умови та дії, а потім збережіть, увімкніть чи видаліть її.",
|
|
6389
|
+
"tutorial.spatialEditor.intro.title": "Просторовий редактор",
|
|
6390
|
+
"tutorial.spatialEditor.intro.content": "Проєктуйте плани в різних режимах: малюйте стіни, кімнати й об’єкти інструментами, керуйте шарами, прив’язуйте до сітки, а потім експортуйте.",
|
|
6391
|
+
"tutorial.decisionTreeEditor.intro.title": "Редактор дерева рішень",
|
|
6392
|
+
"tutorial.decisionTreeEditor.intro.content": "Досліджуйте дерево рішень: клацайте вузли, щоб переглянути умови й результати, вмикайте метрики, ймовірності та вибірки й підсвічуйте шлях для заданого входу.",
|
|
6393
|
+
"tutorial.diagramEditor.intro.title": "Редактор діаграм",
|
|
6394
|
+
"tutorial.diagramEditor.intro.content": "Виберіть інструмент, щоб додавати та з’єднувати вузли на полотні, редагуйте їх на панелі властивостей та експортуйте діаграму з панелі інструментів.",
|
|
6395
|
+
"tutorial.contractEditor.intro.title": "Редактор договорів",
|
|
6396
|
+
"tutorial.contractEditor.intro.content": "Складайте договір із бібліотеки пунктів, заповнюйте змінні шаблону, відстежуйте версії та погодження, а потім зберігайте чи експортуйте у PDF/DOCX/HTML.",
|
|
6397
|
+
"tutorial.invoiceDesigner.intro.title": "Дизайнер рахунків",
|
|
6398
|
+
"tutorial.invoiceDesigner.intro.content": "Перетягуйте елементи на полотно рахунка, прив’язуйте їх до полів даних, вирівнюйте за сіткою та лінійками, а потім зберігайте чи експортуйте у PDF.",
|
|
6399
|
+
"tutorial.presentationEditor.intro.title": "Редактор презентацій",
|
|
6400
|
+
"tutorial.presentationEditor.intro.content": "Створюйте слайди зі стрічки мініатюр, додавайте та впорядковуйте елементи на полотні, редагуйте їх на панелі властивостей, а потім демонструйте чи експортуйте.",
|
|
6401
|
+
"tutorial.dashboardStudio.intro.title": "Студія дашбордів",
|
|
6402
|
+
"tutorial.dashboardStudio.intro.content": "Перетягуйте віджети з палітри на сітку, прив’язуйте їх до джерел даних, додавайте фільтри, а потім перемикайте «Редагування/Перегляд», оновлюйте та зберігайте.",
|
|
6403
|
+
"tutorial.biReportBuilder.intro.title": "Конструктор звітів",
|
|
6404
|
+
"tutorial.biReportBuilder.intro.content": "Перетягуйте елементи з палітри у звіт, прив’язуйте їх до джерел даних, перемикайтеся між дизайном/переглядом та експортуйте у PDF або Excel.",
|
|
6405
|
+
"tutorial.etlBuilder.intro.title": "Конструктор ETL",
|
|
6406
|
+
"tutorial.etlBuilder.intro.content": "З’єднайте джерела → перетворення → призначення в конвеєр, перемикайте подання, а потім запустіть його та збережіть конфігурацію.",
|
|
6407
|
+
"tutorial.videoEditorPro.intro.title": "Відеоредактор",
|
|
6408
|
+
"tutorial.videoEditorPro.intro.content": "Додавайте медіа на таймлайн, упорядковуйте та обрізайте кліпи, застосовуйте ефекти й переходи, а потім налаштуйте та запустіть експорт.",
|
|
6409
|
+
"tutorial.mlStudio.intro.title": "Студія ML",
|
|
6410
|
+
"tutorial.mlStudio.intro.content": "Проходьте по вкладках: готуйте набори даних, запускайте експерименти, порівнюйте та обирайте моделі, а потім розгортайте найкращу.",
|
|
6411
|
+
"tutorial.mathEditor.intro.title": "Математичний редактор",
|
|
6412
|
+
"tutorial.mathEditor.intro.content": "Пишіть рівняння у LaTeX або вставляйте символи з палітри; перемикайтеся на рукописне введення та переглядайте відрендерену формулу наживо.",
|
|
6413
|
+
"tutorial.dmxEditor.intro.title": "Редактор DMX",
|
|
6414
|
+
"tutorial.dmxEditor.intro.content": "Виберіть пристрій FTDI та порт, а потім задавайте значення кожного каналу DMX повзунками, щоб керувати освітлювальними приладами наживо.",
|
|
6415
|
+
"nav.help": "Довідка",
|
|
6416
|
+
"navShell.home.title": "Головна",
|
|
6417
|
+
"navShell.help.next": "Далі",
|
|
6418
|
+
"navShell.help.back": "Назад",
|
|
6419
|
+
"navShell.help.finish": "Завершити",
|
|
6420
|
+
"navShell.help.skip": "Пропустити",
|
|
6421
|
+
"navShell.help.stepOf": "з",
|
|
6422
|
+
"navShell.help.topNav.title": "Верхня навігація",
|
|
6423
|
+
"navShell.help.topNav.body": "Використовуйте верхню панель, щоб перемикати робочі простори, шукати, змінювати тему чи мову та відкривати сповіщення.",
|
|
6424
|
+
"navShell.help.sidebar.title": "Бічна панель",
|
|
6425
|
+
"navShell.help.sidebar.body": "Переглядайте доступні подання, згруповані за розділами. Виберіть подання, щоб відкрити його в новій вкладці.",
|
|
6426
|
+
"navShell.help.tabs.title": "Вкладки",
|
|
6427
|
+
"navShell.help.tabs.body": "Кожне відкрите подання живе в окремій вкладці. Закріплюйте часто використовувані та клацайте правою кнопкою для додаткових дій.",
|
|
6428
|
+
"navShell.help.content.title": "Робочий простір",
|
|
6429
|
+
"navShell.help.content.body": "Головна область показує активне подання. Перемикання вкладок або записів бічної панелі змінює вміст тут.",
|
|
6430
|
+
"navShell.home.subtitle": "Продовжте з того місця, де зупинилися.",
|
|
6431
|
+
"navShell.home.empty": "Відкрийте подання з бічної панелі або вкладок угорі, щоб заповнити робочий простір.",
|
|
6432
|
+
"navShell.home.greeting.morning": "Доброго ранку",
|
|
6433
|
+
"navShell.home.greeting.afternoon": "Доброго дня",
|
|
6434
|
+
"navShell.home.greeting.evening": "Доброго вечора",
|
|
6435
|
+
"navShell.home.greeting.night": "Вітаємо",
|
|
6436
|
+
"navShell.home.sections.openTabs": "Зараз відкрито",
|
|
6437
|
+
"navShell.home.sections.shortcuts": "Ваші ярлики",
|
|
6438
|
+
"navShell.home.sections.allViews": "Усі подання",
|
|
6439
|
+
"sidebar.menu.open": "Відкрити",
|
|
6440
|
+
"sidebar.menu.openNewTab": "Відкрити в новій вкладці",
|
|
6441
|
+
"sidebar.menu.openBrowserTab": "Відкрити в новій вкладці браузера",
|
|
6442
|
+
"sidebar.menu.pinFavorite": "Додати до обраного",
|
|
6443
|
+
"sidebar.menu.unpinFavorite": "Прибрати з обраного",
|
|
6444
|
+
"sidebar.menu.hide": "Сховати",
|
|
6445
|
+
"sidebar.menu.copyLink": "Скопіювати посилання",
|
|
6446
|
+
"sidebar.menu.pinSource": "Закріпити джерело",
|
|
6447
|
+
"sidebar.menu.unpinSource": "Відкріпити джерело",
|
|
6448
|
+
"sidebar.menu.hideSource": "Сховати джерело",
|
|
6449
|
+
"sidebar.prefs.general": "Загальні",
|
|
6450
|
+
"sidebar.prefs.display": "Відображення",
|
|
6451
|
+
"sidebar.prefs.order": "Порядок",
|
|
6452
|
+
"sidebar.prefs.hidden": "Приховані елементи",
|
|
6453
|
+
"sidebar.prefs.reset": "Скинути",
|
|
6454
|
+
"sidebar.prefs.general.title": "Загальні",
|
|
6455
|
+
"sidebar.prefs.general.desc": "Поведінка дерева бічної панелі та що робить лівий клік.",
|
|
6456
|
+
"sidebar.prefs.general.autoExpand": "Автоматично розгортати всі гілки",
|
|
6457
|
+
"sidebar.prefs.general.autoExpandHint": "Коли вимкнено, гілки спочатку згорнуті та запам’ятовують останній стан для сеансу.",
|
|
6458
|
+
"sidebar.prefs.general.leftClickBehavior": "Поведінка лівого кліку",
|
|
6459
|
+
"sidebar.prefs.general.focusExisting": "Перейти до наявної вкладки",
|
|
6460
|
+
"sidebar.prefs.general.openNew": "Завжди відкривати в новій вкладці",
|
|
6461
|
+
"sidebar.prefs.general.leftClickHint": "Правий клік → «Відкрити в новій вкладці» завжди доступний, незалежно від цього налаштування.",
|
|
6462
|
+
"sidebar.prefs.display.title": "Відображення",
|
|
6463
|
+
"sidebar.prefs.display.desc": "Які режими з’являються в смузі та наскільки глибоко сягає дерево в кожному режимі.",
|
|
6464
|
+
"sidebar.prefs.display.enableModeIcons": "Показувати іконки перемикача режимів",
|
|
6465
|
+
"sidebar.prefs.display.enabledModes": "Видимі режими",
|
|
6466
|
+
"sidebar.prefs.display.preferencesAlwaysOn": "«Налаштування» показуються завжди.",
|
|
6467
|
+
"sidebar.prefs.display.maxDepth": "Глибина дерева для кожного режиму",
|
|
6468
|
+
"sidebar.prefs.order.title": "Упорядкувати елементи",
|
|
6469
|
+
"sidebar.prefs.order.desc": "Перетягуйте елементи, щоб змінити порядок їх відображення у вибраному режимі.",
|
|
6470
|
+
"sidebar.prefs.order.pickMode": "Режим",
|
|
6471
|
+
"sidebar.prefs.order.visibilityHint": "Порядок застосовується до елементів верхнього рівня в кожній групі джерела. Згорніть заголовок джерела, щоб під час перевірки зміни бачити лише елементи верхнього рівня.",
|
|
6472
|
+
"sidebar.prefs.order.empty": "У цьому режимі немає елементів для впорядкування.",
|
|
6473
|
+
"sidebar.prefs.order.resetMode": "Скинути до типового порядку",
|
|
6474
|
+
"sidebar.prefs.hidden.title": "Приховані елементи",
|
|
6475
|
+
"sidebar.prefs.hidden.desc": "Елементи, які ви сховали з дерева. Відновіть їх, щоб повернути.",
|
|
6476
|
+
"sidebar.prefs.hidden.empty": "Поки нічого не приховано.",
|
|
6477
|
+
"sidebar.prefs.hidden.restore": "Відновити",
|
|
6478
|
+
"sidebar.prefs.reset.title": "Скинути",
|
|
6479
|
+
"sidebar.prefs.reset.desc": "Очистити всі налаштування та відновити початковий вигляд бічної панелі.",
|
|
6480
|
+
"sidebar.prefs.reset.button": "Скинути всі налаштування",
|
|
6481
|
+
"sidebar.prefs.reset.confirm": "Це зітре ваше обране, приховані елементи, власний порядок та всі інші налаштування бічної панелі. Цю дію не можна скасувати.",
|
|
6482
|
+
"sidebar.prefs.reset.confirmYes": "Так, скинути все",
|
|
6483
|
+
"sidebar.prefs.reset.cancel": "Скасувати",
|
|
6484
|
+
"noCode.title": "Студія No-Code",
|
|
6485
|
+
"noCode.description": "Створюйте застосунки візуально",
|
|
6486
|
+
"noCode.newProject": "Новий проєкт",
|
|
6487
|
+
"noCode.openProject": "Відкрити проєкт",
|
|
6488
|
+
"noCode.saveProject": "Зберегти проєкт",
|
|
6489
|
+
"noCode.exportProject": "Експортувати проєкт",
|
|
6490
|
+
"noCode.importProject": "Імпортувати проєкт",
|
|
6491
|
+
"noCode.projectName": "Назва проєкту",
|
|
6492
|
+
"noCode.projectSettings": "Налаштування проєкту",
|
|
6493
|
+
"noCode.recentProjects": "Останні проєкти",
|
|
6494
|
+
"noCode.templates": "Шаблони",
|
|
6495
|
+
"noCode.preview": "Перегляд",
|
|
6496
|
+
"noCode.codeView": "Перегляд коду",
|
|
6497
|
+
"noCode.splitView": "Розділений перегляд",
|
|
6498
|
+
"noCode.visualView": "Візуальний перегляд",
|
|
6499
|
+
"noCode.generate": "Згенерувати код",
|
|
6500
|
+
"noCode.deploy": "Розгорнути",
|
|
6501
|
+
"noCode.componentDesigner.title": "Дизайнер компонентів",
|
|
6502
|
+
"noCode.componentDesigner.newComponent": "Новий компонент",
|
|
6503
|
+
"noCode.componentDesigner.componentName": "Назва компонента",
|
|
6504
|
+
"noCode.componentDesigner.addProp": "Додати prop",
|
|
6505
|
+
"noCode.componentDesigner.editProp": "Редагувати prop",
|
|
6506
|
+
"noCode.componentDesigner.deleteProp": "Видалити prop",
|
|
6507
|
+
"noCode.componentDesigner.propName": "Назва prop",
|
|
6508
|
+
"noCode.componentDesigner.propType": "Тип prop",
|
|
6509
|
+
"noCode.componentDesigner.propRequired": "Обов’язкова",
|
|
6510
|
+
"noCode.componentDesigner.propDefault": "Значення за замовчуванням",
|
|
6511
|
+
"noCode.componentDesigner.addState": "Додати стан",
|
|
6512
|
+
"noCode.componentDesigner.stateName": "Назва стану",
|
|
6513
|
+
"noCode.componentDesigner.stateType": "Тип стану",
|
|
6514
|
+
"noCode.componentDesigner.stateDefault": "Початкове значення",
|
|
6515
|
+
"noCode.componentDesigner.addHook": "Додати hook",
|
|
6516
|
+
"noCode.componentDesigner.hooks": "Hooks",
|
|
6517
|
+
"noCode.componentDesigner.template": "Шаблон",
|
|
6518
|
+
"noCode.componentDesigner.styles": "Стилі",
|
|
6519
|
+
"noCode.componentDesigner.events": "Події",
|
|
6520
|
+
"noCode.componentDesigner.palette": "Палітра компонентів",
|
|
6521
|
+
"noCode.componentDesigner.dragDrop": "Перетягніть компоненти сюди",
|
|
6522
|
+
"noCode.pageBuilder.title": "Конструктор сторінок",
|
|
6523
|
+
"noCode.pageBuilder.newPage": "Нова сторінка",
|
|
6524
|
+
"noCode.pageBuilder.pageName": "Назва сторінки",
|
|
6525
|
+
"noCode.pageBuilder.pageRoute": "Шлях маршруту",
|
|
6526
|
+
"noCode.pageBuilder.addSection": "Додати розділ",
|
|
6527
|
+
"noCode.pageBuilder.editSection": "Редагувати розділ",
|
|
6528
|
+
"noCode.pageBuilder.deleteSection": "Видалити розділ",
|
|
6529
|
+
"noCode.pageBuilder.sectionLayout": "Макет розділу",
|
|
6530
|
+
"noCode.pageBuilder.columns": "Стовпці",
|
|
6531
|
+
"noCode.pageBuilder.responsive": "Адаптивний",
|
|
6532
|
+
"noCode.pageBuilder.mobile": "Мобільний",
|
|
6533
|
+
"noCode.pageBuilder.tablet": "Планшет",
|
|
6534
|
+
"noCode.pageBuilder.desktop": "Комп’ютер",
|
|
6535
|
+
"noCode.pageBuilder.showGrid": "Показати сітку",
|
|
6536
|
+
"noCode.pageBuilder.hideGrid": "Сховати сітку",
|
|
6537
|
+
"noCode.pageBuilder.metadata": "Метадані сторінки",
|
|
6538
|
+
"noCode.pageBuilder.seo": "Налаштування SEO",
|
|
6539
|
+
"noCode.stateDesigner.title": "Дизайнер стану",
|
|
6540
|
+
"noCode.stateDesigner.newStore": "Нове сховище",
|
|
6541
|
+
"noCode.stateDesigner.storeName": "Назва сховища",
|
|
6542
|
+
"noCode.stateDesigner.storeType": "Тип сховища",
|
|
6543
|
+
"noCode.stateDesigner.addState": "Додати поле стану",
|
|
6544
|
+
"noCode.stateDesigner.addAction": "Додати дію",
|
|
6545
|
+
"noCode.stateDesigner.editAction": "Редагувати дію",
|
|
6546
|
+
"noCode.stateDesigner.deleteAction": "Видалити дію",
|
|
6547
|
+
"noCode.stateDesigner.actionName": "Назва дії",
|
|
6548
|
+
"noCode.stateDesigner.actionParams": "Параметри",
|
|
6549
|
+
"noCode.stateDesigner.actionBody": "Тіло дії",
|
|
6550
|
+
"noCode.stateDesigner.asyncAction": "Асинхронна дія",
|
|
6551
|
+
"noCode.stateDesigner.addSelector": "Додати селектор",
|
|
6552
|
+
"noCode.stateDesigner.selectorName": "Назва селектора",
|
|
6553
|
+
"noCode.stateDesigner.selectorBody": "Логіка селектора",
|
|
6554
|
+
"noCode.stateDesigner.persistence": "Збереження",
|
|
6555
|
+
"noCode.stateDesigner.devtools": "DevTools",
|
|
6556
|
+
"noCode.apiFlow.title": "Дизайнер потоків API",
|
|
6557
|
+
"noCode.apiFlow.newEndpoint": "Новий endpoint",
|
|
6558
|
+
"noCode.apiFlow.endpointUrl": "URL endpoint-а",
|
|
6559
|
+
"noCode.apiFlow.method": "HTTP-метод",
|
|
6560
|
+
"noCode.apiFlow.headers": "Заголовки",
|
|
6561
|
+
"noCode.apiFlow.body": "Тіло запиту",
|
|
6562
|
+
"noCode.apiFlow.response": "Відповідь",
|
|
6563
|
+
"noCode.apiFlow.auth": "Автентифікація",
|
|
6564
|
+
"noCode.apiFlow.authType": "Тип автентифікації",
|
|
6565
|
+
"noCode.apiFlow.bearerToken": "Bearer-токен",
|
|
6566
|
+
"noCode.apiFlow.apiKey": "Ключ API",
|
|
6567
|
+
"noCode.apiFlow.testEndpoint": "Тестувати endpoint",
|
|
6568
|
+
"noCode.apiFlow.mockResponse": "Імітована відповідь",
|
|
6569
|
+
"noCode.apiFlow.errorHandling": "Обробка помилок",
|
|
6570
|
+
"noCode.apiFlow.retry": "Політика повторів",
|
|
6571
|
+
"noCode.apiFlow.cache": "Кешування",
|
|
6572
|
+
"noCode.dataMapper.title": "Маппер даних",
|
|
6573
|
+
"noCode.dataMapper.sourceSchema": "Схема джерела",
|
|
6574
|
+
"noCode.dataMapper.targetSchema": "Схема призначення",
|
|
6575
|
+
"noCode.dataMapper.addMapping": "Додати зіставлення",
|
|
6576
|
+
"noCode.dataMapper.editMapping": "Редагувати зіставлення",
|
|
6577
|
+
"noCode.dataMapper.deleteMapping": "Видалити зіставлення",
|
|
6578
|
+
"noCode.dataMapper.sourceField": "Поле джерела",
|
|
6579
|
+
"noCode.dataMapper.targetField": "Поле призначення",
|
|
6580
|
+
"noCode.dataMapper.transform": "Перетворення",
|
|
6581
|
+
"noCode.dataMapper.validation": "Перевірка",
|
|
6582
|
+
"noCode.dataMapper.testData": "Тестові дані",
|
|
6583
|
+
"noCode.dataMapper.preview": "Переглянути результат",
|
|
6584
|
+
"noCode.dataMapper.autoMap": "Автозіставлення",
|
|
6585
|
+
"noCode.eventOrchestrator.title": "Оркестратор подій",
|
|
6586
|
+
"noCode.eventOrchestrator.newFlow": "Новий потік подій",
|
|
6587
|
+
"noCode.eventOrchestrator.flowName": "Назва потоку",
|
|
6588
|
+
"noCode.eventOrchestrator.trigger": "Тригер",
|
|
6589
|
+
"noCode.eventOrchestrator.triggerType": "Тип тригера",
|
|
6590
|
+
"noCode.eventOrchestrator.addHandler": "Додати обробник",
|
|
6591
|
+
"noCode.eventOrchestrator.editHandler": "Редагувати обробник",
|
|
6592
|
+
"noCode.eventOrchestrator.deleteHandler": "Видалити обробник",
|
|
6593
|
+
"noCode.eventOrchestrator.handlerName": "Назва обробника",
|
|
6594
|
+
"noCode.eventOrchestrator.debounce": "Debounce",
|
|
6595
|
+
"noCode.eventOrchestrator.throttle": "Throttle",
|
|
6596
|
+
"noCode.eventOrchestrator.delay": "Затримка",
|
|
6597
|
+
"noCode.eventOrchestrator.condition": "Умова",
|
|
6598
|
+
"noCode.eventOrchestrator.chain": "Ланцюжок подій",
|
|
6599
|
+
"noCode.testBuilder.title": "Конструктор тестів",
|
|
6600
|
+
"noCode.testBuilder.newTest": "Новий тест",
|
|
6601
|
+
"noCode.testBuilder.testName": "Назва тесту",
|
|
6602
|
+
"noCode.testBuilder.testDescription": "Опис",
|
|
6603
|
+
"noCode.testBuilder.addScenario": "Додати сценарій",
|
|
6604
|
+
"noCode.testBuilder.editScenario": "Редагувати сценарій",
|
|
6605
|
+
"noCode.testBuilder.deleteScenario": "Видалити сценарій",
|
|
6606
|
+
"noCode.testBuilder.addAssertion": "Додати перевірку",
|
|
6607
|
+
"noCode.testBuilder.assertionType": "Тип перевірки",
|
|
6608
|
+
"noCode.testBuilder.expected": "Очікуване значення",
|
|
6609
|
+
"noCode.testBuilder.actual": "Фактичне значення",
|
|
6610
|
+
"noCode.testBuilder.mock": "Налаштування mock",
|
|
6611
|
+
"noCode.testBuilder.runTests": "Запустити тести",
|
|
6612
|
+
"noCode.testBuilder.testsPassed": "Тести пройдено",
|
|
6613
|
+
"noCode.testBuilder.testsFailed": "Тести не пройдено",
|
|
6614
|
+
"noCode.testBuilder.coverage": "Покриття",
|
|
6615
|
+
"noCode.testBuilder.accessibility": "Перевірка доступності",
|
|
6616
|
+
"noCode.codeTemplate.title": "Шаблони коду",
|
|
6617
|
+
"noCode.codeTemplate.newTemplate": "Новий шаблон",
|
|
6618
|
+
"noCode.codeTemplate.templateName": "Назва шаблону",
|
|
6619
|
+
"noCode.codeTemplate.templateEngine": "Рушій шаблонів",
|
|
6620
|
+
"noCode.codeTemplate.variables": "Змінні",
|
|
6621
|
+
"noCode.codeTemplate.addVariable": "Додати змінну",
|
|
6622
|
+
"noCode.codeTemplate.variableName": "Назва змінної",
|
|
6623
|
+
"noCode.codeTemplate.variableType": "Тип змінної",
|
|
6624
|
+
"noCode.codeTemplate.variableDefault": "Значення за замовчуванням",
|
|
6625
|
+
"noCode.codeTemplate.generateFiles": "Згенерувати файли",
|
|
6626
|
+
"noCode.codeTemplate.outputPath": "Шлях виводу",
|
|
6627
|
+
"noCode.codeTemplate.presets": "Пресети",
|
|
6628
|
+
"noCode.codeTemplate.presetReact": "Компонент React",
|
|
6629
|
+
"noCode.codeTemplate.presetNextPage": "Сторінка Next.js",
|
|
6630
|
+
"noCode.codeTemplate.presetHook": "Власний hook",
|
|
6631
|
+
"noCode.codeTemplate.presetStore": "Модуль сховища",
|
|
6632
|
+
"noCode.codePreview.title": "Перегляд коду",
|
|
6633
|
+
"noCode.codePreview.showDiff": "Показати відмінності",
|
|
6634
|
+
"noCode.codePreview.hideDiff": "Сховати відмінності",
|
|
6635
|
+
"noCode.codePreview.copyCode": "Скопіювати код",
|
|
6636
|
+
"noCode.codePreview.downloadCode": "Завантажити код",
|
|
6637
|
+
"noCode.codePreview.importCode": "Імпортувати код",
|
|
6638
|
+
"noCode.codePreview.language": "Мова",
|
|
6639
|
+
"noCode.codePreview.format": "Форматувати код",
|
|
6640
|
+
"noCode.codePreview.linesChanged": "Змінені рядки",
|
|
6641
|
+
"noCode.codePreview.noChanges": "Без змін",
|
|
6642
|
+
"vectorEditor.menu.file": "Файл",
|
|
6643
|
+
"vectorEditor.menu.edit": "Редагувати",
|
|
6644
|
+
"vectorEditor.menu.object": "Об’єкт",
|
|
6645
|
+
"vectorEditor.menu.path": "Контур",
|
|
6646
|
+
"vectorEditor.menu.view": "Вигляд",
|
|
6647
|
+
"vectorEditor.menu.newCanvas": "Нове полотно",
|
|
6648
|
+
"vectorEditor.menu.openSvg": "Відкрити SVG…",
|
|
6649
|
+
"vectorEditor.menu.pasteSvg": "Вставити SVG…",
|
|
6650
|
+
"vectorEditor.menu.exportSvg": "Експортувати SVG",
|
|
6651
|
+
"vectorEditor.menu.exportPng": "Експортувати PNG",
|
|
6652
|
+
"vectorEditor.menu.exportJpg": "Експортувати JPG",
|
|
6653
|
+
"vectorEditor.menu.exportWebp": "Експортувати WebP",
|
|
6654
|
+
"vectorEditor.menu.exportBmp": "Експортувати BMP",
|
|
6655
|
+
"vectorEditor.menu.saveToLibrary": "📦 Зберегти в бібліотеку",
|
|
6656
|
+
"vectorEditor.menu.exportIconSnippet": "📋 Експортувати фрагмент іконки",
|
|
6657
|
+
"vectorEditor.menu.exportIcon": "📋 Експортувати іконку",
|
|
6658
|
+
"vectorEditor.menu.undo": "Скасувати (Ctrl+Z)",
|
|
6659
|
+
"vectorEditor.menu.redo": "Повторити (Ctrl+Y)",
|
|
6660
|
+
"vectorEditor.menu.copy": "Копіювати (Ctrl+C)",
|
|
6661
|
+
"vectorEditor.menu.paste": "Вставити (Ctrl+V)",
|
|
6662
|
+
"vectorEditor.menu.duplicate": "Дублювати (Ctrl+D)",
|
|
6663
|
+
"vectorEditor.menu.delete": "Видалити (Del)",
|
|
6664
|
+
"vectorEditor.menu.bringToFront": "На передній план",
|
|
6665
|
+
"vectorEditor.menu.sendToBack": "На задній план",
|
|
6666
|
+
"vectorEditor.menu.flipH": "Віддзеркалити горизонтально",
|
|
6667
|
+
"vectorEditor.menu.flipV": "Віддзеркалити вертикально",
|
|
6668
|
+
"vectorEditor.menu.alignLeft": "Вирівняти ліворуч",
|
|
6669
|
+
"vectorEditor.menu.alignCenter": "Вирівняти по центру",
|
|
6670
|
+
"vectorEditor.menu.alignRight": "Вирівняти праворуч",
|
|
6671
|
+
"vectorEditor.menu.union": "Об’єднання (∪)",
|
|
6672
|
+
"vectorEditor.menu.subtract": "Віднімання (−)",
|
|
6673
|
+
"vectorEditor.menu.intersect": "Перетин (∩)",
|
|
6674
|
+
"vectorEditor.menu.exclude": "Виключення (⊕)",
|
|
6675
|
+
"vectorEditor.menu.outlineStroke": "Контур обведення",
|
|
6676
|
+
"vectorEditor.menu.snapToGrid": "Прив’язати до сітки",
|
|
6677
|
+
"vectorEditor.menu.snap": "Прив’язка",
|
|
6678
|
+
"vectorEditor.menu.secondShape": "2-га фігура",
|
|
6679
|
+
"vectorEditor.tabs.properties": "Властивості",
|
|
6680
|
+
"vectorEditor.tabs.layers": "Шари",
|
|
6681
|
+
"vectorEditor.tabs.library": "Бібліотека",
|
|
6682
|
+
"vectorEditor.tabs.timeline": "Таймлайн",
|
|
6683
|
+
"vectorEditor.timeline.preset": "Пресет",
|
|
6684
|
+
"vectorEditor.timeline.duration": "Тривалість (мс)",
|
|
6685
|
+
"vectorEditor.timeline.repeat": "Повтор",
|
|
6686
|
+
"vectorEditor.timeline.direction": "Напрямок",
|
|
6687
|
+
"vectorEditor.timeline.remove": "Видалити анімацію",
|
|
6688
|
+
"vectorEditor.timeline.play": "Відтворити",
|
|
6689
|
+
"vectorEditor.timeline.pause": "Пауза",
|
|
6690
|
+
"vectorEditor.timeline.stop": "Зупинити",
|
|
6691
|
+
"vectorEditor.timeline.copyCss": "Скопіювати CSS",
|
|
6692
|
+
"vectorEditor.timeline.keyframes": "Ключові кадри",
|
|
6693
|
+
"vectorEditor.timeline.addKeyframe": "+ Додати ключовий кадр",
|
|
6694
|
+
"vectorEditor.timeline.noSelection": "Виберіть фігуру для анімації.",
|
|
6695
|
+
"vectorEditor.timeline.animationTitle": "Анімація",
|
|
6696
|
+
"vectorEditor.timeline.playbackTitle": "Відтворення",
|
|
6697
|
+
"vectorEditor.timeline.attachHint": "Виберіть фігуру, щоб додати анімацію.",
|
|
6698
|
+
"vectorEditor.timeline.playLabel": "▶ Відтворити",
|
|
6699
|
+
"vectorEditor.timeline.pauseLabel": "⏸ Пауза",
|
|
6700
|
+
"vectorEditor.timeline.stopLabel": "⏹ Зупинити",
|
|
6701
|
+
"vectorEditor.timeline.copyCssKeyframes": "📋 Скопіювати CSS keyframes",
|
|
6702
|
+
"vectorEditor.timeline.tLabel": "t",
|
|
6703
|
+
"vectorEditor.layers.empty": "Поки немає шарів. Використовуйте інструменти для малювання або вставте з вкладки «Бібліотека».",
|
|
6704
|
+
"vectorEditor.layers.moveUp": "Підняти",
|
|
6705
|
+
"vectorEditor.layers.moveDown": "Опустити",
|
|
6706
|
+
"vectorEditor.library.passProp": "Передайте prop library у NiceVectorEditor, щоб заповнити цю вкладку іконками для вставлення.",
|
|
6707
|
+
"vectorEditor.statusBar.zoom": "Масштаб",
|
|
6708
|
+
"vectorEditor.statusBar.shapes": "фігур(и)",
|
|
6709
|
+
"vectorEditor.statusBar.selected": "Вибрано",
|
|
6710
|
+
"vectorEditor.statusBar.snap": "Прив’язка",
|
|
6711
|
+
"vectorEditor.library.empty": "У бібліотеці немає іконок.",
|
|
6712
|
+
"vectorEditor.snippet.title": "✅ Фрагмент іконки скопійовано в буфер обміну",
|
|
6713
|
+
"vectorEditor.snippet.pasteHint": "Вставити в",
|
|
6714
|
+
"vectorEditor.snippet.copyAgain": "Скопіювати ще раз",
|
|
6715
|
+
"vectorEditor.snippet.close": "Закрити",
|
|
6716
|
+
"vectorEditor.properties.appearance": "Вигляд",
|
|
6717
|
+
"vectorEditor.properties.fill": "Заливка",
|
|
6718
|
+
"vectorEditor.properties.solid": "Суцільний",
|
|
6719
|
+
"vectorEditor.properties.gradient": "Градієнт",
|
|
6720
|
+
"vectorEditor.properties.hideEditor": "▼ Сховати редактор",
|
|
6721
|
+
"vectorEditor.properties.editGradient": "► Редагувати градієнт",
|
|
6722
|
+
"vectorEditor.properties.type": "Тип",
|
|
6723
|
+
"vectorEditor.properties.linear": "Лінійний",
|
|
6724
|
+
"vectorEditor.properties.radial": "Радіальний",
|
|
6725
|
+
"vectorEditor.properties.angle": "Кут",
|
|
6726
|
+
"vectorEditor.properties.cx": "CX",
|
|
6727
|
+
"vectorEditor.properties.cy": "CY",
|
|
6728
|
+
"vectorEditor.properties.r": "R",
|
|
6729
|
+
"vectorEditor.properties.colorStops": "Точки кольору:",
|
|
6730
|
+
"vectorEditor.properties.addStop": "+ Додати точку",
|
|
6731
|
+
"vectorEditor.properties.removeStop": "- Видалити",
|
|
6732
|
+
"vectorEditor.properties.stroke": "Обведення",
|
|
6733
|
+
"vectorEditor.properties.width": "Товщина",
|
|
6734
|
+
"vectorEditor.properties.opacity": "Прозорість",
|
|
6735
|
+
"vectorEditor.properties.rotation": "Обертання",
|
|
6736
|
+
"vectorEditor.properties.toolOptions": "Параметри інструмента",
|
|
6737
|
+
"vectorEditor.properties.radius": "Радіус",
|
|
6738
|
+
"vectorEditor.properties.sides": "Сторони",
|
|
6739
|
+
"vectorEditor.properties.points": "Точки",
|
|
6740
|
+
"vectorEditor.properties.innerR": "Внутрішній R",
|
|
6741
|
+
"vectorEditor.properties.size": "Розмір",
|
|
6742
|
+
"vectorEditor.properties.font": "Шрифт",
|
|
6743
|
+
"vectorEditor.properties.grid": "Сітка",
|
|
6744
|
+
"vectorEditor.properties.transform": "Перетворення",
|
|
6745
|
+
"vectorEditor.properties.x": "X",
|
|
6746
|
+
"vectorEditor.properties.y": "Y",
|
|
6747
|
+
"vectorEditor.properties.w": "Ш",
|
|
6748
|
+
"vectorEditor.properties.h": "В",
|
|
6749
|
+
"vectorEditor.layers.title": "Шари",
|
|
6750
|
+
"vectorEditor.layers.show": "Показати",
|
|
6751
|
+
"vectorEditor.layers.hide": "Сховати",
|
|
6752
|
+
"vectorEditor.layers.lock": "Заблокувати",
|
|
6753
|
+
"vectorEditor.layers.unlock": "Розблокувати"
|
|
5046
6754
|
}, Ie = {
|
|
5047
6755
|
ok: "OK",
|
|
5048
6756
|
cancel: "キャンセル",
|
|
@@ -5406,7 +7114,7 @@ const j = [
|
|
|
5406
7114
|
"wm.minimizeAll": "すべて最小化",
|
|
5407
7115
|
"wm.newWindow": "新しいウィンドウ",
|
|
5408
7116
|
"wm.moveToFront": "最前面に移動"
|
|
5409
|
-
},
|
|
7117
|
+
}, Ve = {
|
|
5410
7118
|
ok: "확인",
|
|
5411
7119
|
cancel: "취소",
|
|
5412
7120
|
save: "저장",
|
|
@@ -5769,7 +7477,7 @@ const j = [
|
|
|
5769
7477
|
"wm.minimizeAll": "모두 최소화",
|
|
5770
7478
|
"wm.newWindow": "새 창",
|
|
5771
7479
|
"wm.moveToFront": "맨 앞으로"
|
|
5772
|
-
},
|
|
7480
|
+
}, He = {
|
|
5773
7481
|
ok: "确定",
|
|
5774
7482
|
cancel: "取消",
|
|
5775
7483
|
save: "保存",
|
|
@@ -6132,7 +7840,7 @@ const j = [
|
|
|
6132
7840
|
"wm.minimizeAll": "最小化全部",
|
|
6133
7841
|
"wm.newWindow": "新建窗口",
|
|
6134
7842
|
"wm.moveToFront": "置于最前"
|
|
6135
|
-
},
|
|
7843
|
+
}, We = {
|
|
6136
7844
|
ok: "حسناً",
|
|
6137
7845
|
cancel: "إلغاء",
|
|
6138
7846
|
save: "حفظ",
|
|
@@ -6495,7 +8203,7 @@ const j = [
|
|
|
6495
8203
|
"wm.minimizeAll": "تصغير الكل",
|
|
6496
8204
|
"wm.newWindow": "نافذة جديدة",
|
|
6497
8205
|
"wm.moveToFront": "نقل إلى الأمام"
|
|
6498
|
-
},
|
|
8206
|
+
}, qe = {
|
|
6499
8207
|
ok: "ठीक है",
|
|
6500
8208
|
cancel: "रद्द करें",
|
|
6501
8209
|
save: "सहेजें",
|
|
@@ -6506,7 +8214,7 @@ const j = [
|
|
|
6506
8214
|
error: "त्रुटि",
|
|
6507
8215
|
success: "सफलता",
|
|
6508
8216
|
search: "खोजें"
|
|
6509
|
-
},
|
|
8217
|
+
}, Ue = {
|
|
6510
8218
|
ok: "ঠিক আছে",
|
|
6511
8219
|
cancel: "বাতিল",
|
|
6512
8220
|
save: "সংরক্ষণ",
|
|
@@ -6517,7 +8225,7 @@ const j = [
|
|
|
6517
8225
|
error: "ত্রুটি",
|
|
6518
8226
|
success: "সফল",
|
|
6519
8227
|
search: "অনুসন্ধান"
|
|
6520
|
-
},
|
|
8228
|
+
}, Ke = {
|
|
6521
8229
|
ok: "ตกลง",
|
|
6522
8230
|
cancel: "ยกเลิก",
|
|
6523
8231
|
save: "บันทึก",
|
|
@@ -6528,7 +8236,7 @@ const j = [
|
|
|
6528
8236
|
error: "ข้อผิดพลาด",
|
|
6529
8237
|
success: "สำเร็จ",
|
|
6530
8238
|
search: "ค้นหา"
|
|
6531
|
-
},
|
|
8239
|
+
}, Ge = {
|
|
6532
8240
|
ok: "OK",
|
|
6533
8241
|
cancel: "Hủy",
|
|
6534
8242
|
save: "Lưu",
|
|
@@ -6539,7 +8247,7 @@ const j = [
|
|
|
6539
8247
|
error: "Lỗi",
|
|
6540
8248
|
success: "Thành công",
|
|
6541
8249
|
search: "Tìm kiếm"
|
|
6542
|
-
},
|
|
8250
|
+
}, Ze = {
|
|
6543
8251
|
ok: "OK",
|
|
6544
8252
|
cancel: "Batal",
|
|
6545
8253
|
save: "Simpan",
|
|
@@ -6572,7 +8280,7 @@ const j = [
|
|
|
6572
8280
|
error: "Error",
|
|
6573
8281
|
success: "Tagumpay",
|
|
6574
8282
|
search: "Maghanap"
|
|
6575
|
-
},
|
|
8283
|
+
}, Xe = {
|
|
6576
8284
|
ok: "OK",
|
|
6577
8285
|
cancel: "Batal",
|
|
6578
8286
|
save: "Simpan",
|
|
@@ -6583,37 +8291,37 @@ const j = [
|
|
|
6583
8291
|
error: "Ralat",
|
|
6584
8292
|
success: "Berjaya",
|
|
6585
8293
|
search: "Cari"
|
|
6586
|
-
},
|
|
6587
|
-
en:
|
|
6588
|
-
pl:
|
|
6589
|
-
de:
|
|
6590
|
-
fr:
|
|
6591
|
-
es:
|
|
8294
|
+
}, w = {
|
|
8295
|
+
en: Ee,
|
|
8296
|
+
pl: ye,
|
|
8297
|
+
de: ze,
|
|
8298
|
+
fr: Ce,
|
|
8299
|
+
es: Se,
|
|
6592
8300
|
it: De,
|
|
6593
|
-
pt:
|
|
6594
|
-
nl:
|
|
6595
|
-
sv:
|
|
6596
|
-
no:
|
|
6597
|
-
da:
|
|
6598
|
-
fi:
|
|
8301
|
+
pt: je,
|
|
8302
|
+
nl: Ae,
|
|
8303
|
+
sv: Pe,
|
|
8304
|
+
no: xe,
|
|
8305
|
+
da: Te,
|
|
8306
|
+
fi: Be,
|
|
6599
8307
|
cs: Fe,
|
|
6600
8308
|
sk: Me,
|
|
6601
|
-
hu:
|
|
8309
|
+
hu: Ne,
|
|
6602
8310
|
ro: Re,
|
|
6603
8311
|
bg: Le,
|
|
6604
|
-
uk:
|
|
8312
|
+
uk: Oe,
|
|
6605
8313
|
ja: Ie,
|
|
6606
|
-
ko:
|
|
6607
|
-
zh:
|
|
6608
|
-
ar:
|
|
6609
|
-
hi:
|
|
6610
|
-
bn:
|
|
6611
|
-
th:
|
|
6612
|
-
vi:
|
|
6613
|
-
id:
|
|
8314
|
+
ko: Ve,
|
|
8315
|
+
zh: He,
|
|
8316
|
+
ar: We,
|
|
8317
|
+
hi: qe,
|
|
8318
|
+
bn: Ue,
|
|
8319
|
+
th: Ke,
|
|
8320
|
+
vi: Ge,
|
|
8321
|
+
id: Ze,
|
|
6614
8322
|
sw: Je,
|
|
6615
8323
|
fil: Ye,
|
|
6616
|
-
ms:
|
|
8324
|
+
ms: Xe
|
|
6617
8325
|
}, Y = {
|
|
6618
8326
|
save: "Zapisz",
|
|
6619
8327
|
cancel: "Anuluj",
|
|
@@ -6638,7 +8346,7 @@ const j = [
|
|
|
6638
8346
|
"form.invalidValue": "Proszę podać prawidłową wartość.",
|
|
6639
8347
|
"auth.signIn": "Proszę się zalogować",
|
|
6640
8348
|
"auth.signOut": "Proszę się wylogować"
|
|
6641
|
-
},
|
|
8349
|
+
}, X = {
|
|
6642
8350
|
save: "Zapisz",
|
|
6643
8351
|
cancel: "Anuluj",
|
|
6644
8352
|
ok: "OK",
|
|
@@ -6662,62 +8370,62 @@ const j = [
|
|
|
6662
8370
|
"form.invalidValue": "Wpisz prawidłową wartość.",
|
|
6663
8371
|
"auth.signIn": "Zaloguj się",
|
|
6664
8372
|
"auth.signOut": "Wyloguj się"
|
|
6665
|
-
},
|
|
6666
|
-
"pl-PL": { formal: Y, informal:
|
|
6667
|
-
pl: { formal: Y, informal:
|
|
8373
|
+
}, $e = {
|
|
8374
|
+
"pl-PL": { formal: Y, informal: X },
|
|
8375
|
+
pl: { formal: Y, informal: X }
|
|
6668
8376
|
};
|
|
6669
|
-
function
|
|
6670
|
-
var
|
|
6671
|
-
return { ...
|
|
8377
|
+
function Kt(e) {
|
|
8378
|
+
var t;
|
|
8379
|
+
return { ...w.pl, ...((t = $e.pl) == null ? void 0 : t[e]) ?? {} };
|
|
6672
8380
|
}
|
|
6673
|
-
const
|
|
8381
|
+
const _e = (e, t) => t, te = I(_e), Gt = ({
|
|
6674
8382
|
t: e,
|
|
6675
|
-
lang:
|
|
8383
|
+
lang: t = "en",
|
|
6676
8384
|
overrides: r,
|
|
6677
|
-
children:
|
|
8385
|
+
children: o
|
|
6678
8386
|
}) => {
|
|
6679
|
-
const
|
|
8387
|
+
const i = b(() => {
|
|
6680
8388
|
if (e)
|
|
6681
8389
|
return e;
|
|
6682
|
-
const
|
|
6683
|
-
return (s,
|
|
6684
|
-
}, [e,
|
|
6685
|
-
return /* @__PURE__ */
|
|
8390
|
+
const a = w[t] ?? w.en, n = r ? { ...a, ...r } : a;
|
|
8391
|
+
return (s, l) => n[s] ?? l;
|
|
8392
|
+
}, [e, t, r]);
|
|
8393
|
+
return /* @__PURE__ */ O(te.Provider, { value: i, children: o });
|
|
6686
8394
|
};
|
|
6687
|
-
function
|
|
6688
|
-
return { t:
|
|
8395
|
+
function Zt() {
|
|
8396
|
+
return { t: B(te) };
|
|
6689
8397
|
}
|
|
6690
|
-
function
|
|
6691
|
-
const r =
|
|
6692
|
-
return (
|
|
8398
|
+
function Jt(e = "en", t) {
|
|
8399
|
+
const r = w[e] ?? w.en, o = t ? { ...r, ...t } : r;
|
|
8400
|
+
return (i, a) => o[i] ?? a;
|
|
6693
8401
|
}
|
|
6694
|
-
function
|
|
6695
|
-
let r = e.replace(/\{(\w+)\}/g, (
|
|
6696
|
-
const
|
|
6697
|
-
return
|
|
8402
|
+
function Yt(e, t = {}) {
|
|
8403
|
+
let r = e.replace(/\{(\w+)\}/g, (o, i) => {
|
|
8404
|
+
const a = t[i];
|
|
8405
|
+
return a !== void 0 ? String(a) : o;
|
|
6698
8406
|
});
|
|
6699
8407
|
return r = r.replace(
|
|
6700
8408
|
/\{(\w+),\s*plural,\s*one\{([^}]+)\}\s*other\{([^}]+)\}\}/g,
|
|
6701
|
-
(
|
|
6702
|
-
const s =
|
|
6703
|
-
return typeof s != "number" ?
|
|
8409
|
+
(o, i, a, n) => {
|
|
8410
|
+
const s = t[i];
|
|
8411
|
+
return typeof s != "number" ? o : (s === 1 ? a : n).replace(/#/g, String(s));
|
|
6704
8412
|
}
|
|
6705
8413
|
), r;
|
|
6706
8414
|
}
|
|
6707
|
-
function
|
|
6708
|
-
return
|
|
8415
|
+
function Qe(e) {
|
|
8416
|
+
return T.includes(e);
|
|
6709
8417
|
}
|
|
6710
|
-
function
|
|
6711
|
-
var
|
|
8418
|
+
function Xt() {
|
|
8419
|
+
var t;
|
|
6712
8420
|
if (typeof navigator > "u")
|
|
6713
8421
|
return "en";
|
|
6714
|
-
const e = (
|
|
6715
|
-
return
|
|
8422
|
+
const e = (t = navigator.language) == null ? void 0 : t.split("-")[0];
|
|
8423
|
+
return Qe(e) ? e : "en";
|
|
6716
8424
|
}
|
|
6717
|
-
function
|
|
6718
|
-
var
|
|
6719
|
-
const r = Math.abs(e),
|
|
6720
|
-
switch (
|
|
8425
|
+
function oe(e, t) {
|
|
8426
|
+
var a;
|
|
8427
|
+
const r = Math.abs(e), o = Math.floor(r), i = e.toString().includes(".") && ((a = e.toString().split(".")[1]) == null ? void 0 : a.length) || 0;
|
|
8428
|
+
switch (i > 0 && parseInt(e.toString().split(".")[1] || "0", 10), t) {
|
|
6721
8429
|
// ── English-like (one/other) ───────────────────────────
|
|
6722
8430
|
case "en":
|
|
6723
8431
|
case "de":
|
|
@@ -6729,29 +8437,29 @@ function te(e, o) {
|
|
|
6729
8437
|
case "it":
|
|
6730
8438
|
case "es":
|
|
6731
8439
|
case "pt":
|
|
6732
|
-
return
|
|
8440
|
+
return o === 1 && i === 0 ? "one" : "other";
|
|
6733
8441
|
// ── French (one/many/other) ────────────────────────────
|
|
6734
8442
|
case "fr":
|
|
6735
|
-
return
|
|
8443
|
+
return o === 0 || o === 1 ? "one" : r >= 1e6 ? "many" : "other";
|
|
6736
8444
|
// ── Polish (Slavic: one/few/many/other) ────────────────
|
|
6737
8445
|
case "pl":
|
|
6738
|
-
return
|
|
8446
|
+
return o === 1 && i === 0 ? "one" : i === 0 && o % 10 >= 2 && o % 10 <= 4 && !(o % 100 >= 12 && o % 100 <= 14) ? "few" : i === 0 && o !== 1 && (o % 10 === 0 || o % 10 === 1) || i === 0 && o % 10 >= 5 && o % 10 <= 9 || i === 0 && o % 100 >= 12 && o % 100 <= 14 ? "many" : "other";
|
|
6739
8447
|
// ── Ukrainian (Slavic: one/few/many/other) ─────────────
|
|
6740
8448
|
case "uk":
|
|
6741
|
-
return
|
|
8449
|
+
return i === 0 && o % 10 === 1 && o % 100 !== 11 ? "one" : i === 0 && o % 10 >= 2 && o % 10 <= 4 && !(o % 100 >= 12 && o % 100 <= 14) ? "few" : i === 0 && o % 10 === 0 || i === 0 && o % 10 >= 5 && o % 10 <= 9 || i === 0 && o % 100 >= 11 && o % 100 <= 14 ? "many" : "other";
|
|
6742
8450
|
// ── Bulgarian (one/other) ──────────────────────────────
|
|
6743
8451
|
case "bg":
|
|
6744
8452
|
return e === 1 ? "one" : "other";
|
|
6745
8453
|
// ── Czech/Slovak (Slavic: one/few/many/other) ──────────
|
|
6746
8454
|
case "cs":
|
|
6747
8455
|
case "sk":
|
|
6748
|
-
return
|
|
8456
|
+
return o === 1 && i === 0 ? "one" : o >= 2 && o <= 4 && i === 0 ? "few" : i !== 0 ? "many" : "other";
|
|
6749
8457
|
// ── Hungarian (one/other) ──────────────────────────────
|
|
6750
8458
|
case "hu":
|
|
6751
8459
|
return e === 1 ? "one" : "other";
|
|
6752
8460
|
// ── Romanian (one/few/other) ───────────────────────────
|
|
6753
8461
|
case "ro":
|
|
6754
|
-
return
|
|
8462
|
+
return o === 1 && i === 0 ? "one" : i !== 0 || e === 0 || e % 100 >= 2 && e % 100 <= 19 ? "few" : "other";
|
|
6755
8463
|
// ── Japanese/Korean/Chinese (other only) ─────────────────
|
|
6756
8464
|
case "ja":
|
|
6757
8465
|
case "ko":
|
|
@@ -6765,20 +8473,20 @@ function te(e, o) {
|
|
|
6765
8473
|
return "one";
|
|
6766
8474
|
if (e === 2)
|
|
6767
8475
|
return "two";
|
|
6768
|
-
const
|
|
6769
|
-
return
|
|
8476
|
+
const n = e % 100;
|
|
8477
|
+
return n >= 3 && n <= 10 ? "few" : n >= 11 && n <= 99 ? "many" : "other";
|
|
6770
8478
|
}
|
|
6771
8479
|
default:
|
|
6772
8480
|
if (typeof Intl < "u" && typeof Intl.PluralRules == "function")
|
|
6773
8481
|
try {
|
|
6774
|
-
return new Intl.PluralRules(
|
|
8482
|
+
return new Intl.PluralRules(t).select(e);
|
|
6775
8483
|
} catch {
|
|
6776
8484
|
}
|
|
6777
|
-
return
|
|
8485
|
+
return o === 1 && i === 0 ? "one" : "other";
|
|
6778
8486
|
}
|
|
6779
8487
|
}
|
|
6780
|
-
function re(e,
|
|
6781
|
-
switch (
|
|
8488
|
+
function re(e, t) {
|
|
8489
|
+
switch (t) {
|
|
6782
8490
|
// ── English ────────────────────────────────────────────
|
|
6783
8491
|
case "en":
|
|
6784
8492
|
return e % 10 === 1 && e % 100 !== 11 ? "one" : e % 10 === 2 && e % 100 !== 12 ? "two" : e % 10 === 3 && e % 100 !== 13 ? "few" : "other";
|
|
@@ -6805,149 +8513,149 @@ function re(e, o) {
|
|
|
6805
8513
|
default:
|
|
6806
8514
|
if (typeof Intl < "u" && typeof Intl.PluralRules == "function")
|
|
6807
8515
|
try {
|
|
6808
|
-
return new Intl.PluralRules(
|
|
8516
|
+
return new Intl.PluralRules(t, { type: "ordinal" }).select(e);
|
|
6809
8517
|
} catch {
|
|
6810
8518
|
}
|
|
6811
8519
|
return "other";
|
|
6812
8520
|
}
|
|
6813
8521
|
}
|
|
6814
|
-
function
|
|
6815
|
-
var
|
|
8522
|
+
function et(e) {
|
|
8523
|
+
var i;
|
|
6816
8524
|
if (e = e.trim(), !e.includes(","))
|
|
6817
8525
|
return { type: "simple", name: e };
|
|
6818
|
-
const
|
|
6819
|
-
if (!
|
|
8526
|
+
const t = e.split(",").map((a) => a.trim()), r = t[0], o = (i = t[1]) == null ? void 0 : i.toLowerCase();
|
|
8527
|
+
if (!o || !r)
|
|
6820
8528
|
return null;
|
|
6821
|
-
if (
|
|
6822
|
-
return { type: "number", name: r, style:
|
|
6823
|
-
if (
|
|
6824
|
-
return { type:
|
|
6825
|
-
if (
|
|
6826
|
-
const
|
|
6827
|
-
let
|
|
6828
|
-
for (; (
|
|
6829
|
-
|
|
6830
|
-
return { type:
|
|
8529
|
+
if (o === "number")
|
|
8530
|
+
return { type: "number", name: r, style: t[2] };
|
|
8531
|
+
if (o === "date" || o === "time")
|
|
8532
|
+
return { type: o, name: r, style: t[2] || "medium" };
|
|
8533
|
+
if (o === "plural" || o === "select" || o === "selectordinal") {
|
|
8534
|
+
const a = t.slice(2).join(",").trim(), n = {}, s = /(=?\w+)\s*\{([^{}]*(?:\{[^{}]*\}[^{}]*)*)\}/g;
|
|
8535
|
+
let l;
|
|
8536
|
+
for (; (l = s.exec(a)) !== null; )
|
|
8537
|
+
n[l[1]] = l[2];
|
|
8538
|
+
return { type: o, name: r, options: n };
|
|
6831
8539
|
}
|
|
6832
8540
|
return { type: "simple", name: r };
|
|
6833
8541
|
}
|
|
6834
|
-
function
|
|
6835
|
-
const
|
|
8542
|
+
function tt(e, t, r) {
|
|
8543
|
+
const o = {};
|
|
6836
8544
|
switch (r) {
|
|
6837
8545
|
case "currency":
|
|
6838
|
-
|
|
8546
|
+
o.style = "currency", o.currency = "USD";
|
|
6839
8547
|
break;
|
|
6840
8548
|
case "percent":
|
|
6841
|
-
|
|
8549
|
+
o.style = "percent";
|
|
6842
8550
|
break;
|
|
6843
8551
|
case "integer":
|
|
6844
|
-
|
|
8552
|
+
o.maximumFractionDigits = 0;
|
|
6845
8553
|
break;
|
|
6846
8554
|
}
|
|
6847
|
-
return new Intl.NumberFormat(
|
|
8555
|
+
return new Intl.NumberFormat(t, o).format(e);
|
|
6848
8556
|
}
|
|
6849
|
-
function
|
|
6850
|
-
const
|
|
6851
|
-
let
|
|
8557
|
+
function ot(e, t, r) {
|
|
8558
|
+
const o = e instanceof Date ? e : new Date(e);
|
|
8559
|
+
let i;
|
|
6852
8560
|
switch (r) {
|
|
6853
8561
|
case "short":
|
|
6854
|
-
|
|
8562
|
+
i = { dateStyle: "short" };
|
|
6855
8563
|
break;
|
|
6856
8564
|
case "long":
|
|
6857
|
-
|
|
8565
|
+
i = { dateStyle: "long" };
|
|
6858
8566
|
break;
|
|
6859
8567
|
case "full":
|
|
6860
|
-
|
|
8568
|
+
i = { dateStyle: "full" };
|
|
6861
8569
|
break;
|
|
6862
8570
|
case "medium":
|
|
6863
8571
|
default:
|
|
6864
|
-
|
|
8572
|
+
i = { dateStyle: "medium" };
|
|
6865
8573
|
break;
|
|
6866
8574
|
}
|
|
6867
|
-
return new Intl.DateTimeFormat(
|
|
8575
|
+
return new Intl.DateTimeFormat(t, i).format(o);
|
|
6868
8576
|
}
|
|
6869
|
-
function
|
|
6870
|
-
const
|
|
6871
|
-
let
|
|
8577
|
+
function rt(e, t, r) {
|
|
8578
|
+
const o = e instanceof Date ? e : new Date(e);
|
|
8579
|
+
let i;
|
|
6872
8580
|
switch (r) {
|
|
6873
8581
|
case "short":
|
|
6874
|
-
|
|
8582
|
+
i = { timeStyle: "short" };
|
|
6875
8583
|
break;
|
|
6876
8584
|
case "long":
|
|
6877
|
-
|
|
8585
|
+
i = { timeStyle: "long" };
|
|
6878
8586
|
break;
|
|
6879
8587
|
case "full":
|
|
6880
|
-
|
|
8588
|
+
i = { timeStyle: "full" };
|
|
6881
8589
|
break;
|
|
6882
8590
|
case "medium":
|
|
6883
8591
|
default:
|
|
6884
|
-
|
|
8592
|
+
i = { timeStyle: "medium" };
|
|
6885
8593
|
break;
|
|
6886
8594
|
}
|
|
6887
|
-
return new Intl.DateTimeFormat(
|
|
8595
|
+
return new Intl.DateTimeFormat(t, i).format(o);
|
|
6888
8596
|
}
|
|
6889
|
-
function
|
|
8597
|
+
function H(e, t, r) {
|
|
6890
8598
|
return e.replace(/#/g, String(r));
|
|
6891
8599
|
}
|
|
6892
|
-
function
|
|
6893
|
-
const
|
|
6894
|
-
return e.replace(
|
|
6895
|
-
const
|
|
6896
|
-
if (!
|
|
6897
|
-
return
|
|
6898
|
-
const
|
|
6899
|
-
if (
|
|
6900
|
-
return
|
|
6901
|
-
switch (
|
|
8600
|
+
function it(e, t = {}, r = {}) {
|
|
8601
|
+
const o = r.lang || "en", i = r.locale || o, a = /\{([^{}]*(?:\{[^{}]*\}[^{}]*)*)\}/g;
|
|
8602
|
+
return e.replace(a, (n, s) => {
|
|
8603
|
+
const l = et(s);
|
|
8604
|
+
if (!l)
|
|
8605
|
+
return n;
|
|
8606
|
+
const d = t[l.name];
|
|
8607
|
+
if (d === void 0)
|
|
8608
|
+
return n;
|
|
8609
|
+
switch (l.type) {
|
|
6902
8610
|
case "simple":
|
|
6903
|
-
return String(
|
|
8611
|
+
return String(d);
|
|
6904
8612
|
case "number":
|
|
6905
|
-
return typeof
|
|
8613
|
+
return typeof d != "number" ? n : tt(d, i, l.style);
|
|
6906
8614
|
case "date":
|
|
6907
|
-
return
|
|
8615
|
+
return ot(d, i, l.style);
|
|
6908
8616
|
case "time":
|
|
6909
|
-
return
|
|
8617
|
+
return rt(d, i, l.style);
|
|
6910
8618
|
case "plural": {
|
|
6911
|
-
if (typeof
|
|
6912
|
-
return
|
|
6913
|
-
const
|
|
6914
|
-
return
|
|
8619
|
+
if (typeof d != "number" || !l.options)
|
|
8620
|
+
return n;
|
|
8621
|
+
const u = oe(d, o), v = `=${d}`, p = l.options[v] ?? l.options[u] ?? l.options.other ?? "";
|
|
8622
|
+
return H(p, l.name, d);
|
|
6915
8623
|
}
|
|
6916
8624
|
case "selectordinal": {
|
|
6917
|
-
if (typeof
|
|
6918
|
-
return
|
|
6919
|
-
const
|
|
6920
|
-
return
|
|
8625
|
+
if (typeof d != "number" || !l.options)
|
|
8626
|
+
return n;
|
|
8627
|
+
const u = re(d, o), v = l.options[u] ?? l.options.other ?? "";
|
|
8628
|
+
return H(v, l.name, d);
|
|
6921
8629
|
}
|
|
6922
8630
|
case "select": {
|
|
6923
|
-
if (!
|
|
6924
|
-
return
|
|
6925
|
-
const
|
|
6926
|
-
return
|
|
8631
|
+
if (!l.options)
|
|
8632
|
+
return n;
|
|
8633
|
+
const u = l.options[String(d)] ?? l.options.other ?? "";
|
|
8634
|
+
return H(u, l.name, d);
|
|
6927
8635
|
}
|
|
6928
8636
|
default:
|
|
6929
|
-
return
|
|
8637
|
+
return n;
|
|
6930
8638
|
}
|
|
6931
8639
|
});
|
|
6932
8640
|
}
|
|
6933
|
-
function
|
|
6934
|
-
return function(
|
|
6935
|
-
const
|
|
6936
|
-
return
|
|
8641
|
+
function $t(e, t = "en") {
|
|
8642
|
+
return function(o, i, a) {
|
|
8643
|
+
const n = e[o] ?? i;
|
|
8644
|
+
return a ? it(n, a, { lang: t }) : n;
|
|
6937
8645
|
};
|
|
6938
8646
|
}
|
|
6939
|
-
function
|
|
6940
|
-
const
|
|
6941
|
-
return (o
|
|
8647
|
+
function _t(e, t, r = "en") {
|
|
8648
|
+
const o = oe(e, r);
|
|
8649
|
+
return (t[o] ?? t.other).replace(/#/g, String(e));
|
|
6942
8650
|
}
|
|
6943
|
-
function
|
|
6944
|
-
const
|
|
6945
|
-
return (o
|
|
8651
|
+
function Qt(e, t, r = "en") {
|
|
8652
|
+
const o = re(e, r);
|
|
8653
|
+
return (t[o] ?? t.other).replace(/#/g, String(e));
|
|
6946
8654
|
}
|
|
6947
|
-
function
|
|
6948
|
-
return
|
|
8655
|
+
function eo(e, t) {
|
|
8656
|
+
return t[e] ?? t.other;
|
|
6949
8657
|
}
|
|
6950
|
-
const
|
|
8658
|
+
const at = [
|
|
6951
8659
|
"ar",
|
|
6952
8660
|
// Arabic
|
|
6953
8661
|
"he",
|
|
@@ -6961,29 +8669,29 @@ const no = [
|
|
|
6961
8669
|
"ps"
|
|
6962
8670
|
// Pashto
|
|
6963
8671
|
];
|
|
6964
|
-
function
|
|
6965
|
-
return
|
|
8672
|
+
function ie(e) {
|
|
8673
|
+
return at.includes(e);
|
|
6966
8674
|
}
|
|
6967
|
-
function
|
|
6968
|
-
return
|
|
8675
|
+
function nt(e) {
|
|
8676
|
+
return ie(e) ? "rtl" : "ltr";
|
|
6969
8677
|
}
|
|
6970
|
-
function
|
|
8678
|
+
function st(e) {
|
|
6971
8679
|
if (typeof document > "u")
|
|
6972
8680
|
return;
|
|
6973
|
-
const
|
|
6974
|
-
document.documentElement.setAttribute("dir",
|
|
8681
|
+
const t = nt(e);
|
|
8682
|
+
document.documentElement.setAttribute("dir", t), document.documentElement.setAttribute("lang", e);
|
|
6975
8683
|
}
|
|
6976
|
-
function
|
|
8684
|
+
function to() {
|
|
6977
8685
|
return typeof document > "u" ? "ltr" : document.documentElement.getAttribute("dir") || "ltr";
|
|
6978
8686
|
}
|
|
6979
|
-
function
|
|
6980
|
-
return
|
|
8687
|
+
function lt(e, t) {
|
|
8688
|
+
return t ? e.rtl : e.ltr;
|
|
6981
8689
|
}
|
|
6982
|
-
function
|
|
8690
|
+
function oo(e) {
|
|
6983
8691
|
return e === "left" ? "right" : "left";
|
|
6984
8692
|
}
|
|
6985
|
-
function
|
|
6986
|
-
return
|
|
8693
|
+
function dt(e, t) {
|
|
8694
|
+
return t && {
|
|
6987
8695
|
left: "right",
|
|
6988
8696
|
right: "left",
|
|
6989
8697
|
start: "end",
|
|
@@ -6992,7 +8700,7 @@ function co(e, o) {
|
|
|
6992
8700
|
"flex-end": "flex-start"
|
|
6993
8701
|
}[e] || e;
|
|
6994
8702
|
}
|
|
6995
|
-
function
|
|
8703
|
+
function ct(e) {
|
|
6996
8704
|
return {
|
|
6997
8705
|
// Margins
|
|
6998
8706
|
"margin-left": "margin-inline-start",
|
|
@@ -7022,39 +8730,39 @@ function po(e) {
|
|
|
7022
8730
|
"text-align: right": "text-align: end"
|
|
7023
8731
|
}[e] || e;
|
|
7024
8732
|
}
|
|
7025
|
-
const
|
|
8733
|
+
const G = I({
|
|
7026
8734
|
dir: "ltr",
|
|
7027
8735
|
isRTL: !1,
|
|
7028
8736
|
flip: (e) => e,
|
|
7029
8737
|
value: (e) => e.ltr
|
|
7030
|
-
}),
|
|
8738
|
+
}), ro = ({
|
|
7031
8739
|
lang: e,
|
|
7032
|
-
autoSetDocument:
|
|
8740
|
+
autoSetDocument: t = !0,
|
|
7033
8741
|
children: r
|
|
7034
8742
|
}) => {
|
|
7035
|
-
const
|
|
8743
|
+
const o = ie(e), i = o ? "rtl" : "ltr";
|
|
7036
8744
|
L(() => {
|
|
7037
|
-
|
|
7038
|
-
}, [e,
|
|
7039
|
-
const
|
|
8745
|
+
t && st(e);
|
|
8746
|
+
}, [e, t]);
|
|
8747
|
+
const a = b(
|
|
7040
8748
|
() => ({
|
|
7041
|
-
dir:
|
|
7042
|
-
isRTL:
|
|
7043
|
-
flip: (
|
|
7044
|
-
value: (
|
|
8749
|
+
dir: i,
|
|
8750
|
+
isRTL: o,
|
|
8751
|
+
flip: (n) => dt(n, o),
|
|
8752
|
+
value: (n) => lt(n, o)
|
|
7045
8753
|
}),
|
|
7046
|
-
[
|
|
8754
|
+
[i, o]
|
|
7047
8755
|
);
|
|
7048
|
-
return /* @__PURE__ */
|
|
8756
|
+
return /* @__PURE__ */ O(G.Provider, { value: a, children: r });
|
|
7049
8757
|
};
|
|
7050
|
-
function
|
|
7051
|
-
return
|
|
8758
|
+
function io() {
|
|
8759
|
+
return B(G);
|
|
7052
8760
|
}
|
|
7053
|
-
function
|
|
7054
|
-
return
|
|
8761
|
+
function ao() {
|
|
8762
|
+
return B(G).isRTL;
|
|
7055
8763
|
}
|
|
7056
|
-
function
|
|
7057
|
-
const
|
|
8764
|
+
function no(e) {
|
|
8765
|
+
const t = [], r = [
|
|
7058
8766
|
"left",
|
|
7059
8767
|
"right",
|
|
7060
8768
|
"margin-left",
|
|
@@ -7064,11 +8772,11 @@ function st(e) {
|
|
|
7064
8772
|
"border-left",
|
|
7065
8773
|
"border-right"
|
|
7066
8774
|
];
|
|
7067
|
-
for (const [
|
|
7068
|
-
r.includes(
|
|
7069
|
-
return
|
|
8775
|
+
for (const [o, i] of Object.entries(e))
|
|
8776
|
+
r.includes(o) && t.push(`Use logical property instead of '${o}' → '${ct(o)}'`), o === "text-align" && (i === "left" || i === "right") && t.push(`Use 'text-align: start/end' instead of 'text-align: ${i}'`), o === "float" && (i === "left" || i === "right") && t.push(`Use flexbox or grid instead of 'float: ${i}' for RTL support`);
|
|
8777
|
+
return t;
|
|
7070
8778
|
}
|
|
7071
|
-
const
|
|
8779
|
+
const W = {
|
|
7072
8780
|
// Direction multiplier: 1 for LTR, -1 for RTL
|
|
7073
8781
|
dirMultiplier: "--nice-dir-multiplier",
|
|
7074
8782
|
// Inline start (left in LTR, right in RTL)
|
|
@@ -7076,41 +8784,41 @@ const U = {
|
|
|
7076
8784
|
// Inline end (right in LTR, left in RTL)
|
|
7077
8785
|
inlineEnd: "--nice-inline-end"
|
|
7078
8786
|
};
|
|
7079
|
-
function
|
|
8787
|
+
function so(e) {
|
|
7080
8788
|
return {
|
|
7081
|
-
[
|
|
7082
|
-
[
|
|
7083
|
-
[
|
|
8789
|
+
[W.dirMultiplier]: e ? "-1" : "1",
|
|
8790
|
+
[W.inlineStart]: e ? "right" : "left",
|
|
8791
|
+
[W.inlineEnd]: e ? "left" : "right"
|
|
7084
8792
|
};
|
|
7085
8793
|
}
|
|
7086
|
-
function
|
|
7087
|
-
return Object.keys(
|
|
8794
|
+
function lo() {
|
|
8795
|
+
return Object.keys(w.en);
|
|
7088
8796
|
}
|
|
7089
|
-
function
|
|
8797
|
+
function ut(e) {
|
|
7090
8798
|
if (e === "en")
|
|
7091
8799
|
return [];
|
|
7092
|
-
const
|
|
7093
|
-
for (const [
|
|
7094
|
-
r[
|
|
7095
|
-
return
|
|
8800
|
+
const t = w.en, r = w[e], o = [];
|
|
8801
|
+
for (const [i, a] of Object.entries(t))
|
|
8802
|
+
r[i] || o.push({ key: i, englishValue: a });
|
|
8803
|
+
return o;
|
|
7096
8804
|
}
|
|
7097
|
-
function
|
|
7098
|
-
const
|
|
8805
|
+
function pt(e) {
|
|
8806
|
+
const t = Object.keys(w.en).length, r = Object.keys(w[e]).length, o = t - r, i = Math.round(r / t * 100);
|
|
7099
8807
|
return {
|
|
7100
8808
|
lang: e,
|
|
7101
|
-
totalKeys:
|
|
8809
|
+
totalKeys: t,
|
|
7102
8810
|
translatedKeys: r,
|
|
7103
|
-
missingKeys:
|
|
7104
|
-
coverage:
|
|
8811
|
+
missingKeys: o,
|
|
8812
|
+
coverage: i
|
|
7105
8813
|
};
|
|
7106
8814
|
}
|
|
7107
|
-
function
|
|
7108
|
-
return
|
|
8815
|
+
function mt() {
|
|
8816
|
+
return T.map((e) => pt(e));
|
|
7109
8817
|
}
|
|
7110
|
-
function
|
|
7111
|
-
const r =
|
|
7112
|
-
const
|
|
7113
|
-
return ` '${
|
|
8818
|
+
function co(e, t) {
|
|
8819
|
+
const r = t.map((o) => {
|
|
8820
|
+
const i = o.translated.replace(/'/g, "\\'");
|
|
8821
|
+
return ` '${o.key}': '${i}',`;
|
|
7114
8822
|
});
|
|
7115
8823
|
return `// Auto-translated additions for ${e} (review before merging)
|
|
7116
8824
|
// Generated on ${(/* @__PURE__ */ new Date()).toISOString()}
|
|
@@ -7119,9 +8827,9 @@ ${r.join(`
|
|
|
7119
8827
|
`)}
|
|
7120
8828
|
}`;
|
|
7121
8829
|
}
|
|
7122
|
-
function
|
|
7123
|
-
const e =
|
|
7124
|
-
let
|
|
8830
|
+
function uo() {
|
|
8831
|
+
const e = mt();
|
|
8832
|
+
let t = `# Translation Coverage Report
|
|
7125
8833
|
|
|
7126
8834
|
Generated: ${(/* @__PURE__ */ new Date()).toISOString()}
|
|
7127
8835
|
|
|
@@ -7131,28 +8839,28 @@ Generated: ${(/* @__PURE__ */ new Date()).toISOString()}
|
|
|
7131
8839
|
|----------|------------|---------|----------|
|
|
7132
8840
|
`;
|
|
7133
8841
|
for (const r of e) {
|
|
7134
|
-
const
|
|
7135
|
-
|
|
8842
|
+
const o = "█".repeat(Math.floor(r.coverage / 10)) + "░".repeat(10 - Math.floor(r.coverage / 10));
|
|
8843
|
+
t += `| ${r.lang} | ${r.translatedKeys} | ${r.missingKeys} | ${o} ${r.coverage}% |
|
|
7136
8844
|
`;
|
|
7137
8845
|
}
|
|
7138
|
-
|
|
8846
|
+
t += `
|
|
7139
8847
|
## Languages with Missing Translations
|
|
7140
8848
|
|
|
7141
8849
|
`;
|
|
7142
|
-
for (const r of e.filter((
|
|
7143
|
-
|
|
8850
|
+
for (const r of e.filter((o) => o.missingKeys > 0)) {
|
|
8851
|
+
t += `### ${r.lang.toUpperCase()} (${r.coverage}% complete)
|
|
7144
8852
|
|
|
7145
8853
|
`;
|
|
7146
|
-
const
|
|
7147
|
-
|
|
8854
|
+
const o = ut(r.lang);
|
|
8855
|
+
t += `Missing ${o.length} keys:
|
|
7148
8856
|
|
|
7149
|
-
`,
|
|
7150
|
-
`),
|
|
7151
|
-
... and ${
|
|
8857
|
+
`, t += "```\n", t += o.slice(0, 10).map((i) => i.key).join(`
|
|
8858
|
+
`), o.length > 10 && (t += `
|
|
8859
|
+
... and ${o.length - 10} more`), t += "\n```\n\n";
|
|
7152
8860
|
}
|
|
7153
|
-
return
|
|
8861
|
+
return t;
|
|
7154
8862
|
}
|
|
7155
|
-
const
|
|
8863
|
+
const gt = {
|
|
7156
8864
|
en: "en-US",
|
|
7157
8865
|
pl: "pl-PL",
|
|
7158
8866
|
de: "de-DE",
|
|
@@ -7185,56 +8893,56 @@ const ho = {
|
|
|
7185
8893
|
ms: "ms-MY"
|
|
7186
8894
|
};
|
|
7187
8895
|
function D(e) {
|
|
7188
|
-
return
|
|
8896
|
+
return gt[e] ?? "en-US";
|
|
7189
8897
|
}
|
|
7190
|
-
function
|
|
7191
|
-
const r = D(e),
|
|
8898
|
+
function ht(e, t = "medium") {
|
|
8899
|
+
const r = D(e), o = new Intl.DateTimeFormat(r, { dateStyle: t });
|
|
7192
8900
|
return {
|
|
7193
|
-
format: (
|
|
7194
|
-
formatRange: (
|
|
7195
|
-
const
|
|
7196
|
-
return
|
|
8901
|
+
format: (i) => o.format(i instanceof Date ? i : new Date(i)),
|
|
8902
|
+
formatRange: (i, a) => {
|
|
8903
|
+
const n = i instanceof Date ? i : new Date(i), s = a instanceof Date ? a : new Date(a);
|
|
8904
|
+
return o.formatRange(n, s);
|
|
7197
8905
|
},
|
|
7198
|
-
formatRelative: (
|
|
8906
|
+
formatRelative: (i) => wt(i instanceof Date ? i : new Date(i), r)
|
|
7199
8907
|
};
|
|
7200
8908
|
}
|
|
7201
|
-
function
|
|
7202
|
-
return b(() =>
|
|
8909
|
+
function po(e, t = "medium") {
|
|
8910
|
+
return b(() => ht(e, t), [e, t]);
|
|
7203
8911
|
}
|
|
7204
|
-
function
|
|
7205
|
-
const r = D(e),
|
|
8912
|
+
function vt(e, t = "short") {
|
|
8913
|
+
const r = D(e), o = new Intl.DateTimeFormat(r, { timeStyle: t });
|
|
7206
8914
|
return {
|
|
7207
|
-
format: (
|
|
8915
|
+
format: (i) => o.format(i instanceof Date ? i : new Date(i))
|
|
7208
8916
|
};
|
|
7209
8917
|
}
|
|
7210
|
-
function
|
|
7211
|
-
return b(() =>
|
|
8918
|
+
function mo(e, t = "short") {
|
|
8919
|
+
return b(() => vt(e, t), [e, t]);
|
|
7212
8920
|
}
|
|
7213
|
-
function
|
|
7214
|
-
const
|
|
8921
|
+
function ft(e) {
|
|
8922
|
+
const t = D(e);
|
|
7215
8923
|
return {
|
|
7216
|
-
format: (r) => new Intl.NumberFormat(
|
|
7217
|
-
formatCompact: (r) => new Intl.NumberFormat(
|
|
7218
|
-
formatPercent: (r) => new Intl.NumberFormat(
|
|
8924
|
+
format: (r) => new Intl.NumberFormat(t).format(r),
|
|
8925
|
+
formatCompact: (r) => new Intl.NumberFormat(t, { notation: "compact" }).format(r),
|
|
8926
|
+
formatPercent: (r) => new Intl.NumberFormat(t, { style: "percent", maximumFractionDigits: 1 }).format(r)
|
|
7219
8927
|
};
|
|
7220
8928
|
}
|
|
7221
|
-
function
|
|
7222
|
-
return b(() =>
|
|
8929
|
+
function go(e) {
|
|
8930
|
+
return b(() => ft(e), [e]);
|
|
7223
8931
|
}
|
|
7224
|
-
function
|
|
7225
|
-
const r = D(e),
|
|
8932
|
+
function bt(e, t = "USD") {
|
|
8933
|
+
const r = D(e), o = new Intl.NumberFormat(r, { style: "currency", currency: t });
|
|
7226
8934
|
return {
|
|
7227
|
-
format: (
|
|
8935
|
+
format: (i) => o.format(i)
|
|
7228
8936
|
};
|
|
7229
8937
|
}
|
|
7230
|
-
function
|
|
7231
|
-
return b(() =>
|
|
8938
|
+
function ho(e, t = "USD") {
|
|
8939
|
+
return b(() => bt(e, t), [e, t]);
|
|
7232
8940
|
}
|
|
7233
|
-
function
|
|
7234
|
-
const r = Date.now(),
|
|
7235
|
-
return
|
|
8941
|
+
function wt(e, t) {
|
|
8942
|
+
const r = Date.now(), o = e.getTime() - r, i = Math.abs(o), a = new Intl.RelativeTimeFormat(t, { numeric: "auto" });
|
|
8943
|
+
return i < 6e4 ? a.format(Math.round(o / 1e3), "second") : i < 36e5 ? a.format(Math.round(o / 6e4), "minute") : i < 864e5 ? a.format(Math.round(o / 36e5), "hour") : i < 2592e6 ? a.format(Math.round(o / 864e5), "day") : i < 31536e6 ? a.format(Math.round(o / 2592e6), "month") : a.format(Math.round(o / 31536e6), "year");
|
|
7236
8944
|
}
|
|
7237
|
-
const
|
|
8945
|
+
const ae = [
|
|
7238
8946
|
{
|
|
7239
8947
|
en: "Save",
|
|
7240
8948
|
translations: {
|
|
@@ -7386,54 +9094,54 @@ const ne = [
|
|
|
7386
9094
|
}
|
|
7387
9095
|
}
|
|
7388
9096
|
];
|
|
7389
|
-
function
|
|
7390
|
-
const r =
|
|
7391
|
-
return r == null ? void 0 : r.translations[
|
|
9097
|
+
function kt(e, t) {
|
|
9098
|
+
const r = ae.find((o) => o.en.toLowerCase() === e.toLowerCase());
|
|
9099
|
+
return r == null ? void 0 : r.translations[t];
|
|
7392
9100
|
}
|
|
7393
|
-
function
|
|
7394
|
-
const
|
|
7395
|
-
let
|
|
7396
|
-
for (const [s,
|
|
7397
|
-
const
|
|
7398
|
-
if (!
|
|
9101
|
+
function vo(e, t, r = 0.8) {
|
|
9102
|
+
const o = w.en, i = w[t], a = e.toLowerCase().trim();
|
|
9103
|
+
let n;
|
|
9104
|
+
for (const [s, l] of Object.entries(o)) {
|
|
9105
|
+
const d = i[s];
|
|
9106
|
+
if (!d)
|
|
7399
9107
|
continue;
|
|
7400
|
-
const
|
|
7401
|
-
|
|
9108
|
+
const u = Et(a, l.toLowerCase().trim());
|
|
9109
|
+
u >= r && (!n || u > n.similarity) && (n = { key: s, english: l, translated: d, similarity: u });
|
|
7402
9110
|
}
|
|
7403
|
-
return
|
|
9111
|
+
return n;
|
|
7404
9112
|
}
|
|
7405
|
-
function
|
|
7406
|
-
return
|
|
7407
|
-
en:
|
|
7408
|
-
translation:
|
|
9113
|
+
function fo(e) {
|
|
9114
|
+
return ae.filter((t) => t.translations[e] != null).map((t) => ({
|
|
9115
|
+
en: t.en,
|
|
9116
|
+
translation: t.translations[e]
|
|
7409
9117
|
}));
|
|
7410
9118
|
}
|
|
7411
|
-
function
|
|
7412
|
-
const
|
|
7413
|
-
for (const [
|
|
7414
|
-
const
|
|
7415
|
-
|
|
9119
|
+
function bo(e) {
|
|
9120
|
+
const t = w[e], r = w.en, o = [];
|
|
9121
|
+
for (const [i, a] of Object.entries(r)) {
|
|
9122
|
+
const n = kt(a, e), s = t[i];
|
|
9123
|
+
n && s && s !== n && o.push({ key: i, currentTranslation: s, glossaryTranslation: n });
|
|
7416
9124
|
}
|
|
7417
|
-
return
|
|
9125
|
+
return o;
|
|
7418
9126
|
}
|
|
7419
|
-
function
|
|
7420
|
-
const
|
|
9127
|
+
function $(e) {
|
|
9128
|
+
const t = /* @__PURE__ */ new Set();
|
|
7421
9129
|
for (let r = 0; r < e.length - 1; r++)
|
|
7422
|
-
|
|
7423
|
-
return
|
|
9130
|
+
t.add(e.substring(r, r + 2));
|
|
9131
|
+
return t;
|
|
7424
9132
|
}
|
|
7425
|
-
function
|
|
7426
|
-
if (e ===
|
|
9133
|
+
function Et(e, t) {
|
|
9134
|
+
if (e === t)
|
|
7427
9135
|
return 1;
|
|
7428
|
-
if (e.length < 2 ||
|
|
9136
|
+
if (e.length < 2 || t.length < 2)
|
|
7429
9137
|
return 0;
|
|
7430
|
-
const r =
|
|
7431
|
-
let
|
|
7432
|
-
for (const
|
|
7433
|
-
|
|
7434
|
-
return 2 *
|
|
9138
|
+
const r = $(e), o = $(t);
|
|
9139
|
+
let i = 0;
|
|
9140
|
+
for (const a of r)
|
|
9141
|
+
o.has(a) && i++;
|
|
9142
|
+
return 2 * i / (r.size + o.size);
|
|
7435
9143
|
}
|
|
7436
|
-
const
|
|
9144
|
+
const ne = {
|
|
7437
9145
|
UTC: ["UTC", "Etc/UTC", "Etc/GMT"],
|
|
7438
9146
|
NorthAmerica: [
|
|
7439
9147
|
"America/New_York",
|
|
@@ -7494,124 +9202,124 @@ const ie = {
|
|
|
7494
9202
|
"Pacific/Fiji"
|
|
7495
9203
|
]
|
|
7496
9204
|
};
|
|
7497
|
-
function
|
|
9205
|
+
function Z() {
|
|
7498
9206
|
try {
|
|
7499
9207
|
return Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
7500
9208
|
} catch {
|
|
7501
9209
|
return "UTC";
|
|
7502
9210
|
}
|
|
7503
9211
|
}
|
|
7504
|
-
function
|
|
9212
|
+
function wo(e) {
|
|
7505
9213
|
try {
|
|
7506
9214
|
return new Intl.DateTimeFormat("en", { timeZone: e }), !0;
|
|
7507
9215
|
} catch {
|
|
7508
9216
|
return !1;
|
|
7509
9217
|
}
|
|
7510
9218
|
}
|
|
7511
|
-
function F(e,
|
|
7512
|
-
var
|
|
7513
|
-
const
|
|
9219
|
+
function F(e, t = "en", r = /* @__PURE__ */ new Date()) {
|
|
9220
|
+
var k, M;
|
|
9221
|
+
const o = D(t), i = new Intl.DateTimeFormat(o, {
|
|
7514
9222
|
timeZone: e,
|
|
7515
9223
|
timeZoneName: "long"
|
|
7516
|
-
}),
|
|
9224
|
+
}), a = new Intl.DateTimeFormat(o, {
|
|
7517
9225
|
timeZone: e,
|
|
7518
9226
|
timeZoneName: "short"
|
|
7519
|
-
}),
|
|
9227
|
+
}), n = i.formatToParts(r), s = a.formatToParts(r), l = ((k = n.find((A) => A.type === "timeZoneName")) == null ? void 0 : k.value) || e, d = ((M = s.find((A) => A.type === "timeZoneName")) == null ? void 0 : M.value) || e, u = new Date(r.toLocaleString("en-US", { timeZone: "UTC" })), v = new Date(r.toLocaleString("en-US", { timeZone: e })), p = Math.round((v.getTime() - u.getTime()) / 6e4), m = new Date(r.getFullYear(), 0, 1), f = new Date(r.getFullYear(), 6, 1), g = U(e, m), y = U(e, f), z = U(e, r), E = Math.min(g, y), j = z !== E && g !== y;
|
|
7520
9228
|
return {
|
|
7521
9229
|
id: e,
|
|
7522
|
-
displayName:
|
|
7523
|
-
shortName:
|
|
7524
|
-
offsetMinutes:
|
|
7525
|
-
offsetString:
|
|
7526
|
-
isDST:
|
|
9230
|
+
displayName: l,
|
|
9231
|
+
shortName: d,
|
|
9232
|
+
offsetMinutes: p,
|
|
9233
|
+
offsetString: St(p),
|
|
9234
|
+
isDST: j
|
|
7527
9235
|
};
|
|
7528
9236
|
}
|
|
7529
|
-
function
|
|
7530
|
-
return Object.values(
|
|
9237
|
+
function ko(e = "en", t = /* @__PURE__ */ new Date()) {
|
|
9238
|
+
return Object.values(ne).flat().map((o) => F(o, e, t));
|
|
7531
9239
|
}
|
|
7532
|
-
function
|
|
9240
|
+
function Eo(e = "en", t = /* @__PURE__ */ new Date()) {
|
|
7533
9241
|
const r = {};
|
|
7534
|
-
for (const [
|
|
7535
|
-
r[
|
|
9242
|
+
for (const [o, i] of Object.entries(ne))
|
|
9243
|
+
r[o] = i.map((a) => F(a, e, t));
|
|
7536
9244
|
return r;
|
|
7537
9245
|
}
|
|
7538
|
-
function se(e,
|
|
7539
|
-
const
|
|
9246
|
+
function se(e, t, r) {
|
|
9247
|
+
const o = e.toLocaleString("en-US", { timeZone: t }), i = new Date(o), a = e.toLocaleString("en-US", { timeZone: r }), n = new Date(a), s = i.getTime() - n.getTime();
|
|
7540
9248
|
return new Date(e.getTime() + s);
|
|
7541
9249
|
}
|
|
7542
|
-
function
|
|
7543
|
-
const r =
|
|
9250
|
+
function yt(e, t) {
|
|
9251
|
+
const r = t || Z();
|
|
7544
9252
|
return se(e, r, "UTC");
|
|
7545
9253
|
}
|
|
7546
|
-
function
|
|
7547
|
-
const r =
|
|
9254
|
+
function zt(e, t) {
|
|
9255
|
+
const r = t || Z();
|
|
7548
9256
|
return se(e, "UTC", r);
|
|
7549
9257
|
}
|
|
7550
|
-
function
|
|
7551
|
-
const
|
|
7552
|
-
timeZone:
|
|
7553
|
-
dateStyle:
|
|
7554
|
-
timeStyle:
|
|
7555
|
-
}),
|
|
7556
|
-
timeZone:
|
|
7557
|
-
dateStyle:
|
|
7558
|
-
timeStyle:
|
|
7559
|
-
timeZoneName:
|
|
7560
|
-
}),
|
|
7561
|
-
timeZone:
|
|
9258
|
+
function Ct(e, t, r = {}) {
|
|
9259
|
+
const o = D(e), { dateStyle: i = "medium", timeStyle: a = "short", nameStyle: n = "short" } = r, s = new Intl.DateTimeFormat(o, {
|
|
9260
|
+
timeZone: t,
|
|
9261
|
+
dateStyle: i,
|
|
9262
|
+
timeStyle: a
|
|
9263
|
+
}), l = new Intl.DateTimeFormat(o, {
|
|
9264
|
+
timeZone: t,
|
|
9265
|
+
dateStyle: i,
|
|
9266
|
+
timeStyle: a,
|
|
9267
|
+
timeZoneName: n
|
|
9268
|
+
}), d = new Intl.DateTimeFormat(o, {
|
|
9269
|
+
timeZone: t,
|
|
7562
9270
|
timeZoneName: "short"
|
|
7563
9271
|
});
|
|
7564
9272
|
return {
|
|
7565
|
-
format: (
|
|
7566
|
-
formatWithZone: (
|
|
7567
|
-
getOffset: (
|
|
7568
|
-
getAbbreviation: (
|
|
7569
|
-
var
|
|
7570
|
-
return ((
|
|
9273
|
+
format: (u) => s.format(u),
|
|
9274
|
+
formatWithZone: (u) => l.format(u),
|
|
9275
|
+
getOffset: (u) => F(t, e, u).offsetString,
|
|
9276
|
+
getAbbreviation: (u) => {
|
|
9277
|
+
var p;
|
|
9278
|
+
return ((p = d.formatToParts(u).find((m) => m.type === "timeZoneName")) == null ? void 0 : p.value) || "";
|
|
7571
9279
|
}
|
|
7572
9280
|
};
|
|
7573
9281
|
}
|
|
7574
|
-
function
|
|
7575
|
-
return F(e, "en",
|
|
9282
|
+
function q(e, t = /* @__PURE__ */ new Date()) {
|
|
9283
|
+
return F(e, "en", t).isDST;
|
|
7576
9284
|
}
|
|
7577
|
-
function
|
|
7578
|
-
const r =
|
|
7579
|
-
for (
|
|
7580
|
-
if (
|
|
7581
|
-
|
|
7582
|
-
const
|
|
7583
|
-
|
|
7584
|
-
const
|
|
7585
|
-
for (
|
|
7586
|
-
const s = new Date((
|
|
7587
|
-
|
|
9285
|
+
function yo(e, t = /* @__PURE__ */ new Date()) {
|
|
9286
|
+
const r = q(e, t), o = new Date(t), i = new Date(t);
|
|
9287
|
+
for (i.setFullYear(i.getFullYear() + 1); o < i; )
|
|
9288
|
+
if (o.setDate(o.getDate() + 1), q(e, o) !== r) {
|
|
9289
|
+
o.setDate(o.getDate() - 1);
|
|
9290
|
+
const a = new Date(o);
|
|
9291
|
+
a.setHours(0, 0, 0, 0);
|
|
9292
|
+
const n = new Date(o);
|
|
9293
|
+
for (n.setDate(n.getDate() + 2); n.getTime() - a.getTime() > 6e4; ) {
|
|
9294
|
+
const s = new Date((a.getTime() + n.getTime()) / 2);
|
|
9295
|
+
q(e, s) === r ? a.setTime(s.getTime()) : n.setTime(s.getTime());
|
|
7588
9296
|
}
|
|
7589
|
-
return
|
|
9297
|
+
return n;
|
|
7590
9298
|
}
|
|
7591
9299
|
return null;
|
|
7592
9300
|
}
|
|
7593
|
-
function
|
|
7594
|
-
const [
|
|
9301
|
+
function zo(e, t, r) {
|
|
9302
|
+
const [o] = x(() => Z()), i = t || o, a = b(() => Ct(e, i, r), [e, i, r]), n = b(() => F(i, e), [i, e]);
|
|
7595
9303
|
return {
|
|
7596
|
-
timezone:
|
|
7597
|
-
info:
|
|
7598
|
-
format:
|
|
7599
|
-
formatWithZone:
|
|
7600
|
-
getOffset:
|
|
7601
|
-
getAbbreviation:
|
|
7602
|
-
toUTC: (s) =>
|
|
7603
|
-
fromUTC: (s) =>
|
|
9304
|
+
timezone: i,
|
|
9305
|
+
info: n,
|
|
9306
|
+
format: a.format,
|
|
9307
|
+
formatWithZone: a.formatWithZone,
|
|
9308
|
+
getOffset: a.getOffset,
|
|
9309
|
+
getAbbreviation: a.getAbbreviation,
|
|
9310
|
+
toUTC: (s) => yt(s, i),
|
|
9311
|
+
fromUTC: (s) => zt(s, i)
|
|
7604
9312
|
};
|
|
7605
9313
|
}
|
|
7606
|
-
function
|
|
7607
|
-
const r =
|
|
7608
|
-
return Math.round((
|
|
9314
|
+
function U(e, t) {
|
|
9315
|
+
const r = t.toLocaleString("en-US", { timeZone: "UTC" }), o = t.toLocaleString("en-US", { timeZone: e }), i = new Date(r), a = new Date(o);
|
|
9316
|
+
return Math.round((a.getTime() - i.getTime()) / 6e4);
|
|
7609
9317
|
}
|
|
7610
|
-
function
|
|
7611
|
-
const
|
|
7612
|
-
return `${
|
|
9318
|
+
function St(e) {
|
|
9319
|
+
const t = e >= 0 ? "+" : "-", r = Math.abs(e), o = Math.floor(r / 60), i = r % 60;
|
|
9320
|
+
return `${t}${o.toString().padStart(2, "0")}:${i.toString().padStart(2, "0")}`;
|
|
7613
9321
|
}
|
|
7614
|
-
const
|
|
9322
|
+
const V = {
|
|
7615
9323
|
gregory: {
|
|
7616
9324
|
id: "gregory",
|
|
7617
9325
|
displayName: "Gregorian",
|
|
@@ -7745,7 +9453,7 @@ const W = {
|
|
|
7745
9453
|
isLunar: !1,
|
|
7746
9454
|
associatedLanguages: ["zh"]
|
|
7747
9455
|
}
|
|
7748
|
-
},
|
|
9456
|
+
}, le = {
|
|
7749
9457
|
en: "gregory",
|
|
7750
9458
|
pl: "gregory",
|
|
7751
9459
|
de: "gregory",
|
|
@@ -7777,70 +9485,70 @@ const W = {
|
|
|
7777
9485
|
fil: "gregory",
|
|
7778
9486
|
ms: "gregory"
|
|
7779
9487
|
};
|
|
7780
|
-
function
|
|
7781
|
-
const
|
|
7782
|
-
calendar:
|
|
7783
|
-
dateStyle:
|
|
9488
|
+
function de(e, t = "gregory", r = {}) {
|
|
9489
|
+
const o = D(e), { dateStyle: i = "medium", showEra: a = !1, showWeekday: n = !1 } = r, s = {
|
|
9490
|
+
calendar: t,
|
|
9491
|
+
dateStyle: i
|
|
7784
9492
|
};
|
|
7785
|
-
|
|
7786
|
-
const
|
|
7787
|
-
calendar:
|
|
9493
|
+
n && (delete s.dateStyle, s.weekday = "long", s.year = "numeric", s.month = "long", s.day = "numeric");
|
|
9494
|
+
const l = new Intl.DateTimeFormat(o, s), d = {
|
|
9495
|
+
calendar: t,
|
|
7788
9496
|
year: "numeric",
|
|
7789
9497
|
month: "long",
|
|
7790
9498
|
day: "numeric",
|
|
7791
9499
|
era: "long"
|
|
7792
|
-
},
|
|
9500
|
+
}, u = new Intl.DateTimeFormat(o, d), v = new Intl.DateTimeFormat(o, { calendar: t, month: "long" }), p = new Intl.DateTimeFormat(o, { calendar: t, weekday: "long" });
|
|
7793
9501
|
return {
|
|
7794
|
-
format: (m) =>
|
|
7795
|
-
formatWithEra: (m) =>
|
|
7796
|
-
getMonthName: (m) =>
|
|
9502
|
+
format: (m) => l.format(m),
|
|
9503
|
+
formatWithEra: (m) => u.format(m),
|
|
9504
|
+
getMonthName: (m) => v.format(m),
|
|
7797
9505
|
getMonthNames: () => {
|
|
7798
|
-
const m = [],
|
|
9506
|
+
const m = [], f = new Date(2024, 0, 15);
|
|
7799
9507
|
for (let g = 0; g < 12; g++)
|
|
7800
|
-
|
|
9508
|
+
f.setMonth(g), m.push(v.format(f));
|
|
7801
9509
|
return m;
|
|
7802
9510
|
},
|
|
7803
|
-
getWeekdayName: (m) =>
|
|
9511
|
+
getWeekdayName: (m) => p.format(m),
|
|
7804
9512
|
getWeekdayNames: () => {
|
|
7805
|
-
const m = [],
|
|
9513
|
+
const m = [], f = new Date(2024, 0, 7);
|
|
7806
9514
|
for (let g = 0; g < 7; g++)
|
|
7807
|
-
|
|
9515
|
+
f.setDate(7 + g), m.push(p.format(f));
|
|
7808
9516
|
return m;
|
|
7809
9517
|
},
|
|
7810
9518
|
parseParts: (m) => {
|
|
7811
|
-
var
|
|
7812
|
-
const g = new Intl.DateTimeFormat(
|
|
7813
|
-
calendar:
|
|
9519
|
+
var y, z, E, j;
|
|
9520
|
+
const g = new Intl.DateTimeFormat(o, {
|
|
9521
|
+
calendar: t,
|
|
7814
9522
|
year: "numeric",
|
|
7815
9523
|
month: "numeric",
|
|
7816
9524
|
day: "numeric",
|
|
7817
9525
|
era: "short"
|
|
7818
9526
|
}).formatToParts(m);
|
|
7819
9527
|
return {
|
|
7820
|
-
calendar:
|
|
7821
|
-
year: parseInt(((
|
|
7822
|
-
month: parseInt(((
|
|
7823
|
-
day: parseInt(((
|
|
7824
|
-
era: (
|
|
9528
|
+
calendar: t,
|
|
9529
|
+
year: parseInt(((y = g.find((k) => k.type === "year")) == null ? void 0 : y.value) || "0", 10),
|
|
9530
|
+
month: parseInt(((z = g.find((k) => k.type === "month")) == null ? void 0 : z.value) || "0", 10),
|
|
9531
|
+
day: parseInt(((E = g.find((k) => k.type === "day")) == null ? void 0 : E.value) || "0", 10),
|
|
9532
|
+
era: (j = g.find((k) => k.type === "era")) == null ? void 0 : j.value,
|
|
7825
9533
|
gregorianDate: m
|
|
7826
9534
|
};
|
|
7827
9535
|
},
|
|
7828
9536
|
getEraName: (m) => {
|
|
7829
|
-
var
|
|
7830
|
-
return (
|
|
7831
|
-
calendar:
|
|
9537
|
+
var y;
|
|
9538
|
+
return (y = new Intl.DateTimeFormat(o, {
|
|
9539
|
+
calendar: t,
|
|
7832
9540
|
era: "long"
|
|
7833
|
-
}).formatToParts(m).find((
|
|
9541
|
+
}).formatToParts(m).find((z) => z.type === "era")) == null ? void 0 : y.value;
|
|
7834
9542
|
}
|
|
7835
9543
|
};
|
|
7836
9544
|
}
|
|
7837
|
-
function ce(e,
|
|
7838
|
-
return
|
|
9545
|
+
function ce(e, t, r = "en") {
|
|
9546
|
+
return de(r, t).parseParts(e);
|
|
7839
9547
|
}
|
|
7840
|
-
function
|
|
7841
|
-
return ce(/* @__PURE__ */ new Date(), e,
|
|
9548
|
+
function Dt(e, t = "en") {
|
|
9549
|
+
return ce(/* @__PURE__ */ new Date(), e, t);
|
|
7842
9550
|
}
|
|
7843
|
-
const
|
|
9551
|
+
const Co = [
|
|
7844
9552
|
"Muharram",
|
|
7845
9553
|
"Safar",
|
|
7846
9554
|
"Rabi' al-Awwal",
|
|
@@ -7854,13 +9562,13 @@ const St = [
|
|
|
7854
9562
|
"Dhu al-Qi'dah",
|
|
7855
9563
|
"Dhu al-Hijjah"
|
|
7856
9564
|
];
|
|
7857
|
-
function
|
|
9565
|
+
function jt(e) {
|
|
7858
9566
|
return (11 * e + 14) % 30 < 11;
|
|
7859
9567
|
}
|
|
7860
|
-
function
|
|
7861
|
-
return
|
|
9568
|
+
function So(e, t) {
|
|
9569
|
+
return t === 12 ? jt(e) ? 30 : 29 : t % 2 === 1 ? 30 : 29;
|
|
7862
9570
|
}
|
|
7863
|
-
const
|
|
9571
|
+
const Do = [
|
|
7864
9572
|
"Tishrei",
|
|
7865
9573
|
"Cheshvan",
|
|
7866
9574
|
"Kislev",
|
|
@@ -7873,7 +9581,7 @@ const Dt = [
|
|
|
7873
9581
|
"Tammuz",
|
|
7874
9582
|
"Av",
|
|
7875
9583
|
"Elul"
|
|
7876
|
-
],
|
|
9584
|
+
], jo = [
|
|
7877
9585
|
"Tishrei",
|
|
7878
9586
|
"Cheshvan",
|
|
7879
9587
|
"Kislev",
|
|
@@ -7888,27 +9596,27 @@ const Dt = [
|
|
|
7888
9596
|
"Av",
|
|
7889
9597
|
"Elul"
|
|
7890
9598
|
];
|
|
7891
|
-
function
|
|
9599
|
+
function Ao(e) {
|
|
7892
9600
|
return (7 * e + 1) % 19 < 7;
|
|
7893
9601
|
}
|
|
7894
|
-
const
|
|
9602
|
+
const K = [
|
|
7895
9603
|
{ name: "Meiji", kanji: "明治", startDate: new Date(1868, 9, 23) },
|
|
7896
9604
|
{ name: "Taisho", kanji: "大正", startDate: new Date(1912, 6, 30) },
|
|
7897
9605
|
{ name: "Showa", kanji: "昭和", startDate: new Date(1926, 11, 25) },
|
|
7898
9606
|
{ name: "Heisei", kanji: "平成", startDate: new Date(1989, 0, 8) },
|
|
7899
9607
|
{ name: "Reiwa", kanji: "令和", startDate: new Date(2019, 4, 1) }
|
|
7900
9608
|
];
|
|
7901
|
-
function
|
|
7902
|
-
for (let
|
|
7903
|
-
if (e >=
|
|
7904
|
-
return
|
|
9609
|
+
function At(e) {
|
|
9610
|
+
for (let t = K.length - 1; t >= 0; t--)
|
|
9611
|
+
if (e >= K[t].startDate)
|
|
9612
|
+
return K[t];
|
|
7905
9613
|
return null;
|
|
7906
9614
|
}
|
|
7907
|
-
function
|
|
7908
|
-
const
|
|
7909
|
-
return
|
|
9615
|
+
function Po(e) {
|
|
9616
|
+
const t = At(e);
|
|
9617
|
+
return t ? e.getFullYear() - t.startDate.getFullYear() + 1 : null;
|
|
7910
9618
|
}
|
|
7911
|
-
const
|
|
9619
|
+
const xo = [
|
|
7912
9620
|
"Farvardin",
|
|
7913
9621
|
"Ordibehesht",
|
|
7914
9622
|
"Khordad",
|
|
@@ -7922,10 +9630,10 @@ const Pt = [
|
|
|
7922
9630
|
"Bahman",
|
|
7923
9631
|
"Esfand"
|
|
7924
9632
|
];
|
|
7925
|
-
function
|
|
9633
|
+
function To(e) {
|
|
7926
9634
|
return ((e - 474) % 2820 + 2820) % 2820 * 682 % 2816 < 682;
|
|
7927
9635
|
}
|
|
7928
|
-
const
|
|
9636
|
+
const Pt = [
|
|
7929
9637
|
"Rat",
|
|
7930
9638
|
"Ox",
|
|
7931
9639
|
"Tiger",
|
|
@@ -7939,10 +9647,10 @@ const Po = [
|
|
|
7939
9647
|
"Dog",
|
|
7940
9648
|
"Pig"
|
|
7941
9649
|
];
|
|
7942
|
-
function
|
|
7943
|
-
return
|
|
9650
|
+
function Bo(e) {
|
|
9651
|
+
return Pt[(e - 4) % 12];
|
|
7944
9652
|
}
|
|
7945
|
-
const
|
|
9653
|
+
const xt = [
|
|
7946
9654
|
"Jia",
|
|
7947
9655
|
"Yi",
|
|
7948
9656
|
"Bing",
|
|
@@ -7954,45 +9662,45 @@ const jo = [
|
|
|
7954
9662
|
"Ren",
|
|
7955
9663
|
"Gui"
|
|
7956
9664
|
];
|
|
7957
|
-
function
|
|
7958
|
-
return
|
|
9665
|
+
function Fo(e) {
|
|
9666
|
+
return xt[(e - 4) % 10];
|
|
7959
9667
|
}
|
|
7960
|
-
function
|
|
7961
|
-
const
|
|
7962
|
-
() =>
|
|
7963
|
-
[e,
|
|
7964
|
-
),
|
|
9668
|
+
function Mo(e, t, r) {
|
|
9669
|
+
const o = t || le[e], i = b(
|
|
9670
|
+
() => de(e, o, r),
|
|
9671
|
+
[e, o, r]
|
|
9672
|
+
), a = b(() => V[o], [o]), n = b(() => Dt(o, e), [o, e]);
|
|
7965
9673
|
return {
|
|
7966
|
-
calendar:
|
|
7967
|
-
info:
|
|
7968
|
-
current:
|
|
7969
|
-
format:
|
|
7970
|
-
formatWithEra:
|
|
7971
|
-
getMonthName:
|
|
7972
|
-
getMonthNames:
|
|
7973
|
-
getWeekdayName:
|
|
7974
|
-
getWeekdayNames:
|
|
7975
|
-
parseParts:
|
|
7976
|
-
getEraName:
|
|
7977
|
-
toCalendar: (s) => ce(s,
|
|
9674
|
+
calendar: o,
|
|
9675
|
+
info: a,
|
|
9676
|
+
current: n,
|
|
9677
|
+
format: i.format,
|
|
9678
|
+
formatWithEra: i.formatWithEra,
|
|
9679
|
+
getMonthName: i.getMonthName,
|
|
9680
|
+
getMonthNames: i.getMonthNames,
|
|
9681
|
+
getWeekdayName: i.getWeekdayName,
|
|
9682
|
+
getWeekdayNames: i.getWeekdayNames,
|
|
9683
|
+
parseParts: i.parseParts,
|
|
9684
|
+
getEraName: i.getEraName,
|
|
9685
|
+
toCalendar: (s) => ce(s, o, e)
|
|
7978
9686
|
};
|
|
7979
9687
|
}
|
|
7980
|
-
function
|
|
7981
|
-
return Object.keys(
|
|
9688
|
+
function No() {
|
|
9689
|
+
return Object.keys(V);
|
|
7982
9690
|
}
|
|
7983
|
-
function
|
|
7984
|
-
const r = { ...
|
|
9691
|
+
function Ro(e, t = "en") {
|
|
9692
|
+
const r = { ...V[e] };
|
|
7985
9693
|
try {
|
|
7986
|
-
const
|
|
7987
|
-
|
|
9694
|
+
const o = D(t), a = new Intl.DisplayNames([o], { type: "calendar" }).of(e);
|
|
9695
|
+
a && (r.displayName = a);
|
|
7988
9696
|
} catch {
|
|
7989
9697
|
}
|
|
7990
9698
|
return r;
|
|
7991
9699
|
}
|
|
7992
|
-
function
|
|
7993
|
-
const
|
|
7994
|
-
for (const [
|
|
7995
|
-
|
|
9700
|
+
function Lo(e) {
|
|
9701
|
+
const t = le[e], r = /* @__PURE__ */ new Set([t]);
|
|
9702
|
+
for (const [o, i] of Object.entries(V))
|
|
9703
|
+
i.associatedLanguages.includes(e) && r.add(o);
|
|
7996
9704
|
return r.add("gregory"), Array.from(r);
|
|
7997
9705
|
}
|
|
7998
9706
|
const J = {
|
|
@@ -8050,7 +9758,7 @@ const J = {
|
|
|
8050
9758
|
X: "Χ",
|
|
8051
9759
|
Y: "Ÿ",
|
|
8052
9760
|
Z: "Ž"
|
|
8053
|
-
},
|
|
9761
|
+
}, Tt = {
|
|
8054
9762
|
...J,
|
|
8055
9763
|
// Additional mappings
|
|
8056
9764
|
a: "ặ",
|
|
@@ -8065,64 +9773,64 @@ const J = {
|
|
|
8065
9773
|
O: "Ộ",
|
|
8066
9774
|
U: "Ụ",
|
|
8067
9775
|
Y: "Ỵ"
|
|
8068
|
-
},
|
|
8069
|
-
function
|
|
8070
|
-
const r =
|
|
8071
|
-
return e.split("").map((
|
|
9776
|
+
}, Bt = "", Ft = "", _ = "", Mt = "~∼~≈";
|
|
9777
|
+
function Oo(e, t = !1) {
|
|
9778
|
+
const r = t ? Tt : J;
|
|
9779
|
+
return e.split("").map((o) => r[o] || o).join("");
|
|
8072
9780
|
}
|
|
8073
|
-
function
|
|
8074
|
-
return `${
|
|
9781
|
+
function Io(e, t = "[", r = "]") {
|
|
9782
|
+
return `${t}${e}${r}`;
|
|
8075
9783
|
}
|
|
8076
|
-
function
|
|
9784
|
+
function Nt(e, t = 0.3, r = !1) {
|
|
8077
9785
|
if (r)
|
|
8078
|
-
return
|
|
8079
|
-
const
|
|
8080
|
-
if (
|
|
9786
|
+
return Rt(e);
|
|
9787
|
+
const i = Math.ceil(e.length * (1 + t)) - e.length;
|
|
9788
|
+
if (i <= 0)
|
|
8081
9789
|
return e;
|
|
8082
|
-
const
|
|
8083
|
-
return e +
|
|
9790
|
+
const a = Mt[0].repeat(i);
|
|
9791
|
+
return e + a;
|
|
8084
9792
|
}
|
|
8085
|
-
function
|
|
8086
|
-
const
|
|
8087
|
-
return e.split("").map((r) =>
|
|
9793
|
+
function Rt(e) {
|
|
9794
|
+
const t = /* @__PURE__ */ new Set(["a", "e", "i", "o", "u", "A", "E", "I", "O", "U"]);
|
|
9795
|
+
return e.split("").map((r) => t.has(r) ? r + r : r).join("");
|
|
8088
9796
|
}
|
|
8089
|
-
function
|
|
8090
|
-
return
|
|
9797
|
+
function Lt(e, t = !1) {
|
|
9798
|
+
return t ? `${Ft}${e}${_}` : `${Bt}${e}${_}`;
|
|
8091
9799
|
}
|
|
8092
|
-
function
|
|
9800
|
+
function ue(e, t = {}) {
|
|
8093
9801
|
const {
|
|
8094
9802
|
addBrackets: r = !0,
|
|
8095
|
-
expansionFactor:
|
|
8096
|
-
addAccents:
|
|
8097
|
-
addBidiMarkers:
|
|
8098
|
-
useVowelDoubling:
|
|
9803
|
+
expansionFactor: o = 0.3,
|
|
9804
|
+
addAccents: i = !0,
|
|
9805
|
+
addBidiMarkers: a = !1,
|
|
9806
|
+
useVowelDoubling: n = !1,
|
|
8099
9807
|
preservePlaceholders: s = !0,
|
|
8100
|
-
preserveHtml:
|
|
8101
|
-
prefix:
|
|
8102
|
-
suffix:
|
|
8103
|
-
} =
|
|
8104
|
-
let
|
|
8105
|
-
s && (
|
|
9808
|
+
preserveHtml: l = !0,
|
|
9809
|
+
prefix: d = "[",
|
|
9810
|
+
suffix: u = "]"
|
|
9811
|
+
} = t, v = /* @__PURE__ */ new Map();
|
|
9812
|
+
let p = e, m = 0;
|
|
9813
|
+
s && (p = p.replace(/\{[^}]+\}/g, (f) => {
|
|
8106
9814
|
const g = `__PH${m++}__`;
|
|
8107
|
-
return
|
|
8108
|
-
})),
|
|
9815
|
+
return v.set(g, f), g;
|
|
9816
|
+
})), l && (p = p.replace(/<[^>]+>/g, (f) => {
|
|
8109
9817
|
const g = `__PH${m++}__`;
|
|
8110
|
-
return
|
|
8111
|
-
})),
|
|
8112
|
-
for (const [
|
|
8113
|
-
|
|
8114
|
-
return
|
|
9818
|
+
return v.set(g, f), g;
|
|
9819
|
+
})), i && (p = Ot(p, v)), o > 0 && (p = Nt(p, o, n)), a && (p = Lt(p)), r && (p = `${d}${p}${u}`);
|
|
9820
|
+
for (const [f, g] of v.entries())
|
|
9821
|
+
p = p.replace(f, g);
|
|
9822
|
+
return p;
|
|
8115
9823
|
}
|
|
8116
|
-
function
|
|
8117
|
-
const r = new Set(
|
|
8118
|
-
return e.split("").map((
|
|
8119
|
-
for (const
|
|
8120
|
-
if (e.includes(
|
|
8121
|
-
return
|
|
8122
|
-
return J[
|
|
9824
|
+
function Ot(e, t) {
|
|
9825
|
+
const r = new Set(t.keys());
|
|
9826
|
+
return e.split("").map((o) => {
|
|
9827
|
+
for (const i of r)
|
|
9828
|
+
if (e.includes(i) && i.includes(o))
|
|
9829
|
+
return o;
|
|
9830
|
+
return J[o] || o;
|
|
8123
9831
|
}).join("");
|
|
8124
9832
|
}
|
|
8125
|
-
function
|
|
9833
|
+
function P(e) {
|
|
8126
9834
|
switch (e) {
|
|
8127
9835
|
case "accented":
|
|
8128
9836
|
return {
|
|
@@ -8156,22 +9864,22 @@ function T(e) {
|
|
|
8156
9864
|
};
|
|
8157
9865
|
}
|
|
8158
9866
|
}
|
|
8159
|
-
function
|
|
9867
|
+
function Vo(e, t) {
|
|
8160
9868
|
const r = {};
|
|
8161
|
-
for (const [
|
|
8162
|
-
r[
|
|
9869
|
+
for (const [o, i] of Object.entries(e))
|
|
9870
|
+
r[o] = ue(i, t);
|
|
8163
9871
|
return r;
|
|
8164
9872
|
}
|
|
8165
|
-
function
|
|
9873
|
+
function It(e) {
|
|
8166
9874
|
return /[^\x00-\x7F]/.test(e);
|
|
8167
9875
|
}
|
|
8168
|
-
function
|
|
9876
|
+
function Vt(e) {
|
|
8169
9877
|
if (!e || /^[\d.,-]+$/.test(e) || e.startsWith("["))
|
|
8170
9878
|
return !1;
|
|
8171
|
-
const
|
|
8172
|
-
return
|
|
9879
|
+
const t = /[a-zA-Z]{2,}/.test(e), r = It(e);
|
|
9880
|
+
return t && !r;
|
|
8173
9881
|
}
|
|
8174
|
-
function
|
|
9882
|
+
function Ho(e, t) {
|
|
8175
9883
|
const r = {
|
|
8176
9884
|
totalKeys: Object.keys(e).length,
|
|
8177
9885
|
hardcodedStrings: [],
|
|
@@ -8179,70 +9887,70 @@ function Vt(e, o) {
|
|
|
8179
9887
|
placeholderMismatches: [],
|
|
8180
9888
|
potentialIssues: 0
|
|
8181
9889
|
};
|
|
8182
|
-
for (const [
|
|
8183
|
-
if (!
|
|
8184
|
-
r.emptyValues.push(
|
|
9890
|
+
for (const [o, i] of Object.entries(e)) {
|
|
9891
|
+
if (!i || i.trim() === "") {
|
|
9892
|
+
r.emptyValues.push(o), r.potentialIssues++;
|
|
8185
9893
|
continue;
|
|
8186
9894
|
}
|
|
8187
|
-
if (
|
|
8188
|
-
const
|
|
8189
|
-
(s.length > 0 ||
|
|
8190
|
-
key:
|
|
9895
|
+
if (Vt(i) && r.hardcodedStrings.push(o), t && t[o]) {
|
|
9896
|
+
const a = Q(i), n = Q(t[o]), s = a.filter((d) => !n.includes(d)), l = n.filter((d) => !a.includes(d));
|
|
9897
|
+
(s.length > 0 || l.length > 0) && (r.placeholderMismatches.push({
|
|
9898
|
+
key: o,
|
|
8191
9899
|
placeholders: [
|
|
8192
|
-
...s.map((
|
|
8193
|
-
...
|
|
9900
|
+
...s.map((d) => `-${d}`),
|
|
9901
|
+
...l.map((d) => `+${d}`)
|
|
8194
9902
|
]
|
|
8195
9903
|
}), r.potentialIssues++);
|
|
8196
9904
|
}
|
|
8197
9905
|
}
|
|
8198
9906
|
return r;
|
|
8199
9907
|
}
|
|
8200
|
-
function
|
|
9908
|
+
function Q(e) {
|
|
8201
9909
|
return (e.match(/\{([^}]+)\}/g) || []).map((r) => r.replace(/[{}]/g, "").split(",")[0].trim());
|
|
8202
9910
|
}
|
|
8203
|
-
const
|
|
8204
|
-
function
|
|
9911
|
+
const pe = I(null);
|
|
9912
|
+
function Wo({
|
|
8205
9913
|
children: e,
|
|
8206
|
-
initialEnabled:
|
|
9914
|
+
initialEnabled: t = !1,
|
|
8207
9915
|
initialMode: r = "full"
|
|
8208
9916
|
}) {
|
|
8209
|
-
const [
|
|
9917
|
+
const [o, i] = x(t), [a, n] = x(r), s = b(() => P(a), [a]), l = b(() => (u) => o ? ue(u, s) : u, [o, s]), d = b(
|
|
8210
9918
|
() => ({
|
|
8211
|
-
enabled:
|
|
8212
|
-
mode:
|
|
9919
|
+
enabled: o,
|
|
9920
|
+
mode: a,
|
|
8213
9921
|
options: s,
|
|
8214
|
-
toggle: () =>
|
|
8215
|
-
setMode:
|
|
8216
|
-
transform:
|
|
9922
|
+
toggle: () => i((u) => !u),
|
|
9923
|
+
setMode: n,
|
|
9924
|
+
transform: l
|
|
8217
9925
|
}),
|
|
8218
|
-
[
|
|
9926
|
+
[o, a, s, l]
|
|
8219
9927
|
);
|
|
8220
|
-
return /* @__PURE__ */
|
|
9928
|
+
return /* @__PURE__ */ O(pe.Provider, { value: d, children: e });
|
|
8221
9929
|
}
|
|
8222
|
-
function
|
|
8223
|
-
const e =
|
|
9930
|
+
function qo() {
|
|
9931
|
+
const e = B(pe);
|
|
8224
9932
|
return e || {
|
|
8225
9933
|
enabled: !1,
|
|
8226
9934
|
mode: "full",
|
|
8227
|
-
options:
|
|
9935
|
+
options: P("full"),
|
|
8228
9936
|
toggle: () => {
|
|
8229
9937
|
},
|
|
8230
9938
|
setMode: () => {
|
|
8231
9939
|
},
|
|
8232
|
-
transform: (
|
|
9940
|
+
transform: (t) => t
|
|
8233
9941
|
};
|
|
8234
9942
|
}
|
|
8235
|
-
const
|
|
9943
|
+
const Uo = {
|
|
8236
9944
|
/** Minimal: brackets only */
|
|
8237
9945
|
MINIMAL: { addBrackets: !0, addAccents: !1, expansionFactor: 0 },
|
|
8238
9946
|
/** Accented: brackets + accents */
|
|
8239
|
-
ACCENTED:
|
|
9947
|
+
ACCENTED: P("accented"),
|
|
8240
9948
|
/** Expanded: brackets + 30% expansion */
|
|
8241
|
-
EXPANDED:
|
|
9949
|
+
EXPANDED: P("expansion"),
|
|
8242
9950
|
/** Bidi: brackets + RTL markers */
|
|
8243
|
-
BIDI:
|
|
9951
|
+
BIDI: P("bidi"),
|
|
8244
9952
|
/** Full: brackets + accents + expansion */
|
|
8245
|
-
FULL:
|
|
9953
|
+
FULL: P("full"),
|
|
8246
9954
|
/** Finnish: 40% expansion (Finnish is very long) */
|
|
8247
9955
|
FINNISH: { addBrackets: !0, addAccents: !0, expansionFactor: 0.4 },
|
|
8248
9956
|
/** German: 35% expansion */
|
|
@@ -8250,376 +9958,376 @@ const Kt = {
|
|
|
8250
9958
|
/** CJK: Short expansion, no accents (CJK often shorter) */
|
|
8251
9959
|
CJK: { addBrackets: !0, addAccents: !1, expansionFactor: -0.1 }
|
|
8252
9960
|
};
|
|
8253
|
-
class
|
|
8254
|
-
constructor(
|
|
8255
|
-
this.cache = /* @__PURE__ */ new Map(), this.ttl =
|
|
9961
|
+
class Ht {
|
|
9962
|
+
constructor(t = 0) {
|
|
9963
|
+
this.cache = /* @__PURE__ */ new Map(), this.ttl = t;
|
|
8256
9964
|
}
|
|
8257
|
-
getCacheKey(
|
|
8258
|
-
return r ? `${
|
|
9965
|
+
getCacheKey(t, r) {
|
|
9966
|
+
return r ? `${t}:${r}` : t;
|
|
8259
9967
|
}
|
|
8260
|
-
get(
|
|
8261
|
-
const
|
|
8262
|
-
return
|
|
9968
|
+
get(t, r) {
|
|
9969
|
+
const o = this.getCacheKey(t, r), i = this.cache.get(o);
|
|
9970
|
+
return i ? this.ttl > 0 && Date.now() > i.expiresAt ? (this.cache.delete(o), null) : i.data : null;
|
|
8263
9971
|
}
|
|
8264
|
-
set(
|
|
8265
|
-
const
|
|
8266
|
-
this.cache.set(
|
|
9972
|
+
set(t, r, o) {
|
|
9973
|
+
const i = this.getCacheKey(t, o), a = Date.now();
|
|
9974
|
+
this.cache.set(i, {
|
|
8267
9975
|
data: r,
|
|
8268
|
-
loadedAt:
|
|
8269
|
-
expiresAt: this.ttl > 0 ?
|
|
9976
|
+
loadedAt: a,
|
|
9977
|
+
expiresAt: this.ttl > 0 ? a + this.ttl : 1 / 0
|
|
8270
9978
|
});
|
|
8271
9979
|
}
|
|
8272
|
-
has(
|
|
8273
|
-
return this.get(
|
|
9980
|
+
has(t, r) {
|
|
9981
|
+
return this.get(t, r) !== null;
|
|
8274
9982
|
}
|
|
8275
|
-
delete(
|
|
9983
|
+
delete(t, r) {
|
|
8276
9984
|
if (r)
|
|
8277
|
-
this.cache.delete(this.getCacheKey(
|
|
9985
|
+
this.cache.delete(this.getCacheKey(t, r));
|
|
8278
9986
|
else
|
|
8279
|
-
for (const
|
|
8280
|
-
(
|
|
9987
|
+
for (const o of this.cache.keys())
|
|
9988
|
+
(o === t || o.startsWith(`${t}:`)) && this.cache.delete(o);
|
|
8281
9989
|
}
|
|
8282
9990
|
clear() {
|
|
8283
9991
|
this.cache.clear();
|
|
8284
9992
|
}
|
|
8285
9993
|
getStats() {
|
|
8286
|
-
const
|
|
9994
|
+
const t = /* @__PURE__ */ new Set();
|
|
8287
9995
|
for (const r of this.cache.keys())
|
|
8288
|
-
|
|
9996
|
+
t.add(r.split(":")[0]);
|
|
8289
9997
|
return {
|
|
8290
9998
|
size: this.cache.size,
|
|
8291
|
-
languages: Array.from(
|
|
9999
|
+
languages: Array.from(t)
|
|
8292
10000
|
};
|
|
8293
10001
|
}
|
|
8294
10002
|
}
|
|
8295
10003
|
function me(e) {
|
|
8296
10004
|
const {
|
|
8297
|
-
loadFn:
|
|
10005
|
+
loadFn: t,
|
|
8298
10006
|
fallbackLang: r = "en",
|
|
8299
|
-
cacheTtl:
|
|
8300
|
-
preloadLanguages:
|
|
8301
|
-
namespaces:
|
|
8302
|
-
defaultNamespace:
|
|
10007
|
+
cacheTtl: o = 0,
|
|
10008
|
+
preloadLanguages: i = [],
|
|
10009
|
+
namespaces: a = [],
|
|
10010
|
+
defaultNamespace: n,
|
|
8303
10011
|
onLoadStart: s,
|
|
8304
|
-
onLoadComplete:
|
|
8305
|
-
onLoadError:
|
|
8306
|
-
} = e,
|
|
10012
|
+
onLoadComplete: l,
|
|
10013
|
+
onLoadError: d
|
|
10014
|
+
} = e, u = new Ht(o), v = /* @__PURE__ */ new Set(), p = /* @__PURE__ */ new Map();
|
|
8307
10015
|
let m = r;
|
|
8308
|
-
const
|
|
10016
|
+
const f = /* @__PURE__ */ new Set();
|
|
8309
10017
|
function g() {
|
|
8310
|
-
const c =
|
|
8311
|
-
|
|
10018
|
+
const c = z();
|
|
10019
|
+
f.forEach((h) => h(c));
|
|
8312
10020
|
}
|
|
8313
|
-
function
|
|
10021
|
+
function y(c, h) {
|
|
8314
10022
|
return h ? `${c}:${h}` : c;
|
|
8315
10023
|
}
|
|
8316
|
-
function
|
|
10024
|
+
function z() {
|
|
8317
10025
|
const c = /* @__PURE__ */ new Set(), h = /* @__PURE__ */ new Set();
|
|
8318
|
-
for (const
|
|
8319
|
-
|
|
8320
|
-
for (const
|
|
8321
|
-
const
|
|
8322
|
-
h.add(
|
|
10026
|
+
for (const C of T)
|
|
10027
|
+
u.has(C) && c.add(C);
|
|
10028
|
+
for (const C of v) {
|
|
10029
|
+
const N = C.split(":")[0];
|
|
10030
|
+
h.add(N);
|
|
8323
10031
|
}
|
|
8324
10032
|
return {
|
|
8325
10033
|
loadedLanguages: c,
|
|
8326
10034
|
loadingLanguages: h,
|
|
8327
|
-
failedLanguages: new Map(
|
|
10035
|
+
failedLanguages: new Map(p),
|
|
8328
10036
|
currentLanguage: m
|
|
8329
10037
|
};
|
|
8330
10038
|
}
|
|
8331
|
-
async function
|
|
8332
|
-
const
|
|
8333
|
-
if (
|
|
8334
|
-
return
|
|
8335
|
-
if (
|
|
8336
|
-
return new Promise((
|
|
10039
|
+
async function E(c, h) {
|
|
10040
|
+
const C = y(c, h), N = u.get(c, h);
|
|
10041
|
+
if (N)
|
|
10042
|
+
return N;
|
|
10043
|
+
if (v.has(C))
|
|
10044
|
+
return new Promise((S) => {
|
|
8337
10045
|
const R = setInterval(() => {
|
|
8338
|
-
|
|
10046
|
+
v.has(C) || (clearInterval(R), S(u.get(c, h)));
|
|
8339
10047
|
}, 50);
|
|
8340
10048
|
});
|
|
8341
|
-
|
|
10049
|
+
v.add(C), p.delete(c), s == null || s(c, h), g();
|
|
8342
10050
|
try {
|
|
8343
|
-
const
|
|
8344
|
-
return
|
|
8345
|
-
} catch (
|
|
8346
|
-
const R =
|
|
8347
|
-
return
|
|
10051
|
+
const S = await t(c, h);
|
|
10052
|
+
return u.set(c, S, h), l == null || l(c, h), S;
|
|
10053
|
+
} catch (S) {
|
|
10054
|
+
const R = S instanceof Error ? S : new Error(String(S));
|
|
10055
|
+
return p.set(c, R), d == null || d(c, R, h), c !== r && !h ? (console.warn(`Failed to load ${c}, falling back to ${r}`), E(r, h)) : null;
|
|
8348
10056
|
} finally {
|
|
8349
|
-
|
|
10057
|
+
v.delete(C), g();
|
|
8350
10058
|
}
|
|
8351
10059
|
}
|
|
8352
|
-
async function
|
|
8353
|
-
await Promise.all(c.map((h) =>
|
|
10060
|
+
async function j(c) {
|
|
10061
|
+
await Promise.all(c.map((h) => E(h)));
|
|
8354
10062
|
}
|
|
8355
|
-
async function
|
|
8356
|
-
|
|
8357
|
-
|
|
10063
|
+
async function k() {
|
|
10064
|
+
i.length !== 0 && await Promise.allSettled(
|
|
10065
|
+
i.map((c) => a.length > 0 ? Promise.all(a.map((h) => E(c, h))) : E(c))
|
|
8358
10066
|
);
|
|
8359
10067
|
}
|
|
8360
10068
|
function M(c, h) {
|
|
8361
|
-
return
|
|
10069
|
+
return u.get(c, h);
|
|
8362
10070
|
}
|
|
8363
|
-
function
|
|
8364
|
-
return
|
|
10071
|
+
function A(c, h) {
|
|
10072
|
+
return u.has(c, h);
|
|
8365
10073
|
}
|
|
8366
10074
|
function he(c) {
|
|
8367
|
-
for (const h of
|
|
10075
|
+
for (const h of v)
|
|
8368
10076
|
if (h === c || h.startsWith(`${c}:`))
|
|
8369
10077
|
return !0;
|
|
8370
10078
|
return !1;
|
|
8371
10079
|
}
|
|
8372
|
-
function
|
|
8373
|
-
return
|
|
10080
|
+
function ve() {
|
|
10081
|
+
return u.getStats().languages;
|
|
8374
10082
|
}
|
|
8375
|
-
function
|
|
8376
|
-
c ?
|
|
10083
|
+
function fe(c) {
|
|
10084
|
+
c ? u.delete(c) : u.clear(), g();
|
|
8377
10085
|
}
|
|
8378
10086
|
async function be(c) {
|
|
8379
|
-
|
|
10087
|
+
A(c) || await E(c), m = c, g();
|
|
8380
10088
|
}
|
|
8381
|
-
function
|
|
10089
|
+
function we() {
|
|
8382
10090
|
return m;
|
|
8383
10091
|
}
|
|
8384
|
-
function
|
|
8385
|
-
return
|
|
10092
|
+
function ke(c) {
|
|
10093
|
+
return f.add(c), () => f.delete(c);
|
|
8386
10094
|
}
|
|
8387
10095
|
return {
|
|
8388
|
-
loadLanguage:
|
|
8389
|
-
loadLanguages:
|
|
8390
|
-
preloadLanguages:
|
|
10096
|
+
loadLanguage: E,
|
|
10097
|
+
loadLanguages: j,
|
|
10098
|
+
preloadLanguages: k,
|
|
8391
10099
|
getTranslations: M,
|
|
8392
|
-
isLoaded:
|
|
10100
|
+
isLoaded: A,
|
|
8393
10101
|
isLoading: he,
|
|
8394
|
-
getLoadedLanguages:
|
|
8395
|
-
clearCache:
|
|
8396
|
-
getState:
|
|
10102
|
+
getLoadedLanguages: ve,
|
|
10103
|
+
clearCache: fe,
|
|
10104
|
+
getState: z,
|
|
8397
10105
|
setLanguage: be,
|
|
8398
|
-
getCurrentLanguage:
|
|
8399
|
-
subscribe:
|
|
10106
|
+
getCurrentLanguage: we,
|
|
10107
|
+
subscribe: ke
|
|
8400
10108
|
};
|
|
8401
10109
|
}
|
|
8402
|
-
function
|
|
10110
|
+
function Ko(e, t) {
|
|
8403
10111
|
return me({
|
|
8404
|
-
...
|
|
8405
|
-
loadFn: async (r,
|
|
8406
|
-
const
|
|
8407
|
-
if (!
|
|
8408
|
-
throw new Error(`Failed to load translations: ${
|
|
8409
|
-
return
|
|
10112
|
+
...t,
|
|
10113
|
+
loadFn: async (r, o) => {
|
|
10114
|
+
const i = o ? `${e}/${r}/${o}.json` : `${e}/${r}.json`, a = await fetch(i);
|
|
10115
|
+
if (!a.ok)
|
|
10116
|
+
throw new Error(`Failed to load translations: ${a.status}`);
|
|
10117
|
+
return a.json();
|
|
8410
10118
|
}
|
|
8411
10119
|
});
|
|
8412
10120
|
}
|
|
8413
|
-
function
|
|
10121
|
+
function Go(e, t) {
|
|
8414
10122
|
return me({
|
|
8415
|
-
...
|
|
8416
|
-
loadFn: async (r,
|
|
10123
|
+
...t,
|
|
10124
|
+
loadFn: async (r, o) => (await e(r, o)).default
|
|
8417
10125
|
});
|
|
8418
10126
|
}
|
|
8419
10127
|
const ge = I(null);
|
|
8420
|
-
function
|
|
10128
|
+
function Zo({
|
|
8421
10129
|
children: e,
|
|
8422
|
-
loader:
|
|
10130
|
+
loader: t,
|
|
8423
10131
|
initialLanguage: r,
|
|
8424
|
-
namespace:
|
|
10132
|
+
namespace: o
|
|
8425
10133
|
}) {
|
|
8426
|
-
const [
|
|
8427
|
-
L(() =>
|
|
8428
|
-
r && !
|
|
8429
|
-
}, [
|
|
8430
|
-
const
|
|
8431
|
-
async (
|
|
10134
|
+
const [i, a] = x(() => t.getState()), [n, s] = x(null);
|
|
10135
|
+
L(() => t.subscribe(a), [t]), L(() => {
|
|
10136
|
+
r && !t.isLoaded(r, o) && t.loadLanguage(r, o).catch(s);
|
|
10137
|
+
}, [t, r, o]);
|
|
10138
|
+
const l = b(() => t.getTranslations(i.currentLanguage, o) || {}, [t, i.currentLanguage, o]), d = ee(
|
|
10139
|
+
async (v) => {
|
|
8432
10140
|
s(null);
|
|
8433
10141
|
try {
|
|
8434
|
-
await
|
|
8435
|
-
} catch (
|
|
8436
|
-
s(
|
|
10142
|
+
await t.setLanguage(v);
|
|
10143
|
+
} catch (p) {
|
|
10144
|
+
s(p instanceof Error ? p : new Error(String(p)));
|
|
8437
10145
|
}
|
|
8438
10146
|
},
|
|
8439
|
-
[
|
|
8440
|
-
),
|
|
10147
|
+
[t]
|
|
10148
|
+
), u = b(
|
|
8441
10149
|
() => ({
|
|
8442
|
-
loader:
|
|
8443
|
-
translations:
|
|
8444
|
-
isLoading:
|
|
8445
|
-
error:
|
|
8446
|
-
setLanguage:
|
|
8447
|
-
currentLanguage:
|
|
8448
|
-
loadedLanguages: Array.from(
|
|
10150
|
+
loader: t,
|
|
10151
|
+
translations: l,
|
|
10152
|
+
isLoading: i.loadingLanguages.size > 0,
|
|
10153
|
+
error: n,
|
|
10154
|
+
setLanguage: d,
|
|
10155
|
+
currentLanguage: i.currentLanguage,
|
|
10156
|
+
loadedLanguages: Array.from(i.loadedLanguages)
|
|
8449
10157
|
}),
|
|
8450
|
-
[
|
|
10158
|
+
[t, l, i, n, d]
|
|
8451
10159
|
);
|
|
8452
|
-
return /* @__PURE__ */
|
|
10160
|
+
return /* @__PURE__ */ O(ge.Provider, { value: u, children: e });
|
|
8453
10161
|
}
|
|
8454
|
-
function
|
|
8455
|
-
const e =
|
|
10162
|
+
function Wt() {
|
|
10163
|
+
const e = B(ge);
|
|
8456
10164
|
if (!e)
|
|
8457
10165
|
throw new Error("useDynamicI18n must be used within DynamicI18nProvider");
|
|
8458
10166
|
return e;
|
|
8459
10167
|
}
|
|
8460
|
-
function
|
|
8461
|
-
const { translations:
|
|
10168
|
+
function Jo(e) {
|
|
10169
|
+
const { translations: t, currentLanguage: r, loader: o, isLoading: i } = Wt();
|
|
8462
10170
|
return L(() => {
|
|
8463
|
-
e && !
|
|
8464
|
-
}, [
|
|
8465
|
-
(
|
|
8466
|
-
let
|
|
10171
|
+
e && !o.isLoaded(r, e) && o.loadLanguage(r, e);
|
|
10172
|
+
}, [o, r, e]), { t: ee(
|
|
10173
|
+
(n, s) => {
|
|
10174
|
+
let l = t[n] || n;
|
|
8467
10175
|
if (s)
|
|
8468
|
-
for (const [
|
|
8469
|
-
|
|
8470
|
-
return
|
|
10176
|
+
for (const [d, u] of Object.entries(s))
|
|
10177
|
+
l = l.replace(new RegExp(`\\{${d}\\}`, "g"), String(u));
|
|
10178
|
+
return l;
|
|
8471
10179
|
},
|
|
8472
|
-
[
|
|
8473
|
-
), isLoading:
|
|
10180
|
+
[t]
|
|
10181
|
+
), isLoading: i, currentLanguage: r };
|
|
8474
10182
|
}
|
|
8475
|
-
function
|
|
10183
|
+
function Yo(e, t, r) {
|
|
8476
10184
|
switch (r) {
|
|
8477
10185
|
case "immediate":
|
|
8478
|
-
e.loadLanguages(
|
|
10186
|
+
e.loadLanguages(t);
|
|
8479
10187
|
break;
|
|
8480
10188
|
case "idle":
|
|
8481
10189
|
"requestIdleCallback" in window ? window.requestIdleCallback(() => {
|
|
8482
|
-
e.loadLanguages(
|
|
8483
|
-
}) : setTimeout(() => e.loadLanguages(
|
|
10190
|
+
e.loadLanguages(t);
|
|
10191
|
+
}) : setTimeout(() => e.loadLanguages(t), 1e3);
|
|
8484
10192
|
break;
|
|
8485
10193
|
case "visible":
|
|
8486
10194
|
if ("IntersectionObserver" in window) {
|
|
8487
|
-
const
|
|
10195
|
+
const o = new IntersectionObserver(
|
|
8488
10196
|
() => {
|
|
8489
|
-
e.loadLanguages(
|
|
10197
|
+
e.loadLanguages(t), o.disconnect();
|
|
8490
10198
|
},
|
|
8491
10199
|
{ threshold: 0.1 }
|
|
8492
10200
|
);
|
|
8493
|
-
|
|
10201
|
+
o.observe(document.body);
|
|
8494
10202
|
} else
|
|
8495
|
-
e.loadLanguages(
|
|
10203
|
+
e.loadLanguages(t);
|
|
8496
10204
|
break;
|
|
8497
10205
|
case "interaction": {
|
|
8498
|
-
const
|
|
8499
|
-
e.loadLanguages(
|
|
10206
|
+
const o = () => {
|
|
10207
|
+
e.loadLanguages(t), window.removeEventListener("click", o), window.removeEventListener("keydown", o), window.removeEventListener("touchstart", o);
|
|
8500
10208
|
};
|
|
8501
|
-
window.addEventListener("click",
|
|
10209
|
+
window.addEventListener("click", o, { once: !0 }), window.addEventListener("keydown", o, { once: !0 }), window.addEventListener("touchstart", o, { once: !0 });
|
|
8502
10210
|
break;
|
|
8503
10211
|
}
|
|
8504
10212
|
}
|
|
8505
10213
|
}
|
|
8506
|
-
async function
|
|
8507
|
-
const { fallback: r = "en", preferredLanguages:
|
|
8508
|
-
for (const
|
|
8509
|
-
if (
|
|
8510
|
-
return await e.setLanguage(
|
|
8511
|
-
const
|
|
8512
|
-
return
|
|
10214
|
+
async function Xo(e, t) {
|
|
10215
|
+
const { fallback: r = "en", preferredLanguages: o = [] } = t || {};
|
|
10216
|
+
for (const a of o)
|
|
10217
|
+
if (T.includes(a))
|
|
10218
|
+
return await e.setLanguage(a), a;
|
|
10219
|
+
const i = navigator.language.split("-")[0].toLowerCase();
|
|
10220
|
+
return T.includes(i) ? (await e.setLanguage(i), i) : (await e.setLanguage(r), r);
|
|
8513
10221
|
}
|
|
8514
10222
|
export {
|
|
8515
|
-
|
|
8516
|
-
|
|
8517
|
-
|
|
8518
|
-
|
|
8519
|
-
|
|
8520
|
-
|
|
8521
|
-
|
|
8522
|
-
|
|
8523
|
-
|
|
8524
|
-
|
|
8525
|
-
|
|
8526
|
-
|
|
8527
|
-
|
|
8528
|
-
|
|
8529
|
-
|
|
8530
|
-
|
|
8531
|
-
|
|
8532
|
-
|
|
8533
|
-
|
|
8534
|
-
|
|
8535
|
-
|
|
8536
|
-
|
|
8537
|
-
|
|
8538
|
-
|
|
8539
|
-
|
|
8540
|
-
|
|
8541
|
-
|
|
10223
|
+
V as CALENDAR_INFO,
|
|
10224
|
+
xt as CELESTIAL_STEMS,
|
|
10225
|
+
Pt as CHINESE_ZODIAC,
|
|
10226
|
+
le as DEFAULT_CALENDAR,
|
|
10227
|
+
Zo as DynamicI18nProvider,
|
|
10228
|
+
Do as HEBREW_MONTHS,
|
|
10229
|
+
jo as HEBREW_MONTHS_LEAP,
|
|
10230
|
+
Co as HIJRI_MONTHS,
|
|
10231
|
+
K as JAPANESE_ERAS,
|
|
10232
|
+
ae as NICE_GLOSSARY,
|
|
10233
|
+
w as NICE_I18N_DICTIONARIES,
|
|
10234
|
+
$e as NICE_I18N_VARIANTS,
|
|
10235
|
+
T as NICE_SUPPORTED_LANGS,
|
|
10236
|
+
Gt as NiceI18nProvider,
|
|
10237
|
+
xo as PERSIAN_MONTHS,
|
|
10238
|
+
Uo as PSEUDO_PRESETS,
|
|
10239
|
+
Wo as PseudoLocalizationProvider,
|
|
10240
|
+
ro as RTLProvider,
|
|
10241
|
+
W as RTL_CSS_VARS,
|
|
10242
|
+
at as RTL_LANGUAGES,
|
|
10243
|
+
ne as TIMEZONE_GROUPS,
|
|
10244
|
+
Oo as addAccents,
|
|
10245
|
+
Lt as addBidiMarkers,
|
|
10246
|
+
Io as addBrackets,
|
|
10247
|
+
Ho as analyzeDictionary,
|
|
10248
|
+
no as analyzeStylesForRTL,
|
|
10249
|
+
It as containsNonAscii,
|
|
8542
10250
|
se as convertTimezone,
|
|
8543
|
-
|
|
8544
|
-
|
|
8545
|
-
|
|
10251
|
+
de as createCalendarFormatter,
|
|
10252
|
+
bt as createCurrencyFormatter,
|
|
10253
|
+
ht as createDateFormatter,
|
|
8546
10254
|
me as createDynamicLoader,
|
|
8547
|
-
|
|
8548
|
-
|
|
8549
|
-
|
|
8550
|
-
|
|
8551
|
-
|
|
8552
|
-
|
|
8553
|
-
|
|
8554
|
-
|
|
8555
|
-
|
|
8556
|
-
|
|
8557
|
-
|
|
8558
|
-
|
|
8559
|
-
|
|
8560
|
-
|
|
8561
|
-
|
|
8562
|
-
|
|
8563
|
-
|
|
8564
|
-
|
|
8565
|
-
|
|
8566
|
-
|
|
8567
|
-
|
|
8568
|
-
|
|
8569
|
-
|
|
8570
|
-
|
|
8571
|
-
|
|
8572
|
-
|
|
8573
|
-
|
|
8574
|
-
|
|
8575
|
-
|
|
8576
|
-
|
|
8577
|
-
|
|
8578
|
-
|
|
10255
|
+
Ko as createFetchLoader,
|
|
10256
|
+
$t as createICUTranslator,
|
|
10257
|
+
Go as createImportLoader,
|
|
10258
|
+
ft as createNumberFormatter,
|
|
10259
|
+
vt as createTimeFormatter,
|
|
10260
|
+
Ct as createTimezoneFormatter,
|
|
10261
|
+
Jt as createTranslator,
|
|
10262
|
+
Xo as detectAndLoad,
|
|
10263
|
+
Xt as detectBrowserLanguage,
|
|
10264
|
+
Vt as detectHardcodedText,
|
|
10265
|
+
Z as detectTimezone,
|
|
10266
|
+
Nt as expandText,
|
|
10267
|
+
vo as findSimilarTranslation,
|
|
10268
|
+
dt as flipAlignment,
|
|
10269
|
+
oo as flipHorizontal,
|
|
10270
|
+
it as formatICU,
|
|
10271
|
+
Yt as formatMessage,
|
|
10272
|
+
zt as fromUTC,
|
|
10273
|
+
uo as generateCoverageReport,
|
|
10274
|
+
co as generateTranslationCode,
|
|
10275
|
+
ko as getAllTimezones,
|
|
10276
|
+
mt as getAllTranslationStats,
|
|
10277
|
+
No as getAvailableCalendars,
|
|
10278
|
+
Ro as getCalendarInfo,
|
|
10279
|
+
Fo as getCelestialStem,
|
|
10280
|
+
Bo as getChineseZodiac,
|
|
10281
|
+
Dt as getCurrentCalendarDate,
|
|
10282
|
+
to as getDocumentDirection,
|
|
10283
|
+
fo as getGlossaryForLanguage,
|
|
10284
|
+
So as getHijriMonthDays,
|
|
10285
|
+
At as getJapaneseEra,
|
|
10286
|
+
Po as getJapaneseYear,
|
|
8579
10287
|
D as getLocaleTag,
|
|
8580
|
-
|
|
8581
|
-
|
|
8582
|
-
|
|
10288
|
+
ct as getLogicalProperty,
|
|
10289
|
+
ut as getMissingTranslations,
|
|
10290
|
+
yo as getNextDSTTransition,
|
|
8583
10291
|
re as getOrdinalCategory,
|
|
8584
|
-
|
|
8585
|
-
|
|
8586
|
-
|
|
8587
|
-
|
|
8588
|
-
|
|
8589
|
-
|
|
10292
|
+
oe as getPluralCategory,
|
|
10293
|
+
P as getPseudoLocalizationPreset,
|
|
10294
|
+
so as getRTLCSSVars,
|
|
10295
|
+
Lo as getRecommendedCalendars,
|
|
10296
|
+
lo as getSourceKeys,
|
|
10297
|
+
nt as getTextDirection,
|
|
8590
10298
|
F as getTimezoneInfo,
|
|
8591
|
-
|
|
8592
|
-
|
|
8593
|
-
|
|
8594
|
-
|
|
8595
|
-
|
|
8596
|
-
|
|
8597
|
-
|
|
8598
|
-
|
|
8599
|
-
|
|
8600
|
-
|
|
8601
|
-
|
|
8602
|
-
|
|
8603
|
-
|
|
8604
|
-
|
|
8605
|
-
|
|
8606
|
-
|
|
8607
|
-
|
|
8608
|
-
|
|
8609
|
-
|
|
10299
|
+
Eo as getTimezonesGrouped,
|
|
10300
|
+
pt as getTranslationStats,
|
|
10301
|
+
q as isDSTActive,
|
|
10302
|
+
Ao as isHebrewLeapYear,
|
|
10303
|
+
jt as isHijriLeapYear,
|
|
10304
|
+
To as isPersianLeapYear,
|
|
10305
|
+
ie as isRTLLanguage,
|
|
10306
|
+
Qe as isSupported,
|
|
10307
|
+
wo as isValidTimezone,
|
|
10308
|
+
kt as lookupGlossary,
|
|
10309
|
+
Qt as ordinal,
|
|
10310
|
+
_t as plural,
|
|
10311
|
+
Yo as preloadWithStrategy,
|
|
10312
|
+
ue as pseudoLocalize,
|
|
10313
|
+
Vo as pseudoLocalizeDictionary,
|
|
10314
|
+
Kt as resolvePlVariant,
|
|
10315
|
+
lt as rtlValue,
|
|
10316
|
+
eo as select,
|
|
10317
|
+
st as setDocumentDirection,
|
|
8610
10318
|
ce as toCalendar,
|
|
8611
|
-
|
|
8612
|
-
|
|
8613
|
-
|
|
8614
|
-
|
|
8615
|
-
|
|
8616
|
-
|
|
8617
|
-
|
|
8618
|
-
|
|
8619
|
-
|
|
8620
|
-
|
|
8621
|
-
|
|
8622
|
-
|
|
8623
|
-
|
|
8624
|
-
|
|
10319
|
+
yt as toUTC,
|
|
10320
|
+
Mo as useCalendar,
|
|
10321
|
+
Wt as useDynamicI18n,
|
|
10322
|
+
Jo as useDynamicTranslation,
|
|
10323
|
+
ao as useIsRTL,
|
|
10324
|
+
ho as useNiceCurrencyFormat,
|
|
10325
|
+
po as useNiceDateFormat,
|
|
10326
|
+
go as useNiceNumberFormat,
|
|
10327
|
+
mo as useNiceTimeFormat,
|
|
10328
|
+
Zt as useNiceTranslation,
|
|
10329
|
+
qo as usePseudoLocalization,
|
|
10330
|
+
io as useRTL,
|
|
10331
|
+
zo as useTimezone,
|
|
10332
|
+
bo as validateAgainstGlossary
|
|
8625
10333
|
};
|