summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/any.pm7
-rw-r--r--perl-install/install_steps.pm3
-rw-r--r--perl-install/install_steps_interactive.pm2
-rw-r--r--perl-install/keyboard.pm10
-rw-r--r--perl-install/printer/main.pm3
5 files changed, 16 insertions, 9 deletions
diff --git a/perl-install/any.pm b/perl-install/any.pm
index 5eff5c9b2..4abda68be 100644
--- a/perl-install/any.pm
+++ b/perl-install/any.pm
@@ -685,8 +685,11 @@ sub selectCountry {
my $country = $locale->{country};
my @countries = lang::list_countries(exclude_non_installed => !$::isInstall);
- my @best = uniq map { if_((/^\Q$locale->{lang}/ || substr($_, 0, 2) eq substr($locale->{lang}, 0, 2))
- && /.._(..)/, $1) } @lang::locales;
+ my @best = uniq grep {
+ my $h = lang::analyse_locale_name($_);
+ if_($h->{main} eq lang::locale_to_main_locale($locale->{lang}) && $h->{country},
+ $h->{country});
+ } @lang::locales;
@best == 1 and @best = ();
my ($other, $ext_country);
diff --git a/perl-install/install_steps.pm b/perl-install/install_steps.pm
index 2c779e9b4..658dfc6f5 100644
--- a/perl-install/install_steps.pm
+++ b/perl-install/install_steps.pm
@@ -104,7 +104,8 @@ sub selectLanguage {
$o->{locale}{langs} ||= { $o->{locale}{lang} => 1 };
if (!exists $o->{locale}{country}) {
- $o->{locale}{country} = $1 if lang::l2locale($o->{locale}{lang}) =~ /^.._(..)/;
+ my $h = lang::analyse_locale_name($o->{locale}{lang});
+ $o->{locale}{country} = $h->{country} if $h->{country};
}
lang::set($o->{locale}, !$o->isa('interactive::gtk'));
diff --git a/perl-install/install_steps_interactive.pm b/perl-install/install_steps_interactive.pm
index 896d60641..a0c9c9083 100644
--- a/perl-install/install_steps_interactive.pm
+++ b/perl-install/install_steps_interactive.pm
@@ -897,7 +897,7 @@ sub summary {
clicked => sub {
any::selectCountry($o, $o->{locale}) or return;
- my $pkg_locale = substr(lang::getlocale_for_country($o->{locale}{lang}, $o->{locale}{country}), 0, 2);
+ my $pkg_locale = locale_to_main_locale(lang::getlocale_for_country($o->{locale}{lang}, $o->{locale}{country}));
my @pkgs = pkgs::packagesProviding($o->{packages}, "locales-$pkg_locale");
$o->pkg_install(map { $_->name } @pkgs) if @pkgs;
diff --git a/perl-install/keyboard.pm b/perl-install/keyboard.pm
index 7f3d90edd..a851ab9c8 100644
--- a/perl-install/keyboard.pm
+++ b/perl-install/keyboard.pm
@@ -9,6 +9,7 @@ use strict;
use common;
use detect_devices;
use run_program;
+use lang;
use log;
use c;
@@ -364,9 +365,11 @@ sub unpack_keyboards {
}
sub lang2keyboards {
my @li = sort { $b->[1] <=> $a->[1] } map { @$_ } map {
- #- first try with the 5 first chars of LANG; if it fails then try with
- #- with the 2 first chars of LANG before resorting to default.
- unpack_keyboards($lang2keyboard{substr($_, 0, 5)}) || unpack_keyboards($lang2keyboard{substr($_, 0, 2)}) || [ [ ($keyboards{$_} ? $_ : "us") => 100 ] ];
+ my $h = lang::analyse_locale_name($_);
+ #- example: pt_BR and pt
+ my @l = if_($h->{country}, $h->{main} . '_' . $h->{country}), $h->{main};
+ my $k = find { $_ } map { $lang2keyboard{$_} } @l;
+ unpack_keyboards($k) || [ [ ($keyboards{$_} ? $_ : "us") => 100 ] ];
} @_;
\@li;
}
@@ -525,7 +528,6 @@ sub read() {
}
sub check() {
- require lang;
$^W = 0;
my $not_ok = 0;
diff --git a/perl-install/printer/main.pm b/perl-install/printer/main.pm
index d9f06ddde..fdfbdf317 100644
--- a/perl-install/printer/main.pm
+++ b/perl-install/printer/main.pm
@@ -15,6 +15,7 @@ use printer::office;
use printer::detect;
use handle_configs;
use services;
+use lang;
use vars qw(@ISA @EXPORT);
@@ -1534,7 +1535,7 @@ sub ppd_entry_str {
if $mf && $mf !~ m![\\/\(\)\[\]\|\.\$\@\%\*\?]!;
# Put out the resulting description string
uc($mf) . '|' . $model . '|' . $driver .
- ($lang && " (" . lc(substr($lang, 0, 2)) . ")");
+ ($lang && " (" . lang::locale_to_main_locale($lang) . ")");
}
sub get_descr_from_ppd {