|
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 |
- |
|
|