@doenet/doenetml-iframe 0.7.21-dev.409 → 0.7.21-dev.410
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/chrome-0XtaGdf2-0XtaGdf2.js +5 -0
- package/chrome-0XtaGdf2-0XtaGdf2.js.map +1 -0
- package/chrome-7hfpQiks-7hfpQiks.js +5 -0
- package/chrome-7hfpQiks-7hfpQiks.js.map +1 -0
- package/chrome-BCorNRin-BCorNRin.js +5 -0
- package/chrome-BCorNRin-BCorNRin.js.map +1 -0
- package/chrome-BgtP1uav-BgtP1uav.js +5 -0
- package/chrome-BgtP1uav-BgtP1uav.js.map +1 -0
- package/chrome-BxeiXzYP-BxeiXzYP.js +5 -0
- package/chrome-BxeiXzYP-BxeiXzYP.js.map +1 -0
- package/chrome-CHfM-9id-CHfM-9id.js +5 -0
- package/chrome-CHfM-9id-CHfM-9id.js.map +1 -0
- package/chrome-CLuS0YrU-CLuS0YrU.js +5 -0
- package/chrome-CLuS0YrU-CLuS0YrU.js.map +1 -0
- package/chrome-CUUTt8Kx-CUUTt8Kx.js +5 -0
- package/chrome-CUUTt8Kx-CUUTt8Kx.js.map +1 -0
- package/chrome-CxczjR9L-CxczjR9L.js +5 -0
- package/chrome-CxczjR9L-CxczjR9L.js.map +1 -0
- package/content-BvUWw9KK-BvUWw9KK.js +5 -0
- package/content-BvUWw9KK-BvUWw9KK.js.map +1 -0
- package/content-By_oRFIe-By_oRFIe.js +5 -0
- package/content-By_oRFIe-By_oRFIe.js.map +1 -0
- package/content-CNOsHENE-CNOsHENE.js +5 -0
- package/content-CNOsHENE-CNOsHENE.js.map +1 -0
- package/content-CpQ6IHzs-CpQ6IHzs.js +5 -0
- package/content-CpQ6IHzs-CpQ6IHzs.js.map +1 -0
- package/content-KY2omZn--KY2omZn-.js +5 -0
- package/content-KY2omZn--KY2omZn-.js.map +1 -0
- package/content-SeQXZJLW-SeQXZJLW.js +5 -0
- package/content-SeQXZJLW-SeQXZJLW.js.map +1 -0
- package/content-TxcmVl1n-TxcmVl1n.js +5 -0
- package/content-TxcmVl1n-TxcmVl1n.js.map +1 -0
- package/content-V7-P1x8g-V7-P1x8g.js +5 -0
- package/content-V7-P1x8g-V7-P1x8g.js.map +1 -0
- package/content-ZVWN3mh4-ZVWN3mh4.js +5 -0
- package/content-ZVWN3mh4-ZVWN3mh4.js.map +1 -0
- package/diagnostics-BKuKvU6t-BKuKvU6t.js +5 -0
- package/diagnostics-BKuKvU6t-BKuKvU6t.js.map +1 -0
- package/diagnostics-BtfrNhYc-BtfrNhYc.js +5 -0
- package/diagnostics-BtfrNhYc-BtfrNhYc.js.map +1 -0
- package/diagnostics-CH_aro1x-CH_aro1x.js +5 -0
- package/diagnostics-CH_aro1x-CH_aro1x.js.map +1 -0
- package/diagnostics-Cg1JlAdR-Cg1JlAdR.js +5 -0
- package/diagnostics-Cg1JlAdR-Cg1JlAdR.js.map +1 -0
- package/diagnostics-ChJ-E3yU-ChJ-E3yU.js +5 -0
- package/diagnostics-ChJ-E3yU-ChJ-E3yU.js.map +1 -0
- package/diagnostics-DirtEmHL-DirtEmHL.js +5 -0
- package/diagnostics-DirtEmHL-DirtEmHL.js.map +1 -0
- package/diagnostics-Dv3tKIJO-Dv3tKIJO.js +5 -0
- package/diagnostics-Dv3tKIJO-Dv3tKIJO.js.map +1 -0
- package/diagnostics-IJgoyYsM-IJgoyYsM.js +5 -0
- package/diagnostics-IJgoyYsM-IJgoyYsM.js.map +1 -0
- package/diagnostics-Ym7cNYqW-Ym7cNYqW.js +5 -0
- package/diagnostics-Ym7cNYqW-Ym7cNYqW.js.map +1 -0
- package/editor-B6-NJBVs-B6-NJBVs.js +5 -0
- package/editor-B6-NJBVs-B6-NJBVs.js.map +1 -0
- package/editor-BdAbY--0-BdAbY--0.js +5 -0
- package/editor-BdAbY--0-BdAbY--0.js.map +1 -0
- package/editor-C3hzpB0d-C3hzpB0d.js +5 -0
- package/editor-C3hzpB0d-C3hzpB0d.js.map +1 -0
- package/editor-CapWY6t5-CapWY6t5.js +5 -0
- package/editor-CapWY6t5-CapWY6t5.js.map +1 -0
- package/editor-CcpCA-P4-CcpCA-P4.js +5 -0
- package/editor-CcpCA-P4-CcpCA-P4.js.map +1 -0
- package/editor-D7ueEssQ-D7ueEssQ.js +5 -0
- package/editor-D7ueEssQ-D7ueEssQ.js.map +1 -0
- package/editor-DGGxFNYi-DGGxFNYi.js +5 -0
- package/editor-DGGxFNYi-DGGxFNYi.js.map +1 -0
- package/editor-Dgbver3W-Dgbver3W.js +5 -0
- package/editor-Dgbver3W-Dgbver3W.js.map +1 -0
- package/editor-LYCPn3J3-LYCPn3J3.js +5 -0
- package/editor-LYCPn3J3-LYCPn3J3.js.map +1 -0
- package/index.js +49 -41
- package/index.js.map +1 -1
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -1376,7 +1376,6 @@ const CATALOG_NAMESPACES = [
|
|
|
1376
1376
|
"diagnostics",
|
|
1377
1377
|
"editor"
|
|
1378
1378
|
];
|
|
1379
|
-
const WORKER_NAMESPACES = ["content"];
|
|
1380
1379
|
const CHROME_NAMESPACES = [
|
|
1381
1380
|
"chrome",
|
|
1382
1381
|
"diagnostics",
|
|
@@ -1393,6 +1392,13 @@ const EN_CATALOGS = {
|
|
|
1393
1392
|
editor
|
|
1394
1393
|
};
|
|
1395
1394
|
const EN_CATALOG_SOURCE = combineCatalogs(EN_CATALOGS);
|
|
1395
|
+
function englishResources(namespaces) {
|
|
1396
|
+
const picked = {};
|
|
1397
|
+
for (const namespace of namespaces) {
|
|
1398
|
+
picked[namespace] = EN_CATALOGS[namespace];
|
|
1399
|
+
}
|
|
1400
|
+
return combineCatalogs(picked);
|
|
1401
|
+
}
|
|
1396
1402
|
function intlLocale(locale) {
|
|
1397
1403
|
try {
|
|
1398
1404
|
Intl.getCanonicalLocales(locale);
|
|
@@ -1474,45 +1480,48 @@ function createTranslator(locales, resources, options = {}) {
|
|
|
1474
1480
|
translate.localeOf = (key) => bundles.find(({ bundle }) => lookupPattern(bundle, key) !== null)?.locale;
|
|
1475
1481
|
return translate;
|
|
1476
1482
|
}
|
|
1477
|
-
|
|
1478
|
-
const esContent = '# Spanish content catalog: the prose the core computes into the document.\n# Selected by `documentLocale` — the language the activity was written in.\n#\n# Spanish inflects. Adjectives follow their noun and agree with it in gender,\n# so every adjective below selects on `$gender`, the gender of the noun it\n# describes, and the composition messages put the noun first. Neither is\n# expressible by substituting into the English word order, which is why the\n# catalog controls the order and not the code.\n\n\n## Vocabulario de estilos\n\ncolor =\n .black =\n { $gender ->\n [f] negra\n *[m] negro\n }\n .white =\n { $gender ->\n [f] blanca\n *[m] blanco\n }\n .gray = gris\n .red =\n { $gender ->\n [f] roja\n *[m] rojo\n }\n .orange = naranja\n .yellow =\n { $gender ->\n [f] amarilla\n *[m] amarillo\n }\n .green = verde\n .cyan = cian\n .blue = azul\n .purple =\n { $gender ->\n [f] morada\n *[m] morado\n }\n .pink = rosa\n .brown = marrón\n\nline-width =\n .thick =\n { $gender ->\n [f] gruesa\n *[m] grueso\n }\n .thin =\n { $gender ->\n [f] delgada\n *[m] delgado\n }\n\nline-style =\n .dashed =\n { $gender ->\n [f] discontinua\n *[m] discontinuo\n }\n .dotted =\n { $gender ->\n [f] punteada\n *[m] punteado\n }\n\n# Sintagmas nominales: van detrás de «con» y no concuerdan con nada.\nfill-style =\n .horizontal = líneas horizontales\n .vertical = líneas verticales\n .diagonal = líneas diagonales\n .backdiagonal = líneas diagonales inversas\n .dots = puntos\n .diamonds = rombos\n\nnoun =\n .line = línea\n .line-segment = segmento\n .ray = semirrecta\n .vector = vector\n .curve = curva\n .function = función\n .parabola = parábola\n .polyline = polilínea\n .polygon = polígono\n .triangle = triángulo\n .rectangle = rectángulo\n .circle = círculo\n .region = región\n .point = punto\n .square = cuadrado\n .diamond = rombo\n .cross = cruz\n .plus = signo más\n\n# El nombre se parte: «polígono regular» lleva los adjetivos y «de 5 lados»\n# cierra el sintagma detrás de ellos. Si el complemento fuera delante, los\n# adjetivos quedarían separados del nombre con el que concuerdan («polígono\n# regular de 5 lados grueso rojo»).\nnoun-regular-polygon =\n { $part ->\n [tail] de { $numSides } lados\n *[head] polígono regular\n }\n\n# Además de los nombres de arriba, `$noun` puede ser «regular-polygon» (el\n# nombre que compone `noun-regular-polygon`) o el núcleo de un sintagma que no\n# se nombra en la descripción: «border», «fill», «text» y «background». Todos\n# ellos son masculinos en español —polígono, borde, relleno, texto, fondo—, así\n# que caen en el caso por defecto.\nnoun-gender =\n { $noun ->\n [line] f\n [ray] f\n [curve] f\n [function] f\n [parabola] f\n [polyline] f\n [region] f\n [cross] f\n *[other] m\n }\n\n\n## Composición de estilos\n\nstyle-stroke =\n { $parts ->\n [width-style-color] { $lineStyle } { $width } { $color }\n [width-color] { $width } { $color }\n [style-color] { $lineStyle } { $color }\n [width-style] { $lineStyle } { $width }\n [width] { $width }\n [style] { $lineStyle }\n *[color] { $color }\n }\n\n# El nombre va delante y los adjetivos detrás: «línea discontinua gruesa roja».\n# El complemento del nombre, si lo hay, cierra el sintagma: «polígono regular\n# grueso rojo de 5 lados».\nstyle-with-noun =\n { $parts ->\n [noun-tail] { $noun } { $description } { $nounTail }\n *[noun] { $noun } { $description }\n }\n\nstyle-filled-word =\n { $gender ->\n [f] rellena\n *[m] relleno\n }\n\nstyle-filled =\n { $parts ->\n [pattern] { $color } { $filled } con { $pattern }\n *[plain] { $color } { $filled }\n }\n\n# Aquí el complemento va pegado al nombre, y no al final como en\n# `style-with-noun`: «relleno de …» se lee como «lleno de …», así que «relleno\n# de 5 lados» diría otra cosa. «Polígono regular de 5 lados azul relleno».\nstyle-filled-with-noun =\n { $parts ->\n [pattern] { $noun } { $color } { $filled } con { $pattern }\n [plain-tail] { $noun } { $nounTail } { $color } { $filled }\n [pattern-tail] { $noun } { $nounTail } { $color } { $filled } con { $pattern }\n *[plain] { $noun } { $color } { $filled }\n }\n\n# «borde» es masculino, así que los adjetivos del borde concuerdan con él y no\n# con la figura que rodea.\nstyle-border-clause =\n { $parts ->\n [with-article] con un borde { $border }\n [and] y borde { $border }\n [and-article] y un borde { $border }\n *[with] con borde { $border }\n }\n\n# «de color» evita tener que concordar el color con un patrón en plural.\nstyle-fill =\n { $parts ->\n [pattern] { $pattern } de color { $color }\n *[plain] { $color }\n }\n\nstyle-unfilled = sin relleno\n\nstyle-text =\n { $parts ->\n [background] { $color } con un fondo { $background }\n *[plain] { $color }\n }\n\nstyle-background-none = ninguno\n\n\n## Palabras booleanas\n##\n## `true` y `false` siguen siendo sintaxis de DoenetML y no se traducen; aquí\n## solo se traduce la palabra que lee quien usa el documento.\n\nboolean-true = verdadero\nboolean-false = falso\n\n\n## Botones de respuesta\n\nanswer-submit-label = Revisar\nanswer-submit-label-no-correctness = Enviar respuesta\n\n\n## Bloques seccionales\n\nsection-name =\n .activity = Actividad\n .aside = Nota al margen\n .cascade = Cascada\n .definition = Definición\n .example = Ejemplo\n .exercise = Ejercicio\n .exercises = Ejercicios\n .given-answer = Respuesta\n .note = Nota\n .objectives = Objetivos\n .paragraphs = Párrafos\n .part = Parte\n .problem = Problema\n .problems = Problemas\n .proof = Demostración\n .question = Pregunta\n .section = Sección\n .solution = Solución\n .task = Tarea\n .theorem = Teorema\n\n# El español separa el título con un punto tras un número solo, igual que el\n# inglés, y con dos puntos cuando la palabra encabeza.\nsection-title-prefix =\n { $parts ->\n [name] { $sectionName }\n [number] { $sectionNumber }\n [name-title] { $sectionName }{ ": " }\n [number-title] { $sectionNumber }{ ". " }\n [name-number-title] { $sectionName } { $sectionNumber }{ ": " }\n *[name-number] { $sectionName } { $sectionNumber }\n }\n\nhint-title = Pista\n\n\n## Tablas y figuras\n\ntable-name =\n { $parts ->\n [numbered] Tabla { $enumeration }\n [numbered-title] Tabla { $enumeration }{ ": " }\n [unnumbered-title] Tabla{ ": " }\n *[unnumbered] Tabla\n }\n\nfigure-name =\n { $parts ->\n [numbered] Figura { $enumeration }\n [numbered-caption] Figura { $enumeration }{ ": " }\n [unnumbered-caption] Figura{ ": " }\n *[unnumbered] Figura\n }\n\n\n## Controles de paginación\n\npaginator-previous = Anterior\npaginator-next = Siguiente\npaginator-page = Página\n\npaginator-page-status = { $pageLabel } { $currentPage } de { $numPages }\n\n\n## Funciones definidas a trozos\n\npiecewise-condition-or = o\npiecewise-condition-if = si\npiecewise-condition-otherwise = en otro caso\n\n\n## Química\n##\n## Los símbolos, las fórmulas y todo aquello con lo que un `<award>` compara no\n## se traducen; aquí solo están las palabras que se leen.\n\nelement-name =\n .h = Hidrógeno\n .he = Helio\n .li = Litio\n .be = Berilio\n .b = Boro\n .c = Carbono\n .n = Nitrógeno\n .o = Oxígeno\n .f = Flúor\n .ne = Neón\n .na = Sodio\n .mg = Magnesio\n .al = Aluminio\n .si = Silicio\n .p = Fósforo\n .s = Azufre\n .cl = Cloro\n .ar = Argón\n .k = Potasio\n .ca = Calcio\n .sc = Escandio\n .ti = Titanio\n .v = Vanadio\n .cr = Cromo\n .mn = Manganeso\n .fe = Hierro\n .co = Cobalto\n .ni = Níquel\n .cu = Cobre\n .zn = Zinc\n .ga = Galio\n .ge = Germanio\n .as = Arsénico\n .se = Selenio\n .br = Bromo\n .kr = Kriptón\n .rb = Rubidio\n .sr = Estroncio\n .y = Itrio\n .zr = Circonio\n .nb = Niobio\n .mo = Molibdeno\n .tc = Tecnecio\n .ru = Rutenio\n .rh = Rodio\n .pd = Paladio\n .ag = Plata\n .cd = Cadmio\n .in = Indio\n .sn = Estaño\n .sb = Antimonio\n .te = Telurio\n .i = Yodo\n .xe = Xenón\n .cs = Cesio\n .ba = Bario\n .la = Lantano\n .ce = Cerio\n .pr = Praseodimio\n .nd = Neodimio\n .pm = Prometio\n .sm = Samario\n .eu = Europio\n .gd = Gadolinio\n .tb = Terbio\n .dy = Disprosio\n .ho = Holmio\n .er = Erbio\n .tm = Tulio\n .yb = Iterbio\n .lu = Lutecio\n .hf = Hafnio\n .ta = Tantalio\n .w = Wolframio\n .re = Renio\n .os = Osmio\n .ir = Iridio\n .pt = Platino\n .au = Oro\n .hg = Mercurio\n .tl = Talio\n .pb = Plomo\n .bi = Bismuto\n .po = Polonio\n .at = Astato\n .rn = Radón\n .fr = Francio\n .ra = Radio\n .ac = Actinio\n .th = Torio\n .pa = Protactinio\n .u = Uranio\n .np = Neptunio\n .pu = Plutonio\n .am = Americio\n .cm = Curio\n .bk = Berkelio\n .cf = Californio\n .es = Einsteinio\n .fm = Fermio\n .md = Mendelevio\n .no = Nobelio\n .lr = Lawrencio\n .rf = Rutherfordio\n .db = Dubnio\n .sg = Seaborgio\n .bh = Bohrio\n .hs = Hasio\n .mt = Meitnerio\n .ds = Darmstadtio\n .rg = Roentgenio\n .cn = Copernicio\n .nh = Nihonio\n .fl = Flerovio\n .mc = Moscovio\n .lv = Livermorio\n .ts = Teneso\n .og = Oganesón\n\nelement-anion-name =\n .h = Hidruro\n .c = Carburo\n .n = Nitruro\n .o = Óxido\n .f = Fluoruro\n .p = Fosfuro\n .s = Sulfuro\n .cl = Cloruro\n .br = Bromuro\n .i = Yoduro\n .at = Astaturo\n .ts = Tenesuro\n\nion-name-oxidation-state = { $name } ({ $numeral })\n\nchemistry-invalid-symbol = Símbolo químico no válido\nchemistry-invalid-ionic-compound = Compuesto iónico no válido\n';
|
|
1479
|
-
const esDiagnostics = '# Advertencias y errores mostrados a quien lee o escribe el documento.\n# Seleccionados por `uiLocale`.\n#\n# Los nombres de atributos y componentes de DoenetML (`through`, `endpoint`,\n# `numDimensions`, …) forman parte del lenguaje y se dejan en inglés.\n\n## `<lineSegment>`\n\nline-segment-attributes-ignored-with-endpoints =\n { $attributesCount ->\n [one] { $attributes } se ignora cuando se especifican los dos extremos\n *[other] { $attributes } se ignoran cuando se especifican los dos extremos\n }\n\nline-segment-attributes-ignored-with-endpoint-and-midpoint =\n { $attributesCount ->\n [one] { $attributes } se ignora cuando se especifican un extremo y el punto medio\n *[other] { $attributes } se ignoran cuando se especifican un extremo y el punto medio\n }\n\nline-segment-midpoint-offset-without-midpoint = midpointOffset no tiene efecto sin un punto medio\n\n## `<line>`\n\n# «Recta», no «línea», aunque `noun.line` en content.ftl diga «línea»: no es\n# una incoherencia, sino la diferencia entre describir el trazo dibujado («una\n# línea azul gruesa») y hablar del objeto geométrico, que en matemáticas es\n# una recta —de ahí «la ecuación de la recta».\n\nline-points-undetermined-dimensions = La recta pasa por puntos de dimensiones indeterminadas.\n\nline-points-too-few-dimensions = La recta debe pasar por puntos de al menos dos dimensiones.\n\nline-points-depend-on-variables = La recta pasa por puntos que dependen de las variables: { $variables }.\n\n# Enumeradas con coma en vez de «y»: las variables de <line> son `x` e `y` por\n# omisión, y «en las variables x y y» sería a la vez incorrecto (ante el sonido\n# /i/ la conjunción es «e») e ilegible. La coma es correcta sea cual sea el\n# nombre de la variable, que aquí no se conoce de antemano.\nline-equation-invalid-format = Formato no válido para la ecuación de la recta en las variables { $variable1 }, { $variable2 }.\n\n## `<ray>`\n\nray-overprescribed-through = La semirrecta está determinada por through, endpoint y direction. Se ignora el through especificado.\n\nray-dimension-mismatch = Discrepancia de numDimensions en la semirrecta.\n\n## `<vector>`\n\nvector-overprescribed-head = El vector está determinado por head, tail y displacement. Se ignora el head especificado.\n\nvector-dimension-mismatch = Discrepancia de numDimensions en el vector.\n\n## Atraer y restringir\n\nattract-to-without-nearest-point = No se puede atraer a un `<{ $component }>` porque no tiene la variable de estado nearestPoint.\n\nconstrain-to-without-nearest-point = No se puede restringir a un `<{ $component }>` porque no tiene la variable de estado nearestPoint.\n\nconstrain-to-interior-without-nearest-point = No se puede restringir al interior de un `<{ $component }>` porque no tiene la variable de estado nearestPoint.\n\n## `<choiceInput>`\n\nchoice-input-label-position-ignored = labelPosition se ignora en un choiceInput que no es inline\n\n## Ordenar hijos por índice\n\nchoice-input-indices-count-mismatch = Se ignoran los índices especificados para choiceInput porque su cantidad no coincide con la cantidad de hijos choice.\n\npretzel-indices-count-mismatch = Se ignoran los índices especificados para problem porque su cantidad no coincide con la cantidad de hijos problem.\n\nshuffle-indices-count-mismatch = Se ignoran los índices especificados para shuffle porque su cantidad no coincide con la cantidad de componentes.\n\nindices-ignored-out-of-range = Se ignoran los índices especificados para { $component } porque algunos están fuera de rango.\n\npretzel-indices-repeated = Se ignoran los índices especificados para pretzel porque algunos están repetidos.\n\npretzel-circuit-first-index = Se ignoran los índices especificados para pretzel en modo circuit porque el primer índice debe ser 1.\n\n## `<shuffle>` y `<sort>`\n\nstring-children-need-type = Para que `<{ $component }>` funcione con hijos de texto, se debe especificar el atributo `type`.\n\ninvalid-type-defaulting-to-math = Tipo no válido { $type } para el componente { $component }. Debe ser math, text, number o boolean. Se usa math.\n\nstring-not-valid-component-to-arrange = La cadena "{ $value }" no es un componente válido para { $component }. Se ignora.\n\n## Tipos y variables\n\ninvalid-type-defaulting-to-number = Tipo no válido { $type }, se establece el tipo en number.\n\ninvalid-variable-value = Valor no válido de una variable: `{ $value }`\n\n## Variantes\n\nvariant-index-must-be-number = El índice de variante { $index } debe ser un número\n\nvariant-index-must-be-integer = El índice de variante { $index } debe ser un número entero\n\n## `<sideBySide>`\n\nside-by-side-absolute-widths = `<{ $component }>` no está implementado para medidas absolutas. Los anchos se establecen como relativos.\n\nside-by-side-absolute-margins = `<{ $component }>` no está implementado para medidas absolutas. Los márgenes se establecen como relativos.\n\nside-by-side-no-block-child = `<{ $component }>` no es válido: debe tener al menos un hijo de bloque.\n\n## `<label>`\n\nlabel-for-ignored-on-graphical = Se ignora el atributo `for` en un `<label>` gráfico.\n\nlabel-for-must-resolve-to-one = El atributo `for` de `<label>` debe corresponder exactamente a un componente.\n\nlabel-for-unresolved = No se pudo resolver el atributo `for` de `<label>` a un componente.\n\nlabel-for-answer-with-authored-inputs = El atributo `for` de `<label>` hace referencia a un `<answer>` con entradas escritas explícitamente; haz referencia a la entrada directamente.\n\nlabel-for-answer-without-input = El atributo `for` de `<label>` hace referencia a un `<answer>` que no tiene ninguna entrada que etiquetar.\n\nlabel-for-must-reference-input-or-answer = El atributo `for` de `<label>` debe hacer referencia a una entrada o a un `<answer>`.\n\n## Accesibilidad\n\naccessibility-short-description-or-decorative = Por accesibilidad, `<{ $component }>` debe tener una descripción breve o estar marcado como decorativo.\n\naccessibility-video-short-description = Por accesibilidad, `<video>` debe tener una descripción breve.\n\naccessibility-input-short-description-or-label = Por accesibilidad, `<{ $component }>` debe tener una descripción breve o una etiqueta.\n\naccessibility-answer-input-short-description-or-label = Por accesibilidad, la entrada creada por un `<answer>` debe tener una descripción breve o una etiqueta.\n\naccessibility-short-description-contains-math = Las descripciones breves no deben contener componentes matemáticos como `<{ $component }>`. Expresa las matemáticas con palabras.\n\naccessibility-section-title-insufficient-contrast =\n { $mode ->\n [dark] { $colorName } no tiene suficiente contraste con el texto del encabezado de sección (modo oscuro) ({ NUMBER($ratio, minimumFractionDigits: 2, maximumFractionDigits: 2) }:1; se requiere al menos { $threshold }:1).\n *[other] { $colorName } no tiene suficiente contraste con el texto del encabezado de sección ({ NUMBER($ratio, minimumFractionDigits: 2, maximumFractionDigits: 2) }:1; se requiere al menos { $threshold }:1).\n }\n\n## `<circle>`\n\ncircle-through-points-non-numerical = No está implementado un `<circle>` que pase por { $count } puntos cuando los puntos no tienen valores numéricos.\n\ncircle-too-many-through-points = No se puede calcular una circunferencia que pase por más de 3 puntos.\n\ncircle-overprescribed-radius-center-points = No se puede calcular una circunferencia con radio, centro y puntos de paso especificados a la vez.\n\ncircle-center-with-multiple-points = No se puede calcular una circunferencia con centro especificado que pase por más de 1 punto.\n\ncircle-radius-too-small = No se puede calcular la circunferencia: dado que la distancia entre los dos puntos es { $distance }, el radio especificado { $radius } es demasiado pequeño.\n\ncircle-radius-with-many-points = No se puede crear una circunferencia que pase por más de dos puntos con un radio especificado.\n\ncircle-invalid-center-or-through-points = El centro o los puntos de paso de la circunferencia no son válidos.\n\ncircle-radius-center-with-multiple-points = No se puede calcular el radio de una circunferencia con centro especificado que pase por más de 1 punto.\n\ncircle-change-radius-non-numerical = No se puede cambiar el radio de una circunferencia con puntos de paso no numéricos\n\ncircle-radius-with-points-non-numerical = No se puede crear una circunferencia que pase por más de un punto con un radio especificado cuando no hay valores numéricos.\n\ncircle-change-center-non-numerical = No está implementado cambiar el centro de una circunferencia que pasa por puntos con valores no numéricos.\n\n## `<function>`\n\nfunction-domain-insufficient-dimensions =\n { $intervals ->\n [one] Dimensiones insuficientes para el dominio de la función. El dominio tiene { $intervals } intervalo pero la función tiene { $inputs ->\n [one] { $inputs } entrada\n *[other] { $inputs } entradas\n }.\n *[other] Dimensiones insuficientes para el dominio de la función. El dominio tiene { $intervals } intervalos pero la función tiene { $inputs ->\n [one] { $inputs } entrada\n *[other] { $inputs } entradas\n }.\n }\n\nfunction-domain-invalid-format = Formato no válido para el dominio de la función.\n\nfunction-ignoring-non-numerical =\n { $type ->\n [maximum] Se ignora el máximo no numérico de la función.\n [minimum] Se ignora el mínimo no numérico de la función.\n [extremum] Se ignora el extremo no numérico de la función.\n [point] Se ignora el punto no numérico de la función.\n [slope] Se ignora la pendiente no numérica de la función.\n *[other] Se ignora { $type } no numérico de la función.\n }\n\nfunction-ignoring-empty =\n { $type ->\n [maximum] Se ignora el máximo vacío de la función.\n [minimum] Se ignora el mínimo vacío de la función.\n [extremum] Se ignora el extremo vacío de la función.\n [point] Se ignora el punto vacío de la función.\n *[other] Se ignora { $type } vacío de la función.\n }\n\nfunction-points-too-close = La función contiene dos puntos demasiado próximos entre sí. No se puede definir la función.\n\nfunction-iterates-input-output-mismatch =\n { $inputs ->\n [one] Las iteraciones de una función solo son posibles si el número de entradas es igual al número de salidas. Esta función tiene { $inputs } entrada y { $outputs ->\n [one] { $outputs } salida\n *[other] { $outputs } salidas\n }.\n *[other] Las iteraciones de una función solo son posibles si el número de entradas es igual al número de salidas. Esta función tiene { $inputs } entradas y { $outputs ->\n [one] { $outputs } salida\n *[other] { $outputs } salidas\n }.\n }\n\n## `<sequence>`\n\nsequence-invalid-length = Longitud de la secuencia no válida. Debe ser un entero no negativo.\n\nsequence-invalid-step = Paso de la secuencia no válido. Debe ser un número para una secuencia de tipo { $type }.\n\nsequence-invalid-endpoint-number = El valor de "{ $attribute }" de la secuencia numérica no es válido. Debe ser un número.\n\nsequence-invalid-endpoint-letters = El valor de "{ $attribute }" de la secuencia de letras no es válido. Debe ser una combinación de letras.\n\nsequence-invalid-endpoint = El valor de "{ $attribute }" de la secuencia no es válido.\n\nselect-from-sequence-coprime-not-numbers = Se ignora coprime porque no se están seleccionando números\n\nselect-from-sequence-coprime-with-exclude-combinations = Se ignora coprime porque se especificó excludeCombinations\n\n## Resolución de `target`\n\ntarget-not-found = Destino no válido para `<{ $source }>`: no se encuentra el destino.\n\ntarget-state-variable-not-found = Destino no válido para `<{ $source }>`: no se encuentra una variable de estado llamada "{ $property }" en un `<{ $component }>`.\n\n## `<odeSystem>`\n\node-system-variables-match-independent = Las variables de `<odeSystem>` deben ser distintas de la variable independiente.\n\node-system-duplicate-variable-names = No se pueden definir las funciones del lado derecho de la EDO con nombres de variables dependientes repetidos.\n\node-system-rhs-function-error = No se puede definir la función del lado derecho de la EDO. Error al crear la función de mathjs.\n\n## `<angle>`, `<parabola>` e `<intersection>`\n\nangle-too-many-lines = No se puede definir un ángulo entre { $count } rectas\n\nangle-invalid-through-point = Punto no válido en through de `<angle>`\n\nparabola-vertex-too-many-points = No está implementada una parábola con vértice que pase por más de 1 punto.\n\nparabola-too-many-points = No está implementada una parábola que pase por más de 3 puntos.\n\nintersection-too-many-items = No está implementada la intersección de más de dos objetos\n\n## Otros componentes matemáticos\n\nionic-compound-not-two-ions = No está implementado el compuesto iónico para algo distinto de dos iones.\n\nionic-compound-needs-cation-and-anion = El compuesto iónico solo está implementado para un catión y un anión.\n\nsolve-equations-cannot-evaluate = No se puede resolver la ecuación porque no se pudo evaluar: { $equation }\n\nmath-operators-operand-number-required = Se debe especificar operandNumber al extraer un operando matemático.\n\neigen-decomposition-failed = No se pudieron calcular los valores propios de la matriz\n\n## `<matchesPattern>`\n\nmatches-pattern-parameter-not-in-pattern =\n { $parametersCount ->\n [one] `<matchesPattern>`: el parámetro { $parameters } no aparece en el patrón, por lo que siempre coincidirá con un espacio en blanco.\n *[other] `<matchesPattern>`: los parámetros { $parameters } no aparecen en el patrón, por lo que siempre coincidirán con un espacio en blanco.\n }\n\n## `<graph>`\n\ngraph-grid-invalid = `<graph>`: no se puede interpretar grid="{ $grid }". Debe ser none, medium, dense o dos números positivos separados por un espacio, como grid="1 0.5". No se dibuja ninguna cuadrícula.\n\n## Renderizador PreFigure\n\nprefigure-x-label-position-unsupported = `<graph>`: xLabelPosition="left" no es compatible con el renderizador prefigure; se usa el comportamiento de posición derecha.\n\nprefigure-y-label-position-unsupported = `<graph>`: yLabelPosition="bottom" no es compatible con el renderizador prefigure; se usa el comportamiento de posición superior.\n\nprefigure-invalid-axis-bounds = `<graph>`: los límites de los ejes no son válidos para la conversión a prefigure; se usa el bbox predeterminado (-10,-10,10,10).\n\nprefigure-invalid-width = `<graph>`: el ancho no es válido para la conversión a prefigure; se usa el ancho de diagrama predeterminado 425.\n\nprefigure-invalid-aspect-ratio = `<graph>`: aspectRatio no es válido para la conversión a prefigure; se usa la relación de aspecto predeterminada 1.\n\nprefigure-grid-spacing-too-fine = `<graph>`: el espaciado de la cuadrícula es demasiado fino para los límites de los ejes; se omite la cuadrícula en el renderizador prefigure.\n\nprefigure-annotations-not-rendered = `<graph>`: las anotaciones no se representan si no se usa el renderizador PreFigure.\n\nmultiple-annotations-children = Se encontraron varios hijos `<annotations>` en `<graph>`; se ignoran todos menos el último.\n\n## Referencias a otros componentes\n\ncopy-unrecognized-component-type = No se puede extender ni copiar un tipo de componente desconocido: { $type }.\n\ncopy-prop-not-found = No se encontró la propiedad { $property } en un componente de tipo { $component }\n\ncollect-no-source = No se encontró ninguna fuente para collect.\n\ncollect-invalid-component-type = No se pueden recolectar componentes de tipo `<{ $component }>` porque no es un tipo de componente válido.\n\nreference-index-unavailable = No se puede referenciar el índice `{ $reference }`\n\n## `<callAction>`\n\ncomponent-action-unavailable = No se puede llamar a { $action } en el componente `{ $reference }`\n\n## `<dataFrame>`\n\ndata-frame-inconsistent-row-lengths = Los datos tienen una forma no válida. Las filas tienen longitudes distintas. Encontrado en componentIdx :{ $componentIdx }\n\ndata-frame-duplicate-column-names = Los datos tienen nombres de columna repetidos. Encontrado en componentIdx :{ $componentIdx }\n\ndata-frame-missing-column-name = A los datos les falta el nombre de una columna. Encontrado en componentIdx :{ $componentIdx }\n\n## `<answer>` y puntuación\n\nanswer-award-depends-on-own-response = Un award de esta respuesta depende de la respuesta enviada por el propio answer, lo que provocará un comportamiento inesperado.\n\nanswer-max-num-attempts-in-section-wide-check-work = Establecer `maxNumAttempts` en un `<answer>` dentro de un contenedor con `sectionWideCheckWork` no tiene efecto, porque el número de intentos lo controla el contenedor. Establece `maxNumAttempts` en el contenedor.\n\nnested-section-wide-check-work-max-num-attempts = Establecer `maxNumAttempts` en un contenedor con `sectionWideCheckWork` que está dentro de otro contenedor con `sectionWideCheckWork` no tiene efecto, porque el número de intentos lo controla el contenedor exterior. Establece `maxNumAttempts` en el contenedor exterior.\n\nanswer-attributes-need-symbolic-equality =\n { $attributesCount ->\n [one] El atributo { $attributes } no tendrá efecto si no se establece symbolicEquality.\n *[other] Los atributos { $attributes } no tendrán efecto si no se establece symbolicEquality.\n }\n\nanswer-invalid-type = Tipo no válido para answer: { $type }\n\n## `<module>`, `<conditionalContent>`, `<slider>` y pretzel\n\nmodule-attribute-child-needs-name = Como el componente `<{ $component }>` no tiene nombre, no se puede usar como atributo de módulo\n\nmodule-attribute-name-already-defined = El componente `<{ $component } name="{ $name }">` no se puede usar como atributo de un módulo porque el tipo de componente `<module>` ya tiene definido un atributo "{ $name }".\n\nconditional-content-condition-ignored = Se ignora el atributo `condition` en un `<conditionalContent>` que tiene hijos case o else.\n\nslider-markers-type-mismatch = El tipo de los marcadores no coincide con el tipo del slider.\n\npretzel-problem-needs-statement-and-answer = Pretzel no válido: cada `<problem>` debe contener un `<statement>` y un `<answer>`.\n\npretzel-circuit-first-problem-distractor = Pretzel no válido: en mode="circuit", el primer `<problem>` no puede ser un distractor.\n\n## Valores de atributos\n\nattribute-invalid-values =\n { $valuesCount ->\n [one] Valor no válido { $values } para el atributo `{ $attribute }`; se ignora.\n *[other] Valores no válidos { $values } para el atributo `{ $attribute }`; se ignoran.\n }\n\nattribute-must-be-references = Valor no válido `{ $value }` para el atributo `{ $attribute }`. El atributo debe estar compuesto de referencias que empiecen por `$`.\n\nmath-input-invalid-function-names = <mathInput>: se ignoran nombres de función no válidos en { $attribute }: { $names }. El segmento visible de cada nombre debe tener al menos 2 caracteres (letras o guiones); puede añadirse un sufijo opcional `|<alternativa de mathspeak>`.\n\n## Construcción de componentes a partir del código fuente\n\ncomponent-type-invalid = Tipo de componente no válido: `<{ $componentType }>`\n\nattribute-repeated = No se puede repetir el atributo { $attribute }.\n\nattribute-invalid-for-component = Atributo "{ $attribute }" no válido para un componente de tipo `<{ $componentType }>`.\n\n## Contraste de las definiciones de estilo\n\nstyle-definition-insufficient-contrast =\n La definición de estilo { $styleNumber } no tiene suficiente contraste para { $context ->\n [text-on-background] el color del texto sobre el color de fondo\n [high-contrast] el color de alto contraste sobre el lienzo\n [line] el color de las líneas sobre el lienzo\n [marker] el color de los marcadores sobre el lienzo\n *[text-on-canvas] el color del texto sobre el lienzo\n }{ $mode ->\n [dark] { " (modo oscuro)" }\n *[light] { "" }\n } ({ NUMBER($ratio, minimumFractionDigits: 2, maximumFractionDigits: 2) }:1; se requiere al menos { $threshold }:1).\n\nstyle-definition-dark-mode-text-background-contrast =\n Aunque la definición de estilo { $styleNumber } especifica colores con suficiente contraste en modo claro, los colores de modo oscuro derivados de esos valores no tienen suficiente contraste entre el color del texto y el color de fondo ({ NUMBER($ratio, minimumFractionDigits: 2, maximumFractionDigits: 2) }:1; se requiere al menos { $threshold }:1). { $suggestion ->\n [available] Para lograr suficiente contraste en modo oscuro, aumenta el contraste en modo claro (por ejemplo, con { $lightAttribute }="{ $lightColor }") o define el color de modo oscuro (por ejemplo, con { $darkAttribute }="{ $darkColor }").\n *[none] Para lograr suficiente contraste en modo oscuro, aumenta el contraste en modo claro o sustituye los colores derivados mediante textColorDarkMode o backgroundColorDarkMode.\n }\n\nstyle-definition-dark-mode-text-canvas-contrast =\n Aunque la definición de estilo { $styleNumber } especifica un color de texto con suficiente contraste en modo claro, el color de texto de modo oscuro derivado de ese valor no tiene suficiente contraste sobre el lienzo ({ NUMBER($ratio, minimumFractionDigits: 2, maximumFractionDigits: 2) }:1; se requiere al menos { $threshold }:1). { $suggestion ->\n [available] Para lograr suficiente contraste en modo oscuro, aumenta el contraste en modo claro (por ejemplo, con textColor="{ $lightColor }") o define el color de modo oscuro (por ejemplo, con textColorDarkMode="{ $darkColor }").\n *[none] Para lograr suficiente contraste en modo oscuro, aumenta el contraste en modo claro o sustituye el color derivado mediante textColorDarkMode.\n }\n\nsection-multiple-style-palettes = Una sección solo puede seleccionar un <stylePalette>; se usará el último.\n\n## Variantes únicas\n\nvariant-num-to-select-not-non-negative-integer = no se pueden determinar las variantes únicas de { $component } porque numToSelect no es un entero no negativo.\n\nvariant-num-to-select-not-constant-number = no se pueden determinar las variantes únicas de { $component } porque numToSelect no es un número constante.\n\nvariant-with-replacement-not-constant-boolean = no se pueden determinar las variantes únicas de { $component } porque withReplacement no es un booleano constante.\n\nvariant-select-weight-disables-unique = Las variantes únicas quedan desactivadas en select si alguna opción especifica selectWeight o selectForVariants\n\nvariant-coprime-undetermined = no se pueden determinar las variantes únicas de { $component } porque no se puede determinar si coprime es siempre falso.\n\nvariant-attribute-not-constant = no se pueden determinar las variantes únicas de { $component } porque { $attribute } no es constante.\n\nvariant-attribute-not-number = no se pueden determinar las variantes únicas de { $component } porque { $attribute } no es un número.\n\nvariant-attribute-wrong-type-for-sequence =\n no se pueden determinar las variantes únicas de { $component } de tipo { $type } porque { $attribute } no es { $expected ->\n [letters-combination] una combinación de letras\n [math-expression] una expresión matemática válida\n [integer] un entero\n *[number] un número\n }.\n\nvariant-length-not-integer = no se pueden determinar las variantes únicas de { $component } porque length no es un entero.\n\nvariant-sort-not-implemented = no se han implementado las variantes únicas de un { $component } con sort\n\nvariant-exclude-combinations-not-implemented = no se han implementado las variantes únicas de un { $component } con excludeCombinations\n\nvariant-math-exclude-not-implemented = no se han implementado las variantes únicas de un { $component } de tipo math con exclude\n\nvariant-non-constant-exclude-not-implemented = no se han implementado las variantes únicas de un { $component } con exclude no constante\n\n## Conversión a PreFigure\n\nprefigure-descendant-unsupported = { $subject }: no se admite en el renderizador prefigure de gráficos; se omite el descendiente.\n\nprefigure-descendant-invalid-geometry = { $subject }: geometría no finita o incompleta; se omite el descendiente.\n\nprefigure-curve-label-omitted = { $subject }: las etiquetas no se admiten en los elementos de curva convertidos; se omite la etiqueta.\n\nprefigure-curve-unsupported-definition-type = { $subject }: tipo de definición de función de curva no admitido \'{ $definitionType }\'; se omite el descendiente.\n\nprefigure-region-flip-functions-unsupported = { $subject }: atributo flipFunctions no admitido en regionBetweenCurves; se omite el descendiente.\n\nprefigure-region-non-formula-child = { $subject }: en regionBetweenCurves solo se admiten funciones hijas de tipo fórmula; se omite el descendiente.\n\nprefigure-label-position-unsupported =\n { $subject }: labelPosition \'{ $labelPosition }\' no admitido para { $labelKind ->\n [line-family] una etiqueta de la familia de líneas\n *[point] una etiqueta de punto\n }; se usa la alineación predeterminada de PreFigure.\n\nprefigure-fill-style-unsupported = { $subject }: PreFigure no admite el estilo de relleno \'{ $fillStyle }\'; se usa un relleno sólido.\n\nprefigure-line-style-unknown = { $subject }: estilo de línea desconocido \'{ $lineStyle }\'; se omite de la salida de PreFigure.\n\nprefigure-marker-style-mapped-to-diamond = { $subject }: el estilo de marcador \'{ $markerStyle }\' se asigna al estilo \'diamond\' de PreFigure.\n\nprefigure-marker-style-unsupported = { $subject }: PreFigure no admite el estilo de marcador \'{ $markerStyle }\'; se usa el estilo predeterminado.\n\n## Anotaciones de PreFigure\n\nannotation-ref-unresolvable = `<annotation>`: `ref` no válido; no se puede resolver el destino. Se omite la anotación.\n\nannotation-ref-multiple-targets = `<annotation>`: `ref` se resolvió a varios destinos; se usa el primero.\n\nannotation-ref-outside-graph = `<annotation>`: `ref` no válido; el destino está fuera del gráfico que lo contiene. Se omite la anotación.\n\nannotation-ref-unsupported-target = `<annotation>`: `ref` no válido; el destino no es un objeto gráfico admitido en la conversión a prefigure. Se omite la anotación.\n\nannotation-text-missing = `<annotation>`: falta `text` o está vacío; se emite texto vacío.\n\n## Composites y referencias\n\ncomposite-circular-dependency =\n { $componentType ->\n [none] Se detectó una dependencia circular.\n *[other] Se detectó una dependencia circular en la que participa un componente `<{ $componentType }>`.\n }\n\nreference-no-referent = No se encontró ningún referente para la referencia: `{ $reference }`\n\nreference-multiple-referents = Se encontraron varios referentes para la referencia: `{ $reference }`\n\n## Hijos que no coinciden\n\nchildren-invalid-attribute-format = Formato no válido para el atributo { $attribute } de `<{ $componentType }>`.\n\nchildren-invalid = Hijos no válidos para `<{ $componentType }>`: se encontraron hijos no válidos: { $children }\n\n## Se recurre a un valor predeterminado\n\nattribute-value-invalid-using-default = Valor no válido `{ $value }` para el atributo `{ $attribute }`; se usa el valor `{ $default }`\n\n## Carga de una versión de DoenetML\n\ndoenetml-version-not-found =\n { $fallback ->\n [none] No se encontró la versión { $version } de DoenetML.\n *[other] No se encontró la versión { $version } de DoenetML. Se recurrirá a la versión { $fallback }\n }\n\n## Lectura del DoenetML\n\n# Estos mensajes citan el propio texto del autor —`$tag`, `$value`,\n# `$attribute`…—, que se reproduce tal cual.\n\nparse-invalid-doenetml = DoenetML no válido: { $content }\n\nparse-tag-missing-close-tag = DoenetML no válido: la etiqueta `{ $tag }` no tiene etiqueta de cierre. Se esperaba una etiqueta autocerrada o una etiqueta `</{ $tagName }>`.\n\nparse-tag-error = DoenetML no válido: error en la etiqueta `<{ $tagName }>`\n\nparse-attribute-missing-value = DoenetML no válido: parece que al atributo `{ $attribute }` le falta un valor.\n\nparse-attribute-invalid = DoenetML no válido: atributo no válido `{ $attribute }`\n\nparse-attribute-value-invalid = DoenetML no válido: valor de atributo no válido `{ $value }`\n\n# $quote es la comilla que cerraría el par: `"` o `\'`.\nparse-attribute-value-quote-mismatch = DoenetML no válido: valor de atributo no válido `{ $value }`. Las comillas no coinciden. Parece que falta una `{ $quote }`\n\nparse-open-tag-name-missing = DoenetML no válido: se encontró una etiqueta sin nombre, por ejemplo `<`\n\nparse-tag-not-closed = DoenetML no válido: la etiqueta `{ $tag }` no se cerró (parece que falta un `>`).\n\nparse-self-closing-tag-name-missing = DoenetML no válido: se encontró una etiqueta sin nombre `<{ $content }>`\n\nparse-self-closing-tag-not-closed = DoenetML no válido: la etiqueta `{ $tag }` no se cerró (parece que falta `/>`).\n\nparse-tag-invalid-attributes = DoenetML no válido: la etiqueta `{ $tag }` no es válida. Puede que tenga atributos incorrectos.\n\nparse-close-tag-name-missing = DoenetML no válido: se encontró una etiqueta de cierre sin nombre, por ejemplo `</`\n\nparse-attribute-value-unquoted = Los valores de los atributos deben ir entre comillas: `{ $attribute }="{ $value }"`\n\nparse-close-tag-without-open-tag = DoenetML no válido: se encontró la etiqueta de cierre `{ $tag }`, pero no hay ninguna etiqueta de apertura que le corresponda\n\nparse-close-tag-mismatched = DoenetML no válido: la etiqueta de cierre no coincide. Se esperaba `</{ $expected }>`. Se encontró `{ $found }`\n\nparser-node-unconvertible = No se pudo convertir el nodo { $node } en un nodo Dast.\n\n## Nombres\n\nname-attribute-invalid =\n Atributo name=\'{ $name }\' no válido. { $reason ->\n [characters] Los nombres solo pueden contener letras, números, guiones bajos o guiones.\n *[start] Los nombres deben empezar por una letra.\n }\n\ncomponent-name-invalid-start = Nombre de componente "{ $name }" no válido. Los nombres deben empezar por una letra.\n\n## Azúcar sintáctico de `<answer>`\n\nanswer-video-watched-missing-video = Un `<answer>` de tipo videoWatched debe tener un atributo video\n\nanswer-video-watched-video-not-reference = Un `<answer>` de tipo videoWatched debe tener un atributo video que sea una referencia\n\nanswer-name-not-single-text = El atributo name de `<answer>` debe tener un único hijo de texto\n\n## Referencias a otro documento\n\nexternal-doenetml-recursion-limit = No se pudo obtener el DoenetML externo por exceso de niveles de recursión. ¿Hay alguna referencia circular?\n\nexternal-doenetml-unavailable = No se pudo obtener el DoenetML de { $attribute }="{ $uri }"\n\nexternal-doenetml-type-mismatch = El DoenetML obtenido de { $attribute }="{ $uri }" no es válido: no coincide con el tipo de componente "{ $componentType }"\n\n## Sintaxis obsoleta\n\n# `[deprecation]` es una marca literal que abre los tres mensajes; se deja\n# igual. $component es `none` cuando el cambio de nombre vale para todos los\n# componentes que aceptan el atributo y nombrar uno sería engañoso.\n\ndeprecated-attribute-renamed =\n { $component ->\n [none] [deprecation] El atributo `{ $from }` está obsoleto; usa `{ $to }` en su lugar.\n *[other] [deprecation] El atributo `{ $from }` de `<{ $component }>` está obsoleto; usa `{ $to }` en su lugar.\n }\n\ndeprecated-attribute-renamed-conflict =\n { $component ->\n [none] [deprecation] El atributo `{ $from }` está obsoleto y se ignora porque también se especificó `{ $to }`.\n *[other] [deprecation] El atributo `{ $from }` de `<{ $component }>` está obsoleto y se ignora porque también se especificó `{ $to }`.\n }\n\ndeprecated-attribute-ignored = [deprecation] El atributo `{ $attribute }` de `<{ $component }>` está obsoleto y se ignora.\n\n\n## Cobertura de idiomas\n\n# $locale es la etiqueta de idioma del documento, tal como se declaró.\npluralize-english-only = `<pluralize>` solo puede pluralizar en inglés, así que su texto queda sin cambios en un documento escrito en { $locale }. Escribe el plural directamente o indícalo con el atributo `pluralForm`.\n\n\n## Comprobación del esquema\n\n# $tag, $parent y $attribute reproducen lo que escribió quien redacta el\n# documento y se dejan tal cual; los signos `<`, `>` y las comillas invertidas\n# que los rodean son puntuación de este catálogo, no parte del nombre.\n\nschema-element-unrecognized = El elemento `<{ $tag }>` no es un elemento de Doenet reconocido.\n\nschema-element-not-allowed-at-root = El elemento `<{ $tag }>` no se permite en la raíz del documento.\n\nschema-element-not-allowed-inside = El elemento `<{ $tag }>` no se permite dentro de `<{ $parent }>`.\n\nschema-attribute-unrecognized = El elemento `<{ $tag }>` no tiene ningún atributo llamado `{ $attribute }`.\n\n# $allowed son los valores admitidos, cada uno ya entre comillas dobles y\n# enumerados según el idioma de quien lee. $isList indica si el atributo acepta\n# varios a la vez.\nschema-attribute-value-not-allowed =\n { $isList ->\n [true] El atributo `{ $attribute }` del elemento `<{ $tag }>` debe ser una lista en la que cada elemento sea uno de: { $allowed }\n *[other] El atributo `{ $attribute }` del elemento `<{ $tag }>` debe ser uno de: { $allowed }\n }\n\n\n## Los cuadros de error de la familia `<select>`\n##\n## Los recuentos llegan como números, de modo que una lengua que concuerde con\n## ellos puede seleccionar sobre ellos. Los nombres de componentes y atributos\n## (`selectFromSequence`, `selectPrimeNumbers`, `from`, `to`, `step`) son\n## identificadores de DoenetML y se dejan tal cual.\n\nselect-variant-name-option-count-mismatch = Nombre de variante no válido para select. El nombre de variante { $variantName } aparece en { $numOptions } opciones, pero el número a seleccionar es { $numToSelect }.\n\nselect-variant-name-without-options = Se especifican variantes para select, pero no se especifica ninguna opción para el posible nombre de variante: { $variantName }.\n\nselect-variant-name-not-possible = El nombre de variante { $variantName } especificado para select no es un nombre de variante posible.\n\nselect-too-few-options = No se pueden seleccionar { $numToSelect } componentes de solo { $numOptions }.\n\nselect-from-sequence-too-few-values = No se pueden seleccionar { $numToSelect } valores de una secuencia de longitud { $length }.\n\nselect-from-sequence-indices-count-mismatch = El número de índices especificados para select debe coincidir con el número a seleccionar\n\nselect-from-sequence-indices-not-integers = Todos los índices especificados para select deben ser enteros\n\nselect-from-sequence-index-excluded = Se especificó un índice de selectfromsequence que estaba excluido\n\nselect-from-sequence-indices-excluded-combination = Se especificaron índices de selectfromsequence que formaban una combinación excluida\n\nselect-from-sequence-coprime-not-positive-integers = No se pueden seleccionar combinaciones coprimas porque no se están seleccionando enteros positivos.\n\nselect-from-sequence-coprime-common-factor = No se pueden seleccionar números coprimos. Todos los valores posibles comparten un factor común. (Los valores especificados de "from" o "to" deben ser coprimos con "step".)\n\nselect-from-sequence-coprime-single-number = No se pueden seleccionar combinaciones coprimas a partir de un único número que no sea 1.\n\nselect-from-sequence-excluded-too-many-combinations = Se excluyó más del 70 % de las combinaciones en selectFromSequence\n\nselect-from-sequence-coprime-none-found = No se pudieron seleccionar números coprimos. Todos los valores posibles comparten un factor común.\n\nselect-from-sequence-too-few-unique-values = No se pueden seleccionar { $numToSelect } valores únicos de una secuencia de longitud { $numPossibleValues }\n\nselect-prime-numbers-too-few-values = No se pueden seleccionar { $numToSelect } valores de una lista de primos de longitud { $numValues }\n\nselect-prime-numbers-values-count-mismatch = El número de valores especificados para select debe coincidir con el número a seleccionar\n\nselect-prime-numbers-values-not-prime = Todos los valores especificados para select prime number deben estar en la lista de primos\n\nselect-prime-numbers-values-excluded-combination = Se especificaron valores de selectPrimeNumbers que formaban una combinación excluida\n\nselect-prime-numbers-excluded-too-many-combinations = Se excluyó más del 70 % de las combinaciones en selectPrimeNumbers\n\nselect-random-combination-fluke = Por una casualidad extremadamente improbable, no se pudo seleccionar una combinación de valores aleatorios\n\nselect-random-value-fluke = Por una casualidad extremadamente improbable, no se pudo seleccionar un valor aleatorio\n';
|
|
1480
|
-
const esEditor = '# Superficies del editor: el pie, el panel de diagnósticos, el selector de\n# variantes, el botón de accesibilidad y el panel de ayuda contextual.\n# Se selecciona con `uiLocale`.\n#\n# `WCAG AA` es el nombre de la norma y no se traduce.\n\n\n## Los controles del visor\n\neditor-update-viewer =\n { $action ->\n [reset] Reiniciar\n *[update] Actualizar\n }\n\neditor-update-viewer-title =\n { $shortcut ->\n [none] { $word } el visor\n *[other] { $word } el visor { $shortcut }\n }\n\n\n## El selector de variantes\n\neditor-variant = Variante\neditor-variant-filter = Filtrar...\neditor-variant-next = Seleccionar la variante siguiente\neditor-variant-previous = Seleccionar la variante anterior\n\n\n## El botón de estado de accesibilidad\n\neditor-accessibility-title =\n { $status ->\n [violations] Se detectó una infracción de accesibilidad WCAG AA. Pulse para { $action ->\n [close] cerrar\n *[open] abrir\n } el informe de accesibilidad.\n [advisories] Pulse para { $action ->\n [close] cerrar\n *[open] abrir\n } el informe de accesibilidad. No se detectaron infracciones WCAG AA, pero hay recomendaciones adicionales de accesibilidad.\n *[clean] Pulse para { $action ->\n [close] cerrar\n *[open] abrir\n } el informe de accesibilidad. No se detectó ningún problema de accesibilidad.\n }\n\neditor-accessibility-label =\n { $status ->\n [violations] Se detectó una infracción de accesibilidad WCAG AA. Se { $count ->\n [one] encontró { $count } infracción WCAG AA\n *[other] encontraron { $count } infracciones WCAG AA\n }. Pulse para { $action ->\n [close] cerrar\n *[open] abrir\n } el informe de accesibilidad.\n [advisories] No se detectaron infracciones WCAG AA. Se { $count ->\n [one] encontró { $count } recomendación adicional de accesibilidad\n *[other] encontraron { $count } recomendaciones adicionales de accesibilidad\n }. Pulse para { $action ->\n [close] cerrar\n *[open] abrir\n } el informe de accesibilidad.\n *[clean] No se detectaron infracciones WCAG AA. Pulse para { $action ->\n [close] cerrar\n *[open] abrir\n } el informe de accesibilidad.\n }\n\neditor-accessibility-badge = WCAG\n\n\n## El pie\n\neditor-version-title = Versión de DoenetML { $version }\n\neditor-tab-help = Ayuda contextual\neditor-tab-help-short = Contexto\neditor-tab-errors = Errores\neditor-tab-warnings = Advertencias\neditor-tab-info = Información\neditor-tab-accessibility = Accesibilidad\neditor-tab-responses = Respuestas enviadas\n\neditor-tab-with-count = { $label }: { $count }\n\neditor-options = Opciones del editor\neditor-format-as-doenetml = Formatear como DoenetML\neditor-format-as-xml = Formatear como XML\n\n\n## El panel de diagnósticos\n\neditor-diagnostic-line = Línea n.º { $line }\n\neditor-no-errors = Sin errores\neditor-no-warnings = Sin advertencias\neditor-no-info = Sin diagnósticos informativos\n\neditor-show-info-annotations = Mostrar los diagnósticos informativos en el editor\neditor-show-accessibility-annotations = Mostrar los diagnósticos de accesibilidad en el editor\n\neditor-accessibility-learn-more = Descubra cómo Doenet aborda la accesibilidad\n\neditor-accessibility-violations-heading = Infracciones de accesibilidad ({ $standard })\n\neditor-accessibility-other-heading = Otros problemas de accesibilidad\neditor-none-found = No se encontró ninguno\n\n\n## Respuestas enviadas\n\neditor-no-responses = Todavía no hay respuestas enviadas\neditor-response-answer-id = Id. de respuesta\neditor-response-response = Respuesta\neditor-response-credit = Puntuación\neditor-response-submitted = Enviada\n\n\n## El panel de ayuda contextual\n##\n## Los fragmentos con formato — un nombre de elemento en `<code>`, un enlace —\n## llegan como argumentos y se vuelven a insertar después de formatear el\n## mensaje, de modo que la traducción decide dónde va cada uno.\n\nhelp-placeholder = Coloque el cursor sobre el nombre de una etiqueta, un atributo o { $ref } para ver la documentación.\n\nhelp-unsupported-ref-chain = Todavía no hay ayuda para las referencias de varias partes como { $example }.\n\nhelp-unresolved-ref =\n { $reason ->\n [notFound] No se encontró ningún referente para la referencia: { $ref }.\n [multiple] Se encontraron varios referentes para la referencia: { $ref }.\n *[indeterminate] No se pudo determinar un referente para { $ref }.\n }\n\nhelp-learn-about-references = Más información sobre las referencias →\nhelp-reference-page = Página de referencia →\n\nhelp-suggestions-header =\n { $location ->\n [inside] Dentro de { $element }\n *[top] En el nivel superior\n }{ $allowed ->\n [none] { " — aquí no va nada." }\n [text] { " — escriba texto aquí." }\n [text-and-components] { " — escriba texto aquí o pruebe con:" }\n *[components] { " — puede probar con:" }\n }\n\nhelp-suggestions-footer = Pulse { $shortcut } para ver los { $total } componentes.\n\nhelp-name-summary = { $name } — { $summary }\n\nhelp-ref-is-reference =\n { $line ->\n [none] { $ref } es una referencia a { $target }.\n *[other] { $ref } es una referencia a { $target } (línea { $line }).\n }\n\nhelp-ref-derived-from =\n { $line ->\n [none] Introducida por { $owner } como { $role }.\n *[other] Introducida por { $owner } en la línea { $line } como { $role }.\n }\n\nhelp-property-is-reference =\n { $line ->\n [none] { $ref } es una referencia a la propiedad { $property } de { $element }.\n *[other] { $ref } es una referencia a la propiedad { $property } de { $element } (línea { $line }).\n }\n\nhelp-kind-attribute = atributo\nhelp-kind-snippet = fragmento\nhelp-kind-array-entry = entrada de arreglo\n\nhelp-default = Valor predeterminado:\nhelp-active-default = Valor predeterminado activo:\n\nhelp-style-number-annotation = { " " }(styleNumber { $styleNumber })\n\nhelp-allowed-values =\n { $perItem ->\n [true] Valores admitidos (uno por elemento):\n *[other] Valores admitidos:\n }\n\nhelp-suggested-values = Valores sugeridos:\n\nhelp-inserts = Inserta:\n\nhelp-coordinates =\n { $count ->\n [one] Coordenada:\n *[other] Coordenadas:\n }\n\nhelp-type = Tipo:\n\nhelp-resolved-style = Estilo resuelto (styleNumber { $styleNumber }):\n\nhelp-resolved-function-names = Nombres de función resueltos:\nhelp-reset-list = Lista restablecida en esta entrada:\nhelp-added-on-input = Añadidos en esta entrada:\nhelp-removed-on-input = Eliminados en esta entrada:\n\nhelp-reset-overrides = { $reset } prevalece sobre { $additional } y { $removed }.\n';
|
|
1481
|
-
const BUNDLED_TRANSLATIONS = {
|
|
1482
|
-
es: {
|
|
1483
|
-
chrome: esChrome,
|
|
1484
|
-
content: esContent,
|
|
1485
|
-
diagnostics: esDiagnostics,
|
|
1486
|
-
editor: esEditor
|
|
1487
|
-
}
|
|
1488
|
-
};
|
|
1489
|
-
[
|
|
1490
|
-
DEFAULT_LOCALE,
|
|
1491
|
-
...Object.keys(BUNDLED_TRANSLATIONS)
|
|
1492
|
-
];
|
|
1493
|
-
function bundledResources(namespaces, { includeEnglish = false } = {}) {
|
|
1494
|
-
const resources = {};
|
|
1495
|
-
if (includeEnglish) {
|
|
1496
|
-
resources[DEFAULT_LOCALE] = pick$1(EN_CATALOGS, namespaces);
|
|
1497
|
-
}
|
|
1498
|
-
for (const [locale, catalogs] of Object.entries(BUNDLED_TRANSLATIONS)) {
|
|
1499
|
-
resources[locale] = pick$1(catalogs, namespaces);
|
|
1500
|
-
}
|
|
1501
|
-
return resources;
|
|
1502
|
-
}
|
|
1503
|
-
function pick$1(catalogs, namespaces) {
|
|
1504
|
-
const picked = {};
|
|
1505
|
-
for (const namespace of namespaces) {
|
|
1506
|
-
picked[namespace] = catalogs[namespace];
|
|
1507
|
-
}
|
|
1508
|
-
return combineCatalogs(picked);
|
|
1509
|
-
}
|
|
1510
|
-
bundledResources(
|
|
1511
|
-
CHROME_NAMESPACES,
|
|
1512
|
-
{ includeEnglish: true }
|
|
1513
|
-
);
|
|
1483
|
+
({
|
|
1484
|
+
[DEFAULT_LOCALE]: englishResources(CHROME_NAMESPACES)
|
|
1485
|
+
});
|
|
1514
1486
|
const CODE_SPLIT_CATALOGS = typeof __DOENET_CODE_SPLIT_CATALOGS__ === "undefined" || __DOENET_CODE_SPLIT_CATALOGS__;
|
|
1515
|
-
const LAZY_CATALOG_MODULES = CODE_SPLIT_CATALOGS ? /* @__PURE__ */ Object.assign({
|
|
1487
|
+
const LAZY_CATALOG_MODULES = CODE_SPLIT_CATALOGS ? /* @__PURE__ */ Object.assign({
|
|
1488
|
+
"../locales/de/chrome.ftl": () => import("./chrome-CUUTt8Kx-CUUTt8Kx.js").then((m2) => m2["default"]),
|
|
1489
|
+
"../locales/de/content.ftl": () => import("./content-V7-P1x8g-V7-P1x8g.js").then((m2) => m2["default"]),
|
|
1490
|
+
"../locales/de/diagnostics.ftl": () => import("./diagnostics-DirtEmHL-DirtEmHL.js").then((m2) => m2["default"]),
|
|
1491
|
+
"../locales/de/editor.ftl": () => import("./editor-CcpCA-P4-CcpCA-P4.js").then((m2) => m2["default"]),
|
|
1492
|
+
"../locales/es/chrome.ftl": () => import("./chrome-CxczjR9L-CxczjR9L.js").then((m2) => m2["default"]),
|
|
1493
|
+
"../locales/es/content.ftl": () => import("./content-CNOsHENE-CNOsHENE.js").then((m2) => m2["default"]),
|
|
1494
|
+
"../locales/es/diagnostics.ftl": () => import("./diagnostics-Ym7cNYqW-Ym7cNYqW.js").then((m2) => m2["default"]),
|
|
1495
|
+
"../locales/es/editor.ftl": () => import("./editor-D7ueEssQ-D7ueEssQ.js").then((m2) => m2["default"]),
|
|
1496
|
+
"../locales/fr/chrome.ftl": () => import("./chrome-BxeiXzYP-BxeiXzYP.js").then((m2) => m2["default"]),
|
|
1497
|
+
"../locales/fr/content.ftl": () => import("./content-BvUWw9KK-BvUWw9KK.js").then((m2) => m2["default"]),
|
|
1498
|
+
"../locales/fr/diagnostics.ftl": () => import("./diagnostics-Dv3tKIJO-Dv3tKIJO.js").then((m2) => m2["default"]),
|
|
1499
|
+
"../locales/fr/editor.ftl": () => import("./editor-CapWY6t5-CapWY6t5.js").then((m2) => m2["default"]),
|
|
1500
|
+
"../locales/hnj/chrome.ftl": () => import("./chrome-CLuS0YrU-CLuS0YrU.js").then((m2) => m2["default"]),
|
|
1501
|
+
"../locales/hnj/content.ftl": () => import("./content-By_oRFIe-By_oRFIe.js").then((m2) => m2["default"]),
|
|
1502
|
+
"../locales/hnj/diagnostics.ftl": () => import("./diagnostics-BKuKvU6t-BKuKvU6t.js").then((m2) => m2["default"]),
|
|
1503
|
+
"../locales/hnj/editor.ftl": () => import("./editor-B6-NJBVs-B6-NJBVs.js").then((m2) => m2["default"]),
|
|
1504
|
+
"../locales/it/chrome.ftl": () => import("./chrome-BgtP1uav-BgtP1uav.js").then((m2) => m2["default"]),
|
|
1505
|
+
"../locales/it/content.ftl": () => import("./content-CpQ6IHzs-CpQ6IHzs.js").then((m2) => m2["default"]),
|
|
1506
|
+
"../locales/it/diagnostics.ftl": () => import("./diagnostics-CH_aro1x-CH_aro1x.js").then((m2) => m2["default"]),
|
|
1507
|
+
"../locales/it/editor.ftl": () => import("./editor-LYCPn3J3-LYCPn3J3.js").then((m2) => m2["default"]),
|
|
1508
|
+
"../locales/nl/chrome.ftl": () => import("./chrome-0XtaGdf2-0XtaGdf2.js").then((m2) => m2["default"]),
|
|
1509
|
+
"../locales/nl/content.ftl": () => import("./content-KY2omZn--KY2omZn-.js").then((m2) => m2["default"]),
|
|
1510
|
+
"../locales/nl/diagnostics.ftl": () => import("./diagnostics-BtfrNhYc-BtfrNhYc.js").then((m2) => m2["default"]),
|
|
1511
|
+
"../locales/nl/editor.ftl": () => import("./editor-C3hzpB0d-C3hzpB0d.js").then((m2) => m2["default"]),
|
|
1512
|
+
"../locales/ru/chrome.ftl": () => import("./chrome-CHfM-9id-CHfM-9id.js").then((m2) => m2["default"]),
|
|
1513
|
+
"../locales/ru/content.ftl": () => import("./content-ZVWN3mh4-ZVWN3mh4.js").then((m2) => m2["default"]),
|
|
1514
|
+
"../locales/ru/diagnostics.ftl": () => import("./diagnostics-ChJ-E3yU-ChJ-E3yU.js").then((m2) => m2["default"]),
|
|
1515
|
+
"../locales/ru/editor.ftl": () => import("./editor-DGGxFNYi-DGGxFNYi.js").then((m2) => m2["default"]),
|
|
1516
|
+
"../locales/so/chrome.ftl": () => import("./chrome-7hfpQiks-7hfpQiks.js").then((m2) => m2["default"]),
|
|
1517
|
+
"../locales/so/content.ftl": () => import("./content-SeQXZJLW-SeQXZJLW.js").then((m2) => m2["default"]),
|
|
1518
|
+
"../locales/so/diagnostics.ftl": () => import("./diagnostics-Cg1JlAdR-Cg1JlAdR.js").then((m2) => m2["default"]),
|
|
1519
|
+
"../locales/so/editor.ftl": () => import("./editor-BdAbY--0-BdAbY--0.js").then((m2) => m2["default"]),
|
|
1520
|
+
"../locales/zh/chrome.ftl": () => import("./chrome-BCorNRin-BCorNRin.js").then((m2) => m2["default"]),
|
|
1521
|
+
"../locales/zh/content.ftl": () => import("./content-TxcmVl1n-TxcmVl1n.js").then((m2) => m2["default"]),
|
|
1522
|
+
"../locales/zh/diagnostics.ftl": () => import("./diagnostics-IJgoyYsM-IJgoyYsM.js").then((m2) => m2["default"]),
|
|
1523
|
+
"../locales/zh/editor.ftl": () => import("./editor-Dgbver3W-Dgbver3W.js").then((m2) => m2["default"])
|
|
1524
|
+
}) : {};
|
|
1516
1525
|
const CATALOG_PATH_PATTERN = /\/locales\/([^/]+)\/([^/]+)\.ftl$/;
|
|
1517
1526
|
function isCatalogNamespace(name2) {
|
|
1518
1527
|
return CATALOG_NAMESPACES.includes(name2);
|
|
@@ -1545,7 +1554,6 @@ function loadersFromModules(modules) {
|
|
|
1545
1554
|
return loaders;
|
|
1546
1555
|
}
|
|
1547
1556
|
loadersFromModules(LAZY_CATALOG_MODULES);
|
|
1548
|
-
bundledResources(WORKER_NAMESPACES);
|
|
1549
1557
|
const DIAGNOSTIC_CODES = {
|
|
1550
1558
|
"doenet-i0001": "line-segment-attributes-ignored-with-endpoints",
|
|
1551
1559
|
"doenet-i0002": "line-segment-midpoint-offset-without-midpoint",
|
|
@@ -67269,7 +67277,7 @@ function ExternalVirtualKeyboard({
|
|
|
67269
67277
|
}
|
|
67270
67278
|
);
|
|
67271
67279
|
}
|
|
67272
|
-
const version = "0.7.21-dev.
|
|
67280
|
+
const version = "0.7.21-dev.410";
|
|
67273
67281
|
const latestDoenetmlVersion = version;
|
|
67274
67282
|
function subscribeToPinnedTheme() {
|
|
67275
67283
|
return () => {
|