# 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.  The topics you find here deal
with the use of Fuchsia in multi-language environments.

Topics of interest (with details to be filled in over time):

- [ICU use in Fuchsia](icu.md).
- [ICU timezone data use](icu_data.md).
- [Internationalization and localization of mods in Fuchsia](localizing_mods.md).
- [International profile preferences](fuchsia_intl.md).
- [Fonts](fonts).
