Webbplatsen på alla tio språken

Sajten var hårdkodad engelska medan diagnostikytan redan talade tio
språk. Nu hämtar hela den publika webben — startsidan, ansökan,
inloggningen, språksidan, navigationen och sidfoten — sin text ur
samma katalog som resten av produkten, under nytt prefix webb.
(153 nycklar × 10 språk).

Språkval på webben: besökarens eget val (väljare i sidfoten, sparat i
localStorage med minnesfallback för privat läge) → webbläsarens språk
→ engelska. Rangordningen bor kvar i valjSprak; ny modul
alva/webbsprak.ts bär bara lagring och React-kroken. Portalens länkar
står medvetet kvar på engelska — portalen är produkten och styrs av
konto och organisation, inte av ett besöksval i en sidfot.

Gränsen håller: ordmärket, utläsningen och fasnamnen är ALVA:s
struktur och står likadant i varje språk; lang-attributet följer
valet; språksidans förhandsvisning behåller egen väljare och utgår
från besökarens språk.

Test: startsidans hjälterad och faskort låses mot systemdefinitionen
(två källor för samma mening driver isär tyst), webbnycklarna krävs i
varje språk, och designtesterna jämför nu katalognycklar i stället för
strängar — starkare, eftersom samma nyckel är samma ord på alla språk.
Ny språkrunda mot den bakade artefakten: väljare, sidbyte,
webbläsarspråk och engelsk fallback, 11/11.

