It is nonsense that new users have to be experts on setting up their environment for their native languages before they start to learn to use Linux.
language-env is a package for Debian GNU/Linux system which makes basic native language-related settings.
Have you ever felt that you want a database of dot-files so that your softwares work well with your native language? We have to learn how to encode, display, input, sort, edit, and print our native language for each software. I think it is nonsense that new users have to be an expert on setting up their environment before they start to learn to use Linux. They have to consult FAQ archive or ask at mailing-list or net-news using Windows because their Linux cannot use mail or news with their native language. In a sense, the aim of language-env is to offer such kind of database. Different from a database, language-env can set up users' environment semi-automatically. (language-env may ask users, for example, which native-language-input-method they prefer.)
The current version supports Belarusian, Bulgarian, Danish, German, Spanish, French, Japanese, Korean, Macedonian, Polish, Russian, Serbian, Thai, and Ukrainian. New languages may added in future.
I am interested in adding supports for non-European languages (especially multi-byte languages) because it may be more difficult to set up an environment for these languages than European ones. Please contact me if you are interested in adding a language support!
language-env establishes basic native language environment by adding lines to the dot-files of the user who wants native language support and invokd set-language-env script. It does not modify system-wide settings (for example, /etc directory). A user has to invoke set-language-env to set up his/her personal Japanese environment or select language menu from Debian menu system.
The settings are on, for example, LANG variable, input methods, font specifications, preference of the language-enabled (localized) software to the other softwares, and basic language-related settings of major softwares.
On invoking set-language-env, the user will read a menu to choose a language. This menu will be displayed using only ASCII characters so that the menu can displayed anywhere (It is needless to say that ISO-8859-1 [or Latin-1] is not ASCII :-). Note that this does not mean that menu items are written in English.
1 : be (Bielaruskaja,Belarusian) 2 : bg (Bulgarian) 3 : da (Dansk,Danish) 4 : de (Deutsch,German) 5 : es (Espanol,Spanish) 6 : fr (Francais,French) 7 : ja (Nihongo,Japanese) 8 : ko (Hangul,Korean) 9 : mk (Makedonski,Macedonian) 10 : pl (Polski,Polish) 11 : ru (Russkii,Russian) 12 : sr (Srpski,Serbian) 13 : th (Thai) 14 : uk (Ukrajins'ka,Ukrainian)
Then the language-specific questions may appear. For example, Japanese users will be asked which input method to use (Canna, Wnn, or SKK).
Then the user will be asked whether to install each dot-file. If the user replies yes, set-language-env will add lines to the dot-file.
Finally set-language-env will show a list of Debian packages which should be installed. The user has to install them or ask the site administrator to install them.
language-env is an official part of Debian GNU/Linux ('testing' version aka 'woody') and found in the section 'misc'.
Here is the newest version.
user-ja is the precursor package of language-env. user-ja is included in the current version (2.2 or "potato") of Debian GNU/Linux.
Adding a new language support means adding a new set of dot-files for the new language.
If you are interested in adding a new language support to language-env package, read README.i18n included in language-env package. (user-ja also has README.i18n file, a bit older.)
In short, you will need to write
(1) will be the main part you want to write.
(2) is a perl script which includes several subroutines and translated messages. A subroutine to check whether native (non-ASCII) characters (such as ISO-8859-1, JISX0208 Kanji, and so on). You can write two sets of translated messages --- one with native characters and the other with ASCII characters. (This is which GNU gettext cannot do.)
Please contact me if you are interested in writing settings for your native language!
language-env establishes native language environment by only adding lines to users' dot-files. language-env does not affect any system-wide or 'global' setting such as /etc/profile, /etc/alternatives/x-terminal-emulator, and so on.
There are three reasons for this policy.
I don't need to explain (1). However, someone claims that this machine is personal one and used only by him/her, or that users of this machine speak the same language. In this case, system-wide or 'global' setting may be more convenient.
European people may be not able to understand (2). For example, a software to providing input method is required for Japanese. Debian has several such softwares. Even when all users of the machine are Japanese speaker, preference of input method may be different.
(1)(2) are not problems when the machine has only one user. However, (3) is still a problem.
This 'dangerous' does not mean that language-env package may have bugs. Even if this pakage has no bugs, I think it is still dangerous to establish native language environment by modifying system-wide or 'global' configurations. This is because the system-wide or 'global' settings are used by root user.
Of course, language-env may have bugs. For example, there are several books on how to establish Japanese environment on Linux. This means that the user has to modify so many configurations that these configurations can fill a book. Bugs can easily appear in such amount of configurations.
It is very difficult (or impossible) to establish perfect native language environment. For example, CJK (Chinese, Japanese, and Korean) characters cannot be displayed on Linux console (I said 'Linux' console because $TERM is set to 'Linux') and most of x-terminal-emulators. Imagine that the root user runs a software and the software outputs a message written in Japanese, which cannot be read because the root used the ordinal console. The message may be an important error message.