= Software internationalization
\b[Software internationalization] is designing <software> so it can be adapted to different languages, regions and conventions without redesigning its core logic. <Software localization> performs a particular adaptation. Preparing the machinery and supplying a translated or region-specific result are related but distinct tasks.<Localization vs. Internationalization by the World Wide Web Consortium>[Internationalization and Localization working definitions]{ref}
For example, a program displaying a file count can keep the numerical count separate from the message that presents it. The selected <software locale> and message resources can then determine the full phrase, word order and grammatical form. Building every message by appending a fixed word to a decimal number assumes more about language than the underlying count requires. Similarly, a date represented as separate year, month and day values can be formatted for a chosen audience, whereas the bare string `03/04/2026` leaves the month/day convention ambiguous.<Localization vs. Internationalization by the World Wide Web Consortium>[Internationalization items1,3–4: string construction, locale preferences and separated resources]{ref}
The engineering work includes selecting suitable <character encodings>, supporting <Unicode>, accounting for text direction, and separating localizable resources from source code. <International Components for Unicode> supplies reusable implementations of many text and formatting services. Internationalization still needs application-level decisions: a display format cannot supply a missing unit, infer an unspecified date convention or replace a meaningful data model.<Localization vs. Internationalization by the World Wide Web Consortium>[Internationalization items1–4]{ref}
Back to article page