]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 425620 รข\80\93 checksetup.pl doesn't pick up the user's language correctly.
authorwurblzap%gmail.com <>
Mon, 31 Mar 2008 20:00:24 +0000 (20:00 +0000)
committerwurblzap%gmail.com <>
Mon, 31 Mar 2008 20:00:24 +0000 (20:00 +0000)
Patch by Marc Schumann <wurblzap@gmail.com>;
r=LpSolit; a=LpSolit

Bugzilla/Install/Util.pm

index 5d873aee8c23e82aff65f3fa6e18d9b39bf62a75..9aeeca4867fbf491a84e4d59e5357d1898300f28 100644 (file)
@@ -295,7 +295,9 @@ sub _sort_accept_language {
 }
 
 sub get_console_locale {
+    require Locale::Language;
     my $locale = setlocale(LC_CTYPE);
+    my $language;
     # Some distros set e.g. LC_CTYPE = fr_CH.UTF-8. We clean it up.
     if ($locale =~ /^([^\.]+)/) {
         $locale = $1;
@@ -304,8 +306,21 @@ sub get_console_locale {
     # 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";
+        $language = $1;
+        $locale .= ",$language";
     }
+    else {
+        $language = $locale;
+    }
+
+    # Some OSs or distributions may have setlocale return a string of the form
+    # German_Germany.1252 (this example taken from a Windows XP system), which
+    # is unsuitable for our needs because Bugzilla works on language codes.
+    # We try and convert them here.
+    if ($language = Locale::Language::language2code($language)) {
+        $locale .= ",$language";
+    }
+
     return $locale;
 }