As we indie developers struggle to get our apps noticed, downloaded, used and pay our bills, we should maximize whatever means we have to get the app available to as many users.
One often neglected direction is localizing your app to serve users in non-English speaking countries.
Publishing your app in a local language can open for you new markets and maximize your revenues, and the effort needed is really not that great.
There are three parts for making your app available in multiple languages:
Design Time
While at the design and conception stage of your app, give some thoughts to issues such as:
- Using text vs. using images for buttons, menus or other app elements. Using images gives you more flexibility as to the appearance, fonts, effects of your app text. Using strings makes it easier to change your texts or localize them.
- Using special fonts which may or may not have the characters you need in foreign languages. If you did decide to use strings, and opt for using custom fonts, make sure the font has the characters for all the languages you want to support. In many cases it is simpler to use unicode fonts from the set of built-in fonts, but sometimes you do need a custom font to get that special look. Keep the character set issue in your thoughts.
- Designing for variable size strings for labels or other GUI elements. Text may change size when you switch to a different langauage - width, height and in some cases number of lines will have to be flexible. At the design stage just keep this in mind, and allow your self room for flexibility
During development, you should follow Apple guidelines for localization. Refrain from using hard coded text strings, and go for the NSLocalizedString, localized resources, etc.
Also bear in mind the issue of text size and location. You can use NSString method sizeWithFont to get the dimension of text:
font = [UIFont fontWithName:name size:size];
if( font )
CGSize dim = [string sizeWithFont:font];
Sean Berry published an excellent tutorial with examples on Ray Wanderlich's blog site: http://www.raywenderlich.com/2876/how-to-localize-an-iphone-app-tutorial
Translation
In many cases I found Google Translate sufficient (especially for languages I have some experience with), but a more professional approach which is not so expensive is available. I am recommending a service called One Hour Translation This service is very reasonably priced (around 5-10 cents per word) and the turn around time is phenomenal - I got all my translations within 30 minutes (!!!)
I have no way to judge the translation quality, but they do give you an option (for slightly more money) to use an expert translator for your particular domain, and an option to get the translation proof read by another person.
One Hour Translation