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
@@ -143,4 +143,189 @@ export const RO = {
"metodik.ogranskad":
"Textul procedurilor nu a fost verificat de un specialist tehnic în limba {sprak}. Pașii și punctele de control sunt afișate în engleză acolo unde nu există o traducere verificată — o traducere neverificată a unei instrucțiuni de siguranță este mai gravă decât una într-o limbă străină, pentru că nu arată ca fiind străină.",
"metodik.pa_engelska": "Afișat în engleză — nicio traducere verificată în limba {sprak}",
// ---- Site-ul public (webb.) --------------------------------------------
"webb.nav.oversikt": "Prezentare generală",
"webb.ansok": "Solicitați un cont",
"webb.loggain": "Autentificare",
"webb.fot.impressum": "Informații legale",
"webb.fot.dataskydd": "Confidențialitate",
"webb.fot.villkor": "Condiții",
"webb.fot.tillganglighet": "Accesibilitate",
"webb.fot.sprak": "Limbi",
"webb.fot.utgavor": "Note de versiune",
"webb.hero.position": "Platformă de diagnosticare ghidată",
"webb.hero.definition": "Proceduri de diagnosticare standardizate pentru o depanare repetabilă și verificabilă.",
"webb.metod.etikett": "Metodologie",
"webb.metod.rubrik": "Modelul ALVA",
"webb.metod.ingress":
"ALVA este o metodă standardizată de analiză, localizare, verificare și acțiune sistematice. Fiecare decizie este trasabilă, fiecare concluzie verificabilă, fiecare acțiune reproductibilă.",
"webb.fas.analysis.syfte": "Strângeți dovezile.",
"webb.fas.analysis.avgransning": "Doar fapte. În această fază nu se adună ipoteze.",
"webb.fas.localization.syfte": "Delimitați defectul.",
"webb.fas.localization.avgransning": "Restrângeți zona. Cauza nu este încă stabilită.",
"webb.fas.verification.syfte": "Confirmați cauza rădăcină.",
"webb.fas.verification.avgransning": "Se verifică cauza — nu simptomul.",
"webb.fas.action.syfte": "Executați acțiunea corectivă.",
"webb.fas.action.avgransning": "Rezultat verificat și documentat. Altfel faza este incompletă.",
"webb.drift.etikett": "Funcționare",
"webb.drift.rubrik": "Cum funcționează",
"webb.drift.s1.rubrik": "Crearea organizației",
"webb.drift.s1.text": "Înregistrarea este depusă și examinată.",
"webb.drift.s2.rubrik": "Utilizatorii primesc conturi",
"webb.drift.s2.text": "Rolurile sunt atribuite de administratorul organizației.",
"webb.drift.s3.rubrik": "Proceduri de diagnosticare ghidate",
"webb.drift.s3.text": "Fiecare caz urmează o procedură definită.",
"webb.drift.s4.rubrik": "Verificare",
"webb.drift.s4.text": "Cauza rădăcină este confirmată înaintea acțiunii corective.",
"webb.drift.s5.rubrik": "Documentare",
"webb.drift.s5.text": "Raportul este generat din jurnalul cazului.",
"webb.drift.s6.rubrik": "Îmbunătățire continuă",
"webb.drift.s6.text": "Rezultatele verificate rafinează procedurile următoare.",
"webb.larande.etikett": "Capacitate",
"webb.larande.rubrik": "Învățarea organizației",
"webb.larande.p1":
"Platforma rafinează continuu procedurile de diagnosticare cu experiența operațională verificată a propriei organizații.",
"webb.larande.p2":
"Fiecare diagnostic încheiat alimentează ghidarea următoare. Se folosesc doar rezultate verificate — un caz închis fără cauză rădăcină confirmată nu aduce nimic, în mod intenționat.",
"webb.larande.p3":
"Baza de cunoștințe aparține organizației. Este derivată din cazurile, procedurile și documentația voastră și nu este agregată între clienți.",
"webb.larande.block": "Derivată din",
"webb.larande.k1": "Cauze rădăcină verificate",
"webb.larande.k2": "Acțiuni corective confirmate",
"webb.larande.k3": "Categorii de defecte recurente",
"webb.larande.k4": "Proceduri duse la capăt",
"webb.larande.k5": "Documentația organizației",
"webb.rapport.etikett": "Raportare",
"webb.rapport.rubrik": "Raport trimestrial de îmbunătățire",
"webb.rapport.ingress":
"O dată pe trimestru, platforma răspunde la șase întrebări despre munca atelierului însuși. Fiecare răspuns este derivat din jurnalul cazurilor — nimic nu se estimează și nimeni nu este întrebat nimic.",
"webb.rapport.f1": "Ce defecte diagnosticăm acum corect din prima?",
"webb.rapport.f2": "Cât de des o cauză bănuită se dovedește a fi cea reală?",
"webb.rapport.f3": "Ce defecte revin mereu în flotă?",
"webb.rapport.f4": "Ce pași de procedură sunt săriți, și de ce?",
"webb.rapport.f5": "Ce știe atelierul acum și nu știa trimestrul trecut?",
"webb.rapport.f6": "Cazurile sunt încheiate, verificate și documentate — sau doar încheiate?",
"webb.pris.etikett": "Comercial",
"webb.pris.rubrik": "Licențiere",
"webb.pris.komponent": "Componentă",
"webb.pris.grund": "Bază",
"webb.pris.plattform": "Licență de platformă",
"webb.pris.plattform.grund": "Per organizație, anual",
"webb.pris.anvandare": "Licențe de utilizator",
"webb.pris.anvandare.grund": "Per utilizator activ, lunar",
"webb.pris.moduler": "Module pentru întreprinderi",
"webb.pris.moduler.grund": "Opționale, per modul",
"webb.pris.betalning": "Fără plată online. Fără abonare directă. Facturarea urmează examinării cererii.",
"webb.pris.aktivering": "Secvența de activare",
"webb.pris.a1": "Organizația depune înregistrarea.",
"webb.pris.a2": "Cererea este examinată.",
"webb.pris.a3": "Se emite factura.",
"webb.pris.a4": "Plata este înregistrată.",
"webb.pris.a5": "Organizația este activată.",
"webb.pris.a6": "Utilizatorii suplimentari sunt facturați lunar.",
"webb.kallor.etikett": "Infrastructură",
"webb.kallor.rubrik": "Infrastructură operațională de cunoștințe",
"webb.kallor.p1":
"ALVA folosește sursele de cunoștințe autorizate ale organizației. Arhitectura este neutră față de furnizor: fiecare sursă implementează aceeași interfață și niciun furnizor nu este presupus.",
"webb.kallor.p2":
"O instalare beta lucrează doar cu documentația internă. Furnizorii externi sunt activați mai târziu prin conectori separați, fără modificarea nucleului platformei.",
"webb.kallor.block": "Ordinea de rezolvare a surselor",
"webb.kallor.k1": "Proceduri interne ale firmei",
"webb.kallor.k2": "Documentație OEM",
"webb.kallor.k3": "Buletine tehnice",
"webb.kallor.k4": "Informații de garanție",
"webb.kallor.k5": "Manuale de atelier",
"webb.kallor.k6": "Diagnostice verificate istorice",
"webb.kallor.k7": "Bune practici ale organizației",
"webb.login.etikett": "Acces",
"webb.login.demo":
"Această autentificare nu autentifică nimic. Scrieți orice în E-mail și Parolă și apăsați Conectare — nu este nevoie de cont, iar portalul din spate prezintă date de exemplu fixe. Conectată la o instanță a platformei, această pagină se autentifică față de ea, iar fără o sesiune validă portalul este închis.",
"webb.login.losenord": "Parolă",
"webb.login.ofullstandigt": "Autentificare incompletă. E-mailul și parola sunt obligatorii.",
"webb.login.misslyckades": "Autentificarea a eșuat.",
"webb.login.logga_in": "Conectare",
"webb.login.loggar_in": "Se conectează",
"webb.login.glomt": "Parolă uitată",
"webb.ansokan.etikett": "Înregistrare",
"webb.ansokan.demo":
"Nu se trimite nimic. Trimiterea formularului nu salvează nimic, nu anunță pe nimeni și nu creează nicio cerere — încă nu există o recepție în spate. Descrierea de mai jos spune cum este gândită înregistrarea să funcționeze, nu ce se întâmplă azi.",
"webb.ansokan.avsikt": "Funcționare prevăzută: cererile sunt examinate manual și în această etapă nu se percepe nicio plată.",
"webb.falt.foretag": "Firmă",
"webb.falt.orgnummer": "Număr de înregistrare",
"webb.falt.kontakt": "Persoană de contact",
"webb.falt.epost": "E-mail",
"webb.falt.telefon": "Telefon",
"webb.falt.tekniker": "Număr de tehnicieni",
"webb.falt.bransch": "Domeniu",
"webb.falt.land": "Țară",
"webb.falt.anvandare": "Număr estimat de utilizatori",
"webb.falt.noteringar": "Observații",
"webb.falt.kravs": "(obligatoriu)",
"webb.ansokan.skicka": "Trimiteți cererea",
"webb.ansokan.mottagen.etikett": "Cerere",
"webb.ansokan.mottagen": "Depusă",
"webb.ansokan.mottagen.demo":
"Nimic nu a fost transmis și nimeni nu a fost anunțat. Referința de mai jos a fost calculată în browserul dumneavoastră din ce ați scris și nu există nicăieri altundeva — va dispărea la închiderea acestei pagini.",
"webb.ansokan.status": "Stare",
"webb.ansokan.referens": "Referință",
"webb.ansokan.granskning":
"Cererile sunt examinate manual. La aprobare se emite o factură. Organizația este activată după înregistrarea plății.",
"webb.sprak.etikett": "Localizare",
"webb.sprak.rubrik": "Limbi",
"webb.sprak.ingress":
"Engleza este limba implicită și limba sursă. Urmează nouă traduceri. Ce nu face platforma: nu pretinde că o interfață tradusă înseamnă o metodă tradusă.",
"webb.sprak.princip.etikett": "Principiu",
"webb.sprak.princip.rubrik": "Două feluri de text",
"webb.sprak.granssnitt.rubrik": "Text de interfață",
"webb.sprak.granssnitt.beteckning": "Revine în tăcere",
"webb.sprak.granssnitt.text":
"Etichete, butoane, stări. Finit, rar schimbat. Un șir englezesc care ajunge la un utilizator german este o iritare, nu un pericol — o traducere lipsă revine deci la engleză fără comentariu.",
"webb.sprak.metodik.rubrik": "Text de procedură",
"webb.sprak.metodik.beteckning": "Nu revine niciodată în tăcere",
"webb.sprak.metodik.text":
"Instrucțiuni pentru lucrul la un vehicul. Aici o traducere neverificată este mai rea decât una într-o limbă străină — pentru că engleza pare străină, în timp ce o traducere proastă pare o instrucțiune. Este afișat în engleză și marcat, cu limba numită.",
"webb.sprak.invariant":
"Metoda în sine nu se traduce niciodată. Numele fazelor și cuvintele de stare sunt structura ALVA și se citesc identic în fiecare țară, astfel încât un auditor poate citi un dosar românesc și unul german fără să știe în ce limbă lucrează atelierul.",
"webb.sprak.tackning.etikett": "Acoperire",
"webb.sprak.tackning.rubrik": "Ce este tradus, și ce este verificat",
"webb.sprak.kolumn.sprak": "Limbă",
"webb.sprak.kolumn.granssnitt": "Interfață",
"webb.sprak.kolumn.granskat": "Metodă verificată de un specialist",
"webb.sprak.granskat.ja": "Da",
"webb.sprak.granskat.nej": "Nu — textul de procedură afișat în engleză",
"webb.sprak.matt":
"Acoperirea interfeței se măsoară, nu se estimează: un test oprește compilarea dacă vreo cheie lipsește din vreo limbă. Starea de verificare este o afirmație despre oameni, nu despre fișiere, și se stabilește manual.",
"webb.sprak.kallsprak":
"Textul de procedură în engleză este o traducere a sursei suedeze și nu a fost încă citit de un specialist care practică meseria. I se aplică același standard ca celorlalte nouă limbi, iar aici se face despre el aceeași declarație în loc să fie exceptat în tăcere pentru că este sursa.",
"webb.sprak.bevis.etikett": "Verificare",
"webb.sprak.bevis.rubrik": "Frazele care opresc un caz",
"webb.sprak.bevis.ingress":
"Acestea sunt frazele care refuză unui tehnician închiderea unui caz. Un refuz pe care nimeni nu îl înțelege este un refuz fără ieșire — deci sunt frazele potrivite pentru a judeca o traducere.",
"webb.sprak.ej_granskad": "Neverificat",
"webb.sprak.granskad": "Verificat",
"webb.sprak.granskad.text":
"Textul de procedură în limba {sprak} a fost citit de un specialist care practică meseria. Pașii și punctele de control sunt afișate peste tot în limba {sprak}.",
"webb.sprak.val.etikett": "Funcționare",
"webb.sprak.val.rubrik": "Cum se alege limba",
"webb.sprak.val.s1.rubrik": "Preferința utilizatorului",
"webb.sprak.val.s1.text": "Ce a selectat persoana.",
"webb.sprak.val.s2.rubrik": "Setarea organizației",
"webb.sprak.val.s2.text": "Limba de documentare a atelierului.",
"webb.sprak.val.s3.rubrik": "Limba browserului",
"webb.sprak.val.s3.text": "Prima limbă pe care platforma o recunoaște.",
"webb.sprak.val.s4.rubrik": "Engleza",
"webb.sprak.val.s4.text": "Implicit, și sursa.",
"webb.sprak.val.notering":
"Organizația trece intenționat înaintea browserului. Un atelier din Germania cu un tehnician polonez are nevoie de o singură limbă de documentare — dosarul nu trebuie să schimbe limba în funcție de cine a scris rândul.",
};