Creating Globalized ColdFusion Applications
Paul Hastings
Table of Contents
- Introduction
- Globalization Changes in ColdFusion MX
- Good Practices: Obstacles in Developing I18N Applications
- Good Practices (cont): Encoding, Unicode, HTML
- Good Practices (cont): Locale Determination, Locale-Specific Formatting, Time Zones
- Good Practices (cont): ResourceBundles,Application Framework, User Specific, Server Specific
As you might know, the functionality required for full-blown globalization wasn’t really available to ColdFusion developers until Macromedia released ColdFusion MX. That, and the fact that most ColdFusion folks developed applications for a single locale, most without actually thinking about locales, probably means that some developers aren’t all that familiar with globalization and how it applies to their ColdFusion applications. This article helps you think about globalizing your ColdFusion applications and recommends a few good practices for you to follow as you begin.
Let's start by defining some terms and introducing some commonly used abbreviations:
- Internationalization or I18N (I18N is an abbreviation for the 18 letters between the "I" and "N" in internationalization) is the design and development of an application so that it functions in at least two locales. You can think of I18N as making an application language or locale neutral.
- Localization or L10N (L10N is an abbreviation for the 10 letters between the "L" and "N" in localization) describes the process after I18N, of adapting an application to a specific locale. You can think of L10N as the process of applying a locale or language "skin" to an I18N application.
- Globalization or G11N (yes, that’s right, another abbreviation; G11N is an abbreviation for the 11 letters between the "G" and "N" in globalization) is sometimes used as a synonym for I18N, but to me it’s the actual application implementation (L10N) across several locales after I18N—in other words, it is both I18N and L10N.
- Locale (strangely enough, this term has no snappy abbreviation) is the most fundamental part of globalization. Locales are languages and other cultural norms (calendars, date, number and currency formatting, spelling, and so forth) specific to a geographic region. You should note that both HTML and XML define locales rather plainly as "language-country," that is only as a language identifier. Java and ColdFusion, in a somewhat round about fashion, include other cultural information that is specific to locale. Some folks, like me for instance, take a more "kitchen sink&" approach and hang even more cultural information off locales such as fonts, directionality, snail mail address styles, language metrics, collation, and other bits of cultural trivia.
Right now you might be asking yourself, "So what?" For me, the answer to that question always comes down to people. The Internet is sometimes described as one great borderless bazaar—I’d place emphasis on the word "borderless." Millions of Internet users from dozens or even hundreds of countries inhabit that bazaar, but not all of them speak English. Perhaps you want to make those people your customers? Also consider statistics showing major new Internet growth occurring outside the U.S. Finally, even if you’re not interested in non-U.S. markets, consider your own backyard. There's an ever-growing population of Internet users who speak English as a second language in North America and England. Not globalizing your application prevents you from business opportunities in these new markets; failing to consider G11N for your ColdFusion applications is like nailing your applications’ feet into just one locale. It’s a big world out there and the people in it are coming to see you.