Localizing in Xcode 4 with Localizable.String

It’s simple once you understand it.

If you want to accomplish this with Xcode 5.x and iOS 7 or Xcode 6.x and iOS 8, check out “How to localize my app with Xcode 5?” instead.

I liked SNR‘s link, but his answer was a bit short.

Also, I see that this question is a bit old, and my answer may be different from older versions of Xcode. (I used Xcode v. 4.3.3)

However, i have updated my answer to work with both Xcode 4.3.5 and below + 4.4 and above (and Xcode 5.x and 6.x here: How to localize my app with Xcode 5?).

To begin you should add a new “Strings File” in the iOS Resource category.

Strings File

Next, create the file as “Localizable.strings”.
Create As

When the file is created, select it and open File Inspector .

The Localizable File
File Inspector

EDIT: Things have changed (a bit) with the new Xcode 4.4, 4.5 (and above) (for iOS 6 support).
If you’r Not using Xcode 4.4 or above, joust skip this step.

{ The Xcode 4.4, 4.5 (and above) way:

Click the “Make localized” button Make localized button

Now head over to your Main Project page.
Main Project page

And click the “+” button under Localization, and select the languages you want to support.

(I’ll select German / Deutsch)

List of languages

Now a window will appear asking you what files you want to localize, make sure Only the “Localizable.strings” file is selected and click Finish.

Only the "Localizable.strings" file is selected

}

{ The Xcode 4.3.5 and below way:

Click the “+” button under Localization, and select the languages you want to support.

(I’ll select German / Deutsch)

List of languages

}

.

.

.

.

You should now see that you have two files under the “Localizable.strings” file.

Localizable Files

Next, add your localization strings inside both of the localization files.

English

German

Now here comes the coding part.

Here i’ll simply declare a UILabel and set it’s text to the Localizable file string.

Declare:

IBOutlet UILabel *testLabel;

And Inside ViewDidLoad i’ll set the text using NSLocalizedString:

[testLabel setText:NSLocalizedString(@"TEST", nil)];

To finish up, just connect our testLabel in “Interface Builder”.

Connect IBOutlet

Now you should be able to run the Project and see the localized string.
And if you change the language, you should see the localized string change as well.

English Result Change the language German Result

Leave a Comment