diff options
-rw-r--r-- | perl-install/any.pm | 134 | ||||
-rw-r--r-- | perl-install/install_steps_interactive.pm | 2 |
2 files changed, 71 insertions, 65 deletions
diff --git a/perl-install/any.pm b/perl-install/any.pm index 3860c0120..e3f018641 100644 --- a/perl-install/any.pm +++ b/perl-install/any.pm @@ -709,80 +709,87 @@ sub autologin { } -sub selectLanguage { - my ($in, $lang, $o_langs_) = @_; +sub selectLanguage_install { + my ($in, $locale) = @_; my $common = { messages => N("Please choose a language to use."), title => N("Language choice"), interactive_help_id => 'selectLanguage' }; - if ($::isInstall) { - my $langs = $o_langs_ || {}; - my $using_images = $in->isa('interactive::gtk') && !$in->{vga16}; + my $lang = $locale->{lang}; + my $langs = $locale->{langs} ||= {}; + my $using_images = $in->isa('interactive::gtk') && !$::o->{vga16}; - my %name2l = map { lang::l2name($_) => $_ } lang::list_langs(); - my $listval2val = sub { $_[0] =~ /\|(.*)/ ? $1 : $_[0] }; - - #- since gtk version will use images (function image2f) we need to sort differently - my $sort_func = $using_images ? \&lang::l2transliterated : \&lang::l2name; - my @langs = sort { $sort_func->($a) cmp $sort_func->($b) } lang::list_langs(); - if (@langs > 15) { - my $add_location = sub { - my ($l) = @_; - map { "$_|$l" } lang::l2location($l); - }; - @langs = map { $add_location->($_) } @langs; - - #- to create the default value, use the first location for that value :/ - $lang = first($add_location->($lang)); - } + my %name2l = map { lang::l2name($_) => $_ } lang::list_langs(); + my $listval2val = sub { $_[0] =~ /\|(.*)/ ? $1 : $_[0] }; + + #- since gtk version will use images (function image2f) we need to sort differently + my $sort_func = $using_images ? \&lang::l2transliterated : \&lang::l2name; + my @langs = sort { $sort_func->($a) cmp $sort_func->($b) } lang::list_langs(); + + if (@langs > 15) { + my $add_location = sub { + my ($l) = @_; + map { "$_|$l" } lang::l2location($l); + }; + @langs = map { $add_location->($_) } @langs; + + #- to create the default value, use the first location for that value :/ + $lang = first($add_location->($lang)); + } - my $last_utf8 = $in->{locale}{utf8}; - add2hash($common, { cancel => '', - advanced_messages => formatAlaTeX(N("Mandriva Linux can support multiple languages. Select + my $last_utf8 = $locale->{utf8}; + add2hash($common, { cancel => '', + advanced_messages => formatAlaTeX(N("Mandriva Linux can support multiple languages. Select the languages you would like to install. They will be available when your installation is complete and you restart your system.")), - advanced_state => 1, - callbacks => { advanced => sub { $langs->{$listval2val->($lang)} = 1 }, - changed => sub { - if ($last_utf8 == $in->{locale}{utf8}) { - $last_utf8 = $in->{locale}{utf8} = lang::utf8_should_be_needed({ lang => $listval2val->($lang), langs => $langs }); - } else { - $last_utf8 = -1; #- disable auto utf8 once touched - } - } } }); + advanced_state => 1, + callbacks => { advanced => sub { $langs->{$listval2val->($lang)} = 1 }, + changed => sub { + if ($last_utf8 == $locale->{utf8}) { + $last_utf8 = $locale->{utf8} = lang::utf8_should_be_needed({ lang => $listval2val->($lang), langs => $langs }); + } else { + $last_utf8 = -1; #- disable auto utf8 once touched + } + } } }); - $in->ask_from_($common, - [ { val => \$lang, separator => '|', - if_($using_images, image2f => sub { $name2l{$_[0]} =~ /^[a-z]/ ? ('', "langs/lang-$name2l{$_[0]}") : $_[0] }), - format => sub { $_[0] =~ /(.*\|)(.*)/ ? $1 . lang::l2name($2) : lang::l2name($_[0]) }, - list => \@langs, sort => 0 }, - if_($o_langs_ && !$::move, - { val => \$in->{locale}{utf8}, type => 'bool', text => N("Use Unicode by default"), advanced => 1 }, - { val => \$langs->{all}, type => 'bool', text => N("All languages"), advanced => 1 }, - map { - { val => \$langs->{$_->[0]}, type => 'bool', disabled => sub { $langs->{all} }, - text => $_->[1], advanced => 1, - image => "langs/lang-$_->[0]", - }; - } sort { $a->[1] cmp $b->[1] } map { [ $_, $sort_func->($_) ] } lang::list_langs()) - ]) or return; - $langs->{$listval2val->($lang)} = 1; - $langs->{$_} or delete $langs->{$_} foreach keys %$langs; #- clean hash + $in->ask_from_($common, [ + { val => \$lang, separator => '|', + if_($using_images, image2f => sub { $name2l{$_[0]} =~ /^[a-z]/ ? ('', "langs/lang-$name2l{$_[0]}") : $_[0] }), + format => sub { $_[0] =~ /(.*\|)(.*)/ ? $1 . lang::l2name($2) : lang::l2name($_[0]) }, + list => \@langs, sort => 0 }, + if_(!$::move, + { val => \$locale->{utf8}, type => 'bool', text => N("Use Unicode by default"), advanced => 1 }, + { val => \$langs->{all}, type => 'bool', text => N("All languages"), advanced => 1 }, + map { + { val => \$langs->{$_->[0]}, type => 'bool', disabled => sub { $langs->{all} }, + text => $_->[1], advanced => 1, + image => "langs/lang-$_->[0]", + }; + } sort { $a->[1] cmp $b->[1] } map { [ $_, $sort_func->($_) ] } lang::list_langs(), + ), + ]) or return; + %$langs = grep_each { $::b } %$langs; #- clean hash + $langs->{$listval2val->($lang)} = 1; - #- convert to the default locale for asked language - $listval2val->($lang); + #- convert to the default locale for asked language + $locale->{lang} = $listval2val->($lang); +} - } else { - my @langs = sort { lang::l2name($a) cmp lang::l2name($b) } lang::list_langs(exclude_non_installed => 1); - die 'one lang only' if @langs == 1; - $in->ask_from_($common, - [ { val => \$lang, type => 'list', - format => sub { lang::l2name($_[0]) }, list => \@langs }, - { val => \$in->{locale}{utf8}, type => 'bool', text => N("Use Unicode by default"), advanced => 1 }, - ]) or return; - $lang; - } +sub selectLanguage_standalone { + my ($in, $locale) = @_; + + my $common = { messages => N("Please choose a language to use."), + title => N("Language choice"), + interactive_help_id => 'selectLanguage' }; + + my @langs = sort { lang::l2name($a) cmp lang::l2name($b) } lang::list_langs(exclude_non_installed => 1); + die 'one lang only' if @langs == 1; + $in->ask_from_($common, [ + { val => \$locale->{lang}, type => 'list', + format => sub { lang::l2name($_[0]) }, list => \@langs }, + { val => \$locale->{utf8}, type => 'bool', text => N("Use Unicode by default"), advanced => 1 }, + ]); } sub selectLanguage_and_more_standalone { @@ -793,8 +800,7 @@ sub selectLanguage_and_more_standalone { # keep around previous settings so that selectLanguage can keep UTF-8 flag: local $::Wizard_no_previous = 1; my $old_lang = $locale->{lang}; - $in->{locale} = $locale; - $locale->{lang} = selectLanguage($in, $locale->{lang}); + selectLanguage_standalone($in, $locale); $locale->{IM} = lang::get_default_im($locale->{lang}) if $old_lang ne $locale->{lang}; undef $::Wizard_no_previous; selectCountry($in, $locale) or goto language; diff --git a/perl-install/install_steps_interactive.pm b/perl-install/install_steps_interactive.pm index 460e489f8..63f2df1a1 100644 --- a/perl-install/install_steps_interactive.pm +++ b/perl-install/install_steps_interactive.pm @@ -50,7 +50,7 @@ sub kill_action { sub selectLanguage { my ($o) = @_; - $o->{locale}{lang} = any::selectLanguage($o, $o->{locale}{lang}, $o->{locale}{langs} ||= {}); + any::selectLanguage_install($o, $o->{locale}); install_steps::selectLanguage($o); if ($o->isa('interactive::gtk')) { |