Apple .strings localization with AI
Apple .strings files: "key" = "value"; pairs per lproj folder.
.stringsformat: ios-stringsone file per locale
What it is
The classic iOS and macOS localization format, one Localizable.strings per locale folder (en.lproj, es.lproj). Still common in older projects and in InfoPlist.strings.
Example
App/en.lproj/Localizable.strings
/* Title on the sign-in screen */"signin.title" = "Sign in to %@";
/* Button that sends the reset email */"signin.forgot" = "Forgot password?";How Glossa handles it
- Plurals
- .strings has no plurals; pair it with .stringsdict, which Glossa reads too, or migrate to a String Catalog.
- Comments and context
- The /* … */ comment above each pair is kept as context and written back.
- Placeholders
- Format specifiers such as %@, %d and %1$@ are protected and checked.
- Round trip
- The locale comes from the lproj folder name, including region and script variants such as pt-BR.lproj and zh-Hans.lproj.
Translate it from the command line
Push the source-language file; strings are deduplicated against the rest of your workspace and queued for translation. Pull writes App/es.lproj/Localizable.strings back in the same format.
npx @meterapp/glossa loginnpx @meterapp/glossa push App/en.lproj/Localizable.strings --project appnpx @meterapp/glossa pull --project app --locale es,de,jaOr ask an agent over MCP: “Push App/en.lproj/Localizable.strings to Glossa and pull Spanish.” It calls push_file and pull_file. See the CLI and MCP guides.
Other formats
Xcode String CatalogFlutter ARBJSON (key/value, i18next)YAML (Rails i18n)Apple .stringsdictAndroid strings.xmlGettext PO/POTXLIFF 1.2 / 2.0Java .properties.NET RESXCSV / TSV (multi-locale)
Moving from Crowdin? Read the comparison.