After I discussed with Jens, he said that we should start with langpack first. He is right, let’s solve this piece by piece.
The problem we are trying to address
Currently, langpacks are either:
- binded with main package, like firefox, thunderbird, and other small-to-medium packages with translation files. So you install main package implies you need all the langpacks.
- split into numerous langpack sub-packages. Such as KDE, OpenOffice and Eclipse. So you install main package implies you only need the English US version. Langpack are to be installed individually.
1) is not good for resource-limit systems, because you have to install all the language packs, even you won’t be using them in the rest of your life. 2) is another extreme, you need to remember to manually install the langpack, or they won’t work as expected. To sum up, current language policy is either all or none.
We offer an additional choice: langpacks are automatically installed only if you need it.
How do we know which languages to be installed
These languages can be specified in /etc/sysconfig/lang-setting/langpack.
Whenever yum is invoked to install a package, if the package has langpacks, the langpack plugin will check against this file and pull out the required langpacks.
Don’t worry about langpack removal, as langpacks depend on the main package and will be removed as well. Simple, no?
How do we get user’s languages preference?
Notting and others mentioned the user preference should be exclusive stored in they home. Yes, I agree that we also need the per-user setting in their home, so they specify what language they want to see by themselves.
But system wide setting file is also essential, unless you want to scan through thousands of users’ preference files to determine what to install.
Another benefit of system wide/user home combination is that the langpack plugin can quickly detected what need to be installed by doing a set difference calculation, i.e. UserPref – SysPref.
You can turn of the automatic langpack installation by removing the langpack plugin, and start manually installing langpacks.