]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 830467: Don't call _wanted_languages() when only one is available
authorFrédéric Buclin <LpSolit@gmail.com>
Thu, 17 Jan 2013 12:13:36 +0000 (13:13 +0100)
committerFrédéric Buclin <LpSolit@gmail.com>
Thu, 17 Jan 2013 12:13:36 +0000 (13:13 +0100)
r=glob a=LpSolit

Bugzilla.pm
Bugzilla/Install/Util.pm
Bugzilla/Template.pm

index 9858348768d5b582251656c7ae42519cef04ca75..0681b83c75ca4e887ddff588e3cad396daa9ec2b 100644 (file)
@@ -28,7 +28,7 @@ use Bugzilla::Extension;
 use Bugzilla::DB;
 use Bugzilla::Install::Localconfig qw(read_localconfig);
 use Bugzilla::Install::Requirements qw(OPTIONAL_MODULES);
-use Bugzilla::Install::Util qw(init_console);
+use Bugzilla::Install::Util qw(init_console include_languages);
 use Bugzilla::Template;
 use Bugzilla::User;
 use Bugzilla::Error;
@@ -420,6 +420,10 @@ sub languages {
     return Bugzilla::Install::Util::supported_languages();
 }
 
+sub current_language {
+    return $_[0]->request_cache->{current_language} ||= (include_languages())[0];
+}
+
 sub error_mode {
     my ($class, $newval) = @_;
     if (defined $newval) {
@@ -912,6 +916,10 @@ The main database handle. See L<DBI>.
 Currently installed languages.
 Returns a reference to a list of RFC 1766 language tags of installed languages.
 
+=item C<current_language>
+
+The currently active language.
+
 =item C<switch_to_shadow_db>
 
 Switch from using the main database to using the shadow database.
index 7a7611bd1950e4367436201c47aae59b79b007f3..53cc9d2ecd196c2150a6c8f90799915c1dade513 100644 (file)
@@ -371,7 +371,10 @@ sub include_languages {
 
     # Basically, the way this works is that we have a list of languages
     # that we *want*, and a list of languages that Bugzilla actually
-    # supports.
+    # supports. If there is only one language installed, we take it.
+    my $supported = supported_languages();
+    return @$supported if @$supported == 1;
+
     my $wanted;
     if ($params->{language}) {
         # We can pass several languages at once as an arrayref
@@ -382,7 +385,6 @@ sub include_languages {
     else {
         $wanted = _wanted_languages();
     }
-    my $supported = supported_languages();
     my $actual    = _wanted_to_actual_languages($wanted, $supported);
     return @$actual;
 }
index b93e1bfaea1848a7492a4a0dfe990627e89a5231..81d01b4265ba0c83091968e4c28d3f065af24e5f 100644 (file)
@@ -881,14 +881,9 @@ sub create {
             # Currently logged in user, if any
             # If an sudo session is in progress, this is the user we're faking
             'user' => sub { return Bugzilla->user; },
-           
+
             # Currenly active language
-            # XXX Eventually this should probably be replaced with something
-            # like Bugzilla->language.
-            'current_language' => sub {
-                my ($language) = include_languages();
-                return $language;
-            },
+            'current_language' => sub { return Bugzilla->current_language; },
 
             # If an sudo session is in progress, this is the user who
             # started the session.
@@ -899,7 +894,7 @@ sub create {
 
             # Allow templates to access docs url with users' preferred language
             'docs_urlbase' => sub { 
-                my ($language) = include_languages();
+                my $language = Bugzilla->current_language;
                 my $docs_urlbase = Bugzilla->params->{'docs_urlbase'};
                 $docs_urlbase =~ s/\%lang\%/$language/;
                 return $docs_urlbase;