Localizing iOS apps to 15 languages without hiring translators
Half of our installs come from non-English markets. Every app we ship at mk0.net is localized to up to 15 languages from launch. We don't hire human translators. This is the workflow.
Why localize at all
iOS App Store rankings are per-country. Competition in English-language productivity apps is brutal; competition for the same app in Brazilian Portuguese, Indonesian, or Turkish is dramatically softer.
Localizing your title, subtitle, keywords, and description - even before the app UI - produces install volume that often exceeds the home market within months.
The xcstrings catalog workflow
Since iOS 17, Xcode supports .xcstrings string catalogs natively. This is the right format for new projects: a single JSON-backed file, per-language columns in Xcode's editor, automatic key extraction from your code.
Add Localizable.xcstrings to the app target. Use String(localized: "hello") everywhere. Xcode auto-extracts keys at build time. Never manually edit Localizable.strings again.
Machine translation: starter, not destination
Modern LLMs (Claude, GPT-4, Gemini) produce respectable translations for short UI strings - buttons, labels, settings, error messages. We feed each new English key in batches of 50-100 to a script that calls the API and writes back the localized JSON.
Long-form copy (descriptions, onboarding, legal) needs human review. We pay $30-100 per language for a native speaker on Fiverr or via a friend network to spot-check the LLM output for the 10-20 places it gets idiomatic phrasing wrong.
ASO localization: the bigger lever
App UI localization helps adoption. App Store metadata localization (per-country title, subtitle, keyword field, description, screenshots) drives downloads - by an order of magnitude more.
We treat ASO localization as its own job: keyword research per locale (different terms rank in different countries), localized screenshots with local language overlays, and per-locale description translations that aren't just literal.
Languages we ship to
Our default 15-language set:
- English (US/UK/AU/CA - same strings, different ASO)
- Spanish (ES/MX - separate where it matters)
- Portuguese (PT/BR - different)
- French (FR/CA)
- German
- Italian
- Dutch
- Japanese
- Korean
- Chinese (Simplified + Traditional)
- Turkish
- Indonesian
- Polish
- Vietnamese
- Hindi (with care - devanagari script and font)
Maintenance over time
Adding a new English string updates the xcstrings file with a 'Translate' badge for every locale. Every release we run the same translation script for all stale entries. The cost is approximately zero per release once the workflow is set up.
We re-audit the localized App Store metadata once a quarter - keyword competition shifts, language usage evolves, and new locales are worth re-targeting.
The countries that paid back
Top non-English markets in our catalog by install volume:
- Brazil (Portuguese)
- Mexico (Spanish)
- Turkey
- Indonesia
- Germany
- Japan
- France
Each is 10-30% of the US install volume on average. Combined, they often exceed it. The 'localize everything' strategy pays for itself many times over.