Oversettelser mellom Excel og TypeScript

Slik effektiviserer vi oversettelser mellom Excel og TypeScript

Marius Holter Berntzen
Marius Holter Berntzen
5. desember 2024

Utfordringen: oversettelser på tvers av flere språk

I flere av applikasjonene våre ligger tekstene for hvert språk i egne TypeScript-filer som nøkkel-verdi-par. Hver nøkkel peker til en melding eller etikett i grensesnittet, mens verdien inneholder den oversatte teksten. Engelsk kan for eksempel ligge i english.ts, og spansk i spanish.ts.

Kunden leverer nye oversettelser i et Excel-ark der hver rad inneholder:

  • en nøkkel som tilsvarer en oppføring i TypeScript-filen
  • den engelske teksten som referanse
  • oversettelsen til målspråket

Strukturen er enkel, men mengden kan bli stor. Å kopiere hver linje manuelt fra Excel til TypeScript tar tid og øker risikoen for feil, særlig når en nøkkel, oversettelse eller variabel mangler.

Løsningen: automatiske oppdateringer med Python

Vi laget et Python-skript som leser Excel-arket og oppdaterer TypeScript-filene automatisk. Skriptet finner riktig nøkkel, kontrollerer oversettelsen og erstatter teksten i riktig språkfil. Slik fungerer prosessen.

Steg 1: Klargjør Excel-arket

Hvert språk får et eget ark, for eksempel «Spanish». Arket har tre nødvendige kolonner:

  1. Nøkkel: identifikatoren fra TypeScript-filen, for eksempel common.greeting.
  2. Engelsk tekst: referansen som gjør det enklere å oppdage avvik og feil i variabler.
  3. Oversatt tekst: teksten på målspråket, for eksempel spansk.
Eksempel på et Excel-ark med oversettelsesnøkler og språk

Vanligvis fyller kunden ut arket etter at vi har sendt over nøklene og de engelske referansetekstene. Her tar vi utgangspunkt i at arket er ferdig oversatt og klart til import.

Steg 2: Les og rydd dataene

Med pandas leser skriptet Excel-filen og filtrerer bort rader uten nøkkel eller oversettelse. Dermed går bare gyldige data videre i prosessen.

Steg 3: Finn og erstatt teksten i TypeScript-filen

Før importen kontrollerer skriptet tomme oversettelser og variabler som kan ha blitt endret ved en feil. Deretter leser det TypeScript-filen linje for linje, finner hver nøkkel og erstatter den gamle teksten med den nye oversettelsen. Til slutt skrives resultatet tilbake til språkfilen, for eksempel spanish.ts. Eventuelle TODO-markeringer fjernes når oppdateringen lykkes.

Vi bruker regulære uttrykk til å dele hver oppføring i tre deler: nøkkelen og tegnene frem til åpningstegnet, selve teksten og avslutningen av linjen. Da kan teksten byttes uten at formateringen rundt blir endret.

Steg 4: Tydelige logger og trygg feilhåndtering

Skriptet gir en kort og tydelig status for hvert steg. Med colorama får de ulike meldingstypene egne farger:

  • Feil, som en nøkkel som ikke finnes i TypeScript-filen, vises i rødt.
  • Advarsler om avvik i variabler vises i gult.
  • Tomme oversettelser som hoppes over, vises i turkis.
  • Vellykkede oppdateringer vises i grønt.
Eksempel på fargekodede logger fra importskriptet

Fargene legges til ved å bruke Fore.COLOR_NAME i de aktuelle utskriftsmeldingene. Loggen gjør det enkelt å finne og rette avvik før endringene går til produksjon.

Hva vi får igjen for automatiseringen

  • Mindre manuelt arbeid: Det som tidligere tok timer, kan nå gjøres på sekunder.
  • Færre feil: Automatiske kontroller fanger opp manglende oversettelser, ukjente nøkler og variabler som er blitt oversatt ved en feil.
  • En løsning som tåler vekst: Den samme arbeidsflyten håndterer hundrevis av tekster og flere språk uten at den manuelle jobben øker tilsvarende.

Et praktisk eksempel

Når kunden leverer oppdaterte spanske oversettelser, kjører vi import_translations.py med én kommando. Skriptet leser Excel-dataene, kontrollerer oversettelsene og oppdaterer spanish.ts. Feil i variabler, manglende tekster og nøkler uten treff blir markert, slik at vi raskt kan rydde opp før publisering.

Konklusjon

Automatiseringen sparer ikke bare tid. Den fjerner ensformig kopiering, gir bedre kontroll og lar oss bruke mer av tiden på selve produktet. Det er fortsatt litt tilfredsstillende å se en times manuelt arbeid bli gjort på ett sekund.

Hvis teamet ditt håndterer oversettelser uten et eget verktøy, kan en enkel importflyt som denne være et godt sted å starte. Målet er ikke et komplisert system, men en pålitelig prosess som gjør det lettere å levere riktig tekst på riktig sted.

Fra idé til et produkt klart for markedet

La oss utforske mulighetene sammen

Kom i gang

Relaterte artikler