Class: RDoc::I18n::Text

Inherits:
Object
  • Object
show all
Defined in:
lib/rdoc/i18n/text.rb

Overview

An i18n supported text.

This object provides the following two features:

* Extracts translation messages from wrapped raw text.
* Translates wrapped raw text in specified locale.

Wrapped raw text is one of String, RDoc::Comment or Array of them.

Instance Method Summary collapse

Constructor Details

#initialize(raw) ⇒ Text

Creates a new i18n supported text for raw text.


17
18
19
# File 'lib/rdoc/i18n/text.rb', line 17

def initialize(raw)
  @raw = raw
end

Instance Method Details

#extract_messagesObject

Extracts translation target messages and yields each message.

Each yielded message is a Hash. It consists of the followings:

:type

:paragraph

:paragraph

String (The translation target message itself.)

:line_no

Integer (The line number of the :paragraph is started.)

The above content may be added in the future.


32
33
34
35
36
37
38
39
40
41
# File 'lib/rdoc/i18n/text.rb', line 32

def extract_messages
  parse do |part|
    case part[:type]
    when :empty_line
      # ignore
    when :paragraph
      yield(part)
    end
  end
end

#translate(locale) ⇒ Object

Translates raw text into locale.


44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/rdoc/i18n/text.rb', line 44

def translate(locale)
  translated_text = ''
  parse do |part|
    case part[:type]
    when :paragraph
      translated_text += locale.translate(part[:paragraph])
    when :empty_line
      translated_text += part[:line]
    else
      raise "should not reach here: unexpected type: #{type}"
    end
  end
  translated_text
end