Transcript
Page 1: Internationalizing Your Apps

Internationalizingyour apps

Chuck Smith and Judith Meyer

360|iDev DenverSep 27-30, 2009

Page 2: Internationalizing Your Apps

2

Page 3: Internationalizing Your Apps

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

Page 4: Internationalizing Your Apps

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

Page 5: Internationalizing Your Apps

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.

Page 6: Internationalizing Your Apps

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.

Page 7: Internationalizing Your Apps

Localization: Know your Audience

Page 8: Internationalizing Your Apps

Localization: Respect Foreign Languages

• Traficante mineral water

• Silver Mist

• Mitsubishi Pajero

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

Page 9: Internationalizing Your Apps

Translation vs. Localization

• Brand / product name

• Form of address

• Measurements

• Date formats

• Pictures and icons

• Wording

Page 10: Internationalizing Your Apps

Localization: Local Asian Feel

Page 11: Internationalizing Your Apps

Implications of RTL Languages (Arabic, Hebrew)

Page 12: Internationalizing Your Apps

Retrieving the Current Locale

NSLocale *locale = [NSLocale currentLocale];

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

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

Page 13: Internationalizing Your Apps

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

Page 14: Internationalizing Your Apps

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

Page 15: Internationalizing Your Apps

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];

Page 16: Internationalizing Your Apps

Strings file

• Autogenerate Localizable.strings file

• Go to root directory of app

• Terminal: genstrings ./Classes/*.m

• Make localizable like for interfaces

• Translate file

Page 17: Internationalizing Your Apps

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

Page 18: Internationalizing Your Apps

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

Page 19: Internationalizing Your Apps

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

Page 20: Internationalizing Your Apps

Thank you

Questions?

Fragen?

Demandoj?

Preguntas?

Demandes?

Pytania?

Frågor?

Вопросы?

问题? Domande?

ερωτήσεις?

Vragen? ?' ( ) * +


Recommended