Xcode String Catalog Viewer (.xcstrings)
Open a Localizable.xcstrings file and see every key per language, translation coverage, what is missing or needs review, and the diff against another version. Everything runs in your browser. No upload, no signup.
Drop a .xcstrings file here or
Translate the whole catalog in one click
FlutterLocalisation now supports native iOS apps. Import your Localizable.xcstrings, let AI fill every language, review with your team, and get the catalog back in Xcode's own format through the dashboard, the CLI or a Git sync.
What this viewer shows
Xcode's String Catalog editor is fine for one language at a time, but it hides the overall picture: which languages are behind, which keys never got a value after you added a language, and what a translator changed in the file they sent back. This tool reads the same JSON Xcode writes and lays it out per language, with the state Xcode stores for every string.
- Coverage per language. Translated, needs review and missing counts, as a percentage you can put in a release checklist.
- Missing and needs-review filters. Jump straight to the strings that block a release.
- Plural variations. Each CLDR category (one, other, few, many) is listed on its own line.
- Info.plist keys. Permission texts such as
NSCameraUsageDescriptionshow up like any other key, so you can check them per language too. - Diff. Load an older catalog and see added, removed and changed strings per language.
Frequently asked questions
What is a .xcstrings file?
A String Catalog, the localization format Xcode 15 introduced to replace .strings and .stringsdict. It is one JSON file per table (usually Localizable.xcstrings) that holds every key, its comment, and the value and review state for every language, plurals included.
Is my String Catalog uploaded anywhere?
No. The file is parsed in your browser with plain JavaScript. Nothing leaves your machine, so you can drop a catalog from an unreleased app.
What do the states translated, needs_review, new and stale mean?
Xcode writes a state per language and key. translated is done, needs_review means the source text changed after the translation was written, new is an empty slot Xcode created when you added a language, and stale marks a key the code no longer references. This viewer counts translated as covered and the other states as work to do.
Why does a key show up as missing for the source language?
Xcode leaves the source language out of the file when the key is its own value, for example "Save" in English. The viewer fills those in from the key, so a missing source entry usually means the key is not an English sentence and nobody wrote the source value yet.
Can I compare two versions of a catalog?
Yes. Load a catalog, then drop a second one under "Compare with another catalog". You get the keys that were added, the keys that were removed, and every value that changed per language. Handy for reviewing a pull request or a translator delivery.
How do I translate a String Catalog with AI?
Create an iOS project on FlutterLocalisation, import your Localizable.xcstrings, and translate every language in one click. The platform writes the catalog back in Xcode's own format, through the dashboard, the CLI (fl pull) or a Git sync, so a build never rewrites the file.