Files
alva/felsokning/services/gemensam/sprak/pt.mjs
T
Claude be10704349 Grinden talar organisationens språk — engelska som standard
Kvalitetsgrinden formulerade sina hinder på svenska, hårdkodat. I en
produkt där engelska är standardspråket betyder det att en spärr kan
neka ett avslut på ett språk teknikern inte läser. Det är en spärr utan
väg förbi: teknikern ser att systemet vägrar men inte varför, och den
enda utvägen blir att ringa någon. Det är då regeln slutar vara en regel
och blir ett hinder man lär sig kringgå.

Varje hinder bär nu både nyckel och färdig text. Nyckeln därför att en
klient som byter språk ska kunna rendera om utan att fråga servern;
texten därför att ett hinder som hamnar i en logg eller en PDF måste gå
att läsa utan katalogen. Hindrets id och nyckel är språkoberoende — det
är bara texten som byter.

Språket är organisationens, inte användarens. En verkstad i Tyskland med
en polsk tekniker ska ha ett gemensamt dokumentationsspråk; rapporten
ska inte byta språk beroende på vem som råkade stänga ärendet. Det
lagras i organisationens inställningar, och en felstavad landskod blir
engelska i stället för ett fel — språkinställningen är en etikett och
ska inte hindra någon från att spara sina objekttyper.

SPARRFRAGOR bär nu nycklar i stället för svensk text. Testet som jämför
serverns lista med klientens jämför nycklar, så listorna kan fortfarande
inte glida isär.

Två tester prövade svenska ord i grindens utdata och gick sönder, vilket
var rätt av dem. De prövar nu nyckeln — texten är översatt och byter
språk med organisationen, och att pröva svenska ord hade gjort dem till
tester av vilket språk som råkar vara standard. Ett nytt test prövar det
som faktiskt betyder något: samma id, samma nyckel, olika text.

Integrationstestet följer språket hela vägen — organisationens
inställning, genom servern, ut i det 409-svar som nekar avslutet: engelska
som standard, tyska efter byte, engelska igen vid okänd kod.

582 tester, 186 integrationskontroller mot riktig Postgres, genomgång och
portalspärr gröna.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt
2026-08-06 16:36:53 +00:00

127 lines
7.0 KiB
JavaScript

