Lines 23-29
use strict;
Link Here
|
23 |
#use warnings; FIXME - Bug 2505 |
23 |
#use warnings; FIXME - Bug 2505 |
24 |
use Carp; |
24 |
use Carp; |
25 |
use C4::Context; |
25 |
use C4::Context; |
26 |
use List::MoreUtils qw/any/; |
26 |
use List::MoreUtils qw/any uniq/; |
27 |
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $DEBUG); |
27 |
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $DEBUG); |
28 |
|
28 |
|
29 |
eval { |
29 |
eval { |
Lines 87-94
Returns a reference to an array of hashes:
Link Here
|
87 |
sub getFrameworkLanguages { |
87 |
sub getFrameworkLanguages { |
88 |
# get a hash with all language codes, names, and locale names |
88 |
# get a hash with all language codes, names, and locale names |
89 |
my $all_languages = getAllLanguages(); |
89 |
my $all_languages = getAllLanguages(); |
90 |
my @languages; |
90 |
|
91 |
|
|
|
92 |
# find the available directory names |
91 |
# find the available directory names |
93 |
my $dir=C4::Context->config('intranetdir')."/installer/data/"; |
92 |
my $dir=C4::Context->config('intranetdir')."/installer/data/"; |
94 |
opendir (MYDIR,$dir); |
93 |
opendir (MYDIR,$dir); |
Lines 121-172
Returns a reference to an array of hashes:
Link Here
|
121 |
sub getTranslatedLanguages { |
120 |
sub getTranslatedLanguages { |
122 |
my ($interface, $theme, $current_language, $which) = @_; |
121 |
my ($interface, $theme, $current_language, $which) = @_; |
123 |
my $htdocs; |
122 |
my $htdocs; |
124 |
my $all_languages = getAllLanguages(); |
|
|
125 |
my @languages; |
123 |
my @languages; |
126 |
my @enabled_languages; |
124 |
my @enabled_languages; |
127 |
|
125 |
|
128 |
if ($interface && $interface eq 'opac' ) { |
126 |
my ($preference,$config); |
129 |
my $languages= C4::Context->preference('opaclanguage') ||'en'; |
127 |
if ($interface && $interface eq 'intranet' ) { |
130 |
@enabled_languages = split ",", $languages; |
128 |
$preference="language"; |
131 |
$htdocs = C4::Context->config('opachtdocs'); |
129 |
$config='intrahtdocs'; |
132 |
if ( $theme and -d "$htdocs/$theme" ) { |
|
|
133 |
(@languages) = _get_language_dirs($htdocs,$theme); |
134 |
} |
135 |
else { |
136 |
for my $theme ( _get_themes('opac') ) { |
137 |
push @languages, _get_language_dirs($htdocs,$theme); |
138 |
} |
139 |
} |
140 |
} |
130 |
} |
141 |
elsif ($interface && $interface eq 'intranet' ) { |
131 |
else { |
142 |
my $languages= C4::Context->preference('language') ||'en'; |
132 |
$preference="opaclanguages"; |
143 |
@enabled_languages = split ",", $languages; |
133 |
$config='opachtdocs'; |
144 |
$htdocs = C4::Context->config('intrahtdocs'); |
134 |
$interface ||='opac'; |
145 |
if ( $theme and -d "$htdocs/$theme" ) { |
135 |
|
146 |
@languages = _get_language_dirs($htdocs,$theme); |
136 |
} |
147 |
} |
137 |
|
148 |
else { |
138 |
my $languages= C4::Context->preference($preference) ||'en'; |
149 |
foreach my $theme ( _get_themes('intranet') ) { |
139 |
@enabled_languages = split ",", $languages; |
150 |
push @languages, _get_language_dirs($htdocs,$theme); |
140 |
$htdocs = C4::Context->config($config); |
151 |
} |
141 |
if ( $theme and -d "$htdocs/$theme" ) { |
152 |
} |
142 |
(@languages) = _get_language_dirs($htdocs,$theme); |
153 |
} |
143 |
} |
154 |
else { |
144 |
else { |
155 |
my $languages= C4::Context->preference('opaclanguage') ||'en'; |
145 |
for my $theme ( _get_themes($interface) ) { |
156 |
@enabled_languages = split ",", $languages; |
|
|
157 |
my $htdocs = C4::Context->config('intrahtdocs'); |
158 |
foreach my $theme ( _get_themes('intranet') ) { |
159 |
push @languages, _get_language_dirs($htdocs,$theme); |
146 |
push @languages, _get_language_dirs($htdocs,$theme); |
160 |
} |
147 |
} |
161 |
$htdocs = C4::Context->config('opachtdocs'); |
148 |
@languages=uniq @languages; |
162 |
foreach my $theme ( _get_themes('opac') ) { |
|
|
163 |
push @languages, _get_language_dirs($htdocs,$theme); |
164 |
} |
165 |
my %seen; |
166 |
$seen{$_}++ for @languages; |
167 |
@languages = keys %seen; |
168 |
} |
149 |
} |
169 |
return _build_languages_arrayref($all_languages,\@languages,$current_language,\@enabled_languages); |
150 |
@enabled_languages=grep{my $enabled_language=$_;any{$_ eq $enabled_language}@languages}@enabled_languages; |
|
|
151 |
return _build_languages_arrayref(\@enabled_languages,$current_language); |
170 |
} |
152 |
} |
171 |
|
153 |
|
172 |
=head2 getAllLanguages |
154 |
=head2 getAllLanguages |
Lines 283-292
FIXME: this could be rewritten and simplified using map
Link Here
|
283 |
=cut |
265 |
=cut |
284 |
|
266 |
|
285 |
sub _build_languages_arrayref { |
267 |
sub _build_languages_arrayref { |
286 |
my ($all_languages,$translated_languages,$current_language,$enabled_languages) = @_; |
268 |
my ($translated_languages,$current_language) = @_; |
287 |
my @translated_languages = @$translated_languages; |
269 |
my @translated_languages = @$translated_languages; |
288 |
my @languages_loop; # the final reference to an array of hashrefs |
270 |
my @languages_loop; # the final reference to an array of hashrefs |
289 |
my @enabled_languages = @$enabled_languages; |
|
|
290 |
# how many languages are enabled, if one, take note, some contexts won't need to display it |
271 |
# how many languages are enabled, if one, take note, some contexts won't need to display it |
291 |
my %seen_languages; # the language tags we've seen |
272 |
my %seen_languages; # the language tags we've seen |
292 |
my %found_languages; |
273 |
my %found_languages; |
Lines 298-312
sub _build_languages_arrayref {
Link Here
|
298 |
# separate the language string into its subtag types |
279 |
# separate the language string into its subtag types |
299 |
my $language_subtags_hashref = regex_lang_subtags($translated_language); |
280 |
my $language_subtags_hashref = regex_lang_subtags($translated_language); |
300 |
|
281 |
|
301 |
# is this language string 'enabled'? |
|
|
302 |
for my $enabled_language (@enabled_languages) { |
303 |
#warn "Checking out if $translated_language eq $enabled_language"; |
304 |
$language_subtags_hashref->{'enabled'} = 1 if $translated_language eq $enabled_language; |
305 |
} |
306 |
|
307 |
# group this language, key by langtag |
282 |
# group this language, key by langtag |
308 |
$language_subtags_hashref->{'sublanguage_current'} = 1 if $translated_language eq $current_language; |
283 |
$language_subtags_hashref->{'sublanguage_current'} = 1 if $translated_language eq $current_language; |
309 |
$language_subtags_hashref->{'rfc4646_subtag'} = $translated_language; |
284 |
$language_subtags_hashref->{'rfc4646_subtag'} = $translated_language; |
|
|
285 |
$language_subtags_hashref->{'enabled'} = 1; |
310 |
$language_subtags_hashref->{'native_description'} = language_get_description($language_subtags_hashref->{language},$language_subtags_hashref->{language},'language'); |
286 |
$language_subtags_hashref->{'native_description'} = language_get_description($language_subtags_hashref->{language},$language_subtags_hashref->{language},'language'); |
311 |
$language_subtags_hashref->{'script_description'} = language_get_description($language_subtags_hashref->{script},$language_subtags_hashref->{'language'},'script'); |
287 |
$language_subtags_hashref->{'script_description'} = language_get_description($language_subtags_hashref->{script},$language_subtags_hashref->{'language'},'script'); |
312 |
$language_subtags_hashref->{'region_description'} = language_get_description($language_subtags_hashref->{region},$language_subtags_hashref->{'language'},'region'); |
288 |
$language_subtags_hashref->{'region_description'} = language_get_description($language_subtags_hashref->{region},$language_subtags_hashref->{'language'},'region'); |
Lines 318-328
sub _build_languages_arrayref {
Link Here
|
318 |
while( my ($key, $value) = each %$language_groups) { |
294 |
while( my ($key, $value) = each %$language_groups) { |
319 |
|
295 |
|
320 |
# is this language group enabled? are any of the languages within it enabled? |
296 |
# is this language group enabled? are any of the languages within it enabled? |
321 |
my $enabled; |
|
|
322 |
for my $enabled_language (@enabled_languages) { |
323 |
my $regex_enabled_language = regex_lang_subtags($enabled_language); |
324 |
$enabled = 1 if $key eq $regex_enabled_language->{language}; |
325 |
} |
326 |
push @languages_loop, { |
297 |
push @languages_loop, { |
327 |
# this is only use if there is one |
298 |
# this is only use if there is one |
328 |
rfc4646_subtag => @$value[0]->{rfc4646_subtag}, |
299 |
rfc4646_subtag => @$value[0]->{rfc4646_subtag}, |
Lines 331-337
sub _build_languages_arrayref {
Link Here
|
331 |
sublanguages_loop => $value, |
302 |
sublanguages_loop => $value, |
332 |
plural => $track_language_groups->{$key} >1 ? 1 : 0, |
303 |
plural => $track_language_groups->{$key} >1 ? 1 : 0, |
333 |
current => $current_language_regex->{language} eq $key ? 1 : 0, |
304 |
current => $current_language_regex->{language} eq $key ? 1 : 0, |
334 |
group_enabled => $enabled, |
305 |
group_enabled=>1 |
335 |
}; |
306 |
}; |
336 |
} |
307 |
} |
337 |
return \@languages_loop; |
308 |
return \@languages_loop; |
338 |
- |
|
|