Internationalizing Your Apps

Preview:

DESCRIPTION

Want more sales outside of the USA, but don't know where to start? I will show you the ins and outs of each step that must be taken and give guidelines on what you can do to be sure your apps feel local to everyone around the world, including text, images and the interface itself. You will get step by step instructions on how to internationalize any application. Also learn about the language limitations in App Stores around the world and a nice way to find the right translators for your apps.

Citation preview

Internationalizingyour apps

Chuck Smith and Judith Meyer

360|iDev DenverSep 27-30, 2009

2

Why Go International? Why Translate?

• the “world economy crisis” is not as much of a crisis outside the US

• the dollar is weak; your apps are cheaper abroad

• chance to hit a nerve abroad (different tastes)

=> make a lot more money from the same programming effort

• 11 out of 12 people worldwide can’t speak English

• the rest feel more appreciated & more comfortable buying if a description is in their language

Who should translate?

• Do not use machine translation. If you use the machine translation, you also tell you the foreign customer, they are not worth any you, your company is not also professional.

• Your college friend who studied some Spanish will still be out of his league translating something INTO Spanish. Translation agencies only let people translate into their native language.

• Not every native speaker and not even every certified translator can translate a good sales pitch for the App Store. Also, not everyone is a tech whizz.

• www.iphone-i18n.com knows good translators

Translation Pitfalls

• Don't assume English word order. To enable translators to change the order as needed, use variables %d, %s and so on and do like this:

int levels = 99;[NSString stringWithFormat: NSLocalizedString( @"You can choose between %d exciting levels.", @"Level count" ), levels];==>• French: You can choose between %d levels exciting.• German: You can between %d exciting levels choose. • Japanese: You %d exciting levels from choose can.

Translation Pitfalls• If you need both singular and plural form, do not

concatenate „s“ to the end of the word for the plural. • English: 1 fish – 2 fish; 1 wife – 2 wives; etc.• German: 1 Bier – 2 Biere; 1 Arbeit – 2 Arbeiten• French: 1 vin – 2 vins; 1 eau – 2 eaux• Chinese doesn't have a plural, but does have counters 1 ge ren – 2 ge ren; 1 ben shu – 2 ben shu • Swahili: 1 mtu – 2 watu; 1 jicho – 2 macho

• Ditto for verbs

• Also a complication, less likely to come up in iPhone programming: cases• Vi atakas elefanton. - You attack an elephant. Elefanto atakas vin. - An elephant attacks you.

Localization: Know your Audience

Localization: Respect Foreign Languages

• Traficante mineral water

• Silver Mist

• Mitsubishi Pajero

• „Bite the wax tadpole“ or „Happiness in your mouth“?

Translation vs. Localization

• Brand / product name

• Form of address

• Measurements

• Date formats

• Pictures and icons

• Wording

Localization: Local Asian Feel

Implications of RTL Languages (Arabic, Hebrew)

Retrieving the Current Locale

NSLocale *locale = [NSLocale currentLocale];

NSString *currentLocale = [locale displayNameForKey:NSLocaleIdentifier value:[locale localeIdentifier]];

NSLog( @"Complete locale: %@", currentLocale );

App Interface

• Press ⌘I to show Info window on xib file

• General tab: Make File Localizable

• Press ⌘I again on file... Add Localization

• Add languages by 2-letter code

• Right-click xib file and now edit other langs

Images

• See what images have text on them

• Follow same procedure as for interfaces

• Highlight file and choose Reveal in Finder

• Replace other images with localized images

Getting strings

NSLocalizedString( @"Music", @"The menu item Music." );NSLocalizedString( @"Films", @"The button Films." );

Displaying strings in app

Displaying variables within string in appint titles = 142;[NSString stringWithFormat: NSLocalizedString( @"There are %d movie titles.", @"Movie statistics" ), titles];

Strings file

• Autogenerate Localizable.strings file

• Go to root directory of app

• Terminal: genstrings ./Classes/*.m

• Make localizable like for interfaces

• Translate file

Localizable.strings

Autogenerated file

/* The button Films. */"Films" = "Films";/* The menu item Music. */"Music" = "Music";

/* The button Films. */"Films" = "Filme";/* The menu item Music. */"Music" = "Musik";

Translated file

App Store

• iTunes Connect: Manage Your Application > Edit Information > Localization

• Don’t forget planned promo text like: “SPECIAL OFFER: 50% OFF IN JULY!”

• Official languages: Dutch, English, French, German, Italian, Japanese, Spanish

• Other languages will need separate binary

iPhone-i18n.com

• Exclusively translating iPhone apps

• We understand your linguistic and technical needs

• Translators understand technicalities and are skilled at writing promotional texts

• App with little text + App Store: only 60€ (US $85)

• Translation package (many languages) = lower price

Thank you

Questions?

Fragen?

Demandoj?

Preguntas?

Demandes?

Pytania?

Frågor?

Вопросы?

问题? Domande?

ερωτήσεις?

Vragen? ?' ( ) * +

Recommended