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.

Hidden jobs in indie development

If you are an indie developer working on your own, it's easy to get stuck in the mindset that you have one main role "Software Developer". While this may take up a large portion of what you do and you may be a professional in your field, it does not mean you will be successful. To be a successful indie developer you need to recognize all roles you are responsible for. 

Marketing and Sales

It's not enough these days to throw a product down there and see who comes. You need to be "always closing" as it is called in the world of sales. Not all developers are good salesmen, you either need to become one or get one. When someone wants to talk to you about your apps you need the best way to sell your idea, to make the audience believe your product is worth buying. This is fundamental and important and should not be taken lightly. 

Marketing should not be an after thought that you pursue within the week Apple take to approve your product. It should begin at concept, you need to plan from day one how you will promote this product and even get people in the industry involved with the key functionality design of the product.

I cannot stress how important it is to build your marketing while your build your product.

Accountant

It is inevitable at some point you will need to pay taxes for the products you sell, having done a lot of work with financial data before I tried to do this myself. What you should be aware of though is this puts a lot of risk on yourself, you are a developer not a registered tax accountant. You don't watch for changes in Tax Law, you don't look for every single deduction, you have no idea how to handle your financial records and that is perfectly normal.

I highly recommend outsourcing to a Tax Professional and just getting them to show you the basics of what you need to do, how to register your business and keep records and let them worry about the rest. 

Project Planner

On your first project it isn't unusual to get an idea, sit down and start coding. Doing this will almost always set you up to fail. 

You need it to be clear in your head what this project is, what your minimum viable product is and how long it will take to reach that stage. There are many ways to plan each project, find one that works for you. 

Understand that your time is not free. The time you spend on your products could be time spent doing contract work at an hourly rate. You need to apply those same rates to your time to make sure the project will be viable in the long run. 

and the rest... 

The point is, you need to be prepared to step outside of your comfort zone, to do things outside of the scope of just programming. If you can't do that, find someone who can and employ them.  Good luck starting your indie software business.

The silence is over

I've felt for a while that I need to keep the news feed refined to major news updates, product releases and updates. I Don't want to fill it with information which may not benefit everyone.

So why a blog? A want a way to engage with people who visit my website without having to send them away from the website, while some of my apps have active facebook pages and you can also follow me on twitter at @northy179 and ADN @northy these mediums didn't really fit what I wanted to put here.

This blog will be mostly used for opinions of technology related topics, side news which didn't seem important enough to post on the main news feed and of course more frequent updates on my development, workload and projects.

A big thank you to all those who support me in my ventures, I love working with software and technology and I am passionate about good design and user experience. I hope this blog will be a way for me to share this love with you.