// ALVA-SPEC-060 · Português.
//
// Português europeu (pt-PT), sem o Acordo aplicado às formas em que as
// duas normas divergem de maneira visível para um técnico: «contacto»,
// «registo», «conta-quilómetros». Se surgir um mercado brasileiro, é uma
// entrada nova no catálogo — «pt-BR» — e não uma emenda a esta.
//
// `granskat: false`: a interface está traduzida, o texto dos
// procedimentos não foi revisto por um especialista. Ver index.mjs.
export const PT = {
// ---- Graus de evidência -------------------------------------------------
"evidens.E1": "Observação",
"evidens.E2": "Fotografia",
"evidens.E3": "Vídeo com som",
"evidens.E4": "Medição, instrumento calibrado",
"evidens.E5": "Documento",
"evidens.ej_kalibrerad": "calibração em falta ou expirada",
"evidens.ej_angivet": "instrumento não indicado",
"evidens.ej_fotograferad": "introduzido, não fotografado",
// ---- O controlo de encerramento -----------------------------------------
"grind.objekt": "Identificação do veículo ou do objeto verificada",
"grind.historik": "Histórico do veículo verificado ou justificado",
"grind.historik.nekad": "Uma verificação de histórico recusada exige um motivo indicado.",
"grind.historik.saknas": "Nenhuma verificação de histórico documentada.",
"grind.matarstallning.ingaende": "Quilometragem à entrada fotografada",
"grind.matarstallning.utgaende": "Quilometragem à saída fotografada",
"grind.matarstallning.saknas": "Nenhuma quilometragem documentada.",
"grind.matarstallning.ej_foto":
"A quilometragem está introduzida mas não fotografada. Fotografar o conta-quilómetros, ou indicar por que motivo não é possível.",
"grind.reproducering": "Verificação do sintoma: reproduzido, ou documentado como não reproduzível",
"grind.felorsak": "Análise da causa raiz documentada",
"grind.atgard": "Ação corretiva documentada ou justificada",
"grind.atgard.saknas": "Não está documentada nem uma ação realizada nem um motivo para a sua ausência.",
"grind.kundbeslut": "Decisão do cliente sobre a proposta registada",
"grind.kundbeslut.avbojt": "Trabalho realizado apesar de uma proposta recusada",
"grind.kundbeslut.avbojt.detalj": "O cliente recusou a proposta, mas há trabalho documentado como realizado.",
"grind.kvalitetskontroll": "Controlo de qualidade efetuado — sintoma verificado",
"grind.kontroller": "Pontos de controlo da metodologia: evidência, ou uma exceção documentada",
"grind.foton": "Fotografias presentes nos controlos que as exigem",
"grind.slutsats": "Conclusão (ALVA-RULE-200)",
"grind.hogvolt.behorighet": "Habilitação de alta tensão confirmada",
"grind.hogvolt.spanningslos": "Veículo colocado fora de tensão segundo o procedimento do fabricante",
"grind.regelpaket": "A assinatura do pacote de regras não corresponde — encerramento bloqueado.",
"grind.regelpaket.osignerat":
"Está a ser utilizado um pacote de regras externo sem assinatura — encerramento bloqueado.",
"grind.evidens": "Nível de evidência superior a E0",
"grind.evidens.saknas": "Não existe qualquer evidência no registo.",
"grind.foton.detalj": "{kontroller} controlos exigem fotografia, {foton} fotografias no registo.",
"grind.sparr.ej_uppfyllt": "O requisito de segurança não está cumprido.",
"grind.arendetyp.okant": "Requisito desconhecido no pacote de regras: {krav}",
"grind.arendetyp.krav": "Requisito para este tipo de processo: {krav}",
// ---- A conclusão (ALVA-RULE-200) ----------------------------------------
"slutsats.rubrik": "Conclusão",
"slutsats.konstaterat": "O que foi estabelecido",
"slutsats.evidens": "Que evidência o sustenta",
"slutsats.avfardat": "Que hipóteses foram afastadas, e porquê",
"slutsats.osakert": "O que permanece incerto",
"slutsats.ickesvar": "Isso não é uma conclusão. Indicar o que foi estabelecido e que evidência o sustenta.",
// ---- Fluxo do processo --------------------------------------------------
"arende.nytt": "Novo processo",
"arende.oppna": "Processos abertos",
"arende.avslutade": "Processos encerrados",
"arende.avsluta": "Encerrar o processo",
"arende.avslutat": "Processo encerrado",
"arende.kan_ej_avslutas": "O processo ainda não pode ser encerrado",
"arende.hinder": "Pendente antes do encerramento",
"arende.overlamna": "Transferir",
"arende.ansvarig": "Responsável",
// ---- Verificação prévia -------------------------------------------------
"pre.rubrik": "Verificação prévia — antes do início do trabalho",
"pre.historik.fraga":
"O histórico do veículo foi verificado? (trabalhos anteriores, avarias recorrentes, TSB, campanhas)",
"pre.historik.ja": "Sim — verificado",
"pre.historik.nej": "Não",
"pre.historik.skal": "Motivo pelo qual o histórico não foi verificado (obrigatório)",
"pre.historik.relevant": "Trabalhos anteriores relevantes (opcional — cadeia causal)",
"pre.matarstallning": "Quilometragem",
"pre.fotografera": "Fotografar o painel de instrumentos",
"pre.felbeskrivning": "Descrição da avaria pelo cliente verificada",
"pre.observationer": "Mais alguma coisa na receção?",
// ---- Ações --------------------------------------------------------------
"handling.spara": "Guardar",
"handling.avbryt": "Cancelar",
"handling.fortsatt": "Continuar",
"handling.tillbaka": "Voltar",
"handling.dokumentera": "Documentar",
"handling.fotografera": "Fotografar",
"handling.spela_in": "Gravar vídeo",
"handling.undantag": "Documentar uma exceção",
"handling.undantag.skal": "Motivo da exceção (obrigatório)",
"handling.exportera": "Exportar",
"handling.skriv_ut": "Imprimir",
// ---- Medição ------------------------------------------------------------
"matning.varde": "Valor",
"matning.enhet": "Unidade",
"matning.matdon": "Instrumento",
"matning.matdon.valj": "Selecionar instrumento",
"matning.matdon.okant": "Instrumento desconhecido. Registá-lo antes de guardar a medição.",
"matning.kalibrerad_till": "Calibrado até",
// ---- Relatório ----------------------------------------------------------
"rapport.rubrik": "Relatório do processo",
"rapport.sammanfattning": "Resumo",
"rapport.evidens": "Evidência",
"rapport.atgarder": "Ações",
"rapport.harledd":
"Derivado do registo do processo. As observações e as medições são apresentadas sem conclusões que careçam de fundamento.",
// ---- Idioma -------------------------------------------------------------
"sprak.valj": "Idioma",
"sprak.granskat": "Revisto",
"sprak.ogranskat": "Não revisto",
"sprak.tackning": "{procent} % da interface",
"metodik.ogranskad":
"O texto dos procedimentos não foi revisto por um especialista técnico em {sprak}. Os passos e os pontos de controlo são apresentados em inglês onde não existe tradução revista — uma tradução não revista de uma instrução de segurança é pior do que uma em língua estrangeira, porque não parece estrangeira.",
"metodik.pa_engelska": "Apresentado em inglês — sem tradução revista em {sprak}",
};