package install_any;

use diagnostics;
use strict;

use vars qw(@ISA %EXPORT_TAGS @EXPORT_OK @needToCopy);

@ISA = qw(Exporter);
%EXPORT_TAGS = (
    all => [ qw(getNextStep spawnShell addToBeDone) ],
);
@EXPORT_OK = map { @$_ } values %EXPORT_TAGS;

#-######################################################################################
#- misc imports
#-######################################################################################
use common qw(:common :system :functional :file);
use commands;
use run_program;
use partition_table qw(:types);
use partition_table_raw;
use devices;
use fsedit;
use network;
use modules;
use detect_devices;
use fs;
use any;
use log;

#- package that have to be copied for proper installation (just to avoid changing cdrom)
#- here XFree86 is copied entirey if not already installed, maybe better to copy only server.
@needToCopy = qw(
XFree86-8514 XFree86-AGX XFree86-Mach32 XFree86-Mach64 XFree86-Mach8 XFree86-Mono
XFree86-P9000 XFree86-S3 XFree86-S3V XFree86-SVGA XFree86-W32 XFree86-I128
XFree86-Sun XFree86-SunMono XFree86-Sun24 XFree86-3DLabs XFree86-FBDev XFree86-server
XFree86 dhcpcd pump ppp ypbind rhs-printfilters pnm2ppa samba ncpfs kernel-fb
);

#-######################################################################################
#- Media change variables&functions
#-######################################################################################
my $postinstall_rpms = '';
my $current_medium = 1;
my $asked_medium = 1;
my $cdrom = undef;
sub useMedium($) {
    #- before ejecting the first CD, there are some files to copy!
    #- does nothing if the function has already been called.
    $_[0] > 1 and $::o->{method} eq 'cdrom' and setup_postinstall_rpms($::o->{prefix}, $::o->{packages});

    $asked_medium eq $_[0] or log::l("selecting new medium '$_[0]'");
    $asked_medium = $_[0];
}
sub changeMedium($$) {
    my ($method, $medium) = @_;
    log::l("change to medium $medium for method $method (refused by default)");
    0;
}
sub relGetFile($) {
    local $_ = $_[0];
    m,^(Mandrake|lnx4win)/, and return $_;
    /\.img$/ and return "images/$_";
    my $dir = m|/| ? "Mandrake/mdkinst" : /^(?:compss|compssList|compssUsers|provides|filelist|depslist.*|hdlist.*|auto_inst.*)$/ ?
      "Mandrake/base/": "$::o->{packages}[2]{$asked_medium}{rpmsdir}/";
    "$dir$_";
}
sub askChangeMedium($$) {
    my ($method, $medium) = @_;
    my $allow;
    do {
	eval { $allow = changeMedium($method, $medium) };
    } while ($@); #- really it is not allowed to die in changeMedium!!! or install will cores with rpmlib!!!
    $allow;
}
sub errorOpeningFile($) {
    my ($file) = @_;
    $file eq 'XXX' and return; #- special case to force closing file after rpmlib transaction.
    $current_medium eq $asked_medium and log::l("errorOpeningFile $file"), return; #- nothing to do in such case.
    $::o->{packages}[2]{$asked_medium}{selected} or return; #- not selected means no need for worying about.

    my $max = 32; #- always refuse after $max tries.
    if ($::o->{method} eq "cdrom") {
	cat_("/proc/mounts") =~ m|(/tmp/\S+)\s+/tmp/rhimage| and $cdrom = $1;
	return unless $cdrom;
	ejectCdrom($cdrom);
	while ($max > 0 && askChangeMedium($::o->{method}, $asked_medium)) {
	    $current_medium = $asked_medium;
	    eval { fs::mount($cdrom, "/tmp/rhimage", "iso9660", 'readonly') };
	    my $getFile = getFile($file); $getFile and return $getFile;
	    $current_medium = 'unknown'; #- don't know what CD is inserted now.
	    ejectCdrom($cdrom);
	    --$max;
	}
    } else {
	while ($max > 0 && askChangeMedium($::o->{method}, $asked_medium)) {
	    $current_medium = $asked_medium;
	    my $getFile = getFile($file); $getFile and return $getFile;
	    $current_medium = 'unknown'; #- don't know what CD image has been copied.
	    --$max;
	}
    }

    #- keep in mind the asked medium has been refused on this way.
    #- this means it is no more selected.
    $::o->{packages}[2]{$asked_medium}{selected} = undef;

    #- on cancel, we can expect the current medium to be undefined too,
    #- this enable remounting if selecting a package back.
    $current_medium = 'unknown';

    return;
}
sub getFile {
    my ($f, $method) = @_;
    my $rel = relGetFile($f);
    log::l("getFile $f ($method) relGetFile $rel");
    do {
	if ($method =~ /crypto/i) {
	    require crypto;
	    log::l("crypto::getFile $f");
	    crypto::getFile($f);
	} elsif ($::o->{method} eq "ftp") {
	    require ftp;
	    ftp::getFile($rel);
	} elsif ($::o->{method} eq "http") {
	    require http;
	    http::getFile($rel);
	} else {
	    #- try to open the file, but examine if it is present in the repository, this allow
	    #- handling changing a media when some of the file on the first CD has been copied
	    #- to other to avoid media change...
	    my $f2 = "$postinstall_rpms/$f";
	    $f2 = "/tmp/rhimage/$rel" unless -e $f2;
	    log::l("local getFile $f2");
	    open GETFILE, $f2 and *GETFILE;
	}
    } || errorOpeningFile($f);
}
sub getAndSaveFile {
    my ($file, $local) = @_;
    log::l("getAndSaveFile $file $local");
    local *F; open F, ">$local" or return;
    local $/ = \ (16 * 1024);
    my $f = ref($file) ? $file : getFile($file) or return;
    local $_;
    while (<$f>) { syswrite F, $_ }
    1;
}


#-######################################################################################
#- Post installation RPMS from cdrom only, functions
#-######################################################################################
sub setup_postinstall_rpms($$) {
    my ($prefix, $packages) = @_;

    $postinstall_rpms and return;
    $postinstall_rpms = "$prefix/usr/postinstall-rpm";

    log::l("postinstall rpms directory set to $postinstall_rpms");
    commands::mkdir_('-p', $postinstall_rpms);

    require pkgs;

    #- compute closure of unselected package that may be copied,
    #- don't complain if package does not exists as it may happen
    #- for the various architecture taken into account (X servers).
    my %toCopy;
    foreach (@needToCopy) {
	my $pkg = pkgs::packageByName($packages, $_);
	pkgs::selectPackage($packages, $pkg, 0, \%toCopy) if $pkg;
    }

    my @toCopy; push @toCopy, map { pkgs::packageByName($packages, $_) } keys %toCopy;

    #- extract headers of package, this is necessary for getting
    #- the complete filename of each package.
    #- copy the package files in the postinstall RPMS directory.
    #- last arg is default medium '' known as the CD#1.
    pkgs::extractHeaders($prefix, \@toCopy, $packages->[2]{1});
    commands::cp((map { "/tmp/rhimage/" . relGetFile(pkgs::packageFile($_)) } @toCopy), $postinstall_rpms);
}
sub clean_postinstall_rpms() {
    $postinstall_rpms and -d $postinstall_rpms and commands::rm('-rf', $postinstall_rpms);
}

#-######################################################################################
#- Functions
#-######################################################################################
sub kernelVersion {
    my ($o) = @_;
    local $_ = readlink("$::o->{prefix}/boot/vmlinuz") and return first(/vmlinuz-(.*)/);

    my $p = pkgs::packageByName($o->{packages}, "kernel") or die "I couldn't find the kernel package!";
    pkgs::packageVersion($p) . "-" . pkgs::packageRelease($p);
}


sub getNextStep {
    my ($s) = $::o->{steps}{first};
    $s = $::o->{steps}{$s}{next} while $::o->{steps}{$s}{done} || !$::o->{steps}{$s}{reachable};
    $s;
}

sub spawnShell {
    return if $::o->{localInstall} || $::testing;

    -x "/bin/sh" or die "cannot open shell - /usr/bin/sh doesn't exist";

    fork and return;

    local *F;
    sysopen F, "/dev/tty2", 2 or die "cannot open /dev/tty2 -- no shell will be provided";

    open STDIN, "<&F" or die '';
    open STDOUT, ">&F" or die '';
    open STDERR, ">&F" or die '';
    close F;

    c::setsid();

    ioctl(STDIN, c::TIOCSCTTY(), 0) or warn "could not set new controlling tty: $!";

    exec {"/bin/sh"} "-/bin/sh" or log::l("exec of /bin/sh failed: $!");
}

