In Metnos la lingua è una proprietà dell'intera istanza, non una preferenza del singolo utente. Il nucleo del runtime conserva una sola lingua per utenti, canali e richieste concorrenti. Cambiarla è quindi una modifica deliberata della configurazione globale. Questo è il contratto architetturale; alcune superfici storiche non lo rispettano ancora completamente e sono indicate in questa pagina.
Molti sistemi nascono in una lingua e vengono localizzati in seguito. Questo approccio traduce pulsanti e messaggi, ma può lasciare in un'altra lingua le istruzioni date ai modelli, le descrizioni degli strumenti o le espressioni usate per comprendere una richiesta. Metnos parte da un vincolo diverso: una funzione non è davvero multilingue se lo è soltanto la sua superficie.
Significa che la lingua entra nei confini del sistema, non soltanto nei suoi testi. Il nucleo la legge dalla configurazione firmata e la conserva in un contesto isolato per ogni esecuzione concorrente. Un valore ricevuto da una richiesta non può sostituirla. I componenti destinati alle persone devono usare quel medesimo valore: questo è un requisito verificabile, non la dichiarazione che ogni pagina storica sia già stata migrata.
Nei percorsi gestiti dal nucleo, tutti gli utenti e tutti i canali collegati alla stessa istanza ricevono quindi la medesima lingua. Se occorrono due lingue nello stesso momento, servono istanze Metnos distinte; cambiare la lingua di un'istanza è una modifica globale per quell'istanza.
Lingua e autorizzazione restano separate. Cambiare la lingua dell'istanza non amplia i permessi, non cambia il proprietario e non concede nuove capacità a un executor. Cambia la resa e la comprensione, non l'autorità.
Il punto non consiste nel tradurre automaticamente più testo. Consiste nel riconoscere che un agente usa la lingua in punti diversi, ciascuno con una funzione e un rischio propri. Metnos li mantiene separati, così una lacuna può essere individuata e corretta senza fingere che l'intero sistema sia già pronto.
| Livello | A che cosa serve | Perché non può essere sostituito dagli altri |
|---|---|---|
| Prompt | Forniscono ai modelli istruzioni, criteri e lingua attesa della risposta. | Un'interfaccia tradotta non impedisce a un modello di ricevere istruzioni nella lingua sbagliata. |
| Manifest degli executor | Descrivono al pianificatore le azioni disponibili e il significato degli argomenti. | Tradurre il risultato non basta se lo strumento è stato scelto partendo da una descrizione non adatta alla lingua dell'istanza. |
| Catalogo dei messaggi | Rende errori, conferme, etichette e notifiche deterministiche. | Questi testi devono restare affidabili anche quando un modello non è disponibile. |
| Lessico di riconoscimento | Riconosce modi naturali di esprimere intenti, oggetti e parametri. | Mostrare parole italiane non insegna automaticamente al sistema a comprendere tutte le formulazioni italiane. |
Il vocabolario delle azioni applica già questo contratto da capo a fondo. I
nomi canonici come run e open non vengono tradotti;
le forme naturali usate per riconoscerli vivono nel lessico di detection
versionato, mentre i rispettivi confini semantici sono chiavi del catalogo
i18n. Una nuova lingua deve conservare tutte le azioni canoniche: un mapping
parziale non supera il controllo di copertura e le forme ambigue vengono
segnalate per la validazione linguistica.
Eccezione attuale: affinity. Le espressioni
del manifest usate per avvicinare una richiesta a un executor sono ancora una
lista unica che può mescolare più lingue. Il TODO
AFF-I18N-001, con priorità massima, richiede analisi,
confronto fra alternative, specifica e sviluppo prima di dichiarare questo
livello pienamente conforme all'i18n.
La mancanza di una traduzione non deve trasformarsi né in una frase inventata né in un comportamento nascosto. Ciascun livello segue una regola deterministica:
<missing:KEY>;Il ripiego garantisce continuità, non certifica la qualità linguistica. Una lingua può essere presente nel catalogo mentre alcune risorse sono ancora in revisione. Metnos conserva questa distinzione: disponibile non significa automaticamente supportata in modo completo.
Una traduzione invecchia quando cambia il testo da cui era stata ricavata. Per evitare che una frase corretta ma superata sembri ancora valida, Metnos registra le impronte del testo corrente e della sorgente usata per tradurlo. Se una lingua viene aggiornata, le versioni non più allineate vengono segnalate per la revisione. Il confronto è strutturale e deterministico; l'eventuale modello propone il nuovo testo, ma non decide che sia corretto.
Il medesimo principio protegge le personalizzazioni. Gli aggiornamenti del catalogo distribuito aggiungono nuove chiavi e possono aggiornare una precedente versione ufficiale, ma non devono sovrascrivere alla cieca una traduzione scelta localmente. La provenienza fa parte della decisione di aggiornamento.
Un executor remoto non possiede una seconda politica linguistica. Riceve il contesto ammesso dal server e un repertorio limitato dei messaggi operativi che può dover rendere sul dispositivo. Questo repertorio viene generato dalla base pubblica e immutabile della distribuzione, non dal catalogo personale di chi compila il pacchetto: una personalizzazione locale non può quindi finire per errore in un artefatto pubblicato.
La stessa regola governa i percorsi principali dei canali. Telegram, la chat web e le attività differite ricevono la lingua dell'istanza e non mantengono una preferenza indipendente per ciascun utente.
Copertura corrente, non ideale. Alcune pagine HTML autonome ereditate dal runtime usano ancora testi italiani scritti direttamente nel codice: fra queste figurano la pagina finale di OAuth, la vecchia vista dei timer e alcune viste autonome. Non passano tutte dal catalogo i18n. Il nucleo della chat e le pagine amministrative basate sui template seguono il contratto, ma l'intera interfaccia non può ancora essere definita completamente localizzata.
Il valore architetturale consiste nel trattare il multilinguismo come una proprietà trasversale verificabile, alla pari dell'identità e della provenienza, invece che come una fase editoriale conclusiva. Questo porta tre vantaggi concreti:
Non è una promessa di traduzione perfetta. I modelli possono ancora produrre una formulazione mediocre, una lingua nuova può avere un lessico incompleto e una revisione umana resta indispensabile. L'innovazione consiste nel rendere questi limiti parte del contratto, quindi misurabili e correggibili.
Quando, durante l'installazione, viene indicata una lingua diversa da italiano o
inglese, Metnos non finge che sia già pronta. Normalizza il codice BCP-47 e,
dopo la creazione della chiave d'installazione, registra atomicamente una
richiesta firmata con data, stato e versione del corpus in
$METNOS_USER_STATE/i18n/localization_request.json. L'istanza si avvia
temporaneamente in inglese e la richiesta resta in attesa di elaborazione.
La sola installazione non traduce automaticamente l'intero sistema.
La pipeline completa esiste, ma oggi viene avviata con gli strumenti
amministrativi. materialize censisce prompt, campi testuali dei
manifest, messaggi, lessico di riconoscimento, documentazione pubblica,
repertorio dei dispositivi e catalogo Tutor. advance traduce un
numero limitato di risorse, registra le impronte e sottopone a verifica
semantica ciò che può essere valutato automaticamente. Le risorse delicate,
come espressioni regolari e controlli di consenso, richiedono revisione umana.
Il campo affinity non fa ancora parte di questo inventario.
Esistono anche due lavori periodici più circoscritti. Il timer di servizio, normalmente ogni cinque minuti, elabora i messaggi già in attesa nel catalogo i18n; lo scheduler esegue un ripiego ogni sei ore e tratta anche il lessico di riconoscimento. Questi lavori smaltiscono code già materializzate, ma non sostituiscono l'avanzamento esplicito della pipeline completa. Dopo che tutte le risorse obbligatorie hanno superato i rispettivi controlli, il comando di attivazione ricompila i cataloghi pubblici, verifica manifest e copertura, aggiorna la configurazione firmata e può riavviare il servizio nella nuova lingua.
Che cosa resta invariato. La traduzione non modifica nomi degli executor, chiavi, schema degli argomenti, permessi, proprietario, policy o firme. Cambia la lingua con cui Metnos comprende e spiega; non cambia ciò che Metnos è autorizzato a fare.