diff options
author | Frédéric Buclin <LpSolit@gmail.com> | 2013-01-17 13:13:36 +0100 |
---|---|---|
committer | Frédéric Buclin <LpSolit@gmail.com> | 2013-01-17 13:13:36 +0100 |
commit | 52c4af9cd8617c38053f92ea473e9d5c10281479 (patch) | |
tree | 3f260eeb8ca1cb3974c688b8a0917f67ccbb2713 | |
parent | d8643908a7d6243c361e670573af763067db408d (diff) | |
download | bugzilla-52c4af9cd8617c38053f92ea473e9d5c10281479.tar.gz bugzilla-52c4af9cd8617c38053f92ea473e9d5c10281479.tar.xz |
Bug 830467: Don't call _wanted_languages() when only one is available
r=glob a=LpSolit
-rw-r--r-- | Bugzilla.pm | 10 | ||||
-rw-r--r-- | Bugzilla/Install/Util.pm | 6 | ||||
-rw-r--r-- | Bugzilla/Template.pm | 11 |
3 files changed, 16 insertions, 11 deletions
diff --git a/Bugzilla.pm b/Bugzilla.pm index 985834876..0681b83c7 100644 --- a/Bugzilla.pm +++ b/Bugzilla.pm @@ -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. diff --git a/Bugzilla/Install/Util.pm b/Bugzilla/Install/Util.pm index 7a7611bd1..53cc9d2ec 100644 --- a/Bugzilla/Install/Util.pm +++ b/Bugzilla/Install/Util.pm @@ -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; } diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm index b93e1bfae..81d01b426 100644 --- a/Bugzilla/Template.pm +++ b/Bugzilla/Template.pm @@ -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; |