elp(translate): EN->ES/PT geometric-free translation faculty

Adds the missing middle of the ELP: a deterministic EN-content-lemma ->
target-lemma bridge (translate.el) on top of comprehend.el (parse) and
realizer.el (inflect). English-only engram geometry cannot route
cross-lingually and vocabulary-XX.el carries no en_translation glosses, so
the honest no-LLM bridge is a wired lexicon (poem coverage; OOV passes
through). SACRED polarity/neg_word are carried untouched: 'never' localizes
to a negator ('nunca'), never to a content lemma.

Additive realizer extensions: agent_person/agent_number recognize Romance
target pronouns; the non-EN negation branch surfaces a carried neg_word
instead of the generic negator.

Verified on the real toolchain (elc->cc->run):
  'You never fought the ocean.' -> ES 'Tú nunca luchaste el océano.'
  'I never saw the breaking.'   -> ES 'Yo nunca vi la ruptura.'
nunca holds 3/3 negation lines. Known gaps: PT verb conjugation fallback
(lutarred), irregular EN lemma (broke->break), adjunct/subordinator passthrough.
This commit is contained in:
Neuron
2026-08-14 17:37:01 -05:00
parent ce34b94f88
commit 9b63a2a23b
3 changed files with 275 additions and 0 deletions
+24
View File
@@ -34,6 +34,13 @@ fn agent_person(agent: String) -> String {
if str_eq(agent, "we") { return "first" }
if str_eq(agent, "us") { return "first" }
if str_eq(agent, "you") { return "second" }
// Romance target-language subject pronouns (translate.el sets these).
if str_eq(agent, "yo") { return "first" }
if str_eq(agent, "eu") { return "first" }
if str_eq(agent, "nosotros") { return "first" }
if str_eq(agent, "nós") { return "first" }
if str_eq(agent, "") { return "second" }
if str_eq(agent, "tu") { return "second" }
return "third"
}
@@ -50,6 +57,19 @@ fn agent_number(agent: String) -> String {
if str_eq(agent, "us") { return "plural" }
if str_eq(agent, "they") { return "plural" }
if str_eq(agent, "them") { return "plural" }
// Romance target-language subject pronouns.
if str_eq(agent, "yo") { return "singular" }
if str_eq(agent, "eu") { return "singular" }
if str_eq(agent, "") { return "singular" }
if str_eq(agent, "tu") { return "singular" }
if str_eq(agent, "él") { return "singular" }
if str_eq(agent, "ella") { return "singular" }
if str_eq(agent, "ele") { return "singular" }
if str_eq(agent, "ela") { return "singular" }
if str_eq(agent, "nosotros") { return "plural" }
if str_eq(agent, "nós") { return "plural" }
if str_eq(agent, "ellos") { return "plural" }
if str_eq(agent, "eles") { return "plural" }
return "singular"
}
@@ -359,7 +379,11 @@ fn realize_lang(form: [String], profile: [String]) -> String {
return add_punct(capitalize_first(sentence), "assert")
}
// Generic non-English: affirmative core with a preverbal negator particle.
// SACRED: when a standalone negative adverb was carried (e.g. "nunca",
// localized upstream from "never"), surface it rather than the generic
// negator the specific negation must never be flattened away.
let neg_particle: String = realize_negator(code)
if !str_eq(neg_word, "") { let neg_particle = neg_word }
let vp_pair: [String] = realize_vp_lang(predicate, tense, aspect, person, number, profile)
let verb_surf: String = native_list_get(vp_pair, 0)
let aux_surf: String = native_list_get(vp_pair, 1)