sub fsck_option() {
    my ($o) = @_;
    my $y = $o->{security} < 3 && $::beginner ? "-y " : "";
    substInFile { s/^(\s*fsckoptions="?)(-y )?/$1$y/ } "$o->{prefix}/etc/rc.d/rc.sysinit";
}

sub getAvailableSpace {
    my ($o) = @_;

    #- make sure of this place to be available for installation, this could help a lot.
    #- currently doing a very small install use 36Mb of postinstall-rpm, but installing
    #- these packages may eat up to 90Mb (of course not all the server may be installed!).
    #- 50mb may be a good choice to avoid almost all problem of insuficient space left...
    my $minAvailableSize = 50 * sqr(1024);

    int ((!$::testing && 
	  getAvailableSpace_mounted($o->{prefix}) || 
	  getAvailableSpace_raw($o->{fstab}) * 512 / 1.07) - $minAvailableSize);
}

sub getAvailableSpace_mounted {
    my ($prefix) = @_;
    my $dir = -d "$prefix/usr" ? "$prefix/usr" : "$prefix";
    my (undef, $free) = common::df($dir) or return;
    log::l("getAvailableSpace_mounted $free");
    $free * 1024 || 1;
}
sub getAvailableSpace_raw {
    my ($fstab) = @_;

    do { $_->{mntpoint} eq '/usr' and return $_->{size} } foreach @$fstab;
    do { $_->{mntpoint} eq '/'    and return $_->{size} } foreach @$fstab;

    if ($::testing) {
	my $nb = 450;
	log::l("taking ${nb}MB for testing");
	return $nb << 11;
    }
    die "missing root partition";
}

sub setPackages($) {
    my ($o) = @_;

    require pkgs;
    if (!$o->{packages} || is_empty_hash_ref($o->{packages}[0])) {
	$o->{packages} = pkgs::psUsingHdlists($o->{prefix}, $o->{method});

	push @{$o->{default_packages}}, "nfs-utils-clients" if $o->{method} eq "nfs";
	push @{$o->{default_packages}}, "numlock" if $o->{miscellaneous}{numlock};
	push @{$o->{default_packages}}, "kernel-secure" if $o->{security} > 3;
	push @{$o->{default_packages}}, "kernel-smp" if $o->{security} <= 3 && detect_devices::hasSMP(); #- no need for kernel-smp if we have kernel-secure which is smp
	push @{$o->{default_packages}}, "kernel-pcmcia-cs" if $o->{pcmcia};
	push @{$o->{default_packages}}, "apmd" if $o->{pcmcia};
	push @{$o->{default_packages}}, "raidtools" if $o->{raid} && !is_empty_array_ref($o->{raid}{raid});
	push @{$o->{default_packages}}, "reiserfs-utils" if grep { isReiserfs($_) } @{$o->{fstab}};
	push @{$o->{default_packages}}, "cdrecord" if detect_devices::getIDEBurners();
	push @{$o->{default_packages}}, "alsa", "alsa-utils" if modules::get_alias("snd-slot-0") =~ /^snd-card-/;

	pkgs::getDeps($o->{prefix}, $o->{packages});
	pkgs::selectPackage($o->{packages}, pkgs::packageByName($o->{packages}, 'basesystem') || die("missing basesystem package"), 1);

	#- must be done after selecting base packages (to save memory)
	pkgs::getProvides($o->{packages});

	$o->{compss} = pkgs::readCompss($o->{prefix}, $o->{packages});
	#- must be done after getProvides
	$o->{compssListLevels} = pkgs::readCompssList($o->{packages});
	($o->{compssUsers}, $o->{compssUsersSorted}) = pkgs::readCompssUsers($o->{packages}, $o->{compss});

	my @l = ();
	push @l, "kapm", "kcmlaptop", "DrakProfile", "DrakSync" if $o->{pcmcia};
	push @l, "Device3Dfx", "XFree86-glide-module" if detect_devices::matching_desc('Voodoo');
	push @l, "Glide_V5"  if detect_devices::matching_desc('Voodoo 5');
	push @l, "Glide_V3-DRI"  if detect_devices::matching_desc('Voodoo 3');
	require timezone;
	require lang;
	push @l, "isdn4k-utils" if ($o->{timezone}{timezone} || timezone::bestTimezone(lang::lang2text($o->{lang}))) =~ /Europe/;
	$_->{values} = [ map { $_ + 50 } @{$_->{values}} ] foreach grep {$_} map { pkgs::packageByName($o->{packages}, $_) } @l;

    } else {
	#- this has to be done to make sure necessary files for urpmi are
	#- present.
	pkgs::psUpdateHdlistsDeps($o->{prefix}, $o->{method});

	#- remove upgrade flag with selection one. TOCHECK
	#pkgs::unselectAllPackagesIncludingUpgradable($o->{packages});
    }
}

sub addToBeDone(&$) {
    my ($f, $step) = @_;

    return &$f() if $::o->{steps}{$step}{done};

    push @{$::o->{steps}{$step}{toBeDone}}, $f;
}

sub setAuthentication {
    my ($o) = @_;
    my ($shadow, $md5, $nis) = @{$o->{authentication} || {}}{qw(shadow md5 NIS)};
    my $p = $o->{prefix};
    any::enableMD5Shadow($p, $shadow, $md5);
    any::enableShadow($p) if $shadow;
    if ($nis) {
	$o->pkg_install("ypbind");
	my $domain = $o->{netc}{NISDOMAIN};
	$domain || $nis ne "broadcast" or die _("Can't use broadcast with no NIS domain");
	my $t = $domain ? "domain $domain" . ($nis ne "broadcast" && " server")
	                : "ypserver";
	substInFile {
	    $_ = "#~$_" unless /^#/;
	    $_ .= "$t $nis\n" if eof;
	} "$p/etc/yp.conf";
	network::write_conf("$p/etc/sysconfig/network", $o->{netc});
    }
}

sub killCardServices {
    my $pid = chop_(cat_("/tmp/cardmgr.pid"));
    $pid and kill(15, $pid); #- send SIGTERM
}

sub hdInstallPath() {
    cat_("/proc/mounts") =~ m|/\w+/(\S+)\s+/tmp/hdimage| or return;
    my ($part) = grep { $_->{device} eq $1 } @{$::o->{fstab}};    
    $part->{mntpoint} or grep { $_->{mntpoint} eq "/mnt/hd" } @{$::o->{fstab}} and return;
    $part->{mntpoint} ||= "/mnt/hd";
    $part->{mntpoint} . first(readlink("/tmp/rhimage") =~ m|^/tmp/hdimage/(.*)|);
}

sub unlockCdrom(;$) {
    my ($cdrom) = @_;
    $cdrom or cat_("/proc/mounts") =~ m|(/tmp/\S+)\s+/tmp/rhimage| and $cdrom = $1;
    eval { $cdrom and ioctl detect_devices::tryOpen($1), c::CDROM_LOCKDOOR(), 0 };
}
sub ejectCdrom(;$) {
    my ($cdrom) = @_;
    $cdrom or cat_("/proc/mounts") =~ m|(/tmp/\S+)\s+/tmp/rhimage| and $cdrom = $1;
    my $f = eval { $cdrom && detect_devices::tryOpen($cdrom) } or return;
    getFile("XXX"); #- close still opened filehandle
    eval { fs::umount("/tmp/rhimage") };
    ioctl $f, c::CDROMEJECT(), 1;
}

sub setupFB {
    my ($o, $vga) = @_;

    #- install needed packages for frame buffer.
    $o->pkg_install(qw(kernel-fb XFree86-FBDev));

    $vga ||= 785; #- assume at least 640x480x16.

    require bootloader;
    #- update bootloader entries with a new fb label. a bit hack unless
    #- a frame buffer kernel is used, in such case we use it instead
    #- with the right mode, nothing more to do.
    foreach (qw(secure smp)) {
	if (my $e = bootloader::get("/boot/vmlinuz-$_", $o->{bootloader})) {
	    if ($_ eq 'secure') {
		log::l("warning: kernel-secure is not fb, using a kernel-fb instead");
		#- nothing done, fall through linux-fb.
	    } else {
		$e->{vga} = $vga;
		goto ok;
	    }
	}
    }
    if (bootloader::add_kernel($o->{prefix}, $o->{bootloader}, kernelVersion($o), 'fb',
			       {
				label => 'linux-fb',
				root => bootloader::get("/boot/vmlinuz", $o->{bootloader})->{root},
				vga => $vga,
			       })) {
	$o->{bootloader}{default} = 'linux-fb';
    } else {
	log::l("unable to install kernel with frame buffer support, disabling");
	return 0;
    }
  ok:
    bootloader::install($o->{prefix}, $o->{bootloader}, $o->{fstab}, $o->{hds});
    1;
}

sub install_urpmi {
    my ($prefix, $method, $mediums) = @_;

    my @cfg = map_index {
	my $name = $_->{fakemedium};

	local *LIST;
	open LIST, ">$prefix/var/lib/urpmi/list.$name" or log::l("failed to write list.$name"), return;

	my $dir = ${{ nfs => "file://mnt/nfs", 
                      hd => "file:/" . hdInstallPath(),
		      ftp => $ENV{URLPREFIX},
		      http => $ENV{URLPREFIX},
		      cdrom => "removable_cdrom_$::i://mnt/cdrom" }}{$method} . "/$_->{rpmsdir}";

	local *FILES; open FILES, "packdrake -c /tmp/$_->{hdlist} | parsehdlist - |";
	chop, print LIST "$dir/$_\n" foreach <FILES>;
	close FILES or log::l("parsehdlist failed"), return;
	close LIST;

	$dir .= " with ../base/$_->{hdlist}" if $method =~ /ftp|http/;
	"$name $dir\n";
    } values %$mediums;
    eval { output "$prefix/etc/urpmi/urpmi.cfg", @cfg };
}


#-###############################################################################
#- kde stuff
#-###############################################################################
sub kderc_largedisplay {
    my ($prefix) = @_;

    update_userkderc($prefix, 'KDE', 
		     Contrast => 7,
		     kfmIconStyle => "Large",
		     kpanelIconStyle => "Normal", #- to change to Large when icons looks better
		     KDEIconStyle => "Large");
    substInFile {
	s/^(GridWidth)=85/$1=100/;
	s/^(GridHeight)=70/$1=75/;
    } $_ foreach list_skels($prefix, '.kde/share/config/kfmrc');
}

sub kdeicons_postinstall {
    my ($prefix) = @_;

    #- parse etc/fstab file to search for dos/win, floppy, zip, cdroms icons.
    #- handle both supermount and fsdev usage.
    my %l = (
	     'cdrom' => [ 'cdrom', 'Cd-Rom' ],
	     'zip' => [ 'zip', 'Zip' ],
	     'floppy-ls' => [ 'floppy', 'LS-120' ],
	     'floppy' => [ 'floppy', 'Floppy' ],
    );
    foreach (fs::read_fstab("$prefix/etc/fstab")) {

	my ($name_, $nb) = $_->{mntpoint} =~ m|.*/(\S+?)(\d*)$/|;
	my ($name, $text) = @{$l{$name_} || []};

	my $f = ${{
	    supermount => sub { $name .= '.fsdev' if $name },
	    vfat => sub { $name = 'Dos_'; $text = $name_ },
	}}{$_->{type}};
	&$f if $f;

	template2userfile($prefix, 
			  "$ENV{SHARE_PATH}/$name.kdelnk.in",
			  "Desktop/$text" .  ($nb && " $nb"). ".kdelnk",
			  1, %$_) if $name;
    }

    my @l = list_skels($prefix, 'Desktop/Doc.kdelnk');
    if (my ($lang) = eval { all("$prefix/usr/doc/mandrake") }) {
	substInFile { s|^(URL=.*?)/?$|$1/$lang/index.html| } @l;
	substInFile { s|^(url=/usr/doc/mandrake/)$|$1$lang/index.html| } "$prefix/usr/lib/desktop-links/mandrake.links";
    } else {
	unlink @l;
	substInFile { $_ = '' if /^\[MDKsupport\]$/ .. /^\s*$/ } "$prefix/usr/lib/desktop-links/mandrake.links";
    }

    # rename the .kdelnk to the name found in the .kdelnk as kde doesn't use it
    # for displaying
    foreach my $dir (grep { -d $_ } list_skels($prefix, 'Desktop')) {
	foreach (grep { /\.kdelnk$/ } all($dir)) {
	    cat_("$dir/$_") =~ /^Name\[\Q$ENV{LANG}\E\]=(.{2,14})$/m
	      and rename "$dir/$_", "$dir/$1.kdelnk";
	}
    }
}

sub kdemove_desktop_file {
    my ($prefix) = @_;
    my @toMove = qw(doc.kdelnk news.kdelnk updates.kdelnk home.kdelnk printer.kdelnk floppy.kdelnk cdrom.kdelnk FLOPPY.kdelnk CDROM.kdelnk);

    #- remove any existing save in Trash of each user and
    #- move appropriate file there after an upgrade.
    foreach my $dir (grep { -d $_ } list_skels($prefix, 'Desktop')) {
	unlink("$dir/Trash/$_") && rename("$dir/$_", "$dir/Trash/$_")
	    foreach grep { -e "$dir/$_" } @toMove, grep { /\.rpmorig$/ } all($dir)
    }
}


#-###############################################################################
#- auto_install stuff
#-###############################################################################
sub auto_inst_file() { ($::g_auto_install ? "/tmp" : "$::o->{prefix}/root") . "/auto_inst.cfg.pl" }

sub g_auto_install(;$) {
    my ($f) = @_; $f ||= auto_inst_file;
    my $o = {};

    $o->{default_packages} = [ map { pkgs::packageName($_) } grep { pkgs::packageFlagSelected($_) && !pkgs::packageFlagBase($_) } values %{$::o->{packages}[0]} ];

    my @fields = qw(mntpoint type size);
    $o->{partitions} = [ map { my %l; @l{@fields} = @$_{@fields}; \%l } grep { $_->{mntpoint} } @{$::o->{fstab}} ];
    
    exists $::o->{$_} and $o->{$_} = $::o->{$_} foreach qw(lang autoSCSI authentication printer mouse wacom netc timezone superuser intf keyboard mkbootdisk users installClass partitioning isUpgrade manualFstab nomouseprobe crypto security modem useSupermount autoExitInstall); #- TODO modules bootloader 

    if (my $card = $::o->{X}{card}) {
	$o->{X}{$_} = $::o->{X}{$_} foreach qw(default_depth resolution_wanted);
	if ($o->{X}{default_depth} and my $depth = $card->{depth}{$o->{X}{default_depth}}) {
	    $depth ||= [];
	    $o->{X}{resolution_wanted} ||= join "x", @{$depth->[0]} unless is_empty_array_ref($depth->[0]);
	    $o->{X}{monitor} = $::o->{X}{monitor} if $::o->{X}{monitor}{manual};
	}
    }

    local $o->{partitioning}{auto_allocate} = 1;
    local $o->{autoExitInstall} = 1;

    $_ = { %{$_ || {}} }, delete @$_{qw(oldu oldg password password2)} foreach $o->{superuser}, @{$o->{users} || []};
    
    output($f, 
	   "# You should always check the syntax with 'perl -cw auto_inst.cfg.pl' before testing\n",
	   Data::Dumper->Dump([$o], ['$o']), "\0");
}

sub loadO {
    my ($O, $f) = @_; $f ||= auto_inst_file;
    my $o;
    if ($f =~ /^(floppy|patch)$/) {
	my $f = $f eq "floppy" ? "auto_inst.cfg" : "patch";
	unless ($::testing) {
	    fs::mount(devices::make("fd0"), "/mnt", (arch() =~ /sparc/ ? "romfs" : "vfat"), 'readonly');
	    $f = "/mnt/$f";
	}
	-e $f or $f .= '.pl';

	my $b = before_leaving {
	    fs::umount("/mnt") unless $::testing;
	    modules::unload($_) foreach qw(vfat fat);
	};
	$o = loadO($O, $f);
    } else {
	-e "$f.pl" and $f .= ".pl" unless -e $f;

	my $fh = -e $f ? do { local *F; open F, $f; *F } : getFile($f) or die _("Error reading file $f");
	{
	    local $/ = "\0";
	    no strict;
	    eval <$fh>;
	    close $fh;
	    $@ and log::l("Bad kickstart file $f (failed $@)");
	}
	add2hash_($o ||= {}, $O);
    }
    bless $o, ref $O;
}

sub generate_ks_cfg {
    my ($o) = @_;
    
    return if $o->{method} =~ /hd|cdrom/;

    my $ks;
    if ($o->{method} =~ /ftp|http/) {
	$ks .= "url --url $ENV{URLPREFIX}\n";
    } elsif ($o->{method} =~ /nfs/) {
	cat_("/proc/mounts") =~ m|(\S+):(\S+)\s+/tmp/rhimage nfs| or die;
	$ks .= "nfs --server $1 --dir $2\n";
    }
    my %intf = %{$o->{intf}[0]};
    if ($intf{BOOTPROTO} =~ /^(dhcp|bootp)$/) {
	$ks .= "network --bootproto $intf{BOOTPROTO}\n";
    } else {
	my %l = (ip => $intf{IPADDR}, netmask => $intf{NETMASK}, gateway => $o->{netc}{GATEWAY});
	$ks .= "network " . join(" ", map_each { $::b && "--$::a $::b" } %l);
	$ks .= " --nameserver $_" foreach network::dnsServers($o->{netc});
	$ks .= "\n";
    }
    $ks;
}

sub suggest_mount_points {
    my ($hds, $prefix, $uniq) = @_;
    my @parts = grep { isTrueFS($_) } fsedit::get_fstab(@$hds);

    my (%mntpoints, $user);

    my %l = (
	     '/'     => 'etc/fstab',
	     '/boot' => 'vmlinuz',
	     '/tmp'  => '.X11-unix',
	     '/usr'  => 'X11R6',
	     '/var'  => 'catman',
	    );

    foreach my $part (@parts) {
	$part->{mntpoint} and next; #- if already found via an fstab

	my $handle = any::inspect($part, $prefix) or return;
	my $d = $handle->{dir};
	my ($mnt) = grep { -e "$d/$l{$_}" } keys %l;
	$mnt ||= (stat("$d/.bashrc"))[4] ? '/root' : '/home/user' . ++$user if -e "$d/.bashrc";
	$mnt ||= (grep { -d $_ && (stat($_))[4] >= 500 && -e "$_/.bashrc" } glob_("$d")) && '/home'; 

	next if $uniq && fsedit::mntpoint2part($mnt, \@parts);
	$part->{mntpoint} = $mnt;

	#- try to find other mount points via fstab
	fs::get_mntpoints_from_fstab(\@parts, $d, $uniq) if $mnt eq '/';
    }
#-    $_->{mntpoint} || fsedit::suggest_part($_, $hds) foreach @parts;

    $_->{mntpoint} and log::l("suggest_mount_points: $_->{device} -> $_->{mntpoint}") foreach @parts;
}

#- mainly for finding the root partitions for upgrade
sub find_root_parts {
    my ($hds, $prefix) = @_;
    log::l("find_root_parts");
    suggest_mount_points($hds, $prefix);
    grep { delete($_->{mntpoint}) eq '/' } fsedit::get_fstab(@$hds);
}
sub use_root_part {
    my ($fstab, $part, $prefix) = @_;
    {
	my $handle = any::inspect($part, $prefix) or die;
	fs::get_mntpoints_from_fstab($fstab, $handle->{dir}, 'uniq');
    }

    map { $_->{mntpoint} = 'swap_upgrade' } grep { isSwap($_) } @$fstab; #- use all available swap.
    fs::mount_all($fstab, $prefix);
}

sub getHds {
    my ($o, $f_err) = @_;
    my $ok = 1;
    my $flags = $o->{partitioning};

    my @drives = detect_devices::hds();
#    add2hash_($o->{partitioning}, { readonly => 1 }) if partition_table_raw::typeOfMBR($drives[0]{device}) eq 'system_commander';

  getHds: 
    $o->{hds} = catch_cdie { fsedit::hds(\@drives, $flags) }
      sub {
	  $ok = 0;
	  my $err = $@; $err =~ s/ at (.*?)$//;
	  log::l("error reading partition table: $err");
	  !$flags->{readonly} && $f_err and $f_err->($err);
      };

    if (is_empty_array_ref($o->{hds}) && $o->{autoSCSI}) {
	$o->setupSCSI; #- ask for an unautodetected scsi card
	goto getHds;
    }

    $ok = fsedit::verifyHds($o->{hds}, $flags->{readonly}, $ok)
        unless $flags->{clearall} || $flags->{clear};

    $o->{fstab} = [ fsedit::get_fstab(@{$o->{hds}}) ];
    fs::check_mounted($o->{fstab});
    fs::merge_fstabs($o->{fstab}, $o->{manualFstab});

    my @win = grep { isFat($_) && isFat({ type => fsedit::typeOfPart($_->{device}) }) } @{$o->{fstab}};
    log::l("win parts: ", join ",", map { $_->{device} } @win) if @win;
    if (@win == 1) {
	$win[0]{mntpoint} = "/mnt/windows";
    } else {
	my %w; foreach (@win) {
	    my $v = $w{$_->{device_windobe}}++;
	    $_->{mntpoint} = "/mnt/win_" . lc($_->{device_windobe}) . ($v ? $v+1 : ''); #- lc cuz of StartOffice(!) cf dadou
	}
    }

    my @sunos = grep { isSunOS($_) && type2name($_->{type}) =~ /root/i } @{$o->{fstab}}; #- take only into account root partitions.
    if (@sunos) {
	my $v = '';
	map { $_->{mntpoint} = "/mnt/sunos" . ($v && ++$v) } @sunos;
    }
    #- a good job is to mount SunOS root partition, and to use mount point described here in /etc/vfstab.

    $ok;
}

1;
>
<a id='n565' href='#n565'>565</a>
<a id='n566' href='#n566'>566</a>
<a id='n567' href='#n567'>567</a>
<a id='n568' href='#n568'>568</a>
<a id='n569' href='#n569'>569</a>
<a id='n570' href='#n570'>570</a>
<a id='n571' href='#n571'>571</a>
<a id='n572' href='#n572'>572</a>
<a id='n573' href='#n573'>573</a>
<a id='n574' href='#n574'>574</a>
<a id='n575' href='#n575'>575</a>
<a id='n576' href='#n576'>576</a>
<a id='n577' href='#n577'>577</a>
<a id='n578' href='#n578'>578</a>
<a id='n579' href='#n579'>579</a>
<a id='n580' href='#n580'>580</a>
<a id='n581' href='#n581'>581</a>
<a id='n582' href='#n582'>582</a>
<a id='n583' href='#n583'>583</a>
<a id='n584' href='#n584'>584</a>
<a id='n585' href='#n585'>585</a>
<a id='n586' href='#n586'>586</a>
<a id='n587' href='#n587'>587</a>
<a id='n588' href='#n588'>588</a>
<a id='n589' href='#n589'>589</a>
<a id='n590' href='#n590'>590</a>
<a id='n591' href='#n591'>591</a>
<a id='n592' href='#n592'>592</a>
<a id='n593' href='#n593'>593</a>
<a id='n594' href='#n594'>594</a>
<a id='n595' href='#n595'>595</a>
<a id='n596' href='#n596'>596</a>
<a id='n597' href='#n597'>597</a>
<a id='n598' href='#n598'>598</a>
<a id='n599' href='#n599'>599</a>
<a id='n600' href='#n600'>600</a>
<a id='n601' href='#n601'>601</a>
<a id='n602' href='#n602'>602</a>
<a id='n603' href='#n603'>603</a>
<a id='n604' href='#n604'>604</a>
<a id='n605' href='#n605'>605</a>
<a id='n606' href='#n606'>606</a>
<a id='n607' href='#n607'>607</a>
<a id='n608' href='#n608'>608</a>
<a id='n609' href='#n609'>609</a>
<a id='n610' href='#n610'>610</a>
<a id='n611' href='#n611'>611</a>
<a id='n612' href='#n612'>612</a>
<a id='n613' href='#n613'>613</a>
<a id='n614' href='#n614'>614</a>
<a id='n615' href='#n615'>615</a>
<a id='n616' href='#n616'>616</a>
<a id='n617' href='#n617'>617</a>
<a id='n618' href='#n618'>618</a>
<a id='n619' href='#n619'>619</a>
<a id='n620' href='#n620'>620</a>
<a id='n621' href='#n621'>621</a>
<a id='n622' href='#n622'>622</a>
<a id='n623' href='#n623'>623</a>
<a id='n624' href='#n624'>624</a>
<a id='n625' href='#n625'>625</a>
<a id='n626' href='#n626'>626</a>
<a id='n627' href='#n627'>627</a>
<a id='n628' href='#n628'>628</a>
<a id='n629' href='#n629'>629</a>
<a id='n630' href='#n630'>630</a>
<a id='n631' href='#n631'>631</a>
<a id='n632' href='#n632'>632</a>
<a id='n633' href='#n633'>633</a>
<a id='n634' href='#n634'>634</a>
<a id='n635' href='#n635'>635</a>
<a id='n636' href='#n636'>636</a>
<a id='n637' href='#n637'>637</a>
<a id='n638' href='#n638'>638</a>
<a id='n639' href='#n639'>639</a>
<a id='n640' href='#n640'>640</a>
<a id='n641' href='#n641'>641</a>
<a id='n642' href='#n642'>642</a>
<a id='n643' href='#n643'>643</a>
<a id='n644' href='#n644'>644</a>
<a id='n645' href='#n645'>645</a>
<a id='n646' href='#n646'>646</a>
<a id='n647' href='#n647'>647</a>
<a id='n648' href='#n648'>648</a>
<a id='n649' href='#n649'>649</a>
<a id='n650' href='#n650'>650</a>
<a id='n651' href='#n651'>651</a>
<a id='n652' href='#n652'>652</a>
<a id='n653' href='#n653'>653</a>
<a id='n654' href='#n654'>654</a>
<a id='n655' href='#n655'>655</a>
<a id='n656' href='#n656'>656</a>
<a id='n657' href='#n657'>657</a>
<a id='n658' href='#n658'>658</a>
<a id='n659' href='#n659'>659</a>
<a id='n660' href='#n660'>660</a>
<a id='n661' href='#n661'>661</a>
<a id='n662' href='#n662'>662</a>
<a id='n663' href='#n663'>663</a>
<a id='n664' href='#n664'>664</a>
<a id='n665' href='#n665'>665</a>
<a id='n666' href='#n666'>666</a>
<a id='n667' href='#n667'>667</a>
<a id='n668' href='#n668'>668</a>
<a id='n669' href='#n669'>669</a>
<a id='n670' href='#n670'>670</a>
<a id='n671' href='#n671'>671</a>
<a id='n672' href='#n672'>672</a>
<a id='n673' href='#n673'>673</a>
<a id='n674' href='#n674'>674</a>
<a id='n675' href='#n675'>675</a>
<a id='n676' href='#n676'>676</a>
<a id='n677' href='#n677'>677</a>
<a id='n678' href='#n678'>678</a>
<a id='n679' href='#n679'>679</a>
<a id='n680' href='#n680'>680</a>
<a id='n681' href='#n681'>681</a>
<a id='n682' href='#n682'>682</a>
<a id='n683' href='#n683'>683</a>
<a id='n684' href='#n684'>684</a>
<a id='n685' href='#n685'>685</a>
<a id='n686' href='#n686'>686</a>
<a id='n687' href='#n687'>687</a>
<a id='n688' href='#n688'>688</a>
<a id='n689' href='#n689'>689</a>
<a id='n690' href='#n690'>690</a>
<a id='n691' href='#n691'>691</a>
<a id='n692' href='#n692'>692</a>
<a id='n693' href='#n693'>693</a>
<a id='n694' href='#n694'>694</a>
<a id='n695' href='#n695'>695</a>
<a id='n696' href='#n696'>696</a>
<a id='n697' href='#n697'>697</a>
<a id='n698' href='#n698'>698</a>
<a id='n699' href='#n699'>699</a>
<a id='n700' href='#n700'>700</a>
<a id='n701' href='#n701'>701</a>
<a id='n702' href='#n702'>702</a>
<a id='n703' href='#n703'>703</a>
<a id='n704' href='#n704'>704</a>
<a id='n705' href='#n705'>705</a>
<a id='n706' href='#n706'>706</a>
<a id='n707' href='#n707'>707</a>
<a id='n708' href='#n708'>708</a>
<a id='n709' href='#n709'>709</a>
<a id='n710' href='#n710'>710</a>
<a id='n711' href='#n711'>711</a>
<a id='n712' href='#n712'>712</a>
<a id='n713' href='#n713'>713</a>
<a id='n714' href='#n714'>714</a>
<a id='n715' href='#n715'>715</a>
<a id='n716' href='#n716'>716</a>
<a id='n717' href='#n717'>717</a>
<a id='n718' href='#n718'>718</a>
<a id='n719' href='#n719'>719</a>
<a id='n720' href='#n720'>720</a>
<a id='n721' href='#n721'>721</a>
<a id='n722' href='#n722'>722</a>
<a id='n723' href='#n723'>723</a>
<a id='n724' href='#n724'>724</a>
<a id='n725' href='#n725'>725</a>
<a id='n726' href='#n726'>726</a>
<a id='n727' href='#n727'>727</a>
<a id='n728' href='#n728'>728</a>
<a id='n729' href='#n729'>729</a>
<a id='n730' href='#n730'>730</a>
<a id='n731' href='#n731'>731</a>
<a id='n732' href='#n732'>732</a>
<a id='n733' href='#n733'>733</a>
<a id='n734' href='#n734'>734</a>
<a id='n735' href='#n735'>735</a>
<a id='n736' href='#n736'>736</a>
<a id='n737' href='#n737'>737</a>
<a id='n738' href='#n738'>738</a>
<a id='n739' href='#n739'>739</a>
<a id='n740' href='#n740'>740</a>
<a id='n741' href='#n741'>741</a>
<a id='n742' href='#n742'>742</a>
<a id='n743' href='#n743'>743</a>
<a id='n744' href='#n744'>744</a>
<a id='n745' href='#n745'>745</a>
<a id='n746' href='#n746'>746</a>
<a id='n747' href='#n747'>747</a>
<a id='n748' href='#n748'>748</a>
<a id='n749' href='#n749'>749</a>
<a id='n750' href='#n750'>750</a>
<a id='n751' href='#n751'>751</a>
<a id='n752' href='#n752'>752</a>
<a id='n753' href='#n753'>753</a>
<a id='n754' href='#n754'>754</a>
<a id='n755' href='#n755'>755</a>
<a id='n756' href='#n756'>756</a>
<a id='n757' href='#n757'>757</a>
<a id='n758' href='#n758'>758</a>
<a id='n759' href='#n759'>759</a>
<a id='n760' href='#n760'>760</a>
<a id='n761' href='#n761'>761</a>
<a id='n762' href='#n762'>762</a>
<a id='n763' href='#n763'>763</a>
<a id='n764' href='#n764'>764</a>
<a id='n765' href='#n765'>765</a>
<a id='n766' href='#n766'>766</a>
<a id='n767' href='#n767'>767</a>
<a id='n768' href='#n768'>768</a>
<a id='n769' href='#n769'>769</a>
<a id='n770' href='#n770'>770</a>
<a id='n771' href='#n771'>771</a>
<a id='n772' href='#n772'>772</a>
<a id='n773' href='#n773'>773</a>
<a id='n774' href='#n774'>774</a>
<a id='n775' href='#n775'>775</a>
<a id='n776' href='#n776'>776</a>
<a id='n777' href='#n777'>777</a>
<a id='n778' href='#n778'>778</a>
<a id='n779' href='#n779'>779</a>
<a id='n780' href='#n780'>780</a>
<a id='n781' href='#n781'>781</a>
<a id='n782' href='#n782'>782</a>
<a id='n783' href='#n783'>783</a>
<a id='n784' href='#n784'>784</a>
<a id='n785' href='#n785'>785</a>
<a id='n786' href='#n786'>786</a>
<a id='n787' href='#n787'>787</a>
<a id='n788' href='#n788'>788</a>
<a id='n789' href='#n789'>789</a>
<a id='n790' href='#n790'>790</a>
<a id='n791' href='#n791'>791</a>
<a id='n792' href='#n792'>792</a>
<a id='n793' href='#n793'>793</a>
<a id='n794' href='#n794'>794</a>
<a id='n795' href='#n795'>795</a>
<a id='n796' href='#n796'>796</a>
<a id='n797' href='#n797'>797</a>
<a id='n798' href='#n798'>798</a>
<a id='n799' href='#n799'>799</a>
<a id='n800' href='#n800'>800</a>
<a id='n801' href='#n801'>801</a>
<a id='n802' href='#n802'>802</a>
<a id='n803' href='#n803'>803</a>
<a id='n804' href='#n804'>804</a>
<a id='n805' href='#n805'>805</a>
<a id='n806' href='#n806'>806</a>
<a id='n807' href='#n807'>807</a>
<a id='n808' href='#n808'>808</a>
<a id='n809' href='#n809'>809</a>
<a id='n810' href='#n810'>810</a>
<a id='n811' href='#n811'>811</a>
<a id='n812' href='#n812'>812</a>
<a id='n813' href='#n813'>813</a>
<a id='n814' href='#n814'>814</a>
<a id='n815' href='#n815'>815</a>
<a id='n816' href='#n816'>816</a>
<a id='n817' href='#n817'>817</a>
<a id='n818' href='#n818'>818</a>
<a id='n819' href='#n819'>819</a>
<a id='n820' href='#n820'>820</a>
<a id='n821' href='#n821'>821</a>
<a id='n822' href='#n822'>822</a>
<a id='n823' href='#n823'>823</a>
<a id='n824' href='#n824'>824</a>
<a id='n825' href='#n825'>825</a>
<a id='n826' href='#n826'>826</a>
<a id='n827' href='#n827'>827</a>
<a id='n828' href='#n828'>828</a>
<a id='n829' href='#n829'>829</a>
<a id='n830' href='#n830'>830</a>
<a id='n831' href='#n831'>831</a>
<a id='n832' href='#n832'>832</a>
<a id='n833' href='#n833'>833</a>
<a id='n834' href='#n834'>834</a>
<a id='n835' href='#n835'>835</a>
<a id='n836' href='#n836'>836</a>
<a id='n837' href='#n837'>837</a>
<a id='n838' href='#n838'>838</a>
<a id='n839' href='#n839'>839</a>
<a id='n840' href='#n840'>840</a>
<a id='n841' href='#n841'>841</a>
<a id='n842' href='#n842'>842</a>
<a id='n843' href='#n843'>843</a>
<a id='n844' href='#n844'>844</a>
<a id='n845' href='#n845'>845</a>
<a id='n846' href='#n846'>846</a>
<a id='n847' href='#n847'>847</a>
<a id='n848' href='#n848'>848</a>
<a id='n849' href='#n849'>849</a>
<a id='n850' href='#n850'>850</a>
<a id='n851' href='#n851'>851</a>
<a id='n852' href='#n852'>852</a>
<a id='n853' href='#n853'>853</a>
<a id='n854' href='#n854'>854</a>
<a id='n855' href='#n855'>855</a>
<a id='n856' href='#n856'>856</a>
<a id='n857' href='#n857'>857</a>
<a id='n858' href='#n858'>858</a>
<a id='n859' href='#n859'>859</a>
<a id='n860' href='#n860'>860</a>
<a id='n861' href='#n861'>861</a>
<a id='n862' href='#n862'>862</a>
<a id='n863' href='#n863'>863</a>
<a id='n864' href='#n864'>864</a>
<a id='n865' href='#n865'>865</a>
<a id='n866' href='#n866'>866</a>
<a id='n867' href='#n867'>867</a>
<a id='n868' href='#n868'>868</a>
<a id='n869' href='#n869'>869</a>
<a id='n870' href='#n870'>870</a>
<a id='n871' href='#n871'>871</a>
<a id='n872' href='#n872'>872</a>
<a id='n873' href='#n873'>873</a>
<a id='n874' href='#n874'>874</a>
<a id='n875' href='#n875'>875</a>
<a id='n876' href='#n876'>876</a>
<a id='n877' href='#n877'>877</a>
<a id='n878' href='#n878'>878</a>
<a id='n879' href='#n879'>879</a>
<a id='n880' href='#n880'>880</a>
<a id='n881' href='#n881'>881</a>
<a id='n882' href='#n882'>882</a>
<a id='n883' href='#n883'>883</a>
<a id='n884' href='#n884'>884</a>
<a id='n885' href='#n885'>885</a>
<a id='n886' href='#n886'>886</a>
<a id='n887' href='#n887'>887</a>
<a id='n888' href='#n888'>888</a>
<a id='n889' href='#n889'>889</a>
<a id='n890' href='#n890'>890</a>
<a id='n891' href='#n891'>891</a>
<a id='n892' href='#n892'>892</a>
<a id='n893' href='#n893'>893</a>
<a id='n894' href='#n894'>894</a>
<a id='n895' href='#n895'>895</a>
<a id='n896' href='#n896'>896</a>
<a id='n897' href='#n897'>897</a>
<a id='n898' href='#n898'>898</a>
<a id='n899' href='#n899'>899</a>
<a id='n900' href='#n900'>900</a>
<a id='n901' href='#n901'>901</a>
<a id='n902' href='#n902'>902</a>
<a id='n903' href='#n903'>903</a>
<a id='n904' href='#n904'>904</a>
<a id='n905' href='#n905'>905</a>
<a id='n906' href='#n906'>906</a>
<a id='n907' href='#n907'>907</a>
<a id='n908' href='#n908'>908</a>
<a id='n909' href='#n909'>909</a>
<a id='n910' href='#n910'>910</a>
<a id='n911' href='#n911'>911</a>
<a id='n912' href='#n912'>912</a>
<a id='n913' href='#n913'>913</a>
<a id='n914' href='#n914'>914</a>
<a id='n915' href='#n915'>915</a>
<a id='n916' href='#n916'>916</a>
<a id='n917' href='#n917'>917</a>
<a id='n918' href='#n918'>918</a>
<a id='n919' href='#n919'>919</a>
<a id='n920' href='#n920'>920</a>
<a id='n921' href='#n921'>921</a>
<a id='n922' href='#n922'>922</a>
<a id='n923' href='#n923'>923</a>
<a id='n924' href='#n924'>924</a>
<a id='n925' href='#n925'>925</a>
<a id='n926' href='#n926'>926</a>
<a id='n927' href='#n927'>927</a>
<a id='n928' href='#n928'>928</a>
<a id='n929' href='#n929'>929</a>
<a id='n930' href='#n930'>930</a>
<a id='n931' href='#n931'>931</a>
<a id='n932' href='#n932'>932</a>
<a id='n933' href='#n933'>933</a>
<a id='n934' href='#n934'>934</a>
<a id='n935' href='#n935'>935</a>
<a id='n936' href='#n936'>936</a>
<a id='n937' href='#n937'>937</a>
<a id='n938' href='#n938'>938</a>
<a id='n939' href='#n939'>939</a>
<a id='n940' href='#n940'>940</a>
<a id='n941' href='#n941'>941</a>
<a id='n942' href='#n942'>942</a>
<a id='n943' href='#n943'>943</a>
<a id='n944' href='#n944'>944</a>
<a id='n945' href='#n945'>945</a>
<a id='n946' href='#n946'>946</a>
<a id='n947' href='#n947'>947</a>
<a id='n948' href='#n948'>948</a>
<a id='n949' href='#n949'>949</a>
<a id='n950' href='#n950'>950</a>
<a id='n951' href='#n951'>951</a>
<a id='n952' href='#n952'>952</a>
<a id='n953' href='#n953'>953</a>
<a id='n954' href='#n954'>954</a>
<a id='n955' href='#n955'>955</a>
<a id='n956' href='#n956'>956</a>
<a id='n957' href='#n957'>957</a>
<a id='n958' href='#n958'>958</a>
<a id='n959' href='#n959'>959</a>
<a id='n960' href='#n960'>960</a>
<a id='n961' href='#n961'>961</a>
<a id='n962' href='#n962'>962</a>
<a id='n963' href='#n963'>963</a>
<a id='n964' href='#n964'>964</a>
<a id='n965' href='#n965'>965</a>
<a id='n966' href='#n966'>966</a>
<a id='n967' href='#n967'>967</a>
<a id='n968' href='#n968'>968</a>
<a id='n969' href='#n969'>969</a>
<a id='n970' href='#n970'>970</a>
<a id='n971' href='#n971'>971</a>
<a id='n972' href='#n972'>972</a>
<a id='n973' href='#n973'>973</a>
<a id='n974' href='#n974'>974</a>
<a id='n975' href='#n975'>975</a>
<a id='n976' href='#n976'>976</a>
<a id='n977' href='#n977'>977</a>
<a id='n978' href='#n978'>978</a>
<a id='n979' href='#n979'>979</a>
<a id='n980' href='#n980'>980</a>
<a id='n981' href='#n981'>981</a>
<a id='n982' href='#n982'>982</a>
<a id='n983' href='#n983'>983</a>
<a id='n984' href='#n984'>984</a>
<a id='n985' href='#n985'>985</a>
<a id='n986' href='#n986'>986</a>
<a id='n987' href='#n987'>987</a>
<a id='n988' href='#n988'>988</a>
<a id='n989' href='#n989'>989</a>
<a id='n990' href='#n990'>990</a>
<a id='n991' href='#n991'>991</a>
<a id='n992' href='#n992'>992</a>
<a id='n993' href='#n993'>993</a>
<a id='n994' href='#n994'>994</a>
<a id='n995' href='#n995'>995</a>
<a id='n996' href='#n996'>996</a>
<a id='n997' href='#n997'>997</a>
<a id='n998' href='#n998'>998</a>
<a id='n999' href='#n999'>999</a>
<a id='n1000' href='#n1000'>1000</a>
<a id='n1001' href='#n1001'>1001</a>
<a id='n1002' href='#n1002'>1002</a>
<a id='n1003' href='#n1003'>1003</a>
<a id='n1004' href='#n1004'>1004</a>
<a id='n1005' href='#n1005'>1005</a>
<a id='n1006' href='#n1006'>1006</a>
<a id='n1007' href='#n1007'>1007</a>
<a id='n1008' href='#n1008'>1008</a>
<a id='n1009' href='#n1009'>1009</a>
<a id='n1010' href='#n1010'>1010</a>
<a id='n1011' href='#n1011'>1011</a>
<a id='n1012' href='#n1012'>1012</a>
<a id='n1013' href='#n1013'>1013</a>
<a id='n1014' href='#n1014'>1014</a>
<a id='n1015' href='#n1015'>1015</a>
<a id='n1016' href='#n1016'>1016</a>
<a id='n1017' href='#n1017'>1017</a>
<a id='n1018' href='#n1018'>1018</a>
<a id='n1019' href='#n1019'>1019</a>
<a id='n1020' href='#n1020'>1020</a>
<a id='n1021' href='#n1021'>1021</a>
<a id='n1022' href='#n1022'>1022</a>
<a id='n1023' href='#n1023'>1023</a>
<a id='n1024' href='#n1024'>1024</a>
<a id='n1025' href='#n1025'>1025</a>
<a id='n1026' href='#n1026'>1026</a>
<a id='n1027' href='#n1027'>1027</a>
<a id='n1028' href='#n1028'>1028</a>
<a id='n1029' href='#n1029'>1029</a>
<a id='n1030' href='#n1030'>1030</a>
<a id='n1031' href='#n1031'>1031</a>
<a id='n1032' href='#n1032'>1032</a>
<a id='n1033' href='#n1033'>1033</a>
<a id='n1034' href='#n1034'>1034</a>
<a id='n1035' href='#n1035'>1035</a>
<a id='n1036' href='#n1036'>1036</a>
<a id='n1037' href='#n1037'>1037</a>
<a id='n1038' href='#n1038'>1038</a>
<a id='n1039' href='#n1039'>1039</a>
<a id='n1040' href='#n1040'>1040</a>
<a id='n1041' href='#n1041'>1041</a>
<a id='n1042' href='#n1042'>1042</a>
<a id='n1043' href='#n1043'>1043</a>
<a id='n1044' href='#n1044'>1044</a>
<a id='n1045' href='#n1045'>1045</a>
<a id='n1046' href='#n1046'>1046</a>
<a id='n1047' href='#n1047'>1047</a>
<a id='n1048' href='#n1048'>1048</a>
<a id='n1049' href='#n1049'>1049</a>
<a id='n1050' href='#n1050'>1050</a>
<a id='n1051' href='#n1051'>1051</a>
<a id='n1052' href='#n1052'>1052</a>
<a id='n1053' href='#n1053'>1053</a>
<a id='n1054' href='#n1054'>1054</a>
<a id='n1055' href='#n1055'>1055</a>
<a id='n1056' href='#n1056'>1056</a>
<a id='n1057' href='#n1057'>1057</a>
<a id='n1058' href='#n1058'>1058</a>
<a id='n1059' href='#n1059'>1059</a>
<a id='n1060' href='#n1060'>1060</a>
<a id='n1061' href='#n1061'>1061</a>
<a id='n1062' href='#n1062'>1062</a>
<a id='n1063' href='#n1063'>1063</a>
<a id='n1064' href='#n1064'>1064</a>
<a id='n1065' href='#n1065'>1065</a>
<a id='n1066' href='#n1066'>1066</a>
<a id='n1067' href='#n1067'>1067</a>
<a id='n1068' href='#n1068'>1068</a>
<a id='n1069' href='#n1069'>1069</a>
<a id='n1070' href='#n1070'>1070</a>
<a id='n1071' href='#n1071'>1071</a>
<a id='n1072' href='#n1072'>1072</a>
<a id='n1073' href='#n1073'>1073</a>
<a id='n1074' href='#n1074'>1074</a>
<a id='n1075' href='#n1075'>1075</a>
<a id='n1076' href='#n1076'>1076</a>
<a id='n1077' href='#n1077'>1077</a>
<a id='n1078' href='#n1078'>1078</a>
<a id='n1079' href='#n1079'>1079</a>
<a id='n1080' href='#n1080'>1080</a>
<a id='n1081' href='#n1081'>1081</a>
<a id='n1082' href='#n1082'>1082</a>
<a id='n1083' href='#n1083'>1083</a>
<a id='n1084' href='#n1084'>1084</a>
<a id='n1085' href='#n1085'>1085</a>
<a id='n1086' href='#n1086'>1086</a>
<a id='n1087' href='#n1087'>1087</a>
<a id='n1088' href='#n1088'>1088</a>
<a id='n1089' href='#n1089'>1089</a>
<a id='n1090' href='#n1090'>1090</a>
<a id='n1091' href='#n1091'>1091</a>
<a id='n1092' href='#n1092'>1092</a>
<a id='n1093' href='#n1093'>1093</a>
<a id='n1094' href='#n1094'>1094</a>
<a id='n1095' href='#n1095'>1095</a>
<a id='n1096' href='#n1096'>1096</a>
<a id='n1097' href='#n1097'>1097</a>
<a id='n1098' href='#n1098'>1098</a>
<a id='n1099' href='#n1099'>1099</a>
<a id='n1100' href='#n1100'>1100</a>
<a id='n1101' href='#n1101'>1101</a>
<a id='n1102' href='#n1102'>1102</a>
<a id='n1103' href='#n1103'>1103</a>
<a id='n1104' href='#n1104'>1104</a>
<a id='n1105' href='#n1105'>1105</a>
<a id='n1106' href='#n1106'>1106</a>
<a id='n1107' href='#n1107'>1107</a>
<a id='n1108' href='#n1108'>1108</a>
<a id='n1109' href='#n1109'>1109</a>
<a id='n1110' href='#n1110'>1110</a>
<a id='n1111' href='#n1111'>1111</a>
<a id='n1112' href='#n1112'>1112</a>
<a id='n1113' href='#n1113'>1113</a>
<a id='n1114' href='#n1114'>1114</a>
<a id='n1115' href='#n1115'>1115</a>
<a id='n1116' href='#n1116'>1116</a>
<a id='n1117' href='#n1117'>1117</a>
<a id='n1118' href='#n1118'>1118</a>
<a id='n1119' href='#n1119'>1119</a>
<a id='n1120' href='#n1120'>1120</a>
<a id='n1121' href='#n1121'>1121</a>
<a id='n1122' href='#n1122'>1122</a>
<a id='n1123' href='#n1123'>1123</a>
<a id='n1124' href='#n1124'>1124</a>
<a id='n1125' href='#n1125'>1125</a>
<a id='n1126' href='#n1126'>1126</a>
<a id='n1127' href='#n1127'>1127</a>
<a id='n1128' href='#n1128'>1128</a>
<a id='n1129' href='#n1129'>1129</a>
<a id='n1130' href='#n1130'>1130</a>
<a id='n1131' href='#n1131'>1131</a>
<a id='n1132' href='#n1132'>1132</a>
<a id='n1133' href='#n1133'>1133</a>
<a id='n1134' href='#n1134'>1134</a>
<a id='n1135' href='#n1135'>1135</a>
<a id='n1136' href='#n1136'>1136</a>
<a id='n1137' href='#n1137'>1137</a>
<a id='n1138' href='#n1138'>1138</a>
<a id='n1139' href='#n1139'>1139</a>
<a id='n1140' href='#n1140'>1140</a>
<a id='n1141' href='#n1141'>1141</a>
<a id='n1142' href='#n1142'>1142</a>
<a id='n1143' href='#n1143'>1143</a>
<a id='n1144' href='#n1144'>1144</a>
<a id='n1145' href='#n1145'>1145</a>
<a id='n1146' href='#n1146'>1146</a>
<a id='n1147' href='#n1147'>1147</a>
<a id='n1148' href='#n1148'>1148</a>
<a id='n1149' href='#n1149'>1149</a>
<a id='n1150' href='#n1150'>1150</a>
<a id='n1151' href='#n1151'>1151</a>
<a id='n1152' href='#n1152'>1152</a>
<a id='n1153' href='#n1153'>1153</a>
<a id='n1154' href='#n1154'>1154</a>
<a id='n1155' href='#n1155'>1155</a>
<a id='n1156' href='#n1156'>1156</a>
<a id='n1157' href='#n1157'>1157</a>
<a id='n1158' href='#n1158'>1158</a>
<a id='n1159' href='#n1159'>1159</a>
<a id='n1160' href='#n1160'>1160</a>
<a id='n1161' href='#n1161'>1161</a>
<a id='n1162' href='#n1162'>1162</a>
<a id='n1163' href='#n1163'>1163</a>
<a id='n1164' href='#n1164'>1164</a>
<a id='n1165' href='#n1165'>1165</a>
<a id='n1166' href='#n1166'>1166</a>
<a id='n1167' href='#n1167'>1167</a>
<a id='n1168' href='#n1168'>1168</a>
<a id='n1169' href='#n1169'>1169</a>
<a id='n1170' href='#n1170'>1170</a>
<a id='n1171' href='#n1171'>1171</a>
<a id='n1172' href='#n1172'>1172</a>
<a id='n1173' href='#n1173'>1173</a>
<a id='n1174' href='#n1174'>1174</a>
<a id='n1175' href='#n1175'>1175</a>
<a id='n1176' href='#n1176'>1176</a>
<a id='n1177' href='#n1177'>1177</a>
<a id='n1178' href='#n1178'>1178</a>
<a id='n1179' href='#n1179'>1179</a>
<a id='n1180' href='#n1180'>1180</a>
<a id='n1181' href='#n1181'>1181</a>
<a id='n1182' href='#n1182'>1182</a>
<a id='n1183' href='#n1183'>1183</a>
<a id='n1184' href='#n1184'>1184</a>
<a id='n1185' href='#n1185'>1185</a>
<a id='n1186' href='#n1186'>1186</a>
<a id='n1187' href='#n1187'>1187</a>
<a id='n1188' href='#n1188'>1188</a>
<a id='n1189' href='#n1189'>1189</a>
<a id='n1190' href='#n1190'>1190</a>
<a id='n1191' href='#n1191'>1191</a>
<a id='n1192' href='#n1192'>1192</a>
<a id='n1193' href='#n1193'>1193</a>
<a id='n1194' href='#n1194'>1194</a>
<a id='n1195' href='#n1195'>1195</a>
<a id='n1196' href='#n1196'>1196</a>
<a id='n1197' href='#n1197'>1197</a>
<a id='n1198' href='#n1198'>1198</a>
<a id='n1199' href='#n1199'>1199</a>
<a id='n1200' href='#n1200'>1200</a>
<a id='n1201' href='#n1201'>1201</a>
<a id='n1202' href='#n1202'>1202</a>
<a id='n1203' href='#n1203'>1203</a>
<a id='n1204' href='#n1204'>1204</a>
<a id='n1205' href='#n1205'>1205</a>
<a id='n1206' href='#n1206'>1206</a>
<a id='n1207' href='#n1207'>1207</a>
<a id='n1208' href='#n1208'>1208</a>
<a id='n1209' href='#n1209'>1209</a>
<a id='n1210' href='#n1210'>1210</a>
<a id='n1211' href='#n1211'>1211</a>
<a id='n1212' href='#n1212'>1212</a>
<a id='n1213' href='#n1213'>1213</a>
<a id='n1214' href='#n1214'>1214</a>
<a id='n1215' href='#n1215'>1215</a>
<a id='n1216' href='#n1216'>1216</a>
<a id='n1217' href='#n1217'>1217</a>
<a id='n1218' href='#n1218'>1218</a>
<a id='n1219' href='#n1219'>1219</a>
<a id='n1220' href='#n1220'>1220</a>
<a id='n1221' href='#n1221'>1221</a>
<a id='n1222' href='#n1222'>1222</a>
<a id='n1223' href='#n1223'>1223</a>
<a id='n1224' href='#n1224'>1224</a>
<a id='n1225' href='#n1225'>1225</a>
<a id='n1226' href='#n1226'>1226</a>
<a id='n1227' href='#n1227'>1227</a>
<a id='n1228' href='#n1228'>1228</a>
<a id='n1229' href='#n1229'>1229</a>
<a id='n1230' href='#n1230'>1230</a>
<a id='n1231' href='#n1231'>1231</a>
<a id='n1232' href='#n1232'>1232</a>
<a id='n1233' href='#n1233'>1233</a>
<a id='n1234' href='#n1234'>1234</a>
<a id='n1235' href='#n1235'>1235</a>
<a id='n1236' href='#n1236'>1236</a>
<a id='n1237' href='#n1237'>1237</a>
<a id='n1238' href='#n1238'>1238</a>
<a id='n1239' href='#n1239'>1239</a>
<a id='n1240' href='#n1240'>1240</a>
<a id='n1241' href='#n1241'>1241</a>
<a id='n1242' href='#n1242'>1242</a>
<a id='n1243' href='#n1243'>1243</a>
<a id='n1244' href='#n1244'>1244</a>
<a id='n1245' href='#n1245'>1245</a>
<a id='n1246' href='#n1246'>1246</a>
<a id='n1247' href='#n1247'>1247</a>
<a id='n1248' href='#n1248'>1248</a>
<a id='n1249' href='#n1249'>1249</a>
<a id='n1250' href='#n1250'>1250</a>
<a id='n1251' href='#n1251'>1251</a>
<a id='n1252' href='#n1252'>1252</a>
<a id='n1253' href='#n1253'>1253</a>
<a id='n1254' href='#n1254'>1254</a>
<a id='n1255' href='#n1255'>1255</a>
<a id='n1256' href='#n1256'>1256</a>
<a id='n1257' href='#n1257'>1257</a>
<a id='n1258' href='#n1258'>1258</a>
</pre></td>
<td class='lines'><pre><code><span class="hl kwa">package</span> lang<span class="hl opt">;</span> <span class="hl slc"># $Id$</span>

<span class="hl kwa">use</span> diagnostics<span class="hl opt">;</span>
<span class="hl kwa">use</span> strict<span class="hl opt">;</span>
<span class="hl kwa">use</span> common<span class="hl opt">;</span>
<span class="hl kwa">use</span> <span class="hl kwc">log</span><span class="hl opt">;</span>

<span class="hl slc">#- key: lang name (locale name for some (~5) special cases needing</span>
<span class="hl slc">#-      extra distinctions)</span>
<span class="hl slc">#- [0]: lang name in english</span>
<span class="hl slc">#- [1]: transliterated locale name in the locale name (used for sorting)</span>
<span class="hl slc">#- [2]: default locale name to use for that language if there isn&apos;t</span>
<span class="hl slc">#-      an existing locale for the combination language+country choosen</span>
<span class="hl slc">#- [3]: geographic groups that this language belongs to (for displaying</span>
<span class="hl slc">#-      in the menu grouped in smaller lists), 1=Europe, 2=Asia, 3=Africa,</span>
<span class="hl slc">#-      4=Oceania&amp;Pacific, 5=America (if you wonder, it&apos;s the order</span>
<span class="hl slc">#-      used in the olympic flag)</span>
<span class="hl slc">#- [4]: special value for LANGUAGE variable (if different of the default</span>
<span class="hl slc">#-      of &apos;ll_CC:ll_DD:ll&apos; (ll_CC: locale (if exist) resulting of the</span>
<span class="hl slc">#-      combination of chosen lang (ll) and country (CC), ll_DD: the</span>
<span class="hl slc">#-      default locale shown here (field [2]) and ll: the language (the key))</span>
<span class="hl kwc">our</span> <span class="hl kwb">%langs</span> <span class="hl opt">= (</span>
<span class="hl str">&apos;af&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Afrikaans&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;Afrikaans&apos;</span><span class="hl opt">,</span>         <span class="hl str">&apos;af_ZA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;  3  &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;am&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Amharic&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;ZZ emarNa&apos;</span><span class="hl opt">,</span>         <span class="hl str">&apos;am_ET&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;  3  &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_am&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ar&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Arabic&apos;</span><span class="hl opt">,</span>              <span class="hl str">&apos;AA Arabic&apos;</span><span class="hl opt">,</span>         <span class="hl str">&apos;ar_EG&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 23  &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_ar&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;as&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Assamese&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;ZZ Assamese&apos;</span><span class="hl opt">,</span>       <span class="hl str">&apos;as_IN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_bn&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;az&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Azeri (Latin)&apos;</span><span class="hl opt">,</span>       <span class="hl str">&apos;Azerbaycanca&apos;</span><span class="hl opt">,</span>      <span class="hl str">&apos;az_AZ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_az&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;be&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Belarussian&apos;</span><span class="hl opt">,</span>         <span class="hl str">&apos;Belaruskaya&apos;</span><span class="hl opt">,</span>       <span class="hl str">&apos;be_BY&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;cp1251&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#-&apos;ber&apos; =&gt; [ &apos;Berber&apos;,              &apos;ZZ Tamazight&apos;,      &apos;ber_MA&apos;,&apos;  3  &apos;, &apos;unicode&apos; ],</span>
<span class="hl str">&apos;bg&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Bulgarian&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;Blgarski&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;bg_BG&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;cp1251&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;bn&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Bengali&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;ZZ Bengali&apos;</span><span class="hl opt">,</span>        <span class="hl str">&apos;bn_BD&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_bn&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;br&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Britton&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Brezhoneg&apos;</span><span class="hl opt">,</span>         <span class="hl str">&apos;br_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;br:fr_FR:fr&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;bs&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Bosnian&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Bosanski&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;bs_BA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ca&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Catalan&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Catala&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;ca_ES&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;ca:es_ES:es&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;cs&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Czech&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;Cestina&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;cs_CZ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;cy&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Welsh&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;Cymraeg&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;cy_GB&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_lat8&apos;</span><span class="hl opt">,</span>    <span class="hl str">&apos;cy:en_GB:en&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;da&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Danish&apos;</span><span class="hl opt">,</span>              <span class="hl str">&apos;Dansk&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;da_DK&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;de&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;German&apos;</span><span class="hl opt">,</span>              <span class="hl str">&apos;Deutsch&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;de_DE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#-&apos;dz&apos; =&gt;  [ &apos;Buthanese&apos;,           &apos;ZZ Dzhonka&apos;,        &apos;dz_BT&apos;, &apos; 2   &apos;, &apos;unicode&apos; ],</span>
<span class="hl str">&apos;el&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Greek&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;Ellynika&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;el_GR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-7&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;en_GB&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&apos;English&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;English&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;en_GB&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;12345&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;en_US&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&apos;English (American)&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;English (American)&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;    5&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;C&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;en_IE&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&apos;English (Ireland)&apos;</span><span class="hl opt">,</span>   <span class="hl str">&apos;English (Ireland)&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;en_IE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;en_IE:en_GB:en&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;eo&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Esperanto&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;Esperanto&apos;</span><span class="hl opt">,</span>         <span class="hl str">&apos;eo_XX&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;12345&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;unicode&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;es&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Spanish&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Espanol&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;es_ES&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1 3 5&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;et&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Estonian&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;Eesti&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;et_EE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;eu&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Euskara (Basque)&apos;</span><span class="hl opt">,</span>    <span class="hl str">&apos;Euskara&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;eu_ES&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;fa&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Farsi (Iranian)&apos;</span><span class="hl opt">,</span>     <span class="hl str">&apos;AA Farsi&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;fa_IR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_ar&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;fi&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Finnish (Suomi)&apos;</span><span class="hl opt">,</span>     <span class="hl str">&apos;Suomi&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;fi_FI&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;fo&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Faroese&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Foroyskt&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;fo_FO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;fr&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;French&apos;</span><span class="hl opt">,</span>              <span class="hl str">&apos;Francais&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1 345&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#&apos;fur&apos; =&gt;    [ &apos;Furlan&apos;,             &apos;Furlan&apos;,            &apos;fur_IT&apos;, &apos;1    &apos;, &apos;iso-8859-15&apos;, &apos;fur:it_IT:it&apos; ],</span>
<span class="hl str">&apos;ga&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Gaelic (Irish)&apos;</span><span class="hl opt">,</span>      <span class="hl str">&apos;Gaeilge&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;ga_IE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;ga:en_IE:en_GB:en&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#&apos;gd&apos; =&gt;   [ &apos;Gaelic (Scottish)&apos;,   &apos;Gaidhlig&apos;,          &apos;gd_GB&apos;, &apos;1    &apos;, &apos;utf_lat8&apos;,    &apos;gd:en_GB:en&apos; ],</span>
<span class="hl str">&apos;gl&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Galician&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;Galego&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;gl_ES&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;gl:es_ES:es:pt:pt_BR&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#&apos;gn&apos; =&gt;   [ &apos;Guarani&apos;,             &apos;Avane-e&apos;,           &apos;gn_PY&apos;, &apos;    5&apos;, &apos;utf8&apos;,    &apos;gn:es_PY:es&apos; ],</span>
<span class="hl str">&apos;gu&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Gujarati&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;ZZ Gujarati&apos;</span><span class="hl opt">,</span>       <span class="hl str">&apos;gu_IN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;unicode&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#&apos;gv&apos; =&gt;   [ &apos;Gaelic (Manx)&apos;,       &apos;Gaelg&apos;,             &apos;gv_GB&apos;, &apos;1    &apos;, &apos;utf_lat8&apos;,    &apos;gv:en_GB:en&apos; ],</span>
<span class="hl str">&apos;he&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Hebrew&apos;</span><span class="hl opt">,</span>              <span class="hl str">&apos;AA Ivrit&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;he_IL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_he&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;hi&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Hindi&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;ZZ Hindi&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;hi_IN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_hi&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;hr&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Croatian&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;Hrvatski&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;hr_HR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;hu&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Hungarian&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;Magyar&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;hu_HU&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;hy&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Armenian&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;ZZ Armenian&apos;</span><span class="hl opt">,</span>       <span class="hl str">&apos;hy_AM&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_hy&apos;</span> <span class="hl opt">],</span>
<span class="hl slc"># locale not done yet</span>
<span class="hl slc">#&apos;ia&apos; =&gt;   [ &apos;Interlingua&apos;,         &apos;Interlingua&apos;,       &apos;ia_XX&apos;, &apos;1   5&apos;, &apos;utf8&apos; ],</span>
<span class="hl str">&apos;id&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Indonesian&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;Bahasa Indonesia&apos;</span><span class="hl opt">,</span>  <span class="hl str">&apos;id_ID&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;is&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Icelandic&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;Islenska&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;is_IS&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;it&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Italian&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Italiano&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;it_IT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#-&apos;iu&apos; =&gt;  [ &apos;Inuktitut&apos;,           &apos;ZZ Inuktitut&apos;,      &apos;iu_CA&apos;, &apos;    5&apos;, &apos;utf_iu&apos; ],</span>
<span class="hl str">&apos;ja&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Japanese&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;ZZ Nihongo&apos;</span><span class="hl opt">,</span>        <span class="hl str">&apos;ja_JP&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;jisx0208&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ka&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Georgian&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;ZZ Georgian&apos;</span><span class="hl opt">,</span>       <span class="hl str">&apos;ka_GE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_ka&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#-&apos;kl&apos; =&gt;  [ &apos;Greenlandic (inuit)&apos;, &apos;ZZ Inuit&apos;,          &apos;kl_GL&apos;, &apos;    5&apos;, &apos;iso-8859-1&apos; ],</span>
<span class="hl str">&apos;kn&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Kannada&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;ZZ Kannada&apos;</span><span class="hl opt">,</span>        <span class="hl str">&apos;kn_IN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_kn&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ko&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Korean&apos;</span><span class="hl opt">,</span>              <span class="hl str">&apos;ZZ Korea&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;ko_KR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;ksc5601&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ku&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Kurdish&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Kurdi&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;ku_TR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-9&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#-&apos;kw&apos; =&gt;  [ &apos;Cornish&apos;,             &apos;Kernewek&apos;,          &apos;kw_GB&apos;, &apos;1    &apos;, &apos;utf_lat8&apos;,    &apos;kw:en_GB:en&apos; ],</span>
<span class="hl str">&apos;ky&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Kyrgyz&apos;</span><span class="hl opt">,</span>              <span class="hl str">&apos;Kyrgyz&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;ky_KG&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_cyr2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;li&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Limbourgish&apos;</span><span class="hl opt">,</span>         <span class="hl str">&apos;Limburgs&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;li_NL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;lo&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Laotian&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Laotian&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;lo_LA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_lo&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;lt&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Lithuanian&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;Lietuviskai&apos;</span><span class="hl opt">,</span>       <span class="hl str">&apos;lt_LT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-13&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#- ltg_LV locale not done yet, using lv_LV for now</span>
<span class="hl str">&apos;ltg&apos;</span> <span class="hl opt">=&gt;   [</span> <span class="hl str">&apos;Latgalian&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;Latgalisu&apos;</span><span class="hl opt">,</span>         <span class="hl str">&apos;lv_LV&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-13&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;ltg,lv&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;lv&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Latvian&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Latviesu&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;lv_LV&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-13&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;mi&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Maori&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;Maori&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;mi_NZ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;   4 &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;unicode&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;mk&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Macedonian&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;Makedonski&apos;</span><span class="hl opt">,</span>        <span class="hl str">&apos;mk_MK&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_cyr1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ml&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Malayalam&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;ZZ Malayalam&apos;</span><span class="hl opt">,</span>      <span class="hl str">&apos;ml_IN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_ml&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;mn&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Mongolian&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;Mongol&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;mn_MN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_cyr2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;mr&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Marathi&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;ZZ Marathi&apos;</span><span class="hl opt">,</span>        <span class="hl str">&apos;mr_IN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_hi&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ms&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Malay&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;Bahasa Melayu&apos;</span><span class="hl opt">,</span>     <span class="hl str">&apos;ms_MY&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;mt&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Maltese&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Maltin&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;mt_MT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1 3  &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;unicode&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;nb&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Norwegian Bokmaal&apos;</span><span class="hl opt">,</span>   <span class="hl str">&apos;Norsk, Bokmal&apos;</span><span class="hl opt">,</span>     <span class="hl str">&apos;nb_NO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span><span class="hl opt">,</span>  <span class="hl str">&apos;nb:no&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;nds&apos;</span> <span class="hl opt">=&gt;   [</span> <span class="hl str">&apos;Low Saxon&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;Platduutsch&apos;</span><span class="hl opt">,</span>      <span class="hl str">&apos;nds_DE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;nds_DE:nds&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ne&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Nepali&apos;</span><span class="hl opt">,</span>              <span class="hl str">&apos;ZZ Nepali&apos;</span><span class="hl opt">,</span>         <span class="hl str">&apos;ne_NP&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;unicode&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;nl&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Dutch&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;Nederlands&apos;</span><span class="hl opt">,</span>        <span class="hl str">&apos;nl_NL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;nn&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Norwegian Nynorsk&apos;</span><span class="hl opt">,</span>   <span class="hl str">&apos;Norsk, Nynorsk&apos;</span><span class="hl opt">,</span>    <span class="hl str">&apos;nn_NO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span><span class="hl opt">,</span>  <span class="hl str">&apos;nn:no</span><span class="hl ipl">&#64;nynorsk</span><span class="hl str">:no_NY:no:nb&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;oc&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Occitan&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Occitan&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;oc_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span><span class="hl opt">,</span>  <span class="hl str">&apos;oc:fr_FR:fr&apos;</span> <span class="hl opt">],</span>
<span class="hl slc"># &apos;tl&apos; in priority position for now, as &apos;ph&apos; is not yet official and &apos;tl&apos;</span>
<span class="hl slc"># is used instead. Monolingual window managers won&apos;t see the menus otherwise</span>
<span class="hl str">&apos;ph&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Filipino&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;Filipino&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;ph_PH&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span><span class="hl opt">,</span>  <span class="hl str">&apos;tl:ph&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;pl&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Polish&apos;</span><span class="hl opt">,</span>              <span class="hl str">&apos;Polski&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;pl_PL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;pt&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Portuguese&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;Portugues&apos;</span><span class="hl opt">,</span>         <span class="hl str">&apos;pt_PT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1 3  &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;pt_PT:pt:pt_BR&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;pt_BR&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&apos;Portuguese Brazil&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;Portugues do Brasil&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;pt_BR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;    5&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span><span class="hl opt">,</span>  <span class="hl str">&apos;pt_BR:pt_PT:pt&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ro&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Romanian&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;Romana&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;ro_RO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ru&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Russian&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Russkij&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;ru_RU&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;12   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;koi8-u&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#&apos;sc&apos; =&gt;    [ &apos;Sardian&apos;,            &apos;Sardu&apos;,             &apos;sc_IT&apos;, &apos;1    &apos;, &apos;iso-8859-15&apos;, &apos;sc:it_IT:it&apos; ],</span>
<span class="hl str">&apos;se&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Saami&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;Samegiella&apos;</span><span class="hl opt">,</span>        <span class="hl str">&apos;se_NO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;unicode&apos;</span> <span class="hl opt">],</span> 
<span class="hl str">&apos;sk&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Slovak&apos;</span><span class="hl opt">,</span>              <span class="hl str">&apos;Slovencina&apos;</span><span class="hl opt">,</span>        <span class="hl str">&apos;sk_SK&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;sl&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Slovenian&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;Slovenscina&apos;</span><span class="hl opt">,</span>       <span class="hl str">&apos;sl_SI&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;sq&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Albanian&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;Shqip&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;sq_AL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span> <span class="hl opt">],</span> 
<span class="hl str">&apos;sr&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Serbian Cyrillic&apos;</span><span class="hl opt">,</span>    <span class="hl str">&apos;Srpska&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;sr_CS&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_cyr1&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;sp:sr&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;sr</span><span class="hl ipl">&#64;Latn</span><span class="hl str">&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&apos;Serbian Latin&apos;</span><span class="hl opt">,</span>     <span class="hl str">&apos;Srpska&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;sr_CS&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;unicode&apos;</span><span class="hl opt">,</span>  <span class="hl str">&apos;sh:sr</span><span class="hl ipl">&#64;Latn</span><span class="hl str">&apos;</span> <span class="hl opt">],</span> 
<span class="hl slc">#- ss_ZA not yet done, using en_ZA locale instead</span>
<span class="hl str">&apos;ss&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Swati&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;SiSwati&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;en_ZA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;  3  &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;ss:en_ZA&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;st&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Sotho&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;Sesotho&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;st_ZA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;  3  &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;st:nso:en_ZA&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;sv&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Swedish&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Svenska&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;sv_SE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ta&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Tamil&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;ZZ Tamil&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;ta_IN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_ta&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;te&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Telugu&apos;</span><span class="hl opt">,</span>              <span class="hl str">&apos;ZZ Telugu&apos;</span><span class="hl opt">,</span>         <span class="hl str">&apos;te_IN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;unicode&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;tg&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Tajik&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;Tojiki&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;tg_TJ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_cyr2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;th&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Thai&apos;</span><span class="hl opt">,</span>                <span class="hl str">&apos;ZZ Thai&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;th_TH&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;tis620&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#-&apos;tk&apos; =&gt;  [ &apos;Turkmen&apos;,             &apos;Turkmence&apos;,         &apos;tk_TM&apos;, &apos; 2   &apos;, &apos;utf8&apos; ],</span>
<span class="hl str">&apos;tr&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Turkish&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;Turkce&apos;</span><span class="hl opt">,</span>            <span class="hl str">&apos;tr_TR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-9&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#-&apos;tt&apos; =&gt;  [ &apos;Tatar&apos;,               &apos;Tatarca&apos;,           &apos;tt_RU&apos;, &apos; 2   &apos;, &apos;utf8&apos; ],</span>
<span class="hl str">&apos;uk&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Ukrainian&apos;</span><span class="hl opt">,</span>           <span class="hl str">&apos;Ukrayinska&apos;</span><span class="hl opt">,</span>        <span class="hl str">&apos;uk_UA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;koi8-u&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#-&apos;ur&apos; =&gt;  [ &apos;Urdu&apos;,                &apos;AA Urdu&apos;,           &apos;ur_PK&apos;, &apos; 2   &apos;, &apos;utf_ar&apos; ],  </span>
<span class="hl str">&apos;uz</span><span class="hl ipl">&#64;Latn</span><span class="hl str">&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&apos;Uzbek (latin)&apos;</span><span class="hl opt">,</span>     <span class="hl str">&apos;Ozbekcha&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;uz_UZ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_cyr2&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;uz</span><span class="hl ipl">&#64;Latn</span><span class="hl str">:uz&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;uz&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Uzbek (cyrillic)&apos;</span><span class="hl opt">,</span>    <span class="hl str">&apos;Ozbekcha&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;uz_UZ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_cyr2&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;uz</span><span class="hl ipl">&#64;Cyrl</span><span class="hl str">:uz&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#- ve_ZA not yet done, using en_ZA locale instead</span>
<span class="hl str">&apos;ve&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Venda&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;Venda&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;en_ZA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;  3  &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;ve:ven:en_ZA&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;vi&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Vietnamese&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;Tieng Viet&apos;</span><span class="hl opt">,</span>        <span class="hl str">&apos;vi_VN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_vi&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;wa&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Walon&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;Walon&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;wa_BE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-15&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;wa:fr_BE:fr&apos;</span> <span class="hl opt">],</span>
<span class="hl slc">#- locale not done yet</span>
<span class="hl slc">#&apos;wen&apos; =&gt;   [ &apos;Sorbian&apos;,             &apos;XX Sorbian&apos;,       &apos;wen_XX&apos;, &apos;1    &apos;, &apos;iso-8859-1&apos; ],</span>
<span class="hl str">&apos;xh&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Xhosa&apos;</span><span class="hl opt">,</span>               <span class="hl str">&apos;IsiXhosa&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;xh_ZA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;  3  &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;xh:en_ZA&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;yi&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Yiddish&apos;</span><span class="hl opt">,</span>             <span class="hl str">&apos;AA Yidish&apos;</span><span class="hl opt">,</span>         <span class="hl str">&apos;yi_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1    &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;utf_he&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;zh_CN&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&apos;Chinese Simplified&apos;</span><span class="hl opt">,</span>  <span class="hl str">&apos;ZZ ZhongWen&apos;</span><span class="hl opt">,</span>       <span class="hl str">&apos;zh_CN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;gb2312&apos;</span><span class="hl opt">,</span>      <span class="hl str">&apos;zh_CN.GB2312:zh_CN:zh&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;zh_TW&apos;</span> <span class="hl opt">=&gt; [</span> <span class="hl str">&apos;Chinese Traditional&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;ZZ ZhongWen&apos;</span><span class="hl opt">,</span>       <span class="hl str">&apos;zh_TW&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos; 2   &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;Big5&apos;</span><span class="hl opt">,</span>        <span class="hl str">&apos;zh_TW.Big5:zh_TW:zh_HK:zh&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;zu&apos;</span> <span class="hl opt">=&gt;    [</span> <span class="hl str">&apos;Zulu&apos;</span><span class="hl opt">,</span>                 <span class="hl str">&apos;IsiZulu&apos;</span><span class="hl opt">,</span>          <span class="hl str">&apos;zu_ZA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;  3  &apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;iso-8859-1&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;xh:en_ZA&apos;</span> <span class="hl opt">],</span>
<span class="hl opt">);</span>
<span class="hl kwa">sub</span> l2name           <span class="hl opt">{</span> <span class="hl kwc">exists</span> <span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]} &amp;&amp;</span> <span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]}[</span><span class="hl num">0</span><span class="hl opt">] }</span>
<span class="hl kwa">sub</span> l2transliterated <span class="hl opt">{</span> <span class="hl kwc">exists</span> <span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]} &amp;&amp;</span> <span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]}[</span><span class="hl num">1</span><span class="hl opt">] }</span>
<span class="hl kwa">sub</span> l2locale         <span class="hl opt">{</span> <span class="hl kwc">exists</span> <span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]} &amp;&amp;</span> <span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]}[</span><span class="hl num">2</span><span class="hl opt">] }</span>
<span class="hl kwa">sub</span> l2location <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl kwb">%geo</span> <span class="hl opt">= (</span><span class="hl num">1</span> <span class="hl opt">=&gt;</span> <span class="hl str">&apos;Europe&apos;</span><span class="hl opt">,</span> <span class="hl num">2</span> <span class="hl opt">=&gt;</span> <span class="hl str">&apos;Asia&apos;</span><span class="hl opt">,</span> <span class="hl num">3</span> <span class="hl opt">=&gt;</span> <span class="hl str">&apos;Africa&apos;</span><span class="hl opt">,</span> <span class="hl num">4</span> <span class="hl opt">=&gt;</span> <span class="hl str">&apos;Oceania/Pacific&apos;</span><span class="hl opt">,</span> <span class="hl num">5</span> <span class="hl opt">=&gt;</span> <span class="hl str">&apos;America&apos;</span><span class="hl opt">);</span>
    <span class="hl kwc">map</span> <span class="hl opt">{</span> if_<span class="hl opt">(</span><span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]}[</span><span class="hl num">3</span><span class="hl opt">] =~</span> <span class="hl kwb">$_, $geo</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">}) }</span> <span class="hl num">1</span><span class="hl opt">.</span><span class="hl num">.5</span><span class="hl opt">;</span>
