Hi,
In an effort to make conf more dynamic (and less depending on hardcoded configuration) I'd like to get rid of the conf directory.
Let's make a first distinction here. We currently have a conf directory used by the scripts/* files and one by the php/* files.
I'd like to discuss the scripts/conf directory first. Once that is done we can start discussing the php/conf directory
The scripts conf directory ========================== The conf directory shows all the languages currently known by transl to be in use for translations. (We get a warning if a language is found in the source and we don't have a conf file for it.)
The most prominent use of the conf directory is to create a list of languages that will show up on the index page. The conf file could hold a parameter "[ignore-sublang]". This parameter is used to change a LANG_XXX, SUBLANG_* into LANG_XXX, SUBLANG_NEUTRAL.
So, if we want to get rid of the hardcoded conf directory we need some logic that replaces the above.
The logic should hold the following rules:
1. LANG_XXX, SUBLANG_XXX_YYY is the highest level possible so we don't have to do anything here.
2. LANG_XXX, SUBLANG_DEFAULT (only 1 sublanguage in our code) should show LANG_XXX, SUBLANG LANG_XXX_YYY.
3. LANG_XXX, SUBLANG_DEFAULT (multiple sublanguages in our code) should show all possible LANG_XXX, SUBLANG_XXX_YYY.
4. LANG_XXX, SUBLANG_NEUTRAL (only 1 sublangugage in our code) should show LANG_XXX, SUBLANG_XXX_YYY.
5. LANG_XXX, SUBLANG_NEUTRAL (multiple sublanguages in our code) should mean show all possible LANG_XXX, SUBLANG_XXX_YYY.
(This logic is already somehow in place when the Portuguese issue was solved.)
I propose the following changes:
1. The first thing that should happen before any parsing is done is to get a list of all the different languages Wine is translated in. 2. Automatically create a scripts/conf directory that is based on the list found in step 1. This is temporary until the php part is converted as well. These conf files don't need the [hide] parameter or the [ignore-sublang] parameter anymore. 3. Change some of the php scripts to get rid of the two parameters mentioned in step 2. This basically means that we are not going to show pages anymore for the neutral languages (English is the exception).
Note for step 2. The php scripts rely on the php/conf (copy of scripts/conf) directory for retrieving the name of a language. The kernel32 resources also have these names albeit sometimes a little different. I've noted the following differences:
conf-dir kernel32 ======== ======== Chinese (Simplified) Chinese (PRC) Chinese (Traditional) Chinese (Taiwan) English (US) English (United States) English (Neutral) English Portugese (Brazilian) Portuguese (Brazil) Portugese (Portugal) Portuguese (Portugal)
Do we want to go with the kernel32 names or should we have some kind of name override?
To prove my point I just looked at the list of translations we have, created the necessary files in scripts/conf, got rid of the 2 parameters and ran the Master.sh script to regenerate everything. The results were as expected and looked basically the same as on our transl page. After changing the index page to not use the [hide] parameter anymore but some other logic it looked exactly the same.
Thoughts, ideas, suggestions, questions on all of this?
(As said he php/conf directory can/will be discussed in a second email once this is "solved").