module GetText

Copyright © 2012-2013 Kouhei Sutou <kou@clear-code.com>

License: Ruby’s or LGPL

This library is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see <www.gnu.org/licenses/>.

gettext/text_domain_group - GetText::TextDomainGroup class

Copyright © 2009 Masao Mutoh

You may redistribute it and/or modify it under the same license terms as Ruby or LGPL.

version - version information of gettext

Copyright © 2012-2023 Sutou Kouhei <kou@clear-code.com> Copyright © 2005-2009 Masao Mutoh

You may redistribute it and/or modify it under the same license terms as Ruby or LGPL.

Constants

VERSION

Public Instance Methods

N_(msgid) click to toggle source

makes dynamic translation messages readable for the gettext parser. _(fruit) cannot be understood by the gettext parser. To help the parser find all your translations, you can add fruit = N_("Apple") which does not translate, but tells the parser: “Apple” needs translation.

  • msgid: the message id.

  • Returns: msgid.

# File lib/gettext.rb, line 233
def N_(msgid)
  msgid
end
Nn_(msgid, msgid_plural) click to toggle source

This is same function as N_ but for ngettext.

  • msgid: the message id.

  • msgid_plural: the plural message id.

  • Returns: msgid.

# File lib/gettext.rb, line 241
def Nn_(msgid, msgid_plural)
  [msgid, msgid_plural]
end
_(msgid)
Alias for: gettext
bindtextdomain(domainname, *options) click to toggle source

bindtextdomain(domainname, options = {})

Bind a text domain(%{path}/%{locale}/LC_MESSAGES/%{domainname}.mo) to your program. Normally, the texdomain scope becomes the class/module(and parent classes/included modules).

  • domainname: the text domain 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.

# File lib/gettext.rb, line 52
def bindtextdomain(domainname, *options)
  bindtextdomain_to(self, domainname, *options)
end
bindtextdomain_to(klass, domainname, *options) click to toggle source

Includes GetText module and bind a text domain to a class.

  • klass: the target ruby class.

  • domainname: the text domain name.

  • options: options as an Hash. See GetText.bindtextdomain.

# File lib/gettext.rb, line 60
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
cgi() click to toggle source

Gets the CGI object. If it is nil, returns new CGI object. This methods is appeared when requiring “gettext/cgi”.

  • Returns: the CGI object

# File lib/gettext/cgi.rb, line 35
def cgi
  Locale.cgi
end
cgi=(cgi_) click to toggle source

Same as GetText.set_cgi. This methods is appeared when requiring “gettext/cgi”.

  • cgi_: CGI object

  • Returns: cgi_

# File lib/gettext/cgi.rb, line 28
def cgi=(cgi_)
  set_cgi(cgi_)
  cgi_
end
current_locale=(lang)
Alias for: set_current_locale
gettext(msgid) click to toggle source

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.

# File lib/gettext.rb, line 116
def gettext(msgid)
  TextDomainManager.translate_singular_message(self, msgid)
end
Also aliased as: _
locale() click to toggle source
# File lib/gettext.rb, line 276
def locale
  Locale.current[0]
end
locale=(lang)
Alias for: set_locale
n_(msgid, msgid_plural, n)
n_(msgids, n) # msgids = [msgid, msgid_plural]
Alias for: ngettext
ngettext(msgid, msgid_plural, n) click to toggle source
ngettext(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.

# File lib/gettext.rb, line 168
def ngettext(msgid, msgid_plural, n = nil)
  TextDomainManager.translate_plural_message(self, msgid, msgid_plural, n)
end
Also aliased as: n_
np_(msgctxt, msgid, msgid_plural, n)
np_(msgctxt, msgids, n) # msgids = [msgid, msgid_plural]
Alias for: npgettext
npgettext(msgctxt, msgid, msgid_plural, n) click to toggle source
npgettext(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.

# File lib/gettext.rb, line 205
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
Also aliased as: np_
ns_(msgid, msgid_plural, n, div = "|")
ns_(msgids, n, div = "|") # msgids = [msgid, msgid_plural]
Alias for: nsgettext
nsgettext(msgid, msgid_plural, n, div = "|") click to toggle source
nsgettext(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.

# File lib/gettext.rb, line 187
def nsgettext(msgid, msgid_plural, n="|", seperator = "|")
  TextDomainManager.translate_plural_message(self, msgid, msgid_plural, n, seperator)
end
Also aliased as: ns_
output_charset() click to toggle source

Gets the current output_charset which is set using GetText.set_output_charset.

  • Returns: output_charset.

# File lib/gettext.rb, line 256
def output_charset
  TextDomainManager.output_charset
end
output_charset=(charset)
Alias for: set_output_charset
p_(msgctxt, msgid)

This is the workaround to conflict p_ methods with the xx(“double x”) library. rubyforge.org/projects/codeforpeople/

Alias for: pgettext
pgettext(msgctxt, msgid) click to toggle source

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: www.gnu.org/software/autoconf/manual/gettext/Contexts.html

# File lib/gettext.rb, line 150
def pgettext(msgctxt, msgid)
  TextDomainManager.translate_singular_message(self, "#{msgctxt}\004#{msgid}", "\004")
end
Also aliased as: p_
s_(msgid, div = '|')
Alias for: sgettext
set_cgi(cgi_) click to toggle source

Sets a CGI object. This methods is appeared when requiring “gettext/cgi”.

  • cgi_: CGI object

  • Returns: self

# File lib/gettext/cgi.rb, line 21
def set_cgi(cgi_)
  Locale.set_cgi(cgi_)
end
set_current_locale(lang) click to toggle source

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)

# File lib/gettext.rb, line 272
def set_current_locale(lang)
  Locale.current = lang
end
Also aliased as: current_locale=
set_locale(lang) click to toggle source

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.

# File lib/gettext.rb, line 263
def set_locale(lang)
  Locale.set_app_language_tags(lang)
  Locale.default = lang
  Locale.current = lang
end
Also aliased as: locale=
set_output_charset(charset) click to toggle source

Sets charset(String) such as “euc-jp”, “sjis”, “CP932”, “utf-8”, … You shouldn’t use this in your own Libraries.

# File lib/gettext.rb, line 249
def set_output_charset(charset)
  TextDomainManager.output_charset = charset
  self
end
Also aliased as: output_charset=
sgettext(msgid, div = '|') click to toggle source

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”. Movie|Location -> Location

See: www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC151

# File lib/gettext.rb, line 133
def sgettext(msgid, seperator = "|")
  TextDomainManager.translate_singular_message(self, msgid, seperator)
end
Also aliased as: s_