# Genererte 495 resultatsider på tre språk fra en skrivebeskyttet SQLite‑eksport, med sideadressen skrevet som data, slik at en rettet setning ikke lenger flyttet siden og brøt lenken.

august 2026

**Situasjon.** Selskapets porteføljeinnhold skrives i en egen database — den samme som produserer CV‑en — og nettstedet må publisere det som sider, på tre språk, uten at de to kopiene glir fra hverandre. Den naive tilnærmingen, å skrive sidene for hånd og holde dem i takt, svikter ved den første rettelsen.

**Oppgave.** Nettstedet måtte generere innholdet sitt fra databasen som inndata til bygget, med sideadresser som overlever at setningene på dem skrives om.

**Handling.** En eksportør leser databasen skrivebeskyttet og skriver én side per resultat per språk — 495 sider — pluss taksonomi- og tjenestedataene malene trenger. Den bruker bare standardbiblioteket, så nettstedets bygg er ikke avhengig av generatorens miljø, og fordi utdataene er sjekket inn, bygger nettstedet selvstendig. Den enkeltbeslutningen i eksportøren som får størst konsekvenser, gjelder adresser. Nettstedet utledet tidligere en sides URL fra de første ordene i den engelske formuleringen, så å rette en setning flyttet siden i det stille og brøt alle lenker til den — et nettsted som argumenterer for seg selv med at det retter ting, påførte seg selv en død lenke hver gang det gjorde det. Adressen skrives nå som data: én rad per adresse per resultat, den første er gjeldende, og hver senere er en utfaset adresse som nettstedet sender ut som en omdirigering. To andre feller fra det samme arbeidet er dokumentert. En sammenligning av perioder mot en tekstkolonne traff i det stille alle trettito radene på grunn av hvordan databasen tildeler typeaffinitet i en sammenligning. Og språklisten er nå den eneste aksen som skriveløkken, datafilene og spørringene alle utleder fra, så å legge til et fjerde språk er én oppføring i en oppslagstabell i stedet for et søk.

**Resultat.** Fire hundre og nittifem sider genereres fra én kilde, å rette en formulering koster ingenting, og adressene dette nettstedet noen gang har publisert, svarer fortsatt. Eksportøren eier også nøyaktig én presentasjonsbeslutning — hvordan tjenester grupperes i tematiske seksjoner — og det er bevisst: alt annet den skriver, tilhører databasen, og en gruppeoverskrift som mangler et språk, får eksporten til å feile i stedet for å vise engelsk over oversatt innhold.

---

- Rolle: Test- og kvalitetsingeniør
- Kategorier: [Frontend‑utvikling](https://software.engineer.company/nb/categories/frontend/), [Webutvikling](https://software.engineer.company/nb/categories/web-development/), [Databaser](https://software.engineer.company/nb/categories/databases/), [SQL](https://software.engineer.company/nb/categories/sql/), [Datapipelines (ETL/ELT)](https://software.engineer.company/nb/categories/data-pipelines/), [Python](https://software.engineer.company/nb/categories/python/), [Internasjonalisering](https://software.engineer.company/nb/categories/i18n/)
- Tjenester: [Utvikling av nettsteder og CMS](https://software.engineer.company/nb/services/web-development/), [Internasjonalisering og lokalisering](https://software.engineer.company/nb/services/i18n-localization/), [Utvikling av datapipelines (ETL/ELT)](https://software.engineer.company/nb/services/data-pipeline-development/), [Merkevare, markedsføring og SEO](https://software.engineer.company/nb/services/brand-marketing/)

<https://software.engineer.company/nb/portfolio/generated-321-achievement-pages-from-a-sqlite-export-132/>
