Object
Contains data related to the expression or sentence that is to be translated.
Gets the max line length.
# File lib/gettext/tools/pomessage.rb, line 23
23: def self.max_line_length
24: @@max_line_length
25: end
Sets the max line length.
# File lib/gettext/tools/pomessage.rb, line 18
18: def self.max_line_length=(len)
19: @@max_line_length = len
20: end
Create the object. type should be :normal, :plural, :msgctxt or :msgctxt_plural.
# File lib/gettext/tools/pomessage.rb, line 37
37: def initialize(type)
38: @type = type
39: @sources = []
40: @param_type = PARAMS[@type]
41: end
# File lib/gettext/tools/parser/ruby.rb, line 104
104: def initialize(type)
105: initialize_old(type)
106: init_param
107: end
For backward comatibility. This doesn’t support “comment”. ary = [msgid1, “file1:line1”, “file2:line”]
# File lib/gettext/tools/pomessage.rb, line 160
160: def self.new_from_ary(ary)
161: ary = ary.dup
162: msgid = ary.shift
163: sources = ary
164: type = :normal
165: msgctxt = nil
166: msgid_plural = nil
167:
168: if msgid.include? "\0004"
169: msgctxt, msgid = msgid.split(/\0004/)
170: type = :msgctxt
171: end
172: if msgid.include? "\0000"
173: ids = msgid.split(/\0000/)
174: msgid = ids[0]
175: msgid_plural = ids[1]
176: if type == :msgctxt
177: type = :msgctxt_plural
178: else
179: type = :plural
180: end
181: end
182: ret = self.new(type)
183: ret.msgid = msgid
184: ret.sources = sources
185: ret.msgctxt = msgctxt
186: ret.msgid_plural = msgid_plural
187: ret
188: end
Checks if the other translation target is mergeable with the current one. Relevant are msgid and translation context (msgctxt).
# File lib/gettext/tools/pomessage.rb, line 62
62: def ==(other)
63: other.msgid == self.msgid && other.msgctxt == self.msgctxt
64: end
# File lib/gettext/tools/pomessage.rb, line 190
190: def [](number)
191: param = @param_type[number]
192: raise ParseError, 'no more string parameters expected' unless param
193: send param
194: end
Support for extracted comments. Explanation s. www.gnu.org/software/gettext/manual/gettext.html#Names
# File lib/gettext/tools/pomessage.rb, line 45
45: def add_comment(new_comment)
46: if (new_comment and ! new_comment.empty?)
47: @comment ||= ""
48: @comment += new_comment
49: end
50: to_s
51: end
Returns a parameter representation suitable for po-files and other purposes.
# File lib/gettext/tools/pomessage.rb, line 55
55: def escaped(param_name)
56: orig = self.send param_name
57: orig.gsub(/"/, '\"').gsub(/\r/, '')
58: end
Merges two translation targets with the same msgid and returns the merged result. If one is declared as plural and the other not, then the one with the plural wins.
# File lib/gettext/tools/pomessage.rb, line 69
69: def merge(other)
70: return self unless other
71: raise ParseError, "Translation targets do not match: \n" " self: #{self.inspect}\n other: '#{other.inspect}'" unless self == other
72: if other.msgid_plural && !self.msgid_plural
73: res = other
74: unless (res.sources.include? self.sources[0])
75: res.sources += self.sources
76: res.add_comment(self.comment)
77: end
78: else
79: res = self
80: unless (res.sources.include? other.sources[0])
81: res.sources += other.sources
82: res.add_comment(other.comment)
83: end
84: end
85: res
86: end
Returns true if the type is kind of msgctxt. And if this is a kind of msgctxt and msgctxt property is nil, then raise an RuntimeException.
# File lib/gettext/tools/pomessage.rb, line 130
130: def msgctxt?
131: if [:msgctxt, :msgctxt_plural].include? @type
132: raise "This PoMessage is a kind of msgctxt but the msgctxt property is nil. msgid: #{msgid}" unless @msgctxt
133: true
134: end
135: end
Returns true if the type is kind of plural. And if this is a kind of plural and msgid_plural property is nil, then raise an RuntimeException.
# File lib/gettext/tools/pomessage.rb, line 140
140: def plural?
141: if [:plural, :msgctxt_plural].include? @type
142: raise "This PoMessage is a kind of plural but the msgid_plural property is nil. msgid: #{msgid}" unless @msgid_plural
143: true
144: end
145: end
Output the po message for the po-file.
# File lib/gettext/tools/pomessage.rb, line 90
90: def to_po_str
91: raise "msgid is nil." unless @msgid
92: raise "sources is nil." unless @sources
93:
94: str = ""
95: # extracted comments
96: if comment
97: comment.split("\n").each do |comment_line|
98: str << "\n#. #{comment_line.strip}"
99: end
100: end
101:
102: # references
103: curr_pos = @@max_line_length
104: sources.each do |e|
105: if curr_pos + e.size > @@max_line_length
106: str << "\n#:"
107: curr_pos = 3
108: else
109: curr_pos += (e.size + 1)
110: end
111: str << " " << e
112: end
113:
114: # msgctxt, msgid, msgstr
115: str << "\nmsgctxt \"" << msgctxt << "\"" if msgctxt?
116: str << "\nmsgid \"" << escaped(:msgid) << "\"\n"
117: if plural?
118: str << "msgid_plural \"" << escaped(:msgid_plural) << "\"\n"
119: str << "msgstr[0] \"\"\n"
120: str << "msgstr[1] \"\"\n"
121: else
122: str << "msgstr \"\"\n"
123: end
124: str
125: end
sets or extends the value of a translation target params like msgid, msgctxt etc.
param is symbol with the name of param value - new value
# File lib/gettext/tools/pomessage.rb, line 153
153: def set_value(param, value)
154: send "#{param}=", (send(param) || '') + value.gsub(/\n/, '\n')
155: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.