Design your app for localization from day one

Something which had been more of an afterthought for me in the past had been Localization, I figured there were enough english speaking iOS users out there for my business to be profitable. In retrospect this was a rather uncultured and closed minded view considering how big my audience could potentially be and how little it could cost me to reach them.

Here are a few tips for early development to make the localization process easy and painless:

  • Consider the dialog early, every word works out to around 9 cents per language (using professional translation services), if you can keep your dialog short and maybe replace some words with common symbols like arrows then it will make things cheaper
  • Plan to use a professional translation service, they are rather cheap and while google translate is reasonably good you will miss out on a lot of dialect and detail which can be rather embarrassing for your company and lead to demands for refunds. It will also kill your chances of getting featured (Apple love to feature well localized apps!).
  • Whenever you create a NSString while programming, don't forget to do it as a NSLocalizedString(@"",@"") and actually leave a detailed note in the second parameter where there is room for confusion. For example: If the text is "Ok", then leave a note about what you are agreeing to with this text as certain things are agreed to in different ways in different languages. Also if you have abbreviations like "m" for meters, make sure you let the translator know with a note.
  • Don't worry about populating your Localizable.strings file as you go, it's a waste of time as using genstrings can do this automatically.
  • Plan to localize towards the end of your development cycle, most translators are quick and last minute updates or changes can be time consuming.
  • Don't forget about your app name, store description, key words, in-app purchases, game center achievements and leaderboards. They all need to be localized for a complete experience.
  • Don't forget about images or data in plists which may contain words.

Ok, so you have kept your strings short and minimal to reduce costs, you have run genstrings to prepare your localizable.strings file. What next? 

You need to decide what languages you need, it is recommended to localize in:

English, Spanish, French, German, Italian, Portuguese, Chinese (Simplified), Chinese (Traditional), Russian, Korean and Japanese.

You may want to do some market research first to see how popular the subject of your app will be in those regions. You may find that your game only really applies to English speaking countries or on the other hand you may find that Korea is 80% of your world market. If you are still unsure, its not that expensive to cover your bases and do all of the above.

Now that you have decided on your languages, it's time to pick a translation service. I like to use iCanLocalize. They are very affordable, very quick and allow for lots of communication with the translators so you can get your translation done with the right context and style of your app. They also have a review process where another translator checks the translations done to ensure impeccable quality. You can also send them your .strings files and they can return them in the same format for easy implementation.

It's good to keep Google Translate handy too for unimportant quick translations. Be sure to check the context is as accurate as possible even with these simple translations.

Follow these tips and localizing your apps should be as painless as it has been for me in my latest app which goes on sale in two to three weeks time.

12 Sprite Kit games in 12 months

I've grown awfully fond of SpriteKit in the last few weeks of looking at it and would love to make some games using it. Looking at the business position and time I have to put in to those sort of personal projects its often hard to budget time to make the cool stuff, like games.

I'm still not sure with my time commitments if this idea is even possible but one thing I'd love to do is challenge myself to make 12 games in 12 months, releasing on the 1st of each month where possible.

This means I have to make a few changes to the business structure for my current apps placing them in to two categories:

  • Premium Products: Our "Northy Software" premium product apps will still receive ongoing support, updates and feature additions over time until such date they are decommissioned. They will also be kept up to date with any iOS updates.
    Current Premium Apps: Defects Collector, Notography
  • Budget Entertainment: Our "Northy Software" budget entertainment apps will receive support and updates for up to six months. Any new features after the initial six months will be available via in-app store. They will be kept up to date with any iOS updates after premium apps have been updated.
    Current Budget Apps: Wicked Freefall!, Dubstep Calculator, Evil Block Company

This model should make the app side of the business more sustainable beside the consulting side of the business. If we are going to go from 2 Premium and 3 budget apps to 2 premium (maybe 3) and 15 budget apps by this time in 2014 then that is significant growth in products we need to support.

Quality is something I am passionate about, exercising proper UX design and making great products is essential. I believe this exercise could not only uphold the current standards but improve upon them by forcing design choices based on time constraints and increased exposure to the SpriteKit environment.

12 Games in 12 months, what else?

It's a fun goal but surely there is more that be accomplished within this time period than simply having 12 games on the store at the end.

Learning Sprite Kit Package: What if I was to document the entire process either by video tutorials, video blog, text blog, etc explaining design decisions, coding, marketing decisions and more explaining the whole process over 12 months and packaging it all together with the source code for all 12 games and releasing it to the world as a development package and full course. 

Self Improvement: By far one of the hardest parts of this goal, in building this business and learning new things, I've found it hard to keep in shape. That has to change. I want to lose 2kg for every game released and be 24kg lighter by this time next year.

I want to hold myself to this goal by linking it in with this package and having a chapter on healthy living and how active software developers can take control of their "computer weight". Each release date will also contain how much I have lost since the previous release.

As you can see, I want to keep this project very personal and close to my heart, just like my products. I don't just want to make quick games, I want to make fun games which people will actually be excited to play. It will be a massive challenge.

I think it is time for me to stop typing and get to work, if you support this project, please let me know, the encouragement will only help me reach my goals sooner!