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