Home News Forum Social Networking Support Us Advertise

Spanish Lesson 1 ($1.99)

aWake!Gently ($1.99)

The Bird & The Snail - Knock Knock - Deluxe ($4.99)

Match-It Trains ($0.99)

Tangled ($0.99)

iFlatter ($0.99)

The 15 puzzle ($0.99)

Tap Forms Database ($8.99)

Higher or Lower Card Game (Hi Lo) ($0.99)

Red Pixel ($0.99)

Time-Shift Radio ($0.99)

Want your application advertised here? Only $10/week!

Go Back   iPhone Dev SDK Forum > iPhone SDK Development Forums > iPhone SDK Development

Reply
 
LinkBack Thread Tools Display Modes
Old 11-21-2008, 03:17 PM   #1 (permalink)
Member
 
Join Date: Aug 2008
Location: Washington, DC
Posts: 85
Rep Power: 1
kshep is on a distinguished road
Default Localization Lessons Learned

Hello everyone!

We just released Imangi 2.0.2 which is our first big international update. This includes full localization of the app, the App Store description, and the screenshots into English, Spanish, German, French, Italian, and Russian. The update went live yesterday. I'm looking forward to seeing how this affects sales in regions outside of the US. We are now one of a few word games to fully support most common languages.

Here are some lessons learned so far about localization:

1) Design your applications to support localization from the get go. I had designed the iPhone App with this in mind, but not our web services. I was able to retrofit the web services component without too much trouble, but it was a repetitive boring task. Much easier to start with this in mind.

2) Beta test your localizations. Since I don't speak any of the languages that we translated into, it was hard to know if we got good or bad translations. Having native speaking beta testers really helped us verify that our translations were good, and they helped correct any awkward sentences or misspellings.

3) Localization affects layout. The same phrase in different languages may require different amounts of space to display on the screen in the same font size. This can cause layout problems. Try to design your screens and layouts with this in mind. Don't pack things in too tight. Fortunately, we didn't have too many issues with this, but do expect this to happen and be prepared to make necessary fixes.

4) Have all of your text ready to translate. Make sure that your app is in a stable place without major plans to add significant features anytime soon. Typically you provide a large chunk of text to a translator and they will do it all at once. They will likely charge you every time you come back with more text. It's easiest and cheapest just to do it all at once instead of in multiple passes.

5) Internationalization is HARD. It takes a very long time and there is a lot to test and verify. We spent about 2 months time from when we first decided we wanted to translate to having something ready. You effectively multiple the time you need to spend testing and marketing by the number of languages you want to support. It also makes it harder to add new features in the future because you will always need to translate any new text.

Overall, it's been a great learning experience, and I'm glad that we decided to do this. I hope it will help our sales and engage more of the international community. If all goes well, I will plan to internationalize all of our current and future apps. I'm sure some of what I've learned will help make it go faster the next time around. I also hope that these lessons learned will be helpful to everyone else out there considering localization.

Please feel free to ask if you have any questions, and please share any of your lessons learned.

Take care,

-Keith
__________________
Imangi Studios, LLC creator of Little Red Sled, Imangi, and Imangi Word Squares
kshep is offline   Reply With Quote
Old 11-22-2008, 02:49 AM   #2 (permalink)
Senior Member
 
brendand's Avatar
 
Join Date: Aug 2008
Posts: 202
Rep Power: 1
brendand is on a distinguished road
Default

Please let us know how it affects your sales. I built my app with localization in mind right from the beginning, but I have not yet had time to localize it. I did get my App Store descriptions localized into French, German, and Japanese apart from English of course. I don't know if it has really helped my sales though. I didn't notice any spikes, but I may have made sales that I wouldn't have made if the descriptions were only in English.

Thanks,
brendand is online now   Reply With Quote
Old 11-22-2008, 09:04 AM   #3 (permalink)
Member
 
Join Date: Aug 2008
Location: Washington, DC
Posts: 85
Rep Power: 1
kshep is on a distinguished road
Default

Hi Brendand,

I'll keep everyone posted on how it affects sales. It definitely was a lot of work, hopefully I won't regret the decision when I want to add more features.

I thought about just translating the App Store description, but I was worried that people would be upset if they purchased the game expecting it to be translated too. Have you gotten any negative feedback about that? Did you put anything in your description warning people that the application is in English only, or was the App Store description supported languages list enough?

Thanks!

-Keith
__________________
Imangi Studios, LLC creator of Little Red Sled, Imangi, and Imangi Word Squares
kshep is offline   Reply With Quote
Old 11-22-2008, 09:09 AM   #4 (permalink)
Senior Member
iPhone Dev SDK Supporter
 
Join Date: Sep 2008
Location: London, UK
Posts: 704
Rep Power: 1
wuf810 is on a distinguished road
Default

Interested to know as well.

I made the mistake of localising one of my apps - problem was that a lot of the info that it sources is in English only.

So although my French speaking users get the interface (controls, buttons, help et.c) in French, they complained that some data was not.

