Launching Your App in The App Store

Step 4: Localizing & Internationalizing Your App

Ben Johnson
6 min readSep 24, 2015

There’s a lot that goes in to an App Store launch. On September 29th, we launched Free Time 2, the second version of our popular calendar app for iPhone. Each day before launch we posted a new article on how we marketed the app and how you too can stack the deck for a successful app launch.

Catch Up on Previous Posts Here

Step 4: Localizing & Internationalizing Your App

Why Localization Matters

I forgot to localize/internationalize my first app and it was a huge mistake. That was 4 years ago and today it would be an even bigger mistake, so don’t follow my footsteps because we probably lost out on tens of thousands of dollars.

For the purposes of this article and my sanity, when I write localize or localization, assume I also mean both internationalize and localize. They are slightly different terms and if you’re curious what the difference is, you should read about them here.

So, localization matters and here’s a graph from App Annie’s recent App Store Market Metrics for Q2 to get you to believe it if you didn’t already. I hope these charts are fairly self explanatory because what you will quickly realize is that by not localizing your app, you’re missing out on a huge market outside of the United States.

For Free Time 2, we specifically chose to localize our app for the following languages: Chinese (Traditional & Simplified), Japanese, and Korean. This was primarily due to the number of App Store views and downloads of Free Time 1. We felt these languages would give us a very firm ground in the Asian market and if you download the app in one of those countries you might not know it was originally built in English.

We do plan to localize in other languages as well, but before we pay for more costly full app translations, we plan to only start with a translated App Store Description. If we see a spike in downloads that could cover the costs, we’ll know that a full translation might make sense.

Got It, Localization Matters, What Now?

Abstract All of the Strings In Your App

If you’re a developer, or working with one, stop what you’re doing and make sure you are doing this right now! It is very easy to put this off and wait until the end but it will become a gigantic pain in your side if you wait.

The basic idea is to take all of the “strings” — the user visible sentences and words — and put them in a standard place using constants. You’ll also want to use NSLocalizedString macros to keep track of each string’s purpose and usage (this will help your translators). Here’s a screenshot of the top of our Constants.h file which contains all of our translations in one spot. If you’re connecting to a server and generating messages for your app, keep track of your strings on the backend as well.

You may think that this is a trivial matter, but there are a lot of words that need to be translated even in a simple app. Here’s a side by side of our app in English & Japanese. Keep in mind that Free Time 2 is a very simple app in and even it has 325 words and another 125 of description on the App Store.

A side by side comparison of the English and Japanese versions

Pay special attention to times & dates, currencies, units of measurement, etc.

These types of user visible strings require some special consideration. If you have a date representation (i.e. “Next Week” or “M”) a currency (i.e. “£ $ €”) or measurement (i.e. “15 pounds or 5 gallons”) you’ll have to work even harder because these can’t be easily translated. The short story is that Apple (and Google for that matter) has done a ton of work already to make this easier but you should leverage system frameworks wherever possible. Some of the more useful ones are NSDateFormatter and NSNumberFormatter but MKDistanceFormatter, NSLengthFormatter or NSEnergyFormatter can come in handy depending on what type of app you’re building.

The best advice I can give you is to read this guide from apple cover to cover.

For the developers reading this, here’s a snapshot of some of the code we use to generate date strings in Free Time 2.

Beware of Plurals

Pluralization of words is a fascinating area of localization but one that you should stay far far away from. Take for instance the sentences “He bought a dog” and “He bought two dogs.” To english speakers this seems fairly straightforward: use “dog” when there is 1 dog and use “dogs” when there are many dogs or zero dogs. But in other languages there are separate rules for 0, 1, 2, many, etc and sometimes the rules apply in different ways.

Suffice to say, it gets very complicated very quickly. The general rule of thumb is to find ways to design around any sort of pluralization in an interface but if you are intestested in solving this problem on iOS check out the Smartling internationalization library on Github.

Find an app translation service

Once you have all of your strings organized in your app, you’ll need a translator. There is a big list of translation services that Apple recommends at the bottom of this page.

We used OneSky and were really pleased with the results. OneSky is both a crowdsourced translation platform (you can ask community members or users to help with translating your app) but you also have the ability to order professional translations with reviewers (we chose this path).

Translating apps can be difficult and OneSky makes it easy for both developers and translators by including a fantastic contextual screenshot tool which lets you easily screenshot your app and identify the relevant placement of your strings for the translation at hand. The image at the left is what a translator sees when they click on the image preview underneath the translation.

OneSky dashboard for “Hours Free” translation.

Don’t forget to translate your App Keywords, App Store Description, App Strings, App Permission Prompts, App Screenshots, & App Title. When all was said and done we spent about $75 per language. You could pay less, but we opted to pay a bit more per word (costs are usually based on number of words) for a peer reviewer.

Before you spend any money on translations be sure to check out Babble-On’s free Glossary of Common Translations. It saved us a bunch of money.

Don’t Forget to Test!

If you don’t speak a foreign language or even the language you are translating your app into, don’t worry, you can still test your localization. For more information check out Apple’s guide on the Psuedolocalization that is included in Xcode or use Babble-On’s free Psuedolocalization Generator.

What is psuedolocalization? Îţ ļļôôķķš ļļîķé ţĥîîš. And you’ll be able to easily see which parts of your app have been localized and which haven’t.

Have fun and 祝好运 (I think that means good luck!).

Thanks for reading this! If you enjoyed this article, I would really appreciate you hitting the button below. Free Time 2 is now live in the App Store and on our website. You can also connect with me on Twitter @scoober or @freetimeapp.

--

--

Ben Johnson

Building amazing software — VP, Mobile & Emerging Tech @ Rightpoint (www.rightpoint.com) Formerly Managing Director @ Raizlabs.