diff options
Diffstat (limited to 'perl-install')
-rw-r--r-- | perl-install/lang.pm | 18 | ||||
-rw-r--r-- | perl-install/standalone/localedrake | 12 |
2 files changed, 27 insertions, 3 deletions
diff --git a/perl-install/lang.pm b/perl-install/lang.pm index a6be76621..f24db210f 100644 --- a/perl-install/lang.pm +++ b/perl-install/lang.pm @@ -497,6 +497,24 @@ sub lang2kde_lang { $r ||= first(grep { $valid_lang->($_) } split(':', lang2LANGUAGE($lang))); $r || $default || 'C'; } + +sub kde_lang2lang { + my ($klang, $default) = @_; + first(grep { /^$klang/ } list()) || $default || 'en_US'; +} + +sub kde_lang_country2lang { + my ($klang, $country, $default) = @_; + my $uc_country = uc $country; + # country is used to precise the lang + my @choices = grep { /^$klang/ } list(); + my @sorted = + @choices == 2 && length $choices[0] !~ /[._]/ && $choices[1] =~ /UTF-8/ ? @choices : + map { $_->[0] } sort { $b->[1] <=> $a->[1] } map { [ $_ => /_$uc_country/ ] } @choices; + + $sorted[0] || $default || 'en_US'; +} + sub charset2kde_charset { my ($charset, $default) = @_; my $iocharset = ($charsets{$charset} || [])->[3]; diff --git a/perl-install/standalone/localedrake b/perl-install/standalone/localedrake index ea40a99d0..b71f4cff7 100644 --- a/perl-install/standalone/localedrake +++ b/perl-install/standalone/localedrake @@ -8,10 +8,16 @@ use interactive; use lang; use any; +my ($klang, $country, $apply); -if ($ARGV[0] =~ /--kde_country=(.*)/) { - my $lang = lang::country2lang($1); - lang::write('', $lang, $>); +foreach (@ARGV) { + $apply = /--apply/; + $klang = $1 if /--kde_lang=(.*)/; + $country = $1 if /--kde_country=(.*)/; +} +if ($klang) { + my $lang = lang::kde_lang_country2lang($klang, $country); + lang::write('', $lang, $>) if $apply; #- help KDE defaulting to the right charset print lang::charset2kde_charset(lang::lang2charset($lang)), "\n"; |