iOS localization: iPad and iPhone app localization tutorial

Just localizing an iOS app into one additional language can add hundreds of millions of potential users.

Preparing your iOS app for localization in Xcode

Prepare iOS apps for localization

The first step of iPhone localization is reorganizing your project in Xcode so that it understands that you have a multilingual app.

Place all your iPhone app localization resources in one en.lproj basket

Localizing Xcode
  1. By default, Xcode creates the en.lproj folder for you where it stores files like MainStoryboard.storyboard and InfoPlist.strings. If it's not there already, go to the Finder now and create a folder inside your project folder called en.lproj. Move any resource files you plan to localize into your en.lproj folder. These might include .strings files or even images like PNG that have text you plan to localize for your iPhone app.
  2. Since we've reorganized folders in the Finder, you'll want to remove references to the resource files from the Xcode project window. Highlight the files in Xcode and press the Delete key. IMPORTANT: Select "Remove References Only" to remove the file from the project, but do NOT choose "Delete".
  3. Switch back to Finder and, with your resources safely inside the en.lproj folder, drag the whole folder back into the Xcode project window. This will allow Xcode to recognize the resources as iPhone/iPad localization files for each language.
  4. As you may have guessed, en is the international code for English, so if your original language is something else, use the appropriate language code from this guide. You can create additional folders for the languages you want to localize your iPhone app into: es.lproj for Spanish, fr.lproj for French, and so on. Drag these iOS localization folders into the Xcode project window for easy access. (For Chinese note that Xcode prefers zh-Hant for Traditional Chinese and zh-Hans for Simplified Chinese.)

Now we have a place to store our Localizable.strings file for your iOS app localization — and that's precisely what we're about to create!


Extract your app strings for iOS localization.

iOS app localization service

Change hard-coded strings to NSLocalizedString. Then use genstrings and ibtool to extract your text for iPhone app localization.

Gather every last nib and string to localize your iPhone or iPad app.

  1. Let's begin by making sure your coded strings are ready for iPhone localization. You did use NSLocalizedString in your code, didn't you? If not, go back and change all hard-coded strings like this:

    Unlocalized string in iOS Xcode
    NSLocalizedString example

    Ideally, you should do this with every string a user sees, including those you create in Interface Builder. Always include a helpful comment for the translators so that they know what this text is about. Remember, they'll be seeing it totally out of context and your helpful hint here is all they have!

  2. Linguan Icon

    Helpful tip: Using Linguan to speed things up. There is a great app out there that simplifies the whole string extraction process. It's called Linguan and is available in the Mac App Store. It costs $19.99 currently, so it's not for everyone, but it does make things a whole lot simpler. As a side note: if you have Babble-on localize 4 or more languages for your app, we'll gift you Linguan for free to make things easier for both of us!

    You can see a video of how to use Linguan directly from the developer's site.

    Here's the old-fashioned way of doing it. You have two kinds of texts in your app that we need to extract: Interface builder nibs (.xib) and coded strings. First, we'll use genstrings to extract all the NSLocalizedString texts we created in Step 1. Open Terminal and navigate to your project's home directory. Then run this command:

    find . -name \*.m | xargs genstrings -o en.lproj

    This creates a strings file called Localizable.strings that extracts all NSLocalizedString calls into a single file in the en.lproj localization directory.

  3. Optional – only necessary if localizing Interface Builder xibs. We can use a similar command called ibtool to extract interface elements from Interface Builder. (Remember, the ideal solution would have been to use NSLocalizedString for all elements here, too, making this step unnecessary.) In Terminal, change to the en.lproj directory where you stored all .xib files and paste in this command:

    find . -name \*.xib | xargs -t -I '{}' ibtool --generate-strings-file '{}'.strings '{}'

    This command will create a .strings file for each and every. .xib resource. Be sure to check the document carefully and remove any unnecessary strings that you don't need localized.

And, voilà. Your app will soon speak enough French to understand the word "voilà!" You have all the .strings files you need to send to your iPhone localization team!

Start translating your app right away using this free Multilingual iOS Term Glossary.
It contains common translations for iOS terms, including things like Settings, Tap, etc. in a dozen languages.

iOS Localization in Xcode

IMPORTANT: When you receive the Localizable.strings files back from the translators, simply place them into the correct .lproj folder and Xcode will do the rest! Do NOT rename the files or Xcode won't find them.

See also:

Language Codes
Complete list of ISO-639 language codes to use for your iOS app. Use these to name your xx.lproj folders.
iOS Localized Glossary
This page contains many common translations for iOS terms, including things like Settings, Tap, etc.
Developer Guide
Apple's guide for preparing your nibs.