With this particular app I think it is easier to remove the localisation.

So anyway be careful as someone will always complain.
wuf810 is offline   Reply With Quote
Old 11-22-2008, 10:48 AM   #5 (permalink)
Senior Member
 
brendand's Avatar
 
Join Date: Aug 2008
Posts: 202
Rep Power: 1
brendand is on a distinguished road
Default

The second line of my description says in each of the localizations I had descriptions written for that the application is in English, but this description is in [insert language here] and that full localization will be coming soon. Nobody has complained about that.
brendand is online now   Reply With Quote
Old 11-22-2008, 10:56 AM   #6 (permalink)
Member
 
Join Date: Aug 2008
Location: Washington, DC
Posts: 85
Rep Power: 1
kshep is on a distinguished road
Default

Thanks Brendan. Good to know that you didn't get any complaints about that.

-Keith
__________________
Imangi Studios, LLC creator of Little Red Sled, Imangi, and Imangi Word Squares
kshep is offline   Reply With Quote
Old 11-22-2008, 03:19 PM   #7 (permalink)
Senior Member
 
Join Date: Aug 2008
Posts: 123
Rep Power: 1
bhearn is on a distinguished road
Default

I localized Subway Shuffle, and it has made a large difference to my sales. Especially since the Lite version was also localized.

There have been days I've had more sales in Germany and Italy than in the US.

Yes, it was a pain. And the pain keeps on giving... you have to address each localization every time you update.
bhearn is offline   Reply With Quote
Old 11-22-2008, 04:34 PM   #8 (permalink)
Senior Member
 
Join Date: Sep 2008
Posts: 1,431
Rep Power: 2
PhoneyDeveloper is on a distinguished road
Default

@BrendanD, Can you give an overview of your localization strategy? Nibs, no Nibs? Was everythiing based around NSLocalizedString? Did you just send strings files to the translators or something else also?
PhoneyDeveloper is offline   Reply With Quote
Old 11-22-2008, 05:31 PM   #9 (permalink)
Senior Member
 
brendand's Avatar
 
Join Date: Aug 2008
Posts: 202
Rep Power: 1
brendand is on a distinguished road
Default

Every string within my code uses NSLocalizedString(). I keep going back and forth whether or not I should do one xib for all languages or a xib for each language. I had played around with creating a xib for each language, but then I reverted back to the single xib because I had too many changes to make to the layouts. You really have to have a solid grip on your layout and not to change it too much between releases.

If you're lucky enough to have a flexible layout that can deal with different font sizes without your app looking like crap, then the single xib approach seems more ideal to me. You can still type your text in IB, but then you have to have code to replace the text at runtime.

There are benefits to both techniques of course.

In the web applications my company makes, we use a single page with bindings for localized strings. That technique works well, but HTML has more flexible rendering of layouts than xibs do.

A friend of mine made a program for the Mac called Fuzzy Clock and he has it localized to about 72 languages. I even think Pig Latin is one of them!

He just has a different Localizable.strings file for each language, but uses a single nib file.
brendand is online now   Reply With Quote
Old 11-22-2008, 06:28 PM   #10 (permalink)
Member
 
Join Date: Aug 2008
Location: Washington, DC
Posts: 85
Rep Power: 1
kshep is on a distinguished road
Default

Imangi was built without Interface Builder, the interface is all created programatically, so no nibs there. Every string in the app is retrieved using NSLocalizedString() and I also put some of our icons, graphic, and static html resources that include text in the xx.lproj folders for each language. I simply supplied a translator with the .strings, images, and html (help) files. So at this point all I really have to do is add another xx.lproj folder for another language with additional translations if I want to add more.

@bhearn, glad to hear that localization has helped Subway Shuffle. Great game btw, my wife and I have had a lot of fun with it.

-Keith
__________________
Imangi Studios, LLC creator of Little Red Sled, Imangi, and Imangi Word Squares
kshep is offline   Reply With Quote
Old 11-22-2008, 07:31 PM   #11 (permalink)
Senior Member
 
Join Date: Aug 2008
Posts: 123
Rep Power: 1
bhearn is on a distinguished road
Default

Quote:
Originally Posted by kshep View Post
Imangi was built without Interface Builder, the interface is all created programatically, so no nibs there. Every string in the app is retrieved using NSLocalizedString()
Same with Subway Shuffle. The most troublesome issue I had is that my instruction screens (text bubbles on levels 1 and 2) were images in the non-localized version; I didn't want to load down the app with lots of images. So I had to write some code to wrap arbitrary text in a bubble with a pointer coming out, satisfying various location constraints.

Other issues:

* Some translated strings were too long for the interface; it took some back and forth with the translators to get strings that were meaningful and would fit.

* The original German translation I got turned out to be garbage, which I didn't realize until I started getting bad reviews in Germany. Turns out the (usually reliable) German translator my localization service used decided he was too busy, and had a friend do it. Caveat emptor!

