People move to the Queenstown Lakes District from all over the world, for work, study, a working holiday or family. Many have English as a second language. Queenstown Lakes District Council's Welcoming Communities programme helps them settle in, and its main tool was a printed Newcomers Guide: ten sections on everything from finding a rental to converting a driver licence.
A printed guide has the same page for everyone, in one language, and goes out of date the day it's printed. The council wanted it online, in the languages people actually speak, and useful to the person reading it.
I rebuilt it as a website. Every page is in five languages, including te reo Māori and right-to-left Arabic, and five short questions turn the whole guide into a checklist for your own situation.
Impact
- Languages on every page, including te reo Māori and right-to-left Arabic
- 5
- Words of guide, written in English and kept in step in four more languages
- 10,000
- Different personal guides from five questions
- 718
- WCAG 2.1 accessibility, throughout
- AA
From print to the web
The guide kept its shape: ten colour-coded sections, each with its te reo Māori name, broken into 38 topic pages. Each topic gives the steps in order, who to contact and where, and what most people read next. Contact details for the reader's own area come first, marked "Near you".
Moving the content across also meant checking it. The printed guide says you can drive on an overseas licence for 18 months. That drops to 12 months on 1 November 2026, so the website says 12 and explains what happens to people who started converting before the change.
Every word, in every language
Translated sites usually break the same way: a page gets a new paragraph in English and nobody notices it's missing in Arabic. So here, a missing translation fails the build.
Every piece of text is declared once with all its languages. English sets the shape, and leaving out a language, or a sentence within one, is a TypeScript error. Adding Latin American Spanish was one line in the language list. The compiler then listed every piece of text still missing it.
Nothing is translated as the page loads. Every page is rendered ahead of time in every language and served as a static file from Cloudflare, so the Arabic site loads as fast as the English one.
Translations are drafted with AI, under written rules: plain, warm language rather than word for word. Te reo headings, place names and organisation names stay as written, and Spanish says tú, never vosotros. Translations supplied by professional translators are never rewritten, and anything about health, legal rights or emergencies is flagged for a human to check.
Arabic needed more than translated words. The whole layout mirrors: navigation, arrows, cards and the progress count. A few things must not flip: addresses, websites and email addresses are pinned to read left to right, so an Arabic page never scrambles a street number.
A guide that's yours
The printed guide is the same for everyone. A seasonal worker on a working holiday and a family who've moved from Auckland need very different first weeks.
So the site asks five questions: what brings you here, where you're moving from, when you arrived, who you're with, and where you're living. Every question has a "Skip and show me everything" option, and the answers stay in your browser. There's no account and no email address.
The answers become a checklist of around a dozen tasks across four stages, from "First week" to "Settling in". Someone moving from elsewhere in New Zealand skips the bank account, tax number and licence conversion. A family with children gets school enrolment. Someone on a working-holiday or student visa is told that public healthcare probably doesn't cover them before they try to enrol with a doctor.
Tasks with a deadline follow you. If you arrived three months ago and haven't converted your licence, it moves into your current stage, with its deadline shown for when you arrived. Every suggestion says why it's there: "Because you're settling in Queenstown".
The rules are plain functions, separate from the pages. A sweep of 7,200 possible answer combinations checks that none of them breaks, that no task appears twice, and that a suggested page is never one that's already on your plan. Those combinations produce 718 different guides in English alone, and over a hundred tests pin the rules down.
Where things are
The printed guide's district map became a real one. Places from the guide sit on an OpenStreetMap base, filtered by what you need: support and advice, health, Council and libraries, or getting around. Every pin is also in a list beside the map, so the map is never the only way to find something.
Built for everyone who'll read it
This is a public council site, so WCAG 2.1 AA wasn't optional. The council's section colours didn't all pass contrast, so each one has a darker "ink" shade for text, and the brightest colours take dark text instead of white. Every control works from the keyboard and shows where focus is, and choice tiles are real radio groups that screen readers announce properly.
Readers can also say whether a page helped, and leave fuller feedback. Votes and submissions are stored in Cloudflare D1, each submission is emailed to the Welcoming Communities team, and both are rate limited. If the email fails, the failure is recorded against the submission rather than lost.
How it's built
- Web: Next.js 16 and React 19, with Tailwind CSS and shadcn/ui components restyled to the council's design system.
- Languages: routed as
/en,/mi,/zh,/arand/es, with no i18n library. A first visit is matched to the browser's language, and the choice is remembered. - Hosting: Cloudflare Workers through OpenNext, with every page served from static assets.
- Data: Cloudflare D1 for page votes and feedback, Resend for the team email.
- Map: Leaflet on OpenStreetMap, with pinch zoom on phones.
- Tests: Vitest, with the tailoring rules covered by a mutation-checked suite.
What I'd take from it
Translation is a build problem, not a content problem. Once a missing sentence in any language stops the site from building, five languages are no harder to keep accurate than one, and adding the next one is a day's work.
