blob: a01718418d336e82ad6de5808db6b3a45832b814 [file] [log] [blame] [view]
# 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-->