<span class="hl opt">}</span>
<span class="hl kwa">sub</span> l2charset        <span class="hl opt">{</span> <span class="hl kwc">exists</span> <span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]} &amp;&amp;</span> <span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]}[</span><span class="hl num">4</span><span class="hl opt">] }</span>
<span class="hl kwa">sub</span> l2language       <span class="hl opt">{</span> <span class="hl kwc">exists</span> <span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]} &amp;&amp;</span> <span class="hl kwb">$langs</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]}[</span><span class="hl num">5</span><span class="hl opt">] }</span>
<span class="hl kwa">sub</span> list_langs <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">%options</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">&#64;l</span> <span class="hl opt">=</span> <span class="hl kwc">keys</span> <span class="hl kwb">%langs</span><span class="hl opt">;</span>
    <span class="hl kwb">$options</span><span class="hl opt">{</span>exclude_non_installed<span class="hl opt">}</span> ? <span class="hl kwc">grep</span> <span class="hl opt">{ -</span>e <span class="hl str">&quot;/usr/share/locale/&quot;</span><span class="hl opt">.</span>l2locale<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">).</span><span class="hl str">&quot;/LC_CTYPE&quot;</span> <span class="hl opt">}</span> <span class="hl kwb">&#64;l</span> <span class="hl opt">:</span> <span class="hl kwb">&#64;l</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> text_direction_rtl<span class="hl opt">() {</span> N<span class="hl opt">(</span><span class="hl str">&quot;default:LTR&quot;</span><span class="hl opt">)</span> <span class="hl kwc">eq</span> <span class="hl str">&quot;default:RTL&quot;</span> <span class="hl opt">}</span>


<span class="hl slc">#- key: country name (that should be YY in xx_YY locale)</span>
<span class="hl slc">#- [0]: country name in natural language</span>
<span class="hl slc">#- [1]: default locale for that country </span>
<span class="hl slc">#- [2]: geographic groups that this country belongs to (for displaying</span>
<span class="hl slc">#-      in the menu grouped in smaller lists), 1=Europe, 2=Asia, 3=Africa,</span>
<span class="hl slc">#-      4=Oceania&amp;Pacific, 5=America (if you wonder, it&apos;s the order</span>
<span class="hl slc">#-      used in the olympic flag)</span>
<span class="hl slc">#-</span>
<span class="hl slc">#- Note: for countries for which a glibc locale don&apos;t exist (yet) I tried to</span>
<span class="hl slc">#- put a locale that makes sense; and a &apos;#&apos; at the end of the line to show</span>
<span class="hl slc">#- the locale is not the &quot;correct&quot; one. &apos;en_US&apos; is used when no good choice</span>
<span class="hl slc">#- is available.</span>
<span class="hl kwc">my</span> <span class="hl kwb">%countries</span> <span class="hl opt">= (</span>
<span class="hl str">&apos;AF&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Afghanistan&quot;</span><span class="hl opt">),</span>    <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;AD&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Andorra&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;ca_ES&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;AE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;United Arab Emirates&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;ar_AE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;AG&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Antigua and Barbuda&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;AI&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Anguilla&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;AL&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Albania&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;sq_AL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;AM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Armenia&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;hy_AM&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;AN&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Netherlands Antilles&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;AO&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Angola&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;pt_PT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;AQ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Antarctica&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;AR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Argentina&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;es_AR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;AS&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;American Samoa&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;AT&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Austria&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;de_AT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;AU&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Australia&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;en_AU&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;AW&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Aruba&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;AZ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Azerbaijan&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;az_AZ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;BA&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Bosnia and Herzegovina&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;bs_BA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;BB&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Barbados&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;BD&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Bangladesh&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;bn_BD&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;BE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Belgium&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;fr_BE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;BF&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Burkina Faso&quot;</span><span class="hl opt">),</span>   <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;BG&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Bulgaria&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;bg_BG&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;BH&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Bahrain&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;ar_BH&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;BI&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Burundi&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;BJ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Benin&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;BM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Bermuda&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;BN&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Brunei Darussalam&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;ar_EG&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;BO&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Bolivia&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;es_BO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;BR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Brazil&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;pt_BR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;BS&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Bahamas&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;BT&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Bhutan&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;en_IN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;BV&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Bouvet Island&quot;</span><span class="hl opt">),</span>  <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;BW&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Botswana&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;en_BW&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;BY&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Belarus&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;be_BY&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;BZ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Belize&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CA&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Canada&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;en_CA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;CC&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Cocos (Keeling) Islands&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CD&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Congo (Kinshasa)&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CF&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Central African Republic&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CG&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Congo (Brazzaville)&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CH&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Switzerland&quot;</span><span class="hl opt">),</span>    <span class="hl str">&apos;de_CH&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;CI&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Cote d&apos;Ivoire&quot;</span><span class="hl opt">),</span>  <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CK&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Cook Islands&quot;</span><span class="hl opt">),</span>   <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CL&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Chile&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;es_CL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;CM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Cameroon&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CN&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;China&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;zh_CN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;CO&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Colombia&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;es_CO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;CR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Costa Rica&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;es_CR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;CU&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Cuba&quot;</span><span class="hl opt">),</span>           <span class="hl str">&apos;es_DO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CV&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Cape Verde&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;pt_PT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CX&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Christmas Island&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CY&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Cyprus&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;CZ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Czech Republic&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;cs_CZ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;DE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Germany&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;de_DE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;DJ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Djibouti&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;DK&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Denmark&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;da_DK&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;DM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Dominica&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;DO&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Dominican Republic&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;es_DO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;DZ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Algeria&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;ar_DZ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;EC&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Ecuador&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;es_EC&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;EE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Estonia&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;et_EE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;EG&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Egypt&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;ar_EG&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;EH&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Western Sahara&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;ar_MA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;ER&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Eritrea&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;ti_ER&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ES&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Spain&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;es_ES&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ET&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Ethiopia&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;am_ET&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;FI&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Finland&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;fi_FI&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;FJ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Fiji&quot;</span><span class="hl opt">),</span>           <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;FK&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Falkland Islands (Malvinas)&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_GB&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;FM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Micronesia&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;FO&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Faroe Islands&quot;</span><span class="hl opt">),</span>  <span class="hl str">&apos;fo_FO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;FR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;France&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;GA&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Gabon&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GB&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;United Kingdom&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_GB&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;GD&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Grenada&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Georgia&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;ka_GE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;GF&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;French Guiana&quot;</span><span class="hl opt">),</span>  <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GH&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Ghana&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;en_GB&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GI&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Gibraltar&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;en_GB&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GL&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Greenland&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;kl_GL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;GM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Gambia&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GN&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Guinea&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GP&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Guadeloupe&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GQ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Equatorial Guinea&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Greece&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;el_GR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;GS&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;South Georgia and the South Sandwich Islands&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GT&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Guatemala&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;es_GT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;GU&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Guam&quot;</span><span class="hl opt">),</span>           <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GW&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Guinea-Bissau&quot;</span><span class="hl opt">),</span>  <span class="hl str">&apos;pt_PT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;GY&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Guyana&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;HK&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;China (Hong Kong)&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;zh_HK&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;HM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Heard and McDonald Islands&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;HN&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Honduras&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;es_HN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;HR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Croatia&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;hr_HR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;HT&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Haiti&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;HU&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Hungary&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;hu_HU&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ID&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Indonesia&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;id_ID&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;IE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Ireland&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_IE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;IL&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Israel&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;he_IL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;IN&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;India&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;hi_IN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;IO&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;British Indian Ocean Territory&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_GB&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;IQ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Iraq&quot;</span><span class="hl opt">),</span>           <span class="hl str">&apos;ar_IQ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;IR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Iran&quot;</span><span class="hl opt">),</span>           <span class="hl str">&apos;fa_IR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;IS&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Iceland&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;is_IS&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;IT&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Italy&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;it_IT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;JM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Jamaica&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;JO&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Jordan&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;ar_JO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;JP&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Japan&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;ja_JP&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;KE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Kenya&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;en_ZW&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;KG&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Kyrgyzstan&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;ky_KG&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;KH&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Cambodia&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc"># km_KH not released yet</span>
<span class="hl str">&apos;KI&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Kiribati&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;KM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Comoros&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;KN&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Saint Kitts and Nevis&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;KP&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Korea (North)&quot;</span><span class="hl opt">),</span>  <span class="hl str">&apos;ko_KR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;KR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Korea&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;ko_KR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;KW&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Kuwait&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;ar_KW&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;KY&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Cayman Islands&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;KZ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Kazakhstan&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;ru_RU&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;LA&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Laos&quot;</span><span class="hl opt">),</span>           <span class="hl str">&apos;lo_LA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;LB&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Lebanon&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;ar_LB&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;LC&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Saint Lucia&quot;</span><span class="hl opt">),</span>    <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;LI&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Liechtenstein&quot;</span><span class="hl opt">),</span>  <span class="hl str">&apos;de_CH&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;LK&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Sri Lanka&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;en_IN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;LR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Liberia&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;LS&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Lesotho&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_BW&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;LT&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Lithuania&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;lt_LT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;LU&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Luxembourg&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;de_LU&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;LV&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Latvia&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;lv_LV&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;LY&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Libya&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;ar_LY&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;MA&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Morocco&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;ar_MA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;MC&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Monaco&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MD&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Moldova&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;ro_RO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MG&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Madagascar&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MH&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Marshall Islands&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MK&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Macedonia&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;mk_MK&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;ML&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Mali&quot;</span><span class="hl opt">),</span>           <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Myanmar&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MN&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Mongolia&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;mn_MN&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;MP&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Northern Mariana Islands&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MQ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Martinique&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Mauritania&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MS&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Montserrat&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MT&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Malta&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;mt_MT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;MU&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Mauritius&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MV&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Maldives&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MW&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Malawi&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;MX&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Mexico&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;es_MX&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;MY&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Malaysia&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;ms_MY&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;MZ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Mozambique&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;pt_PT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;NA&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Namibia&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;NC&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;New Caledonia&quot;</span><span class="hl opt">),</span>  <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;NE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Niger&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;NF&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Norfolk Island&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_GB&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;NG&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Nigeria&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;NI&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Nicaragua&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;es_NI&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;NL&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Netherlands&quot;</span><span class="hl opt">),</span>    <span class="hl str">&apos;nl_NL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;NO&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Norway&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;nb_NO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;NP&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Nepal&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;ne_NP&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;NR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Nauru&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;NU&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Niue&quot;</span><span class="hl opt">),</span>           <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;NZ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;New Zealand&quot;</span><span class="hl opt">),</span>    <span class="hl str">&apos;en_NZ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;OM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Oman&quot;</span><span class="hl opt">),</span>           <span class="hl str">&apos;ar_OM&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;PA&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Panama&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;es_PA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;PE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Peru&quot;</span><span class="hl opt">),</span>           <span class="hl str">&apos;es_PE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;PF&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;French Polynesia&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;PG&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Papua New Guinea&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_NZ&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;PH&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Philippines&quot;</span><span class="hl opt">),</span>    <span class="hl str">&apos;ph_PH&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;PK&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Pakistan&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;ur_PK&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;PL&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Poland&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;pl_PL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;PM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Saint Pierre and Miquelon&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;fr_CA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;PN&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Pitcairn&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;PR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Puerto Rico&quot;</span><span class="hl opt">),</span>    <span class="hl str">&apos;es_PR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;PS&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Palestine&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;ar_JO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;PT&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Portugal&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;pt_PT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;PY&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Paraguay&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;es_PY&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;PW&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Palau&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;QA&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Qatar&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;ar_QA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;RE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Reunion&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;RO&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Romania&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;ro_RO&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;RU&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Russia&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;ru_RU&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;RW&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Rwanda&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;SA&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Saudi Arabia&quot;</span><span class="hl opt">),</span>   <span class="hl str">&apos;ar_SA&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;SB&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Solomon Islands&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;SC&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Seychelles&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;4&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;SD&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Sudan&quot;</span><span class="hl opt">),</span>          <span class="hl str">&apos;ar_SD&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;SE&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Sweden&quot;</span><span class="hl opt">),</span>         <span class="hl str">&apos;sv_SE&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;SG&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Singapore&quot;</span><span class="hl opt">),</span>      <span class="hl str">&apos;en_SG&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;2&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;SH&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Saint Helena&quot;</span><span class="hl opt">),</span>   <span class="hl str">&apos;en_GB&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;SI&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Slovenia&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;sl_SI&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;SJ&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Svalbard and Jan Mayen Islands&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;SK&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Slovakia&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;sk_SK&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span>
<span class="hl str">&apos;SL&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Sierra Leone&quot;</span><span class="hl opt">),</span>   <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;SM&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;San Marino&quot;</span><span class="hl opt">),</span>     <span class="hl str">&apos;it_IT&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;1&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;SN&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Senegal&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;fr_FR&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;SO&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Somalia&quot;</span><span class="hl opt">),</span>        <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;3&apos;</span> <span class="hl opt">],</span> <span class="hl slc"># so_SO</span>
<span class="hl str">&apos;SR&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Suriname&quot;</span><span class="hl opt">),</span>       <span class="hl str">&apos;nl_NL&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;ST&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;Sao Tome and Principe&quot;</span><span class="hl opt">),</span> <span class="hl str">&apos;en_US&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],</span> <span class="hl slc">#</span>
<span class="hl str">&apos;SV&apos;</span> <span class="hl opt">=&gt; [</span> N_<span class="hl opt">(</span><span class="hl str">&quot;El Salvador&quot;</span><span class="hl opt">),</span>    <span class="hl str">&apos;es_SV&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;5&apos;</span> <span class="hl opt">],