module GetText
Copyright (C) 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 (C) 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 (C) 2012-2016 Kouhei Sutou <kou@clear-code.com> Copyright (C) 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
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
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
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 #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
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 #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
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
Same as #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
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
# File lib/gettext.rb, line 276 def locale Locale.current[0] end
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
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
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
Gets the current #output_charset which is set using #set_output_charset.
-
Returns: output_charset.
# File lib/gettext.rb, line 256 def output_charset TextDomainManager.output_charset end
This is the workaround to conflict p_ methods with the xx(“double x”) library. rubyforge.org/projects/codeforpeople/
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
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 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
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
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
# File lib/gettext.rb, line 249 def set_output_charset(charset) TextDomainManager.output_charset = charset self end
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