@lokascript/i18n 4.0.1 → 4.1.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/constants.ts","../src/parser/create-provider.ts","../src/dictionaries/es.ts","../src/parser/es.ts","../src/dictionaries/ja.ts","../src/parser/ja.ts","../src/dictionaries/fr.ts","../src/parser/fr.ts","../src/dictionaries/de.ts","../src/parser/de.ts","../src/dictionaries/ar.ts","../src/parser/ar.ts","../src/dictionaries/ko.ts","../src/parser/ko.ts","../src/dictionaries/zh.ts","../src/parser/zh.ts","../src/dictionaries/tr.ts","../src/parser/tr.ts","../src/dictionaries/id.ts","../src/parser/id.ts","../src/dictionaries/qu.ts","../src/parser/qu.ts","../src/dictionaries/sw.ts","../src/parser/sw.ts","../src/dictionaries/pt.ts","../src/parser/pt.ts","../src/dictionaries/it.ts","../src/parser/it.ts","../src/dictionaries/vi.ts","../src/parser/vi.ts","../src/dictionaries/pl.ts","../src/parser/pl.ts","../src/dictionaries/ru.ts","../src/parser/ru.ts","../src/dictionaries/uk.ts","../src/parser/uk.ts","../src/dictionaries/hi.ts","../src/parser/hi.ts","../src/dictionaries/bn.ts","../src/parser/bn.ts","../src/dictionaries/th.ts","../src/parser/th.ts","../src/dictionaries/ms.ts","../src/parser/ms.ts","../src/dictionaries/tl.ts","../src/parser/tl.ts","../src/dictionaries/he.ts","../src/parser/he.ts","../src/parser/locale-manager.ts","../src/dictionaries/en.ts","../src/grammar/types.ts","../src/grammar/profiles/index.ts","../src/grammar/direct-mappings.ts"],"names":[],"mappings":"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","file":"browser.cjs","sourcesContent":["// packages/i18n/src/constants.ts\n\n/**\n * Shared Constants for i18n Package\n *\n * Centralizes keyword definitions to eliminate duplication across\n * transformer.ts, create-provider.ts, and other modules.\n */\n\nimport type { SemanticRole } from './grammar/types';\n\n// =============================================================================\n// English Modifier → Semantic Role Mappings\n// =============================================================================\n\n/**\n * Maps English modifier keywords to their semantic roles.\n * Used by both the grammar transformer and keyword provider.\n */\nexport const ENGLISH_MODIFIER_ROLES: Readonly<Record<string, SemanticRole>> = {\n to: 'destination',\n into: 'destination',\n from: 'source',\n with: 'style',\n by: 'quantity',\n as: 'method',\n on: 'event',\n over: 'duration',\n for: 'duration',\n} as const;\n\n/**\n * Maps a command verb to its **primary** semantic role — the role of the\n * command's first/leading argument when no explicit modifier keyword marks it.\n *\n * The generic argument parser in the transformer defaults the first unmarked\n * argument to `patient`, which is correct for the majority of commands\n * (`toggle .x`, `add .x`, …) but wrong for commands whose leading argument is a\n * non-patient — e.g. `wait <duration>`. Marking a duration as a patient emits a\n * spurious object-marker in the target language (Chinese `等待 把 1s`, ungrammatical;\n * Japanese `1s を 待つ`; Korean `1s 를 대기`), which the semantic parser then fails to\n * match — dropping the command.\n *\n * Only commands whose primary role is **not** `patient` are listed here (the\n * `patient` default already covers the rest). Mirrors the `primaryRole` field of\n * the semantic package's command schemas (`@lokascript/semantic`); kept in sync by\n * `schema-alignment.test.ts` so this local copy can't drift without the bundle\n * having to pull in the whole semantic graph.\n *\n * @see packages/i18n/src/schema-alignment.test.ts\n * @see docs-internal/ZH_BLOCK_BODY_SCOPE.md (#1 — transformer role model)\n */\nexport const COMMAND_PRIMARY_ROLES: Readonly<Record<string, SemanticRole>> = {\n set: 'destination',\n on: 'event',\n trigger: 'event',\n send: 'event',\n wait: 'duration',\n fetch: 'source',\n get: 'source',\n if: 'condition',\n unless: 'condition',\n while: 'condition',\n when: 'condition', // reactive `when <expr> changes` — the watched expression\n repeat: 'loopType',\n go: 'destination',\n scroll: 'destination',\n tell: 'destination',\n default: 'destination',\n swap: 'destination',\n // morph deliberately absent: its schema primaryRole is `patient` (the\n // element being morphed — aligned with the transformer's patient marking\n // in the session-9 role-layout swap), and patient is the default.\n bind: 'destination',\n} as const;\n\n/**\n * English modifier keywords (derived from ENGLISH_MODIFIER_ROLES)\n */\nexport const ENGLISH_MODIFIERS: Set<string> = new Set([\n 'to',\n 'from',\n 'into',\n 'with',\n 'at',\n 'in',\n 'of',\n 'as',\n 'by',\n 'before',\n 'after',\n 'without',\n]);\n\n// =============================================================================\n// English Commands\n// =============================================================================\n\n/**\n * English commands - the canonical set that the runtime understands.\n */\nexport const ENGLISH_COMMANDS: Set<string> = new Set([\n 'add',\n 'append',\n 'async',\n 'beep',\n 'blur', // v0.9.90 phase 1\n 'break',\n 'breakpoint', // v0.9.90 phase 1\n 'call',\n 'clear', // v0.9.90 phase 1\n 'close', // v0.9.90 phase 1\n 'continue',\n 'decrement',\n 'default',\n 'empty', // v0.9.90 phase 1\n 'exit',\n 'fetch',\n 'focus', // v0.9.90 phase 1\n 'for',\n 'get',\n 'go',\n 'halt',\n 'hide',\n 'if',\n 'increment',\n 'install',\n 'js',\n 'log',\n 'make',\n 'measure',\n 'morph',\n 'open', // v0.9.90 phase 1\n 'pick',\n 'process',\n 'push',\n 'put',\n 'remove',\n 'render',\n 'repeat',\n 'replace',\n 'reset', // v0.9.90 phase 1\n 'return',\n 'select', // v0.9.90 phase 1\n 'send',\n 'set',\n 'settle',\n 'show',\n 'swap',\n 'take',\n 'tell',\n 'throw',\n 'toggle',\n 'transition',\n 'trigger',\n 'unless',\n 'wait',\n // v2.x reactive + realtime + service-worker DSL commands\n 'live',\n 'bind',\n 'eventsource',\n 'socket',\n 'worker',\n 'intercept',\n]);\n\n// =============================================================================\n// English Keywords (Non-Commands)\n// =============================================================================\n\n/**\n * English keywords that are not commands.\n */\nexport const ENGLISH_KEYWORDS: Set<string> = new Set([\n // Flow control\n 'then',\n 'else',\n 'end',\n 'and',\n 'or',\n 'not',\n // Conditionals\n 'if',\n 'unless',\n // Loops\n 'for',\n 'while',\n 'until',\n 'forever',\n 'times',\n 'each',\n 'index',\n // Prepositions\n 'in',\n 'to',\n 'from',\n 'into',\n 'with',\n 'without',\n 'of',\n 'at',\n 'by',\n // Conversion\n 'as',\n // Comparison\n 'matches',\n 'contains',\n 'is',\n 'exists',\n // Events\n 'on',\n 'when',\n 'every',\n 'event',\n // Definitions\n 'init',\n 'def',\n 'behavior',\n // Scope\n 'global',\n 'local',\n // Articles\n 'the',\n 'a',\n 'an',\n 'first',\n 'last',\n // Position\n 'start',\n 'before',\n 'after',\n]);\n\n// =============================================================================\n// Universal English Keywords (DOM/HTML Standards)\n// =============================================================================\n\n/**\n * English keywords that should always be recognized, even in non-English locales.\n * These are HTML/DOM standard terms that developers worldwide use.\n */\nexport const UNIVERSAL_ENGLISH_KEYWORDS: Set<string> = new Set([\n // DOM events (HTML spec)\n 'click',\n 'dblclick',\n 'mousedown',\n 'mouseup',\n 'mouseenter',\n 'mouseleave',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'keydown',\n 'keyup',\n 'keypress',\n 'focus',\n 'blur',\n 'change',\n 'input',\n 'submit',\n 'reset',\n 'load',\n 'unload',\n 'resize',\n 'scroll',\n 'touchstart',\n 'touchend',\n 'touchmove',\n 'touchcancel',\n 'dragstart',\n 'dragend',\n 'dragenter',\n 'dragleave',\n 'dragover',\n 'drop',\n 'contextmenu',\n 'wheel',\n 'pointerdown',\n 'pointerup',\n 'pointermove',\n // Common abbreviations\n 'ms',\n 's',\n]);\n\n// =============================================================================\n// Logical Keywords\n// =============================================================================\n\n/**\n * English logical operator keywords.\n */\nexport const ENGLISH_LOGICAL_KEYWORDS: Set<string> = new Set([\n 'and',\n 'or',\n 'not',\n 'is',\n 'exists',\n 'matches',\n 'contains',\n 'then',\n 'else',\n]);\n\n// =============================================================================\n// Value Keywords\n// =============================================================================\n\n/**\n * English value keywords.\n */\nexport const ENGLISH_VALUE_KEYWORDS: Set<string> = new Set([\n 'true',\n 'false',\n 'null',\n 'undefined',\n 'it',\n 'me',\n 'my',\n 'result',\n]);\n\n// =============================================================================\n// Expression Keywords\n// =============================================================================\n\n/**\n * English expression keywords - positional, traversal, and string operations.\n */\nexport const ENGLISH_EXPRESSION_KEYWORDS: Set<string> = new Set([\n // Positional\n 'first',\n 'last',\n 'next',\n 'previous',\n 'prev',\n 'at',\n 'random',\n // DOM traversal\n 'closest',\n 'parent',\n 'children',\n 'within',\n // Emptiness/existence\n 'no',\n 'empty',\n 'some',\n // String operations (multi-word)\n 'starts with',\n 'ends with',\n]);\n\n// =============================================================================\n// Conditional Keywords\n// =============================================================================\n\n/**\n * Conditional keywords across languages (for statement type identification).\n * Includes 'when'/'where' conditional modifiers and their translations.\n */\nexport const CONDITIONAL_KEYWORDS: Set<string> = new Set([\n // English\n 'if',\n 'unless',\n 'when',\n 'where',\n // Japanese\n 'もし',\n '時に',\n 'ときに',\n 'どこで',\n // Chinese\n '如果',\n '当',\n // Arabic\n 'إذا',\n 'عندما',\n 'حيث',\n // Spanish\n 'si',\n 'cuando',\n 'donde',\n // German\n 'wenn',\n 'wann',\n 'wo',\n // French\n 'quand',\n 'lorsque',\n 'où',\n // Portuguese\n 'quando',\n 'onde',\n // Turkish\n 'eğer',\n 'zaman',\n 'nerede',\n // Indonesian\n 'ketika',\n 'saat',\n 'dimana',\n // Korean\n '때',\n '어디서',\n // Quechua\n 'maypi',\n // Swahili\n 'wakati',\n 'wapi',\n]);\n\n/**\n * \"Then\" keywords across languages (for conditional parsing).\n */\nexport const THEN_KEYWORDS: Set<string> = new Set([\n 'then',\n 'それから',\n '那么',\n 'ثم',\n 'entonces',\n 'alors',\n 'dann',\n 'sonra',\n 'lalu',\n 'chayqa',\n 'kisha',\n]);\n","// packages/i18n/src/parser/create-provider.ts\n\nimport type { Dictionary } from '../types';\nimport type { KeywordProvider, KeywordProviderOptions } from './types';\nimport {\n ENGLISH_COMMANDS,\n ENGLISH_KEYWORDS,\n ENGLISH_MODIFIERS,\n ENGLISH_LOGICAL_KEYWORDS,\n ENGLISH_VALUE_KEYWORDS,\n ENGLISH_EXPRESSION_KEYWORDS,\n UNIVERSAL_ENGLISH_KEYWORDS,\n} from '../constants';\n\n/**\n * Creates a KeywordProvider from a dictionary.\n *\n * The provider creates reverse mappings (locale → English) for fast\n * resolution during parsing.\n *\n * @example\n * ```typescript\n * import { es } from '../dictionaries/es';\n * export const esKeywords = createKeywordProvider(es, 'es');\n * ```\n */\nexport function createKeywordProvider(\n dictionary: Dictionary,\n locale: string,\n options: KeywordProviderOptions = {}\n): KeywordProvider {\n const { allowEnglishFallback = true } = options;\n\n // Build reverse maps: locale keyword → English canonical\n const reverseCommands = new Map<string, string>();\n const reverseModifiers = new Map<string, string>();\n const reverseEvents = new Map<string, string>();\n const reverseLogical = new Map<string, string>();\n const reverseTemporal = new Map<string, string>();\n const reverseValues = new Map<string, string>();\n const reverseAttributes = new Map<string, string>();\n const reverseExpressions = new Map<string, string>();\n const reverseAll = new Map<string, string>();\n\n // Forward maps: English → locale keyword\n const forwardAll = new Map<string, string>();\n\n // Build reverse mappings from dictionary\n // Note: reverseAll uses priority - first category to claim a locale word wins\n function buildReverseMap(\n category: Record<string, string>,\n reverseMap: Map<string, string>,\n priority: boolean = false\n ): void {\n for (const [english, localeWord] of Object.entries(category)) {\n const normalizedLocale = localeWord.toLowerCase();\n reverseMap.set(normalizedLocale, english.toLowerCase());\n // Only set in reverseAll if not already claimed (priority) or if this is a priority category\n if (priority || !reverseAll.has(normalizedLocale)) {\n reverseAll.set(normalizedLocale, english.toLowerCase());\n }\n forwardAll.set(english.toLowerCase(), localeWord.toLowerCase());\n }\n }\n\n // Build all reverse maps\n // Priority order: commands first (highest priority for parsing), then logical, events, values\n // This ensures 'en' (Spanish) → 'on' (command) rather than 'in' (modifier)\n if (dictionary.commands) {\n buildReverseMap(dictionary.commands, reverseCommands, true);\n }\n if (dictionary.logical) {\n buildReverseMap(dictionary.logical, reverseLogical, true);\n }\n if (dictionary.events) {\n buildReverseMap(dictionary.events, reverseEvents);\n }\n if (dictionary.values) {\n buildReverseMap(dictionary.values, reverseValues);\n }\n if (dictionary.temporal) {\n buildReverseMap(dictionary.temporal, reverseTemporal);\n }\n // Modifiers last (lowest priority) - they often conflict with commands\n if (dictionary.modifiers) {\n buildReverseMap(dictionary.modifiers, reverseModifiers);\n }\n if (dictionary.attributes) {\n buildReverseMap(dictionary.attributes, reverseAttributes);\n }\n if (dictionary.expressions) {\n buildReverseMap(dictionary.expressions, reverseExpressions);\n }\n\n // Collect all locale commands and keywords for completions\n const localeCommands = new Set(reverseCommands.keys());\n const allLocaleKeywords = new Set(reverseAll.keys());\n\n // Add English keywords/commands if fallback is enabled\n if (allowEnglishFallback) {\n for (const cmd of ENGLISH_COMMANDS) {\n localeCommands.add(cmd);\n }\n for (const kw of ENGLISH_KEYWORDS) {\n allLocaleKeywords.add(kw);\n }\n for (const kw of UNIVERSAL_ENGLISH_KEYWORDS) {\n allLocaleKeywords.add(kw);\n }\n }\n\n return {\n locale,\n\n resolve(token: string): string | undefined {\n const normalized = token.toLowerCase();\n\n // Check if it's a locale keyword\n const english = reverseAll.get(normalized);\n if (english !== undefined) {\n return english;\n }\n\n // If English fallback is enabled, check if it's already English\n if (allowEnglishFallback) {\n if (ENGLISH_COMMANDS.has(normalized) || ENGLISH_KEYWORDS.has(normalized)) {\n return normalized;\n }\n // Universal keywords (DOM events, etc.) pass through\n if (UNIVERSAL_ENGLISH_KEYWORDS.has(normalized)) {\n return normalized;\n }\n }\n\n return undefined;\n },\n\n isCommand(token: string): boolean {\n const normalized = token.toLowerCase();\n\n // Check locale commands\n if (reverseCommands.has(normalized)) {\n return true;\n }\n\n // Check English commands if fallback enabled\n if (allowEnglishFallback && ENGLISH_COMMANDS.has(normalized)) {\n return true;\n }\n\n return false;\n },\n\n isKeyword(token: string): boolean {\n const normalized = token.toLowerCase();\n\n // Check locale keywords (modifiers, logical, temporal, values)\n if (\n reverseModifiers.has(normalized) ||\n reverseLogical.has(normalized) ||\n reverseTemporal.has(normalized) ||\n reverseValues.has(normalized)\n ) {\n return true;\n }\n\n // Check English keywords if fallback enabled\n if (allowEnglishFallback && ENGLISH_KEYWORDS.has(normalized)) {\n return true;\n }\n\n return false;\n },\n\n isEvent(token: string): boolean {\n const normalized = token.toLowerCase();\n\n // Check locale events\n if (reverseEvents.has(normalized)) {\n return true;\n }\n\n // Universal English events always accepted\n if (UNIVERSAL_ENGLISH_KEYWORDS.has(normalized)) {\n return true;\n }\n\n return false;\n },\n\n isModifier(token: string): boolean {\n const normalized = token.toLowerCase();\n return (\n reverseModifiers.has(normalized) ||\n (allowEnglishFallback && ENGLISH_MODIFIERS.has(normalized))\n );\n },\n\n isLogical(token: string): boolean {\n const normalized = token.toLowerCase();\n return (\n reverseLogical.has(normalized) ||\n (allowEnglishFallback && ENGLISH_LOGICAL_KEYWORDS.has(normalized))\n );\n },\n\n isValue(token: string): boolean {\n const normalized = token.toLowerCase();\n return (\n reverseValues.has(normalized) ||\n (allowEnglishFallback && ENGLISH_VALUE_KEYWORDS.has(normalized))\n );\n },\n\n isExpression(token: string): boolean {\n const normalized = token.toLowerCase();\n return (\n reverseExpressions.has(normalized) ||\n (allowEnglishFallback && ENGLISH_EXPRESSION_KEYWORDS.has(normalized))\n );\n },\n\n getCommands(): string[] {\n return Array.from(localeCommands);\n },\n\n getKeywords(): string[] {\n return Array.from(allLocaleKeywords);\n },\n\n toLocale(englishKeyword: string): string | undefined {\n return forwardAll.get(englishKeyword.toLowerCase());\n },\n };\n}\n\n/**\n * Creates a default English-only keyword provider.\n * This is used when no locale is specified.\n */\nexport function createEnglishProvider(): KeywordProvider {\n return {\n locale: 'en',\n\n resolve(token: string): string | undefined {\n const normalized = token.toLowerCase();\n if (\n ENGLISH_COMMANDS.has(normalized) ||\n ENGLISH_KEYWORDS.has(normalized) ||\n UNIVERSAL_ENGLISH_KEYWORDS.has(normalized)\n ) {\n return normalized;\n }\n return undefined;\n },\n\n isCommand(token: string): boolean {\n return ENGLISH_COMMANDS.has(token.toLowerCase());\n },\n\n isKeyword(token: string): boolean {\n return ENGLISH_KEYWORDS.has(token.toLowerCase());\n },\n\n isEvent(token: string): boolean {\n return UNIVERSAL_ENGLISH_KEYWORDS.has(token.toLowerCase());\n },\n\n isModifier(token: string): boolean {\n return ENGLISH_MODIFIERS.has(token.toLowerCase());\n },\n\n isLogical(token: string): boolean {\n return ENGLISH_LOGICAL_KEYWORDS.has(token.toLowerCase());\n },\n\n isValue(token: string): boolean {\n return ENGLISH_VALUE_KEYWORDS.has(token.toLowerCase());\n },\n\n isExpression(token: string): boolean {\n return ENGLISH_EXPRESSION_KEYWORDS.has(token.toLowerCase());\n },\n\n getCommands(): string[] {\n return Array.from(ENGLISH_COMMANDS);\n },\n\n getKeywords(): string[] {\n return Array.from(ENGLISH_KEYWORDS);\n },\n\n toLocale(_englishKeyword: string): string | undefined {\n // English provider returns the keyword as-is\n return _englishKeyword.toLowerCase();\n },\n };\n}\n\n// Re-export the English keyword sets from constants for use in core\nexport {\n ENGLISH_COMMANDS,\n ENGLISH_KEYWORDS,\n ENGLISH_MODIFIERS,\n ENGLISH_LOGICAL_KEYWORDS,\n ENGLISH_VALUE_KEYWORDS,\n ENGLISH_EXPRESSION_KEYWORDS,\n UNIVERSAL_ENGLISH_KEYWORDS,\n} from '../constants';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const es: Dictionary = {\n commands: {\n on: 'en',\n tell: 'decir',\n trigger: 'disparar',\n send: 'enviar',\n take: 'tomar',\n put: 'poner',\n set: 'establecer',\n get: 'obtener',\n add: 'agregar',\n remove: 'quitar',\n toggle: 'alternar',\n hide: 'ocultar',\n show: 'mostrar',\n if: 'si',\n unless: 'menos',\n repeat: 'repetir',\n for: 'para',\n while: 'mientras',\n until: 'hasta',\n continue: 'continuar',\n break: 'romper',\n halt: 'detener',\n wait: 'esperar',\n fetch: 'buscar',\n call: 'llamar',\n return: 'retornar',\n make: 'hacer',\n log: 'registrar',\n throw: 'lanzar',\n catch: 'atrapar',\n measure: 'medir',\n transition: 'transición',\n increment: 'incrementar',\n decrement: 'decrementar',\n default: 'predeterminar',\n go: 'ir',\n pushUrl: 'pushUrl',\n replaceUrl: 'reemplazarUrl',\n copy: 'copiar',\n pick: 'escoger',\n beep: 'pitido',\n js: 'js',\n async: 'asíncrono',\n render: 'renderizar',\n swap: 'intercambiar',\n morph: 'transformar',\n settle: 'estabilizar',\n append: 'anexar', // profile primary; 'añadir' is add's word (parsed as add)\n exit: 'salir',\n install: 'instalar',\n breakpoint: 'punto-interrupción',\n clear: 'limpiar',\n close: 'cerrar',\n open: 'abrir',\n select: 'seleccionar',\n clone: 'clonar',\n prepend: 'anteponer',\n },\n\n modifiers: {\n to: 'a',\n from: 'de',\n into: 'en',\n with: 'con',\n at: 'en',\n in: 'en',\n of: 'de',\n as: 'como',\n by: 'por',\n before: 'antes',\n after: 'después',\n over: 'sobre',\n under: 'bajo',\n between: 'entre',\n through: 'través',\n without: 'sin',\n },\n\n events: {\n click: 'clic',\n dblclick: 'dobleclic',\n mouseenter: 'ratónentrar',\n mouseleave: 'ratónsalir',\n // V3 Batch 2: fused forms split to the S5b/tokenizer-known forms (the fused\n // spellings captured event=expression:undefined — broken listeners)\n mousedown: 'ratón abajo',\n mouseup: 'ratón arriba',\n mouseover: 'ratón encima',\n mouseout: 'ratón fuera',\n mousemove: 'ratónmover',\n keydown: 'tecla abajo',\n keyup: 'tecla arriba',\n keypress: 'teclapresar',\n focus: 'enfocar',\n blur: 'desenfocar',\n change: 'cambiar',\n input: 'entrada',\n submit: 'envío', // Batch 3: enviar is the send verb — on-submit listener captured event \"send\"\n reset: 'reiniciar',\n load: 'cargar',\n unload: 'descargar',\n resize: 'redimensionar',\n scroll: 'desplazar',\n touchstart: 'toqueempezar',\n touchend: 'toqueterminar',\n touchmove: 'toquemover',\n touchcancel: 'toquecancelar',\n },\n\n logical: {\n when: 'cuando',\n where: 'donde',\n and: 'y',\n or: 'o',\n not: 'no',\n is: 'es',\n exists: 'existe',\n matches: 'coincide',\n contains: 'contiene',\n includes: 'incluye',\n equals: 'iguala',\n has: 'tiene',\n have: 'tengo',\n then: 'entonces',\n else: 'sino',\n otherwise: 'delocontrario',\n end: 'fin',\n live: 'vivo',\n changes: 'cambia',\n },\n\n temporal: {\n seconds: 'segundos',\n second: 'segundo',\n milliseconds: 'milisegundos',\n millisecond: 'milisegundo',\n minutes: 'minutos',\n minute: 'minuto',\n hours: 'horas',\n hour: 'hora',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n times: 'veces',\n },\n\n values: {\n true: 'verdadero',\n false: 'falso',\n null: 'nulo',\n undefined: 'indefinido',\n it: 'ello',\n its: 'su',\n me: 'yo',\n my: 'mi',\n you: 'tu',\n your: 'tu',\n yourself: 'ti mismo',\n myself: 'yo mismo',\n element: 'elemento',\n target: 'objetivo',\n detail: 'detalle',\n event: 'evento',\n window: 'ventana',\n document: 'documento',\n body: 'cuerpo',\n result: 'resultado',\n value: 'valor',\n },\n\n attributes: {\n class: 'clase',\n classes: 'clases',\n style: 'estilo',\n styles: 'estilos',\n attribute: 'atributo',\n attributes: 'atributos',\n property: 'propiedad',\n properties: 'propiedades',\n },\n\n expressions: {\n characters: 'caracteres',\n inclusive: 'inclusivo',\n exclusive: 'exclusivo',\n first: 'primero',\n last: 'último',\n next: 'siguiente',\n previous: 'anterior',\n prev: 'ant',\n at: 'en',\n random: 'aleatorio',\n closest: 'cercano',\n parent: 'padre',\n children: 'hijos',\n within: 'dentro',\n no: 'ningún',\n empty: 'vacío',\n some: 'algún',\n 'starts with': 'empieza con',\n 'ends with': 'termina con',\n 'ignoring case': 'ignorando mayúsculas',\n 'sorted by': 'ordenado por',\n 'mapped to': 'transformado a',\n 'split by': 'dividido por',\n 'joined by': 'unido por',\n },\n};\n","// packages/i18n/src/parser/es.ts\n\nimport { es } from '../dictionaries/es';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Spanish keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Spanish:\n * - `en clic alternar .active` → parses as `on click toggle .active`\n * - `si verdadero entonces registrar \"hola\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `en click alternar .active` also works (Spanish `en` + English `click`)\n *\n * @example\n * ```typescript\n * import { esKeywords } from '@lokascript/i18n/parser/es';\n *\n * esKeywords.resolve('alternar'); // 'toggle'\n * esKeywords.toLocale('on'); // 'en'\n * ```\n */\nexport const esKeywords: KeywordProvider = createKeywordProvider(es, 'es', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { es as esDictionary } from '../dictionaries/es';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const ja: Dictionary = {\n commands: {\n on: 'で',\n tell: '伝える',\n trigger: '引き金',\n send: '送る',\n take: '取る',\n put: '置く',\n set: '設定',\n get: '取得',\n add: '追加',\n remove: '削除',\n toggle: '切り替え',\n hide: '隠す',\n show: '表示',\n if: 'もし',\n unless: 'ない限り', // not でなければ — leading で particle shatters the marker\n repeat: '繰り返し',\n for: 'ために',\n while: 'の間',\n until: 'まで',\n continue: '続ける',\n break: '中断',\n halt: '停止',\n wait: '待つ',\n fetch: 'フェッチ',\n call: '呼び出し',\n return: '戻る',\n make: '作る',\n log: '記録',\n throw: '投げる',\n catch: '捕まえる',\n measure: '測定',\n transition: '遷移',\n increment: '増加',\n decrement: '減少',\n default: '既定',\n go: '移動',\n pushUrl: 'URLプッシュ',\n replaceUrl: 'URL置換',\n copy: 'コピー',\n pick: '選択',\n beep: 'ビープ',\n js: 'JS実行',\n async: '非同期',\n render: '描画',\n swap: '交換',\n morph: '変形',\n settle: '安定',\n append: '末尾追加',\n // 終了 → 退出: realigned to the semantic profile primary (ja.ts `exit: 退出`).\n // 終了 was the historic exit/end collision word (see isEndKeyword's ja note);\n // rendered as 終了 it tokenized as a plain identifier, so a guard-clause\n // `exit` inside `if … end` never parsed (behavior-sortable ja).\n exit: '退出',\n install: 'インストール',\n breakpoint: 'ブレークポイント',\n clear: 'クリア',\n close: '閉じる',\n open: '開く',\n select: '選ぶ', // Batch 3: 選択 is the pick keyword — bare select rendered with it parses null\n clone: '複製',\n prepend: '先頭追加',\n socket: 'ソケット',\n },\n\n modifiers: {\n to: 'に',\n from: 'から',\n into: 'へ',\n with: 'と',\n at: 'で',\n in: 'の中',\n of: 'の',\n as: 'として',\n by: 'によって',\n before: '前に',\n after: '後に',\n over: '上に',\n under: '下に',\n between: '間に',\n through: '通して',\n without: 'なしで',\n },\n\n events: {\n click: 'クリック',\n dblclick: 'dblclick',\n mousedown: 'マウス押下',\n mouseup: 'マウス解放',\n // V3c burn-down (2026-07-14): English passthrough — no native form round-trips\n // on the parse side (probe: split forms shatter, fused forms capture verbatim).\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n // V3 Batch 2: kanji compounds realigned to the S5b/tokenizer katakana\n // loanwords (the standard JS event terms; the compounds captured\n // event=expression:undefined — broken listeners)\n mouseover: 'マウスオーバー',\n mouseout: 'マウスアウト',\n mousemove: 'mousemove',\n keydown: 'キーダウン',\n keyup: 'キーアップ',\n keypress: 'キープレス',\n focus: 'フォーカス',\n blur: 'ぼかし',\n change: '変更',\n input: '入力',\n submit: '送信',\n reset: 'リセット',\n load: '読み込み',\n unload: 'unload',\n resize: 'サイズ変更',\n scroll: 'スクロール',\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n touchcancel: 'touchcancel',\n },\n\n logical: {\n when: '時',\n where: 'どこ',\n and: 'そして',\n or: 'または',\n not: 'ではない',\n is: 'である',\n exists: '存在する',\n matches: '一致する',\n contains: '含む',\n includes: '含める',\n equals: '等しい',\n has: 'ある',\n have: 'ある',\n then: 'それから',\n else: 'そうでなければ',\n otherwise: 'そうでなければ',\n end: '終わり',\n live: 'ライブ',\n bind: 'バインド',\n changes: '変わったら',\n },\n\n temporal: {\n seconds: '秒',\n second: '秒',\n milliseconds: 'ミリ秒',\n millisecond: 'ミリ秒',\n minutes: '分',\n minute: '分',\n hours: '時間',\n hour: '時間',\n ms: 'ms',\n s: '秒',\n min: '分',\n h: '時',\n times: '回',\n },\n\n values: {\n true: '真',\n false: '偽',\n null: 'null',\n undefined: '未定義',\n it: 'それ',\n its: 'その',\n me: '私',\n my: '私の',\n you: 'あなた',\n your: 'あなたの',\n yourself: 'あなた自身',\n myself: '私自身',\n element: '要素',\n target: '対象',\n detail: '詳細',\n event: 'イベント',\n window: 'ウィンドウ',\n document: 'ドキュメント',\n body: 'ボディ',\n result: '結果',\n value: '値',\n },\n\n attributes: {\n class: 'クラス',\n classes: 'クラス群',\n style: 'スタイル',\n styles: 'スタイル群',\n attribute: '属性',\n attributes: '属性群',\n property: 'プロパティ',\n properties: 'プロパティ群',\n },\n\n expressions: {\n characters: '文字',\n inclusive: '含む',\n exclusive: '除く',\n first: '最初',\n last: '最後',\n next: '次',\n previous: '前',\n prev: '前',\n at: 'で',\n random: 'ランダム',\n closest: '最も近い',\n parent: '親',\n children: '子',\n within: '以内',\n no: 'ない',\n empty: '空',\n some: 'いくつか',\n 'starts with': 'で始まる',\n 'ends with': 'で終わる',\n 'ignoring case': '大文字小文字を無視',\n 'sorted by': 'でソート',\n 'mapped to': 'に変換',\n 'split by': 'で分割',\n 'joined by': 'で結合',\n },\n};\n","// packages/i18n/src/parser/ja.ts\n\nimport { ja } from '../dictionaries/ja';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Japanese keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Japanese:\n * - `クリック で 切り替え .active` → parses as `on click toggle .active`\n * - `もし 真 それから 記録 \"こんにちは\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `click で 切り替え .active` also works (English `click` + Japanese `で`, `切り替え`)\n *\n * Japanese is a useful test case because:\n * - SOV word order (subject-object-verb) vs English SVO\n * - No articles (a, an, the)\n * - Unicode characters (tests tokenizer robustness)\n *\n * @example\n * ```typescript\n * import { jaKeywords } from '@lokascript/i18n/parser/ja';\n *\n * jaKeywords.resolve('切り替え'); // 'toggle'\n * jaKeywords.toLocale('on'); // 'で'\n * ```\n */\nexport const jaKeywords: KeywordProvider = createKeywordProvider(ja, 'ja', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { ja as jaDictionary } from '../dictionaries/ja';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const fr: Dictionary = {\n commands: {\n on: 'sur',\n tell: 'dire',\n trigger: 'déclencher',\n send: 'envoyer',\n take: 'prendre',\n put: 'mettre',\n set: 'définir',\n get: 'obtenir',\n add: 'ajouter',\n remove: 'supprimer',\n toggle: 'basculer',\n // command blur (the events section has the blur EVENT word; without this\n // entry the transformer fell back to it and no profile read it as the verb)\n blur: 'défocaliser',\n hide: 'cacher',\n show: 'montrer',\n if: 'si',\n unless: 'saufsi',\n repeat: 'répéter',\n for: 'pour',\n while: 'tantque',\n until: 'jusquà',\n continue: 'continuer',\n break: 'arrêter',\n halt: 'stopper',\n wait: 'attendre',\n fetch: 'récupérer',\n call: 'appeler',\n return: 'retourner',\n make: 'créer',\n log: 'enregistrer',\n throw: 'lancer',\n catch: 'attraper',\n measure: 'mesurer',\n transition: 'transition',\n increment: 'incrémenter',\n decrement: 'décrémenter',\n default: 'défaut',\n go: 'aller',\n pushUrl: 'pousserUrl',\n replaceUrl: 'remplacerUrl',\n copy: 'copier',\n pick: 'choisir',\n beep: 'bip',\n js: 'js',\n async: 'asynchrone',\n render: 'rendu',\n swap: 'échanger',\n morph: 'transformer',\n settle: 'stabiliser',\n append: 'annexer', // profile primary; 'ajouter' is add's word (parsed as add)\n exit: 'sortir',\n install: 'installer',\n breakpoint: 'point-arrêt',\n clear: 'effacer',\n close: 'fermer',\n open: 'ouvrir',\n select: 'sélectionner',\n clone: 'cloner',\n prepend: 'préfixer',\n focus: 'focaliser',\n },\n\n modifiers: {\n to: 'à',\n from: 'de',\n into: 'dans',\n with: 'avec',\n at: 'à',\n in: 'en',\n of: 'de',\n as: 'comme',\n by: 'par',\n before: 'avant',\n after: 'après',\n over: 'sur',\n under: 'sous',\n between: 'entre',\n through: 'à travers',\n without: 'sans',\n },\n\n events: {\n click: 'clic',\n dblclick: 'doubleclic',\n // mousedown/mouseup: English passthrough — no native form round-trips on the\n // parse side (V3c probe 2026-07-14: fused forms captured verbatim, split forms\n // shattered to their first word — live broken listeners in repeat-until-event).\n // The Batch-2 id-keyup precedent; revisit if S5b + tokenizer gain native entries.\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'sourisentrer',\n mouseleave: 'sourissortir',\n // V3 Batch 2: fused forms split to the S5b/tokenizer-known forms (the fused\n // spellings captured event=expression:undefined — broken listeners)\n mouseover: 'souris dessus',\n mouseout: 'souris dehors',\n mousemove: 'sourisbouger',\n keydown: 'touche bas',\n keyup: 'touche haut',\n keypress: 'touchepressée',\n focus: 'focus',\n blur: 'flou',\n change: 'changer',\n input: 'saisie',\n submit: 'soumettre',\n reset: 'réinitialiser',\n load: 'charger',\n unload: 'décharger',\n resize: 'redimensionner',\n scroll: 'défiler',\n touchstart: 'touchercommencer',\n touchend: 'toucherfin',\n touchmove: 'toucherbouger',\n touchcancel: 'toucherannuler',\n },\n\n logical: {\n when: 'quand',\n where: 'où',\n and: 'et',\n or: 'ou',\n not: 'non',\n is: 'est',\n exists: 'existe',\n matches: 'correspond',\n contains: 'contient',\n includes: 'inclut',\n equals: 'égale',\n has: 'a',\n have: 'ai',\n then: 'alors',\n else: 'sinon',\n otherwise: 'autrement',\n end: 'fin',\n live: 'vif',\n changes: 'change',\n },\n\n temporal: {\n seconds: 'secondes',\n second: 'seconde',\n milliseconds: 'millisecondes',\n millisecond: 'milliseconde',\n minutes: 'minutes',\n minute: 'minute',\n hours: 'heures',\n hour: 'heure',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n times: 'fois',\n },\n\n values: {\n true: 'vrai',\n false: 'faux',\n null: 'nul',\n undefined: 'indéfini',\n it: 'ça',\n its: 'son',\n me: 'moi',\n my: 'mon',\n you: 'tu',\n your: 'ton',\n yourself: 'toi-même',\n myself: 'moi-même',\n element: 'élément',\n target: 'cible',\n detail: 'détail',\n event: 'événement',\n window: 'fenêtre',\n document: 'document',\n body: 'corps',\n result: 'résultat',\n value: 'valeur',\n },\n\n attributes: {\n class: 'classe',\n classes: 'classes',\n style: 'style',\n styles: 'styles',\n attribute: 'attribut',\n attributes: 'attributs',\n property: 'propriété',\n properties: 'propriétés',\n },\n\n expressions: {\n characters: 'caractères',\n inclusive: 'inclusif',\n exclusive: 'exclusif',\n first: 'premier',\n last: 'dernier',\n next: 'suivant',\n previous: 'précédent',\n prev: 'préc',\n at: 'à',\n random: 'aléatoire',\n closest: 'proche',\n parent: 'parent',\n children: 'enfants',\n within: 'dans',\n no: 'aucun',\n empty: 'vide',\n some: 'quelques',\n 'starts with': 'commence par',\n 'ends with': 'finit par',\n 'ignoring case': 'en ignorant la casse',\n 'sorted by': 'trié par',\n 'mapped to': 'transformé en',\n 'split by': 'divisé par',\n 'joined by': 'joint par',\n },\n};\n","// packages/i18n/src/parser/fr.ts\n\nimport { fr } from '../dictionaries/fr';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * French keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in French:\n * - `sur clic basculer .active` → parses as `on click toggle .active`\n * - `si vrai alors enregistrer \"bonjour\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `sur click basculer .active` also works (French `sur` + English `click`)\n *\n * @example\n * ```typescript\n * import { frKeywords } from '@lokascript/i18n/parser/fr';\n *\n * frKeywords.resolve('basculer'); // 'toggle'\n * frKeywords.toLocale('on'); // 'sur'\n * ```\n */\nexport const frKeywords: KeywordProvider = createKeywordProvider(fr, 'fr', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { fr as frDictionary } from '../dictionaries/fr';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const de: Dictionary = {\n commands: {\n on: 'bei',\n tell: 'sagen',\n trigger: 'auslösen',\n send: 'senden',\n take: 'nehmen',\n put: 'setzen',\n set: 'festlegen',\n get: 'erhalten',\n add: 'hinzufügen',\n remove: 'entfernen',\n toggle: 'umschalten',\n // command blur (the events section has the blur EVENT word; without this\n // entry the transformer fell back to it and no profile read it as the verb)\n blur: 'defokussieren',\n hide: 'verstecken',\n show: 'zeigen',\n // Align with the semantic German profile's `if` primary (`falls`). The previous\n // `wenn` collides with the profile's `when` keyword (German `wenn` = both\n // \"if\" and \"when\"), so a transformed `if` resolved to `when` and the conditional\n // wrapper never formed (`if`/`put` dropped). Same dict↔profile alignment as id\n // `toggle` / get-value. `when` is unaffected (separate dict entry).\n if: 'falls',\n unless: 'wennnicht',\n repeat: 'wiederholen',\n for: 'für',\n while: 'während',\n until: 'bis',\n continue: 'weiter',\n break: 'unterbrechen',\n halt: 'anhalten',\n wait: 'warten',\n fetch: 'abrufen',\n call: 'aufrufen',\n return: 'zurückgeben',\n make: 'erstellen',\n log: 'protokollieren',\n throw: 'werfen',\n catch: 'fangen',\n measure: 'messen',\n transition: 'übergang',\n increment: 'erhöhen',\n decrement: 'verringern',\n default: 'standard',\n go: 'gehen',\n pushUrl: 'urlHinzufügen',\n replaceUrl: 'urlErsetzen',\n copy: 'kopieren',\n pick: 'auswählen',\n beep: 'piepton',\n js: 'js',\n async: 'asynchron',\n render: 'rendern',\n swap: 'tauschen',\n morph: 'verwandeln',\n settle: 'stabilisieren',\n append: 'anhängen',\n exit: 'beenden',\n install: 'installieren',\n breakpoint: 'haltepunkt',\n clear: 'bereinigen', // löschen is a remove alternative in the profile\n close: 'schließen',\n open: 'öffnen',\n select: 'markieren', // Batch 3: auswählen is the pick keyword — bare select rendered with it parses null\n clone: 'klonen',\n prepend: 'voranstellen',\n focus: 'fokussieren',\n },\n\n modifiers: {\n to: 'zu',\n from: 'von',\n into: 'in',\n with: 'mit',\n at: 'bei',\n in: 'in',\n of: 'von',\n as: 'als',\n by: 'durch',\n before: 'vor',\n after: 'nach',\n over: 'über',\n under: 'unter',\n between: 'zwischen',\n through: 'durch',\n without: 'ohne',\n },\n\n events: {\n click: 'klick',\n dblclick: 'doppelklick',\n // mousedown/mouseup: English passthrough — no native form round-trips on the\n // parse side (V3c probe 2026-07-14: fused forms captured verbatim, split forms\n // shattered to their first word — live broken listeners in repeat-until-event).\n // The Batch-2 id-keyup precedent; revisit if S5b + tokenizer gain native entries.\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'mauseintreten',\n mouseleave: 'mausverlassen',\n // V3 Batch 2: fused/dead event words realigned to the de tokenizer's\n // registered forms (S5b's `maus über`/`taste runter` are aspirational — they\n // do not tokenize; `mausüber` etc. captured event=expression:undefined).\n mouseover: 'maus drüber',\n mouseout: 'maus weg',\n mousemove: 'mausbewegen',\n keydown: 'taste unten',\n keyup: 'taste oben',\n keypress: 'tastedrücken',\n focus: 'fokus',\n // matches commands.blur (which shadows this at render time) and the live\n // corpus render; `unscharf` was dead vocab that captured no event\n blur: 'defokussieren',\n change: 'ändern',\n input: 'eingabe',\n submit: 'absenden',\n reset: 'zurücksetzen',\n load: 'laden',\n unload: 'entladen',\n // 'größeändern' was a malformed compound: German either separates the verb\n // phrase ('Größe ändern') or compounds with the linking -n- ('Größenänderung').\n resize: 'größenänderung',\n scroll: 'scrollen',\n touchstart: 'berührungstart',\n touchend: 'berührungend',\n touchmove: 'berührungbewegen',\n touchcancel: 'berührungabbrechen',\n },\n\n logical: {\n when: 'wenn',\n where: 'wo',\n and: 'und',\n or: 'oder',\n not: 'nicht',\n is: 'ist',\n exists: 'existiert',\n matches: 'passt',\n contains: 'enthält',\n includes: 'beinhaltet',\n equals: 'gleicht',\n has: 'hat',\n have: 'habe',\n then: 'dann',\n else: 'sonst',\n otherwise: 'andernfalls',\n end: 'ende',\n live: 'live',\n changes: 'ändert',\n },\n\n temporal: {\n seconds: 'sekunden',\n second: 'sekunde',\n milliseconds: 'millisekunden',\n millisecond: 'millisekunde',\n minutes: 'minuten',\n minute: 'minute',\n hours: 'stunden',\n hour: 'stunde',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'std',\n times: 'mal',\n },\n\n values: {\n true: 'wahr',\n false: 'falsch',\n null: 'null',\n undefined: 'undefiniert',\n it: 'es',\n its: 'sein',\n me: 'ich',\n my: 'mein',\n you: 'du',\n your: 'dein',\n yourself: 'dich selbst',\n myself: 'ich selbst',\n element: 'element',\n target: 'ziel',\n detail: 'detail',\n event: 'ereignis',\n window: 'fenster',\n document: 'dokument',\n body: 'körper',\n result: 'ergebnis',\n value: 'wert',\n },\n\n attributes: {\n class: 'klasse',\n classes: 'klassen',\n style: 'stil',\n styles: 'stile',\n attribute: 'attribut',\n attributes: 'attribute',\n property: 'eigenschaft',\n properties: 'eigenschaften',\n },\n\n expressions: {\n characters: 'Zeichen',\n inclusive: 'inklusiv',\n exclusive: 'exklusiv',\n first: 'erste',\n last: 'letzte',\n next: 'nächste',\n previous: 'vorherige',\n prev: 'vorh',\n at: 'bei',\n random: 'zufällig',\n // `nächste` already serves `next` (line above). German `nächste` is\n // genuinely ambiguous (next/nearest), so emitting it for `closest` too\n // collided: the semantic tokenizer normalizes `nächste`→next (a deliberate\n // last-wins choice — see german.ts), and a closest reading is impossible to\n // recover. Use the unambiguous `nächstgelegene` (\"nearest-located\") for\n // closest so the two readings stay distinct end-to-end.\n closest: 'nächstgelegene',\n parent: 'elternteil',\n children: 'kinder',\n within: 'innerhalb',\n no: 'kein',\n empty: 'leer',\n some: 'einige',\n 'starts with': 'beginnt mit',\n 'ends with': 'endet mit',\n 'ignoring case': 'ohne Groß-/Kleinschreibung',\n 'sorted by': 'sortiert nach',\n 'mapped to': 'zugeordnet zu',\n 'split by': 'geteilt durch',\n 'joined by': 'verbunden mit',\n },\n};\n","// packages/i18n/src/parser/de.ts\n\nimport { de } from '../dictionaries/de';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * German keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in German:\n * - `bei klick umschalten .active` → parses as `on click toggle .active`\n * - `wenn wahr dann protokollieren \"hallo\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `bei click umschalten .active` also works (German `bei` + English `click`)\n *\n * German is a useful test case because:\n * - Compound words (Zusammensetzungen) are common\n * - Different word order in clauses (V2 in main, V-final in subordinate)\n * - Case system (nominative, accusative, dative, genitive)\n *\n * @example\n * ```typescript\n * import { deKeywords } from '@lokascript/i18n/parser/de';\n *\n * deKeywords.resolve('umschalten'); // 'toggle'\n * deKeywords.toLocale('on'); // 'bei'\n * ```\n */\nexport const deKeywords: KeywordProvider = createKeywordProvider(de, 'de', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { de as deDictionary } from '../dictionaries/de';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const ar: Dictionary = {\n commands: {\n on: 'على',\n tell: 'أخبر',\n trigger: 'تشغيل',\n send: 'أرسل',\n take: 'خذ',\n put: 'ضع',\n set: 'اضبط',\n get: 'احصل',\n add: 'أضف',\n remove: 'احذف',\n toggle: 'بدل',\n hide: 'اخف',\n show: 'اظهر',\n if: 'إذا',\n // Single-token form: the semantic ar tokenizer splits the two-word `إلا إذا`\n // into `إلا` + `إذا`(if), which derails the `unless` block. `إلا` alone is the\n // conventional Arabic shorthand and matches the ar profile's unless keyword.\n unless: 'إلا',\n repeat: 'كرر',\n for: 'لكل',\n while: 'بينما',\n until: 'حتى',\n continue: 'واصل',\n break: 'توقف',\n halt: 'أوقف',\n wait: 'انتظر',\n fetch: 'احضر',\n call: 'استدع',\n return: 'ارجع',\n make: 'اصنع',\n log: 'سجل',\n throw: 'ارم',\n catch: 'التقط',\n measure: 'قس',\n transition: 'انتقال',\n increment: 'زِد',\n decrement: 'أنقص',\n default: 'افتراضي',\n go: 'اذهب',\n pushUrl: 'ادفع رابط',\n replaceUrl: 'استبدل رابط',\n copy: 'انسخ',\n pick: 'اختر',\n beep: 'صفّر',\n js: 'جافاسكربت',\n async: 'متزامن',\n render: 'ارسم',\n swap: 'استبدل', // profile primary; 'بدّل' is toggle's word (parsed as toggle)\n morph: 'حوّل',\n settle: 'استقر',\n append: 'ألحق',\n exit: 'اخرج',\n install: 'ثبّت',\n breakpoint: 'نقطة-توقف',\n clear: 'نظّف', // امسح is a remove alternative in the profile\n close: 'أغلق',\n open: 'افتح',\n select: 'ظلل', // Batch 3: اختر is the pick keyword — bare select rendered with it parses null\n clone: 'استنسخ',\n prepend: 'سبق',\n socket: 'مقبس',\n },\n\n modifiers: {\n to: 'إلى',\n from: 'من',\n into: 'في',\n with: 'مع',\n at: 'عند',\n in: 'في',\n of: 'من',\n as: 'كـ',\n by: 'بواسطة',\n before: 'قبل',\n after: 'بعد',\n over: 'فوق',\n under: 'تحت',\n between: 'بين',\n through: 'عبر',\n without: 'بدون',\n },\n\n events: {\n click: 'نقر',\n // V3c burn-down (2026-07-14): English passthrough — no native form round-trips\n // on the parse side (probe: split forms shatter, fused forms capture verbatim).\n dblclick: 'dblclick',\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n mouseover: 'فأرة فوق',\n mouseout: 'mouseout',\n mousemove: 'mousemove',\n keydown: 'مفتاح أسفل',\n keyup: 'مفتاح أعلى',\n keypress: 'keypress',\n focus: 'تركيز',\n blur: 'ضبابية',\n change: 'تغيير',\n input: 'إدخال',\n submit: 'إرسال',\n reset: 'reset',\n load: 'تحميل',\n unload: 'unload',\n resize: 'تغيير حجم',\n scroll: 'تمرير',\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n touchcancel: 'touchcancel',\n },\n\n logical: {\n when: 'عندما',\n where: 'أين',\n and: 'و',\n or: 'أو',\n not: 'ليس',\n is: 'هو',\n exists: 'موجود',\n matches: 'يطابق',\n contains: 'يحتوي',\n includes: 'يشمل',\n equals: 'يساوي',\n has: 'لديه',\n have: 'لدي',\n then: 'ثم',\n else: 'وإلا',\n otherwise: 'خلاف ذلك',\n end: 'النهاية',\n live: 'حي',\n bind: 'اربط',\n changes: 'يتغير',\n },\n\n temporal: {\n seconds: 'ثوانِ',\n second: 'ثانية',\n milliseconds: 'ميلي ثانية',\n millisecond: 'ميلي ثانية',\n minutes: 'دقائق',\n minute: 'دقيقة',\n hours: 'ساعات',\n hour: 'ساعة',\n ms: 'م.ث',\n s: 'ث',\n min: 'د',\n h: 'س',\n times: 'مرات',\n },\n\n values: {\n true: 'صحيح',\n false: 'خطأ',\n null: 'null',\n undefined: 'غير معرف',\n it: 'هو',\n its: 'له',\n me: 'أنا',\n my: 'لي',\n myself: 'نفسي',\n you: 'أنت',\n your: 'لك',\n yourself: 'نفسك',\n element: 'عنصر',\n target: 'هدف',\n detail: 'تفاصيل',\n event: 'حدث',\n window: 'نافذة',\n document: 'وثيقة',\n body: 'جسم',\n result: 'نتيجة',\n value: 'قيمة',\n },\n\n attributes: {\n class: 'فئة',\n classes: 'فئات',\n style: 'أسلوب',\n styles: 'أساليب',\n attribute: 'خاصية',\n attributes: 'خصائص',\n property: 'خاصية',\n properties: 'خصائص',\n },\n\n expressions: {\n characters: 'حروف',\n inclusive: 'شامل',\n exclusive: 'حصري',\n first: 'أول',\n last: 'آخر',\n next: 'التالي',\n previous: 'السابق',\n prev: 'سابق',\n at: 'عند',\n random: 'عشوائي',\n closest: 'الأقرب',\n parent: 'والد',\n children: 'أطفال',\n within: 'داخل',\n no: 'لا يوجد',\n empty: 'فارغ',\n some: 'بعض',\n 'starts with': 'يبدأ بـ',\n 'ends with': 'ينتهي بـ',\n 'ignoring case': 'مع تجاهل الحالة',\n 'sorted by': 'مرتب حسب',\n 'mapped to': 'محول إلى',\n 'split by': 'مقسم بواسطة',\n 'joined by': 'مدموج بواسطة',\n },\n};\n","// packages/i18n/src/parser/ar.ts\n\nimport { ar } from '../dictionaries/ar';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Arabic keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Arabic:\n * - `على نقر بدل .active` → parses as `on click toggle .active`\n * - `إذا صحيح ثم سجل \"مرحبا\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `على click بدل .active` also works (Arabic `على` + English `click`)\n *\n * Arabic is a crucial test case because:\n * - Right-to-left (RTL) script\n * - Different character set (Unicode Arabic block)\n * - Space-separated words with diacritics\n * - Tests parser's Unicode handling robustly\n *\n * Note: The parser handles RTL text correctly because tokenization\n * is based on whitespace/operator boundaries, not visual direction.\n *\n * @example\n * ```typescript\n * import { arKeywords } from '@lokascript/i18n/parser/ar';\n *\n * arKeywords.resolve('بدل'); // 'toggle'\n * arKeywords.toLocale('on'); // 'على'\n * ```\n */\nexport const arKeywords: KeywordProvider = createKeywordProvider(ar, 'ar', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { ar as arDictionary } from '../dictionaries/ar';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const ko: Dictionary = {\n commands: {\n on: '에',\n tell: '말하다',\n trigger: '트리거',\n send: '보내다',\n take: '가져오다',\n put: '넣다',\n set: '설정',\n get: '얻다',\n add: '추가',\n remove: '제거',\n toggle: '토글',\n hide: '숨기다',\n show: '보이다',\n if: '만약',\n unless: '아니라면', // distinct from else `아니면` (line ~131) — was a homonym\n repeat: '반복',\n for: '각각', // profile's for word — 동안 is while (collision)\n while: '동안',\n until: '까지',\n continue: '계속',\n break: '중단',\n halt: '정지',\n wait: '대기',\n fetch: '가져오기',\n call: '호출',\n return: '반환',\n make: '만들다',\n log: '로그',\n throw: '던지다',\n catch: '잡다',\n measure: '측정',\n transition: '전환',\n increment: '증가',\n decrement: '감소',\n default: '기본값',\n go: '이동',\n pushUrl: 'URL푸시',\n replaceUrl: 'URL교체',\n copy: '복사',\n pick: '선택',\n beep: '비프',\n js: 'JS실행',\n async: '비동기',\n render: '렌더링',\n swap: '교환',\n morph: '변형',\n settle: '안정',\n append: '덧붙이다', // profile primary; '추가' is add's word (parsed as add)\n // 종료 → 나가기: realigned to the semantic profile primary (ko.ts `exit: 나가기`,\n // whose comment already flags the 종료 end-collision). Rendered as 종료 it\n // tokenized as a plain identifier, so a guard-clause `exit` never parsed.\n exit: '나가기',\n install: '설치',\n breakpoint: '중단점',\n clear: '지우기',\n close: '닫기',\n open: '열기',\n select: '고르기', // Batch 3: 선택 is the pick keyword — bare select rendered with it parses null\n clone: '복제',\n prepend: '앞에추가',\n socket: '소켓',\n },\n\n modifiers: {\n to: '에',\n from: '에서',\n into: '으로',\n with: '와',\n at: '에',\n in: '안에',\n of: '의',\n as: '로',\n by: '에의해',\n before: '전에',\n after: '후에',\n over: '위에',\n under: '아래',\n between: '사이',\n through: '통해',\n without: '없이',\n },\n\n events: {\n click: '클릭',\n dblclick: '더블클릭',\n mousedown: '마우스다운',\n mouseup: '마우스업',\n mouseenter: '마우스엔터',\n mouseleave: '마우스리브',\n mouseover: '마우스오버',\n mouseout: '마우스아웃',\n mousemove: '마우스무브',\n keydown: '키다운',\n keyup: '키업',\n keypress: '키프레스',\n focus: '포커스',\n blur: '블러',\n change: '변경',\n input: '입력',\n submit: '제출',\n reset: '재설정', // Batch 3: 리셋 captured on.event as expression (broken listener) — profile word round-trips\n load: '로드',\n unload: 'unload',\n resize: '리사이즈',\n scroll: '스크롤',\n // V3c burn-down (2026-07-14): English passthrough — no native form round-trips\n // on the parse side (probe: split forms shatter, fused forms capture verbatim).\n touchstart: 'touchstart',\n touchend: '터치종료',\n touchmove: 'touchmove',\n touchcancel: '터치취소',\n },\n\n logical: {\n when: '때',\n where: '어디',\n and: '그리고',\n or: '또는',\n not: '아니',\n is: '이다',\n exists: '존재',\n matches: '일치',\n contains: '포함',\n includes: '포함하다',\n equals: '같다',\n has: '있다',\n have: '있다',\n then: '그러면',\n else: '아니면',\n otherwise: '그렇지않으면',\n end: '끝',\n live: '라이브',\n bind: '바인드',\n changes: '변경되면',\n },\n\n temporal: {\n seconds: '초',\n second: '초',\n milliseconds: '밀리초',\n millisecond: '밀리초',\n minutes: '분',\n minute: '분',\n hours: '시간',\n hour: '시간',\n ms: 'ms',\n s: '초',\n min: '분',\n h: '시',\n times: '번',\n },\n\n values: {\n true: '참',\n false: '거짓',\n null: '널',\n undefined: '정의안됨',\n it: '그것',\n its: '그것의',\n me: '나',\n my: '내',\n myself: '나자신',\n you: '너',\n your: '네',\n yourself: '너자신',\n element: '요소',\n target: '대상',\n detail: '세부',\n event: '이벤트',\n window: '창',\n document: '문서',\n body: '바디',\n result: '결과',\n value: '값',\n },\n\n attributes: {\n class: '클래스',\n classes: '클래스들',\n style: '스타일',\n styles: '스타일들',\n attribute: '속성',\n attributes: '속성들',\n property: '프로퍼티',\n properties: '프로퍼티들',\n },\n\n expressions: {\n characters: '문자',\n inclusive: '포함',\n exclusive: '제외',\n first: '첫번째',\n last: '마지막',\n next: '다음',\n previous: '이전',\n prev: '이전',\n at: '에서',\n random: '무작위',\n closest: '가장가까운',\n parent: '부모',\n children: '자식',\n within: '이내',\n no: '없음',\n empty: '비어있는',\n some: '일부',\n 'starts with': '로시작',\n 'ends with': '로끝나는',\n 'ignoring case': '대소문자_무시',\n 'sorted by': '로_정렬',\n 'mapped to': '로_변환',\n 'split by': '로_분할',\n 'joined by': '로_결합',\n },\n};\n","// packages/i18n/src/parser/ko.ts\n\nimport { ko } from '../dictionaries/ko';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Korean keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Korean:\n * - `에 클릭 토글 .active` → parses as `on click toggle .active`\n * - `만약 참 그러면 로그 \"안녕하세요\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `에 click 토글 .active` also works (Korean `에` + English `click`)\n *\n * Korean is a useful test case because:\n * - SOV word order (Subject-Object-Verb)\n * - Hangul script (syllabic blocks)\n * - Agglutinative morphology with particles\n * - Tests parser's Unicode handling with Korean characters\n *\n * @example\n * ```typescript\n * import { koKeywords } from '@lokascript/i18n/parser/ko';\n *\n * koKeywords.resolve('토글'); // 'toggle'\n * koKeywords.toLocale('on'); // '에'\n * ```\n */\nexport const koKeywords: KeywordProvider = createKeywordProvider(ko, 'ko', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { ko as koDictionary } from '../dictionaries/ko';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const zh: Dictionary = {\n commands: {\n on: '当',\n tell: '告诉',\n trigger: '触发',\n send: '发送',\n // `拿取` (the semantic zh profile's take primary), not `获取` — `获取` is the\n // profile's GET primary, so emitting it for take made `take …` parse as get\n // (take-class-from-siblings: phantom get, take dropped). Exposed by the get-zh-ba\n // pattern; same dict↔profile homonym family as pl get/fetch.\n take: '拿取',\n put: '放置',\n set: '设置',\n get: '获得',\n add: '添加',\n remove: '移除',\n toggle: '切换',\n hide: '隐藏',\n show: '显示',\n if: '如果',\n unless: '除非',\n repeat: '重复',\n for: '为',\n while: '当',\n until: '直到',\n continue: '继续',\n break: '中断',\n halt: '停止',\n wait: '等待',\n // 抓取 (zhuāqǔ, \"grab/scrape\") is the semantic zh profile's `fetch` primary;\n // 获取 (huòqǔ) is its `get` primary, so emitting 获取 here made the semantic\n // parser read a transformed `fetch` as `get`. See ZH_BLOCK_BODY_SCOPE.md #3.\n fetch: '抓取',\n call: '调用',\n return: '返回',\n make: '制作',\n log: '日志',\n throw: '抛出',\n catch: '捕获',\n measure: '测量',\n transition: '过渡',\n increment: '增加',\n decrement: '减少',\n default: '默认',\n go: '前往',\n pushUrl: '推送网址',\n replaceUrl: '替换网址',\n copy: '复制',\n pick: '选取',\n beep: '蜂鸣',\n js: 'JS执行',\n async: '异步',\n render: '渲染',\n swap: '交换',\n morph: '变形',\n settle: '稳定',\n append: '追加',\n exit: '退出',\n install: '安装',\n breakpoint: '断点',\n clear: '清除',\n close: '关闭',\n open: '打开',\n select: '选择',\n clone: '克隆',\n prepend: '前置',\n },\n\n modifiers: {\n to: '到',\n from: '从',\n into: '进入',\n with: '与',\n at: '在',\n in: '在',\n of: '的',\n as: '作为',\n by: '通过',\n before: '之前',\n after: '之后',\n over: '在上',\n under: '在下',\n between: '之间',\n through: '通过',\n without: '没有',\n },\n\n events: {\n click: '点击',\n dblclick: '双击',\n // mousedown/mouseup: English passthrough — no native form round-trips on the\n // parse side (V3c probe 2026-07-14: fused forms captured verbatim, split forms\n // shattered to their first word — live broken listeners in repeat-until-event).\n // The Batch-2 id-keyup precedent; revisit if S5b + tokenizer gain native entries.\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n // V3 Batch 2: 鼠标悬停 captured no event (expression:undefined) — realigned\n // to the tokenizer-registered 鼠标移入 (also S5b-listed). 按键抬起\n // prefix-shattered to 按键 and captured `keydown` (a keyup handler firing\n // on keydown) → 松键, the S5b/tokenizer form. keydown keeps 按键按下\n // (captures keydown via the registered 按键 prefix; S5b-aliased) — fixing\n // it to bare 按键 would collide with keypress below.\n mouseover: '鼠标移入',\n mouseout: '鼠标移出',\n mousemove: '鼠标移动',\n keydown: '按键按下',\n keyup: '松键',\n keypress: 'keypress',\n focus: '聚焦',\n blur: '失焦',\n change: '改变',\n input: '输入',\n submit: '提交',\n reset: '重置',\n load: '加载',\n unload: '卸载',\n resize: '调整大小',\n scroll: '滚动',\n touchstart: '触摸开始',\n touchend: 'touchend',\n touchmove: '触摸移动',\n // V3c burn-down (2026-07-14): English passthrough — no native form round-trips\n // on the parse side (probe: split forms shatter, fused forms capture verbatim).\n touchcancel: 'touchcancel',\n },\n\n logical: {\n when: '当',\n where: '哪里',\n and: '和',\n or: '或',\n not: '非',\n is: '是',\n exists: '存在',\n matches: '匹配',\n contains: '包含',\n includes: '包括',\n equals: '等于',\n has: '有',\n have: '有',\n then: '那么',\n else: '否则',\n otherwise: '要不然',\n end: '结束',\n live: '实时',\n bind: '绑定',\n changes: '改变时',\n },\n\n temporal: {\n seconds: '秒',\n second: '秒',\n milliseconds: '毫秒',\n millisecond: '毫秒',\n minutes: '分钟',\n minute: '分钟',\n hours: '小时',\n hour: '小时',\n ms: '毫秒',\n s: '秒',\n min: '分',\n h: '时',\n times: '次',\n },\n\n values: {\n true: '真',\n false: '假',\n null: '空',\n undefined: '未定义',\n it: '它',\n its: '它的',\n me: '我',\n my: '我的',\n myself: '我自己',\n you: '你',\n your: '你的',\n yourself: '你自己',\n element: '元素',\n target: '目标',\n detail: '详情',\n event: '事件',\n window: '窗口',\n document: '文档',\n body: '主体',\n result: '结果',\n value: '值',\n },\n\n attributes: {\n class: '类',\n classes: '类别',\n style: '样式',\n styles: '样式集',\n attribute: '属性',\n attributes: '属性集',\n property: '特性',\n properties: '特性集',\n },\n\n expressions: {\n characters: '字符',\n inclusive: '包含',\n exclusive: '排除',\n first: '第一个',\n last: '最后一个',\n next: '下一个',\n previous: '上一个',\n prev: '上个',\n at: '在',\n random: '随机',\n closest: '最近的',\n parent: '父级',\n children: '子级',\n within: '之内',\n no: '没有',\n empty: '空的',\n some: '一些',\n 'starts with': '以开头',\n 'ends with': '以结尾',\n 'ignoring case': '忽略大小写',\n 'sorted by': '按_排序',\n 'mapped to': '映射为',\n 'split by': '按_分割',\n 'joined by': '用_连接',\n },\n};\n","// packages/i18n/src/parser/zh.ts\n\nimport { zh } from '../dictionaries/zh';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Chinese (Simplified) keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Chinese:\n * - `当 点击 切换 .active` → parses as `on click toggle .active`\n * - `如果 真 那么 日志 \"你好\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `当 click 切换 .active` also works (Chinese `当` + English `click`)\n *\n * Chinese is a useful test case because:\n * - SVO word order (similar to English)\n * - Logographic script (Chinese characters)\n * - Isolating morphology (minimal inflection)\n * - Tests parser's Unicode handling with CJK characters\n * - Large developer population\n *\n * @example\n * ```typescript\n * import { zhKeywords } from '@lokascript/i18n/parser/zh';\n *\n * zhKeywords.resolve('切换'); // 'toggle'\n * ```\n */\nexport const zhKeywords: KeywordProvider = createKeywordProvider(zh, 'zh', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { zh as zhDictionary } from '../dictionaries/zh';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const tr: Dictionary = {\n commands: {\n on: 'üzerinde',\n tell: 'söyle',\n trigger: 'tetikle',\n send: 'gönder',\n take: 'tut', // auditor: dict emitted a word the profile reads differently\n put: 'koy',\n set: 'ayarla',\n get: 'al',\n add: 'ekle',\n remove: 'kaldır',\n toggle: 'değiştir',\n hide: 'gizle',\n show: 'göster',\n if: 'eğer',\n unless: 'değilse',\n repeat: 'tekrarla',\n for: 'için',\n // `süresince` (the semantic tr profile's while primary), not `iken`: `iken`\n // is the profile's WHEN primary (logical.when below also emits it), so a\n // fronted repeat-while head tokenized as `when` and the condition dropped\n // wholesale. Same dict↔profile homonym disambiguation as pl get/pobierz.\n while: 'süresince',\n until: 'kadar',\n continue: 'devam',\n break: 'dur',\n halt: 'durdur',\n wait: 'bekle',\n fetch: 'getir',\n call: 'çağır',\n return: 'dön',\n make: 'yap',\n log: 'kaydet',\n throw: 'fırlat',\n catch: 'yakala',\n measure: 'ölç',\n transition: 'geçiş',\n increment: 'artır',\n decrement: 'azalt',\n default: 'varsayılan',\n go: 'git',\n pushUrl: 'urlEkle',\n replaceUrl: 'urlDeğiştir',\n copy: 'kopyala',\n pick: 'seç',\n beep: 'bip',\n js: 'js',\n async: 'asenkron',\n render: 'render',\n swap: 'takas',\n morph: 'dönüştür',\n settle: 'sabitlen',\n append: 'iliştir', // profile primary; 'ekle' is add's word (parsed as add)\n exit: 'çık',\n install: 'kur',\n breakpoint: 'kesme-noktası',\n clear: 'temizle',\n close: 'kapat',\n open: 'aç',\n select: 'vurgula', // Batch 3: seç is the pick keyword — bare select rendered with it parses null\n clone: 'klonla',\n prepend: 'başınaekle',\n socket: 'soket',\n },\n\n modifiers: {\n to: 'e',\n from: 'den',\n into: 'içine',\n with: 'ile',\n at: 'de',\n in: 'içinde',\n of: 'nin',\n as: 'olarak',\n by: 'tarafından',\n before: 'önce',\n after: 'sonra',\n over: 'üzerinde',\n under: 'altında',\n between: 'arasında',\n through: 'boyunca',\n without: 'olmadan',\n },\n\n events: {\n click: 'tıklama',\n dblclick: 'dblclick',\n // Fused (no `_`): the semantic tokenizer splits on `_`, breaking event\n // recognition (mousedown → \"bas\" / mouseup mis-captured). Mirrors the #535\n // ru/uk fuse + #510 resize fix.\n mousedown: 'farebas',\n mouseup: 'farebırak',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n // V3 Batch 2: same `_`-split class (tuş_bas captured verbatim `bas` — a\n // listener for a DOM event named \"bas\") — realigned to the S5b/tokenizer\n // fused forms.\n mouseover: 'fareiçinde',\n mouseout: 'faredışında',\n mousemove: 'mousemove',\n keydown: 'tuşbasma',\n keyup: 'tuşbırakma',\n // V3c burn-down (2026-07-14): English passthrough — no native form round-trips\n // on the parse side (probe: split forms shatter, fused forms capture verbatim).\n keypress: 'keypress',\n focus: 'odak',\n blur: 'bulanık',\n change: 'değişim',\n input: 'giriş',\n submit: 'gönderme', // Batch 3: gönder is the send verb — on-submit listener captured event \"send\"\n reset: 'sıfırla',\n load: 'yükle',\n unload: 'unload',\n resize: 'boyutlandırma',\n scroll: 'kaydır',\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n touchcancel: 'touchcancel',\n },\n\n logical: {\n when: 'iken',\n where: 'nerede',\n and: 've',\n or: 'veya',\n not: 'değil',\n is: 'dir',\n exists: 'var',\n matches: 'eşleşir',\n contains: 'içerir',\n // `includes` takes `contains`' word: both engines read them as one operator,\n // and `dahil` is `inclusive` (pick's range word), which the reader takes it for.\n includes: 'içerir',\n equals: 'eşittir',\n has: 'var',\n have: 'var',\n then: 'ardından',\n else: 'yoksa',\n otherwise: 'aksi_halde',\n end: 'son',\n live: 'canlı',\n changes: 'değiştiğinde',\n },\n\n temporal: {\n seconds: 'saniye',\n second: 'saniye',\n milliseconds: 'milisaniye',\n millisecond: 'milisaniye',\n minutes: 'dakika',\n minute: 'dakika',\n hours: 'saat',\n hour: 'saat',\n ms: 'ms',\n s: 's',\n min: 'dk',\n h: 'sa',\n times: 'kez',\n },\n\n values: {\n true: 'doğru',\n false: 'yanlış',\n null: 'null',\n undefined: 'tanımsız',\n it: 'o',\n its: 'onun',\n me: 'ben',\n my: 'benim',\n myself: 'kendim',\n you: 'sen',\n your: 'senin',\n yourself: 'kendin',\n element: 'öğe',\n target: 'hedef',\n detail: 'detay',\n event: 'olay',\n window: 'pencere',\n document: 'belge',\n body: 'gövde',\n result: 'sonuç',\n value: 'değer',\n },\n\n attributes: {\n class: 'sınıf',\n classes: 'sınıflar',\n style: 'stil',\n styles: 'stiller',\n attribute: 'özellik',\n attributes: 'özellikler',\n property: 'özellik',\n properties: 'özellikler',\n },\n\n expressions: {\n characters: 'karakterler',\n inclusive: 'dahil',\n exclusive: 'hariç',\n first: 'ilk',\n // 'son' is also the END keyword emission (block terminator), and the\n // parser's end-recognizers match it by value — so a positional `last`\n // emission of 'son' terminated the enclosing block mid-condition\n // (focus-trap's `eşleşir son <button/>` dropped the branch body; the sw\n // mwisho class). 'sonuncu' (\"the last one\") is unambiguous.\n last: 'sonuncu',\n next: 'sonraki',\n previous: 'önceki',\n prev: 'önc',\n at: 'de',\n random: 'rastgele',\n closest: 'enyakın',\n parent: 'ebeveyn',\n children: 'çocuklar',\n within: 'içinde',\n no: 'yok',\n empty: 'boş',\n some: 'bazı',\n 'starts with': 'ile başlar',\n 'ends with': 'ile biter',\n 'ignoring case': 'büyük küçük harf duyarsız',\n 'sorted by': 'göre sıralı',\n 'mapped to': 'ye dönüştürülmüş',\n 'split by': 'ile bölünmüş',\n 'joined by': 'ile birleştirilmiş',\n },\n};\n","// packages/i18n/src/parser/tr.ts\n\nimport { tr } from '../dictionaries/tr';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Turkish keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Turkish:\n * - `üzerinde tıklama değiştir .active` → parses as `on click toggle .active`\n * - `eğer doğru ise kaydet \"merhaba\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `üzerinde click değiştir .active` also works (Turkish `üzerinde` + English `click`)\n *\n * Turkish is a useful test case because:\n * - SOV word order (Subject-Object-Verb)\n * - Agglutinative morphology with suffixes\n * - Vowel harmony rules\n * - Latin script with special characters (ı, ğ, ş, ç, ö, ü)\n * - Tests parser's handling of extended Latin characters\n *\n * @example\n * ```typescript\n * import { trKeywords } from '@lokascript/i18n/parser/tr';\n *\n * trKeywords.resolve('değiştir'); // 'toggle'\n * trKeywords.toLocale('on'); // 'üzerinde'\n * ```\n */\nexport const trKeywords: KeywordProvider = createKeywordProvider(tr, 'tr', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { tr as trDictionary } from '../dictionaries/tr';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const id: Dictionary = {\n commands: {\n on: 'pada',\n tell: 'katakan',\n trigger: 'picu',\n send: 'kirim',\n take: 'ambil',\n put: 'taruh',\n set: 'atur',\n get: 'dapatkan',\n add: 'tambah',\n remove: 'hapus',\n toggle: 'alihkan',\n hide: 'sembunyikan',\n show: 'tampilkan',\n if: 'jika',\n unless: 'kecuali',\n repeat: 'ulangi',\n for: 'untuk',\n while: 'selama',\n until: 'sampai',\n continue: 'lanjutkan',\n break: 'hentikan',\n halt: 'berhenti',\n wait: 'tunggu',\n // profile primary; 'ambil' is take's word — emitting it for fetch made every\n // fetch parse as take once the fused take-event pattern came alive (the de\n // holen/abrufen bug class)\n fetch: 'muat',\n call: 'panggil',\n return: 'kembali',\n make: 'buat',\n log: 'catat',\n throw: 'lempar',\n catch: 'tangkap',\n measure: 'ukur',\n transition: 'transisi',\n // naikkan (raise), not tambahkan — tambahkan is the semantic profile's\n // `add` alternative, so emitting it made increment-counter parse as ADD\n // (the #373 collision family). naikkan is the profile's increment\n // alternative, pairing naturally with the decrement side.\n increment: 'naikkan',\n decrement: 'kurangi',\n default: 'bawaan',\n go: 'pergi',\n pushUrl: 'tambahUrl',\n replaceUrl: 'gantiUrl',\n copy: 'salin',\n pick: 'pilih',\n beep: 'bunyi',\n js: 'js',\n async: 'asinkron',\n render: 'olah', // auditor: dict emitted a word the profile reads differently\n swap: 'tukar',\n morph: 'ubah', // auditor: dict emitted a word the profile reads differently\n settle: 'stabilkan', // auditor: dict emitted a word the profile reads differently\n append: 'sisipkan', // profile primary; 'tambah_akhir' splits and is unrecognized\n exit: 'keluar',\n install: 'pasang',\n breakpoint: 'titik-henti',\n clear: 'bersihkan', // hapus is the remove PRIMARY in the profile\n close: 'tutupkan', // Batch 3: tutup is the hide keyword — rendered close parsed as action=hide\n open: 'buka',\n select: 'tandai', // Batch 3: pilih is the pick keyword — bare select rendered with it parses null\n clone: 'klon',\n prepend: 'awali',\n },\n\n modifiers: {\n to: 'ke',\n from: 'dari',\n into: 'ke_dalam',\n with: 'dengan',\n at: 'di',\n in: 'dalam',\n of: 'dari',\n as: 'sebagai',\n by: 'oleh',\n before: 'sebelum',\n after: 'setelah',\n over: 'di_atas',\n under: 'di_bawah',\n between: 'antara',\n through: 'melalui',\n without: 'tanpa',\n },\n\n events: {\n click: 'klik',\n dblclick: 'dblclick',\n // mousedown/mouseup: English passthrough — no native form round-trips on the\n // parse side (V3c probe 2026-07-14: fused forms captured verbatim, split forms\n // shattered to their first word — live broken listeners in repeat-until-event).\n // The Batch-2 id-keyup precedent; revisit if S5b + tokenizer gain native entries.\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n // V3 Batch 2: mouse_atas/mouse_luar captured no event (the S5b forms\n // `mouse masuk`/`mouse keluar` are aspirational — they don't tokenize\n // either) — realigned to the tokenizer-registered natives. keydown keeps\n // tekan_tombol (captures keydown via the registered `tekan`; S5b-aliased).\n // keyup has NO parseable native (lepas is unregistered) → English\n // passthrough, matching the blur/reset precedent below.\n mouseover: 'arahkan',\n mouseout: 'tinggalkan',\n mousemove: 'mousemove',\n keydown: 'tekan_tombol',\n keyup: 'keyup',\n keypress: 'keypress',\n focus: 'fokus',\n blur: 'blur',\n change: 'ubah',\n input: 'masukan',\n submit: 'kirim',\n reset: 'reset',\n load: 'muat',\n unload: 'bongkar',\n resize: 'ubah_ukuran',\n scroll: 'gulir',\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n // V3c burn-down (2026-07-14): English passthrough — no native form round-trips\n // on the parse side (probe: split forms shatter, fused forms capture verbatim).\n touchcancel: 'touchcancel',\n },\n\n logical: {\n when: 'ketika',\n where: 'di_mana',\n and: 'dan',\n or: 'atau',\n not: 'bukan',\n is: 'adalah',\n exists: 'ada',\n matches: 'cocok',\n contains: 'berisi',\n includes: 'termasuk',\n equals: 'sama',\n has: 'punya',\n have: 'punya',\n then: 'lalu',\n else: 'lainnya',\n otherwise: 'sebaliknya',\n end: 'akhir',\n live: 'langsung',\n changes: 'berubah',\n },\n\n temporal: {\n seconds: 'detik',\n second: 'detik',\n milliseconds: 'milidetik',\n millisecond: 'milidetik',\n minutes: 'menit',\n minute: 'menit',\n hours: 'jam',\n hour: 'jam',\n ms: 'ms',\n s: 'd',\n min: 'mnt',\n h: 'j',\n times: 'kali',\n },\n\n values: {\n true: 'benar',\n false: 'salah',\n null: 'null',\n undefined: 'tidak_terdefinisi',\n it: 'itu',\n its: 'miliknya',\n me: 'saya',\n my: 'saya punya',\n myself: 'saya sendiri',\n you: 'kamu',\n your: 'kamu punya',\n yourself: 'kamu sendiri',\n element: 'elemen',\n target: 'target',\n detail: 'detail',\n event: 'peristiwa',\n window: 'jendela',\n document: 'dokumen',\n body: 'badan',\n result: 'hasil',\n value: 'nilai',\n },\n\n attributes: {\n class: 'kelas',\n classes: 'kelas_kelas',\n style: 'gaya',\n styles: 'gaya_gaya',\n attribute: 'atribut',\n attributes: 'atribut_atribut',\n property: 'properti',\n properties: 'properti_properti',\n },\n\n expressions: {\n characters: 'karakter',\n inclusive: 'inklusif',\n exclusive: 'eksklusif',\n first: 'pertama',\n last: 'terakhir',\n next: 'berikutnya',\n previous: 'sebelumnya',\n prev: 'sblm',\n at: 'di',\n random: 'acak',\n closest: 'terdekat',\n parent: 'induk',\n children: 'anak_anak',\n within: 'dalam',\n no: 'tidak_ada',\n empty: 'kosong',\n some: 'beberapa',\n 'starts with': 'dimulai dengan',\n 'ends with': 'diakhiri dengan',\n 'ignoring case': 'abaikan kapital',\n 'sorted by': 'diurutkan berdasarkan',\n 'mapped to': 'dipetakan ke',\n 'split by': 'dipisah oleh',\n 'joined by': 'digabung oleh',\n },\n};\n","// packages/i18n/src/parser/id.ts\n\nimport { id } from '../dictionaries/id';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Indonesian (Bahasa Indonesia) keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Indonesian:\n * - `pada klik ganti .active` → parses as `on click toggle .active`\n * - `jika benar lalu log \"Halo\"` → parses as `if true then log \"Hello\"`\n *\n * Indonesian is an SVO language with:\n * - Agglutinative morphology (prefixes/suffixes)\n * - No grammatical gender\n * - Prepositions (like English)\n * - Relatively simple syntax\n *\n * @example\n * ```typescript\n * import { idKeywords } from '@lokascript/i18n/parser/id';\n *\n * idKeywords.resolve('alihkan'); // 'toggle'\n * idKeywords.toLocale('on'); // 'pada'\n * ```\n */\nexport const idKeywords: KeywordProvider = createKeywordProvider(id, 'id', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { id as idDictionary } from '../dictionaries/id';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const qu: Dictionary = {\n commands: {\n on: 'kaqpi',\n tell: 'niy',\n trigger: 'kichay',\n send: 'kachay',\n take: 'hapiy', // auditor: dict emitted a word the profile reads differently\n put: 'churay',\n // churay is the semantic qu profile's `put` primary; `set` is churanay. Emitting\n // churay for set made the semantic parser read a transformed `set` as `put`.\n // See ZH_BLOCK_BODY_SCOPE.md (#2 sweep — keyword realignment, cf. zh fetch).\n set: 'churanay',\n // Align with the semantic quechua profile's `get` primary (`taripay`); the\n // previous `chaskiy` had no profile entry, so the transformed `get` dropped\n // (get-value parsed degenerate). Same dict↔profile alignment as id `toggle`.\n get: 'taripay',\n add: 'yapay',\n remove: 'qichuy',\n toggle: 'tikray',\n hide: 'pakay',\n show: 'rikuchiy',\n if: 'sichus',\n unless: 'mana sichus', // spaced phrase (\"if not\"); `_` form split to `mana`+`sichus`(=if) at parse time\n repeat: 'kutipay',\n for: 'sapankaq', // profile's for word — rayku doubles as `by`\n // `kaykamaqa` (the semantic qu profile's while primary), not `kay_kaq`: the\n // `_` form is unknown to the profile (and `_` words split at parse time, cf.\n // qhipaman_yapay), so the fronted repeat-while head never formed a `while`\n // node — the condition dropped wholesale. Same dict↔profile alignment as\n // vi render / de abrufen.\n while: 'kaykamaqa',\n until: 'hayk_akama',\n continue: 'purichiy',\n break: 'p_akiy',\n halt: 'sayay',\n wait: 'suyay',\n fetch: 'apamuy',\n call: 'qayay',\n return: 'kutimuy',\n make: 'ruray',\n // qillqay is the semantic qu profile's `copy` primary; `log` is qillqakuy.\n // Emitting qillqay for log made the parser read every transformed log as\n // copy (log-value/log-element/get-value lossy) — same realign as set above.\n log: 'qillqakuy',\n throw: 'wikchuy',\n catch: 'hapsiy',\n measure: 'tupuy',\n // pasay, not tikray: the semantic qu profile's toggle keyword is\n // t'ikray/tikray, so a tikray render collided with toggle and the\n // transition command never anchored (sw kama precedent, #569).\n transition: 'pasay',\n increment: 'yapachiy',\n decrement: 'pisiyachiy',\n default: 'ñawpaq_kaq',\n go: 'riy',\n pushUrl: 'url_tanqay',\n replaceUrl: 'url_tikray',\n copy: 'qillqay',\n pick: 'akllay',\n beep: 'waqay',\n js: 'js',\n async: 'mana_suyaspa',\n render: 'rikurichiy', // auditor: dict emitted a word the profile reads differently\n swap: \"t'inkuy\", // profile primary; 'rantin_tikray' splits, 'tikray' is toggle's word\n morph: 'tukunay', // auditor: dict emitted a word the profile reads differently\n settle: 'tiyakuy', // auditor: dict emitted a word the profile reads differently\n append: 'qatichiy', // profile's append primary (single token); `qhipaman_yapay` `_`-split to qhipaman+yapay(=add) at parse time\n exit: 'lluqsiy',\n install: 'tarpuy',\n breakpoint: 'sayachinay',\n clear: 'pichay',\n close: 'wichqay',\n open: 'paskay', // Batch 3: kichay is the trigger keyword — rendered open parsed null\n select: 'marcay', // Batch 3: akllay is the pick keyword — bare select rendered with it parses null\n clone: 'kikinchay',\n prepend: 'ñawpachiy',\n socket: 'tinkina',\n },\n\n modifiers: {\n to: 'man',\n from: 'manta',\n into: 'ukupi',\n with: 'wan',\n at: 'pi',\n in: 'ukupi',\n of: 'pa',\n as: 'hina',\n by: 'rayku',\n before: 'ñawpaqpi',\n after: 'qhepapi',\n over: 'hawapi',\n under: 'urapi',\n between: 'chawpipi',\n through: 'pasaspa',\n without: 'mana',\n },\n\n events: {\n click: 'ñitiy',\n dblclick: 'dblclick',\n // Fused (no `_`): the semantic tokenizer splits on `_` — and `rat_ñitiy` then\n // mis-captured as the `click` event (ñitiy→click). Mirrors the #535 ru/uk fuse.\n mousedown: 'ratñitiy',\n mouseup: 'rathuqariy',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n mouseover: 'mouseover',\n mouseout: 'mouseout',\n mousemove: 'mousemove',\n // V3 Batch 2: `yupana_ñitiy` split at `_` and mis-captured as the `click`\n // event (ñitiy→click, the same mechanism as the mousedown fuse above);\n // `yupana_huqariy` captured verbatim `huqariy`. Realigned to the\n // S5b/tokenizer forms.\n keydown: 'llave uray',\n keyup: 'llave hawa',\n keypress: 'keypress',\n focus: 'qhaway',\n blur: 'paqariy',\n change: 'kambiay', // Batch 3: tikray is the toggle verb — on-change listener captured event \"toggle\"\n input: 'yaykuchiy',\n submit: 'apaykachay', // Batch 3: kachay is the send verb — on-submit captured \"send\" in one corpus slot\n reset: 'musuqchay', // Batch 3: qallariy is the init/start word — on-reset listener captured event \"default\"\n load: 'apakuy',\n unload: 'unload',\n resize: 'hatun_kay',\n scroll: 'kunray',\n // V3c burn-down (2026-07-14): English passthrough — no native form round-trips\n // on the parse side (probe: split forms shatter, fused forms capture verbatim).\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n touchcancel: 'touchcancel',\n },\n\n logical: {\n when: 'maykama',\n where: 'maypi',\n and: 'hinallataq',\n or: 'utaq',\n not: 'mana',\n is: 'kanqa',\n exists: 'tiyan',\n matches: 'tupan',\n contains: 'ukupi_kan',\n includes: 'churasqa',\n equals: 'kikin',\n has: 'kachkan',\n have: 'kachkani',\n then: 'chayqa',\n // Align to the semantic profile's else word `manachus`. The old `mana_chayqa`\n // tokenized as `mana`(false) + `_` + `chayqa`(then) — no else keyword formed,\n // so qu conditionals never split their else branch. `manachus` is a single\n // token the profile-derived keyword map reads as `else` (dict↔profile align).\n else: 'manachus',\n otherwise: 'huk_kaqpi',\n end: 'tukuy',\n live: 'kawsay',\n changes: 'tukurikun',\n },\n\n temporal: {\n seconds: 'sikundukuna',\n second: 'sikundu',\n milliseconds: 'iskay_paqta_sikundukuna',\n millisecond: 'iskay_paqta_sikundu',\n minutes: 'minutukuna',\n minute: 'minutu',\n hours: 'horakuna',\n hour: 'hora',\n ms: 'ms',\n s: 's',\n min: 'm',\n h: 'h',\n times: 'kuti',\n },\n\n values: {\n true: 'cheqaq',\n false: 'llulla',\n null: 'null',\n undefined: 'mana_riqsisqa',\n it: 'chay',\n its: 'chaypaq',\n me: 'noqa',\n my: 'noqaq',\n myself: 'noqa killa',\n you: 'qam',\n your: 'qampaq',\n yourself: 'qam killa',\n element: 'raku',\n target: 'punta',\n detail: 'sut_iy',\n event: 'ruway',\n window: 'k_iri',\n document: 'qillqa',\n body: 'kurku',\n result: 'lluqsiy',\n value: 'chanin',\n },\n\n attributes: {\n class: 'ayllu',\n classes: 'ayllukuna',\n style: 'sami',\n styles: 'samikuna',\n attribute: 'kaq',\n attributes: 'kaqkuna',\n property: 'kanay',\n properties: 'kanaykuna',\n },\n\n expressions: {\n // Pick unit word (arc 3): native-first per qu convention — `sanampa`\n // (\"sign/letter\", the standard term for alphabet characters) over a\n // loanword. Paired with the QUECHUA_EXTRAS entry in the semantic\n // tokenizer; both surfaces must match verbatim.\n characters: 'sanampa',\n first: 'ñawpaq',\n last: 'qhipa',\n next: 'qhipantin',\n previous: 'ñawpaqnin',\n prev: 'ñawpaq',\n at: 'pi',\n random: 'imaymanata',\n closest: 'kaylla',\n parent: 'mama_tayta',\n children: 'wawakuna',\n within: 'ukupi',\n no: 'mana_kanchu',\n empty: 'chusaq',\n some: 'wakin',\n 'starts with': 'qallarisqa wan',\n 'ends with': 'tukusqa wan',\n 'ignoring case': 'hatun-huchuy qillqata-saqiy',\n 'sorted by': 'niqpi ruwasqa',\n 'mapped to': 'kay kaqman',\n 'split by': 'rakisqa',\n 'joined by': 'huñusqa',\n },\n};\n","// packages/i18n/src/parser/qu.ts\n\nimport { qu } from '../dictionaries/qu';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Quechua (Runasimi) keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Quechua:\n * - `ñitiy-pi yapay #count-ta` → parses as `on click increment #count`\n *\n * Quechua is an SOV language with:\n * - Agglutinative/polysynthetic morphology\n * - Extensive suffix system (case markers: -ta, -man, -pi, -manta, -wan)\n * - Postpositions (unlike Spanish which uses prepositions)\n * - Object-Verb word order\n * - Evidentiality markers (not used in hyperscript)\n *\n * The grammar transformer handles suffix joining via hyphen notation\n * (e.g., \"#count-ta\" attaches the accusative marker).\n *\n * @example\n * ```typescript\n * import { quKeywords } from '@lokascript/i18n/parser/qu';\n *\n * quKeywords.resolve('tikray'); // 'toggle'\n * quKeywords.toLocale('on'); // 'kaqpi'\n * ```\n */\nexport const quKeywords: KeywordProvider = createKeywordProvider(qu, 'qu', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { qu as quDictionary } from '../dictionaries/qu';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const sw: Dictionary = {\n commands: {\n on: 'kwenye',\n tell: 'ambia',\n trigger: 'chochea',\n send: 'tuma',\n take: 'chukua',\n put: 'weka',\n // weka is the semantic sw profile's `put` primary; `set` is seti. Emitting weka\n // for set made the semantic parser read a transformed `set` as `put`.\n // See ZH_BLOCK_BODY_SCOPE.md (#2 sweep — keyword realignment, cf. zh fetch).\n set: 'seti',\n get: 'pata',\n add: 'ongeza',\n remove: 'ondoa',\n toggle: 'badilisha',\n // command blur (the events section has the blur EVENT word; without this\n // entry the transformer fell back to it and no profile read it as the verb)\n blur: 'blur',\n hide: 'ficha',\n show: 'onyesha',\n if: 'kama',\n unless: 'isipokuwa',\n repeat: 'rudia',\n for: 'kwa',\n while: 'wakati',\n until: 'hadi',\n continue: 'endelea',\n break: 'vunja',\n halt: 'simama',\n wait: 'ngoja',\n fetch: 'leta',\n call: 'ita',\n // `rudisha` (transitive, \"give back a value\"), not `rudi` (\"go back\"): the\n // semantic profile reads `rudisha`/`rejea`, so emitting `rudi` produced sw code\n // the parser could not read back. Kept clear of `rudia` (= `repeat`).\n return: 'rudisha',\n make: 'tengeneza', // auditor: dict emitted a word the profile reads differently\n log: 'andika',\n throw: 'tupa',\n catch: 'shika',\n measure: 'pima',\n transition: 'mpito',\n increment: 'ongezeko',\n decrement: 'punguza',\n default: 'msingi',\n go: 'nenda',\n pushUrl: 'sukumaUrl',\n replaceUrl: 'badilishaUrl',\n copy: 'nakala', // Batch 3: nakili is the clone keyword — rendered copy parsed as action=clone\n pick: 'chagua',\n beep: 'lia',\n js: 'js',\n async: 'sainkroni',\n render: 'chora',\n swap: 'badilishana',\n morph: 'geuza', // auditor: dict emitted a word the profile reads differently\n settle: 'tulia',\n append: 'ambatanisha', // profile primary; 'ongezaMwisho' is unrecognized\n exit: 'toka',\n install: 'sakinisha',\n breakpoint: 'nukta-simama',\n clear: 'safisha', // futa is a remove alternative in the profile\n close: 'funga',\n open: 'fungua',\n select: 'alama', // Batch 3: chagua is the pick keyword — bare select rendered with it parses null\n clone: 'nakili',\n prepend: 'tanguliza',\n focus: 'lenga',\n socket: 'soketi',\n },\n\n modifiers: {\n to: 'kwa',\n from: 'kutoka',\n into: 'ndani',\n with: 'na',\n at: 'katika',\n in: 'ndani',\n of: 'ya',\n // `kuwa` (\"to be/become\" — the conversion sense, cf. `badilisha kuwa`), not\n // `kama`: sw `kama` is the IF keyword (commands.if above and the semantic sw\n // profile's if primary), so emitting it for `as` grew a phantom `if` command\n // out of every transformed `as <Type>` tail (`kama JSON`, `kama Number`) when\n // the semantic parser split event-body statements. Same dict↔profile homonym\n // disambiguation as pl get/pobierz. The semantic fetch-sw pattern still\n // tolerates hand-written `kama` in as-marker position.\n as: 'kuwa',\n by: 'na',\n before: 'kabla',\n after: 'baada',\n over: 'juu',\n under: 'chini',\n between: 'kati',\n through: 'kupitia',\n without: 'bila',\n },\n\n events: {\n click: 'bonyeza',\n // V3c burn-down (2026-07-14): English passthrough — no native form round-trips\n // on the parse side (probe: split forms shatter, fused forms capture verbatim).\n dblclick: 'dblclick',\n mousedown: 'panya_shuka',\n mouseup: 'panya_juu',\n mouseenter: 'panya_ingia',\n mouseleave: 'panya_toka',\n // V3 Batch 2: panya_juu is mouseup's form (shared here by mistake — the\n // tokenizer deliberately maps it to mouseup for the corpus row, so a\n // mouseover handler captured `mouseup`) — realigned to the\n // tokenizer-registered `sogeza juu`.\n mouseover: 'sogeza juu',\n mouseout: 'panya_nje',\n mousemove: 'panya_sogea',\n keydown: 'kitufe_shuka',\n keyup: 'kitufe_juu',\n keypress: 'keypress',\n // V3 Batch 2: zingatia captured no event → lenga (S5b/tokenizer form);\n // poteza_macho was a null parse → `blur` (the S5b identity form — matches\n // the live corpus render `kwenye blur`); badilisha is the toggle VERB\n // homonym (a change handler captured event=`toggle` — a listener for a DOM\n // event named \"toggle\") → kubadilisha (S5b/tokenizer form).\n focus: 'lenga',\n blur: 'blur',\n change: 'kubadilisha',\n input: 'ingizo',\n submit: 'wasilisha',\n reset: 'reset',\n load: 'pakia',\n unload: 'shuka',\n resize: 'badilisha_ukubwa',\n scroll: 'sogeza',\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n touchcancel: 'touchcancel',\n },\n\n logical: {\n when: 'wakati',\n where: 'wapi',\n and: 'na',\n or: 'au',\n not: 'si',\n is: 'ni',\n exists: 'ipo',\n matches: 'inafanana',\n contains: 'ina',\n includes: 'pamoja',\n equals: 'sawa',\n has: 'ana',\n have: 'nina',\n then: 'kisha',\n else: 'sivyo',\n otherwise: 'vinginevyo',\n end: 'mwisho',\n live: 'mubashara',\n changes: 'inabadilika',\n },\n\n temporal: {\n seconds: 'sekunde',\n second: 'sekunde',\n milliseconds: 'millisekunde',\n millisecond: 'millisekunde',\n minutes: 'dakika',\n minute: 'dakika',\n hours: 'masaa',\n hour: 'saa',\n ms: 'ms',\n s: 's',\n min: 'dk',\n h: 'sa',\n times: 'mara',\n },\n\n values: {\n true: 'kweli',\n false: 'uongo',\n null: 'null',\n undefined: 'haijafafanuliwa',\n it: 'hiyo',\n its: 'yake',\n me: 'mimi',\n my: 'yangu',\n myself: 'mimi mwenyewe',\n you: 'wewe',\n your: 'yako',\n yourself: 'wewe mwenyewe',\n element: 'kipengele',\n target: 'lengo',\n detail: 'maelezo',\n event: 'tukio',\n window: 'dirisha',\n document: 'hati',\n body: 'mwili',\n result: 'matokeo',\n value: 'thamani',\n },\n\n attributes: {\n class: 'darasa',\n classes: 'madarasa',\n style: 'mtindo',\n styles: 'mitindo',\n attribute: 'sifa',\n attributes: 'sifa',\n property: 'mali',\n properties: 'mali',\n },\n\n expressions: {\n characters: 'herufi',\n first: 'kwanza',\n // 'mwisho' is the END keyword (block terminator) — the tokenizer's keyword\n // map is last-wins, so a positional `last` emission of 'mwisho' reads as\n // `end` and terminates the enclosing block mid-condition (focus-trap's\n // `… inafanana mwisho <button/>` dropped the whole branch body). Emit the\n // concatenated adjective form instead (wa mwisho — the saufsi/wennnicht/\n // enyakın single-token class); the tokenizer reads it as `last`.\n last: 'wamwisho',\n next: 'ijayo',\n previous: 'iliyopita',\n prev: 'awali',\n at: 'katika',\n random: 'nasibu',\n // Natural Swahili: `karibu` (\"near/close\") is the ordinary word and already\n // maps to closest. The earlier `karibu_zaidi` (\"nearer\") underscore-split to\n // karibu/_/zaidi (the stray `_ zaidi` broke positional capture); the fused\n // `karibuzaidi` parsed but isn't real Swahili. `karibu` alone is both natural\n // and correct (the sw tokenizer is single-word-only, so a spaced `karibu\n // zaidi` would strand `zaidi` regardless).\n closest: 'karibu',\n parent: 'mzazi',\n children: 'watoto',\n within: 'ndani_ya',\n no: 'hakuna',\n empty: 'tupu',\n some: 'baadhi',\n 'starts with': 'huanza na',\n 'ends with': 'huisha na',\n 'ignoring case': 'puuza herufi kubwa ndogo',\n 'sorted by': 'kupangwa kwa',\n 'mapped to': 'kubadilishwa kuwa',\n 'split by': 'kugawanywa kwa',\n 'joined by': 'kuunganishwa kwa',\n },\n};\n","// packages/i18n/src/parser/sw.ts\n\nimport { sw } from '../dictionaries/sw';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Swahili (Kiswahili) keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Swahili:\n * - `kwenye bonyeza badilisha .active` → parses as `on click toggle .active`\n * - `kama kweli basi andika \"Habari\"` → parses as `if true then log \"Hello\"`\n *\n * Swahili is an SVO Bantu language with:\n * - Agglutinative verb morphology\n * - Noun class system (simplified for hyperscript keywords)\n * - Prepositions (unlike many other African languages)\n * - Subject-verb agreement (not relevant for hyperscript)\n *\n * Swahili is widely spoken in East Africa and serves as a lingua franca\n * for millions of speakers.\n *\n * @example\n * ```typescript\n * import { swKeywords } from '@lokascript/i18n/parser/sw';\n *\n * swKeywords.resolve('badilisha'); // 'toggle'\n * swKeywords.toLocale('on'); // 'kwenye'\n * ```\n */\nexport const swKeywords: KeywordProvider = createKeywordProvider(sw, 'sw', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { sw as swDictionary } from '../dictionaries/sw';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const pt: Dictionary = {\n commands: {\n on: 'em',\n tell: 'dizer',\n trigger: 'disparar',\n send: 'enviar',\n take: 'pegar',\n put: 'colocar',\n set: 'definir',\n get: 'obter',\n add: 'adicionar',\n remove: 'remover',\n toggle: 'alternar',\n // command blur (the events section has the blur EVENT word; without this\n // entry the transformer fell back to it and no profile read it as the verb)\n blur: 'desfocar',\n hide: 'esconder',\n show: 'mostrar',\n if: 'se',\n unless: 'salvo', // a_menos splits at _ in the pt extractor (see profile)\n repeat: 'repetir',\n for: 'para',\n while: 'enquanto',\n until: 'até',\n continue: 'continuar',\n // un-crossed: the profile/tokenizer read parar=halt, interromper=break\n break: 'interromper',\n halt: 'parar',\n wait: 'esperar',\n fetch: 'buscar',\n call: 'chamar',\n return: 'retornar',\n make: 'fazer',\n log: 'registrar',\n throw: 'lançar',\n catch: 'capturar',\n measure: 'medir',\n transition: 'transição',\n increment: 'incrementar',\n decrement: 'decrementar',\n default: 'padrão',\n go: 'ir',\n pushUrl: 'pushUrl',\n replaceUrl: 'substituirUrl',\n copy: 'copiar',\n pick: 'escolher',\n beep: 'apitar',\n js: 'js',\n async: 'assíncrono',\n render: 'renderizar',\n swap: 'trocar',\n morph: 'transformar',\n settle: 'estabilizar',\n append: 'anexar',\n exit: 'sair',\n install: 'instalar',\n breakpoint: 'ponto-interrupção',\n clear: 'limpar',\n close: 'fechar',\n open: 'abrir',\n select: 'selecionar',\n clone: 'clonar',\n prepend: 'preceder',\n focus: 'focar',\n socket: 'soquete',\n },\n\n modifiers: {\n to: 'para',\n from: 'de',\n into: 'em',\n with: 'com',\n at: 'em',\n in: 'dentro',\n of: 'de',\n as: 'como',\n by: 'por',\n before: 'antes',\n after: 'depois',\n over: 'sobre',\n under: 'sob',\n between: 'entre',\n through: 'através',\n without: 'sem',\n },\n\n events: {\n click: 'clique',\n dblclick: 'duploClique',\n mouseenter: 'mouseEntrar',\n mouseleave: 'mouseSair',\n // V3 Batch 2: camelCase forms split to the S5b/tokenizer-known forms (the\n // fused spellings captured event=expression:undefined — broken listeners)\n // pt-BR idiom is \"pressionado\"/\"solto\", not the spatial baixo/cima calque —\n // cf. MDN pt-BR (\"um botão ... é pressionado\") and Scratch pt-BR\n // (\"mouse pressionado?\"). The calques stay as profile parse alternatives.\n mousedown: 'mouse pressionado',\n mouseup: 'mouse solto',\n mouseover: 'mouse sobre',\n mouseout: 'mouse fora',\n mousemove: 'mouseMover',\n keydown: 'tecla baixo',\n keyup: 'tecla cima',\n keypress: 'teclaPressionar',\n focus: 'foco',\n blur: 'desfoque',\n change: 'mudança',\n input: 'entrada',\n submit: 'envio',\n reset: 'redefinir', // Batch 3: reiniciar captured on.event as expression (broken listener) — profile word round-trips\n load: 'carregar',\n unload: 'descarregar',\n resize: 'redimensionar',\n scroll: 'rolar',\n touchstart: 'toqueInício',\n touchend: 'toqueFim',\n touchmove: 'toqueMover',\n touchcancel: 'toqueCancelar',\n },\n\n logical: {\n when: 'quando',\n where: 'onde',\n and: 'e',\n or: 'ou',\n not: 'não',\n is: 'é',\n exists: 'existe',\n matches: 'corresponde',\n contains: 'contém',\n includes: 'inclui',\n equals: 'igual',\n has: 'tem',\n have: 'tenho',\n then: 'então',\n else: 'senão',\n otherwise: 'caso_contrário',\n end: 'fim',\n live: 'vivo',\n changes: 'muda',\n },\n\n temporal: {\n seconds: 'segundos',\n second: 'segundo',\n milliseconds: 'milissegundos',\n millisecond: 'milissegundo',\n minutes: 'minutos',\n minute: 'minuto',\n hours: 'horas',\n hour: 'hora',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n times: 'vezes',\n },\n\n values: {\n true: 'verdadeiro',\n false: 'falso',\n null: 'nulo',\n undefined: 'indefinido',\n it: 'isso',\n its: 'seu',\n me: 'eu',\n my: 'meu',\n myself: 'eu mesmo',\n you: 'você',\n your: 'seu',\n yourself: 'você mesmo',\n element: 'elemento',\n target: 'alvo',\n detail: 'detalhe',\n event: 'evento',\n window: 'janela',\n document: 'documento',\n body: 'corpo',\n result: 'resultado',\n value: 'valor',\n },\n\n attributes: {\n class: 'classe',\n classes: 'classes',\n style: 'estilo',\n styles: 'estilos',\n attribute: 'atributo',\n attributes: 'atributos',\n property: 'propriedade',\n properties: 'propriedades',\n },\n\n expressions: {\n characters: 'caracteres',\n inclusive: 'inclusivo',\n exclusive: 'exclusivo',\n first: 'primeiro',\n last: 'último',\n next: 'próximo',\n previous: 'anterior',\n prev: 'ant',\n at: 'em',\n random: 'aleatório',\n closest: 'maispróximo',\n parent: 'pai',\n children: 'filhos',\n within: 'dentro',\n no: 'nenhum',\n empty: 'vazio',\n some: 'algum',\n 'starts with': 'começa com',\n 'ends with': 'termina com',\n 'ignoring case': 'ignorando maiúsculas',\n 'sorted by': 'ordenado por',\n 'mapped to': 'mapeado para',\n 'split by': 'dividido por',\n 'joined by': 'unido por',\n },\n};\n","// packages/i18n/src/parser/pt.ts\n\nimport { pt } from '../dictionaries/pt';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Portuguese (Português) keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Portuguese:\n * - `em clique alternar .active` → parses as `on click toggle .active`\n * - `se verdadeiro então registrar \"Olá\"` → parses as `if true then log \"Hello\"`\n *\n * Portuguese is an SVO language with:\n * - High mutual intelligibility with Spanish\n * - Prepositions (like English and Spanish)\n * - Gender agreement (simplified for hyperscript)\n * - Fusional morphology\n *\n * Direct translation is supported between Portuguese and Spanish,\n * avoiding the English pivot for more natural translations.\n *\n * @example\n * ```typescript\n * import { ptKeywords } from '@lokascript/i18n/parser/pt';\n *\n * ptKeywords.resolve('alternar'); // 'toggle'\n * ptKeywords.toLocale('on'); // 'em'\n * ```\n */\nexport const ptKeywords: KeywordProvider = createKeywordProvider(pt, 'pt', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { pt as ptDictionary } from '../dictionaries/pt';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const it: Dictionary = {\n commands: {\n on: 'su',\n tell: 'dire',\n trigger: 'scatenare',\n send: 'inviare',\n take: 'prendere',\n put: 'mettere',\n set: 'impostare',\n get: 'ottenere',\n add: 'aggiungere',\n remove: 'rimuovere',\n toggle: 'commutare',\n hide: 'nascondere',\n show: 'mostrare',\n if: 'se',\n unless: 'salvo',\n repeat: 'ripetere',\n for: 'per',\n while: 'mentre',\n until: 'fino',\n continue: 'continuare',\n break: 'interrompere',\n halt: 'fermare',\n wait: 'aspettare',\n fetch: 'recuperare',\n call: 'chiamare',\n return: 'ritornare',\n make: 'fare',\n log: 'registrare',\n throw: 'lanciare',\n catch: 'catturare',\n measure: 'misurare',\n transition: 'transizione',\n increment: 'incrementare',\n decrement: 'decrementare',\n default: 'predefinito',\n go: 'andare',\n pushUrl: 'pushUrl',\n replaceUrl: 'sostituireUrl',\n copy: 'copiare',\n pick: 'scegliere',\n beep: 'beep',\n js: 'js',\n async: 'asincrono',\n render: 'renderizzare',\n swap: 'scambiare',\n morph: 'trasformare',\n settle: 'stabilizzare',\n append: 'accodare', // profile primary; 'aggiungere' is add's word (parsed as add)\n exit: 'uscire',\n install: 'installare',\n breakpoint: 'punto-interruzione',\n clear: 'cancellare',\n close: 'chiudere',\n open: 'aprire',\n select: 'selezionare',\n clone: 'clonare',\n prepend: 'anteporre',\n // profile primary; without a commands entry the transformer fell back to\n // the EVENTS noun 'fuoco', which generated focus patterns can't match\n focus: 'focalizzare',\n },\n\n modifiers: {\n to: 'a',\n from: 'da',\n into: 'in',\n with: 'con',\n at: 'a',\n in: 'in',\n of: 'di',\n as: 'come',\n by: 'per',\n before: 'prima',\n after: 'dopo',\n over: 'sopra',\n under: 'sotto',\n between: 'tra',\n through: 'attraverso',\n without: 'senza',\n },\n\n events: {\n click: 'clic',\n dblclick: 'doppioclic',\n // mousedown/mouseup: English passthrough — no native form round-trips on the\n // parse side (V3c probe 2026-07-14: fused forms captured verbatim, split forms\n // shattered to their first word — live broken listeners in repeat-until-event).\n // The Batch-2 id-keyup precedent; revisit if S5b + tokenizer gain native entries.\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'mouseentra',\n mouseleave: 'mouseesce',\n mouseover: 'mousesopra',\n mouseout: 'mousefuori',\n mousemove: 'mousemuovi',\n keydown: 'tastogiù',\n keyup: 'tastosu',\n keypress: 'tastopremi',\n focus: 'fuoco',\n blur: 'sfuocare', // Batch 3: the noun form parsed the blur command with no patient; the verb round-trips both event and command slots\n change: 'cambio',\n input: 'input',\n submit: 'invio',\n reset: 'reimpostare', // Batch 3: English passthrough captured on.event as expression — profile verb round-trips\n load: 'carica',\n unload: 'scarica',\n resize: 'ridimensiona',\n scroll: 'scorrimento',\n touchstart: 'toccoinizia',\n touchend: 'toccofine',\n touchmove: 'toccomuovi',\n touchcancel: 'toccoannulla',\n },\n\n logical: {\n when: 'quando',\n where: 'dove',\n and: 'e',\n or: 'o',\n not: 'non',\n is: 'è',\n exists: 'esiste',\n matches: 'corrisponde',\n contains: 'contiene',\n includes: 'include',\n equals: 'uguale',\n has: 'ha',\n have: 'ho',\n then: 'allora',\n else: 'altrimenti',\n otherwise: 'altrimenti',\n end: 'fine',\n live: 'vivo',\n changes: 'cambia',\n },\n\n temporal: {\n seconds: 'secondi',\n second: 'secondo',\n milliseconds: 'millisecondi',\n millisecond: 'millisecondo',\n minutes: 'minuti',\n minute: 'minuto',\n hours: 'ore',\n hour: 'ora',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n times: 'volte',\n },\n\n values: {\n true: 'vero',\n false: 'falso',\n null: 'nullo',\n undefined: 'indefinito',\n it: 'esso',\n its: 'suo',\n me: 'io',\n my: 'mio',\n you: 'tu',\n your: 'tuo',\n yourself: 'te stesso',\n myself: 'me stesso',\n element: 'elemento',\n target: 'obiettivo',\n detail: 'dettaglio',\n event: 'evento',\n window: 'finestra',\n document: 'documento',\n body: 'corpo',\n result: 'risultato',\n value: 'valore',\n },\n\n attributes: {\n class: 'classe',\n classes: 'classi',\n style: 'stile',\n styles: 'stili',\n attribute: 'attributo',\n attributes: 'attributi',\n property: 'proprietà',\n properties: 'proprietà',\n },\n\n expressions: {\n characters: 'caratteri',\n inclusive: 'inclusivo',\n exclusive: 'esclusivo',\n first: 'primo',\n last: 'ultimo',\n next: 'prossimo',\n previous: 'precedente',\n prev: 'prec',\n at: 'a',\n random: 'casuale',\n closest: 'vicino',\n parent: 'genitore',\n children: 'figli',\n within: 'dentro',\n no: 'nessun',\n empty: 'vuoto',\n some: 'qualche',\n 'starts with': 'inizia con',\n 'ends with': 'finisce con',\n 'ignoring case': 'ignorando maiuscole',\n 'sorted by': 'ordinato per',\n 'mapped to': 'trasformato in',\n 'split by': 'diviso per',\n 'joined by': 'unito per',\n },\n};\n","import { it } from '../dictionaries/it';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\nexport const itKeywords: KeywordProvider = createKeywordProvider(it, 'it', {\n allowEnglishFallback: true,\n});\n\nexport { it as itDictionary } from '../dictionaries/it';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const vi: Dictionary = {\n commands: {\n on: 'khi',\n tell: 'nói với',\n trigger: 'kích hoạt',\n send: 'gửi',\n take: 'lấy',\n put: 'đặt',\n set: 'gán',\n get: 'lấy giá trị',\n add: 'thêm',\n remove: 'xóa',\n toggle: 'chuyển đổi',\n hide: 'ẩn',\n show: 'hiển thị',\n if: 'nếu',\n unless: 'trừ khi',\n repeat: 'lặp lại',\n for: 'với mỗi',\n while: 'trong khi',\n until: 'cho đến khi',\n continue: 'tiếp tục',\n break: 'dừng',\n halt: 'dừng lại',\n wait: 'chờ',\n fetch: 'tải',\n call: 'gọi',\n return: 'trả về',\n make: 'tạo',\n log: 'in ra',\n throw: 'ném',\n catch: 'bắt',\n measure: 'đo lường',\n transition: 'chuyển tiếp',\n increment: 'tăng',\n decrement: 'giảm',\n default: 'mặc định',\n go: 'đi đến',\n pushUrl: 'pushUrl',\n replaceUrl: 'thayThếUrl',\n copy: 'sao chép',\n pick: 'chọn',\n beep: 'beep',\n js: 'js',\n async: 'bất đồng bộ',\n render: 'kết xuất', // distinct from `show` (was `hiển thị`, which collides with show: the semantic profile reads `hiển thị` as show, `kết xuất` as render)\n swap: 'hoán đổi',\n morph: 'biến đổi',\n settle: 'ổn định',\n append: 'nối',\n exit: 'thoát',\n focus: 'tập trung',\n blur: 'mất tập trung',\n init: 'khởi tạo',\n behavior: 'hành vi',\n install: 'cài đặt',\n clone: 'nhân bản', // Batch 3: 'sao chép' is the copy verb — rendered clone parsed as action=copy\n prepend: 'thêm vào đầu', // Batch 3: 'thêm đầu' shatters at 'thêm' (add) — parsed as action=add\n else: 'không thì',\n breakpoint: 'điểm-dừng',\n clear: 'tẩy', // xóa is the remove PRIMARY in the profile\n close: 'đóng',\n open: 'mở',\n select: 'đánh-dấu', // Batch 3: 'chọn' is the pick keyword — bare select rendered with it parses null\n },\n\n modifiers: {\n into: 'vào',\n before: 'trước',\n after: 'sau',\n then: 'rồi',\n end: 'kết thúc',\n from: 'từ',\n to: 'đến',\n with: 'với',\n as: 'như',\n by: 'bởi',\n on: 'trên',\n in: 'trong',\n at: 'tại',\n of: 'của',\n between: 'giữa',\n the: '',\n times: 'lần',\n },\n\n events: {\n click: 'nhấp',\n dblclick: 'dblclick',\n input: 'nhập',\n change: 'change',\n submit: 'nộp', // Batch 3: 'gửi' is the send verb — on-submit listener captured event \"send\"\n keydown: 'keydown',\n keyup: 'keyup',\n keypress: 'keypress',\n mouseover: 'mouseover',\n mouseout: 'mouseout',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n focus: 'focus',\n blur: 'blur',\n // V3c burn-down (2026-07-14): English passthrough — no native form round-trips\n // on the parse side (probe: split forms shatter, fused forms capture verbatim).\n reset: 'reset',\n load: 'load',\n scroll: 'cuộn',\n resize: 'đổi kích thước',\n },\n\n logical: {\n when: 'khi',\n where: 'ở_đâu',\n and: 'và',\n or: 'hoặc',\n not: 'không',\n is: 'là',\n equals: 'bằng',\n contains: 'chứa',\n matches: 'khớp',\n exists: 'tồn tại',\n has: 'có',\n have: 'có',\n empty: 'trống',\n true: 'đúng',\n false: 'sai',\n null: 'rỗng',\n else: 'không thì',\n end: 'kết thúc',\n then: 'rồi',\n live: 'live',\n changes: 'thay đổi',\n },\n\n temporal: {\n now: 'bây giờ',\n today: 'hôm nay',\n tomorrow: 'ngày mai',\n yesterday: 'hôm qua',\n always: 'luôn luôn',\n never: 'không bao giờ',\n sometimes: 'đôi khi',\n once: 'một lần',\n twice: 'hai lần',\n forever: 'mãi mãi',\n },\n\n values: {\n true: 'đúng',\n false: 'sai',\n null: 'rỗng',\n undefined: 'không xác định',\n none: 'không có',\n all: 'tất cả',\n any: 'bất kỳ',\n some: 'một số',\n each: 'mỗi',\n every: 'tất cả',\n body: 'body',\n event: 'sự kiện',\n it: 'nó',\n its: 'của nó',\n me: 'tôi',\n my: 'của tôi',\n result: 'kết quả',\n target: 'mục tiêu',\n you: 'bạn',\n your: 'của bạn',\n },\n\n attributes: {\n id: 'id',\n class: 'lớp',\n style: 'kiểu',\n value: 'giá trị',\n text: 'văn bản',\n html: 'html',\n src: 'nguồn',\n href: 'liên kết',\n disabled: 'vô hiệu',\n hidden: 'ẩn',\n checked: 'được chọn',\n selected: 'được chọn',\n },\n\n expressions: {\n random: 'ngẫu nhiên',\n characters: 'ký tự',\n inclusive: 'bao gồm',\n exclusive: 'loại trừ',\n me: 'tôi',\n my: 'của tôi',\n it: 'nó',\n its: 'của nó',\n result: 'kết quả',\n event: 'sự kiện',\n target: 'mục tiêu',\n first: 'đầu tiên',\n last: 'cuối cùng',\n next: 'tiếp theo',\n previous: 'trước đó',\n parent: 'cha',\n children: 'con',\n closest: 'gần nhất',\n empty: 'làm-rỗng',\n 'starts with': 'bắt đầu bằng',\n 'ends with': 'kết thúc bằng',\n 'ignoring case': 'không phân biệt hoa thường',\n 'sorted by': 'sắp xếp theo',\n 'mapped to': 'ánh xạ thành',\n 'split by': 'tách bởi',\n 'joined by': 'nối bởi',\n },\n};\n","import { vi } from '../dictionaries/vi';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\nexport const viKeywords: KeywordProvider = createKeywordProvider(vi, 'vi', {\n allowEnglishFallback: true,\n});\n\nexport { vi as viDictionary } from '../dictionaries/vi';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const pl: Dictionary = {\n commands: {\n on: 'gdy',\n tell: 'powiedz',\n trigger: 'wyzwól', // auditor: dict emitted a word the profile reads differently\n send: 'wyślij',\n take: 'weź',\n put: 'umieść',\n set: 'ustaw',\n // `uzyskaj` (the semantic pl profile's get primary), not `pobierz`: pl `pobierz`\n // (\"download\") is the profile's FETCH primary, so emitting it for get made the\n // parser read every transformed get as fetch (get-value lossy + a phantom fetch).\n // Same dict↔profile homonym disambiguation as tr load/install, qu get.\n get: 'uzyskaj',\n add: 'dodaj',\n remove: 'usuń',\n toggle: 'przełącz',\n // command blur (the events section has the blur EVENT word; without this\n // entry the transformer fell back to it and no profile read it as the verb)\n blur: 'rozmyj',\n hide: 'ukryj',\n show: 'pokaż',\n if: 'jeśli',\n unless: 'chyba',\n repeat: 'powtórz',\n for: 'dla',\n while: 'dopóki',\n until: 'aż',\n continue: 'kontynuuj',\n break: 'przerwij',\n halt: 'zatrzymaj',\n wait: 'czekaj',\n fetch: 'pobierz',\n call: 'wywołaj',\n return: 'zwróć',\n make: 'utwórz',\n log: 'loguj',\n throw: 'rzuć',\n catch: 'złap',\n measure: 'zmierz',\n transition: 'animuj',\n increment: 'zwiększ',\n decrement: 'zmniejsz',\n default: 'domyślnie',\n go: 'idź',\n pushUrl: 'dodajUrl',\n replaceUrl: 'zamieńUrl',\n copy: 'kopiuj',\n pick: 'wybierz',\n beep: 'sygnał',\n js: 'js',\n async: 'async',\n render: 'renderuj',\n swap: 'zamień',\n morph: 'przekształć',\n settle: 'ustabilizuj',\n append: 'dołącz',\n exit: 'wyjdź',\n install: 'zainstaluj',\n breakpoint: 'punkt-przerwania',\n clear: 'zeruj', // wyczyść is a remove alternative in the profile\n close: 'zamknij',\n open: 'otwórz',\n select: 'zaznacz', // Batch 3: wybierz is the pick keyword — bare select rendered with it parses null\n clone: 'sklonuj',\n prepend: 'poprzedź',\n focus: 'skup',\n },\n\n modifiers: {\n to: 'do',\n from: 'z',\n into: 'do',\n with: 'z',\n at: 'przy',\n in: 'w',\n of: 'z',\n as: 'jako',\n by: 'przez',\n before: 'przed',\n after: 'po',\n over: 'nad',\n under: 'pod',\n between: 'między',\n through: 'przez',\n without: 'bez',\n },\n\n events: {\n click: 'kliknięcie',\n dblclick: 'podwójnekliknięcie',\n // mousedown/mouseup: English passthrough — no native form round-trips on the\n // parse side (V3c probe 2026-07-14: fused forms captured verbatim, split forms\n // shattered to their first word — live broken listeners in repeat-until-event).\n // The Batch-2 id-keyup precedent; revisit if S5b + tokenizer gain native entries.\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'myszwejście',\n mouseleave: 'myszwyjście',\n mouseover: 'mysznad',\n mouseout: 'myszpoza',\n mousemove: 'myszruch',\n keydown: 'klawiszdół',\n keyup: 'klawiszgóra',\n keypress: 'klawisznaciśnięcie',\n focus: 'fokus',\n blur: 'rozmycie',\n change: 'zmiana',\n input: 'wejście',\n submit: 'wysłaniu', // Batch 3: wyślij is the send verb — on-submit listener captured event \"send\"\n reset: 'zresetuj', // Batch 3: resetuj captured on.event as expression (broken listener) — profile word round-trips\n load: 'załaduj',\n unload: 'wyładuj',\n // 'zmieńrozmiar' was a fused two-word phrase; Polish writes 'zmiana rozmiaru'.\n resize: 'zmiana rozmiaru',\n scroll: 'przewiń',\n touchstart: 'dotykstart',\n touchend: 'dotykkoniec',\n touchmove: 'dotykruch',\n touchcancel: 'dotykanuluj',\n },\n\n logical: {\n when: 'kiedy',\n where: 'gdzie',\n and: 'i',\n or: 'lub',\n not: 'nie',\n is: 'jest',\n exists: 'istnieje',\n matches: 'pasuje',\n contains: 'zawiera',\n includes: 'obejmuje',\n equals: 'równa się',\n has: 'ma',\n have: 'mam',\n then: 'wtedy',\n else: 'inaczej',\n otherwise: 'wpp',\n end: 'koniec',\n live: 'żywy',\n changes: 'zmienia',\n },\n\n temporal: {\n seconds: 'sekundy',\n second: 'sekunda',\n milliseconds: 'milisekundy',\n millisecond: 'milisekunda',\n minutes: 'minuty',\n minute: 'minuta',\n hours: 'godziny',\n hour: 'godzina',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'godz',\n times: 'razy',\n },\n\n values: {\n true: 'prawda',\n false: 'fałsz',\n null: 'null',\n undefined: 'niezdefiniowane',\n it: 'to',\n its: 'jego',\n me: 'ja',\n my: 'mój',\n you: 'ty',\n your: 'twój',\n yourself: 'ty sam',\n myself: 'ja sam',\n element: 'element',\n target: 'cel',\n detail: 'szczegół',\n event: 'zdarzenie',\n window: 'okno',\n document: 'dokument',\n body: 'body',\n result: 'wynik',\n value: 'wartość',\n },\n\n attributes: {\n class: 'klasa',\n classes: 'klasy',\n style: 'styl',\n styles: 'style',\n attribute: 'atrybut',\n attributes: 'atrybuty',\n property: 'właściwość',\n properties: 'właściwości',\n },\n\n expressions: {\n characters: 'znaki',\n inclusive: 'włącznie',\n exclusive: 'wyłącznie',\n first: 'pierwszy',\n last: 'ostatni',\n next: 'następny',\n previous: 'poprzedni',\n prev: 'poprz',\n at: 'przy',\n random: 'losowy',\n closest: 'najbliższy',\n parent: 'rodzic',\n children: 'dzieci',\n within: 'wewnątrz',\n no: 'brak',\n empty: 'pusty',\n some: 'jakiś',\n 'starts with': 'zaczyna się od',\n 'ends with': 'kończy się na',\n 'ignoring case': 'ignorując wielkość liter',\n 'sorted by': 'sortowane według',\n 'mapped to': 'przekształcone na',\n 'split by': 'podzielone przez',\n 'joined by': 'połączone przez',\n },\n};\n","import { pl } from '../dictionaries/pl';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\nexport const plKeywords: KeywordProvider = createKeywordProvider(pl, 'pl', {\n allowEnglishFallback: true,\n});\n\nexport { pl as plDictionary } from '../dictionaries/pl';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const russianDictionary: Dictionary = {\n commands: {\n on: 'при',\n tell: 'сказать',\n trigger: 'запустить', // auditor: dict emitted a word the profile reads differently\n send: 'отправить',\n take: 'взять',\n put: 'положить',\n set: 'установить',\n get: 'получить',\n add: 'добавить',\n remove: 'удалить',\n toggle: 'переключить',\n hide: 'скрыть',\n show: 'показать',\n // command verb; the events section keeps the noun прокрутка for `on scroll`.\n // Without this entry the transformer fell back to the event noun, which the\n // parser doesn't read as the scroll command (#321 focus family).\n scroll: 'прокрутить',\n if: 'если',\n unless: 'кроме',\n repeat: 'повторить',\n for: 'для',\n while: 'пока',\n until: 'до',\n continue: 'продолжить',\n break: 'прервать',\n halt: 'остановить',\n wait: 'ждать',\n fetch: 'загрузить',\n call: 'вызвать',\n return: 'вернуть',\n make: 'создать',\n log: 'записать',\n throw: 'бросить',\n catch: 'поймать',\n measure: 'измерить',\n transition: 'анимировать',\n increment: 'увеличить',\n decrement: 'уменьшить',\n default: 'по_умолчанию',\n go: 'перейти',\n pushUrl: 'добавить_url',\n replaceUrl: 'заменить_url',\n copy: 'копировать',\n pick: 'выбрать',\n beep: 'звук',\n js: 'js',\n async: 'асинхронно',\n render: 'отобразить',\n swap: 'поменять',\n morph: 'трансформировать',\n settle: 'стабилизировать',\n append: 'дописать', // matches the ru profile primary\n exit: 'выйти',\n else: 'иначе',\n install: 'инсталлировать', // loanword — `установить` is `set` (homonym); see russian profile\n init: 'инициализировать',\n behavior: 'поведение',\n focus: 'сфокусировать',\n blur: 'размыть',\n clone: 'клонировать',\n prepend: 'добавить в начало', // natural form; the underscore compound was never natural Russian\n breakpoint: 'точка-останова',\n clear: 'очистить',\n close: 'закрыть',\n open: 'открыть',\n select: 'выделить', // Batch 3: выбрать is the pick keyword — bare select rendered with it parses null\n },\n\n modifiers: {\n to: 'к',\n from: 'из',\n into: 'в',\n with: 'с',\n at: 'у',\n in: 'в',\n of: 'из',\n as: 'как',\n by: 'на',\n before: 'до',\n after: 'после',\n over: 'над',\n under: 'под',\n between: 'между',\n through: 'через',\n without: 'без',\n on: 'на',\n },\n\n events: {\n click: 'клик',\n dblclick: 'двойной_клик',\n // Fused (no `_`): the semantic tokenizer splits on `_`, so an underscore form\n // breaks event recognition (mousedown → bare expression). Mirrors the #510 tr\n // resize fix (boyut_değiştir → boyutlandırma) and the enyakın superlative.\n mousedown: 'мышьвниз',\n mouseup: 'мышьвверх',\n mouseenter: 'мышь_вход',\n mouseleave: 'мышь_выход',\n mouseover: 'наведение',\n mouseout: 'уход',\n mousemove: 'движение_мыши',\n keydown: 'клавиша_вниз',\n keyup: 'клавиша_вверх',\n keypress: 'нажатие_клавиши',\n focus: 'фокус',\n blur: 'потеря_фокуса',\n change: 'изменение',\n input: 'ввод',\n submit: 'отправка',\n reset: 'сбросить', // Batch 3: сброс captured on.event as expression (broken listener) — profile verb round-trips\n load: 'загрузка',\n unload: 'выгрузка',\n resize: 'изменениеразмера', // fused (no `_`) — see mousedown note above\n scroll: 'прокрутка',\n touchstart: 'касание_начало',\n touchend: 'касание_конец',\n touchmove: 'касание_движение',\n touchcancel: 'касание_отмена',\n },\n\n logical: {\n when: 'когда',\n where: 'где',\n and: 'и',\n or: 'или',\n not: 'не',\n is: 'есть',\n exists: 'существует',\n matches: 'соответствует',\n contains: 'содержит',\n includes: 'включает',\n equals: 'равно',\n then: 'затем',\n else: 'иначе',\n otherwise: 'в_противном_случае',\n end: 'конец',\n live: 'живой',\n changes: 'изменяется',\n has: 'имеет',\n have: 'имею',\n isNot: 'не_есть',\n empty: 'пустой',\n },\n\n temporal: {\n seconds: 'секунд',\n second: 'секунда',\n milliseconds: 'миллисекунд',\n millisecond: 'миллисекунда',\n minutes: 'минут',\n minute: 'минута',\n hours: 'часов',\n hour: 'час',\n ms: 'мс',\n s: 'с',\n min: 'мин',\n h: 'ч',\n forever: 'всегда',\n once: 'однажды',\n every: 'каждый',\n until: 'до',\n times: 'раз',\n },\n\n values: {\n true: 'истина',\n false: 'ложь',\n null: 'ничего',\n undefined: 'неопределено',\n it: 'это',\n its: 'его',\n me: 'я',\n my: 'мой',\n you: 'ты',\n your: 'твой',\n yourself: 'сам',\n myself: 'я_сам',\n element: 'элемент',\n target: 'цель',\n detail: 'детали',\n event: 'событие',\n window: 'окно',\n document: 'документ',\n body: 'тело',\n result: 'результат',\n value: 'значение',\n first: 'первый',\n last: 'последний',\n next: 'следующий',\n previous: 'предыдущий',\n closest: 'ближайший',\n parent: 'родитель',\n },\n\n attributes: {\n class: 'класс',\n classes: 'классы',\n style: 'стиль',\n styles: 'стили',\n attribute: 'атрибут',\n attributes: 'атрибуты',\n property: 'свойство',\n properties: 'свойства',\n disabled: 'отключено',\n hidden: 'скрыто',\n checked: 'отмечено',\n selected: 'выбрано',\n readonly: 'только_чтение',\n required: 'обязательно',\n text: 'текст',\n html: 'html',\n },\n\n expressions: {\n characters: 'символы',\n inclusive: 'включительно',\n exclusive: 'исключительно',\n first: 'первый',\n last: 'последний',\n next: 'следующий',\n previous: 'предыдущий',\n prev: 'пред',\n at: 'в',\n random: 'случайный',\n closest: 'ближайший',\n parent: 'родитель',\n children: 'дети',\n within: 'внутри',\n no: 'нет',\n empty: 'пустой',\n some: 'некоторые',\n 'starts with': 'начинается_с',\n 'ends with': 'заканчивается_на',\n 'ignoring case': 'без_учёта_регистра',\n 'sorted by': 'сортировано_по',\n 'mapped to': 'преобразовано_в',\n 'split by': 'разделено_по',\n 'joined by': 'объединено_через',\n },\n};\n\nexport const ru = russianDictionary;\n","import { russianDictionary } from '../dictionaries/ru';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\nexport const ruKeywords: KeywordProvider = createKeywordProvider(russianDictionary, 'ru', {\n allowEnglishFallback: true,\n});\n\nexport { russianDictionary as ruDictionary } from '../dictionaries/ru';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const ukrainianDictionary: Dictionary = {\n commands: {\n on: 'при',\n tell: 'сказати',\n trigger: 'запустити', // auditor: dict emitted a word the profile reads differently\n send: 'надіслати',\n take: 'взяти',\n put: 'покласти',\n set: 'встановити',\n get: 'отримати',\n add: 'додати',\n remove: 'видалити',\n toggle: 'перемкнути',\n hide: 'сховати',\n show: 'показати',\n // command verb; the events section keeps the noun прокрутка for `on scroll`.\n // Without this entry the transformer fell back to the event noun, which the\n // parser doesn't read as the scroll command (#321 focus family).\n scroll: 'прокрутити',\n if: 'якщо',\n unless: 'крім',\n repeat: 'повторити',\n for: 'для',\n while: 'поки',\n until: 'до',\n continue: 'продовжити',\n break: 'перервати',\n halt: 'зупинити',\n wait: 'чекати',\n fetch: 'завантажити',\n call: 'викликати',\n return: 'повернути',\n make: 'створити',\n log: 'записати',\n throw: 'кинути',\n catch: 'зловити',\n measure: 'виміряти',\n transition: 'анімувати',\n increment: 'збільшити',\n decrement: 'зменшити',\n default: 'за_замовчуванням',\n go: 'перейти',\n pushUrl: 'додати_url',\n replaceUrl: 'замінити_url',\n copy: 'копіювати',\n pick: 'вибрати',\n beep: 'звук',\n js: 'js',\n async: 'асинхронно',\n render: 'відобразити',\n swap: 'поміняти',\n morph: 'трансформувати',\n settle: 'стабілізувати',\n append: 'дописати', // matches the uk profile primary\n exit: 'вийти',\n else: 'інакше',\n install: 'інсталювати', // loanword — `встановити` is `set` (homonym); see ukrainian profile\n init: 'ініціалізувати',\n behavior: 'поведінка',\n focus: 'сфокусувати',\n blur: 'розфокусувати',\n clone: 'клонувати',\n prepend: 'додати на початок', // natural form; see ru.ts\n breakpoint: 'точка-зупинки',\n clear: 'очистити',\n close: 'закрити',\n open: 'відкрити',\n select: 'виділити', // Batch 3: вибрати is the pick keyword — bare select rendered with it parses null\n },\n\n modifiers: {\n to: 'до',\n from: 'з',\n into: 'в',\n with: 'з',\n at: 'в',\n in: 'у',\n of: 'з',\n as: 'як',\n by: 'на',\n before: 'до',\n after: 'після',\n over: 'над',\n under: 'під',\n between: 'між',\n through: 'через',\n without: 'без',\n on: 'на',\n },\n\n events: {\n click: 'клік',\n dblclick: 'подвійний_клік',\n // Fused (no `_`): the semantic tokenizer splits on `_`, so an underscore form\n // breaks event recognition. Mirrors the #510 tr resize fix + enyakın.\n mousedown: 'мишавниз',\n mouseup: 'мишавгору',\n mouseenter: 'миша_вхід',\n mouseleave: 'миша_вихід',\n mouseover: 'наведення',\n mouseout: 'відведення',\n mousemove: 'рух_миші',\n keydown: 'клавіша_вниз',\n keyup: 'клавіша_вгору',\n keypress: 'натискання_клавіші',\n focus: 'фокус',\n blur: 'розфокус',\n change: 'зміна',\n input: 'введення',\n submit: 'надсилання',\n reset: 'скинути', // Batch 3: скидання captured on.event as expression (broken listener) — profile verb round-trips\n load: 'завантаження',\n unload: 'вивантаження',\n resize: 'змінарозміру', // fused (no `_`) — see mousedown note above\n scroll: 'прокрутка',\n touchstart: 'дотик_початок',\n touchend: 'дотик_кінець',\n touchmove: 'дотик_рух',\n touchcancel: 'дотик_скасування',\n },\n\n logical: {\n when: 'коли',\n where: 'де',\n and: 'і',\n or: 'або',\n not: 'не',\n is: 'є',\n exists: 'існує',\n matches: 'відповідає',\n contains: 'містить',\n includes: 'включає',\n equals: 'дорівнює',\n then: 'тоді',\n else: 'інакше',\n otherwise: 'в_іншому_випадку',\n end: 'кінець',\n live: 'живий',\n changes: 'змінюється',\n has: 'має',\n have: 'маю',\n isNot: 'не_є',\n empty: 'порожній',\n },\n\n temporal: {\n seconds: 'секунд',\n second: 'секунда',\n milliseconds: 'мілісекунд',\n millisecond: 'мілісекунда',\n minutes: 'хвилин',\n minute: 'хвилина',\n hours: 'годин',\n hour: 'година',\n ms: 'мс',\n s: 'с',\n min: 'хв',\n h: 'год',\n forever: 'завжди',\n once: 'один_раз',\n every: 'кожний',\n until: 'до',\n times: 'разів',\n },\n\n values: {\n true: 'істина',\n false: 'хибність',\n null: 'нічого',\n undefined: 'невизначено',\n it: 'це',\n its: 'його',\n me: 'я',\n my: 'мій',\n you: 'ти',\n your: 'твій',\n yourself: 'сам',\n myself: 'я_сам',\n element: 'елемент',\n target: 'ціль',\n detail: 'деталі',\n event: 'подія',\n window: 'вікно',\n document: 'документ',\n body: 'тіло',\n result: 'результат',\n value: 'значення',\n first: 'перший',\n last: 'останній',\n next: 'наступний',\n previous: 'попередній',\n closest: 'найближчий',\n parent: 'батьківський',\n },\n\n attributes: {\n class: 'клас',\n classes: 'класи',\n style: 'стиль',\n styles: 'стилі',\n attribute: 'атрибут',\n attributes: 'атрибути',\n property: 'властивість',\n properties: 'властивості',\n disabled: 'вимкнено',\n hidden: 'приховано',\n checked: 'позначено',\n selected: 'вибрано',\n readonly: 'лише_читання',\n required: \"обов'язково\",\n text: 'текст',\n html: 'html',\n },\n\n expressions: {\n characters: 'символи',\n inclusive: 'включно',\n exclusive: 'виключно',\n first: 'перший',\n last: 'останній',\n next: 'наступний',\n previous: 'попередній',\n prev: 'попер',\n at: 'в',\n random: 'випадковий',\n closest: 'найближчий',\n parent: 'батьківський',\n children: 'діти',\n within: 'всередині',\n no: 'ні',\n empty: 'порожній',\n some: 'деякі',\n 'starts with': 'починається_з',\n 'ends with': 'закінчується_на',\n 'ignoring case': 'без_урахування_регістру',\n 'sorted by': 'відсортовано_за',\n 'mapped to': 'перетворено_на',\n 'split by': 'розділено_за',\n 'joined by': \"об'єднано_через\",\n },\n};\n\nexport const uk = ukrainianDictionary;\n","import { ukrainianDictionary } from '../dictionaries/uk';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\nexport const ukKeywords: KeywordProvider = createKeywordProvider(ukrainianDictionary, 'uk', {\n allowEnglishFallback: true,\n});\n\nexport { ukrainianDictionary as ukDictionary } from '../dictionaries/uk';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const hindiDictionary: Dictionary = {\n commands: {\n on: 'पर',\n tell: 'बताएं',\n trigger: 'ट्रिगर',\n send: 'भेजें',\n take: 'लें',\n put: 'रखें',\n set: 'सेट',\n get: 'प्राप्त',\n add: 'जोड़ें',\n remove: 'हटाएं',\n toggle: 'टॉगल',\n hide: 'छिपाएं',\n show: 'दिखाएं',\n if: 'अगर',\n unless: 'जब तक नहीं', // spaced (not जब_तक_नहीं) → one multi-word `unless` token\n repeat: 'दोहराएं',\n for: 'हेतु', // single token — के_लिए splits at _ in the hi extractor\n while: 'जब तक',\n until: 'तक',\n continue: 'जारी',\n break: 'रोकें',\n halt: 'रोकें',\n wait: 'प्रतीक्षा',\n fetch: 'लाएं',\n call: 'कॉल',\n return: 'लौटाएं',\n make: 'बनाएं',\n log: 'लॉग',\n throw: 'फेंकें',\n catch: 'पकड़ें',\n measure: 'मापें',\n transition: 'संक्रमण',\n increment: 'बढ़ाएं',\n decrement: 'घटाएं',\n default: 'डिफ़ॉल्ट',\n go: 'जाएं',\n pushUrl: 'url_जोड़ें',\n replaceUrl: 'url_बदलें',\n copy: 'कॉपी',\n pick: 'चुनें',\n beep: 'बीप',\n js: 'जेएस',\n async: 'असिंक',\n render: 'रेंडर',\n swap: 'विनिमय',\n morph: 'रूपांतर',\n settle: 'स्थिर',\n append: 'संलग्न',\n exit: 'बाहर',\n else: 'वरना',\n install: 'इंस्टॉल',\n init: 'प्रारंभ',\n behavior: 'व्यवहार',\n focus: 'फोकस',\n blur: 'धुंधला',\n clone: 'क्लोन', // Batch 3: कॉपी is the copy verb — rendered clone parsed as action=copy\n prepend: 'जोड़ें_शुरू',\n breakpoint: 'ब्रेकप्वाइंट',\n clear: 'साफ़-करें',\n close: 'बंद-करें',\n open: 'खोलें',\n select: 'चिह्नित-करें', // Batch 3: चुनें is the pick keyword — bare select rendered with it parses null\n socket: 'सॉकेट',\n },\n\n modifiers: {\n to: 'को',\n from: 'से',\n into: 'में',\n with: 'के_साथ',\n at: 'पर',\n in: 'में',\n of: 'का',\n as: 'के_रूप_में',\n by: 'द्वारा',\n before: 'से पहले',\n after: 'के बाद',\n over: 'के_ऊपर',\n under: 'के_नीचे',\n between: 'के_बीच',\n through: 'के_माध्यम_से',\n without: 'के_बिना',\n on: 'पर',\n },\n\n events: {\n click: 'क्लिक',\n dblclick: 'डबल_क्लिक',\n // Fused (no `_`): the semantic tokenizer splits on `_`, breaking event\n // recognition (mousedown → \"नीचे\"). Mirrors the #535 ru/uk fuse.\n mousedown: 'माउसनीचे',\n mouseup: 'माउसऊपर',\n mouseenter: 'माउस_प्रवेश',\n mouseleave: 'माउस_बाहर',\n mouseover: 'माउस_ओवर',\n mouseout: 'माउस_आउट',\n mousemove: 'माउस_मूव',\n keydown: 'की_नीचे',\n keyup: 'की_ऊपर',\n keypress: 'की_प्रेस',\n focus: 'फोकस',\n blur: 'धुंधला',\n change: 'परिवर्तन',\n input: 'इनपुट',\n submit: 'जमा',\n reset: 'रीसेट',\n load: 'लोड',\n unload: 'अनलोड',\n resize: 'आकार_बदलें',\n scroll: 'स्क्रॉल',\n touchstart: 'टच_शुरू',\n touchend: 'टच_समाप्त',\n touchmove: 'टच_मूव',\n touchcancel: 'टच_रद्द',\n },\n\n logical: {\n when: 'जब',\n where: 'कहाँ',\n and: 'और',\n or: 'या',\n not: 'नहीं',\n is: 'है',\n exists: 'मौजूद',\n // Natural spaced phrase `मेल खाता` (\"matches\") — how Hindi writes it. The base\n // tokenizer now matches multi-word profile keywords, so the hindi profile maps\n // `मेल खाता`→matches without the underscore (`मेल_खाता` split) or the\n // concatenated `मेलखाता` (parsed, but unnatural) workarounds.\n matches: 'मेल खाता',\n contains: 'शामिल',\n includes: 'में_है',\n equals: 'बराबर',\n then: 'फिर',\n else: 'वरना',\n otherwise: 'अन्यथा',\n end: 'समाप्त',\n live: 'लाइव',\n changes: 'बदलने पर',\n has: 'है',\n have: 'है',\n isNot: 'नहीं_है',\n empty: 'खाली',\n },\n\n temporal: {\n seconds: 'सेकंड',\n second: 'सेकंड',\n milliseconds: 'मिलीसेकंड',\n millisecond: 'मिलीसेकंड',\n minutes: 'मिनट',\n minute: 'मिनट',\n hours: 'घंटे',\n hour: 'घंटा',\n ms: 'मिसे',\n s: 'से',\n min: 'मि',\n h: 'घं',\n forever: 'हमेशा',\n once: 'एक_बार',\n every: 'हर',\n until: 'तक',\n times: 'बार',\n },\n\n values: {\n true: 'सच',\n false: 'झूठ',\n null: 'null',\n undefined: 'अपरिभाषित',\n it: 'यह',\n its: 'इसका',\n me: 'मैं',\n my: 'मेरा',\n you: 'आप',\n your: 'आपका',\n yourself: 'स्वयं',\n myself: 'मैं_स्वयं',\n element: 'तत्व',\n target: 'लक्ष्य',\n detail: 'विवरण',\n event: 'घटना',\n window: 'विंडो',\n document: 'दस्तावेज़',\n body: 'बॉडी',\n result: 'परिणाम',\n value: 'मान',\n first: 'पहला',\n last: 'अंतिम',\n next: 'अगला',\n previous: 'पिछला',\n closest: 'निकटतम',\n parent: 'मूल',\n },\n\n attributes: {\n class: 'क्लास',\n classes: 'क्लासेस',\n style: 'स्टाइल',\n styles: 'स्टाइल्स',\n attribute: 'गुण',\n attributes: 'गुण',\n property: 'संपत्ति',\n properties: 'संपत्तियाँ',\n disabled: 'अक्षम',\n hidden: 'छिपा',\n checked: 'चेक',\n selected: 'चयनित',\n readonly: 'केवल_पढ़ने',\n required: 'आवश्यक',\n text: 'पाठ',\n html: 'html',\n },\n\n expressions: {\n characters: 'अक्षर',\n first: 'पहला',\n last: 'अंतिम',\n next: 'अगला',\n previous: 'पिछला',\n prev: 'पिछ',\n at: 'पर',\n random: 'यादृच्छिक',\n closest: 'निकटतम',\n parent: 'मूल',\n children: 'बच्चे',\n within: 'के_अंदर',\n no: 'कोई नहीं',\n empty: 'खाली',\n some: 'कुछ',\n 'starts with': 'से_शुरू',\n 'ends with': 'पर_समाप्त',\n 'ignoring case': 'केस_अनदेखा',\n 'sorted by': 'द्वारा_क्रमबद्ध',\n 'mapped to': 'में_परिवर्तित',\n 'split by': 'द्वारा_विभाजित',\n 'joined by': 'द्वारा_जुड़ा',\n },\n};\n\nexport const hi = hindiDictionary;\n","import { hindiDictionary } from '../dictionaries/hi';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\nexport const hiKeywords: KeywordProvider = createKeywordProvider(hindiDictionary, 'hi', {\n allowEnglishFallback: true,\n});\n\nexport { hindiDictionary as hiDictionary } from '../dictionaries/hi';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const bengaliDictionary: Dictionary = {\n commands: {\n on: 'তে',\n toggle: 'টগল',\n add: 'যোগ',\n remove: 'সরান',\n set: 'সেট',\n get: 'পান',\n put: 'রাখুন',\n take: 'নিন',\n show: 'দেখান',\n hide: 'লুকান',\n increment: 'বৃদ্ধি',\n decrement: 'হ্রাস',\n if: 'যদি',\n else: 'নতুবা',\n repeat: 'পুনরাবৃত্তি',\n for: 'জন্য',\n while: 'যতক্ষণ',\n wait: 'অপেক্ষা',\n fetch: 'আনুন',\n call: 'কল',\n return: 'ফিরুন',\n log: 'লগ',\n trigger: 'ট্রিগার',\n send: 'পাঠান',\n go: 'যান',\n halt: 'থামুন',\n throw: 'নিক্ষেপ',\n continue: 'চালিয়ে যান',\n make: 'তৈরি করুন',\n append: 'জুড়ুন',\n prepend: 'শুরুতে যোগ',\n focus: 'ফোকাস',\n blur: 'ঝাপসা',\n transition: 'সংক্রমণ',\n settle: 'স্থির',\n measure: 'মাপুন',\n async: 'অ্যাসিঙ্ক',\n tell: 'বলুন',\n default: 'ডিফল্ট',\n init: 'শুরু',\n behavior: 'আচরণ',\n install: 'ইনস্টল',\n clone: 'ক্লোন', // Batch 3: কপি is the copy verb — rendered clone parsed as action=copy\n swap: 'বদল',\n morph: 'রূপান্তর',\n beep: 'বীপ',\n break: 'ভাঙুন',\n copy: 'কপি',\n exit: 'বের',\n js: 'জেএস',\n pick: 'বাছুন',\n render: 'রেন্ডার',\n until: 'পর্যন্ত',\n breakpoint: 'ব্রেকপয়েন্ট',\n clear: 'পরিষ্কার',\n close: 'বন্ধ',\n open: 'খুলুন',\n select: 'নির্বাচন',\n socket: 'সকেট',\n },\n\n modifiers: {\n to: 'কে',\n from: 'থেকে',\n into: 'তে',\n on: 'তে',\n with: 'সাথে',\n by: 'দ্বারা',\n as: 'হিসাবে',\n before: 'আগে',\n after: 'পরে',\n at: 'এ',\n in: 'এ',\n over: 'উপর',\n between: 'মধ্যে',\n then: 'তারপর',\n and: 'এবং',\n end: 'শেষ',\n until: 'পর্যন্ত',\n of: 'র',\n },\n\n events: {\n click: 'ক্লিক',\n change: 'পরিবর্তন',\n input: 'ইনপুট',\n submit: 'জমা',\n load: 'লোড',\n focus: 'ফোকাস',\n blur: 'ঝাপসা',\n reset: 'রিসেট',\n keydown: 'keydown',\n keyup: 'keyup',\n // V3c burn-down (2026-07-14): English passthrough — no native form round-trips\n // on the parse side (probe: split forms shatter, fused forms capture verbatim).\n mouseover: 'mouseover',\n mouseout: 'mouseout',\n scroll: 'স্ক্রোল',\n resize: 'রিসাইজ',\n every: 'প্রতি',\n },\n\n logical: {\n if: 'যদি',\n when: 'যখন',\n where: 'কোথায়',\n else: 'নতুবা',\n not: 'না',\n and: 'এবং',\n or: 'অথবা',\n is: 'হয়',\n exists: 'আছে',\n has: 'আছে',\n have: 'আছি',\n empty: 'খালি',\n true: 'সত্য',\n false: 'মিথ্যা',\n null: 'শূন্য',\n undefined: 'অনির্ধারিত',\n end: 'শেষ',\n then: 'তারপর',\n live: 'লাইভ',\n bind: 'বাইন্ড',\n changes: 'পরিবর্তিত হলে',\n },\n\n temporal: {\n now: 'এখন',\n seconds: 'সেকেন্ড',\n milliseconds: 'মিলিসেকেন্ড',\n minutes: 'মিনিট',\n hours: 'ঘণ্টা',\n forever: 'চিরকাল',\n times: 'বার',\n s: 'সে',\n ms: 'মিসে',\n },\n\n values: {\n me: 'আমি',\n my: 'আমার',\n it: 'এটি',\n its: 'এর',\n result: 'ফলাফল',\n event: 'ঘটনা',\n target: 'লক্ষ্য',\n body: 'বডি',\n you: 'আপনি',\n your: 'তোমার',\n },\n\n attributes: {\n class: 'শ্রেণি',\n id: 'আইডি',\n style: 'শৈলী',\n value: 'মান',\n text: 'পাঠ্য',\n html: 'এইচটিএমএল',\n disabled: 'অক্ষম',\n checked: 'চেক করা',\n },\n\n expressions: {\n characters: 'অক্ষর',\n inclusive: 'অন্তর্ভুক্ত',\n exclusive: 'বাদ',\n first: 'প্রথম',\n last: 'শেষ',\n next: 'পরবর্তী',\n previous: 'আগের',\n closest: 'নিকটতম',\n parent: 'মূল',\n children: 'সন্তান',\n random: 'এলোমেলো',\n length: 'দৈর্ঘ্য',\n index: 'সূচক',\n // The EXPRESSION `empty` is the state predicate (`if my value is empty`),\n // not the command: `খালি-করুন` is the imperative \"empty it!\" and belongs to\n // the `empty` COMMAND, which keeps it. Kept in step with the semantic\n // lexicon by `lexicon-parity.test.ts`.\n empty: 'খালি',\n 'starts with': 'দিয়ে_শুরু',\n 'ends with': 'দিয়ে_শেষ',\n 'ignoring case': 'কেস_উপেক্ষা',\n 'sorted by': 'দ্বারা_সাজানো',\n 'mapped to': 'তে_রূপান্তরিত',\n 'split by': 'দ্বারা_বিভক্ত',\n 'joined by': 'দ্বারা_যুক্ত',\n },\n};\n\nexport const bn = bengaliDictionary;\n","import { bn } from '../dictionaries/bn';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\nexport const bnKeywords: KeywordProvider = createKeywordProvider(bn, 'bn', {\n allowEnglishFallback: true,\n});\n\nexport { bn as bnDictionary } from '../dictionaries/bn';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const thaiDictionary: Dictionary = {\n commands: {\n on: 'เมื่อ',\n toggle: 'สลับ',\n add: 'เพิ่ม',\n remove: 'ลบ',\n set: 'ตั้ง',\n get: 'รับค่า',\n put: 'ใส่',\n take: 'รับ',\n show: 'แสดง',\n hide: 'ซ่อน',\n increment: 'เพิ่มค่า',\n decrement: 'ลดค่า',\n if: 'ถ้า',\n else: 'ไม่งั้น',\n repeat: 'ทำซ้ำ',\n for: 'สำหรับ',\n while: 'ในขณะที่',\n wait: 'รอ',\n fetch: 'ดึงข้อมูล',\n call: 'เรียก',\n return: 'คืนค่า',\n log: 'บันทึก',\n trigger: 'ทริกเกอร์',\n send: 'ส่ง',\n go: 'ไป',\n halt: 'หยุด',\n throw: 'โยน',\n continue: 'ต่อไป',\n make: 'สร้าง',\n append: 'เพิ่มท้าย',\n prepend: 'เพิ่มหน้า',\n focus: 'โฟกัส',\n blur: 'เบลอ',\n // เปลี่ยนผ่าน, not เปลี่ยน: the semantic th profile's `change` keyword is\n // เปลี่ยน, so a เปลี่ยน render could never anchor a transition command.\n transition: 'เปลี่ยนผ่าน',\n settle: 'คงที่',\n measure: 'วัด',\n async: 'อะซิงค์',\n tell: 'บอก',\n default: 'ค่าเริ่มต้น',\n init: 'เริ่มต้น',\n behavior: 'พฤติกรรม',\n install: 'ติดตั้ง',\n clone: 'โคลน', // Batch 3: คัดลอก is the copy verb — rendered clone parsed as action=copy\n swap: 'สลับที่',\n morph: 'แปลงร่าง',\n beep: 'บี๊บ',\n break: 'ขัดจังหวะ',\n copy: 'คัดลอก',\n exit: 'ออก',\n js: 'เจเอส',\n pick: 'เลือก',\n render: 'แสดงผล',\n until: 'จนถึง',\n breakpoint: 'จุดพัก',\n clear: 'เคลียร์',\n close: 'ปิด',\n open: 'เปิด',\n select: 'ทำเครื่องหมาย', // Batch 3: เลือก is the pick keyword — bare select rendered with it parses null\n },\n\n modifiers: {\n to: 'ไปยัง',\n from: 'จาก',\n into: 'ใน',\n on: 'เมื่อ',\n with: 'ด้วย',\n by: 'โดย',\n as: 'เป็น',\n before: 'ก่อน',\n after: 'หลัง',\n at: 'ที่',\n in: 'ใน',\n over: 'เหนือ',\n between: 'ระหว่าง',\n then: 'แล้ว',\n and: 'และ',\n end: 'จบ',\n until: 'จนถึง',\n of: 'ของ',\n },\n\n events: {\n click: 'คลิก',\n change: 'เปลี่ยนแปลง',\n input: 'อินพุต',\n submit: 'ส่ง',\n load: 'โหลด',\n focus: 'โฟกัส',\n blur: 'เบลอ',\n reset: 'รีเซ็ต',\n keydown: 'กดคีย์',\n keyup: 'ปล่อยคีย์',\n mouseover: 'เมาส์เข้า',\n mouseout: 'เมาส์ออก',\n scroll: 'เลื่อน',\n resize: 'ปรับขนาด',\n every: 'ทุก',\n },\n\n logical: {\n if: 'ถ้า',\n when: 'เมื่อ',\n where: 'ที่ไหน',\n else: 'ไม่งั้น',\n not: 'ไม่',\n and: 'และ',\n or: 'หรือ',\n is: 'เป็น',\n exists: 'มีอยู่',\n has: 'มี',\n have: 'มี',\n empty: 'ว่าง',\n true: 'จริง',\n false: 'เท็จ',\n null: 'null',\n undefined: 'ไม่กำหนด',\n end: 'จบ',\n then: 'แล้ว',\n live: 'สด',\n changes: 'เปลี่ยน',\n },\n\n temporal: {\n now: 'ตอนนี้',\n seconds: 'วินาที',\n milliseconds: 'มิลลิวินาที',\n minutes: 'นาที',\n hours: 'ชั่วโมง',\n forever: 'ตลอดไป',\n times: 'ครั้ง',\n s: 'วิ',\n ms: 'มว',\n },\n\n values: {\n me: 'ฉัน',\n my: 'ของฉัน',\n it: 'มัน',\n its: 'ของมัน',\n result: 'ผลลัพธ์',\n event: 'เหตุการณ์',\n target: 'เป้าหมาย',\n body: 'บอดี้',\n you: 'คุณ',\n your: 'ของคุณ',\n },\n\n attributes: {\n class: 'คลาส',\n id: 'ไอดี',\n style: 'สไตล์',\n value: 'ค่า',\n text: 'ข้อความ',\n html: 'เอชทีเอ็มแอล',\n disabled: 'ปิดใช้งาน',\n checked: 'เลือกแล้ว',\n },\n\n expressions: {\n characters: 'อักขระ',\n inclusive: 'รวม',\n exclusive: 'ยกเว้น',\n first: 'แรก',\n last: 'สุดท้าย',\n next: 'ถัดไป',\n previous: 'ก่อนหน้า',\n closest: 'ใกล้สุด',\n parent: 'ต้นทาง',\n children: 'ลูก',\n random: 'สุ่ม',\n length: 'ความยาว',\n index: 'ดัชนี',\n empty: 'ล้าง',\n 'starts with': 'ขึ้นต้นด้วย',\n 'ends with': 'ลงท้ายด้วย',\n 'ignoring case': 'ไม่สนตัวพิมพ์',\n 'sorted by': 'เรียงตาม',\n 'mapped to': 'แปลงเป็น',\n 'split by': 'แยกด้วย',\n 'joined by': 'รวมด้วย',\n },\n};\n\nexport const th = thaiDictionary;\n","import { th } from '../dictionaries/th';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\nexport const thKeywords: KeywordProvider = createKeywordProvider(th, 'th', {\n allowEnglishFallback: true,\n});\n\nexport { th as thDictionary } from '../dictionaries/th';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const malayDictionary: Dictionary = {\n commands: {\n on: 'apabila',\n tell: 'beritahu',\n trigger: 'cetuskan',\n send: 'hantar',\n take: 'ambil',\n put: 'letak',\n set: 'tetapkan',\n get: 'dapatkan',\n add: 'tambah',\n remove: 'buang',\n toggle: 'togol',\n hide: 'sembunyi',\n show: 'tunjuk',\n if: 'jika',\n unless: 'kecuali',\n repeat: 'ulang',\n for: 'untuk',\n while: 'selagi',\n until: 'sehingga',\n continue: 'teruskan',\n break: 'henti',\n halt: 'henti',\n wait: 'tunggu',\n fetch: 'ambil_dari',\n call: 'panggil',\n return: 'pulang',\n make: 'buat',\n log: 'catat',\n throw: 'lempar',\n catch: 'tangkap',\n measure: 'ukur',\n transition: 'peralihan',\n increment: 'tambah_satu',\n decrement: 'kurang_satu',\n default: 'lalai',\n go: 'pergi',\n pushUrl: 'tolak_url',\n replaceUrl: 'ganti_url',\n copy: 'salin',\n pick: 'pilih',\n beep: 'bunyi',\n js: 'js',\n async: 'tak_segerak',\n render: 'papar',\n swap: 'tukar_tempat',\n morph: 'ubah_bentuk',\n settle: 'selesai',\n append: 'tambah_hujung',\n prepend: 'tambah_mula',\n exit: 'keluar',\n else: 'kalau_tidak',\n focus: 'fokus',\n blur: 'kabur',\n install: 'pasang',\n behavior: 'kelakuan',\n init: 'mula',\n clone: 'klon',\n breakpoint: 'titik-henti',\n clear: 'bersihkan', // padam is a remove alternative in the profile\n close: 'tutup',\n open: 'buka',\n select: 'tandai', // Batch 3: pilih is the pick keyword — bare select rendered with it parses null\n socket: 'soket', // derived from the ms profile (socket.primary); see generate-i18n-dictionaries\n },\n\n modifiers: {\n to: 'ke',\n from: 'dari',\n into: 'ke_dalam',\n with: 'dengan',\n at: 'di',\n in: 'dalam',\n of: 'daripada',\n as: 'sebagai',\n by: 'oleh',\n before: 'sebelum',\n after: 'selepas',\n over: 'atas',\n under: 'bawah',\n between: 'antara',\n through: 'melalui',\n without: 'tanpa',\n on: 'pada',\n then: 'kemudian',\n and: 'dan',\n end: 'tamat',\n until: 'sehingga',\n },\n\n events: {\n click: 'click',\n dblclick: 'dblclick',\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n mouseover: 'mouseover',\n mouseout: 'mouseout',\n mousemove: 'mousemove',\n keydown: 'keydown',\n keyup: 'keyup',\n keypress: 'keypress',\n focus: 'focus',\n blur: 'blur',\n change: 'change',\n input: 'input',\n submit: 'submit',\n reset: 'reset',\n load: 'load',\n unload: 'unload',\n resize: 'resize',\n scroll: 'scroll',\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n touchcancel: 'touchcancel',\n every: 'setiap',\n },\n\n logical: {\n when: 'apabila',\n where: 'di_mana',\n and: 'dan',\n or: 'atau',\n not: 'bukan',\n is: 'adalah',\n exists: 'wujud',\n matches: 'sepadan',\n contains: 'mengandungi',\n includes: 'termasuk',\n equals: 'sama',\n has: 'ada',\n have: 'ada',\n then: 'kemudian',\n else: 'kalau_tidak',\n otherwise: 'jika_tidak',\n end: 'tamat',\n live: 'langsung',\n changes: 'berubah',\n if: 'jika',\n empty: 'kosong',\n true: 'benar',\n false: 'salah',\n null: 'null',\n undefined: 'tidak_ditakrifkan',\n },\n\n temporal: {\n seconds: 'saat',\n second: 'saat',\n milliseconds: 'milisaat',\n millisecond: 'milisaat',\n minutes: 'minit',\n minute: 'minit',\n hours: 'jam',\n hour: 'jam',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'j',\n now: 'sekarang',\n forever: 'selamanya',\n times: 'kali',\n },\n\n values: {\n true: 'benar',\n false: 'salah',\n null: 'null',\n undefined: 'tidak_ditakrifkan',\n it: 'ia',\n its: 'nya',\n me: 'saya',\n my: 'saya_punya',\n myself: 'diri_saya',\n you: 'kamu',\n your: 'kamu_punya',\n yourself: 'diri_kamu',\n element: 'elemen',\n target: 'sasaran',\n detail: 'perincian',\n event: 'peristiwa',\n window: 'tetingkap',\n document: 'dokumen',\n body: 'badan',\n result: 'hasil',\n value: 'nilai',\n },\n\n attributes: {\n class: 'kelas',\n classes: 'kelas_kelas',\n style: 'gaya',\n styles: 'gaya_gaya',\n attribute: 'atribut',\n attributes: 'atribut_atribut',\n property: 'sifat',\n properties: 'sifat_sifat',\n id: 'id',\n value: 'nilai',\n text: 'teks',\n html: 'html',\n disabled: 'dilumpuhkan',\n checked: 'ditanda',\n },\n\n expressions: {\n characters: 'aksara',\n inclusive: 'inklusif',\n exclusive: 'eksklusif',\n first: 'pertama',\n last: 'terakhir',\n next: 'seterusnya',\n previous: 'sebelumnya',\n prev: 'sebelum',\n at: 'di',\n random: 'rawak',\n closest: 'terdekat',\n parent: 'induk',\n children: 'anak_anak',\n within: 'dalam',\n no: 'tiada',\n empty: 'kosong',\n some: 'beberapa',\n 'starts with': 'bermula_dengan',\n 'ends with': 'berakhir_dengan',\n 'ignoring case': 'abaikan_huruf_besar_kecil',\n 'sorted by': 'disusun_mengikut',\n 'mapped to': 'dipetakan_ke',\n 'split by': 'dipecah_oleh',\n 'joined by': 'digabung_oleh',\n length: 'panjang',\n index: 'indeks',\n },\n};\n\nexport const ms = malayDictionary;\n","import { ms } from '../dictionaries/ms';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\nexport const msKeywords: KeywordProvider = createKeywordProvider(ms, 'ms', {\n allowEnglishFallback: true,\n});\n\nexport { ms as msDictionary } from '../dictionaries/ms';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const tagalogDictionary: Dictionary = {\n commands: {\n on: 'kapag',\n tell: 'sabihin',\n trigger: 'palitawin',\n send: 'ipadala',\n take: 'kumuha', // auditor: dict emitted a word the profile reads differently\n put: 'ilagay',\n set: 'itakda',\n // Align with the semantic tl profile's `get` primary (`kunin`); the previous\n // `kuhanin` is the base of fetch's `kuhanin_mula`, so the transformed `get`\n // dropped (get-value parsed degenerate). Same dict↔profile alignment as id `toggle`.\n get: 'kunin',\n add: 'idagdag',\n remove: 'alisin',\n toggle: 'palitan',\n hide: 'itago',\n show: 'ipakita',\n if: 'kung',\n unless: 'maliban_kung',\n repeat: 'ulitin',\n for: 'para_sa',\n while: 'habang',\n until: 'hanggang',\n continue: 'magpatuloy',\n break: 'itigil',\n halt: 'huminto',\n wait: 'maghintay',\n fetch: 'kuhanin_mula',\n call: 'tawagin',\n return: 'ibalik',\n make: 'gumawa',\n log: 'itala',\n throw: 'ihagis',\n catch: 'hulihin',\n measure: 'sukatin',\n transition: 'lumipat',\n increment: 'dagdagan',\n decrement: 'bawasan',\n default: 'pamantayan',\n go: 'pumunta',\n pushUrl: 'itulak_url',\n replaceUrl: 'palitan_url',\n copy: 'kopyahin',\n pick: 'pumili',\n beep: 'tunog',\n js: 'js',\n async: 'sabay',\n render: 'irender', // auditor: dict emitted a word the profile reads differently\n swap: 'palitan_pwesto',\n morph: 'baguhin', // auditor: dict emitted a word the profile reads differently\n settle: 'magpatahimik', // auditor: dict emitted a word the profile reads differently\n append: 'idagdag_sa_dulo',\n prepend: 'idagdag_sa_simula',\n exit: 'lumabas',\n else: 'kung_hindi',\n focus: 'ituon',\n blur: 'alisin_tuon',\n install: 'ikabit',\n behavior: 'ugali',\n init: 'simulan',\n clone: 'i-clone', // Batch 3: kopyahin is the copy verb — rendered clone parsed as action=copy\n breakpoint: 'breakpoint',\n clear: 'burahin',\n close: 'isara',\n open: 'buksan',\n select: 'piliin',\n },\n\n modifiers: {\n to: 'sa',\n from: 'mula_sa',\n into: 'papasok_sa',\n with: 'kasama',\n at: 'sa',\n in: 'sa_loob',\n of: 'ng',\n as: 'bilang',\n by: 'sa_pamamagitan_ng',\n before: 'bago',\n // `matapos` (not `pagkatapos`) for the positional \"after\": `pagkatapos` is\n // also Tagalog \"then\", so emitting it for the position modifier collides with\n // the sequence connector. `matapos` is the unambiguous positional form and\n // matches the semantic tl profile's `after`.\n after: 'matapos',\n over: 'sa_ibabaw',\n under: 'sa_ilalim',\n between: 'sa_pagitan',\n through: 'sa_pamamagitan',\n without: 'walang',\n on: 'sa',\n then: 'pagkatapos',\n and: 'at',\n end: 'wakas',\n until: 'hanggang',\n },\n\n events: {\n click: 'click',\n dblclick: 'dblclick',\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n mouseover: 'mouseover',\n mouseout: 'mouseout',\n mousemove: 'mousemove',\n keydown: 'keydown',\n keyup: 'keyup',\n keypress: 'keypress',\n focus: 'focus',\n blur: 'blur',\n change: 'change',\n input: 'input',\n submit: 'submit',\n reset: 'reset',\n load: 'load',\n unload: 'unload',\n resize: 'resize',\n scroll: 'scroll',\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n touchcancel: 'touchcancel',\n every: 'bawat',\n },\n\n logical: {\n when: 'kapag',\n where: 'kung_saan',\n and: 'at',\n or: 'o',\n not: 'hindi',\n is: 'ay',\n exists: 'may',\n matches: 'tumutugma',\n contains: 'naglalaman',\n // `includes` takes `contains`' word: both engines read them as one operator,\n // and `kasama` is `inclusive` (pick's range word), which the reader takes it for.\n includes: 'naglalaman',\n equals: 'katumbas',\n has: 'may',\n have: 'may',\n then: 'pagkatapos',\n else: 'kung_hindi',\n otherwise: 'kung_hindi_man',\n end: 'wakas',\n live: 'live',\n changes: 'nagbabago',\n if: 'kung',\n empty: 'walang_laman',\n true: 'totoo',\n false: 'mali',\n null: 'wala',\n undefined: 'hindi_tinukoy',\n },\n\n temporal: {\n seconds: 'segundo',\n second: 'segundo',\n milliseconds: 'milisegundo',\n millisecond: 'milisegundo',\n minutes: 'minuto',\n minute: 'minuto',\n hours: 'oras',\n hour: 'oras',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n now: 'ngayon',\n forever: 'magpakailanman',\n times: 'beses',\n },\n\n values: {\n true: 'totoo',\n false: 'mali',\n null: 'wala',\n undefined: 'hindi_tinukoy',\n it: 'ito',\n its: 'nito',\n me: 'ako',\n my: 'aking',\n myself: 'sarili_ko',\n you: 'ikaw',\n your: 'iyong',\n yourself: 'sarili_mo',\n element: 'elemento',\n target: 'target',\n detail: 'detalye',\n event: 'pangyayari',\n window: 'bintana',\n document: 'dokumento',\n body: 'katawan',\n result: 'resulta',\n value: 'halaga',\n },\n\n attributes: {\n class: 'klase',\n classes: 'mga_klase',\n style: 'estilo',\n styles: 'mga_estilo',\n attribute: 'katangian',\n attributes: 'mga_katangian',\n property: 'ari_arian',\n properties: 'mga_ari_arian',\n id: 'id',\n value: 'halaga',\n text: 'teksto',\n html: 'html',\n disabled: 'hindi_pinagana',\n checked: 'naka_tsek',\n },\n\n expressions: {\n characters: 'karakter',\n inclusive: 'kasama',\n exclusive: 'bukod',\n first: 'una',\n last: 'huli',\n next: 'susunod',\n previous: 'nakaraan',\n prev: 'nakaraan',\n at: 'sa',\n random: 'random',\n closest: 'pinakamalapit',\n parent: 'magulang',\n children: 'mga_anak',\n within: 'sa_loob_ng',\n no: 'walang',\n empty: 'walang_laman',\n some: 'ilan',\n 'starts with': 'nagsisimula_sa',\n 'ends with': 'nagtatapos_sa',\n 'ignoring case': 'huwag_pansinin_ang_case',\n 'sorted by': 'nakaayos_ayon_sa',\n 'mapped to': 'binago_sa',\n 'split by': 'hinati_sa',\n 'joined by': 'pinagsama_sa',\n length: 'haba',\n index: 'indeks',\n },\n};\n\nexport const tl = tagalogDictionary;\n","import { tl } from '../dictionaries/tl';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\nexport const tlKeywords: KeywordProvider = createKeywordProvider(tl, 'tl', {\n allowEnglishFallback: true,\n});\n\nexport { tl as tlDictionary } from '../dictionaries/tl';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const he: Dictionary = {\n commands: {\n add: 'הוסף',\n append: 'צרף',\n async: 'אסינכרוני',\n beep: 'ביפ',\n break: 'שבור',\n call: 'קרא',\n clear: 'נקה', // profile's clear word — was untranslated (parsed as nothing)\n continue: 'המשך',\n copy: 'העתק',\n decrement: 'הקטן',\n default: 'ברירת מחדל',\n exit: 'צא',\n fetch: 'הבא',\n for: 'עבור',\n get: 'קבל',\n go: 'לך',\n halt: 'עצור',\n hide: 'הסתר',\n if: 'אם',\n unless: 'אלא',\n increment: 'הגדל',\n install: 'התקן',\n js: 'js',\n log: 'רשום',\n make: 'צור',\n measure: 'מדוד',\n morph: 'הפוך',\n on: 'ב',\n pick: 'בחר',\n put: 'שים',\n remove: 'הסר',\n render: 'רנדר',\n repeat: 'חזור',\n return: 'החזר',\n scroll: 'גלול',\n send: 'שלח',\n set: 'קבע',\n settle: 'התייצב',\n show: 'הראה',\n swap: 'החלף',\n take: 'קח',\n tell: 'אמור',\n throw: 'זרוק',\n toggle: 'מתג',\n transition: 'מעבר',\n trigger: 'הפעל',\n until: 'עד',\n wait: 'חכה',\n while: 'כל עוד',\n },\n\n modifiers: {\n after: 'אחרי',\n before: 'לפני',\n from: 'מ',\n into: 'לתוך',\n to: 'על',\n with: 'עם',\n },\n\n events: {\n blur: 'טשטש',\n change: 'שינוי',\n click: 'לחיצה',\n focus: 'מקד',\n input: 'קלט',\n submit: 'שליחה',\n },\n\n logical: {\n and: 'וגם',\n else: 'אחרת',\n end: 'סוף',\n then: 'אז',\n live: 'חי',\n bind: 'קשור',\n changes: 'משתנה',\n when: 'כאשר',\n where: 'איפה',\n },\n\n temporal: {\n times: 'פעמים',\n },\n\n values: {\n body: 'גוף',\n event: 'אירוע',\n it: 'זה',\n its: 'שלו',\n me: 'אני',\n my: 'שלי',\n result: 'תוצאה',\n target: 'יעד',\n you: 'אתה',\n your: 'שלך',\n },\n\n attributes: {},\n\n expressions: {\n random: 'אקראי',\n characters: 'תווים',\n inclusive: 'כולל',\n exclusive: 'בלעדי',\n last: 'אחרון',\n },\n};\n","// packages/i18n/src/parser/he.ts\n\nimport { he } from '../dictionaries/he';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Hebrew keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Hebrew (RTL, SVO):\n * - `ב לחיצה מתג .active` → parses as `on click toggle .active`\n *\n * English keywords are also accepted (mixed mode).\n *\n * @example\n * ```typescript\n * import { heKeywords } from '@lokascript/i18n/parser/he';\n *\n * heKeywords.resolve('מתג'); // 'toggle'\n * heKeywords.toLocale('on'); // 'ב'\n * ```\n */\nexport const heKeywords: KeywordProvider = createKeywordProvider(he, 'he', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { he as heDictionary } from '../dictionaries/he';\n","// packages/i18n/src/parser/locale-manager.ts\n\nimport type { KeywordProvider } from './types';\nimport { createEnglishProvider } from './create-provider';\n\n/**\n * LocaleManager - Centralized locale configuration for hyperscript parsing.\n *\n * Provides utilities for:\n * - Setting/getting the default locale\n * - Creating locale-aware parsers\n * - Runtime locale switching\n *\n * @example\n * ```typescript\n * import { LocaleManager } from '@lokascript/i18n/parser';\n * import { esKeywords, frKeywords } from '@lokascript/i18n/parser';\n *\n * // Register available locales\n * LocaleManager.register('es', esKeywords);\n * LocaleManager.register('fr', frKeywords);\n *\n * // Set default locale\n * LocaleManager.setDefault('es');\n *\n * // Get keyword provider for parsing\n * const provider = LocaleManager.get(); // Returns esKeywords\n * const frProvider = LocaleManager.get('fr'); // Returns frKeywords\n * ```\n */\nexport class LocaleManager {\n private static providers = new Map<string, KeywordProvider>();\n private static defaultLocale: string = 'en';\n private static englishProvider: KeywordProvider = createEnglishProvider();\n\n /**\n * Register a locale provider.\n *\n * @param locale - The locale code (e.g., 'es', 'ja', 'fr')\n * @param provider - The KeywordProvider for this locale\n */\n static register(locale: string, provider: KeywordProvider): void {\n LocaleManager.providers.set(locale.toLowerCase(), provider);\n }\n\n /**\n * Unregister a locale provider.\n *\n * @param locale - The locale code to remove\n */\n static unregister(locale: string): void {\n LocaleManager.providers.delete(locale.toLowerCase());\n }\n\n /**\n * Set the default locale.\n *\n * @param locale - The locale code to use as default\n * @throws Error if the locale is not registered\n */\n static setDefault(locale: string): void {\n const normalizedLocale = locale.toLowerCase();\n if (normalizedLocale !== 'en' && !LocaleManager.providers.has(normalizedLocale)) {\n throw new Error(\n `Locale '${locale}' is not registered. ` +\n `Available locales: ${LocaleManager.getAvailable().join(', ')}`\n );\n }\n LocaleManager.defaultLocale = normalizedLocale;\n }\n\n /**\n * Get the current default locale.\n *\n * @returns The default locale code\n */\n static getDefault(): string {\n return LocaleManager.defaultLocale;\n }\n\n /**\n * Get a keyword provider for a locale.\n *\n * @param locale - The locale code (optional, defaults to the default locale)\n * @returns The KeywordProvider for the locale\n * @throws Error if the locale is not registered\n */\n static get(locale?: string): KeywordProvider {\n const targetLocale = (locale || LocaleManager.defaultLocale).toLowerCase();\n\n // English is always available\n if (targetLocale === 'en') {\n return LocaleManager.englishProvider;\n }\n\n const provider = LocaleManager.providers.get(targetLocale);\n if (!provider) {\n throw new Error(\n `Locale '${targetLocale}' is not registered. ` +\n `Available locales: ${LocaleManager.getAvailable().join(', ')}`\n );\n }\n\n return provider;\n }\n\n /**\n * Check if a locale is registered.\n *\n * @param locale - The locale code to check\n * @returns True if the locale is available\n */\n static has(locale: string): boolean {\n const normalizedLocale = locale.toLowerCase();\n return normalizedLocale === 'en' || LocaleManager.providers.has(normalizedLocale);\n }\n\n /**\n * Get all available locale codes.\n *\n * @returns Array of locale codes\n */\n static getAvailable(): string[] {\n return ['en', ...Array.from(LocaleManager.providers.keys())];\n }\n\n /**\n * Reset the LocaleManager to its initial state.\n * Useful for testing.\n */\n static reset(): void {\n LocaleManager.providers.clear();\n LocaleManager.defaultLocale = 'en';\n }\n\n /**\n * Register all built-in locales at once.\n *\n * @example\n * ```typescript\n * import { LocaleManager } from '@lokascript/i18n/parser';\n * import { esKeywords, jaKeywords, frKeywords, deKeywords, arKeywords } from '@lokascript/i18n/parser';\n *\n * LocaleManager.registerAll({\n * es: esKeywords,\n * ja: jaKeywords,\n * fr: frKeywords,\n * de: deKeywords,\n * ar: arKeywords,\n * });\n * ```\n */\n static registerAll(providers: Record<string, KeywordProvider>): void {\n for (const [locale, provider] of Object.entries(providers)) {\n LocaleManager.register(locale, provider);\n }\n }\n}\n\n/**\n * Quick utility to detect the browser's preferred locale and return\n * a matching provider, falling back to English.\n *\n * @returns The KeywordProvider for the browser's locale or English\n *\n * @example\n * ```typescript\n * import { detectBrowserLocale } from '@lokascript/i18n/parser';\n *\n * // The provider for the browser's language (navigator.languages), or English\n * detectBrowserLocale().locale; // e.g. 'es'\n * ```\n */\nexport function detectBrowserLocale(): KeywordProvider {\n if (typeof navigator === 'undefined') {\n return LocaleManager.get('en');\n }\n\n // Get browser languages in order of preference\n const languages = navigator.languages || [navigator.language];\n\n for (const lang of languages) {\n // Extract the base language code (e.g., 'es-MX' -> 'es')\n const baseLocale = lang.split('-')[0].toLowerCase();\n\n if (LocaleManager.has(baseLocale)) {\n return LocaleManager.get(baseLocale);\n }\n }\n\n // Fallback to English\n return LocaleManager.get('en');\n}\n","// packages/i18n/src/dictionaries/en.ts\n\nimport { Dictionary } from '../types';\n\n/**\n * English dictionary - identity mapping since English is the canonical hyperscript language.\n * This exists primarily for symmetry in translation operations (e.g., en -> es).\n */\nexport const en: Dictionary = {\n commands: {\n // Event handling\n on: 'on',\n tell: 'tell',\n trigger: 'trigger',\n send: 'send',\n\n // DOM manipulation\n take: 'take',\n put: 'put',\n set: 'set',\n get: 'get',\n add: 'add',\n remove: 'remove',\n toggle: 'toggle',\n hide: 'hide',\n show: 'show',\n\n // Control flow\n if: 'if',\n unless: 'unless',\n repeat: 'repeat',\n for: 'for',\n while: 'while',\n until: 'until',\n continue: 'continue',\n break: 'break',\n halt: 'halt',\n\n // Async\n wait: 'wait',\n fetch: 'fetch',\n call: 'call',\n return: 'return',\n\n // Other commands\n make: 'make',\n log: 'log',\n throw: 'throw',\n catch: 'catch',\n measure: 'measure',\n transition: 'transition',\n\n // Data Commands\n increment: 'increment',\n decrement: 'decrement',\n default: 'default',\n\n // Reactivity Commands\n bind: 'bind',\n\n // Realtime / service-worker Commands\n eventsource: 'eventsource',\n socket: 'socket',\n worker: 'worker',\n intercept: 'intercept',\n\n // Navigation Commands\n go: 'go',\n pushUrl: 'pushUrl',\n replaceUrl: 'replaceUrl',\n\n // Utility Commands\n copy: 'copy',\n pick: 'pick',\n beep: 'beep',\n\n // Advanced Commands\n js: 'js',\n async: 'async',\n render: 'render',\n\n // Animation Commands\n swap: 'swap',\n morph: 'morph',\n settle: 'settle',\n\n // Content Commands\n append: 'append',\n\n // Control Flow\n exit: 'exit',\n\n // Behaviors\n install: 'install',\n\n // v0.9.90 Phase 1 — DOM / form state / debug\n open: 'open',\n close: 'close',\n select: 'select',\n clear: 'clear',\n breakpoint: 'breakpoint',\n\n // Other commands with schemas (backfill — pre-existing gaps surfaced by\n // the schema-alignment test)\n prepend: 'prepend',\n clone: 'clone',\n // Navigation/DOM commands added in core (Dec 2025 / Apr 2026)\n scroll: 'scroll',\n push: 'push',\n replace: 'replace',\n process: 'process',\n },\n\n modifiers: {\n to: 'to',\n from: 'from',\n into: 'into',\n with: 'with',\n at: 'at',\n in: 'in',\n of: 'of',\n as: 'as',\n by: 'by',\n before: 'before',\n after: 'after',\n over: 'over',\n under: 'under',\n between: 'between',\n through: 'through',\n without: 'without',\n },\n\n events: {\n click: 'click',\n dblclick: 'dblclick',\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n mouseover: 'mouseover',\n mouseout: 'mouseout',\n mousemove: 'mousemove',\n\n keydown: 'keydown',\n keyup: 'keyup',\n keypress: 'keypress',\n\n focus: 'focus',\n blur: 'blur',\n change: 'change',\n input: 'input',\n submit: 'submit',\n reset: 'reset',\n\n load: 'load',\n unload: 'unload',\n resize: 'resize',\n scroll: 'scroll',\n\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n touchcancel: 'touchcancel',\n },\n\n logical: {\n when: 'when',\n where: 'where',\n and: 'and',\n or: 'or',\n not: 'not',\n is: 'is',\n exists: 'exists',\n matches: 'matches',\n contains: 'contains',\n includes: 'includes',\n equals: 'equals',\n has: 'has', // third-person: \"it has .class\", \"#element has .class\"\n have: 'have', // first-person: \"I have .class\"\n then: 'then',\n else: 'else',\n otherwise: 'otherwise',\n end: 'end',\n live: 'live',\n changes: 'changes',\n },\n\n temporal: {\n seconds: 'seconds',\n second: 'second',\n milliseconds: 'milliseconds',\n millisecond: 'millisecond',\n minutes: 'minutes',\n minute: 'minute',\n hours: 'hours',\n hour: 'hour',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n },\n\n values: {\n true: 'true',\n false: 'false',\n null: 'null',\n undefined: 'undefined',\n it: 'it',\n its: 'its',\n me: 'me',\n my: 'my',\n myself: 'myself',\n you: 'you',\n your: 'your',\n yourself: 'yourself',\n element: 'element',\n target: 'target',\n detail: 'detail',\n event: 'event',\n window: 'window',\n document: 'document',\n body: 'body',\n result: 'result',\n value: 'value',\n },\n\n attributes: {\n class: 'class',\n classes: 'classes',\n style: 'style',\n styles: 'styles',\n attribute: 'attribute',\n attributes: 'attributes',\n property: 'property',\n properties: 'properties',\n },\n\n expressions: {\n // Positional\n first: 'first',\n last: 'last',\n next: 'next',\n previous: 'previous',\n prev: 'prev',\n at: 'at',\n random: 'random',\n\n // DOM Traversal\n closest: 'closest',\n parent: 'parent',\n children: 'children',\n within: 'within',\n\n // Emptiness/Existence\n no: 'no',\n empty: 'empty',\n some: 'some',\n\n // String operations\n 'starts with': 'starts with',\n 'ends with': 'ends with',\n 'ignoring case': 'ignoring case',\n\n // Collection operations (v0.9.90)\n 'sorted by': 'sorted by',\n 'mapped to': 'mapped to',\n 'split by': 'split by',\n 'joined by': 'joined by',\n },\n};\n","/**\n * Generalized Grammar System for Multilingual Hyperscript\n *\n * This system abstracts grammatical patterns across language families,\n * enabling deep multilingual support without per-language hardcoding.\n *\n * Key Linguistic Concepts:\n * - Word Order: SVO, SOV, VSO (and variations)\n * - Adposition Type: Preposition (English) vs Postposition (Japanese/Korean)\n * - Morphology: Isolating (Chinese) vs Agglutinative (Turkish) vs Fusional (Arabic)\n * - Text Direction: LTR vs RTL\n */\n\n// =============================================================================\n// Core Types\n// =============================================================================\n\n/**\n * Semantic roles in hyperscript commands.\n * These are universal across all 13 supported languages - only the surface form changes.\n *\n * ## Core Thematic Roles (from linguistic theory)\n * | Role | Usage | Purpose | Example |\n * |-------------|-------|-----------------------------|---------------------------|\n * | action | 100% | Command verb | toggle, put, fetch |\n * | patient | 90% | What is acted upon | .active, #count |\n * | destination | 40% | Where something goes | into #output, to .class |\n * | source | 13% | Where something comes from | from #input, from URL |\n * | event | 106% | Trigger events | click, keydown, submit |\n * | condition | 8% | Boolean expressions | if x > 5, when visible |\n * | agent | 0% | Who performs action | Reserved for future use |\n * | goal | 1% | Target value/state | to 'red' (in transition) |\n *\n * ## Quantitative Roles (answer \"how much/long\")\n * | Role | Usage | Purpose | Example |\n * |----------|-------|----------------|----------------------|\n * | quantity | 7% | Numeric amount | by 5, 3 times |\n * | duration | 1% | Time span | for 5 seconds, 500ms |\n *\n * ## Adverbial/Modifier Roles (answer \"how/by what means\")\n * | Role | Usage | Purpose | Example |\n * |--------------|-------|---------------------------|-------------------|\n * | style | 2% | Animation/behavior | with fade |\n * | manner | 2% | Insertion position | before, after |\n * | method | 1% | HTTP method/technique | via POST, as GET |\n * | responseType | 1% | Response format | as json, as html |\n *\n * ## Control Flow Roles\n * | Role | Usage | Purpose | Example |\n * |----------|-------|--------------|-----------------------|\n * | loopType | 6% | Loop variant | forever, until, times |\n *\n * ## Design Notes\n * - Low-usage roles (agent, goal, method, responseType) are intentionally kept for:\n * - Linguistic completeness across all 13 languages\n * - Future extensibility (AI agents, server-side execution)\n * - Command-specific semantics (fetch, transition)\n * - Each role has distinct grammatical markers per language (see profiles/index.ts)\n * - Usage percentages based on pattern database analysis\n */\nexport type SemanticRole =\n // Core thematic roles\n | 'action' // The command/verb (increment, put, toggle)\n | 'agent' // Who/what performs action (reserved for future: AI agents, server-side)\n | 'patient' // What is acted upon (the counter, .active)\n | 'source' // Origin (from #input, from URL)\n | 'destination' // Target location (into #output, to .class)\n | 'goal' // Target value/state (to 'red', to 100)\n | 'recipient' // Who receives what the action transfers (take .active from .tab for me).\n // Declared for parity with the semantic union; NO i18n profile marks it yet\n // — en still maps `for` to duration lexically and suppresses the marker for\n // pronoun values (see insertMarkers below).\n | 'event' // Trigger (click, input, keydown)\n | 'condition' // Boolean expression (if x > 5)\n // Quantitative roles\n | 'quantity' // Numeric amount (by 5, 3 times)\n | 'duration' // Time span (for 5 seconds, over 500ms)\n // Adverbial roles\n | 'responseType' // Response format (as json, as text, as html)\n | 'method' // HTTP method/technique (via POST, using GET)\n | 'style' // Visual/behavioral manner (with fade, smoothly)\n | 'manner' // Insertion position (before, after)\n // Control flow roles\n | 'loopType' // Loop variant: forever, times, for, while, until, until-event\n // Structural roles (for parser control)\n | 'continues'; // Continuation marker (then-chains)\n\n/**\n * Word order patterns\n * These represent the major typological categories\n */\nexport type WordOrder = 'SVO' | 'SOV' | 'VSO' | 'VOS' | 'OVS' | 'OSV' | 'free';\n\n/**\n * Where grammatical markers appear relative to their noun/verb\n */\nexport type AdpositionType = 'preposition' | 'postposition' | 'circumposition' | 'none';\n\n/**\n * Morphological typology - how words are constructed\n */\nexport type MorphologyType =\n | 'isolating' // Chinese - no inflection, word order matters\n | 'agglutinative' // Turkish, Japanese - morphemes stack predictably\n | 'fusional' // Arabic, Spanish - morphemes blend together\n | 'polysynthetic'; // Quechua - complex words encode full sentences\n\n/**\n * A grammatical marker (particle, case ending, preposition)\n */\nexport interface GrammaticalMarker {\n form: string; // The actual text (を, に, to, 的)\n role: SemanticRole; // What semantic role it marks\n position: AdpositionType; // Where it appears\n required: boolean; // Is it mandatory?\n alternatives?: string[]; // Alternative forms (e.g., 을/를 in Korean)\n}\n\n/**\n * Metadata for preserving line structure during translation.\n * Tracks indentation and blank lines so output maintains the same format.\n */\nexport interface LineMetadata {\n /** Trimmed line content (empty string for blank lines) */\n content: string;\n /** Leading whitespace (tabs/spaces) from original line */\n originalIndent: string;\n /** True if the line was empty or whitespace-only */\n isBlank: boolean;\n}\n\n// =============================================================================\n// Language Profile\n// =============================================================================\n\n/**\n * Complete grammatical profile for a language\n * This captures the essential typological features needed for transformation\n */\nexport interface LanguageProfile {\n code: string; // ISO 639-1 code\n name: string; // Native name\n\n // Typological features\n wordOrder: WordOrder;\n adpositionType: AdpositionType;\n morphology: MorphologyType;\n direction: 'ltr' | 'rtl';\n\n // Grammatical markers for each semantic role\n markers: GrammaticalMarker[];\n\n // Role ordering - which semantic roles come in what order\n // E.g., Japanese: ['patient', 'source', 'destination', 'action']\n // E.g., English: ['action', 'patient', 'source', 'destination']\n canonicalOrder: SemanticRole[];\n\n // Special rules\n rules?: GrammarRule[];\n}\n\n/**\n * Pattern for transforming hyperscript structures\n */\nexport interface GrammarRule {\n name: string;\n description: string;\n\n // Pattern matching (in canonical English form)\n match: PatternMatcher;\n\n // How to transform for this language\n transform: PatternTransform;\n\n // Priority (higher = checked first)\n priority: number;\n}\n\n/**\n * Matches a hyperscript pattern\n */\nexport interface PatternMatcher {\n // Command type(s) this matches\n commands?: string[];\n\n // Required semantic roles\n requiredRoles: SemanticRole[];\n\n // Optional roles\n optionalRoles?: SemanticRole[];\n\n // Custom predicate for complex matching\n predicate?: (parsed: ParsedStatement) => boolean;\n}\n\n/**\n * Defines how to transform a matched pattern\n */\nexport interface PatternTransform {\n // Reorder roles for target language\n roleOrder: SemanticRole[];\n\n // Insert markers between roles\n insertMarkers?: boolean;\n\n // Custom transformation function\n custom?: (parsed: ParsedStatement, profile: LanguageProfile) => string;\n}\n\n// =============================================================================\n// Parsed Structures\n// =============================================================================\n\n/**\n * A parsed hyperscript statement broken into semantic components\n */\nexport interface ParsedStatement {\n type: 'event-handler' | 'command' | 'conditional' | 'loop';\n roles: Map<SemanticRole, ParsedElement>;\n original: string;\n}\n\n/**\n * A single element with its semantic role\n */\nexport interface ParsedElement {\n role: SemanticRole;\n value: string; // Original English value\n translated?: string; // Translated value\n isSelector?: boolean; // CSS selector (don't translate)\n isLiteral?: boolean; // Literal value (don't translate)\n}\n\n// =============================================================================\n// Universal Pattern Templates\n// =============================================================================\n\n/**\n * Universal templates for common hyperscript patterns\n * These define the semantic structure independent of surface form\n */\nexport const UNIVERSAL_PATTERNS = {\n // on click increment #count\n eventIncrement: {\n name: 'event-increment',\n roles: ['event', 'action', 'patient'] as SemanticRole[],\n english: 'on {event} {action} {patient}',\n },\n\n // put X into Y\n putInto: {\n name: 'put-into',\n roles: ['action', 'patient', 'destination'] as SemanticRole[],\n english: '{action} {patient} into {destination}',\n },\n\n // add .class to element\n addTo: {\n name: 'add-to',\n roles: ['action', 'patient', 'destination'] as SemanticRole[],\n english: '{action} {patient} to {destination}',\n },\n\n // toggle .class on element\n toggleOn: {\n name: 'toggle-on',\n roles: ['action', 'patient', 'destination'] as SemanticRole[],\n english: '{action} {patient} on {destination}',\n },\n\n // wait 2 seconds\n waitDuration: {\n name: 'wait-duration',\n roles: ['action', 'quantity'] as SemanticRole[],\n english: '{action} {quantity}',\n },\n\n // if condition then ... end\n conditional: {\n name: 'conditional',\n roles: ['action', 'condition'] as SemanticRole[],\n english: '{action} {condition} then ... end',\n },\n\n // fetch URL as type\n fetchAs: {\n name: 'fetch-as',\n roles: ['action', 'source', 'method'] as SemanticRole[],\n english: '{action} {source} as {method}',\n },\n\n // show element with animation\n showWith: {\n name: 'show-with',\n roles: ['action', 'patient', 'style'] as SemanticRole[],\n english: '{action} {patient} with {style}',\n },\n\n // transition property over duration\n transitionOver: {\n name: 'transition-over',\n roles: ['action', 'patient', 'duration'] as SemanticRole[],\n english: '{action} {patient} over {duration}',\n },\n} as const;\n\n// =============================================================================\n// Language Family Defaults\n// =============================================================================\n\n/**\n * Default profiles for major language families\n * Individual languages inherit and override these\n */\nexport const LANGUAGE_FAMILY_DEFAULTS: Record<string, Partial<LanguageProfile>> = {\n // Germanic (English, German, Dutch)\n germanic: {\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n canonicalOrder: [\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n\n // Romance (Spanish, French, Italian, Portuguese)\n romance: {\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n canonicalOrder: [\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n\n // Japonic (Japanese)\n japonic: {\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n canonicalOrder: [\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n 'action',\n ],\n },\n\n // Koreanic (Korean)\n koreanic: {\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n canonicalOrder: [\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n 'action',\n ],\n },\n\n // Turkic (Turkish, Azerbaijani)\n turkic: {\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n canonicalOrder: [\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n 'action',\n ],\n },\n\n // Sinitic (Chinese, Cantonese)\n sinitic: {\n wordOrder: 'SVO', // Topic-prominent, flexible\n adpositionType: 'preposition',\n morphology: 'isolating',\n direction: 'ltr',\n canonicalOrder: [\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n\n // Semitic (Arabic, Hebrew)\n semitic: {\n wordOrder: 'VSO',\n adpositionType: 'preposition',\n morphology: 'fusional', // Root-pattern system\n direction: 'rtl',\n canonicalOrder: [\n 'action',\n 'agent',\n 'patient',\n 'destination',\n 'source',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n\n // Austronesian (Indonesian, Tagalog)\n austronesian: {\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n canonicalOrder: [\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n\n // Quechuan (Quechua)\n quechuan: {\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative', // Actually polysynthetic but simplified\n direction: 'ltr',\n canonicalOrder: [\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n 'action',\n ],\n },\n\n // Bantu (Swahili)\n bantu: {\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n canonicalOrder: [\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n};\n\n// =============================================================================\n// Transformation Utilities\n// =============================================================================\n\n/**\n * Reorder semantic roles according to target language.\n * Includes a safety net to append any roles present in input\n * but missing from the target order, preventing data loss.\n */\nexport function reorderRoles(\n roles: Map<SemanticRole, ParsedElement>,\n targetOrder: SemanticRole[]\n): ParsedElement[] {\n const result: ParsedElement[] = [];\n const usedRoles = new Set<SemanticRole>();\n\n // 1. Add roles that are explicitly in the canonical order\n for (const role of targetOrder) {\n const element = roles.get(role);\n if (element) {\n result.push(element);\n usedRoles.add(role);\n }\n }\n\n // 2. Safety Net: Append any roles present in input but missing from target order\n // This prevents data loss (e.g., if 'manner' or 'instrument' isn't in the profile)\n for (const [role, element] of roles) {\n if (!usedRoles.has(role)) {\n result.push(element);\n }\n }\n\n return result;\n}\n\n/**\n * Insert grammatical markers between elements\n */\nexport function insertMarkers(\n elements: ParsedElement[],\n markers: GrammaticalMarker[],\n adpositionType: AdpositionType\n): string[] {\n const result: string[] = [];\n\n for (const element of elements) {\n let marker = markers.find(m => m.role === element.role);\n\n // A selector-shaped \"event\" is never a trigger. It's the dangling target of\n // a locative `on` (`set @role to \"alert\" on #sr-announce`) that\n // splitOnCommandBoundaries splits off as a headless pseudo-handler (set/put\n // are deliberately NOT in ON_TARGET_COMMANDS — dual-destination collision).\n // Emitting the event marker after it (ko 할 때, ja で, bn এ, tr de) plants a\n // spurious mid-stream event anchor in the emission; suppress the marker and\n // emit the bare selector, which body parsers skip harmlessly.\n if (marker?.role === 'event' && /^[#.<@[]/.test(element.translated || element.value)) {\n marker = undefined;\n }\n\n // A pronoun-valued \"duration\" is never a time expression. It's the target\n // phrase of `take … for me` (en maps `for` → duration lexically), kept\n // in-clause by splitOnCommandBoundaries' loop-head guard. Emitting the\n // duration marker after it (bn জন্য — also bn's `for` loop keyword) anchors\n // a spurious `for` command in the semantic parse; suppress the marker and\n // emit the bare pronoun, which take-pattern matchers skip harmlessly.\n if (marker?.role === 'duration' && /^(me|you|it)$/i.test(element.value)) {\n marker = undefined;\n }\n\n if (marker) {\n if (adpositionType === 'preposition') {\n // Marker before element: \"to element\"\n if (marker.form) result.push(marker.form);\n result.push(element.translated || element.value);\n } else if (adpositionType === 'postposition') {\n // Marker after element: \"element を\"\n result.push(element.translated || element.value);\n if (marker.form) result.push(marker.form);\n } else {\n result.push(element.translated || element.value);\n }\n } else {\n result.push(element.translated || element.value);\n }\n }\n\n return result;\n}\n\n/**\n * Intelligently joins tokens, handling agglutinative suffixes and prefixes.\n *\n * Rules:\n * 1. If a token ends with '-' (prefix marker), no space after it\n * 2. If a token starts with '-' (suffix marker), no space before it\n * 3. Removes the hyphen indicators from the final output\n *\n * Examples:\n * - ['#count', '-ta'] → '#countta' (Quechua accusative suffix)\n * - ['بـ-', 'الماوس'] → 'بـالماوس' (Arabic prefix attachment)\n * - ['value', 'を'] → 'value を' (Japanese particle, normal spacing)\n */\nexport function joinTokens(tokens: string[]): string {\n if (tokens.length === 0) return '';\n\n let result = '';\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n const nextToken = tokens[i + 1];\n\n // Check if current token is a prefix (ends with -)\n const isPrefix = token.endsWith('-');\n // Check if current token is a suffix (starts with -)\n const isSuffix = token.startsWith('-');\n\n // Get the display form (strip hyphen markers)\n let displayToken = token;\n if (isPrefix) displayToken = token.slice(0, -1);\n if (isSuffix) displayToken = token.substring(1);\n\n result += displayToken;\n\n // Determine if we need a space before the next token\n if (nextToken) {\n const nextIsSuffix = nextToken.startsWith('-');\n\n // Don't add space if:\n // - Current token is a prefix (ends with -)\n // - Next token is a suffix (starts with -)\n if (!isPrefix && !nextIsSuffix) {\n result += ' ';\n }\n }\n }\n\n return result;\n}\n\n/**\n * Transform a parsed statement to target language\n */\nexport function transformStatement(\n parsed: ParsedStatement,\n _sourceProfile: LanguageProfile,\n targetProfile: LanguageProfile\n): string {\n // 1. Reorder roles for target language\n const reordered = reorderRoles(parsed.roles, targetProfile.canonicalOrder);\n\n // 2. Insert grammatical markers\n const withMarkers = insertMarkers(reordered, targetProfile.markers, targetProfile.adpositionType);\n\n // 3. Join with intelligent spacing for agglutinative languages\n // (handles suffixes like -ta, prefixes like بـ-, etc.)\n return joinTokens(withMarkers);\n}\n","/**\n * Language Profiles Index\n *\n * Concrete implementations of LanguageProfile for supported languages.\n * Each profile inherits from a language family default and adds\n * language-specific markers and rules.\n */\n\nimport type { GrammarRule, LanguageProfile, SemanticRole } from '../types';\nimport { reorderRoles, insertMarkers } from '../types';\n\n// =============================================================================\n// English (Reference Language)\n// =============================================================================\n\nexport const englishProfile: LanguageProfile = {\n code: 'en',\n name: 'English',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: [\n 'event',\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n\n markers: [\n { form: 'on', role: 'event', position: 'preposition', required: true },\n { form: 'to', role: 'destination', position: 'preposition', required: false },\n { form: 'into', role: 'destination', position: 'preposition', required: false },\n { form: 'from', role: 'source', position: 'preposition', required: false },\n { form: 'with', role: 'style', position: 'preposition', required: false },\n { form: 'by', role: 'quantity', position: 'preposition', required: false },\n { form: 'as', role: 'method', position: 'preposition', required: false },\n { form: 'over', role: 'duration', position: 'preposition', required: false },\n { form: 'for', role: 'duration', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Shared SOV rule factory — fused `halt the event call fn()` heads (Family H,\n// docs-internal/HANDOFF_r1-deferred-tail.md)\n// =============================================================================\n\n/**\n * The form-submit-prevent head fuses TWO juxtaposed commands (`on submit halt\n * the event call validateForm()`): parseEventHandler reads `halt` as the\n * action and sweeps `the event call validateForm()` into ONE patient blob, so\n * the SOV patient-first reorder fronts the whole blob — halt's operand lands\n * clause-initial far from its verb, and call's operand rides inside the blob\n * (tr bound validateForm() to halt and the event to call). No roleOrder can\n * fix a single-blob patient; this custom render splits the blob at the\n * language's call verb and emits both commands verb-final, joined by the\n * then-connective (the boundary the semantic compound-splitter already\n * respects — the event-debounce geometry):\n *\n * `<halt-operand> <pm> <event> <em> <halt-verb> <conn> <call-args> <pm> <call-verb>`\n *\n * The trailing EVENTBLOCKPLACEHOLDER (tryTransformEventWithBlockBody's mask\n * for an `if … end` tail) is re-emitted clause-final so the caller's\n * strip-and-append keeps working.\n */\nfunction sovHaltCallFusedRule(cfg: {\n callVerb: string; // the dictionary's call rendering — the blob split point\n patientMarker: string;\n eventMarker: string;\n connective: string;\n}): GrammarRule {\n return {\n name: 'halt-call-fused-verb-final',\n description: 'Split the swept `halt <operand> call <args>` blob; both verbs clause-final',\n priority: 95,\n match: {\n commands: ['halt'],\n requiredRoles: ['action', 'event', 'patient'],\n // Only the juxtaposed-call blob: a plain `halt`/`halt the event` handler\n // keeps its default render. The translated call verb must be present to\n // split on — if the dictionary emission drifts, the rule stands down\n // rather than emitting a mangled clause.\n predicate: parsed => {\n const p = parsed.roles.get('patient');\n return (\n !!p && /\\bcall\\b/.test(p.value) && !!p.translated && p.translated.includes(cfg.callVerb)\n );\n },\n },\n transform: {\n roleOrder: [], // unused — custom takes over\n custom: parsed => {\n const p = parsed.roles.get('patient')!;\n const ev = parsed.roles.get('event')!;\n const act = parsed.roles.get('action')!;\n let blob = (p.translated ?? p.value).trim();\n const PH = 'EVENTBLOCKPLACEHOLDER';\n let tail = '';\n if (blob.endsWith(PH)) {\n blob = blob.slice(0, -PH.length).trim();\n tail = ` ${PH}`;\n }\n const at = blob.indexOf(cfg.callVerb);\n const haltOperand = blob.slice(0, at).trim();\n const callArgs = blob.slice(at + cfg.callVerb.length).trim();\n return (\n [\n haltOperand,\n cfg.patientMarker,\n ev.translated ?? ev.value,\n cfg.eventMarker,\n act.translated ?? act.value,\n cfg.connective,\n callArgs,\n cfg.patientMarker,\n cfg.callVerb,\n ].join(' ') + tail\n );\n },\n },\n };\n}\n\n// =============================================================================\n// Shared SOV rule factory — pick range rows (`pick characters 0 to 5 of #note`,\n// docs-internal/HANDOFF_pick-text-range-arc3.md)\n// =============================================================================\n\n/**\n * The canonical pick range row decomposes in parseStatement/parseEventHandler as\n * patient=`characters 0` + destination=`5 of #note` (the range's `to` reads as a\n * destination marker), so the default SOV reorder scatters the range across the\n * clause — ja emitted `文字 0 を クリック で 選択 5 の #note に` with the `5`\n * stranded after the verb, unparseable in every SOV language. No roleOrder can\n * reunite a range split across two roles; this custom render reassembles the\n * canonical surface and emits the SOV convention shape (big patient phrase\n * first, verb final):\n *\n * `<root> <gen> <unit> <a> <sep> <b> <pm> [<event> <em>] <verb>`\n *\n * e.g. ja `#note の 文字 0 から 5 を クリック で 選択`. The paired semantic\n * pick pattern (patterns/pick.ts VERB_FINAL_SPECS) parses exactly this shape\n * back, with the range fold normalizing `<a> <sep> <b>` to English `a to b` —\n * the two sides co-evolve per the i18n-renders-semantic-patterns-coevolve\n * lesson; change one and you must re-probe the other.\n *\n * Gated tight to the numeric-endpoint corpus shape (`<unit> <int>` patient +\n * `<int> of <root>` destination); word endpoints (`start`/`end`), modes\n * (`inclusive`) and anything else fall through to the default render unchanged.\n */\nfunction sovPickRangeRule(cfg: {\n /** Genitive joiner between the root and the unit word (ja `の`, hi `का`). */\n genitive: string;\n /** Range separator between the two endpoints (ja `から`, hi `से`). */\n rangeSep: string;\n /** Patient/object marker after the range (ja `を`, hi `को`). */\n patientMarker: string;\n /** Event marker after the event word (ja `で`, hi `पर`). */\n eventMarker: string;\n}): GrammarRule {\n return {\n name: 'pick-range-verb-final',\n description: 'Reassemble the pick range (unit + endpoints + root) adjacent, verb-final',\n priority: 95,\n match: {\n commands: ['pick'],\n requiredRoles: ['action', 'patient', 'destination'],\n predicate: parsed => {\n const p = parsed.roles.get('patient');\n const d = parsed.roles.get('destination');\n return (\n !!p &&\n !!d &&\n /^\\S+\\s+\\d+$/.test(p.value.trim()) &&\n /^\\d+\\s+of\\s+\\S+$/.test(d.value.trim())\n );\n },\n },\n transform: {\n roleOrder: [], // unused — custom takes over\n custom: parsed => {\n const p = parsed.roles.get('patient')!;\n const d = parsed.roles.get('destination')!;\n const act = parsed.roles.get('action')!;\n const ev = parsed.roles.get('event');\n // Unit word from the TRANSLATED patient (`文字 0` → `文字`); endpoints\n // and root from the UNTRANSLATED values — integers and selectors are\n // language-invariant by construction (the R3 rule).\n const pParts = (p.translated ?? p.value).trim().split(/\\s+/);\n const a = pParts[pParts.length - 1]!;\n const unit = pParts.slice(0, -1).join(' ');\n const dMatch = d.value.trim().match(/^(\\d+)\\s+of\\s+(\\S+)$/)!;\n const b = dMatch[1]!;\n const root = dMatch[2]!;\n const verb = act.translated ?? act.value;\n const head = [root, cfg.genitive, unit, a, cfg.rangeSep, b, cfg.patientMarker];\n const eventPart = ev ? [ev.translated ?? ev.value, cfg.eventMarker] : [];\n return [...head, ...eventPart, verb].join(' ');\n },\n },\n };\n}\n\n// =============================================================================\n// Japanese (SOV, Postpositions)\n// =============================================================================\n\nexport const japaneseProfile: LanguageProfile = {\n code: 'ja',\n name: '日本語',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n // Japanese: Object comes before verb, markers follow nouns\n // \"on click increment #count\" → \"#count を クリック で 増加\"\n canonicalOrder: ['patient', 'event', 'action'],\n\n markers: [\n // Particles (postpositions)\n { form: 'を', role: 'patient', position: 'postposition', required: true },\n { form: 'に', role: 'destination', position: 'postposition', required: true },\n { form: 'から', role: 'source', position: 'postposition', required: true },\n { form: 'で', role: 'event', position: 'postposition', required: true },\n { form: 'で', role: 'style', position: 'postposition', required: false },\n { form: 'と', role: 'style', position: 'postposition', required: false },\n { form: 'へ', role: 'destination', position: 'postposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler',\n description: 'Transform event handlers to Japanese SOV order',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n optionalRoles: ['patient'],\n },\n transform: {\n // #count を クリック で 増加\n roleOrder: ['patient', 'event', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'put-into',\n description: 'Transform put X into Y to Japanese order',\n priority: 90,\n match: {\n commands: ['put', '置く'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // X を Y に 置く\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'set-to',\n description: 'Transform set X to Y to Japanese verb-final order',\n priority: 90,\n match: {\n commands: ['set', '設定'],\n requiredRoles: ['action', 'patient', 'destination'],\n // Skip a set whose value swept up a trailing block terminator (`set X to Y\n // end` — the body of an inline `if … then set … end`): verb-final reorder\n // would push the verb past `end` and break the block. These parse fine\n // verb-medial (the default).\n predicate: parsed => !/(^|\\s)end$/i.test((parsed.original ?? '').trim()),\n },\n transform: {\n // X を Y に 設定 — verb-final, matching the generated SOV set pattern\n // (markerOverride: を on the destination / に on the value). Default reorder\n // emitted verb-MEDIAL (`X を 設定 Y に`), unmatched by any set pattern.\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'bind-to',\n description: 'Transform bind $var to #el to Japanese verb-final order',\n priority: 90,\n match: {\n commands: ['bind', 'バインド'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // $var を #el に バインド\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n // the イベント を 送信 で 停止 それから validateForm() を 呼び出し\n sovHaltCallFusedRule({\n callVerb: '呼び出し',\n patientMarker: 'を',\n eventMarker: 'で',\n connective: 'それから',\n }),\n // #note の 文字 0 から 5 を クリック で 選択\n sovPickRangeRule({\n genitive: 'の',\n rangeSep: 'から',\n patientMarker: 'を',\n eventMarker: 'で',\n }),\n ],\n};\n\n// =============================================================================\n// Korean (SOV, Postpositions - similar to Japanese)\n// =============================================================================\n\nexport const koreanProfile: LanguageProfile = {\n code: 'ko',\n name: '한국어',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n canonicalOrder: ['patient', 'event', 'action'],\n\n markers: [\n // Korean particles (with vowel harmony variants)\n { form: '를', role: 'patient', position: 'postposition', required: true, alternatives: ['을'] },\n { form: '에', role: 'destination', position: 'postposition', required: true },\n { form: '에서', role: 'source', position: 'postposition', required: true },\n // Event marker — the semantic *-event-ko-sov-* patterns anchor on 할 때\n // (the generator profile's eventMarker); without it every ko handler\n // emitted a bare event name no fused pattern could anchor.\n { form: '할 때', role: 'event', position: 'postposition', required: true },\n {\n form: '로',\n role: 'style',\n position: 'postposition',\n required: false,\n alternatives: ['으로'],\n },\n { form: '와', role: 'style', position: 'postposition', required: false, alternatives: ['과'] },\n {\n form: '로',\n role: 'method',\n position: 'postposition',\n required: false,\n alternatives: ['으로'],\n }, // \"as\" - same as instrument\n ],\n\n rules: [\n {\n name: 'event-handler',\n description: 'Transform event handlers to Korean SOV order',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n },\n transform: {\n roleOrder: ['patient', 'event', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'put-into',\n description: 'Transform put X into Y to Korean verb-final order',\n priority: 90,\n match: {\n commands: ['put', '넣다'],\n requiredRoles: ['action', 'patient', 'destination'],\n // Standalone put only (e.g. a then-chain clause): an event handler whose\n // action is `put` must keep the event mid-stream, so don't verb-final it.\n predicate: parsed => !parsed.roles.has('event'),\n },\n transform: {\n // X 를 Y 에 넣다 (patient, destination, verb-last)\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'set-to',\n description: 'Transform set X to Y to Korean verb-final order',\n priority: 90,\n match: {\n commands: ['set', '설정'],\n requiredRoles: ['action', 'patient', 'destination'],\n // Skip a set whose value swept up a trailing block terminator (`set X to Y\n // end` — the body of an inline `if … then set … end`): verb-final reorder\n // would push the verb past `end` and break the block. These parse fine\n // verb-medial (the default).\n predicate: parsed => !/(^|\\s)end$/i.test((parsed.original ?? '').trim()),\n },\n transform: {\n // X 를 Y 에 설정 — verb-final, matching the generated SOV set pattern.\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'bind-to',\n description: 'Transform bind $var to #el to Korean verb-final order',\n priority: 90,\n match: {\n commands: ['bind', '바인드'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // $var 를 #el 에 바인드\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n // the 이벤트 를 제출 할 때 정지 그러면 validateForm() 를 호출\n sovHaltCallFusedRule({\n callVerb: '호출',\n patientMarker: '를',\n eventMarker: '할 때',\n connective: '그러면',\n }),\n // #note 의 문자 0 부터 5 를 클릭 할 때 선택\n sovPickRangeRule({\n genitive: '의',\n rangeSep: '부터',\n patientMarker: '를',\n eventMarker: '할 때',\n }),\n ],\n};\n\n// =============================================================================\n// Chinese (SVO, Topic-Prominent)\n// =============================================================================\n\nexport const chineseProfile: LanguageProfile = {\n code: 'zh',\n name: '中文',\n\n wordOrder: 'SVO', // But topic-prominent allows flexibility\n adpositionType: 'preposition',\n morphology: 'isolating',\n direction: 'ltr',\n\n // Chinese typically uses topic-comment structure\n // Can front the object for emphasis: \"#count 在 点击时 增加\"\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: '当', role: 'event', position: 'preposition', required: true },\n { form: '时', role: 'event', position: 'postposition', required: true }, // Circumfix with 当\n { form: '把', role: 'patient', position: 'preposition', required: false }, // BA construction\n { form: '到', role: 'destination', position: 'preposition', required: false },\n { form: '从', role: 'source', position: 'preposition', required: false },\n { form: '用', role: 'style', position: 'preposition', required: false },\n { form: '的', role: 'method', position: 'postposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler-standard',\n description: 'Standard event handler: 当 X 时 Y',\n priority: 100,\n match: {\n // Don't match commands - match by statement type having event role\n requiredRoles: ['event', 'action'],\n },\n transform: {\n // 当 EVENT 时 ACTION [patient] [destination] [source] [style] [method] ...\n roleOrder: ['event', 'action', 'patient'],\n insertMarkers: true,\n custom: (parsed, profile) => {\n // Handle 当...时 circumfix wrapping the event, then emit the action,\n // then any remaining roles in canonical order with their markers.\n // Earlier this function emitted only event/action/patient and silently\n // dropped destination, source, style, etc. — that produced truncated\n // output for `send X to Y`, `fetch /api with method:...`, etc.\n const event = parsed.roles.get('event');\n const action = parsed.roles.get('action');\n\n // Build the post-action role list using the canonical order minus\n // event/action, plus a safety net for any roles not in the order.\n const remaining = new Map(parsed.roles);\n remaining.delete('event');\n remaining.delete('action');\n\n const remainingOrder: SemanticRole[] = (profile.canonicalOrder || []).filter(\n r => r !== 'event' && r !== 'action'\n );\n const reordered = reorderRoles(remaining, remainingOrder);\n const markedTokens = insertMarkers(reordered, profile.markers, profile.adpositionType);\n\n const parts: string[] = ['当', event?.translated || event?.value || '', '时'];\n if (action) parts.push(action.translated || action.value);\n parts.push(...markedTokens);\n\n return parts.filter(Boolean).join(' ');\n },\n },\n },\n {\n name: 'ba-construction',\n description: 'BA construction for object-fronting: 把 X Y',\n priority: 80,\n match: {\n commands: ['put', 'set', 'move'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // 把 X 放 到 Y\n roleOrder: ['patient', 'action', 'destination'],\n insertMarkers: true,\n },\n },\n {\n name: 'bind-to',\n description: 'Bind binds a variable to an element: 绑定 X 到 Y (no 把)',\n priority: 90,\n match: {\n commands: ['bind', '绑定'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // Plain SVO without the 把 object-fronting: the bound variable is the\n // semantic destination (not a fronted patient), and `到` marks the\n // target element. Custom so the patient does not pick up 把.\n roleOrder: ['action', 'patient', 'destination'],\n custom: parsed => {\n const action = parsed.roles.get('action');\n const patient = parsed.roles.get('patient');\n const destination = parsed.roles.get('destination');\n const verb = action?.translated || action?.value || '';\n const v = patient?.translated || patient?.value || '';\n const d = destination?.translated || destination?.value || '';\n return [verb, v, '到', d].filter(Boolean).join(' ');\n },\n },\n },\n ],\n};\n\n// =============================================================================\n// Arabic (VSO, RTL)\n// =============================================================================\n\nexport const arabicProfile: LanguageProfile = {\n code: 'ar',\n name: 'العربية',\n\n wordOrder: 'VSO',\n adpositionType: 'preposition',\n morphology: 'fusional', // Root-pattern morphology\n direction: 'rtl',\n\n // Arabic VSO: Verb first, then subject, then object\n canonicalOrder: ['action', 'agent', 'patient', 'destination', 'source'],\n\n markers: [\n { form: 'عند', role: 'event', position: 'preposition', required: true },\n { form: 'إلى', role: 'destination', position: 'preposition', required: false },\n { form: 'في', role: 'destination', position: 'preposition', required: false },\n { form: 'من', role: 'source', position: 'preposition', required: false },\n // بـ- notation: trailing hyphen indicates prefix that attaches without space\n { form: 'بـ-', role: 'style', position: 'preposition', required: false },\n { form: 'مع', role: 'style', position: 'preposition', required: false },\n // كـ- notation: \"as/like\" prefix for manner\n { form: 'كـ-', role: 'method', position: 'preposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler-vso',\n description: 'VSO event handler: VERB TARGET عند EVENT',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n },\n transform: {\n // زِد #count عند النقر (increment #count on click)\n roleOrder: ['action', 'patient', 'event'],\n insertMarkers: true,\n },\n },\n ],\n};\n\n// =============================================================================\n// Turkish (SOV, Agglutinative)\n// =============================================================================\n\nexport const turkishProfile: LanguageProfile = {\n code: 'tr',\n name: 'Türkçe',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n // NOTE: roles absent from this order are safety-net-appended AFTER the verb\n // by reorderRoles. That stranding is what the semantic parser's generated\n // patterns + reclaim tolerances were built around, so extending this order\n // wholesale re-renders (and breaks) the whole tr corpus — fix individual\n // defective shapes with per-command `rules` below instead (see the\n // wait/repeat-until rules from the transformer-rendering arc).\n canonicalOrder: ['patient', 'event', 'action'],\n\n markers: [\n // Turkish case suffixes - using spaced form for tokenization\n // Note: Real Turkish attaches these as suffixes, but we use spaces\n // so the semantic tokenizer can properly parse them\n {\n form: 'i',\n role: 'patient',\n position: 'postposition',\n required: true,\n alternatives: ['ı', 'u', 'ü'],\n },\n {\n form: 'e',\n role: 'destination',\n position: 'postposition',\n required: true,\n alternatives: ['a'],\n },\n {\n form: 'den',\n role: 'source',\n position: 'postposition',\n required: true,\n alternatives: ['dan'],\n },\n { form: 'de', role: 'event', position: 'postposition', required: true, alternatives: ['da'] },\n { form: 'ile', role: 'style', position: 'postposition', required: false },\n { form: 'olarak', role: 'method', position: 'postposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler-sov',\n description: 'SOV event handler',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n },\n transform: {\n roleOrder: ['patient', 'event', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'put-into',\n description: 'Transform put X into Y to Turkish verb-final order',\n priority: 90,\n match: {\n commands: ['put', 'koy'],\n requiredRoles: ['action', 'patient', 'destination'],\n // Standalone put only (e.g. a then-chain clause): an event handler whose\n // action is `put` must keep the event mid-stream, so don't verb-final it.\n predicate: parsed => !parsed.roles.has('event'),\n },\n transform: {\n // X i Y e koy (patient, destination, verb-last)\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'set-to',\n description: 'Transform set X to Y to Turkish verb-final order',\n priority: 90,\n match: {\n commands: ['set', 'ayarla'],\n requiredRoles: ['action', 'patient', 'destination'],\n // Skip a set whose value swept up a trailing block terminator (`set X to Y\n // end` — the body of an inline `if … then set … end`): verb-final reorder\n // would push the verb past `end` and break the block. These parse fine\n // verb-medial (the default).\n predicate: parsed => !/(^|\\s)end$/i.test((parsed.original ?? '').trim()),\n },\n transform: {\n // X i Y e ayarla — verb-final, matching the generated SOV set pattern.\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'bind-to',\n description: 'Transform bind $var to #el to Turkish verb-final order',\n priority: 90,\n match: {\n commands: ['bind'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // $var i #el e bağla\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'wait-oblique-verb-final',\n description: \"Keep wait's from-phrase and or-run inside the clause, verb-final\",\n priority: 90,\n match: {\n commands: ['wait', 'bekle'],\n // Only the multi-argument form (`wait for X or Y from Z`) strands:\n // without this rule the safety-net appends duration+source AFTER the\n // verb (`bekle … belge den`), and the stranded from-phrase is captured\n // by the NEXT statement as a junk trigger event (behavior-sortable R3).\n requiredRoles: ['action', 'duration', 'source'],\n // Never reorder a fused single-line handler — its event must stay put.\n predicate: parsed => !parsed.roles.has('event'),\n },\n transform: {\n // belge den pointermove(clientY) veya pointerup(clientY) bekle\n roleOrder: ['patient', 'source', 'duration', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'repeat-until-event-verb-final',\n description: \"Keep repeat-until-event's from-phrase before the verb\",\n priority: 90,\n match: {\n commands: ['repeat', 'tekrarla'],\n requiredRoles: ['action', 'patient', 'source'],\n // Gate to the until-event head; `repeat for item in .items` also\n // carries patient+source and must keep its (parseable) default order.\n predicate: parsed => /^repeat\\s+until\\s+event\\b/i.test((parsed.original ?? '').trim()),\n },\n transform: {\n // kadar olay pointerup i belge den tekrarla — matched semantic-side by\n // repeat-tr-until-head-verb-final.\n roleOrder: ['patient', 'source', 'action'],\n insertMarkers: true,\n },\n },\n // the olay i gönder de durdur ardından validateForm() i çağır\n sovHaltCallFusedRule({\n callVerb: 'çağır',\n patientMarker: 'i',\n eventMarker: 'de',\n connective: 'ardından',\n }),\n // #note nin karakterler 0 ile 5 i tıklama de seç\n sovPickRangeRule({\n genitive: 'nin',\n rangeSep: 'ile',\n patientMarker: 'i',\n eventMarker: 'de',\n }),\n ],\n};\n\n// =============================================================================\n// Spanish (SVO, Romance)\n// =============================================================================\n\nexport const spanishProfile: LanguageProfile = {\n code: 'es',\n name: 'Español',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n // Event: \"En hacer clic\" or \"Al hacer clic\"\n { form: 'en', role: 'event', position: 'preposition', required: true },\n // Destination: Prioritize 'a' over 'en' to avoid collision with event marker\n { form: 'a', role: 'destination', position: 'preposition', required: false },\n { form: 'hacia', role: 'destination', position: 'preposition', required: false }, // \"Towards\"\n { form: 'de', role: 'source', position: 'preposition', required: false },\n { form: 'con', role: 'style', position: 'preposition', required: false },\n { form: 'por', role: 'quantity', position: 'preposition', required: false },\n { form: 'como', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// German (SVO, Germanic)\n// =============================================================================\n\nexport const germanProfile: LanguageProfile = {\n code: 'de',\n name: 'Deutsch',\n\n wordOrder: 'SVO', // V2 in main clauses, but SVO for our purposes\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'bei', role: 'event', position: 'preposition', required: true },\n { form: 'zu', role: 'destination', position: 'preposition', required: false },\n { form: 'in', role: 'destination', position: 'preposition', required: false },\n { form: 'von', role: 'source', position: 'preposition', required: false },\n { form: 'aus', role: 'source', position: 'preposition', required: false },\n { form: 'mit', role: 'style', position: 'preposition', required: false },\n { form: 'um', role: 'quantity', position: 'preposition', required: false },\n { form: 'als', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// French (SVO, Romance)\n// =============================================================================\n\nexport const frenchProfile: LanguageProfile = {\n code: 'fr',\n name: 'Français',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'sur', role: 'event', position: 'preposition', required: true },\n { form: 'à', role: 'destination', position: 'preposition', required: false },\n { form: 'dans', role: 'destination', position: 'preposition', required: false },\n { form: 'de', role: 'source', position: 'preposition', required: false },\n { form: 'avec', role: 'style', position: 'preposition', required: false },\n { form: 'par', role: 'quantity', position: 'preposition', required: false },\n { form: 'comme', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Portuguese (SVO, Romance)\n// =============================================================================\n\nexport const portugueseProfile: LanguageProfile = {\n code: 'pt',\n name: 'Português',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'em', role: 'event', position: 'preposition', required: true },\n { form: 'para', role: 'destination', position: 'preposition', required: false },\n { form: 'em', role: 'destination', position: 'preposition', required: false },\n { form: 'de', role: 'source', position: 'preposition', required: false },\n { form: 'com', role: 'style', position: 'preposition', required: false },\n { form: 'por', role: 'quantity', position: 'preposition', required: false },\n { form: 'como', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Indonesian (SVO, Austronesian)\n// =============================================================================\n\nexport const indonesianProfile: LanguageProfile = {\n code: 'id',\n name: 'Bahasa Indonesia',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'pada', role: 'event', position: 'preposition', required: true },\n { form: 'ke', role: 'destination', position: 'preposition', required: false },\n { form: 'dari', role: 'source', position: 'preposition', required: false },\n { form: 'dengan', role: 'style', position: 'preposition', required: false },\n { form: 'sebagai', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Malay (SVO, Austronesian) — grammar mirrors Indonesian (shared function words:\n// pada / ke / dari / dengan / sebagai). Without this profile the transformer threw\n// \"Unknown target locale: ms\", so no ms translation could be generated at all.\n// =============================================================================\n\nexport const malayProfile: LanguageProfile = {\n code: 'ms',\n name: 'Bahasa Melayu',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n // ms marks the event clause with `apabila` (\"when/on\") — matching the semantic\n // ms event-handler pattern (`apabila {event} {body}`) and the ms dict's\n // `on: apabila`. (Indonesian uses `pada` here; the two diverge on the event head.)\n { form: 'apabila', role: 'event', position: 'preposition', required: true },\n { form: 'ke', role: 'destination', position: 'preposition', required: false },\n { form: 'dari', role: 'source', position: 'preposition', required: false },\n { form: 'dengan', role: 'style', position: 'preposition', required: false },\n { form: 'sebagai', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Quechua (SOV, Quechuan)\n// =============================================================================\n\nexport const quechuaProfile: LanguageProfile = {\n code: 'qu',\n name: 'Runasimi',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative', // Actually polysynthetic\n direction: 'ltr',\n\n // NOTE: roles absent from this order are safety-net-appended AFTER the verb\n // (see the Turkish profile note) — extend via per-command `rules`, not here.\n canonicalOrder: ['patient', 'source', 'destination', 'event', 'action'],\n\n markers: [\n // Quechua case suffixes - using spaced form for tokenization\n // Note: Real Quechua attaches these as suffixes, but we use spaces\n // so the semantic tokenizer can properly parse them\n { form: 'ta', role: 'patient', position: 'postposition', required: true },\n { form: 'man', role: 'destination', position: 'postposition', required: true },\n { form: 'manta', role: 'source', position: 'postposition', required: true },\n { form: 'pi', role: 'event', position: 'postposition', required: true },\n { form: 'wan', role: 'style', position: 'postposition', required: false },\n { form: 'hina', role: 'method', position: 'postposition', required: false }, // \"as/like\"\n ],\n\n rules: [\n {\n name: 'wait-oblique-verb-final',\n description: \"Keep wait's from-phrase and or-run inside the clause, verb-final\",\n priority: 90,\n match: {\n commands: ['wait', 'suyay'],\n // Only `wait for X or Y from Z` strands: duration is missing from\n // canonicalOrder, so the or-run lands AFTER the verb and the next\n // trigger glues it into its event (behavior-sortable R3). See the\n // matching Turkish rule.\n requiredRoles: ['action', 'duration', 'source'],\n predicate: parsed => !parsed.roles.has('event'),\n },\n transform: {\n // qillqa manta pointermove(clientY) utaq pointerup(clientY) suyay\n roleOrder: ['patient', 'source', 'duration', 'action'],\n insertMarkers: true,\n },\n },\n // the ruway ta kachay pi sayay chayqa validateForm() ta qayay\n sovHaltCallFusedRule({\n callVerb: 'qayay',\n patientMarker: 'ta',\n eventMarker: 'pi',\n connective: 'chayqa',\n }),\n // #note pa sanampa 0 kama 5 ta ñitiy pi akllay\n sovPickRangeRule({\n genitive: 'pa',\n rangeSep: 'kama',\n patientMarker: 'ta',\n eventMarker: 'pi',\n }),\n ],\n};\n\n// =============================================================================\n// Swahili (SVO, Bantu)\n// =============================================================================\n\nexport const swahiliProfile: LanguageProfile = {\n code: 'sw',\n name: 'Kiswahili',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'kwenye', role: 'event', position: 'preposition', required: true },\n { form: 'kwa', role: 'destination', position: 'preposition', required: false },\n { form: 'kutoka', role: 'source', position: 'preposition', required: false },\n { form: 'na', role: 'style', position: 'preposition', required: false },\n // `kuwa`, not `kama`: sw `kama` is the IF keyword — rendering the method\n // role (\"as X\") with it grew a phantom `if` at semantic parse time. See the\n // matching comment in dictionaries/sw.ts (modifiers.as).\n { form: 'kuwa', role: 'method', position: 'preposition', required: false }, // \"as/become\"\n ],\n};\n\n// =============================================================================\n// Bengali (SOV, Postpositions - similar to Japanese/Korean)\n// =============================================================================\n\nexport const bengaliProfile: LanguageProfile = {\n code: 'bn',\n name: 'বাংলা',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n // Bengali: Object comes before verb, postpositions follow nouns\n // \"on click increment #count\" → \"#count কে ক্লিক এ বৃদ্ধি\"\n // NOTE: roles absent from this order are safety-net-appended AFTER the verb\n // (see the Turkish profile note) — extend via per-command `rules`, not here.\n canonicalOrder: ['patient', 'event', 'action'],\n\n markers: [\n // Postpositions\n { form: 'কে', role: 'patient', position: 'postposition', required: true },\n { form: 'তে', role: 'destination', position: 'postposition', required: true },\n { form: 'এ', role: 'event', position: 'postposition', required: true },\n { form: 'থেকে', role: 'source', position: 'postposition', required: true },\n { form: 'দিয়ে', role: 'style', position: 'postposition', required: false },\n { form: 'জন্য', role: 'duration', position: 'postposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler',\n description: 'Transform event handlers to Bengali SOV order',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n optionalRoles: ['patient'],\n },\n transform: {\n // #count কে ক্লিক এ বৃদ্ধি\n roleOrder: ['patient', 'event', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'put-into',\n description: 'Transform put X into Y to Bengali verb-final order',\n priority: 90,\n match: {\n commands: ['put', 'রাখুন'],\n requiredRoles: ['action', 'patient', 'destination'],\n // Standalone put only (e.g. a then-chain clause): an event handler whose\n // action is `put` must keep the event mid-stream, so don't verb-final it.\n predicate: parsed => !parsed.roles.has('event'),\n },\n transform: {\n // X কে Y তে রাখুন (patient, destination, verb-last)\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'set-to',\n description: 'Transform set X to Y to Bengali verb-final order',\n priority: 90,\n match: {\n commands: ['set', 'সেট'],\n requiredRoles: ['action', 'patient', 'destination'],\n // Skip a set whose value swept up a trailing block terminator (`set X to Y\n // end` — the body of an inline `if … then set … end`): verb-final reorder\n // would push the verb past `end` and break the block. These parse fine\n // verb-medial (the default).\n predicate: parsed => !/(^|\\s)end$/i.test((parsed.original ?? '').trim()),\n },\n transform: {\n // X কে Y তে সেট — verb-final, matching the generated SOV set pattern.\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'bind-to',\n description: 'Transform bind $var to #el to Bengali verb-final order',\n priority: 90,\n match: {\n commands: ['bind', 'বাইন্ড'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // $var কে #el তে বাইন্ড\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n // the ঘটনা কে জমা এ থামুন তারপর validateForm() কে কল\n sovHaltCallFusedRule({\n callVerb: 'কল',\n patientMarker: 'কে',\n eventMarker: 'এ',\n connective: 'তারপর',\n }),\n // #note র অক্ষর 0 থেকে 5 কে ক্লিক এ বাছুন\n sovPickRangeRule({\n genitive: 'র',\n rangeSep: 'থেকে',\n patientMarker: 'কে',\n eventMarker: 'এ',\n }),\n ],\n};\n\n// =============================================================================\n// Italian (SVO, Romance)\n// =============================================================================\n\nexport const italianProfile: LanguageProfile = {\n code: 'it',\n name: 'Italiano',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'su', role: 'event', position: 'preposition', required: true },\n { form: 'in', role: 'destination', position: 'preposition', required: false },\n { form: 'a', role: 'destination', position: 'preposition', required: false },\n { form: 'da', role: 'source', position: 'preposition', required: false },\n { form: 'di', role: 'source', position: 'preposition', required: false },\n { form: 'con', role: 'style', position: 'preposition', required: false },\n { form: 'come', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Russian (SVO, Slavic)\n// =============================================================================\n\nexport const russianProfile: LanguageProfile = {\n code: 'ru',\n name: 'Русский',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'при', role: 'event', position: 'preposition', required: true },\n { form: 'в', role: 'destination', position: 'preposition', required: false },\n { form: 'на', role: 'destination', position: 'preposition', required: false },\n { form: 'к', role: 'destination', position: 'preposition', required: false },\n { form: 'из', role: 'source', position: 'preposition', required: false },\n { form: 'от', role: 'source', position: 'preposition', required: false },\n { form: 'с', role: 'source', position: 'preposition', required: false },\n { form: 'с', role: 'style', position: 'preposition', required: false },\n { form: 'со', role: 'style', position: 'preposition', required: false },\n { form: 'как', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Ukrainian (SVO, Slavic)\n// =============================================================================\n\nexport const ukrainianProfile: LanguageProfile = {\n code: 'uk',\n name: 'Українська',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'при', role: 'event', position: 'preposition', required: true },\n { form: 'в', role: 'destination', position: 'preposition', required: false },\n { form: 'на', role: 'destination', position: 'preposition', required: false },\n { form: 'до', role: 'destination', position: 'preposition', required: false },\n { form: 'з', role: 'source', position: 'preposition', required: false },\n { form: 'від', role: 'source', position: 'preposition', required: false },\n { form: 'із', role: 'source', position: 'preposition', required: false },\n { form: 'з', role: 'style', position: 'preposition', required: false },\n { form: 'із', role: 'style', position: 'preposition', required: false },\n { form: 'як', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Vietnamese (SVO, Isolating)\n// =============================================================================\n\nexport const vietnameseProfile: LanguageProfile = {\n code: 'vi',\n name: 'Tiếng Việt',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'isolating',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'khi', role: 'event', position: 'preposition', required: true },\n { form: 'vào', role: 'destination', position: 'preposition', required: false },\n { form: 'cho', role: 'destination', position: 'preposition', required: false },\n { form: 'đến', role: 'destination', position: 'preposition', required: false },\n { form: 'từ', role: 'source', position: 'preposition', required: false },\n { form: 'khỏi', role: 'source', position: 'preposition', required: false },\n { form: 'với', role: 'style', position: 'preposition', required: false },\n { form: 'như', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Hindi (SOV, Postpositions)\n// =============================================================================\n\nexport const hindiProfile: LanguageProfile = {\n code: 'hi',\n name: 'हिन्दी',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n // Hindi: Object comes before verb, postpositions follow nouns\n // \"on click increment #count\" → \"#count को क्लिक पर बढ़ाएं\"\n canonicalOrder: ['patient', 'event', 'action'],\n\n markers: [\n { form: 'को', role: 'patient', position: 'postposition', required: true },\n { form: 'में', role: 'destination', position: 'postposition', required: true },\n { form: 'पर', role: 'destination', position: 'postposition', required: false },\n { form: 'पर', role: 'event', position: 'postposition', required: true },\n { form: 'से', role: 'source', position: 'postposition', required: true },\n { form: 'से', role: 'style', position: 'postposition', required: false },\n { form: 'साथ', role: 'style', position: 'postposition', required: false },\n { form: 'के रूप में', role: 'method', position: 'postposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler',\n description: 'Transform event handlers to Hindi SOV order',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n optionalRoles: ['patient'],\n },\n transform: {\n // #count को क्लिक पर बढ़ाएं\n roleOrder: ['patient', 'event', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'put-into',\n description: 'Transform put X into Y to Hindi verb-final order',\n priority: 90,\n match: {\n commands: ['put', 'रखें'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // \"hi\" को #out में रखें\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'set-to',\n description: 'Transform set X to Y to Hindi verb-final order',\n priority: 90,\n match: {\n commands: ['set', 'सेट'],\n requiredRoles: ['action', 'patient', 'destination'],\n // Skip a set whose value swept up a trailing block terminator (`set X to Y\n // end` — the body of an inline `if … then set … end`): verb-final reorder\n // would push the verb past `end` and break the block. These parse fine\n // verb-medial (the default).\n predicate: parsed => !/(^|\\s)end$/i.test((parsed.original ?? '').trim()),\n },\n transform: {\n // #x.innerText को इसका.name में सेट — verb-final, matching the generated\n // SOV set pattern (set schema markerOverride puts को on the destination /\n // में on the value). The default reorder emitted verb-MEDIAL\n // (`#x को सेट … में`), which no set pattern matched → bare-event fallback.\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'bind-to',\n description: 'Transform bind $var to #el to Hindi verb-final order',\n priority: 90,\n match: {\n commands: ['bind', 'बाइंड', 'बांधें'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // $greeting को #name-input में bind — verb-final, matching the generated SOV\n // bind pattern (`{destination} को {source} में bind`). The default reorder\n // emitted verb-MEDIAL (`$greeting को bind #name-input में`), which the\n // verb-final pattern never matched → the bare-event fallback mis-anchored\n // the fronted `$greeting` as a phantom `on` event (the rf=0.00 bind residue).\n // ja/ko/zh/tr/bn already carry this rule; hi was the only SOV gap.\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n // the घटना को जमा पर रोकें फिर validateForm() को कॉल\n sovHaltCallFusedRule({\n callVerb: 'कॉल',\n patientMarker: 'को',\n eventMarker: 'पर',\n connective: 'फिर',\n }),\n // #note का अक्षर 0 से 5 को क्लिक पर चुनें\n sovPickRangeRule({\n genitive: 'का',\n rangeSep: 'से',\n patientMarker: 'को',\n eventMarker: 'पर',\n }),\n ],\n};\n\n// =============================================================================\n// Tagalog (VSO, Prepositions)\n// =============================================================================\n\nexport const tagalogProfile: LanguageProfile = {\n code: 'tl',\n name: 'Tagalog',\n\n wordOrder: 'VSO',\n adpositionType: 'preposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n // Tagalog VSO: Verb first, then subject, then object\n canonicalOrder: ['action', 'agent', 'patient', 'destination', 'source'],\n\n markers: [\n { form: 'kapag', role: 'event', position: 'preposition', required: true },\n { form: 'sa', role: 'destination', position: 'preposition', required: false },\n // mula_sa (underscore) matches the tl dict and the semantic profile's\n // source marker — the spaced form emitted two tokens the generated\n // patterns' single mula_sa literal could never match, so `remove X\n // mula sa Y` lost its source and the schema default fabricated me.\n { form: 'mula_sa', role: 'source', position: 'preposition', required: false },\n { form: 'nang', role: 'style', position: 'preposition', required: false },\n { form: 'bilang', role: 'method', position: 'preposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler-vso',\n description: 'VSO event handler: VERB TARGET kapag EVENT',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n },\n transform: {\n // palitan #count kapag click (toggle #count on click)\n roleOrder: ['action', 'patient', 'event'],\n insertMarkers: true,\n },\n },\n ],\n};\n\n// =============================================================================\n// Thai (SVO, Isolating, No Spaces)\n// =============================================================================\n\nexport const thaiProfile: LanguageProfile = {\n code: 'th',\n name: 'ไทย',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'isolating',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'เมื่อ', role: 'event', position: 'preposition', required: true },\n { form: 'ใน', role: 'destination', position: 'preposition', required: false },\n { form: 'ไปยัง', role: 'destination', position: 'preposition', required: false },\n { form: 'จาก', role: 'source', position: 'preposition', required: false },\n { form: 'ด้วย', role: 'style', position: 'preposition', required: false },\n { form: 'เป็น', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Polish (SVO, Fusional, Imperative)\n// =============================================================================\n\nexport const polishProfile: LanguageProfile = {\n code: 'pl',\n name: 'Polski',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'gdy', role: 'event', position: 'preposition', required: true },\n { form: 'przy', role: 'event', position: 'preposition', required: false },\n { form: 'do', role: 'destination', position: 'preposition', required: false },\n { form: 'w', role: 'destination', position: 'preposition', required: false },\n { form: 'na', role: 'destination', position: 'preposition', required: false },\n { form: 'z', role: 'source', position: 'preposition', required: false },\n { form: 'od', role: 'source', position: 'preposition', required: false },\n { form: 'ze', role: 'source', position: 'preposition', required: false },\n { form: 'z', role: 'style', position: 'preposition', required: false },\n { form: 'ze', role: 'style', position: 'preposition', required: false },\n { form: 'jako', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Hebrew (SVO, RTL, Prepositions)\n// =============================================================================\n\nexport const hebrewProfile: LanguageProfile = {\n code: 'he',\n name: 'עברית',\n\n wordOrder: 'SVO', // Modern Hebrew is predominantly SVO (Biblical Hebrew was VSO)\n adpositionType: 'preposition',\n morphology: 'fusional', // Root-and-pattern (Semitic), like Arabic\n direction: 'rtl',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n // Hebrew uses single-letter prefix prepositions (ב, ל, מ, כ) that attach to\n // the following word. For tokenization we treat them as spaced forms.\n markers: [\n { form: 'ב', role: 'event', position: 'preposition', required: true },\n { form: 'על', role: 'destination', position: 'preposition', required: false },\n { form: 'אל', role: 'destination', position: 'preposition', required: false },\n { form: 'ל', role: 'destination', position: 'preposition', required: false },\n { form: 'את', role: 'patient', position: 'preposition', required: false }, // Direct object marker\n { form: 'מ', role: 'source', position: 'preposition', required: false },\n { form: 'מן', role: 'source', position: 'preposition', required: false },\n { form: 'עם', role: 'style', position: 'preposition', required: false },\n { form: 'כ', role: 'method', position: 'preposition', required: false },\n ],\n\n rules: [\n {\n name: 'bind-to',\n description: 'Bind binds a variable to an element: קשור X ל Y',\n priority: 90,\n match: {\n commands: ['bind', 'קשור'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // The bound variable is the semantic destination (kept bare, no את\n // object marker), and ל marks the target element. Custom so the\n // variable does not pick up את and the element uses ל (not על).\n roleOrder: ['action', 'patient', 'destination'],\n custom: parsed => {\n const action = parsed.roles.get('action');\n const patient = parsed.roles.get('patient');\n const destination = parsed.roles.get('destination');\n const verb = action?.translated || action?.value || '';\n const v = patient?.translated || patient?.value || '';\n const d = destination?.translated || destination?.value || '';\n return [verb, v, 'ל', d].filter(Boolean).join(' ');\n },\n },\n },\n ],\n};\n\n// =============================================================================\n// Profile Registry\n// =============================================================================\n\nexport const profiles: Record<string, LanguageProfile> = {\n en: englishProfile,\n ja: japaneseProfile,\n ko: koreanProfile,\n zh: chineseProfile,\n ar: arabicProfile,\n tr: turkishProfile,\n es: spanishProfile,\n de: germanProfile,\n fr: frenchProfile,\n pt: portugueseProfile,\n id: indonesianProfile,\n ms: malayProfile,\n qu: quechuaProfile,\n sw: swahiliProfile,\n bn: bengaliProfile,\n // New profiles\n it: italianProfile,\n ru: russianProfile,\n uk: ukrainianProfile,\n vi: vietnameseProfile,\n hi: hindiProfile,\n tl: tagalogProfile,\n th: thaiProfile,\n pl: polishProfile,\n he: hebrewProfile,\n};\n\nexport function getProfile(locale: string): LanguageProfile | undefined {\n return profiles[locale];\n}\n\nexport function getSupportedLocales(): string[] {\n return Object.keys(profiles);\n}\n","/**\n * Direct Language-Pair Mappings\n *\n * Enables translation between language pairs without English pivot.\n * This reduces error compounding and provides more natural translations\n * for closely related languages or those with shared vocabulary.\n *\n * Currently supported pairs:\n * - Japanese ↔ Chinese (shared Kanji concepts)\n * - Spanish ↔ Portuguese (Romance language mutual intelligibility)\n * - Korean ↔ Japanese (SOV grammar similarity)\n */\n\nimport type { Dictionary } from '../types';\nimport { ja } from '../dictionaries/ja';\nimport { zh } from '../dictionaries/zh';\nimport { ko } from '../dictionaries/ko';\n// Note: es and pt use hand-crafted mappings for better quality\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface DirectMapping {\n /** Source language code */\n source: string;\n /** Target language code */\n target: string;\n /** Word mappings: source word -> target word */\n words: Record<string, string>;\n /** Category mappings for structured translation */\n categories?: Record<string, Record<string, string>>;\n}\n\n// =============================================================================\n// Utility Functions\n// =============================================================================\n\n/**\n * Create reverse mapping from an existing mapping\n */\nfunction reverseMapping(mapping: DirectMapping): DirectMapping {\n const reversedWords: Record<string, string> = {};\n for (const [source, target] of Object.entries(mapping.words)) {\n reversedWords[target] = source;\n }\n\n const reversedCategories: Record<string, Record<string, string>> = {};\n if (mapping.categories) {\n for (const [category, words] of Object.entries(mapping.categories)) {\n reversedCategories[category] = {};\n for (const [source, target] of Object.entries(words)) {\n reversedCategories[category][target] = source;\n }\n }\n }\n\n const result: DirectMapping = {\n source: mapping.target,\n target: mapping.source,\n words: reversedWords,\n };\n\n if (Object.keys(reversedCategories).length > 0) {\n result.categories = reversedCategories;\n }\n\n return result;\n}\n\n/**\n * Build direct mapping from two dictionaries via English keys\n */\nfunction buildMappingFromDictionaries(\n sourceDict: Dictionary,\n targetDict: Dictionary,\n sourceCode: string,\n targetCode: string\n): DirectMapping {\n const words: Record<string, string> = {};\n const categories: Record<string, Record<string, string>> = {};\n\n // Map each category\n for (const category of [\n 'commands',\n 'modifiers',\n 'events',\n 'logical',\n 'temporal',\n 'values',\n 'attributes',\n ] as const) {\n const sourceCategory = sourceDict[category] as Record<string, string> | undefined;\n const targetCategory = targetDict[category] as Record<string, string> | undefined;\n\n if (sourceCategory && targetCategory) {\n categories[category] = {};\n\n for (const [englishKey, sourceWord] of Object.entries(sourceCategory)) {\n const targetWord = targetCategory[englishKey];\n if (targetWord && sourceWord !== targetWord) {\n words[sourceWord] = targetWord;\n categories[category][sourceWord] = targetWord;\n }\n }\n }\n }\n\n return {\n source: sourceCode,\n target: targetCode,\n words,\n categories,\n };\n}\n\n// =============================================================================\n// Japanese ↔ Chinese Direct Mapping\n// =============================================================================\n\n/**\n * Japanese to Chinese mapping\n *\n * These languages share many concepts through Kanji/Hanzi,\n * making direct translation more accurate than pivot translation.\n */\nexport const jaZhMapping: DirectMapping = buildMappingFromDictionaries(ja, zh, 'ja', 'zh');\n\n/**\n * Chinese to Japanese mapping (reverse of jaZh)\n */\nexport const zhJaMapping: DirectMapping = reverseMapping(jaZhMapping);\n\n// =============================================================================\n// Korean ↔ Japanese Direct Mapping\n// =============================================================================\n\n/**\n * Korean to Japanese mapping\n *\n * Both are SOV languages with postposition particles,\n * sharing grammatical structure that enables more natural translation.\n */\nexport const koJaMapping: DirectMapping = buildMappingFromDictionaries(ko, ja, 'ko', 'ja');\n\n/**\n * Japanese to Korean mapping (reverse of koJa)\n */\nexport const jaKoMapping: DirectMapping = reverseMapping(koJaMapping);\n\n// =============================================================================\n// Spanish ↔ Portuguese Direct Mapping\n// =============================================================================\n\n/**\n * Spanish to Portuguese mapping\n *\n * These Romance languages have high mutual intelligibility,\n * with many cognates that translate directly.\n */\nexport const esPtMapping: DirectMapping = {\n source: 'es',\n target: 'pt',\n words: {\n // Commands - many are cognates\n en: 'em', // on (event)\n decir: 'dizer', // tell\n disparar: 'disparar', // trigger\n enviar: 'enviar', // send\n tomar: 'pegar', // take\n poner: 'colocar', // put\n establecer: 'definir', // set\n obtener: 'obter', // get\n agregar: 'adicionar', // add\n quitar: 'remover', // remove\n alternar: 'alternar', // toggle\n ocultar: 'esconder', // hide\n mostrar: 'mostrar', // show\n si: 'se', // if\n menos: 'a menos', // unless\n repetir: 'repetir', // repeat\n para: 'para', // for\n mientras: 'enquanto', // while\n hasta: 'até', // until\n continuar: 'continuar', // continue\n romper: 'parar', // break\n detener: 'parar', // halt\n esperar: 'esperar', // wait\n buscar: 'buscar', // fetch\n llamar: 'chamar', // call\n retornar: 'retornar', // return\n hacer: 'fazer', // make\n registrar: 'registrar', // log\n lanzar: 'lançar', // throw\n atrapar: 'capturar', // catch\n medir: 'medir', // measure\n transición: 'transição', // transition\n incrementar: 'incrementar', // increment\n decrementar: 'decrementar', // decrement\n predeterminar: 'padrão', // default\n ir: 'ir', // go\n copiar: 'copiar', // copy\n escoger: 'escolher', // pick\n intercambiar: 'trocar', // swap\n transformar: 'transformar', // morph\n añadir: 'anexar', // append\n salir: 'sair', // exit\n\n // Modifiers\n a: 'para', // to\n de: 'de', // from\n dentro: 'em', // into\n con: 'com', // with\n como: 'como', // as\n por: 'por', // by\n\n // Events\n clic: 'clique', // click\n cambio: 'mudança', // change\n entrada: 'entrada', // input\n envío: 'envio', // submit\n carga: 'carregar', // load\n enfoque: 'foco', // focus\n desenfoque: 'desfoque', // blur\n\n // Logical\n verdadero: 'verdadeiro', // true\n falso: 'falso', // false\n y: 'e', // and\n o: 'ou', // or\n no: 'não', // not\n es: 'é', // is\n\n // Temporal\n segundos: 'segundos', // seconds\n milisegundos: 'milissegundos', // milliseconds\n\n // Values\n nulo: 'nulo', // null\n indefinido: 'indefinido', // undefined\n vacío: 'vazio', // empty\n },\n categories: {\n commands: {\n en: 'em',\n decir: 'dizer',\n tomar: 'pegar',\n poner: 'colocar',\n establecer: 'definir',\n obtener: 'obter',\n agregar: 'adicionar',\n quitar: 'remover',\n ocultar: 'esconder',\n si: 'se',\n mientras: 'enquanto',\n hasta: 'até',\n romper: 'parar',\n detener: 'parar',\n llamar: 'chamar',\n hacer: 'fazer',\n lanzar: 'lançar',\n atrapar: 'capturar',\n escoger: 'escolher',\n intercambiar: 'trocar',\n añadir: 'anexar',\n salir: 'sair',\n },\n events: {\n clic: 'clique',\n cambio: 'mudança',\n carga: 'carregar',\n enfoque: 'foco',\n desenfoque: 'desfoque',\n },\n logical: {\n verdadero: 'verdadeiro',\n y: 'e',\n o: 'ou',\n no: 'não',\n es: 'é',\n },\n },\n};\n\n/**\n * Portuguese to Spanish mapping (reverse of esPt)\n */\nexport const ptEsMapping: DirectMapping = reverseMapping(esPtMapping);\n\n// =============================================================================\n// Mapping Registry\n// =============================================================================\n\n/**\n * Registry of direct translation pairs.\n * Key format: \"source->target\" (e.g., \"ja->zh\")\n */\nexport const directMappings: Map<string, DirectMapping> = new Map([\n // Japanese ↔ Chinese\n ['ja->zh', jaZhMapping],\n ['zh->ja', zhJaMapping],\n\n // Korean ↔ Japanese\n ['ko->ja', koJaMapping],\n ['ja->ko', jaKoMapping],\n\n // Spanish ↔ Portuguese\n ['es->pt', esPtMapping],\n ['pt->es', ptEsMapping],\n]);\n\n// =============================================================================\n// Public API\n// =============================================================================\n\n/**\n * Check if direct mapping exists for a language pair\n */\nexport function hasDirectMapping(source: string, target: string): boolean {\n return directMappings.has(`${source}->${target}`);\n}\n\n/**\n * Get direct mapping for a language pair\n */\nexport function getDirectMapping(source: string, target: string): DirectMapping | undefined {\n return directMappings.get(`${source}->${target}`);\n}\n\n/**\n * Translate a single word using direct mapping\n */\nexport function translateWordDirect(\n word: string,\n source: string,\n target: string\n): string | undefined {\n const mapping = getDirectMapping(source, target);\n if (!mapping) return undefined;\n return mapping.words[word];\n}\n\n/**\n * Get all supported direct translation pairs\n */\nexport function getSupportedDirectPairs(): Array<{ source: string; target: string }> {\n return Array.from(directMappings.keys()).map(key => {\n const [source, target] = key.split('->');\n return { source, target };\n });\n}\n"]}
1
+ {"version":3,"sources":["../src/constants.ts","../src/parser/create-provider.ts","../src/dictionaries/es.ts","../src/parser/es.ts","../src/dictionaries/ja.ts","../src/parser/ja.ts","../src/dictionaries/fr.ts","../src/parser/fr.ts","../src/dictionaries/de.ts","../src/parser/de.ts","../src/dictionaries/ar.ts","../src/parser/ar.ts","../src/dictionaries/ko.ts","../src/parser/ko.ts","../src/dictionaries/zh.ts","../src/parser/zh.ts","../src/dictionaries/tr.ts","../src/parser/tr.ts","../src/dictionaries/id.ts","../src/parser/id.ts","../src/dictionaries/qu.ts","../src/parser/qu.ts","../src/dictionaries/sw.ts","../src/parser/sw.ts","../src/dictionaries/pt.ts","../src/parser/pt.ts","../src/dictionaries/it.ts","../src/parser/it.ts","../src/dictionaries/vi.ts","../src/parser/vi.ts","../src/dictionaries/pl.ts","../src/parser/pl.ts","../src/dictionaries/ru.ts","../src/parser/ru.ts","../src/dictionaries/uk.ts","../src/parser/uk.ts","../src/dictionaries/hi.ts","../src/parser/hi.ts","../src/dictionaries/bn.ts","../src/parser/bn.ts","../src/dictionaries/th.ts","../src/parser/th.ts","../src/dictionaries/ms.ts","../src/parser/ms.ts","../src/dictionaries/tl.ts","../src/parser/tl.ts","../src/dictionaries/he.ts","../src/parser/he.ts","../src/parser/locale-manager.ts","../src/dictionaries/en.ts","../src/grammar/types.ts","../src/grammar/profiles/index.ts","../src/grammar/direct-mappings.ts"],"names":[],"mappings":"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","file":"browser.cjs","sourcesContent":["// packages/i18n/src/constants.ts\n\n/**\n * Shared Constants for i18n Package\n *\n * Centralizes keyword definitions to eliminate duplication across\n * transformer.ts, create-provider.ts, and other modules.\n */\n\nimport type { SemanticRole } from './grammar/types';\n\n// =============================================================================\n// English Modifier → Semantic Role Mappings\n// =============================================================================\n\n/**\n * Maps English modifier keywords to their semantic roles.\n * Used by both the grammar transformer and keyword provider.\n */\nexport const ENGLISH_MODIFIER_ROLES: Readonly<Record<string, SemanticRole>> = {\n to: 'destination',\n into: 'destination',\n from: 'source',\n with: 'style',\n by: 'quantity',\n as: 'method',\n on: 'event',\n over: 'duration',\n for: 'duration',\n} as const;\n\n/**\n * Maps a command verb to its **primary** semantic role — the role of the\n * command's first/leading argument when no explicit modifier keyword marks it.\n *\n * The generic argument parser in the transformer defaults the first unmarked\n * argument to `patient`, which is correct for the majority of commands\n * (`toggle .x`, `add .x`, …) but wrong for commands whose leading argument is a\n * non-patient — e.g. `wait <duration>`. Marking a duration as a patient emits a\n * spurious object-marker in the target language (Chinese `等待 把 1s`, ungrammatical;\n * Japanese `1s を 待つ`; Korean `1s 를 대기`), which the semantic parser then fails to\n * match — dropping the command.\n *\n * Only commands whose primary role is **not** `patient` are listed here (the\n * `patient` default already covers the rest). Mirrors the `primaryRole` field of\n * the semantic package's command schemas (`@lokascript/semantic`); kept in sync by\n * `schema-alignment.test.ts` so this local copy can't drift without the bundle\n * having to pull in the whole semantic graph.\n *\n * @see packages/i18n/src/schema-alignment.test.ts\n * @see docs-internal/ZH_BLOCK_BODY_SCOPE.md (#1 — transformer role model)\n */\nexport const COMMAND_PRIMARY_ROLES: Readonly<Record<string, SemanticRole>> = {\n set: 'destination',\n on: 'event',\n trigger: 'event',\n send: 'event',\n wait: 'duration',\n fetch: 'source',\n get: 'source',\n if: 'condition',\n unless: 'condition',\n while: 'condition',\n when: 'condition', // reactive `when <expr> changes` — the watched expression\n repeat: 'loopType',\n go: 'destination',\n scroll: 'destination',\n tell: 'destination',\n default: 'destination',\n swap: 'destination',\n // morph deliberately absent: its schema primaryRole is `patient` (the\n // element being morphed — aligned with the transformer's patient marking\n // in the session-9 role-layout swap), and patient is the default.\n bind: 'destination',\n viewTransition: 'style', // `start view transition using \"<type>\"`\n} as const;\n\n/**\n * English modifier keywords (derived from ENGLISH_MODIFIER_ROLES)\n */\nexport const ENGLISH_MODIFIERS: Set<string> = new Set([\n 'to',\n 'from',\n 'into',\n 'with',\n 'at',\n 'in',\n 'of',\n 'as',\n 'by',\n 'before',\n 'after',\n 'without',\n]);\n\n// =============================================================================\n// English Commands\n// =============================================================================\n\n/**\n * English commands - the canonical set that the runtime understands.\n */\nexport const ENGLISH_COMMANDS: Set<string> = new Set([\n 'add',\n 'append',\n 'async',\n 'beep',\n 'blur', // v0.9.90 phase 1\n 'break',\n 'breakpoint', // v0.9.90 phase 1\n 'call',\n 'clear', // v0.9.90 phase 1\n 'close', // v0.9.90 phase 1\n 'continue',\n 'decrement',\n 'default',\n 'empty', // v0.9.90 phase 1\n 'exit',\n 'fetch',\n 'focus', // v0.9.90 phase 1\n 'for',\n 'get',\n 'go',\n 'halt',\n 'hide',\n 'if',\n 'increment',\n 'install',\n 'js',\n 'log',\n 'make',\n 'measure',\n 'morph',\n 'open', // v0.9.90 phase 1\n 'pick',\n 'process',\n 'push',\n 'put',\n 'remove',\n 'render',\n 'repeat',\n 'replace',\n 'reset', // v0.9.90 phase 1\n 'return',\n 'select', // v0.9.90 phase 1\n 'send',\n 'set',\n 'settle',\n 'show',\n 'swap',\n 'take',\n 'tell',\n 'throw',\n 'toggle',\n 'transition',\n 'trigger',\n 'unless',\n 'wait',\n // v2.x reactive + realtime + service-worker DSL commands\n 'live',\n 'bind',\n 'eventsource',\n 'socket',\n 'worker',\n 'intercept',\n]);\n\n// =============================================================================\n// English Keywords (Non-Commands)\n// =============================================================================\n\n/**\n * English keywords that are not commands.\n */\nexport const ENGLISH_KEYWORDS: Set<string> = new Set([\n // Flow control\n 'then',\n 'else',\n 'end',\n 'and',\n 'or',\n 'not',\n // Conditionals\n 'if',\n 'unless',\n // Loops\n 'for',\n 'while',\n 'until',\n 'forever',\n 'times',\n 'each',\n 'index',\n // Prepositions\n 'in',\n 'to',\n 'from',\n 'into',\n 'with',\n 'without',\n 'of',\n 'at',\n 'by',\n // Conversion\n 'as',\n // Comparison\n 'matches',\n 'contains',\n 'is',\n 'exists',\n // Events\n 'on',\n 'when',\n 'every',\n 'event',\n // Definitions\n 'init',\n 'def',\n 'behavior',\n // Scope\n 'global',\n 'local',\n // Articles\n 'the',\n 'a',\n 'an',\n 'first',\n 'last',\n // Position\n 'start',\n 'before',\n 'after',\n]);\n\n// =============================================================================\n// Universal English Keywords (DOM/HTML Standards)\n// =============================================================================\n\n/**\n * English keywords that should always be recognized, even in non-English locales.\n * These are HTML/DOM standard terms that developers worldwide use.\n */\nexport const UNIVERSAL_ENGLISH_KEYWORDS: Set<string> = new Set([\n // DOM events (HTML spec)\n 'click',\n 'dblclick',\n 'mousedown',\n 'mouseup',\n 'mouseenter',\n 'mouseleave',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'keydown',\n 'keyup',\n 'keypress',\n 'focus',\n 'blur',\n 'change',\n 'input',\n 'submit',\n 'reset',\n 'load',\n 'unload',\n 'resize',\n 'scroll',\n 'touchstart',\n 'touchend',\n 'touchmove',\n 'touchcancel',\n 'dragstart',\n 'dragend',\n 'dragenter',\n 'dragleave',\n 'dragover',\n 'drop',\n 'contextmenu',\n 'wheel',\n 'pointerdown',\n 'pointerup',\n 'pointermove',\n // Common abbreviations\n 'ms',\n 's',\n]);\n\n// =============================================================================\n// Logical Keywords\n// =============================================================================\n\n/**\n * English logical operator keywords.\n */\nexport const ENGLISH_LOGICAL_KEYWORDS: Set<string> = new Set([\n 'and',\n 'or',\n 'not',\n 'is',\n 'exists',\n 'matches',\n 'contains',\n 'then',\n 'else',\n]);\n\n// =============================================================================\n// Value Keywords\n// =============================================================================\n\n/**\n * English value keywords.\n */\nexport const ENGLISH_VALUE_KEYWORDS: Set<string> = new Set([\n 'true',\n 'false',\n 'null',\n 'undefined',\n 'it',\n 'me',\n 'my',\n 'result',\n]);\n\n// =============================================================================\n// Expression Keywords\n// =============================================================================\n\n/**\n * English expression keywords - positional, traversal, and string operations.\n */\nexport const ENGLISH_EXPRESSION_KEYWORDS: Set<string> = new Set([\n // Positional\n 'first',\n 'last',\n 'next',\n 'previous',\n 'prev',\n 'at',\n 'random',\n // DOM traversal\n 'closest',\n 'parent',\n 'children',\n 'within',\n // Emptiness/existence\n 'no',\n 'empty',\n 'some',\n // String operations (multi-word)\n 'starts with',\n 'ends with',\n]);\n\n// =============================================================================\n// Conditional Keywords\n// =============================================================================\n\n/**\n * Conditional keywords across languages (for statement type identification).\n * Includes 'when'/'where' conditional modifiers and their translations.\n */\nexport const CONDITIONAL_KEYWORDS: Set<string> = new Set([\n // English\n 'if',\n 'unless',\n 'when',\n 'where',\n // Japanese\n 'もし',\n '時に',\n 'ときに',\n 'どこで',\n // Chinese\n '如果',\n '当',\n // Arabic\n 'إذا',\n 'عندما',\n 'حيث',\n // Spanish\n 'si',\n 'cuando',\n 'donde',\n // German\n 'wenn',\n 'wann',\n 'wo',\n // French\n 'quand',\n 'lorsque',\n 'où',\n // Portuguese\n 'quando',\n 'onde',\n // Turkish\n 'eğer',\n 'zaman',\n 'nerede',\n // Indonesian\n 'ketika',\n 'saat',\n 'dimana',\n // Korean\n '때',\n '어디서',\n // Quechua\n 'maypi',\n // Swahili\n 'wakati',\n 'wapi',\n]);\n\n/**\n * \"Then\" keywords across languages (for conditional parsing).\n */\nexport const THEN_KEYWORDS: Set<string> = new Set([\n 'then',\n 'それから',\n '那么',\n 'ثم',\n 'entonces',\n 'alors',\n 'dann',\n 'sonra',\n 'lalu',\n 'chayqa',\n 'kisha',\n]);\n","// packages/i18n/src/parser/create-provider.ts\n\nimport type { Dictionary } from '../types';\nimport type { KeywordProvider, KeywordProviderOptions } from './types';\nimport {\n ENGLISH_COMMANDS,\n ENGLISH_KEYWORDS,\n ENGLISH_MODIFIERS,\n ENGLISH_LOGICAL_KEYWORDS,\n ENGLISH_VALUE_KEYWORDS,\n ENGLISH_EXPRESSION_KEYWORDS,\n UNIVERSAL_ENGLISH_KEYWORDS,\n} from '../constants';\n\n/**\n * Creates a KeywordProvider from a dictionary.\n *\n * The provider creates reverse mappings (locale → English) for fast\n * resolution during parsing.\n *\n * @example\n * ```typescript\n * import { es } from '../dictionaries/es';\n * export const esKeywords = createKeywordProvider(es, 'es');\n * ```\n */\nexport function createKeywordProvider(\n dictionary: Dictionary,\n locale: string,\n options: KeywordProviderOptions = {}\n): KeywordProvider {\n const { allowEnglishFallback = true } = options;\n\n // Build reverse maps: locale keyword → English canonical\n const reverseCommands = new Map<string, string>();\n const reverseModifiers = new Map<string, string>();\n const reverseEvents = new Map<string, string>();\n const reverseLogical = new Map<string, string>();\n const reverseTemporal = new Map<string, string>();\n const reverseValues = new Map<string, string>();\n const reverseAttributes = new Map<string, string>();\n const reverseExpressions = new Map<string, string>();\n const reverseAll = new Map<string, string>();\n\n // Forward maps: English → locale keyword\n const forwardAll = new Map<string, string>();\n\n // Build reverse mappings from dictionary\n // Note: reverseAll uses priority - first category to claim a locale word wins\n function buildReverseMap(\n category: Record<string, string>,\n reverseMap: Map<string, string>,\n priority: boolean = false\n ): void {\n for (const [english, localeWord] of Object.entries(category)) {\n const normalizedLocale = localeWord.toLowerCase();\n reverseMap.set(normalizedLocale, english.toLowerCase());\n // Only set in reverseAll if not already claimed (priority) or if this is a priority category\n if (priority || !reverseAll.has(normalizedLocale)) {\n reverseAll.set(normalizedLocale, english.toLowerCase());\n }\n forwardAll.set(english.toLowerCase(), localeWord.toLowerCase());\n }\n }\n\n // Build all reverse maps\n // Priority order: commands first (highest priority for parsing), then logical, events, values\n // This ensures 'en' (Spanish) → 'on' (command) rather than 'in' (modifier)\n if (dictionary.commands) {\n buildReverseMap(dictionary.commands, reverseCommands, true);\n }\n if (dictionary.logical) {\n buildReverseMap(dictionary.logical, reverseLogical, true);\n }\n if (dictionary.events) {\n buildReverseMap(dictionary.events, reverseEvents);\n }\n if (dictionary.values) {\n buildReverseMap(dictionary.values, reverseValues);\n }\n if (dictionary.temporal) {\n buildReverseMap(dictionary.temporal, reverseTemporal);\n }\n // Modifiers last (lowest priority) - they often conflict with commands\n if (dictionary.modifiers) {\n buildReverseMap(dictionary.modifiers, reverseModifiers);\n }\n if (dictionary.attributes) {\n buildReverseMap(dictionary.attributes, reverseAttributes);\n }\n if (dictionary.expressions) {\n buildReverseMap(dictionary.expressions, reverseExpressions);\n }\n\n // Collect all locale commands and keywords for completions\n const localeCommands = new Set(reverseCommands.keys());\n const allLocaleKeywords = new Set(reverseAll.keys());\n\n // Add English keywords/commands if fallback is enabled\n if (allowEnglishFallback) {\n for (const cmd of ENGLISH_COMMANDS) {\n localeCommands.add(cmd);\n }\n for (const kw of ENGLISH_KEYWORDS) {\n allLocaleKeywords.add(kw);\n }\n for (const kw of UNIVERSAL_ENGLISH_KEYWORDS) {\n allLocaleKeywords.add(kw);\n }\n }\n\n return {\n locale,\n\n resolve(token: string): string | undefined {\n const normalized = token.toLowerCase();\n\n // Check if it's a locale keyword\n const english = reverseAll.get(normalized);\n if (english !== undefined) {\n return english;\n }\n\n // If English fallback is enabled, check if it's already English\n if (allowEnglishFallback) {\n if (ENGLISH_COMMANDS.has(normalized) || ENGLISH_KEYWORDS.has(normalized)) {\n return normalized;\n }\n // Universal keywords (DOM events, etc.) pass through\n if (UNIVERSAL_ENGLISH_KEYWORDS.has(normalized)) {\n return normalized;\n }\n }\n\n return undefined;\n },\n\n isCommand(token: string): boolean {\n const normalized = token.toLowerCase();\n\n // Check locale commands\n if (reverseCommands.has(normalized)) {\n return true;\n }\n\n // Check English commands if fallback enabled\n if (allowEnglishFallback && ENGLISH_COMMANDS.has(normalized)) {\n return true;\n }\n\n return false;\n },\n\n isKeyword(token: string): boolean {\n const normalized = token.toLowerCase();\n\n // Check locale keywords (modifiers, logical, temporal, values)\n if (\n reverseModifiers.has(normalized) ||\n reverseLogical.has(normalized) ||\n reverseTemporal.has(normalized) ||\n reverseValues.has(normalized)\n ) {\n return true;\n }\n\n // Check English keywords if fallback enabled\n if (allowEnglishFallback && ENGLISH_KEYWORDS.has(normalized)) {\n return true;\n }\n\n return false;\n },\n\n isEvent(token: string): boolean {\n const normalized = token.toLowerCase();\n\n // Check locale events\n if (reverseEvents.has(normalized)) {\n return true;\n }\n\n // Universal English events always accepted\n if (UNIVERSAL_ENGLISH_KEYWORDS.has(normalized)) {\n return true;\n }\n\n return false;\n },\n\n isModifier(token: string): boolean {\n const normalized = token.toLowerCase();\n return (\n reverseModifiers.has(normalized) ||\n (allowEnglishFallback && ENGLISH_MODIFIERS.has(normalized))\n );\n },\n\n isLogical(token: string): boolean {\n const normalized = token.toLowerCase();\n return (\n reverseLogical.has(normalized) ||\n (allowEnglishFallback && ENGLISH_LOGICAL_KEYWORDS.has(normalized))\n );\n },\n\n isValue(token: string): boolean {\n const normalized = token.toLowerCase();\n return (\n reverseValues.has(normalized) ||\n (allowEnglishFallback && ENGLISH_VALUE_KEYWORDS.has(normalized))\n );\n },\n\n isExpression(token: string): boolean {\n const normalized = token.toLowerCase();\n return (\n reverseExpressions.has(normalized) ||\n (allowEnglishFallback && ENGLISH_EXPRESSION_KEYWORDS.has(normalized))\n );\n },\n\n getCommands(): string[] {\n return Array.from(localeCommands);\n },\n\n getKeywords(): string[] {\n return Array.from(allLocaleKeywords);\n },\n\n toLocale(englishKeyword: string): string | undefined {\n return forwardAll.get(englishKeyword.toLowerCase());\n },\n };\n}\n\n/**\n * Creates a default English-only keyword provider.\n * This is used when no locale is specified.\n */\nexport function createEnglishProvider(): KeywordProvider {\n return {\n locale: 'en',\n\n resolve(token: string): string | undefined {\n const normalized = token.toLowerCase();\n if (\n ENGLISH_COMMANDS.has(normalized) ||\n ENGLISH_KEYWORDS.has(normalized) ||\n UNIVERSAL_ENGLISH_KEYWORDS.has(normalized)\n ) {\n return normalized;\n }\n return undefined;\n },\n\n isCommand(token: string): boolean {\n return ENGLISH_COMMANDS.has(token.toLowerCase());\n },\n\n isKeyword(token: string): boolean {\n return ENGLISH_KEYWORDS.has(token.toLowerCase());\n },\n\n isEvent(token: string): boolean {\n return UNIVERSAL_ENGLISH_KEYWORDS.has(token.toLowerCase());\n },\n\n isModifier(token: string): boolean {\n return ENGLISH_MODIFIERS.has(token.toLowerCase());\n },\n\n isLogical(token: string): boolean {\n return ENGLISH_LOGICAL_KEYWORDS.has(token.toLowerCase());\n },\n\n isValue(token: string): boolean {\n return ENGLISH_VALUE_KEYWORDS.has(token.toLowerCase());\n },\n\n isExpression(token: string): boolean {\n return ENGLISH_EXPRESSION_KEYWORDS.has(token.toLowerCase());\n },\n\n getCommands(): string[] {\n return Array.from(ENGLISH_COMMANDS);\n },\n\n getKeywords(): string[] {\n return Array.from(ENGLISH_KEYWORDS);\n },\n\n toLocale(_englishKeyword: string): string | undefined {\n // English provider returns the keyword as-is\n return _englishKeyword.toLowerCase();\n },\n };\n}\n\n// Re-export the English keyword sets from constants for use in core\nexport {\n ENGLISH_COMMANDS,\n ENGLISH_KEYWORDS,\n ENGLISH_MODIFIERS,\n ENGLISH_LOGICAL_KEYWORDS,\n ENGLISH_VALUE_KEYWORDS,\n ENGLISH_EXPRESSION_KEYWORDS,\n UNIVERSAL_ENGLISH_KEYWORDS,\n} from '../constants';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const es: Dictionary = {\n commands: {\n on: 'en',\n tell: 'decir',\n trigger: 'disparar',\n send: 'enviar',\n take: 'tomar',\n put: 'poner',\n set: 'establecer',\n get: 'obtener',\n add: 'agregar',\n remove: 'quitar',\n toggle: 'alternar',\n hide: 'ocultar',\n show: 'mostrar',\n if: 'si',\n unless: 'menos',\n repeat: 'repetir',\n for: 'para',\n while: 'mientras',\n until: 'hasta',\n continue: 'continuar',\n break: 'romper',\n halt: 'detener',\n wait: 'esperar',\n fetch: 'buscar',\n call: 'llamar',\n return: 'retornar',\n make: 'hacer',\n log: 'registrar',\n throw: 'lanzar',\n catch: 'atrapar',\n measure: 'medir',\n transition: 'transición',\n increment: 'incrementar',\n decrement: 'decrementar',\n default: 'predeterminar',\n go: 'ir',\n pushUrl: 'pushUrl',\n replaceUrl: 'reemplazarUrl',\n copy: 'copiar',\n pick: 'escoger',\n beep: 'pitido',\n js: 'js',\n async: 'asíncrono',\n render: 'renderizar',\n swap: 'intercambiar',\n morph: 'transformar',\n settle: 'estabilizar',\n append: 'anexar', // profile primary; 'añadir' is add's word (parsed as add)\n exit: 'salir',\n install: 'instalar',\n breakpoint: 'punto-interrupción',\n clear: 'limpiar',\n close: 'cerrar',\n open: 'abrir',\n select: 'seleccionar',\n clone: 'clonar',\n prepend: 'anteponer',\n },\n\n modifiers: {\n to: 'a',\n from: 'de',\n into: 'en',\n with: 'con',\n at: 'en',\n in: 'en',\n of: 'de',\n as: 'como',\n by: 'por',\n before: 'antes',\n after: 'después',\n over: 'sobre',\n under: 'bajo',\n between: 'entre',\n through: 'través',\n without: 'sin',\n },\n\n events: {\n click: 'clic',\n dblclick: 'dobleclic',\n mouseenter: 'ratónentrar',\n mouseleave: 'ratónsalir',\n // V3 Batch 2: fused forms split to the S5b/tokenizer-known forms (the fused\n // spellings captured event=expression:undefined — broken listeners)\n mousedown: 'ratón abajo',\n mouseup: 'ratón arriba',\n mouseover: 'ratón encima',\n mouseout: 'ratón fuera',\n mousemove: 'ratónmover',\n keydown: 'tecla abajo',\n keyup: 'tecla arriba',\n keypress: 'teclapresar',\n focus: 'enfocar',\n blur: 'desenfocar',\n change: 'cambiar',\n input: 'entrada',\n submit: 'envío', // Batch 3: enviar is the send verb — on-submit listener captured event \"send\"\n reset: 'reiniciar',\n load: 'cargar',\n unload: 'descargar',\n resize: 'redimensionar',\n scroll: 'desplazar',\n touchstart: 'toqueempezar',\n touchend: 'toqueterminar',\n touchmove: 'toquemover',\n touchcancel: 'toquecancelar',\n },\n\n logical: {\n when: 'cuando',\n where: 'donde',\n and: 'y',\n or: 'o',\n not: 'no',\n is: 'es',\n exists: 'existe',\n matches: 'coincide',\n contains: 'contiene',\n includes: 'incluye',\n equals: 'iguala',\n has: 'tiene',\n have: 'tengo',\n then: 'entonces',\n else: 'sino',\n otherwise: 'delocontrario',\n end: 'fin',\n live: 'vivo',\n changes: 'cambia',\n },\n\n temporal: {\n seconds: 'segundos',\n second: 'segundo',\n milliseconds: 'milisegundos',\n millisecond: 'milisegundo',\n minutes: 'minutos',\n minute: 'minuto',\n hours: 'horas',\n hour: 'hora',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n times: 'veces',\n },\n\n values: {\n true: 'verdadero',\n false: 'falso',\n null: 'nulo',\n undefined: 'indefinido',\n it: 'ello',\n its: 'su',\n me: 'yo',\n my: 'mi',\n you: 'tu',\n your: 'tu',\n yourself: 'ti mismo',\n myself: 'yo mismo',\n element: 'elemento',\n target: 'objetivo',\n detail: 'detalle',\n event: 'evento',\n window: 'ventana',\n document: 'documento',\n body: 'cuerpo',\n result: 'resultado',\n value: 'valor',\n },\n\n attributes: {\n class: 'clase',\n classes: 'clases',\n style: 'estilo',\n styles: 'estilos',\n attribute: 'atributo',\n attributes: 'atributos',\n property: 'propiedad',\n properties: 'propiedades',\n },\n\n expressions: {\n characters: 'caracteres',\n inclusive: 'inclusivo',\n exclusive: 'exclusivo',\n first: 'primero',\n last: 'último',\n next: 'siguiente',\n previous: 'anterior',\n prev: 'ant',\n at: 'en',\n random: 'aleatorio',\n closest: 'cercano',\n parent: 'padre',\n children: 'hijos',\n within: 'dentro',\n no: 'ningún',\n empty: 'vacío',\n some: 'algún',\n 'starts with': 'empieza con',\n 'ends with': 'termina con',\n 'ignoring case': 'ignorando mayúsculas',\n 'sorted by': 'ordenado por',\n 'mapped to': 'transformado a',\n 'split by': 'dividido por',\n 'joined by': 'unido por',\n },\n};\n","// packages/i18n/src/parser/es.ts\n\nimport { es } from '../dictionaries/es';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Spanish keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Spanish:\n * - `en clic alternar .active` → parses as `on click toggle .active`\n * - `si verdadero entonces registrar \"hola\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `en click alternar .active` also works (Spanish `en` + English `click`)\n *\n * @example\n * ```typescript\n * import { esKeywords } from '@lokascript/i18n/parser/es';\n *\n * esKeywords.resolve('alternar'); // 'toggle'\n * esKeywords.toLocale('on'); // 'en'\n * ```\n */\nexport const esKeywords: KeywordProvider = createKeywordProvider(es, 'es', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { es as esDictionary } from '../dictionaries/es';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const ja: Dictionary = {\n commands: {\n on: 'で',\n tell: '伝える',\n trigger: '引き金',\n send: '送る',\n take: '取る',\n put: '置く',\n set: '設定',\n get: '取得',\n add: '追加',\n remove: '削除',\n toggle: '切り替え',\n hide: '隠す',\n show: '表示',\n if: 'もし',\n unless: 'ない限り', // not でなければ — leading で particle shatters the marker\n repeat: '繰り返し',\n for: 'ために',\n while: 'の間',\n until: 'まで',\n continue: '続ける',\n break: '中断',\n halt: '停止',\n wait: '待つ',\n fetch: 'フェッチ',\n call: '呼び出し',\n return: '戻る',\n make: '作る',\n log: '記録',\n throw: '投げる',\n catch: '捕まえる',\n measure: '測定',\n transition: '遷移',\n increment: '増加',\n decrement: '減少',\n default: '既定',\n go: '移動',\n pushUrl: 'URLプッシュ',\n replaceUrl: 'URL置換',\n copy: 'コピー',\n pick: '選択',\n beep: 'ビープ',\n js: 'JS実行',\n async: '非同期',\n render: '描画',\n swap: '交換',\n morph: '変形',\n settle: '安定',\n append: '末尾追加',\n // 終了 → 退出: realigned to the semantic profile primary (ja.ts `exit: 退出`).\n // 終了 was the historic exit/end collision word (see isEndKeyword's ja note);\n // rendered as 終了 it tokenized as a plain identifier, so a guard-clause\n // `exit` inside `if … end` never parsed (behavior-sortable ja).\n exit: '退出',\n install: 'インストール',\n breakpoint: 'ブレークポイント',\n clear: 'クリア',\n close: '閉じる',\n open: '開く',\n select: '選ぶ', // Batch 3: 選択 is the pick keyword — bare select rendered with it parses null\n clone: '複製',\n prepend: '先頭追加',\n socket: 'ソケット',\n },\n\n modifiers: {\n to: 'に',\n from: 'から',\n into: 'へ',\n with: 'と',\n at: 'で',\n in: 'の中',\n of: 'の',\n as: 'として',\n by: 'によって',\n before: '前に',\n after: '後に',\n over: '上に',\n under: '下に',\n between: '間に',\n through: '通して',\n without: 'なしで',\n },\n\n events: {\n click: 'クリック',\n dblclick: 'dblclick',\n mousedown: 'マウス押下',\n mouseup: 'マウス解放',\n // V3c burn-down (2026-07-14): English passthrough — no native form round-trips\n // on the parse side (probe: split forms shatter, fused forms capture verbatim).\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n // V3 Batch 2: kanji compounds realigned to the S5b/tokenizer katakana\n // loanwords (the standard JS event terms; the compounds captured\n // event=expression:undefined — broken listeners)\n mouseover: 'マウスオーバー',\n mouseout: 'マウスアウト',\n mousemove: 'mousemove',\n keydown: 'キーダウン',\n keyup: 'キーアップ',\n keypress: 'キープレス',\n focus: 'フォーカス',\n blur: 'ぼかし',\n change: '変更',\n input: '入力',\n submit: '送信',\n reset: 'リセット',\n load: '読み込み',\n unload: 'unload',\n resize: 'サイズ変更',\n scroll: 'スクロール',\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n touchcancel: 'touchcancel',\n },\n\n logical: {\n when: '時',\n where: 'どこ',\n and: 'そして',\n or: 'または',\n not: 'ではない',\n is: 'である',\n exists: '存在する',\n matches: '一致する',\n contains: '含む',\n includes: '含める',\n equals: '等しい',\n has: 'ある',\n have: 'ある',\n then: 'それから',\n else: 'そうでなければ',\n otherwise: 'そうでなければ',\n end: '終わり',\n live: 'ライブ',\n bind: 'バインド',\n changes: '変わったら',\n },\n\n temporal: {\n seconds: '秒',\n second: '秒',\n milliseconds: 'ミリ秒',\n millisecond: 'ミリ秒',\n minutes: '分',\n minute: '分',\n hours: '時間',\n hour: '時間',\n ms: 'ms',\n s: '秒',\n min: '分',\n h: '時',\n times: '回',\n },\n\n values: {\n true: '真',\n false: '偽',\n null: 'null',\n undefined: '未定義',\n it: 'それ',\n its: 'その',\n me: '私',\n my: '私の',\n you: 'あなた',\n your: 'あなたの',\n yourself: 'あなた自身',\n myself: '私自身',\n element: '要素',\n target: '対象',\n detail: '詳細',\n event: 'イベント',\n window: 'ウィンドウ',\n document: 'ドキュメント',\n body: 'ボディ',\n result: '結果',\n value: '値',\n },\n\n attributes: {\n class: 'クラス',\n classes: 'クラス群',\n style: 'スタイル',\n styles: 'スタイル群',\n attribute: '属性',\n attributes: '属性群',\n property: 'プロパティ',\n properties: 'プロパティ群',\n },\n\n expressions: {\n characters: '文字',\n inclusive: '含む',\n exclusive: '除く',\n first: '最初',\n last: '最後',\n next: '次',\n previous: '前',\n prev: '前',\n at: 'で',\n random: 'ランダム',\n closest: '最も近い',\n parent: '親',\n children: '子',\n within: '以内',\n no: 'ない',\n empty: '空',\n some: 'いくつか',\n 'starts with': 'で始まる',\n 'ends with': 'で終わる',\n 'ignoring case': '大文字小文字を無視',\n 'sorted by': 'でソート',\n 'mapped to': 'に変換',\n 'split by': 'で分割',\n 'joined by': 'で結合',\n },\n};\n","// packages/i18n/src/parser/ja.ts\n\nimport { ja } from '../dictionaries/ja';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Japanese keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Japanese:\n * - `クリック で 切り替え .active` → parses as `on click toggle .active`\n * - `もし 真 それから 記録 \"こんにちは\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `click で 切り替え .active` also works (English `click` + Japanese `で`, `切り替え`)\n *\n * Japanese is a useful test case because:\n * - SOV word order (subject-object-verb) vs English SVO\n * - No articles (a, an, the)\n * - Unicode characters (tests tokenizer robustness)\n *\n * @example\n * ```typescript\n * import { jaKeywords } from '@lokascript/i18n/parser/ja';\n *\n * jaKeywords.resolve('切り替え'); // 'toggle'\n * jaKeywords.toLocale('on'); // 'で'\n * ```\n */\nexport const jaKeywords: KeywordProvider = createKeywordProvider(ja, 'ja', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { ja as jaDictionary } from '../dictionaries/ja';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const fr: Dictionary = {\n commands: {\n on: 'sur',\n tell: 'dire',\n trigger: 'déclencher',\n send: 'envoyer',\n take: 'prendre',\n put: 'mettre',\n set: 'définir',\n get: 'obtenir',\n add: 'ajouter',\n remove: 'supprimer',\n toggle: 'basculer',\n // command blur (the events section has the blur EVENT word; without this\n // entry the transformer fell back to it and no profile read it as the verb)\n blur: 'défocaliser',\n hide: 'cacher',\n show: 'montrer',\n if: 'si',\n unless: 'saufsi',\n repeat: 'répéter',\n for: 'pour',\n while: 'tantque',\n until: 'jusquà',\n continue: 'continuer',\n break: 'arrêter',\n halt: 'stopper',\n wait: 'attendre',\n fetch: 'récupérer',\n call: 'appeler',\n return: 'retourner',\n make: 'créer',\n log: 'enregistrer',\n throw: 'lancer',\n catch: 'attraper',\n measure: 'mesurer',\n transition: 'transition',\n increment: 'incrémenter',\n decrement: 'décrémenter',\n default: 'défaut',\n go: 'aller',\n pushUrl: 'pousserUrl',\n replaceUrl: 'remplacerUrl',\n copy: 'copier',\n pick: 'choisir',\n beep: 'bip',\n js: 'js',\n async: 'asynchrone',\n render: 'rendu',\n swap: 'échanger',\n morph: 'transformer',\n settle: 'stabiliser',\n append: 'annexer', // profile primary; 'ajouter' is add's word (parsed as add)\n exit: 'sortir',\n install: 'installer',\n breakpoint: 'point-arrêt',\n clear: 'effacer',\n close: 'fermer',\n open: 'ouvrir',\n select: 'sélectionner',\n clone: 'cloner',\n prepend: 'préfixer',\n focus: 'focaliser',\n },\n\n modifiers: {\n to: 'à',\n from: 'de',\n into: 'dans',\n with: 'avec',\n at: 'à',\n in: 'en',\n of: 'de',\n as: 'comme',\n by: 'par',\n before: 'avant',\n after: 'après',\n over: 'sur',\n under: 'sous',\n between: 'entre',\n through: 'à travers',\n without: 'sans',\n },\n\n events: {\n click: 'clic',\n dblclick: 'doubleclic',\n // mousedown/mouseup: English passthrough — no native form round-trips on the\n // parse side (V3c probe 2026-07-14: fused forms captured verbatim, split forms\n // shattered to their first word — live broken listeners in repeat-until-event).\n // The Batch-2 id-keyup precedent; revisit if S5b + tokenizer gain native entries.\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'sourisentrer',\n mouseleave: 'sourissortir',\n // V3 Batch 2: fused forms split to the S5b/tokenizer-known forms (the fused\n // spellings captured event=expression:undefined — broken listeners)\n mouseover: 'souris dessus',\n mouseout: 'souris dehors',\n mousemove: 'sourisbouger',\n keydown: 'touche bas',\n keyup: 'touche haut',\n keypress: 'touchepressée',\n focus: 'focus',\n blur: 'flou',\n change: 'changer',\n input: 'saisie',\n submit: 'soumettre',\n reset: 'réinitialiser',\n load: 'charger',\n unload: 'décharger',\n resize: 'redimensionner',\n scroll: 'défiler',\n touchstart: 'touchercommencer',\n touchend: 'toucherfin',\n touchmove: 'toucherbouger',\n touchcancel: 'toucherannuler',\n },\n\n logical: {\n when: 'quand',\n where: 'où',\n and: 'et',\n or: 'ou',\n not: 'non',\n is: 'est',\n exists: 'existe',\n matches: 'correspond',\n contains: 'contient',\n includes: 'inclut',\n equals: 'égale',\n has: 'a',\n have: 'ai',\n then: 'alors',\n else: 'sinon',\n otherwise: 'autrement',\n end: 'fin',\n live: 'vif',\n changes: 'change',\n },\n\n temporal: {\n seconds: 'secondes',\n second: 'seconde',\n milliseconds: 'millisecondes',\n millisecond: 'milliseconde',\n minutes: 'minutes',\n minute: 'minute',\n hours: 'heures',\n hour: 'heure',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n times: 'fois',\n },\n\n values: {\n true: 'vrai',\n false: 'faux',\n null: 'nul',\n undefined: 'indéfini',\n it: 'ça',\n its: 'son',\n me: 'moi',\n my: 'mon',\n you: 'tu',\n your: 'ton',\n yourself: 'toi-même',\n myself: 'moi-même',\n element: 'élément',\n target: 'cible',\n detail: 'détail',\n event: 'événement',\n window: 'fenêtre',\n document: 'document',\n body: 'corps',\n result: 'résultat',\n value: 'valeur',\n },\n\n attributes: {\n class: 'classe',\n classes: 'classes',\n style: 'style',\n styles: 'styles',\n attribute: 'attribut',\n attributes: 'attributs',\n property: 'propriété',\n properties: 'propriétés',\n },\n\n expressions: {\n characters: 'caractères',\n inclusive: 'inclusif',\n exclusive: 'exclusif',\n first: 'premier',\n last: 'dernier',\n next: 'suivant',\n previous: 'précédent',\n prev: 'préc',\n at: 'à',\n random: 'aléatoire',\n closest: 'proche',\n parent: 'parent',\n children: 'enfants',\n within: 'dans',\n no: 'aucun',\n empty: 'vide',\n some: 'quelques',\n 'starts with': 'commence par',\n 'ends with': 'finit par',\n 'ignoring case': 'en ignorant la casse',\n 'sorted by': 'trié par',\n 'mapped to': 'transformé en',\n 'split by': 'divisé par',\n 'joined by': 'joint par',\n },\n};\n","// packages/i18n/src/parser/fr.ts\n\nimport { fr } from '../dictionaries/fr';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * French keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in French:\n * - `sur clic basculer .active` → parses as `on click toggle .active`\n * - `si vrai alors enregistrer \"bonjour\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `sur click basculer .active` also works (French `sur` + English `click`)\n *\n * @example\n * ```typescript\n * import { frKeywords } from '@lokascript/i18n/parser/fr';\n *\n * frKeywords.resolve('basculer'); // 'toggle'\n * frKeywords.toLocale('on'); // 'sur'\n * ```\n */\nexport const frKeywords: KeywordProvider = createKeywordProvider(fr, 'fr', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { fr as frDictionary } from '../dictionaries/fr';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const de: Dictionary = {\n commands: {\n on: 'bei',\n tell: 'sagen',\n trigger: 'auslösen',\n send: 'senden',\n take: 'nehmen',\n put: 'setzen',\n set: 'festlegen',\n get: 'erhalten',\n add: 'hinzufügen',\n remove: 'entfernen',\n toggle: 'umschalten',\n // command blur (the events section has the blur EVENT word; without this\n // entry the transformer fell back to it and no profile read it as the verb)\n blur: 'defokussieren',\n hide: 'verstecken',\n show: 'zeigen',\n // Align with the semantic German profile's `if` primary (`falls`). The previous\n // `wenn` collides with the profile's `when` keyword (German `wenn` = both\n // \"if\" and \"when\"), so a transformed `if` resolved to `when` and the conditional\n // wrapper never formed (`if`/`put` dropped). Same dict↔profile alignment as id\n // `toggle` / get-value. `when` is unaffected (separate dict entry).\n if: 'falls',\n unless: 'wennnicht',\n repeat: 'wiederholen',\n for: 'für',\n while: 'während',\n until: 'bis',\n continue: 'weiter',\n break: 'unterbrechen',\n halt: 'anhalten',\n wait: 'warten',\n fetch: 'abrufen',\n call: 'aufrufen',\n return: 'zurückgeben',\n make: 'erstellen',\n log: 'protokollieren',\n throw: 'werfen',\n catch: 'fangen',\n measure: 'messen',\n transition: 'übergang',\n increment: 'erhöhen',\n decrement: 'verringern',\n default: 'standard',\n go: 'gehen',\n pushUrl: 'urlHinzufügen',\n replaceUrl: 'urlErsetzen',\n copy: 'kopieren',\n pick: 'auswählen',\n beep: 'piepton',\n js: 'js',\n async: 'asynchron',\n render: 'rendern',\n swap: 'tauschen',\n morph: 'verwandeln',\n settle: 'stabilisieren',\n append: 'anhängen',\n exit: 'beenden',\n install: 'installieren',\n breakpoint: 'haltepunkt',\n clear: 'bereinigen', // löschen is a remove alternative in the profile\n close: 'schließen',\n open: 'öffnen',\n select: 'markieren', // Batch 3: auswählen is the pick keyword — bare select rendered with it parses null\n clone: 'klonen',\n prepend: 'voranstellen',\n focus: 'fokussieren',\n },\n\n modifiers: {\n to: 'zu',\n from: 'von',\n into: 'in',\n with: 'mit',\n at: 'bei',\n in: 'in',\n of: 'von',\n as: 'als',\n by: 'durch',\n before: 'vor',\n after: 'nach',\n over: 'über',\n under: 'unter',\n between: 'zwischen',\n through: 'durch',\n without: 'ohne',\n },\n\n events: {\n click: 'klick',\n dblclick: 'doppelklick',\n // mousedown/mouseup: English passthrough — no native form round-trips on the\n // parse side (V3c probe 2026-07-14: fused forms captured verbatim, split forms\n // shattered to their first word — live broken listeners in repeat-until-event).\n // The Batch-2 id-keyup precedent; revisit if S5b + tokenizer gain native entries.\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'mauseintreten',\n mouseleave: 'mausverlassen',\n // V3 Batch 2: fused/dead event words realigned to the de tokenizer's\n // registered forms (S5b's `maus über`/`taste runter` are aspirational — they\n // do not tokenize; `mausüber` etc. captured event=expression:undefined).\n mouseover: 'maus drüber',\n mouseout: 'maus weg',\n mousemove: 'mausbewegen',\n keydown: 'taste unten',\n keyup: 'taste oben',\n keypress: 'tastedrücken',\n focus: 'fokus',\n // matches commands.blur (which shadows this at render time) and the live\n // corpus render; `unscharf` was dead vocab that captured no event\n blur: 'defokussieren',\n change: 'ändern',\n input: 'eingabe',\n submit: 'absenden',\n reset: 'zurücksetzen',\n load: 'laden',\n unload: 'entladen',\n // 'größeändern' was a malformed compound: German either separates the verb\n // phrase ('Größe ändern') or compounds with the linking -n- ('Größenänderung').\n resize: 'größenänderung',\n scroll: 'scrollen',\n touchstart: 'berührungstart',\n touchend: 'berührungend',\n touchmove: 'berührungbewegen',\n touchcancel: 'berührungabbrechen',\n },\n\n logical: {\n when: 'wenn',\n where: 'wo',\n and: 'und',\n or: 'oder',\n not: 'nicht',\n is: 'ist',\n exists: 'existiert',\n matches: 'passt',\n contains: 'enthält',\n includes: 'beinhaltet',\n equals: 'gleicht',\n has: 'hat',\n have: 'habe',\n then: 'dann',\n else: 'sonst',\n otherwise: 'andernfalls',\n end: 'ende',\n live: 'live',\n changes: 'ändert',\n },\n\n temporal: {\n seconds: 'sekunden',\n second: 'sekunde',\n milliseconds: 'millisekunden',\n millisecond: 'millisekunde',\n minutes: 'minuten',\n minute: 'minute',\n hours: 'stunden',\n hour: 'stunde',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'std',\n times: 'mal',\n },\n\n values: {\n true: 'wahr',\n false: 'falsch',\n null: 'null',\n undefined: 'undefiniert',\n it: 'es',\n its: 'sein',\n me: 'ich',\n my: 'mein',\n you: 'du',\n your: 'dein',\n yourself: 'dich selbst',\n myself: 'ich selbst',\n element: 'element',\n target: 'ziel',\n detail: 'detail',\n event: 'ereignis',\n window: 'fenster',\n document: 'dokument',\n body: 'körper',\n result: 'ergebnis',\n value: 'wert',\n },\n\n attributes: {\n class: 'klasse',\n classes: 'klassen',\n style: 'stil',\n styles: 'stile',\n attribute: 'attribut',\n attributes: 'attribute',\n property: 'eigenschaft',\n properties: 'eigenschaften',\n },\n\n expressions: {\n characters: 'Zeichen',\n inclusive: 'inklusiv',\n exclusive: 'exklusiv',\n first: 'erste',\n last: 'letzte',\n next: 'nächste',\n previous: 'vorherige',\n prev: 'vorh',\n at: 'bei',\n random: 'zufällig',\n // `nächste` already serves `next` (line above). German `nächste` is\n // genuinely ambiguous (next/nearest), so emitting it for `closest` too\n // collided: the semantic tokenizer normalizes `nächste`→next (a deliberate\n // last-wins choice — see german.ts), and a closest reading is impossible to\n // recover. Use the unambiguous `nächstgelegene` (\"nearest-located\") for\n // closest so the two readings stay distinct end-to-end.\n closest: 'nächstgelegene',\n parent: 'elternteil',\n children: 'kinder',\n within: 'innerhalb',\n no: 'kein',\n empty: 'leer',\n some: 'einige',\n 'starts with': 'beginnt mit',\n 'ends with': 'endet mit',\n 'ignoring case': 'ohne Groß-/Kleinschreibung',\n 'sorted by': 'sortiert nach',\n 'mapped to': 'zugeordnet zu',\n 'split by': 'geteilt durch',\n 'joined by': 'verbunden mit',\n },\n};\n","// packages/i18n/src/parser/de.ts\n\nimport { de } from '../dictionaries/de';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * German keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in German:\n * - `bei klick umschalten .active` → parses as `on click toggle .active`\n * - `wenn wahr dann protokollieren \"hallo\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `bei click umschalten .active` also works (German `bei` + English `click`)\n *\n * German is a useful test case because:\n * - Compound words (Zusammensetzungen) are common\n * - Different word order in clauses (V2 in main, V-final in subordinate)\n * - Case system (nominative, accusative, dative, genitive)\n *\n * @example\n * ```typescript\n * import { deKeywords } from '@lokascript/i18n/parser/de';\n *\n * deKeywords.resolve('umschalten'); // 'toggle'\n * deKeywords.toLocale('on'); // 'bei'\n * ```\n */\nexport const deKeywords: KeywordProvider = createKeywordProvider(de, 'de', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { de as deDictionary } from '../dictionaries/de';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const ar: Dictionary = {\n commands: {\n on: 'على',\n tell: 'أخبر',\n trigger: 'تشغيل',\n send: 'أرسل',\n take: 'خذ',\n put: 'ضع',\n set: 'اضبط',\n get: 'احصل',\n add: 'أضف',\n remove: 'احذف',\n toggle: 'بدل',\n hide: 'اخف',\n show: 'اظهر',\n if: 'إذا',\n // Single-token form: the semantic ar tokenizer splits the two-word `إلا إذا`\n // into `إلا` + `إذا`(if), which derails the `unless` block. `إلا` alone is the\n // conventional Arabic shorthand and matches the ar profile's unless keyword.\n unless: 'إلا',\n repeat: 'كرر',\n for: 'لكل',\n while: 'بينما',\n until: 'حتى',\n continue: 'واصل',\n break: 'توقف',\n halt: 'أوقف',\n wait: 'انتظر',\n fetch: 'احضر',\n call: 'استدع',\n return: 'ارجع',\n make: 'اصنع',\n log: 'سجل',\n throw: 'ارم',\n catch: 'التقط',\n measure: 'قس',\n transition: 'انتقال',\n increment: 'زِد',\n decrement: 'أنقص',\n default: 'افتراضي',\n go: 'اذهب',\n pushUrl: 'ادفع رابط',\n replaceUrl: 'استبدل رابط',\n copy: 'انسخ',\n pick: 'اختر',\n beep: 'صفّر',\n js: 'جافاسكربت',\n async: 'متزامن',\n render: 'ارسم',\n swap: 'استبدل', // profile primary; 'بدّل' is toggle's word (parsed as toggle)\n morph: 'حوّل',\n settle: 'استقر',\n append: 'ألحق',\n exit: 'اخرج',\n install: 'ثبّت',\n breakpoint: 'نقطة-توقف',\n clear: 'نظّف', // امسح is a remove alternative in the profile\n close: 'أغلق',\n open: 'افتح',\n select: 'ظلل', // Batch 3: اختر is the pick keyword — bare select rendered with it parses null\n clone: 'استنسخ',\n prepend: 'سبق',\n socket: 'مقبس',\n },\n\n modifiers: {\n to: 'إلى',\n from: 'من',\n into: 'في',\n with: 'مع',\n at: 'عند',\n in: 'في',\n of: 'من',\n as: 'كـ',\n by: 'بواسطة',\n before: 'قبل',\n after: 'بعد',\n over: 'فوق',\n under: 'تحت',\n between: 'بين',\n through: 'عبر',\n without: 'بدون',\n },\n\n events: {\n click: 'نقر',\n // V3c burn-down (2026-07-14): English passthrough — no native form round-trips\n // on the parse side (probe: split forms shatter, fused forms capture verbatim).\n dblclick: 'dblclick',\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n mouseover: 'فأرة فوق',\n mouseout: 'mouseout',\n mousemove: 'mousemove',\n keydown: 'مفتاح أسفل',\n keyup: 'مفتاح أعلى',\n keypress: 'keypress',\n focus: 'تركيز',\n blur: 'ضبابية',\n change: 'تغيير',\n input: 'إدخال',\n submit: 'إرسال',\n reset: 'reset',\n load: 'تحميل',\n unload: 'unload',\n resize: 'تغيير حجم',\n scroll: 'تمرير',\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n touchcancel: 'touchcancel',\n },\n\n logical: {\n when: 'عندما',\n where: 'أين',\n and: 'و',\n or: 'أو',\n not: 'ليس',\n is: 'هو',\n exists: 'موجود',\n matches: 'يطابق',\n contains: 'يحتوي',\n includes: 'يشمل',\n equals: 'يساوي',\n has: 'لديه',\n have: 'لدي',\n then: 'ثم',\n else: 'وإلا',\n otherwise: 'خلاف ذلك',\n end: 'النهاية',\n live: 'حي',\n bind: 'اربط',\n changes: 'يتغير',\n },\n\n temporal: {\n seconds: 'ثوانِ',\n second: 'ثانية',\n milliseconds: 'ميلي ثانية',\n millisecond: 'ميلي ثانية',\n minutes: 'دقائق',\n minute: 'دقيقة',\n hours: 'ساعات',\n hour: 'ساعة',\n ms: 'م.ث',\n s: 'ث',\n min: 'د',\n h: 'س',\n times: 'مرات',\n },\n\n values: {\n true: 'صحيح',\n false: 'خطأ',\n null: 'null',\n undefined: 'غير معرف',\n it: 'هو',\n its: 'له',\n me: 'أنا',\n my: 'لي',\n myself: 'نفسي',\n you: 'أنت',\n your: 'لك',\n yourself: 'نفسك',\n element: 'عنصر',\n target: 'هدف',\n detail: 'تفاصيل',\n event: 'حدث',\n window: 'نافذة',\n document: 'وثيقة',\n body: 'جسم',\n result: 'نتيجة',\n value: 'قيمة',\n },\n\n attributes: {\n class: 'فئة',\n classes: 'فئات',\n style: 'أسلوب',\n styles: 'أساليب',\n attribute: 'خاصية',\n attributes: 'خصائص',\n property: 'خاصية',\n properties: 'خصائص',\n },\n\n expressions: {\n characters: 'حروف',\n inclusive: 'شامل',\n exclusive: 'حصري',\n first: 'أول',\n last: 'آخر',\n next: 'التالي',\n previous: 'السابق',\n prev: 'سابق',\n at: 'عند',\n random: 'عشوائي',\n closest: 'الأقرب',\n parent: 'والد',\n children: 'أطفال',\n within: 'داخل',\n no: 'لا يوجد',\n empty: 'فارغ',\n some: 'بعض',\n 'starts with': 'يبدأ بـ',\n 'ends with': 'ينتهي بـ',\n 'ignoring case': 'مع تجاهل الحالة',\n 'sorted by': 'مرتب حسب',\n 'mapped to': 'محول إلى',\n 'split by': 'مقسم بواسطة',\n 'joined by': 'مدموج بواسطة',\n },\n};\n","// packages/i18n/src/parser/ar.ts\n\nimport { ar } from '../dictionaries/ar';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Arabic keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Arabic:\n * - `على نقر بدل .active` → parses as `on click toggle .active`\n * - `إذا صحيح ثم سجل \"مرحبا\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `على click بدل .active` also works (Arabic `على` + English `click`)\n *\n * Arabic is a crucial test case because:\n * - Right-to-left (RTL) script\n * - Different character set (Unicode Arabic block)\n * - Space-separated words with diacritics\n * - Tests parser's Unicode handling robustly\n *\n * Note: The parser handles RTL text correctly because tokenization\n * is based on whitespace/operator boundaries, not visual direction.\n *\n * @example\n * ```typescript\n * import { arKeywords } from '@lokascript/i18n/parser/ar';\n *\n * arKeywords.resolve('بدل'); // 'toggle'\n * arKeywords.toLocale('on'); // 'على'\n * ```\n */\nexport const arKeywords: KeywordProvider = createKeywordProvider(ar, 'ar', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { ar as arDictionary } from '../dictionaries/ar';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const ko: Dictionary = {\n commands: {\n on: '에',\n tell: '말하다',\n trigger: '트리거',\n send: '보내다',\n take: '가져오다',\n put: '넣다',\n set: '설정',\n get: '얻다',\n add: '추가',\n remove: '제거',\n toggle: '토글',\n hide: '숨기다',\n show: '보이다',\n if: '만약',\n unless: '아니라면', // distinct from else `아니면` (line ~131) — was a homonym\n repeat: '반복',\n for: '각각', // profile's for word — 동안 is while (collision)\n while: '동안',\n until: '까지',\n continue: '계속',\n break: '중단',\n halt: '정지',\n wait: '대기',\n fetch: '가져오기',\n call: '호출',\n return: '반환',\n make: '만들다',\n log: '로그',\n throw: '던지다',\n catch: '잡다',\n measure: '측정',\n transition: '전환',\n increment: '증가',\n decrement: '감소',\n default: '기본값',\n go: '이동',\n pushUrl: 'URL푸시',\n replaceUrl: 'URL교체',\n copy: '복사',\n pick: '선택',\n beep: '비프',\n js: 'JS실행',\n async: '비동기',\n render: '렌더링',\n swap: '교환',\n morph: '변형',\n settle: '안정',\n append: '덧붙이다', // profile primary; '추가' is add's word (parsed as add)\n // 종료 → 나가기: realigned to the semantic profile primary (ko.ts `exit: 나가기`,\n // whose comment already flags the 종료 end-collision). Rendered as 종료 it\n // tokenized as a plain identifier, so a guard-clause `exit` never parsed.\n exit: '나가기',\n install: '설치',\n breakpoint: '중단점',\n clear: '지우기',\n close: '닫기',\n open: '열기',\n select: '고르기', // Batch 3: 선택 is the pick keyword — bare select rendered with it parses null\n clone: '복제',\n prepend: '앞에추가',\n socket: '소켓',\n },\n\n modifiers: {\n to: '에',\n from: '에서',\n into: '으로',\n with: '와',\n at: '에',\n in: '안에',\n of: '의',\n as: '로',\n by: '에의해',\n before: '전에',\n after: '후에',\n over: '위에',\n under: '아래',\n between: '사이',\n through: '통해',\n without: '없이',\n },\n\n events: {\n click: '클릭',\n dblclick: '더블클릭',\n mousedown: '마우스다운',\n mouseup: '마우스업',\n mouseenter: '마우스엔터',\n mouseleave: '마우스리브',\n mouseover: '마우스오버',\n mouseout: '마우스아웃',\n mousemove: '마우스무브',\n keydown: '키다운',\n keyup: '키업',\n keypress: '키프레스',\n focus: '포커스',\n blur: '블러',\n change: '변경',\n input: '입력',\n submit: '제출',\n reset: '재설정', // Batch 3: 리셋 captured on.event as expression (broken listener) — profile word round-trips\n load: '로드',\n unload: 'unload',\n resize: '리사이즈',\n scroll: '스크롤',\n // V3c burn-down (2026-07-14): English passthrough — no native form round-trips\n // on the parse side (probe: split forms shatter, fused forms capture verbatim).\n touchstart: 'touchstart',\n touchend: '터치종료',\n touchmove: 'touchmove',\n touchcancel: '터치취소',\n },\n\n logical: {\n when: '때',\n where: '어디',\n and: '그리고',\n or: '또는',\n not: '아니',\n is: '이다',\n exists: '존재',\n matches: '일치',\n contains: '포함',\n includes: '포함하다',\n equals: '같다',\n has: '있다',\n have: '있다',\n then: '그러면',\n else: '아니면',\n otherwise: '그렇지않으면',\n end: '끝',\n live: '라이브',\n bind: '바인드',\n changes: '변경되면',\n },\n\n temporal: {\n seconds: '초',\n second: '초',\n milliseconds: '밀리초',\n millisecond: '밀리초',\n minutes: '분',\n minute: '분',\n hours: '시간',\n hour: '시간',\n ms: 'ms',\n s: '초',\n min: '분',\n h: '시',\n times: '번',\n },\n\n values: {\n true: '참',\n false: '거짓',\n null: '널',\n undefined: '정의안됨',\n it: '그것',\n its: '그것의',\n me: '나',\n my: '내',\n myself: '나자신',\n you: '너',\n your: '네',\n yourself: '너자신',\n element: '요소',\n target: '대상',\n detail: '세부',\n event: '이벤트',\n window: '창',\n document: '문서',\n body: '바디',\n result: '결과',\n value: '값',\n },\n\n attributes: {\n class: '클래스',\n classes: '클래스들',\n style: '스타일',\n styles: '스타일들',\n attribute: '속성',\n attributes: '속성들',\n property: '프로퍼티',\n properties: '프로퍼티들',\n },\n\n expressions: {\n characters: '문자',\n inclusive: '포함',\n exclusive: '제외',\n first: '첫번째',\n last: '마지막',\n next: '다음',\n previous: '이전',\n prev: '이전',\n at: '에서',\n random: '무작위',\n closest: '가장가까운',\n parent: '부모',\n children: '자식',\n within: '이내',\n no: '없음',\n empty: '비어있는',\n some: '일부',\n 'starts with': '로시작',\n 'ends with': '로끝나는',\n 'ignoring case': '대소문자_무시',\n 'sorted by': '로_정렬',\n 'mapped to': '로_변환',\n 'split by': '로_분할',\n 'joined by': '로_결합',\n },\n};\n","// packages/i18n/src/parser/ko.ts\n\nimport { ko } from '../dictionaries/ko';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Korean keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Korean:\n * - `에 클릭 토글 .active` → parses as `on click toggle .active`\n * - `만약 참 그러면 로그 \"안녕하세요\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `에 click 토글 .active` also works (Korean `에` + English `click`)\n *\n * Korean is a useful test case because:\n * - SOV word order (Subject-Object-Verb)\n * - Hangul script (syllabic blocks)\n * - Agglutinative morphology with particles\n * - Tests parser's Unicode handling with Korean characters\n *\n * @example\n * ```typescript\n * import { koKeywords } from '@lokascript/i18n/parser/ko';\n *\n * koKeywords.resolve('토글'); // 'toggle'\n * koKeywords.toLocale('on'); // '에'\n * ```\n */\nexport const koKeywords: KeywordProvider = createKeywordProvider(ko, 'ko', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { ko as koDictionary } from '../dictionaries/ko';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const zh: Dictionary = {\n commands: {\n on: '当',\n tell: '告诉',\n trigger: '触发',\n send: '发送',\n // `拿取` (the semantic zh profile's take primary), not `获取` — `获取` is the\n // profile's GET primary, so emitting it for take made `take …` parse as get\n // (take-class-from-siblings: phantom get, take dropped). Exposed by the get-zh-ba\n // pattern; same dict↔profile homonym family as pl get/fetch.\n take: '拿取',\n put: '放置',\n set: '设置',\n get: '获得',\n add: '添加',\n remove: '移除',\n toggle: '切换',\n hide: '隐藏',\n show: '显示',\n if: '如果',\n unless: '除非',\n repeat: '重复',\n for: '为',\n while: '当',\n until: '直到',\n continue: '继续',\n break: '中断',\n halt: '停止',\n wait: '等待',\n // 抓取 (zhuāqǔ, \"grab/scrape\") is the semantic zh profile's `fetch` primary;\n // 获取 (huòqǔ) is its `get` primary, so emitting 获取 here made the semantic\n // parser read a transformed `fetch` as `get`. See ZH_BLOCK_BODY_SCOPE.md #3.\n fetch: '抓取',\n call: '调用',\n return: '返回',\n make: '制作',\n log: '日志',\n throw: '抛出',\n catch: '捕获',\n measure: '测量',\n transition: '过渡',\n increment: '增加',\n decrement: '减少',\n default: '默认',\n go: '前往',\n pushUrl: '推送网址',\n replaceUrl: '替换网址',\n copy: '复制',\n pick: '选取',\n beep: '蜂鸣',\n js: 'JS执行',\n async: '异步',\n render: '渲染',\n swap: '交换',\n morph: '变形',\n settle: '稳定',\n append: '追加',\n exit: '退出',\n install: '安装',\n breakpoint: '断点',\n clear: '清除',\n close: '关闭',\n open: '打开',\n select: '选择',\n clone: '克隆',\n prepend: '前置',\n },\n\n modifiers: {\n to: '到',\n from: '从',\n into: '进入',\n with: '与',\n at: '在',\n in: '在',\n of: '的',\n as: '作为',\n by: '通过',\n before: '之前',\n after: '之后',\n over: '在上',\n under: '在下',\n between: '之间',\n through: '通过',\n without: '没有',\n },\n\n events: {\n click: '点击',\n dblclick: '双击',\n // mousedown/mouseup: English passthrough — no native form round-trips on the\n // parse side (V3c probe 2026-07-14: fused forms captured verbatim, split forms\n // shattered to their first word — live broken listeners in repeat-until-event).\n // The Batch-2 id-keyup precedent; revisit if S5b + tokenizer gain native entries.\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n // V3 Batch 2: 鼠标悬停 captured no event (expression:undefined) — realigned\n // to the tokenizer-registered 鼠标移入 (also S5b-listed). 按键抬起\n // prefix-shattered to 按键 and captured `keydown` (a keyup handler firing\n // on keydown) → 松键, the S5b/tokenizer form. keydown keeps 按键按下\n // (captures keydown via the registered 按键 prefix; S5b-aliased) — fixing\n // it to bare 按键 would collide with keypress below.\n mouseover: '鼠标移入',\n mouseout: '鼠标移出',\n mousemove: '鼠标移动',\n keydown: '按键按下',\n keyup: '松键',\n keypress: 'keypress',\n focus: '聚焦',\n blur: '失焦',\n change: '改变',\n input: '输入',\n submit: '提交',\n reset: '重置',\n load: '加载',\n unload: '卸载',\n resize: '调整大小',\n scroll: '滚动',\n touchstart: '触摸开始',\n touchend: 'touchend',\n touchmove: '触摸移动',\n // V3c burn-down (2026-07-14): English passthrough — no native form round-trips\n // on the parse side (probe: split forms shatter, fused forms capture verbatim).\n touchcancel: 'touchcancel',\n },\n\n logical: {\n when: '当',\n where: '哪里',\n and: '和',\n or: '或',\n not: '非',\n is: '是',\n exists: '存在',\n matches: '匹配',\n contains: '包含',\n includes: '包括',\n equals: '等于',\n has: '有',\n have: '有',\n then: '那么',\n else: '否则',\n otherwise: '要不然',\n end: '结束',\n live: '实时',\n bind: '绑定',\n changes: '改变时',\n },\n\n temporal: {\n seconds: '秒',\n second: '秒',\n milliseconds: '毫秒',\n millisecond: '毫秒',\n minutes: '分钟',\n minute: '分钟',\n hours: '小时',\n hour: '小时',\n ms: '毫秒',\n s: '秒',\n min: '分',\n h: '时',\n times: '次',\n },\n\n values: {\n true: '真',\n false: '假',\n null: '空',\n undefined: '未定义',\n it: '它',\n its: '它的',\n me: '我',\n my: '我的',\n myself: '我自己',\n you: '你',\n your: '你的',\n yourself: '你自己',\n element: '元素',\n target: '目标',\n detail: '详情',\n event: '事件',\n window: '窗口',\n document: '文档',\n body: '主体',\n result: '结果',\n value: '值',\n },\n\n attributes: {\n class: '类',\n classes: '类别',\n style: '样式',\n styles: '样式集',\n attribute: '属性',\n attributes: '属性集',\n property: '特性',\n properties: '特性集',\n },\n\n expressions: {\n characters: '字符',\n inclusive: '包含',\n exclusive: '排除',\n first: '第一个',\n last: '最后一个',\n next: '下一个',\n previous: '上一个',\n prev: '上个',\n at: '在',\n random: '随机',\n closest: '最近的',\n parent: '父级',\n children: '子级',\n within: '之内',\n no: '没有',\n empty: '空的',\n some: '一些',\n 'starts with': '以开头',\n 'ends with': '以结尾',\n 'ignoring case': '忽略大小写',\n 'sorted by': '按_排序',\n 'mapped to': '映射为',\n 'split by': '按_分割',\n 'joined by': '用_连接',\n },\n};\n","// packages/i18n/src/parser/zh.ts\n\nimport { zh } from '../dictionaries/zh';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Chinese (Simplified) keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Chinese:\n * - `当 点击 切换 .active` → parses as `on click toggle .active`\n * - `如果 真 那么 日志 \"你好\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `当 click 切换 .active` also works (Chinese `当` + English `click`)\n *\n * Chinese is a useful test case because:\n * - SVO word order (similar to English)\n * - Logographic script (Chinese characters)\n * - Isolating morphology (minimal inflection)\n * - Tests parser's Unicode handling with CJK characters\n * - Large developer population\n *\n * @example\n * ```typescript\n * import { zhKeywords } from '@lokascript/i18n/parser/zh';\n *\n * zhKeywords.resolve('切换'); // 'toggle'\n * ```\n */\nexport const zhKeywords: KeywordProvider = createKeywordProvider(zh, 'zh', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { zh as zhDictionary } from '../dictionaries/zh';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const tr: Dictionary = {\n commands: {\n on: 'üzerinde',\n tell: 'söyle',\n trigger: 'tetikle',\n send: 'gönder',\n take: 'tut', // auditor: dict emitted a word the profile reads differently\n put: 'koy',\n set: 'ayarla',\n get: 'al',\n add: 'ekle',\n remove: 'kaldır',\n toggle: 'değiştir',\n hide: 'gizle',\n show: 'göster',\n if: 'eğer',\n unless: 'değilse',\n repeat: 'tekrarla',\n for: 'için',\n // `süresince` (the semantic tr profile's while primary), not `iken`: `iken`\n // is the profile's WHEN primary (logical.when below also emits it), so a\n // fronted repeat-while head tokenized as `when` and the condition dropped\n // wholesale. Same dict↔profile homonym disambiguation as pl get/pobierz.\n while: 'süresince',\n until: 'kadar',\n continue: 'devam',\n break: 'dur',\n halt: 'durdur',\n wait: 'bekle',\n fetch: 'getir',\n call: 'çağır',\n return: 'dön',\n make: 'yap',\n log: 'kaydet',\n throw: 'fırlat',\n catch: 'yakala',\n measure: 'ölç',\n transition: 'geçiş',\n increment: 'artır',\n decrement: 'azalt',\n default: 'varsayılan',\n go: 'git',\n pushUrl: 'urlEkle',\n replaceUrl: 'urlDeğiştir',\n copy: 'kopyala',\n pick: 'seç',\n beep: 'bip',\n js: 'js',\n async: 'asenkron',\n render: 'render',\n swap: 'takas',\n morph: 'dönüştür',\n settle: 'sabitlen',\n append: 'iliştir', // profile primary; 'ekle' is add's word (parsed as add)\n exit: 'çık',\n install: 'kur',\n breakpoint: 'kesme-noktası',\n clear: 'temizle',\n close: 'kapat',\n open: 'aç',\n select: 'vurgula', // Batch 3: seç is the pick keyword — bare select rendered with it parses null\n clone: 'klonla',\n prepend: 'başınaekle',\n socket: 'soket',\n },\n\n modifiers: {\n to: 'e',\n from: 'den',\n into: 'içine',\n with: 'ile',\n at: 'de',\n in: 'içinde',\n of: 'nin',\n as: 'olarak',\n by: 'tarafından',\n before: 'önce',\n after: 'sonra',\n over: 'üzerinde',\n under: 'altında',\n between: 'arasında',\n through: 'boyunca',\n without: 'olmadan',\n },\n\n events: {\n click: 'tıklama',\n dblclick: 'dblclick',\n // Fused (no `_`): the semantic tokenizer splits on `_`, breaking event\n // recognition (mousedown → \"bas\" / mouseup mis-captured). Mirrors the #535\n // ru/uk fuse + #510 resize fix.\n mousedown: 'farebas',\n mouseup: 'farebırak',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n // V3 Batch 2: same `_`-split class (tuş_bas captured verbatim `bas` — a\n // listener for a DOM event named \"bas\") — realigned to the S5b/tokenizer\n // fused forms.\n mouseover: 'fareiçinde',\n mouseout: 'faredışında',\n mousemove: 'mousemove',\n keydown: 'tuşbasma',\n keyup: 'tuşbırakma',\n // V3c burn-down (2026-07-14): English passthrough — no native form round-trips\n // on the parse side (probe: split forms shatter, fused forms capture verbatim).\n keypress: 'keypress',\n focus: 'odak',\n blur: 'bulanık',\n change: 'değişim',\n input: 'giriş',\n submit: 'gönderme', // Batch 3: gönder is the send verb — on-submit listener captured event \"send\"\n reset: 'sıfırla',\n load: 'yükle',\n unload: 'unload',\n resize: 'boyutlandırma',\n scroll: 'kaydır',\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n touchcancel: 'touchcancel',\n },\n\n logical: {\n when: 'iken',\n where: 'nerede',\n and: 've',\n or: 'veya',\n not: 'değil',\n is: 'dir',\n exists: 'var',\n matches: 'eşleşir',\n contains: 'içerir',\n // `includes` takes `contains`' word: both engines read them as one operator,\n // and `dahil` is `inclusive` (pick's range word), which the reader takes it for.\n includes: 'içerir',\n equals: 'eşittir',\n has: 'var',\n have: 'var',\n then: 'ardından',\n else: 'yoksa',\n otherwise: 'aksi_halde',\n end: 'son',\n live: 'canlı',\n changes: 'değiştiğinde',\n },\n\n temporal: {\n seconds: 'saniye',\n second: 'saniye',\n milliseconds: 'milisaniye',\n millisecond: 'milisaniye',\n minutes: 'dakika',\n minute: 'dakika',\n hours: 'saat',\n hour: 'saat',\n ms: 'ms',\n s: 's',\n min: 'dk',\n h: 'sa',\n times: 'kez',\n },\n\n values: {\n true: 'doğru',\n false: 'yanlış',\n null: 'null',\n undefined: 'tanımsız',\n it: 'o',\n its: 'onun',\n me: 'ben',\n my: 'benim',\n myself: 'kendim',\n you: 'sen',\n your: 'senin',\n yourself: 'kendin',\n element: 'öğe',\n target: 'hedef',\n detail: 'detay',\n event: 'olay',\n window: 'pencere',\n document: 'belge',\n body: 'gövde',\n result: 'sonuç',\n value: 'değer',\n },\n\n attributes: {\n class: 'sınıf',\n classes: 'sınıflar',\n style: 'stil',\n styles: 'stiller',\n attribute: 'özellik',\n attributes: 'özellikler',\n property: 'özellik',\n properties: 'özellikler',\n },\n\n expressions: {\n characters: 'karakterler',\n inclusive: 'dahil',\n exclusive: 'hariç',\n first: 'ilk',\n // 'son' is also the END keyword emission (block terminator), and the\n // parser's end-recognizers match it by value — so a positional `last`\n // emission of 'son' terminated the enclosing block mid-condition\n // (focus-trap's `eşleşir son <button/>` dropped the branch body; the sw\n // mwisho class). 'sonuncu' (\"the last one\") is unambiguous.\n last: 'sonuncu',\n next: 'sonraki',\n previous: 'önceki',\n prev: 'önc',\n at: 'de',\n random: 'rastgele',\n closest: 'enyakın',\n parent: 'ebeveyn',\n children: 'çocuklar',\n within: 'içinde',\n no: 'yok',\n empty: 'boş',\n some: 'bazı',\n 'starts with': 'ile başlar',\n 'ends with': 'ile biter',\n 'ignoring case': 'büyük küçük harf duyarsız',\n 'sorted by': 'göre sıralı',\n 'mapped to': 'ye dönüştürülmüş',\n 'split by': 'ile bölünmüş',\n 'joined by': 'ile birleştirilmiş',\n },\n};\n","// packages/i18n/src/parser/tr.ts\n\nimport { tr } from '../dictionaries/tr';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Turkish keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Turkish:\n * - `üzerinde tıklama değiştir .active` → parses as `on click toggle .active`\n * - `eğer doğru ise kaydet \"merhaba\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `üzerinde click değiştir .active` also works (Turkish `üzerinde` + English `click`)\n *\n * Turkish is a useful test case because:\n * - SOV word order (Subject-Object-Verb)\n * - Agglutinative morphology with suffixes\n * - Vowel harmony rules\n * - Latin script with special characters (ı, ğ, ş, ç, ö, ü)\n * - Tests parser's handling of extended Latin characters\n *\n * @example\n * ```typescript\n * import { trKeywords } from '@lokascript/i18n/parser/tr';\n *\n * trKeywords.resolve('değiştir'); // 'toggle'\n * trKeywords.toLocale('on'); // 'üzerinde'\n * ```\n */\nexport const trKeywords: KeywordProvider = createKeywordProvider(tr, 'tr', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { tr as trDictionary } from '../dictionaries/tr';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const id: Dictionary = {\n commands: {\n on: 'pada',\n tell: 'katakan',\n trigger: 'picu',\n send: 'kirim',\n take: 'ambil',\n put: 'taruh',\n set: 'atur',\n get: 'dapatkan',\n add: 'tambah',\n remove: 'hapus',\n toggle: 'alihkan',\n hide: 'sembunyikan',\n show: 'tampilkan',\n if: 'jika',\n unless: 'kecuali',\n repeat: 'ulangi',\n for: 'untuk',\n while: 'selama',\n until: 'sampai',\n continue: 'lanjutkan',\n break: 'hentikan',\n halt: 'berhenti',\n wait: 'tunggu',\n // profile primary; 'ambil' is take's word — emitting it for fetch made every\n // fetch parse as take once the fused take-event pattern came alive (the de\n // holen/abrufen bug class)\n fetch: 'muat',\n call: 'panggil',\n return: 'kembali',\n make: 'buat',\n log: 'catat',\n throw: 'lempar',\n catch: 'tangkap',\n measure: 'ukur',\n transition: 'transisi',\n // naikkan (raise), not tambahkan — tambahkan is the semantic profile's\n // `add` alternative, so emitting it made increment-counter parse as ADD\n // (the #373 collision family). naikkan is the profile's increment\n // alternative, pairing naturally with the decrement side.\n increment: 'naikkan',\n decrement: 'kurangi',\n default: 'bawaan',\n go: 'pergi',\n pushUrl: 'tambahUrl',\n replaceUrl: 'gantiUrl',\n copy: 'salin',\n pick: 'pilih',\n beep: 'bunyi',\n js: 'js',\n async: 'asinkron',\n render: 'olah', // auditor: dict emitted a word the profile reads differently\n swap: 'tukar',\n morph: 'ubah', // auditor: dict emitted a word the profile reads differently\n settle: 'stabilkan', // auditor: dict emitted a word the profile reads differently\n append: 'sisipkan', // profile primary; 'tambah_akhir' splits and is unrecognized\n exit: 'keluar',\n install: 'pasang',\n breakpoint: 'titik-henti',\n clear: 'bersihkan', // hapus is the remove PRIMARY in the profile\n close: 'tutupkan', // Batch 3: tutup is the hide keyword — rendered close parsed as action=hide\n open: 'buka',\n select: 'tandai', // Batch 3: pilih is the pick keyword — bare select rendered with it parses null\n clone: 'klon',\n prepend: 'awali',\n },\n\n modifiers: {\n to: 'ke',\n from: 'dari',\n into: 'ke_dalam',\n with: 'dengan',\n at: 'di',\n in: 'dalam',\n of: 'dari',\n as: 'sebagai',\n by: 'oleh',\n before: 'sebelum',\n after: 'setelah',\n over: 'di_atas',\n under: 'di_bawah',\n between: 'antara',\n through: 'melalui',\n without: 'tanpa',\n },\n\n events: {\n click: 'klik',\n dblclick: 'dblclick',\n // mousedown/mouseup: English passthrough — no native form round-trips on the\n // parse side (V3c probe 2026-07-14: fused forms captured verbatim, split forms\n // shattered to their first word — live broken listeners in repeat-until-event).\n // The Batch-2 id-keyup precedent; revisit if S5b + tokenizer gain native entries.\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n // V3 Batch 2: mouse_atas/mouse_luar captured no event (the S5b forms\n // `mouse masuk`/`mouse keluar` are aspirational — they don't tokenize\n // either) — realigned to the tokenizer-registered natives. keydown keeps\n // tekan_tombol (captures keydown via the registered `tekan`; S5b-aliased).\n // keyup has NO parseable native (lepas is unregistered) → English\n // passthrough, matching the blur/reset precedent below.\n mouseover: 'arahkan',\n mouseout: 'tinggalkan',\n mousemove: 'mousemove',\n keydown: 'tekan_tombol',\n keyup: 'keyup',\n keypress: 'keypress',\n focus: 'fokus',\n blur: 'blur',\n change: 'ubah',\n input: 'masukan',\n submit: 'kirim',\n reset: 'reset',\n load: 'muat',\n unload: 'bongkar',\n resize: 'ubah_ukuran',\n scroll: 'gulir',\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n // V3c burn-down (2026-07-14): English passthrough — no native form round-trips\n // on the parse side (probe: split forms shatter, fused forms capture verbatim).\n touchcancel: 'touchcancel',\n },\n\n logical: {\n when: 'ketika',\n where: 'di_mana',\n and: 'dan',\n or: 'atau',\n not: 'bukan',\n is: 'adalah',\n exists: 'ada',\n matches: 'cocok',\n contains: 'berisi',\n includes: 'termasuk',\n equals: 'sama',\n has: 'punya',\n have: 'punya',\n then: 'lalu',\n else: 'lainnya',\n otherwise: 'sebaliknya',\n end: 'akhir',\n live: 'langsung',\n changes: 'berubah',\n },\n\n temporal: {\n seconds: 'detik',\n second: 'detik',\n milliseconds: 'milidetik',\n millisecond: 'milidetik',\n minutes: 'menit',\n minute: 'menit',\n hours: 'jam',\n hour: 'jam',\n ms: 'ms',\n s: 'd',\n min: 'mnt',\n h: 'j',\n times: 'kali',\n },\n\n values: {\n true: 'benar',\n false: 'salah',\n null: 'null',\n undefined: 'tidak_terdefinisi',\n it: 'itu',\n its: 'miliknya',\n me: 'saya',\n my: 'saya punya',\n myself: 'saya sendiri',\n you: 'kamu',\n your: 'kamu punya',\n yourself: 'kamu sendiri',\n element: 'elemen',\n target: 'target',\n detail: 'detail',\n event: 'peristiwa',\n window: 'jendela',\n document: 'dokumen',\n body: 'badan',\n result: 'hasil',\n value: 'nilai',\n },\n\n attributes: {\n class: 'kelas',\n classes: 'kelas_kelas',\n style: 'gaya',\n styles: 'gaya_gaya',\n attribute: 'atribut',\n attributes: 'atribut_atribut',\n property: 'properti',\n properties: 'properti_properti',\n },\n\n expressions: {\n characters: 'karakter',\n inclusive: 'inklusif',\n exclusive: 'eksklusif',\n first: 'pertama',\n last: 'terakhir',\n next: 'berikutnya',\n previous: 'sebelumnya',\n prev: 'sblm',\n at: 'di',\n random: 'acak',\n closest: 'terdekat',\n parent: 'induk',\n children: 'anak_anak',\n within: 'dalam',\n no: 'tidak_ada',\n empty: 'kosong',\n some: 'beberapa',\n 'starts with': 'dimulai dengan',\n 'ends with': 'diakhiri dengan',\n 'ignoring case': 'abaikan kapital',\n 'sorted by': 'diurutkan berdasarkan',\n 'mapped to': 'dipetakan ke',\n 'split by': 'dipisah oleh',\n 'joined by': 'digabung oleh',\n },\n};\n","// packages/i18n/src/parser/id.ts\n\nimport { id } from '../dictionaries/id';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Indonesian (Bahasa Indonesia) keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Indonesian:\n * - `pada klik ganti .active` → parses as `on click toggle .active`\n * - `jika benar lalu log \"Halo\"` → parses as `if true then log \"Hello\"`\n *\n * Indonesian is an SVO language with:\n * - Agglutinative morphology (prefixes/suffixes)\n * - No grammatical gender\n * - Prepositions (like English)\n * - Relatively simple syntax\n *\n * @example\n * ```typescript\n * import { idKeywords } from '@lokascript/i18n/parser/id';\n *\n * idKeywords.resolve('alihkan'); // 'toggle'\n * idKeywords.toLocale('on'); // 'pada'\n * ```\n */\nexport const idKeywords: KeywordProvider = createKeywordProvider(id, 'id', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { id as idDictionary } from '../dictionaries/id';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const qu: Dictionary = {\n commands: {\n on: 'kaqpi',\n tell: 'niy',\n trigger: 'kichay',\n send: 'kachay',\n take: 'hapiy', // auditor: dict emitted a word the profile reads differently\n put: 'churay',\n // churay is the semantic qu profile's `put` primary; `set` is churanay. Emitting\n // churay for set made the semantic parser read a transformed `set` as `put`.\n // See ZH_BLOCK_BODY_SCOPE.md (#2 sweep — keyword realignment, cf. zh fetch).\n set: 'churanay',\n // Align with the semantic quechua profile's `get` primary (`taripay`); the\n // previous `chaskiy` had no profile entry, so the transformed `get` dropped\n // (get-value parsed degenerate). Same dict↔profile alignment as id `toggle`.\n get: 'taripay',\n add: 'yapay',\n remove: 'qichuy',\n toggle: 'tikray',\n hide: 'pakay',\n show: 'rikuchiy',\n if: 'sichus',\n unless: 'mana sichus', // spaced phrase (\"if not\"); `_` form split to `mana`+`sichus`(=if) at parse time\n repeat: 'kutipay',\n for: 'sapankaq', // profile's for word — rayku doubles as `by`\n // `kaykamaqa` (the semantic qu profile's while primary), not `kay_kaq`: the\n // `_` form is unknown to the profile (and `_` words split at parse time, cf.\n // qhipaman_yapay), so the fronted repeat-while head never formed a `while`\n // node — the condition dropped wholesale. Same dict↔profile alignment as\n // vi render / de abrufen.\n while: 'kaykamaqa',\n until: 'hayk_akama',\n continue: 'purichiy',\n break: 'p_akiy',\n halt: 'sayay',\n wait: 'suyay',\n fetch: 'apamuy',\n call: 'qayay',\n return: 'kutimuy',\n make: 'ruray',\n // qillqay is the semantic qu profile's `copy` primary; `log` is qillqakuy.\n // Emitting qillqay for log made the parser read every transformed log as\n // copy (log-value/log-element/get-value lossy) — same realign as set above.\n log: 'qillqakuy',\n throw: 'wikchuy',\n catch: 'hapsiy',\n measure: 'tupuy',\n // pasay, not tikray: the semantic qu profile's toggle keyword is\n // t'ikray/tikray, so a tikray render collided with toggle and the\n // transition command never anchored (sw kama precedent, #569).\n transition: 'pasay',\n increment: 'yapachiy',\n decrement: 'pisiyachiy',\n default: 'ñawpaq_kaq',\n go: 'riy',\n pushUrl: 'url_tanqay',\n replaceUrl: 'url_tikray',\n copy: 'qillqay',\n pick: 'akllay',\n beep: 'waqay',\n js: 'js',\n async: 'mana_suyaspa',\n render: 'rikurichiy', // auditor: dict emitted a word the profile reads differently\n swap: \"t'inkuy\", // profile primary; 'rantin_tikray' splits, 'tikray' is toggle's word\n morph: 'tukunay', // auditor: dict emitted a word the profile reads differently\n settle: 'tiyakuy', // auditor: dict emitted a word the profile reads differently\n append: 'qatichiy', // profile's append primary (single token); `qhipaman_yapay` `_`-split to qhipaman+yapay(=add) at parse time\n exit: 'lluqsiy',\n install: 'tarpuy',\n breakpoint: 'sayachinay',\n clear: 'pichay',\n close: 'wichqay',\n open: 'paskay', // Batch 3: kichay is the trigger keyword — rendered open parsed null\n select: 'marcay', // Batch 3: akllay is the pick keyword — bare select rendered with it parses null\n clone: 'kikinchay',\n prepend: 'ñawpachiy',\n socket: 'tinkina',\n },\n\n modifiers: {\n to: 'man',\n from: 'manta',\n into: 'ukupi',\n with: 'wan',\n at: 'pi',\n in: 'ukupi',\n of: 'pa',\n as: 'hina',\n by: 'rayku',\n before: 'ñawpaqpi',\n after: 'qhepapi',\n over: 'hawapi',\n under: 'urapi',\n between: 'chawpipi',\n through: 'pasaspa',\n without: 'mana',\n },\n\n events: {\n click: 'ñitiy',\n dblclick: 'dblclick',\n // Fused (no `_`): the semantic tokenizer splits on `_` — and `rat_ñitiy` then\n // mis-captured as the `click` event (ñitiy→click). Mirrors the #535 ru/uk fuse.\n mousedown: 'ratñitiy',\n mouseup: 'rathuqariy',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n mouseover: 'mouseover',\n mouseout: 'mouseout',\n mousemove: 'mousemove',\n // V3 Batch 2: `yupana_ñitiy` split at `_` and mis-captured as the `click`\n // event (ñitiy→click, the same mechanism as the mousedown fuse above);\n // `yupana_huqariy` captured verbatim `huqariy`. Realigned to the\n // S5b/tokenizer forms.\n keydown: 'llave uray',\n keyup: 'llave hawa',\n keypress: 'keypress',\n focus: 'qhaway',\n blur: 'paqariy',\n change: 'kambiay', // Batch 3: tikray is the toggle verb — on-change listener captured event \"toggle\"\n input: 'yaykuchiy',\n submit: 'apaykachay', // Batch 3: kachay is the send verb — on-submit captured \"send\" in one corpus slot\n reset: 'musuqchay', // Batch 3: qallariy is the init/start word — on-reset listener captured event \"default\"\n load: 'apakuy',\n unload: 'unload',\n resize: 'hatun_kay',\n scroll: 'kunray',\n // V3c burn-down (2026-07-14): English passthrough — no native form round-trips\n // on the parse side (probe: split forms shatter, fused forms capture verbatim).\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n touchcancel: 'touchcancel',\n },\n\n logical: {\n when: 'maykama',\n where: 'maypi',\n and: 'hinallataq',\n or: 'utaq',\n not: 'mana',\n is: 'kanqa',\n exists: 'tiyan',\n matches: 'tupan',\n contains: 'ukupi_kan',\n includes: 'churasqa',\n equals: 'kikin',\n has: 'kachkan',\n have: 'kachkani',\n then: 'chayqa',\n // Align to the semantic profile's else word `manachus`. The old `mana_chayqa`\n // tokenized as `mana`(false) + `_` + `chayqa`(then) — no else keyword formed,\n // so qu conditionals never split their else branch. `manachus` is a single\n // token the profile-derived keyword map reads as `else` (dict↔profile align).\n else: 'manachus',\n otherwise: 'huk_kaqpi',\n end: 'tukuy',\n live: 'kawsay',\n changes: 'tukurikun',\n },\n\n temporal: {\n seconds: 'sikundukuna',\n second: 'sikundu',\n milliseconds: 'iskay_paqta_sikundukuna',\n millisecond: 'iskay_paqta_sikundu',\n minutes: 'minutukuna',\n minute: 'minutu',\n hours: 'horakuna',\n hour: 'hora',\n ms: 'ms',\n s: 's',\n min: 'm',\n h: 'h',\n times: 'kuti',\n },\n\n values: {\n true: 'cheqaq',\n false: 'llulla',\n null: 'null',\n undefined: 'mana_riqsisqa',\n it: 'chay',\n its: 'chaypaq',\n me: 'noqa',\n my: 'noqaq',\n myself: 'noqa killa',\n you: 'qam',\n your: 'qampaq',\n yourself: 'qam killa',\n element: 'raku',\n target: 'punta',\n detail: 'sut_iy',\n event: 'ruway',\n window: 'k_iri',\n document: 'qillqa',\n body: 'kurku',\n result: 'lluqsiy',\n value: 'chanin',\n },\n\n attributes: {\n class: 'ayllu',\n classes: 'ayllukuna',\n style: 'sami',\n styles: 'samikuna',\n attribute: 'kaq',\n attributes: 'kaqkuna',\n property: 'kanay',\n properties: 'kanaykuna',\n },\n\n expressions: {\n // Pick unit word (arc 3): native-first per qu convention — `sanampa`\n // (\"sign/letter\", the standard term for alphabet characters) over a\n // loanword. Paired with the QUECHUA_EXTRAS entry in the semantic\n // tokenizer; both surfaces must match verbatim.\n characters: 'sanampa',\n first: 'ñawpaq',\n last: 'qhipa',\n next: 'qhipantin',\n previous: 'ñawpaqnin',\n prev: 'ñawpaq',\n at: 'pi',\n random: 'imaymanata',\n closest: 'kaylla',\n parent: 'mama_tayta',\n children: 'wawakuna',\n within: 'ukupi',\n no: 'mana_kanchu',\n empty: 'chusaq',\n some: 'wakin',\n 'starts with': 'qallarisqa wan',\n 'ends with': 'tukusqa wan',\n 'ignoring case': 'hatun-huchuy qillqata-saqiy',\n 'sorted by': 'niqpi ruwasqa',\n 'mapped to': 'kay kaqman',\n 'split by': 'rakisqa',\n 'joined by': 'huñusqa',\n },\n};\n","// packages/i18n/src/parser/qu.ts\n\nimport { qu } from '../dictionaries/qu';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Quechua (Runasimi) keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Quechua:\n * - `ñitiy-pi yapay #count-ta` → parses as `on click increment #count`\n *\n * Quechua is an SOV language with:\n * - Agglutinative/polysynthetic morphology\n * - Extensive suffix system (case markers: -ta, -man, -pi, -manta, -wan)\n * - Postpositions (unlike Spanish which uses prepositions)\n * - Object-Verb word order\n * - Evidentiality markers (not used in hyperscript)\n *\n * The grammar transformer handles suffix joining via hyphen notation\n * (e.g., \"#count-ta\" attaches the accusative marker).\n *\n * @example\n * ```typescript\n * import { quKeywords } from '@lokascript/i18n/parser/qu';\n *\n * quKeywords.resolve('tikray'); // 'toggle'\n * quKeywords.toLocale('on'); // 'kaqpi'\n * ```\n */\nexport const quKeywords: KeywordProvider = createKeywordProvider(qu, 'qu', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { qu as quDictionary } from '../dictionaries/qu';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const sw: Dictionary = {\n commands: {\n on: 'kwenye',\n tell: 'ambia',\n trigger: 'chochea',\n send: 'tuma',\n take: 'chukua',\n put: 'weka',\n // weka is the semantic sw profile's `put` primary; `set` is seti. Emitting weka\n // for set made the semantic parser read a transformed `set` as `put`.\n // See ZH_BLOCK_BODY_SCOPE.md (#2 sweep — keyword realignment, cf. zh fetch).\n set: 'seti',\n get: 'pata',\n add: 'ongeza',\n remove: 'ondoa',\n toggle: 'badilisha',\n // command blur (the events section has the blur EVENT word; without this\n // entry the transformer fell back to it and no profile read it as the verb)\n blur: 'blur',\n hide: 'ficha',\n show: 'onyesha',\n if: 'kama',\n unless: 'isipokuwa',\n repeat: 'rudia',\n for: 'kwa',\n while: 'wakati',\n until: 'hadi',\n continue: 'endelea',\n break: 'vunja',\n halt: 'simama',\n wait: 'ngoja',\n fetch: 'leta',\n call: 'ita',\n // `rudisha` (transitive, \"give back a value\"), not `rudi` (\"go back\"): the\n // semantic profile reads `rudisha`/`rejea`, so emitting `rudi` produced sw code\n // the parser could not read back. Kept clear of `rudia` (= `repeat`).\n return: 'rudisha',\n make: 'tengeneza', // auditor: dict emitted a word the profile reads differently\n log: 'andika',\n throw: 'tupa',\n catch: 'shika',\n measure: 'pima',\n transition: 'mpito',\n increment: 'ongezeko',\n decrement: 'punguza',\n default: 'msingi',\n go: 'nenda',\n pushUrl: 'sukumaUrl',\n replaceUrl: 'badilishaUrl',\n copy: 'nakala', // Batch 3: nakili is the clone keyword — rendered copy parsed as action=clone\n pick: 'chagua',\n beep: 'lia',\n js: 'js',\n async: 'sainkroni',\n render: 'chora',\n swap: 'badilishana',\n morph: 'geuza', // auditor: dict emitted a word the profile reads differently\n settle: 'tulia',\n append: 'ambatanisha', // profile primary; 'ongezaMwisho' is unrecognized\n exit: 'toka',\n install: 'sakinisha',\n breakpoint: 'nukta-simama',\n clear: 'safisha', // futa is a remove alternative in the profile\n close: 'funga',\n open: 'fungua',\n select: 'alama', // Batch 3: chagua is the pick keyword — bare select rendered with it parses null\n clone: 'nakili',\n prepend: 'tanguliza',\n focus: 'lenga',\n socket: 'soketi',\n },\n\n modifiers: {\n to: 'kwa',\n from: 'kutoka',\n into: 'ndani',\n with: 'na',\n at: 'katika',\n in: 'ndani',\n of: 'ya',\n // `kuwa` (\"to be/become\" — the conversion sense, cf. `badilisha kuwa`), not\n // `kama`: sw `kama` is the IF keyword (commands.if above and the semantic sw\n // profile's if primary), so emitting it for `as` grew a phantom `if` command\n // out of every transformed `as <Type>` tail (`kama JSON`, `kama Number`) when\n // the semantic parser split event-body statements. Same dict↔profile homonym\n // disambiguation as pl get/pobierz. The semantic fetch-sw pattern still\n // tolerates hand-written `kama` in as-marker position.\n as: 'kuwa',\n by: 'na',\n before: 'kabla',\n after: 'baada',\n over: 'juu',\n under: 'chini',\n between: 'kati',\n through: 'kupitia',\n without: 'bila',\n },\n\n events: {\n click: 'bonyeza',\n // V3c burn-down (2026-07-14): English passthrough — no native form round-trips\n // on the parse side (probe: split forms shatter, fused forms capture verbatim).\n dblclick: 'dblclick',\n mousedown: 'panya_shuka',\n mouseup: 'panya_juu',\n mouseenter: 'panya_ingia',\n mouseleave: 'panya_toka',\n // V3 Batch 2: panya_juu is mouseup's form (shared here by mistake — the\n // tokenizer deliberately maps it to mouseup for the corpus row, so a\n // mouseover handler captured `mouseup`) — realigned to the\n // tokenizer-registered `sogeza juu`.\n mouseover: 'sogeza juu',\n mouseout: 'panya_nje',\n mousemove: 'panya_sogea',\n keydown: 'kitufe_shuka',\n keyup: 'kitufe_juu',\n keypress: 'keypress',\n // V3 Batch 2: zingatia captured no event → lenga (S5b/tokenizer form);\n // poteza_macho was a null parse → `blur` (the S5b identity form — matches\n // the live corpus render `kwenye blur`); badilisha is the toggle VERB\n // homonym (a change handler captured event=`toggle` — a listener for a DOM\n // event named \"toggle\") → kubadilisha (S5b/tokenizer form).\n focus: 'lenga',\n blur: 'blur',\n change: 'kubadilisha',\n input: 'ingizo',\n submit: 'wasilisha',\n reset: 'reset',\n load: 'pakia',\n unload: 'shuka',\n resize: 'badilisha_ukubwa',\n scroll: 'sogeza',\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n touchcancel: 'touchcancel',\n },\n\n logical: {\n when: 'wakati',\n where: 'wapi',\n and: 'na',\n or: 'au',\n not: 'si',\n is: 'ni',\n exists: 'ipo',\n matches: 'inafanana',\n contains: 'ina',\n includes: 'pamoja',\n equals: 'sawa',\n has: 'ana',\n have: 'nina',\n then: 'kisha',\n else: 'sivyo',\n otherwise: 'vinginevyo',\n end: 'mwisho',\n live: 'mubashara',\n changes: 'inabadilika',\n },\n\n temporal: {\n seconds: 'sekunde',\n second: 'sekunde',\n milliseconds: 'millisekunde',\n millisecond: 'millisekunde',\n minutes: 'dakika',\n minute: 'dakika',\n hours: 'masaa',\n hour: 'saa',\n ms: 'ms',\n s: 's',\n min: 'dk',\n h: 'sa',\n times: 'mara',\n },\n\n values: {\n true: 'kweli',\n false: 'uongo',\n null: 'null',\n undefined: 'haijafafanuliwa',\n it: 'hiyo',\n its: 'yake',\n me: 'mimi',\n my: 'yangu',\n myself: 'mimi mwenyewe',\n you: 'wewe',\n your: 'yako',\n yourself: 'wewe mwenyewe',\n element: 'kipengele',\n target: 'lengo',\n detail: 'maelezo',\n event: 'tukio',\n window: 'dirisha',\n document: 'hati',\n body: 'mwili',\n result: 'matokeo',\n value: 'thamani',\n },\n\n attributes: {\n class: 'darasa',\n classes: 'madarasa',\n style: 'mtindo',\n styles: 'mitindo',\n attribute: 'sifa',\n attributes: 'sifa',\n property: 'mali',\n properties: 'mali',\n },\n\n expressions: {\n characters: 'herufi',\n first: 'kwanza',\n // 'mwisho' is the END keyword (block terminator) — the tokenizer's keyword\n // map is last-wins, so a positional `last` emission of 'mwisho' reads as\n // `end` and terminates the enclosing block mid-condition (focus-trap's\n // `… inafanana mwisho <button/>` dropped the whole branch body). Emit the\n // concatenated adjective form instead (wa mwisho — the saufsi/wennnicht/\n // enyakın single-token class); the tokenizer reads it as `last`.\n last: 'wamwisho',\n next: 'ijayo',\n previous: 'iliyopita',\n prev: 'awali',\n at: 'katika',\n random: 'nasibu',\n // Natural Swahili: `karibu` (\"near/close\") is the ordinary word and already\n // maps to closest. The earlier `karibu_zaidi` (\"nearer\") underscore-split to\n // karibu/_/zaidi (the stray `_ zaidi` broke positional capture); the fused\n // `karibuzaidi` parsed but isn't real Swahili. `karibu` alone is both natural\n // and correct (the sw tokenizer is single-word-only, so a spaced `karibu\n // zaidi` would strand `zaidi` regardless).\n closest: 'karibu',\n parent: 'mzazi',\n children: 'watoto',\n within: 'ndani_ya',\n no: 'hakuna',\n empty: 'tupu',\n some: 'baadhi',\n 'starts with': 'huanza na',\n 'ends with': 'huisha na',\n 'ignoring case': 'puuza herufi kubwa ndogo',\n 'sorted by': 'kupangwa kwa',\n 'mapped to': 'kubadilishwa kuwa',\n 'split by': 'kugawanywa kwa',\n 'joined by': 'kuunganishwa kwa',\n },\n};\n","// packages/i18n/src/parser/sw.ts\n\nimport { sw } from '../dictionaries/sw';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Swahili (Kiswahili) keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Swahili:\n * - `kwenye bonyeza badilisha .active` → parses as `on click toggle .active`\n * - `kama kweli basi andika \"Habari\"` → parses as `if true then log \"Hello\"`\n *\n * Swahili is an SVO Bantu language with:\n * - Agglutinative verb morphology\n * - Noun class system (simplified for hyperscript keywords)\n * - Prepositions (unlike many other African languages)\n * - Subject-verb agreement (not relevant for hyperscript)\n *\n * Swahili is widely spoken in East Africa and serves as a lingua franca\n * for millions of speakers.\n *\n * @example\n * ```typescript\n * import { swKeywords } from '@lokascript/i18n/parser/sw';\n *\n * swKeywords.resolve('badilisha'); // 'toggle'\n * swKeywords.toLocale('on'); // 'kwenye'\n * ```\n */\nexport const swKeywords: KeywordProvider = createKeywordProvider(sw, 'sw', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { sw as swDictionary } from '../dictionaries/sw';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const pt: Dictionary = {\n commands: {\n on: 'em',\n tell: 'dizer',\n trigger: 'disparar',\n send: 'enviar',\n take: 'pegar',\n put: 'colocar',\n set: 'definir',\n get: 'obter',\n add: 'adicionar',\n remove: 'remover',\n toggle: 'alternar',\n // command blur (the events section has the blur EVENT word; without this\n // entry the transformer fell back to it and no profile read it as the verb)\n blur: 'desfocar',\n hide: 'esconder',\n show: 'mostrar',\n if: 'se',\n unless: 'salvo', // a_menos splits at _ in the pt extractor (see profile)\n repeat: 'repetir',\n for: 'para',\n while: 'enquanto',\n until: 'até',\n continue: 'continuar',\n // un-crossed: the profile/tokenizer read parar=halt, interromper=break\n break: 'interromper',\n halt: 'parar',\n wait: 'esperar',\n fetch: 'buscar',\n call: 'chamar',\n return: 'retornar',\n make: 'fazer',\n log: 'registrar',\n throw: 'lançar',\n catch: 'capturar',\n measure: 'medir',\n transition: 'transição',\n increment: 'incrementar',\n decrement: 'decrementar',\n default: 'padrão',\n go: 'ir',\n pushUrl: 'pushUrl',\n replaceUrl: 'substituirUrl',\n copy: 'copiar',\n pick: 'escolher',\n beep: 'apitar',\n js: 'js',\n async: 'assíncrono',\n render: 'renderizar',\n swap: 'trocar',\n morph: 'transformar',\n settle: 'estabilizar',\n append: 'anexar',\n exit: 'sair',\n install: 'instalar',\n breakpoint: 'ponto-interrupção',\n clear: 'limpar',\n close: 'fechar',\n open: 'abrir',\n select: 'selecionar',\n clone: 'clonar',\n prepend: 'preceder',\n focus: 'focar',\n socket: 'soquete',\n },\n\n modifiers: {\n to: 'para',\n from: 'de',\n into: 'em',\n with: 'com',\n at: 'em',\n in: 'dentro',\n of: 'de',\n as: 'como',\n by: 'por',\n before: 'antes',\n after: 'depois',\n over: 'sobre',\n under: 'sob',\n between: 'entre',\n through: 'através',\n without: 'sem',\n },\n\n events: {\n click: 'clique',\n dblclick: 'duploClique',\n mouseenter: 'mouseEntrar',\n mouseleave: 'mouseSair',\n // V3 Batch 2: camelCase forms split to the S5b/tokenizer-known forms (the\n // fused spellings captured event=expression:undefined — broken listeners)\n // pt-BR idiom is \"pressionado\"/\"solto\", not the spatial baixo/cima calque —\n // cf. MDN pt-BR (\"um botão ... é pressionado\") and Scratch pt-BR\n // (\"mouse pressionado?\"). The calques stay as profile parse alternatives.\n mousedown: 'mouse pressionado',\n mouseup: 'mouse solto',\n mouseover: 'mouse sobre',\n mouseout: 'mouse fora',\n mousemove: 'mouseMover',\n keydown: 'tecla baixo',\n keyup: 'tecla cima',\n keypress: 'teclaPressionar',\n focus: 'foco',\n blur: 'desfoque',\n change: 'mudança',\n input: 'entrada',\n submit: 'envio',\n reset: 'redefinir', // Batch 3: reiniciar captured on.event as expression (broken listener) — profile word round-trips\n load: 'carregar',\n unload: 'descarregar',\n resize: 'redimensionar',\n scroll: 'rolar',\n touchstart: 'toqueInício',\n touchend: 'toqueFim',\n touchmove: 'toqueMover',\n touchcancel: 'toqueCancelar',\n },\n\n logical: {\n when: 'quando',\n where: 'onde',\n and: 'e',\n or: 'ou',\n not: 'não',\n is: 'é',\n exists: 'existe',\n matches: 'corresponde',\n contains: 'contém',\n includes: 'inclui',\n equals: 'igual',\n has: 'tem',\n have: 'tenho',\n then: 'então',\n else: 'senão',\n otherwise: 'caso_contrário',\n end: 'fim',\n live: 'vivo',\n changes: 'muda',\n },\n\n temporal: {\n seconds: 'segundos',\n second: 'segundo',\n milliseconds: 'milissegundos',\n millisecond: 'milissegundo',\n minutes: 'minutos',\n minute: 'minuto',\n hours: 'horas',\n hour: 'hora',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n times: 'vezes',\n },\n\n values: {\n true: 'verdadeiro',\n false: 'falso',\n null: 'nulo',\n undefined: 'indefinido',\n it: 'isso',\n its: 'seu',\n me: 'eu',\n my: 'meu',\n myself: 'eu mesmo',\n you: 'você',\n your: 'seu',\n yourself: 'você mesmo',\n element: 'elemento',\n target: 'alvo',\n detail: 'detalhe',\n event: 'evento',\n window: 'janela',\n document: 'documento',\n body: 'corpo',\n result: 'resultado',\n value: 'valor',\n },\n\n attributes: {\n class: 'classe',\n classes: 'classes',\n style: 'estilo',\n styles: 'estilos',\n attribute: 'atributo',\n attributes: 'atributos',\n property: 'propriedade',\n properties: 'propriedades',\n },\n\n expressions: {\n characters: 'caracteres',\n inclusive: 'inclusivo',\n exclusive: 'exclusivo',\n first: 'primeiro',\n last: 'último',\n next: 'próximo',\n previous: 'anterior',\n prev: 'ant',\n at: 'em',\n random: 'aleatório',\n closest: 'maispróximo',\n parent: 'pai',\n children: 'filhos',\n within: 'dentro',\n no: 'nenhum',\n empty: 'vazio',\n some: 'algum',\n 'starts with': 'começa com',\n 'ends with': 'termina com',\n 'ignoring case': 'ignorando maiúsculas',\n 'sorted by': 'ordenado por',\n 'mapped to': 'mapeado para',\n 'split by': 'dividido por',\n 'joined by': 'unido por',\n },\n};\n","// packages/i18n/src/parser/pt.ts\n\nimport { pt } from '../dictionaries/pt';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Portuguese (Português) keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Portuguese:\n * - `em clique alternar .active` → parses as `on click toggle .active`\n * - `se verdadeiro então registrar \"Olá\"` → parses as `if true then log \"Hello\"`\n *\n * Portuguese is an SVO language with:\n * - High mutual intelligibility with Spanish\n * - Prepositions (like English and Spanish)\n * - Gender agreement (simplified for hyperscript)\n * - Fusional morphology\n *\n * Direct translation is supported between Portuguese and Spanish,\n * avoiding the English pivot for more natural translations.\n *\n * @example\n * ```typescript\n * import { ptKeywords } from '@lokascript/i18n/parser/pt';\n *\n * ptKeywords.resolve('alternar'); // 'toggle'\n * ptKeywords.toLocale('on'); // 'em'\n * ```\n */\nexport const ptKeywords: KeywordProvider = createKeywordProvider(pt, 'pt', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { pt as ptDictionary } from '../dictionaries/pt';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const it: Dictionary = {\n commands: {\n on: 'su',\n tell: 'dire',\n trigger: 'scatenare',\n send: 'inviare',\n take: 'prendere',\n put: 'mettere',\n set: 'impostare',\n get: 'ottenere',\n add: 'aggiungere',\n remove: 'rimuovere',\n toggle: 'commutare',\n hide: 'nascondere',\n show: 'mostrare',\n if: 'se',\n unless: 'salvo',\n repeat: 'ripetere',\n for: 'per',\n while: 'mentre',\n until: 'fino',\n continue: 'continuare',\n break: 'interrompere',\n halt: 'fermare',\n wait: 'aspettare',\n fetch: 'recuperare',\n call: 'chiamare',\n return: 'ritornare',\n make: 'fare',\n log: 'registrare',\n throw: 'lanciare',\n catch: 'catturare',\n measure: 'misurare',\n transition: 'transizione',\n increment: 'incrementare',\n decrement: 'decrementare',\n default: 'predefinito',\n go: 'andare',\n pushUrl: 'pushUrl',\n replaceUrl: 'sostituireUrl',\n copy: 'copiare',\n pick: 'scegliere',\n beep: 'beep',\n js: 'js',\n async: 'asincrono',\n render: 'renderizzare',\n swap: 'scambiare',\n morph: 'trasformare',\n settle: 'stabilizzare',\n append: 'accodare', // profile primary; 'aggiungere' is add's word (parsed as add)\n exit: 'uscire',\n install: 'installare',\n breakpoint: 'punto-interruzione',\n clear: 'cancellare',\n close: 'chiudere',\n open: 'aprire',\n select: 'selezionare',\n clone: 'clonare',\n prepend: 'anteporre',\n // profile primary; without a commands entry the transformer fell back to\n // the EVENTS noun 'fuoco', which generated focus patterns can't match\n focus: 'focalizzare',\n },\n\n modifiers: {\n to: 'a',\n from: 'da',\n into: 'in',\n with: 'con',\n at: 'a',\n in: 'in',\n of: 'di',\n as: 'come',\n by: 'per',\n before: 'prima',\n after: 'dopo',\n over: 'sopra',\n under: 'sotto',\n between: 'tra',\n through: 'attraverso',\n without: 'senza',\n },\n\n events: {\n click: 'clic',\n dblclick: 'doppioclic',\n // mousedown/mouseup: English passthrough — no native form round-trips on the\n // parse side (V3c probe 2026-07-14: fused forms captured verbatim, split forms\n // shattered to their first word — live broken listeners in repeat-until-event).\n // The Batch-2 id-keyup precedent; revisit if S5b + tokenizer gain native entries.\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'mouseentra',\n mouseleave: 'mouseesce',\n mouseover: 'mousesopra',\n mouseout: 'mousefuori',\n mousemove: 'mousemuovi',\n keydown: 'tastogiù',\n keyup: 'tastosu',\n keypress: 'tastopremi',\n focus: 'fuoco',\n blur: 'sfuocare', // Batch 3: the noun form parsed the blur command with no patient; the verb round-trips both event and command slots\n change: 'cambio',\n input: 'input',\n submit: 'invio',\n reset: 'reimpostare', // Batch 3: English passthrough captured on.event as expression — profile verb round-trips\n load: 'carica',\n unload: 'scarica',\n resize: 'ridimensiona',\n scroll: 'scorrimento',\n touchstart: 'toccoinizia',\n touchend: 'toccofine',\n touchmove: 'toccomuovi',\n touchcancel: 'toccoannulla',\n },\n\n logical: {\n when: 'quando',\n where: 'dove',\n and: 'e',\n or: 'o',\n not: 'non',\n is: 'è',\n exists: 'esiste',\n matches: 'corrisponde',\n contains: 'contiene',\n includes: 'include',\n equals: 'uguale',\n has: 'ha',\n have: 'ho',\n then: 'allora',\n else: 'altrimenti',\n otherwise: 'altrimenti',\n end: 'fine',\n live: 'vivo',\n changes: 'cambia',\n },\n\n temporal: {\n seconds: 'secondi',\n second: 'secondo',\n milliseconds: 'millisecondi',\n millisecond: 'millisecondo',\n minutes: 'minuti',\n minute: 'minuto',\n hours: 'ore',\n hour: 'ora',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n times: 'volte',\n },\n\n values: {\n true: 'vero',\n false: 'falso',\n null: 'nullo',\n undefined: 'indefinito',\n it: 'esso',\n its: 'suo',\n me: 'io',\n my: 'mio',\n you: 'tu',\n your: 'tuo',\n yourself: 'te stesso',\n myself: 'me stesso',\n element: 'elemento',\n target: 'obiettivo',\n detail: 'dettaglio',\n event: 'evento',\n window: 'finestra',\n document: 'documento',\n body: 'corpo',\n result: 'risultato',\n value: 'valore',\n },\n\n attributes: {\n class: 'classe',\n classes: 'classi',\n style: 'stile',\n styles: 'stili',\n attribute: 'attributo',\n attributes: 'attributi',\n property: 'proprietà',\n properties: 'proprietà',\n },\n\n expressions: {\n characters: 'caratteri',\n inclusive: 'inclusivo',\n exclusive: 'esclusivo',\n first: 'primo',\n last: 'ultimo',\n next: 'prossimo',\n previous: 'precedente',\n prev: 'prec',\n at: 'a',\n random: 'casuale',\n closest: 'vicino',\n parent: 'genitore',\n children: 'figli',\n within: 'dentro',\n no: 'nessun',\n empty: 'vuoto',\n some: 'qualche',\n 'starts with': 'inizia con',\n 'ends with': 'finisce con',\n 'ignoring case': 'ignorando maiuscole',\n 'sorted by': 'ordinato per',\n 'mapped to': 'trasformato in',\n 'split by': 'diviso per',\n 'joined by': 'unito per',\n },\n};\n","import { it } from '../dictionaries/it';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\nexport const itKeywords: KeywordProvider = createKeywordProvider(it, 'it', {\n allowEnglishFallback: true,\n});\n\nexport { it as itDictionary } from '../dictionaries/it';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const vi: Dictionary = {\n commands: {\n on: 'khi',\n tell: 'nói với',\n trigger: 'kích hoạt',\n send: 'gửi',\n take: 'lấy',\n put: 'đặt',\n set: 'gán',\n get: 'lấy giá trị',\n add: 'thêm',\n remove: 'xóa',\n toggle: 'chuyển đổi',\n hide: 'ẩn',\n show: 'hiển thị',\n if: 'nếu',\n unless: 'trừ khi',\n repeat: 'lặp lại',\n for: 'với mỗi',\n while: 'trong khi',\n until: 'cho đến khi',\n continue: 'tiếp tục',\n break: 'dừng',\n halt: 'dừng lại',\n wait: 'chờ',\n fetch: 'tải',\n call: 'gọi',\n return: 'trả về',\n make: 'tạo',\n log: 'in ra',\n throw: 'ném',\n catch: 'bắt',\n measure: 'đo lường',\n transition: 'chuyển tiếp',\n increment: 'tăng',\n decrement: 'giảm',\n default: 'mặc định',\n go: 'đi đến',\n pushUrl: 'pushUrl',\n replaceUrl: 'thayThếUrl',\n copy: 'sao chép',\n pick: 'chọn',\n beep: 'beep',\n js: 'js',\n async: 'bất đồng bộ',\n render: 'kết xuất', // distinct from `show` (was `hiển thị`, which collides with show: the semantic profile reads `hiển thị` as show, `kết xuất` as render)\n swap: 'hoán đổi',\n morph: 'biến đổi',\n settle: 'ổn định',\n append: 'nối',\n exit: 'thoát',\n focus: 'tập trung',\n blur: 'mất tập trung',\n init: 'khởi tạo',\n behavior: 'hành vi',\n install: 'cài đặt',\n clone: 'nhân bản', // Batch 3: 'sao chép' is the copy verb — rendered clone parsed as action=copy\n prepend: 'thêm vào đầu', // Batch 3: 'thêm đầu' shatters at 'thêm' (add) — parsed as action=add\n else: 'không thì',\n breakpoint: 'điểm-dừng',\n clear: 'tẩy', // xóa is the remove PRIMARY in the profile\n close: 'đóng',\n open: 'mở',\n select: 'đánh-dấu', // Batch 3: 'chọn' is the pick keyword — bare select rendered with it parses null\n },\n\n modifiers: {\n into: 'vào',\n before: 'trước',\n after: 'sau',\n then: 'rồi',\n end: 'kết thúc',\n from: 'từ',\n to: 'đến',\n with: 'với',\n as: 'như',\n by: 'bởi',\n on: 'trên',\n in: 'trong',\n at: 'tại',\n of: 'của',\n between: 'giữa',\n the: '',\n times: 'lần',\n },\n\n events: {\n click: 'nhấp',\n dblclick: 'dblclick',\n input: 'nhập',\n change: 'change',\n submit: 'nộp', // Batch 3: 'gửi' is the send verb — on-submit listener captured event \"send\"\n keydown: 'keydown',\n keyup: 'keyup',\n keypress: 'keypress',\n mouseover: 'mouseover',\n mouseout: 'mouseout',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n focus: 'focus',\n blur: 'blur',\n // V3c burn-down (2026-07-14): English passthrough — no native form round-trips\n // on the parse side (probe: split forms shatter, fused forms capture verbatim).\n reset: 'reset',\n load: 'load',\n scroll: 'cuộn',\n resize: 'đổi kích thước',\n },\n\n logical: {\n when: 'khi',\n where: 'ở_đâu',\n and: 'và',\n or: 'hoặc',\n not: 'không',\n is: 'là',\n equals: 'bằng',\n contains: 'chứa',\n matches: 'khớp',\n exists: 'tồn tại',\n has: 'có',\n have: 'có',\n empty: 'trống',\n true: 'đúng',\n false: 'sai',\n null: 'rỗng',\n else: 'không thì',\n end: 'kết thúc',\n then: 'rồi',\n live: 'live',\n changes: 'thay đổi',\n },\n\n temporal: {\n now: 'bây giờ',\n today: 'hôm nay',\n tomorrow: 'ngày mai',\n yesterday: 'hôm qua',\n always: 'luôn luôn',\n never: 'không bao giờ',\n sometimes: 'đôi khi',\n once: 'một lần',\n twice: 'hai lần',\n forever: 'mãi mãi',\n },\n\n values: {\n true: 'đúng',\n false: 'sai',\n null: 'rỗng',\n undefined: 'không xác định',\n none: 'không có',\n all: 'tất cả',\n any: 'bất kỳ',\n some: 'một số',\n each: 'mỗi',\n every: 'tất cả',\n body: 'body',\n event: 'sự kiện',\n it: 'nó',\n its: 'của nó',\n me: 'tôi',\n my: 'của tôi',\n result: 'kết quả',\n target: 'mục tiêu',\n you: 'bạn',\n your: 'của bạn',\n },\n\n attributes: {\n id: 'id',\n class: 'lớp',\n style: 'kiểu',\n value: 'giá trị',\n text: 'văn bản',\n html: 'html',\n src: 'nguồn',\n href: 'liên kết',\n disabled: 'vô hiệu',\n hidden: 'ẩn',\n checked: 'được chọn',\n selected: 'được chọn',\n },\n\n expressions: {\n random: 'ngẫu nhiên',\n characters: 'ký tự',\n inclusive: 'bao gồm',\n exclusive: 'loại trừ',\n me: 'tôi',\n my: 'của tôi',\n it: 'nó',\n its: 'của nó',\n result: 'kết quả',\n event: 'sự kiện',\n target: 'mục tiêu',\n first: 'đầu tiên',\n last: 'cuối cùng',\n next: 'tiếp theo',\n previous: 'trước đó',\n parent: 'cha',\n children: 'con',\n closest: 'gần nhất',\n empty: 'làm-rỗng',\n 'starts with': 'bắt đầu bằng',\n 'ends with': 'kết thúc bằng',\n 'ignoring case': 'không phân biệt hoa thường',\n 'sorted by': 'sắp xếp theo',\n 'mapped to': 'ánh xạ thành',\n 'split by': 'tách bởi',\n 'joined by': 'nối bởi',\n },\n};\n","import { vi } from '../dictionaries/vi';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\nexport const viKeywords: KeywordProvider = createKeywordProvider(vi, 'vi', {\n allowEnglishFallback: true,\n});\n\nexport { vi as viDictionary } from '../dictionaries/vi';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const pl: Dictionary = {\n commands: {\n on: 'gdy',\n tell: 'powiedz',\n trigger: 'wyzwól', // auditor: dict emitted a word the profile reads differently\n send: 'wyślij',\n take: 'weź',\n put: 'umieść',\n set: 'ustaw',\n // `uzyskaj` (the semantic pl profile's get primary), not `pobierz`: pl `pobierz`\n // (\"download\") is the profile's FETCH primary, so emitting it for get made the\n // parser read every transformed get as fetch (get-value lossy + a phantom fetch).\n // Same dict↔profile homonym disambiguation as tr load/install, qu get.\n get: 'uzyskaj',\n add: 'dodaj',\n remove: 'usuń',\n toggle: 'przełącz',\n // command blur (the events section has the blur EVENT word; without this\n // entry the transformer fell back to it and no profile read it as the verb)\n blur: 'rozmyj',\n hide: 'ukryj',\n show: 'pokaż',\n if: 'jeśli',\n unless: 'chyba',\n repeat: 'powtórz',\n for: 'dla',\n while: 'dopóki',\n until: 'aż',\n continue: 'kontynuuj',\n break: 'przerwij',\n halt: 'zatrzymaj',\n wait: 'czekaj',\n fetch: 'pobierz',\n call: 'wywołaj',\n return: 'zwróć',\n make: 'utwórz',\n log: 'loguj',\n throw: 'rzuć',\n catch: 'złap',\n measure: 'zmierz',\n transition: 'animuj',\n increment: 'zwiększ',\n decrement: 'zmniejsz',\n default: 'domyślnie',\n go: 'idź',\n pushUrl: 'dodajUrl',\n replaceUrl: 'zamieńUrl',\n copy: 'kopiuj',\n pick: 'wybierz',\n beep: 'sygnał',\n js: 'js',\n async: 'async',\n render: 'renderuj',\n swap: 'zamień',\n morph: 'przekształć',\n settle: 'ustabilizuj',\n append: 'dołącz',\n exit: 'wyjdź',\n install: 'zainstaluj',\n breakpoint: 'punkt-przerwania',\n clear: 'zeruj', // wyczyść is a remove alternative in the profile\n close: 'zamknij',\n open: 'otwórz',\n select: 'zaznacz', // Batch 3: wybierz is the pick keyword — bare select rendered with it parses null\n clone: 'sklonuj',\n prepend: 'poprzedź',\n focus: 'skup',\n },\n\n modifiers: {\n to: 'do',\n from: 'z',\n into: 'do',\n with: 'z',\n at: 'przy',\n in: 'w',\n of: 'z',\n as: 'jako',\n by: 'przez',\n before: 'przed',\n after: 'po',\n over: 'nad',\n under: 'pod',\n between: 'między',\n through: 'przez',\n without: 'bez',\n },\n\n events: {\n click: 'kliknięcie',\n dblclick: 'podwójnekliknięcie',\n // mousedown/mouseup: English passthrough — no native form round-trips on the\n // parse side (V3c probe 2026-07-14: fused forms captured verbatim, split forms\n // shattered to their first word — live broken listeners in repeat-until-event).\n // The Batch-2 id-keyup precedent; revisit if S5b + tokenizer gain native entries.\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'myszwejście',\n mouseleave: 'myszwyjście',\n mouseover: 'mysznad',\n mouseout: 'myszpoza',\n mousemove: 'myszruch',\n keydown: 'klawiszdół',\n keyup: 'klawiszgóra',\n keypress: 'klawisznaciśnięcie',\n focus: 'fokus',\n blur: 'rozmycie',\n change: 'zmiana',\n input: 'wejście',\n submit: 'wysłaniu', // Batch 3: wyślij is the send verb — on-submit listener captured event \"send\"\n reset: 'zresetuj', // Batch 3: resetuj captured on.event as expression (broken listener) — profile word round-trips\n load: 'załaduj',\n unload: 'wyładuj',\n // 'zmieńrozmiar' was a fused two-word phrase; Polish writes 'zmiana rozmiaru'.\n resize: 'zmiana rozmiaru',\n scroll: 'przewiń',\n touchstart: 'dotykstart',\n touchend: 'dotykkoniec',\n touchmove: 'dotykruch',\n touchcancel: 'dotykanuluj',\n },\n\n logical: {\n when: 'kiedy',\n where: 'gdzie',\n and: 'i',\n or: 'lub',\n not: 'nie',\n is: 'jest',\n exists: 'istnieje',\n matches: 'pasuje',\n contains: 'zawiera',\n includes: 'obejmuje',\n equals: 'równa się',\n has: 'ma',\n have: 'mam',\n then: 'wtedy',\n else: 'inaczej',\n otherwise: 'wpp',\n end: 'koniec',\n live: 'żywy',\n changes: 'zmienia',\n },\n\n temporal: {\n seconds: 'sekundy',\n second: 'sekunda',\n milliseconds: 'milisekundy',\n millisecond: 'milisekunda',\n minutes: 'minuty',\n minute: 'minuta',\n hours: 'godziny',\n hour: 'godzina',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'godz',\n times: 'razy',\n },\n\n values: {\n true: 'prawda',\n false: 'fałsz',\n null: 'null',\n undefined: 'niezdefiniowane',\n it: 'to',\n its: 'jego',\n me: 'ja',\n my: 'mój',\n you: 'ty',\n your: 'twój',\n yourself: 'ty sam',\n myself: 'ja sam',\n element: 'element',\n target: 'cel',\n detail: 'szczegół',\n event: 'zdarzenie',\n window: 'okno',\n document: 'dokument',\n body: 'body',\n result: 'wynik',\n value: 'wartość',\n },\n\n attributes: {\n class: 'klasa',\n classes: 'klasy',\n style: 'styl',\n styles: 'style',\n attribute: 'atrybut',\n attributes: 'atrybuty',\n property: 'właściwość',\n properties: 'właściwości',\n },\n\n expressions: {\n characters: 'znaki',\n inclusive: 'włącznie',\n exclusive: 'wyłącznie',\n first: 'pierwszy',\n last: 'ostatni',\n next: 'następny',\n previous: 'poprzedni',\n prev: 'poprz',\n at: 'przy',\n random: 'losowy',\n closest: 'najbliższy',\n parent: 'rodzic',\n children: 'dzieci',\n within: 'wewnątrz',\n no: 'brak',\n empty: 'pusty',\n some: 'jakiś',\n 'starts with': 'zaczyna się od',\n 'ends with': 'kończy się na',\n 'ignoring case': 'ignorując wielkość liter',\n 'sorted by': 'sortowane według',\n 'mapped to': 'przekształcone na',\n 'split by': 'podzielone przez',\n 'joined by': 'połączone przez',\n },\n};\n","import { pl } from '../dictionaries/pl';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\nexport const plKeywords: KeywordProvider = createKeywordProvider(pl, 'pl', {\n allowEnglishFallback: true,\n});\n\nexport { pl as plDictionary } from '../dictionaries/pl';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const russianDictionary: Dictionary = {\n commands: {\n on: 'при',\n tell: 'сказать',\n trigger: 'запустить', // auditor: dict emitted a word the profile reads differently\n send: 'отправить',\n take: 'взять',\n put: 'положить',\n set: 'установить',\n get: 'получить',\n add: 'добавить',\n remove: 'удалить',\n toggle: 'переключить',\n hide: 'скрыть',\n show: 'показать',\n // command verb; the events section keeps the noun прокрутка for `on scroll`.\n // Without this entry the transformer fell back to the event noun, which the\n // parser doesn't read as the scroll command (#321 focus family).\n scroll: 'прокрутить',\n if: 'если',\n unless: 'кроме',\n repeat: 'повторить',\n for: 'для',\n while: 'пока',\n until: 'до',\n continue: 'продолжить',\n break: 'прервать',\n halt: 'остановить',\n wait: 'ждать',\n fetch: 'загрузить',\n call: 'вызвать',\n return: 'вернуть',\n make: 'создать',\n log: 'записать',\n throw: 'бросить',\n catch: 'поймать',\n measure: 'измерить',\n transition: 'анимировать',\n increment: 'увеличить',\n decrement: 'уменьшить',\n default: 'по_умолчанию',\n go: 'перейти',\n pushUrl: 'добавить_url',\n replaceUrl: 'заменить_url',\n copy: 'копировать',\n pick: 'выбрать',\n beep: 'звук',\n js: 'js',\n async: 'асинхронно',\n render: 'отобразить',\n swap: 'поменять',\n morph: 'трансформировать',\n settle: 'стабилизировать',\n append: 'дописать', // matches the ru profile primary\n exit: 'выйти',\n else: 'иначе',\n install: 'инсталлировать', // loanword — `установить` is `set` (homonym); see russian profile\n init: 'инициализировать',\n behavior: 'поведение',\n focus: 'сфокусировать',\n blur: 'размыть',\n clone: 'клонировать',\n prepend: 'добавить в начало', // natural form; the underscore compound was never natural Russian\n breakpoint: 'точка-останова',\n clear: 'очистить',\n close: 'закрыть',\n open: 'открыть',\n select: 'выделить', // Batch 3: выбрать is the pick keyword — bare select rendered with it parses null\n },\n\n modifiers: {\n to: 'к',\n from: 'из',\n into: 'в',\n with: 'с',\n at: 'у',\n in: 'в',\n of: 'из',\n as: 'как',\n by: 'на',\n before: 'до',\n after: 'после',\n over: 'над',\n under: 'под',\n between: 'между',\n through: 'через',\n without: 'без',\n on: 'на',\n },\n\n events: {\n click: 'клик',\n dblclick: 'двойной_клик',\n // Fused (no `_`): the semantic tokenizer splits on `_`, so an underscore form\n // breaks event recognition (mousedown → bare expression). Mirrors the #510 tr\n // resize fix (boyut_değiştir → boyutlandırma) and the enyakın superlative.\n mousedown: 'мышьвниз',\n mouseup: 'мышьвверх',\n mouseenter: 'мышь_вход',\n mouseleave: 'мышь_выход',\n mouseover: 'наведение',\n mouseout: 'уход',\n mousemove: 'движение_мыши',\n keydown: 'клавиша_вниз',\n keyup: 'клавиша_вверх',\n keypress: 'нажатие_клавиши',\n focus: 'фокус',\n blur: 'потеря_фокуса',\n change: 'изменение',\n input: 'ввод',\n submit: 'отправка',\n reset: 'сбросить', // Batch 3: сброс captured on.event as expression (broken listener) — profile verb round-trips\n load: 'загрузка',\n unload: 'выгрузка',\n resize: 'изменениеразмера', // fused (no `_`) — see mousedown note above\n scroll: 'прокрутка',\n touchstart: 'касание_начало',\n touchend: 'касание_конец',\n touchmove: 'касание_движение',\n touchcancel: 'касание_отмена',\n },\n\n logical: {\n when: 'когда',\n where: 'где',\n and: 'и',\n or: 'или',\n not: 'не',\n is: 'есть',\n exists: 'существует',\n matches: 'соответствует',\n contains: 'содержит',\n includes: 'включает',\n equals: 'равно',\n then: 'затем',\n else: 'иначе',\n otherwise: 'в_противном_случае',\n end: 'конец',\n live: 'живой',\n changes: 'изменяется',\n has: 'имеет',\n have: 'имею',\n isNot: 'не_есть',\n empty: 'пустой',\n },\n\n temporal: {\n seconds: 'секунд',\n second: 'секунда',\n milliseconds: 'миллисекунд',\n millisecond: 'миллисекунда',\n minutes: 'минут',\n minute: 'минута',\n hours: 'часов',\n hour: 'час',\n ms: 'мс',\n s: 'с',\n min: 'мин',\n h: 'ч',\n forever: 'всегда',\n once: 'однажды',\n every: 'каждый',\n until: 'до',\n times: 'раз',\n },\n\n values: {\n true: 'истина',\n false: 'ложь',\n null: 'ничего',\n undefined: 'неопределено',\n it: 'это',\n its: 'его',\n me: 'я',\n my: 'мой',\n you: 'ты',\n your: 'твой',\n yourself: 'сам',\n myself: 'я_сам',\n element: 'элемент',\n target: 'цель',\n detail: 'детали',\n event: 'событие',\n window: 'окно',\n document: 'документ',\n body: 'тело',\n result: 'результат',\n value: 'значение',\n first: 'первый',\n last: 'последний',\n next: 'следующий',\n previous: 'предыдущий',\n closest: 'ближайший',\n parent: 'родитель',\n },\n\n attributes: {\n class: 'класс',\n classes: 'классы',\n style: 'стиль',\n styles: 'стили',\n attribute: 'атрибут',\n attributes: 'атрибуты',\n property: 'свойство',\n properties: 'свойства',\n disabled: 'отключено',\n hidden: 'скрыто',\n checked: 'отмечено',\n selected: 'выбрано',\n readonly: 'только_чтение',\n required: 'обязательно',\n text: 'текст',\n html: 'html',\n },\n\n expressions: {\n characters: 'символы',\n inclusive: 'включительно',\n exclusive: 'исключительно',\n first: 'первый',\n last: 'последний',\n next: 'следующий',\n previous: 'предыдущий',\n prev: 'пред',\n at: 'в',\n random: 'случайный',\n closest: 'ближайший',\n parent: 'родитель',\n children: 'дети',\n within: 'внутри',\n no: 'нет',\n empty: 'пустой',\n some: 'некоторые',\n 'starts with': 'начинается_с',\n 'ends with': 'заканчивается_на',\n 'ignoring case': 'без_учёта_регистра',\n 'sorted by': 'сортировано_по',\n 'mapped to': 'преобразовано_в',\n 'split by': 'разделено_по',\n 'joined by': 'объединено_через',\n },\n};\n\nexport const ru = russianDictionary;\n","import { russianDictionary } from '../dictionaries/ru';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\nexport const ruKeywords: KeywordProvider = createKeywordProvider(russianDictionary, 'ru', {\n allowEnglishFallback: true,\n});\n\nexport { russianDictionary as ruDictionary } from '../dictionaries/ru';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const ukrainianDictionary: Dictionary = {\n commands: {\n on: 'при',\n tell: 'сказати',\n trigger: 'запустити', // auditor: dict emitted a word the profile reads differently\n send: 'надіслати',\n take: 'взяти',\n put: 'покласти',\n set: 'встановити',\n get: 'отримати',\n add: 'додати',\n remove: 'видалити',\n toggle: 'перемкнути',\n hide: 'сховати',\n show: 'показати',\n // command verb; the events section keeps the noun прокрутка for `on scroll`.\n // Without this entry the transformer fell back to the event noun, which the\n // parser doesn't read as the scroll command (#321 focus family).\n scroll: 'прокрутити',\n if: 'якщо',\n unless: 'крім',\n repeat: 'повторити',\n for: 'для',\n while: 'поки',\n until: 'до',\n continue: 'продовжити',\n break: 'перервати',\n halt: 'зупинити',\n wait: 'чекати',\n fetch: 'завантажити',\n call: 'викликати',\n return: 'повернути',\n make: 'створити',\n log: 'записати',\n throw: 'кинути',\n catch: 'зловити',\n measure: 'виміряти',\n transition: 'анімувати',\n increment: 'збільшити',\n decrement: 'зменшити',\n default: 'за_замовчуванням',\n go: 'перейти',\n pushUrl: 'додати_url',\n replaceUrl: 'замінити_url',\n copy: 'копіювати',\n pick: 'вибрати',\n beep: 'звук',\n js: 'js',\n async: 'асинхронно',\n render: 'відобразити',\n swap: 'поміняти',\n morph: 'трансформувати',\n settle: 'стабілізувати',\n append: 'дописати', // matches the uk profile primary\n exit: 'вийти',\n else: 'інакше',\n install: 'інсталювати', // loanword — `встановити` is `set` (homonym); see ukrainian profile\n init: 'ініціалізувати',\n behavior: 'поведінка',\n focus: 'сфокусувати',\n blur: 'розфокусувати',\n clone: 'клонувати',\n prepend: 'додати на початок', // natural form; see ru.ts\n breakpoint: 'точка-зупинки',\n clear: 'очистити',\n close: 'закрити',\n open: 'відкрити',\n select: 'виділити', // Batch 3: вибрати is the pick keyword — bare select rendered with it parses null\n },\n\n modifiers: {\n to: 'до',\n from: 'з',\n into: 'в',\n with: 'з',\n at: 'в',\n in: 'у',\n of: 'з',\n as: 'як',\n by: 'на',\n before: 'до',\n after: 'після',\n over: 'над',\n under: 'під',\n between: 'між',\n through: 'через',\n without: 'без',\n on: 'на',\n },\n\n events: {\n click: 'клік',\n dblclick: 'подвійний_клік',\n // Fused (no `_`): the semantic tokenizer splits on `_`, so an underscore form\n // breaks event recognition. Mirrors the #510 tr resize fix + enyakın.\n mousedown: 'мишавниз',\n mouseup: 'мишавгору',\n mouseenter: 'миша_вхід',\n mouseleave: 'миша_вихід',\n mouseover: 'наведення',\n mouseout: 'відведення',\n mousemove: 'рух_миші',\n keydown: 'клавіша_вниз',\n keyup: 'клавіша_вгору',\n keypress: 'натискання_клавіші',\n focus: 'фокус',\n blur: 'розфокус',\n change: 'зміна',\n input: 'введення',\n submit: 'надсилання',\n reset: 'скинути', // Batch 3: скидання captured on.event as expression (broken listener) — profile verb round-trips\n load: 'завантаження',\n unload: 'вивантаження',\n resize: 'змінарозміру', // fused (no `_`) — see mousedown note above\n scroll: 'прокрутка',\n touchstart: 'дотик_початок',\n touchend: 'дотик_кінець',\n touchmove: 'дотик_рух',\n touchcancel: 'дотик_скасування',\n },\n\n logical: {\n when: 'коли',\n where: 'де',\n and: 'і',\n or: 'або',\n not: 'не',\n is: 'є',\n exists: 'існує',\n matches: 'відповідає',\n contains: 'містить',\n includes: 'включає',\n equals: 'дорівнює',\n then: 'тоді',\n else: 'інакше',\n otherwise: 'в_іншому_випадку',\n end: 'кінець',\n live: 'живий',\n changes: 'змінюється',\n has: 'має',\n have: 'маю',\n isNot: 'не_є',\n empty: 'порожній',\n },\n\n temporal: {\n seconds: 'секунд',\n second: 'секунда',\n milliseconds: 'мілісекунд',\n millisecond: 'мілісекунда',\n minutes: 'хвилин',\n minute: 'хвилина',\n hours: 'годин',\n hour: 'година',\n ms: 'мс',\n s: 'с',\n min: 'хв',\n h: 'год',\n forever: 'завжди',\n once: 'один_раз',\n every: 'кожний',\n until: 'до',\n times: 'разів',\n },\n\n values: {\n true: 'істина',\n false: 'хибність',\n null: 'нічого',\n undefined: 'невизначено',\n it: 'це',\n its: 'його',\n me: 'я',\n my: 'мій',\n you: 'ти',\n your: 'твій',\n yourself: 'сам',\n myself: 'я_сам',\n element: 'елемент',\n target: 'ціль',\n detail: 'деталі',\n event: 'подія',\n window: 'вікно',\n document: 'документ',\n body: 'тіло',\n result: 'результат',\n value: 'значення',\n first: 'перший',\n last: 'останній',\n next: 'наступний',\n previous: 'попередній',\n closest: 'найближчий',\n parent: 'батьківський',\n },\n\n attributes: {\n class: 'клас',\n classes: 'класи',\n style: 'стиль',\n styles: 'стилі',\n attribute: 'атрибут',\n attributes: 'атрибути',\n property: 'властивість',\n properties: 'властивості',\n disabled: 'вимкнено',\n hidden: 'приховано',\n checked: 'позначено',\n selected: 'вибрано',\n readonly: 'лише_читання',\n required: \"обов'язково\",\n text: 'текст',\n html: 'html',\n },\n\n expressions: {\n characters: 'символи',\n inclusive: 'включно',\n exclusive: 'виключно',\n first: 'перший',\n last: 'останній',\n next: 'наступний',\n previous: 'попередній',\n prev: 'попер',\n at: 'в',\n random: 'випадковий',\n closest: 'найближчий',\n parent: 'батьківський',\n children: 'діти',\n within: 'всередині',\n no: 'ні',\n empty: 'порожній',\n some: 'деякі',\n 'starts with': 'починається_з',\n 'ends with': 'закінчується_на',\n 'ignoring case': 'без_урахування_регістру',\n 'sorted by': 'відсортовано_за',\n 'mapped to': 'перетворено_на',\n 'split by': 'розділено_за',\n 'joined by': \"об'єднано_через\",\n },\n};\n\nexport const uk = ukrainianDictionary;\n","import { ukrainianDictionary } from '../dictionaries/uk';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\nexport const ukKeywords: KeywordProvider = createKeywordProvider(ukrainianDictionary, 'uk', {\n allowEnglishFallback: true,\n});\n\nexport { ukrainianDictionary as ukDictionary } from '../dictionaries/uk';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const hindiDictionary: Dictionary = {\n commands: {\n on: 'पर',\n tell: 'बताएं',\n trigger: 'ट्रिगर',\n send: 'भेजें',\n take: 'लें',\n put: 'रखें',\n set: 'सेट',\n get: 'प्राप्त',\n add: 'जोड़ें',\n remove: 'हटाएं',\n toggle: 'टॉगल',\n hide: 'छिपाएं',\n show: 'दिखाएं',\n if: 'अगर',\n unless: 'जब तक नहीं', // spaced (not जब_तक_नहीं) → one multi-word `unless` token\n repeat: 'दोहराएं',\n for: 'हेतु', // single token — के_लिए splits at _ in the hi extractor\n while: 'जब तक',\n until: 'तक',\n continue: 'जारी',\n break: 'रोकें',\n halt: 'रोकें',\n wait: 'प्रतीक्षा',\n fetch: 'लाएं',\n call: 'कॉल',\n return: 'लौटाएं',\n make: 'बनाएं',\n log: 'लॉग',\n throw: 'फेंकें',\n catch: 'पकड़ें',\n measure: 'मापें',\n transition: 'संक्रमण',\n increment: 'बढ़ाएं',\n decrement: 'घटाएं',\n default: 'डिफ़ॉल्ट',\n go: 'जाएं',\n pushUrl: 'url_जोड़ें',\n replaceUrl: 'url_बदलें',\n copy: 'कॉपी',\n pick: 'चुनें',\n beep: 'बीप',\n js: 'जेएस',\n async: 'असिंक',\n render: 'रेंडर',\n swap: 'विनिमय',\n morph: 'रूपांतर',\n settle: 'स्थिर',\n append: 'संलग्न',\n exit: 'बाहर',\n else: 'वरना',\n install: 'इंस्टॉल',\n init: 'प्रारंभ',\n behavior: 'व्यवहार',\n focus: 'फोकस',\n blur: 'धुंधला',\n clone: 'क्लोन', // Batch 3: कॉपी is the copy verb — rendered clone parsed as action=copy\n prepend: 'जोड़ें_शुरू',\n breakpoint: 'ब्रेकप्वाइंट',\n clear: 'साफ़-करें',\n close: 'बंद-करें',\n open: 'खोलें',\n select: 'चिह्नित-करें', // Batch 3: चुनें is the pick keyword — bare select rendered with it parses null\n socket: 'सॉकेट',\n },\n\n modifiers: {\n to: 'को',\n from: 'से',\n into: 'में',\n with: 'के_साथ',\n at: 'पर',\n in: 'में',\n of: 'का',\n as: 'के_रूप_में',\n by: 'द्वारा',\n before: 'से पहले',\n after: 'के बाद',\n over: 'के_ऊपर',\n under: 'के_नीचे',\n between: 'के_बीच',\n through: 'के_माध्यम_से',\n without: 'के_बिना',\n on: 'पर',\n },\n\n events: {\n click: 'क्लिक',\n dblclick: 'डबल_क्लिक',\n // Fused (no `_`): the semantic tokenizer splits on `_`, breaking event\n // recognition (mousedown → \"नीचे\"). Mirrors the #535 ru/uk fuse.\n mousedown: 'माउसनीचे',\n mouseup: 'माउसऊपर',\n mouseenter: 'माउस_प्रवेश',\n mouseleave: 'माउस_बाहर',\n mouseover: 'माउस_ओवर',\n mouseout: 'माउस_आउट',\n mousemove: 'माउस_मूव',\n keydown: 'की_नीचे',\n keyup: 'की_ऊपर',\n keypress: 'की_प्रेस',\n focus: 'फोकस',\n blur: 'धुंधला',\n change: 'परिवर्तन',\n input: 'इनपुट',\n submit: 'जमा',\n reset: 'रीसेट',\n load: 'लोड',\n unload: 'अनलोड',\n resize: 'आकार_बदलें',\n scroll: 'स्क्रॉल',\n touchstart: 'टच_शुरू',\n touchend: 'टच_समाप्त',\n touchmove: 'टच_मूव',\n touchcancel: 'टच_रद्द',\n },\n\n logical: {\n when: 'जब',\n where: 'कहाँ',\n and: 'और',\n or: 'या',\n not: 'नहीं',\n is: 'है',\n exists: 'मौजूद',\n // Natural spaced phrase `मेल खाता` (\"matches\") — how Hindi writes it. The base\n // tokenizer now matches multi-word profile keywords, so the hindi profile maps\n // `मेल खाता`→matches without the underscore (`मेल_खाता` split) or the\n // concatenated `मेलखाता` (parsed, but unnatural) workarounds.\n matches: 'मेल खाता',\n contains: 'शामिल',\n includes: 'में_है',\n equals: 'बराबर',\n then: 'फिर',\n else: 'वरना',\n otherwise: 'अन्यथा',\n end: 'समाप्त',\n live: 'लाइव',\n changes: 'बदलने पर',\n has: 'है',\n have: 'है',\n isNot: 'नहीं_है',\n empty: 'खाली',\n },\n\n temporal: {\n seconds: 'सेकंड',\n second: 'सेकंड',\n milliseconds: 'मिलीसेकंड',\n millisecond: 'मिलीसेकंड',\n minutes: 'मिनट',\n minute: 'मिनट',\n hours: 'घंटे',\n hour: 'घंटा',\n ms: 'मिसे',\n s: 'से',\n min: 'मि',\n h: 'घं',\n forever: 'हमेशा',\n once: 'एक_बार',\n every: 'हर',\n until: 'तक',\n times: 'बार',\n },\n\n values: {\n true: 'सच',\n false: 'झूठ',\n null: 'null',\n undefined: 'अपरिभाषित',\n it: 'यह',\n its: 'इसका',\n me: 'मैं',\n my: 'मेरा',\n you: 'आप',\n your: 'आपका',\n yourself: 'स्वयं',\n myself: 'मैं_स्वयं',\n element: 'तत्व',\n target: 'लक्ष्य',\n detail: 'विवरण',\n event: 'घटना',\n window: 'विंडो',\n document: 'दस्तावेज़',\n body: 'बॉडी',\n result: 'परिणाम',\n value: 'मान',\n first: 'पहला',\n last: 'अंतिम',\n next: 'अगला',\n previous: 'पिछला',\n closest: 'निकटतम',\n parent: 'मूल',\n },\n\n attributes: {\n class: 'क्लास',\n classes: 'क्लासेस',\n style: 'स्टाइल',\n styles: 'स्टाइल्स',\n attribute: 'गुण',\n attributes: 'गुण',\n property: 'संपत्ति',\n properties: 'संपत्तियाँ',\n disabled: 'अक्षम',\n hidden: 'छिपा',\n checked: 'चेक',\n selected: 'चयनित',\n readonly: 'केवल_पढ़ने',\n required: 'आवश्यक',\n text: 'पाठ',\n html: 'html',\n },\n\n expressions: {\n characters: 'अक्षर',\n first: 'पहला',\n last: 'अंतिम',\n next: 'अगला',\n previous: 'पिछला',\n prev: 'पिछ',\n at: 'पर',\n random: 'यादृच्छिक',\n closest: 'निकटतम',\n parent: 'मूल',\n children: 'बच्चे',\n within: 'के_अंदर',\n no: 'कोई नहीं',\n empty: 'खाली',\n some: 'कुछ',\n 'starts with': 'से_शुरू',\n 'ends with': 'पर_समाप्त',\n 'ignoring case': 'केस_अनदेखा',\n 'sorted by': 'द्वारा_क्रमबद्ध',\n 'mapped to': 'में_परिवर्तित',\n 'split by': 'द्वारा_विभाजित',\n 'joined by': 'द्वारा_जुड़ा',\n },\n};\n\nexport const hi = hindiDictionary;\n","import { hindiDictionary } from '../dictionaries/hi';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\nexport const hiKeywords: KeywordProvider = createKeywordProvider(hindiDictionary, 'hi', {\n allowEnglishFallback: true,\n});\n\nexport { hindiDictionary as hiDictionary } from '../dictionaries/hi';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const bengaliDictionary: Dictionary = {\n commands: {\n on: 'তে',\n toggle: 'টগল',\n add: 'যোগ',\n remove: 'সরান',\n set: 'সেট',\n get: 'পান',\n put: 'রাখুন',\n take: 'নিন',\n show: 'দেখান',\n hide: 'লুকান',\n increment: 'বৃদ্ধি',\n decrement: 'হ্রাস',\n if: 'যদি',\n else: 'নতুবা',\n repeat: 'পুনরাবৃত্তি',\n for: 'জন্য',\n while: 'যতক্ষণ',\n wait: 'অপেক্ষা',\n fetch: 'আনুন',\n call: 'কল',\n return: 'ফিরুন',\n log: 'লগ',\n trigger: 'ট্রিগার',\n send: 'পাঠান',\n go: 'যান',\n halt: 'থামুন',\n throw: 'নিক্ষেপ',\n continue: 'চালিয়ে যান',\n make: 'তৈরি করুন',\n append: 'জুড়ুন',\n prepend: 'শুরুতে যোগ',\n focus: 'ফোকাস',\n blur: 'ঝাপসা',\n transition: 'সংক্রমণ',\n settle: 'স্থির',\n measure: 'মাপুন',\n async: 'অ্যাসিঙ্ক',\n tell: 'বলুন',\n default: 'ডিফল্ট',\n init: 'শুরু',\n behavior: 'আচরণ',\n install: 'ইনস্টল',\n clone: 'ক্লোন', // Batch 3: কপি is the copy verb — rendered clone parsed as action=copy\n swap: 'বদল',\n morph: 'রূপান্তর',\n beep: 'বীপ',\n break: 'ভাঙুন',\n copy: 'কপি',\n exit: 'বের',\n js: 'জেএস',\n pick: 'বাছুন',\n render: 'রেন্ডার',\n until: 'পর্যন্ত',\n breakpoint: 'ব্রেকপয়েন্ট',\n clear: 'পরিষ্কার',\n close: 'বন্ধ',\n open: 'খুলুন',\n select: 'নির্বাচন',\n socket: 'সকেট',\n },\n\n modifiers: {\n to: 'কে',\n from: 'থেকে',\n into: 'তে',\n on: 'তে',\n with: 'সাথে',\n by: 'দ্বারা',\n as: 'হিসাবে',\n before: 'আগে',\n after: 'পরে',\n at: 'এ',\n in: 'এ',\n over: 'উপর',\n between: 'মধ্যে',\n then: 'তারপর',\n and: 'এবং',\n end: 'শেষ',\n until: 'পর্যন্ত',\n of: 'র',\n },\n\n events: {\n click: 'ক্লিক',\n change: 'পরিবর্তন',\n input: 'ইনপুট',\n submit: 'জমা',\n load: 'লোড',\n focus: 'ফোকাস',\n blur: 'ঝাপসা',\n reset: 'রিসেট',\n keydown: 'keydown',\n keyup: 'keyup',\n // V3c burn-down (2026-07-14): English passthrough — no native form round-trips\n // on the parse side (probe: split forms shatter, fused forms capture verbatim).\n mouseover: 'mouseover',\n mouseout: 'mouseout',\n scroll: 'স্ক্রোল',\n resize: 'রিসাইজ',\n every: 'প্রতি',\n },\n\n logical: {\n if: 'যদি',\n when: 'যখন',\n where: 'কোথায়',\n else: 'নতুবা',\n not: 'না',\n and: 'এবং',\n or: 'অথবা',\n is: 'হয়',\n exists: 'আছে',\n has: 'আছে',\n have: 'আছি',\n empty: 'খালি',\n true: 'সত্য',\n false: 'মিথ্যা',\n null: 'শূন্য',\n undefined: 'অনির্ধারিত',\n end: 'শেষ',\n then: 'তারপর',\n live: 'লাইভ',\n bind: 'বাইন্ড',\n changes: 'পরিবর্তিত হলে',\n },\n\n temporal: {\n now: 'এখন',\n seconds: 'সেকেন্ড',\n milliseconds: 'মিলিসেকেন্ড',\n minutes: 'মিনিট',\n hours: 'ঘণ্টা',\n forever: 'চিরকাল',\n times: 'বার',\n s: 'সে',\n ms: 'মিসে',\n },\n\n values: {\n me: 'আমি',\n my: 'আমার',\n it: 'এটি',\n its: 'এর',\n result: 'ফলাফল',\n event: 'ঘটনা',\n target: 'লক্ষ্য',\n body: 'বডি',\n you: 'আপনি',\n your: 'তোমার',\n },\n\n attributes: {\n class: 'শ্রেণি',\n id: 'আইডি',\n style: 'শৈলী',\n value: 'মান',\n text: 'পাঠ্য',\n html: 'এইচটিএমএল',\n disabled: 'অক্ষম',\n checked: 'চেক করা',\n },\n\n expressions: {\n characters: 'অক্ষর',\n inclusive: 'অন্তর্ভুক্ত',\n exclusive: 'বাদ',\n first: 'প্রথম',\n last: 'শেষ',\n next: 'পরবর্তী',\n previous: 'আগের',\n closest: 'নিকটতম',\n parent: 'মূল',\n children: 'সন্তান',\n random: 'এলোমেলো',\n length: 'দৈর্ঘ্য',\n index: 'সূচক',\n // The EXPRESSION `empty` is the state predicate (`if my value is empty`),\n // not the command: `খালি-করুন` is the imperative \"empty it!\" and belongs to\n // the `empty` COMMAND, which keeps it. Kept in step with the semantic\n // lexicon by `lexicon-parity.test.ts`.\n empty: 'খালি',\n 'starts with': 'দিয়ে_শুরু',\n 'ends with': 'দিয়ে_শেষ',\n 'ignoring case': 'কেস_উপেক্ষা',\n 'sorted by': 'দ্বারা_সাজানো',\n 'mapped to': 'তে_রূপান্তরিত',\n 'split by': 'দ্বারা_বিভক্ত',\n 'joined by': 'দ্বারা_যুক্ত',\n },\n};\n\nexport const bn = bengaliDictionary;\n","import { bn } from '../dictionaries/bn';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\nexport const bnKeywords: KeywordProvider = createKeywordProvider(bn, 'bn', {\n allowEnglishFallback: true,\n});\n\nexport { bn as bnDictionary } from '../dictionaries/bn';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const thaiDictionary: Dictionary = {\n commands: {\n on: 'เมื่อ',\n toggle: 'สลับ',\n add: 'เพิ่ม',\n remove: 'ลบ',\n set: 'ตั้ง',\n get: 'รับค่า',\n put: 'ใส่',\n take: 'รับ',\n show: 'แสดง',\n hide: 'ซ่อน',\n increment: 'เพิ่มค่า',\n decrement: 'ลดค่า',\n if: 'ถ้า',\n else: 'ไม่งั้น',\n repeat: 'ทำซ้ำ',\n for: 'สำหรับ',\n while: 'ในขณะที่',\n wait: 'รอ',\n fetch: 'ดึงข้อมูล',\n call: 'เรียก',\n return: 'คืนค่า',\n log: 'บันทึก',\n trigger: 'ทริกเกอร์',\n send: 'ส่ง',\n go: 'ไป',\n halt: 'หยุด',\n throw: 'โยน',\n continue: 'ต่อไป',\n make: 'สร้าง',\n append: 'เพิ่มท้าย',\n prepend: 'เพิ่มหน้า',\n focus: 'โฟกัส',\n blur: 'เบลอ',\n // เปลี่ยนผ่าน, not เปลี่ยน: the semantic th profile's `change` keyword is\n // เปลี่ยน, so a เปลี่ยน render could never anchor a transition command.\n transition: 'เปลี่ยนผ่าน',\n settle: 'คงที่',\n measure: 'วัด',\n async: 'อะซิงค์',\n tell: 'บอก',\n default: 'ค่าเริ่มต้น',\n init: 'เริ่มต้น',\n behavior: 'พฤติกรรม',\n install: 'ติดตั้ง',\n clone: 'โคลน', // Batch 3: คัดลอก is the copy verb — rendered clone parsed as action=copy\n swap: 'สลับที่',\n morph: 'แปลงร่าง',\n beep: 'บี๊บ',\n break: 'ขัดจังหวะ',\n copy: 'คัดลอก',\n exit: 'ออก',\n js: 'เจเอส',\n pick: 'เลือก',\n render: 'แสดงผล',\n until: 'จนถึง',\n breakpoint: 'จุดพัก',\n clear: 'เคลียร์',\n close: 'ปิด',\n open: 'เปิด',\n select: 'ทำเครื่องหมาย', // Batch 3: เลือก is the pick keyword — bare select rendered with it parses null\n },\n\n modifiers: {\n to: 'ไปยัง',\n from: 'จาก',\n into: 'ใน',\n on: 'เมื่อ',\n with: 'ด้วย',\n by: 'โดย',\n as: 'เป็น',\n before: 'ก่อน',\n after: 'หลัง',\n at: 'ที่',\n in: 'ใน',\n over: 'เหนือ',\n between: 'ระหว่าง',\n then: 'แล้ว',\n and: 'และ',\n end: 'จบ',\n until: 'จนถึง',\n of: 'ของ',\n },\n\n events: {\n click: 'คลิก',\n change: 'เปลี่ยนแปลง',\n input: 'อินพุต',\n submit: 'ส่ง',\n load: 'โหลด',\n focus: 'โฟกัส',\n blur: 'เบลอ',\n reset: 'รีเซ็ต',\n keydown: 'กดคีย์',\n keyup: 'ปล่อยคีย์',\n mouseover: 'เมาส์เข้า',\n mouseout: 'เมาส์ออก',\n scroll: 'เลื่อน',\n resize: 'ปรับขนาด',\n every: 'ทุก',\n },\n\n logical: {\n if: 'ถ้า',\n when: 'เมื่อ',\n where: 'ที่ไหน',\n else: 'ไม่งั้น',\n not: 'ไม่',\n and: 'และ',\n or: 'หรือ',\n is: 'เป็น',\n exists: 'มีอยู่',\n has: 'มี',\n have: 'มี',\n empty: 'ว่าง',\n true: 'จริง',\n false: 'เท็จ',\n null: 'null',\n undefined: 'ไม่กำหนด',\n end: 'จบ',\n then: 'แล้ว',\n live: 'สด',\n changes: 'เปลี่ยน',\n },\n\n temporal: {\n now: 'ตอนนี้',\n seconds: 'วินาที',\n milliseconds: 'มิลลิวินาที',\n minutes: 'นาที',\n hours: 'ชั่วโมง',\n forever: 'ตลอดไป',\n times: 'ครั้ง',\n s: 'วิ',\n ms: 'มว',\n },\n\n values: {\n me: 'ฉัน',\n my: 'ของฉัน',\n it: 'มัน',\n its: 'ของมัน',\n result: 'ผลลัพธ์',\n event: 'เหตุการณ์',\n target: 'เป้าหมาย',\n body: 'บอดี้',\n you: 'คุณ',\n your: 'ของคุณ',\n },\n\n attributes: {\n class: 'คลาส',\n id: 'ไอดี',\n style: 'สไตล์',\n value: 'ค่า',\n text: 'ข้อความ',\n html: 'เอชทีเอ็มแอล',\n disabled: 'ปิดใช้งาน',\n checked: 'เลือกแล้ว',\n },\n\n expressions: {\n characters: 'อักขระ',\n inclusive: 'รวม',\n exclusive: 'ยกเว้น',\n first: 'แรก',\n last: 'สุดท้าย',\n next: 'ถัดไป',\n previous: 'ก่อนหน้า',\n closest: 'ใกล้สุด',\n parent: 'ต้นทาง',\n children: 'ลูก',\n random: 'สุ่ม',\n length: 'ความยาว',\n index: 'ดัชนี',\n empty: 'ล้าง',\n 'starts with': 'ขึ้นต้นด้วย',\n 'ends with': 'ลงท้ายด้วย',\n 'ignoring case': 'ไม่สนตัวพิมพ์',\n 'sorted by': 'เรียงตาม',\n 'mapped to': 'แปลงเป็น',\n 'split by': 'แยกด้วย',\n 'joined by': 'รวมด้วย',\n },\n};\n\nexport const th = thaiDictionary;\n","import { th } from '../dictionaries/th';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\nexport const thKeywords: KeywordProvider = createKeywordProvider(th, 'th', {\n allowEnglishFallback: true,\n});\n\nexport { th as thDictionary } from '../dictionaries/th';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const malayDictionary: Dictionary = {\n commands: {\n on: 'apabila',\n tell: 'beritahu',\n trigger: 'cetuskan',\n send: 'hantar',\n take: 'ambil',\n put: 'letak',\n set: 'tetapkan',\n get: 'dapatkan',\n add: 'tambah',\n remove: 'buang',\n toggle: 'togol',\n hide: 'sembunyi',\n show: 'tunjuk',\n if: 'jika',\n unless: 'kecuali',\n repeat: 'ulang',\n for: 'untuk',\n while: 'selagi',\n until: 'sehingga',\n continue: 'teruskan',\n break: 'henti',\n halt: 'henti',\n wait: 'tunggu',\n fetch: 'ambil_dari',\n call: 'panggil',\n return: 'pulang',\n make: 'buat',\n log: 'catat',\n throw: 'lempar',\n catch: 'tangkap',\n measure: 'ukur',\n transition: 'peralihan',\n increment: 'tambah_satu',\n decrement: 'kurang_satu',\n default: 'lalai',\n go: 'pergi',\n pushUrl: 'tolak_url',\n replaceUrl: 'ganti_url',\n copy: 'salin',\n pick: 'pilih',\n beep: 'bunyi',\n js: 'js',\n async: 'tak_segerak',\n render: 'papar',\n swap: 'tukar_tempat',\n morph: 'ubah_bentuk',\n settle: 'selesai',\n append: 'tambah_hujung',\n prepend: 'tambah_mula',\n exit: 'keluar',\n else: 'kalau_tidak',\n focus: 'fokus',\n blur: 'kabur',\n install: 'pasang',\n behavior: 'kelakuan',\n init: 'mula',\n clone: 'klon',\n breakpoint: 'titik-henti',\n clear: 'bersihkan', // padam is a remove alternative in the profile\n close: 'tutup',\n open: 'buka',\n select: 'tandai', // Batch 3: pilih is the pick keyword — bare select rendered with it parses null\n socket: 'soket', // derived from the ms profile (socket.primary); see generate-i18n-dictionaries\n },\n\n modifiers: {\n to: 'ke',\n from: 'dari',\n into: 'ke_dalam',\n with: 'dengan',\n at: 'di',\n in: 'dalam',\n of: 'daripada',\n as: 'sebagai',\n by: 'oleh',\n before: 'sebelum',\n after: 'selepas',\n over: 'atas',\n under: 'bawah',\n between: 'antara',\n through: 'melalui',\n without: 'tanpa',\n on: 'pada',\n then: 'kemudian',\n and: 'dan',\n end: 'tamat',\n until: 'sehingga',\n },\n\n events: {\n click: 'click',\n dblclick: 'dblclick',\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n mouseover: 'mouseover',\n mouseout: 'mouseout',\n mousemove: 'mousemove',\n keydown: 'keydown',\n keyup: 'keyup',\n keypress: 'keypress',\n focus: 'focus',\n blur: 'blur',\n change: 'change',\n input: 'input',\n submit: 'submit',\n reset: 'reset',\n load: 'load',\n unload: 'unload',\n resize: 'resize',\n scroll: 'scroll',\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n touchcancel: 'touchcancel',\n every: 'setiap',\n },\n\n logical: {\n when: 'apabila',\n where: 'di_mana',\n and: 'dan',\n or: 'atau',\n not: 'bukan',\n is: 'adalah',\n exists: 'wujud',\n matches: 'sepadan',\n contains: 'mengandungi',\n includes: 'termasuk',\n equals: 'sama',\n has: 'ada',\n have: 'ada',\n then: 'kemudian',\n else: 'kalau_tidak',\n otherwise: 'jika_tidak',\n end: 'tamat',\n live: 'langsung',\n changes: 'berubah',\n if: 'jika',\n empty: 'kosong',\n true: 'benar',\n false: 'salah',\n null: 'null',\n undefined: 'tidak_ditakrifkan',\n },\n\n temporal: {\n seconds: 'saat',\n second: 'saat',\n milliseconds: 'milisaat',\n millisecond: 'milisaat',\n minutes: 'minit',\n minute: 'minit',\n hours: 'jam',\n hour: 'jam',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'j',\n now: 'sekarang',\n forever: 'selamanya',\n times: 'kali',\n },\n\n values: {\n true: 'benar',\n false: 'salah',\n null: 'null',\n undefined: 'tidak_ditakrifkan',\n it: 'ia',\n its: 'nya',\n me: 'saya',\n my: 'saya_punya',\n myself: 'diri_saya',\n you: 'kamu',\n your: 'kamu_punya',\n yourself: 'diri_kamu',\n element: 'elemen',\n target: 'sasaran',\n detail: 'perincian',\n event: 'peristiwa',\n window: 'tetingkap',\n document: 'dokumen',\n body: 'badan',\n result: 'hasil',\n value: 'nilai',\n },\n\n attributes: {\n class: 'kelas',\n classes: 'kelas_kelas',\n style: 'gaya',\n styles: 'gaya_gaya',\n attribute: 'atribut',\n attributes: 'atribut_atribut',\n property: 'sifat',\n properties: 'sifat_sifat',\n id: 'id',\n value: 'nilai',\n text: 'teks',\n html: 'html',\n disabled: 'dilumpuhkan',\n checked: 'ditanda',\n },\n\n expressions: {\n characters: 'aksara',\n inclusive: 'inklusif',\n exclusive: 'eksklusif',\n first: 'pertama',\n last: 'terakhir',\n next: 'seterusnya',\n previous: 'sebelumnya',\n prev: 'sebelum',\n at: 'di',\n random: 'rawak',\n closest: 'terdekat',\n parent: 'induk',\n children: 'anak_anak',\n within: 'dalam',\n no: 'tiada',\n empty: 'kosong',\n some: 'beberapa',\n 'starts with': 'bermula_dengan',\n 'ends with': 'berakhir_dengan',\n 'ignoring case': 'abaikan_huruf_besar_kecil',\n 'sorted by': 'disusun_mengikut',\n 'mapped to': 'dipetakan_ke',\n 'split by': 'dipecah_oleh',\n 'joined by': 'digabung_oleh',\n length: 'panjang',\n index: 'indeks',\n },\n};\n\nexport const ms = malayDictionary;\n","import { ms } from '../dictionaries/ms';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\nexport const msKeywords: KeywordProvider = createKeywordProvider(ms, 'ms', {\n allowEnglishFallback: true,\n});\n\nexport { ms as msDictionary } from '../dictionaries/ms';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const tagalogDictionary: Dictionary = {\n commands: {\n on: 'kapag',\n tell: 'sabihin',\n trigger: 'palitawin',\n send: 'ipadala',\n take: 'kumuha', // auditor: dict emitted a word the profile reads differently\n put: 'ilagay',\n set: 'itakda',\n // Align with the semantic tl profile's `get` primary (`kunin`); the previous\n // `kuhanin` is the base of fetch's `kuhanin_mula`, so the transformed `get`\n // dropped (get-value parsed degenerate). Same dict↔profile alignment as id `toggle`.\n get: 'kunin',\n add: 'idagdag',\n remove: 'alisin',\n toggle: 'palitan',\n hide: 'itago',\n show: 'ipakita',\n if: 'kung',\n unless: 'maliban_kung',\n repeat: 'ulitin',\n for: 'para_sa',\n while: 'habang',\n until: 'hanggang',\n continue: 'magpatuloy',\n break: 'itigil',\n halt: 'huminto',\n wait: 'maghintay',\n fetch: 'kuhanin_mula',\n call: 'tawagin',\n return: 'ibalik',\n make: 'gumawa',\n log: 'itala',\n throw: 'ihagis',\n catch: 'hulihin',\n measure: 'sukatin',\n transition: 'lumipat',\n increment: 'dagdagan',\n decrement: 'bawasan',\n default: 'pamantayan',\n go: 'pumunta',\n pushUrl: 'itulak_url',\n replaceUrl: 'palitan_url',\n copy: 'kopyahin',\n pick: 'pumili',\n beep: 'tunog',\n js: 'js',\n async: 'sabay',\n render: 'irender', // auditor: dict emitted a word the profile reads differently\n swap: 'palitan_pwesto',\n morph: 'baguhin', // auditor: dict emitted a word the profile reads differently\n settle: 'magpatahimik', // auditor: dict emitted a word the profile reads differently\n append: 'idagdag_sa_dulo',\n prepend: 'idagdag_sa_simula',\n exit: 'lumabas',\n else: 'kung_hindi',\n focus: 'ituon',\n blur: 'alisin_tuon',\n install: 'ikabit',\n behavior: 'ugali',\n init: 'simulan',\n clone: 'i-clone', // Batch 3: kopyahin is the copy verb — rendered clone parsed as action=copy\n breakpoint: 'breakpoint',\n clear: 'burahin',\n close: 'isara',\n open: 'buksan',\n select: 'piliin',\n },\n\n modifiers: {\n to: 'sa',\n from: 'mula_sa',\n into: 'papasok_sa',\n with: 'kasama',\n at: 'sa',\n in: 'sa_loob',\n of: 'ng',\n as: 'bilang',\n by: 'sa_pamamagitan_ng',\n before: 'bago',\n // `matapos` (not `pagkatapos`) for the positional \"after\": `pagkatapos` is\n // also Tagalog \"then\", so emitting it for the position modifier collides with\n // the sequence connector. `matapos` is the unambiguous positional form and\n // matches the semantic tl profile's `after`.\n after: 'matapos',\n over: 'sa_ibabaw',\n under: 'sa_ilalim',\n between: 'sa_pagitan',\n through: 'sa_pamamagitan',\n without: 'walang',\n on: 'sa',\n then: 'pagkatapos',\n and: 'at',\n end: 'wakas',\n until: 'hanggang',\n },\n\n events: {\n click: 'click',\n dblclick: 'dblclick',\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n mouseover: 'mouseover',\n mouseout: 'mouseout',\n mousemove: 'mousemove',\n keydown: 'keydown',\n keyup: 'keyup',\n keypress: 'keypress',\n focus: 'focus',\n blur: 'blur',\n change: 'change',\n input: 'input',\n submit: 'submit',\n reset: 'reset',\n load: 'load',\n unload: 'unload',\n resize: 'resize',\n scroll: 'scroll',\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n touchcancel: 'touchcancel',\n every: 'bawat',\n },\n\n logical: {\n when: 'kapag',\n where: 'kung_saan',\n and: 'at',\n or: 'o',\n not: 'hindi',\n is: 'ay',\n exists: 'may',\n matches: 'tumutugma',\n contains: 'naglalaman',\n // `includes` takes `contains`' word: both engines read them as one operator,\n // and `kasama` is `inclusive` (pick's range word), which the reader takes it for.\n includes: 'naglalaman',\n equals: 'katumbas',\n has: 'may',\n have: 'may',\n then: 'pagkatapos',\n else: 'kung_hindi',\n otherwise: 'kung_hindi_man',\n end: 'wakas',\n live: 'live',\n changes: 'nagbabago',\n if: 'kung',\n empty: 'walang_laman',\n true: 'totoo',\n false: 'mali',\n null: 'wala',\n undefined: 'hindi_tinukoy',\n },\n\n temporal: {\n seconds: 'segundo',\n second: 'segundo',\n milliseconds: 'milisegundo',\n millisecond: 'milisegundo',\n minutes: 'minuto',\n minute: 'minuto',\n hours: 'oras',\n hour: 'oras',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n now: 'ngayon',\n forever: 'magpakailanman',\n times: 'beses',\n },\n\n values: {\n true: 'totoo',\n false: 'mali',\n null: 'wala',\n undefined: 'hindi_tinukoy',\n it: 'ito',\n its: 'nito',\n me: 'ako',\n my: 'aking',\n myself: 'sarili_ko',\n you: 'ikaw',\n your: 'iyong',\n yourself: 'sarili_mo',\n element: 'elemento',\n target: 'target',\n detail: 'detalye',\n event: 'pangyayari',\n window: 'bintana',\n document: 'dokumento',\n body: 'katawan',\n result: 'resulta',\n value: 'halaga',\n },\n\n attributes: {\n class: 'klase',\n classes: 'mga_klase',\n style: 'estilo',\n styles: 'mga_estilo',\n attribute: 'katangian',\n attributes: 'mga_katangian',\n property: 'ari_arian',\n properties: 'mga_ari_arian',\n id: 'id',\n value: 'halaga',\n text: 'teksto',\n html: 'html',\n disabled: 'hindi_pinagana',\n checked: 'naka_tsek',\n },\n\n expressions: {\n characters: 'karakter',\n inclusive: 'kasama',\n exclusive: 'bukod',\n first: 'una',\n last: 'huli',\n next: 'susunod',\n previous: 'nakaraan',\n prev: 'nakaraan',\n at: 'sa',\n random: 'random',\n closest: 'pinakamalapit',\n parent: 'magulang',\n children: 'mga_anak',\n within: 'sa_loob_ng',\n no: 'walang',\n empty: 'walang_laman',\n some: 'ilan',\n 'starts with': 'nagsisimula_sa',\n 'ends with': 'nagtatapos_sa',\n 'ignoring case': 'huwag_pansinin_ang_case',\n 'sorted by': 'nakaayos_ayon_sa',\n 'mapped to': 'binago_sa',\n 'split by': 'hinati_sa',\n 'joined by': 'pinagsama_sa',\n length: 'haba',\n index: 'indeks',\n },\n};\n\nexport const tl = tagalogDictionary;\n","import { tl } from '../dictionaries/tl';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\nexport const tlKeywords: KeywordProvider = createKeywordProvider(tl, 'tl', {\n allowEnglishFallback: true,\n});\n\nexport { tl as tlDictionary } from '../dictionaries/tl';\n","// Generated/merged from semantic profiles — hand-written entries are preserved\n// To add derived entries, update the semantic profile and run: npm run generate:language-assets\n\nimport { Dictionary } from '../types';\n\nexport const he: Dictionary = {\n commands: {\n add: 'הוסף',\n append: 'צרף',\n async: 'אסינכרוני',\n beep: 'ביפ',\n break: 'שבור',\n call: 'קרא',\n clear: 'נקה', // profile's clear word — was untranslated (parsed as nothing)\n continue: 'המשך',\n copy: 'העתק',\n decrement: 'הקטן',\n default: 'ברירת מחדל',\n exit: 'צא',\n fetch: 'הבא',\n for: 'עבור',\n get: 'קבל',\n go: 'לך',\n halt: 'עצור',\n hide: 'הסתר',\n if: 'אם',\n unless: 'אלא',\n increment: 'הגדל',\n install: 'התקן',\n js: 'js',\n log: 'רשום',\n make: 'צור',\n measure: 'מדוד',\n morph: 'הפוך',\n on: 'ב',\n pick: 'בחר',\n put: 'שים',\n remove: 'הסר',\n render: 'רנדר',\n repeat: 'חזור',\n return: 'החזר',\n scroll: 'גלול',\n send: 'שלח',\n set: 'קבע',\n settle: 'התייצב',\n show: 'הראה',\n swap: 'החלף',\n take: 'קח',\n tell: 'אמור',\n throw: 'זרוק',\n toggle: 'מתג',\n transition: 'מעבר',\n trigger: 'הפעל',\n until: 'עד',\n wait: 'חכה',\n while: 'כל עוד',\n },\n\n modifiers: {\n after: 'אחרי',\n before: 'לפני',\n from: 'מ',\n into: 'לתוך',\n to: 'על',\n with: 'עם',\n },\n\n events: {\n blur: 'טשטש',\n change: 'שינוי',\n click: 'לחיצה',\n focus: 'מקד',\n input: 'קלט',\n submit: 'שליחה',\n },\n\n logical: {\n and: 'וגם',\n else: 'אחרת',\n end: 'סוף',\n then: 'אז',\n live: 'חי',\n bind: 'קשור',\n changes: 'משתנה',\n when: 'כאשר',\n where: 'איפה',\n },\n\n temporal: {\n times: 'פעמים',\n },\n\n values: {\n body: 'גוף',\n event: 'אירוע',\n it: 'זה',\n its: 'שלו',\n me: 'אני',\n my: 'שלי',\n result: 'תוצאה',\n target: 'יעד',\n you: 'אתה',\n your: 'שלך',\n },\n\n attributes: {},\n\n expressions: {\n random: 'אקראי',\n characters: 'תווים',\n inclusive: 'כולל',\n exclusive: 'בלעדי',\n last: 'אחרון',\n },\n};\n","// packages/i18n/src/parser/he.ts\n\nimport { he } from '../dictionaries/he';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Hebrew keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Hebrew (RTL, SVO):\n * - `ב לחיצה מתג .active` → parses as `on click toggle .active`\n *\n * English keywords are also accepted (mixed mode).\n *\n * @example\n * ```typescript\n * import { heKeywords } from '@lokascript/i18n/parser/he';\n *\n * heKeywords.resolve('מתג'); // 'toggle'\n * heKeywords.toLocale('on'); // 'ב'\n * ```\n */\nexport const heKeywords: KeywordProvider = createKeywordProvider(he, 'he', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { he as heDictionary } from '../dictionaries/he';\n","// packages/i18n/src/parser/locale-manager.ts\n\nimport type { KeywordProvider } from './types';\nimport { createEnglishProvider } from './create-provider';\n\n/**\n * LocaleManager - Centralized locale configuration for hyperscript parsing.\n *\n * Provides utilities for:\n * - Setting/getting the default locale\n * - Creating locale-aware parsers\n * - Runtime locale switching\n *\n * @example\n * ```typescript\n * import { LocaleManager } from '@lokascript/i18n/parser';\n * import { esKeywords, frKeywords } from '@lokascript/i18n/parser';\n *\n * // Register available locales\n * LocaleManager.register('es', esKeywords);\n * LocaleManager.register('fr', frKeywords);\n *\n * // Set default locale\n * LocaleManager.setDefault('es');\n *\n * // Get keyword provider for parsing\n * const provider = LocaleManager.get(); // Returns esKeywords\n * const frProvider = LocaleManager.get('fr'); // Returns frKeywords\n * ```\n */\nexport class LocaleManager {\n private static providers = new Map<string, KeywordProvider>();\n private static defaultLocale: string = 'en';\n private static englishProvider: KeywordProvider = createEnglishProvider();\n\n /**\n * Register a locale provider.\n *\n * @param locale - The locale code (e.g., 'es', 'ja', 'fr')\n * @param provider - The KeywordProvider for this locale\n */\n static register(locale: string, provider: KeywordProvider): void {\n LocaleManager.providers.set(locale.toLowerCase(), provider);\n }\n\n /**\n * Unregister a locale provider.\n *\n * @param locale - The locale code to remove\n */\n static unregister(locale: string): void {\n LocaleManager.providers.delete(locale.toLowerCase());\n }\n\n /**\n * Set the default locale.\n *\n * @param locale - The locale code to use as default\n * @throws Error if the locale is not registered\n */\n static setDefault(locale: string): void {\n const normalizedLocale = locale.toLowerCase();\n if (normalizedLocale !== 'en' && !LocaleManager.providers.has(normalizedLocale)) {\n throw new Error(\n `Locale '${locale}' is not registered. ` +\n `Available locales: ${LocaleManager.getAvailable().join(', ')}`\n );\n }\n LocaleManager.defaultLocale = normalizedLocale;\n }\n\n /**\n * Get the current default locale.\n *\n * @returns The default locale code\n */\n static getDefault(): string {\n return LocaleManager.defaultLocale;\n }\n\n /**\n * Get a keyword provider for a locale.\n *\n * @param locale - The locale code (optional, defaults to the default locale)\n * @returns The KeywordProvider for the locale\n * @throws Error if the locale is not registered\n */\n static get(locale?: string): KeywordProvider {\n const targetLocale = (locale || LocaleManager.defaultLocale).toLowerCase();\n\n // English is always available\n if (targetLocale === 'en') {\n return LocaleManager.englishProvider;\n }\n\n const provider = LocaleManager.providers.get(targetLocale);\n if (!provider) {\n throw new Error(\n `Locale '${targetLocale}' is not registered. ` +\n `Available locales: ${LocaleManager.getAvailable().join(', ')}`\n );\n }\n\n return provider;\n }\n\n /**\n * Check if a locale is registered.\n *\n * @param locale - The locale code to check\n * @returns True if the locale is available\n */\n static has(locale: string): boolean {\n const normalizedLocale = locale.toLowerCase();\n return normalizedLocale === 'en' || LocaleManager.providers.has(normalizedLocale);\n }\n\n /**\n * Get all available locale codes.\n *\n * @returns Array of locale codes\n */\n static getAvailable(): string[] {\n return ['en', ...Array.from(LocaleManager.providers.keys())];\n }\n\n /**\n * Reset the LocaleManager to its initial state.\n * Useful for testing.\n */\n static reset(): void {\n LocaleManager.providers.clear();\n LocaleManager.defaultLocale = 'en';\n }\n\n /**\n * Register all built-in locales at once.\n *\n * @example\n * ```typescript\n * import { LocaleManager } from '@lokascript/i18n/parser';\n * import { esKeywords, jaKeywords, frKeywords, deKeywords, arKeywords } from '@lokascript/i18n/parser';\n *\n * LocaleManager.registerAll({\n * es: esKeywords,\n * ja: jaKeywords,\n * fr: frKeywords,\n * de: deKeywords,\n * ar: arKeywords,\n * });\n * ```\n */\n static registerAll(providers: Record<string, KeywordProvider>): void {\n for (const [locale, provider] of Object.entries(providers)) {\n LocaleManager.register(locale, provider);\n }\n }\n}\n\n/**\n * Quick utility to detect the browser's preferred locale and return\n * a matching provider, falling back to English.\n *\n * @returns The KeywordProvider for the browser's locale or English\n *\n * @example\n * ```typescript\n * import { detectBrowserLocale } from '@lokascript/i18n/parser';\n *\n * // The provider for the browser's language (navigator.languages), or English\n * detectBrowserLocale().locale; // e.g. 'es'\n * ```\n */\nexport function detectBrowserLocale(): KeywordProvider {\n if (typeof navigator === 'undefined') {\n return LocaleManager.get('en');\n }\n\n // Get browser languages in order of preference\n const languages = navigator.languages || [navigator.language];\n\n for (const lang of languages) {\n // Extract the base language code (e.g., 'es-MX' -> 'es')\n const baseLocale = lang.split('-')[0].toLowerCase();\n\n if (LocaleManager.has(baseLocale)) {\n return LocaleManager.get(baseLocale);\n }\n }\n\n // Fallback to English\n return LocaleManager.get('en');\n}\n","// packages/i18n/src/dictionaries/en.ts\n\nimport { Dictionary } from '../types';\n\n/**\n * English dictionary - identity mapping since English is the canonical hyperscript language.\n * This exists primarily for symmetry in translation operations (e.g., en -> es).\n */\nexport const en: Dictionary = {\n commands: {\n // Event handling\n on: 'on',\n tell: 'tell',\n trigger: 'trigger',\n send: 'send',\n\n // DOM manipulation\n take: 'take',\n put: 'put',\n set: 'set',\n get: 'get',\n add: 'add',\n remove: 'remove',\n toggle: 'toggle',\n hide: 'hide',\n show: 'show',\n\n // Control flow\n if: 'if',\n unless: 'unless',\n repeat: 'repeat',\n for: 'for',\n while: 'while',\n until: 'until',\n continue: 'continue',\n break: 'break',\n halt: 'halt',\n\n // Async\n wait: 'wait',\n fetch: 'fetch',\n call: 'call',\n return: 'return',\n\n // Other commands\n make: 'make',\n log: 'log',\n throw: 'throw',\n catch: 'catch',\n measure: 'measure',\n transition: 'transition',\n // Upstream's block opener: English in every language, as semantic writes it\n // (patterns/view-transition.ts), so no other dictionary translates it.\n viewTransition: 'start view transition',\n\n // Data Commands\n increment: 'increment',\n decrement: 'decrement',\n default: 'default',\n\n // Reactivity Commands\n bind: 'bind',\n\n // Realtime / service-worker Commands\n eventsource: 'eventsource',\n socket: 'socket',\n worker: 'worker',\n intercept: 'intercept',\n\n // Navigation Commands\n go: 'go',\n pushUrl: 'pushUrl',\n replaceUrl: 'replaceUrl',\n\n // Utility Commands\n copy: 'copy',\n pick: 'pick',\n beep: 'beep',\n\n // Advanced Commands\n js: 'js',\n async: 'async',\n render: 'render',\n\n // Animation Commands\n swap: 'swap',\n morph: 'morph',\n settle: 'settle',\n\n // Content Commands\n append: 'append',\n\n // Control Flow\n exit: 'exit',\n\n // Behaviors\n install: 'install',\n\n // v0.9.90 Phase 1 — DOM / form state / debug\n open: 'open',\n close: 'close',\n select: 'select',\n clear: 'clear',\n breakpoint: 'breakpoint',\n\n // Other commands with schemas (backfill — pre-existing gaps surfaced by\n // the schema-alignment test)\n prepend: 'prepend',\n clone: 'clone',\n // Navigation/DOM commands added in core (Dec 2025 / Apr 2026)\n scroll: 'scroll',\n push: 'push',\n replace: 'replace',\n process: 'process',\n },\n\n modifiers: {\n to: 'to',\n from: 'from',\n into: 'into',\n with: 'with',\n at: 'at',\n in: 'in',\n of: 'of',\n as: 'as',\n by: 'by',\n before: 'before',\n after: 'after',\n over: 'over',\n under: 'under',\n between: 'between',\n through: 'through',\n without: 'without',\n },\n\n events: {\n click: 'click',\n dblclick: 'dblclick',\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n mouseover: 'mouseover',\n mouseout: 'mouseout',\n mousemove: 'mousemove',\n\n keydown: 'keydown',\n keyup: 'keyup',\n keypress: 'keypress',\n\n focus: 'focus',\n blur: 'blur',\n change: 'change',\n input: 'input',\n submit: 'submit',\n reset: 'reset',\n\n load: 'load',\n unload: 'unload',\n resize: 'resize',\n scroll: 'scroll',\n\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n touchcancel: 'touchcancel',\n },\n\n logical: {\n when: 'when',\n where: 'where',\n and: 'and',\n or: 'or',\n not: 'not',\n is: 'is',\n exists: 'exists',\n matches: 'matches',\n contains: 'contains',\n includes: 'includes',\n equals: 'equals',\n has: 'has', // third-person: \"it has .class\", \"#element has .class\"\n have: 'have', // first-person: \"I have .class\"\n then: 'then',\n else: 'else',\n otherwise: 'otherwise',\n end: 'end',\n live: 'live',\n changes: 'changes',\n },\n\n temporal: {\n seconds: 'seconds',\n second: 'second',\n milliseconds: 'milliseconds',\n millisecond: 'millisecond',\n minutes: 'minutes',\n minute: 'minute',\n hours: 'hours',\n hour: 'hour',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n },\n\n values: {\n true: 'true',\n false: 'false',\n null: 'null',\n undefined: 'undefined',\n it: 'it',\n its: 'its',\n me: 'me',\n my: 'my',\n myself: 'myself',\n you: 'you',\n your: 'your',\n yourself: 'yourself',\n element: 'element',\n target: 'target',\n detail: 'detail',\n event: 'event',\n window: 'window',\n document: 'document',\n body: 'body',\n result: 'result',\n value: 'value',\n },\n\n attributes: {\n class: 'class',\n classes: 'classes',\n style: 'style',\n styles: 'styles',\n attribute: 'attribute',\n attributes: 'attributes',\n property: 'property',\n properties: 'properties',\n },\n\n expressions: {\n // Positional\n first: 'first',\n last: 'last',\n next: 'next',\n previous: 'previous',\n prev: 'prev',\n at: 'at',\n random: 'random',\n\n // DOM Traversal\n closest: 'closest',\n parent: 'parent',\n children: 'children',\n within: 'within',\n\n // Emptiness/Existence\n no: 'no',\n empty: 'empty',\n some: 'some',\n\n // String operations\n 'starts with': 'starts with',\n 'ends with': 'ends with',\n 'ignoring case': 'ignoring case',\n\n // Collection operations (v0.9.90)\n 'sorted by': 'sorted by',\n 'mapped to': 'mapped to',\n 'split by': 'split by',\n 'joined by': 'joined by',\n },\n};\n","/**\n * Generalized Grammar System for Multilingual Hyperscript\n *\n * This system abstracts grammatical patterns across language families,\n * enabling deep multilingual support without per-language hardcoding.\n *\n * Key Linguistic Concepts:\n * - Word Order: SVO, SOV, VSO (and variations)\n * - Adposition Type: Preposition (English) vs Postposition (Japanese/Korean)\n * - Morphology: Isolating (Chinese) vs Agglutinative (Turkish) vs Fusional (Arabic)\n * - Text Direction: LTR vs RTL\n */\n\n// =============================================================================\n// Core Types\n// =============================================================================\n\n/**\n * Semantic roles in hyperscript commands.\n * These are universal across all 13 supported languages - only the surface form changes.\n *\n * ## Core Thematic Roles (from linguistic theory)\n * | Role | Usage | Purpose | Example |\n * |-------------|-------|-----------------------------|---------------------------|\n * | action | 100% | Command verb | toggle, put, fetch |\n * | patient | 90% | What is acted upon | .active, #count |\n * | destination | 40% | Where something goes | into #output, to .class |\n * | source | 13% | Where something comes from | from #input, from URL |\n * | event | 106% | Trigger events | click, keydown, submit |\n * | condition | 8% | Boolean expressions | if x > 5, when visible |\n * | agent | 0% | Who performs action | Reserved for future use |\n * | goal | 1% | Target value/state | to 'red' (in transition) |\n *\n * ## Quantitative Roles (answer \"how much/long\")\n * | Role | Usage | Purpose | Example |\n * |----------|-------|----------------|----------------------|\n * | quantity | 7% | Numeric amount | by 5, 3 times |\n * | duration | 1% | Time span | for 5 seconds, 500ms |\n *\n * ## Adverbial/Modifier Roles (answer \"how/by what means\")\n * | Role | Usage | Purpose | Example |\n * |--------------|-------|---------------------------|-------------------|\n * | style | 2% | Animation/behavior | with fade |\n * | manner | 2% | Insertion position | before, after |\n * | method | 1% | HTTP method/technique | via POST, as GET |\n * | responseType | 1% | Response format | as json, as html |\n *\n * ## Control Flow Roles\n * | Role | Usage | Purpose | Example |\n * |----------|-------|--------------|-----------------------|\n * | loopType | 6% | Loop variant | forever, until, times |\n *\n * ## Design Notes\n * - Low-usage roles (agent, goal, method, responseType) are intentionally kept for:\n * - Linguistic completeness across all 13 languages\n * - Future extensibility (AI agents, server-side execution)\n * - Command-specific semantics (fetch, transition)\n * - Each role has distinct grammatical markers per language (see profiles/index.ts)\n * - Usage percentages based on pattern database analysis\n */\nexport type SemanticRole =\n // Core thematic roles\n | 'action' // The command/verb (increment, put, toggle)\n | 'agent' // Who/what performs action (reserved for future: AI agents, server-side)\n | 'patient' // What is acted upon (the counter, .active)\n | 'source' // Origin (from #input, from URL)\n | 'destination' // Target location (into #output, to .class)\n | 'goal' // Target value/state (to 'red', to 100)\n | 'recipient' // Who receives what the action transfers (take .active from .tab for me).\n // Declared for parity with the semantic union; NO i18n profile marks it yet\n // — en still maps `for` to duration lexically and suppresses the marker for\n // pronoun values (see insertMarkers below).\n | 'event' // Trigger (click, input, keydown)\n | 'condition' // Boolean expression (if x > 5)\n // Quantitative roles\n | 'quantity' // Numeric amount (by 5, 3 times)\n | 'duration' // Time span (for 5 seconds, over 500ms)\n // Adverbial roles\n | 'responseType' // Response format (as json, as text, as html)\n | 'method' // HTTP method/technique (via POST, using GET)\n | 'style' // Visual/behavioral manner (with fade, smoothly)\n | 'manner' // Insertion position (before, after)\n // Control flow roles\n | 'loopType' // Loop variant: forever, times, for, while, until, until-event\n // Structural roles (for parser control)\n | 'continues'; // Continuation marker (then-chains)\n\n/**\n * Word order patterns\n * These represent the major typological categories\n */\nexport type WordOrder = 'SVO' | 'SOV' | 'VSO' | 'VOS' | 'OVS' | 'OSV' | 'free';\n\n/**\n * Where grammatical markers appear relative to their noun/verb\n */\nexport type AdpositionType = 'preposition' | 'postposition' | 'circumposition' | 'none';\n\n/**\n * Morphological typology - how words are constructed\n */\nexport type MorphologyType =\n | 'isolating' // Chinese - no inflection, word order matters\n | 'agglutinative' // Turkish, Japanese - morphemes stack predictably\n | 'fusional' // Arabic, Spanish - morphemes blend together\n | 'polysynthetic'; // Quechua - complex words encode full sentences\n\n/**\n * A grammatical marker (particle, case ending, preposition)\n */\nexport interface GrammaticalMarker {\n form: string; // The actual text (を, に, to, 的)\n role: SemanticRole; // What semantic role it marks\n position: AdpositionType; // Where it appears\n required: boolean; // Is it mandatory?\n alternatives?: string[]; // Alternative forms (e.g., 을/를 in Korean)\n}\n\n/**\n * Metadata for preserving line structure during translation.\n * Tracks indentation and blank lines so output maintains the same format.\n */\nexport interface LineMetadata {\n /** Trimmed line content (empty string for blank lines) */\n content: string;\n /** Leading whitespace (tabs/spaces) from original line */\n originalIndent: string;\n /** True if the line was empty or whitespace-only */\n isBlank: boolean;\n}\n\n// =============================================================================\n// Language Profile\n// =============================================================================\n\n/**\n * Complete grammatical profile for a language\n * This captures the essential typological features needed for transformation\n */\nexport interface LanguageProfile {\n code: string; // ISO 639-1 code\n name: string; // Native name\n\n // Typological features\n wordOrder: WordOrder;\n adpositionType: AdpositionType;\n morphology: MorphologyType;\n direction: 'ltr' | 'rtl';\n\n // Grammatical markers for each semantic role\n markers: GrammaticalMarker[];\n\n // Role ordering - which semantic roles come in what order\n // E.g., Japanese: ['patient', 'source', 'destination', 'action']\n // E.g., English: ['action', 'patient', 'source', 'destination']\n canonicalOrder: SemanticRole[];\n\n // Special rules\n rules?: GrammarRule[];\n}\n\n/**\n * Pattern for transforming hyperscript structures\n */\nexport interface GrammarRule {\n name: string;\n description: string;\n\n // Pattern matching (in canonical English form)\n match: PatternMatcher;\n\n // How to transform for this language\n transform: PatternTransform;\n\n // Priority (higher = checked first)\n priority: number;\n}\n\n/**\n * Matches a hyperscript pattern\n */\nexport interface PatternMatcher {\n // Command type(s) this matches\n commands?: string[];\n\n // Required semantic roles\n requiredRoles: SemanticRole[];\n\n // Optional roles\n optionalRoles?: SemanticRole[];\n\n // Custom predicate for complex matching\n predicate?: (parsed: ParsedStatement) => boolean;\n}\n\n/**\n * Defines how to transform a matched pattern\n */\nexport interface PatternTransform {\n // Reorder roles for target language\n roleOrder: SemanticRole[];\n\n // Insert markers between roles\n insertMarkers?: boolean;\n\n // Custom transformation function\n custom?: (parsed: ParsedStatement, profile: LanguageProfile) => string;\n}\n\n// =============================================================================\n// Parsed Structures\n// =============================================================================\n\n/**\n * A parsed hyperscript statement broken into semantic components\n */\nexport interface ParsedStatement {\n type: 'event-handler' | 'command' | 'conditional' | 'loop';\n roles: Map<SemanticRole, ParsedElement>;\n original: string;\n}\n\n/**\n * A single element with its semantic role\n */\nexport interface ParsedElement {\n role: SemanticRole;\n value: string; // Original English value\n translated?: string; // Translated value\n isSelector?: boolean; // CSS selector (don't translate)\n isLiteral?: boolean; // Literal value (don't translate)\n}\n\n// =============================================================================\n// Universal Pattern Templates\n// =============================================================================\n\n/**\n * Universal templates for common hyperscript patterns\n * These define the semantic structure independent of surface form\n */\nexport const UNIVERSAL_PATTERNS = {\n // on click increment #count\n eventIncrement: {\n name: 'event-increment',\n roles: ['event', 'action', 'patient'] as SemanticRole[],\n english: 'on {event} {action} {patient}',\n },\n\n // put X into Y\n putInto: {\n name: 'put-into',\n roles: ['action', 'patient', 'destination'] as SemanticRole[],\n english: '{action} {patient} into {destination}',\n },\n\n // add .class to element\n addTo: {\n name: 'add-to',\n roles: ['action', 'patient', 'destination'] as SemanticRole[],\n english: '{action} {patient} to {destination}',\n },\n\n // toggle .class on element\n toggleOn: {\n name: 'toggle-on',\n roles: ['action', 'patient', 'destination'] as SemanticRole[],\n english: '{action} {patient} on {destination}',\n },\n\n // wait 2 seconds\n waitDuration: {\n name: 'wait-duration',\n roles: ['action', 'quantity'] as SemanticRole[],\n english: '{action} {quantity}',\n },\n\n // if condition then ... end\n conditional: {\n name: 'conditional',\n roles: ['action', 'condition'] as SemanticRole[],\n english: '{action} {condition} then ... end',\n },\n\n // fetch URL as type\n fetchAs: {\n name: 'fetch-as',\n roles: ['action', 'source', 'method'] as SemanticRole[],\n english: '{action} {source} as {method}',\n },\n\n // show element with animation\n showWith: {\n name: 'show-with',\n roles: ['action', 'patient', 'style'] as SemanticRole[],\n english: '{action} {patient} with {style}',\n },\n\n // transition property over duration\n transitionOver: {\n name: 'transition-over',\n roles: ['action', 'patient', 'duration'] as SemanticRole[],\n english: '{action} {patient} over {duration}',\n },\n} as const;\n\n// =============================================================================\n// Language Family Defaults\n// =============================================================================\n\n/**\n * Default profiles for major language families\n * Individual languages inherit and override these\n */\nexport const LANGUAGE_FAMILY_DEFAULTS: Record<string, Partial<LanguageProfile>> = {\n // Germanic (English, German, Dutch)\n germanic: {\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n canonicalOrder: [\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n\n // Romance (Spanish, French, Italian, Portuguese)\n romance: {\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n canonicalOrder: [\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n\n // Japonic (Japanese)\n japonic: {\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n canonicalOrder: [\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n 'action',\n ],\n },\n\n // Koreanic (Korean)\n koreanic: {\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n canonicalOrder: [\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n 'action',\n ],\n },\n\n // Turkic (Turkish, Azerbaijani)\n turkic: {\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n canonicalOrder: [\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n 'action',\n ],\n },\n\n // Sinitic (Chinese, Cantonese)\n sinitic: {\n wordOrder: 'SVO', // Topic-prominent, flexible\n adpositionType: 'preposition',\n morphology: 'isolating',\n direction: 'ltr',\n canonicalOrder: [\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n\n // Semitic (Arabic, Hebrew)\n semitic: {\n wordOrder: 'VSO',\n adpositionType: 'preposition',\n morphology: 'fusional', // Root-pattern system\n direction: 'rtl',\n canonicalOrder: [\n 'action',\n 'agent',\n 'patient',\n 'destination',\n 'source',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n\n // Austronesian (Indonesian, Tagalog)\n austronesian: {\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n canonicalOrder: [\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n\n // Quechuan (Quechua)\n quechuan: {\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative', // Actually polysynthetic but simplified\n direction: 'ltr',\n canonicalOrder: [\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n 'action',\n ],\n },\n\n // Bantu (Swahili)\n bantu: {\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n canonicalOrder: [\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n};\n\n// =============================================================================\n// Transformation Utilities\n// =============================================================================\n\n/**\n * Reorder semantic roles according to target language.\n * Includes a safety net to append any roles present in input\n * but missing from the target order, preventing data loss.\n */\nexport function reorderRoles(\n roles: Map<SemanticRole, ParsedElement>,\n targetOrder: SemanticRole[]\n): ParsedElement[] {\n const result: ParsedElement[] = [];\n const usedRoles = new Set<SemanticRole>();\n\n // 1. Add roles that are explicitly in the canonical order\n for (const role of targetOrder) {\n const element = roles.get(role);\n if (element) {\n result.push(element);\n usedRoles.add(role);\n }\n }\n\n // 2. Safety Net: Append any roles present in input but missing from target order\n // This prevents data loss (e.g., if 'manner' or 'instrument' isn't in the profile)\n for (const [role, element] of roles) {\n if (!usedRoles.has(role)) {\n result.push(element);\n }\n }\n\n return result;\n}\n\n/**\n * Insert grammatical markers between elements\n */\nexport function insertMarkers(\n elements: ParsedElement[],\n markers: GrammaticalMarker[],\n adpositionType: AdpositionType\n): string[] {\n const result: string[] = [];\n\n for (const element of elements) {\n let marker = markers.find(m => m.role === element.role);\n\n // A selector-shaped \"event\" is never a trigger. It's the dangling target of\n // a locative `on` (`set @role to \"alert\" on #sr-announce`) that\n // splitOnCommandBoundaries splits off as a headless pseudo-handler (set/put\n // are deliberately NOT in ON_TARGET_COMMANDS — dual-destination collision).\n // Emitting the event marker after it (ko 할 때, ja で, bn এ, tr de) plants a\n // spurious mid-stream event anchor in the emission; suppress the marker and\n // emit the bare selector, which body parsers skip harmlessly.\n if (marker?.role === 'event' && /^[#.<@[]/.test(element.translated || element.value)) {\n marker = undefined;\n }\n\n // A pronoun-valued \"duration\" is never a time expression. It's the target\n // phrase of `take … for me` (en maps `for` → duration lexically), kept\n // in-clause by splitOnCommandBoundaries' loop-head guard. Emitting the\n // duration marker after it (bn জন্য — also bn's `for` loop keyword) anchors\n // a spurious `for` command in the semantic parse; suppress the marker and\n // emit the bare pronoun, which take-pattern matchers skip harmlessly.\n if (marker?.role === 'duration' && /^(me|you|it)$/i.test(element.value)) {\n marker = undefined;\n }\n\n if (marker) {\n if (adpositionType === 'preposition') {\n // Marker before element: \"to element\"\n if (marker.form) result.push(marker.form);\n result.push(element.translated || element.value);\n } else if (adpositionType === 'postposition') {\n // Marker after element: \"element を\"\n result.push(element.translated || element.value);\n if (marker.form) result.push(marker.form);\n } else {\n result.push(element.translated || element.value);\n }\n } else {\n result.push(element.translated || element.value);\n }\n }\n\n return result;\n}\n\n/**\n * Intelligently joins tokens, handling agglutinative suffixes and prefixes.\n *\n * Rules:\n * 1. If a token ends with '-' (prefix marker), no space after it\n * 2. If a token starts with '-' (suffix marker), no space before it\n * 3. Removes the hyphen indicators from the final output\n *\n * Examples:\n * - ['#count', '-ta'] → '#countta' (Quechua accusative suffix)\n * - ['بـ-', 'الماوس'] → 'بـالماوس' (Arabic prefix attachment)\n * - ['value', 'を'] → 'value を' (Japanese particle, normal spacing)\n */\nexport function joinTokens(tokens: string[]): string {\n if (tokens.length === 0) return '';\n\n let result = '';\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n const nextToken = tokens[i + 1];\n\n // Check if current token is a prefix (ends with -)\n const isPrefix = token.endsWith('-');\n // Check if current token is a suffix (starts with -)\n const isSuffix = token.startsWith('-');\n\n // Get the display form (strip hyphen markers)\n let displayToken = token;\n if (isPrefix) displayToken = token.slice(0, -1);\n if (isSuffix) displayToken = token.substring(1);\n\n result += displayToken;\n\n // Determine if we need a space before the next token\n if (nextToken) {\n const nextIsSuffix = nextToken.startsWith('-');\n\n // Don't add space if:\n // - Current token is a prefix (ends with -)\n // - Next token is a suffix (starts with -)\n if (!isPrefix && !nextIsSuffix) {\n result += ' ';\n }\n }\n }\n\n return result;\n}\n\n/**\n * Transform a parsed statement to target language\n */\nexport function transformStatement(\n parsed: ParsedStatement,\n _sourceProfile: LanguageProfile,\n targetProfile: LanguageProfile\n): string {\n // 1. Reorder roles for target language\n const reordered = reorderRoles(parsed.roles, targetProfile.canonicalOrder);\n\n // 2. Insert grammatical markers\n const withMarkers = insertMarkers(reordered, targetProfile.markers, targetProfile.adpositionType);\n\n // 3. Join with intelligent spacing for agglutinative languages\n // (handles suffixes like -ta, prefixes like بـ-, etc.)\n return joinTokens(withMarkers);\n}\n","/**\n * Language Profiles Index\n *\n * Concrete implementations of LanguageProfile for supported languages.\n * Each profile inherits from a language family default and adds\n * language-specific markers and rules.\n */\n\nimport type { GrammarRule, LanguageProfile, SemanticRole } from '../types';\nimport { reorderRoles, insertMarkers } from '../types';\n\n// =============================================================================\n// English (Reference Language)\n// =============================================================================\n\nexport const englishProfile: LanguageProfile = {\n code: 'en',\n name: 'English',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: [\n 'event',\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n\n markers: [\n { form: 'on', role: 'event', position: 'preposition', required: true },\n { form: 'to', role: 'destination', position: 'preposition', required: false },\n { form: 'into', role: 'destination', position: 'preposition', required: false },\n { form: 'from', role: 'source', position: 'preposition', required: false },\n { form: 'with', role: 'style', position: 'preposition', required: false },\n { form: 'by', role: 'quantity', position: 'preposition', required: false },\n { form: 'as', role: 'method', position: 'preposition', required: false },\n { form: 'over', role: 'duration', position: 'preposition', required: false },\n { form: 'for', role: 'duration', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Shared SOV rule factory — fused `halt the event call fn()` heads (Family H,\n// docs-internal/HANDOFF_r1-deferred-tail.md)\n// =============================================================================\n\n/**\n * The form-submit-prevent head fuses TWO juxtaposed commands (`on submit halt\n * the event call validateForm()`): parseEventHandler reads `halt` as the\n * action and sweeps `the event call validateForm()` into ONE patient blob, so\n * the SOV patient-first reorder fronts the whole blob — halt's operand lands\n * clause-initial far from its verb, and call's operand rides inside the blob\n * (tr bound validateForm() to halt and the event to call). No roleOrder can\n * fix a single-blob patient; this custom render splits the blob at the\n * language's call verb and emits both commands verb-final, joined by the\n * then-connective (the boundary the semantic compound-splitter already\n * respects — the event-debounce geometry):\n *\n * `<halt-operand> <pm> <event> <em> <halt-verb> <conn> <call-args> <pm> <call-verb>`\n *\n * The trailing EVENTBLOCKPLACEHOLDER (tryTransformEventWithBlockBody's mask\n * for an `if … end` tail) is re-emitted clause-final so the caller's\n * strip-and-append keeps working.\n */\nfunction sovHaltCallFusedRule(cfg: {\n callVerb: string; // the dictionary's call rendering — the blob split point\n patientMarker: string;\n eventMarker: string;\n connective: string;\n}): GrammarRule {\n return {\n name: 'halt-call-fused-verb-final',\n description: 'Split the swept `halt <operand> call <args>` blob; both verbs clause-final',\n priority: 95,\n match: {\n commands: ['halt'],\n requiredRoles: ['action', 'event', 'patient'],\n // Only the juxtaposed-call blob: a plain `halt`/`halt the event` handler\n // keeps its default render. The translated call verb must be present to\n // split on — if the dictionary emission drifts, the rule stands down\n // rather than emitting a mangled clause.\n predicate: parsed => {\n const p = parsed.roles.get('patient');\n return (\n !!p && /\\bcall\\b/.test(p.value) && !!p.translated && p.translated.includes(cfg.callVerb)\n );\n },\n },\n transform: {\n roleOrder: [], // unused — custom takes over\n custom: parsed => {\n const p = parsed.roles.get('patient')!;\n const ev = parsed.roles.get('event')!;\n const act = parsed.roles.get('action')!;\n let blob = (p.translated ?? p.value).trim();\n const PH = 'EVENTBLOCKPLACEHOLDER';\n let tail = '';\n if (blob.endsWith(PH)) {\n blob = blob.slice(0, -PH.length).trim();\n tail = ` ${PH}`;\n }\n const at = blob.indexOf(cfg.callVerb);\n const haltOperand = blob.slice(0, at).trim();\n const callArgs = blob.slice(at + cfg.callVerb.length).trim();\n return (\n [\n haltOperand,\n cfg.patientMarker,\n ev.translated ?? ev.value,\n cfg.eventMarker,\n act.translated ?? act.value,\n cfg.connective,\n callArgs,\n cfg.patientMarker,\n cfg.callVerb,\n ].join(' ') + tail\n );\n },\n },\n };\n}\n\n// =============================================================================\n// Shared SOV rule factory — pick range rows (`pick characters 0 to 5 of #note`,\n// docs-internal/HANDOFF_pick-text-range-arc3.md)\n// =============================================================================\n\n/**\n * The canonical pick range row decomposes in parseStatement/parseEventHandler as\n * patient=`characters 0` + destination=`5 of #note` (the range's `to` reads as a\n * destination marker), so the default SOV reorder scatters the range across the\n * clause — ja emitted `文字 0 を クリック で 選択 5 の #note に` with the `5`\n * stranded after the verb, unparseable in every SOV language. No roleOrder can\n * reunite a range split across two roles; this custom render reassembles the\n * canonical surface and emits the SOV convention shape (big patient phrase\n * first, verb final):\n *\n * `<root> <gen> <unit> <a> <sep> <b> <pm> [<event> <em>] <verb>`\n *\n * e.g. ja `#note の 文字 0 から 5 を クリック で 選択`. The paired semantic\n * pick pattern (patterns/pick.ts VERB_FINAL_SPECS) parses exactly this shape\n * back, with the range fold normalizing `<a> <sep> <b>` to English `a to b` —\n * the two sides co-evolve per the i18n-renders-semantic-patterns-coevolve\n * lesson; change one and you must re-probe the other.\n *\n * Gated tight to the numeric-endpoint corpus shape (`<unit> <int>` patient +\n * `<int> of <root>` destination); word endpoints (`start`/`end`), modes\n * (`inclusive`) and anything else fall through to the default render unchanged.\n */\nfunction sovPickRangeRule(cfg: {\n /** Genitive joiner between the root and the unit word (ja `の`, hi `का`). */\n genitive: string;\n /** Range separator between the two endpoints (ja `から`, hi `से`). */\n rangeSep: string;\n /** Patient/object marker after the range (ja `を`, hi `को`). */\n patientMarker: string;\n /** Event marker after the event word (ja `で`, hi `पर`). */\n eventMarker: string;\n}): GrammarRule {\n return {\n name: 'pick-range-verb-final',\n description: 'Reassemble the pick range (unit + endpoints + root) adjacent, verb-final',\n priority: 95,\n match: {\n commands: ['pick'],\n requiredRoles: ['action', 'patient', 'destination'],\n predicate: parsed => {\n const p = parsed.roles.get('patient');\n const d = parsed.roles.get('destination');\n return (\n !!p &&\n !!d &&\n /^\\S+\\s+\\d+$/.test(p.value.trim()) &&\n /^\\d+\\s+of\\s+\\S+$/.test(d.value.trim())\n );\n },\n },\n transform: {\n roleOrder: [], // unused — custom takes over\n custom: parsed => {\n const p = parsed.roles.get('patient')!;\n const d = parsed.roles.get('destination')!;\n const act = parsed.roles.get('action')!;\n const ev = parsed.roles.get('event');\n // Unit word from the TRANSLATED patient (`文字 0` → `文字`); endpoints\n // and root from the UNTRANSLATED values — integers and selectors are\n // language-invariant by construction (the R3 rule).\n const pParts = (p.translated ?? p.value).trim().split(/\\s+/);\n const a = pParts[pParts.length - 1]!;\n const unit = pParts.slice(0, -1).join(' ');\n const dMatch = d.value.trim().match(/^(\\d+)\\s+of\\s+(\\S+)$/)!;\n const b = dMatch[1]!;\n const root = dMatch[2]!;\n const verb = act.translated ?? act.value;\n const head = [root, cfg.genitive, unit, a, cfg.rangeSep, b, cfg.patientMarker];\n const eventPart = ev ? [ev.translated ?? ev.value, cfg.eventMarker] : [];\n return [...head, ...eventPart, verb].join(' ');\n },\n },\n };\n}\n\n// =============================================================================\n// Japanese (SOV, Postpositions)\n// =============================================================================\n\nexport const japaneseProfile: LanguageProfile = {\n code: 'ja',\n name: '日本語',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n // Japanese: Object comes before verb, markers follow nouns\n // \"on click increment #count\" → \"#count を クリック で 増加\"\n canonicalOrder: ['patient', 'event', 'action'],\n\n markers: [\n // Particles (postpositions)\n { form: 'を', role: 'patient', position: 'postposition', required: true },\n { form: 'に', role: 'destination', position: 'postposition', required: true },\n { form: 'から', role: 'source', position: 'postposition', required: true },\n { form: 'で', role: 'event', position: 'postposition', required: true },\n { form: 'で', role: 'style', position: 'postposition', required: false },\n { form: 'と', role: 'style', position: 'postposition', required: false },\n { form: 'へ', role: 'destination', position: 'postposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler',\n description: 'Transform event handlers to Japanese SOV order',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n optionalRoles: ['patient'],\n },\n transform: {\n // #count を クリック で 増加\n roleOrder: ['patient', 'event', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'put-into',\n description: 'Transform put X into Y to Japanese order',\n priority: 90,\n match: {\n commands: ['put', '置く'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // X を Y に 置く\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'set-to',\n description: 'Transform set X to Y to Japanese verb-final order',\n priority: 90,\n match: {\n commands: ['set', '設定'],\n requiredRoles: ['action', 'patient', 'destination'],\n // Skip a set whose value swept up a trailing block terminator (`set X to Y\n // end` — the body of an inline `if … then set … end`): verb-final reorder\n // would push the verb past `end` and break the block. These parse fine\n // verb-medial (the default).\n predicate: parsed => !/(^|\\s)end$/i.test((parsed.original ?? '').trim()),\n },\n transform: {\n // X を Y に 設定 — verb-final, matching the generated SOV set pattern\n // (markerOverride: を on the destination / に on the value). Default reorder\n // emitted verb-MEDIAL (`X を 設定 Y に`), unmatched by any set pattern.\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'bind-to',\n description: 'Transform bind $var to #el to Japanese verb-final order',\n priority: 90,\n match: {\n commands: ['bind', 'バインド'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // $var を #el に バインド\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n // the イベント を 送信 で 停止 それから validateForm() を 呼び出し\n sovHaltCallFusedRule({\n callVerb: '呼び出し',\n patientMarker: 'を',\n eventMarker: 'で',\n connective: 'それから',\n }),\n // #note の 文字 0 から 5 を クリック で 選択\n sovPickRangeRule({\n genitive: 'の',\n rangeSep: 'から',\n patientMarker: 'を',\n eventMarker: 'で',\n }),\n ],\n};\n\n// =============================================================================\n// Korean (SOV, Postpositions - similar to Japanese)\n// =============================================================================\n\nexport const koreanProfile: LanguageProfile = {\n code: 'ko',\n name: '한국어',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n canonicalOrder: ['patient', 'event', 'action'],\n\n markers: [\n // Korean particles (with vowel harmony variants)\n { form: '를', role: 'patient', position: 'postposition', required: true, alternatives: ['을'] },\n { form: '에', role: 'destination', position: 'postposition', required: true },\n { form: '에서', role: 'source', position: 'postposition', required: true },\n // Event marker — the semantic *-event-ko-sov-* patterns anchor on 할 때\n // (the generator profile's eventMarker); without it every ko handler\n // emitted a bare event name no fused pattern could anchor.\n { form: '할 때', role: 'event', position: 'postposition', required: true },\n {\n form: '로',\n role: 'style',\n position: 'postposition',\n required: false,\n alternatives: ['으로'],\n },\n { form: '와', role: 'style', position: 'postposition', required: false, alternatives: ['과'] },\n {\n form: '로',\n role: 'method',\n position: 'postposition',\n required: false,\n alternatives: ['으로'],\n }, // \"as\" - same as instrument\n ],\n\n rules: [\n {\n name: 'event-handler',\n description: 'Transform event handlers to Korean SOV order',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n },\n transform: {\n roleOrder: ['patient', 'event', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'put-into',\n description: 'Transform put X into Y to Korean verb-final order',\n priority: 90,\n match: {\n commands: ['put', '넣다'],\n requiredRoles: ['action', 'patient', 'destination'],\n // Standalone put only (e.g. a then-chain clause): an event handler whose\n // action is `put` must keep the event mid-stream, so don't verb-final it.\n predicate: parsed => !parsed.roles.has('event'),\n },\n transform: {\n // X 를 Y 에 넣다 (patient, destination, verb-last)\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'set-to',\n description: 'Transform set X to Y to Korean verb-final order',\n priority: 90,\n match: {\n commands: ['set', '설정'],\n requiredRoles: ['action', 'patient', 'destination'],\n // Skip a set whose value swept up a trailing block terminator (`set X to Y\n // end` — the body of an inline `if … then set … end`): verb-final reorder\n // would push the verb past `end` and break the block. These parse fine\n // verb-medial (the default).\n predicate: parsed => !/(^|\\s)end$/i.test((parsed.original ?? '').trim()),\n },\n transform: {\n // X 를 Y 에 설정 — verb-final, matching the generated SOV set pattern.\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'bind-to',\n description: 'Transform bind $var to #el to Korean verb-final order',\n priority: 90,\n match: {\n commands: ['bind', '바인드'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // $var 를 #el 에 바인드\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n // the 이벤트 를 제출 할 때 정지 그러면 validateForm() 를 호출\n sovHaltCallFusedRule({\n callVerb: '호출',\n patientMarker: '를',\n eventMarker: '할 때',\n connective: '그러면',\n }),\n // #note 의 문자 0 부터 5 를 클릭 할 때 선택\n sovPickRangeRule({\n genitive: '의',\n rangeSep: '부터',\n patientMarker: '를',\n eventMarker: '할 때',\n }),\n ],\n};\n\n// =============================================================================\n// Chinese (SVO, Topic-Prominent)\n// =============================================================================\n\nexport const chineseProfile: LanguageProfile = {\n code: 'zh',\n name: '中文',\n\n wordOrder: 'SVO', // But topic-prominent allows flexibility\n adpositionType: 'preposition',\n morphology: 'isolating',\n direction: 'ltr',\n\n // Chinese typically uses topic-comment structure\n // Can front the object for emphasis: \"#count 在 点击时 增加\"\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: '当', role: 'event', position: 'preposition', required: true },\n { form: '时', role: 'event', position: 'postposition', required: true }, // Circumfix with 当\n { form: '把', role: 'patient', position: 'preposition', required: false }, // BA construction\n { form: '到', role: 'destination', position: 'preposition', required: false },\n { form: '从', role: 'source', position: 'preposition', required: false },\n { form: '用', role: 'style', position: 'preposition', required: false },\n { form: '的', role: 'method', position: 'postposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler-standard',\n description: 'Standard event handler: 当 X 时 Y',\n priority: 100,\n match: {\n // Don't match commands - match by statement type having event role\n requiredRoles: ['event', 'action'],\n },\n transform: {\n // 当 EVENT 时 ACTION [patient] [destination] [source] [style] [method] ...\n roleOrder: ['event', 'action', 'patient'],\n insertMarkers: true,\n custom: (parsed, profile) => {\n // Handle 当...时 circumfix wrapping the event, then emit the action,\n // then any remaining roles in canonical order with their markers.\n // Earlier this function emitted only event/action/patient and silently\n // dropped destination, source, style, etc. — that produced truncated\n // output for `send X to Y`, `fetch /api with method:...`, etc.\n const event = parsed.roles.get('event');\n const action = parsed.roles.get('action');\n\n // Build the post-action role list using the canonical order minus\n // event/action, plus a safety net for any roles not in the order.\n const remaining = new Map(parsed.roles);\n remaining.delete('event');\n remaining.delete('action');\n\n const remainingOrder: SemanticRole[] = (profile.canonicalOrder || []).filter(\n r => r !== 'event' && r !== 'action'\n );\n const reordered = reorderRoles(remaining, remainingOrder);\n const markedTokens = insertMarkers(reordered, profile.markers, profile.adpositionType);\n\n const parts: string[] = ['当', event?.translated || event?.value || '', '时'];\n if (action) parts.push(action.translated || action.value);\n parts.push(...markedTokens);\n\n return parts.filter(Boolean).join(' ');\n },\n },\n },\n {\n name: 'ba-construction',\n description: 'BA construction for object-fronting: 把 X Y',\n priority: 80,\n match: {\n commands: ['put', 'set', 'move'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // 把 X 放 到 Y\n roleOrder: ['patient', 'action', 'destination'],\n insertMarkers: true,\n },\n },\n {\n name: 'bind-to',\n description: 'Bind binds a variable to an element: 绑定 X 到 Y (no 把)',\n priority: 90,\n match: {\n commands: ['bind', '绑定'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // Plain SVO without the 把 object-fronting: the bound variable is the\n // semantic destination (not a fronted patient), and `到` marks the\n // target element. Custom so the patient does not pick up 把.\n roleOrder: ['action', 'patient', 'destination'],\n custom: parsed => {\n const action = parsed.roles.get('action');\n const patient = parsed.roles.get('patient');\n const destination = parsed.roles.get('destination');\n const verb = action?.translated || action?.value || '';\n const v = patient?.translated || patient?.value || '';\n const d = destination?.translated || destination?.value || '';\n return [verb, v, '到', d].filter(Boolean).join(' ');\n },\n },\n },\n ],\n};\n\n// =============================================================================\n// Arabic (VSO, RTL)\n// =============================================================================\n\nexport const arabicProfile: LanguageProfile = {\n code: 'ar',\n name: 'العربية',\n\n wordOrder: 'VSO',\n adpositionType: 'preposition',\n morphology: 'fusional', // Root-pattern morphology\n direction: 'rtl',\n\n // Arabic VSO: Verb first, then subject, then object\n canonicalOrder: ['action', 'agent', 'patient', 'destination', 'source'],\n\n markers: [\n { form: 'عند', role: 'event', position: 'preposition', required: true },\n { form: 'إلى', role: 'destination', position: 'preposition', required: false },\n { form: 'في', role: 'destination', position: 'preposition', required: false },\n { form: 'من', role: 'source', position: 'preposition', required: false },\n // بـ- notation: trailing hyphen indicates prefix that attaches without space\n { form: 'بـ-', role: 'style', position: 'preposition', required: false },\n { form: 'مع', role: 'style', position: 'preposition', required: false },\n // كـ- notation: \"as/like\" prefix for manner\n { form: 'كـ-', role: 'method', position: 'preposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler-vso',\n description: 'VSO event handler: VERB TARGET عند EVENT',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n },\n transform: {\n // زِد #count عند النقر (increment #count on click)\n roleOrder: ['action', 'patient', 'event'],\n insertMarkers: true,\n },\n },\n ],\n};\n\n// =============================================================================\n// Turkish (SOV, Agglutinative)\n// =============================================================================\n\nexport const turkishProfile: LanguageProfile = {\n code: 'tr',\n name: 'Türkçe',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n // NOTE: roles absent from this order are safety-net-appended AFTER the verb\n // by reorderRoles. That stranding is what the semantic parser's generated\n // patterns + reclaim tolerances were built around, so extending this order\n // wholesale re-renders (and breaks) the whole tr corpus — fix individual\n // defective shapes with per-command `rules` below instead (see the\n // wait/repeat-until rules from the transformer-rendering arc).\n canonicalOrder: ['patient', 'event', 'action'],\n\n markers: [\n // Turkish case suffixes - using spaced form for tokenization\n // Note: Real Turkish attaches these as suffixes, but we use spaces\n // so the semantic tokenizer can properly parse them\n {\n form: 'i',\n role: 'patient',\n position: 'postposition',\n required: true,\n alternatives: ['ı', 'u', 'ü'],\n },\n {\n form: 'e',\n role: 'destination',\n position: 'postposition',\n required: true,\n alternatives: ['a'],\n },\n {\n form: 'den',\n role: 'source',\n position: 'postposition',\n required: true,\n alternatives: ['dan'],\n },\n { form: 'de', role: 'event', position: 'postposition', required: true, alternatives: ['da'] },\n { form: 'ile', role: 'style', position: 'postposition', required: false },\n { form: 'olarak', role: 'method', position: 'postposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler-sov',\n description: 'SOV event handler',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n },\n transform: {\n roleOrder: ['patient', 'event', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'put-into',\n description: 'Transform put X into Y to Turkish verb-final order',\n priority: 90,\n match: {\n commands: ['put', 'koy'],\n requiredRoles: ['action', 'patient', 'destination'],\n // Standalone put only (e.g. a then-chain clause): an event handler whose\n // action is `put` must keep the event mid-stream, so don't verb-final it.\n predicate: parsed => !parsed.roles.has('event'),\n },\n transform: {\n // X i Y e koy (patient, destination, verb-last)\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'set-to',\n description: 'Transform set X to Y to Turkish verb-final order',\n priority: 90,\n match: {\n commands: ['set', 'ayarla'],\n requiredRoles: ['action', 'patient', 'destination'],\n // Skip a set whose value swept up a trailing block terminator (`set X to Y\n // end` — the body of an inline `if … then set … end`): verb-final reorder\n // would push the verb past `end` and break the block. These parse fine\n // verb-medial (the default).\n predicate: parsed => !/(^|\\s)end$/i.test((parsed.original ?? '').trim()),\n },\n transform: {\n // X i Y e ayarla — verb-final, matching the generated SOV set pattern.\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'bind-to',\n description: 'Transform bind $var to #el to Turkish verb-final order',\n priority: 90,\n match: {\n commands: ['bind'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // $var i #el e bağla\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'wait-oblique-verb-final',\n description: \"Keep wait's from-phrase and or-run inside the clause, verb-final\",\n priority: 90,\n match: {\n commands: ['wait', 'bekle'],\n // Only the multi-argument form (`wait for X or Y from Z`) strands:\n // without this rule the safety-net appends duration+source AFTER the\n // verb (`bekle … belge den`), and the stranded from-phrase is captured\n // by the NEXT statement as a junk trigger event (behavior-sortable R3).\n requiredRoles: ['action', 'duration', 'source'],\n // Never reorder a fused single-line handler — its event must stay put.\n predicate: parsed => !parsed.roles.has('event'),\n },\n transform: {\n // belge den pointermove(clientY) veya pointerup(clientY) bekle\n roleOrder: ['patient', 'source', 'duration', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'repeat-until-event-verb-final',\n description: \"Keep repeat-until-event's from-phrase before the verb\",\n priority: 90,\n match: {\n commands: ['repeat', 'tekrarla'],\n requiredRoles: ['action', 'patient', 'source'],\n // Gate to the until-event head; `repeat for item in .items` also\n // carries patient+source and must keep its (parseable) default order.\n predicate: parsed => /^repeat\\s+until\\s+event\\b/i.test((parsed.original ?? '').trim()),\n },\n transform: {\n // kadar olay pointerup i belge den tekrarla — matched semantic-side by\n // repeat-tr-until-head-verb-final.\n roleOrder: ['patient', 'source', 'action'],\n insertMarkers: true,\n },\n },\n // the olay i gönder de durdur ardından validateForm() i çağır\n sovHaltCallFusedRule({\n callVerb: 'çağır',\n patientMarker: 'i',\n eventMarker: 'de',\n connective: 'ardından',\n }),\n // #note nin karakterler 0 ile 5 i tıklama de seç\n sovPickRangeRule({\n genitive: 'nin',\n rangeSep: 'ile',\n patientMarker: 'i',\n eventMarker: 'de',\n }),\n ],\n};\n\n// =============================================================================\n// Spanish (SVO, Romance)\n// =============================================================================\n\nexport const spanishProfile: LanguageProfile = {\n code: 'es',\n name: 'Español',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n // Event: \"En hacer clic\" or \"Al hacer clic\"\n { form: 'en', role: 'event', position: 'preposition', required: true },\n // Destination: Prioritize 'a' over 'en' to avoid collision with event marker\n { form: 'a', role: 'destination', position: 'preposition', required: false },\n { form: 'hacia', role: 'destination', position: 'preposition', required: false }, // \"Towards\"\n { form: 'de', role: 'source', position: 'preposition', required: false },\n { form: 'con', role: 'style', position: 'preposition', required: false },\n { form: 'por', role: 'quantity', position: 'preposition', required: false },\n { form: 'como', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// German (SVO, Germanic)\n// =============================================================================\n\nexport const germanProfile: LanguageProfile = {\n code: 'de',\n name: 'Deutsch',\n\n wordOrder: 'SVO', // V2 in main clauses, but SVO for our purposes\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'bei', role: 'event', position: 'preposition', required: true },\n { form: 'zu', role: 'destination', position: 'preposition', required: false },\n { form: 'in', role: 'destination', position: 'preposition', required: false },\n { form: 'von', role: 'source', position: 'preposition', required: false },\n { form: 'aus', role: 'source', position: 'preposition', required: false },\n { form: 'mit', role: 'style', position: 'preposition', required: false },\n { form: 'um', role: 'quantity', position: 'preposition', required: false },\n { form: 'als', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// French (SVO, Romance)\n// =============================================================================\n\nexport const frenchProfile: LanguageProfile = {\n code: 'fr',\n name: 'Français',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'sur', role: 'event', position: 'preposition', required: true },\n { form: 'à', role: 'destination', position: 'preposition', required: false },\n { form: 'dans', role: 'destination', position: 'preposition', required: false },\n { form: 'de', role: 'source', position: 'preposition', required: false },\n { form: 'avec', role: 'style', position: 'preposition', required: false },\n { form: 'par', role: 'quantity', position: 'preposition', required: false },\n { form: 'comme', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Portuguese (SVO, Romance)\n// =============================================================================\n\nexport const portugueseProfile: LanguageProfile = {\n code: 'pt',\n name: 'Português',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'em', role: 'event', position: 'preposition', required: true },\n { form: 'para', role: 'destination', position: 'preposition', required: false },\n { form: 'em', role: 'destination', position: 'preposition', required: false },\n { form: 'de', role: 'source', position: 'preposition', required: false },\n { form: 'com', role: 'style', position: 'preposition', required: false },\n { form: 'por', role: 'quantity', position: 'preposition', required: false },\n { form: 'como', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Indonesian (SVO, Austronesian)\n// =============================================================================\n\nexport const indonesianProfile: LanguageProfile = {\n code: 'id',\n name: 'Bahasa Indonesia',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'pada', role: 'event', position: 'preposition', required: true },\n { form: 'ke', role: 'destination', position: 'preposition', required: false },\n { form: 'dari', role: 'source', position: 'preposition', required: false },\n { form: 'dengan', role: 'style', position: 'preposition', required: false },\n { form: 'sebagai', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Malay (SVO, Austronesian) — grammar mirrors Indonesian (shared function words:\n// pada / ke / dari / dengan / sebagai). Without this profile the transformer threw\n// \"Unknown target locale: ms\", so no ms translation could be generated at all.\n// =============================================================================\n\nexport const malayProfile: LanguageProfile = {\n code: 'ms',\n name: 'Bahasa Melayu',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n // ms marks the event clause with `apabila` (\"when/on\") — matching the semantic\n // ms event-handler pattern (`apabila {event} {body}`) and the ms dict's\n // `on: apabila`. (Indonesian uses `pada` here; the two diverge on the event head.)\n { form: 'apabila', role: 'event', position: 'preposition', required: true },\n { form: 'ke', role: 'destination', position: 'preposition', required: false },\n { form: 'dari', role: 'source', position: 'preposition', required: false },\n { form: 'dengan', role: 'style', position: 'preposition', required: false },\n { form: 'sebagai', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Quechua (SOV, Quechuan)\n// =============================================================================\n\nexport const quechuaProfile: LanguageProfile = {\n code: 'qu',\n name: 'Runasimi',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative', // Actually polysynthetic\n direction: 'ltr',\n\n // NOTE: roles absent from this order are safety-net-appended AFTER the verb\n // (see the Turkish profile note) — extend via per-command `rules`, not here.\n canonicalOrder: ['patient', 'source', 'destination', 'event', 'action'],\n\n markers: [\n // Quechua case suffixes - using spaced form for tokenization\n // Note: Real Quechua attaches these as suffixes, but we use spaces\n // so the semantic tokenizer can properly parse them\n { form: 'ta', role: 'patient', position: 'postposition', required: true },\n { form: 'man', role: 'destination', position: 'postposition', required: true },\n { form: 'manta', role: 'source', position: 'postposition', required: true },\n { form: 'pi', role: 'event', position: 'postposition', required: true },\n { form: 'wan', role: 'style', position: 'postposition', required: false },\n { form: 'hina', role: 'method', position: 'postposition', required: false }, // \"as/like\"\n ],\n\n rules: [\n {\n name: 'wait-oblique-verb-final',\n description: \"Keep wait's from-phrase and or-run inside the clause, verb-final\",\n priority: 90,\n match: {\n commands: ['wait', 'suyay'],\n // Only `wait for X or Y from Z` strands: duration is missing from\n // canonicalOrder, so the or-run lands AFTER the verb and the next\n // trigger glues it into its event (behavior-sortable R3). See the\n // matching Turkish rule.\n requiredRoles: ['action', 'duration', 'source'],\n predicate: parsed => !parsed.roles.has('event'),\n },\n transform: {\n // qillqa manta pointermove(clientY) utaq pointerup(clientY) suyay\n roleOrder: ['patient', 'source', 'duration', 'action'],\n insertMarkers: true,\n },\n },\n // the ruway ta kachay pi sayay chayqa validateForm() ta qayay\n sovHaltCallFusedRule({\n callVerb: 'qayay',\n patientMarker: 'ta',\n eventMarker: 'pi',\n connective: 'chayqa',\n }),\n // #note pa sanampa 0 kama 5 ta ñitiy pi akllay\n sovPickRangeRule({\n genitive: 'pa',\n rangeSep: 'kama',\n patientMarker: 'ta',\n eventMarker: 'pi',\n }),\n ],\n};\n\n// =============================================================================\n// Swahili (SVO, Bantu)\n// =============================================================================\n\nexport const swahiliProfile: LanguageProfile = {\n code: 'sw',\n name: 'Kiswahili',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'kwenye', role: 'event', position: 'preposition', required: true },\n { form: 'kwa', role: 'destination', position: 'preposition', required: false },\n { form: 'kutoka', role: 'source', position: 'preposition', required: false },\n { form: 'na', role: 'style', position: 'preposition', required: false },\n // `kuwa`, not `kama`: sw `kama` is the IF keyword — rendering the method\n // role (\"as X\") with it grew a phantom `if` at semantic parse time. See the\n // matching comment in dictionaries/sw.ts (modifiers.as).\n { form: 'kuwa', role: 'method', position: 'preposition', required: false }, // \"as/become\"\n ],\n};\n\n// =============================================================================\n// Bengali (SOV, Postpositions - similar to Japanese/Korean)\n// =============================================================================\n\nexport const bengaliProfile: LanguageProfile = {\n code: 'bn',\n name: 'বাংলা',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n // Bengali: Object comes before verb, postpositions follow nouns\n // \"on click increment #count\" → \"#count কে ক্লিক এ বৃদ্ধি\"\n // NOTE: roles absent from this order are safety-net-appended AFTER the verb\n // (see the Turkish profile note) — extend via per-command `rules`, not here.\n canonicalOrder: ['patient', 'event', 'action'],\n\n markers: [\n // Postpositions\n { form: 'কে', role: 'patient', position: 'postposition', required: true },\n { form: 'তে', role: 'destination', position: 'postposition', required: true },\n { form: 'এ', role: 'event', position: 'postposition', required: true },\n { form: 'থেকে', role: 'source', position: 'postposition', required: true },\n { form: 'দিয়ে', role: 'style', position: 'postposition', required: false },\n { form: 'জন্য', role: 'duration', position: 'postposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler',\n description: 'Transform event handlers to Bengali SOV order',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n optionalRoles: ['patient'],\n },\n transform: {\n // #count কে ক্লিক এ বৃদ্ধি\n roleOrder: ['patient', 'event', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'put-into',\n description: 'Transform put X into Y to Bengali verb-final order',\n priority: 90,\n match: {\n commands: ['put', 'রাখুন'],\n requiredRoles: ['action', 'patient', 'destination'],\n // Standalone put only (e.g. a then-chain clause): an event handler whose\n // action is `put` must keep the event mid-stream, so don't verb-final it.\n predicate: parsed => !parsed.roles.has('event'),\n },\n transform: {\n // X কে Y তে রাখুন (patient, destination, verb-last)\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'set-to',\n description: 'Transform set X to Y to Bengali verb-final order',\n priority: 90,\n match: {\n commands: ['set', 'সেট'],\n requiredRoles: ['action', 'patient', 'destination'],\n // Skip a set whose value swept up a trailing block terminator (`set X to Y\n // end` — the body of an inline `if … then set … end`): verb-final reorder\n // would push the verb past `end` and break the block. These parse fine\n // verb-medial (the default).\n predicate: parsed => !/(^|\\s)end$/i.test((parsed.original ?? '').trim()),\n },\n transform: {\n // X কে Y তে সেট — verb-final, matching the generated SOV set pattern.\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'bind-to',\n description: 'Transform bind $var to #el to Bengali verb-final order',\n priority: 90,\n match: {\n commands: ['bind', 'বাইন্ড'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // $var কে #el তে বাইন্ড\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n // the ঘটনা কে জমা এ থামুন তারপর validateForm() কে কল\n sovHaltCallFusedRule({\n callVerb: 'কল',\n patientMarker: 'কে',\n eventMarker: 'এ',\n connective: 'তারপর',\n }),\n // #note র অক্ষর 0 থেকে 5 কে ক্লিক এ বাছুন\n sovPickRangeRule({\n genitive: 'র',\n rangeSep: 'থেকে',\n patientMarker: 'কে',\n eventMarker: 'এ',\n }),\n ],\n};\n\n// =============================================================================\n// Italian (SVO, Romance)\n// =============================================================================\n\nexport const italianProfile: LanguageProfile = {\n code: 'it',\n name: 'Italiano',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'su', role: 'event', position: 'preposition', required: true },\n { form: 'in', role: 'destination', position: 'preposition', required: false },\n { form: 'a', role: 'destination', position: 'preposition', required: false },\n { form: 'da', role: 'source', position: 'preposition', required: false },\n { form: 'di', role: 'source', position: 'preposition', required: false },\n { form: 'con', role: 'style', position: 'preposition', required: false },\n { form: 'come', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Russian (SVO, Slavic)\n// =============================================================================\n\nexport const russianProfile: LanguageProfile = {\n code: 'ru',\n name: 'Русский',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'при', role: 'event', position: 'preposition', required: true },\n { form: 'в', role: 'destination', position: 'preposition', required: false },\n { form: 'на', role: 'destination', position: 'preposition', required: false },\n { form: 'к', role: 'destination', position: 'preposition', required: false },\n { form: 'из', role: 'source', position: 'preposition', required: false },\n { form: 'от', role: 'source', position: 'preposition', required: false },\n { form: 'с', role: 'source', position: 'preposition', required: false },\n { form: 'с', role: 'style', position: 'preposition', required: false },\n { form: 'со', role: 'style', position: 'preposition', required: false },\n { form: 'как', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Ukrainian (SVO, Slavic)\n// =============================================================================\n\nexport const ukrainianProfile: LanguageProfile = {\n code: 'uk',\n name: 'Українська',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'при', role: 'event', position: 'preposition', required: true },\n { form: 'в', role: 'destination', position: 'preposition', required: false },\n { form: 'на', role: 'destination', position: 'preposition', required: false },\n { form: 'до', role: 'destination', position: 'preposition', required: false },\n { form: 'з', role: 'source', position: 'preposition', required: false },\n { form: 'від', role: 'source', position: 'preposition', required: false },\n { form: 'із', role: 'source', position: 'preposition', required: false },\n { form: 'з', role: 'style', position: 'preposition', required: false },\n { form: 'із', role: 'style', position: 'preposition', required: false },\n { form: 'як', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Vietnamese (SVO, Isolating)\n// =============================================================================\n\nexport const vietnameseProfile: LanguageProfile = {\n code: 'vi',\n name: 'Tiếng Việt',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'isolating',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'khi', role: 'event', position: 'preposition', required: true },\n { form: 'vào', role: 'destination', position: 'preposition', required: false },\n { form: 'cho', role: 'destination', position: 'preposition', required: false },\n { form: 'đến', role: 'destination', position: 'preposition', required: false },\n { form: 'từ', role: 'source', position: 'preposition', required: false },\n { form: 'khỏi', role: 'source', position: 'preposition', required: false },\n { form: 'với', role: 'style', position: 'preposition', required: false },\n { form: 'như', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Hindi (SOV, Postpositions)\n// =============================================================================\n\nexport const hindiProfile: LanguageProfile = {\n code: 'hi',\n name: 'हिन्दी',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n // Hindi: Object comes before verb, postpositions follow nouns\n // \"on click increment #count\" → \"#count को क्लिक पर बढ़ाएं\"\n canonicalOrder: ['patient', 'event', 'action'],\n\n markers: [\n { form: 'को', role: 'patient', position: 'postposition', required: true },\n { form: 'में', role: 'destination', position: 'postposition', required: true },\n { form: 'पर', role: 'destination', position: 'postposition', required: false },\n { form: 'पर', role: 'event', position: 'postposition', required: true },\n { form: 'से', role: 'source', position: 'postposition', required: true },\n { form: 'से', role: 'style', position: 'postposition', required: false },\n { form: 'साथ', role: 'style', position: 'postposition', required: false },\n { form: 'के रूप में', role: 'method', position: 'postposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler',\n description: 'Transform event handlers to Hindi SOV order',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n optionalRoles: ['patient'],\n },\n transform: {\n // #count को क्लिक पर बढ़ाएं\n roleOrder: ['patient', 'event', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'put-into',\n description: 'Transform put X into Y to Hindi verb-final order',\n priority: 90,\n match: {\n commands: ['put', 'रखें'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // \"hi\" को #out में रखें\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'set-to',\n description: 'Transform set X to Y to Hindi verb-final order',\n priority: 90,\n match: {\n commands: ['set', 'सेट'],\n requiredRoles: ['action', 'patient', 'destination'],\n // Skip a set whose value swept up a trailing block terminator (`set X to Y\n // end` — the body of an inline `if … then set … end`): verb-final reorder\n // would push the verb past `end` and break the block. These parse fine\n // verb-medial (the default).\n predicate: parsed => !/(^|\\s)end$/i.test((parsed.original ?? '').trim()),\n },\n transform: {\n // #x.innerText को इसका.name में सेट — verb-final, matching the generated\n // SOV set pattern (set schema markerOverride puts को on the destination /\n // में on the value). The default reorder emitted verb-MEDIAL\n // (`#x को सेट … में`), which no set pattern matched → bare-event fallback.\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'bind-to',\n description: 'Transform bind $var to #el to Hindi verb-final order',\n priority: 90,\n match: {\n commands: ['bind', 'बाइंड', 'बांधें'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // $greeting को #name-input में bind — verb-final, matching the generated SOV\n // bind pattern (`{destination} को {source} में bind`). The default reorder\n // emitted verb-MEDIAL (`$greeting को bind #name-input में`), which the\n // verb-final pattern never matched → the bare-event fallback mis-anchored\n // the fronted `$greeting` as a phantom `on` event (the rf=0.00 bind residue).\n // ja/ko/zh/tr/bn already carry this rule; hi was the only SOV gap.\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n // the घटना को जमा पर रोकें फिर validateForm() को कॉल\n sovHaltCallFusedRule({\n callVerb: 'कॉल',\n patientMarker: 'को',\n eventMarker: 'पर',\n connective: 'फिर',\n }),\n // #note का अक्षर 0 से 5 को क्लिक पर चुनें\n sovPickRangeRule({\n genitive: 'का',\n rangeSep: 'से',\n patientMarker: 'को',\n eventMarker: 'पर',\n }),\n ],\n};\n\n// =============================================================================\n// Tagalog (VSO, Prepositions)\n// =============================================================================\n\nexport const tagalogProfile: LanguageProfile = {\n code: 'tl',\n name: 'Tagalog',\n\n wordOrder: 'VSO',\n adpositionType: 'preposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n // Tagalog VSO: Verb first, then subject, then object\n canonicalOrder: ['action', 'agent', 'patient', 'destination', 'source'],\n\n markers: [\n { form: 'kapag', role: 'event', position: 'preposition', required: true },\n { form: 'sa', role: 'destination', position: 'preposition', required: false },\n // mula_sa (underscore) matches the tl dict and the semantic profile's\n // source marker — the spaced form emitted two tokens the generated\n // patterns' single mula_sa literal could never match, so `remove X\n // mula sa Y` lost its source and the schema default fabricated me.\n { form: 'mula_sa', role: 'source', position: 'preposition', required: false },\n { form: 'nang', role: 'style', position: 'preposition', required: false },\n { form: 'bilang', role: 'method', position: 'preposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler-vso',\n description: 'VSO event handler: VERB TARGET kapag EVENT',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n },\n transform: {\n // palitan #count kapag click (toggle #count on click)\n roleOrder: ['action', 'patient', 'event'],\n insertMarkers: true,\n },\n },\n ],\n};\n\n// =============================================================================\n// Thai (SVO, Isolating, No Spaces)\n// =============================================================================\n\nexport const thaiProfile: LanguageProfile = {\n code: 'th',\n name: 'ไทย',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'isolating',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'เมื่อ', role: 'event', position: 'preposition', required: true },\n { form: 'ใน', role: 'destination', position: 'preposition', required: false },\n { form: 'ไปยัง', role: 'destination', position: 'preposition', required: false },\n { form: 'จาก', role: 'source', position: 'preposition', required: false },\n { form: 'ด้วย', role: 'style', position: 'preposition', required: false },\n { form: 'เป็น', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Polish (SVO, Fusional, Imperative)\n// =============================================================================\n\nexport const polishProfile: LanguageProfile = {\n code: 'pl',\n name: 'Polski',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'gdy', role: 'event', position: 'preposition', required: true },\n { form: 'przy', role: 'event', position: 'preposition', required: false },\n { form: 'do', role: 'destination', position: 'preposition', required: false },\n { form: 'w', role: 'destination', position: 'preposition', required: false },\n { form: 'na', role: 'destination', position: 'preposition', required: false },\n { form: 'z', role: 'source', position: 'preposition', required: false },\n { form: 'od', role: 'source', position: 'preposition', required: false },\n { form: 'ze', role: 'source', position: 'preposition', required: false },\n { form: 'z', role: 'style', position: 'preposition', required: false },\n { form: 'ze', role: 'style', position: 'preposition', required: false },\n { form: 'jako', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Hebrew (SVO, RTL, Prepositions)\n// =============================================================================\n\nexport const hebrewProfile: LanguageProfile = {\n code: 'he',\n name: 'עברית',\n\n wordOrder: 'SVO', // Modern Hebrew is predominantly SVO (Biblical Hebrew was VSO)\n adpositionType: 'preposition',\n morphology: 'fusional', // Root-and-pattern (Semitic), like Arabic\n direction: 'rtl',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n // Hebrew uses single-letter prefix prepositions (ב, ל, מ, כ) that attach to\n // the following word. For tokenization we treat them as spaced forms.\n markers: [\n { form: 'ב', role: 'event', position: 'preposition', required: true },\n { form: 'על', role: 'destination', position: 'preposition', required: false },\n { form: 'אל', role: 'destination', position: 'preposition', required: false },\n { form: 'ל', role: 'destination', position: 'preposition', required: false },\n { form: 'את', role: 'patient', position: 'preposition', required: false }, // Direct object marker\n { form: 'מ', role: 'source', position: 'preposition', required: false },\n { form: 'מן', role: 'source', position: 'preposition', required: false },\n { form: 'עם', role: 'style', position: 'preposition', required: false },\n { form: 'כ', role: 'method', position: 'preposition', required: false },\n ],\n\n rules: [\n {\n name: 'bind-to',\n description: 'Bind binds a variable to an element: קשור X ל Y',\n priority: 90,\n match: {\n commands: ['bind', 'קשור'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // The bound variable is the semantic destination (kept bare, no את\n // object marker), and ל marks the target element. Custom so the\n // variable does not pick up את and the element uses ל (not על).\n roleOrder: ['action', 'patient', 'destination'],\n custom: parsed => {\n const action = parsed.roles.get('action');\n const patient = parsed.roles.get('patient');\n const destination = parsed.roles.get('destination');\n const verb = action?.translated || action?.value || '';\n const v = patient?.translated || patient?.value || '';\n const d = destination?.translated || destination?.value || '';\n return [verb, v, 'ל', d].filter(Boolean).join(' ');\n },\n },\n },\n ],\n};\n\n// =============================================================================\n// Profile Registry\n// =============================================================================\n\nexport const profiles: Record<string, LanguageProfile> = {\n en: englishProfile,\n ja: japaneseProfile,\n ko: koreanProfile,\n zh: chineseProfile,\n ar: arabicProfile,\n tr: turkishProfile,\n es: spanishProfile,\n de: germanProfile,\n fr: frenchProfile,\n pt: portugueseProfile,\n id: indonesianProfile,\n ms: malayProfile,\n qu: quechuaProfile,\n sw: swahiliProfile,\n bn: bengaliProfile,\n // New profiles\n it: italianProfile,\n ru: russianProfile,\n uk: ukrainianProfile,\n vi: vietnameseProfile,\n hi: hindiProfile,\n tl: tagalogProfile,\n th: thaiProfile,\n pl: polishProfile,\n he: hebrewProfile,\n};\n\nexport function getProfile(locale: string): LanguageProfile | undefined {\n return profiles[locale];\n}\n\nexport function getSupportedLocales(): string[] {\n return Object.keys(profiles);\n}\n","/**\n * Direct Language-Pair Mappings\n *\n * Enables translation between language pairs without English pivot.\n * This reduces error compounding and provides more natural translations\n * for closely related languages or those with shared vocabulary.\n *\n * Currently supported pairs:\n * - Japanese ↔ Chinese (shared Kanji concepts)\n * - Spanish ↔ Portuguese (Romance language mutual intelligibility)\n * - Korean ↔ Japanese (SOV grammar similarity)\n */\n\nimport type { Dictionary } from '../types';\nimport { ja } from '../dictionaries/ja';\nimport { zh } from '../dictionaries/zh';\nimport { ko } from '../dictionaries/ko';\n// Note: es and pt use hand-crafted mappings for better quality\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface DirectMapping {\n /** Source language code */\n source: string;\n /** Target language code */\n target: string;\n /** Word mappings: source word -> target word */\n words: Record<string, string>;\n /** Category mappings for structured translation */\n categories?: Record<string, Record<string, string>>;\n}\n\n// =============================================================================\n// Utility Functions\n// =============================================================================\n\n/**\n * Create reverse mapping from an existing mapping\n */\nfunction reverseMapping(mapping: DirectMapping): DirectMapping {\n const reversedWords: Record<string, string> = {};\n for (const [source, target] of Object.entries(mapping.words)) {\n reversedWords[target] = source;\n }\n\n const reversedCategories: Record<string, Record<string, string>> = {};\n if (mapping.categories) {\n for (const [category, words] of Object.entries(mapping.categories)) {\n reversedCategories[category] = {};\n for (const [source, target] of Object.entries(words)) {\n reversedCategories[category][target] = source;\n }\n }\n }\n\n const result: DirectMapping = {\n source: mapping.target,\n target: mapping.source,\n words: reversedWords,\n };\n\n if (Object.keys(reversedCategories).length > 0) {\n result.categories = reversedCategories;\n }\n\n return result;\n}\n\n/**\n * Build direct mapping from two dictionaries via English keys\n */\nfunction buildMappingFromDictionaries(\n sourceDict: Dictionary,\n targetDict: Dictionary,\n sourceCode: string,\n targetCode: string\n): DirectMapping {\n const words: Record<string, string> = {};\n const categories: Record<string, Record<string, string>> = {};\n\n // Map each category\n for (const category of [\n 'commands',\n 'modifiers',\n 'events',\n 'logical',\n 'temporal',\n 'values',\n 'attributes',\n ] as const) {\n const sourceCategory = sourceDict[category] as Record<string, string> | undefined;\n const targetCategory = targetDict[category] as Record<string, string> | undefined;\n\n if (sourceCategory && targetCategory) {\n categories[category] = {};\n\n for (const [englishKey, sourceWord] of Object.entries(sourceCategory)) {\n const targetWord = targetCategory[englishKey];\n if (targetWord && sourceWord !== targetWord) {\n words[sourceWord] = targetWord;\n categories[category][sourceWord] = targetWord;\n }\n }\n }\n }\n\n return {\n source: sourceCode,\n target: targetCode,\n words,\n categories,\n };\n}\n\n// =============================================================================\n// Japanese ↔ Chinese Direct Mapping\n// =============================================================================\n\n/**\n * Japanese to Chinese mapping\n *\n * These languages share many concepts through Kanji/Hanzi,\n * making direct translation more accurate than pivot translation.\n */\nexport const jaZhMapping: DirectMapping = buildMappingFromDictionaries(ja, zh, 'ja', 'zh');\n\n/**\n * Chinese to Japanese mapping (reverse of jaZh)\n */\nexport const zhJaMapping: DirectMapping = reverseMapping(jaZhMapping);\n\n// =============================================================================\n// Korean ↔ Japanese Direct Mapping\n// =============================================================================\n\n/**\n * Korean to Japanese mapping\n *\n * Both are SOV languages with postposition particles,\n * sharing grammatical structure that enables more natural translation.\n */\nexport const koJaMapping: DirectMapping = buildMappingFromDictionaries(ko, ja, 'ko', 'ja');\n\n/**\n * Japanese to Korean mapping (reverse of koJa)\n */\nexport const jaKoMapping: DirectMapping = reverseMapping(koJaMapping);\n\n// =============================================================================\n// Spanish ↔ Portuguese Direct Mapping\n// =============================================================================\n\n/**\n * Spanish to Portuguese mapping\n *\n * These Romance languages have high mutual intelligibility,\n * with many cognates that translate directly.\n */\nexport const esPtMapping: DirectMapping = {\n source: 'es',\n target: 'pt',\n words: {\n // Commands - many are cognates\n en: 'em', // on (event)\n decir: 'dizer', // tell\n disparar: 'disparar', // trigger\n enviar: 'enviar', // send\n tomar: 'pegar', // take\n poner: 'colocar', // put\n establecer: 'definir', // set\n obtener: 'obter', // get\n agregar: 'adicionar', // add\n quitar: 'remover', // remove\n alternar: 'alternar', // toggle\n ocultar: 'esconder', // hide\n mostrar: 'mostrar', // show\n si: 'se', // if\n menos: 'a menos', // unless\n repetir: 'repetir', // repeat\n para: 'para', // for\n mientras: 'enquanto', // while\n hasta: 'até', // until\n continuar: 'continuar', // continue\n romper: 'parar', // break\n detener: 'parar', // halt\n esperar: 'esperar', // wait\n buscar: 'buscar', // fetch\n llamar: 'chamar', // call\n retornar: 'retornar', // return\n hacer: 'fazer', // make\n registrar: 'registrar', // log\n lanzar: 'lançar', // throw\n atrapar: 'capturar', // catch\n medir: 'medir', // measure\n transición: 'transição', // transition\n incrementar: 'incrementar', // increment\n decrementar: 'decrementar', // decrement\n predeterminar: 'padrão', // default\n ir: 'ir', // go\n copiar: 'copiar', // copy\n escoger: 'escolher', // pick\n intercambiar: 'trocar', // swap\n transformar: 'transformar', // morph\n añadir: 'anexar', // append\n salir: 'sair', // exit\n\n // Modifiers\n a: 'para', // to\n de: 'de', // from\n dentro: 'em', // into\n con: 'com', // with\n como: 'como', // as\n por: 'por', // by\n\n // Events\n clic: 'clique', // click\n cambio: 'mudança', // change\n entrada: 'entrada', // input\n envío: 'envio', // submit\n carga: 'carregar', // load\n enfoque: 'foco', // focus\n desenfoque: 'desfoque', // blur\n\n // Logical\n verdadero: 'verdadeiro', // true\n falso: 'falso', // false\n y: 'e', // and\n o: 'ou', // or\n no: 'não', // not\n es: 'é', // is\n\n // Temporal\n segundos: 'segundos', // seconds\n milisegundos: 'milissegundos', // milliseconds\n\n // Values\n nulo: 'nulo', // null\n indefinido: 'indefinido', // undefined\n vacío: 'vazio', // empty\n },\n categories: {\n commands: {\n en: 'em',\n decir: 'dizer',\n tomar: 'pegar',\n poner: 'colocar',\n establecer: 'definir',\n obtener: 'obter',\n agregar: 'adicionar',\n quitar: 'remover',\n ocultar: 'esconder',\n si: 'se',\n mientras: 'enquanto',\n hasta: 'até',\n romper: 'parar',\n detener: 'parar',\n llamar: 'chamar',\n hacer: 'fazer',\n lanzar: 'lançar',\n atrapar: 'capturar',\n escoger: 'escolher',\n intercambiar: 'trocar',\n añadir: 'anexar',\n salir: 'sair',\n },\n events: {\n clic: 'clique',\n cambio: 'mudança',\n carga: 'carregar',\n enfoque: 'foco',\n desenfoque: 'desfoque',\n },\n logical: {\n verdadero: 'verdadeiro',\n y: 'e',\n o: 'ou',\n no: 'não',\n es: 'é',\n },\n },\n};\n\n/**\n * Portuguese to Spanish mapping (reverse of esPt)\n */\nexport const ptEsMapping: DirectMapping = reverseMapping(esPtMapping);\n\n// =============================================================================\n// Mapping Registry\n// =============================================================================\n\n/**\n * Registry of direct translation pairs.\n * Key format: \"source->target\" (e.g., \"ja->zh\")\n */\nexport const directMappings: Map<string, DirectMapping> = new Map([\n // Japanese ↔ Chinese\n ['ja->zh', jaZhMapping],\n ['zh->ja', zhJaMapping],\n\n // Korean ↔ Japanese\n ['ko->ja', koJaMapping],\n ['ja->ko', jaKoMapping],\n\n // Spanish ↔ Portuguese\n ['es->pt', esPtMapping],\n ['pt->es', ptEsMapping],\n]);\n\n// =============================================================================\n// Public API\n// =============================================================================\n\n/**\n * Check if direct mapping exists for a language pair\n */\nexport function hasDirectMapping(source: string, target: string): boolean {\n return directMappings.has(`${source}->${target}`);\n}\n\n/**\n * Get direct mapping for a language pair\n */\nexport function getDirectMapping(source: string, target: string): DirectMapping | undefined {\n return directMappings.get(`${source}->${target}`);\n}\n\n/**\n * Translate a single word using direct mapping\n */\nexport function translateWordDirect(\n word: string,\n source: string,\n target: string\n): string | undefined {\n const mapping = getDirectMapping(source, target);\n if (!mapping) return undefined;\n return mapping.words[word];\n}\n\n/**\n * Get all supported direct translation pairs\n */\nexport function getSupportedDirectPairs(): Array<{ source: string; target: string }> {\n return Array.from(directMappings.keys()).map(key => {\n const [source, target] = key.split('->');\n return { source, target };\n });\n}\n"]}