iPhone Localisation Guide

Getting Started

In order to get maximum exposure for your application, you need to make it available on the international app stores. English speaking countries only make up less than 40% of the global app store market. In order for your international launch to be successful you need to localize the application for different languages. This sounds very daunting but is a simple process and YourCulture can help!

This guide takes you through the steps required to translate the application into the different languages supported by the iPhone. If you have any questions or need some help then please give us a call and we can help you through it. The guide is written for applications built in xcode.

First Step – Resource Files

In order for Xcode to recognize a localized application, you need to tell Xcode that your project includes multilingual resource files.

The simplest process to identify this to Xcode is to remove each resource file from the project and move it to the localized directory. This can be achieved through Finder. It’s important to remember to only click on ‘Delete References’ and not ‘Also Move to Trash’ at this point! This will ensure that the file itself is not removed, only the project’s reference to it.

If your source resource files are in English, then create a new folder called en.lproj in your project’s folder. If your source resource files are in a different language, replace it with the relevant two letter country code. These are in a table at the bottom of this guide.

Move the resource files into the newly created directory, and then drag the resource into the Xcode project. Xcode will now recognize the resource as localized in that language. Repeat for all your other resource files that you need to localize.

Step Two – Interface Builder Files

Extracting text strings

You now need to extract the strings of text that require translation within the application, in order to be able to send them to YourCulture for translation.

To extract the strings from your Interface Builder resource files, you can use a tool like ibtool, included with the standard developer kit install. This will bypass the need for you to manually go through copying all the text strings yourself.

To extract the files, open the Terminal software in the project directory and run the command (Replacing Example with your relevant project name):
“ibtool –generate-strings-file Example.strings en.lpoj/Example.xib”

This will create the file Example.strings (Or your own file name). When you open the file you should see a list of your projects object-string value pairings.

Go through this document carefully and check its contents, making sure that all the text that requires translation is included. You can also remove unnecessary strings, which don’t require translation, such as code comments or internal variables.

Duplicate strings

The resource file may contain duplicate text, such as some of the titles for buttons in different states.

Some duplicate text will need to be translated just once but other text will have different translations. The same button title, in different states, should clearly have the same translation. However, depending on the context other duplicate text strings may have different meanings. For example one could be a noun and in other places be a verb.

YourCulture can help advise you on which duplicate text strings actually need translating.

Step 3 – Embedded texts in resource files

The majority of iPhone applications contain two types of text – the applications interface (Which we dealt with above) and the embedded strings that appear in the code itself .

The strings in the interface are already arranged in a resource file. In order to localize the application, we need to make sure that the code itself only uses strings that are read from a resource file too.

A standard inline string would look like this:

@”Hello World!”

In order for the localization process to work correctly, the source files require editing so that the text is called from a resource file, as below:

NSLocalizedString(@”How to localise”, @”Title”)

When using translation services it’s very important to add comments in places where the text is not self-explanatory. This way, the translator who’s translating your application will know what the text is used for and how to translate it correctly. In the example above “Title” is the comment for the “How to localize” string.

With the revised text, “How to localise” is actually a token. The NSLocalizedString function will produce the string that will be output. It will refer to the resource file and return the localized, translated text for “How to localise” according to the iPhone’s set language. NSLocalizedString will read the Localizable.strings file from the localization directory.

Once this is done for all the user-facing text, then the application is ready for the translated text.

Creating a Localizable.strings file

You can use genstrings to collect all the strings that need to be translated and create the Localizable.strings file. To run it, open Terminal, go to the project directory and run:

genstrings -o en.lproj *.m

This will pull all the keys from the NSLocalizedString calls, and compile them into one Localizable.strings file in the en.lproj localization directory. If your class files are in a different directory, make sure you include them at the end of this command (e.g. Classes/*.m).

Step 4 – The translation!

Now, you can send both resource files to YourCulture for translation. YourCulture can read the resource files in any encoding and extract the relevant text to translate.

It is important to note that you will also want to translate the Application App store description to ensure that you maximize your global application sales.

Experienced, qualified, native translators will translate the text. Any questions around the meaning of the text will be communicated back to you to ensure that the translation is 100% accurate.

YourCulture will then send the finished, translated resource files back to you to import into the application.

Step 5 – Localised User Acceptance Testing

Once you have imported the resource files back into the application, the application should then run in the language that is set as the iPhone native language. When the user changes the language on the phone, the applications language will also change.

It is important to test the application in every language prior to release. Even if the application is working perfectly in English, the user experience may differ for different languages. For example when translating from English to Russian the text length will expand. This may affect the application layout or even the ability to read all of the text within the application.

YourCulture are able to offer User Acceptance Testing by a native translator if you would like to ensure that the context, meaning and user experience if optimised for each language.


With experienced, native linguists in over 200 languages we are certain YourCulture can meet your translation needs. For more information about our specific translation services click on the relevant sections below, or if you want to talk through your requirements then call +44 (0)203 951 0045.

A example of some of the languages we can translate to and from is listed below – If the language you need is not listed then please still call +44 (0)203 951 0045

Afrikaans Translation
Albanian  Translation
Aymara  Translation
Amharic  Translation
Armenian Translation
Arabic Translation
Azeri Translation
Basque Translation
Bulgarian  Translation
Burmese  Translation
Bosnian Translation
Belarusian  Translation
Berber Translation
Bengali Translation
Bashkir Translation
Bantu Translation
Catalan Translation
Czech Translation
Chinese Translation
Croatian  Translation
Creole Translation
Corsican Translation
Danish Translation
Dutch Translation
Dari  Translation
Dinka  Translation
Estonian Translation
Ewe  Translation
English Translation
Eskimo Translation
French Translation
Finnish Translation
Farsi Translation
Fijian  Translation
Flemish Translation
Fang Translation
Faroese Translation
Fulani Translation
German Translation
Greek Translation
Gujarati Translation
Georgian  Translation
Gaelic Translation
Hungarian Translation
Hebrew Translation
Herero  Translation
Hawaiian  Translation
Hausa  Translation
Hindi  Translation
Hmong Translation
Italian Translation
Icelandic Translation
Indonesian  Translation
Ibo  Translation
Japanese  Translation
Kazakh  Translation
Kurdish  Translation
Kyrgyz  Translation
Kirundi  Translation
Korean Translation
Khmer Translation
Kiswahili Translation
Kikuyu Translation
Lithuanian Translation
Latvian Translation
Letzeburgish Translation
Maltese Translation
Mongolian  Translation
Maori Translation
Malagasy Translation
Macedonian  Translation
Malay  Translation
Marathi Translation
Maasai  Translation
Mandinka Translation
Norwegian Translation
Nahuatl  Translation
Nubian Translation
Oromo Translation
Portuguese Translation
Polish Translation
Pashtu Translation
Papiamento  Translation
Punjabi Translation
Quechua  Translation
Russian Translation
Romanian  Translation
Spanish Translation
Swedish Translation
Slovak Translation
Slovenian Translation
Somali  Translation
Samoan  Translation
Serbian Translation
Singhalese Translation
Sherpa  Translation
Sesotho Translation
Turkish Translation
Turkmen  Translation
Tibetan Translation
Tupí-Guaraní (Ñengatú)  Translation
Tongan  Translation
Tamil Translation
Thai Translation
Tagalog Translation
Ukrainian Translation
Uzbek  Translation
Urdu  Translation
Vietnamese Translation
Welsh  Translation
Wolof  Translation
Xhosa  Translation
Yiddish  Translation
Yoruba Translation
Zulu  Translation

Leave a Reply