DrakX Specification for Linux-Mandrake 8.0

Current team of Install group is :

gc
damien
fpons
pixel


  Boot process (stage1)

    Installation begin by booting from CD-ROM or Diskette. From CD-ROM all
installation method are available (CD, HD, NFS, FTP, HTTP) on options. From
Diskette according to image selected, only some related method (network or cdrom
or hd) are available and module managed due to size limitation to 1.44Mb.
    Options are always available by pressing on F1.

  DrakX process (stage2)

    DrakX installation organized in steps (execution sequence described below).
Steps listed on left side and help available on bottom right side. most of the
screen is available for various dialog for interacting with the user. Steps
execution sequence is automated and described below.

Mouse is probed and if none has been found or if the mouse has not moved, a
specific mouse configuration is displayed at the begining.


Before the graphical steps, there is a detection step. It detects various
hardware, including modems (from tty0 to tty7), mouse (serial, usb, ps/2) and
tablets.

    Steps

      Choose Your language: step always displayed. default choice is previous one or
English. After choosing a language, a license splash screen translated in the
chosen language is displayed with Accept and Refuse buttons. Refuse should
stop installation. Accept validate language choice which are propagated to all
DrakX visible widget. Advanced mode allow to select other language available to
be installed. Advanced mode allow to select language which will be installed on
system.
      If step is redone, the license is no more displayed.

      Select Install Class: step always displayed. default choice is previous one
or Recommended. Only one other option available is Customized. Two buttons
available are Install or Upgrade. Available steps (left side) are changed
according to installation class selected, where the default is the one of
Recommended with Install.

      Hard Drive Detection: step always displayed. In recommended mode,
automatically done. In Customized mode, all modules that manage SCSI/IDE cards
are loaded automatically and a question asking for other module to load is
displayed.
      If clicked later or if to the question to load other module the
answer is Yes, a list of module is displayed (or if the question to other
module to load is. When a module is chosen, two options are available
Autoprobe and Specify options. Autoprobe try to load the module without any
other user options (default module parameter). Specify options allow user to
give module parameters individually in a list for all known parameters. At this
point Ok or Cancel are available, Cancel should stop the module installation
and go to next step. If any error occurs during module installation, a question
asking to try with other parameter is displayed, the same module is still used.

      Setup filesystems: step always displayed. display a list of available choice
accoding to what has been probed. May contains Use free space, "Use existing
partition, Use the window partition for loopback, Use the free space on the
Windows partition, Remove Windows(TM)|Erase entire disk" (according to disk
configuration => only one big fat for the first case only), "Custom disk
partitioning".
      If Use free space mode, auto allocation in available on available disk.
      If Use existing partition mode, a list of partition named in Linux
scheme are displayed with their approximate size in Mb and propose mount point
to choose in list boxes for each partitions available on hard drive.
      If Use the window partition for loopback mode, DrakX use available size
on the windows partition to create a root file and a swap file which will be
used in loopback, this means this is a lnx4win installation.
      If Use the free space on the Windows partition mode, DrakX will resize
the windows partition and allocate true linux filesystem (at least / and swap).
      If Remove Windows(TM)|Erase entire disk mode, DrakX clean the
partition table before auto allocating partition.
      If Custom disk partitioning mode, diskdrake is launch. TO BE DEFINED to
change make diskdrake use only advanced mode.
Diskdrake show all partition of all non-removable disk graphically. All special
partition are hidden, only user accessible partition are visible: this remove
extended partition, whole disk partition on sparc platform. Clicking on a disk
notebook tab show all his partitions. Clicking on a partition show all actions
available for this partition (depend if customized or advanced mode) as well as
information on this partition (depend if customized or advanced mode). Most
diskdrake operation are done without writing on disk (exception are Resizing
partitions) and everything is written once on the disk when exiting diskdrake,
at any time if writing partition table is necessary, there are always a dialog
box asking the user to confirm the write. If no operation are modifying
partition table, no dialog is displayed on exit (for example if giving mount
point to partition). General action are available too:
        Clear All: clear all partition of the given disk.
        Auto allocate: try to allocate partition in available disk (not the
seen disk).
        Undo: undo last operation.
        Done: quit and save changes.
Other operations are available in advanced mode:
        Rescue partition table: try to rescue a lost partition table,