775 enhetstester, genomgång 4/4, portalspärr, integrationstest,
artefaktmätning, typkontroll och lint gröna.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt
This commit is contained in:
Claude
2026-08-06 22:38:18 +00:00
parent 83944f4962
commit 0068ef9844
18 changed files with 2168 additions and 223 deletions
+185
View File
@@ -138,4 +138,189 @@ export const IT = {
"metodik.ogranskad":
"Il testo delle procedure non è stato revisionato da uno specialista tecnico in {sprak}. I passaggi e i punti di controllo sono mostrati in inglese dove non esiste una traduzione revisionata — una traduzione non revisionata di un'istruzione di sicurezza è peggiore di una in lingua straniera, perché non sembra straniera.",
"metodik.pa_engelska": "Mostrato in inglese — nessuna traduzione revisionata in {sprak}",
// ---- Sito pubblico (webb.) ---------------------------------------------
"webb.nav.oversikt": "Panoramica",
"webb.ansok": "Richiedi un account",
"webb.loggain": "Accesso",
"webb.fot.impressum": "Note legali",
"webb.fot.dataskydd": "Riservatezza",
"webb.fot.villkor": "Condizioni",
"webb.fot.tillganglighet": "Accessibilità",
"webb.fot.sprak": "Lingue",
"webb.fot.utgavor": "Note di rilascio",
"webb.hero.position": "Piattaforma di diagnosi guidata",
"webb.hero.definition": "Procedure diagnostiche standardizzate per una ricerca guasti ripetibile e verificabile.",
"webb.metod.etikett": "Metodologia",
"webb.metod.rubrik": "Il modello ALVA",
"webb.metod.ingress":
"ALVA è un metodo standardizzato di analisi, localizzazione, verifica e azione sistematiche. Ogni decisione è tracciabile, ogni conclusione verificabile, ogni azione riproducibile.",
"webb.fas.analysis.syfte": "Raccogliere le evidenze.",
"webb.fas.analysis.avgransning": "Solo fatti. In questa fase non si raccolgono ipotesi.",
"webb.fas.localization.syfte": "Circoscrivere il guasto.",
"webb.fas.localization.avgransning": "Restringere larea. La causa non è ancora stabilita.",
"webb.fas.verification.syfte": "Confermare la causa radice.",
"webb.fas.verification.avgransning": "Si verifica la causa — non il sintomo.",
"webb.fas.action.syfte": "Eseguire lazione correttiva.",
"webb.fas.action.avgransning": "Risultato verificato e documentato. Altrimenti la fase è incompleta.",
"webb.drift.etikett": "Funzionamento",
"webb.drift.rubrik": "Come funziona",
"webb.drift.s1.rubrik": "Creare lorganizzazione",
"webb.drift.s1.text": "La registrazione viene inviata ed esaminata.",
"webb.drift.s2.rubrik": "Gli utenti ricevono gli account",
"webb.drift.s2.text": "I ruoli sono assegnati dallamministratore dellorganizzazione.",
"webb.drift.s3.rubrik": "Procedure diagnostiche guidate",
"webb.drift.s3.text": "Ogni caso segue una procedura definita.",
"webb.drift.s4.rubrik": "Verifica",
"webb.drift.s4.text": "La causa radice viene confermata prima dellazione correttiva.",
"webb.drift.s5.rubrik": "Documentazione",
"webb.drift.s5.text": "Il rapporto è generato dal registro del caso.",
"webb.drift.s6.rubrik": "Miglioramento continuo",
"webb.drift.s6.text": "Gli esiti verificati affinano le procedure successive.",
"webb.larande.etikett": "Capacità",
"webb.larande.rubrik": "Apprendimento dellorganizzazione",
"webb.larande.p1":
"La piattaforma affina di continuo le procedure diagnostiche con lesperienza operativa verificata della vostra stessa organizzazione.",
"webb.larande.p2":
"Ogni diagnosi completata alimenta la guida successiva. Si usano solo esiti verificati — un caso chiuso senza causa radice confermata non apporta nulla, per costruzione.",
"webb.larande.p3":
"La base di conoscenza appartiene allorganizzazione. È derivata dai vostri casi, dalle vostre procedure e dalla vostra documentazione, e non viene aggregata tra clienti.",
"webb.larande.block": "Derivata da",
"webb.larande.k1": "Cause radice verificate",
"webb.larande.k2": "Azioni correttive confermate",
"webb.larande.k3": "Categorie di guasti ricorrenti",
"webb.larande.k4": "Procedure portate a termine",
"webb.larande.k5": "Documentazione dellorganizzazione",
"webb.rapport.etikett": "Rendicontazione",
"webb.rapport.rubrik": "Rapporto trimestrale di miglioramento",
"webb.rapport.ingress":
"Una volta a trimestre la piattaforma risponde a sei domande sul lavoro dellofficina stessa. Ogni risposta è derivata dal registro dei casi — nulla è stimato, e a nessuno viene chiesto nulla.",
"webb.rapport.f1": "Quali guasti diagnostichiamo ora correttamente al primo tentativo?",
"webb.rapport.f2": "Quanto spesso una causa sospetta si rivela quella reale?",
"webb.rapport.f3": "Quali guasti continuano a ripresentarsi nella flotta?",
"webb.rapport.f4": "Quali passi della procedura vengono saltati, e perché?",
"webb.rapport.f5": "Cosa sa oggi lofficina che non sapeva il trimestre scorso?",
"webb.rapport.f6": "I casi vengono chiusi, verificati e documentati — o soltanto chiusi?",
"webb.pris.etikett": "Commerciale",
"webb.pris.rubrik": "Licenze",
"webb.pris.komponent": "Componente",
"webb.pris.grund": "Base",
"webb.pris.plattform": "Licenza di piattaforma",
"webb.pris.plattform.grund": "Per organizzazione, annuale",
"webb.pris.anvandare": "Licenze utente",
"webb.pris.anvandare.grund": "Per utente attivo, mensile",
"webb.pris.moduler": "Moduli enterprise",
"webb.pris.moduler.grund": "Facoltativi, per modulo",
"webb.pris.betalning": "Nessun pagamento online. Nessuna sottoscrizione di abbonamento. La fatturazione segue lesame della richiesta.",
"webb.pris.aktivering": "Sequenza di attivazione",
"webb.pris.a1": "Lorganizzazione invia la registrazione.",
"webb.pris.a2": "La richiesta viene esaminata.",
"webb.pris.a3": "Viene emessa la fattura.",
"webb.pris.a4": "Il pagamento viene registrato.",
"webb.pris.a5": "Lorganizzazione viene attivata.",
"webb.pris.a6": "Gli utenti aggiuntivi sono fatturati mensilmente.",
"webb.kallor.etikett": "Infrastruttura",
"webb.kallor.rubrik": "Infrastruttura operativa della conoscenza",
"webb.kallor.p1":
"ALVA usa le fonti di conoscenza autorizzate proprie dellorganizzazione. Larchitettura è neutrale rispetto al fornitore: ogni fonte implementa la stessa interfaccia, e nessun fornitore è presupposto.",
"webb.kallor.p2":
"Uninstallazione beta lavora sulla sola documentazione interna. I fornitori esterni si abilitano in seguito tramite connettori separati, senza modifiche al nucleo della piattaforma.",
"webb.kallor.block": "Ordine di risoluzione delle fonti",
"webb.kallor.k1": "Procedure interne dellazienda",
"webb.kallor.k2": "Documentazione OEM",
"webb.kallor.k3": "Bollettini tecnici",
"webb.kallor.k4": "Informazioni di garanzia",
"webb.kallor.k5": "Manuali di officina",
"webb.kallor.k6": "Diagnosi verificate storiche",
"webb.kallor.k7": "Buone pratiche dellorganizzazione",
"webb.login.etikett": "Accesso",
"webb.login.demo":
"Questo accesso non autentica nulla. Scrivete qualsiasi cosa in E-mail e Password e premete Accedi — non serve alcun account, e il portale dietro presenta dati di esempio fissi. Collegata a unistanza della piattaforma, questa pagina si autentica presso di essa, e senza una sessione valida il portale è chiuso.",
"webb.login.losenord": "Password",
"webb.login.ofullstandigt": "Autenticazione incompleta. E-mail e password sono richieste.",
"webb.login.misslyckades": "Autenticazione non riuscita.",
"webb.login.logga_in": "Accedi",
"webb.login.loggar_in": "Accesso in corso",
"webb.login.glomt": "Password dimenticata",
"webb.ansokan.etikett": "Registrazione",
"webb.ansokan.demo":
"Non viene inviato nulla. Inviare questo modulo non salva nulla, non avvisa nessuno e non crea alcuna richiesta — dietro non c’è ancora una ricezione. La descrizione qui sotto dice come la registrazione è pensata per funzionare, non cosa accade oggi.",
"webb.ansokan.avsikt": "Funzionamento previsto: le richieste sono esaminate manualmente e in questa fase non viene riscosso alcun pagamento.",
"webb.falt.foretag": "Azienda",
"webb.falt.orgnummer": "Numero di registro delle imprese",
"webb.falt.kontakt": "Referente",
"webb.falt.epost": "E-mail",
"webb.falt.telefon": "Telefono",
"webb.falt.tekniker": "Numero di tecnici",
"webb.falt.bransch": "Settore",
"webb.falt.land": "Paese",
"webb.falt.anvandare": "Numero previsto di utenti",
"webb.falt.noteringar": "Note",
"webb.falt.kravs": "(obbligatorio)",
"webb.ansokan.skicka": "Invia la richiesta",
"webb.ansokan.mottagen.etikett": "Richiesta",
"webb.ansokan.mottagen": "Inviata",
"webb.ansokan.mottagen.demo":
"Nulla è stato trasmesso e nessuno è stato avvisato. Il riferimento qui sotto è stato calcolato nel vostro browser da ciò che avete digitato e non esiste altrove — sparirà alla chiusura di questa pagina.",
"webb.ansokan.status": "Stato",
"webb.ansokan.referens": "Riferimento",
"webb.ansokan.granskning":
"Le richieste sono esaminate manualmente. Allapprovazione viene emessa una fattura. Lorganizzazione viene attivata alla registrazione del pagamento.",
"webb.sprak.etikett": "Localizzazione",
"webb.sprak.rubrik": "Lingue",
"webb.sprak.ingress":
"Linglese è la lingua predefinita e la lingua di origine. Seguono nove traduzioni. Ciò che la piattaforma non fa è affermare che uninterfaccia tradotta significhi un metodo tradotto.",
"webb.sprak.princip.etikett": "Principio",
"webb.sprak.princip.rubrik": "Due tipi di testo",
"webb.sprak.granssnitt.rubrik": "Testo dinterfaccia",
"webb.sprak.granssnitt.beteckning": "Ripiega in silenzio",
"webb.sprak.granssnitt.text":
"Etichette, pulsanti, stati. Finito, cambia di rado. Una stringa inglese che raggiunge un utente tedesco è un fastidio, non un pericolo — una traduzione mancante ripiega quindi sullinglese senza commento.",
"webb.sprak.metodik.rubrik": "Testo di procedura",
"webb.sprak.metodik.beteckning": "Non ripiega mai in silenzio",
"webb.sprak.metodik.text":
"Istruzioni per lavorare su un veicolo. Qui una traduzione non revisionata è peggiore di una in lingua straniera — perché linglese sembra straniero, mentre una cattiva traduzione sembra unistruzione. Viene mostrata in inglese e contrassegnata, con la lingua nominata.",
"webb.sprak.invariant":
"Il metodo in sé non viene mai tradotto. I nomi delle fasi e le parole di stato sono la struttura di ALVA e si leggono identici in ogni paese, così un revisore può leggere un fascicolo rumeno e uno tedesco senza sapere in quale lingua lavora lofficina.",
"webb.sprak.tackning.etikett": "Copertura",
"webb.sprak.tackning.rubrik": "Cosa è tradotto, e cosa è revisionato",
"webb.sprak.kolumn.sprak": "Lingua",
"webb.sprak.kolumn.granssnitt": "Interfaccia",
"webb.sprak.kolumn.granskat": "Metodo revisionato da uno specialista",
"webb.sprak.granskat.ja": "Sì",
"webb.sprak.granskat.nej": "No — testo di procedura in inglese",
"webb.sprak.matt":
"La copertura dellinterfaccia è misurata, non stimata: un test fa fallire la build se una chiave manca in una lingua. Lo stato di revisione è unaffermazione su persone, non su file, e si imposta a mano.",
"webb.sprak.kallsprak":
"Il testo di procedura inglese è una traduzione della fonte svedese e non è ancora stato letto da uno specialista che esercita il mestiere. È tenuto allo stesso standard delle altre nove lingue, e qui se ne fa la stessa dichiarazione invece di esentarlo in silenzio perché è la fonte.",
"webb.sprak.bevis.etikett": "Verifica",
"webb.sprak.bevis.rubrik": "Le frasi che fermano un caso",
"webb.sprak.bevis.ingress":
"Queste sono le frasi che negano a un tecnico la chiusura di un caso. Un rifiuto che nessuno capisce è un rifiuto senza via duscita — sono quindi le frasi giuste per giudicare una traduzione.",
"webb.sprak.ej_granskad": "Non revisionato",
"webb.sprak.granskad": "Revisionato",
"webb.sprak.granskad.text":
"Il testo di procedura in {sprak} è stato letto da uno specialista che esercita il mestiere. Passi e punti di controllo sono mostrati in {sprak} ovunque.",
"webb.sprak.val.etikett": "Funzionamento",
"webb.sprak.val.rubrik": "Come viene scelta la lingua",
"webb.sprak.val.s1.rubrik": "Preferenza dellutente",
"webb.sprak.val.s1.text": "Ciò che la singola persona ha selezionato.",
"webb.sprak.val.s2.rubrik": "Impostazione dellorganizzazione",
"webb.sprak.val.s2.text": "La lingua di documentazione dellofficina.",
"webb.sprak.val.s3.rubrik": "Lingua del browser",
"webb.sprak.val.s3.text": "La prima lingua che la piattaforma riconosce.",
"webb.sprak.val.s4.rubrik": "Inglese",
"webb.sprak.val.s4.text": "La predefinita, e la fonte.",
"webb.sprak.val.notering":
"Lorganizzazione precede deliberatamente il browser. Unofficina in Germania con un tecnico polacco ha bisogno di ununica lingua di documentazione — il fascicolo non deve cambiare lingua a seconda di chi ha scritto la riga.",
};