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](https://i.stack.imgur.com/LwMQc.png)
Next, create the file as "Localizable.strings".
![Create As](https://i.stack.imgur.com/bMql9.png)
When the file is created, select it and open File Inspector .
![File Inspector](https://i.stack.imgur.com/XWPDa.png)
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](https://i.stack.imgur.com/d0nia.png)
Now head over to your Main Project page.
![Main Project page](https://i.stack.imgur.com/hNr6i.png)
And click the "+" button under Localization, and select the languages you want to support.
(I'll select German / Deutsch)
![List of languages](https://i.stack.imgur.com/6jw0j.png)
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](https://i.stack.imgur.com/B3WMs.png)
}
{ 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](https://i.stack.imgur.com/6jw0j.png)
}
.
.
.
.
You should now see that you have two files under the "Localizable.strings" file.
![Localizable Files](https://i.stack.imgur.com/N6nVV.png)
Next, add your localization strings inside both of the localization files.
![English](https://i.stack.imgur.com/9VwrU.png)
![German](https://i.stack.imgur.com/chY0n.png)
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](https://i.stack.imgur.com/tdFgK.png)
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.
![German Result](https://i.stack.imgur.com/NVQz1.png)