Prompt
building a workflow for translators and engineers
Latest observation
Sep 30, 2026
OpenAI APIWeb search: off
Here’s a practical way to think about a translator + engineer workflow: make it easy for translators to work in a content-friendly environment, and easy for engineers to ship changes without breaking language data.
A solid workflow structure
1) Source content lives in one place
- Product/UI text, docs, or marketing copy should come from a single source of truth
- Store it in a format that engineers can manage cleanly:
- JSON, YAML, PO files, XLIFF, CSV, or a localization platform
- Avoid hardcoding strings in the app
2) Use clear string keys
- Example:
nav.homecheckout.button.pay_now
- Keys should be stable and descriptive
- Don’t use the English text as the key unless you really want translation churn
3) Separate responsibilities
Engineers
- Extract strings
- Add/update keys
- Handle pluralization, interpolation, and fallback logic
- Ensure locale files are validated in CI
Translators
- Translate in a platform or file format designed for translation
- See context: screenshots, comments, character limits, notes
- Avoid direct code editing if possible
4) Add context for translators
This is one of the biggest workflow improvements. Include:
- Screenshot or UI location
- Short description of where the string appears
- Tone guidance
- Gender/plural rules
- Character limits
- Placeholder meaning, e.g.
{count},{username}
5) Review and QA
- Translation review by a second translator or locale lead
- Automated checks:
- missing keys
- unused keys
- placeholder mismatch
- invalid ICU/plural syntax
- In-app QA on a staging environment
6) Sync with release process
A typical cycle:
- Engineers add new source strings
- Strings are pushed to a localization system
- Translators translate
- Review happens
- Engineers pull translations back into the app
- QA validates in staging
- Release
Recommended tooling setup
Good options
- Localization platforms: Lokalise, Crowdin, Phrase, Transifex
- Open-source / file-based: POEditor, Weblate
- Developer-friendly libraries:
- JavaScript/TypeScript: i18next, FormatJS, react-intl
- iOS/macOS: NSLocalizedString, String Catalogs
- Android: strings.xml
- Backend: ICU MessageFormat support
Best practice
Use a platform if:
- many languages
- multiple translators
- frequent releases
- need screenshots, comments, and workflow states
Use file-based only if:
- small team
- low translation volume
- simple app
A simple end-to-end workflow example
- Engineer adds a new string:
profile.save_button = "Save changes"
- System exports it to localization tool
- Translator sees:
- context: “button on profile settings page”
- screenshot
- character limit: 16
- Translator enters localized text
- Reviewer approves
- CI checks for:
- all locales present
- no missing placeholders
- App ships with updated translations
Common pitfalls to avoid
- Translators editing code directly
- No context for ambiguous strings
- Reusing the same English string key for multiple meanings
- Hardcoded concatenation like
"Hello " + name - Missing support for plural forms and gender
- No validation in CI
- No clear ownership over translation updates
If you want a robust workflow, include these rules
- Every string needs a stable key
- Every string needs context
- Every translation passes automated checks
- Engineers own implementation
- Translators own localization quality
- Final approval happens in staging
If you want, I can also give you:
- a sample translation workflow diagram,
- a GitHub-based workflow, or
- a tool stack recommendation for web/mobile/product docs.