@lokascript/domain-learn 2.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.
- package/dist/generators/gloss-generator.d.ts +18 -0
- package/dist/generators/learn-renderer.d.ts +13 -0
- package/dist/generators/sentence-generator.d.ts +34 -0
- package/dist/index.cjs +6116 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +441 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.js +6056 -0
- package/dist/index.js.map +1 -0
- package/dist/profiles/ar.d.ts +2 -0
- package/dist/profiles/de.d.ts +2 -0
- package/dist/profiles/en.d.ts +2 -0
- package/dist/profiles/es.d.ts +2 -0
- package/dist/profiles/fr.d.ts +2 -0
- package/dist/profiles/index.d.ts +20 -0
- package/dist/profiles/ja.d.ts +2 -0
- package/dist/profiles/ko.d.ts +2 -0
- package/dist/profiles/pt.d.ts +2 -0
- package/dist/profiles/tr.d.ts +2 -0
- package/dist/profiles/zh.d.ts +2 -0
- package/dist/schemas/index.d.ts +31 -0
- package/dist/tokenizers/index.d.ts +23 -0
- package/dist/types.d.ts +266 -0
- package/package.json +63 -0
- package/src/__tests__/schemas.test.ts +145 -0
- package/src/__tests__/sentence-generation.test.ts +189 -0
- package/src/generators/gloss-generator.ts +145 -0
- package/src/generators/learn-renderer.ts +291 -0
- package/src/generators/sentence-generator.ts +501 -0
- package/src/index.ts +237 -0
- package/src/profiles/ar.ts +526 -0
- package/src/profiles/de.ts +481 -0
- package/src/profiles/en.ts +181 -0
- package/src/profiles/es.ts +829 -0
- package/src/profiles/fr.ts +466 -0
- package/src/profiles/index.ts +34 -0
- package/src/profiles/ja.ts +301 -0
- package/src/profiles/ko.ts +286 -0
- package/src/profiles/pt.ts +484 -0
- package/src/profiles/tr.ts +511 -0
- package/src/profiles/zh.ts +256 -0
- package/src/schemas/index.ts +576 -0
- package/src/tokenizers/index.ts +409 -0
- package/src/types.ts +321 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/schemas/index.ts","../src/profiles/en.ts","../src/profiles/ja.ts","../src/profiles/es.ts","../src/profiles/ar.ts","../src/profiles/zh.ts","../src/profiles/ko.ts","../src/profiles/fr.ts","../src/profiles/tr.ts","../src/profiles/de.ts","../src/profiles/pt.ts","../src/profiles/index.ts","../src/tokenizers/index.ts","../src/generators/sentence-generator.ts","../src/types.ts","../src/generators/learn-renderer.ts","../src/generators/gloss-generator.ts"],"sourcesContent":["/**\n * @lokascript/domain-learn — Multilingual Learning DSL\n *\n * A learning domain built on @lokascript/framework that formalizes\n * the morphology engine: 15 verbs x 10 languages x 7 communicative\n * functions, with sentence generation, interlinear glosses, and\n * cross-language rendering.\n *\n * Unlike domain-sql (natural language -> SQL), domain-learn's \"compiled\n * output\" IS natural language sentences with morphology applied. The\n * standard CodeGenerator.generate() returns the commanding form in English.\n * The extended generateForFunction() powers the exercise engine.\n *\n * @example\n * ```typescript\n * import { createLearnDSL } from '@lokascript/domain-learn';\n *\n * const learn = createLearnDSL();\n *\n * // Parse multilingual command input\n * const node = learn.parse('add .active to #button', 'en');\n *\n * // Generate sentence in any language x function\n * import { generateForFunction } from '@lokascript/domain-learn';\n * generateForFunction(node, 'narrating', 'ja');\n * // -> { sentence: 'システムは #buttonに .activeを 追加しました', ... }\n *\n * // Cross-language translation\n * learn.translate('add .active to #button', 'en', 'ja');\n *\n * // Interlinear gloss\n * import { generateGloss } from '@lokascript/domain-learn';\n * generateGloss(node, 'commanding', 'ja');\n * // -> { tokens: ['#buttonに', '.activeを', '追加して'], roles: ['DEST', 'PAT', 'VERB'], ... }\n * ```\n */\n\nimport { createMultilingualDSL, type MultilingualDSL } from '@lokascript/framework';\nimport { allSchemas } from './schemas';\nimport {\n ALL_PROFILES,\n enProfile,\n jaProfile,\n esProfile,\n arProfile,\n zhProfile,\n koProfile,\n frProfile,\n trProfile,\n deProfile,\n ptProfile,\n} from './profiles';\nimport {\n EnglishLearnTokenizer,\n JapaneseLearnTokenizer,\n SpanishLearnTokenizer,\n ArabicLearnTokenizer,\n ChineseLearnTokenizer,\n KoreanLearnTokenizer,\n FrenchLearnTokenizer,\n TurkishLearnTokenizer,\n GermanLearnTokenizer,\n PortugueseLearnTokenizer,\n} from './tokenizers';\nimport { learnCodeGenerator, registerProfile } from './generators/sentence-generator';\n\n/**\n * Create a multilingual learning DSL instance with all 10 supported languages.\n * Also registers all language profiles with the sentence generator.\n */\nexport function createLearnDSL(): MultilingualDSL {\n // Register all profiles with the sentence generator\n for (const [code, profile] of Object.entries(ALL_PROFILES)) {\n registerProfile(code, profile);\n }\n\n return createMultilingualDSL({\n name: 'Learn',\n schemas: allSchemas,\n languages: [\n {\n code: 'en',\n name: 'English',\n nativeName: 'English',\n tokenizer: EnglishLearnTokenizer,\n patternProfile: enProfile.patternProfile,\n },\n {\n code: 'ja',\n name: 'Japanese',\n nativeName: '日本語',\n tokenizer: JapaneseLearnTokenizer,\n patternProfile: jaProfile.patternProfile,\n },\n {\n code: 'es',\n name: 'Spanish',\n nativeName: 'Español',\n tokenizer: SpanishLearnTokenizer,\n patternProfile: esProfile.patternProfile,\n },\n {\n code: 'ar',\n name: 'Arabic',\n nativeName: 'العربية',\n tokenizer: ArabicLearnTokenizer,\n patternProfile: arProfile.patternProfile,\n },\n {\n code: 'zh',\n name: 'Chinese',\n nativeName: '中文',\n tokenizer: ChineseLearnTokenizer,\n patternProfile: zhProfile.patternProfile,\n },\n {\n code: 'ko',\n name: 'Korean',\n nativeName: '한국어',\n tokenizer: KoreanLearnTokenizer,\n patternProfile: koProfile.patternProfile,\n },\n {\n code: 'fr',\n name: 'French',\n nativeName: 'Français',\n tokenizer: FrenchLearnTokenizer,\n patternProfile: frProfile.patternProfile,\n },\n {\n code: 'tr',\n name: 'Turkish',\n nativeName: 'Türkçe',\n tokenizer: TurkishLearnTokenizer,\n patternProfile: trProfile.patternProfile,\n },\n {\n code: 'de',\n name: 'German',\n nativeName: 'Deutsch',\n tokenizer: GermanLearnTokenizer,\n patternProfile: deProfile.patternProfile,\n },\n {\n code: 'pt',\n name: 'Portuguese',\n nativeName: 'Português',\n tokenizer: PortugueseLearnTokenizer,\n patternProfile: ptProfile.patternProfile,\n },\n ],\n codeGenerator: learnCodeGenerator,\n });\n}\n\n// ─── Re-exports ──────────────────────────────────────────────────\n\n// Types\nexport type {\n CommunicativeFunction,\n CoreVerb,\n SemanticRole,\n VerbValence,\n CommandProfile,\n SentenceFrame,\n LanguageFrames,\n RenderedSentence,\n InterlinearGloss,\n LearnLanguageProfile,\n EnglishForms,\n JapaneseForms,\n SpanishForms,\n ArabicForms,\n ChineseForms,\n KoreanForms,\n FrenchForms,\n TurkishForms,\n GermanForms,\n PortugueseForms,\n AnyForms,\n} from './types';\n\nexport { ALL_FUNCTIONS, ALL_VERBS } from './types';\n\n// Schemas\nexport { allSchemas } from './schemas';\n\n// Profiles\nexport {\n ALL_PROFILES,\n enProfile,\n jaProfile,\n esProfile,\n arProfile,\n zhProfile,\n koProfile,\n frProfile,\n trProfile,\n deProfile,\n ptProfile,\n} from './profiles';\n\n// Tokenizers\nexport {\n EnglishLearnTokenizer,\n JapaneseLearnTokenizer,\n SpanishLearnTokenizer,\n ArabicLearnTokenizer,\n ChineseLearnTokenizer,\n KoreanLearnTokenizer,\n FrenchLearnTokenizer,\n TurkishLearnTokenizer,\n GermanLearnTokenizer,\n PortugueseLearnTokenizer,\n} from './tokenizers';\n\n// Generators\nexport {\n learnCodeGenerator,\n generateForFunction,\n generateAllFunctions,\n generateCrossLingual,\n registerProfile,\n getProfile,\n resolveMarker,\n attachMarker,\n} from './generators/sentence-generator';\n\nexport { renderLearn } from './generators/learn-renderer';\nexport { generateGloss } from './generators/gloss-generator';\n\n// Domain scan config (for AOT / Vite plugin integration)\nexport const learnScanConfig = {\n attributes: ['data-learn', '_learn'] as const,\n scriptTypes: ['text/learn-dsl'] as const,\n defaultLanguage: 'en',\n};\n","/**\n * Learn Domain Command Schemas\n *\n * 15 core verbs formalized as CommandSchemas using the framework's\n * defineCommand/defineRole helpers. Each schema defines the semantic\n * roles and per-language marker overrides for sentence rendering.\n *\n * Role markers are the RESOLVED values combining:\n * - @lokascript/semantic schema markerOverrides (Tiers 1-2)\n * - lokascript-learn LEARNING_OVERRIDES (Tier 3)\n * - LANGUAGE_RENDERING_OVERRIDES (Tier 4)\n * - Profile defaults (Tier 5)\n *\n * This collapses the 5-tier resolution into flat markerOverride maps.\n */\n\nimport { defineCommand, defineRole } from '@lokascript/framework';\n\n// ─── Markers used across multiple verbs ─────────────────────────\n\n/** Destination markers: \"to\" / allative */\nconst DEST_TO = {\n en: 'to',\n ja: '',\n es: 'a',\n ar: 'إلى',\n zh: '到',\n ko: '에',\n fr: 'à',\n tr: 'a',\n de: 'zu',\n pt: 'a',\n};\n\n/** Destination markers: \"into\" / illative */\nconst DEST_INTO = {\n en: 'into',\n ja: '',\n es: 'en',\n ar: 'في',\n zh: '到',\n ko: '에',\n fr: 'dans',\n tr: 'a',\n de: 'in',\n pt: 'em',\n};\n\n/** Destination markers: \"on\" / locative (default profile) */\nconst DEST_ON = {\n en: 'on',\n ja: '',\n es: 'en',\n ar: 'على',\n zh: '在',\n ko: '에',\n fr: 'sur',\n tr: 'da',\n de: 'auf',\n pt: 'em',\n};\n\n/** Source markers: \"from\" / ablative */\nconst SOURCE_FROM = {\n en: 'from',\n ja: '',\n es: 'de',\n ar: 'من',\n zh: '从',\n ko: '에서',\n fr: 'de',\n tr: 'dan',\n de: 'von',\n pt: 'de',\n};\n\n/** Patient markers: empty for SVO, particles for SOV */\nconst PATIENT = {\n en: '',\n ja: '',\n es: '',\n ar: '',\n zh: '',\n ko: '',\n fr: '',\n tr: '',\n de: '',\n pt: '',\n};\n\n// =============================================================================\n// add — ditransitive: patient + destination (to)\n// =============================================================================\n\nexport const addSchema = defineCommand({\n action: 'add',\n description: 'Add a class or attribute to an element',\n category: 'mutation',\n primaryRole: 'patient',\n roles: [\n defineRole({\n role: 'patient',\n description: 'The class or attribute to add',\n required: true,\n expectedTypes: ['selector', 'literal', 'expression'],\n svoPosition: 3,\n sovPosition: 1,\n markerOverride: PATIENT,\n }),\n defineRole({\n role: 'destination',\n description: 'The target element',\n required: false,\n expectedTypes: ['selector', 'reference', 'expression'],\n svoPosition: 2,\n sovPosition: 2,\n markerOverride: DEST_TO,\n }),\n ],\n});\n\n// =============================================================================\n// remove — ditransitive: patient + source (from)\n// =============================================================================\n\nexport const removeSchema = defineCommand({\n action: 'remove',\n description: 'Remove a class or attribute from an element',\n category: 'mutation',\n primaryRole: 'patient',\n roles: [\n defineRole({\n role: 'patient',\n description: 'The class or attribute to remove',\n required: true,\n expectedTypes: ['selector', 'literal', 'expression'],\n svoPosition: 3,\n sovPosition: 1,\n markerOverride: PATIENT,\n }),\n defineRole({\n role: 'source',\n description: 'The element to remove from',\n required: false,\n expectedTypes: ['selector', 'reference', 'expression'],\n svoPosition: 2,\n sovPosition: 2,\n markerOverride: SOURCE_FROM,\n }),\n ],\n});\n\n// =============================================================================\n// toggle — ditransitive: patient + destination (on)\n// =============================================================================\n\nexport const toggleSchema = defineCommand({\n action: 'toggle',\n description: 'Toggle a class or attribute on an element',\n category: 'mutation',\n primaryRole: 'patient',\n roles: [\n defineRole({\n role: 'patient',\n description: 'The class or attribute to toggle',\n required: true,\n expectedTypes: ['selector', 'literal', 'expression'],\n svoPosition: 3,\n sovPosition: 1,\n markerOverride: PATIENT,\n }),\n defineRole({\n role: 'destination',\n description: 'The target element',\n required: false,\n expectedTypes: ['selector', 'reference', 'expression'],\n svoPosition: 2,\n sovPosition: 2,\n markerOverride: DEST_ON,\n }),\n ],\n});\n\n// =============================================================================\n// put — ditransitive: patient + destination (into)\n// =============================================================================\n\nexport const putSchema = defineCommand({\n action: 'put',\n description: 'Put content into a target element',\n category: 'mutation',\n primaryRole: 'patient',\n roles: [\n defineRole({\n role: 'patient',\n description: 'The content to put',\n required: true,\n expectedTypes: ['literal', 'selector', 'reference', 'expression'],\n svoPosition: 3,\n sovPosition: 1,\n markerOverride: PATIENT,\n }),\n defineRole({\n role: 'destination',\n description: 'Where to put the content',\n required: false,\n expectedTypes: ['selector', 'reference', 'expression'],\n svoPosition: 2,\n sovPosition: 2,\n markerOverride: DEST_INTO,\n }),\n ],\n});\n\n// =============================================================================\n// set — ditransitive: destination (the property) + patient (the value)\n// Note: set has swapped primary role — destination comes first\n// =============================================================================\n\nexport const setSchema = defineCommand({\n action: 'set',\n description: 'Set a property or variable to a value',\n category: 'variable',\n primaryRole: 'destination',\n roles: [\n defineRole({\n role: 'destination',\n description: 'The property to set',\n required: true,\n expectedTypes: ['selector', 'reference', 'expression'],\n svoPosition: 3,\n sovPosition: 1,\n markerOverride: {\n en: '',\n ja: 'を',\n es: '',\n ar: '',\n zh: '',\n ko: '를',\n fr: '',\n tr: '',\n de: '',\n pt: '',\n },\n }),\n defineRole({\n role: 'patient',\n description: 'The value to set',\n required: true,\n expectedTypes: ['literal', 'expression', 'reference'],\n svoPosition: 2,\n sovPosition: 2,\n markerOverride: {\n en: 'to',\n ja: 'に',\n es: 'a',\n ar: 'إلى',\n zh: '到',\n ko: '으로',\n fr: 'à',\n tr: 'e',\n de: 'auf',\n pt: 'para',\n },\n }),\n ],\n});\n\n// =============================================================================\n// show — transitive: patient only\n// =============================================================================\n\nexport const showSchema = defineCommand({\n action: 'show',\n description: 'Show an element',\n category: 'visibility',\n primaryRole: 'patient',\n roles: [\n defineRole({\n role: 'patient',\n description: 'The element to show',\n required: true,\n expectedTypes: ['selector', 'reference', 'expression'],\n svoPosition: 2,\n sovPosition: 1,\n markerOverride: PATIENT,\n }),\n ],\n});\n\n// =============================================================================\n// hide — transitive: patient only\n// =============================================================================\n\nexport const hideSchema = defineCommand({\n action: 'hide',\n description: 'Hide an element',\n category: 'visibility',\n primaryRole: 'patient',\n roles: [\n defineRole({\n role: 'patient',\n description: 'The element to hide',\n required: true,\n expectedTypes: ['selector', 'reference', 'expression'],\n svoPosition: 2,\n sovPosition: 1,\n markerOverride: PATIENT,\n }),\n ],\n});\n\n// =============================================================================\n// get — transitive: source (what to get)\n// Note: get has no patient; source is the primary role\n// =============================================================================\n\nexport const getSchema = defineCommand({\n action: 'get',\n description: 'Get a value from an element or property',\n category: 'variable',\n primaryRole: 'source',\n roles: [\n defineRole({\n role: 'source',\n description: 'The value to get',\n required: true,\n expectedTypes: ['selector', 'reference', 'expression'],\n svoPosition: 2,\n sovPosition: 1,\n markerOverride: {\n en: '',\n ja: 'を',\n es: '',\n ar: '',\n zh: '',\n ko: '를',\n fr: '',\n tr: '',\n de: '',\n pt: '',\n },\n }),\n ],\n});\n\n// =============================================================================\n// wait — transitive: patient (duration or event)\n// =============================================================================\n\nexport const waitSchema = defineCommand({\n action: 'wait',\n description: 'Wait for a duration or event',\n category: 'async',\n primaryRole: 'patient',\n roles: [\n defineRole({\n role: 'patient',\n description: 'Duration or event to wait for',\n required: true,\n expectedTypes: ['literal', 'expression'],\n svoPosition: 2,\n sovPosition: 1,\n markerOverride: PATIENT,\n }),\n ],\n});\n\n// =============================================================================\n// fetch — transitive: source (URL)\n// Simplified for learning: just source role (URL to fetch)\n// =============================================================================\n\nexport const fetchSchema = defineCommand({\n action: 'fetch',\n description: 'Fetch data from a URL',\n category: 'async',\n primaryRole: 'source',\n roles: [\n defineRole({\n role: 'source',\n description: 'The URL to fetch from',\n required: true,\n expectedTypes: ['literal', 'expression'],\n svoPosition: 2,\n sovPosition: 1,\n // renderOverride in semantic has en: '' — no preposition in rendered output\n markerOverride: {\n en: '',\n ja: 'を',\n es: '',\n ar: '',\n zh: '',\n ko: '를',\n fr: '',\n tr: '',\n de: '',\n pt: '',\n },\n }),\n ],\n});\n\n// =============================================================================\n// send — ditransitive: event (patient-like) + destination\n// Note: send's patient-equivalent is the 'event' role\n// =============================================================================\n\nexport const sendSchema = defineCommand({\n action: 'send',\n description: 'Send an event to an element',\n category: 'event',\n primaryRole: 'patient',\n roles: [\n defineRole({\n role: 'patient',\n description: 'The event to send',\n required: true,\n expectedTypes: ['literal', 'expression'],\n svoPosition: 3,\n sovPosition: 1,\n markerOverride: PATIENT,\n }),\n defineRole({\n role: 'destination',\n description: 'The target element',\n required: false,\n expectedTypes: ['selector', 'reference', 'expression'],\n svoPosition: 2,\n sovPosition: 2,\n markerOverride: {\n en: 'to',\n ja: 'に',\n es: 'a',\n ar: 'إلى',\n zh: '到',\n ko: '에게',\n fr: 'à',\n tr: '-e',\n de: 'an',\n pt: 'para',\n },\n }),\n ],\n});\n\n// =============================================================================\n// go — transitive: destination only (no patient)\n// =============================================================================\n\nexport const goSchema = defineCommand({\n action: 'go',\n description: 'Navigate to a URL',\n category: 'navigation',\n primaryRole: 'destination',\n roles: [\n defineRole({\n role: 'destination',\n description: 'The URL to navigate to',\n required: true,\n expectedTypes: ['literal', 'expression'],\n svoPosition: 2,\n sovPosition: 1,\n // renderOverride en: '' means no preposition in rendered sentences\n markerOverride: {\n en: '',\n ja: '',\n es: 'a',\n ar: 'إلى',\n zh: '',\n ko: '에',\n fr: 'à',\n tr: 'a',\n de: 'zu',\n pt: 'para',\n },\n }),\n ],\n});\n\n// =============================================================================\n// increment — transitive: patient\n// =============================================================================\n\nexport const incrementSchema = defineCommand({\n action: 'increment',\n description: 'Increment a counter or value',\n category: 'variable',\n primaryRole: 'patient',\n roles: [\n defineRole({\n role: 'patient',\n description: 'The value to increment',\n required: true,\n expectedTypes: ['selector', 'reference', 'expression'],\n svoPosition: 2,\n sovPosition: 1,\n markerOverride: PATIENT,\n }),\n ],\n});\n\n// =============================================================================\n// decrement — transitive: patient\n// =============================================================================\n\nexport const decrementSchema = defineCommand({\n action: 'decrement',\n description: 'Decrement a counter or value',\n category: 'variable',\n primaryRole: 'patient',\n roles: [\n defineRole({\n role: 'patient',\n description: 'The value to decrement',\n required: true,\n expectedTypes: ['selector', 'reference', 'expression'],\n svoPosition: 2,\n sovPosition: 1,\n markerOverride: PATIENT,\n }),\n ],\n});\n\n// =============================================================================\n// take — ditransitive: patient + source (from)\n// =============================================================================\n\nexport const takeSchema = defineCommand({\n action: 'take',\n description: 'Take a class or element from a source',\n category: 'mutation',\n primaryRole: 'patient',\n roles: [\n defineRole({\n role: 'patient',\n description: 'The class or element to take',\n required: true,\n expectedTypes: ['selector', 'expression'],\n svoPosition: 3,\n sovPosition: 1,\n markerOverride: PATIENT,\n }),\n defineRole({\n role: 'source',\n description: 'The element to take from',\n required: false,\n expectedTypes: ['selector', 'reference', 'expression'],\n svoPosition: 2,\n sovPosition: 2,\n markerOverride: SOURCE_FROM,\n }),\n ],\n});\n\n// =============================================================================\n// All Schemas\n// =============================================================================\n\nexport const allSchemas = [\n addSchema,\n removeSchema,\n toggleSchema,\n putSchema,\n setSchema,\n showSchema,\n hideSchema,\n getSchema,\n waitSchema,\n fetchSchema,\n sendSchema,\n goSchema,\n incrementSchema,\n decrementSchema,\n takeSchema,\n];\n","import type { LearnLanguageProfile } from '../types';\n\nexport const enProfile: LearnLanguageProfile = {\n patternProfile: {\n code: 'en',\n wordOrder: 'SVO',\n keywords: {\n add: { primary: 'add' },\n remove: { primary: 'remove' },\n toggle: { primary: 'toggle' },\n put: { primary: 'put' },\n set: { primary: 'set' },\n show: { primary: 'show' },\n hide: { primary: 'hide' },\n get: { primary: 'get' },\n wait: { primary: 'wait' },\n fetch: { primary: 'fetch' },\n send: { primary: 'send' },\n go: { primary: 'go' },\n increment: { primary: 'increment' },\n decrement: { primary: 'decrement' },\n take: { primary: 'take' },\n },\n },\n morphologyTable: {\n add: {\n base: 'add',\n thirdPerson: 'adds',\n past: 'added',\n pastParticiple: 'added',\n presentParticiple: 'adding',\n },\n remove: {\n base: 'remove',\n thirdPerson: 'removes',\n past: 'removed',\n pastParticiple: 'removed',\n presentParticiple: 'removing',\n },\n toggle: {\n base: 'toggle',\n thirdPerson: 'toggles',\n past: 'toggled',\n pastParticiple: 'toggled',\n presentParticiple: 'toggling',\n },\n put: {\n base: 'put',\n thirdPerson: 'puts',\n past: 'put',\n pastParticiple: 'put',\n presentParticiple: 'putting',\n },\n set: {\n base: 'set',\n thirdPerson: 'sets',\n past: 'set',\n pastParticiple: 'set',\n presentParticiple: 'setting',\n },\n show: {\n base: 'show',\n thirdPerson: 'shows',\n past: 'showed',\n pastParticiple: 'shown',\n presentParticiple: 'showing',\n },\n hide: {\n base: 'hide',\n thirdPerson: 'hides',\n past: 'hid',\n pastParticiple: 'hidden',\n presentParticiple: 'hiding',\n },\n get: {\n base: 'get',\n thirdPerson: 'gets',\n past: 'got',\n pastParticiple: 'gotten',\n presentParticiple: 'getting',\n },\n wait: {\n base: 'wait',\n thirdPerson: 'waits',\n past: 'waited',\n pastParticiple: 'waited',\n presentParticiple: 'waiting',\n },\n fetch: {\n base: 'fetch',\n thirdPerson: 'fetches',\n past: 'fetched',\n pastParticiple: 'fetched',\n presentParticiple: 'fetching',\n },\n send: {\n base: 'send',\n thirdPerson: 'sends',\n past: 'sent',\n pastParticiple: 'sent',\n presentParticiple: 'sending',\n },\n go: {\n base: 'go',\n thirdPerson: 'goes',\n past: 'went',\n pastParticiple: 'gone',\n presentParticiple: 'going',\n },\n increment: {\n base: 'increment',\n thirdPerson: 'increments',\n past: 'incremented',\n pastParticiple: 'incremented',\n presentParticiple: 'incrementing',\n },\n decrement: {\n base: 'decrement',\n thirdPerson: 'decrements',\n past: 'decremented',\n pastParticiple: 'decremented',\n presentParticiple: 'decrementing',\n },\n take: {\n base: 'take',\n thirdPerson: 'takes',\n past: 'took',\n pastParticiple: 'taken',\n presentParticiple: 'taking',\n },\n },\n frames: {\n code: 'en',\n wordOrder: 'SVO',\n frames: [\n {\n function: 'commanding',\n template: '{verb.base} {patient} {target}',\n verbForm: 'base',\n example: 'add .active to #button',\n },\n {\n function: 'describing',\n template: '{subject} {verb.thirdPerson} {patient} {target}',\n verbForm: 'thirdPerson',\n example: 'The system adds .active to #button',\n },\n {\n function: 'narrating',\n template: '{subject} {verb.past} {patient} {target}',\n verbForm: 'past',\n example: 'The system added .active to #button',\n },\n {\n function: 'questioning',\n template: 'Did {subject} {verb.base} {patient} {target}?',\n verbForm: 'base',\n example: 'Did the system add .active to #button?',\n },\n {\n function: 'negating',\n template: '{subject} did not {verb.base} {patient} {target}',\n verbForm: 'base',\n example: 'The system did not add .active to #button',\n },\n {\n function: 'planning',\n template: '{subject} will {verb.base} {patient} {target}',\n verbForm: 'base',\n example: 'The system will add .active to #button',\n },\n {\n function: 'progressing',\n template: '{subject} is {verb.presentParticiple} {patient} {target}',\n verbForm: 'presentParticiple',\n example: 'The system is adding .active to #button',\n },\n ],\n },\n defaultSubject: 'the system',\n};\n","import type { LearnLanguageProfile } from '../types';\n\nexport const jaProfile: LearnLanguageProfile = {\n patternProfile: {\n code: 'ja',\n wordOrder: 'SOV',\n keywords: {\n add: { primary: '追加' },\n remove: { primary: '削除' },\n toggle: { primary: '切り替え' },\n put: { primary: '置' },\n set: { primary: '設定' },\n show: { primary: '表示' },\n hide: { primary: '隠' },\n get: { primary: '取得' },\n wait: { primary: '待' },\n fetch: { primary: '取得' },\n send: { primary: '送' },\n go: { primary: '行' },\n increment: { primary: '増加' },\n decrement: { primary: '減少' },\n take: { primary: '取' },\n },\n },\n morphologyTable: {\n add: {\n dictionary: '追加する',\n verbClass: 'suru',\n stem: '追加し',\n masu: '追加します',\n mashita: '追加しました',\n ta: '追加した',\n te: '追加して',\n nai: '追加しない',\n masen: '追加しません',\n potential: '追加できる',\n volitional: '追加しよう',\n ba: '追加すれば',\n tara: '追加したら',\n },\n remove: {\n dictionary: '削除する',\n verbClass: 'suru',\n stem: '削除し',\n masu: '削除します',\n mashita: '削除しました',\n ta: '削除した',\n te: '削除して',\n nai: '削除しない',\n masen: '削除しません',\n potential: '削除できる',\n volitional: '削除しよう',\n ba: '削除すれば',\n tara: '削除したら',\n },\n toggle: {\n dictionary: '切り替える',\n verbClass: 'ichidan',\n stem: '切り替え',\n masu: '切り替えます',\n mashita: '切り替えました',\n ta: '切り替えた',\n te: '切り替えて',\n nai: '切り替えない',\n masen: '切り替えません',\n potential: '切り替えられる',\n volitional: '切り替えよう',\n ba: '切り替えれば',\n tara: '切り替えたら',\n },\n put: {\n dictionary: '置く',\n verbClass: 'godan',\n stem: '置き',\n masu: '置きます',\n mashita: '置きました',\n ta: '置いた',\n te: '置いて',\n nai: '置かない',\n masen: '置きません',\n potential: '置ける',\n volitional: '置こう',\n ba: '置けば',\n tara: '置いたら',\n },\n set: {\n dictionary: '設定する',\n verbClass: 'suru',\n stem: '設定し',\n masu: '設定します',\n mashita: '設定しました',\n ta: '設定した',\n te: '設定して',\n nai: '設定しない',\n masen: '設定しません',\n potential: '設定できる',\n volitional: '設定しよう',\n ba: '設定すれば',\n tara: '設定したら',\n },\n show: {\n dictionary: '表示する',\n verbClass: 'suru',\n stem: '表示し',\n masu: '表示します',\n mashita: '表示しました',\n ta: '表示した',\n te: '表示して',\n nai: '表示しない',\n masen: '表示しません',\n potential: '表示できる',\n volitional: '表示しよう',\n ba: '表示すれば',\n tara: '表示したら',\n },\n hide: {\n dictionary: '隠す',\n verbClass: 'godan',\n stem: '隠し',\n masu: '隠します',\n mashita: '隠しました',\n ta: '隠した',\n te: '隠して',\n nai: '隠さない',\n masen: '隠しません',\n potential: '隠せる',\n volitional: '隠そう',\n ba: '隠せば',\n tara: '隠したら',\n },\n get: {\n dictionary: '取得する',\n verbClass: 'suru',\n stem: '取得し',\n masu: '取得します',\n mashita: '取得しました',\n ta: '取得した',\n te: '取得して',\n nai: '取得しない',\n masen: '取得しません',\n potential: '取得できる',\n volitional: '取得しよう',\n ba: '取得すれば',\n tara: '取得したら',\n },\n wait: {\n dictionary: '待つ',\n verbClass: 'godan',\n stem: '待ち',\n masu: '待ちます',\n mashita: '待ちました',\n ta: '待った',\n te: '待って',\n nai: '待たない',\n masen: '待ちません',\n potential: '待てる',\n volitional: '待とう',\n ba: '待てば',\n tara: '待ったら',\n },\n fetch: {\n dictionary: '取得する',\n verbClass: 'suru',\n stem: '取得し',\n masu: '取得します',\n mashita: '取得しました',\n ta: '取得した',\n te: '取得して',\n nai: '取得しない',\n masen: '取得しません',\n potential: '取得できる',\n volitional: '取得しよう',\n ba: '取得すれば',\n tara: '取得したら',\n },\n send: {\n dictionary: '送る',\n verbClass: 'godan',\n stem: '送り',\n masu: '送ります',\n mashita: '送りました',\n ta: '送った',\n te: '送って',\n nai: '送らない',\n masen: '送りません',\n potential: '送れる',\n volitional: '送ろう',\n ba: '送れば',\n tara: '送ったら',\n },\n go: {\n dictionary: '行く',\n verbClass: 'godan',\n stem: '行き',\n masu: '行きます',\n mashita: '行きました',\n ta: '行った',\n te: '行って',\n nai: '行かない',\n masen: '行きません',\n potential: '行ける',\n volitional: '行こう',\n ba: '行けば',\n tara: '行ったら',\n },\n increment: {\n dictionary: '増加する',\n verbClass: 'suru',\n stem: '増加し',\n masu: '増加します',\n mashita: '増加しました',\n ta: '増加した',\n te: '増加して',\n nai: '増加しない',\n masen: '増加しません',\n potential: '増加できる',\n volitional: '増加しよう',\n ba: '増加すれば',\n tara: '増加したら',\n },\n decrement: {\n dictionary: '減少する',\n verbClass: 'suru',\n stem: '減少し',\n masu: '減少します',\n mashita: '減少しました',\n ta: '減少した',\n te: '減少して',\n nai: '減少しない',\n masen: '減少しません',\n potential: '減少できる',\n volitional: '減少しよう',\n ba: '減少すれば',\n tara: '減少したら',\n },\n take: {\n dictionary: '取る',\n verbClass: 'godan',\n stem: '取り',\n masu: '取ります',\n mashita: '取りました',\n ta: '取った',\n te: '取って',\n nai: '取らない',\n masen: '取りません',\n potential: '取れる',\n volitional: '取ろう',\n ba: '取れば',\n tara: '取ったら',\n },\n },\n frames: {\n code: 'ja',\n wordOrder: 'SOV',\n frames: [\n {\n function: 'commanding',\n template: '{target} {patient} {verb.te}',\n verbForm: 'te',\n example: '#buttonに .activeを 追加して',\n },\n {\n function: 'describing',\n template: '{subject}は {target} {patient} {verb.masu}',\n verbForm: 'masu',\n example: 'システムは #buttonに .activeを 追加します',\n },\n {\n function: 'narrating',\n template: '{subject}は {target} {patient} {verb.mashita}',\n verbForm: 'mashita',\n example: 'システムは #buttonに .activeを 追加しました',\n },\n {\n function: 'questioning',\n template: '{subject}は {target} {patient} {verb.mashita}か?',\n verbForm: 'mashita',\n example: 'システムは #buttonに .activeを 追加しましたか?',\n },\n {\n function: 'negating',\n template: '{subject}は {target} {patient} {verb.masen}でした',\n verbForm: 'masen',\n example: 'システムは #buttonに .activeを 追加しませんでした',\n },\n {\n function: 'planning',\n template: '{target} {patient} {verb.volitional}',\n verbForm: 'volitional',\n example: '#buttonに .activeを 追加しよう',\n },\n {\n function: 'progressing',\n template: '{target} {patient} {verb.ba}',\n verbForm: 'ba',\n example: '#buttonに .activeを 追加すれば',\n },\n ],\n },\n defaultSubject: 'システム',\n};\n","import type { LearnLanguageProfile, SpanishForms, LanguageFrames } from '../types';\n\nconst morphologyTable: Record<string, SpanishForms> = {\n add: {\n infinitive: 'agregar',\n verbClass: 'ar',\n irregular: false,\n present: {\n yo: 'agrego',\n tu: 'agregas',\n el: 'agrega',\n nosotros: 'agregamos',\n vosotros: 'agregáis',\n ellos: 'agregan',\n },\n preterite: {\n yo: 'agregué',\n tu: 'agregaste',\n el: 'agregó',\n nosotros: 'agregamos',\n vosotros: 'agregasteis',\n ellos: 'agregaron',\n },\n imperfect: {\n yo: 'agregaba',\n tu: 'agregabas',\n el: 'agregaba',\n nosotros: 'agregábamos',\n vosotros: 'agregabais',\n ellos: 'agregaban',\n },\n future: {\n yo: 'agregaré',\n tu: 'agregarás',\n el: 'agregará',\n nosotros: 'agregaremos',\n vosotros: 'agregaréis',\n ellos: 'agregarán',\n },\n imperative: {\n tu: 'agrega',\n usted: 'agregue',\n ustedes: 'agreguen',\n },\n gerund: 'agregando',\n pastParticiple: {\n ms: 'agregado',\n fs: 'agregada',\n mp: 'agregados',\n fp: 'agregadas',\n },\n },\n\n remove: {\n infinitive: 'quitar',\n verbClass: 'ar',\n irregular: false,\n present: {\n yo: 'quito',\n tu: 'quitas',\n el: 'quita',\n nosotros: 'quitamos',\n vosotros: 'quitáis',\n ellos: 'quitan',\n },\n preterite: {\n yo: 'quité',\n tu: 'quitaste',\n el: 'quitó',\n nosotros: 'quitamos',\n vosotros: 'quitasteis',\n ellos: 'quitaron',\n },\n imperfect: {\n yo: 'quitaba',\n tu: 'quitabas',\n el: 'quitaba',\n nosotros: 'quitábamos',\n vosotros: 'quitabais',\n ellos: 'quitaban',\n },\n future: {\n yo: 'quitaré',\n tu: 'quitarás',\n el: 'quitará',\n nosotros: 'quitaremos',\n vosotros: 'quitaréis',\n ellos: 'quitarán',\n },\n imperative: {\n tu: 'quita',\n usted: 'quite',\n ustedes: 'quiten',\n },\n gerund: 'quitando',\n pastParticiple: {\n ms: 'quitado',\n fs: 'quitada',\n mp: 'quitados',\n fp: 'quitadas',\n },\n },\n\n toggle: {\n infinitive: 'alternar',\n verbClass: 'ar',\n irregular: false,\n present: {\n yo: 'alterno',\n tu: 'alternas',\n el: 'alterna',\n nosotros: 'alternamos',\n vosotros: 'alternáis',\n ellos: 'alternan',\n },\n preterite: {\n yo: 'alterné',\n tu: 'alternaste',\n el: 'alternó',\n nosotros: 'alternamos',\n vosotros: 'alternasteis',\n ellos: 'alternaron',\n },\n imperfect: {\n yo: 'alternaba',\n tu: 'alternabas',\n el: 'alternaba',\n nosotros: 'alternábamos',\n vosotros: 'alternabais',\n ellos: 'alternaban',\n },\n future: {\n yo: 'alternaré',\n tu: 'alternarás',\n el: 'alternará',\n nosotros: 'alternaremos',\n vosotros: 'alternaréis',\n ellos: 'alternarán',\n },\n imperative: {\n tu: 'alterna',\n usted: 'alterne',\n ustedes: 'alternen',\n },\n gerund: 'alternando',\n pastParticiple: {\n ms: 'alternado',\n fs: 'alternada',\n mp: 'alternados',\n fp: 'alternadas',\n },\n },\n\n put: {\n infinitive: 'poner',\n verbClass: 'er',\n irregular: true,\n present: {\n yo: 'pongo',\n tu: 'pones',\n el: 'pone',\n nosotros: 'ponemos',\n vosotros: 'ponéis',\n ellos: 'ponen',\n },\n preterite: {\n yo: 'puse',\n tu: 'pusiste',\n el: 'puso',\n nosotros: 'pusimos',\n vosotros: 'pusisteis',\n ellos: 'pusieron',\n },\n imperfect: {\n yo: 'ponía',\n tu: 'ponías',\n el: 'ponía',\n nosotros: 'poníamos',\n vosotros: 'poníais',\n ellos: 'ponían',\n },\n future: {\n yo: 'pondré',\n tu: 'pondrás',\n el: 'pondrá',\n nosotros: 'pondremos',\n vosotros: 'pondréis',\n ellos: 'pondrán',\n },\n imperative: {\n tu: 'pon',\n usted: 'ponga',\n ustedes: 'pongan',\n },\n gerund: 'poniendo',\n pastParticiple: {\n ms: 'puesto',\n fs: 'puesta',\n mp: 'puestos',\n fp: 'puestas',\n },\n },\n\n set: {\n infinitive: 'establecer',\n verbClass: 'er',\n irregular: true,\n present: {\n yo: 'establezco',\n tu: 'estableces',\n el: 'establece',\n nosotros: 'establecemos',\n vosotros: 'establecéis',\n ellos: 'establecen',\n },\n preterite: {\n yo: 'establecí',\n tu: 'estableciste',\n el: 'estableció',\n nosotros: 'establecimos',\n vosotros: 'establecisteis',\n ellos: 'establecieron',\n },\n imperfect: {\n yo: 'establecía',\n tu: 'establecías',\n el: 'establecía',\n nosotros: 'establecíamos',\n vosotros: 'establecíais',\n ellos: 'establecían',\n },\n future: {\n yo: 'estableceré',\n tu: 'establecerás',\n el: 'establecerá',\n nosotros: 'estableceremos',\n vosotros: 'estableceréis',\n ellos: 'establecerán',\n },\n imperative: {\n tu: 'establece',\n usted: 'establezca',\n ustedes: 'establezcan',\n },\n gerund: 'estableciendo',\n pastParticiple: {\n ms: 'establecido',\n fs: 'establecida',\n mp: 'establecidos',\n fp: 'establecidas',\n },\n },\n\n show: {\n infinitive: 'mostrar',\n verbClass: 'ar',\n irregular: true,\n present: {\n yo: 'muestro',\n tu: 'muestras',\n el: 'muestra',\n nosotros: 'mostramos',\n vosotros: 'mostráis',\n ellos: 'muestran',\n },\n preterite: {\n yo: 'mostré',\n tu: 'mostraste',\n el: 'mostró',\n nosotros: 'mostramos',\n vosotros: 'mostrasteis',\n ellos: 'mostraron',\n },\n imperfect: {\n yo: 'mostraba',\n tu: 'mostrabas',\n el: 'mostraba',\n nosotros: 'mostrábamos',\n vosotros: 'mostrabais',\n ellos: 'mostraban',\n },\n future: {\n yo: 'mostraré',\n tu: 'mostrarás',\n el: 'mostrará',\n nosotros: 'mostraremos',\n vosotros: 'mostraréis',\n ellos: 'mostrarán',\n },\n imperative: {\n tu: 'muestra',\n usted: 'muestre',\n ustedes: 'muestren',\n },\n gerund: 'mostrando',\n pastParticiple: {\n ms: 'mostrado',\n fs: 'mostrada',\n mp: 'mostrados',\n fp: 'mostradas',\n },\n },\n\n hide: {\n infinitive: 'ocultar',\n verbClass: 'ar',\n irregular: false,\n present: {\n yo: 'oculto',\n tu: 'ocultas',\n el: 'oculta',\n nosotros: 'ocultamos',\n vosotros: 'ocultáis',\n ellos: 'ocultan',\n },\n preterite: {\n yo: 'oculté',\n tu: 'ocultaste',\n el: 'ocultó',\n nosotros: 'ocultamos',\n vosotros: 'ocultasteis',\n ellos: 'ocultaron',\n },\n imperfect: {\n yo: 'ocultaba',\n tu: 'ocultabas',\n el: 'ocultaba',\n nosotros: 'ocultábamos',\n vosotros: 'ocultabais',\n ellos: 'ocultaban',\n },\n future: {\n yo: 'ocultaré',\n tu: 'ocultarás',\n el: 'ocultará',\n nosotros: 'ocultaremos',\n vosotros: 'ocultaréis',\n ellos: 'ocultarán',\n },\n imperative: {\n tu: 'oculta',\n usted: 'oculte',\n ustedes: 'oculten',\n },\n gerund: 'ocultando',\n pastParticiple: {\n ms: 'ocultado',\n fs: 'ocultada',\n mp: 'ocultados',\n fp: 'ocultadas',\n },\n },\n\n get: {\n infinitive: 'obtener',\n verbClass: 'er',\n irregular: true,\n present: {\n yo: 'obtengo',\n tu: 'obtienes',\n el: 'obtiene',\n nosotros: 'obtenemos',\n vosotros: 'obtenéis',\n ellos: 'obtienen',\n },\n preterite: {\n yo: 'obtuve',\n tu: 'obtuviste',\n el: 'obtuvo',\n nosotros: 'obtuvimos',\n vosotros: 'obtuvisteis',\n ellos: 'obtuvieron',\n },\n imperfect: {\n yo: 'obtenía',\n tu: 'obtenías',\n el: 'obtenía',\n nosotros: 'obteníamos',\n vosotros: 'obteníais',\n ellos: 'obtenían',\n },\n future: {\n yo: 'obtendré',\n tu: 'obtendrás',\n el: 'obtendrá',\n nosotros: 'obtendremos',\n vosotros: 'obtendréis',\n ellos: 'obtendrán',\n },\n imperative: {\n tu: 'obtén',\n usted: 'obtenga',\n ustedes: 'obtengan',\n },\n gerund: 'obteniendo',\n pastParticiple: {\n ms: 'obtenido',\n fs: 'obtenida',\n mp: 'obtenidos',\n fp: 'obtenidas',\n },\n },\n\n wait: {\n infinitive: 'esperar',\n verbClass: 'ar',\n irregular: false,\n present: {\n yo: 'espero',\n tu: 'esperas',\n el: 'espera',\n nosotros: 'esperamos',\n vosotros: 'esperáis',\n ellos: 'esperan',\n },\n preterite: {\n yo: 'esperé',\n tu: 'esperaste',\n el: 'esperó',\n nosotros: 'esperamos',\n vosotros: 'esperasteis',\n ellos: 'esperaron',\n },\n imperfect: {\n yo: 'esperaba',\n tu: 'esperabas',\n el: 'esperaba',\n nosotros: 'esperábamos',\n vosotros: 'esperabais',\n ellos: 'esperaban',\n },\n future: {\n yo: 'esperaré',\n tu: 'esperarás',\n el: 'esperará',\n nosotros: 'esperaremos',\n vosotros: 'esperaréis',\n ellos: 'esperarán',\n },\n imperative: {\n tu: 'espera',\n usted: 'espere',\n ustedes: 'esperen',\n },\n gerund: 'esperando',\n pastParticiple: {\n ms: 'esperado',\n fs: 'esperada',\n mp: 'esperados',\n fp: 'esperadas',\n },\n },\n\n fetch: {\n infinitive: 'buscar',\n verbClass: 'ar',\n irregular: false,\n present: {\n yo: 'busco',\n tu: 'buscas',\n el: 'busca',\n nosotros: 'buscamos',\n vosotros: 'buscáis',\n ellos: 'buscan',\n },\n preterite: {\n yo: 'busqué',\n tu: 'buscaste',\n el: 'buscó',\n nosotros: 'buscamos',\n vosotros: 'buscasteis',\n ellos: 'buscaron',\n },\n imperfect: {\n yo: 'buscaba',\n tu: 'buscabas',\n el: 'buscaba',\n nosotros: 'buscábamos',\n vosotros: 'buscabais',\n ellos: 'buscaban',\n },\n future: {\n yo: 'buscaré',\n tu: 'buscarás',\n el: 'buscará',\n nosotros: 'buscaremos',\n vosotros: 'buscaréis',\n ellos: 'buscarán',\n },\n imperative: {\n tu: 'busca',\n usted: 'busque',\n ustedes: 'busquen',\n },\n gerund: 'buscando',\n pastParticiple: {\n ms: 'buscado',\n fs: 'buscada',\n mp: 'buscados',\n fp: 'buscadas',\n },\n },\n\n send: {\n infinitive: 'enviar',\n verbClass: 'ar',\n irregular: true,\n present: {\n yo: 'envío',\n tu: 'envías',\n el: 'envía',\n nosotros: 'enviamos',\n vosotros: 'enviáis',\n ellos: 'envían',\n },\n preterite: {\n yo: 'envié',\n tu: 'enviaste',\n el: 'envió',\n nosotros: 'enviamos',\n vosotros: 'enviasteis',\n ellos: 'enviaron',\n },\n imperfect: {\n yo: 'enviaba',\n tu: 'enviabas',\n el: 'enviaba',\n nosotros: 'enviábamos',\n vosotros: 'enviabais',\n ellos: 'enviaban',\n },\n future: {\n yo: 'enviaré',\n tu: 'enviarás',\n el: 'enviará',\n nosotros: 'enviaremos',\n vosotros: 'enviaréis',\n ellos: 'enviarán',\n },\n imperative: {\n tu: 'envía',\n usted: 'envíe',\n ustedes: 'envíen',\n },\n gerund: 'enviando',\n pastParticiple: {\n ms: 'enviado',\n fs: 'enviada',\n mp: 'enviados',\n fp: 'enviadas',\n },\n },\n\n go: {\n infinitive: 'ir',\n verbClass: 'ir',\n irregular: true,\n present: {\n yo: 'voy',\n tu: 'vas',\n el: 'va',\n nosotros: 'vamos',\n vosotros: 'vais',\n ellos: 'van',\n },\n preterite: {\n yo: 'fui',\n tu: 'fuiste',\n el: 'fue',\n nosotros: 'fuimos',\n vosotros: 'fuisteis',\n ellos: 'fueron',\n },\n imperfect: {\n yo: 'iba',\n tu: 'ibas',\n el: 'iba',\n nosotros: 'íbamos',\n vosotros: 'ibais',\n ellos: 'iban',\n },\n future: {\n yo: 'iré',\n tu: 'irás',\n el: 'irá',\n nosotros: 'iremos',\n vosotros: 'iréis',\n ellos: 'irán',\n },\n imperative: {\n tu: 've',\n usted: 'vaya',\n ustedes: 'vayan',\n },\n gerund: 'yendo',\n pastParticiple: {\n ms: 'ido',\n fs: 'ida',\n mp: 'idos',\n fp: 'idas',\n },\n },\n\n increment: {\n infinitive: 'incrementar',\n verbClass: 'ar',\n irregular: false,\n present: {\n yo: 'incremento',\n tu: 'incrementas',\n el: 'incrementa',\n nosotros: 'incrementamos',\n vosotros: 'incrementáis',\n ellos: 'incrementan',\n },\n preterite: {\n yo: 'incrementé',\n tu: 'incrementaste',\n el: 'incrementó',\n nosotros: 'incrementamos',\n vosotros: 'incrementasteis',\n ellos: 'incrementaron',\n },\n imperfect: {\n yo: 'incrementaba',\n tu: 'incrementabas',\n el: 'incrementaba',\n nosotros: 'incrementábamos',\n vosotros: 'incrementabais',\n ellos: 'incrementaban',\n },\n future: {\n yo: 'incrementaré',\n tu: 'incrementarás',\n el: 'incrementará',\n nosotros: 'incrementaremos',\n vosotros: 'incrementaréis',\n ellos: 'incrementarán',\n },\n imperative: {\n tu: 'incrementa',\n usted: 'incremente',\n ustedes: 'incrementen',\n },\n gerund: 'incrementando',\n pastParticiple: {\n ms: 'incrementado',\n fs: 'incrementada',\n mp: 'incrementados',\n fp: 'incrementadas',\n },\n },\n\n decrement: {\n infinitive: 'decrementar',\n verbClass: 'ar',\n irregular: false,\n present: {\n yo: 'decremento',\n tu: 'decrementas',\n el: 'decrementa',\n nosotros: 'decrementamos',\n vosotros: 'decrementáis',\n ellos: 'decrementan',\n },\n preterite: {\n yo: 'decrementé',\n tu: 'decrementaste',\n el: 'decrementó',\n nosotros: 'decrementamos',\n vosotros: 'decrementasteis',\n ellos: 'decrementaron',\n },\n imperfect: {\n yo: 'decrementaba',\n tu: 'decrementabas',\n el: 'decrementaba',\n nosotros: 'decrementábamos',\n vosotros: 'decrementabais',\n ellos: 'decrementaban',\n },\n future: {\n yo: 'decrementaré',\n tu: 'decrementarás',\n el: 'decrementará',\n nosotros: 'decrementaremos',\n vosotros: 'decrementaréis',\n ellos: 'decrementarán',\n },\n imperative: {\n tu: 'decrementa',\n usted: 'decremente',\n ustedes: 'decrementen',\n },\n gerund: 'decrementando',\n pastParticiple: {\n ms: 'decrementado',\n fs: 'decrementada',\n mp: 'decrementados',\n fp: 'decrementadas',\n },\n },\n\n take: {\n infinitive: 'tomar',\n verbClass: 'ar',\n irregular: false,\n present: {\n yo: 'tomo',\n tu: 'tomas',\n el: 'toma',\n nosotros: 'tomamos',\n vosotros: 'tomáis',\n ellos: 'toman',\n },\n preterite: {\n yo: 'tomé',\n tu: 'tomaste',\n el: 'tomó',\n nosotros: 'tomamos',\n vosotros: 'tomasteis',\n ellos: 'tomaron',\n },\n imperfect: {\n yo: 'tomaba',\n tu: 'tomabas',\n el: 'tomaba',\n nosotros: 'tomábamos',\n vosotros: 'tomabais',\n ellos: 'tomaban',\n },\n future: {\n yo: 'tomaré',\n tu: 'tomarás',\n el: 'tomará',\n nosotros: 'tomaremos',\n vosotros: 'tomaréis',\n ellos: 'tomarán',\n },\n imperative: {\n tu: 'toma',\n usted: 'tome',\n ustedes: 'tomen',\n },\n gerund: 'tomando',\n pastParticiple: {\n ms: 'tomado',\n fs: 'tomada',\n mp: 'tomados',\n fp: 'tomadas',\n },\n },\n};\n\nconst frames: LanguageFrames = {\n code: 'es',\n wordOrder: 'SVO',\n frames: [\n {\n function: 'commanding',\n template: '{verb.imperative.tu} {patient} {target}',\n verbForm: 'imperative.tu',\n example: 'agrega .active a #button',\n },\n {\n function: 'describing',\n template: '{subject} {verb.present.el} {patient} {target}',\n verbForm: 'present.el',\n example: 'El sistema agrega .active a #button',\n },\n {\n function: 'narrating',\n template: '{subject} {verb.preterite.el} {patient} {target}',\n verbForm: 'preterite.el',\n example: 'El sistema agregó .active a #button',\n },\n {\n function: 'questioning',\n template: '¿{verb.preterite.el} {subject} {patient} {target}?',\n verbForm: 'preterite.el',\n example: '¿Agregó el sistema .active a #button?',\n },\n {\n function: 'negating',\n template: '{subject} no {verb.preterite.el} {patient} {target}',\n verbForm: 'preterite.el',\n example: 'El sistema no agregó .active a #button',\n },\n {\n function: 'planning',\n template: '{subject} {verb.future.el} {patient} {target}',\n verbForm: 'future.el',\n example: 'El sistema agregará .active a #button',\n },\n {\n function: 'progressing',\n template: '{subject} está {verb.gerund} {patient} {target}',\n verbForm: 'gerund',\n example: 'El sistema está agregando .active a #button',\n },\n ],\n};\n\nexport const esProfile: LearnLanguageProfile = {\n patternProfile: {\n code: 'es',\n wordOrder: 'SVO',\n keywords: {\n add: { primary: 'agregar', alternatives: ['agrega'] },\n remove: { primary: 'quitar', alternatives: ['quita'] },\n toggle: { primary: 'alternar', alternatives: ['alterna'] },\n put: { primary: 'poner', alternatives: ['pon'] },\n set: { primary: 'establecer', alternatives: ['establece'] },\n show: { primary: 'mostrar', alternatives: ['muestra'] },\n hide: { primary: 'ocultar', alternatives: ['oculta'] },\n get: { primary: 'obtener', alternatives: ['obtén'] },\n wait: { primary: 'esperar', alternatives: ['espera'] },\n fetch: { primary: 'buscar', alternatives: ['busca'] },\n send: { primary: 'enviar', alternatives: ['envía'] },\n go: { primary: 'ir', alternatives: ['ve'] },\n increment: { primary: 'incrementar', alternatives: ['incrementa'] },\n decrement: { primary: 'decrementar', alternatives: ['decrementa'] },\n take: { primary: 'tomar', alternatives: ['toma'] },\n },\n },\n morphologyTable,\n frames,\n defaultSubject: 'el sistema',\n};\n","import type { LearnLanguageProfile } from '../types';\n\nexport const arProfile: LearnLanguageProfile = {\n patternProfile: {\n code: 'ar',\n wordOrder: 'VSO',\n keywords: {\n add: { primary: 'أضف' },\n remove: { primary: 'احذف' },\n toggle: { primary: 'بدّل' },\n put: { primary: 'ضع' },\n set: { primary: 'عيّن' },\n show: { primary: 'أظهر' },\n hide: { primary: 'أخفِ' },\n get: { primary: 'احصل' },\n wait: { primary: 'انتظر' },\n fetch: { primary: 'أحضر' },\n send: { primary: 'أرسل' },\n go: { primary: 'اذهب' },\n increment: { primary: 'زد' },\n decrement: { primary: 'أنقص' },\n take: { primary: 'خذ' },\n },\n },\n morphologyTable: {\n add: {\n root: 'ض-ي-ف',\n form: 'IV',\n past: {\n howa: 'أضافَ',\n hiya: 'أضافَت',\n anta: 'أضَفتَ',\n anti: 'أضَفتِ',\n ana: 'أضَفتُ',\n hum: 'أضافوا',\n nahnu: 'أضَفنا',\n },\n present: {\n howa: 'يُضيفُ',\n hiya: 'تُضيفُ',\n anta: 'تُضيفُ',\n anti: 'تُضيفينَ',\n ana: 'أُضيفُ',\n hum: 'يُضيفونَ',\n nahnu: 'نُضيفُ',\n },\n imperative: {\n ms: 'أضِف',\n fs: 'أضيفي',\n mp: 'أضيفوا',\n },\n activeParticiple: 'مُضيف',\n passiveParticiple: 'مُضاف',\n masdar: 'إضافة',\n },\n remove: {\n root: 'ح-ذ-ف',\n form: 'I',\n past: {\n howa: 'حَذَفَ',\n hiya: 'حَذَفَت',\n anta: 'حَذَفتَ',\n anti: 'حَذَفتِ',\n ana: 'حَذَفتُ',\n hum: 'حَذَفوا',\n nahnu: 'حَذَفنا',\n },\n present: {\n howa: 'يَحذِفُ',\n hiya: 'تَحذِفُ',\n anta: 'تَحذِفُ',\n anti: 'تَحذِفينَ',\n ana: 'أَحذِفُ',\n hum: 'يَحذِفونَ',\n nahnu: 'نَحذِفُ',\n },\n imperative: {\n ms: 'احذِف',\n fs: 'احذِفي',\n mp: 'احذِفوا',\n },\n activeParticiple: 'حاذِف',\n passiveParticiple: 'مَحذوف',\n masdar: 'حَذف',\n },\n toggle: {\n root: 'ب-د-ل',\n form: 'II',\n past: {\n howa: 'بَدَّلَ',\n hiya: 'بَدَّلَت',\n anta: 'بَدَّلتَ',\n anti: 'بَدَّلتِ',\n ana: 'بَدَّلتُ',\n hum: 'بَدَّلوا',\n nahnu: 'بَدَّلنا',\n },\n present: {\n howa: 'يُبَدِّلُ',\n hiya: 'تُبَدِّلُ',\n anta: 'تُبَدِّلُ',\n anti: 'تُبَدِّلينَ',\n ana: 'أُبَدِّلُ',\n hum: 'يُبَدِّلونَ',\n nahnu: 'نُبَدِّلُ',\n },\n imperative: {\n ms: 'بَدِّل',\n fs: 'بَدِّلي',\n mp: 'بَدِّلوا',\n },\n activeParticiple: 'مُبَدِّل',\n passiveParticiple: 'مُبَدَّل',\n masdar: 'تبديل',\n },\n put: {\n root: 'و-ض-ع',\n form: 'I',\n past: {\n howa: 'وَضَعَ',\n hiya: 'وَضَعَت',\n anta: 'وَضَعتَ',\n anti: 'وَضَعتِ',\n ana: 'وَضَعتُ',\n hum: 'وَضَعوا',\n nahnu: 'وَضَعنا',\n },\n present: {\n howa: 'يَضَعُ',\n hiya: 'تَضَعُ',\n anta: 'تَضَعُ',\n anti: 'تَضَعينَ',\n ana: 'أَضَعُ',\n hum: 'يَضَعونَ',\n nahnu: 'نَضَعُ',\n },\n imperative: {\n ms: 'ضَع',\n fs: 'ضَعي',\n mp: 'ضَعوا',\n },\n activeParticiple: 'واضِع',\n passiveParticiple: 'مَوضوع',\n masdar: 'وَضع',\n },\n set: {\n root: 'ع-ي-ن',\n form: 'II',\n past: {\n howa: 'عَيَّنَ',\n hiya: 'عَيَّنَت',\n anta: 'عَيَّنتَ',\n anti: 'عَيَّنتِ',\n ana: 'عَيَّنتُ',\n hum: 'عَيَّنوا',\n nahnu: 'عَيَّنا',\n },\n present: {\n howa: 'يُعَيِّنُ',\n hiya: 'تُعَيِّنُ',\n anta: 'تُعَيِّنُ',\n anti: 'تُعَيِّنينَ',\n ana: 'أُعَيِّنُ',\n hum: 'يُعَيِّنونَ',\n nahnu: 'نُعَيِّنُ',\n },\n imperative: {\n ms: 'عَيِّن',\n fs: 'عَيِّني',\n mp: 'عَيِّنوا',\n },\n activeParticiple: 'مُعَيِّن',\n passiveParticiple: 'مُعَيَّن',\n masdar: 'تعيين',\n },\n show: {\n root: 'ظ-ه-ر',\n form: 'IV',\n past: {\n howa: 'أظهَرَ',\n hiya: 'أظهَرَت',\n anta: 'أظهَرتَ',\n anti: 'أظهَرتِ',\n ana: 'أظهَرتُ',\n hum: 'أظهَروا',\n nahnu: 'أظهَرنا',\n },\n present: {\n howa: 'يُظهِرُ',\n hiya: 'تُظهِرُ',\n anta: 'تُظهِرُ',\n anti: 'تُظهِرينَ',\n ana: 'أُظهِرُ',\n hum: 'يُظهِرونَ',\n nahnu: 'نُظهِرُ',\n },\n imperative: {\n ms: 'أظهِر',\n fs: 'أظهِري',\n mp: 'أظهِروا',\n },\n activeParticiple: 'مُظهِر',\n passiveParticiple: 'مُظهَر',\n masdar: 'إظهار',\n },\n hide: {\n root: 'خ-ف-ي',\n form: 'IV',\n past: {\n howa: 'أخفى',\n hiya: 'أخفَت',\n anta: 'أخفَيتَ',\n anti: 'أخفَيتِ',\n ana: 'أخفَيتُ',\n hum: 'أخفَوا',\n nahnu: 'أخفَينا',\n },\n present: {\n howa: 'يُخفي',\n hiya: 'تُخفي',\n anta: 'تُخفي',\n anti: 'تُخفينَ',\n ana: 'أُخفي',\n hum: 'يُخفونَ',\n nahnu: 'نُخفي',\n },\n imperative: {\n ms: 'أخفِ',\n fs: 'أخفي',\n mp: 'أخفوا',\n },\n activeParticiple: 'مُخفٍ',\n passiveParticiple: 'مُخفى',\n masdar: 'إخفاء',\n },\n get: {\n root: 'ح-ص-ل',\n form: 'I',\n past: {\n howa: 'حَصَلَ',\n hiya: 'حَصَلَت',\n anta: 'حَصَلتَ',\n anti: 'حَصَلتِ',\n ana: 'حَصَلتُ',\n hum: 'حَصَلوا',\n nahnu: 'حَصَلنا',\n },\n present: {\n howa: 'يَحصُلُ',\n hiya: 'تَحصُلُ',\n anta: 'تَحصُلُ',\n anti: 'تَحصُلينَ',\n ana: 'أَحصُلُ',\n hum: 'يَحصُلونَ',\n nahnu: 'نَحصُلُ',\n },\n imperative: {\n ms: 'احصُل',\n fs: 'احصُلي',\n mp: 'احصُلوا',\n },\n activeParticiple: 'حاصِل',\n passiveParticiple: 'مَحصول',\n masdar: 'حُصول',\n },\n wait: {\n root: 'ن-ظ-ر',\n form: 'VIII',\n past: {\n howa: 'انتَظَرَ',\n hiya: 'انتَظَرَت',\n anta: 'انتَظَرتَ',\n anti: 'انتَظَرتِ',\n ana: 'انتَظَرتُ',\n hum: 'انتَظَروا',\n nahnu: 'انتَظَرنا',\n },\n present: {\n howa: 'يَنتَظِرُ',\n hiya: 'تَنتَظِرُ',\n anta: 'تَنتَظِرُ',\n anti: 'تَنتَظِرينَ',\n ana: 'أَنتَظِرُ',\n hum: 'يَنتَظِرونَ',\n nahnu: 'نَنتَظِرُ',\n },\n imperative: {\n ms: 'انتَظِر',\n fs: 'انتَظِري',\n mp: 'انتَظِروا',\n },\n activeParticiple: 'مُنتَظِر',\n passiveParticiple: 'مُنتَظَر',\n masdar: 'انتِظار',\n },\n fetch: {\n root: 'ح-ض-ر',\n form: 'IV',\n past: {\n howa: 'أحضَرَ',\n hiya: 'أحضَرَت',\n anta: 'أحضَرتَ',\n anti: 'أحضَرتِ',\n ana: 'أحضَرتُ',\n hum: 'أحضَروا',\n nahnu: 'أحضَرنا',\n },\n present: {\n howa: 'يُحضِرُ',\n hiya: 'تُحضِرُ',\n anta: 'تُحضِرُ',\n anti: 'تُحضِرينَ',\n ana: 'أُحضِرُ',\n hum: 'يُحضِرونَ',\n nahnu: 'نُحضِرُ',\n },\n imperative: {\n ms: 'أحضِر',\n fs: 'أحضِري',\n mp: 'أحضِروا',\n },\n activeParticiple: 'مُحضِر',\n passiveParticiple: 'مُحضَر',\n masdar: 'إحضار',\n },\n send: {\n root: 'ر-س-ل',\n form: 'IV',\n past: {\n howa: 'أرسَلَ',\n hiya: 'أرسَلَت',\n anta: 'أرسَلتَ',\n anti: 'أرسَلتِ',\n ana: 'أرسَلتُ',\n hum: 'أرسَلوا',\n nahnu: 'أرسَلنا',\n },\n present: {\n howa: 'يُرسِلُ',\n hiya: 'تُرسِلُ',\n anta: 'تُرسِلُ',\n anti: 'تُرسِلينَ',\n ana: 'أُرسِلُ',\n hum: 'يُرسِلونَ',\n nahnu: 'نُرسِلُ',\n },\n imperative: {\n ms: 'أرسِل',\n fs: 'أرسِلي',\n mp: 'أرسِلوا',\n },\n activeParticiple: 'مُرسِل',\n passiveParticiple: 'مُرسَل',\n masdar: 'إرسال',\n },\n go: {\n root: 'ذ-ه-ب',\n form: 'I',\n past: {\n howa: 'ذَهَبَ',\n hiya: 'ذَهَبَت',\n anta: 'ذَهَبتَ',\n anti: 'ذَهَبتِ',\n ana: 'ذَهَبتُ',\n hum: 'ذَهَبوا',\n nahnu: 'ذَهَبنا',\n },\n present: {\n howa: 'يَذهَبُ',\n hiya: 'تَذهَبُ',\n anta: 'تَذهَبُ',\n anti: 'تَذهَبينَ',\n ana: 'أَذهَبُ',\n hum: 'يَذهَبونَ',\n nahnu: 'نَذهَبُ',\n },\n imperative: {\n ms: 'اذهَب',\n fs: 'اذهَبي',\n mp: 'اذهَبوا',\n },\n activeParticiple: 'ذاهِب',\n passiveParticiple: 'مَذهوب',\n masdar: 'ذَهاب',\n },\n increment: {\n root: 'ز-ي-د',\n form: 'I',\n past: {\n howa: 'زادَ',\n hiya: 'زادَت',\n anta: 'زِدتَ',\n anti: 'زِدتِ',\n ana: 'زِدتُ',\n hum: 'زادوا',\n nahnu: 'زِدنا',\n },\n present: {\n howa: 'يَزيدُ',\n hiya: 'تَزيدُ',\n anta: 'تَزيدُ',\n anti: 'تَزيدينَ',\n ana: 'أَزيدُ',\n hum: 'يَزيدونَ',\n nahnu: 'نَزيدُ',\n },\n imperative: {\n ms: 'زِد',\n fs: 'زيدي',\n mp: 'زيدوا',\n },\n activeParticiple: 'زائِد',\n passiveParticiple: 'مَزيد',\n masdar: 'زِيادة',\n },\n decrement: {\n root: 'ن-ق-ص',\n form: 'IV',\n past: {\n howa: 'أنقَصَ',\n hiya: 'أنقَصَت',\n anta: 'أنقَصتَ',\n anti: 'أنقَصتِ',\n ana: 'أنقَصتُ',\n hum: 'أنقَصوا',\n nahnu: 'أنقَصنا',\n },\n present: {\n howa: 'يُنقِصُ',\n hiya: 'تُنقِصُ',\n anta: 'تُنقِصُ',\n anti: 'تُنقِصينَ',\n ana: 'أُنقِصُ',\n hum: 'يُنقِصونَ',\n nahnu: 'نُنقِصُ',\n },\n imperative: {\n ms: 'أنقِص',\n fs: 'أنقِصي',\n mp: 'أنقِصوا',\n },\n activeParticiple: 'مُنقِص',\n passiveParticiple: 'مُنقَص',\n masdar: 'إنقاص',\n },\n take: {\n root: 'أ-خ-ذ',\n form: 'I',\n past: {\n howa: 'أخَذَ',\n hiya: 'أخَذَت',\n anta: 'أخَذتَ',\n anti: 'أخَذتِ',\n ana: 'أخَذتُ',\n hum: 'أخَذوا',\n nahnu: 'أخَذنا',\n },\n present: {\n howa: 'يَأخُذُ',\n hiya: 'تَأخُذُ',\n anta: 'تَأخُذُ',\n anti: 'تَأخُذينَ',\n ana: 'آخُذُ',\n hum: 'يَأخُذونَ',\n nahnu: 'نَأخُذُ',\n },\n imperative: {\n ms: 'خُذ',\n fs: 'خُذي',\n mp: 'خُذوا',\n },\n activeParticiple: 'آخِذ',\n passiveParticiple: 'مَأخوذ',\n masdar: 'أخذ',\n },\n },\n frames: {\n code: 'ar',\n wordOrder: 'VSO',\n frames: [\n {\n function: 'commanding',\n template: '{verb.imperative.ms} {patient} {target}',\n verbForm: 'imperative.ms',\n example: 'أضِف .active إلى #button',\n },\n {\n function: 'describing',\n template: '{verb.present.howa} {subject} {patient} {target}',\n verbForm: 'present.howa',\n example: 'يُضيفُ النظامُ .active إلى #button',\n },\n {\n function: 'narrating',\n template: '{verb.past.howa} {subject} {patient} {target}',\n verbForm: 'past.howa',\n example: 'أضافَ النظامُ .active إلى #button',\n },\n {\n function: 'questioning',\n template: 'هل {verb.past.howa} {subject} {patient} {target}؟',\n verbForm: 'past.howa',\n example: 'هل أضافَ النظامُ .active إلى #button؟',\n },\n {\n function: 'negating',\n template: 'لم {verb.present.howa} {subject} {patient} {target}',\n verbForm: 'present.howa',\n example: 'لم يُضِف النظامُ .active إلى #button',\n },\n {\n function: 'planning',\n template: 'سوف {verb.present.howa} {subject} {patient} {target}',\n verbForm: 'present.howa',\n example: 'سوف يُضيفُ النظامُ .active إلى #button',\n },\n {\n function: 'progressing',\n template: '{subject} {verb.activeParticiple} {patient} {target}',\n verbForm: 'activeParticiple',\n example: 'النظامُ مُضيفٌ .active إلى #button',\n },\n ],\n },\n defaultSubject: 'النظامُ',\n};\n","import type { LearnLanguageProfile } from '../types';\n\nexport const zhProfile: LearnLanguageProfile = {\n patternProfile: {\n code: 'zh',\n wordOrder: 'SVO',\n keywords: {\n add: { primary: '添加' },\n remove: { primary: '移除' },\n toggle: { primary: '切换' },\n put: { primary: '放置' },\n set: { primary: '设置' },\n show: { primary: '显示' },\n hide: { primary: '隐藏' },\n get: { primary: '获取' },\n wait: { primary: '等待' },\n fetch: { primary: '抓取' },\n send: { primary: '发送' },\n go: { primary: '前往' },\n increment: { primary: '增加' },\n decrement: { primary: '减少' },\n take: { primary: '拿取' },\n },\n },\n morphologyTable: {\n add: {\n base: '添加',\n pinyin: 'tiān jiā',\n patterns: {\n completed: '添加了',\n experience: '添加过',\n progressive: '在添加',\n future: '会添加',\n negPresent: '不添加',\n negPast: '没添加',\n },\n },\n remove: {\n base: '移除',\n pinyin: 'yí chú',\n patterns: {\n completed: '移除了',\n experience: '移除过',\n progressive: '在移除',\n future: '会移除',\n negPresent: '不移除',\n negPast: '没移除',\n },\n },\n toggle: {\n base: '切换',\n pinyin: 'qiē huàn',\n patterns: {\n completed: '切换了',\n experience: '切换过',\n progressive: '在切换',\n future: '会切换',\n negPresent: '不切换',\n negPast: '没切换',\n },\n },\n put: {\n base: '放置',\n pinyin: 'fàng zhì',\n patterns: {\n completed: '放置了',\n experience: '放置过',\n progressive: '在放置',\n future: '会放置',\n negPresent: '不放置',\n negPast: '没放置',\n },\n },\n set: {\n base: '设置',\n pinyin: 'shè zhì',\n patterns: {\n completed: '设置了',\n experience: '设置过',\n progressive: '在设置',\n future: '会设置',\n negPresent: '不设置',\n negPast: '没设置',\n },\n },\n show: {\n base: '显示',\n pinyin: 'xiǎn shì',\n patterns: {\n completed: '显示了',\n experience: '显示过',\n progressive: '在显示',\n future: '会显示',\n negPresent: '不显示',\n negPast: '没显示',\n },\n },\n hide: {\n base: '隐藏',\n pinyin: 'yǐn cáng',\n patterns: {\n completed: '隐藏了',\n experience: '隐藏过',\n progressive: '在隐藏',\n future: '会隐藏',\n negPresent: '不隐藏',\n negPast: '没隐藏',\n },\n },\n get: {\n base: '获取',\n pinyin: 'huò qǔ',\n patterns: {\n completed: '获取了',\n experience: '获取过',\n progressive: '在获取',\n future: '会获取',\n negPresent: '不获取',\n negPast: '没获取',\n },\n },\n wait: {\n base: '等待',\n pinyin: 'děng dài',\n patterns: {\n completed: '等待了',\n experience: '等待过',\n progressive: '在等待',\n future: '会等待',\n negPresent: '不等待',\n negPast: '没等待',\n },\n },\n fetch: {\n base: '抓取',\n pinyin: 'zhuā qǔ',\n patterns: {\n completed: '抓取了',\n experience: '抓取过',\n progressive: '在抓取',\n future: '会抓取',\n negPresent: '不抓取',\n negPast: '没抓取',\n },\n },\n send: {\n base: '发送',\n pinyin: 'fā sòng',\n patterns: {\n completed: '发送了',\n experience: '发送过',\n progressive: '在发送',\n future: '会发送',\n negPresent: '不发送',\n negPast: '没发送',\n },\n },\n go: {\n base: '前往',\n pinyin: 'qián wǎng',\n patterns: {\n completed: '前往了',\n experience: '前往过',\n progressive: '在前往',\n future: '会前往',\n negPresent: '不前往',\n negPast: '没前往',\n },\n },\n increment: {\n base: '增加',\n pinyin: 'zēng jiā',\n patterns: {\n completed: '增加了',\n experience: '增加过',\n progressive: '在增加',\n future: '会增加',\n negPresent: '不增加',\n negPast: '没增加',\n },\n },\n decrement: {\n base: '减少',\n pinyin: 'jiǎn shǎo',\n patterns: {\n completed: '减少了',\n experience: '减少过',\n progressive: '在减少',\n future: '会减少',\n negPresent: '不减少',\n negPast: '没减少',\n },\n },\n take: {\n base: '拿取',\n pinyin: 'ná qǔ',\n patterns: {\n completed: '拿取了',\n experience: '拿取过',\n progressive: '在拿取',\n future: '会拿取',\n negPresent: '不拿取',\n negPast: '没拿取',\n },\n },\n },\n frames: {\n code: 'zh',\n wordOrder: 'SVO',\n frames: [\n {\n function: 'commanding',\n template: '把 {patient} {verb.base} {target}',\n verbForm: 'base',\n example: '把 .active 添加 到 #button',\n },\n {\n function: 'describing',\n template: '{subject} {verb.base} {patient} {target}',\n verbForm: 'base',\n example: '系统 添加 .active 到 #button',\n },\n {\n function: 'narrating',\n template: '{subject} {verb.patterns.completed} {patient} {target}',\n verbForm: 'patterns.completed',\n example: '系统 添加了 .active 到 #button',\n },\n {\n function: 'questioning',\n template: '{subject} {verb.patterns.completed} {patient} {target} 吗?',\n verbForm: 'patterns.completed',\n example: '系统 添加了 .active 到 #button 吗?',\n },\n {\n function: 'negating',\n template: '{subject} {verb.patterns.negPast} {patient} {target}',\n verbForm: 'patterns.negPast',\n example: '系统 没添加 .active 到 #button',\n },\n {\n function: 'planning',\n template: '{subject} {verb.patterns.future} {patient} {target}',\n verbForm: 'patterns.future',\n example: '系统 会添加 .active 到 #button',\n },\n {\n function: 'progressing',\n template: '{subject} {verb.patterns.progressive} {patient} {target}',\n verbForm: 'patterns.progressive',\n example: '系统 在添加 .active 到 #button',\n },\n ],\n },\n defaultSubject: '系统',\n};\n","import type { LearnLanguageProfile } from '../types';\n\nexport const koProfile: LearnLanguageProfile = {\n patternProfile: {\n code: 'ko',\n wordOrder: 'SOV',\n keywords: {\n add: { primary: '추가' },\n remove: { primary: '제거' },\n toggle: { primary: '토글' },\n put: { primary: '넣' },\n set: { primary: '설정' },\n show: { primary: '보이' },\n hide: { primary: '숨기' },\n get: { primary: '얻' },\n wait: { primary: '대기' },\n fetch: { primary: '패치' },\n send: { primary: '보내' },\n go: { primary: '이동' },\n increment: { primary: '증가' },\n decrement: { primary: '감소' },\n take: { primary: '가져오' },\n },\n },\n morphologyTable: {\n add: {\n dictionary: '추가하다',\n verbClass: 'hada',\n stem: '추가하',\n hapnida: '추가합니다',\n haesseumnida: '추가했습니다',\n haeyo: '추가해요',\n haesseoyo: '추가했어요',\n imperative: '추가하세요',\n past: '추가했다',\n negative: '추가하지 않다',\n progressive: '추가하고 있다',\n future: '추가할 것이다',\n },\n remove: {\n dictionary: '제거하다',\n verbClass: 'hada',\n stem: '제거하',\n hapnida: '제거합니다',\n haesseumnida: '제거했습니다',\n haeyo: '제거해요',\n haesseoyo: '제거했어요',\n imperative: '제거하세요',\n past: '제거했다',\n negative: '제거하지 않다',\n progressive: '제거하고 있다',\n future: '제거할 것이다',\n },\n toggle: {\n dictionary: '토글하다',\n verbClass: 'hada',\n stem: '토글하',\n hapnida: '토글합니다',\n haesseumnida: '토글했습니다',\n haeyo: '토글해요',\n haesseoyo: '토글했어요',\n imperative: '토글하세요',\n past: '토글했다',\n negative: '토글하지 않다',\n progressive: '토글하고 있다',\n future: '토글할 것이다',\n },\n put: {\n dictionary: '넣다',\n verbClass: 'native',\n stem: '넣',\n hapnida: '넣습니다',\n haesseumnida: '넣었습니다',\n haeyo: '넣어요',\n haesseoyo: '넣었어요',\n imperative: '넣으세요',\n past: '넣었다',\n negative: '넣지 않다',\n progressive: '넣고 있다',\n future: '넣을 것이다',\n },\n set: {\n dictionary: '설정하다',\n verbClass: 'hada',\n stem: '설정하',\n hapnida: '설정합니다',\n haesseumnida: '설정했습니다',\n haeyo: '설정해요',\n haesseoyo: '설정했어요',\n imperative: '설정하세요',\n past: '설정했다',\n negative: '설정하지 않다',\n progressive: '설정하고 있다',\n future: '설정할 것이다',\n },\n show: {\n dictionary: '보이다',\n verbClass: 'native',\n stem: '보이',\n hapnida: '보입니다',\n haesseumnida: '보였습니다',\n haeyo: '보여요',\n haesseoyo: '보였어요',\n imperative: '보이세요',\n past: '보였다',\n negative: '보이지 않다',\n progressive: '보이고 있다',\n future: '보일 것이다',\n },\n hide: {\n dictionary: '숨기다',\n verbClass: 'native',\n stem: '숨기',\n hapnida: '숨깁니다',\n haesseumnida: '숨겼습니다',\n haeyo: '숨겨요',\n haesseoyo: '숨겼어요',\n imperative: '숨기세요',\n past: '숨겼다',\n negative: '숨기지 않다',\n progressive: '숨기고 있다',\n future: '숨길 것이다',\n },\n get: {\n dictionary: '얻다',\n verbClass: 'native',\n stem: '얻',\n hapnida: '얻습니다',\n haesseumnida: '얻었습니다',\n haeyo: '얻어요',\n haesseoyo: '얻었어요',\n imperative: '얻으세요',\n past: '얻었다',\n negative: '얻지 않다',\n progressive: '얻고 있다',\n future: '얻을 것이다',\n },\n wait: {\n dictionary: '대기하다',\n verbClass: 'hada',\n stem: '대기하',\n hapnida: '대기합니다',\n haesseumnida: '대기했습니다',\n haeyo: '대기해요',\n haesseoyo: '대기했어요',\n imperative: '대기하세요',\n past: '대기했다',\n negative: '대기하지 않다',\n progressive: '대기하고 있다',\n future: '대기할 것이다',\n },\n fetch: {\n dictionary: '패치하다',\n verbClass: 'hada',\n stem: '패치하',\n hapnida: '패치합니다',\n haesseumnida: '패치했습니다',\n haeyo: '패치해요',\n haesseoyo: '패치했어요',\n imperative: '패치하세요',\n past: '패치했다',\n negative: '패치하지 않다',\n progressive: '패치하고 있다',\n future: '패치할 것이다',\n },\n send: {\n dictionary: '보내다',\n verbClass: 'native',\n stem: '보내',\n hapnida: '보냅니다',\n haesseumnida: '보냈습니다',\n haeyo: '보내요',\n haesseoyo: '보냈어요',\n imperative: '보내세요',\n past: '보냈다',\n negative: '보내지 않다',\n progressive: '보내고 있다',\n future: '보낼 것이다',\n },\n go: {\n dictionary: '이동하다',\n verbClass: 'hada',\n stem: '이동하',\n hapnida: '이동합니다',\n haesseumnida: '이동했습니다',\n haeyo: '이동해요',\n haesseoyo: '이동했어요',\n imperative: '이동하세요',\n past: '이동했다',\n negative: '이동하지 않다',\n progressive: '이동하고 있다',\n future: '이동할 것이다',\n },\n increment: {\n dictionary: '증가하다',\n verbClass: 'hada',\n stem: '증가하',\n hapnida: '증가합니다',\n haesseumnida: '증가했습니다',\n haeyo: '증가해요',\n haesseoyo: '증가했어요',\n imperative: '증가하세요',\n past: '증가했다',\n negative: '증가하지 않다',\n progressive: '증가하고 있다',\n future: '증가할 것이다',\n },\n decrement: {\n dictionary: '감소하다',\n verbClass: 'hada',\n stem: '감소하',\n hapnida: '감소합니다',\n haesseumnida: '감소했습니다',\n haeyo: '감소해요',\n haesseoyo: '감소했어요',\n imperative: '감소하세요',\n past: '감소했다',\n negative: '감소하지 않다',\n progressive: '감소하고 있다',\n future: '감소할 것이다',\n },\n take: {\n dictionary: '가져오다',\n verbClass: 'native',\n stem: '가져오',\n hapnida: '가져옵니다',\n haesseumnida: '가져왔습니다',\n haeyo: '가져와요',\n haesseoyo: '가져왔어요',\n imperative: '가져오세요',\n past: '가져왔다',\n negative: '가져오지 않다',\n progressive: '가져오고 있다',\n future: '가져올 것이다',\n },\n },\n frames: {\n code: 'ko',\n wordOrder: 'SOV',\n frames: [\n {\n function: 'commanding',\n template: '{target} {patient} {verb.imperative}',\n verbForm: 'imperative',\n example: '#button에 .active를 추가하세요',\n },\n {\n function: 'describing',\n template: '{subject}은 {target} {patient} {verb.hapnida}',\n verbForm: 'hapnida',\n example: '시스템은 #button에 .active를 추가합니다',\n },\n {\n function: 'narrating',\n template: '{subject}은 {target} {patient} {verb.haesseumnida}',\n verbForm: 'haesseumnida',\n example: '시스템은 #button에 .active를 추가했습니다',\n },\n {\n function: 'questioning',\n template: '{subject}은 {target} {patient} {verb.haesseumnida}?',\n verbForm: 'haesseumnida',\n example: '시스템은 #button에 .active를 추가했습니까?',\n },\n {\n function: 'negating',\n template: '{subject}은 {target} {patient} {verb.negative}',\n verbForm: 'negative',\n example: '시스템은 #button에 .active를 추가하지 않다',\n },\n {\n function: 'planning',\n template: '{target} {patient} {verb.future}',\n verbForm: 'future',\n example: '#button에 .active를 추가할 것이다',\n },\n {\n function: 'progressing',\n template: '{target} {patient} {verb.progressive}',\n verbForm: 'progressive',\n example: '#button에 .active를 추가하고 있다',\n },\n ],\n },\n defaultSubject: '시스템',\n};\n","import type { LearnLanguageProfile } from '../types';\n\nexport const frProfile: LearnLanguageProfile = {\n patternProfile: {\n code: 'fr',\n wordOrder: 'SVO',\n keywords: {\n add: { primary: 'ajouter', alternatives: ['ajoute'] },\n remove: { primary: 'retirer', alternatives: ['retire'] },\n toggle: { primary: 'basculer', alternatives: ['bascule'] },\n put: { primary: 'mettre', alternatives: ['mets'] },\n set: { primary: 'définir', alternatives: ['définis'] },\n show: { primary: 'montrer', alternatives: ['montre'] },\n hide: { primary: 'cacher', alternatives: ['cache'] },\n get: { primary: 'obtenir', alternatives: ['obtiens'] },\n wait: { primary: 'attendre', alternatives: ['attends'] },\n fetch: { primary: 'récupérer', alternatives: ['récupère'] },\n send: { primary: 'envoyer', alternatives: ['envoie'] },\n go: { primary: 'aller', alternatives: ['va'] },\n increment: { primary: 'incrémenter', alternatives: ['incrémente'] },\n decrement: { primary: 'décrémenter', alternatives: ['décrémente'] },\n take: { primary: 'prendre', alternatives: ['prends'] },\n },\n },\n morphologyTable: {\n add: {\n infinitive: 'ajouter',\n imperative: {\n tu: 'ajoute',\n vous: 'ajoutez',\n },\n present: {\n je: \"j'ajoute\",\n tu: 'ajoutes',\n il: 'ajoute',\n nous: 'ajoutons',\n vous: 'ajoutez',\n ils: 'ajoutent',\n },\n passeCompose: {\n il: 'a ajouté',\n je: 'ai ajouté',\n },\n imparfait: {\n il: 'ajoutait',\n },\n futur: {\n il: 'ajoutera',\n },\n gerondif: 'en ajoutant',\n },\n remove: {\n infinitive: 'retirer',\n imperative: {\n tu: 'retire',\n vous: 'retirez',\n },\n present: {\n je: 'je retire',\n tu: 'retires',\n il: 'retire',\n nous: 'retirons',\n vous: 'retirez',\n ils: 'retirent',\n },\n passeCompose: {\n il: 'a retiré',\n je: 'ai retiré',\n },\n imparfait: {\n il: 'retirait',\n },\n futur: {\n il: 'retirera',\n },\n gerondif: 'en retirant',\n },\n toggle: {\n infinitive: 'basculer',\n imperative: {\n tu: 'bascule',\n vous: 'basculez',\n },\n present: {\n je: 'je bascule',\n tu: 'bascules',\n il: 'bascule',\n nous: 'basculons',\n vous: 'basculez',\n ils: 'basculent',\n },\n passeCompose: {\n il: 'a basculé',\n je: 'ai basculé',\n },\n imparfait: {\n il: 'basculait',\n },\n futur: {\n il: 'basculera',\n },\n gerondif: 'en basculant',\n },\n put: {\n infinitive: 'mettre',\n imperative: {\n tu: 'mets',\n vous: 'mettez',\n },\n present: {\n je: 'je mets',\n tu: 'mets',\n il: 'met',\n nous: 'mettons',\n vous: 'mettez',\n ils: 'mettent',\n },\n passeCompose: {\n il: 'a mis',\n je: 'ai mis',\n },\n imparfait: {\n il: 'mettait',\n },\n futur: {\n il: 'mettra',\n },\n gerondif: 'en mettant',\n },\n set: {\n infinitive: 'définir',\n imperative: {\n tu: 'définis',\n vous: 'définissez',\n },\n present: {\n je: 'je définis',\n tu: 'définis',\n il: 'définit',\n nous: 'définissons',\n vous: 'définissez',\n ils: 'définissent',\n },\n passeCompose: {\n il: 'a défini',\n je: 'ai défini',\n },\n imparfait: {\n il: 'définissait',\n },\n futur: {\n il: 'définira',\n },\n gerondif: 'en définissant',\n },\n show: {\n infinitive: 'montrer',\n imperative: {\n tu: 'montre',\n vous: 'montrez',\n },\n present: {\n je: 'je montre',\n tu: 'montres',\n il: 'montre',\n nous: 'montrons',\n vous: 'montrez',\n ils: 'montrent',\n },\n passeCompose: {\n il: 'a montré',\n je: 'ai montré',\n },\n imparfait: {\n il: 'montrait',\n },\n futur: {\n il: 'montrera',\n },\n gerondif: 'en montrant',\n },\n hide: {\n infinitive: 'cacher',\n imperative: {\n tu: 'cache',\n vous: 'cachez',\n },\n present: {\n je: 'je cache',\n tu: 'caches',\n il: 'cache',\n nous: 'cachons',\n vous: 'cachez',\n ils: 'cachent',\n },\n passeCompose: {\n il: 'a caché',\n je: 'ai caché',\n },\n imparfait: {\n il: 'cachait',\n },\n futur: {\n il: 'cachera',\n },\n gerondif: 'en cachant',\n },\n get: {\n infinitive: 'obtenir',\n imperative: {\n tu: 'obtiens',\n vous: 'obtenez',\n },\n present: {\n je: \"j'obtiens\",\n tu: 'obtiens',\n il: 'obtient',\n nous: 'obtenons',\n vous: 'obtenez',\n ils: 'obtiennent',\n },\n passeCompose: {\n il: 'a obtenu',\n je: 'ai obtenu',\n },\n imparfait: {\n il: 'obtenait',\n },\n futur: {\n il: 'obtiendra',\n },\n gerondif: 'en obtenant',\n },\n wait: {\n infinitive: 'attendre',\n imperative: {\n tu: 'attends',\n vous: 'attendez',\n },\n present: {\n je: \"j'attends\",\n tu: 'attends',\n il: 'attend',\n nous: 'attendons',\n vous: 'attendez',\n ils: 'attendent',\n },\n passeCompose: {\n il: 'a attendu',\n je: 'ai attendu',\n },\n imparfait: {\n il: 'attendait',\n },\n futur: {\n il: 'attendra',\n },\n gerondif: 'en attendant',\n },\n fetch: {\n infinitive: 'récupérer',\n imperative: {\n tu: 'récupère',\n vous: 'récupérez',\n },\n present: {\n je: 'je récupère',\n tu: 'récupères',\n il: 'récupère',\n nous: 'récupérons',\n vous: 'récupérez',\n ils: 'récupèrent',\n },\n passeCompose: {\n il: 'a récupéré',\n je: 'ai récupéré',\n },\n imparfait: {\n il: 'récupérait',\n },\n futur: {\n il: 'récupérera',\n },\n gerondif: 'en récupérant',\n },\n send: {\n infinitive: 'envoyer',\n imperative: {\n tu: 'envoie',\n vous: 'envoyez',\n },\n present: {\n je: \"j'envoie\",\n tu: 'envoies',\n il: 'envoie',\n nous: 'envoyons',\n vous: 'envoyez',\n ils: 'envoient',\n },\n passeCompose: {\n il: 'a envoyé',\n je: 'ai envoyé',\n },\n imparfait: {\n il: 'envoyait',\n },\n futur: {\n il: 'enverra',\n },\n gerondif: 'en envoyant',\n },\n go: {\n infinitive: 'aller',\n imperative: {\n tu: 'va',\n vous: 'allez',\n },\n present: {\n je: 'je vais',\n tu: 'vas',\n il: 'va',\n nous: 'allons',\n vous: 'allez',\n ils: 'vont',\n },\n passeCompose: {\n il: 'est allé',\n je: 'suis allé',\n },\n imparfait: {\n il: 'allait',\n },\n futur: {\n il: 'ira',\n },\n gerondif: 'en allant',\n },\n increment: {\n infinitive: 'incrémenter',\n imperative: {\n tu: 'incrémente',\n vous: 'incrémentez',\n },\n present: {\n je: \"j'incrémente\",\n tu: 'incrémentes',\n il: 'incrémente',\n nous: 'incrémentons',\n vous: 'incrémentez',\n ils: 'incrémentent',\n },\n passeCompose: {\n il: 'a incrémenté',\n je: 'ai incrémenté',\n },\n imparfait: {\n il: 'incrémentait',\n },\n futur: {\n il: 'incrémentera',\n },\n gerondif: 'en incrémentant',\n },\n decrement: {\n infinitive: 'décrémenter',\n imperative: {\n tu: 'décrémente',\n vous: 'décrémentez',\n },\n present: {\n je: 'je décrémente',\n tu: 'décrémentes',\n il: 'décrémente',\n nous: 'décrémentons',\n vous: 'décrémentez',\n ils: 'décrémentent',\n },\n passeCompose: {\n il: 'a décrémenté',\n je: 'ai décrémenté',\n },\n imparfait: {\n il: 'décrémentait',\n },\n futur: {\n il: 'décrémentera',\n },\n gerondif: 'en décrémentant',\n },\n take: {\n infinitive: 'prendre',\n imperative: {\n tu: 'prends',\n vous: 'prenez',\n },\n present: {\n je: 'je prends',\n tu: 'prends',\n il: 'prend',\n nous: 'prenons',\n vous: 'prenez',\n ils: 'prennent',\n },\n passeCompose: {\n il: 'a pris',\n je: 'ai pris',\n },\n imparfait: {\n il: 'prenait',\n },\n futur: {\n il: 'prendra',\n },\n gerondif: 'en prenant',\n },\n },\n frames: {\n code: 'fr',\n wordOrder: 'SVO',\n frames: [\n {\n function: 'commanding',\n template: '{verb.imperative.tu} {patient} {target}',\n verbForm: 'imperative.tu',\n example: 'ajoute .active à #button',\n },\n {\n function: 'describing',\n template: '{subject} {verb.present.il} {patient} {target}',\n verbForm: 'present.il',\n example: 'le système ajoute .active à #button',\n },\n {\n function: 'narrating',\n template: '{subject} {verb.passeCompose.il} {patient} {target}',\n verbForm: 'passeCompose.il',\n example: 'le système a ajouté .active à #button',\n },\n {\n function: 'questioning',\n template: 'est-ce que {subject} {verb.present.il} {patient} {target} ?',\n verbForm: 'present.il',\n example: 'est-ce que le système ajoute .active à #button ?',\n },\n {\n function: 'negating',\n template: '{subject} ne {verb.present.il} pas {patient} {target}',\n verbForm: 'present.il',\n example: 'le système ne ajoute pas .active à #button',\n },\n {\n function: 'planning',\n template: '{subject} {verb.futur.il} {patient} {target}',\n verbForm: 'futur.il',\n example: 'le système ajoutera .active à #button',\n },\n {\n function: 'progressing',\n template: '{subject} est en train de {verb.infinitive} {patient} {target}',\n verbForm: 'infinitive',\n example: 'le système est en train de ajouter .active à #button',\n },\n ],\n },\n defaultSubject: 'le système',\n};\n","import type { LearnLanguageProfile } from '../types';\n\nexport const trProfile: LearnLanguageProfile = {\n patternProfile: {\n code: 'tr',\n wordOrder: 'SOV',\n keywords: {\n add: { primary: 'ekle', alternatives: ['eklemek'] },\n remove: { primary: 'kaldir', alternatives: ['kaldirmak'] },\n toggle: { primary: 'degistir', alternatives: ['degistirmek'] },\n put: { primary: 'koy', alternatives: ['koymak'] },\n set: { primary: 'ayarla', alternatives: ['ayarlamak'] },\n show: { primary: 'goster', alternatives: ['gostermek'] },\n hide: { primary: 'gizle', alternatives: ['gizlemek'] },\n get: { primary: 'al', alternatives: ['almak'] },\n wait: { primary: 'bekle', alternatives: ['beklemek'] },\n fetch: { primary: 'getir', alternatives: ['getirmek'] },\n send: { primary: 'gonder', alternatives: ['gondermek'] },\n go: { primary: 'git', alternatives: ['gitmek'] },\n increment: { primary: 'artir', alternatives: ['artirmak'] },\n decrement: { primary: 'azalt', alternatives: ['azaltmak'] },\n take: { primary: 'al', alternatives: ['almak'] },\n },\n },\n morphologyTable: {\n add: {\n dictionary: 'eklemek',\n imperative: {\n sen: 'ekle',\n siz: 'ekleyin',\n },\n present: {\n ben: 'ekliyorum',\n sen: 'ekliyorsun',\n o: 'ekler',\n biz: 'ekliyoruz',\n siz: 'ekliyorsunuz',\n onlar: 'ekliyorlar',\n },\n past: {\n o: 'ekledi',\n ben: 'ekledim',\n },\n future: {\n o: 'ekleyecek',\n },\n negative: {\n o: 'eklemez',\n },\n progressive: {\n o: 'ekliyor',\n },\n gerund: 'ekleyerek',\n },\n remove: {\n dictionary: 'kaldirmak',\n imperative: {\n sen: 'kaldir',\n siz: 'kaldirin',\n },\n present: {\n ben: 'kaldiriyorum',\n sen: 'kaldiriyorsun',\n o: 'kaldirir',\n biz: 'kaldiriyoruz',\n siz: 'kaldiriyorsunuz',\n onlar: 'kaldiriyorlar',\n },\n past: {\n o: 'kaldirdi',\n ben: 'kaldirdim',\n },\n future: {\n o: 'kaldiracak',\n },\n negative: {\n o: 'kaldirmaz',\n },\n progressive: {\n o: 'kaldiriyor',\n },\n gerund: 'kaldirarak',\n },\n toggle: {\n dictionary: 'degistirmek',\n imperative: {\n sen: 'degistir',\n siz: 'degistirin',\n },\n present: {\n ben: 'degistiriyorum',\n sen: 'degistiriyorsun',\n o: 'degistirir',\n biz: 'degistiriyoruz',\n siz: 'degistiriyorsunuz',\n onlar: 'degistiriyorlar',\n },\n past: {\n o: 'degistirdi',\n ben: 'degistirdim',\n },\n future: {\n o: 'degistirecek',\n },\n negative: {\n o: 'degistirmez',\n },\n progressive: {\n o: 'degistiriyor',\n },\n gerund: 'degistirerek',\n },\n put: {\n dictionary: 'koymak',\n imperative: {\n sen: 'koy',\n siz: 'koyun',\n },\n present: {\n ben: 'koyuyorum',\n sen: 'koyuyorsun',\n o: 'koyar',\n biz: 'koyuyoruz',\n siz: 'koyuyorsunuz',\n onlar: 'koyuyorlar',\n },\n past: {\n o: 'koydu',\n ben: 'koydum',\n },\n future: {\n o: 'koyacak',\n },\n negative: {\n o: 'koymaz',\n },\n progressive: {\n o: 'koyuyor',\n },\n gerund: 'koyarak',\n },\n set: {\n dictionary: 'ayarlamak',\n imperative: {\n sen: 'ayarla',\n siz: 'ayarlayin',\n },\n present: {\n ben: 'ayarliyorum',\n sen: 'ayarliyorsun',\n o: 'ayarlar',\n biz: 'ayarliyoruz',\n siz: 'ayarliyorsunuz',\n onlar: 'ayarliyorlar',\n },\n past: {\n o: 'ayarladi',\n ben: 'ayarladim',\n },\n future: {\n o: 'ayarlayacak',\n },\n negative: {\n o: 'ayarlamaz',\n },\n progressive: {\n o: 'ayarliyor',\n },\n gerund: 'ayarlayarak',\n },\n show: {\n dictionary: 'gostermek',\n imperative: {\n sen: 'goster',\n siz: 'gosterin',\n },\n present: {\n ben: 'gosteriyorum',\n sen: 'gosteriyorsun',\n o: 'gosterir',\n biz: 'gosteriyoruz',\n siz: 'gosteriyorsunuz',\n onlar: 'gosteriyorlar',\n },\n past: {\n o: 'gosterdi',\n ben: 'gosterdim',\n },\n future: {\n o: 'gosterecek',\n },\n negative: {\n o: 'gostermez',\n },\n progressive: {\n o: 'gosteriyor',\n },\n gerund: 'gostererek',\n },\n hide: {\n dictionary: 'gizlemek',\n imperative: {\n sen: 'gizle',\n siz: 'gizleyin',\n },\n present: {\n ben: 'gizliyorum',\n sen: 'gizliyorsun',\n o: 'gizler',\n biz: 'gizliyoruz',\n siz: 'gizliyorsunuz',\n onlar: 'gizliyorlar',\n },\n past: {\n o: 'gizledi',\n ben: 'gizledim',\n },\n future: {\n o: 'gizleyecek',\n },\n negative: {\n o: 'gizlemez',\n },\n progressive: {\n o: 'gizliyor',\n },\n gerund: 'gizleyerek',\n },\n get: {\n dictionary: 'almak',\n imperative: {\n sen: 'al',\n siz: 'alin',\n },\n present: {\n ben: 'aliyorum',\n sen: 'aliyorsun',\n o: 'alir',\n biz: 'aliyoruz',\n siz: 'aliyorsunuz',\n onlar: 'aliyorlar',\n },\n past: {\n o: 'aldi',\n ben: 'aldim',\n },\n future: {\n o: 'alacak',\n },\n negative: {\n o: 'almaz',\n },\n progressive: {\n o: 'aliyor',\n },\n gerund: 'alarak',\n },\n wait: {\n dictionary: 'beklemek',\n imperative: {\n sen: 'bekle',\n siz: 'bekleyin',\n },\n present: {\n ben: 'bekliyorum',\n sen: 'bekliyorsun',\n o: 'bekler',\n biz: 'bekliyoruz',\n siz: 'bekliyorsunuz',\n onlar: 'bekliyorlar',\n },\n past: {\n o: 'bekledi',\n ben: 'bekledim',\n },\n future: {\n o: 'bekleyecek',\n },\n negative: {\n o: 'beklemez',\n },\n progressive: {\n o: 'bekliyor',\n },\n gerund: 'bekleyerek',\n },\n fetch: {\n dictionary: 'getirmek',\n imperative: {\n sen: 'getir',\n siz: 'getirin',\n },\n present: {\n ben: 'getiriyorum',\n sen: 'getiriyorsun',\n o: 'getirir',\n biz: 'getiriyoruz',\n siz: 'getiriyorsunuz',\n onlar: 'getiriyorlar',\n },\n past: {\n o: 'getirdi',\n ben: 'getirdim',\n },\n future: {\n o: 'getirecek',\n },\n negative: {\n o: 'getirmez',\n },\n progressive: {\n o: 'getiriyor',\n },\n gerund: 'getirerek',\n },\n send: {\n dictionary: 'gondermek',\n imperative: {\n sen: 'gonder',\n siz: 'gonderin',\n },\n present: {\n ben: 'gonderiyorum',\n sen: 'gonderiyorsun',\n o: 'gonderir',\n biz: 'gonderiyoruz',\n siz: 'gonderiyorsunuz',\n onlar: 'gonderiyorlar',\n },\n past: {\n o: 'gonderdi',\n ben: 'gonderdim',\n },\n future: {\n o: 'gonderecek',\n },\n negative: {\n o: 'gondermez',\n },\n progressive: {\n o: 'gonderiyor',\n },\n gerund: 'gondererek',\n },\n go: {\n dictionary: 'gitmek',\n imperative: {\n sen: 'git',\n siz: 'gidin',\n },\n present: {\n ben: 'gidiyorum',\n sen: 'gidiyorsun',\n o: 'gider',\n biz: 'gidiyoruz',\n siz: 'gidiyorsunuz',\n onlar: 'gidiyorlar',\n },\n past: {\n o: 'gitti',\n ben: 'gittim',\n },\n future: {\n o: 'gidecek',\n },\n negative: {\n o: 'gitmez',\n },\n progressive: {\n o: 'gidiyor',\n },\n gerund: 'giderek',\n },\n increment: {\n dictionary: 'artirmak',\n imperative: {\n sen: 'artir',\n siz: 'artirin',\n },\n present: {\n ben: 'artiriyorum',\n sen: 'artiriyorsun',\n o: 'artirir',\n biz: 'artiriyoruz',\n siz: 'artiriyorsunuz',\n onlar: 'artiriyorlar',\n },\n past: {\n o: 'artirdi',\n ben: 'artirdim',\n },\n future: {\n o: 'artiracak',\n },\n negative: {\n o: 'artirmaz',\n },\n progressive: {\n o: 'artiriyor',\n },\n gerund: 'artirarak',\n },\n decrement: {\n dictionary: 'azaltmak',\n imperative: {\n sen: 'azalt',\n siz: 'azaltin',\n },\n present: {\n ben: 'azaltiyorum',\n sen: 'azaltiyorsun',\n o: 'azaltir',\n biz: 'azaltiyoruz',\n siz: 'azaltiyorsunuz',\n onlar: 'azaltiyorlar',\n },\n past: {\n o: 'azaltti',\n ben: 'azalttim',\n },\n future: {\n o: 'azaltacak',\n },\n negative: {\n o: 'azaltmaz',\n },\n progressive: {\n o: 'azaltiyor',\n },\n gerund: 'azaltarak',\n },\n take: {\n dictionary: 'almak',\n imperative: {\n sen: 'al',\n siz: 'alin',\n },\n present: {\n ben: 'aliyorum',\n sen: 'aliyorsun',\n o: 'alir',\n biz: 'aliyoruz',\n siz: 'aliyorsunuz',\n onlar: 'aliyorlar',\n },\n past: {\n o: 'aldi',\n ben: 'aldim',\n },\n future: {\n o: 'alacak',\n },\n negative: {\n o: 'almaz',\n },\n progressive: {\n o: 'aliyor',\n },\n gerund: 'alarak',\n },\n },\n frames: {\n code: 'tr',\n wordOrder: 'SOV',\n frames: [\n {\n function: 'commanding',\n template: '{target} {patient} {verb.imperative.sen}',\n verbForm: 'imperative.sen',\n example: \"#button'a .active ekle\",\n },\n {\n function: 'describing',\n template: '{subject} {target} {patient} {verb.present.o}',\n verbForm: 'present.o',\n example: \"Sistem #button'a .active ekler\",\n },\n {\n function: 'narrating',\n template: '{subject} {target} {patient} {verb.past.o}',\n verbForm: 'past.o',\n example: \"Sistem #button'a .active ekledi\",\n },\n {\n function: 'questioning',\n template: '{subject} {target} {patient} {verb.present.o} mi?',\n verbForm: 'present.o',\n example: \"Sistem #button'a .active ekler mi?\",\n },\n {\n function: 'negating',\n template: '{subject} {target} {patient} {verb.negative.o}',\n verbForm: 'negative.o',\n example: \"Sistem #button'a .active eklemez\",\n },\n {\n function: 'planning',\n template: '{subject} {target} {patient} {verb.future.o}',\n verbForm: 'future.o',\n example: \"Sistem #button'a .active ekleyecek\",\n },\n {\n function: 'progressing',\n template: '{subject} {target} {patient} {verb.progressive.o}',\n verbForm: 'progressive.o',\n example: \"Sistem #button'a .active ekliyor\",\n },\n ],\n },\n defaultSubject: 'Sistem',\n};\n","import type { LearnLanguageProfile } from '../types';\n\nexport const deProfile: LearnLanguageProfile = {\n patternProfile: {\n code: 'de',\n wordOrder: 'SVO',\n keywords: {\n add: { primary: 'hinzufügen' },\n remove: { primary: 'entfernen' },\n toggle: { primary: 'umschalten' },\n put: { primary: 'setzen' },\n set: { primary: 'festlegen' },\n show: { primary: 'anzeigen' },\n hide: { primary: 'verbergen' },\n get: { primary: 'abrufen' },\n wait: { primary: 'warten' },\n fetch: { primary: 'abrufen' },\n send: { primary: 'senden' },\n go: { primary: 'gehen' },\n increment: { primary: 'erhöhen' },\n decrement: { primary: 'verringern' },\n take: { primary: 'nehmen' },\n },\n },\n morphologyTable: {\n add: {\n infinitive: 'hinzufügen',\n separablePrefix: 'hinzu',\n imperative: {\n du: 'füge hinzu',\n Sie: 'fügen Sie hinzu',\n },\n present: {\n ich: 'füge hinzu',\n du: 'fügst hinzu',\n er: 'fügt hinzu',\n wir: 'fügen hinzu',\n ihr: 'fügt hinzu',\n sie: 'fügen hinzu',\n },\n past: {\n ich: 'fügte hinzu',\n er: 'fügte hinzu',\n },\n perfect: {\n er: 'hat hinzugefügt',\n },\n future: {\n er: 'wird hinzufügen',\n },\n presentParticiple: 'hinzufügend',\n },\n remove: {\n infinitive: 'entfernen',\n separablePrefix: '',\n imperative: {\n du: 'entferne',\n Sie: 'entfernen Sie',\n },\n present: {\n ich: 'entferne',\n du: 'entfernst',\n er: 'entfernt',\n wir: 'entfernen',\n ihr: 'entfernt',\n sie: 'entfernen',\n },\n past: {\n ich: 'entfernte',\n er: 'entfernte',\n },\n perfect: {\n er: 'hat entfernt',\n },\n future: {\n er: 'wird entfernen',\n },\n presentParticiple: 'entfernend',\n },\n toggle: {\n infinitive: 'umschalten',\n separablePrefix: 'um',\n imperative: {\n du: 'schalte um',\n Sie: 'schalten Sie um',\n },\n present: {\n ich: 'schalte um',\n du: 'schaltest um',\n er: 'schaltet um',\n wir: 'schalten um',\n ihr: 'schaltet um',\n sie: 'schalten um',\n },\n past: {\n ich: 'schaltete um',\n er: 'schaltete um',\n },\n perfect: {\n er: 'hat umgeschaltet',\n },\n future: {\n er: 'wird umschalten',\n },\n presentParticiple: 'umschaltend',\n },\n put: {\n infinitive: 'setzen',\n separablePrefix: '',\n imperative: {\n du: 'setze',\n Sie: 'setzen Sie',\n },\n present: {\n ich: 'setze',\n du: 'setzt',\n er: 'setzt',\n wir: 'setzen',\n ihr: 'setzt',\n sie: 'setzen',\n },\n past: {\n ich: 'setzte',\n er: 'setzte',\n },\n perfect: {\n er: 'hat gesetzt',\n },\n future: {\n er: 'wird setzen',\n },\n presentParticiple: 'setzend',\n },\n set: {\n infinitive: 'festlegen',\n separablePrefix: 'fest',\n imperative: {\n du: 'lege fest',\n Sie: 'legen Sie fest',\n },\n present: {\n ich: 'lege fest',\n du: 'legst fest',\n er: 'legt fest',\n wir: 'legen fest',\n ihr: 'legt fest',\n sie: 'legen fest',\n },\n past: {\n ich: 'legte fest',\n er: 'legte fest',\n },\n perfect: {\n er: 'hat festgelegt',\n },\n future: {\n er: 'wird festlegen',\n },\n presentParticiple: 'festlegend',\n },\n show: {\n infinitive: 'anzeigen',\n separablePrefix: 'an',\n imperative: {\n du: 'zeige an',\n Sie: 'zeigen Sie an',\n },\n present: {\n ich: 'zeige an',\n du: 'zeigst an',\n er: 'zeigt an',\n wir: 'zeigen an',\n ihr: 'zeigt an',\n sie: 'zeigen an',\n },\n past: {\n ich: 'zeigte an',\n er: 'zeigte an',\n },\n perfect: {\n er: 'hat angezeigt',\n },\n future: {\n er: 'wird anzeigen',\n },\n presentParticiple: 'anzeigend',\n },\n hide: {\n infinitive: 'verbergen',\n separablePrefix: '',\n imperative: {\n du: 'verbirg',\n Sie: 'verbergen Sie',\n },\n present: {\n ich: 'verberge',\n du: 'verbirgst',\n er: 'verbirgt',\n wir: 'verbergen',\n ihr: 'verbergt',\n sie: 'verbergen',\n },\n past: {\n ich: 'verbarg',\n er: 'verbarg',\n },\n perfect: {\n er: 'hat verborgen',\n },\n future: {\n er: 'wird verbergen',\n },\n presentParticiple: 'verbergend',\n },\n get: {\n infinitive: 'abrufen',\n separablePrefix: 'ab',\n imperative: {\n du: 'rufe ab',\n Sie: 'rufen Sie ab',\n },\n present: {\n ich: 'rufe ab',\n du: 'rufst ab',\n er: 'ruft ab',\n wir: 'rufen ab',\n ihr: 'ruft ab',\n sie: 'rufen ab',\n },\n past: {\n ich: 'rief ab',\n er: 'rief ab',\n },\n perfect: {\n er: 'hat abgerufen',\n },\n future: {\n er: 'wird abrufen',\n },\n presentParticiple: 'abrufend',\n },\n wait: {\n infinitive: 'warten',\n separablePrefix: '',\n imperative: {\n du: 'warte',\n Sie: 'warten Sie',\n },\n present: {\n ich: 'warte',\n du: 'wartest',\n er: 'wartet',\n wir: 'warten',\n ihr: 'wartet',\n sie: 'warten',\n },\n past: {\n ich: 'wartete',\n er: 'wartete',\n },\n perfect: {\n er: 'hat gewartet',\n },\n future: {\n er: 'wird warten',\n },\n presentParticiple: 'wartend',\n },\n fetch: {\n infinitive: 'abrufen',\n separablePrefix: 'ab',\n imperative: {\n du: 'rufe ab',\n Sie: 'rufen Sie ab',\n },\n present: {\n ich: 'rufe ab',\n du: 'rufst ab',\n er: 'ruft ab',\n wir: 'rufen ab',\n ihr: 'ruft ab',\n sie: 'rufen ab',\n },\n past: {\n ich: 'rief ab',\n er: 'rief ab',\n },\n perfect: {\n er: 'hat abgerufen',\n },\n future: {\n er: 'wird abrufen',\n },\n presentParticiple: 'abrufend',\n },\n send: {\n infinitive: 'senden',\n separablePrefix: '',\n imperative: {\n du: 'sende',\n Sie: 'senden Sie',\n },\n present: {\n ich: 'sende',\n du: 'sendest',\n er: 'sendet',\n wir: 'senden',\n ihr: 'sendet',\n sie: 'senden',\n },\n past: {\n ich: 'sendete',\n er: 'sendete',\n },\n perfect: {\n er: 'hat gesendet',\n },\n future: {\n er: 'wird senden',\n },\n presentParticiple: 'sendend',\n },\n go: {\n infinitive: 'gehen',\n separablePrefix: '',\n imperative: {\n du: 'geh',\n Sie: 'gehen Sie',\n },\n present: {\n ich: 'gehe',\n du: 'gehst',\n er: 'geht',\n wir: 'gehen',\n ihr: 'geht',\n sie: 'gehen',\n },\n past: {\n ich: 'ging',\n er: 'ging',\n },\n perfect: {\n er: 'ist gegangen',\n },\n future: {\n er: 'wird gehen',\n },\n presentParticiple: 'gehend',\n },\n increment: {\n infinitive: 'erhöhen',\n separablePrefix: '',\n imperative: {\n du: 'erhöhe',\n Sie: 'erhöhen Sie',\n },\n present: {\n ich: 'erhöhe',\n du: 'erhöhst',\n er: 'erhöht',\n wir: 'erhöhen',\n ihr: 'erhöht',\n sie: 'erhöhen',\n },\n past: {\n ich: 'erhöhte',\n er: 'erhöhte',\n },\n perfect: {\n er: 'hat erhöht',\n },\n future: {\n er: 'wird erhöhen',\n },\n presentParticiple: 'erhöhend',\n },\n decrement: {\n infinitive: 'verringern',\n separablePrefix: '',\n imperative: {\n du: 'verringere',\n Sie: 'verringern Sie',\n },\n present: {\n ich: 'verringere',\n du: 'verringerst',\n er: 'verringert',\n wir: 'verringern',\n ihr: 'verringert',\n sie: 'verringern',\n },\n past: {\n ich: 'verringerte',\n er: 'verringerte',\n },\n perfect: {\n er: 'hat verringert',\n },\n future: {\n er: 'wird verringern',\n },\n presentParticiple: 'verringernd',\n },\n take: {\n infinitive: 'nehmen',\n separablePrefix: '',\n imperative: {\n du: 'nimm',\n Sie: 'nehmen Sie',\n },\n present: {\n ich: 'nehme',\n du: 'nimmst',\n er: 'nimmt',\n wir: 'nehmen',\n ihr: 'nehmt',\n sie: 'nehmen',\n },\n past: {\n ich: 'nahm',\n er: 'nahm',\n },\n perfect: {\n er: 'hat genommen',\n },\n future: {\n er: 'wird nehmen',\n },\n presentParticiple: 'nehmend',\n },\n },\n frames: {\n code: 'de',\n wordOrder: 'SVO',\n frames: [\n {\n function: 'commanding',\n template: '{verb.imperative.du} {patient} {target}',\n verbForm: 'imperative.du',\n example: 'füge hinzu .active zu #button',\n },\n {\n function: 'describing',\n template: '{subject} {verb.present.er} {patient} {target}',\n verbForm: 'present.er',\n example: 'das System fügt hinzu .active zu #button',\n },\n {\n function: 'narrating',\n template: '{subject} {verb.perfect.er} {patient} {target}',\n verbForm: 'perfect.er',\n example: 'das System hat hinzugefügt .active zu #button',\n },\n {\n function: 'questioning',\n template: '{verb.present.er} {subject} {patient} {target} ?',\n verbForm: 'present.er',\n example: 'fügt hinzu das System .active zu #button ?',\n },\n {\n function: 'negating',\n template: '{subject} {verb.present.er} {patient} nicht {target}',\n verbForm: 'present.er',\n example: 'das System fügt hinzu .active nicht zu #button',\n },\n {\n function: 'planning',\n template: '{subject} {verb.future.er} {patient} {target}',\n verbForm: 'future.er',\n example: 'das System wird hinzufügen .active zu #button',\n },\n {\n function: 'progressing',\n template: '{subject} {verb.present.er} gerade {patient} {target}',\n verbForm: 'present.er',\n example: 'das System fügt hinzu gerade .active zu #button',\n },\n ],\n },\n defaultSubject: 'das System',\n};\n","import type { LearnLanguageProfile, PortugueseForms, LanguageFrames } from '../types';\n\nconst morphologyTable: Record<string, PortugueseForms> = {\n add: {\n infinitive: 'adicionar',\n imperative: {\n voce: 'adicione',\n voces: 'adicionem',\n },\n present: {\n eu: 'eu adiciono',\n voce: 'adiciona',\n ele: 'adiciona',\n nos: 'adicionamos',\n voces: 'adicionam',\n eles: 'adicionam',\n },\n preterite: {\n ele: 'adicionou',\n eu: 'adicionei',\n },\n imperfect: {\n ele: 'adicionava',\n },\n future: {\n ele: 'adicionará',\n },\n gerund: 'adicionando',\n },\n\n remove: {\n infinitive: 'remover',\n imperative: {\n voce: 'remova',\n voces: 'removam',\n },\n present: {\n eu: 'eu removo',\n voce: 'remove',\n ele: 'remove',\n nos: 'removemos',\n voces: 'removem',\n eles: 'removem',\n },\n preterite: {\n ele: 'removeu',\n eu: 'removi',\n },\n imperfect: {\n ele: 'removia',\n },\n future: {\n ele: 'removerá',\n },\n gerund: 'removendo',\n },\n\n toggle: {\n infinitive: 'alternar',\n imperative: {\n voce: 'alterne',\n voces: 'alternem',\n },\n present: {\n eu: 'eu alterno',\n voce: 'alterna',\n ele: 'alterna',\n nos: 'alternamos',\n voces: 'alternam',\n eles: 'alternam',\n },\n preterite: {\n ele: 'alternou',\n eu: 'alternei',\n },\n imperfect: {\n ele: 'alternava',\n },\n future: {\n ele: 'alternará',\n },\n gerund: 'alternando',\n },\n\n put: {\n infinitive: 'colocar',\n imperative: {\n voce: 'coloque',\n voces: 'coloquem',\n },\n present: {\n eu: 'eu coloco',\n voce: 'coloca',\n ele: 'coloca',\n nos: 'colocamos',\n voces: 'colocam',\n eles: 'colocam',\n },\n preterite: {\n ele: 'colocou',\n eu: 'coloquei',\n },\n imperfect: {\n ele: 'colocava',\n },\n future: {\n ele: 'colocará',\n },\n gerund: 'colocando',\n },\n\n set: {\n infinitive: 'definir',\n imperative: {\n voce: 'defina',\n voces: 'definam',\n },\n present: {\n eu: 'eu defino',\n voce: 'define',\n ele: 'define',\n nos: 'definimos',\n voces: 'definem',\n eles: 'definem',\n },\n preterite: {\n ele: 'definiu',\n eu: 'defini',\n },\n imperfect: {\n ele: 'definia',\n },\n future: {\n ele: 'definirá',\n },\n gerund: 'definindo',\n },\n\n show: {\n infinitive: 'mostrar',\n imperative: {\n voce: 'mostre',\n voces: 'mostrem',\n },\n present: {\n eu: 'eu mostro',\n voce: 'mostra',\n ele: 'mostra',\n nos: 'mostramos',\n voces: 'mostram',\n eles: 'mostram',\n },\n preterite: {\n ele: 'mostrou',\n eu: 'mostrei',\n },\n imperfect: {\n ele: 'mostrava',\n },\n future: {\n ele: 'mostrará',\n },\n gerund: 'mostrando',\n },\n\n hide: {\n infinitive: 'esconder',\n imperative: {\n voce: 'esconda',\n voces: 'escondam',\n },\n present: {\n eu: 'eu escondo',\n voce: 'esconde',\n ele: 'esconde',\n nos: 'escondemos',\n voces: 'escondem',\n eles: 'escondem',\n },\n preterite: {\n ele: 'escondeu',\n eu: 'escondi',\n },\n imperfect: {\n ele: 'escondia',\n },\n future: {\n ele: 'esconderá',\n },\n gerund: 'escondendo',\n },\n\n get: {\n infinitive: 'obter',\n imperative: {\n voce: 'obtenha',\n voces: 'obtenham',\n },\n present: {\n eu: 'eu obtenho',\n voce: 'obtém',\n ele: 'obtém',\n nos: 'obtemos',\n voces: 'obtêm',\n eles: 'obtêm',\n },\n preterite: {\n ele: 'obteve',\n eu: 'obtive',\n },\n imperfect: {\n ele: 'obtinha',\n },\n future: {\n ele: 'obterá',\n },\n gerund: 'obtendo',\n },\n\n wait: {\n infinitive: 'esperar',\n imperative: {\n voce: 'espere',\n voces: 'esperem',\n },\n present: {\n eu: 'eu espero',\n voce: 'espera',\n ele: 'espera',\n nos: 'esperamos',\n voces: 'esperam',\n eles: 'esperam',\n },\n preterite: {\n ele: 'esperou',\n eu: 'esperei',\n },\n imperfect: {\n ele: 'esperava',\n },\n future: {\n ele: 'esperará',\n },\n gerund: 'esperando',\n },\n\n fetch: {\n infinitive: 'buscar',\n imperative: {\n voce: 'busque',\n voces: 'busquem',\n },\n present: {\n eu: 'eu busco',\n voce: 'busca',\n ele: 'busca',\n nos: 'buscamos',\n voces: 'buscam',\n eles: 'buscam',\n },\n preterite: {\n ele: 'buscou',\n eu: 'busquei',\n },\n imperfect: {\n ele: 'buscava',\n },\n future: {\n ele: 'buscará',\n },\n gerund: 'buscando',\n },\n\n send: {\n infinitive: 'enviar',\n imperative: {\n voce: 'envie',\n voces: 'enviem',\n },\n present: {\n eu: 'eu envio',\n voce: 'envia',\n ele: 'envia',\n nos: 'enviamos',\n voces: 'enviam',\n eles: 'enviam',\n },\n preterite: {\n ele: 'enviou',\n eu: 'enviei',\n },\n imperfect: {\n ele: 'enviava',\n },\n future: {\n ele: 'enviará',\n },\n gerund: 'enviando',\n },\n\n go: {\n infinitive: 'ir',\n imperative: {\n voce: 'vá',\n voces: 'vão',\n },\n present: {\n eu: 'eu vou',\n voce: 'vai',\n ele: 'vai',\n nos: 'vamos',\n voces: 'vão',\n eles: 'vão',\n },\n preterite: {\n ele: 'foi',\n eu: 'fui',\n },\n imperfect: {\n ele: 'ia',\n },\n future: {\n ele: 'irá',\n },\n gerund: 'indo',\n },\n\n increment: {\n infinitive: 'incrementar',\n imperative: {\n voce: 'incremente',\n voces: 'incrementem',\n },\n present: {\n eu: 'eu incremento',\n voce: 'incrementa',\n ele: 'incrementa',\n nos: 'incrementamos',\n voces: 'incrementam',\n eles: 'incrementam',\n },\n preterite: {\n ele: 'incrementou',\n eu: 'incrementei',\n },\n imperfect: {\n ele: 'incrementava',\n },\n future: {\n ele: 'incrementará',\n },\n gerund: 'incrementando',\n },\n\n decrement: {\n infinitive: 'decrementar',\n imperative: {\n voce: 'decremente',\n voces: 'decrementem',\n },\n present: {\n eu: 'eu decremento',\n voce: 'decrementa',\n ele: 'decrementa',\n nos: 'decrementamos',\n voces: 'decrementam',\n eles: 'decrementam',\n },\n preterite: {\n ele: 'decrementou',\n eu: 'decrementei',\n },\n imperfect: {\n ele: 'decrementava',\n },\n future: {\n ele: 'decrementará',\n },\n gerund: 'decrementando',\n },\n\n take: {\n infinitive: 'pegar',\n imperative: {\n voce: 'pegue',\n voces: 'peguem',\n },\n present: {\n eu: 'eu pego',\n voce: 'pega',\n ele: 'pega',\n nos: 'pegamos',\n voces: 'pegam',\n eles: 'pegam',\n },\n preterite: {\n ele: 'pegou',\n eu: 'peguei',\n },\n imperfect: {\n ele: 'pegava',\n },\n future: {\n ele: 'pegará',\n },\n gerund: 'pegando',\n },\n};\n\nconst frames: LanguageFrames = {\n code: 'pt',\n wordOrder: 'SVO',\n frames: [\n {\n function: 'commanding',\n template: '{verb.imperative.voce} {patient} {target}',\n verbForm: 'imperative.voce',\n example: 'adicione .active a #button',\n },\n {\n function: 'describing',\n template: '{subject} {verb.present.ele} {patient} {target}',\n verbForm: 'present.ele',\n example: 'o sistema adiciona .active a #button',\n },\n {\n function: 'narrating',\n template: '{subject} {verb.preterite.ele} {patient} {target}',\n verbForm: 'preterite.ele',\n example: 'o sistema adicionou .active a #button',\n },\n {\n function: 'questioning',\n template: 'será que {subject} {verb.present.ele} {patient} {target} ?',\n verbForm: 'present.ele',\n example: 'será que o sistema adiciona .active a #button ?',\n },\n {\n function: 'negating',\n template: '{subject} não {verb.present.ele} {patient} {target}',\n verbForm: 'present.ele',\n example: 'o sistema não adiciona .active a #button',\n },\n {\n function: 'planning',\n template: '{subject} {verb.future.ele} {patient} {target}',\n verbForm: 'future.ele',\n example: 'o sistema adicionará .active a #button',\n },\n {\n function: 'progressing',\n template: '{subject} está {verb.gerund} {patient} {target}',\n verbForm: 'gerund',\n example: 'o sistema está adicionando .active a #button',\n },\n ],\n};\n\nexport const ptProfile: LearnLanguageProfile = {\n patternProfile: {\n code: 'pt',\n wordOrder: 'SVO',\n keywords: {\n add: { primary: 'adicionar', alternatives: ['adicione'] },\n remove: { primary: 'remover', alternatives: ['remova'] },\n toggle: { primary: 'alternar', alternatives: ['alterne'] },\n put: { primary: 'colocar', alternatives: ['coloque'] },\n set: { primary: 'definir', alternatives: ['defina'] },\n show: { primary: 'mostrar', alternatives: ['mostre'] },\n hide: { primary: 'esconder', alternatives: ['esconda'] },\n get: { primary: 'obter', alternatives: ['obtenha'] },\n wait: { primary: 'esperar', alternatives: ['espere'] },\n fetch: { primary: 'buscar', alternatives: ['busque'] },\n send: { primary: 'enviar', alternatives: ['envie'] },\n go: { primary: 'ir', alternatives: ['vá'] },\n increment: { primary: 'incrementar', alternatives: ['incremente'] },\n decrement: { primary: 'decrementar', alternatives: ['decremente'] },\n take: { primary: 'pegar', alternatives: ['pegue'] },\n },\n },\n morphologyTable,\n frames,\n defaultSubject: 'o sistema',\n};\n","/**\n * Language Profiles Index\n *\n * Re-exports all 10 language profiles and provides a registry lookup.\n */\n\nimport type { LearnLanguageProfile } from '../types';\nimport { enProfile } from './en';\nimport { jaProfile } from './ja';\nimport { esProfile } from './es';\nimport { arProfile } from './ar';\nimport { zhProfile } from './zh';\nimport { koProfile } from './ko';\nimport { frProfile } from './fr';\nimport { trProfile } from './tr';\nimport { deProfile } from './de';\nimport { ptProfile } from './pt';\n\nexport { enProfile, jaProfile, esProfile, arProfile, zhProfile };\nexport { koProfile, frProfile, trProfile, deProfile, ptProfile };\n\n/** All profiles indexed by language code */\nexport const ALL_PROFILES: Record<string, LearnLanguageProfile> = {\n en: enProfile,\n ja: jaProfile,\n es: esProfile,\n ar: arProfile,\n zh: zhProfile,\n ko: koProfile,\n fr: frProfile,\n tr: trProfile,\n de: deProfile,\n pt: ptProfile,\n};\n","/**\n * Learn Domain Tokenizers\n *\n * Language-specific tokenizers for learning domain input (10 languages).\n * Created via the framework's createSimpleTokenizer factory.\n *\n * These tokenizers handle:\n * - Command verb keyword classification\n * - Role marker particle/preposition classification\n * - CSS selector recognition (#id, .class)\n * - Non-Latin script handling (Japanese, Arabic, Korean, Chinese)\n */\n\nimport { createSimpleTokenizer } from '@lokascript/framework';\nimport type { LanguageTokenizer, ValueExtractor, ExtractionResult } from '@lokascript/framework';\n\n// ─── Shared Extractors ──────────────────────────────────────────\n\n/** Handles Latin-script languages with diacritics (French é,à; Turkish ç,ü,ş; German ü,ö,ä) */\nclass LatinExtendedIdentifierExtractor implements ValueExtractor {\n readonly name = 'latin-extended-identifier';\n\n canExtract(input: string, position: number): boolean {\n return /\\p{L}/u.test(input[position]);\n }\n\n extract(input: string, position: number): ExtractionResult | null {\n let end = position;\n while (end < input.length && /[\\p{L}\\p{N}_-]/u.test(input[end])) {\n end++;\n }\n if (end === position) return null;\n return { value: input.slice(position, end), length: end - position };\n }\n}\n\n// ─── English ────────────────────────────────────────────────────\n\nexport const EnglishLearnTokenizer: LanguageTokenizer = createSimpleTokenizer({\n language: 'en',\n keywords: [\n // Verbs\n 'add',\n 'remove',\n 'toggle',\n 'put',\n 'set',\n 'show',\n 'hide',\n 'get',\n 'wait',\n 'fetch',\n 'send',\n 'go',\n 'increment',\n 'decrement',\n 'take',\n // Markers\n 'to',\n 'from',\n 'into',\n 'on',\n 'by',\n 'for',\n ],\n includeOperators: true,\n caseInsensitive: true,\n});\n\n// ─── Japanese ───────────────────────────────────────────────────\n\nexport const JapaneseLearnTokenizer: LanguageTokenizer = createSimpleTokenizer({\n language: 'ja',\n keywords: [\n // Verbs (te-form used for commanding)\n '追加',\n '削除',\n '切り替え',\n '置',\n '設定',\n '表示',\n '隠',\n '取得',\n '待',\n '送',\n '行',\n '増加',\n '減少',\n '取',\n // Particles\n 'を',\n 'に',\n 'から',\n 'で',\n 'は',\n ],\n keywordExtras: [\n { native: '追加', normalized: 'add' },\n { native: '削除', normalized: 'remove' },\n { native: '切り替え', normalized: 'toggle' },\n { native: '置', normalized: 'put' },\n { native: '設定', normalized: 'set' },\n { native: '表示', normalized: 'show' },\n { native: '隠', normalized: 'hide' },\n { native: '取得', normalized: 'get' },\n { native: '待', normalized: 'wait' },\n { native: '送', normalized: 'send' },\n { native: '行', normalized: 'go' },\n { native: '増加', normalized: 'increment' },\n { native: '減少', normalized: 'decrement' },\n { native: '取', normalized: 'take' },\n ],\n includeOperators: true,\n caseInsensitive: false,\n});\n\n// ─── Spanish ────────────────────────────────────────────────────\n\nexport const SpanishLearnTokenizer: LanguageTokenizer = createSimpleTokenizer({\n language: 'es',\n keywords: [\n 'agregar',\n 'eliminar',\n 'alternar',\n 'poner',\n 'establecer',\n 'mostrar',\n 'ocultar',\n 'obtener',\n 'esperar',\n 'buscar',\n 'enviar',\n 'ir',\n 'incrementar',\n 'decrementar',\n 'tomar',\n 'a',\n 'de',\n 'en',\n 'por',\n 'para',\n ],\n customExtractors: [new LatinExtendedIdentifierExtractor()],\n includeOperators: true,\n caseInsensitive: true,\n});\n\n// ─── Arabic ─────────────────────────────────────────────────────\n\nexport const ArabicLearnTokenizer: LanguageTokenizer = createSimpleTokenizer({\n language: 'ar',\n keywords: [\n 'أضف',\n 'أزل',\n 'بدّل',\n 'ضع',\n 'عيّن',\n 'أظهر',\n 'أخفِ',\n 'احصل',\n 'انتظر',\n 'اجلب',\n 'أرسل',\n 'اذهب',\n 'زد',\n 'أنقص',\n 'خذ',\n 'إلى',\n 'من',\n 'في',\n 'على',\n 'ب',\n ],\n keywordExtras: [\n { native: 'أضف', normalized: 'add' },\n { native: 'أزل', normalized: 'remove' },\n { native: 'بدّل', normalized: 'toggle' },\n { native: 'ضع', normalized: 'put' },\n { native: 'عيّن', normalized: 'set' },\n { native: 'أظهر', normalized: 'show' },\n { native: 'أخفِ', normalized: 'hide' },\n { native: 'احصل', normalized: 'get' },\n { native: 'انتظر', normalized: 'wait' },\n { native: 'اجلب', normalized: 'fetch' },\n { native: 'أرسل', normalized: 'send' },\n { native: 'اذهب', normalized: 'go' },\n { native: 'زد', normalized: 'increment' },\n { native: 'أنقص', normalized: 'decrement' },\n { native: 'خذ', normalized: 'take' },\n ],\n includeOperators: true,\n caseInsensitive: false,\n});\n\n// ─── Chinese ────────────────────────────────────────────────────\n\nexport const ChineseLearnTokenizer: LanguageTokenizer = createSimpleTokenizer({\n language: 'zh',\n keywords: [\n '添加',\n '移除',\n '切换',\n '放置',\n '设置',\n '显示',\n '隐藏',\n '获取',\n '等待',\n '获取',\n '发送',\n '前往',\n '增加',\n '减少',\n '取走',\n '到',\n '从',\n '在',\n '把',\n '用',\n ],\n keywordExtras: [\n { native: '添加', normalized: 'add' },\n { native: '移除', normalized: 'remove' },\n { native: '切换', normalized: 'toggle' },\n { native: '放置', normalized: 'put' },\n { native: '设置', normalized: 'set' },\n { native: '显示', normalized: 'show' },\n { native: '隐藏', normalized: 'hide' },\n { native: '获取', normalized: 'get' },\n { native: '等待', normalized: 'wait' },\n { native: '发送', normalized: 'send' },\n { native: '前往', normalized: 'go' },\n { native: '增加', normalized: 'increment' },\n { native: '减少', normalized: 'decrement' },\n { native: '取走', normalized: 'take' },\n ],\n includeOperators: true,\n caseInsensitive: false,\n});\n\n// ─── Korean ─────────────────────────────────────────────────────\n\nexport const KoreanLearnTokenizer: LanguageTokenizer = createSimpleTokenizer({\n language: 'ko',\n keywords: [\n '추가',\n '제거',\n '전환',\n '넣기',\n '설정',\n '표시',\n '숨기기',\n '가져오기',\n '대기',\n '가져오기',\n '보내기',\n '이동',\n '증가',\n '감소',\n '가져가기',\n '를',\n '에',\n '에서',\n '에게',\n '로',\n ],\n keywordExtras: [\n { native: '추가', normalized: 'add' },\n { native: '제거', normalized: 'remove' },\n { native: '전환', normalized: 'toggle' },\n { native: '넣기', normalized: 'put' },\n { native: '설정', normalized: 'set' },\n { native: '표시', normalized: 'show' },\n { native: '숨기기', normalized: 'hide' },\n { native: '가져오기', normalized: 'get' },\n { native: '대기', normalized: 'wait' },\n { native: '보내기', normalized: 'send' },\n { native: '이동', normalized: 'go' },\n { native: '증가', normalized: 'increment' },\n { native: '감소', normalized: 'decrement' },\n { native: '가져가기', normalized: 'take' },\n ],\n includeOperators: true,\n caseInsensitive: false,\n});\n\n// ─── French ─────────────────────────────────────────────────────\n\nexport const FrenchLearnTokenizer: LanguageTokenizer = createSimpleTokenizer({\n language: 'fr',\n keywords: [\n 'ajouter',\n 'supprimer',\n 'basculer',\n 'mettre',\n 'définir',\n 'afficher',\n 'masquer',\n 'obtenir',\n 'attendre',\n 'récupérer',\n 'envoyer',\n 'aller',\n 'incrémenter',\n 'décrémenter',\n 'prendre',\n 'à',\n 'de',\n 'dans',\n 'sur',\n 'par',\n ],\n customExtractors: [new LatinExtendedIdentifierExtractor()],\n includeOperators: true,\n caseInsensitive: true,\n});\n\n// ─── Turkish ────────────────────────────────────────────────────\n\nexport const TurkishLearnTokenizer: LanguageTokenizer = createSimpleTokenizer({\n language: 'tr',\n keywords: [\n 'ekle',\n 'kaldır',\n 'değiştir',\n 'koy',\n 'ayarla',\n 'göster',\n 'gizle',\n 'al',\n 'bekle',\n 'getir',\n 'gönder',\n 'git',\n 'artır',\n 'azalt',\n 'çıkar',\n 'a',\n 'dan',\n 'da',\n 'e',\n 'ile',\n ],\n customExtractors: [new LatinExtendedIdentifierExtractor()],\n includeOperators: true,\n caseInsensitive: true,\n});\n\n// ─── German ─────────────────────────────────────────────────────\n\nexport const GermanLearnTokenizer: LanguageTokenizer = createSimpleTokenizer({\n language: 'de',\n keywords: [\n 'hinzufügen',\n 'entfernen',\n 'umschalten',\n 'setzen',\n 'einstellen',\n 'anzeigen',\n 'verbergen',\n 'abrufen',\n 'warten',\n 'abrufen',\n 'senden',\n 'gehen',\n 'erhöhen',\n 'verringern',\n 'nehmen',\n 'zu',\n 'von',\n 'in',\n 'auf',\n 'an',\n ],\n customExtractors: [new LatinExtendedIdentifierExtractor()],\n includeOperators: true,\n caseInsensitive: true,\n});\n\n// ─── Portuguese ─────────────────────────────────────────────────\n\nexport const PortugueseLearnTokenizer: LanguageTokenizer = createSimpleTokenizer({\n language: 'pt',\n keywords: [\n 'adicionar',\n 'remover',\n 'alternar',\n 'colocar',\n 'definir',\n 'mostrar',\n 'esconder',\n 'obter',\n 'esperar',\n 'buscar',\n 'enviar',\n 'ir',\n 'incrementar',\n 'decrementar',\n 'pegar',\n 'a',\n 'de',\n 'em',\n 'para',\n 'por',\n ],\n customExtractors: [new LatinExtendedIdentifierExtractor()],\n includeOperators: true,\n caseInsensitive: true,\n});\n","/**\n * Learn Code Generator — The Inverted Generator\n *\n * Unlike domain-sql (natural language → SQL), this generator produces\n * natural language sentences WITH morphology applied as its \"compiled output\".\n *\n * The standard CodeGenerator.generate() interface returns the commanding form\n * in English. The extended generateForFunction() method produces sentences in\n * any language × communicative function combination.\n */\n\nimport type { SemanticNode, CodeGenerator } from '@lokascript/framework';\nimport { extractRoleValue } from '@lokascript/framework';\nimport type {\n CommunicativeFunction,\n RenderedSentence,\n CommandProfile,\n LearnLanguageProfile,\n AnyForms,\n CoreVerb,\n SemanticRole,\n} from '../types';\n\n// ─── Command Profiles (derived from schemas) ────────────────────\n\nconst COMMAND_PROFILES: Record<string, CommandProfile> = {\n add: { verb: 'add', valence: 'ditransitive', targetRole: 'destination', hasPatient: true },\n remove: { verb: 'remove', valence: 'ditransitive', targetRole: 'source', hasPatient: true },\n toggle: { verb: 'toggle', valence: 'ditransitive', targetRole: 'destination', hasPatient: true },\n put: { verb: 'put', valence: 'ditransitive', targetRole: 'destination', hasPatient: true },\n set: { verb: 'set', valence: 'ditransitive', targetRole: 'destination', hasPatient: true },\n show: { verb: 'show', valence: 'transitive', targetRole: null, hasPatient: true },\n hide: { verb: 'hide', valence: 'transitive', targetRole: null, hasPatient: true },\n get: { verb: 'get', valence: 'transitive', targetRole: 'source', hasPatient: false },\n wait: { verb: 'wait', valence: 'transitive', targetRole: null, hasPatient: true },\n fetch: { verb: 'fetch', valence: 'transitive', targetRole: 'source', hasPatient: false },\n send: { verb: 'send', valence: 'ditransitive', targetRole: 'destination', hasPatient: true },\n go: { verb: 'go', valence: 'transitive', targetRole: 'destination', hasPatient: false },\n increment: { verb: 'increment', valence: 'transitive', targetRole: null, hasPatient: true },\n decrement: { verb: 'decrement', valence: 'transitive', targetRole: null, hasPatient: true },\n take: { verb: 'take', valence: 'ditransitive', targetRole: 'source', hasPatient: true },\n};\n\n// ─── Marker Resolution ──────────────────────────────────────────\n\nexport interface ResolvedMarker {\n marker: string;\n position: 'before' | 'after';\n}\n\nconst EMPTY_MARKER: ResolvedMarker = { marker: '', position: 'before' };\n\n/**\n * Collapsed marker lookup — pre-resolved from the 5-tier system.\n * Structure: MARKERS[verb][role][language] = marker string\n *\n * This is the flattened result of:\n * Tier 1: renderOverride\n * Tier 2: markerOverride\n * Tier 3: LEARNING_OVERRIDES\n * Tier 4: LANGUAGE_RENDERING_OVERRIDES\n * Tier 5: profile defaults\n */\nconst MARKERS: Record<string, Record<string, Record<string, string>>> = {\n add: {\n patient: {\n en: '',\n ja: 'を',\n es: '',\n ar: '',\n zh: '',\n ko: '을',\n fr: '',\n tr: 'i',\n de: '',\n pt: '',\n },\n destination: {\n en: 'to',\n ja: 'に',\n es: 'a',\n ar: 'إلى',\n zh: '到',\n ko: '에',\n fr: 'à',\n tr: 'a',\n de: 'zu',\n pt: 'a',\n },\n },\n remove: {\n patient: {\n en: '',\n ja: 'を',\n es: '',\n ar: '',\n zh: '',\n ko: '을',\n fr: '',\n tr: 'i',\n de: '',\n pt: '',\n },\n source: {\n en: 'from',\n ja: 'から',\n es: 'de',\n ar: 'من',\n zh: '从',\n ko: '에서',\n fr: 'de',\n tr: 'dan',\n de: 'von',\n pt: 'de',\n },\n },\n toggle: {\n patient: {\n en: '',\n ja: 'を',\n es: '',\n ar: '',\n zh: '',\n ko: '을',\n fr: '',\n tr: 'i',\n de: '',\n pt: '',\n },\n destination: {\n en: 'on',\n ja: 'に',\n es: 'en',\n ar: 'على',\n zh: '在',\n ko: '에',\n fr: 'sur',\n tr: 'a',\n de: 'auf',\n pt: 'em',\n },\n },\n put: {\n patient: {\n en: '',\n ja: 'を',\n es: '',\n ar: '',\n zh: '',\n ko: '을',\n fr: '',\n tr: 'i',\n de: '',\n pt: '',\n },\n destination: {\n en: 'into',\n ja: 'に',\n es: 'en',\n ar: 'في',\n zh: '到',\n ko: '에',\n fr: 'dans',\n tr: 'a',\n de: 'in',\n pt: 'em',\n },\n },\n set: {\n destination: {\n en: '',\n ja: 'を',\n es: 'en',\n ar: '',\n zh: '在',\n ko: '를',\n fr: 'sur',\n tr: 'i',\n de: 'auf',\n pt: 'em',\n },\n patient: {\n en: 'to',\n ja: 'に',\n es: 'a',\n ar: 'إلى',\n zh: '',\n ko: '으로',\n fr: 'à',\n tr: 'e',\n de: 'auf',\n pt: 'para',\n },\n },\n show: {\n patient: {\n en: '',\n ja: 'を',\n es: '',\n ar: '',\n zh: '',\n ko: '을',\n fr: '',\n tr: 'i',\n de: '',\n pt: '',\n },\n },\n hide: {\n patient: {\n en: '',\n ja: 'を',\n es: '',\n ar: '',\n zh: '',\n ko: '을',\n fr: '',\n tr: 'i',\n de: '',\n pt: '',\n },\n },\n get: {\n source: {\n en: '',\n ja: 'を',\n es: '',\n ar: 'على',\n zh: '',\n ko: '를',\n fr: '',\n tr: 'i',\n de: '',\n pt: '',\n },\n },\n wait: {\n patient: {\n en: '',\n ja: 'を',\n es: '',\n ar: '',\n zh: '',\n ko: '을',\n fr: '',\n tr: 'i',\n de: '',\n pt: '',\n },\n },\n fetch: {\n source: {\n en: '',\n ja: 'から',\n es: 'de',\n ar: 'من',\n zh: '从',\n ko: '에서',\n fr: 'de',\n tr: 'dan',\n de: 'von',\n pt: 'de',\n },\n },\n send: {\n patient: {\n en: '',\n ja: 'を',\n es: '',\n ar: '',\n zh: '',\n ko: '을',\n fr: '',\n tr: 'i',\n de: '',\n pt: '',\n },\n destination: {\n en: 'to',\n ja: 'に',\n es: 'a',\n ar: 'إلى',\n zh: '到',\n ko: '에게',\n fr: 'à',\n tr: '-e',\n de: 'an',\n pt: 'para',\n },\n },\n go: {\n destination: {\n en: '',\n ja: 'に',\n es: 'a',\n ar: 'إلى',\n zh: '',\n ko: '에',\n fr: 'à',\n tr: 'a',\n de: 'zu',\n pt: 'para',\n },\n },\n increment: {\n patient: {\n en: '',\n ja: 'を',\n es: '',\n ar: '',\n zh: '',\n ko: '을',\n fr: '',\n tr: 'i',\n de: '',\n pt: '',\n },\n },\n decrement: {\n patient: {\n en: '',\n ja: 'を',\n es: '',\n ar: '',\n zh: '',\n ko: '을',\n fr: '',\n tr: 'i',\n de: '',\n pt: '',\n },\n },\n take: {\n patient: {\n en: '',\n ja: 'を',\n es: '',\n ar: '',\n zh: '',\n ko: '을',\n fr: '',\n tr: 'i',\n de: '',\n pt: '',\n },\n source: {\n en: 'from',\n ja: 'から',\n es: 'de',\n ar: 'من',\n zh: '从',\n ko: '에서',\n fr: 'de',\n tr: 'dan',\n de: 'von',\n pt: 'de',\n },\n },\n};\n\n/** Languages where particles follow nouns (no space) — postpositional */\nconst POSTPOSITIONAL = new Set(['ja', 'ko', 'tr']);\n\nexport function resolveMarker(verb: string, role: string, language: string): ResolvedMarker {\n const marker = MARKERS[verb]?.[role]?.[language];\n if (marker === undefined) return EMPTY_MARKER;\n const position = POSTPOSITIONAL.has(language) ? 'after' : 'before';\n return { marker, position };\n}\n\nexport function attachMarker(value: string, resolved: ResolvedMarker): string {\n if (!resolved.marker) return value;\n if (resolved.position === 'before') return `${resolved.marker} ${value}`;\n return `${value}${resolved.marker}`;\n}\n\n// ─── Form Resolution ────────────────────────────────────────────\n\nfunction resolveFormPath(forms: AnyForms, path: string): string {\n const parts = path.split('.');\n let current: unknown = forms;\n for (const part of parts) {\n if (current == null || typeof current !== 'object') return `[${path}?]`;\n current = (current as Record<string, unknown>)[part];\n }\n return typeof current === 'string' ? current : `[${path}?]`;\n}\n\n// ─── Sentence Generator ─────────────────────────────────────────\n\n/** Registry of language profiles — populated by registerProfile() */\nconst profileRegistry: Record<string, LearnLanguageProfile> = {};\n\nexport function registerProfile(code: string, profile: LearnLanguageProfile): void {\n profileRegistry[code] = profile;\n}\n\nexport function getProfile(code: string): LearnLanguageProfile | undefined {\n return profileRegistry[code];\n}\n\n/**\n * Generate a sentence for a SemanticNode in a specific language and\n * communicative function.\n */\nexport function generateForFunction(\n node: SemanticNode,\n fn: CommunicativeFunction,\n language: string\n): RenderedSentence | null {\n const profile = profileRegistry[language];\n if (!profile) return null;\n\n const verb = node.action as CoreVerb;\n const forms = profile.morphologyTable[verb];\n if (!forms) return null;\n\n const frame = profile.frames.frames.find(f => f.function === fn);\n if (!frame) return null;\n\n const verbValue = resolveFormPath(forms, frame.verbForm);\n const subject = profile.defaultSubject;\n const cmdProfile = COMMAND_PROFILES[verb];\n\n // Extract patient/target from SemanticNode roles\n const patientValue = extractRoleValue(node, 'patient') || '';\n const targetRole = cmdProfile?.targetRole;\n\n // For verbs like get/fetch/go, the primary value is in source/destination\n let targetValue = '';\n if (targetRole) {\n targetValue = extractRoleValue(node, targetRole) || '';\n }\n\n // Build patient string with marker\n let patientStr = '';\n if (patientValue && cmdProfile?.hasPatient) {\n const patientMarker = resolveMarker(verb, 'patient', language);\n patientStr = attachMarker(patientValue, patientMarker);\n }\n\n // Build target string with marker\n let targetStr = '';\n if (targetValue && targetRole) {\n const targetMarker = resolveMarker(verb, targetRole, language);\n targetStr = attachMarker(targetValue, targetMarker);\n }\n\n let sentence = frame.template\n .replace(/\\{subject\\}/g, subject)\n .replace(/\\{patient\\}/g, patientStr)\n .replace(/\\{target\\}/g, targetStr);\n\n // Replace verb form references: {verb.base}, {verb.present.el}, etc.\n sentence = sentence.replace(/\\{verb\\.([^}]+)\\}/g, (_match, path: string) => {\n return resolveFormPath(forms, path);\n });\n\n // Clean up extra spaces\n sentence = sentence.replace(/\\s+/g, ' ').trim();\n\n return {\n language,\n function: fn,\n sentence,\n verbForm: frame.verbForm,\n verbValue,\n };\n}\n\n/**\n * Standard CodeGenerator interface — returns the commanding form in English.\n * This satisfies the framework's CodeGenerator contract.\n */\nexport const learnCodeGenerator: CodeGenerator = {\n generate(node: SemanticNode): string {\n const result = generateForFunction(node, 'commanding', 'en');\n return result?.sentence ?? `[${node.action}]`;\n },\n};\n\n// ─── Convenience Functions ──────────────────────────────────────\n\n/** Render across all communicative functions for a language */\nexport function generateAllFunctions(node: SemanticNode, language: string): RenderedSentence[] {\n const profile = profileRegistry[language];\n if (!profile) return [];\n return profile.frames.frames\n .map(f => generateForFunction(node, f.function, language))\n .filter((r): r is RenderedSentence => r !== null);\n}\n\n/** Render across all registered languages for a single function */\nexport function generateCrossLingual(\n node: SemanticNode,\n fn: CommunicativeFunction\n): RenderedSentence[] {\n return Object.keys(profileRegistry)\n .map(lang => generateForFunction(node, fn, lang))\n .filter((r): r is RenderedSentence => r !== null);\n}\n","/**\n * Domain-Learn Types\n *\n * Types for the learning domain DSL, extending the framework with\n * communicative functions, morphology tables, and sentence rendering.\n */\n\n// ─── Communicative Functions ────────────────────────────────────\n\n/** The 7 communicative functions that exercises can target */\nexport type CommunicativeFunction =\n | 'commanding' // imperative: \"Add .active to #button\"\n | 'describing' // present: \"The system adds .active to #button\"\n | 'narrating' // past: \"The system added .active to #button\"\n | 'questioning' // question: \"Did the system add .active to #button?\"\n | 'negating' // negative: \"The system did not add .active to #button\"\n | 'planning' // future: \"The system will add .active to #button\"\n | 'progressing'; // progressive: \"The system is adding .active to #button\"\n\nexport const ALL_FUNCTIONS: readonly CommunicativeFunction[] = [\n 'commanding',\n 'describing',\n 'narrating',\n 'questioning',\n 'negating',\n 'planning',\n 'progressing',\n];\n\n// ─── Core Verbs ─────────────────────────────────────────────────\n\n/** The 15 core verbs in the learning domain */\nexport type CoreVerb =\n | 'add'\n | 'remove'\n | 'toggle'\n | 'put'\n | 'set'\n | 'show'\n | 'hide'\n | 'get'\n | 'wait'\n | 'fetch'\n | 'send'\n | 'go'\n | 'increment'\n | 'decrement'\n | 'take';\n\nexport const ALL_VERBS: readonly CoreVerb[] = [\n 'add',\n 'remove',\n 'toggle',\n 'put',\n 'set',\n 'show',\n 'hide',\n 'get',\n 'wait',\n 'fetch',\n 'send',\n 'go',\n 'increment',\n 'decrement',\n 'take',\n];\n\n// ─── Semantic Roles ─────────────────────────────────────────────\n\nexport type SemanticRole =\n | 'patient' // direct object: .active, #input\n | 'destination' // allative: to #button\n | 'source' // ablative: from #list\n | 'instrument' // instrumental: with .class\n | 'possessive' // genitive\n | 'manner' // how\n | 'style'; // in what manner\n\n// ─── Verb Valence ───────────────────────────────────────────────\n\nexport type VerbValence = 'intransitive' | 'transitive' | 'ditransitive';\n\nexport interface CommandProfile {\n verb: CoreVerb;\n valence: VerbValence;\n targetRole: SemanticRole | null;\n hasPatient: boolean;\n}\n\n// ─── Sentence Frame ─────────────────────────────────────────────\n\nexport interface SentenceFrame {\n function: CommunicativeFunction;\n template: string;\n verbForm: string;\n example: string;\n}\n\nexport interface LanguageFrames {\n code: string;\n wordOrder: 'SVO' | 'SOV' | 'VSO';\n frames: SentenceFrame[];\n}\n\n// ─── Rendered Output ────────────────────────────────────────────\n\nexport interface RenderedSentence {\n language: string;\n function: CommunicativeFunction;\n sentence: string;\n verbForm: string;\n verbValue: string;\n}\n\nexport interface InterlinearGloss {\n tokens: string[];\n roles: string[];\n english: string[];\n}\n\n// ─── Per-Language Form Interfaces ───────────────────────────────\n\nexport interface EnglishForms {\n base: string;\n thirdPerson: string;\n past: string;\n pastParticiple: string;\n presentParticiple: string;\n}\n\nexport interface JapaneseForms {\n dictionary: string;\n verbClass: 'godan' | 'ichidan' | 'suru' | 'kuru' | 'special';\n stem: string;\n masu: string;\n mashita: string;\n ta: string;\n te: string;\n nai: string;\n masen: string;\n potential: string;\n volitional: string;\n ba: string;\n tara: string;\n}\n\nexport interface SpanishPersonForms {\n yo: string;\n tu: string;\n el: string;\n nosotros: string;\n vosotros: string;\n ellos: string;\n}\n\nexport interface SpanishForms {\n infinitive: string;\n verbClass: 'ar' | 'er' | 'ir';\n irregular: boolean;\n present: SpanishPersonForms;\n preterite: SpanishPersonForms;\n imperfect: SpanishPersonForms;\n future: SpanishPersonForms;\n imperative: { tu: string; usted: string; ustedes: string };\n gerund: string;\n pastParticiple: { ms: string; fs: string; mp: string; fp: string };\n}\n\nexport interface ArabicPersonForms {\n howa: string;\n hiya: string;\n anta: string;\n anti: string;\n ana: string;\n hum: string;\n nahnu: string;\n}\n\nexport interface ArabicForms {\n root: string;\n form: 'I' | 'II' | 'III' | 'IV' | 'V' | 'VI' | 'VII' | 'VIII' | 'X';\n past: ArabicPersonForms;\n present: ArabicPersonForms;\n imperative: { ms: string; fs: string; mp: string };\n activeParticiple: string;\n passiveParticiple: string;\n masdar: string;\n}\n\nexport interface ChineseForms {\n base: string;\n pinyin: string;\n patterns: {\n completed: string;\n experience: string;\n progressive: string;\n future: string;\n negPresent: string;\n negPast: string;\n };\n}\n\nexport interface KoreanForms {\n dictionary: string;\n verbClass: 'hada' | 'native' | 'special';\n stem: string;\n hapnida: string;\n haesseumnida: string;\n haeyo: string;\n haesseoyo: string;\n imperative: string;\n past: string;\n negative: string;\n progressive: string;\n future: string;\n}\n\nexport interface FrenchPersonForms {\n je: string;\n tu: string;\n il: string;\n nous: string;\n vous: string;\n ils: string;\n}\n\nexport interface FrenchForms {\n infinitive: string;\n imperative: { tu: string; vous: string };\n present: FrenchPersonForms;\n passeCompose: { il: string; je: string };\n imparfait: { il: string };\n futur: { il: string };\n gerondif: string;\n}\n\nexport interface TurkishForms {\n dictionary: string;\n imperative: { sen: string; siz: string };\n present: {\n ben: string;\n sen: string;\n o: string;\n biz: string;\n siz: string;\n onlar: string;\n };\n past: { o: string; ben: string };\n future: { o: string };\n negative: { o: string };\n progressive: { o: string };\n gerund: string;\n}\n\nexport interface GermanPersonForms {\n ich: string;\n du: string;\n er: string;\n wir: string;\n ihr: string;\n sie: string;\n}\n\nexport interface GermanForms {\n infinitive: string;\n separablePrefix: string;\n imperative: { du: string; Sie: string };\n present: GermanPersonForms;\n past: { ich: string; er: string };\n perfect: { er: string };\n future: { er: string };\n presentParticiple: string;\n}\n\nexport interface PortuguesePersonForms {\n eu: string;\n voce: string;\n ele: string;\n nos: string;\n voces: string;\n eles: string;\n}\n\nexport interface PortugueseForms {\n infinitive: string;\n imperative: { voce: string; voces: string };\n present: PortuguesePersonForms;\n preterite: { ele: string; eu: string };\n imperfect: { ele: string };\n future: { ele: string };\n gerund: string;\n}\n\n// ─── Any Forms Union ────────────────────────────────────────────\n\nexport type AnyForms =\n | EnglishForms\n | JapaneseForms\n | SpanishForms\n | ArabicForms\n | ChineseForms\n | KoreanForms\n | FrenchForms\n | TurkishForms\n | GermanForms\n | PortugueseForms;\n\n// ─── Extended Language Profile ──────────────────────────────────\n\nimport type { PatternGenLanguageProfile } from '@lokascript/framework';\n\nexport interface LearnLanguageProfile {\n /** Base framework profile for pattern generation */\n patternProfile: PatternGenLanguageProfile;\n /** Morphology table: verb → conjugation forms */\n morphologyTable: Record<string, AnyForms>;\n /** Sentence frames per communicative function */\n frames: LanguageFrames;\n /** Default sentence subject */\n defaultSubject: string;\n}\n","/**\n * Learn Renderer — SemanticNode → DSL text in any language\n *\n * Inverse of the parser: converts a parsed SemanticNode back to\n * natural-language DSL text. Used for cross-language translation\n * exercises and round-trip verification.\n */\n\nimport type { SemanticNode } from '@lokascript/framework';\nimport { extractRoleValue } from '@lokascript/framework';\n\n/** Verb keyword translations: action → language → native keyword */\nconst COMMAND_KEYWORDS: Record<string, Record<string, string>> = {\n add: {\n en: 'add',\n ja: '追加して',\n es: 'agrega',\n ar: 'أضف',\n zh: '添加',\n ko: '추가해',\n fr: 'ajoute',\n tr: 'ekle',\n de: 'füge hinzu',\n pt: 'adicione',\n },\n remove: {\n en: 'remove',\n ja: '削除して',\n es: 'elimina',\n ar: 'أزل',\n zh: '移除',\n ko: '제거해',\n fr: 'supprime',\n tr: 'kaldır',\n de: 'entferne',\n pt: 'remova',\n },\n toggle: {\n en: 'toggle',\n ja: '切り替えて',\n es: 'alterna',\n ar: 'بدّل',\n zh: '切换',\n ko: '전환해',\n fr: 'bascule',\n tr: 'değiştir',\n de: 'schalte um',\n pt: 'alterne',\n },\n put: {\n en: 'put',\n ja: '置いて',\n es: 'pon',\n ar: 'ضع',\n zh: '放置',\n ko: '넣어',\n fr: 'mets',\n tr: 'koy',\n de: 'setze',\n pt: 'coloque',\n },\n set: {\n en: 'set',\n ja: '設定して',\n es: 'establece',\n ar: 'عيّن',\n zh: '设置',\n ko: '설정해',\n fr: 'définis',\n tr: 'ayarla',\n de: 'stelle ein',\n pt: 'defina',\n },\n show: {\n en: 'show',\n ja: '表示して',\n es: 'muestra',\n ar: 'أظهر',\n zh: '显示',\n ko: '표시해',\n fr: 'affiche',\n tr: 'göster',\n de: 'zeige',\n pt: 'mostre',\n },\n hide: {\n en: 'hide',\n ja: '隠して',\n es: 'oculta',\n ar: 'أخفِ',\n zh: '隐藏',\n ko: '숨겨',\n fr: 'masque',\n tr: 'gizle',\n de: 'verberge',\n pt: 'esconda',\n },\n get: {\n en: 'get',\n ja: '取得して',\n es: 'obtén',\n ar: 'احصل',\n zh: '获取',\n ko: '가져와',\n fr: 'obtiens',\n tr: 'al',\n de: 'rufe ab',\n pt: 'obtenha',\n },\n wait: {\n en: 'wait',\n ja: '待って',\n es: 'espera',\n ar: 'انتظر',\n zh: '等待',\n ko: '기다려',\n fr: 'attends',\n tr: 'bekle',\n de: 'warte',\n pt: 'espere',\n },\n fetch: {\n en: 'fetch',\n ja: '取得して',\n es: 'busca',\n ar: 'اجلب',\n zh: '获取',\n ko: '가져와',\n fr: 'récupère',\n tr: 'getir',\n de: 'rufe ab',\n pt: 'busque',\n },\n send: {\n en: 'send',\n ja: '送って',\n es: 'envía',\n ar: 'أرسل',\n zh: '发送',\n ko: '보내',\n fr: 'envoie',\n tr: 'gönder',\n de: 'sende',\n pt: 'envie',\n },\n go: {\n en: 'go',\n ja: '行って',\n es: 've',\n ar: 'اذهب',\n zh: '前往',\n ko: '이동해',\n fr: 'va',\n tr: 'git',\n de: 'gehe',\n pt: 'vá',\n },\n increment: {\n en: 'increment',\n ja: '増加して',\n es: 'incrementa',\n ar: 'زد',\n zh: '增加',\n ko: '증가시켜',\n fr: 'incrémente',\n tr: 'artır',\n de: 'erhöhe',\n pt: 'incremente',\n },\n decrement: {\n en: 'decrement',\n ja: '減少して',\n es: 'decrementa',\n ar: 'أنقص',\n zh: '减少',\n ko: '감소시켜',\n fr: 'décrémente',\n tr: 'azalt',\n de: 'verringere',\n pt: 'decremente',\n },\n take: {\n en: 'take',\n ja: '取って',\n es: 'toma',\n ar: 'خذ',\n zh: '取走',\n ko: '가져가',\n fr: 'prends',\n tr: 'al',\n de: 'nimm',\n pt: 'pegue',\n },\n};\n\n/** Role marker translations for DSL text rendering */\nconst MARKERS: Record<string, Record<string, string>> = {\n to: {\n en: 'to',\n ja: 'に',\n es: 'a',\n ar: 'إلى',\n zh: '到',\n ko: '에',\n fr: 'à',\n tr: 'a',\n de: 'zu',\n pt: 'a',\n },\n from: {\n en: 'from',\n ja: 'から',\n es: 'de',\n ar: 'من',\n zh: '从',\n ko: '에서',\n fr: 'de',\n tr: 'dan',\n de: 'von',\n pt: 'de',\n },\n into: {\n en: 'into',\n ja: 'に',\n es: 'en',\n ar: 'في',\n zh: '到',\n ko: '에',\n fr: 'dans',\n tr: 'a',\n de: 'in',\n pt: 'em',\n },\n on: {\n en: 'on',\n ja: 'で',\n es: 'en',\n ar: 'على',\n zh: '在',\n ko: '에',\n fr: 'sur',\n tr: 'da',\n de: 'auf',\n pt: 'em',\n },\n};\n\nconst SOV_LANGUAGES = new Set(['ja', 'ko', 'tr']);\n\n/**\n * Render a SemanticNode as DSL text in the target language.\n * Produces the commanding form (imperative) of the command.\n */\nexport function renderLearn(node: SemanticNode, language: string): string {\n const keyword = COMMAND_KEYWORDS[node.action]?.[language] ?? node.action;\n const patient = extractRoleValue(node, 'patient') || '';\n const destination = extractRoleValue(node, 'destination') || '';\n const source = extractRoleValue(node, 'source') || '';\n\n const parts: string[] = [];\n\n if (SOV_LANGUAGES.has(language)) {\n // SOV: target markers patient markers verb\n if (destination) {\n const marker = MARKERS.to[language] || '';\n parts.push(marker ? `${destination}${marker}` : destination);\n }\n if (source) {\n const marker = MARKERS.from[language] || '';\n parts.push(marker ? `${source}${marker}` : source);\n }\n if (patient) parts.push(patient);\n parts.push(keyword);\n } else {\n // SVO/VSO: verb patient marker target\n parts.push(keyword);\n if (patient) parts.push(patient);\n if (destination) {\n const marker = MARKERS.to[language] || '';\n if (marker) parts.push(marker);\n parts.push(destination);\n }\n if (source) {\n const marker = MARKERS.from[language] || '';\n if (marker) parts.push(marker);\n parts.push(source);\n }\n }\n\n return parts.filter(Boolean).join(' ');\n}\n","/**\n * Gloss Generator — Interlinear Gloss for Learning\n *\n * Produces interlinear glosses from a SemanticNode, showing:\n * tokens: target language tokens [\"#buttonに\", \".activeを\", \"追加して\"]\n * roles: grammatical labels [\"DEST\", \"PAT\", \"VERB\"]\n * english: English gloss [\"to #button\", \".active\", \"add (imperative)\"]\n *\n * Glosses help ESL students understand the grammatical function of each\n * word/particle in context, and help code students understand the mapping\n * between natural language and programming operations.\n */\n\nimport type { SemanticNode } from '@lokascript/framework';\nimport { extractRoleValue } from '@lokascript/framework';\nimport type { InterlinearGloss, CommunicativeFunction } from '../types';\nimport { resolveMarker, attachMarker, getProfile } from './sentence-generator';\n\n/** Abbreviated role labels for gloss display */\nconst ROLE_LABELS: Record<string, string> = {\n patient: 'PAT',\n destination: 'DEST',\n source: 'SRC',\n instrument: 'INST',\n style: 'STYLE',\n manner: 'MANNER',\n};\n\nconst FUNCTION_LABELS: Record<string, string> = {\n commanding: 'imperative',\n describing: 'present',\n narrating: 'past',\n questioning: 'question',\n negating: 'negative',\n planning: 'future',\n progressing: 'progressive',\n};\n\n/** SOV languages where particles attach to nouns */\nconst POSTPOSITIONAL = new Set(['ja', 'ko']);\n\n/** Command profiles for gloss generation */\nconst PROFILES: Record<string, { hasPatient: boolean; targetRole: string | null }> = {\n add: { hasPatient: true, targetRole: 'destination' },\n remove: { hasPatient: true, targetRole: 'source' },\n toggle: { hasPatient: true, targetRole: 'destination' },\n put: { hasPatient: true, targetRole: 'destination' },\n set: { hasPatient: true, targetRole: 'destination' },\n show: { hasPatient: true, targetRole: null },\n hide: { hasPatient: true, targetRole: null },\n get: { hasPatient: false, targetRole: 'source' },\n wait: { hasPatient: true, targetRole: null },\n fetch: { hasPatient: false, targetRole: 'source' },\n send: { hasPatient: true, targetRole: 'destination' },\n go: { hasPatient: false, targetRole: 'destination' },\n increment: { hasPatient: true, targetRole: null },\n decrement: { hasPatient: true, targetRole: null },\n take: { hasPatient: true, targetRole: 'source' },\n};\n\n/**\n * Generate an interlinear gloss for a SemanticNode.\n */\nexport function generateGloss(\n node: SemanticNode,\n fn: CommunicativeFunction,\n language: string\n): InterlinearGloss | null {\n const profile = getProfile(language);\n if (!profile) return null;\n\n const verb = node.action;\n const cmdProfile = PROFILES[verb];\n if (!cmdProfile) return null;\n\n const forms = profile.morphologyTable[verb];\n if (!forms) return null;\n\n const frame = profile.frames.frames.find(f => f.function === fn);\n if (!frame) return null;\n\n const tokens: string[] = [];\n const roles: string[] = [];\n const english: string[] = [];\n\n const patientValue = extractRoleValue(node, 'patient') || '';\n const targetRole = cmdProfile.targetRole;\n const targetValue = targetRole ? extractRoleValue(node, targetRole) || '' : '';\n\n const isSOV = profile.frames.wordOrder === 'SOV';\n\n if (isSOV) {\n // SOV order: target, patient, verb\n if (targetValue && targetRole) {\n const marker = resolveMarker(verb, targetRole, language);\n tokens.push(attachMarker(targetValue, marker));\n roles.push(ROLE_LABELS[targetRole] || targetRole.toUpperCase());\n english.push(attachMarker(targetValue, resolveMarker(verb, targetRole, 'en')));\n }\n if (patientValue && cmdProfile.hasPatient) {\n const marker = resolveMarker(verb, 'patient', language);\n tokens.push(attachMarker(patientValue, marker));\n roles.push(ROLE_LABELS.patient);\n english.push(patientValue);\n }\n } else {\n // SVO order: patient, target (verb is handled separately)\n if (patientValue && cmdProfile.hasPatient) {\n const marker = resolveMarker(verb, 'patient', language);\n tokens.push(attachMarker(patientValue, marker));\n roles.push(ROLE_LABELS.patient);\n english.push(patientValue);\n }\n if (targetValue && targetRole) {\n const marker = resolveMarker(verb, targetRole, language);\n tokens.push(attachMarker(targetValue, marker));\n roles.push(ROLE_LABELS[targetRole] || targetRole.toUpperCase());\n english.push(attachMarker(targetValue, resolveMarker(verb, targetRole, 'en')));\n }\n }\n\n // Resolve verb form\n const verbFormPath = frame.verbForm;\n const parts = verbFormPath.split('.');\n let verbValue: unknown = forms;\n for (const part of parts) {\n if (verbValue == null || typeof verbValue !== 'object') break;\n verbValue = (verbValue as Record<string, unknown>)[part];\n }\n const verbStr = typeof verbValue === 'string' ? verbValue : verb;\n\n if (isSOV) {\n // Verb last in SOV\n tokens.push(verbStr);\n roles.push('VERB');\n english.push(`${verb} (${FUNCTION_LABELS[fn] || fn})`);\n } else {\n // Verb first in SVO — prepend\n tokens.unshift(verbStr);\n roles.unshift('VERB');\n english.unshift(`${verb} (${FUNCTION_LABELS[fn] || fn})`);\n }\n\n return { tokens, roles, english };\n}\n"],"mappings":"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","names":["import_framework","morphologyTable","frames","import_framework","import_framework","import_framework","MARKERS","import_framework"]}
|