Pseudolocalization —  testing you've found every string

Inventing your own language to spot mistakes.

Once you've finished preparing your .strings file you're probably having doubts that you actually managed to find every hard-coded string in your app. What about those error messages or that plug-in you use? Well, there is a quick way to check. It's called pseudolocalization.

Essentially, you use a program to substitute all the English (source) phrases with a fake language. Load up this gibberish Localizable.strings file into Xcode and then run your app. Check every screen and make sure all the text appears as the pseudo-localized text rather than your original. If you can't spot any missing strings, you're good to go.

Tip: Pseudolocalization is also a great way to make sure you've left enough room in your GUI for other languages. A common rule of thumb is that non-English languages are 30% longer, so tiny buttons and titles may not fit when you localize. Pseudolocalization can help you spot those cramped spaces too!

Check it out: Free Pseudolocalization from Babble-on
Send us your .strings file and we'll send you back a pseudolocalized file to test.


What to send to the translator

Integrate strings for iOS apps for localization

Don't forget iPhone App Store descriptions and keywords.

Hire a professional translator for each language, or do every language simultaneously with Babble-on iPhone app localization!

You've generated your .strings files, both from Interface Builder and coded strings from Xcode, and those go to the iPhone localization team you hire. That's not everything, though. You'll definitely want to have your app description for the App Store localized as well. Since iTunes Connect will also ask you for keywords, make sure you come up with a list of keywords for your translation team to localize. This ensures that users in other languages will find your app when searching their localized version of the App Store.

How much does it cost to translate an app description?

Estimate the cost of localizing your existing app description from the iTunes, Google Play, or Windows Store URL.

App Store URL:

This might also be a good time to read through your App Store description and make sure it is the best it can be—before you have it translated into 30 languages.

Check it out: How to write an iTunes App Store description »


Now your app can speak that

Hiring a team for iOS localization.

1. Send your iPhone localization strings.

Prepare iOS apps for localization

Calculate the word count and cost of your Localizable.strings file for iOS localization. Don't forget your keywords and App Store description.

2. We'll translate.

iOS app localization service

We'll produce localized Unicode text files to insert back into your iOS app in Apple's Xcode.

3. Users rejoice.

Integrate strings for iOS apps for localization

iPhones and iPads are multilingual out of the box, so your app's interface will appear localized for the user automatically.


Budget localizations using a free App Localization Cost Calculator

iPhone App Localization Cost Calculator

Now that you have all your text ready for translation, you're probably wondering how many words you have and how much that will cost to translate. Use Babble-on's free iPhone app localization cost calculator to find out.

Try the cost calculator »

See Press Release: San Francisco iOS App Localization Service Says No to the Factory Model, Introduces Cost Estimator


Multilingual iOS application iPhone localization examples

Talk to a real translator.

Interested in professional iPhone localization from a team that cares about making apps awesome? Unlike automated or cloud translation services which will translate your "bold" text as brave and "Archive" as a noun without considering it might be a verb, Babble-on is a dedicated team of translators that put as much care into localization as you do into app development.

You can talk to us about your project the whole way through, not just upload your strings and cross your fingers.

Developers, send us your strings! We localize iOS apps »


Tips for how to localize your iOS app

iPhone, iPad, iPod Translator San Francisco

Localize iOS apps into the right languages

Using iTunes Connect, you've probably already noticed users from all over the world downloading your app. How many more users can you get by translating and localizing your iOS app into another language? Into two, or more? Once you've created the .strings file using the tutorial above, it's very simple to localize your iPhone or iPad app for the iOS App Store.

From our FAQ: Which languages are worth localizing into? »

Is your App Store description going to sell?

Writing a description of your app for the App Store description is often difficult for even the best developers. How do you make your app sound great without sounding like a door-to-door salesman? How will the description translate when you localize your iPhone app, and are there any issues to consider for new markets? Babble-on helps developers with both the copywriting and translation, so we know this subject very well. Ask us for help.

Check it out: Tips for writing your iTunes App Store description »

localize iPhone/iOS app localization San Francisco

Tell your users in their language.

A user can set their preferred language by going to Settings -> General -> International -> Language. Once the language is set, the iPhone/iPad will display all text, including the app's name on the home screen, in the user's local language.

Professional iOS localization

We love iPhone and iPad apps and are excited to help you localize your projects and test them in multiple languages. Whether you need your iPhone app localized into Spanish, Japanese, Russian or any other language, Babble-on is ready to help.


Need more help?

App Localization FAQ

Questions or Comments?