summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/any.pm5
-rw-r--r--perl-install/lang.pm13
-rw-r--r--perl-install/standalone/localedrake5
3 files changed, 14 insertions, 9 deletions
diff --git a/perl-install/any.pm b/perl-install/any.pm
index ce7e93feb..591363911 100644
--- a/perl-install/any.pm
+++ b/perl-install/any.pm
@@ -840,6 +840,9 @@ Do you want to use this feature?"),
sub selectLanguage {
my ($in, $lang, $langs_) = @_;
my $langs = $langs_ || {};
+ my @langs = lang::list(exclude_non_necessary_utf8 => $::isInstall,
+ exclude_non_installed_langs => !$::isInstall,
+ );
$in->ask_from_(
{ messages => _("Please choose a language to use."),
title => 'language choice',
@@ -849,7 +852,7 @@ sub selectLanguage {
},
},
[ { val => \$lang, separator => '|',
- format => \&lang::lang2text, list => [ lang::list($::isInstall) ] },
+ format => \&lang::lang2text, list => \@langs },
if_($langs_, (map {;
{ val => \$langs->{$_->[0]}, type => 'bool', disabled => sub { $langs->{all} },
text => $_->[1], advanced => 1,
diff --git a/perl-install/lang.pm b/perl-install/lang.pm
index bd8eb89ba..34f42f07f 100644
--- a/perl-install/lang.pm
+++ b/perl-install/lang.pm
@@ -432,13 +432,16 @@ my %lang2country = (
#-######################################################################################
sub list {
- my ($exclude_non_necessary_utf8) = @_;
- if ($exclude_non_necessary_utf8) {
+ my (%options) = @_;
+ my @l = @languages;
+ if ($options{exclude_non_necessary_utf8}) {
my %LANGs_non_utf8 = map { lang2LANG($_) => 1 } grep { !/UTF-8/ } @languages;
- grep { !/UTF-8/ || !$LANGs_non_utf8{lang2LANG($_)} } @languages;
- } else {
- @languages;
+ @l = grep { !/UTF-8/ || !$LANGs_non_utf8{lang2LANG($_)} } @l;
+ }
+ if ($options{exclude_non_installed_langs}) {
+ @l = grep { -e "/usr/share/locale/" . lang2LANG($_) . "/LC_CTYPE" } @l;
}
+ @l;
}
sub lang2text { exists $languages{$_[0]} && $languages{$_[0]}[0] }
sub lang2charset { exists $languages{$_[0]} && $languages{$_[0]}[1] }
diff --git a/perl-install/standalone/localedrake b/perl-install/standalone/localedrake
index b71f4cff7..fb17348e0 100644
--- a/perl-install/standalone/localedrake
+++ b/perl-install/standalone/localedrake
@@ -22,12 +22,11 @@ if ($klang) {
#- help KDE defaulting to the right charset
print lang::charset2kde_charset(lang::lang2charset($lang)), "\n";
} else {
- my ($lang, $langs) = lang::read('', $>);
+ my ($lang) = lang::read('', $>);
my $in = 'interactive'->vnew;
- if ($lang = any::selectLanguage($in, $lang, $langs)) {
+ if ($lang = any::selectLanguage($in, $lang)) {
lang::write('', $lang, $>);
- lang::write_langs('', $langs) if $langs;
if ($>) {
if (my $wm = any::running_window_manager()) {
$in->ask_okcancel('', _("The change is done, but to be effective you must logout"), 1)