Skip to content
Mac$39.99 one-time · no subscriptionmacOS 14+
OhmsPolyglot · localization · Live

OhmsPolyglot.

An editor and linter for Xcode String Catalogs.

Mac App Store$39.99 one-time · no subscriptionNo data to Silo · your own AI keys
01 · Checks without a key

Issues before your users find them

Show Issues (⇧⌘I) needs no key and no network. It lists languages with no text for a key, strings Xcode marked New or Needs Review, plural variations missing a form the language needs (Russian “few” and “many”, for instance) or carrying one it never uses, translations whose placeholders changed count or order, keys Xcode no longer finds in your code, and keys that share the same source text. Choose a finding to jump straight to its key.

02 · Placeholders survive

A write-guard, not a hope

Every machine translation is compared with its source: the same %@, %lld, %#@name@ and {count} placeholders, the same number of times, each reading the same argument as the same type. Numbering them to reorder (%2$lld … %1$@) is accepted; swapping them is not. Every glossary term from Settings that the source uses has to come back verbatim. If a check fails, OhmsPolyglot asks once more, then leaves the entry empty and lists it rather than write a string that crashes String(format:).

03 · Your endpoint, your call

Strings go only where you send them

Translate Missing (⌘T) is optional and fills only empty entries, in the languages you pick: the ones already in your file plus any language code you add, remembered per catalog. Keys marked Don't Translate, stale keys and plural or substitution entries are skipped. Before anything leaves the Mac it shows how many entries will be sent, and where. Each request carries the key, its source text and developer comment, your glossary and the target language, over HTTPS to the provider whose API key you pasted, or over loopback to a model server on this Mac. API keys live in the macOS Keychain.

What it does
edit
Open, edit, save

Click any value to correct it. Add, rename or remove manual keys, clear stale keys in one step, and save to the same file. Plural forms, substitutions and metadata you did not edit go back untouched. If Xcode rewrites the catalog while it is open, Save stops and asks before replacing Xcode's changes.

.xcstrings · ⌘O / ⌘S
export
Android XML, Flutter ARB, CSV

Preview the exact file, then write any language as Android strings.xml with converted placeholders, valid resource names and <plurals>, as a Flutter ARB file with Dart-safe keys and declared placeholders, or as a CSV of every language side by side for a human reviewer. Untranslated keys stay out of per-language files, so the platform falls back to its default strings.

preview · XML · ARB · CSV
import
Legacy .strings and .stringsdict

Still on Localizable.strings and .stringsdict? Bring them into the catalog from their .lproj folders. Text the catalog already has is never overwritten.

⌥⌘I · .lproj folders
price
$39.99 once, Mac only

One-time Mac App Store purchase, with no subscription and no Ohm account. Translation is optional; if you point it at a paid provider, that bill is between you and them.

macOS 14+ · no subscription
OhmsPolyglot · Live · $39.99 once
Checking never touches the network. Translating goes only where you point it.

Opening, editing, checking, importing and exporting run entirely on this Mac. Translate sends entries straight to the endpoint you set in Settings, and Silo Systems receives none of them.

More

More Ohm apps that talk only to the provider you choose.

3 related apps