absolutely no garantee to succeed and may destroy what could be saveable by
another tools.
        Reload: reload partition table from disk, erasing all changes in
memory done by the user.
        Wizard: go to partition wizard, that the partition filesystems default
behaviour on startup.
        Restore from floppy: restore a partition table from previously saved
partition table from diskdrake.
        Save to floppy: save partition table to floppy.
        Options: global options available for filesystem configuration. This
include Removable media automouting supermount check box disabled by default.
      Operation available on partition are:
        Mount point: change or define mount point for partition, only
available for true filesystem partition.
        Resize: resize partition, if a specific algorithm to keep data is
used no data may be lost, else all data are lost but nothing is written by
diskdrake on the partition data in this last case (this means data can be
restored by restoring original size and location).
        Delete: delete partition, if the same partition is created (same type,
location, size) all data can be restored as diskdrake doesn't write on partition
data.
      Operation available on partition table but in advanced mode are:
        Type: change type of partition, all data will be lost but diskdrake as
above does not destroy them, and everyting can be restored.
        Format: format partition, at this point, all data ARE LOST.
        Mount: mount partition now, usefull for swap to increase memory
capacity for machine low on resource that are not available to complete setup
filesystem step correctly (problably if a resize partition is used on FAT fs).
allow Mounting swap on customized mode too.
      A legend for partition type colors is available
(Ext2,ReiserFS,Swap,FAT,Other,Empty). It has additionnal features to create a
partition or change its type (only available in advanced mode).

      Format partitions: step always displayed. display list of partition to
format with click boxes. Some are defined according to type of partitions and if
the partition has been created or taken back.
If a partition has already been formated, it is not proposed, or if it should
not be proposed (alrady existing partition like /mnt/windows).
On Advanced tag, an additional dialog is displayed to select partition to format
(all available partition listed) and to format them with bad block checking.

      Choose packages: step always displayed. default selection done to be
correct according to size available, Install or Upgrade, Hardware available.
This selection is done according to Mandrake first choice of packages.
On all mode, display groups and main desktop used (KDE or Gnome), an
individual package selection check box is available to allow selecting package
individually. In this case, a dialog displaying a tree with groups, (Mandrake
first choice/alternatives) and packages is shown on the left part, a description
window for each packages is shown on the right part.

      Install system: step always displayed. no interactive and display
installation progression. include if available and on a CD basis a spash screen
of advertising and other (pub!).

      Hardware panel: step always displayed. show current configuration for
Mouse, Keyboard, TimeZone, Graphic/TV Card, Monitor.
At each values chosen (list boxes displayed a
synthesis description) the current dialog is removed from screen and specific
configuration panels are displayed (like currently for mouse, keyboard ...).
And end of these specific configuration panels, this one is remapped on screen
to be accepted in general.

      Sub steps of Hardware panel:

        Configure mouse: displayed on request or if the mouse has not been
moved (so unsafe detection), but have to be displayed earlier. A mouse tree
selection for type is displayed with default case as what is probed or
serial/Generic 2 button Mouse if none has been probed. Cancel disable mouse
modification and Ok allow next mouse configuration dialog. Then comes a serial
port dialog for serial mice (default mouse connected to COM1 if nothing found).
Then a mouse screen control is chown (according to mouse capacity: 3 buttons
with or without mouse, need 7 buttons checking ?). Here Ok validate to go to
next step and Cancel to first mouse dialog displayed (mouse tree selection for
type).

        Configure keyboard: displayed on request. default is set according to
TimeZone definition (itself defaulting to language selection at the beginning).
A list of keyboard is shown to the user and Ok validates change and return to
Hardware panel dialog with enabled change. Cancel abort any modification and
return to the same Hardware panel dialog.

        Configure timezone: displayed on request. default is set according to
language selection. A timezone tree selection is shown with only the subtree
corresponding to the current selection expanded (as other tree dialog). Ok
validates change and return to Hardware panel dialog whereas Cancel avoid
the change before returning to the same main dialog.

        Graphic Card: display graphic card probed. No change available.

        TV Card: display TV/Tuner card probed. No change available.

        Monitor: need execution of ddcxinfos at this point. Only Size, Max
resolution and depth displayed. No change available.


      Miscellaneous step have been removed and dispatched to other steps. "Use
