File Coverage

blib/lib/Locale/Framework/gettext.pm
Criterion Covered Total %
statement 43 46 93.4
branch 8 16 50.0
condition n/a
subroutine 8 8 100.0
pod 4 5 80.0
total 63 75 84.0


line stmt bran cond sub pod time code
1             package Locale::Framework::gettext;
2              
3 1     1   36097 use strict;
  1         2  
  1         41  
4 1     1   847 use Locale::gettext;
  1         17189  
  1         139  
5 1     1   1095 use POSIX;
  1         9244  
  1         6  
6              
7             our $VERSION='0.04';
8              
9             sub new {
10 1     1 1 25 my $class=shift;
11 1         2 my $local_path_prefix=shift; #or die "You need to specify a locale path prefix";;
12 1 50       4 my $catalog=shift or die "You need to specify a catalog to use";
13 1         1 my $self;
14              
15 1         3 $self->{"path"}=$local_path_prefix;
16 1         3 $self->{"catalog"}=$catalog;
17              
18 1         3 $self->{"lang"}=$ENV{"LANG"};
19 1 50       4 if (not defined $self->{"lang"}) {
    0          
20 1         2 $self->{"lang"}="en_GB";
21             }
22             elsif ($self->{"lang"} eq "") {
23 0         0 $self->{"lang"}="en_GB";
24             }
25 1         2 my $lang=$self->{"lang"};
26              
27 1         291 setlocale(LC_MESSAGES,$lang);
28 1         9 textdomain($catalog);
29 1 50       4 if ($local_path_prefix) {
30 1         6 bindtextdomain($catalog,"$local_path_prefix");
31             }
32              
33 1         4 bless $self,$class;
34 1         6 return $self;
35             }
36              
37             sub translate {
38 4     4 1 40 my ($self,$lang,$text)=@_;
39              
40 4 50       16 if ($self->{"lang"} ne $lang) {
41 4         8 $lang=get_locale($lang);
42 4         81 setlocale(LC_MESSAGES,$lang);
43 4         6 $self->{"lang"}=$lang;
44              
45 4         6 my $local_path_prefix=$self->{"path"};
46 4         6 my $catalog=$self->{"catalog"};
47              
48 4 50       9 if ($local_path_prefix) {
49 4         12 bindtextdomain($catalog,"$local_path_prefix");#/$lang");
50             }
51             }
52              
53 4         209 return gettext($text);
54             }
55              
56             sub set_translation {
57 1     1 1 9 return 0;
58             }
59              
60 1     1 1 5 sub clear_cache {
61             }
62              
63             my @languages=(
64             "ab",
65             "aa",
66             "af_ZA",
67             "sq_AL",
68             "am",
69             "ar",
70             "ar_DZ",
71             "ar_BH",
72             "ar_EG",
73             "ar_IQ",
74             "ar_JO",
75             "ar_KW",
76             "ar_LB",
77             "ar_LY",
78             "ar_MA",
79             "ar_OM",
80             "ar_QA",
81             "ar_SA",
82             "ar_SD",
83             "ar_SY",
84             "ar_TN",
85             "ar_AE",
86             "ar_YE",
87             "hy",
88             "as",
89             "ay",
90             "az",
91             "az",
92             "az",
93             "ba",
94             "eu_ES",
95             "be_BY",
96             "bn",
97             "dz",
98             "bh",
99             "bi",
100             "br",
101             "bg_BG",
102             "my",
103             "km",
104             "ca_ES",
105             "zh_CN",
106             "zh_CN",
107             "zh_TW",
108             "zh_HK",
109             "zh_MO",
110             "zh_SG",
111             "zh_TW",
112             "co",
113             "hr_HR",
114             "cs_CZ",
115             "da_DK",
116             "nl_NL",
117             "nl_BE",
118             "en_GB",
119             "en_GB",
120             "en_US",
121             "en_AU",
122             "en_BZ",
123             "en_BW",
124             "en_CA",
125             "en_CB",
126             "en_DK",
127             "en_IE",
128             "en_JM",
129             "en_NZ",
130             "en_PH",
131             "en_ZA",
132             "en_TT",
133             "en_ZW",
134             "eo",
135             "et_EE",
136             "fo_FO",
137             "fa_IR",
138             "fj",
139             "fi_FI",
140             "fr_FR",
141             "fr_BE",
142             "fr_CA",
143             "fr_LU",
144             "fr_MC",
145             "fr_CH",
146             "fy",
147             "gl_ES",
148             "ka",
149             "de_DE",
150             "de_AT",
151             "de_BE",
152             "de_LI",
153             "de_LU",
154             "de_CH",
155             "el_GR",
156             "kl_GL",
157             "gn",
158             "gu",
159             "ha",
160             "he_IL",
161             "hi_IN",
162             "hu_HU",
163             "is_IS",
164             "id_ID",
165             "ia",
166             "ie",
167             "iu",
168             "ik",
169             "ga_IE",
170             "it_IT",
171             "it_CH",
172             "ja_JP",
173             "jw",
174             "kn",
175             "ks",
176             "ks_IN",
177             "kk",
178             "kw_GB",
179             "rw",
180             "ky",
181             "rn",
182             "konkani",
183             "ko_KR",
184             "ku",
185             "lo",
186             "la",
187             "lv_LV",
188             "ln",
189             "lt_LT",
190             "mk_MK",
191             "mg",
192             "ms_MY",
193             "ml",
194             "ms_BN",
195             "ms_MY",
196             "mt_MT",
197             "manipuri",
198             "mi",
199             "mr_IN",
200             "mo",
201             "mn",
202             "na",
203             "ne",
204             "ne_IN",
205             "nb_NO",
206             "nn_NO",
207             "oc",
208             "or",
209             "om",
210             "ps",
211             "pl_PL",
212             "pt_PT",
213             "pt_BR",
214             "pa",
215             "qu",
216             "rm",
217             "ro_RO",
218             "ru_RU",
219             "ru_UA",
220             "sm",
221             "sg",
222             "sa",
223             "gd",
224             "sr_YU",
225             "sr_YU",
226             "sr_YU",
227             "sh",
228             "st",
229             "tn",
230             "sn",
231             "sd",
232             "si",
233             "ss",
234             "sk_SK",
235             "sl_SI",
236             "so",
237             "es_ES",
238             "es_AR",
239             "es_BO",
240             "es_CL",
241             "es_CO",
242             "es_CR",
243             "es_DO",
244             "es_EC",
245             "es_SV",
246             "es_GT",
247             "es_HN",
248             "es_MX",
249             "es_ES",
250             "es_NI",
251             "es_PA",
252             "es_PY",
253             "es_PE",
254             "es_PR",
255             "es_UY",
256             "es_US",
257             "es_VE",
258             "su",
259             "sw_KE",
260             "sv_SE",
261             "sv_FI",
262             "tl",
263             "tg",
264             "ta",
265             "tt",
266             "te",
267             "th_TH",
268             "bo",
269             "ti",
270             "to",
271             "ts",
272             "tr_TR",
273             "tk",
274             "tw",
275             "ug",
276             "uk_UA",
277             "ur",
278             "ur_IN",
279             "ur_PK",
280             "uz",
281             "uz",
282             "uz",
283             "vi_VN",
284             "vo",
285             "cy",
286             "wo",
287             "xh",
288             "yi",
289             "yo",
290             "za",
291             "zu"
292             );
293              
294             sub get_locale {
295 4     4 0 6 my $lang=shift;
296              
297 4 50       8 if ($lang eq "") { return ""; }
  0         0  
298              
299 4         8 my $n=length($lang);
300 4         5 for my $l (@languages) {
301 214 100       352 if (lc(substr($l,0,$n)) eq lc($lang)) {
302 4         9 return $l;
303             }
304             }
305 0           return "";
306             }
307              
308             1;
309             __END__