| # Internationalization, localization, and input methods in Fuchsia |
| |
| This is the entry page to the internationalization (I18N), localization (L10N) |
| and input methods (IM) subsystems in Fuchsia. |
| |
| ## Introduction |
| |
| Modern user-facing operating systems need to support users across a variety of |
| regions, languages, and cultures. Localization and internationalization are |
| critical to this goal. |
| |
| **Localization** (L10N) is the process of translating user interfaces into local |
| languages and conventions. This includes text and image content, fonts, regional |
| variations for components like date, time, text and imagery direction, currency, |
| and number formats. |
| |
| **Internationalization** (I18N) is the process of designing locale-independent |
| software that makes _localization_ in a wide range of languages, regions, and |
| cultures easy. |
| |
| Typically, localization refers to the work done by language experts, designers, |
| tech writers, and other content producers. Internationalization refers to the |
| work done by software engineers. |
| |
| Note: Currently, Fuchsia-based products use I18N and L10N only in the context |
| of Accessibility's screen reader. Specifically, the L10N data is fed into |
| the semantic data collected by Accessibility Manager and surfaced to the user |
| with text-to-speech. |
| |
| ## Fuchsia's approach {#fuchsias-approach} |
| |
| Because Fuchsia is designed to be extensible and to flexibly |
| support a variety of runtimes and target products, the core operating system |
| does not strictly specify how to implement i18n and l10n. |
| |
| However, Fuchsia does include some basic conventions, shared libraries, and |
| services for i18n/l10n, and uses these in the components and runners that are |
| typically distributed with Fuchsia. |
| |
| The following topics discuss the development of Fuchsia applications and |
| the operating system itself, in multi-language environments. |
| |
| - **[Internationalization preferences](i18n_preferences.md):** Fuchsia has |
| guidelines for how to encode, read, and write i18n settings. |
| |
| - **[ICU library](icu.md):** In-tree components that need common i18n |
| functionality such as formatting and parsing dates, times, and numbers, |
| working with time zones, displaying bidirectional text, or selecting locales |
| and languages can use the third-party ICU library. |
| |
| Out-of-tree components can also use ICU, but they need to bring |
| their own copy of ICU because the library is not part of the official |
| Fuchsia SDK. |
| |
| - **[ICU time zone data](icu_data.md):** Both in-tree _and_ out-of-tree |
| components that use ICU to deal with dates and times should consider using |
| Fuchsia's shared ICU time zone data to ensure consistent time among |
| components. |
| |
| - **Localizing components:** Fuchsia offers some basic guidance a |
| [string lookup library and workflow](localization/message_translation.md) |
| for C++ components. |
| |
| - **[Fonts](fonts):** Fuchsia provides a FIDL service for loading font assets, |
| with an API that is particularly useful for `freetype2` clients. |
| |
| <!--xrefs--> |
| |