aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/gems/gettext-2.1.0/lib/gettext.rb
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gems/gettext-2.1.0/lib/gettext.rb')
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext.rb310
1 files changed, 0 insertions, 310 deletions
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext.rb b/vendor/gems/gettext-2.1.0/lib/gettext.rb
deleted file mode 100644
index 30a0e83b8..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext.rb
+++ /dev/null
@@ -1,310 +0,0 @@
-=begin
- gettext.rb - GetText module
-
- Copyright (C) 2001-2009 Masao Mutoh
- Copyright (C) 2001-2003 Masahiro Sakai
-
- Masao Mutoh <mutomasa at gmail.com>
- Masahiro Sakai <s01397ms@sfc.keio.ac.jp>
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby or LGPL.
-=end
-
-if Object.constants.include? "Gem"
- begin
- begin
- gem 'locale', '>=2.0.4'
- rescue Gem::LoadError
- end
- rescue NoMethodError
- else LoadError
- end
-end
-
-require 'locale'
-raise "Install locale as gem or uninstall old gettext" unless Locale.respond_to? :candidates
-
-require 'gettext/version'
-require 'gettext/runtime/textdomain_manager'
-
-module GetText
- # If the textdomain isn't bound when calling GetText.textdomain, this error is raised.
- class NoboundTextDomainError < RuntimeError
- def initialize(domainname)
- @domainname = domainname
- end
- def message
- "#{@domainname} is not bound."
- end
- end
-
- extend self
-
- def self.included(mod) #:nodoc:
- mod.extend self
- end
-
- # bindtextdomain(domainname, options = {})
- #
- # Bind a textdomain(%{path}/%{locale}/LC_MESSAGES/%{domainname}.mo) to
- # your program.
- # Normally, the texdomain scope becomes the class/module(and parent
- # classes/included modules).
- #
- # * domainname: the textdomain name.
- # * options: options as an Hash.
- # * :path - the path to the mo-files. When the value is nil, it will search default paths such as
- # /usr/share/locale, /usr/local/share/locale)
- # * :output_charset - The output charset. Same with GetText.set_output_charset. Usually, L10n
- # library doesn't use this option. Application may use this once.
- # * Returns: the GetText::TextDomainManager.
- #
- def bindtextdomain(domainname, *options)
- bindtextdomain_to(self, domainname, *options)
- end
-
- # Includes GetText module and bind a textdomain to a class.
- # * klass: the target ruby class.
- # * domainname: the textdomain name.
- # * options: options as an Hash. See GetText.bindtextdomain.
- def bindtextdomain_to(klass, domainname, *options)
- if options[0].kind_of? Hash
- opts = options[0]
- else
- # for backward compatibility.
- opts = {}
- opts[:path] = options[0] if options[0]
- opts[:output_charset] = options[2] if options[2]
- end
- unless (klass.kind_of? GetText or klass.include? GetText)
- klass.__send__(:include, GetText)
- end
- TextDomainManager.bind_to(klass, domainname, opts)
- end
-
- # Binds a existed textdomain to your program.
- # This is the same function with GetText.bindtextdomain but simpler(and faster) than bindtextdomain.
- # Note that you need to call GetText.bindtextdomain first. If the domainname hasn't bound yet,
- # raises GetText::NoboundTextDomainError.
- # * domainname: a textdomain name.
- # * Returns: the GetText::TextDomainManager.
- def textdomain(domainname) #:nodoc:
- textdomain_to(self, domainname)
- end
-
- # Includes GetText module and bind an exsited textdomain to a class.
- # See textdomain for more detail.
- # * klass: the target ruby class.
- # * domainname: the textdomain name.
-
- def textdomain_to(klass, domainname) #:nodoc:
- domain = TextDomainManager.textdomain_pool(domainname)
- raise NoboundTextDomainError.new(domainname) unless domain
- bindtextdomain_to(klass, domainname)
- end
-
- # call-seq:
- # gettext(msgid)
- # _(msgid)
- #
- # Translates msgid and return the message.
- # This doesn't make a copy of the message.
- #
- # You need to use String#dup if you want to modify the return value
- # with destructive functions.
- #
- # (e.g.1) _("Hello ").dup << "world"
- #
- # But e.g.1 should be rewrite to:
- #
- # (e.g.2) _("Hello %{val}") % {:val => "world"}
- #
- # Because the translator may want to change the position of "world".
- #
- # * msgid: the message id.
- # * Returns: localized text by msgid. If there are not binded mo-file, it will return msgid.
- def gettext(msgid)
- TextDomainManager.translate_singluar_message(self, msgid)
- end
-
- # call-seq:
- # sgettext(msgid, div = '|')
- # s_(msgid, div = '|')
- #
- # Translates msgid, but if there are no localized text,
- # it returns a last part of msgid separeted "div".
- #
- # * msgid: the message id.
- # * separator: separator or nil for no seperation.
- # * Returns: the localized text by msgid. If there are no localized text,
- # it returns a last part of the msgid separeted by "seperator".
- # <tt>Movie|Location -> Location</tt>
- # See: http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC151
- def sgettext(msgid, seperator = "|")
- TextDomainManager.translate_singluar_message(self, msgid, seperator)
- end
-
- # call-seq:
- # pgettext(msgctxt, msgid)
- # p_(msgctxt, msgid)
- #
- # Translates msgid with msgctxt. This methods is similer with s_().
- # e.g.) p_("File", "New") == s_("File|New")
- # p_("File", "Open") == s_("File|Open")
- #
- # * msgctxt: the message context.
- # * msgid: the message id.
- # * Returns: the localized text by msgid. If there are no localized text,
- # it returns msgid.
- # See: http://www.gnu.org/software/autoconf/manual/gettext/Contexts.html
- def pgettext(msgctxt, msgid)
- TextDomainManager.translate_singluar_message(self, "#{msgctxt}\004#{msgid}", "\004")
- end
-
- # call-seq:
- # ngettext(msgid, msgid_plural, n)
- # ngettext(msgids, n) # msgids = [msgid, msgid_plural]
- # n_(msgid, msgid_plural, n)
- # n_(msgids, n) # msgids = [msgid, msgid_plural]
- #
- # The ngettext is similar to the gettext function as it finds the message catalogs in the same way.
- # But it takes two extra arguments for plural form.
- #
- # * msgid: the singular form.
- # * msgid_plural: the plural form.
- # * n: a number used to determine the plural form.
- # * Returns: the localized text which key is msgid_plural if n is plural(follow plural-rule) or msgid.
- # "plural-rule" is defined in po-file.
- def ngettext(msgid, msgid_plural, n = nil)
- TextDomainManager.translate_plural_message(self, msgid, msgid_plural, n)
- end
-
- # call-seq:
- # nsgettext(msgid, msgid_plural, n, div = "|")
- # nsgettext(msgids, n, div = "|") # msgids = [msgid, msgid_plural]
- # ns_(msgid, msgid_plural, n, div = "|")
- # ns_(msgids, n, div = "|") # msgids = [msgid, msgid_plural]
- #
- # The nsgettext is similar to the ngettext.
- # But if there are no localized text,
- # it returns a last part of msgid separeted "div".
- #
- # * msgid: the singular form with "div". (e.g. "Special|An apple")
- # * msgid_plural: the plural form. (e.g. "%{num} Apples")
- # * n: a number used to determine the plural form.
- # * Returns: the localized text which key is msgid_plural if n is plural(follow plural-rule) or msgid.
- # "plural-rule" is defined in po-file.
- def nsgettext(msgid, msgid_plural, n="|", seperator = "|")
- TextDomainManager.translate_plural_message(self, msgid, msgid_plural, n, seperator)
- end
-
- # call-seq:
- # npgettext(msgctxt, msgid, msgid_plural, n)
- # npgettext(msgctxt, msgids, n) # msgids = [msgid, msgid_plural]
- # np_(msgctxt, msgid, msgid_plural, n)
- # np_(msgctxt, msgids, n) # msgids = [msgid, msgid_plural]
- #
- # The npgettext is similar to the nsgettext function.
- # e.g.) np_("Special", "An apple", "%{num} Apples", num) == ns_("Special|An apple", "%{num} Apples", num)
- # * msgctxt: the message context.
- # * msgid: the singular form.
- # * msgid_plural: the plural form.
- # * n: a number used to determine the plural form.
- # * Returns: the localized text which key is msgid_plural if n is plural(follow plural-rule) or msgid.
- # "plural-rule" is defined in po-file.
- def npgettext(msgctxt, msgids, arg2 = nil, arg3 = nil)
- if msgids.kind_of?(Array)
- msgid = msgids[0]
- msgid_ctxt = "#{msgctxt}\004#{msgid}"
- msgid_plural = msgids[1]
- opt1 = arg2
- opt2 = arg3
- else
- msgid = msgids
- msgid_ctxt = "#{msgctxt}\004#{msgid}"
- msgid_plural = arg2
- opt1 = arg3
- opt2 = nil
- end
-
- msgstr = TextDomainManager.translate_plural_message(self, msgid_ctxt, msgid_plural, opt1, opt2)
- if msgstr == msgid_ctxt
- msgid
- else
- msgstr
- end
- end
-
- # makes dynamic translation messages readable for the gettext parser.
- # <tt>_(fruit)</tt> cannot be understood by the gettext parser. To help the parser find all your translations,
- # you can add <tt>fruit = N_("Apple")</tt> which does not translate, but tells the parser: "Apple" needs translation.
- # * msgid: the message id.
- # * Returns: msgid.
- def N_(msgid)
- msgid
- end
-
- # This is same function as N_ but for ngettext.
- # * msgid: the message id.
- # * msgid_plural: the plural message id.
- # * Returns: msgid.
- def Nn_(msgid, msgid_plural)
- [msgid, msgid_plural]
- end
-
- # Sets charset(String) such as "euc-jp", "sjis", "CP932", "utf-8", ...
- # You shouldn't use this in your own Libraries.
- # * charset: an output_charset
- # * Returns: self
- def set_output_charset(charset)
- TextDomainManager.output_charset = charset
- self
- end
-
- # Gets the current output_charset which is set using GetText.set_output_charset.
- # * Returns: output_charset.
- def output_charset
- TextDomainManager.output_charset
- end
-
- # Set the locale. This value forces the locale whole the programs.
- # This method calls Locale.set_app_language_tags, Locale.default, Locale.current.
- # Use Locale methods if you need to handle locales more flexible.
- def set_locale(lang)
- Locale.set_app_language_tags(lang)
- Locale.default = lang
- Locale.current = lang
- end
-
- # Set the locale to the current thread.
- # Note that if #set_locale is set, this value is ignored.
- # If you need, set_locale(nil); set_current_locale(lang)
- def set_current_locale(lang)
- Locale.current = lang
- end
-
- def locale
- Locale.current[0]
- end
-
- alias :locale= :set_locale #:nodoc:
- alias :current_locale= :set_current_locale #:nodoc:
- alias :_ :gettext #:nodoc:
- alias :n_ :ngettext #:nodoc:
- alias :s_ :sgettext #:nodoc:
- alias :ns_ :nsgettext #:nodoc:
- alias :np_ :npgettext #:nodoc:
-
- alias :output_charset= :set_output_charset #:nodoc:
-
-unless defined? XX
- # This is the workaround to conflict p_ methods with the xx("double x") library.
- # http://rubyforge.org/projects/codeforpeople/
- alias :p_ :pgettext #:nodoc:
-end
-
- # for backward compatibility
- alias :set_locale_all :set_locale #:nodoc:
- alias :setlocale :set_locale #:nodoc:
-end