hard drive optimisation and Enable num lock at startup are removed. Choose
security level is moved to security step. Precise RAM size if needed" and
Clean /tmp at each boot are moved to bootloader step.
Removable media automouting is moved to diskdrake options.

      Security: step displayed only in customized mode. TO BE DEFINED. should
display at least securty level to choose. level are Low, Medium, High and
for advanced there are Welcome To Crackers, Poor, Paranoid too.

      Configure networking: step always displayed. dialog always displayed in
both Recommended and Customized mode. A list of network configuration
entries are shown with the following:
        Configure a normal modem connection
        Configure an ISDN connection
        "Configure a DSL (or ADSL) connection
        Configure a cable connection
        Configure local network|Reconfigure local network
        Disable networking|Enable networking
        Done
      By cliking on a specific item, another dialog is displayed to configure
some specific part of the network.
        Configure a normal modem connection: display a question to probe for a
modem if not already detected, then if none are found or probe has been refused
a list of possible serial device are listed (in the form ttySx / COM(x+1) with
the current mouse device removed if it is serial). After that a dialog including
all parameters than can be used is shown. This includes Connection Name,
Phone number, Login ID, Password, Authentication, Domain name, DNS 1
and DNS 2. Authentication is a combo of PAP, Termina-Based and
Script-Based (It seems necessary to get CHAP back on this one, no way of
testing TO BE DEFINED). If no DNS are given, the connection is configured to try
using provider DNS. Ok and Cancel button are available.
        Configure an ISDN connection:
Try to detect some PCI card. If not detected, asks if it's a ISA/pcmcia or PCI
card, and gives the list of the cards. Information are then asked: 
Card IRQ only if ISA/pcmcia
Card mem (DMA) only if ISA/pcmcia
Card IO only if ISA/pcmcia
Card IO_0 only if ISA/pcmcia with io0
Card IO_1 only if ISA/pcmcia with io1
Your personal phone number phone
Provider name (ex provider.net)
Provider phone number
Provider dns 1
Provider dns 2
Dialing mode auto or manual
Account Login (user name)
Account Password hided
Confirm Password again
        Configure a DLS (or ADSL) connection:
The user chooses between pptp, pppoe and dhcp. If dhcp, redirection to LAN.
If there is more than one ethernet card, The user must choose the card to use
(displayed with the module). After that, some informations are asked:
Provider name (ex provider.net)
Provider dns 1
Provider dns 2
Account Login (user name)
Account Password hided
Confirm Password again
        Configure a cable connection: redirection to LAN
        Configure local network: display what has been probed with a question
about using another module and Yes, No and See hardware info buttons.
No is the default. If Yes is clicked a list of modules is displayed with
Ok or Cancel buttons available. Cancel should go back to previous
question. If See hardware info is clicked a list of probed hardware is
displayed. If Yes is clicked, for each ethernet interface, a dialog asking for
IP address, Netmask and Automatic IP check box (DHCP/BOOTP) is displayed. Then
if DHCP has been chosen, only a dialog asking for Host name and another for HTTP
proxy and FTP proxy if any. If DHCP has not been chosen, an IP address has to be
defined and a dialog including Host name, DNS server, Gateway and "Gateway
device" is displayed. Then the same HTTP proxy and FTP proxy dialog as above. As
network configuration may to have been reworked a bit it has TO BE DEFINED if
this is kept like that or not.
        Disable networking|Enable networking is just a way to toggle
networking on or off, may be to be accessible only for advanced mode.
        Quit exit the network step.

NETWORK ADVANCED DOCUMENTATION:
Here is a list of entry points available in post install without using the ugly
install graphic toolkit:

http://www.mandrakesoft.com/~damien/html/draknet_advanced_doc.txt>http://www.mandrakesoft.com/~damien/html/draknet_advanced_doc.txt

      Configure Printer: step always displayed. In recommended mode, only
activated if a local printer is detected, else no printer are configured by
default. In customized mode or if the step has been clicked a list of printer
already configured is displayed and the possibility to add or exit the
configuration. It allow configuration of printers for both LPR and CUPS
individually (available by advanced mode when adding a printer). Printer
protocol managed are local/usb/samba/ncp/lpd for LPR and
local/usb/serial/samba/lpd/cups_network for CUPS.

      Set root password: step always displayed for Install only. In
