= Ruby-GetText-Package

Ruby-GetText-Package is a Localization(L10n) library and tool  
which is modeled after the GNU gettext package.

This library translates original messages to localized  
messages using client-side locale information(environment  
variable or CGI variable).

The tools for developers support creating, useing, and modifying  
localized message files(message catalogs).

((*Rails*))
Rails support has been removed.  
Rails / ActiveRecord specific code now lives in gettext_rails and gettext_activerecord.

== Website
* homepage[http://www.yotabanana.com/hiki/ruby-gettext.html]
* on rubyforge[http://gettext/rubyforge.org/]
* on github[http://github.com/gettext/]

== Features
* Simple APIs(similar to GNU gettext)

* rgettext creates po-files from 
  * ruby scripts 
  * glade-2 XML file(.glade)
  * ERB file(.rhtml, .erb)
  * Anything (with your own parsers)
  * The po-files are compatible to GNU gettext.

* rmsgfmt creates a mo-file from a po-file.
  The mo-file is compatible to GNU gettext(msgfmt).

* textdomain's scope is adapt to ruby class/module mechanism.
  * A class/module can have plural textdomains.
  * a message is looked up in its class/module and ancestors.

* CGI support (gettext/cgi)
  * Locale is retrieved from client informations
    (HTTP_ACCEPT_LANGUAGE, HTTP_ACCEPT_CHARSET, QUERY_STRING(lang), Cookies(lang)).

* String%() is extended to use named argument such as <tt>%{foo}" %{:foo => 1}</tt>.
  Notes that Ruby-1.9.x supports this format by itself.

== Requirements
* {Ruby 1.8.3 or later}[http://www.ruby-lang.org]
* {Rubygems}[http://www.rubygems.org/]
* {locale gem}[http://rubyforge.org/projects/locale/]
  * $ gem install locale
* (for development only)
  * {GNU gettext 0.10.35 or later}[http://www.gnu.org/software/gettext/gettext.html]
  * {Racc-1.4.3 or later}[http://www.ruby-lang.org/raa/list.rhtml?name=racc]
    * (for compiling src/rmsgfmt.ry only)

== Install
* Uninstall old gettext if exists.
    (sudo/su on POSIX system)
    gem uninstall gettext

* gem
    #from github (edge/unstable)
    (sudo/su on POSIX system)
    gem install locale
    gem install mutoh-gettext -s http://gems.github.com/

    #from rubyforge (stable)
    (sudo/su on POSIX system)
    gem install locale
    gem install gettext

* download tar-ball
    # De-Compress archive and enter its top directory.
    (sudo/su on POSIX system)
    ruby setup.rb

You can also install files in your favorite directory by  
supplying setup.rb some options. Try <tt>ruby setup.rb --help</tt>.

== Usage
===Translation
- _: Basic translation method
  Translates the message.
    _("Hello")

The gettext methods comes in 3 combinable flavors
- n: Pluralized
  Returns singular or plural form, depending on how many you have.
    n_("Apple", "%{num} Apples", 3)
    n_(["Apple", "%{num} Apples"], 3)

- p: context aware
  A context is a prefix to your translation, usefull when one word has different meanings, depending on its context.
    p_("Printer","Open") <=> p_("File","Open")
    is the same as s_("Printer|Open")  <=> s_("File|Open")

- s: without context
  If a translation could not be found, return the msgid without context.
    s_("Printer|Open") => "Öffnen" #translation found
    s_("Printer|Open") => "Open"   #translation not found

- combinations
    np_("Fruit", "Apple", "%{num} Apples", 3)
    ns_("Fruit|Apple","%{num} Apples", 3)

    np_(["Fruit","Apple","%{num} Apples"], 3)
    ns_(["Fruit|Apple","%{num} Apples"], 3)

- N_, Nn_: 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.

    fruit = N_("Apple")   # same as fruit = "Apple"
    _(fruit)              # does a normal translation

    fruits = Nn_("Apple", "%{num} Apples")
    n_(fruits, 3)

=== Locale / Domain
GetText stores the locale your are using
  GetText.locale = "en_US" # translate into english from now on
  GetText.locale # => en_US
Or
  include GetText
  set_locale "en_US"

Each locale can have different sets of translations (text domains) (e.g. Financial terms + Human-resource terms)
  GetText.bindtextdomain('financial')
Or
  include GetText
  bindtextdomain('financial')

For more details and options, have a look at the samples folder or
consult the tutorial[http://www.yotabanana.com/hiki/ruby-gettext-howto.html].


== License
This program is licenced under the same licence as Ruby.  
(See the file 'COPYING'.)

* mofile.rb
  * Copyright (C) 2001-2009 Masao Mutoh <mutoh at highwhay.ne.jp>
  * Copyright (C) 2001,2002 Masahiro Sakai <s01397ms at sfc.keio.ac.jp>

* gettext.rb
  * Copyright (C) 2001-2009 Masao Mutoh <mutoh at highwhay.ne.jp>
  * Copyright (C) 2001,2002 Masahiro Sakai <s01397ms at sfc.keio.ac.jp>

* rgettext 
  * Copyright (C) 2001-2009 Masao Mutoh <mutoh at highwhay.ne.jp>
  * Copyright (C) 2001,2002 Yasushi Shoji <yashi at atmark-techno.com>

* setup.rb
  * Copyright (C) 2000-2005 Minero Aoki <aamine at loveruby.net>
  * This file is released under LGPL. See the top of the install.rb.

* Others
  * Copyright (C) 2001-2009 Masao Mutoh <mutoh at highwhay.ne.jp>


== Translators
* Bosnian(bs)                - Sanjin Sehic <saserr at gmail.com>
* Bulgarian(bg)              - Sava Chankov <sava.chankov at gmail.com>
* Catalan(ca)                - Ramon Salvadó <rsalvado at gnuine.com>
* Chinese(Simplified)(zh_CN)
  * Yang Bob <bob.yang.dev at gmail.com> (current)
  * Yingfeng <blogyingfeng at gmail.com>
* Chinese(Traditional)(zh_TW)
  * Yang Bob <bob.yang.dev at gmail.com> (current)
  * LIN CHUNG-YI <xmarsh at gmail.com>
* Croatian(hr)               - Sanjin Sehic <saserr at gmail.com>
* Czech(cs)                  - Karel Miarka <kajism at yahoo.com>
* Dutch(nl)                  - Menno Jonkers <ruby-gettext at jonkers.com>
* Esperanto(eo)              - Malte Milatz <malte at gmx-topmail.de>
* Estonian(et)               - Erkki Eilonen <erkki at itech.ee>
* French(fr)
  * Vincent Isambart <vincent.isambart at gmail.com> (current)
  * David Sulc <davidsulc at gmail.com>
  * Laurent Sansonetti <laurent.sansonetti at gmail.com>
* German(de)
  * Patrick Lenz <patrick at limited-overload.de> (current)
  * Detlef Reichl <detlef.reichl at gmx.org>
  * Sven Herzberg <herzi at abi02.de>
  * Sascha Ebach <se at digitale-wertschoepfung.de>
* Greek(el)                  - Vassilis Rizopoulos <damphyr at gmx.net>
* Hungarian(hu)              - Tamás Tompa <tompata at gmail.com>
* Italian(it)
  * Marco Lazzeri <marco.lazzeri at gmail.com>
  * Gabriele Renzi <surrender_it at yahoo.it>
* Japanese(ja)               - Masao Mutoh <mutoh at highway.ne.jp>
* Korean(ko)                 - Gyoung-Yoon Noh <nohmad at gmail.com>
* Latvian(lv)                - Aivars Akots <aivars.akots at gmail.com>
* Norwegian(nb)              - Runar Ingebrigtsen <runar at mopo.no>
* Portuguese(Brazil)(pt_BR)  
  * Antonio S. de A. Terceiro <terceiro at softwarelivre.org> (current)
  * Joao Pedrosa <joaopedrosa at gmail.com>
* Russian(ru)                - Yuri Kozlov <kozlov.y at gmail.com>
* Serbian(sr)                - Slobodan Paunović" <slobodan.paunovic at gmail.com>
* Spanish(es)
  * David Espada <davinci at escomposlinux.org> (current)
  * David Moreno Garza <damog at damog.net>
* Swedish(sv)                - Nikolai Weibull <mailing-lists.ruby-talk at rawuncut.elitemail.org>
* Ukrainian(ua)              - Alex Rootoff <rootoff at pisem.net>
* Vietnamese(vi)             - Ngoc Dao Thanh <ngocdaothanh at gmail.com>

== Status of translations
* Bosnian(bs)               - 1.90.0 (old)
* Bulgarian(bg)             - 2.0.0pre1 (new)
* Catalan(ca)               - 2.0.0pre1
* Croatian(hr)              - 1.90.0 (old)
* Chinese(zh_CN)            - 2.0.0pre1
* Chinese(zh_TW)            - 2.0.0pre1
* Czech(cs)                 - 1.9.0 (old)
* Dutch(nl)                 - 1.90.0 (old)
* English(default)          - 1.90.0 (old)
* Esperanto(eo)             - 2.0.0pre1
* Estonian(et)              - 2.0.0pre1
* French(fr)                - 2.0.0pre1
* German(de)                - 2.0.0pre1
* Greek(el)                 - 2.0.0pre1 
* Hungarian(hu)             - 2.0.0pre1
* Italian(it)               - 1.6.0 (old)
* Japanese(ja)              - 2.0.0pre1
* Korean(ko)                - 1.9.0 (old)
* Latvian(lv)               - 2.0.0pre1 (new)
* Norwegian(nb)             - 2.0.0pre1
* Portuguese(Brazil)(pt_BR) - 2.0.0pre1
* Russian(ru)               - 2.0.0pre1
* Serbian(sr)               - 1.91.0 (old)
* Spanish(es)               - 2.0.0pre1
* Swedish(sv)               - 0.8.0 (too much old)
* Ukrainian(ua)             - 2.0.0pre1
* Vietnamese(vi)            - 2.0.0pre1

== Maintainer
Masao Mutoh <mutoh at highway.ne.jp>
