SlideShare uma empresa Scribd logo
1 de 44
There’s a time & a place...
Mysteries and fun facts around locales and timezones

Monday, 14 October 13
Me

Monday, 14 October 13
Monday, 14 October 13
Kai Koenig
Working with CFML since 1999
Developing for mobile since 2003
Recovering Flex developer being sucked into JS deeper and deeper
Recently rediscovered Functional Programming and sometimes
enjoy dabbling with formal aspects of computer science
bloginblack.de
2ddu.com
twitter.com/agentK

Monday, 14 October 13
So...what’s this about

Monday, 14 October 13
Motivational Speech
•
•

The world is larger than you might think
People...
...live in different places, speak and read diffent
scripts

•

Monday, 14 October 13

•

...have and are used to different cultures - those
might be significantly different from what one is
used to him- or herself
Examples?
• Time, Timezones, Boundaries, DST
• Text, Languages, Translations, Reading Dir
• Cultures: meaning of colours, images,
artwork, social context

Monday, 14 October 13
i18n,l10n,g11n
• i18n - internationalisation
• designing software so that it can be
adapted to various languages

• l10n - localisation
• adapting software for region, time,
language etc

• g11n - globalisation
Monday, 14 October 13
I’m fascinated about
and interested in i18n

Monday, 14 October 13
Timezone research

Monday, 14 October 13
What is time and what
are timezones?

Monday, 14 October 13
History
• Before clocks, people marked the time
based on the sun.

• Later with mechanical clocks: apparent vs
mean solar time.

• Railroad time - travel and communication
made solar time awkward.

Monday, 14 October 13
History
• Greenwich Mean Time (GMT) - started
1675 as a local solar time

• Railway companies started to use GMT
with portable chronometers since the
1840s.

• Time zones were a compromise.
Monday, 14 October 13
History
• November 1868: New Zealand Mean Time
(GMT+11:30)

• Late 1860s/1870s-1900: USA introduce
Railroad times, 4 major time zones

Monday, 14 October 13
History
• Worldwide time zones: Italian

mathematician Filopanti suggested a 24hr
time zone system centered in Rome (1858)

• By ~1900 most of Earth had standard time
zones, not necessarily in brackets of one
hour

• Today: Full hour, 1/2 hour and 1/4 hour time
zones

• Also: politics play a big part
Monday, 14 October 13
GMT vs UTC
• GMT: Mean solar time at the meridian

passing through the Royal Observatory in
Greenwich

• UTC: Atomic time that includes leap

seconds, guaranteed to always be within 0.9
seconds of the old GMT

• UTC is known as Zulu time
• Fun fact: Earth’s rotation is slowing - we
need more leap seconds!

Monday, 14 October 13
Each timezone is 15 degrees longitude wide.
Monday, 14 October 13
Time formats
• 09:30 UTC would usually be 09:30Z or
0930Z

• 14:45:15 UTC -> 14:45:15Z or 144515Z
• Offsets:
• +/-03:00 or +/-0300 or +/-03
• Stuff like MEST, NZDT, BST etc are made
up and not standardised.

Monday, 14 October 13
Timezones in Java
• TZ Database: IANA Time Zone Database