recommended mode display only a Password entry and a Password (again) entry
to select the root password. In advanced mode, a Use NIS (yellow pages) check
boxes and Use MD5 check box are available. Ok validate root password and "No
password avoid setting a password. No password is only available in Low"
security level or less. The length of the minimal password depend upon security level.

In corporate firewall :
      Set admin password: step always displayed for Install only. It only
      displays a Password entry and a Password (again) entry
to select the admin password. 
The length of the minimal password depend upon security level. (double of the
      security level)

      Add a user: step always displayed for Install Only. In recommend mode
display Real name, User name, Password, Password (again) and icon
choices as graphical. For customized mode a shell combo is available to choose a
specific shell for the user depending on the package installed. The real name is
the user friendly name of the user whereas user name is its login id name. The
box display user that have already been added below the title. Accept user
button allow the creation of the user and Done finish this step. High or
higher security level implies the creation of at least one user. Password length
are subject to same restriction according to security level. In advanced mode,
allow to choose the user in auto login mode.

      Create a boot disk: step always displayed. In recommended mode this
step is automatically done by doing nothing. If clicked or customized mode, the
user is prompted to allow building a boot disk (default is yes). In advanced
mode allow selection of floppy drive.

      Install boot loader: step always displayed. In recommended mode this
step is automatically done. In customized mode, a combo Boot device list the
various boot device that can be used where the bootloader can be installed. The
boot device can the Linux description of the whole disk available (ex: /dev/hda)
or partition available in these disk or floppy drives. Other platform
specificity are not listed here.
      LBA check box is displayed in advanced mode (enabled by default) to
allow using LBA addressing if available (PC with LILO). bootloader combo to
select a given bootloader to use, available choice are Grub, "LILO with text
menu, LILO with graphical menu. default chosen is LILO
with graphical menu. Delay before booting default image" entry
field is available with default value current setting (upgrade) or 5 else.
Precise RAM size if needed (found xx MB) entry is displayed too,
clean /tmp check box is disabled by default too.
Boot in graphical mode (init 5) is available here in advanced mode too
(previously in X configuration). Video mode combo, Password, Password (again),
Restrict command line options check box is displayed.
Video mode combo list text mode and video mode used for frame buffer, video mode
used for frame buffer are available only if the install managed to boot with
frame buffer activated. Password are restricted according to security level as
other password. Password are mandatory according to security level TO BE DEFINED.

      Configure X: step always displayed. By default on recommended mode,
everything is done automatically if possible up to test of graphic card, and if
the user accept the settings no more question are asked to him. In customized
mode a dialog is displayed to choose resolution, color depth and which version
of XFree (with 3D optionally) is available for the current card where only a
short description is displayed. Ok button allow to jump to test phase (for the
first time only) if available. Cancel return to main XFree configuration
window allowing to change Monitor, Graphic card, Server options or Resolution
with X version to choose. Show all extend resolution list to more resolutions
according to card (with onboard memory) only and no more monitor capabilities.
      The main dialog is a list of command to change some X configuration aspect
according to advanced mode or not :
        Change Monitor: display a tree selection of monitors where default one
is selected. Ok and Cancel buttons are available.
        Change Graphic card: display a tree selection of graphic card where
default one is selected. Ok and Cancel buttons are available. If Unlisted
is chosen, then a tree of server/driver is displayed containing available server
for XF3 or driver for XF4. Cancel return to main window and Ok validates
change.
        Change Server options: available only in advanced mode. display list
of check boxes options for server currently used. Ok and Cancel available.
        Change Resolution: change resolution and depth including with X server
version chosen (relative to Xdrakres too).
        Show Information: display an information dialog showing current
configuration internals of X.
        Test again: restart test with current configuration of X.
        Quit: exit X configuration main window. Other question about autologin
and window manager to use are asked on Add user step.

      Exit install: step displayed only in customized mode but always
executed. Only a text is displayed with a Ok button. If clicked and some step
have not been executed/completed correctly, a question dialog ask the user if he
really want to quit now, default answer is No. Advanced switch let user access
to do the previously Auto install floppy step in DrakX < 8.0. This is just a
question asking the user to generate an auto install floppy automatically.
2 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417
package lang; # $Id: lang.pm 269897 2010-06-05 21:23:50Z tv $

