Lines 24-30
use C4::Languages;
Link Here
|
24 |
use C4::Context; |
24 |
use C4::Context; |
25 |
|
25 |
|
26 |
use Encode; |
26 |
use Encode; |
27 |
use Locale::Messages qw(:locale_h nl_putenv); |
27 |
use Locale::Messages qw(:locale_h nl_putenv setlocale LC_MESSAGES); |
28 |
use Koha::Cache::Memory::Lite; |
28 |
use Koha::Cache::Memory::Lite; |
29 |
|
29 |
|
30 |
use parent 'Exporter'; |
30 |
use parent 'Exporter'; |
Lines 50-73
sub init {
Link Here
|
50 |
my $cache = Koha::Cache::Memory::Lite->get_instance(); |
50 |
my $cache = Koha::Cache::Memory::Lite->get_instance(); |
51 |
my $cache_key = 'i18n:initialized'; |
51 |
my $cache_key = 'i18n:initialized'; |
52 |
unless ($cache->get_from_cache($cache_key)) { |
52 |
unless ($cache->get_from_cache($cache_key)) { |
53 |
my $langtag = C4::Languages::getlanguage; |
|
|
54 |
my @subtags = split /-/, $langtag; |
55 |
my ($language, $region) = @subtags; |
56 |
if ($region && length $region == 4) { |
57 |
$region = $subtags[2]; |
58 |
} |
59 |
Locale::Messages->select_package('gettext_pp'); |
53 |
Locale::Messages->select_package('gettext_pp'); |
60 |
my $locale = $language; |
54 |
my @system_locales = grep { chomp; not (/^C/ || $_ eq 'POSIX') } qx/locale -a/; |
61 |
if ($region) { |
55 |
if (@system_locales) { |
62 |
$locale .= '_' . $region; |
56 |
# LANG needs to be set to a valid locale, |
|
|
57 |
# otherwise LANGUAGE is ignored |
58 |
nl_putenv('LANG=' . $system_locales[0]); |
59 |
setlocale(LC_MESSAGES, ''); |
60 |
|
61 |
my $langtag = C4::Languages::getlanguage; |
62 |
my @subtags = split /-/, $langtag; |
63 |
my ($language, $region) = @subtags; |
64 |
if ($region && length $region == 4) { |
65 |
$region = $subtags[2]; |
66 |
} |
67 |
my $locale = $language; |
68 |
if ($region) { |
69 |
$locale .= '_' . $region; |
70 |
} |
71 |
|
72 |
nl_putenv("LANGUAGE=$locale"); |
73 |
nl_putenv('OUTPUT_CHARSET=UTF-8'); |
74 |
|
75 |
my $directory = _base_directory(); |
76 |
textdomain($textdomain); |
77 |
bindtextdomain($textdomain, $directory); |
78 |
} else { |
79 |
warn "No locale installed. Localization cannot work and is therefore disabled"; |
63 |
} |
80 |
} |
64 |
nl_putenv("LANGUAGE=$locale"); |
|
|
65 |
nl_putenv("LANG=$locale"); |
66 |
nl_putenv('OUTPUT_CHARSET=utf-8'); |
67 |
|
68 |
my $directory = _base_directory(); |
69 |
textdomain($textdomain); |
70 |
bindtextdomain($textdomain, $directory); |
71 |
|
81 |
|
72 |
$cache->set_in_cache($cache_key, 1); |
82 |
$cache->set_in_cache($cache_key, 1); |
73 |
} |
83 |
} |
74 |
- |
|
|