-
Notifications
You must be signed in to change notification settings - Fork 30
Description
Introduction
Soliciting discussion over the localization (i18n) strategy for this project.
Goals
Goal 1: Localize everything
The goal is complete localization of all messages visible to the user, within the bounds of POSIX compliance:
- All util messages, collation sequences, charsets and other util i18n details
- All --help messages and related output (
clap
crate) - All OS error messages (
io::Result
) - It is believed that some minimum set of strings are required to be English/POSIX permanently. Minimize this POSIX-only set as much as possible.
Goal 2: Encourage UTF-8
To be forward-looking, this project looks for opportunities to
- Drop support for non-UTF 8 strings
- Default to UTF-8 charsets and strings
This project should aggressively interpret the POSIX standards in terms of UTF-8 support, and look for opportunities to create default-UTF-8 operating modes, with a fallback mode that is "POSIX-ly correct."
Implementation strategies
Current strategy
The current strategies are,
- use the
gettext
crate, and mark strings withgettext()
. This provides a starting point for per-util coding, and at least gets us started on the road to i18n. - each util sets the charset thusly,
bind_textdomain_codeset(PROJECT_NAME, "UTF-8")?;
Improvements to our i18n
At present, OS error messages and --help are not translated at all, and need a project-wide strategy.
Also, one idea that is aligned with the gencat
util is to generate catgets message catalogs and abandon gettext. This works because catgets exists on all modern platforms.
See issue #65 for util-related tasks.
Feedback and thoughts are requested. We want to give users the best i18n support possible.