1Locale::Maketext::LexicUosne(r3)Contributed Perl DocumenLtoactailoen::Maketext::Lexicon(3)
2
3
4
6 Locale::Maketext::Lexicon - Use other catalog formats in Maketext
7
9 version 1.00
10
12 As part of a localization class, automatically glob for available
13 lexicons:
14
15 package Hello::I18N;
16 use base 'Locale::Maketext';
17 use Locale::Maketext::Lexicon {
18 '*' => [Gettext => '/usr/local/share/locale/*/LC_MESSAGES/hello.mo'],
19 ### Uncomment to fallback when a key is missing from lexicons
20 # _auto => 1,
21 ### Uncomment to decode lexicon entries into Unicode strings
22 # _decode => 1,
23 ### Uncomment to load and parse everything right away
24 # _preload => 1,
25 ### Uncomment to use %1 / %quant(%1) instead of [_1] / [quant, _1]
26 # _style => 'gettext',
27 };
28
29 Explicitly specify languages, during compile- or run-time:
30
31 package Hello::I18N;
32 use base 'Locale::Maketext';
33 use Locale::Maketext::Lexicon {
34 de => [Gettext => 'hello_de.po'],
35 fr => [
36 Gettext => 'hello_fr.po',
37 Gettext => 'local/hello/fr.po',
38 ],
39 };
40 # ... incrementally add new lexicons
41 Locale::Maketext::Lexicon->import({
42 de => [Gettext => 'local/hello/de.po'],
43 })
44
45 Alternatively, as part of a localization subclass:
46
47 package Hello::I18N::de;
48 use base 'Hello::I18N';
49 use Locale::Maketext::Lexicon (Gettext => \*DATA);
50 __DATA__
51 # Some sample data
52 msgid ""
53 msgstr ""
54 "Project-Id-Version: Hello 1.3.22.1\n"
55 "MIME-Version: 1.0\n"
56 "Content-Type: text/plain; charset=iso8859-1\n"
57 "Content-Transfer-Encoding: 8bit\n"
58
59 #: Hello.pm:10
60 msgid "Hello, World!"
61 msgstr "Hallo, Welt!"
62
63 #: Hello.pm:11
64 msgid "You have %quant(%1,piece) of mail."
65 msgstr "Sie haben %quant(%1,Poststueck,Poststuecken)."
66
68 This module provides lexicon-handling modules to read from other
69 localization formats, such as Gettext, Msgcat, and so on.
70
71 If you are unfamiliar with the concept of lexicon modules, please
72 consult Locale::Maketext and the "webl10n" HTML files in the "docs/"
73 directory of this module.
74
75 A command-line utility xgettext.pl is also installed with this module,
76 for extracting translatable strings from source files.
77
78 The "import" function
79 The import() function accepts two forms of arguments:
80
81 (format => source ... )
82 This form takes any number of argument pairs (usually one); source
83 may be a file name, a filehandle, or an array reference.
84
85 For each such pair, it pass the contents specified by the second
86 argument to Locale::Maketext::Lexicon::format->parse as a plain
87 list, and export its return value as the %Lexicon hash in the
88 calling package.
89
90 In the case that there are multiple such pairs, the lexicon defined
91 by latter ones overrides earlier ones.
92
93 { language => [ format, source ... ] ... }
94 This form accepts a hash reference. It will export a %Lexicon into
95 the subclasses specified by each language, using the process
96 described above. It is designed to alleviate the need to set up a
97 separate subclass for each localized language, and just use the
98 catalog files.
99
100 This module will convert the language arguments into lowercase, and
101 replace all "-" with "_", so "zh_TW" and "zh-tw" will both map to
102 the "zh_tw" subclass.
103
104 If language begins with "_", it is taken as an option that controls
105 how lexicons are parsed. See "Options" for a list of available
106 options.
107
108 The "*" is a special language; it must be used in conjunction with
109 a filename that also contains "*"; all matched files with a valid
110 language code in the place of "*" will be automatically prepared as
111 a lexicon subclass. If there is multiple "*" in the filename, the
112 last one is used as the language name.
113
114 Options
115 "_auto"
116 If set to a true value, missing lookups on lexicons are handled
117 silently, as if an "Auto" lexicon has been appended on all language
118 lexicons.
119
120 "_decode"
121 If set to a true value, source entries will be converted into
122 utf8-strings (available in Perl 5.6.1 or later). This feature
123 needs the Encode or Encode::compat module.
124
125 Currently, only the "Gettext" backend supports this option.
126
127 "_encoding"
128 This option only has effect when "_decode" is set to true. It
129 specifies an encoding to store lexicon entries, instead of
130 utf8-strings.
131
132 If "_encoding" is set to "locale", the encoding from the current
133 locale setting is used.
134
135 "_preload"
136 By default parsing is delayed until first use of the lexicon, set
137 this option to true value to parse it asap. Increment adding
138 lexicons forces parsing.
139
140 Subclassing format handlers
141 If you wish to override how sources specified in different data types
142 are handled, please use a subclass that overrides "lexicon_get_TYPE".
143
144 XXX: not documented well enough yet. Patches welcome.
145
147 This document describes version 0.91 of Locale::Maketext::Lexicon.
148
150 When you attempt to localize an entry missing in the lexicon, Maketext
151 will throw an exception by default. To inhibit this behaviour,
152 override the "_AUTO" key in your language subclasses, for example:
153
154 $Hello::I18N::en::Lexicon{_AUTO} = 1; # autocreate missing keys
155
156 If you want to implement a new "Lexicon::*" backend module, please note
157 that parse() takes an array containing the source strings from the
158 specified filehandle or filename, which are not "chomp"ed. Although if
159 the source is an array reference, its elements will probably not
160 contain any newline characters anyway.
161
162 The parse() function should return a hash reference, which will be
163 assigned to the typeglob (*Lexicon) of the language module. All it
164 amounts to is that if the returned reference points to a tied hash, the
165 %Lexicon will be aliased to the same tied hash if it was not
166 initialized previously.
167
169 Thanks to Jesse Vincent for suggesting this module to be written.
170
171 Thanks also to Sean M. Burke for coming up with Locale::Maketext in the
172 first place, and encouraging me to experiment with alternative Lexicon
173 syntaxes.
174
175 Thanks also to Yi Ma Mao for providing the MO file parsing subroutine,
176 as well as inspiring me to implement file globbing and transcoding
177 support.
178
179 See the AUTHORS file in the distribution for a list of people who have
180 sent helpful patches, ideas or comments.
181
183 xgettext.pl for extracting translatable strings from common template
184 systems and perl source files.
185
186 Locale::Maketext, Locale::Maketext::Lexicon::Auto,
187 Locale::Maketext::Lexicon::Gettext, Locale::Maketext::Lexicon::Msgcat,
188 Locale::Maketext::Lexicon::Tie
189
191 Audrey Tang <cpan@audreyt.org>
192
194 Copyright 2002-2013 by Audrey Tang <cpan@audreyt.org>.
195
196 This software is released under the MIT license cited below.
197
198 The "MIT" License
199 Permission is hereby granted, free of charge, to any person obtaining a
200 copy of this software and associated documentation files (the
201 "Software"), to deal in the Software without restriction, including
202 without limitation the rights to use, copy, modify, merge, publish,
203 distribute, sublicense, and/or sell copies of the Software, and to
204 permit persons to whom the Software is furnished to do so, subject to
205 the following conditions:
206
207 The above copyright notice and this permission notice shall be included
208 in all copies or substantial portions of the Software.
209
210 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
211 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
212 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
213 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
214 CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
215 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
216 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
217
219 • Clinton Gormley <drtech@cpan.org>
220
221 • Audrey Tang <cpan@audreyt.org>
222
224 This software is Copyright (c) 2014 by Audrey Tang.
225
226 This is free software, licensed under:
227
228 The MIT (X11) License
229
230
231
232perl v5.38.0 2023-07-20 Locale::Maketext::Lexicon(3)