X-Git-Url: https://git.deb.at/?a=blobdiff_plain;ds=inline;f=bin%2Fparse-debtags-voc;h=7e1453c4200b1c348b258fdaef2d007719b29fae;hb=485fe50d53e3d25a624ab058678891e6c830ee3c;hp=b6391564402db3bde8a04d621cfe8273ccff9f7c;hpb=7b10a3faf069175fef7e3028df352717e89bffc2;p=deb%2Fpackages.git diff --git a/bin/parse-debtags-voc b/bin/parse-debtags-voc index b639156..7e1453c 100755 --- a/bin/parse-debtags-voc +++ b/bin/parse-debtags-voc @@ -22,16 +22,18 @@ use lib './lib'; $| = 1; +use POSIX; use DB_File; use File::Path; use Data::Dumper; use HTML::Entities; use URI::Escape; +use Locale::gettext; use Deb::Versions; use Packages::Template; -use Packages::Config qw( $TOPDIR ); -use Packages::CGI; +use Packages::Config qw( $TOPDIR @LANGUAGES $LOCALES); +use Packages::I18N::Locale; &Packages::Config::init( './' ); my $debtagsdir = "$TOPDIR/files/debtags"; my $wwwdir = "$TOPDIR/www/about"; @@ -44,6 +46,23 @@ delete $ENV{'LANGUAGE'}; delete $ENV{'LANG'}; delete $ENV{'LC_ALL'}; delete $ENV{'LC_MESSAGES'}; +bindtextdomain ( 'debtags', $LOCALES ); +textdomain( 'debtags' ); + +sub process_desc { + my ($desc) = @_; + + if ($desc) { + $desc = encode_entities($desc); + + $desc =~ s,((ftp|http|https)://[\S~-]+?/?)((\>\;)?[)]?[']?[:.\,]?(\s|$)),$1$3,go; # syntax highlighting -> ']; + $desc =~ s/\A //o; + $desc =~ s/\n /\n/sgo; + $desc =~ s/\n.\n/\n
\n/go; + $desc =~ s/(((\n|\A) [^\n]*)+)/\n
$1\n<\/pre>/sgo; + } + return $desc; +} print "Parsing Vocabulary...\n"; tie %voc_db, "DB_File", "$debtagsdir/vocabulary.db.new", @@ -72,18 +91,23 @@ while () { warn "Duplicated key found: $voc_key\n"; next; } - my ($sdesc,$ldesc) = split /\n/, encode_entities($data{description}), 2; - - if ($ldesc) { - $ldesc =~ s,((ftp|http|https)://[\S~-]+?/?)((\>\;)?[)]?[']?[:.\,]?(\s|$)),$1$3,go; # syntax highlighting -> ']; - $ldesc =~ s/\A //o; - $ldesc =~ s/\n /\n/sgo; - $ldesc =~ s/\n.\n/\n \n/go; - $ldesc =~ s/(((\n|\A) [^\n]*)+)/\n
$1\n<\/pre>/sgo; - } - $data{html_description} = [ $sdesc, $ldesc||"" ]; + my ($sdesc,$ldesc) = split /\n/, $data{description}, 2; + $data{html_description} = [ encode_entities($sdesc), process_desc($ldesc)||"" ]; $voc_db{$voc_key} = $sdesc || ""; + + foreach my $lang (@LANGUAGES) { + my $locale = get_locale( $lang ); + setlocale ( LC_ALL, $locale ) or do { + warn "couldn't set locale ($lang/$locale)\n"; + next; + }; + + my $sdesc_trans = dgettext( 'debtags', $sdesc ); + $voc_db{"$voc_key-$lang"} = $sdesc_trans + if $sdesc_trans and $sdesc_trans ne $sdesc; + } + $voc{$voc_key} = \%data; }