Class: GetText::POEntry

Inherits:
Object
  • Object
show all
Includes:
POEntryForRubyParser
Defined in:
lib/gettext/po_entry.rb,
lib/gettext/tools/parser/ruby.rb

Overview

Contains data related to the expression or sentence that is to be translated.

Defined Under Namespace

Classes: Formatter, InvalidTypeError, NoMsgctxtError, NoMsgidError, NoMsgidPluralError

Constant Summary collapse

PARAMS =
{
  :normal => [:msgid, :separator, :msgstr],
  :plural => [:msgid, :msgid_plural, :separator, :msgstr],
  :msgctxt => [:msgctxt, :msgid, :msgstr],
  :msgctxt_plural => [:msgctxt, :msgid, :msgid_plural, :msgstr]
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from POEntryForRubyParser

#advance_to_next_attribute, #init_param, #set_current_attribute

Constructor Details

#initialize(type) ⇒ POEntry

Create the object. +type+ should be :normal, :plural, :msgctxt or :msgctxt_plural.



66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/gettext/po_entry.rb', line 66

def initialize(type)
  self.type = type
  @translator_comment = nil
  @extracted_comment = nil
  @references = []
  @flag = nil
  @previous = nil
  @msgctxt = nil
  @msgid = nil
  @msgid_plural = nil
  @msgstr = nil
end

Instance Attribute Details

#commentObject

Returns the value of attribute comment.



63
64
65
# File 'lib/gettext/po_entry.rb', line 63

def comment
  @comment
end

#extracted_commentObject

Returns the value of attribute extracted_comment.



60
61
62
# File 'lib/gettext/po_entry.rb', line 60

def extracted_comment
  @extracted_comment
end

#flagObject

Returns the value of attribute flag.



61
62
63
# File 'lib/gettext/po_entry.rb', line 61

def flag
  @flag
end

#msgctxtObject

Returns the value of attribute msgctxt.



57
58
59
# File 'lib/gettext/po_entry.rb', line 57

def msgctxt
  @msgctxt
end

#msgidObject

Returns the value of attribute msgid.



52
53
54
# File 'lib/gettext/po_entry.rb', line 52

def msgid
  @msgid
end

#msgid_pluralObject

Options



55
56
57
# File 'lib/gettext/po_entry.rb', line 55

def msgid_plural
  @msgid_plural
end

#msgstrObject

Returns the value of attribute msgstr.



53
54
55
# File 'lib/gettext/po_entry.rb', line 53

def msgstr
  @msgstr
end

#previousObject

Returns the value of attribute previous.



62
63
64
# File 'lib/gettext/po_entry.rb', line 62

def previous
  @previous
end

#referencesObject

["file1:line1", "file2:line2", ...]



58
59
60
# File 'lib/gettext/po_entry.rb', line 58

def references
  @references
end

#separatorObject

Returns the value of attribute separator.



56
57
58
# File 'lib/gettext/po_entry.rb', line 56

def separator
  @separator
end

#translator_commentObject

Returns the value of attribute translator_comment.



59
60
61
# File 'lib/gettext/po_entry.rb', line 59

def translator_comment
  @translator_comment
end

#typeObject

Required



51
52
53
# File 'lib/gettext/po_entry.rb', line 51

def type
  @type
end

Instance Method Details

#==(other) ⇒ Object

Checks if the self has same attributes as other.



91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/gettext/po_entry.rb', line 91

def ==(other)
  not other.nil? and
    type == other.type and
    msgid == other.msgid and
    msgstr == other.msgstr and
    msgid_plural == other.msgid_plural and
    separator == other.separator and
    msgctxt == other.msgctxt and
    translator_comment == other.translator_comment and
    extracted_comment == other.extracted_comment and
    references == other.references and
    flag == other.flag and
    previous == other.previous and
    comment == other.comment
end

#[](number) ⇒ Object

Raises:



180
181
182
183
184
# File 'lib/gettext/po_entry.rb', line 180

def [](number)
  param = @param_type[number]
  raise ParseError, 'no more string parameters expected' unless param
  send param
end

#add_comment(new_comment) ⇒ void

This method returns an undefined value.

Support for extracted comments. Explanation s. http://www.gnu.org/software/gettext/manual/gettext.html#Names



82
83
84
85
86
87
88
# File 'lib/gettext/po_entry.rb', line 82

def add_comment(new_comment)
  if (new_comment and ! new_comment.empty?)
    @extracted_comment ||= ""
    @extracted_comment << "\n" unless @extracted_comment.empty?
    @extracted_comment << new_comment
  end
end

#header?Boolean

Returns true if the entry is header entry, false otherwise. Header entry is normal type and has empty msgid.

Returns:

  • (Boolean)

    true if the entry is header entry, false otherwise. Header entry is normal type and has empty msgid.



170
171
172
# File 'lib/gettext/po_entry.rb', line 170

def header?
  @type == :normal and @msgid == ""
end

#initialize_oldPOEntry

Create the object. +type+ should be :normal, :plural, :msgctxt or :msgctxt_plural.

Returns:

  • (POEntry)

    a new instance of POEntry



104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/gettext/tools/parser/ruby.rb', line 104

def initialize(type)
  self.type = type
  @translator_comment = nil
  @extracted_comment = nil
  @references = []
  @flag = nil
  @previous = nil
  @msgctxt = nil
  @msgid = nil
  @msgid_plural = nil
  @msgstr = nil
end

#merge(other) ⇒ Object

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.



124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# File 'lib/gettext/po_entry.rb', line 124

def merge(other)
  return self unless other
  unless mergeable?(other)
    message = "Translation targets do not match: \n" +
      "  self: #{self.inspect}\n  other: '#{other.inspect}'"
    raise ParseError, message
  end
  if other.msgid_plural && !msgid_plural
    res = other
    unless res.references.include?(references[0])
      res.references += references
      res.add_comment(extracted_comment)
    end
  else
    res = self
    unless res.references.include?(other.references[0])
      res.references += other.references
      res.add_comment(other.extracted_comment)
    end
  end
  res
end

#mergeable?(other) ⇒ Boolean

Checks if the other translation target is mergeable with the current one. Relevant are msgid and translation context (msgctxt).

Returns:

  • (Boolean)


117
118
119
# File 'lib/gettext/po_entry.rb', line 117

def mergeable?(other)
  other && other.msgid == self.msgid && other.msgctxt == self.msgctxt
end

#msgctxt?Boolean

Returns true if the type is kind of msgctxt.

Returns:

  • (Boolean)


159
160
161
# File 'lib/gettext/po_entry.rb', line 159

def msgctxt?
  [:msgctxt, :msgctxt_plural].include?(@type)
end

#obsolete?Boolean

Returns true if the entry is obsolete entry, false otherwise. Obsolete entry is normal type and has :last msgid.

Returns:

  • (Boolean)

    true if the entry is obsolete entry, false otherwise. Obsolete entry is normal type and has :last msgid.



176
177
178
# File 'lib/gettext/po_entry.rb', line 176

def obsolete?
  @type == :normal and @msgid == :last
end

#plural?Boolean

Returns true if the type is kind of plural.

Returns:

  • (Boolean)


164
165
166
# File 'lib/gettext/po_entry.rb', line 164

def plural?
  [:plural, :msgctxt_plural].include?(@type)
end

#to_s(options = {}) ⇒ Object

Format the po entry in PO format.

Parameters:

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :include_reference_comment (Bool) — default: true

    Includes reference comments in formatted string if true.

  • :max_line_width (Integer) — default: 78

    Wraps long lines that is longer than the :max_line_width. Don't break long lines if :max_line_width is less than 0 such as -1.

  • :encoding (Encoding) — default: nil

    Encodes to the specific encoding.

Raises:



151
152
153
154
155
156
# File 'lib/gettext/po_entry.rb', line 151

def to_s(options={})
  raise(NoMsgidError, "msgid is nil.") unless @msgid

  formatter = Formatter.new(self, options)
  formatter.format
end