class RDoc::I18n::Locale
用于区域设置的消息容器。
此对象提供以下两个功能
* Loads translated messages from .po file. * Translates a message into the locale.
属性
name[R]
区域设置的名称。它使用 IETF 语言标记格式 +[语言[.字符集]]+。
另请参阅 BCP 47 - 语言标识标签。
公共类方法
[](locale_name) 点击切换源代码
返回 locale_name
的区域设置对象。
# File rdoc/i18n/locale.rb, line 19 def [](locale_name) @@locales[locale_name] ||= new(locale_name) end
[]=(locale_name, locale) 点击切换源代码
设置 locale_name
的区域设置对象。
通常,不使用此方法。此方法对于测试很有用。
# File rdoc/i18n/locale.rb, line 29 def []=(locale_name, locale) @@locales[locale_name] = locale end
new(name) 点击切换源代码
为 name
区域设置创建新的区域设置对象。 name
必须遵循 IETF 语言标记格式。
# File rdoc/i18n/locale.rb, line 48 def initialize(name) @name = name @messages = {} end
公共实例方法
load(locale_directory) 点击切换源代码
从 locale_directory
/+@name+/rdoc.po 或 locale_directory
/+@name+.po 加载翻译消息。前者具有较高的优先级。
此方法需要 gettext gem 来解析 .po 文件。 如果您没有 gettext gem,则此方法不会加载 .po 文件。此方法会发出警告并返回 false
。
如果成功,则返回 true
,否则返回 false
。
# 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| 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
translate(message) 点击切换源代码
将 message
翻译为区域设置。 如果在区域设置中没有 message
的翻译消息,则返回 message
本身。
# File rdoc/i18n/locale.rb, line 98 def translate(message) @messages[message] || message end