use Bugzilla::Constants;
use File::Basename;
-use POSIX ();
+use POSIX qw(setlocale LC_CTYPE);
use Safe;
use base qw(Exporter);
install_string
template_include_path
vers_cmp
+ get_console_locale
);
sub bin_loc {
}
}
- # If we didn't want *any* of the languages we support, just use all
- # of the languages we said we support, in the order they were specified.
- # This is only done when you ask for a certain set of languages, because
- # otherwise @supported just came off the disk in alphabetical order,
- # and it could give you de (German) when you speak English.
- # (If @supported came off the disk, we fall back on English if no language
- # is available--that happens below.)
- if (!@usedlanguages && $params->{use_languages}) {
- @usedlanguages = @supported;
- }
-
# We always include English at the bottom if it's not there, even if
# somebody removed it from use_languages.
if (!grep($_ eq 'en', @usedlanguages)) {
return map($_->{'language'}, (sort sortQvalue @qlanguages));
}
+sub get_console_locale {
+ my $locale = setlocale(LC_CTYPE);
+ # Some distros set e.g. LC_CTYPE = fr_CH.UTF-8. We clean it up.
+ if ($locale =~ /^([^\.]+)/) {
+ $locale = $1;
+ }
+ $locale =~ s/_/-/;
+ # It's pretty sure that there is no language pack of the form fr-CH
+ # installed, so we also include fr as a wanted language.
+ if ($locale =~ /^(\S+)\-/) {
+ $locale .= ",$1";
+ }
+ return $locale;
+}
+
# This is like request_cache, but it's used only by installation code
# for setup.cgi and things like that.
Returns a hash containing information about what version of Bugzilla we're
running, what perl version we're using, and what OS we're running on.
+=item C<get_console_locale>
+
+Returns the language to use based on the LC_CTYPE value returned by the OS.
+If LC_CTYPE is of the form fr-CH, then fr is appended to the list.
+
=item C<indicate_progress>
=over
use File::Basename;
use Getopt::Long qw(:config bundling);
use Pod::Usage;
-use POSIX qw(setlocale LC_CTYPE);
use Safe;
BEGIN { chdir dirname($0); }
use lib qw(. lib);
use Bugzilla::Constants;
use Bugzilla::Install::Requirements;
-use Bugzilla::Install::Util qw(install_string get_version_and_os);
+use Bugzilla::Install::Util qw(install_string get_version_and_os get_console_locale);
######################################################################
# Live Code
# When we're running at the command line, we need to pick the right
# language before ever displaying any string.
-$ENV{'HTTP_ACCEPT_LANGUAGE'} ||= setlocale(LC_CTYPE);
+$ENV{'HTTP_ACCEPT_LANGUAGE'} ||= get_console_locale();
my %switch;
GetOptions(\%switch, 'help|h|?', 'check-modules', 'no-templates|t',