1Locale::MO::File(3) User Contributed Perl Documentation Locale::MO::File(3)
2
3
4
6 Locale::MO::File - Write/read gettext MO files
7
8 $Id: File.pm 645 2018-12-24 10:16:32Z steffenw $
9
10 $HeadURL:
11 svn+ssh://steffenw@svn.code.sf.net/p/dbd-po/code/Locale-MO-File/trunk/lib/Locale/MO/File.pm
12 $
13
15 0.09
16
18 require Locale::MO::File;
19
20 my $mo = Locale::MO::File->new(
21 filename => $filename,
22 ...
23 messages => [
24 {
25 msgid => 'original',
26 msgstr => 'translation',
27 ...
28 },
29 ...
30 ],
31 });
32 $mo->write_file;
33
34 $mo->read_file;
35 my $messages = $self->get_messages;
36
38 The module allows to write or read gettext MO files.
39
40 Data to write are expected as array reference of hash references. Read
41 data are stored in an array reference too.
42
43 Reading and writing is also available using an already open file
44 handle. A given file handle will used but not closed.
45
46 Set encoding, newline and byte order to be compatible.
47
49 method new
50 This is the constructor method. All parameters are optional.
51
52 my $mo = Locale::MO::File->new(
53 filename => $string,
54 file_handle => $file_handle, # filename expected for error messages only
55 encoding => $string, # e.g. 'UTF-8', if not set: bytes
56 newline => $string, # e.g. $CRLF or "\n", if not set: no change
57 is_big_endian => $boolean, # if not set: little endian
58 messages => $arrayref, # default []
59 );
60
61 methods to modify an existing object
62 set_filename, get_filename, clear_filename
63
64 Modification of attribute filename.
65
66 $mo->set_filename($string);
67 $string = $mo->get_filename;
68 $mo->clear_filename;
69
70 set_file_handle, get_file_handle, clear_file_handle
71
72 Modification of attribute file_handle.
73
74 set_encoding, get_encoding, clear_encoding
75
76 Modification of attribute encoding.
77
78 set_newline, get_newline, clear_newline
79
80 Modification of attribute newline.
81
82 set_is_big_endian, is_big_endian, clear_is_big_endian
83
84 Modification of attribute is_big_endian. Only needed to write files.
85
86 method set_messages, get_messages
87 Modification of attribute messages.
88
89 $mo->set_messages([
90 # header
91 {
92 msgid => q{},
93 msgstr => $header,
94 },
95 # typical
96 {
97 msgid => $original,
98 msgstr => $translation,
99 },
100 # context
101 {
102 msgctxt => $context,
103 msgid => $original,
104 msgstr => $translation,
105 },
106 # plural
107 {
108 msgid => $original_singular,
109 msgid_plural => $original_plural,
110 msgstr_plural => [ $tanslation_0, ..., $translation_n ],
111 },
112 # context + plural
113 {
114 msgctxt => $context,
115 msgid => $original_singular,
116 msgid_plural => $original_plural,
117 msgstr_plural => [ $tanslation_0, ..., $translation_n ],
118 },
119 ]);
120
121 method write_file
122 The content of the "messages" array reference is first sorted and then
123 written. So the header is always on top. The transferred "messages"
124 array reference remains unchanged.
125
126 $mo->write_file;
127
128 method read_file
129 Big endian or little endian will be detected automaticly. The read
130 data will be stored in attribute messages.
131
132 $mo = read_file;
133 my $messages = $mo->get_messages;
134
136 Inside of this distribution is a directory named example. Run the *.pl
137 files.
138
140 Full validation of messages array reference using Params::Validate.
141
143 none
144
146 charnames
147
148 namespace::autoclean
149
150 Carp
151
152 Const::Fast
153
154 Encode
155
156 English
157
158 IO::File
159
160 Moo
161
162 MooX::StrictConstructor
163
164 MooX::Types::MooseLike::Base
165
166 Params::Validate
167
169 not known
170
172 Hashing table not written of this module version. So very slim MO
173 files are the result.
174
176 <http://www.gnu.org/software/hello/manual/gettext/MO-Files.html>
177
179 Steffen Winkler
180
182 Copyright (c) 2011 - 2018, Steffen Winkler "<steffenw at cpan.org>".
183 All rights reserved.
184
185 This module is free software; you can redistribute it and/or modify it
186 under the same terms as Perl itself.
187
188
189
190perl v5.38.0 2023-07-20 Locale::MO::File(3)