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.
Attributes
The name of the locale. It uses IETF language tag format +[language[.codeset]]+.
See also BCP 47 - Tags for Identifying Languages.
Public Class Methods
Returns the locale object for locale_name
.
# File lib/rdoc/i18n/locale.rb, line 18 def [](locale_name) @@locales[locale_name] ||= new(locale_name) end
Sets the locale object for locale_name
.
Normally, this method is not used. This method is useful for testing.
# File lib/rdoc/i18n/locale.rb, line 28 def []=(locale_name, locale) @@locales[locale_name] = locale end
Creates a new locale object for name
locale. name
must follow IETF language tag format.
# File lib/rdoc/i18n/locale.rb, line 47 def initialize(name) @name = name @messages = {} end
Public Instance Methods
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 lib/rdoc/i18n/locale.rb, line 62 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| File.exist?(po_file_candidate) end return false unless po_file begin require 'gettext/po_parser' require 'gettext/mo' rescue LoadError warn('Need gettext gem for i18n feature:') warn(' gem install gettext') return false end po_parser = GetText::POParser.new messages = GetText::MO.new po_parser.report_warning = false po_parser.parse_file(po_file, messages) @messages.merge!(messages) true end
Translates the message
into locale. If there is no tranlsation
messages for message
in locale, message
itself is
returned.
# File lib/rdoc/i18n/locale.rb, line 97 def translate(message) @messages[message] || message end