class RDoc::Generator::POT::POEntry

PO 中的一个 PO 条目

属性

extracted_comment[R]

从源文件中提取的注释内容

flags[R]

PO 条目的标志

msgid[R]

msgid 内容

msgstr[R]

msgstr 内容

references[R]

提取 PO 条目的位置

translator_comment[R]

翻译人员(PO 编辑器)创建的注释内容

公共类方法

new(msgid, options = {}) 点击以切换源代码

msgid 创建一个 PO 条目。其他值可以通过 options 指定。

# File rdoc/generator/pot/po_entry.rb, line 29
def initialize msgid, options = {}
  @msgid = msgid
  @msgstr = options[:msgstr] || ""
  @translator_comment = options[:translator_comment]
  @extracted_comment = options[:extracted_comment]
  @references = options[:references] || []
  @flags = options[:flags] || []
end

公共实例方法

merge(other_entry) 点击以切换源代码

将 PO 条目与 other_entry 合并。

# File rdoc/generator/pot/po_entry.rb, line 56
def merge other_entry
  options = {
    :extracted_comment  => merge_string(@extracted_comment,
                                        other_entry.extracted_comment),
    :translator_comment => merge_string(@translator_comment,
                                        other_entry.translator_comment),
    :references         => merge_array(@references,
                                       other_entry.references),
    :flags              => merge_array(@flags,
                                       other_entry.flags),
  }
  self.class.new(@msgid, options)
end
to_s() 点击以切换源代码

以 PO 格式返回 PO 条目。

# File rdoc/generator/pot/po_entry.rb, line 41
  def to_s
    entry = ''
    entry += format_translator_comment
    entry += format_extracted_comment
    entry += format_references
    entry += format_flags
    entry += <<-ENTRY
msgid #{format_message(@msgid)}
msgstr #{format_message(@msgstr)}
    ENTRY
  end

私有实例方法

escape(string) 点击以切换源代码
# File rdoc/generator/pot/po_entry.rb, line 120
def escape string
  string.gsub(/["\\\t\n]/) do |special_character|
    case special_character
    when "\t"
      "\\t"
    when "\n"
      "\\n"
    else
      "\\#{special_character}"
    end
  end
end
format_comment(mark, comment) 点击以切换源代码
# File rdoc/generator/pot/po_entry.rb, line 72
def format_comment mark, comment
  return '' unless comment
  return '' if comment.empty?

  formatted_comment = ''
  comment.each_line do |line|
    formatted_comment += "#{mark} #{line}"
  end
  formatted_comment += "\n" unless formatted_comment.end_with?("\n")
  formatted_comment
end
format_extracted_comment() 点击以切换源代码
# File rdoc/generator/pot/po_entry.rb, line 88
def format_extracted_comment
  format_comment('#.', @extracted_comment)
end
format_flags() 点击以切换源代码
# File rdoc/generator/pot/po_entry.rb, line 102
def format_flags
  return '' if @flags.empty?

  formatted_flags = flags.join(",")
  "\#, #{formatted_flags}\n"
end
format_message(message) 点击以切换源代码
# File rdoc/generator/pot/po_entry.rb, line 109
def format_message message
  return "\"#{escape(message)}\"" unless message.include?("\n")

  formatted_message = '""'
  message.each_line do |line|
    formatted_message += "\n"
    formatted_message += "\"#{escape(line)}\""
  end
  formatted_message
end
format_references() 点击以切换源代码
# File rdoc/generator/pot/po_entry.rb, line 92
def format_references
  return '' if @references.empty?

  formatted_references = ''
  @references.sort.each do |file, line|
    formatted_references += "\#: #{file}:#{line}\n"
  end
  formatted_references
end
format_translator_comment() 点击以切换源代码
# File rdoc/generator/pot/po_entry.rb, line 84
def format_translator_comment
  format_comment('#', @translator_comment)
end
merge_array(array1, array2) 点击以切换源代码
# File rdoc/generator/pot/po_entry.rb, line 137
def merge_array array1, array2
    (array1 + array2).uniq
end
merge_string(string1, string2) 点击以切换源代码
# File rdoc/generator/pot/po_entry.rb, line 133
def merge_string string1, string2
  [string1, string2].compact.join("\n")
end