(http://en.wikipedia.org/wiki/Tz_database)

• Set of text files that can be read and used

with the right tools. It’s safe to assume you
don’t have those tools and don’t care.

• A JVM comes with a copy of the TZ
Database built-in.

Monday, 14 October 13
Timezones in Java
• It contains historic and current information
on timezones for various locations at any
time of the year.

• More: http://www.oracle.com/technetwork/
java/javase/timezones-137583.html

Monday, 14 October 13
Updating TZ data
• It’s important to update your JVM’s
timezone database regularly.

• Time legislation changes over the years:
• DST start/end dates
• Political changes
• Example: CF 9 shipped with Java 1.6.0_10
--- that’s time zone data from 2008
(v2008c)

Monday, 14 October 13
Oddities
• Samoa skipped 30/12/2011.
Why - any guesses?

• While doing that, they also

changed from driving on the
right-hand side of the road
to the left-hand side.

• Tokelau copied their move a
year later.

Monday, 14 October 13
Oddities
• Chatham Islands are part of
New Zealand.

• Timezone is UTC+1275

Monday, 14 October 13
Oddities
• Australian Central

Western Time - UTC
+0845

• Self-proclaimed

timezone by 5
settlements in the
desert.

Monday, 14 October 13
Oddities
•
•

Time zones
can even cross
counties

•

Monday, 14 October 13

Time zones
cross states

Worst
offenders:
Kentucky &
Indiana
Smallest multi-timezone
location?
• This is the

island of
Markets Fyr in
the Baltic Sea

Monday, 14 October 13
Other Oddities
• Russia changed all their timezones in 2010

and again in 2011 - created a huge issue for
a lot of the users of one of my clients
(Russian/Ukrainian-focussed sites).

• Fun fact: Railway timetables in Russia are

always in Moscow time. Airport data is in
local time.

• The International Space Station uses UTC.
Monday, 14 October 13
Daylight Savings
• DST occurs when a country/region decides
to wind their clocks forward one hour to
make most of the available sunlight.

• Lord Howe (AU) has a DST of +0030
• Some other areas in Australia ignore DST mainly West Australia and Queensland --too many farmers.

Monday, 14 October 13
Time and CFML/JS
• CFML: Use Paul Hastings’ TZ CFC
• JS: http://pellepim.bitbucket.org/jstz
• The main issue in the JS world is
detecting DST properly

Monday, 14 October 13
i18n and Unicode
• The problem of i18n is reasonably solved –
a good part of the solution is Unicode

• Joel Spolsky in 2003: “If you are a

programmer working in 2003 and you don't
know the basics of characters, character
sets, encodings, and Unicode, and I catch
you, I'm going to punish you by making you
peel onions for 6 months in a submarine. I
swear I will.”

Monday, 14 October 13
Unicode in 1 slide
• Concept of “platonic letters”. A is different
from a or B, but not from A.

• Every platonic letter has a magic number
(code point): U+0639

• U+0048 U+0065 U+006C U+006C U
+006F

Monday, 14 October 13
Encodings in 1 slide
•
•
•
•

00 48 00 65 00 6C 00 6C 00 6F

•
•

There are more: UTF-16, UTF-7, UCS-2, UCS-4

Monday, 14 October 13

48 00 65 00 6C 00 6C 00 6F 00
Unicode BOM designator: FE FF or FF FE
UTF-8: System to store Unicode in 8 bit bytes
(code points 0-127 are identical to US-ASCII), 1-4
octets depending on the platonic letter
Important message here: There shouldn’t be any
text without encoding information floating
around…
Encodings and web
• Does that sound familiar?
• “I’ve got question marks on your
website.”

• “Where do those boxes come from?”

• How do we work with encodings on the
web?

<meta http-equiv="Content-Type"
content="text/html; charset=utf-8”>
Monday, 14 October 13
Encodings & CFML
• Railo and ACF support Unicode and

UTF-8. But there’s more to it – how about
your DB content?

• i18n has a larger scope than just CFML !!!

Monday, 14 October 13
Encodings & CFML
• Best practice: Use UTF-8 encoding
• If you have to read non-standard encoded
content, use the following:

• <cfprocessingdirective

pageencoding=“utf-8“>

• Unfortunately you’d have to put it on every
single page…

Monday, 14 October 13
Encodings & CFML
• Some more concerns:
• Non-default output: <cfcontent

type="text/html; charset=iso-8859-1">

• Form/URL-Scope: setEncoding("URL",
"utf-8")

• Various tags support encoding
information: <cffile> etc.

Monday, 14 October 13
Locales
• A locale is a set of parameters that defines

the user's language, country and any special
variant preferences that the user wants to
see in their user interface. Usually a locale
identifier consists of at least a language
identifier and a region identifier.

• Java: de_DE, en_AU, en_NZ, de_CH,
mi_NZ etc..

Monday, 14 October 13
Locales
• Locale “stack”:
• The operating system provides a system
locale

• JVM under the hood picks up the locale

of the OS – unless you provide a different
locale at start-up of your JVM instance

• JVM: -Duser.language=de -Duser.region=DE
Monday, 14 October 13
Resource Bundles
• Preparing your code for using RBs is a defacto standard approach of implementing
locales and building i18n apps.

• Creating RB for different locales would be
considered to be a l10n task.

Monday, 14 October 13
Resource Bundles
• …are not much more than POTFs (identified
via locales):

#RB: testJavaRB.properties
Cancel=Cancel
Go=Ok
#RB: testJavaRB_th_TH.properties
Cancel=u0E22u0E01u0E40u0E25u0E34u0E01
Go=u0E44u0E1B

Monday, 14 October 13
Resource Bundles in
CFML
• No need to re-invent the wheel. Paul

Hastings (http://www.sustainablegis.com/
things.cfm) has ported a lot of Java-based
RB-related solutions over to CFML.

• Lots of other i18n- and GIS-related work,
too!

Monday, 14 October 13
UI considerations

Monday, 14 October 13
UI considerations

Monday, 14 October 13
Get in touch
Twitter: @AgentK
Blog: http://bloginblack.de
Podcast (2 Developers Down Under): http://2ddu.com
About me: http://about.me/agentk

Monday, 14 October 13

Mais conteúdo relacionado

Mais de Kai Koenig

AngularJS for designers and developers
AngularJS for designers and developersAngularJS for designers and developers
AngularJS for designers and developers
Kai Koenig
 
Cryptography for developers
Cryptography for developersCryptography for developers
Cryptography for developers
Kai Koenig
 
JVM and Garbage Collection Tuning
JVM and Garbage Collection TuningJVM and Garbage Collection Tuning
JVM and Garbage Collection Tuning
Kai Koenig
 

Mais de Kai Koenig (16)

Summer of Tech 2017 - Kotlin/Android bootcamp
Summer of Tech 2017 - Kotlin/Android bootcampSummer of Tech 2017 - Kotlin/Android bootcamp
Summer of Tech 2017 - Kotlin/Android bootcamp
 
2017: Kotlin - now more than ever
2017: Kotlin - now more than ever2017: Kotlin - now more than ever
2017: Kotlin - now more than ever
 
Anko - The Ultimate Ninja of Kotlin Libraries?
Anko - The Ultimate Ninja of Kotlin Libraries?Anko - The Ultimate Ninja of Kotlin Libraries?
Anko - The Ultimate Ninja of Kotlin Libraries?
 
Coding for Android on steroids with Kotlin
Coding for Android on steroids with KotlinCoding for Android on steroids with Kotlin
Coding for Android on steroids with Kotlin
 
API management with Taffy and API Blueprint
API management with Taffy and API BlueprintAPI management with Taffy and API Blueprint
API management with Taffy and API Blueprint
 
Little Helpers for Android Development with Kotlin
Little Helpers for Android Development with KotlinLittle Helpers for Android Development with Kotlin
Little Helpers for Android Development with Kotlin
 
Introduction to Data Mining
Introduction to Data MiningIntroduction to Data Mining
Introduction to Data Mining
 
Garbage First and you
Garbage First and youGarbage First and you
Garbage First and you
 
Real World Lessons in jQuery Mobile
Real World Lessons in jQuery MobileReal World Lessons in jQuery Mobile
Real World Lessons in jQuery Mobile
 
The JVM is your friend
The JVM is your friendThe JVM is your friend
The JVM is your friend
 
Regular Expressions 101
Regular Expressions 101Regular Expressions 101
Regular Expressions 101
 
Clojure - an introduction (and some CFML)
Clojure - an introduction (and some CFML)Clojure - an introduction (and some CFML)
Clojure - an introduction (and some CFML)
 
AngularJS for designers and developers
AngularJS for designers and developersAngularJS for designers and developers
AngularJS for designers and developers
 
Cryptography for developers
Cryptography for developersCryptography for developers
Cryptography for developers
 
JVM and Garbage Collection Tuning
JVM and Garbage Collection TuningJVM and Garbage Collection Tuning
JVM and Garbage Collection Tuning
 
Apps vs. Sites vs. Content - a vendor-agnostic view on building stuff for the...
Apps vs. Sites vs. Content - a vendor-agnostic view on building stuff for the...Apps vs. Sites vs. Content - a vendor-agnostic view on building stuff for the...
Apps vs. Sites vs. Content - a vendor-agnostic view on building stuff for the...
 

Último

Último (20)

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 

There's a time and a place

  • 1. There’s a time & a place... Mysteries and fun facts around locales and timezones Monday, 14 October 13
  • 4. Kai Koenig Working with CFML since 1999 Developing for mobile since 2003 Recovering Flex developer being sucked into JS deeper and deeper Recently rediscovered Functional Programming and sometimes enjoy dabbling with formal aspects of computer science bloginblack.de 2ddu.com twitter.com/agentK Monday, 14 October 13
  • 6. Motivational Speech • • The world is larger than you might think People... ...live in different places, speak and read diffent scripts • Monday, 14 October 13 • ...have and are used to different cultures - those might be significantly different from what one is used to him- or herself
  • 7. Examples? • Time, Timezones, Boundaries, DST • Text, Languages, Translations, Reading Dir • Cultures: meaning of colours, images, artwork, social context Monday, 14 October 13
  • 8. i18n,l10n,g11n • i18n - internationalisation • designing software so that it can be adapted to various languages • l10n - localisation • adapting software for region, time, language etc • g11n - globalisation Monday, 14 October 13
  • 9. I’m fascinated about and interested in i18n Monday, 14 October 13
  • 11. What is time and what are timezones? Monday, 14 October 13
  • 12. History • Before clocks, people marked the time based on the sun. • Later with mechanical clocks: apparent vs mean solar time. • Railroad time - travel and communication made solar time awkward. Monday, 14 October 13
  • 13. History • Greenwich Mean Time (GMT) - started 1675 as a local solar time • Railway companies started to use GMT with portable chronometers since the 1840s. • Time zones were a compromise. Monday, 14 October 13
  • 14. History • November 1868: New Zealand Mean Time (GMT+11:30) • Late 1860s/1870s-1900: USA introduce Railroad times, 4 major time zones Monday, 14 October 13
  • 15. History • Worldwide time zones: Italian mathematician Filopanti suggested a 24hr time zone system centered in Rome (1858) • By ~1900 most of Earth had standard time zones, not necessarily in brackets of one hour • Today: Full hour, 1/2 hour and 1/4 hour time zones • Also: politics play a big part Monday, 14 October 13
  • 16. GMT vs UTC • GMT: Mean solar time at the meridian passing through the Royal Observatory in Greenwich • UTC: Atomic time that includes leap seconds, guaranteed to always be within 0.9 seconds of the old GMT • UTC is known as Zulu time • Fun fact: Earth’s rotation is slowing - we need more leap seconds! Monday, 14 October 13
  • 17. Each timezone is 15 degrees longitude wide. Monday, 14 October 13
  • 18. Time formats • 09:30 UTC would usually be 09:30Z or 0930Z • 14:45:15 UTC -> 14:45:15Z or 144515Z • Offsets: • +/-03:00 or +/-0300 or +/-03 • Stuff like MEST, NZDT, BST etc are made up and not standardised. Monday, 14 October 13
  • 19. Timezones in Java • TZ Database: IANA Time Zone Database (http://en.wikipedia.org/wiki/Tz_database) • Set of text files that can be read and used with the right tools. It’s safe to assume you don’t have those tools and don’t care. • A JVM comes with a copy of the TZ Database built-in. Monday, 14 October 13
  • 20. Timezones in Java • It contains historic and current information on timezones for various locations at any time of the year. • More: http://www.oracle.com/technetwork/ java/javase/timezones-137583.html Monday, 14 October 13
  • 21. Updating TZ data • It’s important to update your JVM’s timezone database regularly. • Time legislation changes over the years: • DST start/end dates • Political changes • Example: CF 9 shipped with Java 1.6.0_10 --- that’s time zone data from 2008 (v2008c) Monday, 14 October 13
  • 22. Oddities • Samoa skipped 30/12/2011. Why - any guesses? • While doing that, they also changed from driving on the right-hand side of the road to the left-hand side. • Tokelau copied their move a year later. Monday, 14 October 13
  • 23. Oddities • Chatham Islands are part of New Zealand. • Timezone is UTC+1275 Monday, 14 October 13
  • 24. Oddities • Australian Central Western Time - UTC +0845 • Self-proclaimed timezone by 5 settlements in the desert. Monday, 14 October 13
  • 25. Oddities • • Time zones can even cross counties • Monday, 14 October 13 Time zones cross states Worst offenders: Kentucky & Indiana
  • 26. Smallest multi-timezone location? • This is the island of Markets Fyr in the Baltic Sea Monday, 14 October 13
  • 27. Other Oddities • Russia changed all their timezones in 2010 and again in 2011 - created a huge issue for a lot of the users of one of my clients (Russian/Ukrainian-focussed sites). • Fun fact: Railway timetables in Russia are always in Moscow time. Airport data is in local time. • The International Space Station uses UTC. Monday, 14 October 13
  • 28. Daylight Savings • DST occurs when a country/region decides to wind their clocks forward one hour to make most of the available sunlight. • Lord Howe (AU) has a DST of +0030 • Some other areas in Australia ignore DST mainly West Australia and Queensland --too many farmers. Monday, 14 October 13
  • 29. Time and CFML/JS • CFML: Use Paul Hastings’ TZ CFC • JS: http://pellepim.bitbucket.org/jstz • The main issue in the JS world is detecting DST properly Monday, 14 October 13
  • 30. i18n and Unicode • The problem of i18n is reasonably solved – a good part of the solution is Unicode • Joel Spolsky in 2003: “If you are a programmer working in 2003 and you don't know the basics of characters, character sets, encodings, and Unicode, and I catch you, I'm going to punish you by making you peel onions for 6 months in a submarine. I swear I will.” Monday, 14 October 13
  • 31. Unicode in 1 slide • Concept of “platonic letters”. A is different from a or B, but not from A. • Every platonic letter has a magic number (code point): U+0639 • U+0048 U+0065 U+006C U+006C U +006F Monday, 14 October 13
  • 32. Encodings in 1 slide • • • • 00 48 00 65 00 6C 00 6C 00 6F • • There are more: UTF-16, UTF-7, UCS-2, UCS-4 Monday, 14 October 13 48 00 65 00 6C 00 6C 00 6F 00 Unicode BOM designator: FE FF or FF FE UTF-8: System to store Unicode in 8 bit bytes (code points 0-127 are identical to US-ASCII), 1-4 octets depending on the platonic letter Important message here: There shouldn’t be any text without encoding information floating around…
  • 33. Encodings and web • Does that sound familiar? • “I’ve got question marks on your website.” • “Where do those boxes come from?” • How do we work with encodings on the web? <meta http-equiv="Content-Type" content="text/html; charset=utf-8”> Monday, 14 October 13
  • 34. Encodings & CFML • Railo and ACF support Unicode and UTF-8. But there’s more to it – how about your DB content? • i18n has a larger scope than just CFML !!! Monday, 14 October 13
  • 35. Encodings & CFML • Best practice: Use UTF-8 encoding • If you have to read non-standard encoded content, use the following: • <cfprocessingdirective pageencoding=“utf-8“> • Unfortunately you’d have to put it on every single page… Monday, 14 October 13
  • 36. Encodings & CFML • Some more concerns: • Non-default output: <cfcontent type="text/html; charset=iso-8859-1"> • Form/URL-Scope: setEncoding("URL", "utf-8") • Various tags support encoding information: <cffile> etc. Monday, 14 October 13
  • 37. Locales • A locale is a set of parameters that defines the user's language, country and any special variant preferences that the user wants to see in their user interface. Usually a locale identifier consists of at least a language identifier and a region identifier. • Java: de_DE, en_AU, en_NZ, de_CH, mi_NZ etc.. Monday, 14 October 13
  • 38. Locales • Locale “stack”: • The operating system provides a system locale • JVM under the hood picks up the locale of the OS – unless you provide a different locale at start-up of your JVM instance • JVM: -Duser.language=de -Duser.region=DE Monday, 14 October 13
  • 39. Resource Bundles • Preparing your code for using RBs is a defacto standard approach of implementing locales and building i18n apps. • Creating RB for different locales would be considered to be a l10n task. Monday, 14 October 13
  • 40. Resource Bundles • …are not much more than POTFs (identified via locales): #RB: testJavaRB.properties Cancel=Cancel Go=Ok #RB: testJavaRB_th_TH.properties Cancel=u0E22u0E01u0E40u0E25u0E34u0E01 Go=u0E44u0E1B Monday, 14 October 13
  • 41. Resource Bundles in CFML • No need to re-invent the wheel. Paul Hastings (http://www.sustainablegis.com/ things.cfm) has ported a lot of Java-based RB-related solutions over to CFML. • Lots of other i18n- and GIS-related work, too! Monday, 14 October 13
  • 44. Get in touch Twitter: @AgentK Blog: http://bloginblack.de Podcast (2 Developers Down Under): http://2ddu.com About me: http://about.me/agentk Monday, 14 October 13