@nice2dev/i18n 1.0.22 → 1.0.24
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 +7 -7
- package/dist/index.mjs +534 -351
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
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
|
|
3
|
-
const
|
|
2
|
+
import { useMemo as b, useContext as B, createContext as I, useEffect as L, useState as T, useCallback as ee } from "react";
|
|
3
|
+
const x = [
|
|
4
4
|
"en",
|
|
5
5
|
"pl",
|
|
6
6
|
"de",
|
|
@@ -40,7 +40,9 @@ const T = [
|
|
|
40
40
|
// Filipino
|
|
41
41
|
"ms"
|
|
42
42
|
// Malay
|
|
43
|
-
],
|
|
43
|
+
], ke = {
|
|
44
|
+
"tutorial.viewEditor.intro.title": "View editor",
|
|
45
|
+
"tutorial.viewEditor.intro.content": "Author any view kind from one place: choose the kind (or scaffold from an entity), drag controls from the palette into the grid cells, then configure each cell — data binding, role permissions and event actions. Switch Design / Preview / Source, and Save when valid.",
|
|
44
46
|
// ── Global / Generic ──
|
|
45
47
|
ok: "OK",
|
|
46
48
|
cancel: "Cancel",
|
|
@@ -960,6 +962,8 @@ const T = [
|
|
|
960
962
|
"vectorEditor.layers.lock": "Lock",
|
|
961
963
|
"vectorEditor.layers.unlock": "Unlock"
|
|
962
964
|
}, ye = {
|
|
965
|
+
"tutorial.viewEditor.intro.title": "Edytor widoków",
|
|
966
|
+
"tutorial.viewEditor.intro.content": "Twórz dowolny rodzaj widoku w jednym miejscu: wybierz rodzaj (lub wygeneruj z encji), przeciągaj kontrolki z palety do komórek siatki, a następnie skonfiguruj każdą komórkę — wiązanie danych, uprawnienia ról i akcje zdarzeń. Przełączaj Projekt / Podgląd / Źródło i zapisz, gdy widok jest poprawny.",
|
|
963
967
|
ok: "OK",
|
|
964
968
|
cancel: "Anuluj",
|
|
965
969
|
save: "Zapisz",
|
|
@@ -1840,6 +1844,8 @@ const T = [
|
|
|
1840
1844
|
"vectorEditor.layers.lock": "Zablokuj",
|
|
1841
1845
|
"vectorEditor.layers.unlock": "Odblokuj"
|
|
1842
1846
|
}, ze = {
|
|
1847
|
+
"tutorial.viewEditor.intro.title": "Ansichts-Editor",
|
|
1848
|
+
"tutorial.viewEditor.intro.content": "Erstellen Sie jede Ansichtsart an einem Ort: Wählen Sie die Art (oder generieren Sie aus einer Entität), ziehen Sie Steuerelemente aus der Palette in die Rasterzellen und konfigurieren Sie dann jede Zelle — Datenbindung, Rollenberechtigungen und Ereignisaktionen. Wechseln Sie Design / Vorschau / Quelle und speichern Sie, wenn gültig.",
|
|
1843
1849
|
ok: "OK",
|
|
1844
1850
|
cancel: "Abbrechen",
|
|
1845
1851
|
save: "Speichern",
|
|
@@ -2714,6 +2720,8 @@ const T = [
|
|
|
2714
2720
|
"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
2721
|
"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
2722
|
}, Ce = {
|
|
2723
|
+
"tutorial.viewEditor.intro.title": "Éditeur de vues",
|
|
2724
|
+
"tutorial.viewEditor.intro.content": "Concevez n’importe quel type de vue au même endroit : choisissez le type (ou générez depuis une entité), faites glisser des contrôles depuis la palette dans les cellules de la grille, puis configurez chaque cellule — liaison de données, permissions par rôle et actions d’événement. Basculez Conception / Aperçu / Source et enregistrez quand c’est valide.",
|
|
2717
2725
|
ok: "OK",
|
|
2718
2726
|
cancel: "Annuler",
|
|
2719
2727
|
save: "Enregistrer",
|
|
@@ -3588,6 +3596,8 @@ const T = [
|
|
|
3588
3596
|
"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
3597
|
"sidebar.prefs.order.visibilityHint": "L’ordre s’applique aux éléments de premier niveau dans chaque groupe de source. Repliez un en-tête de source pour ne voir que les entrées de premier niveau lors de la vérification."
|
|
3590
3598
|
}, Se = {
|
|
3599
|
+
"tutorial.viewEditor.intro.title": "Editor de vistas",
|
|
3600
|
+
"tutorial.viewEditor.intro.content": "Crea cualquier tipo de vista desde un solo lugar: elige el tipo (o genéralo desde una entidad), arrastra controles desde la paleta a las celdas de la cuadrícula y configura cada celda — enlace de datos, permisos por rol y acciones de eventos. Cambia entre Diseño / Vista previa / Código y guarda cuando sea válido.",
|
|
3591
3601
|
ok: "OK",
|
|
3592
3602
|
cancel: "Cancelar",
|
|
3593
3603
|
save: "Guardar",
|
|
@@ -4572,7 +4582,178 @@ const T = [
|
|
|
4572
4582
|
"lang.ja": "Giapponese",
|
|
4573
4583
|
"lang.ko": "Coreano",
|
|
4574
4584
|
"lang.zh": "Cinese",
|
|
4575
|
-
"lang.ar": "Arabo"
|
|
4585
|
+
"lang.ar": "Arabo",
|
|
4586
|
+
"tutorial.viewEditor.intro.title": "Editor di viste",
|
|
4587
|
+
"tutorial.viewEditor.intro.content": "Crea qualsiasi tipo di vista da un unico posto: scegli il tipo (o generala da un’entità), trascina i controlli dalla palette nelle celle della griglia, poi configura ogni cella — binding dei dati, permessi per ruolo e azioni sugli eventi. Passa tra Design / Anteprima / Sorgente e salva quando è valida.",
|
|
4588
|
+
"tutorial.play": "Riproduci",
|
|
4589
|
+
"tutorial.pause": "Pausa",
|
|
4590
|
+
"tutorial.speed": "Velocità",
|
|
4591
|
+
"tutorial.close": "Chiudi",
|
|
4592
|
+
"tutorial.start": "Tutorial",
|
|
4593
|
+
"tutorial.startAria": "Avvia il tutorial",
|
|
4594
|
+
"tutorial.next": "Avanti",
|
|
4595
|
+
"tutorial.back": "Indietro",
|
|
4596
|
+
"tutorial.finish": "Fine",
|
|
4597
|
+
"tutorial.skip": "Salta",
|
|
4598
|
+
"tutorial.stepOf": "di",
|
|
4599
|
+
"tutorial.moduleEditor.browser.title": "Browser dei moduli",
|
|
4600
|
+
"tutorial.moduleEditor.browser.content": "Seleziona qui un modulo per aprirne il manifest, le entità e le traduzioni.",
|
|
4601
|
+
"tutorial.moduleEditor.validate.title": "Convalida",
|
|
4602
|
+
"tutorial.moduleEditor.validate.content": "Verifica il modulo rispetto allo schema del manifest. I problemi compaiono nella barra di stato e nell’output.",
|
|
4603
|
+
"tutorial.moduleEditor.save.title": "Salva",
|
|
4604
|
+
"tutorial.moduleEditor.save.content": "Rendi persistenti le modifiche tramite il data provider configurato (es. riscrivi i file su disco).",
|
|
4605
|
+
"tutorial.manifestEditor.intro.title": "Editor del manifest",
|
|
4606
|
+
"tutorial.manifestEditor.intro.content": "Modifica il manifest in sezioni guidate dallo schema. Alterna Form ⇄ JSON per sezione; la convalida compare nella barra di stato.",
|
|
4607
|
+
"tutorial.schemaForm.intro.title": "Form da schema",
|
|
4608
|
+
"tutorial.schemaForm.intro.content": "Questo form è generato da uno schema. I campi obbligatori e gli errori di convalida sono evidenziati; usa l’interruttore JSON per la modifica grezza.",
|
|
4609
|
+
"tutorial.entityEditor.intro.title": "Editor di entità",
|
|
4610
|
+
"tutorial.entityEditor.intro.content": "Aggiungi le entità a sinistra, poi modifica a destra i metadati di ogni entità e i suoi campi (tipo, chiavi, vincoli).",
|
|
4611
|
+
"tutorial.i18nEditor.intro.title": "Traduzioni",
|
|
4612
|
+
"tutorial.i18nEditor.intro.content": "Modifica le traduzioni come griglia chiavi × lingue. Aggiungi chiavi e lingue; le celle ambra indicano traduzioni mancanti.",
|
|
4613
|
+
"tutorial.formBuilder.intro.title": "Costruttore di form",
|
|
4614
|
+
"tutorial.formBuilder.intro.content": "Trascina i campi dalla palette sul canvas, poi configura ciascun campo nel pannello delle proprietà. Esporta lo schema al termine.",
|
|
4615
|
+
"tutorial.formDesigner.intro.title": "Designer di form",
|
|
4616
|
+
"tutorial.formDesigner.intro.content": "Progetta form di inserimento dati con sezioni, lookup e campi calcolati; collegali alla tua entità e visualizza l’anteprima dal vivo.",
|
|
4617
|
+
"tutorial.paymentProviderConfig.intro.title": "Provider di pagamento",
|
|
4618
|
+
"tutorial.paymentProviderConfig.intro.content": "Scegli un provider, inserisci le credenziali (i segreti sono mascherati), seleziona test/live, abilita i metodi e copia l’URL del webhook.",
|
|
4619
|
+
"tutorial.webhookTester.intro.title": "Tester di webhook",
|
|
4620
|
+
"tutorial.webhookTester.intro.content": "Scegli un payload salvato (o scrivine uno), firmalo facoltativamente, invialo all’endpoint ed esamina la risposta.",
|
|
4621
|
+
"tutorial.apiDesigner.intro.title": "Designer di API",
|
|
4622
|
+
"tutorial.apiDesigner.intro.content": "Definisci endpoint, parametri, schemi di richiesta/risposta e sicurezza per il tuo documento OpenAPI.",
|
|
4623
|
+
"tutorial.apiTester.intro.title": "Tester di API",
|
|
4624
|
+
"tutorial.apiTester.intro.content": "Crea richieste con raccolte e variabili d’ambiente, inviale e verifica le risposte con asserzioni.",
|
|
4625
|
+
"tutorial.integrationBuilder.intro.title": "Costruttore di integrazioni",
|
|
4626
|
+
"tutorial.integrationBuilder.intro.content": "Collega un flusso di nodi (trigger → azioni → gestione errori) per costruire un’integrazione.",
|
|
4627
|
+
"tutorial.scriptRunner.intro.title": "Esecutore di script",
|
|
4628
|
+
"tutorial.scriptRunner.intro.content": "Scrivi uno script e un input di esempio, fai clic su Esegui, poi esamina il risultato e i log catturati qui sotto.",
|
|
4629
|
+
"tutorial.lifecycleHooks.intro.title": "Hook del ciclo di vita",
|
|
4630
|
+
"tutorial.lifecycleHooks.intro.content": "Associa gli handler a ciascun trigger, imposta l’ordine e il flag di abilitazione e aggiungi una condizione facoltativa che vincola l’esecuzione.",
|
|
4631
|
+
"tutorial.revisionHistory.intro.title": "Cronologia revisioni",
|
|
4632
|
+
"tutorial.revisionHistory.intro.content": "Scegli una revisione, selezionane un’altra da confrontare, esamina il diff affiancato, poi ripristina una versione precedente se necessario.",
|
|
4633
|
+
"tutorial.markdownEditor.intro.title": "Editor Markdown",
|
|
4634
|
+
"tutorial.markdownEditor.intro.content": "Scrivi in Markdown con la barra di formattazione; attiva l’anteprima dal vivo per vedere il risultato ed esporta in HTML.",
|
|
4635
|
+
"tutorial.htmlEditor.intro.title": "Editor di testo formattato",
|
|
4636
|
+
"tutorial.htmlEditor.intro.content": "Formatta il testo con la barra degli strumenti, inserisci link, immagini e tabelle e passa al sorgente HTML o Markdown quando serve.",
|
|
4637
|
+
"tutorial.documentEditor.intro.title": "Editor di documenti",
|
|
4638
|
+
"tutorial.documentEditor.intro.content": "Componi un documento a blocchi: usa la barra o i comandi slash per aggiungere titoli, elenchi, media e altro, poi esporta in HTML.",
|
|
4639
|
+
"tutorial.codeEditor.intro.title": "Editor di codice",
|
|
4640
|
+
"tutorial.codeEditor.intro.content": "Modifica il codice con evidenziazione della sintassi, IntelliSense e barra degli strumenti. Ctrl+S salva; la barra di stato mostra la posizione del cursore ed eventuali problemi.",
|
|
4641
|
+
"tutorial.kanbanBoard.intro.title": "Bacheca Kanban",
|
|
4642
|
+
"tutorial.kanbanBoard.intro.content": 'Trascina le schede tra le colonne per cambiarne lo stato, aggiungi schede con il pulsante "+" e fai clic su una scheda per modificarne i dettagli.',
|
|
4643
|
+
"tutorial.queryBuilder.intro.title": "Costruttore di query",
|
|
4644
|
+
"tutorial.queryBuilder.intro.content": "Aggiungi tabelle, scegli colonne, definisci join, condizioni e ordinamento in modo visuale — l’SQL è generato per te. Passa alla scheda SQL per esaminarlo.",
|
|
4645
|
+
"tutorial.stateDesigner.intro.title": "Designer di stato",
|
|
4646
|
+
"tutorial.stateDesigner.intro.content": "Modella lo store come slice con campi e azioni, scegli un target (es. Zustand) ed esporta codice di gestione dello stato pronto all’uso.",
|
|
4647
|
+
"tutorial.componentDesigner.intro.title": "Designer di componenti",
|
|
4648
|
+
"tutorial.componentDesigner.intro.content": "Dai un nome al componente, dichiara le sue prop con tipi e requisiti e visualizza in tempo reale l’interfaccia TypeScript generata.",
|
|
4649
|
+
"tutorial.pageBuilder.intro.title": "Costruttore di pagine",
|
|
4650
|
+
"tutorial.pageBuilder.intro.content": "Trascina i componenti dalla barra laterale sulla griglia responsiva, alterna l’anteprima desktop/tablet/mobile e salva il layout.",
|
|
4651
|
+
"tutorial.lowCodeStudio.intro.title": "Studio low-code",
|
|
4652
|
+
"tutorial.lowCodeStudio.intro.content": "Trascina i componenti dalla barra laterale sul canvas, poi alterna le schede Design, Anteprima e Codice per costruire ed esportare la tua app.",
|
|
4653
|
+
"tutorial.testBuilder.intro.title": "Costruttore di test",
|
|
4654
|
+
"tutorial.testBuilder.intro.content": "Crea suite di test in modo visuale: aggiungi casi e passi di interazione con asserzioni, eseguili ed esporta in un file .test.tsx pronto all’uso.",
|
|
4655
|
+
"tutorial.workflowDesigner.intro.title": "Designer di workflow",
|
|
4656
|
+
"tutorial.workflowDesigner.intro.content": "Aggiungi stati e transizioni sul canvas, convalida il flusso, simulalo, poi testa o pubblica il tuo workflow.",
|
|
4657
|
+
"tutorial.themeBuilder.intro.title": "Costruttore di temi",
|
|
4658
|
+
"tutorial.themeBuilder.intro.content": "Parti da un preset, regola colori, tipografia e altri token per sezione, visualizza l’anteprima dal vivo, poi applica o esporta il tema.",
|
|
4659
|
+
"tutorial.filterBuilder.intro.title": "Costruttore di filtri",
|
|
4660
|
+
"tutorial.filterBuilder.intro.content": "Costruisci alberi di filtri AND/OR complessi: aggiungi condizioni e gruppi annidati, scegli campi e operatori e salva preset riutilizzabili.",
|
|
4661
|
+
"tutorial.diagramDesigner.intro.title": "Designer di diagrammi",
|
|
4662
|
+
"tutorial.diagramDesigner.intro.content": "Trascina le forme dalla palette sul canvas, collegale con i connettori, modifica le proprietà a destra, poi esporta in SVG, PNG o JSON.",
|
|
4663
|
+
"tutorial.reportBuilder.intro.title": "Costruttore di report",
|
|
4664
|
+
"tutorial.reportBuilder.intro.content": "Trascina le sezioni sul report, collegale alle origini dati, disponi il layout, poi esporta in PDF, HTML o XLSX.",
|
|
4665
|
+
"tutorial.erpReportDesigner.intro.title": "Designer di report",
|
|
4666
|
+
"tutorial.erpReportDesigner.intro.content": "Disponi report a bande: inserisci elementi (campi, espressioni, grafici) nelle bande, collega le connessioni dati, modifica le proprietà, poi visualizza ed esporta.",
|
|
4667
|
+
"tutorial.recipeEditor.intro.title": "Editor di ricette",
|
|
4668
|
+
"tutorial.recipeEditor.intro.content": "Modifica i dettagli della ricetta, aggiungi e riordina ingredienti e passaggi, allega foto e importa o esporta la ricetta come JSON.",
|
|
4669
|
+
"tutorial.pipelineEditor.intro.title": "Editor di pipeline",
|
|
4670
|
+
"tutorial.pipelineEditor.intro.content": "Costruisci una pipeline CI/CD con stage, job e step; imposta trigger, variabili e segreti; poi convalida, salva ed esegui.",
|
|
4671
|
+
"tutorial.mergeRequestBuilder.intro.title": "Costruttore di merge request",
|
|
4672
|
+
"tutorial.mergeRequestBuilder.intro.content": "Scegli i branch di origine e destinazione, scrivi titolo e descrizione, aggiungi revisori, etichette e issue collegate, poi visualizza e invia.",
|
|
4673
|
+
"tutorial.automationRuleEditor.intro.title": "Editor di regole di automazione",
|
|
4674
|
+
"tutorial.automationRuleEditor.intro.content": "Definisci il trigger, aggiungi condizioni facoltative, poi elenca le azioni da eseguire — passa tra le tre sezioni usando le schede.",
|
|
4675
|
+
"tutorial.sceneActionBuilder.intro.title": "Costruttore di azioni scena",
|
|
4676
|
+
"tutorial.sceneActionBuilder.intro.content": "Aggiungi un’azione per dispositivo, imposta lo stato di destinazione e un ritardo facoltativo, riordinale e visualizza l’anteprima della sequenza.",
|
|
4677
|
+
"tutorial.backupTagEditor.intro.title": "Tag di backup",
|
|
4678
|
+
"tutorial.backupTagEditor.intro.content": "Etichetta questo backup per recuperarlo facilmente: digita un’etichetta e scegli un colore, o aggiungi uno dei tag suggeriti; i tag generati automaticamente sono protetti.",
|
|
4679
|
+
"tutorial.dataMergeBuilder.intro.title": "Unione dati",
|
|
4680
|
+
"tutorial.dataMergeBuilder.intro.content": "Segui i passaggi: scegli i branch di origine e destinazione, visualizza le modifiche, risolvi i conflitti, imposta le opzioni, poi conferma l’unione.",
|
|
4681
|
+
"tutorial.invoiceLineEditor.intro.title": "Righe fattura",
|
|
4682
|
+
"tutorial.invoiceLineEditor.intro.content": "Aggiungi voci con quantità, prezzo unitario, IVA e sconto — netto, lordo e il dettaglio IVA sono calcolati automaticamente.",
|
|
4683
|
+
"tutorial.keyValueEditor.intro.title": "Editor chiave/valore",
|
|
4684
|
+
"tutorial.keyValueEditor.intro.content": "Aggiungi righe chiave/valore per header, parametri, variabili d’ambiente o configurazioni; maschera i valori segreti, attiva/disattiva le righe e tieni d’occhio le chiavi duplicate.",
|
|
4685
|
+
"tutorial.imageEditor.intro.title": "Editor di immagini",
|
|
4686
|
+
"tutorial.imageEditor.intro.content": "Usa la barra per ritagliare, ruotare, capovolgere, regolare luminosità/contrasto e annotare; annulla/ripristina le modifiche, poi salva il risultato.",
|
|
4687
|
+
"tutorial.cropEditor.intro.title": "Editor di ritaglio",
|
|
4688
|
+
"tutorial.cropEditor.intro.content": "Trascina il riquadro di ritaglio sull’immagine, scegli una proporzione, ruota, capovolgi o zooma, poi usa il risultato.",
|
|
4689
|
+
"tutorial.pdfAnnotationEditor.intro.title": "Annotazioni PDF",
|
|
4690
|
+
"tutorial.pdfAnnotationEditor.intro.content": "Scegli uno strumento dalla barra (evidenzia, sottolinea, mano libera, testo…), annota la pagina, naviga tra le pagine e zooma secondo necessità.",
|
|
4691
|
+
"tutorial.videoEditor.intro.title": "Editor video",
|
|
4692
|
+
"tutorial.videoEditor.intro.content": "Aggiungi media alle tracce della timeline, taglia e disponi le clip, modifica le proprietà delle clip, visualizza l’anteprima, poi esporta il video.",
|
|
4693
|
+
"tutorial.viewBuilder.intro.title": "Costruttore di viste",
|
|
4694
|
+
"tutorial.viewBuilder.intro.content": "Trascina i controlli dalla palette nelle celle della griglia, configura ogni cella nel pannello delle proprietà e importa, esporta o salva la vista.",
|
|
4695
|
+
"tutorial.dashboardDesigner.intro.title": "Designer di dashboard",
|
|
4696
|
+
"tutorial.dashboardDesigner.intro.content": "Trascina i widget dalla palette sulla griglia, ridimensionali e disponili, configura ciascuno nel pannello delle proprietà, poi visualizza o esporta la dashboard.",
|
|
4697
|
+
"tutorial.workflowDesignerCanvas.intro.title": "Designer di workflow",
|
|
4698
|
+
"tutorial.workflowDesignerCanvas.intro.content": "Aggiungi nodi trigger, azione e condizione sul canvas e collegali; gestisci le variabili, convalida il flusso, poi esportalo.",
|
|
4699
|
+
"tutorial.armatureEditor.intro.title": "Editor di armature",
|
|
4700
|
+
"tutorial.armatureEditor.intro.content": "Seleziona le ossa per modificarne le trasformazioni, aggiungi o riassegna ossa, configura le catene IK e salva o carica le pose.",
|
|
4701
|
+
"tutorial.morphTargetEditor.intro.title": "Editor di morph target",
|
|
4702
|
+
"tutorial.morphTargetEditor.intro.content": "Miscela i morph target della mesh con i cursori di influenza per target, crea o elimina target e visualizza l’anteprima dell’interpolazione.",
|
|
4703
|
+
"tutorial.terrainEditor.intro.title": "Editor di terreno",
|
|
4704
|
+
"tutorial.terrainEditor.intro.content": "Scolpisci la heightmap con i pennelli (alza, abbassa, appiattisci, leviga, rumore), applica layer di texture, genera terreno procedurale e importa/esporta heightmap.",
|
|
4705
|
+
"tutorial.materialEditor.intro.title": "Editor di materiali",
|
|
4706
|
+
"tutorial.materialEditor.intro.content": "Crea uno shader come grafo di nodi: trascina i nodi dalla palette, collega le loro porte, modifica le proprietà e visualizza l’anteprima del materiale compilato.",
|
|
4707
|
+
"tutorial.particleEditor.intro.title": "Editor di particelle",
|
|
4708
|
+
"tutorial.particleEditor.intro.content": "Scegli un sistema di particelle, regola l’emettitore e i moduli nell’inspector e riproduci, metti in pausa o ferma l’anteprima dal vivo.",
|
|
4709
|
+
"tutorial.uvEditor.intro.title": "Editor UV",
|
|
4710
|
+
"tutorial.uvEditor.intro.content": "Modifica il layout UV della mesh sopra la texture: seleziona e trasforma le UV con gli strumenti, cambia canale UV e applica le modifiche.",
|
|
4711
|
+
"tutorial.fontEditor.intro.title": "Editor di font",
|
|
4712
|
+
"tutorial.fontEditor.intro.content": "Modifica i glifi sulla griglia unicode, regola le metriche del font e i tracciati e i bearing per glifo, poi esporta il font.",
|
|
4713
|
+
"tutorial.iconEditor.intro.title": "Editor di icone",
|
|
4714
|
+
"tutorial.iconEditor.intro.content": "Disegna e modifica forme SVG sulla griglia, regola il tratto e le varianti, visualizza l’anteprima su sfondi diversi ed esporta in SVG, React o PNG.",
|
|
4715
|
+
"tutorial.uiDesigner.intro.title": "Designer di UI",
|
|
4716
|
+
"tutorial.uiDesigner.intro.content": "Trascina i componenti dalla palette sul canvas, modifica le loro prop nel pannello, visualizza l’anteprima dei breakpoint responsivi ed esporta in React/TSX.",
|
|
4717
|
+
"tutorial.gameEditor.intro.title": "Editor di gioco",
|
|
4718
|
+
"tutorial.gameEditor.intro.content": "Costruisci la scena nel viewport usando i pannelli gerarchia e asset, modifica le entità nell’inspector e salva il progetto.",
|
|
4719
|
+
"tutorial.levelEditor.intro.title": "Editor di livelli",
|
|
4720
|
+
"tutorial.levelEditor.intro.content": "Costruisci il mondo di gioco: posiziona e aggancia oggetti su più layer, dipingi il terreno, disponi spline e luci, poi calcola le lightmap.",
|
|
4721
|
+
"tutorial.gameMaterialEditor.intro.title": "Editor di materiali",
|
|
4722
|
+
"tutorial.gameMaterialEditor.intro.content": "Crea uno shader come grafo di nodi: aggiungi e collega i nodi shader, modifica le loro proprietà e compila il materiale.",
|
|
4723
|
+
"tutorial.gameParticleEditor.intro.title": "Editor di particelle",
|
|
4724
|
+
"tutorial.gameParticleEditor.intro.content": "Regola il sistema di particelle nell’inspector — emettitore, durata, curve e rendering — e riproduci, metti in pausa o riavvia l’anteprima dal vivo.",
|
|
4725
|
+
"tutorial.floorPlanEditor.intro.title": "Editor di planimetrie",
|
|
4726
|
+
"tutorial.floorPlanEditor.intro.content": "Disegna stanze e zone con gli strumenti, posiziona i dispositivi sulla planimetria, cambia piano e attiva overlay come quote, griglia e occupazione.",
|
|
4727
|
+
"tutorial.buildingSceneEditor.intro.title": "Editor di scene",
|
|
4728
|
+
"tutorial.buildingSceneEditor.intro.content": "Crea scene che impostano più dispositivi insieme: scegli una scena, seleziona gli stati di destinazione dei dispositivi, poi salvala o attivala.",
|
|
4729
|
+
"tutorial.buildingAutomationEditor.intro.title": "Editor di automazioni",
|
|
4730
|
+
"tutorial.buildingAutomationEditor.intro.content": "Crea automazioni dell’edificio: scegline una dall’elenco, definisci trigger, condizioni e azioni, poi salvala, abilitala o eliminala.",
|
|
4731
|
+
"tutorial.spatialEditor.intro.title": "Editor spaziale",
|
|
4732
|
+
"tutorial.spatialEditor.intro.content": "Disponi planimetrie in diverse modalità: disegna muri, stanze e oggetti con gli strumenti, gestisci i layer, aggancia alla griglia, poi esporta.",
|
|
4733
|
+
"tutorial.decisionTreeEditor.intro.title": "Editor di alberi decisionali",
|
|
4734
|
+
"tutorial.decisionTreeEditor.intro.content": "Esplora l’albero decisionale: fai clic sui nodi per esaminare condizioni ed esiti, attiva metriche, probabilità e campioni ed evidenzia un percorso per un input.",
|
|
4735
|
+
"tutorial.diagramEditor.intro.title": "Editor di diagrammi",
|
|
4736
|
+
"tutorial.diagramEditor.intro.content": "Scegli uno strumento per aggiungere e collegare i nodi sul canvas, modificali nel pannello delle proprietà ed esporta il diagramma dalla barra.",
|
|
4737
|
+
"tutorial.contractEditor.intro.title": "Editor di contratti",
|
|
4738
|
+
"tutorial.contractEditor.intro.content": "Assembla il contratto dalla libreria di clausole, compila le variabili del modello, traccia versioni e approvazioni, poi salva o esporta in PDF/DOCX/HTML.",
|
|
4739
|
+
"tutorial.invoiceDesigner.intro.title": "Designer di fatture",
|
|
4740
|
+
"tutorial.invoiceDesigner.intro.content": "Trascina gli elementi sul canvas della fattura, collegali ai campi dati, allinea con griglia e righelli, poi salva o esporta in PDF.",
|
|
4741
|
+
"tutorial.presentationEditor.intro.title": "Editor di presentazioni",
|
|
4742
|
+
"tutorial.presentationEditor.intro.content": "Crea le slide dalla barra delle miniature, aggiungi e disponi gli elementi sul canvas, modificali nel pannello delle proprietà, poi presenta o esporta.",
|
|
4743
|
+
"tutorial.dashboardStudio.intro.title": "Studio dashboard",
|
|
4744
|
+
"tutorial.dashboardStudio.intro.content": "Trascina i widget dalla palette sulla griglia, collegali alle origini dati, aggiungi filtri, poi alterna Modifica/Visualizza, aggiorna e salva.",
|
|
4745
|
+
"tutorial.biReportBuilder.intro.title": "Costruttore di report",
|
|
4746
|
+
"tutorial.biReportBuilder.intro.content": "Trascina gli elementi dalla palette sul report, collegali alle origini dati, alterna design/anteprima, poi esporta in PDF o Excel.",
|
|
4747
|
+
"tutorial.etlBuilder.intro.title": "Costruttore ETL",
|
|
4748
|
+
"tutorial.etlBuilder.intro.content": "Collega sorgenti → trasformazioni → destinazioni in una pipeline, alterna le viste, poi eseguila e salva la configurazione.",
|
|
4749
|
+
"tutorial.videoEditorPro.intro.title": "Editor video",
|
|
4750
|
+
"tutorial.videoEditorPro.intro.content": "Aggiungi media alla timeline, disponi e taglia le clip, applica effetti e transizioni, poi configura ed esegui l’esportazione.",
|
|
4751
|
+
"tutorial.mlStudio.intro.title": "Studio ML",
|
|
4752
|
+
"tutorial.mlStudio.intro.content": "Procedi tra le schede: prepara i dataset, esegui esperimenti, confronta e scegli i modelli, poi distribuisci il migliore.",
|
|
4753
|
+
"tutorial.mathEditor.intro.title": "Editor matematico",
|
|
4754
|
+
"tutorial.mathEditor.intro.content": "Scrivi equazioni in LaTeX o inserisci simboli dalla palette; passa all’input a mano libera e visualizza l’anteprima della formula dal vivo.",
|
|
4755
|
+
"tutorial.dmxEditor.intro.title": "Editor DMX",
|
|
4756
|
+
"tutorial.dmxEditor.intro.content": "Scegli il dispositivo FTDI e la porta, poi imposta il valore di ogni canale DMX con i cursori per controllare dal vivo i tuoi fari."
|
|
4576
4757
|
}, je = {
|
|
4577
4758
|
ok: "OK",
|
|
4578
4759
|
cancel: "Cancelar",
|
|
@@ -5091,7 +5272,7 @@ const T = [
|
|
|
5091
5272
|
"lang.ko": "Koreanska",
|
|
5092
5273
|
"lang.zh": "Kinesiska",
|
|
5093
5274
|
"lang.ar": "Arabiska"
|
|
5094
|
-
},
|
|
5275
|
+
}, Te = {
|
|
5095
5276
|
ok: "OK",
|
|
5096
5277
|
cancel: "Avbryt",
|
|
5097
5278
|
save: "Lagre",
|
|
@@ -5154,7 +5335,7 @@ const T = [
|
|
|
5154
5335
|
"lang.ko": "Koreansk",
|
|
5155
5336
|
"lang.zh": "Kinesisk",
|
|
5156
5337
|
"lang.ar": "Arabisk"
|
|
5157
|
-
},
|
|
5338
|
+
}, xe = {
|
|
5158
5339
|
ok: "OK",
|
|
5159
5340
|
cancel: "Annuller",
|
|
5160
5341
|
save: "Gem",
|
|
@@ -5280,7 +5461,7 @@ const T = [
|
|
|
5280
5461
|
"lang.ko": "Korea",
|
|
5281
5462
|
"lang.zh": "Kiina",
|
|
5282
5463
|
"lang.ar": "Arabia"
|
|
5283
|
-
},
|
|
5464
|
+
}, Me = {
|
|
5284
5465
|
ok: "OK",
|
|
5285
5466
|
cancel: "Zrušit",
|
|
5286
5467
|
save: "Uložit",
|
|
@@ -5643,7 +5824,7 @@ const T = [
|
|
|
5643
5824
|
"wm.minimizeAll": "Minimalizovat vše",
|
|
5644
5825
|
"wm.newWindow": "Nové okno",
|
|
5645
5826
|
"wm.moveToFront": "Přenést dopředu"
|
|
5646
|
-
},
|
|
5827
|
+
}, Fe = {
|
|
5647
5828
|
ok: "OK",
|
|
5648
5829
|
cancel: "Zrušiť",
|
|
5649
5830
|
save: "Uložiť",
|
|
@@ -5880,6 +6061,8 @@ const T = [
|
|
|
5880
6061
|
"lang.zh": "Китайски",
|
|
5881
6062
|
"lang.ar": "Арабски"
|
|
5882
6063
|
}, Oe = {
|
|
6064
|
+
"tutorial.viewEditor.intro.title": "Редактор подань",
|
|
6065
|
+
"tutorial.viewEditor.intro.content": "Створюйте будь-який тип подання в одному місці: виберіть тип (або згенеруйте із сутності), перетягуйте елементи керування з палітри в клітинки сітки, а потім налаштуйте кожну клітинку — прив’язку даних, дозволи за ролями та дії подій. Перемикайте «Дизайн / Перегляд / Код» і зберігайте, коли подання правильне.",
|
|
5883
6066
|
ok: "OK",
|
|
5884
6067
|
cancel: "Скасувати",
|
|
5885
6068
|
save: "Зберегти",
|
|
@@ -7840,7 +8023,7 @@ const T = [
|
|
|
7840
8023
|
"wm.minimizeAll": "最小化全部",
|
|
7841
8024
|
"wm.newWindow": "新建窗口",
|
|
7842
8025
|
"wm.moveToFront": "置于最前"
|
|
7843
|
-
},
|
|
8026
|
+
}, qe = {
|
|
7844
8027
|
ok: "حسناً",
|
|
7845
8028
|
cancel: "إلغاء",
|
|
7846
8029
|
save: "حفظ",
|
|
@@ -8203,7 +8386,7 @@ const T = [
|
|
|
8203
8386
|
"wm.minimizeAll": "تصغير الكل",
|
|
8204
8387
|
"wm.newWindow": "نافذة جديدة",
|
|
8205
8388
|
"wm.moveToFront": "نقل إلى الأمام"
|
|
8206
|
-
},
|
|
8389
|
+
}, We = {
|
|
8207
8390
|
ok: "ठीक है",
|
|
8208
8391
|
cancel: "रद्द करें",
|
|
8209
8392
|
save: "सहेजें",
|
|
@@ -8269,7 +8452,7 @@ const T = [
|
|
|
8269
8452
|
error: "Hitilafu",
|
|
8270
8453
|
success: "Imefanikiwa",
|
|
8271
8454
|
search: "Tafuta"
|
|
8272
|
-
},
|
|
8455
|
+
}, Xe = {
|
|
8273
8456
|
ok: "OK",
|
|
8274
8457
|
cancel: "Kanselahin",
|
|
8275
8458
|
save: "I-save",
|
|
@@ -8280,7 +8463,7 @@ const T = [
|
|
|
8280
8463
|
error: "Error",
|
|
8281
8464
|
success: "Tagumpay",
|
|
8282
8465
|
search: "Maghanap"
|
|
8283
|
-
},
|
|
8466
|
+
}, Ye = {
|
|
8284
8467
|
ok: "OK",
|
|
8285
8468
|
cancel: "Batal",
|
|
8286
8469
|
save: "Simpan",
|
|
@@ -8292,7 +8475,7 @@ const T = [
|
|
|
8292
8475
|
success: "Berjaya",
|
|
8293
8476
|
search: "Cari"
|
|
8294
8477
|
}, w = {
|
|
8295
|
-
en:
|
|
8478
|
+
en: ke,
|
|
8296
8479
|
pl: ye,
|
|
8297
8480
|
de: ze,
|
|
8298
8481
|
fr: Ce,
|
|
@@ -8301,11 +8484,11 @@ const T = [
|
|
|
8301
8484
|
pt: je,
|
|
8302
8485
|
nl: Ae,
|
|
8303
8486
|
sv: Pe,
|
|
8304
|
-
no:
|
|
8305
|
-
da:
|
|
8487
|
+
no: Te,
|
|
8488
|
+
da: xe,
|
|
8306
8489
|
fi: Be,
|
|
8307
|
-
cs:
|
|
8308
|
-
sk:
|
|
8490
|
+
cs: Me,
|
|
8491
|
+
sk: Fe,
|
|
8309
8492
|
hu: Ne,
|
|
8310
8493
|
ro: Re,
|
|
8311
8494
|
bg: Le,
|
|
@@ -8313,16 +8496,16 @@ const T = [
|
|
|
8313
8496
|
ja: Ie,
|
|
8314
8497
|
ko: Ve,
|
|
8315
8498
|
zh: He,
|
|
8316
|
-
ar:
|
|
8317
|
-
hi:
|
|
8499
|
+
ar: qe,
|
|
8500
|
+
hi: We,
|
|
8318
8501
|
bn: Ue,
|
|
8319
8502
|
th: Ke,
|
|
8320
8503
|
vi: Ge,
|
|
8321
8504
|
id: Ze,
|
|
8322
8505
|
sw: Je,
|
|
8323
|
-
fil:
|
|
8324
|
-
ms:
|
|
8325
|
-
},
|
|
8506
|
+
fil: Xe,
|
|
8507
|
+
ms: Ye
|
|
8508
|
+
}, X = {
|
|
8326
8509
|
save: "Zapisz",
|
|
8327
8510
|
cancel: "Anuluj",
|
|
8328
8511
|
ok: "OK",
|
|
@@ -8346,7 +8529,7 @@ const T = [
|
|
|
8346
8529
|
"form.invalidValue": "Proszę podać prawidłową wartość.",
|
|
8347
8530
|
"auth.signIn": "Proszę się zalogować",
|
|
8348
8531
|
"auth.signOut": "Proszę się wylogować"
|
|
8349
|
-
},
|
|
8532
|
+
}, Y = {
|
|
8350
8533
|
save: "Zapisz",
|
|
8351
8534
|
cancel: "Anuluj",
|
|
8352
8535
|
ok: "OK",
|
|
@@ -8371,8 +8554,8 @@ const T = [
|
|
|
8371
8554
|
"auth.signIn": "Zaloguj się",
|
|
8372
8555
|
"auth.signOut": "Wyloguj się"
|
|
8373
8556
|
}, $e = {
|
|
8374
|
-
"pl-PL": { formal:
|
|
8375
|
-
pl: { formal:
|
|
8557
|
+
"pl-PL": { formal: X, informal: Y },
|
|
8558
|
+
pl: { formal: X, informal: Y }
|
|
8376
8559
|
};
|
|
8377
8560
|
function Kt(e) {
|
|
8378
8561
|
var t;
|
|
@@ -8381,41 +8564,41 @@ function Kt(e) {
|
|
|
8381
8564
|
const _e = (e, t) => t, te = I(_e), Gt = ({
|
|
8382
8565
|
t: e,
|
|
8383
8566
|
lang: t = "en",
|
|
8384
|
-
overrides:
|
|
8567
|
+
overrides: i,
|
|
8385
8568
|
children: o
|
|
8386
8569
|
}) => {
|
|
8387
|
-
const
|
|
8570
|
+
const r = b(() => {
|
|
8388
8571
|
if (e)
|
|
8389
8572
|
return e;
|
|
8390
|
-
const a = w[t] ?? w.en, n =
|
|
8573
|
+
const a = w[t] ?? w.en, n = i ? { ...a, ...i } : a;
|
|
8391
8574
|
return (s, l) => n[s] ?? l;
|
|
8392
|
-
}, [e, t,
|
|
8393
|
-
return /* @__PURE__ */ O(te.Provider, { value:
|
|
8575
|
+
}, [e, t, i]);
|
|
8576
|
+
return /* @__PURE__ */ O(te.Provider, { value: r, children: o });
|
|
8394
8577
|
};
|
|
8395
8578
|
function Zt() {
|
|
8396
8579
|
return { t: B(te) };
|
|
8397
8580
|
}
|
|
8398
8581
|
function Jt(e = "en", t) {
|
|
8399
|
-
const
|
|
8400
|
-
return (
|
|
8582
|
+
const i = w[e] ?? w.en, o = t ? { ...i, ...t } : i;
|
|
8583
|
+
return (r, a) => o[r] ?? a;
|
|
8401
8584
|
}
|
|
8402
|
-
function
|
|
8403
|
-
let
|
|
8404
|
-
const a = t[
|
|
8585
|
+
function Xt(e, t = {}) {
|
|
8586
|
+
let i = e.replace(/\{(\w+)\}/g, (o, r) => {
|
|
8587
|
+
const a = t[r];
|
|
8405
8588
|
return a !== void 0 ? String(a) : o;
|
|
8406
8589
|
});
|
|
8407
|
-
return
|
|
8590
|
+
return i = i.replace(
|
|
8408
8591
|
/\{(\w+),\s*plural,\s*one\{([^}]+)\}\s*other\{([^}]+)\}\}/g,
|
|
8409
|
-
(o,
|
|
8410
|
-
const s = t[
|
|
8592
|
+
(o, r, a, n) => {
|
|
8593
|
+
const s = t[r];
|
|
8411
8594
|
return typeof s != "number" ? o : (s === 1 ? a : n).replace(/#/g, String(s));
|
|
8412
8595
|
}
|
|
8413
|
-
),
|
|
8596
|
+
), i;
|
|
8414
8597
|
}
|
|
8415
8598
|
function Qe(e) {
|
|
8416
|
-
return
|
|
8599
|
+
return x.includes(e);
|
|
8417
8600
|
}
|
|
8418
|
-
function
|
|
8601
|
+
function Yt() {
|
|
8419
8602
|
var t;
|
|
8420
8603
|
if (typeof navigator > "u")
|
|
8421
8604
|
return "en";
|
|
@@ -8424,8 +8607,8 @@ function Xt() {
|
|
|
8424
8607
|
}
|
|
8425
8608
|
function oe(e, t) {
|
|
8426
8609
|
var a;
|
|
8427
|
-
const
|
|
8428
|
-
switch (
|
|
8610
|
+
const i = Math.abs(e), o = Math.floor(i), r = e.toString().includes(".") && ((a = e.toString().split(".")[1]) == null ? void 0 : a.length) || 0;
|
|
8611
|
+
switch (r > 0 && parseInt(e.toString().split(".")[1] || "0", 10), t) {
|
|
8429
8612
|
// ── English-like (one/other) ───────────────────────────
|
|
8430
8613
|
case "en":
|
|
8431
8614
|
case "de":
|
|
@@ -8437,29 +8620,29 @@ function oe(e, t) {
|
|
|
8437
8620
|
case "it":
|
|
8438
8621
|
case "es":
|
|
8439
8622
|
case "pt":
|
|
8440
|
-
return o === 1 &&
|
|
8623
|
+
return o === 1 && r === 0 ? "one" : "other";
|
|
8441
8624
|
// ── French (one/many/other) ────────────────────────────
|
|
8442
8625
|
case "fr":
|
|
8443
|
-
return o === 0 || o === 1 ? "one" :
|
|
8626
|
+
return o === 0 || o === 1 ? "one" : i >= 1e6 ? "many" : "other";
|
|
8444
8627
|
// ── Polish (Slavic: one/few/many/other) ────────────────
|
|
8445
8628
|
case "pl":
|
|
8446
|
-
return o === 1 &&
|
|
8629
|
+
return o === 1 && r === 0 ? "one" : r === 0 && o % 10 >= 2 && o % 10 <= 4 && !(o % 100 >= 12 && o % 100 <= 14) ? "few" : r === 0 && o !== 1 && (o % 10 === 0 || o % 10 === 1) || r === 0 && o % 10 >= 5 && o % 10 <= 9 || r === 0 && o % 100 >= 12 && o % 100 <= 14 ? "many" : "other";
|
|
8447
8630
|
// ── Ukrainian (Slavic: one/few/many/other) ─────────────
|
|
8448
8631
|
case "uk":
|
|
8449
|
-
return
|
|
8632
|
+
return r === 0 && o % 10 === 1 && o % 100 !== 11 ? "one" : r === 0 && o % 10 >= 2 && o % 10 <= 4 && !(o % 100 >= 12 && o % 100 <= 14) ? "few" : r === 0 && o % 10 === 0 || r === 0 && o % 10 >= 5 && o % 10 <= 9 || r === 0 && o % 100 >= 11 && o % 100 <= 14 ? "many" : "other";
|
|
8450
8633
|
// ── Bulgarian (one/other) ──────────────────────────────
|
|
8451
8634
|
case "bg":
|
|
8452
8635
|
return e === 1 ? "one" : "other";
|
|
8453
8636
|
// ── Czech/Slovak (Slavic: one/few/many/other) ──────────
|
|
8454
8637
|
case "cs":
|
|
8455
8638
|
case "sk":
|
|
8456
|
-
return o === 1 &&
|
|
8639
|
+
return o === 1 && r === 0 ? "one" : o >= 2 && o <= 4 && r === 0 ? "few" : r !== 0 ? "many" : "other";
|
|
8457
8640
|
// ── Hungarian (one/other) ──────────────────────────────
|
|
8458
8641
|
case "hu":
|
|
8459
8642
|
return e === 1 ? "one" : "other";
|
|
8460
8643
|
// ── Romanian (one/few/other) ───────────────────────────
|
|
8461
8644
|
case "ro":
|
|
8462
|
-
return o === 1 &&
|
|
8645
|
+
return o === 1 && r === 0 ? "one" : r !== 0 || e === 0 || e % 100 >= 2 && e % 100 <= 19 ? "few" : "other";
|
|
8463
8646
|
// ── Japanese/Korean/Chinese (other only) ─────────────────
|
|
8464
8647
|
case "ja":
|
|
8465
8648
|
case "ko":
|
|
@@ -8482,10 +8665,10 @@ function oe(e, t) {
|
|
|
8482
8665
|
return new Intl.PluralRules(t).select(e);
|
|
8483
8666
|
} catch {
|
|
8484
8667
|
}
|
|
8485
|
-
return o === 1 &&
|
|
8668
|
+
return o === 1 && r === 0 ? "one" : "other";
|
|
8486
8669
|
}
|
|
8487
8670
|
}
|
|
8488
|
-
function
|
|
8671
|
+
function ie(e, t) {
|
|
8489
8672
|
switch (t) {
|
|
8490
8673
|
// ── English ────────────────────────────────────────────
|
|
8491
8674
|
case "en":
|
|
@@ -8520,28 +8703,28 @@ function re(e, t) {
|
|
|
8520
8703
|
}
|
|
8521
8704
|
}
|
|
8522
8705
|
function et(e) {
|
|
8523
|
-
var
|
|
8706
|
+
var r;
|
|
8524
8707
|
if (e = e.trim(), !e.includes(","))
|
|
8525
8708
|
return { type: "simple", name: e };
|
|
8526
|
-
const t = e.split(",").map((a) => a.trim()),
|
|
8527
|
-
if (!o || !
|
|
8709
|
+
const t = e.split(",").map((a) => a.trim()), i = t[0], o = (r = t[1]) == null ? void 0 : r.toLowerCase();
|
|
8710
|
+
if (!o || !i)
|
|
8528
8711
|
return null;
|
|
8529
8712
|
if (o === "number")
|
|
8530
|
-
return { type: "number", name:
|
|
8713
|
+
return { type: "number", name: i, style: t[2] };
|
|
8531
8714
|
if (o === "date" || o === "time")
|
|
8532
|
-
return { type: o, name:
|
|
8715
|
+
return { type: o, name: i, style: t[2] || "medium" };
|
|
8533
8716
|
if (o === "plural" || o === "select" || o === "selectordinal") {
|
|
8534
8717
|
const a = t.slice(2).join(",").trim(), n = {}, s = /(=?\w+)\s*\{([^{}]*(?:\{[^{}]*\}[^{}]*)*)\}/g;
|
|
8535
8718
|
let l;
|
|
8536
8719
|
for (; (l = s.exec(a)) !== null; )
|
|
8537
8720
|
n[l[1]] = l[2];
|
|
8538
|
-
return { type: o, name:
|
|
8721
|
+
return { type: o, name: i, options: n };
|
|
8539
8722
|
}
|
|
8540
|
-
return { type: "simple", name:
|
|
8723
|
+
return { type: "simple", name: i };
|
|
8541
8724
|
}
|
|
8542
|
-
function tt(e, t,
|
|
8725
|
+
function tt(e, t, i) {
|
|
8543
8726
|
const o = {};
|
|
8544
|
-
switch (
|
|
8727
|
+
switch (i) {
|
|
8545
8728
|
case "currency":
|
|
8546
8729
|
o.style = "currency", o.currency = "USD";
|
|
8547
8730
|
break;
|
|
@@ -8554,51 +8737,51 @@ function tt(e, t, r) {
|
|
|
8554
8737
|
}
|
|
8555
8738
|
return new Intl.NumberFormat(t, o).format(e);
|
|
8556
8739
|
}
|
|
8557
|
-
function ot(e, t,
|
|
8740
|
+
function ot(e, t, i) {
|
|
8558
8741
|
const o = e instanceof Date ? e : new Date(e);
|
|
8559
|
-
let
|
|
8560
|
-
switch (
|
|
8742
|
+
let r;
|
|
8743
|
+
switch (i) {
|
|
8561
8744
|
case "short":
|
|
8562
|
-
|
|
8745
|
+
r = { dateStyle: "short" };
|
|
8563
8746
|
break;
|
|
8564
8747
|
case "long":
|
|
8565
|
-
|
|
8748
|
+
r = { dateStyle: "long" };
|
|
8566
8749
|
break;
|
|
8567
8750
|
case "full":
|
|
8568
|
-
|
|
8751
|
+
r = { dateStyle: "full" };
|
|
8569
8752
|
break;
|
|
8570
8753
|
case "medium":
|
|
8571
8754
|
default:
|
|
8572
|
-
|
|
8755
|
+
r = { dateStyle: "medium" };
|
|
8573
8756
|
break;
|
|
8574
8757
|
}
|
|
8575
|
-
return new Intl.DateTimeFormat(t,
|
|
8758
|
+
return new Intl.DateTimeFormat(t, r).format(o);
|
|
8576
8759
|
}
|
|
8577
|
-
function
|
|
8760
|
+
function it(e, t, i) {
|
|
8578
8761
|
const o = e instanceof Date ? e : new Date(e);
|
|
8579
|
-
let
|
|
8580
|
-
switch (
|
|
8762
|
+
let r;
|
|
8763
|
+
switch (i) {
|
|
8581
8764
|
case "short":
|
|
8582
|
-
|
|
8765
|
+
r = { timeStyle: "short" };
|
|
8583
8766
|
break;
|
|
8584
8767
|
case "long":
|
|
8585
|
-
|
|
8768
|
+
r = { timeStyle: "long" };
|
|
8586
8769
|
break;
|
|
8587
8770
|
case "full":
|
|
8588
|
-
|
|
8771
|
+
r = { timeStyle: "full" };
|
|
8589
8772
|
break;
|
|
8590
8773
|
case "medium":
|
|
8591
8774
|
default:
|
|
8592
|
-
|
|
8775
|
+
r = { timeStyle: "medium" };
|
|
8593
8776
|
break;
|
|
8594
8777
|
}
|
|
8595
|
-
return new Intl.DateTimeFormat(t,
|
|
8778
|
+
return new Intl.DateTimeFormat(t, r).format(o);
|
|
8596
8779
|
}
|
|
8597
|
-
function H(e, t,
|
|
8598
|
-
return e.replace(/#/g, String(
|
|
8780
|
+
function H(e, t, i) {
|
|
8781
|
+
return e.replace(/#/g, String(i));
|
|
8599
8782
|
}
|
|
8600
|
-
function
|
|
8601
|
-
const o =
|
|
8783
|
+
function rt(e, t = {}, i = {}) {
|
|
8784
|
+
const o = i.lang || "en", r = i.locale || o, a = /\{([^{}]*(?:\{[^{}]*\}[^{}]*)*)\}/g;
|
|
8602
8785
|
return e.replace(a, (n, s) => {
|
|
8603
8786
|
const l = et(s);
|
|
8604
8787
|
if (!l)
|
|
@@ -8610,11 +8793,11 @@ function it(e, t = {}, r = {}) {
|
|
|
8610
8793
|
case "simple":
|
|
8611
8794
|
return String(d);
|
|
8612
8795
|
case "number":
|
|
8613
|
-
return typeof d != "number" ? n : tt(d,
|
|
8796
|
+
return typeof d != "number" ? n : tt(d, r, l.style);
|
|
8614
8797
|
case "date":
|
|
8615
|
-
return ot(d,
|
|
8798
|
+
return ot(d, r, l.style);
|
|
8616
8799
|
case "time":
|
|
8617
|
-
return
|
|
8800
|
+
return it(d, r, l.style);
|
|
8618
8801
|
case "plural": {
|
|
8619
8802
|
if (typeof d != "number" || !l.options)
|
|
8620
8803
|
return n;
|
|
@@ -8624,7 +8807,7 @@ function it(e, t = {}, r = {}) {
|
|
|
8624
8807
|
case "selectordinal": {
|
|
8625
8808
|
if (typeof d != "number" || !l.options)
|
|
8626
8809
|
return n;
|
|
8627
|
-
const u =
|
|
8810
|
+
const u = ie(d, o), v = l.options[u] ?? l.options.other ?? "";
|
|
8628
8811
|
return H(v, l.name, d);
|
|
8629
8812
|
}
|
|
8630
8813
|
case "select": {
|
|
@@ -8639,17 +8822,17 @@ function it(e, t = {}, r = {}) {
|
|
|
8639
8822
|
});
|
|
8640
8823
|
}
|
|
8641
8824
|
function $t(e, t = "en") {
|
|
8642
|
-
return function(o,
|
|
8643
|
-
const n = e[o] ??
|
|
8644
|
-
return a ?
|
|
8825
|
+
return function(o, r, a) {
|
|
8826
|
+
const n = e[o] ?? r;
|
|
8827
|
+
return a ? rt(n, a, { lang: t }) : n;
|
|
8645
8828
|
};
|
|
8646
8829
|
}
|
|
8647
|
-
function _t(e, t,
|
|
8648
|
-
const o = oe(e,
|
|
8830
|
+
function _t(e, t, i = "en") {
|
|
8831
|
+
const o = oe(e, i);
|
|
8649
8832
|
return (t[o] ?? t.other).replace(/#/g, String(e));
|
|
8650
8833
|
}
|
|
8651
|
-
function Qt(e, t,
|
|
8652
|
-
const o =
|
|
8834
|
+
function Qt(e, t, i = "en") {
|
|
8835
|
+
const o = ie(e, i);
|
|
8653
8836
|
return (t[o] ?? t.other).replace(/#/g, String(e));
|
|
8654
8837
|
}
|
|
8655
8838
|
function eo(e, t) {
|
|
@@ -8669,11 +8852,11 @@ const at = [
|
|
|
8669
8852
|
"ps"
|
|
8670
8853
|
// Pashto
|
|
8671
8854
|
];
|
|
8672
|
-
function
|
|
8855
|
+
function re(e) {
|
|
8673
8856
|
return at.includes(e);
|
|
8674
8857
|
}
|
|
8675
8858
|
function nt(e) {
|
|
8676
|
-
return
|
|
8859
|
+
return re(e) ? "rtl" : "ltr";
|
|
8677
8860
|
}
|
|
8678
8861
|
function st(e) {
|
|
8679
8862
|
if (typeof document > "u")
|
|
@@ -8735,34 +8918,34 @@ const G = I({
|
|
|
8735
8918
|
isRTL: !1,
|
|
8736
8919
|
flip: (e) => e,
|
|
8737
8920
|
value: (e) => e.ltr
|
|
8738
|
-
}),
|
|
8921
|
+
}), io = ({
|
|
8739
8922
|
lang: e,
|
|
8740
8923
|
autoSetDocument: t = !0,
|
|
8741
|
-
children:
|
|
8924
|
+
children: i
|
|
8742
8925
|
}) => {
|
|
8743
|
-
const o =
|
|
8926
|
+
const o = re(e), r = o ? "rtl" : "ltr";
|
|
8744
8927
|
L(() => {
|
|
8745
8928
|
t && st(e);
|
|
8746
8929
|
}, [e, t]);
|
|
8747
8930
|
const a = b(
|
|
8748
8931
|
() => ({
|
|
8749
|
-
dir:
|
|
8932
|
+
dir: r,
|
|
8750
8933
|
isRTL: o,
|
|
8751
8934
|
flip: (n) => dt(n, o),
|
|
8752
8935
|
value: (n) => lt(n, o)
|
|
8753
8936
|
}),
|
|
8754
|
-
[
|
|
8937
|
+
[r, o]
|
|
8755
8938
|
);
|
|
8756
|
-
return /* @__PURE__ */ O(G.Provider, { value: a, children:
|
|
8939
|
+
return /* @__PURE__ */ O(G.Provider, { value: a, children: i });
|
|
8757
8940
|
};
|
|
8758
|
-
function
|
|
8941
|
+
function ro() {
|
|
8759
8942
|
return B(G);
|
|
8760
8943
|
}
|
|
8761
8944
|
function ao() {
|
|
8762
8945
|
return B(G).isRTL;
|
|
8763
8946
|
}
|
|
8764
8947
|
function no(e) {
|
|
8765
|
-
const t = [],
|
|
8948
|
+
const t = [], i = [
|
|
8766
8949
|
"left",
|
|
8767
8950
|
"right",
|
|
8768
8951
|
"margin-left",
|
|
@@ -8772,11 +8955,11 @@ function no(e) {
|
|
|
8772
8955
|
"border-left",
|
|
8773
8956
|
"border-right"
|
|
8774
8957
|
];
|
|
8775
|
-
for (const [o,
|
|
8776
|
-
|
|
8958
|
+
for (const [o, r] of Object.entries(e))
|
|
8959
|
+
i.includes(o) && t.push(`Use logical property instead of '${o}' → '${ct(o)}'`), o === "text-align" && (r === "left" || r === "right") && t.push(`Use 'text-align: start/end' instead of 'text-align: ${r}'`), o === "float" && (r === "left" || r === "right") && t.push(`Use flexbox or grid instead of 'float: ${r}' for RTL support`);
|
|
8777
8960
|
return t;
|
|
8778
8961
|
}
|
|
8779
|
-
const
|
|
8962
|
+
const q = {
|
|
8780
8963
|
// Direction multiplier: 1 for LTR, -1 for RTL
|
|
8781
8964
|
dirMultiplier: "--nice-dir-multiplier",
|
|
8782
8965
|
// Inline start (left in LTR, right in RTL)
|
|
@@ -8786,9 +8969,9 @@ const W = {
|
|
|
8786
8969
|
};
|
|
8787
8970
|
function so(e) {
|
|
8788
8971
|
return {
|
|
8789
|
-
[
|
|
8790
|
-
[
|
|
8791
|
-
[
|
|
8972
|
+
[q.dirMultiplier]: e ? "-1" : "1",
|
|
8973
|
+
[q.inlineStart]: e ? "right" : "left",
|
|
8974
|
+
[q.inlineEnd]: e ? "left" : "right"
|
|
8792
8975
|
};
|
|
8793
8976
|
}
|
|
8794
8977
|
function lo() {
|
|
@@ -8797,33 +8980,33 @@ function lo() {
|
|
|
8797
8980
|
function ut(e) {
|
|
8798
8981
|
if (e === "en")
|
|
8799
8982
|
return [];
|
|
8800
|
-
const t = w.en,
|
|
8801
|
-
for (const [
|
|
8802
|
-
r
|
|
8983
|
+
const t = w.en, i = w[e], o = [];
|
|
8984
|
+
for (const [r, a] of Object.entries(t))
|
|
8985
|
+
i[r] || o.push({ key: r, englishValue: a });
|
|
8803
8986
|
return o;
|
|
8804
8987
|
}
|
|
8805
8988
|
function pt(e) {
|
|
8806
|
-
const t = Object.keys(w.en).length,
|
|
8989
|
+
const t = Object.keys(w.en).length, i = Object.keys(w[e]).length, o = t - i, r = Math.round(i / t * 100);
|
|
8807
8990
|
return {
|
|
8808
8991
|
lang: e,
|
|
8809
8992
|
totalKeys: t,
|
|
8810
|
-
translatedKeys:
|
|
8993
|
+
translatedKeys: i,
|
|
8811
8994
|
missingKeys: o,
|
|
8812
|
-
coverage:
|
|
8995
|
+
coverage: r
|
|
8813
8996
|
};
|
|
8814
8997
|
}
|
|
8815
8998
|
function mt() {
|
|
8816
|
-
return
|
|
8999
|
+
return x.map((e) => pt(e));
|
|
8817
9000
|
}
|
|
8818
9001
|
function co(e, t) {
|
|
8819
|
-
const
|
|
8820
|
-
const
|
|
8821
|
-
return ` '${o.key}': '${
|
|
9002
|
+
const i = t.map((o) => {
|
|
9003
|
+
const r = o.translated.replace(/'/g, "\\'");
|
|
9004
|
+
return ` '${o.key}': '${r}',`;
|
|
8822
9005
|
});
|
|
8823
9006
|
return `// Auto-translated additions for ${e} (review before merging)
|
|
8824
9007
|
// Generated on ${(/* @__PURE__ */ new Date()).toISOString()}
|
|
8825
9008
|
{
|
|
8826
|
-
${
|
|
9009
|
+
${i.join(`
|
|
8827
9010
|
`)}
|
|
8828
9011
|
}`;
|
|
8829
9012
|
}
|
|
@@ -8838,23 +9021,23 @@ Generated: ${(/* @__PURE__ */ new Date()).toISOString()}
|
|
|
8838
9021
|
| Language | Translated | Missing | Coverage |
|
|
8839
9022
|
|----------|------------|---------|----------|
|
|
8840
9023
|
`;
|
|
8841
|
-
for (const
|
|
8842
|
-
const o = "█".repeat(Math.floor(
|
|
8843
|
-
t += `| ${
|
|
9024
|
+
for (const i of e) {
|
|
9025
|
+
const o = "█".repeat(Math.floor(i.coverage / 10)) + "░".repeat(10 - Math.floor(i.coverage / 10));
|
|
9026
|
+
t += `| ${i.lang} | ${i.translatedKeys} | ${i.missingKeys} | ${o} ${i.coverage}% |
|
|
8844
9027
|
`;
|
|
8845
9028
|
}
|
|
8846
9029
|
t += `
|
|
8847
9030
|
## Languages with Missing Translations
|
|
8848
9031
|
|
|
8849
9032
|
`;
|
|
8850
|
-
for (const
|
|
8851
|
-
t += `### ${
|
|
9033
|
+
for (const i of e.filter((o) => o.missingKeys > 0)) {
|
|
9034
|
+
t += `### ${i.lang.toUpperCase()} (${i.coverage}% complete)
|
|
8852
9035
|
|
|
8853
9036
|
`;
|
|
8854
|
-
const o = ut(
|
|
9037
|
+
const o = ut(i.lang);
|
|
8855
9038
|
t += `Missing ${o.length} keys:
|
|
8856
9039
|
|
|
8857
|
-
`, t += "```\n", t += o.slice(0, 10).map((
|
|
9040
|
+
`, t += "```\n", t += o.slice(0, 10).map((r) => r.key).join(`
|
|
8858
9041
|
`), o.length > 10 && (t += `
|
|
8859
9042
|
... and ${o.length - 10} more`), t += "\n```\n\n";
|
|
8860
9043
|
}
|
|
@@ -8896,23 +9079,23 @@ function D(e) {
|
|
|
8896
9079
|
return gt[e] ?? "en-US";
|
|
8897
9080
|
}
|
|
8898
9081
|
function ht(e, t = "medium") {
|
|
8899
|
-
const
|
|
9082
|
+
const i = D(e), o = new Intl.DateTimeFormat(i, { dateStyle: t });
|
|
8900
9083
|
return {
|
|
8901
|
-
format: (
|
|
8902
|
-
formatRange: (
|
|
8903
|
-
const n =
|
|
9084
|
+
format: (r) => o.format(r instanceof Date ? r : new Date(r)),
|
|
9085
|
+
formatRange: (r, a) => {
|
|
9086
|
+
const n = r instanceof Date ? r : new Date(r), s = a instanceof Date ? a : new Date(a);
|
|
8904
9087
|
return o.formatRange(n, s);
|
|
8905
9088
|
},
|
|
8906
|
-
formatRelative: (
|
|
9089
|
+
formatRelative: (r) => wt(r instanceof Date ? r : new Date(r), i)
|
|
8907
9090
|
};
|
|
8908
9091
|
}
|
|
8909
9092
|
function po(e, t = "medium") {
|
|
8910
9093
|
return b(() => ht(e, t), [e, t]);
|
|
8911
9094
|
}
|
|
8912
9095
|
function vt(e, t = "short") {
|
|
8913
|
-
const
|
|
9096
|
+
const i = D(e), o = new Intl.DateTimeFormat(i, { timeStyle: t });
|
|
8914
9097
|
return {
|
|
8915
|
-
format: (
|
|
9098
|
+
format: (r) => o.format(r instanceof Date ? r : new Date(r))
|
|
8916
9099
|
};
|
|
8917
9100
|
}
|
|
8918
9101
|
function mo(e, t = "short") {
|
|
@@ -8921,26 +9104,26 @@ function mo(e, t = "short") {
|
|
|
8921
9104
|
function ft(e) {
|
|
8922
9105
|
const t = D(e);
|
|
8923
9106
|
return {
|
|
8924
|
-
format: (
|
|
8925
|
-
formatCompact: (
|
|
8926
|
-
formatPercent: (
|
|
9107
|
+
format: (i) => new Intl.NumberFormat(t).format(i),
|
|
9108
|
+
formatCompact: (i) => new Intl.NumberFormat(t, { notation: "compact" }).format(i),
|
|
9109
|
+
formatPercent: (i) => new Intl.NumberFormat(t, { style: "percent", maximumFractionDigits: 1 }).format(i)
|
|
8927
9110
|
};
|
|
8928
9111
|
}
|
|
8929
9112
|
function go(e) {
|
|
8930
9113
|
return b(() => ft(e), [e]);
|
|
8931
9114
|
}
|
|
8932
9115
|
function bt(e, t = "USD") {
|
|
8933
|
-
const
|
|
9116
|
+
const i = D(e), o = new Intl.NumberFormat(i, { style: "currency", currency: t });
|
|
8934
9117
|
return {
|
|
8935
|
-
format: (
|
|
9118
|
+
format: (r) => o.format(r)
|
|
8936
9119
|
};
|
|
8937
9120
|
}
|
|
8938
9121
|
function ho(e, t = "USD") {
|
|
8939
9122
|
return b(() => bt(e, t), [e, t]);
|
|
8940
9123
|
}
|
|
8941
9124
|
function wt(e, t) {
|
|
8942
|
-
const
|
|
8943
|
-
return
|
|
9125
|
+
const i = Date.now(), o = e.getTime() - i, r = Math.abs(o), a = new Intl.RelativeTimeFormat(t, { numeric: "auto" });
|
|
9126
|
+
return r < 6e4 ? a.format(Math.round(o / 1e3), "second") : r < 36e5 ? a.format(Math.round(o / 6e4), "minute") : r < 864e5 ? a.format(Math.round(o / 36e5), "hour") : r < 2592e6 ? a.format(Math.round(o / 864e5), "day") : r < 31536e6 ? a.format(Math.round(o / 2592e6), "month") : a.format(Math.round(o / 31536e6), "year");
|
|
8944
9127
|
}
|
|
8945
9128
|
const ae = [
|
|
8946
9129
|
{
|
|
@@ -9094,19 +9277,19 @@ const ae = [
|
|
|
9094
9277
|
}
|
|
9095
9278
|
}
|
|
9096
9279
|
];
|
|
9097
|
-
function
|
|
9098
|
-
const
|
|
9099
|
-
return
|
|
9280
|
+
function Et(e, t) {
|
|
9281
|
+
const i = ae.find((o) => o.en.toLowerCase() === e.toLowerCase());
|
|
9282
|
+
return i == null ? void 0 : i.translations[t];
|
|
9100
9283
|
}
|
|
9101
|
-
function vo(e, t,
|
|
9102
|
-
const o = w.en,
|
|
9284
|
+
function vo(e, t, i = 0.8) {
|
|
9285
|
+
const o = w.en, r = w[t], a = e.toLowerCase().trim();
|
|
9103
9286
|
let n;
|
|
9104
9287
|
for (const [s, l] of Object.entries(o)) {
|
|
9105
|
-
const d =
|
|
9288
|
+
const d = r[s];
|
|
9106
9289
|
if (!d)
|
|
9107
9290
|
continue;
|
|
9108
|
-
const u =
|
|
9109
|
-
u >=
|
|
9291
|
+
const u = kt(a, l.toLowerCase().trim());
|
|
9292
|
+
u >= i && (!n || u > n.similarity) && (n = { key: s, english: l, translated: d, similarity: u });
|
|
9110
9293
|
}
|
|
9111
9294
|
return n;
|
|
9112
9295
|
}
|
|
@@ -9117,29 +9300,29 @@ function fo(e) {
|
|
|
9117
9300
|
}));
|
|
9118
9301
|
}
|
|
9119
9302
|
function bo(e) {
|
|
9120
|
-
const t = w[e],
|
|
9121
|
-
for (const [
|
|
9122
|
-
const n =
|
|
9123
|
-
n && s && s !== n && o.push({ key:
|
|
9303
|
+
const t = w[e], i = w.en, o = [];
|
|
9304
|
+
for (const [r, a] of Object.entries(i)) {
|
|
9305
|
+
const n = Et(a, e), s = t[r];
|
|
9306
|
+
n && s && s !== n && o.push({ key: r, currentTranslation: s, glossaryTranslation: n });
|
|
9124
9307
|
}
|
|
9125
9308
|
return o;
|
|
9126
9309
|
}
|
|
9127
9310
|
function $(e) {
|
|
9128
9311
|
const t = /* @__PURE__ */ new Set();
|
|
9129
|
-
for (let
|
|
9130
|
-
t.add(e.substring(
|
|
9312
|
+
for (let i = 0; i < e.length - 1; i++)
|
|
9313
|
+
t.add(e.substring(i, i + 2));
|
|
9131
9314
|
return t;
|
|
9132
9315
|
}
|
|
9133
|
-
function
|
|
9316
|
+
function kt(e, t) {
|
|
9134
9317
|
if (e === t)
|
|
9135
9318
|
return 1;
|
|
9136
9319
|
if (e.length < 2 || t.length < 2)
|
|
9137
9320
|
return 0;
|
|
9138
|
-
const
|
|
9139
|
-
let
|
|
9140
|
-
for (const a of
|
|
9141
|
-
o.has(a) &&
|
|
9142
|
-
return 2 *
|
|
9321
|
+
const i = $(e), o = $(t);
|
|
9322
|
+
let r = 0;
|
|
9323
|
+
for (const a of i)
|
|
9324
|
+
o.has(a) && r++;
|
|
9325
|
+
return 2 * r / (i.size + o.size);
|
|
9143
9326
|
}
|
|
9144
9327
|
const ne = {
|
|
9145
9328
|
UTC: ["UTC", "Etc/UTC", "Etc/GMT"],
|
|
@@ -9216,15 +9399,15 @@ function wo(e) {
|
|
|
9216
9399
|
return !1;
|
|
9217
9400
|
}
|
|
9218
9401
|
}
|
|
9219
|
-
function
|
|
9220
|
-
var
|
|
9221
|
-
const o = D(t),
|
|
9402
|
+
function M(e, t = "en", i = /* @__PURE__ */ new Date()) {
|
|
9403
|
+
var E, F;
|
|
9404
|
+
const o = D(t), r = new Intl.DateTimeFormat(o, {
|
|
9222
9405
|
timeZone: e,
|
|
9223
9406
|
timeZoneName: "long"
|
|
9224
9407
|
}), a = new Intl.DateTimeFormat(o, {
|
|
9225
9408
|
timeZone: e,
|
|
9226
9409
|
timeZoneName: "short"
|
|
9227
|
-
}), n =
|
|
9410
|
+
}), n = r.formatToParts(i), s = a.formatToParts(i), l = ((E = n.find((A) => A.type === "timeZoneName")) == null ? void 0 : E.value) || e, d = ((F = s.find((A) => A.type === "timeZoneName")) == null ? void 0 : F.value) || e, u = new Date(i.toLocaleString("en-US", { timeZone: "UTC" })), v = new Date(i.toLocaleString("en-US", { timeZone: e })), p = Math.round((v.getTime() - u.getTime()) / 6e4), m = new Date(i.getFullYear(), 0, 1), f = new Date(i.getFullYear(), 6, 1), g = U(e, m), y = U(e, f), z = U(e, i), k = Math.min(g, y), j = z !== k && g !== y;
|
|
9228
9411
|
return {
|
|
9229
9412
|
id: e,
|
|
9230
9413
|
displayName: l,
|
|
@@ -9234,35 +9417,35 @@ function F(e, t = "en", r = /* @__PURE__ */ new Date()) {
|
|
|
9234
9417
|
isDST: j
|
|
9235
9418
|
};
|
|
9236
9419
|
}
|
|
9237
|
-
function ko(e = "en", t = /* @__PURE__ */ new Date()) {
|
|
9238
|
-
return Object.values(ne).flat().map((o) => F(o, e, t));
|
|
9239
|
-
}
|
|
9240
9420
|
function Eo(e = "en", t = /* @__PURE__ */ new Date()) {
|
|
9241
|
-
|
|
9242
|
-
|
|
9243
|
-
|
|
9244
|
-
|
|
9421
|
+
return Object.values(ne).flat().map((o) => M(o, e, t));
|
|
9422
|
+
}
|
|
9423
|
+
function ko(e = "en", t = /* @__PURE__ */ new Date()) {
|
|
9424
|
+
const i = {};
|
|
9425
|
+
for (const [o, r] of Object.entries(ne))
|
|
9426
|
+
i[o] = r.map((a) => M(a, e, t));
|
|
9427
|
+
return i;
|
|
9245
9428
|
}
|
|
9246
|
-
function se(e, t,
|
|
9247
|
-
const o = e.toLocaleString("en-US", { timeZone: t }),
|
|
9429
|
+
function se(e, t, i) {
|
|
9430
|
+
const o = e.toLocaleString("en-US", { timeZone: t }), r = new Date(o), a = e.toLocaleString("en-US", { timeZone: i }), n = new Date(a), s = r.getTime() - n.getTime();
|
|
9248
9431
|
return new Date(e.getTime() + s);
|
|
9249
9432
|
}
|
|
9250
9433
|
function yt(e, t) {
|
|
9251
|
-
const
|
|
9252
|
-
return se(e,
|
|
9434
|
+
const i = t || Z();
|
|
9435
|
+
return se(e, i, "UTC");
|
|
9253
9436
|
}
|
|
9254
9437
|
function zt(e, t) {
|
|
9255
|
-
const
|
|
9256
|
-
return se(e, "UTC",
|
|
9438
|
+
const i = t || Z();
|
|
9439
|
+
return se(e, "UTC", i);
|
|
9257
9440
|
}
|
|
9258
|
-
function Ct(e, t,
|
|
9259
|
-
const o = D(e), { dateStyle:
|
|
9441
|
+
function Ct(e, t, i = {}) {
|
|
9442
|
+
const o = D(e), { dateStyle: r = "medium", timeStyle: a = "short", nameStyle: n = "short" } = i, s = new Intl.DateTimeFormat(o, {
|
|
9260
9443
|
timeZone: t,
|
|
9261
|
-
dateStyle:
|
|
9444
|
+
dateStyle: r,
|
|
9262
9445
|
timeStyle: a
|
|
9263
9446
|
}), l = new Intl.DateTimeFormat(o, {
|
|
9264
9447
|
timeZone: t,
|
|
9265
|
-
dateStyle:
|
|
9448
|
+
dateStyle: r,
|
|
9266
9449
|
timeStyle: a,
|
|
9267
9450
|
timeZoneName: n
|
|
9268
9451
|
}), d = new Intl.DateTimeFormat(o, {
|
|
@@ -9272,52 +9455,52 @@ function Ct(e, t, r = {}) {
|
|
|
9272
9455
|
return {
|
|
9273
9456
|
format: (u) => s.format(u),
|
|
9274
9457
|
formatWithZone: (u) => l.format(u),
|
|
9275
|
-
getOffset: (u) =>
|
|
9458
|
+
getOffset: (u) => M(t, e, u).offsetString,
|
|
9276
9459
|
getAbbreviation: (u) => {
|
|
9277
9460
|
var p;
|
|
9278
9461
|
return ((p = d.formatToParts(u).find((m) => m.type === "timeZoneName")) == null ? void 0 : p.value) || "";
|
|
9279
9462
|
}
|
|
9280
9463
|
};
|
|
9281
9464
|
}
|
|
9282
|
-
function
|
|
9283
|
-
return
|
|
9465
|
+
function W(e, t = /* @__PURE__ */ new Date()) {
|
|
9466
|
+
return M(e, "en", t).isDST;
|
|
9284
9467
|
}
|
|
9285
9468
|
function yo(e, t = /* @__PURE__ */ new Date()) {
|
|
9286
|
-
const
|
|
9287
|
-
for (
|
|
9288
|
-
if (o.setDate(o.getDate() + 1),
|
|
9469
|
+
const i = W(e, t), o = new Date(t), r = new Date(t);
|
|
9470
|
+
for (r.setFullYear(r.getFullYear() + 1); o < r; )
|
|
9471
|
+
if (o.setDate(o.getDate() + 1), W(e, o) !== i) {
|
|
9289
9472
|
o.setDate(o.getDate() - 1);
|
|
9290
9473
|
const a = new Date(o);
|
|
9291
9474
|
a.setHours(0, 0, 0, 0);
|
|
9292
9475
|
const n = new Date(o);
|
|
9293
9476
|
for (n.setDate(n.getDate() + 2); n.getTime() - a.getTime() > 6e4; ) {
|
|
9294
9477
|
const s = new Date((a.getTime() + n.getTime()) / 2);
|
|
9295
|
-
|
|
9478
|
+
W(e, s) === i ? a.setTime(s.getTime()) : n.setTime(s.getTime());
|
|
9296
9479
|
}
|
|
9297
9480
|
return n;
|
|
9298
9481
|
}
|
|
9299
9482
|
return null;
|
|
9300
9483
|
}
|
|
9301
|
-
function zo(e, t,
|
|
9302
|
-
const [o] =
|
|
9484
|
+
function zo(e, t, i) {
|
|
9485
|
+
const [o] = T(() => Z()), r = t || o, a = b(() => Ct(e, r, i), [e, r, i]), n = b(() => M(r, e), [r, e]);
|
|
9303
9486
|
return {
|
|
9304
|
-
timezone:
|
|
9487
|
+
timezone: r,
|
|
9305
9488
|
info: n,
|
|
9306
9489
|
format: a.format,
|
|
9307
9490
|
formatWithZone: a.formatWithZone,
|
|
9308
9491
|
getOffset: a.getOffset,
|
|
9309
9492
|
getAbbreviation: a.getAbbreviation,
|
|
9310
|
-
toUTC: (s) => yt(s,
|
|
9311
|
-
fromUTC: (s) => zt(s,
|
|
9493
|
+
toUTC: (s) => yt(s, r),
|
|
9494
|
+
fromUTC: (s) => zt(s, r)
|
|
9312
9495
|
};
|
|
9313
9496
|
}
|
|
9314
9497
|
function U(e, t) {
|
|
9315
|
-
const
|
|
9316
|
-
return Math.round((a.getTime() -
|
|
9498
|
+
const i = t.toLocaleString("en-US", { timeZone: "UTC" }), o = t.toLocaleString("en-US", { timeZone: e }), r = new Date(i), a = new Date(o);
|
|
9499
|
+
return Math.round((a.getTime() - r.getTime()) / 6e4);
|
|
9317
9500
|
}
|
|
9318
9501
|
function St(e) {
|
|
9319
|
-
const t = e >= 0 ? "+" : "-",
|
|
9320
|
-
return `${t}${o.toString().padStart(2, "0")}:${
|
|
9502
|
+
const t = e >= 0 ? "+" : "-", i = Math.abs(e), o = Math.floor(i / 60), r = i % 60;
|
|
9503
|
+
return `${t}${o.toString().padStart(2, "0")}:${r.toString().padStart(2, "0")}`;
|
|
9321
9504
|
}
|
|
9322
9505
|
const V = {
|
|
9323
9506
|
gregory: {
|
|
@@ -9485,10 +9668,10 @@ const V = {
|
|
|
9485
9668
|
fil: "gregory",
|
|
9486
9669
|
ms: "gregory"
|
|
9487
9670
|
};
|
|
9488
|
-
function de(e, t = "gregory",
|
|
9489
|
-
const o = D(e), { dateStyle:
|
|
9671
|
+
function de(e, t = "gregory", i = {}) {
|
|
9672
|
+
const o = D(e), { dateStyle: r = "medium", showEra: a = !1, showWeekday: n = !1 } = i, s = {
|
|
9490
9673
|
calendar: t,
|
|
9491
|
-
dateStyle:
|
|
9674
|
+
dateStyle: r
|
|
9492
9675
|
};
|
|
9493
9676
|
n && (delete s.dateStyle, s.weekday = "long", s.year = "numeric", s.month = "long", s.day = "numeric");
|
|
9494
9677
|
const l = new Intl.DateTimeFormat(o, s), d = {
|
|
@@ -9516,7 +9699,7 @@ function de(e, t = "gregory", r = {}) {
|
|
|
9516
9699
|
return m;
|
|
9517
9700
|
},
|
|
9518
9701
|
parseParts: (m) => {
|
|
9519
|
-
var y, z,
|
|
9702
|
+
var y, z, k, j;
|
|
9520
9703
|
const g = new Intl.DateTimeFormat(o, {
|
|
9521
9704
|
calendar: t,
|
|
9522
9705
|
year: "numeric",
|
|
@@ -9526,10 +9709,10 @@ function de(e, t = "gregory", r = {}) {
|
|
|
9526
9709
|
}).formatToParts(m);
|
|
9527
9710
|
return {
|
|
9528
9711
|
calendar: t,
|
|
9529
|
-
year: parseInt(((y = g.find((
|
|
9530
|
-
month: parseInt(((z = g.find((
|
|
9531
|
-
day: parseInt(((
|
|
9532
|
-
era: (j = g.find((
|
|
9712
|
+
year: parseInt(((y = g.find((E) => E.type === "year")) == null ? void 0 : y.value) || "0", 10),
|
|
9713
|
+
month: parseInt(((z = g.find((E) => E.type === "month")) == null ? void 0 : z.value) || "0", 10),
|
|
9714
|
+
day: parseInt(((k = g.find((E) => E.type === "day")) == null ? void 0 : k.value) || "0", 10),
|
|
9715
|
+
era: (j = g.find((E) => E.type === "era")) == null ? void 0 : j.value,
|
|
9533
9716
|
gregorianDate: m
|
|
9534
9717
|
};
|
|
9535
9718
|
},
|
|
@@ -9542,8 +9725,8 @@ function de(e, t = "gregory", r = {}) {
|
|
|
9542
9725
|
}
|
|
9543
9726
|
};
|
|
9544
9727
|
}
|
|
9545
|
-
function ce(e, t,
|
|
9546
|
-
return de(
|
|
9728
|
+
function ce(e, t, i = "en") {
|
|
9729
|
+
return de(i, t).parseParts(e);
|
|
9547
9730
|
}
|
|
9548
9731
|
function Dt(e, t = "en") {
|
|
9549
9732
|
return ce(/* @__PURE__ */ new Date(), e, t);
|
|
@@ -9616,7 +9799,7 @@ function Po(e) {
|
|
|
9616
9799
|
const t = At(e);
|
|
9617
9800
|
return t ? e.getFullYear() - t.startDate.getFullYear() + 1 : null;
|
|
9618
9801
|
}
|
|
9619
|
-
const
|
|
9802
|
+
const To = [
|
|
9620
9803
|
"Farvardin",
|
|
9621
9804
|
"Ordibehesht",
|
|
9622
9805
|
"Khordad",
|
|
@@ -9630,7 +9813,7 @@ const xo = [
|
|
|
9630
9813
|
"Bahman",
|
|
9631
9814
|
"Esfand"
|
|
9632
9815
|
];
|
|
9633
|
-
function
|
|
9816
|
+
function xo(e) {
|
|
9634
9817
|
return ((e - 474) % 2820 + 2820) % 2820 * 682 % 2816 < 682;
|
|
9635
9818
|
}
|
|
9636
9819
|
const Pt = [
|
|
@@ -9650,7 +9833,7 @@ const Pt = [
|
|
|
9650
9833
|
function Bo(e) {
|
|
9651
9834
|
return Pt[(e - 4) % 12];
|
|
9652
9835
|
}
|
|
9653
|
-
const
|
|
9836
|
+
const Tt = [
|
|
9654
9837
|
"Jia",
|
|
9655
9838
|
"Yi",
|
|
9656
9839
|
"Bing",
|
|
@@ -9662,26 +9845,26 @@ const xt = [
|
|
|
9662
9845
|
"Ren",
|
|
9663
9846
|
"Gui"
|
|
9664
9847
|
];
|
|
9665
|
-
function
|
|
9666
|
-
return
|
|
9848
|
+
function Mo(e) {
|
|
9849
|
+
return Tt[(e - 4) % 10];
|
|
9667
9850
|
}
|
|
9668
|
-
function
|
|
9669
|
-
const o = t || le[e],
|
|
9670
|
-
() => de(e, o,
|
|
9671
|
-
[e, o,
|
|
9851
|
+
function Fo(e, t, i) {
|
|
9852
|
+
const o = t || le[e], r = b(
|
|
9853
|
+
() => de(e, o, i),
|
|
9854
|
+
[e, o, i]
|
|
9672
9855
|
), a = b(() => V[o], [o]), n = b(() => Dt(o, e), [o, e]);
|
|
9673
9856
|
return {
|
|
9674
9857
|
calendar: o,
|
|
9675
9858
|
info: a,
|
|
9676
9859
|
current: n,
|
|
9677
|
-
format:
|
|
9678
|
-
formatWithEra:
|
|
9679
|
-
getMonthName:
|
|
9680
|
-
getMonthNames:
|
|
9681
|
-
getWeekdayName:
|
|
9682
|
-
getWeekdayNames:
|
|
9683
|
-
parseParts:
|
|
9684
|
-
getEraName:
|
|
9860
|
+
format: r.format,
|
|
9861
|
+
formatWithEra: r.formatWithEra,
|
|
9862
|
+
getMonthName: r.getMonthName,
|
|
9863
|
+
getMonthNames: r.getMonthNames,
|
|
9864
|
+
getWeekdayName: r.getWeekdayName,
|
|
9865
|
+
getWeekdayNames: r.getWeekdayNames,
|
|
9866
|
+
parseParts: r.parseParts,
|
|
9867
|
+
getEraName: r.getEraName,
|
|
9685
9868
|
toCalendar: (s) => ce(s, o, e)
|
|
9686
9869
|
};
|
|
9687
9870
|
}
|
|
@@ -9689,19 +9872,19 @@ function No() {
|
|
|
9689
9872
|
return Object.keys(V);
|
|
9690
9873
|
}
|
|
9691
9874
|
function Ro(e, t = "en") {
|
|
9692
|
-
const
|
|
9875
|
+
const i = { ...V[e] };
|
|
9693
9876
|
try {
|
|
9694
9877
|
const o = D(t), a = new Intl.DisplayNames([o], { type: "calendar" }).of(e);
|
|
9695
|
-
a && (
|
|
9878
|
+
a && (i.displayName = a);
|
|
9696
9879
|
} catch {
|
|
9697
9880
|
}
|
|
9698
|
-
return
|
|
9881
|
+
return i;
|
|
9699
9882
|
}
|
|
9700
9883
|
function Lo(e) {
|
|
9701
|
-
const t = le[e],
|
|
9702
|
-
for (const [o,
|
|
9703
|
-
|
|
9704
|
-
return
|
|
9884
|
+
const t = le[e], i = /* @__PURE__ */ new Set([t]);
|
|
9885
|
+
for (const [o, r] of Object.entries(V))
|
|
9886
|
+
r.associatedLanguages.includes(e) && i.add(o);
|
|
9887
|
+
return i.add("gregory"), Array.from(i);
|
|
9705
9888
|
}
|
|
9706
9889
|
const J = {
|
|
9707
9890
|
// Lowercase
|
|
@@ -9758,7 +9941,7 @@ const J = {
|
|
|
9758
9941
|
X: "Χ",
|
|
9759
9942
|
Y: "Ÿ",
|
|
9760
9943
|
Z: "Ž"
|
|
9761
|
-
},
|
|
9944
|
+
}, xt = {
|
|
9762
9945
|
...J,
|
|
9763
9946
|
// Additional mappings
|
|
9764
9947
|
a: "ặ",
|
|
@@ -9773,35 +9956,35 @@ const J = {
|
|
|
9773
9956
|
O: "Ộ",
|
|
9774
9957
|
U: "Ụ",
|
|
9775
9958
|
Y: "Ỵ"
|
|
9776
|
-
}, Bt = "",
|
|
9959
|
+
}, Bt = "", Mt = "", _ = "", Ft = "~∼~≈";
|
|
9777
9960
|
function Oo(e, t = !1) {
|
|
9778
|
-
const
|
|
9779
|
-
return e.split("").map((o) =>
|
|
9961
|
+
const i = t ? xt : J;
|
|
9962
|
+
return e.split("").map((o) => i[o] || o).join("");
|
|
9780
9963
|
}
|
|
9781
|
-
function Io(e, t = "[",
|
|
9782
|
-
return `${t}${e}${
|
|
9964
|
+
function Io(e, t = "[", i = "]") {
|
|
9965
|
+
return `${t}${e}${i}`;
|
|
9783
9966
|
}
|
|
9784
|
-
function Nt(e, t = 0.3,
|
|
9785
|
-
if (
|
|
9967
|
+
function Nt(e, t = 0.3, i = !1) {
|
|
9968
|
+
if (i)
|
|
9786
9969
|
return Rt(e);
|
|
9787
|
-
const
|
|
9788
|
-
if (
|
|
9970
|
+
const r = Math.ceil(e.length * (1 + t)) - e.length;
|
|
9971
|
+
if (r <= 0)
|
|
9789
9972
|
return e;
|
|
9790
|
-
const a =
|
|
9973
|
+
const a = Ft[0].repeat(r);
|
|
9791
9974
|
return e + a;
|
|
9792
9975
|
}
|
|
9793
9976
|
function Rt(e) {
|
|
9794
9977
|
const t = /* @__PURE__ */ new Set(["a", "e", "i", "o", "u", "A", "E", "I", "O", "U"]);
|
|
9795
|
-
return e.split("").map((
|
|
9978
|
+
return e.split("").map((i) => t.has(i) ? i + i : i).join("");
|
|
9796
9979
|
}
|
|
9797
9980
|
function Lt(e, t = !1) {
|
|
9798
|
-
return t ? `${
|
|
9981
|
+
return t ? `${Mt}${e}${_}` : `${Bt}${e}${_}`;
|
|
9799
9982
|
}
|
|
9800
9983
|
function ue(e, t = {}) {
|
|
9801
9984
|
const {
|
|
9802
|
-
addBrackets:
|
|
9985
|
+
addBrackets: i = !0,
|
|
9803
9986
|
expansionFactor: o = 0.3,
|
|
9804
|
-
addAccents:
|
|
9987
|
+
addAccents: r = !0,
|
|
9805
9988
|
addBidiMarkers: a = !1,
|
|
9806
9989
|
useVowelDoubling: n = !1,
|
|
9807
9990
|
preservePlaceholders: s = !0,
|
|
@@ -9816,16 +9999,16 @@ function ue(e, t = {}) {
|
|
|
9816
9999
|
})), l && (p = p.replace(/<[^>]+>/g, (f) => {
|
|
9817
10000
|
const g = `__PH${m++}__`;
|
|
9818
10001
|
return v.set(g, f), g;
|
|
9819
|
-
})),
|
|
10002
|
+
})), r && (p = Ot(p, v)), o > 0 && (p = Nt(p, o, n)), a && (p = Lt(p)), i && (p = `${d}${p}${u}`);
|
|
9820
10003
|
for (const [f, g] of v.entries())
|
|
9821
10004
|
p = p.replace(f, g);
|
|
9822
10005
|
return p;
|
|
9823
10006
|
}
|
|
9824
10007
|
function Ot(e, t) {
|
|
9825
|
-
const
|
|
10008
|
+
const i = new Set(t.keys());
|
|
9826
10009
|
return e.split("").map((o) => {
|
|
9827
|
-
for (const
|
|
9828
|
-
if (e.includes(
|
|
10010
|
+
for (const r of i)
|
|
10011
|
+
if (e.includes(r) && r.includes(o))
|
|
9829
10012
|
return o;
|
|
9830
10013
|
return J[o] || o;
|
|
9831
10014
|
}).join("");
|
|
@@ -9865,10 +10048,10 @@ function P(e) {
|
|
|
9865
10048
|
}
|
|
9866
10049
|
}
|
|
9867
10050
|
function Vo(e, t) {
|
|
9868
|
-
const
|
|
9869
|
-
for (const [o,
|
|
9870
|
-
|
|
9871
|
-
return
|
|
10051
|
+
const i = {};
|
|
10052
|
+
for (const [o, r] of Object.entries(e))
|
|
10053
|
+
i[o] = ue(r, t);
|
|
10054
|
+
return i;
|
|
9872
10055
|
}
|
|
9873
10056
|
function It(e) {
|
|
9874
10057
|
return /[^\x00-\x7F]/.test(e);
|
|
@@ -9876,50 +10059,50 @@ function It(e) {
|
|
|
9876
10059
|
function Vt(e) {
|
|
9877
10060
|
if (!e || /^[\d.,-]+$/.test(e) || e.startsWith("["))
|
|
9878
10061
|
return !1;
|
|
9879
|
-
const t = /[a-zA-Z]{2,}/.test(e),
|
|
9880
|
-
return t && !
|
|
10062
|
+
const t = /[a-zA-Z]{2,}/.test(e), i = It(e);
|
|
10063
|
+
return t && !i;
|
|
9881
10064
|
}
|
|
9882
10065
|
function Ho(e, t) {
|
|
9883
|
-
const
|
|
10066
|
+
const i = {
|
|
9884
10067
|
totalKeys: Object.keys(e).length,
|
|
9885
10068
|
hardcodedStrings: [],
|
|
9886
10069
|
emptyValues: [],
|
|
9887
10070
|
placeholderMismatches: [],
|
|
9888
10071
|
potentialIssues: 0
|
|
9889
10072
|
};
|
|
9890
|
-
for (const [o,
|
|
9891
|
-
if (!
|
|
9892
|
-
|
|
10073
|
+
for (const [o, r] of Object.entries(e)) {
|
|
10074
|
+
if (!r || r.trim() === "") {
|
|
10075
|
+
i.emptyValues.push(o), i.potentialIssues++;
|
|
9893
10076
|
continue;
|
|
9894
10077
|
}
|
|
9895
|
-
if (Vt(
|
|
9896
|
-
const a = Q(
|
|
9897
|
-
(s.length > 0 || l.length > 0) && (
|
|
10078
|
+
if (Vt(r) && i.hardcodedStrings.push(o), t && t[o]) {
|
|
10079
|
+
const a = Q(r), n = Q(t[o]), s = a.filter((d) => !n.includes(d)), l = n.filter((d) => !a.includes(d));
|
|
10080
|
+
(s.length > 0 || l.length > 0) && (i.placeholderMismatches.push({
|
|
9898
10081
|
key: o,
|
|
9899
10082
|
placeholders: [
|
|
9900
10083
|
...s.map((d) => `-${d}`),
|
|
9901
10084
|
...l.map((d) => `+${d}`)
|
|
9902
10085
|
]
|
|
9903
|
-
}),
|
|
10086
|
+
}), i.potentialIssues++);
|
|
9904
10087
|
}
|
|
9905
10088
|
}
|
|
9906
|
-
return
|
|
10089
|
+
return i;
|
|
9907
10090
|
}
|
|
9908
10091
|
function Q(e) {
|
|
9909
|
-
return (e.match(/\{([^}]+)\}/g) || []).map((
|
|
10092
|
+
return (e.match(/\{([^}]+)\}/g) || []).map((i) => i.replace(/[{}]/g, "").split(",")[0].trim());
|
|
9910
10093
|
}
|
|
9911
10094
|
const pe = I(null);
|
|
9912
|
-
function
|
|
10095
|
+
function qo({
|
|
9913
10096
|
children: e,
|
|
9914
10097
|
initialEnabled: t = !1,
|
|
9915
|
-
initialMode:
|
|
10098
|
+
initialMode: i = "full"
|
|
9916
10099
|
}) {
|
|
9917
|
-
const [o,
|
|
10100
|
+
const [o, r] = T(t), [a, n] = T(i), s = b(() => P(a), [a]), l = b(() => (u) => o ? ue(u, s) : u, [o, s]), d = b(
|
|
9918
10101
|
() => ({
|
|
9919
10102
|
enabled: o,
|
|
9920
10103
|
mode: a,
|
|
9921
10104
|
options: s,
|
|
9922
|
-
toggle: () =>
|
|
10105
|
+
toggle: () => r((u) => !u),
|
|
9923
10106
|
setMode: n,
|
|
9924
10107
|
transform: l
|
|
9925
10108
|
}),
|
|
@@ -9927,7 +10110,7 @@ function Wo({
|
|
|
9927
10110
|
);
|
|
9928
10111
|
return /* @__PURE__ */ O(pe.Provider, { value: d, children: e });
|
|
9929
10112
|
}
|
|
9930
|
-
function
|
|
10113
|
+
function Wo() {
|
|
9931
10114
|
const e = B(pe);
|
|
9932
10115
|
return e || {
|
|
9933
10116
|
enabled: !1,
|
|
@@ -9962,27 +10145,27 @@ class Ht {
|
|
|
9962
10145
|
constructor(t = 0) {
|
|
9963
10146
|
this.cache = /* @__PURE__ */ new Map(), this.ttl = t;
|
|
9964
10147
|
}
|
|
9965
|
-
getCacheKey(t,
|
|
9966
|
-
return
|
|
10148
|
+
getCacheKey(t, i) {
|
|
10149
|
+
return i ? `${t}:${i}` : t;
|
|
9967
10150
|
}
|
|
9968
|
-
get(t,
|
|
9969
|
-
const o = this.getCacheKey(t,
|
|
9970
|
-
return
|
|
10151
|
+
get(t, i) {
|
|
10152
|
+
const o = this.getCacheKey(t, i), r = this.cache.get(o);
|
|
10153
|
+
return r ? this.ttl > 0 && Date.now() > r.expiresAt ? (this.cache.delete(o), null) : r.data : null;
|
|
9971
10154
|
}
|
|
9972
|
-
set(t,
|
|
9973
|
-
const
|
|
9974
|
-
this.cache.set(
|
|
9975
|
-
data:
|
|
10155
|
+
set(t, i, o) {
|
|
10156
|
+
const r = this.getCacheKey(t, o), a = Date.now();
|
|
10157
|
+
this.cache.set(r, {
|
|
10158
|
+
data: i,
|
|
9976
10159
|
loadedAt: a,
|
|
9977
10160
|
expiresAt: this.ttl > 0 ? a + this.ttl : 1 / 0
|
|
9978
10161
|
});
|
|
9979
10162
|
}
|
|
9980
|
-
has(t,
|
|
9981
|
-
return this.get(t,
|
|
10163
|
+
has(t, i) {
|
|
10164
|
+
return this.get(t, i) !== null;
|
|
9982
10165
|
}
|
|
9983
|
-
delete(t,
|
|
9984
|
-
if (
|
|
9985
|
-
this.cache.delete(this.getCacheKey(t,
|
|
10166
|
+
delete(t, i) {
|
|
10167
|
+
if (i)
|
|
10168
|
+
this.cache.delete(this.getCacheKey(t, i));
|
|
9986
10169
|
else
|
|
9987
10170
|
for (const o of this.cache.keys())
|
|
9988
10171
|
(o === t || o.startsWith(`${t}:`)) && this.cache.delete(o);
|
|
@@ -9992,8 +10175,8 @@ class Ht {
|
|
|
9992
10175
|
}
|
|
9993
10176
|
getStats() {
|
|
9994
10177
|
const t = /* @__PURE__ */ new Set();
|
|
9995
|
-
for (const
|
|
9996
|
-
t.add(
|
|
10178
|
+
for (const i of this.cache.keys())
|
|
10179
|
+
t.add(i.split(":")[0]);
|
|
9997
10180
|
return {
|
|
9998
10181
|
size: this.cache.size,
|
|
9999
10182
|
languages: Array.from(t)
|
|
@@ -10003,16 +10186,16 @@ class Ht {
|
|
|
10003
10186
|
function me(e) {
|
|
10004
10187
|
const {
|
|
10005
10188
|
loadFn: t,
|
|
10006
|
-
fallbackLang:
|
|
10189
|
+
fallbackLang: i = "en",
|
|
10007
10190
|
cacheTtl: o = 0,
|
|
10008
|
-
preloadLanguages:
|
|
10191
|
+
preloadLanguages: r = [],
|
|
10009
10192
|
namespaces: a = [],
|
|
10010
10193
|
defaultNamespace: n,
|
|
10011
10194
|
onLoadStart: s,
|
|
10012
10195
|
onLoadComplete: l,
|
|
10013
10196
|
onLoadError: d
|
|
10014
10197
|
} = e, u = new Ht(o), v = /* @__PURE__ */ new Set(), p = /* @__PURE__ */ new Map();
|
|
10015
|
-
let m =
|
|
10198
|
+
let m = i;
|
|
10016
10199
|
const f = /* @__PURE__ */ new Set();
|
|
10017
10200
|
function g() {
|
|
10018
10201
|
const c = z();
|
|
@@ -10023,7 +10206,7 @@ function me(e) {
|
|
|
10023
10206
|
}
|
|
10024
10207
|
function z() {
|
|
10025
10208
|
const c = /* @__PURE__ */ new Set(), h = /* @__PURE__ */ new Set();
|
|
10026
|
-
for (const C of
|
|
10209
|
+
for (const C of x)
|
|
10027
10210
|
u.has(C) && c.add(C);
|
|
10028
10211
|
for (const C of v) {
|
|
10029
10212
|
const N = C.split(":")[0];
|
|
@@ -10036,7 +10219,7 @@ function me(e) {
|
|
|
10036
10219
|
currentLanguage: m
|
|
10037
10220
|
};
|
|
10038
10221
|
}
|
|
10039
|
-
async function
|
|
10222
|
+
async function k(c, h) {
|
|
10040
10223
|
const C = y(c, h), N = u.get(c, h);
|
|
10041
10224
|
if (N)
|
|
10042
10225
|
return N;
|
|
@@ -10052,20 +10235,20 @@ function me(e) {
|
|
|
10052
10235
|
return u.set(c, S, h), l == null || l(c, h), S;
|
|
10053
10236
|
} catch (S) {
|
|
10054
10237
|
const R = S instanceof Error ? S : new Error(String(S));
|
|
10055
|
-
return p.set(c, R), d == null || d(c, R, h), c !==
|
|
10238
|
+
return p.set(c, R), d == null || d(c, R, h), c !== i && !h ? (console.warn(`Failed to load ${c}, falling back to ${i}`), k(i, h)) : null;
|
|
10056
10239
|
} finally {
|
|
10057
10240
|
v.delete(C), g();
|
|
10058
10241
|
}
|
|
10059
10242
|
}
|
|
10060
10243
|
async function j(c) {
|
|
10061
|
-
await Promise.all(c.map((h) =>
|
|
10244
|
+
await Promise.all(c.map((h) => k(h)));
|
|
10062
10245
|
}
|
|
10063
|
-
async function
|
|
10064
|
-
|
|
10065
|
-
|
|
10246
|
+
async function E() {
|
|
10247
|
+
r.length !== 0 && await Promise.allSettled(
|
|
10248
|
+
r.map((c) => a.length > 0 ? Promise.all(a.map((h) => k(c, h))) : k(c))
|
|
10066
10249
|
);
|
|
10067
10250
|
}
|
|
10068
|
-
function
|
|
10251
|
+
function F(c, h) {
|
|
10069
10252
|
return u.get(c, h);
|
|
10070
10253
|
}
|
|
10071
10254
|
function A(c, h) {
|
|
@@ -10084,19 +10267,19 @@ function me(e) {
|
|
|
10084
10267
|
c ? u.delete(c) : u.clear(), g();
|
|
10085
10268
|
}
|
|
10086
10269
|
async function be(c) {
|
|
10087
|
-
A(c) || await
|
|
10270
|
+
A(c) || await k(c), m = c, g();
|
|
10088
10271
|
}
|
|
10089
10272
|
function we() {
|
|
10090
10273
|
return m;
|
|
10091
10274
|
}
|
|
10092
|
-
function
|
|
10275
|
+
function Ee(c) {
|
|
10093
10276
|
return f.add(c), () => f.delete(c);
|
|
10094
10277
|
}
|
|
10095
10278
|
return {
|
|
10096
|
-
loadLanguage:
|
|
10279
|
+
loadLanguage: k,
|
|
10097
10280
|
loadLanguages: j,
|
|
10098
|
-
preloadLanguages:
|
|
10099
|
-
getTranslations:
|
|
10281
|
+
preloadLanguages: E,
|
|
10282
|
+
getTranslations: F,
|
|
10100
10283
|
isLoaded: A,
|
|
10101
10284
|
isLoading: he,
|
|
10102
10285
|
getLoadedLanguages: ve,
|
|
@@ -10104,14 +10287,14 @@ function me(e) {
|
|
|
10104
10287
|
getState: z,
|
|
10105
10288
|
setLanguage: be,
|
|
10106
10289
|
getCurrentLanguage: we,
|
|
10107
|
-
subscribe:
|
|
10290
|
+
subscribe: Ee
|
|
10108
10291
|
};
|
|
10109
10292
|
}
|
|
10110
10293
|
function Ko(e, t) {
|
|
10111
10294
|
return me({
|
|
10112
10295
|
...t,
|
|
10113
|
-
loadFn: async (
|
|
10114
|
-
const
|
|
10296
|
+
loadFn: async (i, o) => {
|
|
10297
|
+
const r = o ? `${e}/${i}/${o}.json` : `${e}/${i}.json`, a = await fetch(r);
|
|
10115
10298
|
if (!a.ok)
|
|
10116
10299
|
throw new Error(`Failed to load translations: ${a.status}`);
|
|
10117
10300
|
return a.json();
|
|
@@ -10121,21 +10304,21 @@ function Ko(e, t) {
|
|
|
10121
10304
|
function Go(e, t) {
|
|
10122
10305
|
return me({
|
|
10123
10306
|
...t,
|
|
10124
|
-
loadFn: async (
|
|
10307
|
+
loadFn: async (i, o) => (await e(i, o)).default
|
|
10125
10308
|
});
|
|
10126
10309
|
}
|
|
10127
10310
|
const ge = I(null);
|
|
10128
10311
|
function Zo({
|
|
10129
10312
|
children: e,
|
|
10130
10313
|
loader: t,
|
|
10131
|
-
initialLanguage:
|
|
10314
|
+
initialLanguage: i,
|
|
10132
10315
|
namespace: o
|
|
10133
10316
|
}) {
|
|
10134
|
-
const [
|
|
10317
|
+
const [r, a] = T(() => t.getState()), [n, s] = T(null);
|
|
10135
10318
|
L(() => t.subscribe(a), [t]), L(() => {
|
|
10136
|
-
|
|
10137
|
-
}, [t,
|
|
10138
|
-
const l = b(() => t.getTranslations(
|
|
10319
|
+
i && !t.isLoaded(i, o) && t.loadLanguage(i, o).catch(s);
|
|
10320
|
+
}, [t, i, o]);
|
|
10321
|
+
const l = b(() => t.getTranslations(r.currentLanguage, o) || {}, [t, r.currentLanguage, o]), d = ee(
|
|
10139
10322
|
async (v) => {
|
|
10140
10323
|
s(null);
|
|
10141
10324
|
try {
|
|
@@ -10149,27 +10332,27 @@ function Zo({
|
|
|
10149
10332
|
() => ({
|
|
10150
10333
|
loader: t,
|
|
10151
10334
|
translations: l,
|
|
10152
|
-
isLoading:
|
|
10335
|
+
isLoading: r.loadingLanguages.size > 0,
|
|
10153
10336
|
error: n,
|
|
10154
10337
|
setLanguage: d,
|
|
10155
|
-
currentLanguage:
|
|
10156
|
-
loadedLanguages: Array.from(
|
|
10338
|
+
currentLanguage: r.currentLanguage,
|
|
10339
|
+
loadedLanguages: Array.from(r.loadedLanguages)
|
|
10157
10340
|
}),
|
|
10158
|
-
[t, l,
|
|
10341
|
+
[t, l, r, n, d]
|
|
10159
10342
|
);
|
|
10160
10343
|
return /* @__PURE__ */ O(ge.Provider, { value: u, children: e });
|
|
10161
10344
|
}
|
|
10162
|
-
function
|
|
10345
|
+
function qt() {
|
|
10163
10346
|
const e = B(ge);
|
|
10164
10347
|
if (!e)
|
|
10165
10348
|
throw new Error("useDynamicI18n must be used within DynamicI18nProvider");
|
|
10166
10349
|
return e;
|
|
10167
10350
|
}
|
|
10168
10351
|
function Jo(e) {
|
|
10169
|
-
const { translations: t, currentLanguage:
|
|
10352
|
+
const { translations: t, currentLanguage: i, loader: o, isLoading: r } = qt();
|
|
10170
10353
|
return L(() => {
|
|
10171
|
-
e && !o.isLoaded(
|
|
10172
|
-
}, [o,
|
|
10354
|
+
e && !o.isLoaded(i, e) && o.loadLanguage(i, e);
|
|
10355
|
+
}, [o, i, e]), { t: ee(
|
|
10173
10356
|
(n, s) => {
|
|
10174
10357
|
let l = t[n] || n;
|
|
10175
10358
|
if (s)
|
|
@@ -10178,10 +10361,10 @@ function Jo(e) {
|
|
|
10178
10361
|
return l;
|
|
10179
10362
|
},
|
|
10180
10363
|
[t]
|
|
10181
|
-
), isLoading:
|
|
10364
|
+
), isLoading: r, currentLanguage: i };
|
|
10182
10365
|
}
|
|
10183
|
-
function
|
|
10184
|
-
switch (
|
|
10366
|
+
function Xo(e, t, i) {
|
|
10367
|
+
switch (i) {
|
|
10185
10368
|
case "immediate":
|
|
10186
10369
|
e.loadLanguages(t);
|
|
10187
10370
|
break;
|
|
@@ -10211,17 +10394,17 @@ function Yo(e, t, r) {
|
|
|
10211
10394
|
}
|
|
10212
10395
|
}
|
|
10213
10396
|
}
|
|
10214
|
-
async function
|
|
10215
|
-
const { fallback:
|
|
10397
|
+
async function Yo(e, t) {
|
|
10398
|
+
const { fallback: i = "en", preferredLanguages: o = [] } = t || {};
|
|
10216
10399
|
for (const a of o)
|
|
10217
|
-
if (
|
|
10400
|
+
if (x.includes(a))
|
|
10218
10401
|
return await e.setLanguage(a), a;
|
|
10219
|
-
const
|
|
10220
|
-
return
|
|
10402
|
+
const r = navigator.language.split("-")[0].toLowerCase();
|
|
10403
|
+
return x.includes(r) ? (await e.setLanguage(r), r) : (await e.setLanguage(i), i);
|
|
10221
10404
|
}
|
|
10222
10405
|
export {
|
|
10223
10406
|
V as CALENDAR_INFO,
|
|
10224
|
-
|
|
10407
|
+
Tt as CELESTIAL_STEMS,
|
|
10225
10408
|
Pt as CHINESE_ZODIAC,
|
|
10226
10409
|
le as DEFAULT_CALENDAR,
|
|
10227
10410
|
Zo as DynamicI18nProvider,
|
|
@@ -10232,13 +10415,13 @@ export {
|
|
|
10232
10415
|
ae as NICE_GLOSSARY,
|
|
10233
10416
|
w as NICE_I18N_DICTIONARIES,
|
|
10234
10417
|
$e as NICE_I18N_VARIANTS,
|
|
10235
|
-
|
|
10418
|
+
x as NICE_SUPPORTED_LANGS,
|
|
10236
10419
|
Gt as NiceI18nProvider,
|
|
10237
|
-
|
|
10420
|
+
To as PERSIAN_MONTHS,
|
|
10238
10421
|
Uo as PSEUDO_PRESETS,
|
|
10239
|
-
|
|
10240
|
-
|
|
10241
|
-
|
|
10422
|
+
qo as PseudoLocalizationProvider,
|
|
10423
|
+
io as RTLProvider,
|
|
10424
|
+
q as RTL_CSS_VARS,
|
|
10242
10425
|
at as RTL_LANGUAGES,
|
|
10243
10426
|
ne as TIMEZONE_GROUPS,
|
|
10244
10427
|
Oo as addAccents,
|
|
@@ -10259,24 +10442,24 @@ export {
|
|
|
10259
10442
|
vt as createTimeFormatter,
|
|
10260
10443
|
Ct as createTimezoneFormatter,
|
|
10261
10444
|
Jt as createTranslator,
|
|
10262
|
-
|
|
10263
|
-
|
|
10445
|
+
Yo as detectAndLoad,
|
|
10446
|
+
Yt as detectBrowserLanguage,
|
|
10264
10447
|
Vt as detectHardcodedText,
|
|
10265
10448
|
Z as detectTimezone,
|
|
10266
10449
|
Nt as expandText,
|
|
10267
10450
|
vo as findSimilarTranslation,
|
|
10268
10451
|
dt as flipAlignment,
|
|
10269
10452
|
oo as flipHorizontal,
|
|
10270
|
-
|
|
10271
|
-
|
|
10453
|
+
rt as formatICU,
|
|
10454
|
+
Xt as formatMessage,
|
|
10272
10455
|
zt as fromUTC,
|
|
10273
10456
|
uo as generateCoverageReport,
|
|
10274
10457
|
co as generateTranslationCode,
|
|
10275
|
-
|
|
10458
|
+
Eo as getAllTimezones,
|
|
10276
10459
|
mt as getAllTranslationStats,
|
|
10277
10460
|
No as getAvailableCalendars,
|
|
10278
10461
|
Ro as getCalendarInfo,
|
|
10279
|
-
|
|
10462
|
+
Mo as getCelestialStem,
|
|
10280
10463
|
Bo as getChineseZodiac,
|
|
10281
10464
|
Dt as getCurrentCalendarDate,
|
|
10282
10465
|
to as getDocumentDirection,
|
|
@@ -10288,27 +10471,27 @@ export {
|
|
|
10288
10471
|
ct as getLogicalProperty,
|
|
10289
10472
|
ut as getMissingTranslations,
|
|
10290
10473
|
yo as getNextDSTTransition,
|
|
10291
|
-
|
|
10474
|
+
ie as getOrdinalCategory,
|
|
10292
10475
|
oe as getPluralCategory,
|
|
10293
10476
|
P as getPseudoLocalizationPreset,
|
|
10294
10477
|
so as getRTLCSSVars,
|
|
10295
10478
|
Lo as getRecommendedCalendars,
|
|
10296
10479
|
lo as getSourceKeys,
|
|
10297
10480
|
nt as getTextDirection,
|
|
10298
|
-
|
|
10299
|
-
|
|
10481
|
+
M as getTimezoneInfo,
|
|
10482
|
+
ko as getTimezonesGrouped,
|
|
10300
10483
|
pt as getTranslationStats,
|
|
10301
|
-
|
|
10484
|
+
W as isDSTActive,
|
|
10302
10485
|
Ao as isHebrewLeapYear,
|
|
10303
10486
|
jt as isHijriLeapYear,
|
|
10304
|
-
|
|
10305
|
-
|
|
10487
|
+
xo as isPersianLeapYear,
|
|
10488
|
+
re as isRTLLanguage,
|
|
10306
10489
|
Qe as isSupported,
|
|
10307
10490
|
wo as isValidTimezone,
|
|
10308
|
-
|
|
10491
|
+
Et as lookupGlossary,
|
|
10309
10492
|
Qt as ordinal,
|
|
10310
10493
|
_t as plural,
|
|
10311
|
-
|
|
10494
|
+
Xo as preloadWithStrategy,
|
|
10312
10495
|
ue as pseudoLocalize,
|
|
10313
10496
|
Vo as pseudoLocalizeDictionary,
|
|
10314
10497
|
Kt as resolvePlVariant,
|
|
@@ -10317,8 +10500,8 @@ export {
|
|
|
10317
10500
|
st as setDocumentDirection,
|
|
10318
10501
|
ce as toCalendar,
|
|
10319
10502
|
yt as toUTC,
|
|
10320
|
-
|
|
10321
|
-
|
|
10503
|
+
Fo as useCalendar,
|
|
10504
|
+
qt as useDynamicI18n,
|
|
10322
10505
|
Jo as useDynamicTranslation,
|
|
10323
10506
|
ao as useIsRTL,
|
|
10324
10507
|
ho as useNiceCurrencyFormat,
|
|
@@ -10326,8 +10509,8 @@ export {
|
|
|
10326
10509
|
go as useNiceNumberFormat,
|
|
10327
10510
|
mo as useNiceTimeFormat,
|
|
10328
10511
|
Zt as useNiceTranslation,
|
|
10329
|
-
|
|
10330
|
-
|
|
10512
|
+
Wo as usePseudoLocalization,
|
|
10513
|
+
ro as useRTL,
|
|
10331
10514
|
zo as useTimezone,
|
|
10332
10515
|
bo as validateAgainstGlossary
|
|
10333
10516
|
};
|