Re: [PATCH,RFC] Fetch c-s translations from xkeyboard-config.
Christian Perrier, le Wed 01 Apr 2009 07:45:43 +0200, a écrit :
> I don't speak Perl fluently
Mmm, an i18n expert doesn't speak a language fluently? :)
> How big is a udeb built with these translations incorportated?
176KB.
I've just tested within the debian installer. Some things I assumed
were available actually aren't, so here is a fixed patch. However the
keyboard layout doesn't get changed, I haven't investigated why yet.
Samuel
Index: debian/control
===================================================================
--- debian/control (révision 58021)
+++ debian/control (copie de travail)
@@ -3,7 +3,7 @@
Priority: optional
Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
Uploaders: Anton Zinoviev <zinoviev@debian.org>, Christian Perrier <bubulle@debian.org>
-Build-Depends-Indep: perl, libxml-parser-perl, xkb-data (>= 0.9)
+Build-Depends-Indep: perl, libxml-parser-perl, xkb-data (>= 0.9), locales-all
Build-Depends: debhelper (>= 5), po-debconf
Standards-Version: 3.7.3
Vcs-Svn: svn://svn.debian.org/d-i/trunk/packages/console-setup
Index: debian/changelog
===================================================================
--- debian/changelog (révision 58021)
+++ debian/changelog (copie de travail)
@@ -1,4 +1,4 @@
-console-setup (1.31) UNRELEASED; urgency=low
+console-setup (1.31~translated) UNRELEASED; urgency=low
[ Debconf translations ]
* French corrections (thanks to Florentin Duneau)
Index: debian/rules
===================================================================
--- debian/rules (révision 58021)
+++ debian/rules (copie de travail)
@@ -29,9 +29,7 @@
next; \
} \
/## *KBDNAMES *##/ { \
- printf "kbdnames='\''"; \
system("cd Keyboard && ./kbdnames-maker MyKeyboardNames.pl"); \
- printf "'\''"; \
next; \
} \
{ \
Index: debian/config.proto
===================================================================
--- debian/config.proto (révision 58021)
+++ debian/config.proto (copie de travail)
@@ -321,6 +321,18 @@
locale=C
fi
+locale_lang=$(echo $locale | sed 's/_.*//')
+locale_country=$(echo $locale | sed 's/.*_//;s/\..*//;s/@.*//')
+locale_modif=
+echo $locale | grep -v -q @ || locale_modif=$(echo $locale | sed 's/.*@//')
+
+eval kbdnames=\"\${kbdnames_${locale_lang}_${locale_country}__${locale_modif}}\"
+[ -n "$kbdnames" ] || eval kbdnames=\"\${kbdnames_${locale_lang}_${locale_country}}\"
+[ -n "$kbdnames" ] || eval kbdnames=\"\${kbdnames_${locale_lang}__${locale_modif}}\"
+[ -n "$kbdnames" ] || eval kbdnames=\"\${kbdnames_${locale_lang}}\"
+[ -n "$kbdnames" ] || kbdnames="$kbdnames_C"
+type iconv && kbdnames="$(echo "$kbdnames" | iconv -f UTF-8)"
+
case "$locale" in
*KOI8*|*koi8*)
default_codeset=CyrKoi
Index: Keyboard/kbdnames-maker
===================================================================
--- Keyboard/kbdnames-maker (révision 58021)
+++ Keyboard/kbdnames-maker (copie de travail)
@@ -2,6 +2,8 @@
use warnings 'all';
use strict;
+use Locale::gettext;
+use POSIX;
BEGIN {
my $file;
@@ -13,6 +15,8 @@
do "$file";
}
+print "kbdnames_C='\n";
+
for my $model (keys %KeyboardNames::models) {
my $name = $KeyboardNames::models{$model};
print "model*$name*$model\n"
@@ -26,3 +30,46 @@
print "variant*$name*$variantname*$layout - $variant\n";
}
}
+
+print "'\n";
+
+# Make sure we output UTF-8
+$ENV{'LC_ALL'} = "en_US.UTF-8";
+binmode STDOUT, ":utf8";
+
+sub fixquotes {
+ my $s = shift;
+ $s =~ s/'/'"'"'/g;
+ return $s;
+}
+
+for my $mo (</usr/share/locale/*/LC_MESSAGES/xkeyboard-config.mo>) {
+ my $lang = $mo;
+ $lang =~ s:/usr/share/locale/(.*)/LC_MESSAGES/xkeyboard-config.mo:$1:;
+ print "# Generated for $lang from $mo\n";
+ $ENV{'LANGUAGE'} = $lang;
+ setlocale(LC_ALL,"");
+
+ $lang =~ s:\@:__:;
+ $lang =~ s:__Latn:__latin:; # special fixup for sr
+
+ print "kbdnames_$lang='\n";
+
+ my $d = Locale::gettext->domain("xkeyboard-config");
+
+ for my $model (keys %KeyboardNames::models) {
+ my $name = $KeyboardNames::models{$model};
+ print "model*$name*".fixquotes($d->get($model))."\n"
+ }
+ for my $layout (keys %KeyboardNames::layouts) {
+ my $name = $KeyboardNames::layouts{$layout};
+ my $local_layout = fixquotes($d->get($layout));
+ print "layout*$name*$local_layout\n";
+ print "variant*$name**$local_layout\n";
+ for my $variant (keys %{$KeyboardNames::variants{$name}}) {
+ my $variantname = $KeyboardNames::variants{$name}{$variant};
+ print "variant*$name*$variantname*$local_layout - ".fixquotes($d->get($variant))."\n";
+ }
+ }
+ print "'\n";
+}
Reply to: