class RDoc::I18n::Locale

A message container for a locale.

This object provides the following two features:

* Loads translated messages from .po file.
* Translates a message into the locale.



The name of the locale. It uses IETF language tag format +[language[.codeset]]+.

See also BCP 47 - Tags for Identifying Languages.

Public Class Methods

[](locale_name) click to toggle source

Returns the locale object for locale_name.

# File rdoc/i18n/locale.rb, line 19
def [](locale_name)
  @@locales[locale_name] ||= new(locale_name)
[]=(locale_name, locale) click to toggle source

Sets the locale object for locale_name.

Normally, this method is not used. This method is useful for testing.

# File rdoc/i18n/locale.rb, line 29
def []=(locale_name, locale)
  @@locales[locale_name] = locale
new(name) click to toggle source

Creates a new locale object for name locale. name must follow IETF language tag format.

# File rdoc/i18n/locale.rb, line 48
def initialize(name)
  @name = name
  @messages = {}

Public Instance Methods

load(locale_directory) click to toggle source

Loads translation messages from locale_directory/+@name+/rdoc.po or locale_directory/+@name+.po. The former has high priority.

This method requires gettext gem for parsing .po file. If you don’t have gettext gem, this method doesn’t load .po file. This method warns and returns false.

Returns true if succeeded, false otherwise.

# File rdoc/i18n/locale.rb, line 63
def load(locale_directory)
  return false if @name.nil?

  po_file_candidates = [
    File.join(locale_directory, @name, 'rdoc.po'),
    File.join(locale_directory, "#{@name}.po"),
  po_file = po_file_candidates.find do |po_file_candidate|
  return false unless po_file

    require 'gettext/po_parser'
    require 'gettext/mo'
  rescue LoadError
    warn('Need gettext gem for i18n feature:')
    warn('  gem install gettext')
    return false

  po_parser =
  messages =
  po_parser.report_warning = false
  po_parser.parse_file(po_file, messages)


translate(message) click to toggle source

Translates the message into locale. If there is no translation messages for message in locale, message itself is returned.

# File rdoc/i18n/locale.rb, line 98
def translate(message)
  @messages[message] || message