Quote:
Originally Posted by kshep View Post
@bhearn, glad to hear that localization has helped Subway Shuffle. Great game btw, my wife and I have had a lot of fun with it.
Thank you! And good luck with your international sales.

- Bob
bhearn is offline   Reply With Quote
Old 11-22-2008, 09:25 PM   #12 (permalink)
Senior Member
 
Join Date: Sep 2008
Posts: 1,431
Rep Power: 2
PhoneyDeveloper is on a distinguished road
Default

So do you guys have code that is language dependent or code that is dependent on the lengths of strings in the interface?
PhoneyDeveloper is offline   Reply With Quote
Old 11-22-2008, 09:28 PM   #13 (permalink)
Member
 
Join Date: Aug 2008
Location: Washington, DC
Posts: 85
Rep Power: 1
kshep is on a distinguished road
Default

Everything I do for layout in the code takes into consideration only the length of the string to be displayed, not the language.

-Keith
__________________
Imangi Studios, LLC creator of Little Red Sled, Imangi, and Imangi Word Squares
kshep is offline   Reply With Quote
Old 11-22-2008, 09:48 PM   #14 (permalink)
Member
 
Join Date: Sep 2008
Location: Denver
Posts: 98
Rep Power: 1
BSDimwit is on a distinguished road
Default How much?

About how much did it cost to get the translation services. Can you give a rough idea about how they charge and what sort of services are offered.
BSDimwit is offline   Reply With Quote
Old 11-23-2008, 01:52 AM   #15 (permalink)
Senior Member
iPhone Dev SDK Supporter
 
Join Date: Sep 2008
Location: London, UK
Posts: 704
Rep Power: 1
wuf810 is on a distinguished road
Default

Quote:
Originally Posted by bhearn View Post
* The original German translation I got turned out to be garbage, which I didn't realize until I started getting bad reviews in Germany. Turns out the (usually reliable) German translator my localization service used decided he was too busy, and had a friend do it. Caveat emptor!
So do you guys use professional translation services? Any recommendations.

Thanks, M
wuf810 is offline   Reply With Quote
Old 11-23-2008, 08:30 AM   #16 (permalink)
Member
 
Join Date: Aug 2008
Location: Washington, DC
Posts: 85
Rep Power: 1
kshep is on a distinguished road
Default

We used DYS Translations for the Italian and French translations. We use individuals for Spanish and German. DYS is very reasonably priced. We paid them less than $100 per language. I'm sure their costs depend on the amount of text in your App, but I thought it was very reasonable.

-Keith
__________________
Imangi Studios, LLC creator of Little Red Sled, Imangi, and Imangi Word Squares
kshep is offline   Reply With Quote
Old 11-23-2008, 12:11 PM   #17 (permalink)
Senior Member
 
Join Date: Aug 2008
Posts: 123
Rep Power: 1
bhearn is on a distinguished road
Default

My translations were a mix of individuals who offered to do it for free and a paid service. I paid $50 / language for French, German, and Dutch, and $35 for Italian. PM me if you want contact information. (I've already trashed their German translator here (who has since been fired), but otherwise I'm happy with the company, so I'd prefer not to name them here publicly.)
bhearn is offline   Reply With Quote
Old 12-02-2008, 12:59 AM   #18 (permalink)
Member
 
Join Date: Oct 2008
Posts: 37
Rep Power: 0
thre3dee is on a distinguished road
Default

I'm currently developing an application which is 90% user entered text content so I hope that localising my app won't be as much trouble as other applications.

The primary strings displayed are names of tabs and navigation bar titles (and prompts) and also some table view cell labels. My application is mostly a Calendar.app like application with a little bit of Contacts.app and some songs/lyrics entering thrown in for good measure which means that most of the text content is user-created (which takes the burden out of translating strings).

I actually just tried writing some Japanese characters into a new entry and while it displayed correctly, I think I'll have to have a look at how my SQLite database is storing it as when I reload the application they are messed up but thats because I haven't even touched localisation in my app so I expected it wouldn't work properly.

The only problem I'm forseeing is the "section index title" part of the contacts tab which is much the same (though with a different kind of contact) as the Contacts and after looking at the Japanese index titles it doesn't exactly look anything like "ABCDEFGHIJKLMNOPQRSTUVWXYZ#"!
thre3dee is offline   Reply With Quote
Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


» Advertisements


» Online Users: 256
26 members and 230 guests
Artem, brendand, crossfire, davek, DenVog, DGuy, enfamus, FlyingDiver, gbh, iBud, jonahgabriel, jrsiqueira, kaleman, Kalimba, lildragon, martinn, mnemonic_fx, mohrt, qaziatiq, shabzcohelp, Sicga, SpikeyUK, talguy, tashev, thorx, warmi
Most users ever online was 779, 05-11-2009 at 09:55 AM.
» Stats
Members: 8,229
Threads: 20,197
Posts: 90,213
Top Poster: RickMaddy (2,121)
Welcome to our newest member, jrsiqueira
Powered by vBadvanced CMPS v3.1.0

All times are GMT -5. The time now is 02:08 PM.
Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0