]> git.proxmox.com Git - pve-manager.git/blob - lib/PVE.old/I18N.pm
imported from svn 'pve-manager/pve2'
[pve-manager.git] / lib / PVE.old / I18N.pm
1 package PVE::I18N;
2
3 use strict;
4 require Exporter;
5 use vars qw(@ISA @EXPORT);
6 use Encode;
7 use HTML::Entities;
8 use Locale::Messages qw (:libintl_h dgettext);
9
10 @ISA = qw(Exporter);
11 @EXPORT = qw( __ );
12
13 my $nlsinited;
14 my $language = 'C';
15 my $lang_is_utf8 = 0;
16
17 my %textdomains = ();
18
19
20 sub import
21 {
22 my ($self, $textdomain) = @_;
23
24 # like Locale/TextDomain.pm
25 # usage: use PVE::I18N qw(<textdomain>)
26
27 $textdomain = 'pve-manager' if !$textdomain;
28
29 # Check our caller.
30 my $package = caller;
31 return if exists $textdomains{$package};
32
33 # Remember the textdomain of that package.
34 $textdomains{$package} = $textdomain;
35
36 PVE::I18N->export_to_level (1, $package, @EXPORT);
37 }
38
39 sub get_lang {
40
41 my $section = 'default';
42 my $lang = 'C';
43
44 open (SYSCFG, "</etc/pve/pve.cfg") || return $lang;
45 while (my $line = <SYSCFG>) {
46 chomp $line;
47 if ($line =~ m/\s*language\s*:\s*(\S+)\s*$/) {
48 $lang = $1;
49 last;
50 }
51 }
52 close (SYSCFG);
53
54 return $lang;
55 }
56
57 sub set_lang {
58 my $lang = shift;
59
60 $language = $lang;
61
62 $lang_is_utf8 = scalar (grep { $language eq $_ } qw (vi pl ja hu ro ru fr tr zh_CN sr cs sl))
63 }
64
65 if (!$nlsinited) {
66
67 set_lang (get_lang);
68
69 $nlsinited = 1;
70 }
71
72 sub __ {
73 my $msgid = shift;
74 my $oldlang = $ENV{LANGUAGE};
75 my $oldlc_all = $ENV{LC_ALL};
76 $ENV{LANGUAGE} = $language;
77
78 my $package = caller;
79 my $textdomain = $textdomains{$package};
80
81 my $res = dgettext($textdomain, $msgid);
82
83 if ($lang_is_utf8) {
84 $res = decode('UTF-8', $res) ;
85 } else {
86 $res = decode('iso-8859-1', $res) ;
87 }
88
89 $ENV{LANGUAGE} = $oldlang || '';
90 $ENV{LC_ALL} = $oldlc_all || '';
91 return $res;
92 }
93
94 1;