Class: RDoc::I18n::Locale
Relationships & Source Files | |
Inherits: | Object |
Defined in: | lib/rdoc/i18n/locale.rb |
Overview
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.
Class Method Summary
-
.[](locale_name)
Returns the locale object for
locale_name
. -
.[]=(locale_name, locale)
Sets the locale object for
locale_name
. -
.new(name) ⇒ Locale
constructor
Creates a new locale object for #name locale.
Instance Attribute Summary
-
#name
readonly
The name of the locale.
Instance Method Summary
-
#load(locale_directory)
Loads translation messages from
locale_directory
/+@name+/rdoc.po orlocale_directory
/+@name+.po. -
#translate(message)
Translates the
message
into locale.
Constructor Details
.new(name) ⇒ Locale
[ GitHub ]
Class Method Details
.[](locale_name)
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
.[]=(locale_name, locale)
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
Instance Attribute Details
#name (readonly)
The name of the locale. It uses IETF language tag format [language[.codeset]].
See also BCP 47 - Tags for Identifying Languages.
# File 'lib/rdoc/i18n/locale.rb', line 41
attr_reader :name
Instance Method Details
#load(locale_directory)
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 = GetText::MO.new po_parser.report_warning = false po_parser.parse_file(po_file, ) @messages.merge!( ) true end
#translate(message)
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( ) @messages[ ] || end