More than Just Lines on a Map: Best Practices for U.S Bike Routes
Internationalizing your application
1. S
INTERNATIONALIZING
YOUR APPLICATION
by Renan Gonçalves
Sunday, September 4, 11
2. WHO IS THIS GUY?
Software Engineer
TrueServer B.V.
CakePHP since 2007
Contributing since 2008
Brazilian
Sunday, September 4, 11
3. LOCALIZATION
Adapting or converting the application to be used on
a particular locale
Locale defines:
User’s language
Country
Sunday, September 4, 11
4. LOCALE
language[_territory][.charset][@modifier]
en
en_US
cs_CZ.UTF-8
pt_BR@CE
Sunday, September 4, 11
5. LOCALE
en_GB en_GB@oed en_CA en_US
analyse analyse analy[sz]e analyze
behaviour behaviour behaviour behavior
centre centre centre center
defence defence defence defense
globalisation globalization globalization globalization
realise realize realize realize
http://en.wikipedia.org/wiki/En-GB-oed#Language_tag_comparison
Sunday, September 4, 11
6. INTERNATIONALIZATION
Supporting international data
Text Content
Numbers
Currencies
Dates / Times
Calendars
Sunday, September 4, 11
7. LANGUAGE
Different systems of numerals
decimal (10), vigesimal (20), octogesimal (80), etc
Writing direction
left to right and right to left
Graphical representation of texts
Audio
Sunday, September 4, 11
8. WRITING CONVENTIONS
Date/time format
Different calendars
Time zones
Number formatting
Difference in symbols
Sunday, September 4, 11
13. OKAY, LETS RULE THE WORLD
SUPPORT ALL LOCALES!
Sunday, September 4, 11
14. NOT THAT EASY!
Countries in the world (249)
Languages in the world (6,309)
+ variants
http://en.wikipedia.org/wiki/Lists_of_countries_and_territories
http://en.wikipedia.org/wiki/Lists_of_languages
Sunday, September 4, 11
15. FEEL AT HOME
Small changes, big impact
Sunday, September 4, 11
16. PERSONAL NAMES
AROUND THE WORLD
Björk Guðmundsdóttir (Icelandic)
Isa bin Osman (Malay)
John Quincy Adams
Sunday, September 4, 11
17. PERSONAL NAMES
AROUND THE WORLD
First name Middle name Last name
Renan Gonçalves Cardoso de Lima
First name Last name
Renan Gonçalves Cardoso de Lima
Initials Between names Last name
R. G. C. de Lima
http://www.w3.org/International/questions/qa-personal-names
Sunday, September 4, 11
18. PERSONAL NAMES
AROUND THE WORLD
Full name
Renan Gonçalves Cardoso de Lima
What should we call you?
Renan
Sunday, September 4, 11
19. PERSONAL NAMES
AROUND THE WORLD
Björk Guðmundsdóttir (Icelandic)
Ms. Björk or Ms. Björk Guðmundsdóttir
Isa bin Osman (Malay)
Mr. Isa
John Quincy Adams
Mr. Adams
Sunday, September 4, 11
35. THANK YOU!
renan.saddam@cakephp.org
@renan_saddam on twitter and #cakephp
http://github.com/renansaddam
Sunday, September 4, 11
Hinweis der Redaktion
\n
\n
\n
\n
\n
\n
Also know as L10n (L+10 letters+n)\nAlso defines any particular preferences (ie. region, monetary values, etc)\n
Also know as L10n (L+10 letters+n)\nAlso defines any particular preferences (ie. region, monetary values, etc)\n
Also know as L10n (L+10 letters+n)\nAlso defines any particular preferences (ie. region, monetary values, etc)\n
Also know as L10n (L+10 letters+n)\nAlso defines any particular preferences (ie. region, monetary values, etc)\n
CE stands for Ceara\n- an state in brazil\n- slangs\n
OED stands for Oxford English Dictionary spelling\n
\n
Vigesimal: French (from Celtic), Danish\nOctogesimal: Supyire (spoken in Mali, Africa)\nRight to left: Persian, Hebrew, etc\n
Vigesimal: French (from Celtic), Danish\nOctogesimal: Supyire (spoken in Mali, Africa)\nRight to left: Persian, Hebrew, etc\n
Vigesimal: French (from Celtic), Danish\nOctogesimal: Supyire (spoken in Mali, Africa)\nRight to left: Persian, Hebrew, etc\n
Vigesimal: French (from Celtic), Danish\nOctogesimal: Supyire (spoken in Mali, Africa)\nRight to left: Persian, Hebrew, etc\n
Vigesimal: French (from Celtic), Danish\nOctogesimal: Supyire (spoken in Mali, Africa)\nRight to left: Persian, Hebrew, etc\n
Vigesimal: French (from Celtic), Danish\nOctogesimal: Supyire (spoken in Mali, Africa)\nRight to left: Persian, Hebrew, etc\n
Date format: Day/Month/Year, Month/Day/Year\nDifferent calendars: Chinese calendar, starts late January or early February\nDifference in symbols: “ (double-quotes) for English, « (guillemets) in French\n
Date format: Day/Month/Year, Month/Day/Year\nDifferent calendars: Chinese calendar, starts late January or early February\nDifference in symbols: “ (double-quotes) for English, « (guillemets) in French\n
Date format: Day/Month/Year, Month/Day/Year\nDifferent calendars: Chinese calendar, starts late January or early February\nDifference in symbols: “ (double-quotes) for English, « (guillemets) in French\n
Date format: Day/Month/Year, Month/Day/Year\nDifferent calendars: Chinese calendar, starts late January or early February\nDifference in symbols: “ (double-quotes) for English, « (guillemets) in French\n
Date format: Day/Month/Year, Month/Day/Year\nDifferent calendars: Chinese calendar, starts late January or early February\nDifference in symbols: “ (double-quotes) for English, « (guillemets) in French\n
\n
Government assigned numbers: Social Security number (US), National Insurance number (UK), etc\n
Government assigned numbers: Social Security number (US), National Insurance number (UK), etc\n
Government assigned numbers: Social Security number (US), National Insurance number (UK), etc\n
Government assigned numbers: Social Security number (US), National Insurance number (UK), etc\n
Government assigned numbers: Social Security number (US), National Insurance number (UK), etc\n
Government assigned numbers: Social Security number (US), National Insurance number (UK), etc\n
Local content: relevant news to your region\n
Local content: relevant news to your region\n
Local content: relevant news to your region\n
World is larger than US or UK - China (19%), Brazil (3%), UK (0.9%), NL (0.24%)\nCompare English speaker population to world population\nCompare Dutch speaker population to world and English population\n
\n
Impossible.\nChoose your target.\n
Impossible.\nChoose your target.\n
Impossible.\nChoose your target.\n
\n
\n
\n
\n
\n
\n
\n
Context: maybe a message is one section needs to be different than in other section, so you end up with welcome2\nFind: does the string exist in the array?\nMeans: what does welcome contains?\n
Context: maybe a message is one section needs to be different than in other section, so you end up with welcome2\nFind: does the string exist in the array?\nMeans: what does welcome contains?\n
Context: maybe a message is one section needs to be different than in other section, so you end up with welcome2\nFind: does the string exist in the array?\nMeans: what does welcome contains?\n
Brazil: 0 item instead of 0 items\nAsian (Chinese, Japanese, Korean, Vietnamese): 1 form of plural\nPolish: 3 forms of plural\nArabic: 6 forms of plural\nOthers: 4 and 5 forms of plural\n
\n
Fallback: uses the given text if there is not any other\nCategories: Monetary, numeric, time, etc\n