Fix some issues and streamline regeneration process: - A few glitches (like duplicate language symbols, wrong Windows language ids etc) were fixed. - Scripts were added to allow to regenerate the list of supported locales from the list of known Windows locales. - Version info when language symbols became available was added to the documentation of the language symbol enum. - Synonyms are no longer hard-coded in the script genlang.py. See #23453. Closes #23437.
94 lines
4.4 KiB
Text
94 lines
4.4 KiB
Text
Run the genlang.py script from the top level wxWidgets directory to
|
|
update include/wx/language.h (wxLanguage enum), interface/wx/language.h
|
|
(its documentation) and src/common/languageinfo.cpp (conversion tables)
|
|
with the data from langtabl.txt, synonymtabl.txt, and scripttabl.txt.
|
|
|
|
langtabl.txt contains a tabular list of language entries. Each entry
|
|
contains
|
|
|
|
- a symbolic language identifier used in enum wxLanguage,
|
|
- a wxWidgets version when the entry was first introduced (a hyphen if not known)
|
|
- a BCP 47-like locale identifier,
|
|
- a Unix locale identifier,
|
|
- a Unix locale identifier including a region id (if the default Unix
|
|
locale identifier does not include a region identifier) (mainly for
|
|
compatibility with wxWidgets version below 3.1.6),
|
|
- numeric Windows language identifier (1),
|
|
- numeric Windows sublanguage identifier (1),
|
|
- language and region description in English
|
|
- language and region description in native language.
|
|
|
|
scripttabl.txt contains a list of 4-letter script codes and their
|
|
aliases (English) based on the ISO 15924 standard (2), restricted to
|
|
entries for which aliases are defined. This list is used in wxWidgets
|
|
to convert between script code used in BCP 47-like identifiers and
|
|
script modifiers used in Unix locale names. The data in (2) can be used
|
|
to update scripttabl.txt if necessary.
|
|
|
|
synonymtabl.txt contains a list of aliases for symbolic language identifiers.
|
|
This list is used to generate specific entries in wxLanguage enumeration.
|
|
|
|
Note: None of the files langtabl.txt, synonymtabl.txt, and scripttabl.txt should be
|
|
edited manually. Instead these files should be regenerated under Windows 11 or
|
|
above.
|
|
|
|
Windows provides an extensive list of locales. This list is used to regenerate
|
|
the files langtabl.txt, synonymtabl.txt, and scripttabl.txt. The subdirectory
|
|
util contains the C source of a small utility application that queries Windows
|
|
for a list of known locales.
|
|
|
|
2 additional tools are required to perform the regeneration process:
|
|
|
|
1) SQLite3 shell
|
|
Precompiled binaries can be downloaded from https://www.sqlite.org/download.html.
|
|
The download link is under the heading "Precompiled Binaries for Windows" and
|
|
looks like "sqlite-tools-win32-x86-3xxyyzz.zip" (where xx, yy, zz denote the
|
|
current SQLite version). Alternatively, the SQLite shell can be compiled from
|
|
sources - the archive "sqlite-amalgamation-3xxyyzz.zip" contains the required
|
|
source files.
|
|
|
|
2) Lua shell
|
|
Precompiled binaries are available at https://luabinaries.sourceforge.net/.
|
|
Download lua-x.y.z_Win32_bin.zip or lua-x.y.z_Win64_bin.zip (where x, y, z denotes
|
|
the lua version) from the download page. Rename the executable luaxy.exe to
|
|
luashell.exe or adjust the batch file mklangtablnew.bat accordingly.
|
|
|
|
The regeneration process consists of the following steps:
|
|
|
|
1) Regenerate the list of known Windows locales (optional)
|
|
This step is usually only required when a new major Windows version is published.
|
|
The utility showlocales should be invoked from a command prompt as follows:
|
|
|
|
showlocales > win-locale-table-win.txt
|
|
|
|
The resulting file win-locale-table-win.txt has to be placed into subdirectory
|
|
data/windows.
|
|
|
|
2) Update the Unicode data files (optional)
|
|
This step is only required when the Unicode data were actually updated.
|
|
To perform this step execute the batch file getunicodefiles.bat, located in the
|
|
data subdirectory.
|
|
|
|
3) Regenerate langtabl.txt, synonymtabl.txt, and scripttabl.txt
|
|
To perform this step execute the batch file mklangtablnew.bat, located in the
|
|
data subdirectory. The new versions will be placed in the data directory.
|
|
|
|
4) Check resulting new files langtabl.txt, synonymtabl.txt, and scripttabl.txt
|
|
The messages from step 3 issued by the batch file and the resulting files should
|
|
be carefully checked. If no errors occurred, the batch file replacetables.bat
|
|
can be executed.
|
|
|
|
5) Run the Python script genlang.py from the top level wxWidgets directory.
|
|
|
|
6) Commit the changes.
|
|
|
|
Notes:
|
|
1) Do not perform the regeneration process for older wxWidgets versions.
|
|
The scripts expect the data table files in a new format that was first introduced
|
|
in version 3.3.0.
|
|
2) If you need to add locales not present in the list of known Windows locales, then
|
|
they should be added at the end of the script win_genlocaletable.lua.
|
|
|
|
Footnotes
|
|
(1) used on Windows only, deprecated by Microsoft
|
|
(2) http://www.unicode.org/iso15924/iso15924-codes.html
|