@nice2dev/i18n 1.0.20 → 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 +10 -10
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +2919 -847
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { useMemo 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",
|
|
@@ -178,6 +352,7 @@ const j = [
|
|
|
178
352
|
"sidebar.prefs.order.title": "Order items",
|
|
179
353
|
"sidebar.prefs.order.desc": "Drag items to reorder how they appear in the selected mode.",
|
|
180
354
|
"sidebar.prefs.order.pickMode": "Mode",
|
|
355
|
+
"sidebar.prefs.order.visibilityHint": "Order applies to top-level items inside each source group. Collapse a source header to see only top-level entries when verifying the change.",
|
|
181
356
|
"sidebar.prefs.order.empty": "No reorderable items in this mode.",
|
|
182
357
|
"sidebar.prefs.order.resetMode": "Reset to default order",
|
|
183
358
|
"sidebar.prefs.hidden.title": "Hidden items",
|
|
@@ -784,7 +959,7 @@ const j = [
|
|
|
784
959
|
"vectorEditor.layers.hide": "Hide",
|
|
785
960
|
"vectorEditor.layers.lock": "Lock",
|
|
786
961
|
"vectorEditor.layers.unlock": "Unlock"
|
|
787
|
-
},
|
|
962
|
+
}, ye = {
|
|
788
963
|
ok: "OK",
|
|
789
964
|
cancel: "Anuluj",
|
|
790
965
|
save: "Zapisz",
|
|
@@ -886,6 +1061,180 @@ const j = [
|
|
|
886
1061
|
"navShell.home.sections.openTabs": "Otwarte teraz",
|
|
887
1062
|
"navShell.home.sections.shortcuts": "Twoje skróty",
|
|
888
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.",
|
|
889
1238
|
// ── Sidebar context menu ──
|
|
890
1239
|
"sidebar.menu.open": "Otwórz",
|
|
891
1240
|
"sidebar.menu.openNewTab": "Otwórz w nowej karcie",
|
|
@@ -920,6 +1269,7 @@ const j = [
|
|
|
920
1269
|
"sidebar.prefs.order.title": "Kolejność elementów",
|
|
921
1270
|
"sidebar.prefs.order.desc": "Przeciągnij pozycje, żeby zmienić ich kolejność w wybranym trybie.",
|
|
922
1271
|
"sidebar.prefs.order.pickMode": "Tryb",
|
|
1272
|
+
"sidebar.prefs.order.visibilityHint": "Kolejność dotyczy elementów top-level wewnątrz każdej grupy źródła. Zwiń nagłówek źródła, aby zobaczyć tylko elementy top-level i sprawdzić efekt zmiany.",
|
|
923
1273
|
"sidebar.prefs.order.empty": "Brak elementów do uporządkowania w tym trybie.",
|
|
924
1274
|
"sidebar.prefs.order.resetMode": "Przywróć domyślną kolejność",
|
|
925
1275
|
"sidebar.prefs.hidden.title": "Ukryte elementy",
|
|
@@ -1489,7 +1839,7 @@ const j = [
|
|
|
1489
1839
|
"vectorEditor.layers.hide": "Ukryj",
|
|
1490
1840
|
"vectorEditor.layers.lock": "Zablokuj",
|
|
1491
1841
|
"vectorEditor.layers.unlock": "Odblokuj"
|
|
1492
|
-
},
|
|
1842
|
+
}, ze = {
|
|
1493
1843
|
ok: "OK",
|
|
1494
1844
|
cancel: "Abbrechen",
|
|
1495
1845
|
save: "Speichern",
|
|
@@ -2010,8 +2360,360 @@ const j = [
|
|
|
2010
2360
|
"noCode.codePreview.language": "Sprache",
|
|
2011
2361
|
"noCode.codePreview.format": "Code formatieren",
|
|
2012
2362
|
"noCode.codePreview.linesChanged": "Geänderte Zeilen",
|
|
2013
|
-
"noCode.codePreview.noChanges": "Keine Änderungen"
|
|
2014
|
-
|
|
2363
|
+
"noCode.codePreview.noChanges": "Keine Änderungen",
|
|
2364
|
+
// ── Navigation / Help / Home / Sidebar / Vector Editor (P2.5 backfill) ──
|
|
2365
|
+
"nav.help": "Hilfe",
|
|
2366
|
+
"navShell.home.title": "Start",
|
|
2367
|
+
"navShell.help.next": "Weiter",
|
|
2368
|
+
"navShell.help.back": "Zurück",
|
|
2369
|
+
"navShell.help.finish": "Fertig",
|
|
2370
|
+
"navShell.help.skip": "Überspringen",
|
|
2371
|
+
"navShell.help.stepOf": "von",
|
|
2372
|
+
"navShell.help.topNav.title": "Obere Navigation",
|
|
2373
|
+
"navShell.help.topNav.body": "Über die obere Leiste wechseln Sie Arbeitsbereiche, suchen, ändern Theme oder Sprache und öffnen Benachrichtigungen.",
|
|
2374
|
+
"navShell.help.sidebar.title": "Seitenleiste",
|
|
2375
|
+
"navShell.help.sidebar.body": "Durchsuchen Sie verfügbare Ansichten gruppiert nach Bereich. Wählen Sie eine Ansicht, um sie in einem neuen Tab zu öffnen.",
|
|
2376
|
+
"navShell.help.tabs.title": "Tabs",
|
|
2377
|
+
"navShell.help.tabs.body": "Jede geöffnete Ansicht lebt in einem eigenen Tab. Häufig genutzte anheften und mit Rechtsklick weitere Aktionen aufrufen.",
|
|
2378
|
+
"navShell.help.content.title": "Arbeitsbereich",
|
|
2379
|
+
"navShell.help.content.body": "Im Hauptbereich wird die aktive Ansicht angezeigt. Wechsel von Tabs oder Seitenleisten-Einträgen tauscht den Inhalt hier.",
|
|
2380
|
+
"navShell.home.subtitle": "Machen Sie dort weiter, wo Sie aufgehört haben.",
|
|
2381
|
+
"navShell.home.empty": "Öffnen Sie eine Ansicht aus der Seitenleiste oder den Tabs oben, um Ihren Arbeitsbereich zu füllen.",
|
|
2382
|
+
"navShell.home.greeting.morning": "Guten Morgen",
|
|
2383
|
+
"navShell.home.greeting.afternoon": "Guten Tag",
|
|
2384
|
+
"navShell.home.greeting.evening": "Guten Abend",
|
|
2385
|
+
"navShell.home.greeting.night": "Hallo",
|
|
2386
|
+
"navShell.home.sections.openTabs": "Jetzt geöffnet",
|
|
2387
|
+
"navShell.home.sections.shortcuts": "Ihre Verknüpfungen",
|
|
2388
|
+
"navShell.home.sections.allViews": "Alle Ansichten",
|
|
2389
|
+
"sidebar.menu.open": "Öffnen",
|
|
2390
|
+
"sidebar.menu.openNewTab": "In neuem Tab öffnen",
|
|
2391
|
+
"sidebar.menu.openBrowserTab": "In neuem Browser-Tab öffnen",
|
|
2392
|
+
"sidebar.menu.pinFavorite": "Zu Favoriten hinzufügen",
|
|
2393
|
+
"sidebar.menu.unpinFavorite": "Aus Favoriten entfernen",
|
|
2394
|
+
"sidebar.menu.hide": "Ausblenden",
|
|
2395
|
+
"sidebar.menu.copyLink": "Link kopieren",
|
|
2396
|
+
"sidebar.menu.pinSource": "Quelle anheften",
|
|
2397
|
+
"sidebar.menu.unpinSource": "Quelle lösen",
|
|
2398
|
+
"sidebar.menu.hideSource": "Quelle ausblenden",
|
|
2399
|
+
"sidebar.prefs.general": "Allgemein",
|
|
2400
|
+
"sidebar.prefs.display": "Anzeige",
|
|
2401
|
+
"sidebar.prefs.order": "Reihenfolge",
|
|
2402
|
+
"sidebar.prefs.hidden": "Ausgeblendete Elemente",
|
|
2403
|
+
"sidebar.prefs.reset": "Zurücksetzen",
|
|
2404
|
+
"sidebar.prefs.general.title": "Allgemein",
|
|
2405
|
+
"sidebar.prefs.general.desc": "Verhalten des Seitenleisten-Baums und Aktion bei Linksklick.",
|
|
2406
|
+
"sidebar.prefs.general.autoExpand": "Alle Zweige automatisch erweitern",
|
|
2407
|
+
"sidebar.prefs.general.autoExpandHint": "Wenn deaktiviert, starten Zweige eingeklappt und merken sich den letzten Zustand pro Sitzung.",
|
|
2408
|
+
"sidebar.prefs.general.leftClickBehavior": "Verhalten beim Linksklick",
|
|
2409
|
+
"sidebar.prefs.general.focusExisting": "Vorhandenen Tab fokussieren",
|
|
2410
|
+
"sidebar.prefs.general.openNew": "Immer in neuem Tab öffnen",
|
|
2411
|
+
"sidebar.prefs.general.leftClickHint": "Rechtsklick → „In neuem Tab öffnen“ ist unabhängig von dieser Einstellung immer verfügbar.",
|
|
2412
|
+
"sidebar.prefs.display.title": "Anzeige",
|
|
2413
|
+
"sidebar.prefs.display.desc": "Welche Modi in der Leiste erscheinen und wie tief der Baum pro Modus reicht.",
|
|
2414
|
+
"sidebar.prefs.display.enableModeIcons": "Modus-Umschalter-Symbole anzeigen",
|
|
2415
|
+
"sidebar.prefs.display.enabledModes": "Sichtbare Modi",
|
|
2416
|
+
"sidebar.prefs.display.preferencesAlwaysOn": "Einstellungen werden immer angezeigt.",
|
|
2417
|
+
"sidebar.prefs.display.maxDepth": "Baumtiefe pro Modus",
|
|
2418
|
+
"sidebar.prefs.order.title": "Elemente sortieren",
|
|
2419
|
+
"sidebar.prefs.order.desc": "Ziehen Sie Elemente, um deren Reihenfolge im gewählten Modus zu ändern.",
|
|
2420
|
+
"sidebar.prefs.order.pickMode": "Modus",
|
|
2421
|
+
"sidebar.prefs.order.empty": "Keine sortierbaren Elemente in diesem Modus.",
|
|
2422
|
+
"sidebar.prefs.order.resetMode": "Auf Standardreihenfolge zurücksetzen",
|
|
2423
|
+
"sidebar.prefs.hidden.title": "Ausgeblendete Elemente",
|
|
2424
|
+
"sidebar.prefs.hidden.desc": "Aus dem Baum ausgeblendete Elemente. Stellen Sie sie wieder her, um sie zurückzubringen.",
|
|
2425
|
+
"sidebar.prefs.hidden.empty": "Nichts ausgeblendet.",
|
|
2426
|
+
"sidebar.prefs.hidden.restore": "Wiederherstellen",
|
|
2427
|
+
"sidebar.prefs.reset.title": "Zurücksetzen",
|
|
2428
|
+
"sidebar.prefs.reset.desc": "Alle Anpassungen löschen und das ursprüngliche Seitenleisten-Layout wiederherstellen.",
|
|
2429
|
+
"sidebar.prefs.reset.button": "Alle Einstellungen zurücksetzen",
|
|
2430
|
+
"sidebar.prefs.reset.confirm": "Dies löscht Ihre Favoriten, ausgeblendete Elemente, eigene Reihenfolge und alle weiteren Seitenleisten-Einstellungen. Dieser Vorgang kann nicht rückgängig gemacht werden.",
|
|
2431
|
+
"sidebar.prefs.reset.confirmYes": "Ja, alles zurücksetzen",
|
|
2432
|
+
"sidebar.prefs.reset.cancel": "Abbrechen",
|
|
2433
|
+
"vectorEditor.menu.file": "Datei",
|
|
2434
|
+
"vectorEditor.menu.edit": "Bearbeiten",
|
|
2435
|
+
"vectorEditor.menu.object": "Objekt",
|
|
2436
|
+
"vectorEditor.menu.path": "Pfad",
|
|
2437
|
+
"vectorEditor.menu.view": "Ansicht",
|
|
2438
|
+
"vectorEditor.menu.newCanvas": "Neue Leinwand",
|
|
2439
|
+
"vectorEditor.menu.openSvg": "SVG öffnen…",
|
|
2440
|
+
"vectorEditor.menu.pasteSvg": "SVG einfügen…",
|
|
2441
|
+
"vectorEditor.menu.exportSvg": "SVG exportieren",
|
|
2442
|
+
"vectorEditor.menu.exportPng": "PNG exportieren",
|
|
2443
|
+
"vectorEditor.menu.exportJpg": "JPG exportieren",
|
|
2444
|
+
"vectorEditor.menu.exportWebp": "WebP exportieren",
|
|
2445
|
+
"vectorEditor.menu.exportBmp": "BMP exportieren",
|
|
2446
|
+
"vectorEditor.menu.saveToLibrary": "📦 In Bibliothek speichern",
|
|
2447
|
+
"vectorEditor.menu.exportIconSnippet": "📋 Icon-Snippet exportieren",
|
|
2448
|
+
"vectorEditor.menu.exportIcon": "📋 Icon exportieren",
|
|
2449
|
+
"vectorEditor.menu.undo": "Rückgängig (Strg+Z)",
|
|
2450
|
+
"vectorEditor.menu.redo": "Wiederherstellen (Strg+Y)",
|
|
2451
|
+
"vectorEditor.menu.copy": "Kopieren (Strg+C)",
|
|
2452
|
+
"vectorEditor.menu.paste": "Einfügen (Strg+V)",
|
|
2453
|
+
"vectorEditor.menu.duplicate": "Duplizieren (Strg+D)",
|
|
2454
|
+
"vectorEditor.menu.delete": "Löschen (Entf)",
|
|
2455
|
+
"vectorEditor.menu.bringToFront": "In den Vordergrund",
|
|
2456
|
+
"vectorEditor.menu.sendToBack": "In den Hintergrund",
|
|
2457
|
+
"vectorEditor.menu.flipH": "Horizontal spiegeln",
|
|
2458
|
+
"vectorEditor.menu.flipV": "Vertikal spiegeln",
|
|
2459
|
+
"vectorEditor.menu.alignLeft": "Links ausrichten",
|
|
2460
|
+
"vectorEditor.menu.alignCenter": "Zentriert ausrichten",
|
|
2461
|
+
"vectorEditor.menu.alignRight": "Rechts ausrichten",
|
|
2462
|
+
"vectorEditor.menu.union": "Vereinigung (∪)",
|
|
2463
|
+
"vectorEditor.menu.subtract": "Subtraktion (−)",
|
|
2464
|
+
"vectorEditor.menu.intersect": "Schnittmenge (∩)",
|
|
2465
|
+
"vectorEditor.menu.exclude": "Ausschluss (⊕)",
|
|
2466
|
+
"vectorEditor.menu.outlineStroke": "Kontur in Pfad umwandeln",
|
|
2467
|
+
"vectorEditor.menu.snapToGrid": "Am Raster ausrichten",
|
|
2468
|
+
"vectorEditor.menu.snap": "Raster",
|
|
2469
|
+
"vectorEditor.menu.secondShape": "2. Form",
|
|
2470
|
+
"vectorEditor.tabs.properties": "Eigenschaften",
|
|
2471
|
+
"vectorEditor.tabs.layers": "Ebenen",
|
|
2472
|
+
"vectorEditor.tabs.library": "Bibliothek",
|
|
2473
|
+
"vectorEditor.tabs.timeline": "Zeitleiste",
|
|
2474
|
+
"vectorEditor.timeline.preset": "Vorlage",
|
|
2475
|
+
"vectorEditor.timeline.duration": "Dauer (ms)",
|
|
2476
|
+
"vectorEditor.timeline.repeat": "Wiederholen",
|
|
2477
|
+
"vectorEditor.timeline.direction": "Richtung",
|
|
2478
|
+
"vectorEditor.timeline.remove": "Animation entfernen",
|
|
2479
|
+
"vectorEditor.timeline.play": "Abspielen",
|
|
2480
|
+
"vectorEditor.timeline.pause": "Pause",
|
|
2481
|
+
"vectorEditor.timeline.stop": "Stopp",
|
|
2482
|
+
"vectorEditor.timeline.copyCss": "CSS kopieren",
|
|
2483
|
+
"vectorEditor.timeline.keyframes": "Keyframes",
|
|
2484
|
+
"vectorEditor.timeline.addKeyframe": "+ Keyframe hinzufügen",
|
|
2485
|
+
"vectorEditor.timeline.noSelection": "Form auswählen, um sie zu animieren.",
|
|
2486
|
+
"vectorEditor.timeline.animationTitle": "Animation",
|
|
2487
|
+
"vectorEditor.timeline.playbackTitle": "Wiedergabe",
|
|
2488
|
+
"vectorEditor.timeline.attachHint": "Form auswählen, um eine Animation hinzuzufügen.",
|
|
2489
|
+
"vectorEditor.timeline.playLabel": "▶ Abspielen",
|
|
2490
|
+
"vectorEditor.timeline.pauseLabel": "⏸ Pause",
|
|
2491
|
+
"vectorEditor.timeline.stopLabel": "⏹ Stopp",
|
|
2492
|
+
"vectorEditor.timeline.copyCssKeyframes": "📋 CSS-Keyframes kopieren",
|
|
2493
|
+
"vectorEditor.timeline.tLabel": "t",
|
|
2494
|
+
"vectorEditor.layers.empty": "Noch keine Ebenen. Verwenden Sie die Werkzeuge zum Zeichnen oder fügen Sie aus der Bibliothek ein.",
|
|
2495
|
+
"vectorEditor.layers.moveUp": "Nach oben",
|
|
2496
|
+
"vectorEditor.layers.moveDown": "Nach unten",
|
|
2497
|
+
"vectorEditor.library.passProp": "Übergeben Sie eine library-Property an NiceVectorEditor, um diesen Tab mit einfügbaren Icons zu füllen.",
|
|
2498
|
+
"vectorEditor.statusBar.zoom": "Zoom",
|
|
2499
|
+
"vectorEditor.statusBar.shapes": "Form(en)",
|
|
2500
|
+
"vectorEditor.statusBar.selected": "Ausgewählt",
|
|
2501
|
+
"vectorEditor.statusBar.snap": "Raster",
|
|
2502
|
+
"vectorEditor.library.empty": "Keine Icons in der Bibliothek.",
|
|
2503
|
+
"vectorEditor.snippet.title": "✅ Icon-Snippet in die Zwischenablage kopiert",
|
|
2504
|
+
"vectorEditor.snippet.pasteHint": "Einfügen in",
|
|
2505
|
+
"vectorEditor.snippet.copyAgain": "Erneut kopieren",
|
|
2506
|
+
"vectorEditor.snippet.close": "Schließen",
|
|
2507
|
+
"vectorEditor.properties.appearance": "Erscheinungsbild",
|
|
2508
|
+
"vectorEditor.properties.fill": "Füllung",
|
|
2509
|
+
"vectorEditor.properties.solid": "Einfarbig",
|
|
2510
|
+
"vectorEditor.properties.gradient": "Verlauf",
|
|
2511
|
+
"vectorEditor.properties.hideEditor": "▼ Editor ausblenden",
|
|
2512
|
+
"vectorEditor.properties.editGradient": "► Verlauf bearbeiten",
|
|
2513
|
+
"vectorEditor.properties.type": "Typ",
|
|
2514
|
+
"vectorEditor.properties.linear": "Linear",
|
|
2515
|
+
"vectorEditor.properties.radial": "Radial",
|
|
2516
|
+
"vectorEditor.properties.angle": "Winkel",
|
|
2517
|
+
"vectorEditor.properties.cx": "CX",
|
|
2518
|
+
"vectorEditor.properties.cy": "CY",
|
|
2519
|
+
"vectorEditor.properties.r": "R",
|
|
2520
|
+
"vectorEditor.properties.colorStops": "Farbstopps:",
|
|
2521
|
+
"vectorEditor.properties.addStop": "+ Stopp hinzufügen",
|
|
2522
|
+
"vectorEditor.properties.removeStop": "- Entfernen",
|
|
2523
|
+
"vectorEditor.properties.stroke": "Kontur",
|
|
2524
|
+
"vectorEditor.properties.width": "Breite",
|
|
2525
|
+
"vectorEditor.properties.opacity": "Deckkraft",
|
|
2526
|
+
"vectorEditor.properties.rotation": "Drehung",
|
|
2527
|
+
"vectorEditor.properties.toolOptions": "Werkzeug-Optionen",
|
|
2528
|
+
"vectorEditor.properties.radius": "Radius",
|
|
2529
|
+
"vectorEditor.properties.sides": "Seiten",
|
|
2530
|
+
"vectorEditor.properties.points": "Punkte",
|
|
2531
|
+
"vectorEditor.properties.innerR": "Innerer R",
|
|
2532
|
+
"vectorEditor.properties.size": "Größe",
|
|
2533
|
+
"vectorEditor.properties.font": "Schrift",
|
|
2534
|
+
"vectorEditor.properties.grid": "Raster",
|
|
2535
|
+
"vectorEditor.properties.transform": "Transformation",
|
|
2536
|
+
"vectorEditor.properties.x": "X",
|
|
2537
|
+
"vectorEditor.properties.y": "Y",
|
|
2538
|
+
"vectorEditor.properties.w": "B",
|
|
2539
|
+
"vectorEditor.properties.h": "H",
|
|
2540
|
+
"vectorEditor.layers.title": "Ebenen",
|
|
2541
|
+
"vectorEditor.layers.show": "Einblenden",
|
|
2542
|
+
"vectorEditor.layers.hide": "Ausblenden",
|
|
2543
|
+
"vectorEditor.layers.lock": "Sperren",
|
|
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 = {
|
|
2015
2717
|
ok: "OK",
|
|
2016
2718
|
cancel: "Annuler",
|
|
2017
2719
|
save: "Enregistrer",
|
|
@@ -2532,7 +3234,359 @@ const j = [
|
|
|
2532
3234
|
"noCode.codePreview.language": "Langage",
|
|
2533
3235
|
"noCode.codePreview.format": "Formater le code",
|
|
2534
3236
|
"noCode.codePreview.linesChanged": "Lignes modifiées",
|
|
2535
|
-
"noCode.codePreview.noChanges": "Aucune modification"
|
|
3237
|
+
"noCode.codePreview.noChanges": "Aucune modification",
|
|
3238
|
+
// ── Navigation / Help / Home / Sidebar / Vector Editor (P2.5 backfill) ──
|
|
3239
|
+
"nav.help": "Aide",
|
|
3240
|
+
"navShell.home.title": "Accueil",
|
|
3241
|
+
"navShell.help.next": "Suivant",
|
|
3242
|
+
"navShell.help.back": "Retour",
|
|
3243
|
+
"navShell.help.finish": "Terminer",
|
|
3244
|
+
"navShell.help.skip": "Passer",
|
|
3245
|
+
"navShell.help.stepOf": "sur",
|
|
3246
|
+
"navShell.help.topNav.title": "Navigation supérieure",
|
|
3247
|
+
"navShell.help.topNav.body": "Utilisez la barre supérieure pour changer d'espace de travail, rechercher, modifier le thème ou la langue, et ouvrir les notifications.",
|
|
3248
|
+
"navShell.help.sidebar.title": "Barre latérale",
|
|
3249
|
+
"navShell.help.sidebar.body": "Parcourez les vues disponibles regroupées par section. Choisissez une vue pour l’ouvrir dans un nouvel onglet.",
|
|
3250
|
+
"navShell.help.tabs.title": "Onglets",
|
|
3251
|
+
"navShell.help.tabs.body": "Chaque vue ouverte vit dans son propre onglet. Épinglez celles que vous utilisez souvent et faites un clic droit pour plus d'actions.",
|
|
3252
|
+
"navShell.help.content.title": "Espace de travail",
|
|
3253
|
+
"navShell.help.content.body": "La zone principale affiche la vue active. Changer d’onglet ou d’entrée latérale échange le contenu ici.",
|
|
3254
|
+
"navShell.home.subtitle": "Reprenez là où vous en étiez.",
|
|
3255
|
+
"navShell.home.empty": "Ouvrez une vue depuis la barre latérale ou les onglets ci-dessus pour remplir votre espace de travail.",
|
|
3256
|
+
"navShell.home.greeting.morning": "Bonjour",
|
|
3257
|
+
"navShell.home.greeting.afternoon": "Bon après-midi",
|
|
3258
|
+
"navShell.home.greeting.evening": "Bonsoir",
|
|
3259
|
+
"navShell.home.greeting.night": "Bonjour",
|
|
3260
|
+
"navShell.home.sections.openTabs": "Ouverts maintenant",
|
|
3261
|
+
"navShell.home.sections.shortcuts": "Vos raccourcis",
|
|
3262
|
+
"navShell.home.sections.allViews": "Toutes les vues",
|
|
3263
|
+
"sidebar.menu.open": "Ouvrir",
|
|
3264
|
+
"sidebar.menu.openNewTab": "Ouvrir dans un nouvel onglet",
|
|
3265
|
+
"sidebar.menu.openBrowserTab": "Ouvrir dans un nouvel onglet du navigateur",
|
|
3266
|
+
"sidebar.menu.pinFavorite": "Ajouter aux favoris",
|
|
3267
|
+
"sidebar.menu.unpinFavorite": "Retirer des favoris",
|
|
3268
|
+
"sidebar.menu.hide": "Masquer",
|
|
3269
|
+
"sidebar.menu.copyLink": "Copier le lien",
|
|
3270
|
+
"sidebar.menu.pinSource": "Épingler la source",
|
|
3271
|
+
"sidebar.menu.unpinSource": "Détacher la source",
|
|
3272
|
+
"sidebar.menu.hideSource": "Masquer la source",
|
|
3273
|
+
"sidebar.prefs.general": "Général",
|
|
3274
|
+
"sidebar.prefs.display": "Affichage",
|
|
3275
|
+
"sidebar.prefs.order": "Ordre",
|
|
3276
|
+
"sidebar.prefs.hidden": "Éléments masqués",
|
|
3277
|
+
"sidebar.prefs.reset": "Réinitialiser",
|
|
3278
|
+
"sidebar.prefs.general.title": "Général",
|
|
3279
|
+
"sidebar.prefs.general.desc": "Comportement de l'arborescence latérale et action du clic gauche.",
|
|
3280
|
+
"sidebar.prefs.general.autoExpand": "Développer automatiquement toutes les branches",
|
|
3281
|
+
"sidebar.prefs.general.autoExpandHint": "Lorsque désactivé, les branches démarrent repliées et conservent leur dernier état par session.",
|
|
3282
|
+
"sidebar.prefs.general.leftClickBehavior": "Comportement du clic gauche",
|
|
3283
|
+
"sidebar.prefs.general.focusExisting": "Focaliser l’onglet existant",
|
|
3284
|
+
"sidebar.prefs.general.openNew": "Toujours ouvrir dans un nouvel onglet",
|
|
3285
|
+
"sidebar.prefs.general.leftClickHint": "Le clic droit → « Ouvrir dans un nouvel onglet » est toujours disponible quel que soit ce paramètre.",
|
|
3286
|
+
"sidebar.prefs.display.title": "Affichage",
|
|
3287
|
+
"sidebar.prefs.display.desc": "Quels modes apparaissent dans la barre et la profondeur de l'arbre par mode.",
|
|
3288
|
+
"sidebar.prefs.display.enableModeIcons": "Afficher les icônes du sélecteur de mode",
|
|
3289
|
+
"sidebar.prefs.display.enabledModes": "Modes visibles",
|
|
3290
|
+
"sidebar.prefs.display.preferencesAlwaysOn": "Les préférences sont toujours affichées.",
|
|
3291
|
+
"sidebar.prefs.display.maxDepth": "Profondeur d’arbre par mode",
|
|
3292
|
+
"sidebar.prefs.order.title": "Ordonner les éléments",
|
|
3293
|
+
"sidebar.prefs.order.desc": "Faites glisser les éléments pour réorganiser leur affichage dans le mode sélectionné.",
|
|
3294
|
+
"sidebar.prefs.order.pickMode": "Mode",
|
|
3295
|
+
"sidebar.prefs.order.empty": "Aucun élément réorganisable dans ce mode.",
|
|
3296
|
+
"sidebar.prefs.order.resetMode": "Rétablir l’ordre par défaut",
|
|
3297
|
+
"sidebar.prefs.hidden.title": "Éléments masqués",
|
|
3298
|
+
"sidebar.prefs.hidden.desc": "Éléments que vous avez masqués de l'arborescence. Restaurez-les pour les ramener.",
|
|
3299
|
+
"sidebar.prefs.hidden.empty": "Rien de masqué pour l’instant.",
|
|
3300
|
+
"sidebar.prefs.hidden.restore": "Restaurer",
|
|
3301
|
+
"sidebar.prefs.reset.title": "Réinitialiser",
|
|
3302
|
+
"sidebar.prefs.reset.desc": "Effacer toutes les personnalisations et restaurer la disposition d'origine de la barre latérale.",
|
|
3303
|
+
"sidebar.prefs.reset.button": "Réinitialiser toutes les préférences",
|
|
3304
|
+
"sidebar.prefs.reset.confirm": "Cela effacera vos favoris, éléments masqués, ordre personnalisé et toutes les autres préférences de la barre latérale. Cette action est irréversible.",
|
|
3305
|
+
"sidebar.prefs.reset.confirmYes": "Oui, tout réinitialiser",
|
|
3306
|
+
"sidebar.prefs.reset.cancel": "Annuler",
|
|
3307
|
+
"vectorEditor.menu.file": "Fichier",
|
|
3308
|
+
"vectorEditor.menu.edit": "Édition",
|
|
3309
|
+
"vectorEditor.menu.object": "Objet",
|
|
3310
|
+
"vectorEditor.menu.path": "Chemin",
|
|
3311
|
+
"vectorEditor.menu.view": "Affichage",
|
|
3312
|
+
"vectorEditor.menu.newCanvas": "Nouveau canevas",
|
|
3313
|
+
"vectorEditor.menu.openSvg": "Ouvrir un SVG…",
|
|
3314
|
+
"vectorEditor.menu.pasteSvg": "Coller un SVG…",
|
|
3315
|
+
"vectorEditor.menu.exportSvg": "Exporter en SVG",
|
|
3316
|
+
"vectorEditor.menu.exportPng": "Exporter en PNG",
|
|
3317
|
+
"vectorEditor.menu.exportJpg": "Exporter en JPG",
|
|
3318
|
+
"vectorEditor.menu.exportWebp": "Exporter en WebP",
|
|
3319
|
+
"vectorEditor.menu.exportBmp": "Exporter en BMP",
|
|
3320
|
+
"vectorEditor.menu.saveToLibrary": "📦 Enregistrer dans la bibliothèque",
|
|
3321
|
+
"vectorEditor.menu.exportIconSnippet": "📋 Exporter l’extrait d’icône",
|
|
3322
|
+
"vectorEditor.menu.exportIcon": "📋 Exporter l’icône",
|
|
3323
|
+
"vectorEditor.menu.undo": "Annuler (Ctrl+Z)",
|
|
3324
|
+
"vectorEditor.menu.redo": "Rétablir (Ctrl+Y)",
|
|
3325
|
+
"vectorEditor.menu.copy": "Copier (Ctrl+C)",
|
|
3326
|
+
"vectorEditor.menu.paste": "Coller (Ctrl+V)",
|
|
3327
|
+
"vectorEditor.menu.duplicate": "Dupliquer (Ctrl+D)",
|
|
3328
|
+
"vectorEditor.menu.delete": "Supprimer (Suppr)",
|
|
3329
|
+
"vectorEditor.menu.bringToFront": "Mettre au premier plan",
|
|
3330
|
+
"vectorEditor.menu.sendToBack": "Mettre à l’arrière-plan",
|
|
3331
|
+
"vectorEditor.menu.flipH": "Retourner horizontalement",
|
|
3332
|
+
"vectorEditor.menu.flipV": "Retourner verticalement",
|
|
3333
|
+
"vectorEditor.menu.alignLeft": "Aligner à gauche",
|
|
3334
|
+
"vectorEditor.menu.alignCenter": "Centrer",
|
|
3335
|
+
"vectorEditor.menu.alignRight": "Aligner à droite",
|
|
3336
|
+
"vectorEditor.menu.union": "Union (∪)",
|
|
3337
|
+
"vectorEditor.menu.subtract": "Soustraire (−)",
|
|
3338
|
+
"vectorEditor.menu.intersect": "Intersection (∩)",
|
|
3339
|
+
"vectorEditor.menu.exclude": "Exclusion (⊕)",
|
|
3340
|
+
"vectorEditor.menu.outlineStroke": "Vectoriser le contour",
|
|
3341
|
+
"vectorEditor.menu.snapToGrid": "Aligner sur la grille",
|
|
3342
|
+
"vectorEditor.menu.snap": "Grille",
|
|
3343
|
+
"vectorEditor.menu.secondShape": "2e forme",
|
|
3344
|
+
"vectorEditor.tabs.properties": "Propriétés",
|
|
3345
|
+
"vectorEditor.tabs.layers": "Calques",
|
|
3346
|
+
"vectorEditor.tabs.library": "Bibliothèque",
|
|
3347
|
+
"vectorEditor.tabs.timeline": "Chronologie",
|
|
3348
|
+
"vectorEditor.timeline.preset": "Préréglage",
|
|
3349
|
+
"vectorEditor.timeline.duration": "Durée (ms)",
|
|
3350
|
+
"vectorEditor.timeline.repeat": "Répétitions",
|
|
3351
|
+
"vectorEditor.timeline.direction": "Direction",
|
|
3352
|
+
"vectorEditor.timeline.remove": "Supprimer l’animation",
|
|
3353
|
+
"vectorEditor.timeline.play": "Lecture",
|
|
3354
|
+
"vectorEditor.timeline.pause": "Pause",
|
|
3355
|
+
"vectorEditor.timeline.stop": "Arrêt",
|
|
3356
|
+
"vectorEditor.timeline.copyCss": "Copier le CSS",
|
|
3357
|
+
"vectorEditor.timeline.keyframes": "Images clés",
|
|
3358
|
+
"vectorEditor.timeline.addKeyframe": "+ Ajouter une image clé",
|
|
3359
|
+
"vectorEditor.timeline.noSelection": "Sélectionnez une forme à animer.",
|
|
3360
|
+
"vectorEditor.timeline.animationTitle": "Animation",
|
|
3361
|
+
"vectorEditor.timeline.playbackTitle": "Lecture",
|
|
3362
|
+
"vectorEditor.timeline.attachHint": "Sélectionnez une forme pour y attacher une animation.",
|
|
3363
|
+
"vectorEditor.timeline.playLabel": "▶ Lecture",
|
|
3364
|
+
"vectorEditor.timeline.pauseLabel": "⏸ Pause",
|
|
3365
|
+
"vectorEditor.timeline.stopLabel": "⏹ Arrêt",
|
|
3366
|
+
"vectorEditor.timeline.copyCssKeyframes": "📋 Copier les images clés CSS",
|
|
3367
|
+
"vectorEditor.timeline.tLabel": "t",
|
|
3368
|
+
"vectorEditor.layers.empty": "Aucun calque pour l’instant. Utilisez les outils pour dessiner ou insérez depuis l’onglet Bibliothèque.",
|
|
3369
|
+
"vectorEditor.layers.moveUp": "Monter",
|
|
3370
|
+
"vectorEditor.layers.moveDown": "Descendre",
|
|
3371
|
+
"vectorEditor.library.passProp": "Passez une prop library à NiceVectorEditor pour remplir cet onglet avec des icônes insérables.",
|
|
3372
|
+
"vectorEditor.statusBar.zoom": "Zoom",
|
|
3373
|
+
"vectorEditor.statusBar.shapes": "forme(s)",
|
|
3374
|
+
"vectorEditor.statusBar.selected": "Sélectionné",
|
|
3375
|
+
"vectorEditor.statusBar.snap": "Grille",
|
|
3376
|
+
"vectorEditor.library.empty": "Aucune icône dans la bibliothèque.",
|
|
3377
|
+
"vectorEditor.snippet.title": "✅ Extrait d’icône copié dans le presse-papiers",
|
|
3378
|
+
"vectorEditor.snippet.pasteHint": "Coller dans",
|
|
3379
|
+
"vectorEditor.snippet.copyAgain": "Copier à nouveau",
|
|
3380
|
+
"vectorEditor.snippet.close": "Fermer",
|
|
3381
|
+
"vectorEditor.properties.appearance": "Apparence",
|
|
3382
|
+
"vectorEditor.properties.fill": "Remplissage",
|
|
3383
|
+
"vectorEditor.properties.solid": "Uni",
|
|
3384
|
+
"vectorEditor.properties.gradient": "Dégradé",
|
|
3385
|
+
"vectorEditor.properties.hideEditor": "▼ Masquer l’éditeur",
|
|
3386
|
+
"vectorEditor.properties.editGradient": "► Modifier le dégradé",
|
|
3387
|
+
"vectorEditor.properties.type": "Type",
|
|
3388
|
+
"vectorEditor.properties.linear": "Linéaire",
|
|
3389
|
+
"vectorEditor.properties.radial": "Radial",
|
|
3390
|
+
"vectorEditor.properties.angle": "Angle",
|
|
3391
|
+
"vectorEditor.properties.cx": "CX",
|
|
3392
|
+
"vectorEditor.properties.cy": "CY",
|
|
3393
|
+
"vectorEditor.properties.r": "R",
|
|
3394
|
+
"vectorEditor.properties.colorStops": "Étapes de couleur :",
|
|
3395
|
+
"vectorEditor.properties.addStop": "+ Ajouter une étape",
|
|
3396
|
+
"vectorEditor.properties.removeStop": "- Supprimer",
|
|
3397
|
+
"vectorEditor.properties.stroke": "Contour",
|
|
3398
|
+
"vectorEditor.properties.width": "Largeur",
|
|
3399
|
+
"vectorEditor.properties.opacity": "Opacité",
|
|
3400
|
+
"vectorEditor.properties.rotation": "Rotation",
|
|
3401
|
+
"vectorEditor.properties.toolOptions": "Options de l’outil",
|
|
3402
|
+
"vectorEditor.properties.radius": "Rayon",
|
|
3403
|
+
"vectorEditor.properties.sides": "Côtés",
|
|
3404
|
+
"vectorEditor.properties.points": "Points",
|
|
3405
|
+
"vectorEditor.properties.innerR": "R intérieur",
|
|
3406
|
+
"vectorEditor.properties.size": "Taille",
|
|
3407
|
+
"vectorEditor.properties.font": "Police",
|
|
3408
|
+
"vectorEditor.properties.grid": "Grille",
|
|
3409
|
+
"vectorEditor.properties.transform": "Transformation",
|
|
3410
|
+
"vectorEditor.properties.x": "X",
|
|
3411
|
+
"vectorEditor.properties.y": "Y",
|
|
3412
|
+
"vectorEditor.properties.w": "L",
|
|
3413
|
+
"vectorEditor.properties.h": "H",
|
|
3414
|
+
"vectorEditor.layers.title": "Calques",
|
|
3415
|
+
"vectorEditor.layers.show": "Afficher",
|
|
3416
|
+
"vectorEditor.layers.hide": "Masquer",
|
|
3417
|
+
"vectorEditor.layers.lock": "Verrouiller",
|
|
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."
|
|
2536
3590
|
}, Se = {
|
|
2537
3591
|
ok: "OK",
|
|
2538
3592
|
cancel: "Cancelar",
|
|
@@ -2895,7 +3949,516 @@ const j = [
|
|
|
2895
3949
|
"wm.closeAll": "Cerrar todo",
|
|
2896
3950
|
"wm.minimizeAll": "Minimizar todo",
|
|
2897
3951
|
"wm.newWindow": "Nueva ventana",
|
|
2898
|
-
"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"
|
|
2899
4462
|
}, De = {
|
|
2900
4463
|
ok: "OK",
|
|
2901
4464
|
cancel: "Annulla",
|
|
@@ -3010,7 +4573,7 @@ const j = [
|
|
|
3010
4573
|
"lang.ko": "Coreano",
|
|
3011
4574
|
"lang.zh": "Cinese",
|
|
3012
4575
|
"lang.ar": "Arabo"
|
|
3013
|
-
},
|
|
4576
|
+
}, je = {
|
|
3014
4577
|
ok: "OK",
|
|
3015
4578
|
cancel: "Cancelar",
|
|
3016
4579
|
save: "Salvar",
|
|
@@ -3373,7 +4936,7 @@ const j = [
|
|
|
3373
4936
|
"wm.minimizeAll": "Minimizar todos",
|
|
3374
4937
|
"wm.newWindow": "Nova janela",
|
|
3375
4938
|
"wm.moveToFront": "Trazer para frente"
|
|
3376
|
-
},
|
|
4939
|
+
}, Ae = {
|
|
3377
4940
|
ok: "OK",
|
|
3378
4941
|
cancel: "Annuleren",
|
|
3379
4942
|
save: "Opslaan",
|
|
@@ -3458,7 +5021,7 @@ const j = [
|
|
|
3458
5021
|
"lang.ko": "Koreaans",
|
|
3459
5022
|
"lang.zh": "Chinees",
|
|
3460
5023
|
"lang.ar": "Arabisch"
|
|
3461
|
-
},
|
|
5024
|
+
}, Pe = {
|
|
3462
5025
|
ok: "OK",
|
|
3463
5026
|
cancel: "Avbryt",
|
|
3464
5027
|
save: "Spara",
|
|
@@ -3528,7 +5091,7 @@ const j = [
|
|
|
3528
5091
|
"lang.ko": "Koreanska",
|
|
3529
5092
|
"lang.zh": "Kinesiska",
|
|
3530
5093
|
"lang.ar": "Arabiska"
|
|
3531
|
-
},
|
|
5094
|
+
}, xe = {
|
|
3532
5095
|
ok: "OK",
|
|
3533
5096
|
cancel: "Avbryt",
|
|
3534
5097
|
save: "Lagre",
|
|
@@ -3591,7 +5154,7 @@ const j = [
|
|
|
3591
5154
|
"lang.ko": "Koreansk",
|
|
3592
5155
|
"lang.zh": "Kinesisk",
|
|
3593
5156
|
"lang.ar": "Arabisk"
|
|
3594
|
-
},
|
|
5157
|
+
}, Te = {
|
|
3595
5158
|
ok: "OK",
|
|
3596
5159
|
cancel: "Annuller",
|
|
3597
5160
|
save: "Gem",
|
|
@@ -3654,7 +5217,7 @@ const j = [
|
|
|
3654
5217
|
"lang.ko": "Koreansk",
|
|
3655
5218
|
"lang.zh": "Kinesisk",
|
|
3656
5219
|
"lang.ar": "Arabisk"
|
|
3657
|
-
},
|
|
5220
|
+
}, Be = {
|
|
3658
5221
|
ok: "OK",
|
|
3659
5222
|
cancel: "Peruuta",
|
|
3660
5223
|
save: "Tallenna",
|
|
@@ -4143,7 +5706,7 @@ const j = [
|
|
|
4143
5706
|
"lang.ko": "Kórejčina",
|
|
4144
5707
|
"lang.zh": "Čínština",
|
|
4145
5708
|
"lang.ar": "Arabčina"
|
|
4146
|
-
},
|
|
5709
|
+
}, Ne = {
|
|
4147
5710
|
ok: "OK",
|
|
4148
5711
|
cancel: "Mégse",
|
|
4149
5712
|
save: "Mentés",
|
|
@@ -4316,7 +5879,7 @@ const j = [
|
|
|
4316
5879
|
"lang.ko": "Корейски",
|
|
4317
5880
|
"lang.zh": "Китайски",
|
|
4318
5881
|
"lang.ar": "Арабски"
|
|
4319
|
-
},
|
|
5882
|
+
}, Oe = {
|
|
4320
5883
|
ok: "OK",
|
|
4321
5884
|
cancel: "Скасувати",
|
|
4322
5885
|
save: "Зберегти",
|
|
@@ -4678,7 +6241,516 @@ const j = [
|
|
|
4678
6241
|
"wm.closeAll": "Закрити всі",
|
|
4679
6242
|
"wm.minimizeAll": "Згорнути всі",
|
|
4680
6243
|
"wm.newWindow": "Нове вікно",
|
|
4681
|
-
"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": "Розблокувати"
|
|
4682
6754
|
}, Ie = {
|
|
4683
6755
|
ok: "OK",
|
|
4684
6756
|
cancel: "キャンセル",
|
|
@@ -5042,7 +7114,7 @@ const j = [
|
|
|
5042
7114
|
"wm.minimizeAll": "すべて最小化",
|
|
5043
7115
|
"wm.newWindow": "新しいウィンドウ",
|
|
5044
7116
|
"wm.moveToFront": "最前面に移動"
|
|
5045
|
-
},
|
|
7117
|
+
}, Ve = {
|
|
5046
7118
|
ok: "확인",
|
|
5047
7119
|
cancel: "취소",
|
|
5048
7120
|
save: "저장",
|
|
@@ -5405,7 +7477,7 @@ const j = [
|
|
|
5405
7477
|
"wm.minimizeAll": "모두 최소화",
|
|
5406
7478
|
"wm.newWindow": "새 창",
|
|
5407
7479
|
"wm.moveToFront": "맨 앞으로"
|
|
5408
|
-
},
|
|
7480
|
+
}, He = {
|
|
5409
7481
|
ok: "确定",
|
|
5410
7482
|
cancel: "取消",
|
|
5411
7483
|
save: "保存",
|
|
@@ -5768,7 +7840,7 @@ const j = [
|
|
|
5768
7840
|
"wm.minimizeAll": "最小化全部",
|
|
5769
7841
|
"wm.newWindow": "新建窗口",
|
|
5770
7842
|
"wm.moveToFront": "置于最前"
|
|
5771
|
-
},
|
|
7843
|
+
}, We = {
|
|
5772
7844
|
ok: "حسناً",
|
|
5773
7845
|
cancel: "إلغاء",
|
|
5774
7846
|
save: "حفظ",
|
|
@@ -6131,7 +8203,7 @@ const j = [
|
|
|
6131
8203
|
"wm.minimizeAll": "تصغير الكل",
|
|
6132
8204
|
"wm.newWindow": "نافذة جديدة",
|
|
6133
8205
|
"wm.moveToFront": "نقل إلى الأمام"
|
|
6134
|
-
},
|
|
8206
|
+
}, qe = {
|
|
6135
8207
|
ok: "ठीक है",
|
|
6136
8208
|
cancel: "रद्द करें",
|
|
6137
8209
|
save: "सहेजें",
|
|
@@ -6142,7 +8214,7 @@ const j = [
|
|
|
6142
8214
|
error: "त्रुटि",
|
|
6143
8215
|
success: "सफलता",
|
|
6144
8216
|
search: "खोजें"
|
|
6145
|
-
},
|
|
8217
|
+
}, Ue = {
|
|
6146
8218
|
ok: "ঠিক আছে",
|
|
6147
8219
|
cancel: "বাতিল",
|
|
6148
8220
|
save: "সংরক্ষণ",
|
|
@@ -6153,7 +8225,7 @@ const j = [
|
|
|
6153
8225
|
error: "ত্রুটি",
|
|
6154
8226
|
success: "সফল",
|
|
6155
8227
|
search: "অনুসন্ধান"
|
|
6156
|
-
},
|
|
8228
|
+
}, Ke = {
|
|
6157
8229
|
ok: "ตกลง",
|
|
6158
8230
|
cancel: "ยกเลิก",
|
|
6159
8231
|
save: "บันทึก",
|
|
@@ -6164,7 +8236,7 @@ const j = [
|
|
|
6164
8236
|
error: "ข้อผิดพลาด",
|
|
6165
8237
|
success: "สำเร็จ",
|
|
6166
8238
|
search: "ค้นหา"
|
|
6167
|
-
},
|
|
8239
|
+
}, Ge = {
|
|
6168
8240
|
ok: "OK",
|
|
6169
8241
|
cancel: "Hủy",
|
|
6170
8242
|
save: "Lưu",
|
|
@@ -6175,7 +8247,7 @@ const j = [
|
|
|
6175
8247
|
error: "Lỗi",
|
|
6176
8248
|
success: "Thành công",
|
|
6177
8249
|
search: "Tìm kiếm"
|
|
6178
|
-
},
|
|
8250
|
+
}, Ze = {
|
|
6179
8251
|
ok: "OK",
|
|
6180
8252
|
cancel: "Batal",
|
|
6181
8253
|
save: "Simpan",
|
|
@@ -6186,7 +8258,7 @@ const j = [
|
|
|
6186
8258
|
error: "Kesalahan",
|
|
6187
8259
|
success: "Berhasil",
|
|
6188
8260
|
search: "Cari"
|
|
6189
|
-
},
|
|
8261
|
+
}, Je = {
|
|
6190
8262
|
ok: "Sawa",
|
|
6191
8263
|
cancel: "Ghairi",
|
|
6192
8264
|
save: "Hifadhi",
|
|
@@ -6197,7 +8269,7 @@ const j = [
|
|
|
6197
8269
|
error: "Hitilafu",
|
|
6198
8270
|
success: "Imefanikiwa",
|
|
6199
8271
|
search: "Tafuta"
|
|
6200
|
-
},
|
|
8272
|
+
}, Ye = {
|
|
6201
8273
|
ok: "OK",
|
|
6202
8274
|
cancel: "Kanselahin",
|
|
6203
8275
|
save: "I-save",
|
|
@@ -6208,7 +8280,7 @@ const j = [
|
|
|
6208
8280
|
error: "Error",
|
|
6209
8281
|
success: "Tagumpay",
|
|
6210
8282
|
search: "Maghanap"
|
|
6211
|
-
},
|
|
8283
|
+
}, Xe = {
|
|
6212
8284
|
ok: "OK",
|
|
6213
8285
|
cancel: "Batal",
|
|
6214
8286
|
save: "Simpan",
|
|
@@ -6220,37 +8292,37 @@ const j = [
|
|
|
6220
8292
|
success: "Berjaya",
|
|
6221
8293
|
search: "Cari"
|
|
6222
8294
|
}, w = {
|
|
6223
|
-
en:
|
|
6224
|
-
pl:
|
|
6225
|
-
de:
|
|
6226
|
-
fr:
|
|
8295
|
+
en: Ee,
|
|
8296
|
+
pl: ye,
|
|
8297
|
+
de: ze,
|
|
8298
|
+
fr: Ce,
|
|
6227
8299
|
es: Se,
|
|
6228
8300
|
it: De,
|
|
6229
|
-
pt:
|
|
6230
|
-
nl:
|
|
6231
|
-
sv:
|
|
6232
|
-
no:
|
|
6233
|
-
da:
|
|
6234
|
-
fi:
|
|
8301
|
+
pt: je,
|
|
8302
|
+
nl: Ae,
|
|
8303
|
+
sv: Pe,
|
|
8304
|
+
no: xe,
|
|
8305
|
+
da: Te,
|
|
8306
|
+
fi: Be,
|
|
6235
8307
|
cs: Fe,
|
|
6236
8308
|
sk: Me,
|
|
6237
|
-
hu:
|
|
8309
|
+
hu: Ne,
|
|
6238
8310
|
ro: Re,
|
|
6239
8311
|
bg: Le,
|
|
6240
|
-
uk:
|
|
8312
|
+
uk: Oe,
|
|
6241
8313
|
ja: Ie,
|
|
6242
|
-
ko:
|
|
6243
|
-
zh:
|
|
6244
|
-
ar:
|
|
6245
|
-
hi:
|
|
6246
|
-
bn:
|
|
6247
|
-
th:
|
|
6248
|
-
vi:
|
|
6249
|
-
id:
|
|
6250
|
-
sw:
|
|
6251
|
-
fil:
|
|
6252
|
-
ms:
|
|
6253
|
-
},
|
|
8314
|
+
ko: Ve,
|
|
8315
|
+
zh: He,
|
|
8316
|
+
ar: We,
|
|
8317
|
+
hi: qe,
|
|
8318
|
+
bn: Ue,
|
|
8319
|
+
th: Ke,
|
|
8320
|
+
vi: Ge,
|
|
8321
|
+
id: Ze,
|
|
8322
|
+
sw: Je,
|
|
8323
|
+
fil: Ye,
|
|
8324
|
+
ms: Xe
|
|
8325
|
+
}, Y = {
|
|
6254
8326
|
save: "Zapisz",
|
|
6255
8327
|
cancel: "Anuluj",
|
|
6256
8328
|
ok: "OK",
|
|
@@ -6274,7 +8346,7 @@ const j = [
|
|
|
6274
8346
|
"form.invalidValue": "Proszę podać prawidłową wartość.",
|
|
6275
8347
|
"auth.signIn": "Proszę się zalogować",
|
|
6276
8348
|
"auth.signOut": "Proszę się wylogować"
|
|
6277
|
-
},
|
|
8349
|
+
}, X = {
|
|
6278
8350
|
save: "Zapisz",
|
|
6279
8351
|
cancel: "Anuluj",
|
|
6280
8352
|
ok: "OK",
|
|
@@ -6298,62 +8370,62 @@ const j = [
|
|
|
6298
8370
|
"form.invalidValue": "Wpisz prawidłową wartość.",
|
|
6299
8371
|
"auth.signIn": "Zaloguj się",
|
|
6300
8372
|
"auth.signOut": "Wyloguj się"
|
|
6301
|
-
},
|
|
6302
|
-
"pl-PL": { formal:
|
|
6303
|
-
pl: { formal:
|
|
8373
|
+
}, $e = {
|
|
8374
|
+
"pl-PL": { formal: Y, informal: X },
|
|
8375
|
+
pl: { formal: Y, informal: X }
|
|
6304
8376
|
};
|
|
6305
|
-
function
|
|
6306
|
-
var
|
|
6307
|
-
return { ...w.pl, ...((
|
|
8377
|
+
function Kt(e) {
|
|
8378
|
+
var t;
|
|
8379
|
+
return { ...w.pl, ...((t = $e.pl) == null ? void 0 : t[e]) ?? {} };
|
|
6308
8380
|
}
|
|
6309
|
-
const
|
|
8381
|
+
const _e = (e, t) => t, te = I(_e), Gt = ({
|
|
6310
8382
|
t: e,
|
|
6311
|
-
lang:
|
|
6312
|
-
overrides:
|
|
6313
|
-
children:
|
|
8383
|
+
lang: t = "en",
|
|
8384
|
+
overrides: r,
|
|
8385
|
+
children: o
|
|
6314
8386
|
}) => {
|
|
6315
|
-
const
|
|
8387
|
+
const i = b(() => {
|
|
6316
8388
|
if (e)
|
|
6317
8389
|
return e;
|
|
6318
|
-
const
|
|
6319
|
-
return (s,
|
|
6320
|
-
}, [e,
|
|
6321
|
-
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 });
|
|
6322
8394
|
};
|
|
6323
|
-
function
|
|
6324
|
-
return { t:
|
|
8395
|
+
function Zt() {
|
|
8396
|
+
return { t: B(te) };
|
|
6325
8397
|
}
|
|
6326
|
-
function
|
|
6327
|
-
const
|
|
6328
|
-
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;
|
|
6329
8401
|
}
|
|
6330
|
-
function
|
|
6331
|
-
let
|
|
6332
|
-
const
|
|
6333
|
-
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;
|
|
6334
8406
|
});
|
|
6335
|
-
return
|
|
8407
|
+
return r = r.replace(
|
|
6336
8408
|
/\{(\w+),\s*plural,\s*one\{([^}]+)\}\s*other\{([^}]+)\}\}/g,
|
|
6337
|
-
(
|
|
6338
|
-
const s =
|
|
6339
|
-
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));
|
|
6340
8412
|
}
|
|
6341
|
-
),
|
|
8413
|
+
), r;
|
|
6342
8414
|
}
|
|
6343
|
-
function
|
|
6344
|
-
return
|
|
8415
|
+
function Qe(e) {
|
|
8416
|
+
return T.includes(e);
|
|
6345
8417
|
}
|
|
6346
|
-
function
|
|
6347
|
-
var
|
|
8418
|
+
function Xt() {
|
|
8419
|
+
var t;
|
|
6348
8420
|
if (typeof navigator > "u")
|
|
6349
8421
|
return "en";
|
|
6350
|
-
const e = (
|
|
6351
|
-
return
|
|
8422
|
+
const e = (t = navigator.language) == null ? void 0 : t.split("-")[0];
|
|
8423
|
+
return Qe(e) ? e : "en";
|
|
6352
8424
|
}
|
|
6353
|
-
function
|
|
6354
|
-
var
|
|
6355
|
-
const
|
|
6356
|
-
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) {
|
|
6357
8429
|
// ── English-like (one/other) ───────────────────────────
|
|
6358
8430
|
case "en":
|
|
6359
8431
|
case "de":
|
|
@@ -6365,29 +8437,29 @@ function te(e, o) {
|
|
|
6365
8437
|
case "it":
|
|
6366
8438
|
case "es":
|
|
6367
8439
|
case "pt":
|
|
6368
|
-
return
|
|
8440
|
+
return o === 1 && i === 0 ? "one" : "other";
|
|
6369
8441
|
// ── French (one/many/other) ────────────────────────────
|
|
6370
8442
|
case "fr":
|
|
6371
|
-
return
|
|
8443
|
+
return o === 0 || o === 1 ? "one" : r >= 1e6 ? "many" : "other";
|
|
6372
8444
|
// ── Polish (Slavic: one/few/many/other) ────────────────
|
|
6373
8445
|
case "pl":
|
|
6374
|
-
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";
|
|
6375
8447
|
// ── Ukrainian (Slavic: one/few/many/other) ─────────────
|
|
6376
8448
|
case "uk":
|
|
6377
|
-
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";
|
|
6378
8450
|
// ── Bulgarian (one/other) ──────────────────────────────
|
|
6379
8451
|
case "bg":
|
|
6380
8452
|
return e === 1 ? "one" : "other";
|
|
6381
8453
|
// ── Czech/Slovak (Slavic: one/few/many/other) ──────────
|
|
6382
8454
|
case "cs":
|
|
6383
8455
|
case "sk":
|
|
6384
|
-
return
|
|
8456
|
+
return o === 1 && i === 0 ? "one" : o >= 2 && o <= 4 && i === 0 ? "few" : i !== 0 ? "many" : "other";
|
|
6385
8457
|
// ── Hungarian (one/other) ──────────────────────────────
|
|
6386
8458
|
case "hu":
|
|
6387
8459
|
return e === 1 ? "one" : "other";
|
|
6388
8460
|
// ── Romanian (one/few/other) ───────────────────────────
|
|
6389
8461
|
case "ro":
|
|
6390
|
-
return
|
|
8462
|
+
return o === 1 && i === 0 ? "one" : i !== 0 || e === 0 || e % 100 >= 2 && e % 100 <= 19 ? "few" : "other";
|
|
6391
8463
|
// ── Japanese/Korean/Chinese (other only) ─────────────────
|
|
6392
8464
|
case "ja":
|
|
6393
8465
|
case "ko":
|
|
@@ -6401,20 +8473,20 @@ function te(e, o) {
|
|
|
6401
8473
|
return "one";
|
|
6402
8474
|
if (e === 2)
|
|
6403
8475
|
return "two";
|
|
6404
|
-
const
|
|
6405
|
-
return
|
|
8476
|
+
const n = e % 100;
|
|
8477
|
+
return n >= 3 && n <= 10 ? "few" : n >= 11 && n <= 99 ? "many" : "other";
|
|
6406
8478
|
}
|
|
6407
8479
|
default:
|
|
6408
8480
|
if (typeof Intl < "u" && typeof Intl.PluralRules == "function")
|
|
6409
8481
|
try {
|
|
6410
|
-
return new Intl.PluralRules(
|
|
8482
|
+
return new Intl.PluralRules(t).select(e);
|
|
6411
8483
|
} catch {
|
|
6412
8484
|
}
|
|
6413
|
-
return
|
|
8485
|
+
return o === 1 && i === 0 ? "one" : "other";
|
|
6414
8486
|
}
|
|
6415
8487
|
}
|
|
6416
|
-
function
|
|
6417
|
-
switch (
|
|
8488
|
+
function re(e, t) {
|
|
8489
|
+
switch (t) {
|
|
6418
8490
|
// ── English ────────────────────────────────────────────
|
|
6419
8491
|
case "en":
|
|
6420
8492
|
return e % 10 === 1 && e % 100 !== 11 ? "one" : e % 10 === 2 && e % 100 !== 12 ? "two" : e % 10 === 3 && e % 100 !== 13 ? "few" : "other";
|
|
@@ -6441,149 +8513,149 @@ function ae(e, o) {
|
|
|
6441
8513
|
default:
|
|
6442
8514
|
if (typeof Intl < "u" && typeof Intl.PluralRules == "function")
|
|
6443
8515
|
try {
|
|
6444
|
-
return new Intl.PluralRules(
|
|
8516
|
+
return new Intl.PluralRules(t, { type: "ordinal" }).select(e);
|
|
6445
8517
|
} catch {
|
|
6446
8518
|
}
|
|
6447
8519
|
return "other";
|
|
6448
8520
|
}
|
|
6449
8521
|
}
|
|
6450
|
-
function
|
|
6451
|
-
var
|
|
8522
|
+
function et(e) {
|
|
8523
|
+
var i;
|
|
6452
8524
|
if (e = e.trim(), !e.includes(","))
|
|
6453
8525
|
return { type: "simple", name: e };
|
|
6454
|
-
const
|
|
6455
|
-
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)
|
|
6456
8528
|
return null;
|
|
6457
|
-
if (
|
|
6458
|
-
return { type: "number", name:
|
|
6459
|
-
if (
|
|
6460
|
-
return { type:
|
|
6461
|
-
if (
|
|
6462
|
-
const
|
|
6463
|
-
let
|
|
6464
|
-
for (; (
|
|
6465
|
-
|
|
6466
|
-
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 };
|
|
6467
8539
|
}
|
|
6468
|
-
return { type: "simple", name:
|
|
8540
|
+
return { type: "simple", name: r };
|
|
6469
8541
|
}
|
|
6470
|
-
function
|
|
6471
|
-
const
|
|
6472
|
-
switch (
|
|
8542
|
+
function tt(e, t, r) {
|
|
8543
|
+
const o = {};
|
|
8544
|
+
switch (r) {
|
|
6473
8545
|
case "currency":
|
|
6474
|
-
|
|
8546
|
+
o.style = "currency", o.currency = "USD";
|
|
6475
8547
|
break;
|
|
6476
8548
|
case "percent":
|
|
6477
|
-
|
|
8549
|
+
o.style = "percent";
|
|
6478
8550
|
break;
|
|
6479
8551
|
case "integer":
|
|
6480
|
-
|
|
8552
|
+
o.maximumFractionDigits = 0;
|
|
6481
8553
|
break;
|
|
6482
8554
|
}
|
|
6483
|
-
return new Intl.NumberFormat(
|
|
8555
|
+
return new Intl.NumberFormat(t, o).format(e);
|
|
6484
8556
|
}
|
|
6485
|
-
function
|
|
6486
|
-
const
|
|
6487
|
-
let
|
|
6488
|
-
switch (
|
|
8557
|
+
function ot(e, t, r) {
|
|
8558
|
+
const o = e instanceof Date ? e : new Date(e);
|
|
8559
|
+
let i;
|
|
8560
|
+
switch (r) {
|
|
6489
8561
|
case "short":
|
|
6490
|
-
|
|
8562
|
+
i = { dateStyle: "short" };
|
|
6491
8563
|
break;
|
|
6492
8564
|
case "long":
|
|
6493
|
-
|
|
8565
|
+
i = { dateStyle: "long" };
|
|
6494
8566
|
break;
|
|
6495
8567
|
case "full":
|
|
6496
|
-
|
|
8568
|
+
i = { dateStyle: "full" };
|
|
6497
8569
|
break;
|
|
6498
8570
|
case "medium":
|
|
6499
8571
|
default:
|
|
6500
|
-
|
|
8572
|
+
i = { dateStyle: "medium" };
|
|
6501
8573
|
break;
|
|
6502
8574
|
}
|
|
6503
|
-
return new Intl.DateTimeFormat(
|
|
8575
|
+
return new Intl.DateTimeFormat(t, i).format(o);
|
|
6504
8576
|
}
|
|
6505
|
-
function
|
|
6506
|
-
const
|
|
6507
|
-
let
|
|
6508
|
-
switch (
|
|
8577
|
+
function rt(e, t, r) {
|
|
8578
|
+
const o = e instanceof Date ? e : new Date(e);
|
|
8579
|
+
let i;
|
|
8580
|
+
switch (r) {
|
|
6509
8581
|
case "short":
|
|
6510
|
-
|
|
8582
|
+
i = { timeStyle: "short" };
|
|
6511
8583
|
break;
|
|
6512
8584
|
case "long":
|
|
6513
|
-
|
|
8585
|
+
i = { timeStyle: "long" };
|
|
6514
8586
|
break;
|
|
6515
8587
|
case "full":
|
|
6516
|
-
|
|
8588
|
+
i = { timeStyle: "full" };
|
|
6517
8589
|
break;
|
|
6518
8590
|
case "medium":
|
|
6519
8591
|
default:
|
|
6520
|
-
|
|
8592
|
+
i = { timeStyle: "medium" };
|
|
6521
8593
|
break;
|
|
6522
8594
|
}
|
|
6523
|
-
return new Intl.DateTimeFormat(
|
|
8595
|
+
return new Intl.DateTimeFormat(t, i).format(o);
|
|
6524
8596
|
}
|
|
6525
|
-
function
|
|
6526
|
-
return e.replace(/#/g, String(
|
|
8597
|
+
function H(e, t, r) {
|
|
8598
|
+
return e.replace(/#/g, String(r));
|
|
6527
8599
|
}
|
|
6528
|
-
function
|
|
6529
|
-
const
|
|
6530
|
-
return e.replace(
|
|
6531
|
-
const
|
|
6532
|
-
if (!
|
|
6533
|
-
return
|
|
6534
|
-
const
|
|
6535
|
-
if (
|
|
6536
|
-
return
|
|
6537
|
-
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) {
|
|
6538
8610
|
case "simple":
|
|
6539
|
-
return String(
|
|
8611
|
+
return String(d);
|
|
6540
8612
|
case "number":
|
|
6541
|
-
return typeof
|
|
8613
|
+
return typeof d != "number" ? n : tt(d, i, l.style);
|
|
6542
8614
|
case "date":
|
|
6543
|
-
return
|
|
8615
|
+
return ot(d, i, l.style);
|
|
6544
8616
|
case "time":
|
|
6545
|
-
return
|
|
8617
|
+
return rt(d, i, l.style);
|
|
6546
8618
|
case "plural": {
|
|
6547
|
-
if (typeof
|
|
6548
|
-
return
|
|
6549
|
-
const
|
|
6550
|
-
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);
|
|
6551
8623
|
}
|
|
6552
8624
|
case "selectordinal": {
|
|
6553
|
-
if (typeof
|
|
6554
|
-
return
|
|
6555
|
-
const
|
|
6556
|
-
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);
|
|
6557
8629
|
}
|
|
6558
8630
|
case "select": {
|
|
6559
|
-
if (!
|
|
6560
|
-
return
|
|
6561
|
-
const
|
|
6562
|
-
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);
|
|
6563
8635
|
}
|
|
6564
8636
|
default:
|
|
6565
|
-
return
|
|
8637
|
+
return n;
|
|
6566
8638
|
}
|
|
6567
8639
|
});
|
|
6568
8640
|
}
|
|
6569
|
-
function
|
|
6570
|
-
return function(
|
|
6571
|
-
const
|
|
6572
|
-
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;
|
|
6573
8645
|
};
|
|
6574
8646
|
}
|
|
6575
|
-
function
|
|
6576
|
-
const
|
|
6577
|
-
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));
|
|
6578
8650
|
}
|
|
6579
|
-
function
|
|
6580
|
-
const
|
|
6581
|
-
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));
|
|
6582
8654
|
}
|
|
6583
|
-
function
|
|
6584
|
-
return
|
|
8655
|
+
function eo(e, t) {
|
|
8656
|
+
return t[e] ?? t.other;
|
|
6585
8657
|
}
|
|
6586
|
-
const
|
|
8658
|
+
const at = [
|
|
6587
8659
|
"ar",
|
|
6588
8660
|
// Arabic
|
|
6589
8661
|
"he",
|
|
@@ -6597,29 +8669,29 @@ const no = [
|
|
|
6597
8669
|
"ps"
|
|
6598
8670
|
// Pashto
|
|
6599
8671
|
];
|
|
6600
|
-
function
|
|
6601
|
-
return
|
|
8672
|
+
function ie(e) {
|
|
8673
|
+
return at.includes(e);
|
|
6602
8674
|
}
|
|
6603
|
-
function
|
|
6604
|
-
return
|
|
8675
|
+
function nt(e) {
|
|
8676
|
+
return ie(e) ? "rtl" : "ltr";
|
|
6605
8677
|
}
|
|
6606
|
-
function
|
|
8678
|
+
function st(e) {
|
|
6607
8679
|
if (typeof document > "u")
|
|
6608
8680
|
return;
|
|
6609
|
-
const
|
|
6610
|
-
document.documentElement.setAttribute("dir",
|
|
8681
|
+
const t = nt(e);
|
|
8682
|
+
document.documentElement.setAttribute("dir", t), document.documentElement.setAttribute("lang", e);
|
|
6611
8683
|
}
|
|
6612
|
-
function
|
|
8684
|
+
function to() {
|
|
6613
8685
|
return typeof document > "u" ? "ltr" : document.documentElement.getAttribute("dir") || "ltr";
|
|
6614
8686
|
}
|
|
6615
|
-
function
|
|
6616
|
-
return
|
|
8687
|
+
function lt(e, t) {
|
|
8688
|
+
return t ? e.rtl : e.ltr;
|
|
6617
8689
|
}
|
|
6618
|
-
function
|
|
8690
|
+
function oo(e) {
|
|
6619
8691
|
return e === "left" ? "right" : "left";
|
|
6620
8692
|
}
|
|
6621
|
-
function
|
|
6622
|
-
return
|
|
8693
|
+
function dt(e, t) {
|
|
8694
|
+
return t && {
|
|
6623
8695
|
left: "right",
|
|
6624
8696
|
right: "left",
|
|
6625
8697
|
start: "end",
|
|
@@ -6628,7 +8700,7 @@ function co(e, o) {
|
|
|
6628
8700
|
"flex-end": "flex-start"
|
|
6629
8701
|
}[e] || e;
|
|
6630
8702
|
}
|
|
6631
|
-
function
|
|
8703
|
+
function ct(e) {
|
|
6632
8704
|
return {
|
|
6633
8705
|
// Margins
|
|
6634
8706
|
"margin-left": "margin-inline-start",
|
|
@@ -6658,39 +8730,39 @@ function mo(e) {
|
|
|
6658
8730
|
"text-align: right": "text-align: end"
|
|
6659
8731
|
}[e] || e;
|
|
6660
8732
|
}
|
|
6661
|
-
const
|
|
8733
|
+
const G = I({
|
|
6662
8734
|
dir: "ltr",
|
|
6663
8735
|
isRTL: !1,
|
|
6664
8736
|
flip: (e) => e,
|
|
6665
8737
|
value: (e) => e.ltr
|
|
6666
|
-
}),
|
|
8738
|
+
}), ro = ({
|
|
6667
8739
|
lang: e,
|
|
6668
|
-
autoSetDocument:
|
|
6669
|
-
children:
|
|
8740
|
+
autoSetDocument: t = !0,
|
|
8741
|
+
children: r
|
|
6670
8742
|
}) => {
|
|
6671
|
-
const
|
|
8743
|
+
const o = ie(e), i = o ? "rtl" : "ltr";
|
|
6672
8744
|
L(() => {
|
|
6673
|
-
|
|
6674
|
-
}, [e,
|
|
6675
|
-
const
|
|
8745
|
+
t && st(e);
|
|
8746
|
+
}, [e, t]);
|
|
8747
|
+
const a = b(
|
|
6676
8748
|
() => ({
|
|
6677
|
-
dir:
|
|
6678
|
-
isRTL:
|
|
6679
|
-
flip: (
|
|
6680
|
-
value: (
|
|
8749
|
+
dir: i,
|
|
8750
|
+
isRTL: o,
|
|
8751
|
+
flip: (n) => dt(n, o),
|
|
8752
|
+
value: (n) => lt(n, o)
|
|
6681
8753
|
}),
|
|
6682
|
-
[
|
|
8754
|
+
[i, o]
|
|
6683
8755
|
);
|
|
6684
|
-
return /* @__PURE__ */
|
|
8756
|
+
return /* @__PURE__ */ O(G.Provider, { value: a, children: r });
|
|
6685
8757
|
};
|
|
6686
|
-
function
|
|
6687
|
-
return
|
|
8758
|
+
function io() {
|
|
8759
|
+
return B(G);
|
|
6688
8760
|
}
|
|
6689
|
-
function
|
|
6690
|
-
return
|
|
8761
|
+
function ao() {
|
|
8762
|
+
return B(G).isRTL;
|
|
6691
8763
|
}
|
|
6692
|
-
function
|
|
6693
|
-
const
|
|
8764
|
+
function no(e) {
|
|
8765
|
+
const t = [], r = [
|
|
6694
8766
|
"left",
|
|
6695
8767
|
"right",
|
|
6696
8768
|
"margin-left",
|
|
@@ -6700,11 +8772,11 @@ function st(e) {
|
|
|
6700
8772
|
"border-left",
|
|
6701
8773
|
"border-right"
|
|
6702
8774
|
];
|
|
6703
|
-
for (const [
|
|
6704
|
-
|
|
6705
|
-
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;
|
|
6706
8778
|
}
|
|
6707
|
-
const
|
|
8779
|
+
const W = {
|
|
6708
8780
|
// Direction multiplier: 1 for LTR, -1 for RTL
|
|
6709
8781
|
dirMultiplier: "--nice-dir-multiplier",
|
|
6710
8782
|
// Inline start (left in LTR, right in RTL)
|
|
@@ -6712,52 +8784,52 @@ const H = {
|
|
|
6712
8784
|
// Inline end (right in LTR, left in RTL)
|
|
6713
8785
|
inlineEnd: "--nice-inline-end"
|
|
6714
8786
|
};
|
|
6715
|
-
function
|
|
8787
|
+
function so(e) {
|
|
6716
8788
|
return {
|
|
6717
|
-
[
|
|
6718
|
-
[
|
|
6719
|
-
[
|
|
8789
|
+
[W.dirMultiplier]: e ? "-1" : "1",
|
|
8790
|
+
[W.inlineStart]: e ? "right" : "left",
|
|
8791
|
+
[W.inlineEnd]: e ? "left" : "right"
|
|
6720
8792
|
};
|
|
6721
8793
|
}
|
|
6722
|
-
function
|
|
8794
|
+
function lo() {
|
|
6723
8795
|
return Object.keys(w.en);
|
|
6724
8796
|
}
|
|
6725
|
-
function
|
|
8797
|
+
function ut(e) {
|
|
6726
8798
|
if (e === "en")
|
|
6727
8799
|
return [];
|
|
6728
|
-
const
|
|
6729
|
-
for (const [
|
|
6730
|
-
|
|
6731
|
-
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;
|
|
6732
8804
|
}
|
|
6733
|
-
function
|
|
6734
|
-
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);
|
|
6735
8807
|
return {
|
|
6736
8808
|
lang: e,
|
|
6737
|
-
totalKeys:
|
|
6738
|
-
translatedKeys:
|
|
6739
|
-
missingKeys:
|
|
6740
|
-
coverage:
|
|
8809
|
+
totalKeys: t,
|
|
8810
|
+
translatedKeys: r,
|
|
8811
|
+
missingKeys: o,
|
|
8812
|
+
coverage: i
|
|
6741
8813
|
};
|
|
6742
8814
|
}
|
|
6743
|
-
function
|
|
6744
|
-
return
|
|
8815
|
+
function mt() {
|
|
8816
|
+
return T.map((e) => pt(e));
|
|
6745
8817
|
}
|
|
6746
|
-
function
|
|
6747
|
-
const
|
|
6748
|
-
const
|
|
6749
|
-
return ` '${
|
|
8818
|
+
function co(e, t) {
|
|
8819
|
+
const r = t.map((o) => {
|
|
8820
|
+
const i = o.translated.replace(/'/g, "\\'");
|
|
8821
|
+
return ` '${o.key}': '${i}',`;
|
|
6750
8822
|
});
|
|
6751
8823
|
return `// Auto-translated additions for ${e} (review before merging)
|
|
6752
8824
|
// Generated on ${(/* @__PURE__ */ new Date()).toISOString()}
|
|
6753
8825
|
{
|
|
6754
|
-
${
|
|
8826
|
+
${r.join(`
|
|
6755
8827
|
`)}
|
|
6756
8828
|
}`;
|
|
6757
8829
|
}
|
|
6758
|
-
function
|
|
6759
|
-
const e =
|
|
6760
|
-
let
|
|
8830
|
+
function uo() {
|
|
8831
|
+
const e = mt();
|
|
8832
|
+
let t = `# Translation Coverage Report
|
|
6761
8833
|
|
|
6762
8834
|
Generated: ${(/* @__PURE__ */ new Date()).toISOString()}
|
|
6763
8835
|
|
|
@@ -6766,29 +8838,29 @@ Generated: ${(/* @__PURE__ */ new Date()).toISOString()}
|
|
|
6766
8838
|
| Language | Translated | Missing | Coverage |
|
|
6767
8839
|
|----------|------------|---------|----------|
|
|
6768
8840
|
`;
|
|
6769
|
-
for (const
|
|
6770
|
-
const
|
|
6771
|
-
|
|
8841
|
+
for (const r of e) {
|
|
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}% |
|
|
6772
8844
|
`;
|
|
6773
8845
|
}
|
|
6774
|
-
|
|
8846
|
+
t += `
|
|
6775
8847
|
## Languages with Missing Translations
|
|
6776
8848
|
|
|
6777
8849
|
`;
|
|
6778
|
-
for (const
|
|
6779
|
-
|
|
8850
|
+
for (const r of e.filter((o) => o.missingKeys > 0)) {
|
|
8851
|
+
t += `### ${r.lang.toUpperCase()} (${r.coverage}% complete)
|
|
6780
8852
|
|
|
6781
8853
|
`;
|
|
6782
|
-
const
|
|
6783
|
-
|
|
8854
|
+
const o = ut(r.lang);
|
|
8855
|
+
t += `Missing ${o.length} keys:
|
|
6784
8856
|
|
|
6785
|
-
`,
|
|
6786
|
-
`),
|
|
6787
|
-
... 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";
|
|
6788
8860
|
}
|
|
6789
|
-
return
|
|
8861
|
+
return t;
|
|
6790
8862
|
}
|
|
6791
|
-
const
|
|
8863
|
+
const gt = {
|
|
6792
8864
|
en: "en-US",
|
|
6793
8865
|
pl: "pl-PL",
|
|
6794
8866
|
de: "de-DE",
|
|
@@ -6821,56 +8893,56 @@ const ho = {
|
|
|
6821
8893
|
ms: "ms-MY"
|
|
6822
8894
|
};
|
|
6823
8895
|
function D(e) {
|
|
6824
|
-
return
|
|
8896
|
+
return gt[e] ?? "en-US";
|
|
6825
8897
|
}
|
|
6826
|
-
function
|
|
6827
|
-
const
|
|
8898
|
+
function ht(e, t = "medium") {
|
|
8899
|
+
const r = D(e), o = new Intl.DateTimeFormat(r, { dateStyle: t });
|
|
6828
8900
|
return {
|
|
6829
|
-
format: (
|
|
6830
|
-
formatRange: (
|
|
6831
|
-
const
|
|
6832
|
-
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);
|
|
6833
8905
|
},
|
|
6834
|
-
formatRelative: (
|
|
8906
|
+
formatRelative: (i) => wt(i instanceof Date ? i : new Date(i), r)
|
|
6835
8907
|
};
|
|
6836
8908
|
}
|
|
6837
|
-
function
|
|
6838
|
-
return
|
|
8909
|
+
function po(e, t = "medium") {
|
|
8910
|
+
return b(() => ht(e, t), [e, t]);
|
|
6839
8911
|
}
|
|
6840
|
-
function
|
|
6841
|
-
const
|
|
8912
|
+
function vt(e, t = "short") {
|
|
8913
|
+
const r = D(e), o = new Intl.DateTimeFormat(r, { timeStyle: t });
|
|
6842
8914
|
return {
|
|
6843
|
-
format: (
|
|
8915
|
+
format: (i) => o.format(i instanceof Date ? i : new Date(i))
|
|
6844
8916
|
};
|
|
6845
8917
|
}
|
|
6846
|
-
function
|
|
6847
|
-
return
|
|
8918
|
+
function mo(e, t = "short") {
|
|
8919
|
+
return b(() => vt(e, t), [e, t]);
|
|
6848
8920
|
}
|
|
6849
|
-
function
|
|
6850
|
-
const
|
|
8921
|
+
function ft(e) {
|
|
8922
|
+
const t = D(e);
|
|
6851
8923
|
return {
|
|
6852
|
-
format: (
|
|
6853
|
-
formatCompact: (
|
|
6854
|
-
formatPercent: (
|
|
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)
|
|
6855
8927
|
};
|
|
6856
8928
|
}
|
|
6857
|
-
function
|
|
6858
|
-
return
|
|
8929
|
+
function go(e) {
|
|
8930
|
+
return b(() => ft(e), [e]);
|
|
6859
8931
|
}
|
|
6860
|
-
function
|
|
6861
|
-
const
|
|
8932
|
+
function bt(e, t = "USD") {
|
|
8933
|
+
const r = D(e), o = new Intl.NumberFormat(r, { style: "currency", currency: t });
|
|
6862
8934
|
return {
|
|
6863
|
-
format: (
|
|
8935
|
+
format: (i) => o.format(i)
|
|
6864
8936
|
};
|
|
6865
8937
|
}
|
|
6866
|
-
function
|
|
6867
|
-
return
|
|
8938
|
+
function ho(e, t = "USD") {
|
|
8939
|
+
return b(() => bt(e, t), [e, t]);
|
|
6868
8940
|
}
|
|
6869
|
-
function
|
|
6870
|
-
const
|
|
6871
|
-
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");
|
|
6872
8944
|
}
|
|
6873
|
-
const
|
|
8945
|
+
const ae = [
|
|
6874
8946
|
{
|
|
6875
8947
|
en: "Save",
|
|
6876
8948
|
translations: {
|
|
@@ -7022,54 +9094,54 @@ const ne = [
|
|
|
7022
9094
|
}
|
|
7023
9095
|
}
|
|
7024
9096
|
];
|
|
7025
|
-
function
|
|
7026
|
-
const
|
|
7027
|
-
return
|
|
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];
|
|
7028
9100
|
}
|
|
7029
|
-
function
|
|
7030
|
-
const
|
|
7031
|
-
let
|
|
7032
|
-
for (const [s,
|
|
7033
|
-
const
|
|
7034
|
-
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)
|
|
7035
9107
|
continue;
|
|
7036
|
-
const
|
|
7037
|
-
|
|
9108
|
+
const u = Et(a, l.toLowerCase().trim());
|
|
9109
|
+
u >= r && (!n || u > n.similarity) && (n = { key: s, english: l, translated: d, similarity: u });
|
|
7038
9110
|
}
|
|
7039
|
-
return
|
|
9111
|
+
return n;
|
|
7040
9112
|
}
|
|
7041
|
-
function
|
|
7042
|
-
return
|
|
7043
|
-
en:
|
|
7044
|
-
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]
|
|
7045
9117
|
}));
|
|
7046
9118
|
}
|
|
7047
|
-
function
|
|
7048
|
-
const
|
|
7049
|
-
for (const [
|
|
7050
|
-
const
|
|
7051
|
-
|
|
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 });
|
|
7052
9124
|
}
|
|
7053
|
-
return t;
|
|
7054
|
-
}
|
|
7055
|
-
function _(e) {
|
|
7056
|
-
const o = /* @__PURE__ */ new Set();
|
|
7057
|
-
for (let a = 0; a < e.length - 1; a++)
|
|
7058
|
-
o.add(e.substring(a, a + 2));
|
|
7059
9125
|
return o;
|
|
7060
9126
|
}
|
|
7061
|
-
function
|
|
7062
|
-
|
|
9127
|
+
function $(e) {
|
|
9128
|
+
const t = /* @__PURE__ */ new Set();
|
|
9129
|
+
for (let r = 0; r < e.length - 1; r++)
|
|
9130
|
+
t.add(e.substring(r, r + 2));
|
|
9131
|
+
return t;
|
|
9132
|
+
}
|
|
9133
|
+
function Et(e, t) {
|
|
9134
|
+
if (e === t)
|
|
7063
9135
|
return 1;
|
|
7064
|
-
if (e.length < 2 ||
|
|
9136
|
+
if (e.length < 2 || t.length < 2)
|
|
7065
9137
|
return 0;
|
|
7066
|
-
const
|
|
7067
|
-
let
|
|
7068
|
-
for (const
|
|
7069
|
-
|
|
7070
|
-
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);
|
|
7071
9143
|
}
|
|
7072
|
-
const
|
|
9144
|
+
const ne = {
|
|
7073
9145
|
UTC: ["UTC", "Etc/UTC", "Etc/GMT"],
|
|
7074
9146
|
NorthAmerica: [
|
|
7075
9147
|
"America/New_York",
|
|
@@ -7130,124 +9202,124 @@ const ie = {
|
|
|
7130
9202
|
"Pacific/Fiji"
|
|
7131
9203
|
]
|
|
7132
9204
|
};
|
|
7133
|
-
function
|
|
9205
|
+
function Z() {
|
|
7134
9206
|
try {
|
|
7135
9207
|
return Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
7136
9208
|
} catch {
|
|
7137
9209
|
return "UTC";
|
|
7138
9210
|
}
|
|
7139
9211
|
}
|
|
7140
|
-
function
|
|
9212
|
+
function wo(e) {
|
|
7141
9213
|
try {
|
|
7142
9214
|
return new Intl.DateTimeFormat("en", { timeZone: e }), !0;
|
|
7143
9215
|
} catch {
|
|
7144
9216
|
return !1;
|
|
7145
9217
|
}
|
|
7146
9218
|
}
|
|
7147
|
-
function F(e,
|
|
7148
|
-
var
|
|
7149
|
-
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, {
|
|
7150
9222
|
timeZone: e,
|
|
7151
9223
|
timeZoneName: "long"
|
|
7152
|
-
}),
|
|
9224
|
+
}), a = new Intl.DateTimeFormat(o, {
|
|
7153
9225
|
timeZone: e,
|
|
7154
9226
|
timeZoneName: "short"
|
|
7155
|
-
}),
|
|
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;
|
|
7156
9228
|
return {
|
|
7157
9229
|
id: e,
|
|
7158
|
-
displayName:
|
|
7159
|
-
shortName:
|
|
9230
|
+
displayName: l,
|
|
9231
|
+
shortName: d,
|
|
7160
9232
|
offsetMinutes: p,
|
|
7161
|
-
offsetString:
|
|
7162
|
-
isDST:
|
|
9233
|
+
offsetString: St(p),
|
|
9234
|
+
isDST: j
|
|
7163
9235
|
};
|
|
7164
9236
|
}
|
|
7165
|
-
function
|
|
7166
|
-
return Object.values(
|
|
9237
|
+
function ko(e = "en", t = /* @__PURE__ */ new Date()) {
|
|
9238
|
+
return Object.values(ne).flat().map((o) => F(o, e, t));
|
|
7167
9239
|
}
|
|
7168
|
-
function
|
|
7169
|
-
const
|
|
7170
|
-
for (const [
|
|
7171
|
-
|
|
7172
|
-
return
|
|
9240
|
+
function Eo(e = "en", t = /* @__PURE__ */ new Date()) {
|
|
9241
|
+
const r = {};
|
|
9242
|
+
for (const [o, i] of Object.entries(ne))
|
|
9243
|
+
r[o] = i.map((a) => F(a, e, t));
|
|
9244
|
+
return r;
|
|
7173
9245
|
}
|
|
7174
|
-
function se(e,
|
|
7175
|
-
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();
|
|
7176
9248
|
return new Date(e.getTime() + s);
|
|
7177
9249
|
}
|
|
7178
|
-
function
|
|
7179
|
-
const
|
|
7180
|
-
return se(e,
|
|
9250
|
+
function yt(e, t) {
|
|
9251
|
+
const r = t || Z();
|
|
9252
|
+
return se(e, r, "UTC");
|
|
7181
9253
|
}
|
|
7182
|
-
function
|
|
7183
|
-
const
|
|
7184
|
-
return se(e, "UTC",
|
|
9254
|
+
function zt(e, t) {
|
|
9255
|
+
const r = t || Z();
|
|
9256
|
+
return se(e, "UTC", r);
|
|
7185
9257
|
}
|
|
7186
|
-
function
|
|
7187
|
-
const
|
|
7188
|
-
timeZone:
|
|
7189
|
-
dateStyle:
|
|
7190
|
-
timeStyle:
|
|
7191
|
-
}),
|
|
7192
|
-
timeZone:
|
|
7193
|
-
dateStyle:
|
|
7194
|
-
timeStyle:
|
|
7195
|
-
timeZoneName:
|
|
7196
|
-
}),
|
|
7197
|
-
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,
|
|
7198
9270
|
timeZoneName: "short"
|
|
7199
9271
|
});
|
|
7200
9272
|
return {
|
|
7201
|
-
format: (
|
|
7202
|
-
formatWithZone: (
|
|
7203
|
-
getOffset: (
|
|
7204
|
-
getAbbreviation: (
|
|
9273
|
+
format: (u) => s.format(u),
|
|
9274
|
+
formatWithZone: (u) => l.format(u),
|
|
9275
|
+
getOffset: (u) => F(t, e, u).offsetString,
|
|
9276
|
+
getAbbreviation: (u) => {
|
|
7205
9277
|
var p;
|
|
7206
|
-
return ((p =
|
|
9278
|
+
return ((p = d.formatToParts(u).find((m) => m.type === "timeZoneName")) == null ? void 0 : p.value) || "";
|
|
7207
9279
|
}
|
|
7208
9280
|
};
|
|
7209
9281
|
}
|
|
7210
|
-
function
|
|
7211
|
-
return F(e, "en",
|
|
9282
|
+
function q(e, t = /* @__PURE__ */ new Date()) {
|
|
9283
|
+
return F(e, "en", t).isDST;
|
|
7212
9284
|
}
|
|
7213
|
-
function
|
|
7214
|
-
const
|
|
7215
|
-
for (
|
|
7216
|
-
if (
|
|
7217
|
-
|
|
7218
|
-
const
|
|
7219
|
-
|
|
7220
|
-
const
|
|
7221
|
-
for (
|
|
7222
|
-
const s = new Date((
|
|
7223
|
-
|
|
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());
|
|
7224
9296
|
}
|
|
7225
|
-
return
|
|
9297
|
+
return n;
|
|
7226
9298
|
}
|
|
7227
9299
|
return null;
|
|
7228
9300
|
}
|
|
7229
|
-
function
|
|
7230
|
-
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]);
|
|
7231
9303
|
return {
|
|
7232
|
-
timezone:
|
|
7233
|
-
info:
|
|
7234
|
-
format:
|
|
7235
|
-
formatWithZone:
|
|
7236
|
-
getOffset:
|
|
7237
|
-
getAbbreviation:
|
|
7238
|
-
toUTC: (s) =>
|
|
7239
|
-
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)
|
|
7240
9312
|
};
|
|
7241
9313
|
}
|
|
7242
|
-
function
|
|
7243
|
-
const
|
|
7244
|
-
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);
|
|
7245
9317
|
}
|
|
7246
|
-
function
|
|
7247
|
-
const
|
|
7248
|
-
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")}`;
|
|
7249
9321
|
}
|
|
7250
|
-
const
|
|
9322
|
+
const V = {
|
|
7251
9323
|
gregory: {
|
|
7252
9324
|
id: "gregory",
|
|
7253
9325
|
displayName: "Gregorian",
|
|
@@ -7381,7 +9453,7 @@ const U = {
|
|
|
7381
9453
|
isLunar: !1,
|
|
7382
9454
|
associatedLanguages: ["zh"]
|
|
7383
9455
|
}
|
|
7384
|
-
},
|
|
9456
|
+
}, le = {
|
|
7385
9457
|
en: "gregory",
|
|
7386
9458
|
pl: "gregory",
|
|
7387
9459
|
de: "gregory",
|
|
@@ -7413,70 +9485,70 @@ const U = {
|
|
|
7413
9485
|
fil: "gregory",
|
|
7414
9486
|
ms: "gregory"
|
|
7415
9487
|
};
|
|
7416
|
-
function
|
|
7417
|
-
const
|
|
7418
|
-
calendar:
|
|
7419
|
-
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
|
|
7420
9492
|
};
|
|
7421
|
-
|
|
7422
|
-
const
|
|
7423
|
-
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,
|
|
7424
9496
|
year: "numeric",
|
|
7425
9497
|
month: "long",
|
|
7426
9498
|
day: "numeric",
|
|
7427
9499
|
era: "long"
|
|
7428
|
-
},
|
|
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" });
|
|
7429
9501
|
return {
|
|
7430
|
-
format: (
|
|
7431
|
-
formatWithEra: (
|
|
7432
|
-
getMonthName: (
|
|
9502
|
+
format: (m) => l.format(m),
|
|
9503
|
+
formatWithEra: (m) => u.format(m),
|
|
9504
|
+
getMonthName: (m) => v.format(m),
|
|
7433
9505
|
getMonthNames: () => {
|
|
7434
|
-
const
|
|
9506
|
+
const m = [], f = new Date(2024, 0, 15);
|
|
7435
9507
|
for (let g = 0; g < 12; g++)
|
|
7436
|
-
|
|
7437
|
-
return
|
|
9508
|
+
f.setMonth(g), m.push(v.format(f));
|
|
9509
|
+
return m;
|
|
7438
9510
|
},
|
|
7439
|
-
getWeekdayName: (
|
|
9511
|
+
getWeekdayName: (m) => p.format(m),
|
|
7440
9512
|
getWeekdayNames: () => {
|
|
7441
|
-
const
|
|
9513
|
+
const m = [], f = new Date(2024, 0, 7);
|
|
7442
9514
|
for (let g = 0; g < 7; g++)
|
|
7443
|
-
|
|
7444
|
-
return
|
|
9515
|
+
f.setDate(7 + g), m.push(p.format(f));
|
|
9516
|
+
return m;
|
|
7445
9517
|
},
|
|
7446
|
-
parseParts: (
|
|
7447
|
-
var
|
|
7448
|
-
const g = new Intl.DateTimeFormat(
|
|
7449
|
-
calendar:
|
|
9518
|
+
parseParts: (m) => {
|
|
9519
|
+
var y, z, E, j;
|
|
9520
|
+
const g = new Intl.DateTimeFormat(o, {
|
|
9521
|
+
calendar: t,
|
|
7450
9522
|
year: "numeric",
|
|
7451
9523
|
month: "numeric",
|
|
7452
9524
|
day: "numeric",
|
|
7453
9525
|
era: "short"
|
|
7454
|
-
}).formatToParts(
|
|
9526
|
+
}).formatToParts(m);
|
|
7455
9527
|
return {
|
|
7456
|
-
calendar:
|
|
7457
|
-
year: parseInt(((
|
|
7458
|
-
month: parseInt(((
|
|
7459
|
-
day: parseInt(((
|
|
7460
|
-
era: (
|
|
7461
|
-
gregorianDate:
|
|
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,
|
|
9533
|
+
gregorianDate: m
|
|
7462
9534
|
};
|
|
7463
9535
|
},
|
|
7464
|
-
getEraName: (
|
|
7465
|
-
var
|
|
7466
|
-
return (
|
|
7467
|
-
calendar:
|
|
9536
|
+
getEraName: (m) => {
|
|
9537
|
+
var y;
|
|
9538
|
+
return (y = new Intl.DateTimeFormat(o, {
|
|
9539
|
+
calendar: t,
|
|
7468
9540
|
era: "long"
|
|
7469
|
-
}).formatToParts(
|
|
9541
|
+
}).formatToParts(m).find((z) => z.type === "era")) == null ? void 0 : y.value;
|
|
7470
9542
|
}
|
|
7471
9543
|
};
|
|
7472
9544
|
}
|
|
7473
|
-
function ce(e,
|
|
7474
|
-
return
|
|
9545
|
+
function ce(e, t, r = "en") {
|
|
9546
|
+
return de(r, t).parseParts(e);
|
|
7475
9547
|
}
|
|
7476
|
-
function
|
|
7477
|
-
return ce(/* @__PURE__ */ new Date(), e,
|
|
9548
|
+
function Dt(e, t = "en") {
|
|
9549
|
+
return ce(/* @__PURE__ */ new Date(), e, t);
|
|
7478
9550
|
}
|
|
7479
|
-
const
|
|
9551
|
+
const Co = [
|
|
7480
9552
|
"Muharram",
|
|
7481
9553
|
"Safar",
|
|
7482
9554
|
"Rabi' al-Awwal",
|
|
@@ -7490,13 +9562,13 @@ const zt = [
|
|
|
7490
9562
|
"Dhu al-Qi'dah",
|
|
7491
9563
|
"Dhu al-Hijjah"
|
|
7492
9564
|
];
|
|
7493
|
-
function
|
|
9565
|
+
function jt(e) {
|
|
7494
9566
|
return (11 * e + 14) % 30 < 11;
|
|
7495
9567
|
}
|
|
7496
|
-
function
|
|
7497
|
-
return
|
|
9568
|
+
function So(e, t) {
|
|
9569
|
+
return t === 12 ? jt(e) ? 30 : 29 : t % 2 === 1 ? 30 : 29;
|
|
7498
9570
|
}
|
|
7499
|
-
const
|
|
9571
|
+
const Do = [
|
|
7500
9572
|
"Tishrei",
|
|
7501
9573
|
"Cheshvan",
|
|
7502
9574
|
"Kislev",
|
|
@@ -7509,7 +9581,7 @@ const Dt = [
|
|
|
7509
9581
|
"Tammuz",
|
|
7510
9582
|
"Av",
|
|
7511
9583
|
"Elul"
|
|
7512
|
-
],
|
|
9584
|
+
], jo = [
|
|
7513
9585
|
"Tishrei",
|
|
7514
9586
|
"Cheshvan",
|
|
7515
9587
|
"Kislev",
|
|
@@ -7524,27 +9596,27 @@ const Dt = [
|
|
|
7524
9596
|
"Av",
|
|
7525
9597
|
"Elul"
|
|
7526
9598
|
];
|
|
7527
|
-
function
|
|
9599
|
+
function Ao(e) {
|
|
7528
9600
|
return (7 * e + 1) % 19 < 7;
|
|
7529
9601
|
}
|
|
7530
|
-
const
|
|
9602
|
+
const K = [
|
|
7531
9603
|
{ name: "Meiji", kanji: "明治", startDate: new Date(1868, 9, 23) },
|
|
7532
9604
|
{ name: "Taisho", kanji: "大正", startDate: new Date(1912, 6, 30) },
|
|
7533
9605
|
{ name: "Showa", kanji: "昭和", startDate: new Date(1926, 11, 25) },
|
|
7534
9606
|
{ name: "Heisei", kanji: "平成", startDate: new Date(1989, 0, 8) },
|
|
7535
9607
|
{ name: "Reiwa", kanji: "令和", startDate: new Date(2019, 4, 1) }
|
|
7536
9608
|
];
|
|
7537
|
-
function
|
|
7538
|
-
for (let
|
|
7539
|
-
if (e >=
|
|
7540
|
-
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];
|
|
7541
9613
|
return null;
|
|
7542
9614
|
}
|
|
7543
|
-
function
|
|
7544
|
-
const
|
|
7545
|
-
return
|
|
9615
|
+
function Po(e) {
|
|
9616
|
+
const t = At(e);
|
|
9617
|
+
return t ? e.getFullYear() - t.startDate.getFullYear() + 1 : null;
|
|
7546
9618
|
}
|
|
7547
|
-
const
|
|
9619
|
+
const xo = [
|
|
7548
9620
|
"Farvardin",
|
|
7549
9621
|
"Ordibehesht",
|
|
7550
9622
|
"Khordad",
|
|
@@ -7558,10 +9630,10 @@ const Pt = [
|
|
|
7558
9630
|
"Bahman",
|
|
7559
9631
|
"Esfand"
|
|
7560
9632
|
];
|
|
7561
|
-
function
|
|
9633
|
+
function To(e) {
|
|
7562
9634
|
return ((e - 474) % 2820 + 2820) % 2820 * 682 % 2816 < 682;
|
|
7563
9635
|
}
|
|
7564
|
-
const
|
|
9636
|
+
const Pt = [
|
|
7565
9637
|
"Rat",
|
|
7566
9638
|
"Ox",
|
|
7567
9639
|
"Tiger",
|
|
@@ -7575,10 +9647,10 @@ const Po = [
|
|
|
7575
9647
|
"Dog",
|
|
7576
9648
|
"Pig"
|
|
7577
9649
|
];
|
|
7578
|
-
function
|
|
7579
|
-
return
|
|
9650
|
+
function Bo(e) {
|
|
9651
|
+
return Pt[(e - 4) % 12];
|
|
7580
9652
|
}
|
|
7581
|
-
const
|
|
9653
|
+
const xt = [
|
|
7582
9654
|
"Jia",
|
|
7583
9655
|
"Yi",
|
|
7584
9656
|
"Bing",
|
|
@@ -7590,48 +9662,48 @@ const jo = [
|
|
|
7590
9662
|
"Ren",
|
|
7591
9663
|
"Gui"
|
|
7592
9664
|
];
|
|
7593
|
-
function
|
|
7594
|
-
return
|
|
9665
|
+
function Fo(e) {
|
|
9666
|
+
return xt[(e - 4) % 10];
|
|
7595
9667
|
}
|
|
7596
|
-
function
|
|
7597
|
-
const
|
|
7598
|
-
() =>
|
|
7599
|
-
[e,
|
|
7600
|
-
),
|
|
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]);
|
|
7601
9673
|
return {
|
|
7602
|
-
calendar:
|
|
7603
|
-
info:
|
|
7604
|
-
current:
|
|
7605
|
-
format:
|
|
7606
|
-
formatWithEra:
|
|
7607
|
-
getMonthName:
|
|
7608
|
-
getMonthNames:
|
|
7609
|
-
getWeekdayName:
|
|
7610
|
-
getWeekdayNames:
|
|
7611
|
-
parseParts:
|
|
7612
|
-
getEraName:
|
|
7613
|
-
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)
|
|
7614
9686
|
};
|
|
7615
9687
|
}
|
|
7616
|
-
function
|
|
7617
|
-
return Object.keys(
|
|
9688
|
+
function No() {
|
|
9689
|
+
return Object.keys(V);
|
|
7618
9690
|
}
|
|
7619
|
-
function
|
|
7620
|
-
const
|
|
9691
|
+
function Ro(e, t = "en") {
|
|
9692
|
+
const r = { ...V[e] };
|
|
7621
9693
|
try {
|
|
7622
|
-
const
|
|
7623
|
-
|
|
9694
|
+
const o = D(t), a = new Intl.DisplayNames([o], { type: "calendar" }).of(e);
|
|
9695
|
+
a && (r.displayName = a);
|
|
7624
9696
|
} catch {
|
|
7625
9697
|
}
|
|
7626
|
-
return
|
|
9698
|
+
return r;
|
|
7627
9699
|
}
|
|
7628
|
-
function
|
|
7629
|
-
const
|
|
7630
|
-
for (const [
|
|
7631
|
-
|
|
7632
|
-
return
|
|
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);
|
|
9704
|
+
return r.add("gregory"), Array.from(r);
|
|
7633
9705
|
}
|
|
7634
|
-
const
|
|
9706
|
+
const J = {
|
|
7635
9707
|
// Lowercase
|
|
7636
9708
|
a: "ą",
|
|
7637
9709
|
b: "ɓ",
|
|
@@ -7686,8 +9758,8 @@ const $ = {
|
|
|
7686
9758
|
X: "Χ",
|
|
7687
9759
|
Y: "Ÿ",
|
|
7688
9760
|
Z: "Ž"
|
|
7689
|
-
},
|
|
7690
|
-
|
|
9761
|
+
}, Tt = {
|
|
9762
|
+
...J,
|
|
7691
9763
|
// Additional mappings
|
|
7692
9764
|
a: "ặ",
|
|
7693
9765
|
e: "ệ",
|
|
@@ -7701,64 +9773,64 @@ const $ = {
|
|
|
7701
9773
|
O: "Ộ",
|
|
7702
9774
|
U: "Ụ",
|
|
7703
9775
|
Y: "Ỵ"
|
|
7704
|
-
},
|
|
7705
|
-
function
|
|
7706
|
-
const
|
|
7707
|
-
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("");
|
|
7708
9780
|
}
|
|
7709
|
-
function
|
|
7710
|
-
return `${
|
|
9781
|
+
function Io(e, t = "[", r = "]") {
|
|
9782
|
+
return `${t}${e}${r}`;
|
|
7711
9783
|
}
|
|
7712
|
-
function
|
|
7713
|
-
if (
|
|
7714
|
-
return
|
|
7715
|
-
const
|
|
7716
|
-
if (
|
|
9784
|
+
function Nt(e, t = 0.3, r = !1) {
|
|
9785
|
+
if (r)
|
|
9786
|
+
return Rt(e);
|
|
9787
|
+
const i = Math.ceil(e.length * (1 + t)) - e.length;
|
|
9788
|
+
if (i <= 0)
|
|
7717
9789
|
return e;
|
|
7718
|
-
const
|
|
7719
|
-
return e +
|
|
9790
|
+
const a = Mt[0].repeat(i);
|
|
9791
|
+
return e + a;
|
|
7720
9792
|
}
|
|
7721
|
-
function
|
|
7722
|
-
const
|
|
7723
|
-
return e.split("").map((
|
|
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("");
|
|
7724
9796
|
}
|
|
7725
|
-
function
|
|
7726
|
-
return
|
|
9797
|
+
function Lt(e, t = !1) {
|
|
9798
|
+
return t ? `${Ft}${e}${_}` : `${Bt}${e}${_}`;
|
|
7727
9799
|
}
|
|
7728
|
-
function
|
|
9800
|
+
function ue(e, t = {}) {
|
|
7729
9801
|
const {
|
|
7730
|
-
addBrackets:
|
|
7731
|
-
expansionFactor:
|
|
7732
|
-
addAccents:
|
|
7733
|
-
addBidiMarkers:
|
|
7734
|
-
useVowelDoubling:
|
|
9802
|
+
addBrackets: r = !0,
|
|
9803
|
+
expansionFactor: o = 0.3,
|
|
9804
|
+
addAccents: i = !0,
|
|
9805
|
+
addBidiMarkers: a = !1,
|
|
9806
|
+
useVowelDoubling: n = !1,
|
|
7735
9807
|
preservePlaceholders: s = !0,
|
|
7736
|
-
preserveHtml:
|
|
7737
|
-
prefix:
|
|
7738
|
-
suffix:
|
|
7739
|
-
} =
|
|
7740
|
-
let p = e,
|
|
7741
|
-
s && (p = p.replace(/\{[^}]+\}/g, (
|
|
7742
|
-
const g = `__PH${
|
|
7743
|
-
return
|
|
7744
|
-
})),
|
|
7745
|
-
const g = `__PH${
|
|
7746
|
-
return
|
|
7747
|
-
})),
|
|
7748
|
-
for (const [
|
|
7749
|
-
p = p.replace(
|
|
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) => {
|
|
9814
|
+
const g = `__PH${m++}__`;
|
|
9815
|
+
return v.set(g, f), g;
|
|
9816
|
+
})), l && (p = p.replace(/<[^>]+>/g, (f) => {
|
|
9817
|
+
const g = `__PH${m++}__`;
|
|
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);
|
|
7750
9822
|
return p;
|
|
7751
9823
|
}
|
|
7752
|
-
function
|
|
7753
|
-
const
|
|
7754
|
-
return e.split("").map((
|
|
7755
|
-
for (const
|
|
7756
|
-
if (e.includes(
|
|
7757
|
-
return
|
|
7758
|
-
return
|
|
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;
|
|
7759
9831
|
}).join("");
|
|
7760
9832
|
}
|
|
7761
|
-
function
|
|
9833
|
+
function P(e) {
|
|
7762
9834
|
switch (e) {
|
|
7763
9835
|
case "accented":
|
|
7764
9836
|
return {
|
|
@@ -7792,93 +9864,93 @@ function T(e) {
|
|
|
7792
9864
|
};
|
|
7793
9865
|
}
|
|
7794
9866
|
}
|
|
7795
|
-
function
|
|
7796
|
-
const
|
|
7797
|
-
for (const [
|
|
7798
|
-
|
|
7799
|
-
return
|
|
9867
|
+
function Vo(e, t) {
|
|
9868
|
+
const r = {};
|
|
9869
|
+
for (const [o, i] of Object.entries(e))
|
|
9870
|
+
r[o] = ue(i, t);
|
|
9871
|
+
return r;
|
|
7800
9872
|
}
|
|
7801
|
-
function
|
|
9873
|
+
function It(e) {
|
|
7802
9874
|
return /[^\x00-\x7F]/.test(e);
|
|
7803
9875
|
}
|
|
7804
|
-
function
|
|
9876
|
+
function Vt(e) {
|
|
7805
9877
|
if (!e || /^[\d.,-]+$/.test(e) || e.startsWith("["))
|
|
7806
9878
|
return !1;
|
|
7807
|
-
const
|
|
7808
|
-
return
|
|
9879
|
+
const t = /[a-zA-Z]{2,}/.test(e), r = It(e);
|
|
9880
|
+
return t && !r;
|
|
7809
9881
|
}
|
|
7810
|
-
function
|
|
7811
|
-
const
|
|
9882
|
+
function Ho(e, t) {
|
|
9883
|
+
const r = {
|
|
7812
9884
|
totalKeys: Object.keys(e).length,
|
|
7813
9885
|
hardcodedStrings: [],
|
|
7814
9886
|
emptyValues: [],
|
|
7815
9887
|
placeholderMismatches: [],
|
|
7816
9888
|
potentialIssues: 0
|
|
7817
9889
|
};
|
|
7818
|
-
for (const [
|
|
7819
|
-
if (!
|
|
7820
|
-
|
|
9890
|
+
for (const [o, i] of Object.entries(e)) {
|
|
9891
|
+
if (!i || i.trim() === "") {
|
|
9892
|
+
r.emptyValues.push(o), r.potentialIssues++;
|
|
7821
9893
|
continue;
|
|
7822
9894
|
}
|
|
7823
|
-
if (
|
|
7824
|
-
const
|
|
7825
|
-
(s.length > 0 ||
|
|
7826
|
-
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,
|
|
7827
9899
|
placeholders: [
|
|
7828
|
-
...s.map((
|
|
7829
|
-
...
|
|
9900
|
+
...s.map((d) => `-${d}`),
|
|
9901
|
+
...l.map((d) => `+${d}`)
|
|
7830
9902
|
]
|
|
7831
|
-
}),
|
|
9903
|
+
}), r.potentialIssues++);
|
|
7832
9904
|
}
|
|
7833
9905
|
}
|
|
7834
|
-
return
|
|
9906
|
+
return r;
|
|
7835
9907
|
}
|
|
7836
|
-
function
|
|
7837
|
-
return (e.match(/\{([^}]+)\}/g) || []).map((
|
|
9908
|
+
function Q(e) {
|
|
9909
|
+
return (e.match(/\{([^}]+)\}/g) || []).map((r) => r.replace(/[{}]/g, "").split(",")[0].trim());
|
|
7838
9910
|
}
|
|
7839
9911
|
const pe = I(null);
|
|
7840
|
-
function
|
|
9912
|
+
function Wo({
|
|
7841
9913
|
children: e,
|
|
7842
|
-
initialEnabled:
|
|
7843
|
-
initialMode:
|
|
9914
|
+
initialEnabled: t = !1,
|
|
9915
|
+
initialMode: r = "full"
|
|
7844
9916
|
}) {
|
|
7845
|
-
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(
|
|
7846
9918
|
() => ({
|
|
7847
|
-
enabled:
|
|
7848
|
-
mode:
|
|
9919
|
+
enabled: o,
|
|
9920
|
+
mode: a,
|
|
7849
9921
|
options: s,
|
|
7850
|
-
toggle: () =>
|
|
7851
|
-
setMode:
|
|
7852
|
-
transform:
|
|
9922
|
+
toggle: () => i((u) => !u),
|
|
9923
|
+
setMode: n,
|
|
9924
|
+
transform: l
|
|
7853
9925
|
}),
|
|
7854
|
-
[
|
|
9926
|
+
[o, a, s, l]
|
|
7855
9927
|
);
|
|
7856
|
-
return /* @__PURE__ */
|
|
9928
|
+
return /* @__PURE__ */ O(pe.Provider, { value: d, children: e });
|
|
7857
9929
|
}
|
|
7858
|
-
function
|
|
7859
|
-
const e =
|
|
9930
|
+
function qo() {
|
|
9931
|
+
const e = B(pe);
|
|
7860
9932
|
return e || {
|
|
7861
9933
|
enabled: !1,
|
|
7862
9934
|
mode: "full",
|
|
7863
|
-
options:
|
|
9935
|
+
options: P("full"),
|
|
7864
9936
|
toggle: () => {
|
|
7865
9937
|
},
|
|
7866
9938
|
setMode: () => {
|
|
7867
9939
|
},
|
|
7868
|
-
transform: (
|
|
9940
|
+
transform: (t) => t
|
|
7869
9941
|
};
|
|
7870
9942
|
}
|
|
7871
|
-
const
|
|
9943
|
+
const Uo = {
|
|
7872
9944
|
/** Minimal: brackets only */
|
|
7873
9945
|
MINIMAL: { addBrackets: !0, addAccents: !1, expansionFactor: 0 },
|
|
7874
9946
|
/** Accented: brackets + accents */
|
|
7875
|
-
ACCENTED:
|
|
9947
|
+
ACCENTED: P("accented"),
|
|
7876
9948
|
/** Expanded: brackets + 30% expansion */
|
|
7877
|
-
EXPANDED:
|
|
9949
|
+
EXPANDED: P("expansion"),
|
|
7878
9950
|
/** Bidi: brackets + RTL markers */
|
|
7879
|
-
BIDI:
|
|
9951
|
+
BIDI: P("bidi"),
|
|
7880
9952
|
/** Full: brackets + accents + expansion */
|
|
7881
|
-
FULL:
|
|
9953
|
+
FULL: P("full"),
|
|
7882
9954
|
/** Finnish: 40% expansion (Finnish is very long) */
|
|
7883
9955
|
FINNISH: { addBrackets: !0, addAccents: !0, expansionFactor: 0.4 },
|
|
7884
9956
|
/** German: 35% expansion */
|
|
@@ -7886,376 +9958,376 @@ const Vt = {
|
|
|
7886
9958
|
/** CJK: Short expansion, no accents (CJK often shorter) */
|
|
7887
9959
|
CJK: { addBrackets: !0, addAccents: !1, expansionFactor: -0.1 }
|
|
7888
9960
|
};
|
|
7889
|
-
class
|
|
7890
|
-
constructor(
|
|
7891
|
-
this.cache = /* @__PURE__ */ new Map(), this.ttl =
|
|
9961
|
+
class Ht {
|
|
9962
|
+
constructor(t = 0) {
|
|
9963
|
+
this.cache = /* @__PURE__ */ new Map(), this.ttl = t;
|
|
7892
9964
|
}
|
|
7893
|
-
getCacheKey(
|
|
7894
|
-
return
|
|
9965
|
+
getCacheKey(t, r) {
|
|
9966
|
+
return r ? `${t}:${r}` : t;
|
|
7895
9967
|
}
|
|
7896
|
-
get(
|
|
7897
|
-
const
|
|
7898
|
-
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;
|
|
7899
9971
|
}
|
|
7900
|
-
set(
|
|
7901
|
-
const
|
|
7902
|
-
this.cache.set(
|
|
7903
|
-
data:
|
|
7904
|
-
loadedAt:
|
|
7905
|
-
expiresAt: this.ttl > 0 ?
|
|
9972
|
+
set(t, r, o) {
|
|
9973
|
+
const i = this.getCacheKey(t, o), a = Date.now();
|
|
9974
|
+
this.cache.set(i, {
|
|
9975
|
+
data: r,
|
|
9976
|
+
loadedAt: a,
|
|
9977
|
+
expiresAt: this.ttl > 0 ? a + this.ttl : 1 / 0
|
|
7906
9978
|
});
|
|
7907
9979
|
}
|
|
7908
|
-
has(
|
|
7909
|
-
return this.get(
|
|
9980
|
+
has(t, r) {
|
|
9981
|
+
return this.get(t, r) !== null;
|
|
7910
9982
|
}
|
|
7911
|
-
delete(
|
|
7912
|
-
if (
|
|
7913
|
-
this.cache.delete(this.getCacheKey(
|
|
9983
|
+
delete(t, r) {
|
|
9984
|
+
if (r)
|
|
9985
|
+
this.cache.delete(this.getCacheKey(t, r));
|
|
7914
9986
|
else
|
|
7915
|
-
for (const
|
|
7916
|
-
(
|
|
9987
|
+
for (const o of this.cache.keys())
|
|
9988
|
+
(o === t || o.startsWith(`${t}:`)) && this.cache.delete(o);
|
|
7917
9989
|
}
|
|
7918
9990
|
clear() {
|
|
7919
9991
|
this.cache.clear();
|
|
7920
9992
|
}
|
|
7921
9993
|
getStats() {
|
|
7922
|
-
const
|
|
7923
|
-
for (const
|
|
7924
|
-
|
|
9994
|
+
const t = /* @__PURE__ */ new Set();
|
|
9995
|
+
for (const r of this.cache.keys())
|
|
9996
|
+
t.add(r.split(":")[0]);
|
|
7925
9997
|
return {
|
|
7926
9998
|
size: this.cache.size,
|
|
7927
|
-
languages: Array.from(
|
|
9999
|
+
languages: Array.from(t)
|
|
7928
10000
|
};
|
|
7929
10001
|
}
|
|
7930
10002
|
}
|
|
7931
|
-
function
|
|
10003
|
+
function me(e) {
|
|
7932
10004
|
const {
|
|
7933
|
-
loadFn:
|
|
7934
|
-
fallbackLang:
|
|
7935
|
-
cacheTtl:
|
|
7936
|
-
preloadLanguages:
|
|
7937
|
-
namespaces:
|
|
7938
|
-
defaultNamespace:
|
|
10005
|
+
loadFn: t,
|
|
10006
|
+
fallbackLang: r = "en",
|
|
10007
|
+
cacheTtl: o = 0,
|
|
10008
|
+
preloadLanguages: i = [],
|
|
10009
|
+
namespaces: a = [],
|
|
10010
|
+
defaultNamespace: n,
|
|
7939
10011
|
onLoadStart: s,
|
|
7940
|
-
onLoadComplete:
|
|
7941
|
-
onLoadError:
|
|
7942
|
-
} = e,
|
|
7943
|
-
let
|
|
7944
|
-
const
|
|
10012
|
+
onLoadComplete: l,
|
|
10013
|
+
onLoadError: d
|
|
10014
|
+
} = e, u = new Ht(o), v = /* @__PURE__ */ new Set(), p = /* @__PURE__ */ new Map();
|
|
10015
|
+
let m = r;
|
|
10016
|
+
const f = /* @__PURE__ */ new Set();
|
|
7945
10017
|
function g() {
|
|
7946
|
-
const c =
|
|
7947
|
-
|
|
10018
|
+
const c = z();
|
|
10019
|
+
f.forEach((h) => h(c));
|
|
7948
10020
|
}
|
|
7949
|
-
function
|
|
10021
|
+
function y(c, h) {
|
|
7950
10022
|
return h ? `${c}:${h}` : c;
|
|
7951
10023
|
}
|
|
7952
|
-
function
|
|
10024
|
+
function z() {
|
|
7953
10025
|
const c = /* @__PURE__ */ new Set(), h = /* @__PURE__ */ new Set();
|
|
7954
|
-
for (const
|
|
7955
|
-
|
|
7956
|
-
for (const
|
|
7957
|
-
const
|
|
7958
|
-
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);
|
|
7959
10031
|
}
|
|
7960
10032
|
return {
|
|
7961
10033
|
loadedLanguages: c,
|
|
7962
10034
|
loadingLanguages: h,
|
|
7963
10035
|
failedLanguages: new Map(p),
|
|
7964
|
-
currentLanguage:
|
|
10036
|
+
currentLanguage: m
|
|
7965
10037
|
};
|
|
7966
10038
|
}
|
|
7967
|
-
async function
|
|
7968
|
-
const
|
|
7969
|
-
if (
|
|
7970
|
-
return
|
|
7971
|
-
if (
|
|
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))
|
|
7972
10044
|
return new Promise((S) => {
|
|
7973
10045
|
const R = setInterval(() => {
|
|
7974
|
-
|
|
10046
|
+
v.has(C) || (clearInterval(R), S(u.get(c, h)));
|
|
7975
10047
|
}, 50);
|
|
7976
10048
|
});
|
|
7977
|
-
|
|
10049
|
+
v.add(C), p.delete(c), s == null || s(c, h), g();
|
|
7978
10050
|
try {
|
|
7979
|
-
const S = await
|
|
7980
|
-
return
|
|
10051
|
+
const S = await t(c, h);
|
|
10052
|
+
return u.set(c, S, h), l == null || l(c, h), S;
|
|
7981
10053
|
} catch (S) {
|
|
7982
10054
|
const R = S instanceof Error ? S : new Error(String(S));
|
|
7983
|
-
return p.set(c, R),
|
|
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;
|
|
7984
10056
|
} finally {
|
|
7985
|
-
|
|
10057
|
+
v.delete(C), g();
|
|
7986
10058
|
}
|
|
7987
10059
|
}
|
|
7988
|
-
async function
|
|
7989
|
-
await Promise.all(c.map((h) =>
|
|
10060
|
+
async function j(c) {
|
|
10061
|
+
await Promise.all(c.map((h) => E(h)));
|
|
7990
10062
|
}
|
|
7991
|
-
async function
|
|
7992
|
-
|
|
7993
|
-
|
|
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))
|
|
7994
10066
|
);
|
|
7995
10067
|
}
|
|
7996
10068
|
function M(c, h) {
|
|
7997
|
-
return
|
|
10069
|
+
return u.get(c, h);
|
|
7998
10070
|
}
|
|
7999
|
-
function
|
|
8000
|
-
return
|
|
10071
|
+
function A(c, h) {
|
|
10072
|
+
return u.has(c, h);
|
|
8001
10073
|
}
|
|
8002
10074
|
function he(c) {
|
|
8003
|
-
for (const h of
|
|
10075
|
+
for (const h of v)
|
|
8004
10076
|
if (h === c || h.startsWith(`${c}:`))
|
|
8005
10077
|
return !0;
|
|
8006
10078
|
return !1;
|
|
8007
10079
|
}
|
|
8008
|
-
function
|
|
8009
|
-
return
|
|
10080
|
+
function ve() {
|
|
10081
|
+
return u.getStats().languages;
|
|
8010
10082
|
}
|
|
8011
|
-
function
|
|
8012
|
-
c ?
|
|
10083
|
+
function fe(c) {
|
|
10084
|
+
c ? u.delete(c) : u.clear(), g();
|
|
8013
10085
|
}
|
|
8014
|
-
async function
|
|
8015
|
-
|
|
10086
|
+
async function be(c) {
|
|
10087
|
+
A(c) || await E(c), m = c, g();
|
|
8016
10088
|
}
|
|
8017
10089
|
function we() {
|
|
8018
|
-
return
|
|
10090
|
+
return m;
|
|
8019
10091
|
}
|
|
8020
|
-
function
|
|
8021
|
-
return
|
|
10092
|
+
function ke(c) {
|
|
10093
|
+
return f.add(c), () => f.delete(c);
|
|
8022
10094
|
}
|
|
8023
10095
|
return {
|
|
8024
|
-
loadLanguage:
|
|
8025
|
-
loadLanguages:
|
|
8026
|
-
preloadLanguages:
|
|
10096
|
+
loadLanguage: E,
|
|
10097
|
+
loadLanguages: j,
|
|
10098
|
+
preloadLanguages: k,
|
|
8027
10099
|
getTranslations: M,
|
|
8028
|
-
isLoaded:
|
|
10100
|
+
isLoaded: A,
|
|
8029
10101
|
isLoading: he,
|
|
8030
|
-
getLoadedLanguages:
|
|
8031
|
-
clearCache:
|
|
8032
|
-
getState:
|
|
8033
|
-
setLanguage:
|
|
10102
|
+
getLoadedLanguages: ve,
|
|
10103
|
+
clearCache: fe,
|
|
10104
|
+
getState: z,
|
|
10105
|
+
setLanguage: be,
|
|
8034
10106
|
getCurrentLanguage: we,
|
|
8035
|
-
subscribe:
|
|
10107
|
+
subscribe: ke
|
|
8036
10108
|
};
|
|
8037
10109
|
}
|
|
8038
|
-
function
|
|
8039
|
-
return
|
|
8040
|
-
...
|
|
8041
|
-
loadFn: async (
|
|
8042
|
-
const
|
|
8043
|
-
if (!
|
|
8044
|
-
throw new Error(`Failed to load translations: ${
|
|
8045
|
-
return
|
|
10110
|
+
function Ko(e, t) {
|
|
10111
|
+
return me({
|
|
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();
|
|
8046
10118
|
}
|
|
8047
10119
|
});
|
|
8048
10120
|
}
|
|
8049
|
-
function
|
|
8050
|
-
return
|
|
8051
|
-
...
|
|
8052
|
-
loadFn: async (
|
|
10121
|
+
function Go(e, t) {
|
|
10122
|
+
return me({
|
|
10123
|
+
...t,
|
|
10124
|
+
loadFn: async (r, o) => (await e(r, o)).default
|
|
8053
10125
|
});
|
|
8054
10126
|
}
|
|
8055
10127
|
const ge = I(null);
|
|
8056
|
-
function
|
|
10128
|
+
function Zo({
|
|
8057
10129
|
children: e,
|
|
8058
|
-
loader:
|
|
8059
|
-
initialLanguage:
|
|
8060
|
-
namespace:
|
|
10130
|
+
loader: t,
|
|
10131
|
+
initialLanguage: r,
|
|
10132
|
+
namespace: o
|
|
8061
10133
|
}) {
|
|
8062
|
-
const [
|
|
8063
|
-
L(() =>
|
|
8064
|
-
|
|
8065
|
-
}, [
|
|
8066
|
-
const
|
|
8067
|
-
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) => {
|
|
8068
10140
|
s(null);
|
|
8069
10141
|
try {
|
|
8070
|
-
await
|
|
10142
|
+
await t.setLanguage(v);
|
|
8071
10143
|
} catch (p) {
|
|
8072
10144
|
s(p instanceof Error ? p : new Error(String(p)));
|
|
8073
10145
|
}
|
|
8074
10146
|
},
|
|
8075
|
-
[
|
|
8076
|
-
),
|
|
10147
|
+
[t]
|
|
10148
|
+
), u = b(
|
|
8077
10149
|
() => ({
|
|
8078
|
-
loader:
|
|
8079
|
-
translations:
|
|
8080
|
-
isLoading:
|
|
8081
|
-
error:
|
|
8082
|
-
setLanguage:
|
|
8083
|
-
currentLanguage:
|
|
8084
|
-
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)
|
|
8085
10157
|
}),
|
|
8086
|
-
[
|
|
10158
|
+
[t, l, i, n, d]
|
|
8087
10159
|
);
|
|
8088
|
-
return /* @__PURE__ */
|
|
10160
|
+
return /* @__PURE__ */ O(ge.Provider, { value: u, children: e });
|
|
8089
10161
|
}
|
|
8090
|
-
function
|
|
8091
|
-
const e =
|
|
10162
|
+
function Wt() {
|
|
10163
|
+
const e = B(ge);
|
|
8092
10164
|
if (!e)
|
|
8093
10165
|
throw new Error("useDynamicI18n must be used within DynamicI18nProvider");
|
|
8094
10166
|
return e;
|
|
8095
10167
|
}
|
|
8096
|
-
function
|
|
8097
|
-
const { translations:
|
|
10168
|
+
function Jo(e) {
|
|
10169
|
+
const { translations: t, currentLanguage: r, loader: o, isLoading: i } = Wt();
|
|
8098
10170
|
return L(() => {
|
|
8099
|
-
e && !
|
|
8100
|
-
}, [
|
|
8101
|
-
(
|
|
8102
|
-
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;
|
|
8103
10175
|
if (s)
|
|
8104
|
-
for (const [
|
|
8105
|
-
|
|
8106
|
-
return
|
|
10176
|
+
for (const [d, u] of Object.entries(s))
|
|
10177
|
+
l = l.replace(new RegExp(`\\{${d}\\}`, "g"), String(u));
|
|
10178
|
+
return l;
|
|
8107
10179
|
},
|
|
8108
|
-
[
|
|
8109
|
-
), isLoading:
|
|
10180
|
+
[t]
|
|
10181
|
+
), isLoading: i, currentLanguage: r };
|
|
8110
10182
|
}
|
|
8111
|
-
function
|
|
8112
|
-
switch (
|
|
10183
|
+
function Yo(e, t, r) {
|
|
10184
|
+
switch (r) {
|
|
8113
10185
|
case "immediate":
|
|
8114
|
-
e.loadLanguages(
|
|
10186
|
+
e.loadLanguages(t);
|
|
8115
10187
|
break;
|
|
8116
10188
|
case "idle":
|
|
8117
10189
|
"requestIdleCallback" in window ? window.requestIdleCallback(() => {
|
|
8118
|
-
e.loadLanguages(
|
|
8119
|
-
}) : setTimeout(() => e.loadLanguages(
|
|
10190
|
+
e.loadLanguages(t);
|
|
10191
|
+
}) : setTimeout(() => e.loadLanguages(t), 1e3);
|
|
8120
10192
|
break;
|
|
8121
10193
|
case "visible":
|
|
8122
10194
|
if ("IntersectionObserver" in window) {
|
|
8123
|
-
const
|
|
10195
|
+
const o = new IntersectionObserver(
|
|
8124
10196
|
() => {
|
|
8125
|
-
e.loadLanguages(
|
|
10197
|
+
e.loadLanguages(t), o.disconnect();
|
|
8126
10198
|
},
|
|
8127
10199
|
{ threshold: 0.1 }
|
|
8128
10200
|
);
|
|
8129
|
-
|
|
10201
|
+
o.observe(document.body);
|
|
8130
10202
|
} else
|
|
8131
|
-
e.loadLanguages(
|
|
10203
|
+
e.loadLanguages(t);
|
|
8132
10204
|
break;
|
|
8133
10205
|
case "interaction": {
|
|
8134
|
-
const
|
|
8135
|
-
e.loadLanguages(
|
|
10206
|
+
const o = () => {
|
|
10207
|
+
e.loadLanguages(t), window.removeEventListener("click", o), window.removeEventListener("keydown", o), window.removeEventListener("touchstart", o);
|
|
8136
10208
|
};
|
|
8137
|
-
window.addEventListener("click",
|
|
10209
|
+
window.addEventListener("click", o, { once: !0 }), window.addEventListener("keydown", o, { once: !0 }), window.addEventListener("touchstart", o, { once: !0 });
|
|
8138
10210
|
break;
|
|
8139
10211
|
}
|
|
8140
10212
|
}
|
|
8141
10213
|
}
|
|
8142
|
-
async function
|
|
8143
|
-
const { fallback:
|
|
8144
|
-
for (const
|
|
8145
|
-
if (
|
|
8146
|
-
return await e.setLanguage(
|
|
8147
|
-
const
|
|
8148
|
-
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);
|
|
8149
10221
|
}
|
|
8150
10222
|
export {
|
|
8151
|
-
|
|
8152
|
-
|
|
8153
|
-
|
|
8154
|
-
|
|
8155
|
-
|
|
8156
|
-
|
|
8157
|
-
|
|
8158
|
-
|
|
8159
|
-
|
|
8160
|
-
|
|
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,
|
|
8161
10233
|
w as NICE_I18N_DICTIONARIES,
|
|
8162
|
-
|
|
8163
|
-
|
|
8164
|
-
|
|
8165
|
-
|
|
8166
|
-
|
|
8167
|
-
|
|
8168
|
-
|
|
8169
|
-
|
|
8170
|
-
|
|
8171
|
-
|
|
8172
|
-
|
|
8173
|
-
|
|
8174
|
-
|
|
8175
|
-
|
|
8176
|
-
|
|
8177
|
-
|
|
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,
|
|
8178
10250
|
se as convertTimezone,
|
|
8179
|
-
|
|
8180
|
-
|
|
8181
|
-
|
|
8182
|
-
|
|
8183
|
-
|
|
8184
|
-
|
|
8185
|
-
|
|
8186
|
-
|
|
8187
|
-
|
|
8188
|
-
|
|
8189
|
-
|
|
8190
|
-
|
|
8191
|
-
|
|
8192
|
-
|
|
8193
|
-
|
|
8194
|
-
|
|
8195
|
-
|
|
8196
|
-
|
|
8197
|
-
|
|
8198
|
-
|
|
8199
|
-
|
|
8200
|
-
|
|
8201
|
-
|
|
8202
|
-
|
|
8203
|
-
|
|
8204
|
-
|
|
8205
|
-
|
|
8206
|
-
|
|
8207
|
-
|
|
8208
|
-
|
|
8209
|
-
|
|
8210
|
-
|
|
8211
|
-
|
|
8212
|
-
|
|
8213
|
-
|
|
8214
|
-
|
|
10251
|
+
de as createCalendarFormatter,
|
|
10252
|
+
bt as createCurrencyFormatter,
|
|
10253
|
+
ht as createDateFormatter,
|
|
10254
|
+
me as createDynamicLoader,
|
|
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,
|
|
8215
10287
|
D as getLocaleTag,
|
|
8216
|
-
|
|
8217
|
-
|
|
8218
|
-
|
|
8219
|
-
|
|
8220
|
-
|
|
8221
|
-
|
|
8222
|
-
|
|
8223
|
-
|
|
8224
|
-
|
|
8225
|
-
|
|
10288
|
+
ct as getLogicalProperty,
|
|
10289
|
+
ut as getMissingTranslations,
|
|
10290
|
+
yo as getNextDSTTransition,
|
|
10291
|
+
re as getOrdinalCategory,
|
|
10292
|
+
oe as getPluralCategory,
|
|
10293
|
+
P as getPseudoLocalizationPreset,
|
|
10294
|
+
so as getRTLCSSVars,
|
|
10295
|
+
Lo as getRecommendedCalendars,
|
|
10296
|
+
lo as getSourceKeys,
|
|
10297
|
+
nt as getTextDirection,
|
|
8226
10298
|
F as getTimezoneInfo,
|
|
8227
|
-
|
|
8228
|
-
|
|
8229
|
-
|
|
8230
|
-
|
|
8231
|
-
|
|
8232
|
-
|
|
8233
|
-
|
|
8234
|
-
|
|
8235
|
-
|
|
8236
|
-
|
|
8237
|
-
|
|
8238
|
-
|
|
8239
|
-
|
|
8240
|
-
|
|
8241
|
-
|
|
8242
|
-
|
|
8243
|
-
|
|
8244
|
-
|
|
8245
|
-
|
|
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,
|
|
8246
10318
|
ce as toCalendar,
|
|
8247
|
-
|
|
8248
|
-
|
|
8249
|
-
|
|
8250
|
-
|
|
8251
|
-
|
|
8252
|
-
|
|
8253
|
-
|
|
8254
|
-
|
|
8255
|
-
|
|
8256
|
-
|
|
8257
|
-
|
|
8258
|
-
|
|
8259
|
-
|
|
8260
|
-
|
|
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
|
|
8261
10333
|
};
|