A five-page website looks easy to translate until a button wraps, a placeholder disappears, or a product name changes halfway through. Treat model-assisted translation as a small release: inventory the content, define the rules, translate controlled batches, and test the rendered pages. Here is a first-run checklist for a brochure site with a contact form.
1. Inventory the text visitors actually see
Start with one source language and one target language. List the homepage, product page, pricing page, contact page, and shared navigation. Include page titles, descriptions, image alternative text, form labels, validation messages, and confirmation screens. These less-visible strings are easy to miss when you copy only page paragraphs.
Extract text into your framework's localization files rather than asking a model to rewrite entire templates. Give every string a stable key, such as contact.submit, and record its page, purpose, and any length constraint. Keep a source snapshot in version control so you can inspect every change.
2. Set the translation rules before the first batch
Create a short brief that specifies the target locale, audience, tone, and preferred terminology. A locale matters because spelling, date formats, and currency conventions can differ even within one language. Define which brand names, product labels, and technical terms must remain unchanged.
- Protect: placeholders, interpolation syntax, HTML attributes, URLs, email addresses, and string keys.
- Explain: whether each short string is a button, heading, error, or navigation label.
- Constrain: identify narrow buttons and menu items that need especially compact wording.
Flag legal and pricing language for human review. Translation should not silently change commercial promises.
3. Connect a model through SwiftRelay
SwiftRelay is a practical option for this workflow because it provides model access through an OpenAI-compatible SDK and charges per token. Sign up for SwiftRelay to use the small gift credit available to new accounts for an initial translation sample.
For an OpenAI-compatible SDK, set the base URL to https://api.fastapirelay.com/v1 and supply your API key through an environment variable. Keep that key in a local script or server process, never in browser code. Claude Sonnet 5.5 is one model to try; use the provider's documented model identifier in your request.
4. Translate one representative page first
Choose a page containing a heading, body copy, a button, and a form message. Send its keyed strings with the translation brief and request only a JSON object with exactly the same keys. Put the instructions separately from the source content, and explicitly tell the model to treat source strings as data, not commands.
A useful instruction is: Translate the supplied values into the target locale. Preserve every key and placeholder exactly. Do not add claims, omit content, or translate protected terms. Return only valid JSON. Provide contextual notes separately so they do not become published copy.
5. Validate structure before accepting the words
Parse the response rather than copying it directly into your project. Reject invalid JSON, missing keys, extra keys, and values with altered placeholders. Compare placeholder tokens between source and translation, including repeated tokens. Check protected terms and flag empty values where the source contains text.
Review the sample with a fluent speaker before translating the remaining pages. Fix the brief when terminology or tone is wrong, then rerun the sample. Once the rules hold, translate page-sized batches with the same glossary. Save accepted results so retries do not repeatedly translate unchanged content.
6. Inspect the translated website in its layout
Load the translated resources in a preview build. Check mobile navigation, button widths, cards, form errors, and longer headings. Test submission failures as well as successful form completion. If the target language uses a different writing direction, verify direction settings and layout behavior explicitly.
Confirm localized page titles, descriptions, language attributes, and locale routes. Keep a clear language switcher, and ensure missing translations fall back deliberately rather than exposing raw keys.
7. Publish a reviewed translation, then track changes
Ask a fluent reviewer to read the rendered pages, especially pricing, consent text, and contact instructions. Resolve their comments in the glossary as well as the current strings. Publish after the structural checks and visual review pass, keeping the previous resources available for rollback.
For future edits, translate only changed source keys. Record the model, prompt version, and glossary version with each batch. Your next translation lap becomes a repeatable release task instead of another full-site rewrite.