Software Internationalization and Localization
Software internationalization prepares an application for different languages, regions, and writing systems. Localization then adapts that prepared application for a particular locale without changing its core design.
itSoftware engineering | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic — Software Internationalization and Localization
Internationalization is the engineering work that lets a product adapt to different languages, regions, and writing systems without being rebuilt each time. Localization is the later, locale-specific adaptation. They are related in the way a well-designed kitchen is related to cooking dinner: one makes the other possible, but neither automatically produces the other.
Translation matters, but it is not the whole caravan. People also read dates, amounts, names, addresses, sorted lists, and screens that may run right to left. A product can contain perfectly translated words and still behave as if everyone uses one date order, one family-name arrangement, and one convenient direction of travel. Computers are diligent about preserving assumptions. They are less diligent about announcing them.
The dependable idea is to keep a stable value separate from its presentation. Store an instant as an instant and an amount as an amount. Then use the selected locale, meaning the language, regional, cultural, and preference context, to format what a person sees. Passing a preformatted date through an API is like mailing somebody a clock already set to your wall. It has information, but not all the information they need.
Text brings its own small galaxy of trouble. Unicode lets systems represent text across writing systems, but it does not mean a visible symbol has one code point, or that a label has a predictable width. Collation, the language-sensitive rules for sorting and grouping text, is not the same thing as raw code-point order. A list may be sorted with great confidence and very little relevance to its readers.
Messages need their own shape too. Keep a message identifier and structured values rather than joining translated fragments around a variable. Another locale may need another word order, plural form, or message structure. The string concatenation is rarely malicious. It is merely a tiny English sentence wearing a false moustache.
Start with the Intro for the architecture and design choices. Use Slides for the relationships among data, locale, and presentation. Keep the Cheatsheet nearby while reviewing a feature, then use the practice exercise to turn hidden assumptions into an audit. The Reference tab leads into the W3C, Unicode, CLDR, and BCP 47 material when the broad map needs exact rules.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://www.w3.org/International/questions/qa-i18n.en
Supports
- Definitions and relationship of internationalization and localization
- Localization concerns beyond translation
- Unicode, bidirectional text, language identification, and locale-sensitive preferences
- The value of designing for adaptation before localization
- https://www.w3.org/International/techniques/authoring-html.en
Supports
- Right-to-left text and markup considerations in web content
- Direction-aware interface and content decisions
- https://www.unicode.org/reports/tr35/
Supports
- LDML as a structured locale-data exchange format
- Language-neutral data followed by locale formatting
- Locale identifiers, matching, number formatting, date formatting, collation, person names, keyboards, and message formatting
- CLDR as a common locale-data base
- https://cldr.unicode.org/
Supports
- Common Locale Data Repository project and locale-data scope
- https://www.rfc-editor.org/rfc/rfc5646
Supports
- Tags for identifying languages
- https://www.unicode.org/history/publicationdates.html
Supports
- Release dates for Unicode 1.0.0, 2.0.0, 6.0.0, and 15.0.0
- https://www.rfc-editor.org/rfc/rfc1766.html
Supports
- RFC 1766 publication date and language-tag definition
- https://www.w3.org/2002/05/i18n-recharter/WG-charter.html
Supports
- Creation dates for the W3C Internationalization Activity and Working Group
- https://www.rfc-editor.org/rfc/rfc3066.html
Supports
- RFC 3066 publication date and replacement of RFC 1766
- https://cldr.unicode.org/index/downloads
Supports
- CLDR 1.1 release date and LDML release history
- https://www.rfc-editor.org/rfc/rfc4646.html
Supports
- RFC 4646 publication date and replacement of RFC 3066
- https://www.rfc-editor.org/rfc/rfc4647.html
Supports
- RFC 4647 publication date and language-tag matching
- https://weblate.org/
Supports
- Hosted and self-managed continuous localization options
- https://crowdin.com/pricing
Supports
- Crowdin plans and translation-delivery capabilities
- https://lokalise.com/pricing/
Supports
- Lokalise paid plans and product workflow positioning
- https://phrase.com/pricing/
Supports
- Phrase software-localization plans and integrations
- https://www.smartling.com/plans
Supports
- Smartling localization-management plans
