[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#121900: xlibs: glibc locales not listed in X's locale.alias

Package: xlibs
Version: 4.2.1-12.1
Severity: normal

It looks as if many of the locales in the original list submitted for
this bug are not supported by the X libraries.  There are also some
though where it is just a case of the necessary alias not appearing in
the X locale.alias file.  As far as I can see these are:

# Previously missing aliases generated for Debian by locale_fix
da_DK.ISO-8859-15       da_DK.ISO8859-15
en_GB.ISO-8859-15       en_GB.ISO8859-15
sv_SE.ISO-8859-15       sv_SE.ISO8859-15

Do we need to wait for upstream to fix these or can we add them to the
debian version of the locale.alias file as a temporary patch?

For reference, the above list was generated by the this perl script:

#! /usr/bin/perl

my $c_suppt = '/usr/share/i18n/SUPPORTED';
my $x_suppt = '/usr/X11R6/lib/X11/locale/locale.dir';
my $x_alias = '/usr/X11R6/lib/X11/locale/locale.alias';

# Read C library supported locales.

open(C_SUPPT, '<', $c_suppt)
    or die "unable to open libc supported locales '$c_suppt' - $!";
my %c_suppt;
while (<C_SUPPT>)
    next if m/^\s+$/;
    my ($key, $charset) = split;
    $c_suppt{$key} = $charset;

# Read X Lib supported locales.

open(X_SUPPT, '<', $x_suppt)
    or die "unable to open Xlib supported locates '$x_suppt' - $!";
my %x_suppt;
while (<X_SUPPT>)
    next if m/^\s*#/;
    next if m/^\s+$/;
    my ($dir, $key) = split;
    $x_suppt{$key} = $dir;

# Read the X LIb Alias file.

open(X_ALIAS, '<', $x_alias)
    or die "unable to open Xlib locale aliases '$x_alias' - $!";
my %x_alias;
while (<X_ALIAS>)
    next if m/^\s*#/;
    next if m/^\s+$/;
    my ($alias,$locale) = split;
    $x_alias{$alias} = $locale;

# Find which C locates are not mapped to X locales.

my %aliases;
foreach my $locale (sort keys %c_suppt)
    unless (exists $x_suppt{$locale} || exists $x_alias{$locale})
	# There is no mapping for this locale name.

	my $alias = $locale;
	if ($locale =~ /^(.*)\@euro$/)
	    # The C library supported file should tell which character
	    # set this locate uses.

	    $alias = $1.'.'.$c_suppt{$locale};
	$alias =~ s/ISO[-_]/ISO/;
	if (exists $x_suppt{$alias})
	    $aliases{$locale} = $alias;
	    print STDERR "unmappable: $alias\n";
if (%aliases)
    print "# Previously missing aliases generated for Debian by locale_fix\n";
    foreach my $alias (sort keys %aliases)
	print "$alias\t$aliases{$alias}\n";

-- System Information:
Debian Release: testing/unstable
Architecture: i386
Kernel: Linux tuborg 2.6.0-test9 #1 Tue Oct 28 13:54:50 GMT 2003 i686
Locale: LANG=en_GB.ISO-8859-15, LC_CTYPE=en_GB.ISO-8859-15

Versions of packages xlibs depends on:
ii  libc6                       2.3.2.ds1-10 GNU C Library: Shared libraries an
ii  libfreetype6                2.1.5-3      FreeType 2 font engine, shared lib
ii  xfree86-common              4.2.1-12.1   X Window System (XFree86) infrastr

-- no debconf information

Reply to: