execonvert 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +79 -0
- package/README.md +194 -0
- package/THIRD_PARTY_NOTICES.md +42 -0
- package/bin/execonvert.js +21 -0
- package/dist/cli/app/public/THIRD_PARTY_NOTICES.md +32 -0
- package/dist/cli/app/public/base.elpx +0 -0
- package/dist/cli/app/public/exe_math_assets.zip +0 -0
- package/dist/cli/app/public/exelearning/app/common/common_i18n.js +79 -0
- package/dist/cli/app/public/exelearning/app/common/exe_powered_logo/exe_powered_logo.png +0 -0
- package/dist/cli/app/public/exelearning/app/common/i18n/common_i18n.ca.js +79 -0
- package/dist/cli/app/public/exelearning/app/common/i18n/common_i18n.de.js +79 -0
- package/dist/cli/app/public/exelearning/app/common/i18n/common_i18n.en.js +79 -0
- package/dist/cli/app/public/exelearning/app/common/i18n/common_i18n.eo.js +79 -0
- package/dist/cli/app/public/exelearning/app/common/i18n/common_i18n.es.js +79 -0
- package/dist/cli/app/public/exelearning/app/common/i18n/common_i18n.eu.js +79 -0
- package/dist/cli/app/public/exelearning/app/common/i18n/common_i18n.gl.js +79 -0
- package/dist/cli/app/public/exelearning/app/common/i18n/common_i18n.it.js +79 -0
- package/dist/cli/app/public/exelearning/app/common/i18n/common_i18n.pt.js +79 -0
- package/dist/cli/app/public/exelearning/app/common/i18n/common_i18n.ro.js +79 -0
- package/dist/cli/app/public/exelearning/app/common/i18n/common_i18n.va.js +79 -0
- package/dist/cli/app/public/exelearning/bundles/common.zip +0 -0
- package/dist/cli/app/public/exelearning/bundles/content-css.zip +0 -0
- package/dist/cli/app/public/exelearning/bundles/idevices.zip +0 -0
- package/dist/cli/app/public/exelearning/bundles/libs.zip +0 -0
- package/dist/cli/app/public/exelearning/bundles/manifest.json +110 -0
- package/dist/cli/app/public/exelearning/bundles/themes/base.zip +0 -0
- package/dist/cli/app/public/exelearning/bundles/themes/flux.zip +0 -0
- package/dist/cli/app/public/exelearning/bundles/themes/neo.zip +0 -0
- package/dist/cli/app/public/exelearning/bundles/themes/nova.zip +0 -0
- package/dist/cli/app/public/exelearning/bundles/themes/universal.zip +0 -0
- package/dist/cli/app/public/exelearning/bundles/themes/zen.zip +0 -0
- package/dist/cli/app/public/exelearning/exporters.bundle.js +12638 -0
- package/dist/cli/app/public/exelearning/importers.bundle.js +14061 -0
- package/dist/cli/app/public/exelearning/runtime-source.json +10 -0
- package/dist/cli/app/public/favicon.svg +11 -0
- package/dist/cli/app/public/idevices/text/text.css +16 -0
- package/dist/cli/app/public/idevices/text/text.html +3 -0
- package/dist/cli/app/public/idevices/text/text.js +291 -0
- package/dist/cli/app/public/info/cli.html +955 -0
- package/dist/cli/app/public/info/docx.svg +7 -0
- package/dist/cli/app/public/info/elpx-icon.png +0 -0
- package/dist/cli/app/public/info/exe-old.png +0 -0
- package/dist/cli/app/public/info/execonvert-cli-icon.svg +16 -0
- package/dist/cli/app/public/info/execonvert-icon.svg +11 -0
- package/dist/cli/app/public/info/index.html +723 -0
- package/dist/cli/app/public/info/markdown.svg +1 -0
- package/dist/cli/app/public/info/pdf.svg +14 -0
- package/dist/cli/app/public/libs/exe_math/LICENSE +202 -0
- package/dist/cli/app/public/libs/exe_math/a11y/assistive-mml.js +1 -0
- package/dist/cli/app/public/libs/exe_math/a11y/complexity.js +1 -0
- package/dist/cli/app/public/libs/exe_math/a11y/explorer.js +1 -0
- package/dist/cli/app/public/libs/exe_math/a11y/semantic-enrich.js +1 -0
- package/dist/cli/app/public/libs/exe_math/a11y/speech.js +1 -0
- package/dist/cli/app/public/libs/exe_math/a11y/sre.js +1 -0
- package/dist/cli/app/public/libs/exe_math/adaptors/jsdom.js +1 -0
- package/dist/cli/app/public/libs/exe_math/adaptors/linkedom.js +1 -0
- package/dist/cli/app/public/libs/exe_math/adaptors/liteDOM.js +1 -0
- package/dist/cli/app/public/libs/exe_math/core.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/asciimath.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/mml/entities.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/mml/extensions/mml3.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/mml/extensions/mml3.sef.json +1 -0
- package/dist/cli/app/public/libs/exe_math/input/mml.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/action.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/ams.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/amscd.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/autoload.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/bbm.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/bboldx.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/bbox.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/begingroup.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/boldsymbol.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/braket.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/bussproofs.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/cancel.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/cases.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/centernot.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/color.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/colortbl.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/colorv2.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/configmacros.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/dsfont.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/empheq.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/enclose.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/extpfeil.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/gensymb.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/html.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/mathtools.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/mhchem.js +34 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/newcommand.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/noerrors.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/noundefined.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/physics.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/require.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/setoptions.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/tagformat.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/texhtml.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/textcomp.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/textmacros.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/unicode.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/units.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/upgreek.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex/extensions/verb.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex-base.js +1 -0
- package/dist/cli/app/public/libs/exe_math/input/tex.js +1 -0
- package/dist/cli/app/public/libs/exe_math/loader.js +1 -0
- package/dist/cli/app/public/libs/exe_math/output/chtml.js +1 -0
- package/dist/cli/app/public/libs/exe_math/output/svg.js +1 -0
- package/dist/cli/app/public/libs/exe_math/sre/mathmaps/af.json +146 -0
- package/dist/cli/app/public/libs/exe_math/sre/mathmaps/base.json +137 -0
- package/dist/cli/app/public/libs/exe_math/sre/mathmaps/ca.json +140 -0
- package/dist/cli/app/public/libs/exe_math/sre/mathmaps/da.json +140 -0
- package/dist/cli/app/public/libs/exe_math/sre/mathmaps/de.json +146 -0
- package/dist/cli/app/public/libs/exe_math/sre/mathmaps/en.json +158 -0
- package/dist/cli/app/public/libs/exe_math/sre/mathmaps/es.json +140 -0
- package/dist/cli/app/public/libs/exe_math/sre/mathmaps/euro.json +32 -0
- package/dist/cli/app/public/libs/exe_math/sre/mathmaps/fr.json +146 -0
- package/dist/cli/app/public/libs/exe_math/sre/mathmaps/hi.json +146 -0
- package/dist/cli/app/public/libs/exe_math/sre/mathmaps/it.json +146 -0
- package/dist/cli/app/public/libs/exe_math/sre/mathmaps/ko.json +146 -0
- package/dist/cli/app/public/libs/exe_math/sre/mathmaps/nb.json +146 -0
- package/dist/cli/app/public/libs/exe_math/sre/mathmaps/nemeth.json +125 -0
- package/dist/cli/app/public/libs/exe_math/sre/mathmaps/nn.json +146 -0
- package/dist/cli/app/public/libs/exe_math/sre/mathmaps/sv.json +146 -0
- package/dist/cli/app/public/libs/exe_math/sre/require.d.mts +1 -0
- package/dist/cli/app/public/libs/exe_math/sre/require.mjs +2 -0
- package/dist/cli/app/public/libs/exe_math/sre/speech-worker.js +1 -0
- package/dist/cli/app/public/libs/exe_math/startup.js +1 -0
- package/dist/cli/app/public/libs/exe_math/tex-mml-svg.js +1 -0
- package/dist/cli/app/public/libs/exe_math/ui/lazy.js +1 -0
- package/dist/cli/app/public/libs/exe_math/ui/menu.js +1 -0
- package/dist/cli/app/public/libs/exe_math/ui/safe.js +1 -0
- package/dist/cli/cli/execonvert.js +807 -0
- package/dist/cli/cli/runtime.js +237 -0
- package/dist/cli/package.json +3 -0
- package/dist/cli/src/converter.js +5078 -0
- package/dist/cli/src/docx-import.js +1121 -0
- package/dist/cli/src/elpx-markdown.js +201 -0
- package/dist/cli/src/i18n.js +485 -0
- package/dist/cli/src/index.js +1 -0
- package/dist/cli/src/legacy-elp.js +846 -0
- package/dist/cli/src/markdown-import.js +26 -0
- package/package.json +68 -0
|
@@ -0,0 +1,485 @@
|
|
|
1
|
+
const STORAGE_KEY = 'execonvert.locale';
|
|
2
|
+
const dictionaries = {
|
|
3
|
+
es: {
|
|
4
|
+
'lang.label': 'Idioma',
|
|
5
|
+
'lang.es': 'Español',
|
|
6
|
+
'lang.ca': 'Català',
|
|
7
|
+
'lang.en': 'English',
|
|
8
|
+
'app.heroAria': 'Cabecera de la aplicación',
|
|
9
|
+
'app.subtitle': 'Conversor para eXeLearning',
|
|
10
|
+
'app.lede': 'Convierte archivos <code>.elp</code> y <code>.elpx</code> a <code>.docx</code>, <code>.pdf</code> o <code>.md</code>, y también importa <code>.docx</code> o <code>.md</code> a <code>.elpx</code>.',
|
|
11
|
+
'app.infographicLink': 'Ver infografía',
|
|
12
|
+
'app.cliLink': 'Usar la versión CLI',
|
|
13
|
+
'app.cliLinkHelp': 'Para terminal y automatización',
|
|
14
|
+
'panel.conversion': 'Conversión',
|
|
15
|
+
'drop.title': 'Suelta aquí un archivo o selecciónalo',
|
|
16
|
+
'drop.help': 'Archivos compatibles: <code>.elp</code>, <code>.elpx</code>, <code>.docx</code> y <code>.md</code>.',
|
|
17
|
+
'button.openFile': 'Abrir archivo',
|
|
18
|
+
'file.none': 'Ningún archivo seleccionado.',
|
|
19
|
+
'detected.title': 'Conversión detectada',
|
|
20
|
+
'output.title': 'Convertir a',
|
|
21
|
+
'output.aria': 'Formato de salida',
|
|
22
|
+
'output.elpx': 'Proyecto eXeLearning (.elpx)',
|
|
23
|
+
'output.docx': 'Documento Word (.docx)',
|
|
24
|
+
'output.pdf': 'Documento PDF (.pdf)',
|
|
25
|
+
'output.md': 'Markdown (.md)',
|
|
26
|
+
'legacySave.title': 'Guardar también el ELPX',
|
|
27
|
+
'legacySave.include': 'Descargar el archivo .elpx intermedio antes de seguir',
|
|
28
|
+
'legacySave.help': 'Útil si quieres conservar el proyecto actualizado y además exportarlo a Word o Markdown.',
|
|
29
|
+
'pages.title': 'Páginas a exportar',
|
|
30
|
+
'pages.all': 'Todas',
|
|
31
|
+
'pages.none': 'Ninguna',
|
|
32
|
+
'pages.help': 'Modo jerárquico normalizado: si falta una página padre seleccionada, sus hijas pasan a raíz.',
|
|
33
|
+
'pages.help.loading': 'Cargando páginas...',
|
|
34
|
+
'pages.help.readError': 'No se ha podido leer la estructura de páginas. Se exportará todo el contenido.',
|
|
35
|
+
'pages.help.noneDetected': 'No se han detectado páginas seleccionables. Se exportará todo el contenido.',
|
|
36
|
+
'pages.help.summary': '{selected} de {total} páginas seleccionadas. Modo jerárquico normalizado: si falta una página padre seleccionada, sus hijas pasan a raíz.',
|
|
37
|
+
'structure.title': 'Estructura de páginas',
|
|
38
|
+
'structure.level': 'Nivel',
|
|
39
|
+
'structure.target': 'Destino',
|
|
40
|
+
'structure.heading1': 'Título 1',
|
|
41
|
+
'structure.heading2': 'Título 2',
|
|
42
|
+
'structure.heading3': 'Título 3',
|
|
43
|
+
'structure.heading4': 'Título 4',
|
|
44
|
+
'structure.h1.page': 'Página',
|
|
45
|
+
'structure.h1.resource': 'Título del recurso',
|
|
46
|
+
'structure.block': 'iDevice de texto',
|
|
47
|
+
'structure.subpage': 'Subpágina',
|
|
48
|
+
'structure.h1.forcedPage': 'Página (obligatorio)',
|
|
49
|
+
'structure.disabledNested': 'Subtítulo dentro del iDevice actual',
|
|
50
|
+
'structure.help.chain': 'Cada nivel solo puede crear subpáginas cuando el nivel inmediatamente anterior también se usa como subpágina.',
|
|
51
|
+
'structure.help.shift': 'Si <code>Título 1</code> se usa como <em>Título del recurso</em>, el resto de encabezados se interpreta subiendo un nivel.',
|
|
52
|
+
'mdImages.title': 'Imágenes al exportar Markdown',
|
|
53
|
+
'mdImages.include': 'Incluir imágenes embebidas en el archivo Markdown',
|
|
54
|
+
'mdImages.help': 'Por defecto se omiten para generar un <code>.md</code> más limpio.',
|
|
55
|
+
'button.preview': 'Previsualizar',
|
|
56
|
+
'button.save': 'Guardar archivo',
|
|
57
|
+
'button.saveElpx': 'Guardar .elpx',
|
|
58
|
+
'button.saveDocx': 'Guardar .docx',
|
|
59
|
+
'button.savePdf': 'Guardar .pdf',
|
|
60
|
+
'button.saveMd': 'Guardar .md',
|
|
61
|
+
'button.close': 'Cerrar',
|
|
62
|
+
'button.working': 'Trabajando...',
|
|
63
|
+
'actions.previewRequired': 'Para guardar en Word, PDF o Markdown, primero pulsa Previsualizar.',
|
|
64
|
+
'status.idle': 'Carga un archivo para que la aplicación detecte automáticamente la conversión disponible.',
|
|
65
|
+
'status.selectFileFirst': 'Selecciona antes un archivo compatible.',
|
|
66
|
+
'status.previewReady': 'Vista previa generada. Si te convence, pulsa Guardar archivo.',
|
|
67
|
+
'status.previewFirst': 'Primero genera la vista previa con la configuración actual.',
|
|
68
|
+
'status.unsupported': 'Formato no compatible. Usa un archivo .elp, .elpx, .docx o .md.',
|
|
69
|
+
'status.docxDetected': 'Archivo DOCX detectado. Revisa la estructura de páginas y pulsa convertir.',
|
|
70
|
+
'status.mdDetected': 'Archivo Markdown detectado. Revisa la estructura de páginas y pulsa convertir.',
|
|
71
|
+
'status.elpDetected': 'Archivo ELP detectado. Se convertirá primero a ELPX y después podrás guardarlo o continuar a otro formato.',
|
|
72
|
+
'status.elpxDetected': 'Archivo ELPX detectado. Elige formato y páginas, y pulsa convertir.',
|
|
73
|
+
'status.readingPages': 'Leyendo estructura de páginas del ELPX...',
|
|
74
|
+
'status.generatingElpxPreview': 'Generando vista previa del ELPX...',
|
|
75
|
+
'status.popupBlocked': 'No se pudo abrir la ventana de vista previa (bloqueador de ventanas emergentes).',
|
|
76
|
+
'status.errorPrefix': 'Error: {message}',
|
|
77
|
+
'detected.docxToElpx': 'Se importará el archivo <code>.docx</code> para generar un proyecto <code>.elpx</code>.',
|
|
78
|
+
'detected.docxToElpxDone': 'Se importó el archivo <code>.docx</code> para generar un proyecto <code>.elpx</code>.',
|
|
79
|
+
'detected.mdToElpx': 'Se importará el archivo <code>.md</code> para generar un proyecto <code>.elpx</code>.',
|
|
80
|
+
'detected.mdToElpxDone': 'Se importó el archivo <code>.md</code> para generar un proyecto <code>.elpx</code>.',
|
|
81
|
+
'detected.elpToElpx': 'Se convertirá el archivo <code>.elp</code> a <code>.elpx</code>.',
|
|
82
|
+
'detected.elpToElpxDone': 'Se convirtió el archivo <code>.elp</code> a <code>.elpx</code>.',
|
|
83
|
+
'detected.elpToMd': 'Se convertirá el archivo <code>.elp</code> a <code>.elpx</code> y luego a <code>.md</code>.',
|
|
84
|
+
'detected.elpToMdDone': 'Se convirtió el archivo <code>.elp</code> a <code>.elpx</code> y luego a <code>.md</code>.',
|
|
85
|
+
'detected.elpToPdf': 'Se convertirá el archivo <code>.elp</code> a <code>.elpx</code> y luego a <code>.pdf</code>.',
|
|
86
|
+
'detected.elpToPdfDone': 'Se convirtió el archivo <code>.elp</code> a <code>.elpx</code> y luego a <code>.pdf</code>.',
|
|
87
|
+
'detected.elpToDocx': 'Se convertirá el archivo <code>.elp</code> a <code>.elpx</code> y luego a <code>.docx</code>.',
|
|
88
|
+
'detected.elpToDocxDone': 'Se convirtió el archivo <code>.elp</code> a <code>.elpx</code> y luego a <code>.docx</code>.',
|
|
89
|
+
'detected.elpxToMd': 'Se exportará el archivo <code>.elpx</code> a <code>.md</code>.',
|
|
90
|
+
'detected.elpxToMdDone': 'Se exportó el archivo <code>.elpx</code> a <code>.md</code>.',
|
|
91
|
+
'detected.elpxToPdf': 'Se exportará el archivo <code>.elpx</code> a <code>.pdf</code>.',
|
|
92
|
+
'detected.elpxToPdfDone': 'Se exportó el archivo <code>.elpx</code> a <code>.pdf</code>.',
|
|
93
|
+
'detected.elpxToDocx': 'Se exportará el archivo <code>.elpx</code> a <code>.docx</code>.',
|
|
94
|
+
'detected.elpxToDocxDone': 'Se exportó el archivo <code>.elpx</code> a <code>.docx</code>.',
|
|
95
|
+
'done.import.withDialog': '{source} completada. Se han creado {pages} páginas y {blocks} iDevices.',
|
|
96
|
+
'done.import.download': '{source} completada. Se han creado {pages} páginas y {blocks} iDevices con descarga estándar.',
|
|
97
|
+
'done.export.withDialog': 'Conversión a {format} completada. Se han procesado {pages} páginas.',
|
|
98
|
+
'done.export.download': 'Conversión a {format} completada. Se han procesado {pages} páginas y se ha usado la descarga estándar.',
|
|
99
|
+
'done.export.pdfDialog': 'Se ha abierto la vista de impresión para guardarla como PDF. Se han procesado {pages} páginas.',
|
|
100
|
+
'done.savedIntermediateElpxDialog': 'El archivo .elpx intermedio se ha guardado.',
|
|
101
|
+
'done.savedIntermediateElpxDownload': 'El archivo .elpx intermedio se ha descargado.',
|
|
102
|
+
'source.docxImport': 'Importación DOCX',
|
|
103
|
+
'source.elpImport': 'Conversión ELP legacy',
|
|
104
|
+
'source.mdImport': 'Importación Markdown',
|
|
105
|
+
'format.markdown': 'Markdown',
|
|
106
|
+
'format.pdf': 'PDF',
|
|
107
|
+
'format.docx': 'DOCX',
|
|
108
|
+
'error.selectAtLeastOnePage': 'Selecciona al menos una página para exportar.',
|
|
109
|
+
'error.saveCancelled': 'Guardado cancelado por el usuario.',
|
|
110
|
+
'preview.title': 'Vista previa',
|
|
111
|
+
'preview.openWindow': 'Abrir en ventana',
|
|
112
|
+
'preview.help': 'Revisa el resultado antes de guardar. Si cambias opciones o páginas, vuelve a previsualizar.',
|
|
113
|
+
'preview.markdownMode': 'Vista del Markdown',
|
|
114
|
+
'preview.markdownFormatted': 'Cómo se verá',
|
|
115
|
+
'preview.markdownSource': 'Texto Markdown',
|
|
116
|
+
'preview.generating': 'Generando previsualización. Según el archivo original, este proceso puede tardar unos minutos.',
|
|
117
|
+
'preview.stale': 'Pulsa Previsualizar para ver la vista previa correcta.',
|
|
118
|
+
'preview.iframeTitle': 'Vista previa del resultado',
|
|
119
|
+
'preview.pagedFrameTitle': 'Vista previa del ELPX',
|
|
120
|
+
'save.type.elpx': 'Proyecto de eXeLearning',
|
|
121
|
+
'save.type.md': 'Documento Markdown',
|
|
122
|
+
'save.type.pdf': 'Documento PDF',
|
|
123
|
+
'save.type.docx': 'Documento de Word',
|
|
124
|
+
'footer.version': 'Versión {version} · ©',
|
|
125
|
+
'footer.license': 'Licencia AGPLv3',
|
|
126
|
+
'footer.repo': 'Repositorio GitHub',
|
|
127
|
+
'footer.issues': 'Problemas y sugerencias',
|
|
128
|
+
'footer.analytics.visits': 'Visitas',
|
|
129
|
+
'footer.analytics.today': 'Hoy',
|
|
130
|
+
'footer.analytics.details': 'Estadísticas',
|
|
131
|
+
'footer.note.independent': 'Proyecto independiente. No está afiliado ni avalado oficialmente por eXeLearning o INTEF.',
|
|
132
|
+
'footer.note.analyticsLink': 'Privacidad',
|
|
133
|
+
'footer.note.analytics': 'Esta aplicación recoge únicamente estadísticas de uso agregadas con un sistema propio para conocer su utilización y mejorar la herramienta. No se almacenan direcciones IP ni se usan cookies de analítica para los visitantes.',
|
|
134
|
+
'footer.note.thirdParty': 'Este proyecto reutiliza recursos de eXeLearning para compatibilidad con <code>.elpx</code>. Consulta las atribuciones en',
|
|
135
|
+
'progress.readElpx': 'Leyendo el archivo .elpx...',
|
|
136
|
+
'progress.readElp': 'Leyendo el archivo .elp...',
|
|
137
|
+
'progress.parseLegacyElp': 'Interpretando contentv3.xml...',
|
|
138
|
+
'progress.renameElp': 'Renombrando el archivo legacy a .elpx...',
|
|
139
|
+
'progress.parseContentXml': 'Analizando content.xml...',
|
|
140
|
+
'progress.filterPages': 'Aplicando selección de páginas...',
|
|
141
|
+
'progress.renderHtml': 'Generando HTML intermedio...',
|
|
142
|
+
'progress.generateDocx': 'Generando el documento .docx...',
|
|
143
|
+
'progress.readDocx': 'Leyendo el archivo .docx...',
|
|
144
|
+
'progress.parseDocxStyles': 'Analizando estilos y contenido del DOCX...',
|
|
145
|
+
'progress.parseDocumentStructure': 'Interpretando la estructura del documento...',
|
|
146
|
+
'progress.parseMarkdownStructure': 'Interpretando la estructura del Markdown...',
|
|
147
|
+
'progress.applyTemplate': 'Aplicando la plantilla base de eXeLearning...',
|
|
148
|
+
'progress.packElpx': 'Generando el archivo .elpx...',
|
|
149
|
+
'progress.readMarkdown': 'Leyendo el archivo Markdown...',
|
|
150
|
+
'progress.markdownToHtml': 'Convirtiendo Markdown a HTML...',
|
|
151
|
+
'progress.htmlToMarkdown': 'Convirtiendo HTML a Markdown...'
|
|
152
|
+
},
|
|
153
|
+
ca: {
|
|
154
|
+
'lang.label': 'Idioma',
|
|
155
|
+
'lang.es': 'Español',
|
|
156
|
+
'lang.ca': 'Català',
|
|
157
|
+
'lang.en': 'English',
|
|
158
|
+
'app.heroAria': 'Capçalera de l’aplicació',
|
|
159
|
+
'app.subtitle': 'Convertidor per a eXeLearning',
|
|
160
|
+
'app.lede': 'Converteix fitxers <code>.elp</code> i <code>.elpx</code> a <code>.docx</code>, <code>.pdf</code> o <code>.md</code>, i també importa <code>.docx</code> o <code>.md</code> a <code>.elpx</code>.',
|
|
161
|
+
'app.infographicLink': 'Veure infografia',
|
|
162
|
+
'app.cliLink': 'Fer servir la versió CLI',
|
|
163
|
+
'app.cliLinkHelp': 'Per a terminal i automatització',
|
|
164
|
+
'panel.conversion': 'Conversió',
|
|
165
|
+
'drop.title': 'Deixa anar aquí un fitxer o selecciona’l',
|
|
166
|
+
'drop.help': 'Fitxers compatibles: <code>.elp</code>, <code>.elpx</code>, <code>.docx</code> i <code>.md</code>.',
|
|
167
|
+
'button.openFile': 'Obrir fitxer',
|
|
168
|
+
'file.none': 'Cap fitxer seleccionat.',
|
|
169
|
+
'detected.title': 'Conversió detectada',
|
|
170
|
+
'output.title': 'Convertir a',
|
|
171
|
+
'output.aria': 'Format de sortida',
|
|
172
|
+
'output.elpx': 'Projecte eXeLearning (.elpx)',
|
|
173
|
+
'output.docx': 'Document Word (.docx)',
|
|
174
|
+
'output.pdf': 'Document PDF (.pdf)',
|
|
175
|
+
'output.md': 'Markdown (.md)',
|
|
176
|
+
'legacySave.title': 'Desar també l’ELPX',
|
|
177
|
+
'legacySave.include': 'Baixar el fitxer .elpx intermedi abans de continuar',
|
|
178
|
+
'legacySave.help': 'És útil si vols conservar el projecte actualitzat i, a més, exportar-lo a Word o Markdown.',
|
|
179
|
+
'pages.title': 'Pàgines a exportar',
|
|
180
|
+
'pages.all': 'Totes',
|
|
181
|
+
'pages.none': 'Cap',
|
|
182
|
+
'pages.help': 'Mode jeràrquic normalitzat: si falta una pàgina pare seleccionada, les filles passen a arrel.',
|
|
183
|
+
'pages.help.loading': 'Carregant pàgines...',
|
|
184
|
+
'pages.help.readError': 'No s’ha pogut llegir l’estructura de pàgines. S’exportarà tot el contingut.',
|
|
185
|
+
'pages.help.noneDetected': 'No s’han detectat pàgines seleccionables. S’exportarà tot el contingut.',
|
|
186
|
+
'pages.help.summary': '{selected} de {total} pàgines seleccionades. Mode jeràrquic normalitzat: si falta una pàgina pare seleccionada, les filles passen a arrel.',
|
|
187
|
+
'structure.title': 'Estructura de pàgines',
|
|
188
|
+
'structure.level': 'Nivell',
|
|
189
|
+
'structure.target': 'Destinació',
|
|
190
|
+
'structure.heading1': 'Títol 1',
|
|
191
|
+
'structure.heading2': 'Títol 2',
|
|
192
|
+
'structure.heading3': 'Títol 3',
|
|
193
|
+
'structure.heading4': 'Títol 4',
|
|
194
|
+
'structure.h1.page': 'Pàgina',
|
|
195
|
+
'structure.h1.resource': 'Títol del recurs',
|
|
196
|
+
'structure.block': 'iDevice de text',
|
|
197
|
+
'structure.subpage': 'Subpàgina',
|
|
198
|
+
'structure.h1.forcedPage': 'Pàgina (obligatori)',
|
|
199
|
+
'structure.disabledNested': 'Subtítol dins l’iDevice actual',
|
|
200
|
+
'structure.help.chain': 'Cada nivell només pot crear subpàgines quan el nivell immediatament anterior també s’utilitza com a subpàgina.',
|
|
201
|
+
'structure.help.shift': 'Si <code>Títol 1</code> s’utilitza com a <em>Títol del recurs</em>, la resta d’encapçalaments s’interpreta pujant un nivell.',
|
|
202
|
+
'mdImages.title': 'Imatges en exportar Markdown',
|
|
203
|
+
'mdImages.include': 'Incloure imatges incrustades al fitxer Markdown',
|
|
204
|
+
'mdImages.help': 'Per defecte s’ometen per generar un <code>.md</code> més net.',
|
|
205
|
+
'button.preview': 'Previsualitzar',
|
|
206
|
+
'button.save': 'Desar fitxer',
|
|
207
|
+
'button.saveElpx': 'Desar .elpx',
|
|
208
|
+
'button.saveDocx': 'Desar .docx',
|
|
209
|
+
'button.savePdf': 'Desar .pdf',
|
|
210
|
+
'button.saveMd': 'Desar .md',
|
|
211
|
+
'button.close': 'Tancar',
|
|
212
|
+
'button.working': 'Treballant...',
|
|
213
|
+
'actions.previewRequired': 'Per desar en Word, PDF o Markdown, primer prem Previsualitzar.',
|
|
214
|
+
'status.idle': 'Carrega un fitxer perquè l’aplicació detecti automàticament la conversió disponible.',
|
|
215
|
+
'status.selectFileFirst': 'Selecciona abans un fitxer compatible.',
|
|
216
|
+
'status.previewReady': 'Previsualització generada. Si et convenç, prem Desar fitxer.',
|
|
217
|
+
'status.previewFirst': 'Primer genera la previsualització amb la configuració actual.',
|
|
218
|
+
'status.unsupported': 'Format no compatible. Fes servir un fitxer .elp, .elpx, .docx o .md.',
|
|
219
|
+
'status.docxDetected': 'Fitxer DOCX detectat. Revisa l’estructura de pàgines i prem convertir.',
|
|
220
|
+
'status.mdDetected': 'Fitxer Markdown detectat. Revisa l’estructura de pàgines i prem convertir.',
|
|
221
|
+
'status.elpDetected': 'Fitxer ELP detectat. Primer es convertirà a ELPX i després el podràs desar o continuar a un altre format.',
|
|
222
|
+
'status.elpxDetected': 'Fitxer ELPX detectat. Tria format i pàgines, i prem convertir.',
|
|
223
|
+
'status.readingPages': 'Llegint l’estructura de pàgines de l’ELPX...',
|
|
224
|
+
'status.generatingElpxPreview': 'Generant la previsualització de l’ELPX...',
|
|
225
|
+
'status.popupBlocked': 'No s’ha pogut obrir la finestra de previsualització (bloquejador de finestres emergents).',
|
|
226
|
+
'status.errorPrefix': 'Error: {message}',
|
|
227
|
+
'detected.docxToElpx': 'S’importarà el fitxer <code>.docx</code> per generar un projecte <code>.elpx</code>.',
|
|
228
|
+
'detected.docxToElpxDone': 'S’ha importat el fitxer <code>.docx</code> per generar un projecte <code>.elpx</code>.',
|
|
229
|
+
'detected.mdToElpx': 'S’importarà el fitxer <code>.md</code> per generar un projecte <code>.elpx</code>.',
|
|
230
|
+
'detected.mdToElpxDone': 'S’ha importat el fitxer <code>.md</code> per generar un projecte <code>.elpx</code>.',
|
|
231
|
+
'detected.elpToElpx': 'Es convertirà el fitxer <code>.elp</code> a <code>.elpx</code>.',
|
|
232
|
+
'detected.elpToElpxDone': 'S’ha convertit el fitxer <code>.elp</code> a <code>.elpx</code>.',
|
|
233
|
+
'detected.elpToMd': 'Es convertirà el fitxer <code>.elp</code> a <code>.elpx</code> i després a <code>.md</code>.',
|
|
234
|
+
'detected.elpToMdDone': 'S’ha convertit el fitxer <code>.elp</code> a <code>.elpx</code> i després a <code>.md</code>.',
|
|
235
|
+
'detected.elpToPdf': 'Es convertirà el fitxer <code>.elp</code> a <code>.elpx</code> i després a <code>.pdf</code>.',
|
|
236
|
+
'detected.elpToPdfDone': 'S’ha convertit el fitxer <code>.elp</code> a <code>.elpx</code> i després a <code>.pdf</code>.',
|
|
237
|
+
'detected.elpToDocx': 'Es convertirà el fitxer <code>.elp</code> a <code>.elpx</code> i després a <code>.docx</code>.',
|
|
238
|
+
'detected.elpToDocxDone': 'S’ha convertit el fitxer <code>.elp</code> a <code>.elpx</code> i després a <code>.docx</code>.',
|
|
239
|
+
'detected.elpxToMd': 'S’exportarà el fitxer <code>.elpx</code> a <code>.md</code>.',
|
|
240
|
+
'detected.elpxToMdDone': 'S’ha exportat el fitxer <code>.elpx</code> a <code>.md</code>.',
|
|
241
|
+
'detected.elpxToPdf': 'S’exportarà el fitxer <code>.elpx</code> a <code>.pdf</code>.',
|
|
242
|
+
'detected.elpxToPdfDone': 'S’ha exportat el fitxer <code>.elpx</code> a <code>.pdf</code>.',
|
|
243
|
+
'detected.elpxToDocx': 'S’exportarà el fitxer <code>.elpx</code> a <code>.docx</code>.',
|
|
244
|
+
'detected.elpxToDocxDone': 'S’ha exportat el fitxer <code>.elpx</code> a <code>.docx</code>.',
|
|
245
|
+
'done.import.withDialog': '{source} completada. S’han creat {pages} pàgines i {blocks} iDevices.',
|
|
246
|
+
'done.import.download': '{source} completada. S’han creat {pages} pàgines i {blocks} iDevices amb descàrrega estàndard.',
|
|
247
|
+
'done.export.withDialog': 'Conversió a {format} completada. S’han processat {pages} pàgines.',
|
|
248
|
+
'done.export.download': 'Conversió a {format} completada. S’han processat {pages} pàgines i s’ha fet servir la descàrrega estàndard.',
|
|
249
|
+
'done.export.pdfDialog': 'S’ha obert la vista d’impressió per desar-la com a PDF. S’han processat {pages} pàgines.',
|
|
250
|
+
'done.savedIntermediateElpxDialog': 'S’ha desat el fitxer .elpx intermedi.',
|
|
251
|
+
'done.savedIntermediateElpxDownload': 'S’ha baixat el fitxer .elpx intermedi.',
|
|
252
|
+
'source.docxImport': 'Importació DOCX',
|
|
253
|
+
'source.elpImport': 'Conversió ELP legacy',
|
|
254
|
+
'source.mdImport': 'Importació Markdown',
|
|
255
|
+
'format.markdown': 'Markdown',
|
|
256
|
+
'format.pdf': 'PDF',
|
|
257
|
+
'format.docx': 'DOCX',
|
|
258
|
+
'error.selectAtLeastOnePage': 'Selecciona almenys una pàgina per exportar.',
|
|
259
|
+
'error.saveCancelled': 'Desat cancel·lat per l’usuari.',
|
|
260
|
+
'preview.title': 'Vista prèvia',
|
|
261
|
+
'preview.openWindow': 'Obrir en finestra',
|
|
262
|
+
'preview.help': 'Revisa el resultat abans de desar. Si canvies opcions o pàgines, torna a previsualitzar.',
|
|
263
|
+
'preview.markdownMode': 'Vista del Markdown',
|
|
264
|
+
'preview.markdownFormatted': 'Com es veurà',
|
|
265
|
+
'preview.markdownSource': 'Text Markdown',
|
|
266
|
+
'preview.generating': 'Generant la previsualització. Segons el fitxer original, aquest procés pot trigar uns minuts.',
|
|
267
|
+
'preview.stale': 'Prem Previsualitzar per veure la vista prèvia correcta.',
|
|
268
|
+
'preview.iframeTitle': 'Vista prèvia del resultat',
|
|
269
|
+
'preview.pagedFrameTitle': 'Vista prèvia de l’ELPX',
|
|
270
|
+
'save.type.elpx': 'Projecte d’eXeLearning',
|
|
271
|
+
'save.type.md': 'Document Markdown',
|
|
272
|
+
'save.type.pdf': 'Document PDF',
|
|
273
|
+
'save.type.docx': 'Document de Word',
|
|
274
|
+
'footer.version': 'Versió {version} · ©',
|
|
275
|
+
'footer.license': 'Llicència AGPLv3',
|
|
276
|
+
'footer.repo': 'Repositori GitHub',
|
|
277
|
+
'footer.issues': 'Problemes i suggeriments',
|
|
278
|
+
'footer.analytics.visits': 'Visites',
|
|
279
|
+
'footer.analytics.today': 'Avui',
|
|
280
|
+
'footer.analytics.details': 'Estadístiques',
|
|
281
|
+
'footer.note.independent': 'Projecte independent. No està afiliat ni avalat oficialment per eXeLearning o INTEF.',
|
|
282
|
+
'footer.note.analyticsLink': 'Privadesa',
|
|
283
|
+
'footer.note.analytics': 'Aquesta aplicació recull únicament estadístiques d’ús agregades amb un sistema propi per conèixer-ne la utilització i millorar l’eina. No s’emmagatzemen adreces IP ni s’utilitzen cookies d’analítica per als visitants.',
|
|
284
|
+
'footer.note.thirdParty': 'Aquest projecte reutilitza recursos d’eXeLearning per compatibilitat amb <code>.elpx</code>. Consulta les atribucions a',
|
|
285
|
+
'progress.readElpx': 'Llegint el fitxer .elpx...',
|
|
286
|
+
'progress.readElp': 'Llegint el fitxer .elp...',
|
|
287
|
+
'progress.parseLegacyElp': 'Interpretant contentv3.xml...',
|
|
288
|
+
'progress.renameElp': 'Reanomenant el fitxer legacy a .elpx...',
|
|
289
|
+
'progress.parseContentXml': 'Analitzant content.xml...',
|
|
290
|
+
'progress.filterPages': 'Aplicant la selecció de pàgines...',
|
|
291
|
+
'progress.renderHtml': 'Generant HTML intermedi...',
|
|
292
|
+
'progress.generateDocx': 'Generant el document .docx...',
|
|
293
|
+
'progress.readDocx': 'Llegint el fitxer .docx...',
|
|
294
|
+
'progress.parseDocxStyles': 'Analitzant estils i contingut del DOCX...',
|
|
295
|
+
'progress.parseDocumentStructure': 'Interpretant l’estructura del document...',
|
|
296
|
+
'progress.parseMarkdownStructure': 'Interpretant l’estructura del Markdown...',
|
|
297
|
+
'progress.applyTemplate': 'Aplicant la plantilla base d’eXeLearning...',
|
|
298
|
+
'progress.packElpx': 'Generant el fitxer .elpx...',
|
|
299
|
+
'progress.readMarkdown': 'Llegint el fitxer Markdown...',
|
|
300
|
+
'progress.markdownToHtml': 'Convertint Markdown a HTML...',
|
|
301
|
+
'progress.htmlToMarkdown': 'Convertint HTML a Markdown...'
|
|
302
|
+
},
|
|
303
|
+
en: {
|
|
304
|
+
'lang.label': 'Language',
|
|
305
|
+
'lang.es': 'Español',
|
|
306
|
+
'lang.ca': 'Català',
|
|
307
|
+
'lang.en': 'English',
|
|
308
|
+
'app.heroAria': 'Application header',
|
|
309
|
+
'app.subtitle': 'Converter for eXeLearning',
|
|
310
|
+
'app.lede': 'Convert <code>.elp</code> and <code>.elpx</code> files to <code>.docx</code>, <code>.pdf</code>, or <code>.md</code>, and also import <code>.docx</code> or <code>.md</code> into <code>.elpx</code>.',
|
|
311
|
+
'app.infographicLink': 'View infographic',
|
|
312
|
+
'app.cliLink': 'Use the CLI version',
|
|
313
|
+
'app.cliLinkHelp': 'For terminal use and automation',
|
|
314
|
+
'panel.conversion': 'Conversion',
|
|
315
|
+
'drop.title': 'Drop a file here or choose one',
|
|
316
|
+
'drop.help': 'Supported files: <code>.elp</code>, <code>.elpx</code>, <code>.docx</code>, and <code>.md</code>.',
|
|
317
|
+
'button.openFile': 'Open file',
|
|
318
|
+
'file.none': 'No file selected.',
|
|
319
|
+
'detected.title': 'Detected conversion',
|
|
320
|
+
'output.title': 'Convert to',
|
|
321
|
+
'output.aria': 'Output format',
|
|
322
|
+
'output.elpx': 'eXeLearning project (.elpx)',
|
|
323
|
+
'output.docx': 'Word document (.docx)',
|
|
324
|
+
'output.pdf': 'PDF document (.pdf)',
|
|
325
|
+
'output.md': 'Markdown (.md)',
|
|
326
|
+
'legacySave.title': 'Also save the ELPX',
|
|
327
|
+
'legacySave.include': 'Download the intermediate .elpx before continuing',
|
|
328
|
+
'legacySave.help': 'Useful if you want to keep the upgraded project and also export it to Word or Markdown.',
|
|
329
|
+
'pages.title': 'Pages to export',
|
|
330
|
+
'pages.all': 'All',
|
|
331
|
+
'pages.none': 'None',
|
|
332
|
+
'pages.help': 'Normalized hierarchical mode: if a selected parent page is missing, child pages move to root level.',
|
|
333
|
+
'pages.help.loading': 'Loading pages...',
|
|
334
|
+
'pages.help.readError': 'Could not read page structure. All content will be exported.',
|
|
335
|
+
'pages.help.noneDetected': 'No selectable pages were detected. All content will be exported.',
|
|
336
|
+
'pages.help.summary': '{selected} of {total} pages selected. Normalized hierarchical mode: if a selected parent page is missing, child pages move to root level.',
|
|
337
|
+
'structure.title': 'Page structure',
|
|
338
|
+
'structure.level': 'Level',
|
|
339
|
+
'structure.target': 'Target',
|
|
340
|
+
'structure.heading1': 'Heading 1',
|
|
341
|
+
'structure.heading2': 'Heading 2',
|
|
342
|
+
'structure.heading3': 'Heading 3',
|
|
343
|
+
'structure.heading4': 'Heading 4',
|
|
344
|
+
'structure.h1.page': 'Page',
|
|
345
|
+
'structure.h1.resource': 'Resource title',
|
|
346
|
+
'structure.block': 'Text iDevice',
|
|
347
|
+
'structure.subpage': 'Subpage',
|
|
348
|
+
'structure.h1.forcedPage': 'Page (required)',
|
|
349
|
+
'structure.disabledNested': 'Subtitle inside current iDevice',
|
|
350
|
+
'structure.help.chain': 'Each level can create subpages only if the immediate previous level is also used as a subpage.',
|
|
351
|
+
'structure.help.shift': 'If <code>Heading 1</code> is used as <em>Resource title</em>, remaining headings are interpreted one level up.',
|
|
352
|
+
'mdImages.title': 'Images when exporting Markdown',
|
|
353
|
+
'mdImages.include': 'Include embedded images in Markdown file',
|
|
354
|
+
'mdImages.help': 'By default they are omitted for a cleaner <code>.md</code>.',
|
|
355
|
+
'button.preview': 'Preview',
|
|
356
|
+
'button.save': 'Save file',
|
|
357
|
+
'button.saveElpx': 'Save .elpx',
|
|
358
|
+
'button.saveDocx': 'Save .docx',
|
|
359
|
+
'button.savePdf': 'Save .pdf',
|
|
360
|
+
'button.saveMd': 'Save .md',
|
|
361
|
+
'button.close': 'Close',
|
|
362
|
+
'button.working': 'Working...',
|
|
363
|
+
'actions.previewRequired': 'To save as Word, PDF, or Markdown, click Preview first.',
|
|
364
|
+
'status.idle': 'Load a file so the app can automatically detect the available conversion.',
|
|
365
|
+
'status.selectFileFirst': 'Select a compatible file first.',
|
|
366
|
+
'status.previewReady': 'Preview generated. If it looks good, click Save file.',
|
|
367
|
+
'status.previewFirst': 'Generate preview first with the current settings.',
|
|
368
|
+
'status.unsupported': 'Unsupported format. Use a .elp, .elpx, .docx, or .md file.',
|
|
369
|
+
'status.docxDetected': 'DOCX file detected. Review page structure and click convert.',
|
|
370
|
+
'status.mdDetected': 'Markdown file detected. Review page structure and click convert.',
|
|
371
|
+
'status.elpDetected': 'ELP file detected. It will first be converted to ELPX, then you can save it or continue to another format.',
|
|
372
|
+
'status.elpxDetected': 'ELPX file detected. Choose output format and pages, then click convert.',
|
|
373
|
+
'status.readingPages': 'Reading ELPX page structure...',
|
|
374
|
+
'status.generatingElpxPreview': 'Generating ELPX preview...',
|
|
375
|
+
'status.popupBlocked': 'Could not open preview window (popup blocker).',
|
|
376
|
+
'status.errorPrefix': 'Error: {message}',
|
|
377
|
+
'detected.docxToElpx': 'The <code>.docx</code> file will be imported to generate an <code>.elpx</code> project.',
|
|
378
|
+
'detected.docxToElpxDone': 'The <code>.docx</code> file was imported to generate an <code>.elpx</code> project.',
|
|
379
|
+
'detected.mdToElpx': 'The <code>.md</code> file will be imported to generate an <code>.elpx</code> project.',
|
|
380
|
+
'detected.mdToElpxDone': 'The <code>.md</code> file was imported to generate an <code>.elpx</code> project.',
|
|
381
|
+
'detected.elpToElpx': 'The <code>.elp</code> file will be converted to <code>.elpx</code>.',
|
|
382
|
+
'detected.elpToElpxDone': 'The <code>.elp</code> file was converted to <code>.elpx</code>.',
|
|
383
|
+
'detected.elpToMd': 'The <code>.elp</code> file will be converted to <code>.elpx</code> and then to <code>.md</code>.',
|
|
384
|
+
'detected.elpToMdDone': 'The <code>.elp</code> file was converted to <code>.elpx</code> and then to <code>.md</code>.',
|
|
385
|
+
'detected.elpToPdf': 'The <code>.elp</code> file will be converted to <code>.elpx</code> and then to <code>.pdf</code>.',
|
|
386
|
+
'detected.elpToPdfDone': 'The <code>.elp</code> file was converted to <code>.elpx</code> and then to <code>.pdf</code>.',
|
|
387
|
+
'detected.elpToDocx': 'The <code>.elp</code> file will be converted to <code>.elpx</code> and then to <code>.docx</code>.',
|
|
388
|
+
'detected.elpToDocxDone': 'The <code>.elp</code> file was converted to <code>.elpx</code> and then to <code>.docx</code>.',
|
|
389
|
+
'detected.elpxToMd': 'The <code>.elpx</code> file will be exported to <code>.md</code>.',
|
|
390
|
+
'detected.elpxToMdDone': 'The <code>.elpx</code> file was exported to <code>.md</code>.',
|
|
391
|
+
'detected.elpxToPdf': 'The <code>.elpx</code> file will be exported to <code>.pdf</code>.',
|
|
392
|
+
'detected.elpxToPdfDone': 'The <code>.elpx</code> file was exported to <code>.pdf</code>.',
|
|
393
|
+
'detected.elpxToDocx': 'The <code>.elpx</code> file will be exported to <code>.docx</code>.',
|
|
394
|
+
'detected.elpxToDocxDone': 'The <code>.elpx</code> file was exported to <code>.docx</code>.',
|
|
395
|
+
'done.import.withDialog': '{source} completed. {pages} pages and {blocks} iDevices were created.',
|
|
396
|
+
'done.import.download': '{source} completed. {pages} pages and {blocks} iDevices were created using standard download.',
|
|
397
|
+
'done.export.withDialog': 'Conversion to {format} completed. {pages} pages were processed.',
|
|
398
|
+
'done.export.download': 'Conversion to {format} completed. {pages} pages were processed using standard download.',
|
|
399
|
+
'done.export.pdfDialog': 'A print view was opened so you can save it as PDF. {pages} pages were processed.',
|
|
400
|
+
'done.savedIntermediateElpxDialog': 'The intermediate .elpx file was saved.',
|
|
401
|
+
'done.savedIntermediateElpxDownload': 'The intermediate .elpx file was downloaded.',
|
|
402
|
+
'source.docxImport': 'DOCX import',
|
|
403
|
+
'source.elpImport': 'Legacy ELP conversion',
|
|
404
|
+
'source.mdImport': 'Markdown import',
|
|
405
|
+
'format.markdown': 'Markdown',
|
|
406
|
+
'format.pdf': 'PDF',
|
|
407
|
+
'format.docx': 'DOCX',
|
|
408
|
+
'error.selectAtLeastOnePage': 'Select at least one page to export.',
|
|
409
|
+
'error.saveCancelled': 'Save cancelled by user.',
|
|
410
|
+
'preview.title': 'Preview',
|
|
411
|
+
'preview.openWindow': 'Open in window',
|
|
412
|
+
'preview.help': 'Review result before saving. If you change options or pages, generate preview again.',
|
|
413
|
+
'preview.markdownMode': 'Markdown view',
|
|
414
|
+
'preview.markdownFormatted': 'How it will look',
|
|
415
|
+
'preview.markdownSource': 'Markdown text',
|
|
416
|
+
'preview.generating': 'Generating preview. Depending on the original file, this process may take a few minutes.',
|
|
417
|
+
'preview.stale': 'Click Preview to see the correct preview.',
|
|
418
|
+
'preview.iframeTitle': 'Result preview',
|
|
419
|
+
'preview.pagedFrameTitle': 'ELPX preview',
|
|
420
|
+
'save.type.elpx': 'eXeLearning project',
|
|
421
|
+
'save.type.md': 'Markdown document',
|
|
422
|
+
'save.type.pdf': 'PDF document',
|
|
423
|
+
'save.type.docx': 'Word document',
|
|
424
|
+
'footer.version': 'Version {version} · ©',
|
|
425
|
+
'footer.license': 'AGPLv3 License',
|
|
426
|
+
'footer.repo': 'GitHub repository',
|
|
427
|
+
'footer.issues': 'Issues and suggestions',
|
|
428
|
+
'footer.analytics.visits': 'Visits',
|
|
429
|
+
'footer.analytics.today': 'Today',
|
|
430
|
+
'footer.analytics.details': 'Stats',
|
|
431
|
+
'footer.note.independent': 'Independent project. Not officially affiliated with or endorsed by eXeLearning or INTEF.',
|
|
432
|
+
'footer.note.analyticsLink': 'Privacy',
|
|
433
|
+
'footer.note.analytics': 'This application only collects aggregated usage statistics with an in-house system to understand how it is used and improve the tool. No IP addresses are stored and no analytics cookies are used for visitors.',
|
|
434
|
+
'footer.note.thirdParty': 'This project reuses eXeLearning resources for <code>.elpx</code> compatibility. See attributions in',
|
|
435
|
+
'progress.readElpx': 'Reading .elpx file...',
|
|
436
|
+
'progress.readElp': 'Reading .elp file...',
|
|
437
|
+
'progress.parseLegacyElp': 'Parsing contentv3.xml...',
|
|
438
|
+
'progress.renameElp': 'Renaming legacy file to .elpx...',
|
|
439
|
+
'progress.parseContentXml': 'Analyzing content.xml...',
|
|
440
|
+
'progress.filterPages': 'Applying page selection...',
|
|
441
|
+
'progress.renderHtml': 'Generating intermediate HTML...',
|
|
442
|
+
'progress.generateDocx': 'Generating .docx document...',
|
|
443
|
+
'progress.readDocx': 'Reading .docx file...',
|
|
444
|
+
'progress.parseDocxStyles': 'Analyzing DOCX styles and content...',
|
|
445
|
+
'progress.parseDocumentStructure': 'Interpreting document structure...',
|
|
446
|
+
'progress.parseMarkdownStructure': 'Interpreting Markdown structure...',
|
|
447
|
+
'progress.applyTemplate': 'Applying eXeLearning base template...',
|
|
448
|
+
'progress.packElpx': 'Generating .elpx file...',
|
|
449
|
+
'progress.readMarkdown': 'Reading Markdown file...',
|
|
450
|
+
'progress.markdownToHtml': 'Converting Markdown to HTML...',
|
|
451
|
+
'progress.htmlToMarkdown': 'Converting HTML to Markdown...'
|
|
452
|
+
},
|
|
453
|
+
};
|
|
454
|
+
export function resolveInitialLocale() {
|
|
455
|
+
const stored = localStorage.getItem(STORAGE_KEY);
|
|
456
|
+
if (stored === 'es' || stored === 'ca' || stored === 'en') {
|
|
457
|
+
return stored;
|
|
458
|
+
}
|
|
459
|
+
const nav = (navigator.language || 'es').toLowerCase();
|
|
460
|
+
if (nav.startsWith('ca'))
|
|
461
|
+
return 'ca';
|
|
462
|
+
if (nav.startsWith('en'))
|
|
463
|
+
return 'en';
|
|
464
|
+
return 'es';
|
|
465
|
+
}
|
|
466
|
+
export function persistLocale(locale) {
|
|
467
|
+
localStorage.setItem(STORAGE_KEY, locale);
|
|
468
|
+
}
|
|
469
|
+
export function createI18n(locale) {
|
|
470
|
+
const dictionary = dictionaries[locale] || dictionaries.es;
|
|
471
|
+
const fallback = dictionaries.es;
|
|
472
|
+
return {
|
|
473
|
+
locale,
|
|
474
|
+
t(key, vars) {
|
|
475
|
+
const template = dictionary[key] ?? fallback[key] ?? key;
|
|
476
|
+
if (!vars) {
|
|
477
|
+
return template;
|
|
478
|
+
}
|
|
479
|
+
return template.replace(/\{([a-zA-Z0-9_]+)\}/g, (_match, name) => {
|
|
480
|
+
const value = vars[name];
|
|
481
|
+
return value === undefined ? '' : String(value);
|
|
482
|
+
});
|
|
483
|
+
},
|
|
484
|
+
};
|
|
485
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './main';
|