Sophie

Sophie

distrib > Mandriva > 2006.0 > i586 > by-pkgid > b06bf0557bb43f66b5711ce22ebfd433 > files > 489

OpenOffice.org-1.1.5-2mdk.src.rpm

#!/usr/bin/perl

use strict;
use MDK::Common;

my $progname=$0; $progname = $& if $progname =~ m,[^/]+$,;

my %PREFIX;   # used to search for prefix numbers
my %ISOCODE;  # used to search for iso codes
my %LANGUAGE; # used to search for language names
my %RESOURCE; # used to search for resource name

#=======================================================================
# Initialisation code - map the DATA into the CODES hash
#=======================================================================
sub init {
    my $prefix;
    my $code;
    my $name;

    while (<DATA>) {
        next unless /\S/;
        chop;
        my ($prefix, $code, $resource, $name) = split(/:/, $_, 4);
        
        $PREFIX{$prefix} = $prefix;
        $PREFIX{$code} = $prefix;
        $PREFIX{$name} = $prefix;
        $PREFIX{$resource} = $prefix;

        $ISOCODE{$prefix} = $code;
        $ISOCODE{$code} = $code;
        $ISOCODE{$name} = $code;
        $ISOCODE{$resource} = $code;
    
        $LANGUAGE{$prefix} = $name;
        $LANGUAGE{$code} = $name;
        $LANGUAGE{$name} = $name;
        $LANGUAGE{$resource} = $name;

        $RESOURCE{$prefix} = $resource;
        $RESOURCE{$code} = $resource;
        $RESOURCE{$name} = $resource;
        $RESOURCE{$resource} = $resource;
    }
}


#=======================================================================
# Usage - error message
#=======================================================================
sub usage {
    my $errmsg = shift;
    my $errcode = shift;
    print STDERR "$progname: $errmsg\n\n" if $errmsg;
    print STDERR "Usage: $progname (-i|-l|-p|-r|-h) (<code>(,<code>)*|all)\n";
    print STDERR "  -h : print this help\n";
    print STDERR "  -i <code>: convert prefix to iso code (ex: 03 -> pt)\n";
    print STDERR "  -l <code>: convert iso code to language name (ex: pt -> Portuguese)\n";
    print STDERR "  -p <code>: convert iso code to prefix (ex: pt -> 03)\n";
    print STDERR "  -r <code>: convert iso code to resource name (ex: pt -> PORT)\n";
    print STDERR "  the code can either be an iso code, a prefix or even a language name\n";
    print STDERR "  The special code \"all\" asks for all possible values.\n\n";
    exit $errcode;
}

#=======================================================================
# Main
#=======================================================================
init();

my ($LanguageCode, $LanguageMap);

while ($ARGV[0] =~ /^-/) {
    $_ = shift;
    if (m/^-i/) {
        $LanguageMap = \%ISOCODE;
    }
    elsif (m/^-l/) {
        $LanguageMap = \%LANGUAGE;
    }
    elsif (m/^-p/) {
        $LanguageMap = \%PREFIX;
    }
    elsif (m/^-r/) {
        $LanguageMap = \%RESOURCE;
    }
    elsif (m/^-h/) {
        usage "", 0;
    }
    else {
        usage "unknown option $_", 1;
    }
}

usage ("no operation specified on command line",1)
    if (!$LanguageMap);

usage ("no language code specified on command line",1)
    if (!($LanguageCode = shift));

print join(" ", ($LanguageCode eq "all")
           ? uniq sort values %$LanguageMap
           : map {
               my $l = %$LanguageMap->{$_};
               usage "no mapping found for $_\n", 1 if !$l;
               $l;
           } (split /,/, $LanguageCode)
           ), "\n";

1;

__DATA__
01:en:ENUS:English US
03:pt:PORT:Portuguese
07:ru:RUSS:Russian
10:eu:BASQUE:Basque
26:ns:NSOTHO:Northern Sotho
27:af:AFRIK:Afrikaans
28:zu:ZULU:Zulu
29:tn:TSWANA:Tswana
30:el:GREEK:Greek
31:nl:DTCH:Dutch
33:fr:FREN:French
34:es:SPAN:Spanish
35:fi:FINN:Finnish
36:hu:HUNG:Hungarian
37:ca:CAT:Catalan
38:gl-ES:GAL:Galician
39:it:ITAL:Italian
40:ro:ROMANIAN:Romanian
41:bg:BUL:Bulgarian
42:cs:CZECH:Czech
43:sk:SLOVAK:Slovak
45:da:DAN:Danish
46:sv:SWED:Swedish
47:nb:NORBOK:Norwegian Bokmal
48:pl:POL:Polish
49:de:GERM:German
50:sl:SLOVENIAN:Slovenian
53:cy:WELSH:Welsh
54:gd:GAELIC:Gaelic (Scottish)
55:pt-BR:PORTBR:Portuguese Brazilian
58:lt:LITHUANIAN:Lithuanian
59:bs:BOSNIAN:Bosnian
60:ms:MALAY:Malay
66:th:THAI:Thai
75:lo:LAO:Laothian
76:km:KHMER:Khmer
77:et:ESTONIAN:Estonian
79:nn:NORNYN:Norwegian Nynorsk
80:uk:UKRA:Urakinian
81:ja:JAPN:Japanese
82:ko:KOREAN:Korean
83:mn:MONGOL:Mongolian
84:vi:VIET:Vietnamese
86:zh-CN:CHINSIM:Chinese Simplified
88:zh-TW:CHINTRAD:Chinese Traditional
90:tr:TURK:Turkish
91:hi:HINDI:Indian (Hindi)
92:ta:TAMIL:Tamil
93:kn:KANNADA:Kannada
96:ar:ARAB:Arabic
97:he:HEBREW:Hebrew