This repo is based on notes developed for internal projects, and made available as a community resource. Over time additional topics will become available.
Note
The key documents, discussing internationalisation, in the Python documentation are the Unicode HOWTO and Internationalisation modules, which discusses gettext and locale.
The Unicode glossary defines internationalisation as:
The process of designing and implementing a software product so that it can be easily localized, with few if any structural changes. Ideally, an internationalized software product can be localized simply by translating messages and other text displayed to a user, and by adapting icons and other visual elements. An "internationalized" software product is also known as a "localizable" product. Also known by the abbreviation "i18n" and the term "World-Readiness".
Internationalization, Unicode Glossary.
The Unicode definition aligns with the definitions from other sources, including Python's documentation, and aligns with many developers' understanding of internationalisation.
For global projects, or projects focusing on lesser used and minority languages, it is necessary to go beyond the basic understanding of internationalisation support that only focuses on localisation infrastructure.
Python's inbuilt modules are:
- Language and locale insensitive, although some can use libc based formatting and parsing.
- Will have varying degrees of support for Unicode.
- May yield different results than other languages and tools.
- Unicode versions supported by Python, ICU4C, and selected packages.
- Strings
- Codepoints, code units and characters
- Normalisation
- Graphemes
- Case mapping
- Case insensitivity
- Case folding
- String matching and comparison
- Collation
- Segmentation
- Transliteration
- Other string transformations
- Sorting
- Introduction
- Locale
- Unicode collation and sorting
- PyUCA
- PyICU
- Sorting emoji
- Natural sorting
- Various packages:
- Pandas
- Polars
