Localizely logo
  • Home
  • Getting started
  • How it works
  • Pricing
  • FAQ
Sign up

I18n questions · iOS

Why is Localizable.strings not working in my iOS app? 

When NSLocalizedString or String(localized:) returns the key itself, the lookup failed somewhere between your source file and the running app. Go through this list in order; the first three cover most cases.

  • The file is not where the bundle looks. Localized strings live in <language>.lproj/Localizable.strings (for example fr.lproj), and the file must be a member of the app target. Open the built product (Products > Show in Finder) and check that the .lproj folder and the file are inside the app.
  • A syntax error disables the whole file. One missing semicolon or an unescaped quote stops the parser, and every key in that table comes back untranslated, not just the broken line. Run plutil -lint fr.lproj/Localizable.strings; it prints the line of the first error. Each entry must look like "key" = "value";, with inner quotes written as \".
  • Duplicate keys. The last definition wins, and plutil -lint does not report duplicates.
  • Key or table mismatch. Keys are case-sensitive and must match exactly, including spaces. Calls without a table name read Localizable.strings; NSLocalizedString("title", tableName: "Settings", comment: "") reads Settings.strings.
  • The app runs in another language. iOS picks the first of the user's preferred languages that the app supports, otherwise the development language. To test French, use Product > Scheme > Edit Scheme > Run > Options > App Language rather than changing the simulator's settings.
  • A String Catalog took over. After migrating to Localizable.xcstrings, Xcode compiles the catalog into the .strings files of the built app, so edits belong in the catalog; remove leftover .strings files for the same table from the target.
  • A stale build. Choose Product > Clean Build Folder and delete the app from the simulator or device before running again.

For debugging, add the launch argument -NSShowNonLocalizedStrings YES to the scheme: keys that cannot be found are logged and shown in capitals, which makes them easy to spot on screen.

The file format itself (comments, escapes, encoding) is described at Apple .strings.

Published Oct 9, 2026 · Markdown version

Related iOS localization questions:

Apple localization files:

Learn about Apple .xcstrings string catalogs
Localizely logo
About
Free tools
Boring stuff
  • Privacy Policy
  • Terms of Service
  • Cookie Policy
  • Compare
Newsletter
Copyrights 2026 © Localizely