aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlpsolit%gmail.com <>2008-03-28 19:15:42 +0000
committerlpsolit%gmail.com <>2008-03-28 19:15:42 +0000
commit1d505b299eca198af30c201f65a2cccd5dc6722e (patch)
treeea1a418b8e4a089b951dad129200e9246d91aa30 /Bugzilla
parentBug 423439: show_bug.cgi crashes when wrapping comments which contain Unicode... (diff)
downloadbugzilla-1d505b299eca198af30c201f65a2cccd5dc6722e.tar.gz
bugzilla-1d505b299eca198af30c201f65a2cccd5dc6722e.tar.bz2
bugzilla-1d505b299eca198af30c201f65a2cccd5dc6722e.zip
Bug 425288: checksetup.pl displays messages using the first language available, alphabetically, rather than falling back to english if the desired language is not found - Patch by Frédéric Buclin <LpSolit@gmail.com> r=wurblzap a=mkanat
Diffstat (limited to 'Bugzilla')
-rw-r--r--Bugzilla/Install/Util.pm34
1 files changed, 22 insertions, 12 deletions
diff --git a/Bugzilla/Install/Util.pm b/Bugzilla/Install/Util.pm
index 67aeb4873..5d873aee8 100644
--- a/Bugzilla/Install/Util.pm
+++ b/Bugzilla/Install/Util.pm
@@ -29,7 +29,7 @@ use strict;
use Bugzilla::Constants;
use File::Basename;
-use POSIX ();
+use POSIX qw(setlocale LC_CTYPE);
use Safe;
use base qw(Exporter);
@@ -40,6 +40,7 @@ our @EXPORT_OK = qw(
install_string
template_include_path
vers_cmp
+ get_console_locale
);
sub bin_loc {
@@ -165,17 +166,6 @@ sub template_include_path {
}
}
- # 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)) {
@@ -304,6 +294,21 @@ sub _sort_accept_language {
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.
@@ -366,6 +371,11 @@ binary, if the binary is in the C<PATH>.
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