use diagnostics;
use strict;
use common;
use utf8;
use log;

#- key: lang name (locale name for some (~5) special cases needing
#-      extra distinctions)
#- [0]: lang name in english
#- [1]: transliterated locale name in the locale name (used for sorting)
#- [2]: default locale name to use for that language if there is not
#-      an existing locale for the combination language+country choosen
#- [3]: geographic groups that this language belongs to (for displaying
#-      in the menu grouped in smaller lists), 1=Europe, 2=Asia, 3=Africa,
#-      4=Oceania&Pacific, 5=America (if you wonder, it's the order
#-      used in the olympic flag)
#- [4]: special value for LANGUAGE variable (if different of the default
#-      of 'll_CC:ll_DD:ll' (ll_CC: locale (if exist) resulting of the
#-      combination of chosen lang (ll) and country (CC), ll_DD: the
#-      default locale shown here (field [2]) and ll: the language (the key))
our %langs = (
'af' =>    [ 'Afrikaans',           'Afrikaans',         'af_ZA', '  3  ', 'iso-8859-1' ],
'am' =>    [ 'Amharic',             'ZZ emarNa',         'am_ET', '  3  ', 'utf_ethi' ],
'ar' =>    [ 'Arabic',              'AA Arabic',         'ar_EG', ' 23  ', 'utf_ar' ],
'as' =>    [ 'Assamese',            'ZZ Assamese',       'as_IN', ' 2   ', 'utf_beng' ],
'ast' =>   [ 'Asturian',            'Asturianu',         'ast_ES', ' 1   ', 'unicode' ],
'az' =>    [ 'Azeri (Latin)',       'Azerbaycanca',      'az_AZ', ' 2   ', 'utf_az' ],
'be' =>    [ 'Belarussian',         'Belaruskaya',       'be_BY', '1    ', 'utf_cyr1' ],
'ber' =>   [ 'Berber',              'ZZ Tamazight',      'ber_MA', '  3  ', 'utf_tfng', 'ber_MA:ber:fr' ],
'bg' =>    [ 'Bulgarian',           'Blgarski',          'bg_BG', '1    ', 'cp1251' ],
'bn' =>    [ 'Bengali',             'ZZ Bengali',        'bn_BD', ' 2   ', 'utf_beng' ],
#- bo_CN not yet done, using dz_BT locale instead
'bo' =>    [ 'Tibetan',             'ZZ Bod skad',       'dz_BT', ' 2   ', 'utf_tibt', 'bo' ],
'br' =>    [ 'Breton',              'Brezhoneg',         'br_FR', '1    ', 'iso-8859-15', 'br:fr_FR:fr' ],
'bs' =>    [ 'Bosnian',             'Bosanski',          'bs_BA', '1    ', 'iso-8859-2' ],
'ca' =>    [ 'Catalan',             'Catala',            'ca_ES', '1    ', 'iso-8859-15', 'ca:es_ES:es' ],
'ca@valencian' =>  [ 'Catalan (Valencian)', 'Catala (Valencia)', 'ca_ES', '1    ', 'iso-8859-15', 'ca_ES@valencian:ca@valencian:ca:es_ES:es' ],
'cs' =>    [ 'Czech',               'Cestina',           'cs_CZ', '1    ', 'iso-8859-2' ],
'cy' =>    [ 'Welsh',               'Cymraeg',           'cy_GB', '1    ', 'utf_lat8',    'cy:en_GB:en' ],
'da' =>    [ 'Danish',              'Dansk',             'da_DK', '1    ', 'iso-8859-15' ],
'de' =>    [ 'German',              'Deutsch',           'de_DE', '1    ', 'iso-8859-15' ],
'dz' =>    [ 'Buthanese',           'ZZ Dzhonka',        'dz_BT', ' 2   ', 'utf_tibt' ],
'el' =>    [ 'Greek',               'Ellynika',          'el_GR', '1    ', 'iso-8859-7' ],
'en_AU' => [ 'English (Australia)', 'English (AU)',      'en_AU', '   4 ', 'iso-8859-1', 'en_AU:en_GB:en' ],
'en_CA' => [ 'English (Canada)',    'English (Canada)',  'en_CA', '    5', 'iso-8859-15', 'en_CA:en_GB:en' ],
'en_GB' => [ 'English',             'English',           'en_GB', '123 5', 'iso-8859-15' ],
'en_IE' => [ 'English (Ireland)',   'English (Ireland)', 'en_IE', '1    ', 'iso-8859-15', 'en_IE:en_GB:en' ],
'en_NZ' => [ 'English (New-Zealand)', 'English (NZ)',    'en_NZ', '   4 ', 'iso-8859-1', 'en_NZ:en_AU:en_GB:en' ],
'en_ZA' => [ 'English (South Africa)', 'English (ZA)',   'en_ZA', '   3 ', 'iso-8859-1', 'en_ZA:en_GB:en' ],
'en_US' => [ 'English (American)', 'English (American)', 'en_US', '    5', 'C' ],
'eo' =>    [ 'Esperanto',           'Esperanto',         'eo_XX', '12345', 'unicode' ],
'es' =>    [ 'Spanish',             'Espanol',           'es_ES', '1 3 5', 'iso-8859-15' ],
'et' =>    [ 'Estonian',            'Eesti',             'et_EE', '1    ', 'iso-8859-15' ],
'eu' =>    [ 'Euskara (Basque)',    'Euskara',           'eu_ES', '1    ', 'utf_lat1' ],
'fa' =>    [ 'Farsi (Iranian)',     'AA Farsi',          'fa_IR', ' 2   ', 'utf_ar' ],
'fi' =>    [ 'Finnish (Suomi)',     'Suomi',             'fi_FI', '1    ', 'iso-8859-15' ],
#- 'tl' in priority position for now, as 'fil' is not much used.
#- Monolingual window managers will not see the menus otherwise
'fil' =>   [ 'Filipino',            'Filipino',          'fil_PH', ' 2   ', 'utf_lat1',  'tl:fil' ],
'fo' =>    [ 'Faroese',             'Foroyskt',          'fo_FO', '1    ', 'utf_lat1' ],
'fr' =>    [ 'French',              'Francais',          'fr_FR', '1 345', 'iso-8859-15' ],
'fur' =>   [ 'Furlan',              'Furlan',            'fur_IT', '1    ', 'utf_lat1', 'fur:it_IT:it' ],
'fy' =>    [ 'Frisian',             'Frysk',             'fy_NL', '1    ', 'utf_lat1' ],
'ga' =>    [ 'Gaelic (Irish)',      'Gaeilge',           'ga_IE', '1    ', 'utf_lat1', 'ga:en_IE:en_GB:en' ],
#'gd' =>   [ 'Gaelic (Scottish)',   'Gaidhlig',          'gd_GB', '1    ', 'utf_lat8',    'gd:en_GB:en' ],
'gl' =>    [ 'Galician',            'Galego',            'gl_ES', '1    ', 'iso-8859-15', 'gl:es_ES:es:pt:pt_BR' ],
#- gn_PY not yet done, using es_PY locale instead
'gn' =>    [ 'Guarani',             'Avane-e',           'es_PY', '    5', 'utf_lat1',    'gn:es_PY:es' ],
'gu' =>    [ 'Gujarati',            'ZZ Gujarati',       'gu_IN', ' 2   ', 'unicode' ],
#'gv' =>   [ 'Gaelic (Manx)',       'Gaelg',             'gv_GB', '1    ', 'utf_lat8',    'gv:en_GB:en' ],
'ha' =>    [ 'Hausa',               'Hausa',             'ha_NG', '  3  ', 'utf_yo', 'ha:en_NG' ],
'he' =>    [ 'Hebrew',              'AA Ivrit',          'he_IL', ' 2   ', 'utf_he' ],
'hi' =>    [ 'Hindi',               'ZZ Hindi',          'hi_IN', ' 2   ', 'utf_deva' ],
'hr' =>    [ 'Croatian',            'Hrvatski',          'hr_HR', '1    ', 'iso-8859-2' ],
'hu' =>    [ 'Hungarian',           'Magyar',            'hu_HU', '1    ', 'iso-8859-2' ],
'hy' =>    [ 'Armenian',            'ZZ Armenian',       'hy_AM', ' 2   ', 'utf_armn' ],
# locale not done yet
#'ia' =>   [ 'Interlingua',         'Interlingua',       'ia_XX', '1   5', 'utf_lat1' ],
'id' =>    [ 'Indonesian',          'Bahasa Indonesia',  'id_ID', ' 2   ', 'utf_lat1' ],
'ig' =>    [ 'Igbo',                'Igbo',              'ig_NG', '  3  ', 'utf_yo', 'ig:en_NG' ],
'is' =>    [ 'Icelandic',           'Islenska',          'is_IS', '1    ', 'iso-8859-15' ],
'it' =>    [ 'Italian',             'Italiano',          'it_IT', '1    ', 'iso-8859-15' ],
'iu' =>    [ 'Inuktitut',           'ZZ Inuktitut',      'iu_CA', '    5', 'utf_iu' ],
'ja' =>    [ 'Japanese',            'ZZ Nihongo',        'ja_JP', ' 2   ', 'jisx0208' ],
'ka' =>    [ 'Georgian',            'ZZ Georgian',       'ka_GE', ' 2   ', 'utf_geor' ],
'kk' =>    [ 'Kazakh',              'Kazak',             'kk_KZ', ' 2   ', 'utf_cyr2' ],
'kl' =>    [ 'Greenlandic (inuit)', 'Kalaallisut',       'kl_GL', '    5', 'utf_lat1' ],
'km' =>    [ 'Khmer',               'ZZ Khmer',          'km_KH', ' 2   ', 'utf_khmr' ],
'kn' =>    [ 'Kannada',             'ZZ Kannada',        'kn_IN', ' 2   ', 'utf_knda' ],
'ko' =>    [ 'Korean',              'ZZ Korea',          'ko_KR', ' 2   ', 'ksc5601' ],
'ku' =>    [ 'Kurdish',             'Kurdi',             'ku_TR', ' 2   ', 'utf_lat5' ],
#-'kw' =>  [ 'Cornish',             'Kernewek',          'kw_GB', '1    ', 'utf_lat8',    'kw:en_GB:en' ],
'ky' =>    [ 'Kyrgyz',              'Kyrgyz',            'ky_KG', ' 2   ', 'utf_cyr2' ],
#- lb_LU not yet done, using de_LU locale instead
'lb' =>    [ 'Luxembourgish',       'Letzebuergesch',    'de_LU', '1    ', 'utf_lat1', 'lb:de_LU' ],
'li' =>    [ 'Limbourgish',         'Limburgs',          'li_NL', '1    ', 'utf_lat1' ],
'lo' =>    [ 'Laotian',             'Laotian',           'lo_LA', ' 2   ', 'utf_laoo' ],
'lt' =>    [ 'Lithuanian',          'Lietuviskai',       'lt_LT', '1    ', 'iso-8859-13' ],
#- ltg_LV locale not done yet, using lv_LV for now
#- "ltg" is not a standard lang code, ISO-639 code was refused;
#- LTG_LV should be used instead (uppercase is for non-standard
#- langcodes, as defined by locale naming standard
'ltg' =>   [ 'Latgalian',           'Latgalisu',         'lv_LV', '1    ', 'utf_lat7', 'ltg:LTG:lv' ],
#'lu' =>    [ 'Luganda',             'Luganda',           'lg_UG', '  3  ', 'utf_lat1' ],
'lv' =>    [ 'Latvian',             'Latviesu',          'lv_LV', '1    ', 'iso-8859-13' ],
'mi' =>    [ 'Maori',               'Maori',             'mi_NZ', '   4 ', 'utf_lat7' ],
'mk' =>    [ 'Macedonian',          'Makedonski',        'mk_MK', '1    ', 'utf_cyr1' ],
'ml' =>    [ 'Malayalam',           'ZZ Malayalam',      'ml_IN', ' 2   ', 'utf_mlym' ],
'mn' =>    [ 'Mongolian',           'Mongol',            'mn_MN', ' 2   ', 'utf_cyr2' ],
'mr' =>    [ 'Marathi',             'ZZ Marathi',        'mr_IN', ' 2   ', 'utf_deva' ],
'ms' =>    [ 'Malay',               'Bahasa Melayu',     'ms_MY', ' 2   ', 'utf_lat1' ],
'mt' =>    [ 'Maltese',             'Maltin',            'mt_MT', '1 3  ', 'unicode' ],
#- "my_MM" not yet done, using "en_US" for now
'my' =>    [ 'Burmese',             'ZZ Bamaca',         'my', ' 2   ', 'utf_mymr', 'my_MM:my' ],
'nb' =>    [ 'Norwegian Bokmaal',   'Norsk, Bokmal',     'nb_NO', '1    ', 'iso-8859-15',  'nb:no' ],
'nds' =>   [ 'Low Saxon',           'Platduutsch',       'nds_DE', '1    ', 'utf_lat1', 'nds_DE:nds' ],
'ne' =>    [ 'Nepali',              'ZZ Nepali',         'ne_NP', ' 2   ', 'utf_deva' ],
'nl' =>    [ 'Dutch',               'Nederlands',        'nl_NL', '1    ', 'iso-8859-15' ],
'nn' =>    [ 'Norwegian Nynorsk',   'Norsk, Nynorsk',    'nn_NO', '1    ', 'iso-8859-15',  'nn:no@nynorsk:no_NY:no:nb' ],
'nr' =>    [ 'Ndebele',             'Ndebele',        'nr_ZA', '  3  ', 'utf_lat1', 'nr:en_ZA' ],
'nso' =>   [ 'Northern Sotho',      'Sesotho sa Leboa',  'nso_ZA', '  3  ', 'utf_lat1', 'st:nso:en_ZA' ],
'oc' =>    [ 'Occitan',             'Occitan',           'oc_FR', '1    ', 'utf_lat1',  'oc:fr_FR:fr' ],
'pa_IN' => [ 'Punjabi (gurmukhi)',  'ZZ Punjabi',        'pa_IN', ' 2   ', 'utf_guru' ],
'pl' =>    [ 'Polish',              'Polski',            'pl_PL', '1    ', 'iso-8859-2' ],
'pt' =>    [ 'Portuguese',          'Portugues',         'pt_PT', '1 3  ', 'iso-8859-15', 'pt_PT:pt:pt_BR' ],
'pt_BR' => [ 'Portuguese Brazil', 'Portugues do Brasil', 'pt_BR', '    5', 'iso-8859-1',  'pt_BR:pt_PT:pt' ],
#- qu_PE not yet done, using es_PE locale instead
'qu' =>    [ 'Quichua',             'Runa Simi',         'es_PE', '    5', 'utf_lat1', 'qu:es_PE:es' ],
'ro' =>    [ 'Romanian',            'Romana',            'ro_RO', '1    ', 'iso-8859-2' ],
'ru' =>    [ 'Russian',             'Russkij',           'ru_RU', '12   ', 'koi8-u' ],
'rw' =>    [ 'Kinyarwanda',         'Kinyarwanda',       'rw_RW', '  3  ', 'utf_lat1', 'rw' ],
'sc' =>    [ 'Sardinian',           'Sardu',             'sc_IT', '1    ', 'utf_lat1', 'sc:it_IT:it' ],
'se' =>    [ 'Saami',               'Samegiella',        'se_NO', '1    ', 'unicode' ], 
'sk' =>    [ 'Slovak',              'Slovencina',        'sk_SK', '1    ', 'iso-8859-2' ],
'sl' =>    [ 'Slovenian',           'Slovenscina',       'sl_SI', '1    ', 'iso-8859-2' ],
'so' =>    [ 'Somali',              'Soomaali',          'so_SO', '  3  ', 'utf_lat1' ], 
'sq' =>    [ 'Albanian',            'Shqip',             'sq_AL', '1    ', 'iso-8859-1' ], 
'sr' =>    [ 'Serbian Cyrillic',    'Srpska',            'sr_CS', '1    ', 'utf_cyr1', 'sp:sr' ],
#- "sh" comes first, because otherwise, due to the way glibc does language
#- fallback, if "sr@Latn" is not there but a "sr" (whichs uses cyrillic)
#- is there, "sh" will never be used.
'sr@Latn' => [ 'Serbian Latin',     'Srpska',            'sr_CS', '1    ', 'unicode',  'sh:sr@Latn' ], 
'ss' =>    [ 'Swati',               'SiSwati',           'ss_ZA', '  3  ', 'utf_lat1', 'ss:en_ZA' ],
'st' =>    [ 'Sotho',               'Sesotho',           'st_ZA', '  3  ', 'utf_lat1', 'st:nso:en_ZA' ],