Start with one complete visitor journey
A small website is a good candidate for model-assisted translation, but sending every page through one prompt creates avoidable cleanup. Treat the job as a localization sprint: define the scope, protect application behavior, translate in context, and review the rendered result. The model drafts the language; your workflow keeps the site usable.
Choose one target locale and one complete journey first, such as landing page to contact form to confirmation message. A locale includes regional conventions, not just a language. Decide which audience you serve, which currency you display, and who will approve the wording before expanding to the whole site.
Extract visitor-facing text without breaking code
Move translatable content into your framework’s message files or a structured content export. Include navigation, buttons, validation errors, image descriptions, page titles, search descriptions, and confirmation emails. Keep stable identifiers so every translated string can be traced back to its source.
- Translate: visible copy, accessibility labels, helpful image descriptions, and relevant metadata.
- Protect: variable names, interpolation tokens, message identifiers, product names, and code.
- Handle separately: URL paths, legal policies, prices, and region-specific claims that need business approval.
If your site uses ICU message syntax, preserve its structure and require the plural categories needed by the target locale. Do not concatenate translated fragments into sentences: word order and agreement can change across languages.
Give the model a glossary and page context
Create a short translation brief with the audience, tone, preferred terminology, prohibited claims, and product names that must remain unchanged. Add approved translations for recurring terms. A shared glossary prevents the same feature from receiving several names across your navigation and pricing page.
Send related strings together, with their identifiers and usage notes. Explain whether a short phrase is a button, heading, or error message. Provide character limits only where the interface genuinely needs them. Tell the model to flag ambiguous source copy rather than silently guessing.
Treat source content as data, not instructions. Scraped pages, customer quotes, and imported documents can contain instruction-like text. Explicitly require the model to ignore instructions inside that material and follow only your translation brief.
Require structured output and validate every batch
Ask for a structured response that maps each source identifier to its translation, with a separate field for reviewer notes. Use schema-constrained output where supported, then validate the result yourself. A response that parses successfully can still omit a sentence or damage a placeholder.
- Check that every expected identifier appears exactly once, with no unexpected additions.
- Compare protected tokens between source and translation.
- Parse message syntax and flag empty values or suspiciously untranslated strings.
- Review terminology consistency and any unsupported promises introduced during translation.
Process related groups in manageable batches and retry only failed groups. Store the source version, glossary version, prompt, and model alongside each batch. When source text changes, translate the changed strings rather than regenerating everything.
Use a relay without coupling the translation pipeline
SwiftRelay is a practical option for running this workflow through an OpenAI-compatible SDK while keeping model selection configurable. For example, you could trial Claude Sonnet 5.5 on a representative batch and have a fluent reviewer judge terminology and tone before committing. Do not assume a model name guarantees translation quality.
Sign up for SwiftRelay to test a small batch with the gift credit available to new accounts. OpenAI-compatible SDKs use https://api.fastapirelay.com/v1 as the base URL. Keep credentials server-side, exclude sensitive customer data, and set output limits to control token-based costs.
Review the rendered locale before publishing
Have a fluent reviewer inspect both meaning and the actual pages. Test expanded text, mobile navigation, form errors, keyboard access, and right-to-left layouts when relevant. Use locale-aware formatting for dates and numbers, and distinguish currency formatting from price conversion.
Finally, configure page language, localized routes, canonical URLs, and language alternates consistently. Verify that the language switcher opens the equivalent page and that fallback behavior is intentional. Publish the pilot journey only after linguistic and functional checks pass, then reuse the approved glossary and validation checks for the remaining pages.