summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrédéric Buclin <LpSolit@gmail.com>2013-01-17 13:13:36 +0100
committerFrédéric Buclin <LpSolit@gmail.com>2013-01-17 13:13:36 +0100
commit52c4af9cd8617c38053f92ea473e9d5c10281479 (patch)
tree3f260eeb8ca1cb3974c688b8a0917f67ccbb2713
parentd8643908a7d6243c361e670573af763067db408d (diff)
downloadbugzilla-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.pm10
-rw-r--r--Bugzilla/Install/Util.pm6
-rw-r--r--Bugzilla/Template.pm11
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;