Localization file formats, explained
How each platform stores its translations, the mistakes that break builds, and how to keep every language file in sync. For the whole workflow across platforms, see app localization, and for choosing a tool, see what a translation management system is.
iOS String Catalogs
How .xcstrings String Catalogs and .strings files work in Xcode, when to use each, and how to keep them in sync with your translators without merge conflicts.
Android strings.xml
How Android string resources work across languages: the values-xx folders, <plurals>, the escapes aapt requires, and how to stop translations breaking the build.
Flutter localization
How Flutter localization works with gen-l10n and .arb files: setting up l10n.yaml, what @@locale and @key entries mean, plurals, and keeping translations out of merge conflicts.
JSON for i18next and vue-i18n
How JSON locale files work in i18next, react-i18next and vue-i18n, flat versus nested keys, and how to keep every language file in sync.
Gettext .po
How gettext .po files are structured, how plural forms are handled, and how to use .po files with Django, Python and PHP projects.
Comparing tools
For eight tools side by side, with prices and who each one suits, see the best translation management systems.
Unlimited strings, one flat price
LocalizeMe never counts keys, strings or languages. Try Pro free for 14 days, no card needed.