ofm_gettext 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +78 -0
- data/README.rdoc +245 -0
- data/Rakefile +234 -0
- data/bin/rgettext +23 -0
- data/bin/rmsgfmt +22 -0
- data/bin/rmsgmerge +22 -0
- data/gettext.gemspec +40 -0
- data/lib/gettext/cgi.rb +39 -0
- data/lib/gettext/core_ext/iconv.rb +110 -0
- data/lib/gettext/core_ext/string.rb +86 -0
- data/lib/gettext/parser/erb.rb +5 -0
- data/lib/gettext/parser/glade.rb +5 -0
- data/lib/gettext/parser/ruby.rb +172 -0
- data/lib/gettext/tools/rgettext.rb +251 -0
- data/lib/gettext/tools/rmsgfmt.rb +86 -0
- data/lib/gettext/tools/rmsgmerge.rb +500 -0
- data/lib/gettext/tools.rb +197 -0
- data/lib/gettext/utils.rb +39 -0
- data/lib/gettext/version.rb +12 -0
- data/lib/gettext.rb +312 -0
- data/po/bg/rgettext.po +139 -0
- data/po/bs/rgettext.po +139 -0
- data/po/ca/rgettext.po +138 -0
- data/po/cs/rgettext.po +140 -0
- data/po/de/rgettext.po +146 -0
- data/po/el/rgettext.po +137 -0
- data/po/eo/rgettext.po +138 -0
- data/po/es/rgettext.po +139 -0
- data/po/et/rgettext.po +136 -0
- data/po/fr/rgettext.po +142 -0
- data/po/hr/rgettext.po +139 -0
- data/po/hu/rgettext.po +138 -0
- data/po/it/rgettext.po +138 -0
- data/po/ja/rgettext.po +140 -0
- data/po/ko/rgettext.po +137 -0
- data/po/lv/rgettext.po +139 -0
- data/po/nb/rgettext.po +140 -0
- data/po/nl/rgettext.po +138 -0
- data/po/pt_BR/rgettext.po +141 -0
- data/po/rgettext.pot +129 -0
- data/po/ru/rgettext.po +140 -0
- data/po/sr/rgettext.po +139 -0
- data/po/sv/rgettext.po +131 -0
- data/po/vi/rgettext.po +137 -0
- data/po/zh/rgettext.po +138 -0
- data/po/zh_TW/rgettext.po +137 -0
- data/samples/README +16 -0
- data/samples/cgi/README +43 -0
- data/samples/cgi/Rakefile +27 -0
- data/samples/cgi/cookie.cgi +64 -0
- data/samples/cgi/gettext.css +116 -0
- data/samples/cgi/helloerb.rhtml +28 -0
- data/samples/cgi/helloerb1.cgi +58 -0
- data/samples/cgi/helloerb2.cgi +51 -0
- data/samples/cgi/hellolib.rb +18 -0
- data/samples/cgi/http.rb +49 -0
- data/samples/cgi/index.cgi +111 -0
- data/samples/cgi/other.rhtml +20 -0
- data/samples/cgi/po/bg/helloerb1.po +59 -0
- data/samples/cgi/po/bg/helloerb2.po +51 -0
- data/samples/cgi/po/bg/hellolib.po +23 -0
- data/samples/cgi/po/bg/main.po +83 -0
- data/samples/cgi/po/bs/helloerb1.po +59 -0
- data/samples/cgi/po/bs/helloerb2.po +51 -0
- data/samples/cgi/po/bs/hellolib.po +23 -0
- data/samples/cgi/po/bs/main.po +83 -0
- data/samples/cgi/po/ca/helloerb1.po +59 -0
- data/samples/cgi/po/ca/helloerb2.po +51 -0
- data/samples/cgi/po/ca/hellolib.po +23 -0
- data/samples/cgi/po/ca/main.po +83 -0
- data/samples/cgi/po/cs/helloerb1.po +61 -0
- data/samples/cgi/po/cs/helloerb2.po +52 -0
- data/samples/cgi/po/cs/hellolib.po +25 -0
- data/samples/cgi/po/cs/main.po +85 -0
- data/samples/cgi/po/de/helloerb1.po +61 -0
- data/samples/cgi/po/de/helloerb2.po +52 -0
- data/samples/cgi/po/de/hellolib.po +24 -0
- data/samples/cgi/po/de/main.po +86 -0
- data/samples/cgi/po/el/helloerb1.po +60 -0
- data/samples/cgi/po/el/helloerb2.po +51 -0
- data/samples/cgi/po/el/hellolib.po +23 -0
- data/samples/cgi/po/el/main.po +84 -0
- data/samples/cgi/po/eo/helloerb1.po +60 -0
- data/samples/cgi/po/eo/helloerb2.po +52 -0
- data/samples/cgi/po/eo/hellolib.po +24 -0
- data/samples/cgi/po/eo/main.po +84 -0
- data/samples/cgi/po/es/helloerb1.po +59 -0
- data/samples/cgi/po/es/helloerb2.po +50 -0
- data/samples/cgi/po/es/hellolib.po +22 -0
- data/samples/cgi/po/es/main.po +83 -0
- data/samples/cgi/po/fr/helloerb1.po +59 -0
- data/samples/cgi/po/fr/helloerb2.po +51 -0
- data/samples/cgi/po/fr/hellolib.po +22 -0
- data/samples/cgi/po/fr/main.po +85 -0
- data/samples/cgi/po/helloerb1.pot +60 -0
- data/samples/cgi/po/helloerb2.pot +52 -0
- data/samples/cgi/po/hellolib.pot +24 -0
- data/samples/cgi/po/hr/helloerb1.po +59 -0
- data/samples/cgi/po/hr/helloerb2.po +51 -0
- data/samples/cgi/po/hr/hellolib.po +23 -0
- data/samples/cgi/po/hr/main.po +83 -0
- data/samples/cgi/po/hu/helloerb1.po +59 -0
- data/samples/cgi/po/hu/helloerb2.po +51 -0
- data/samples/cgi/po/hu/hellolib.po +23 -0
- data/samples/cgi/po/hu/main.po +82 -0
- data/samples/cgi/po/it/helloerb1.po +60 -0
- data/samples/cgi/po/it/helloerb2.po +52 -0
- data/samples/cgi/po/it/hellolib.po +24 -0
- data/samples/cgi/po/it/main.po +84 -0
- data/samples/cgi/po/ja/helloerb1.po +60 -0
- data/samples/cgi/po/ja/helloerb2.po +52 -0
- data/samples/cgi/po/ja/hellolib.po +24 -0
- data/samples/cgi/po/ja/main.po +85 -0
- data/samples/cgi/po/ko/helloerb1.po +59 -0
- data/samples/cgi/po/ko/helloerb2.po +51 -0
- data/samples/cgi/po/ko/hellolib.po +23 -0
- data/samples/cgi/po/ko/main.po +84 -0
- data/samples/cgi/po/lv/helloerb1.po +65 -0
- data/samples/cgi/po/lv/helloerb2.po +52 -0
- data/samples/cgi/po/lv/hellolib.po +24 -0
- data/samples/cgi/po/lv/main.po +77 -0
- data/samples/cgi/po/main.pot +80 -0
- data/samples/cgi/po/nb/helloerb1.po +60 -0
- data/samples/cgi/po/nb/helloerb2.po +52 -0
- data/samples/cgi/po/nb/hellolib.po +24 -0
- data/samples/cgi/po/nb/main.po +84 -0
- data/samples/cgi/po/nl/helloerb1.po +61 -0
- data/samples/cgi/po/nl/helloerb2.po +52 -0
- data/samples/cgi/po/nl/hellolib.po +24 -0
- data/samples/cgi/po/nl/main.po +86 -0
- data/samples/cgi/po/pt_BR/helloerb1.po +59 -0
- data/samples/cgi/po/pt_BR/helloerb2.po +51 -0
- data/samples/cgi/po/pt_BR/hellolib.po +23 -0
- data/samples/cgi/po/pt_BR/main.po +84 -0
- data/samples/cgi/po/ru/helloerb1.po +58 -0
- data/samples/cgi/po/ru/helloerb2.po +50 -0
- data/samples/cgi/po/ru/hellolib.po +22 -0
- data/samples/cgi/po/ru/main.po +82 -0
- data/samples/cgi/po/sr/helloerb1.po +60 -0
- data/samples/cgi/po/sr/helloerb2.po +52 -0
- data/samples/cgi/po/sr/hellolib.po +24 -0
- data/samples/cgi/po/sr/main.po +80 -0
- data/samples/cgi/po/vi/helloerb1.po +65 -0
- data/samples/cgi/po/vi/helloerb2.po +52 -0
- data/samples/cgi/po/vi/hellolib.po +24 -0
- data/samples/cgi/po/vi/main.po +77 -0
- data/samples/cgi/po/zh/helloerb1.po +60 -0
- data/samples/cgi/po/zh/helloerb2.po +52 -0
- data/samples/cgi/po/zh/hellolib.po +24 -0
- data/samples/cgi/po/zh/main.po +80 -0
- data/samples/cgi/po/zh_TW/helloerb1.po +67 -0
- data/samples/cgi/po/zh_TW/helloerb2.po +54 -0
- data/samples/cgi/po/zh_TW/hellolib.po +26 -0
- data/samples/cgi/po/zh_TW/main.po +79 -0
- data/samples/hello.rb +36 -0
- data/samples/hello2.rb +23 -0
- data/samples/hello_glade2.glade +70 -0
- data/samples/hello_glade2.rb +25 -0
- data/samples/hello_gtk2.rb +27 -0
- data/samples/hello_noop.rb +31 -0
- data/samples/hello_plural.rb +26 -0
- data/samples/hello_tk.rb +19 -0
- data/samples/makemo.rb +6 -0
- data/samples/po/bg/hello.po +24 -0
- data/samples/po/bg/hello2.po +31 -0
- data/samples/po/bg/hello_glade2.po +31 -0
- data/samples/po/bg/hello_gtk.po +23 -0
- data/samples/po/bg/hello_noop.po +27 -0
- data/samples/po/bg/hello_plural.po +25 -0
- data/samples/po/bg/hello_tk.po +23 -0
- data/samples/po/bs/hello.po +23 -0
- data/samples/po/bs/hello2.po +31 -0
- data/samples/po/bs/hello_glade2.po +31 -0
- data/samples/po/bs/hello_gtk.po +23 -0
- data/samples/po/bs/hello_noop.po +27 -0
- data/samples/po/bs/hello_plural.po +26 -0
- data/samples/po/bs/hello_tk.po +23 -0
- data/samples/po/ca/hello.po +23 -0
- data/samples/po/ca/hello2.po +31 -0
- data/samples/po/ca/hello_glade2.po +31 -0
- data/samples/po/ca/hello_gtk.po +23 -0
- data/samples/po/ca/hello_noop.po +27 -0
- data/samples/po/ca/hello_plural.po +25 -0
- data/samples/po/ca/hello_tk.po +23 -0
- data/samples/po/cs/hello.po +23 -0
- data/samples/po/cs/hello2.po +31 -0
- data/samples/po/cs/hello_glade2.po +37 -0
- data/samples/po/cs/hello_gtk.po +23 -0
- data/samples/po/cs/hello_noop.po +27 -0
- data/samples/po/cs/hello_plural.po +26 -0
- data/samples/po/cs/hello_tk.po +23 -0
- data/samples/po/de/hello.po +20 -0
- data/samples/po/de/hello2.po +28 -0
- data/samples/po/de/hello_glade2.po +27 -0
- data/samples/po/de/hello_gtk.po +20 -0
- data/samples/po/de/hello_noop.po +24 -0
- data/samples/po/de/hello_plural.po +25 -0
- data/samples/po/de/hello_tk.po +20 -0
- data/samples/po/el/hello.po +23 -0
- data/samples/po/el/hello2.po +31 -0
- data/samples/po/el/hello_glade2.po +31 -0
- data/samples/po/el/hello_gtk.po +22 -0
- data/samples/po/el/hello_noop.po +27 -0
- data/samples/po/el/hello_plural.po +25 -0
- data/samples/po/el/hello_tk.po +23 -0
- data/samples/po/eo/hello.po +23 -0
- data/samples/po/eo/hello2.po +31 -0
- data/samples/po/eo/hello_glade2.po +32 -0
- data/samples/po/eo/hello_gtk.po +23 -0
- data/samples/po/eo/hello_noop.po +27 -0
- data/samples/po/eo/hello_plural.po +26 -0
- data/samples/po/eo/hello_tk.po +24 -0
- data/samples/po/es/hello.po +21 -0
- data/samples/po/es/hello2.po +28 -0
- data/samples/po/es/hello_glade2.po +28 -0
- data/samples/po/es/hello_gtk.po +20 -0
- data/samples/po/es/hello_noop.po +24 -0
- data/samples/po/es/hello_plural.po +23 -0
- data/samples/po/es/hello_tk.po +20 -0
- data/samples/po/fr/hello.po +18 -0
- data/samples/po/fr/hello2.po +26 -0
- data/samples/po/fr/hello_glade2.po +27 -0
- data/samples/po/fr/hello_gtk.po +18 -0
- data/samples/po/fr/hello_noop.po +22 -0
- data/samples/po/fr/hello_plural.po +21 -0
- data/samples/po/fr/hello_tk.po +18 -0
- data/samples/po/hello.pot +23 -0
- data/samples/po/hello2.pot +31 -0
- data/samples/po/hello_glade2.pot +32 -0
- data/samples/po/hello_gtk.pot +23 -0
- data/samples/po/hello_noop.pot +27 -0
- data/samples/po/hello_plural.pot +26 -0
- data/samples/po/hello_tk.pot +24 -0
- data/samples/po/hr/hello.po +23 -0
- data/samples/po/hr/hello2.po +31 -0
- data/samples/po/hr/hello_glade2.po +31 -0
- data/samples/po/hr/hello_gtk.po +23 -0
- data/samples/po/hr/hello_noop.po +27 -0
- data/samples/po/hr/hello_plural.po +26 -0
- data/samples/po/hr/hello_tk.po +23 -0
- data/samples/po/hu/hello.po +22 -0
- data/samples/po/hu/hello2.po +30 -0
- data/samples/po/hu/hello_glade2.po +31 -0
- data/samples/po/hu/hello_gtk.po +22 -0
- data/samples/po/hu/hello_noop.po +26 -0
- data/samples/po/hu/hello_plural.po +25 -0
- data/samples/po/hu/hello_tk.po +23 -0
- data/samples/po/it/hello.po +20 -0
- data/samples/po/it/hello2.po +28 -0
- data/samples/po/it/hello_glade2.po +28 -0
- data/samples/po/it/hello_gtk.po +21 -0
- data/samples/po/it/hello_noop.po +24 -0
- data/samples/po/it/hello_plural.po +23 -0
- data/samples/po/it/hello_tk.po +21 -0
- data/samples/po/ja/hello.po +20 -0
- data/samples/po/ja/hello2.po +28 -0
- data/samples/po/ja/hello_glade2.po +26 -0
- data/samples/po/ja/hello_gtk.po +19 -0
- data/samples/po/ja/hello_noop.po +23 -0
- data/samples/po/ja/hello_plural.po +21 -0
- data/samples/po/ja/hello_tk.po +19 -0
- data/samples/po/ko/hello.po +18 -0
- data/samples/po/ko/hello2.po +26 -0
- data/samples/po/ko/hello_glade2.po +29 -0
- data/samples/po/ko/hello_gtk.po +18 -0
- data/samples/po/ko/hello_noop.po +22 -0
- data/samples/po/ko/hello_plural.po +25 -0
- data/samples/po/ko/hello_tk.po +19 -0
- data/samples/po/lv/hello.po +24 -0
- data/samples/po/lv/hello2.po +32 -0
- data/samples/po/lv/hello_glade2.po +38 -0
- data/samples/po/lv/hello_gtk.po +24 -0
- data/samples/po/lv/hello_noop.po +28 -0
- data/samples/po/lv/hello_plural.po +26 -0
- data/samples/po/lv/hello_tk.po +24 -0
- data/samples/po/nb/hello.po +23 -0
- data/samples/po/nb/hello2.po +31 -0
- data/samples/po/nb/hello_glade2.po +31 -0
- data/samples/po/nb/hello_gtk.po +23 -0
- data/samples/po/nb/hello_noop.po +27 -0
- data/samples/po/nb/hello_plural.po +26 -0
- data/samples/po/nb/hello_tk.po +24 -0
- data/samples/po/nl/hello.po +24 -0
- data/samples/po/nl/hello2.po +32 -0
- data/samples/po/nl/hello_glade2.po +31 -0
- data/samples/po/nl/hello_gtk.po +24 -0
- data/samples/po/nl/hello_noop.po +28 -0
- data/samples/po/nl/hello_plural.po +25 -0
- data/samples/po/nl/hello_tk.po +24 -0
- data/samples/po/pt_BR/hello.po +21 -0
- data/samples/po/pt_BR/hello2.po +29 -0
- data/samples/po/pt_BR/hello_glade2.po +29 -0
- data/samples/po/pt_BR/hello_gtk.po +21 -0
- data/samples/po/pt_BR/hello_noop.po +25 -0
- data/samples/po/pt_BR/hello_plural.po +23 -0
- data/samples/po/pt_BR/hello_tk.po +21 -0
- data/samples/po/ru/hello.po +22 -0
- data/samples/po/ru/hello2.po +30 -0
- data/samples/po/ru/hello_glade2.po +30 -0
- data/samples/po/ru/hello_gtk.po +22 -0
- data/samples/po/ru/hello_noop.po +26 -0
- data/samples/po/ru/hello_plural.po +28 -0
- data/samples/po/ru/hello_tk.po +22 -0
- data/samples/po/sr/hello.po +22 -0
- data/samples/po/sr/hello2.po +30 -0
- data/samples/po/sr/hello_glade2.po +32 -0
- data/samples/po/sr/hello_gtk.po +22 -0
- data/samples/po/sr/hello_noop.po +26 -0
- data/samples/po/sr/hello_plural.po +26 -0
- data/samples/po/sr/hello_tk.po +24 -0
- data/samples/po/sv/hello.po +20 -0
- data/samples/po/sv/hello2.po +28 -0
- data/samples/po/sv/hello_glade2.po +28 -0
- data/samples/po/sv/hello_gtk.po +20 -0
- data/samples/po/sv/hello_noop.po +24 -0
- data/samples/po/sv/hello_plural.po +23 -0
- data/samples/po/sv/hello_tk.po +20 -0
- data/samples/po/test.rb +13 -0
- data/samples/po/vi/hello.po +23 -0
- data/samples/po/vi/hello2.po +31 -0
- data/samples/po/vi/hello_glade2.po +38 -0
- data/samples/po/vi/hello_gtk.po +23 -0
- data/samples/po/vi/hello_noop.po +27 -0
- data/samples/po/vi/hello_plural.po +26 -0
- data/samples/po/vi/hello_tk.po +24 -0
- data/samples/po/zh/hello.po +23 -0
- data/samples/po/zh/hello2.po +31 -0
- data/samples/po/zh/hello_glade2.po +31 -0
- data/samples/po/zh/hello_gtk.po +23 -0
- data/samples/po/zh/hello_noop.po +27 -0
- data/samples/po/zh/hello_plural.po +25 -0
- data/samples/po/zh/hello_tk.po +23 -0
- data/samples/po/zh_TW/hello.po +26 -0
- data/samples/po/zh_TW/hello2.po +34 -0
- data/samples/po/zh_TW/hello_glade2.po +40 -0
- data/samples/po/zh_TW/hello_gtk.po +25 -0
- data/samples/po/zh_TW/hello_noop.po +30 -0
- data/samples/po/zh_TW/hello_plural.po +28 -0
- data/samples/po/zh_TW/hello_tk.po +26 -0
- data/src/poparser.ry +217 -0
- data/test/README +1 -0
- data/test/Rakefile +17 -0
- data/test/po/cr/plural.po +23 -0
- data/test/po/da/plural.po +22 -0
- data/test/po/da/plural_error.po +22 -0
- data/test/po/fr/plural.po +28 -0
- data/test/po/fr/plural_error.po +20 -0
- data/test/po/fr/test1.po +23 -0
- data/test/po/fr/test2.po +19 -0
- data/test/po/ir/plural.po +23 -0
- data/test/po/ja/npgettext.po +46 -0
- data/test/po/ja/nsgettext.po +65 -0
- data/test/po/ja/pgettext.po +41 -0
- data/test/po/ja/plural.po +28 -0
- data/test/po/ja/plural_error.po +20 -0
- data/test/po/ja/rubyparser.po +43 -0
- data/test/po/ja/sgettext.po +47 -0
- data/test/po/ja/test1.po +23 -0
- data/test/po/ja/test2.po +19 -0
- data/test/po/la/plural.po +23 -0
- data/test/po/la/plural_error.po +21 -0
- data/test/po/li/plural.po +23 -0
- data/test/po/po/plural.po +23 -0
- data/test/po/sl/plural.po +24 -0
- data/test/test_class_info.rb +88 -0
- data/test/test_gettext.rb +322 -0
- data/test/test_parser.rb +160 -0
- data/test/test_string.rb +67 -0
- data/test/test_textdomain_multi.rb +82 -0
- data/test/test_textdomain_toplevel.rb +44 -0
- data/test/testlib/N_.rb +68 -0
- data/test/testlib/erb.rhtml +15 -0
- data/test/testlib/erb.rxml +16 -0
- data/test/testlib/gettext.rb +115 -0
- data/test/testlib/gladeparser.glade +183 -0
- data/test/testlib/helper.rb +13 -0
- data/test/testlib/multi_textdomain.rb +133 -0
- data/test/testlib/ngettext.rb +81 -0
- data/test/testlib/npgettext.rb +33 -0
- data/test/testlib/nsgettext.rb +44 -0
- data/test/testlib/pgettext.rb +38 -0
- data/test/testlib/sgettext.rb +48 -0
- data/test/testlib/simple.rb +16 -0
- metadata +475 -0
data/ChangeLog
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
= Ruby-GetText-Package-2.1.0 (2009-11-14)
|
|
2
|
+
* Implemented parsing of translator comments (GNU gettext feature)
|
|
3
|
+
[by Vladimir Dobriakov]
|
|
4
|
+
* Refactor the directory structure.
|
|
5
|
+
* Move files for runtime to lib/gettext/runtime/*.
|
|
6
|
+
* Move files for development(rgettext/rmsgfmt) to
|
|
7
|
+
lib/gettext/tools/*.
|
|
8
|
+
* Refactor parsers for po. po-message object is defined as GetText::PoMessage
|
|
9
|
+
class. [by Vladimir Dobriakov, Masao Mutoh]
|
|
10
|
+
* Speed up when lots of objects are created to share the textdomain in each
|
|
11
|
+
objects. [Reported by Gaël Séchaud.]
|
|
12
|
+
* Fix "%{foo.bar}" %{"foo.bar".to_sym => "a"} doesn't work.
|
|
13
|
+
[Bug#26663, Reported by Danilo Castilho]
|
|
14
|
+
* lib/gettext.rb: Fixed to work unless gem. [Reported by Vladimir Dobriakov]
|
|
15
|
+
* Fixed a wrong String literal in a CGI sample.
|
|
16
|
+
[Bug #26531, by Eugene Mikhailov]
|
|
17
|
+
* Update license information(explicit to use ruby's or LGPL).
|
|
18
|
+
[Pointed out by Masateru Yoshikawa]
|
|
19
|
+
* Code cleanup.
|
|
20
|
+
* Update minor version.
|
|
21
|
+
|
|
22
|
+
= Ruby-GetText-Package-2.0.4 (2009-05-23)
|
|
23
|
+
* Fix String#% return nil when the string have no place holders. [by okkez]
|
|
24
|
+
* Update pofiles and remove old messages.
|
|
25
|
+
* suppress some warnings on Ruby 1.9.x. [by Nobuhiro IMAI]
|
|
26
|
+
* Fix not to run tests on Win32.
|
|
27
|
+
|
|
28
|
+
= Ruby-GetText-Package-2.0.3 (2009-05-09)
|
|
29
|
+
* Fixed the dependencies. [Reported by Hans de Graaff]
|
|
30
|
+
|
|
31
|
+
= Ruby-GetText-Package-2.0.2 (2009-05-04)
|
|
32
|
+
* Support ruby-1.9.1 style format string such as %<foo>d.
|
|
33
|
+
* Apply new Locale.set_app_language_tags and Locale.candidates.
|
|
34
|
+
[Suggested by Vladimir Dobriakov]
|
|
35
|
+
* Enhance to support ruby-1.9.x [by OZAWA Sakuro]
|
|
36
|
+
* poparser work with proper encoding.
|
|
37
|
+
* string.rb: #bytesize alias to #size in older ruby version such as 1.8.5.
|
|
38
|
+
* Fixed bugs
|
|
39
|
+
* n_() to work when Plural-Forms line in po-file is not correct.
|
|
40
|
+
[Reported by Sava Chankov (Bug#25570)]
|
|
41
|
+
* GetText::Locale.default_rules_path : $LOAD_PATH is not well parsed.
|
|
42
|
+
[by hallelujah]
|
|
43
|
+
* locale_path.rb: Fixed warning message.
|
|
44
|
+
|
|
45
|
+
Thanks to:
|
|
46
|
+
hallelujah, Sava Chankov, OZAWA Sakuro, Vladimir Dobriakov
|
|
47
|
+
|
|
48
|
+
= Ruby-GetText-Package-2.0.1 (2009-04-17)
|
|
49
|
+
* Fixed bugs
|
|
50
|
+
* doesn't work with ruby-1.8.5. [Reported by Dan Coutu]
|
|
51
|
+
* GetText.locale= can't keep the locale. [Reported by Adam Ilan]
|
|
52
|
+
* Break backward compatibility of bindtextdomain
|
|
53
|
+
[Reported by Mamoru Tasaka(#24947), Mathieu Blondel]
|
|
54
|
+
* Other trivial fixes/improvement.
|
|
55
|
+
* 1.8 times faster than 2.0.0.
|
|
56
|
+
* GetText::LocalePath is separated from GetText::TextDomainManager.
|
|
57
|
+
Improve to find the locale path.
|
|
58
|
+
* Enhance to support ruby-1.9.x [by OZAWA Sakuro]
|
|
59
|
+
|
|
60
|
+
Thanks to:
|
|
61
|
+
OZAWA Sakuro, Tietew, Adam Ilan, Mamoru Tasaka, Mathieu Blondel.
|
|
62
|
+
|
|
63
|
+
= Ruby-GetText-Package-2.0.0 (2009-03-21)
|
|
64
|
+
* Separate this library to locale and rails-support to locale,
|
|
65
|
+
locale_rails, gettext_activerecord, gettext_rails.
|
|
66
|
+
* Depends on locale(ruby-locale).
|
|
67
|
+
* Removes to support rails.
|
|
68
|
+
* A lot of referctoring, improvements.
|
|
69
|
+
* Thread safe.
|
|
70
|
+
* New APIs for gettext/tools instead of gettext/utils.
|
|
71
|
+
* Move to github.com.
|
|
72
|
+
|
|
73
|
+
Special Thanks to:
|
|
74
|
+
Michael Grosser: A lot of improvement.
|
|
75
|
+
|
|
76
|
+
Thanks to:
|
|
77
|
+
Tietew, Kazuhiro NISHIYAMA, Fabio M.A.
|
|
78
|
+
Tuptus, Morus Walter, Vladimir Dobriakov, Ramsey.
|
data/README.rdoc
ADDED
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
= gettext - Ruby-GetText-Package
|
|
2
|
+
|
|
3
|
+
Ruby-GetText-Package is a Localization(L10n) library and tool
|
|
4
|
+
which is modeled after the GNU gettext package.
|
|
5
|
+
|
|
6
|
+
This library translates original messages to localized
|
|
7
|
+
messages using client-side locale information(environment
|
|
8
|
+
variable or CGI variable).
|
|
9
|
+
|
|
10
|
+
The tools for developers support creating, useing, and modifying
|
|
11
|
+
localized message files(message catalogs).
|
|
12
|
+
|
|
13
|
+
((*Rails*))
|
|
14
|
+
Rails support has been removed.
|
|
15
|
+
Rails / ActiveRecord specific code now lives in locale_rails[http://github.com/mutoh/locale_rails/tree/master], gettext_rails[http://github.com/mutoh/gettext_rails/tree/master] and gettext_activerecord[http://github.com/mutoh/gettext_activerecord/tree/master].
|
|
16
|
+
|
|
17
|
+
== Website
|
|
18
|
+
* homepage[http://www.yotabanana.com/hiki/ruby-gettext.html]
|
|
19
|
+
* on rubyforge[http://gettext/rubyforge.org/]
|
|
20
|
+
* on github[http://github.com/gettext/]
|
|
21
|
+
|
|
22
|
+
== Features
|
|
23
|
+
* Translate singular/plural messages with simple APIs(similar to GNU gettext)
|
|
24
|
+
|
|
25
|
+
* Thread safety. Message resources are shared from all threads, but
|
|
26
|
+
returns translated messages of the current thread's locale.
|
|
27
|
+
|
|
28
|
+
* Tools to find message IDs
|
|
29
|
+
* Extract message IDs to po-files using rgettext from
|
|
30
|
+
* ruby scripts
|
|
31
|
+
* glade-2 XML file(.glade)
|
|
32
|
+
* ERB file(.rhtml, .erb)
|
|
33
|
+
* Anything (with your own parsers)
|
|
34
|
+
* The po-files are compatible to GNU gettext.
|
|
35
|
+
|
|
36
|
+
* rmsgfmt creates a mo-file from a po-file.
|
|
37
|
+
The mo-file is compatible to GNU gettext(msgfmt).
|
|
38
|
+
|
|
39
|
+
* Using rgettext/rmsgfmt as Rake tasks
|
|
40
|
+
|
|
41
|
+
* textdomain's scope is adapt to ruby class/module mechanism.
|
|
42
|
+
* A class/module can have plural textdomains.
|
|
43
|
+
* a message is looked up in its class/module and ancestors.
|
|
44
|
+
|
|
45
|
+
* CGI support (gettext/cgi)
|
|
46
|
+
* Locale is retrieved from client informations using Ruby-Locale.
|
|
47
|
+
(HTTP_ACCEPT_LANGUAGE, HTTP_ACCEPT_CHARSET, QUERY_STRING(lang), Cookies(lang)).
|
|
48
|
+
|
|
49
|
+
* String%() is extended to use named argument such as <tt>%{foo}" %{:foo => 1}</tt>.
|
|
50
|
+
Notes that Ruby-1.9.x supports this format by itself.
|
|
51
|
+
|
|
52
|
+
== Requirements
|
|
53
|
+
* {Ruby 1.8.3 or later}[http://www.ruby-lang.org]
|
|
54
|
+
* {Rubygems}[http://www.rubygems.org/]
|
|
55
|
+
* {locale gem}[http://rubyforge.org/projects/locale/]
|
|
56
|
+
* $ gem install locale
|
|
57
|
+
* (for development only)
|
|
58
|
+
* {GNU gettext 0.10.35 or later}[http://www.gnu.org/software/gettext/gettext.html]
|
|
59
|
+
* {Racc-1.4.3 or later}[http://www.ruby-lang.org/raa/list.rhtml?name=racc]
|
|
60
|
+
* (for compiling src/rmsgfmt.ry only)
|
|
61
|
+
|
|
62
|
+
== Install
|
|
63
|
+
* Uninstall old gettext if exists. (You need to do this when updating 1.93.0 -> 2.0.1)
|
|
64
|
+
(sudo/su on POSIX system)
|
|
65
|
+
gem uninstall gettext
|
|
66
|
+
|
|
67
|
+
* gem
|
|
68
|
+
#from rubyforge
|
|
69
|
+
(sudo/su on POSIX system)
|
|
70
|
+
gem install gettext
|
|
71
|
+
|
|
72
|
+
* download tar-ball
|
|
73
|
+
# De-Compress archive and enter its top directory.
|
|
74
|
+
(sudo/su on POSIX system)
|
|
75
|
+
ruby setup.rb
|
|
76
|
+
|
|
77
|
+
You can also install files in your favorite directory by
|
|
78
|
+
supplying setup.rb some options. Try <tt>ruby setup.rb --help</tt>.
|
|
79
|
+
|
|
80
|
+
== Usage
|
|
81
|
+
===Translation
|
|
82
|
+
- _: Basic translation method
|
|
83
|
+
Translates the message.
|
|
84
|
+
_("Hello")
|
|
85
|
+
|
|
86
|
+
The gettext methods comes in 3 combinable flavors
|
|
87
|
+
- n: Pluralized
|
|
88
|
+
Returns singular or plural form, depending on how many you have.
|
|
89
|
+
n_("Apple", "%{num} Apples", 3)
|
|
90
|
+
n_(["Apple", "%{num} Apples"], 3)
|
|
91
|
+
|
|
92
|
+
- p: context aware
|
|
93
|
+
A context is a prefix to your translation, usefull when one word has different meanings, depending on its context.
|
|
94
|
+
p_("Printer","Open") <=> p_("File","Open")
|
|
95
|
+
is the same as s_("Printer|Open") <=> s_("File|Open")
|
|
96
|
+
|
|
97
|
+
- s: without context
|
|
98
|
+
If a translation could not be found, return the msgid without context.
|
|
99
|
+
s_("Printer|Open") => "Öffnen" #translation found
|
|
100
|
+
s_("Printer|Open") => "Open" #translation not found
|
|
101
|
+
|
|
102
|
+
- combinations
|
|
103
|
+
np_("Fruit", "Apple", "%{num} Apples", 3)
|
|
104
|
+
ns_("Fruit|Apple","%{num} Apples", 3)
|
|
105
|
+
|
|
106
|
+
np_(["Fruit","Apple","%{num} Apples"], 3)
|
|
107
|
+
ns_(["Fruit|Apple","%{num} Apples"], 3)
|
|
108
|
+
|
|
109
|
+
- N_, Nn_: Makes dynamic translation messages readable for the gettext parser.
|
|
110
|
+
<tt>_(fruit)</tt> cannot be understood by the gettext parser. To help the parser find all your translations,
|
|
111
|
+
you can add <tt>fruit = N_("Apple")</tt> which does not translate, but tells the parser: "Apple" needs translation.
|
|
112
|
+
|
|
113
|
+
fruit = N_("Apple") # same as fruit = "Apple"
|
|
114
|
+
_(fruit) # does a normal translation
|
|
115
|
+
|
|
116
|
+
fruits = Nn_("Apple", "%{num} Apples")
|
|
117
|
+
n_(fruits, 3)
|
|
118
|
+
|
|
119
|
+
=== Bind textdomains to the classes.
|
|
120
|
+
A textdomain has a translation file in each language.
|
|
121
|
+
A module/class can have multi textdomains. This means the
|
|
122
|
+
libraries/applications can have their own textdomains.
|
|
123
|
+
|
|
124
|
+
class Foo
|
|
125
|
+
include GetText
|
|
126
|
+
bindtextdomain "your_app_domain_name"
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
class Book
|
|
130
|
+
include GetText
|
|
131
|
+
bindtextdomain "general"
|
|
132
|
+
bindtextdomain "book"
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
=== Locale
|
|
136
|
+
If you need to set the locale by yourself, then use:
|
|
137
|
+
GetText.locale = "en_US" # translate into english from now on
|
|
138
|
+
GetText.locale # => en_US
|
|
139
|
+
Or
|
|
140
|
+
include GetText
|
|
141
|
+
set_locale "en_US"
|
|
142
|
+
|
|
143
|
+
For more details and options, have a look at the samples folder or
|
|
144
|
+
consult the tutorial[http://www.yotabanana.com/hiki/ruby-gettext-howto.html].
|
|
145
|
+
|
|
146
|
+
== License
|
|
147
|
+
This program is licenced under the same licence as Ruby(See COPYING) or
|
|
148
|
+
LGPL(Lesser General Public License: http://www.gnu.org/licenses/lgpl-3.0.txt).
|
|
149
|
+
|
|
150
|
+
* mofile.rb
|
|
151
|
+
* Copyright (C) 2001-2009 Masao Mutoh <mutoh at highwhay.ne.jp>
|
|
152
|
+
* Copyright (C) 2001,2002 Masahiro Sakai <s01397ms at sfc.keio.ac.jp>
|
|
153
|
+
|
|
154
|
+
* gettext.rb
|
|
155
|
+
* Copyright (C) 2001-2009 Masao Mutoh <mutoh at highwhay.ne.jp>
|
|
156
|
+
* Copyright (C) 2001,2002 Masahiro Sakai <s01397ms at sfc.keio.ac.jp>
|
|
157
|
+
|
|
158
|
+
* rgettext
|
|
159
|
+
* Copyright (C) 2001-2009 Masao Mutoh <mutoh at highwhay.ne.jp>
|
|
160
|
+
* Copyright (C) 2001,2002 Yasushi Shoji <yashi at atmark-techno.com>
|
|
161
|
+
|
|
162
|
+
* setup.rb
|
|
163
|
+
* Copyright (C) 2000-2005 Minero Aoki <aamine at loveruby.net>
|
|
164
|
+
* This file is released under LGPL. See the top of the install.rb.
|
|
165
|
+
|
|
166
|
+
* Others
|
|
167
|
+
* Copyright (C) 2001-2009 Masao Mutoh <mutoh at highwhay.ne.jp>
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
== Translators
|
|
171
|
+
* Bosnian(bs) - Sanjin Sehic <saserr at gmail.com>
|
|
172
|
+
* Bulgarian(bg) - Sava Chankov <sava.chankov at gmail.com>
|
|
173
|
+
* Catalan(ca) - Ramon Salvadó <rsalvado at gnuine.com>
|
|
174
|
+
* Chinese(Simplified)(zh_CN)
|
|
175
|
+
* Yang Bob <bob.yang.dev at gmail.com> (current)
|
|
176
|
+
* Yingfeng <blogyingfeng at gmail.com>
|
|
177
|
+
* Chinese(Traditional)(zh_TW)
|
|
178
|
+
* Yang Bob <bob.yang.dev at gmail.com> (current)
|
|
179
|
+
* LIN CHUNG-YI <xmarsh at gmail.com>
|
|
180
|
+
* Croatian(hr) - Sanjin Sehic <saserr at gmail.com>
|
|
181
|
+
* Czech(cs) - Karel Miarka <kajism at yahoo.com>
|
|
182
|
+
* Dutch(nl) - Menno Jonkers <ruby-gettext at jonkers.com>
|
|
183
|
+
* Esperanto(eo) - Malte Milatz <malte at gmx-topmail.de>
|
|
184
|
+
* Estonian(et) - Erkki Eilonen <erkki at itech.ee>
|
|
185
|
+
* French(fr)
|
|
186
|
+
* Vincent Isambart <vincent.isambart at gmail.com> (current)
|
|
187
|
+
* David Sulc <davidsulc at gmail.com>
|
|
188
|
+
* Laurent Sansonetti <laurent.sansonetti at gmail.com>
|
|
189
|
+
* German(de)
|
|
190
|
+
* Patrick Lenz <patrick at limited-overload.de> (current)
|
|
191
|
+
* Detlef Reichl <detlef.reichl at gmx.org>
|
|
192
|
+
* Sven Herzberg <herzi at abi02.de>
|
|
193
|
+
* Sascha Ebach <se at digitale-wertschoepfung.de>
|
|
194
|
+
* Greek(el) - Vassilis Rizopoulos <damphyr at gmx.net>
|
|
195
|
+
* Hungarian(hu) - Tamás Tompa <tompata at gmail.com>
|
|
196
|
+
* Italian(it)
|
|
197
|
+
* Marco Lazzeri <marco.lazzeri at gmail.com>
|
|
198
|
+
* Gabriele Renzi <surrender_it at yahoo.it>
|
|
199
|
+
* Japanese(ja) - Masao Mutoh <mutomasa at gmail.com>
|
|
200
|
+
* Korean(ko) - Gyoung-Yoon Noh <nohmad at gmail.com>
|
|
201
|
+
* Latvian(lv) - Aivars Akots <aivars.akots at gmail.com>
|
|
202
|
+
* Norwegian(nb) - Runar Ingebrigtsen <runar at mopo.no>
|
|
203
|
+
* Portuguese(Brazil)(pt_BR)
|
|
204
|
+
* Antonio S. de A. Terceiro <terceiro at softwarelivre.org> (current)
|
|
205
|
+
* Joao Pedrosa <joaopedrosa at gmail.com>
|
|
206
|
+
* Russian(ru) - Yuri Kozlov <kozlov.y at gmail.com>
|
|
207
|
+
* Serbian(sr) - Slobodan Paunović" <slobodan.paunovic at gmail.com>
|
|
208
|
+
* Spanish(es)
|
|
209
|
+
* David Espada <davinci at escomposlinux.org> (current)
|
|
210
|
+
* David Moreno Garza <damog at damog.net>
|
|
211
|
+
* Swedish(sv) - Nikolai Weibull <mailing-lists.ruby-talk at rawuncut.elitemail.org>
|
|
212
|
+
* Ukrainian(uk) - Alex Rootoff <rootoff at pisem.net>
|
|
213
|
+
* Vietnamese(vi) - Ngoc Dao Thanh <ngocdaothanh at gmail.com>
|
|
214
|
+
|
|
215
|
+
== Status of translations
|
|
216
|
+
* Bosnian(bs) - 1.90.0 (old)
|
|
217
|
+
* Bulgarian(bg) - 2.0.1
|
|
218
|
+
* Catalan(ca) - 2.0.1
|
|
219
|
+
* Croatian(hr) - 1.90.0 (old)
|
|
220
|
+
* Chinese(zh_CN) - 2.0.1
|
|
221
|
+
* Chinese(zh_TW) - 2.0.1
|
|
222
|
+
* Czech(cs) - 1.9.0 (old)
|
|
223
|
+
* Dutch(nl) - 1.90.0 (old)
|
|
224
|
+
* English(default) - 2.1.0
|
|
225
|
+
* Esperanto(eo) - 2.0.1
|
|
226
|
+
* Estonian(et) - 2.0.1
|
|
227
|
+
* French(fr) - 2.0.1
|
|
228
|
+
* German(de) - 2.0.1
|
|
229
|
+
* Greek(el) - 2.0.1
|
|
230
|
+
* Hungarian(hu) - 2.0.1
|
|
231
|
+
* Italian(it) - 1.6.0 (old)
|
|
232
|
+
* Japanese(ja) - 2.1.0
|
|
233
|
+
* Korean(ko) - 1.9.0 (old)
|
|
234
|
+
* Latvian(lv) - 2.0.1
|
|
235
|
+
* Norwegian(nb) - 2.0.1
|
|
236
|
+
* Portuguese(Brazil)(pt_BR) - 2.0.1
|
|
237
|
+
* Russian(ru) - 2.0.1
|
|
238
|
+
* Serbian(sr) - 2.0.1
|
|
239
|
+
* Spanish(es) - 2.0.1
|
|
240
|
+
* Swedish(sv) - 0.8.0 (too much old)
|
|
241
|
+
* Ukrainian(uk) - 2.0.1
|
|
242
|
+
* Vietnamese(vi) - 2.0.1
|
|
243
|
+
|
|
244
|
+
== Maintainer
|
|
245
|
+
Masao Mutoh <mutomasa at gmail.com>
|
data/Rakefile
ADDED
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Rakefile for Ruby-GetText-Package
|
|
3
|
+
#
|
|
4
|
+
# This file maintains Ruby-GetText-Package.
|
|
5
|
+
#
|
|
6
|
+
# Use setup.rb or gem for installation.
|
|
7
|
+
# You don't need to use this file directly.
|
|
8
|
+
#
|
|
9
|
+
# Copyright(c) 2005-2009 Masao Mutoh
|
|
10
|
+
# This program is licenced under the same licence as Ruby.
|
|
11
|
+
#
|
|
12
|
+
|
|
13
|
+
$:.unshift "./lib"
|
|
14
|
+
|
|
15
|
+
require 'rubygems'
|
|
16
|
+
require 'rake'
|
|
17
|
+
require 'rake/packagetask'
|
|
18
|
+
require 'rake/gempackagetask'
|
|
19
|
+
require 'rake/rdoctask'
|
|
20
|
+
require 'rake/testtask'
|
|
21
|
+
require 'gettext/version'
|
|
22
|
+
|
|
23
|
+
PKG_VERSION = GetText::VERSION
|
|
24
|
+
|
|
25
|
+
############################################################
|
|
26
|
+
# GetText tasks for developing
|
|
27
|
+
############################################################
|
|
28
|
+
desc "Create lib/gettext/tools/poparser.rb"
|
|
29
|
+
task :poparser do
|
|
30
|
+
poparser_path = "lib/gettext/tools/poparser.rb"
|
|
31
|
+
racc = File.join(Config::CONFIG['bindir'], "racc")
|
|
32
|
+
if ! FileTest.exist?(racc)
|
|
33
|
+
puts "racc was not found: #{racc}"
|
|
34
|
+
exit 1
|
|
35
|
+
else FileTest.exist?(racc)
|
|
36
|
+
ruby "#{racc} -g src/poparser.ry -o src/poparser.tmp.rb"
|
|
37
|
+
$stderr.puts %Q[ruby #{racc} -g src/poparser.ry -o src/poparser.tmp.rb]
|
|
38
|
+
|
|
39
|
+
file = open(poparser_path, "w")
|
|
40
|
+
|
|
41
|
+
file.print "=begin\n"
|
|
42
|
+
file.print <<-EOS
|
|
43
|
+
poparser.rb - Generate a .mo
|
|
44
|
+
|
|
45
|
+
Copyright (C) 2003-2009 Masao Mutoh <mutomasa at gmail.com>
|
|
46
|
+
|
|
47
|
+
You may redistribute it and/or modify it under the same
|
|
48
|
+
license terms as Ruby.
|
|
49
|
+
EOS
|
|
50
|
+
file.print "=end\n\n"
|
|
51
|
+
|
|
52
|
+
tmpfile = open("src/poparser.tmp.rb")
|
|
53
|
+
file.print tmpfile.read
|
|
54
|
+
file.close
|
|
55
|
+
tmpfile.close
|
|
56
|
+
File.delete("src/poparser.tmp.rb")
|
|
57
|
+
$stderr.puts "Create #{poparser_path}."
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
desc "Create *.mo from *.po"
|
|
63
|
+
task :makemo do
|
|
64
|
+
require 'gettext/tools'
|
|
65
|
+
GetText.create_mofiles
|
|
66
|
+
|
|
67
|
+
$stderr.puts "Create samples mo files."
|
|
68
|
+
GetText.create_mofiles(
|
|
69
|
+
:po_root => "samples/po", :mo_root => "samples/locale")
|
|
70
|
+
|
|
71
|
+
$stderr.puts "Create samples/cgi mo files."
|
|
72
|
+
GetText.create_mofiles(
|
|
73
|
+
:po_root => "samples/cgi/po", :mo_root => "samples/cgi/locale")
|
|
74
|
+
|
|
75
|
+
$stderr.puts "Create test mo files."
|
|
76
|
+
GetText.create_mofiles(
|
|
77
|
+
:po_root => "test/po", :mo_root => "test/locale")
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
desc "Update pot/po files to match new version."
|
|
81
|
+
task :updatepo do
|
|
82
|
+
begin
|
|
83
|
+
require 'gettext'
|
|
84
|
+
require 'gettext/tools/poparser'
|
|
85
|
+
require 'gettext/tools'
|
|
86
|
+
rescue LoadError
|
|
87
|
+
puts "gettext/tools/poparser was not found."
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
#lib/gettext/*.rb -> rgettext.po
|
|
91
|
+
GetText.update_pofiles("rgettext",
|
|
92
|
+
Dir.glob("lib/**/*.rb") + ["src/poparser.ry"],
|
|
93
|
+
"ruby-gettext #{GetText::VERSION}")
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
desc "Gather the newest po files. (for me)"
|
|
97
|
+
task :gatherpo => [:updatepo] do
|
|
98
|
+
mkdir_p "pofiles/original" unless FileTest.exist? "pofiles/original"
|
|
99
|
+
Dir.glob("**/*.pot").each do |f|
|
|
100
|
+
unless /^(pofiles|test)/ =~ f
|
|
101
|
+
copy f, "pofiles/original/"
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
Dir.glob("**/*.po").each do |f|
|
|
105
|
+
unless /^(pofiles|test)/ =~ f
|
|
106
|
+
lang = /po\/([^\/]*)\/(.*.po)/.match(f).to_a[1]
|
|
107
|
+
mkdir_p "pofiles/#{lang}" unless FileTest.exist? "pofiles/#{lang}"
|
|
108
|
+
copy f, "pofiles/#{lang}/"
|
|
109
|
+
Dir.glob("pofiles/original/*.pot").each do |f|
|
|
110
|
+
newpo = "pofiles/#{lang}/#{File.basename(f, ".pot")}.po"
|
|
111
|
+
copy f, newpo unless FileTest.exist? newpo
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def mv_pofiles(src_dir, target_dir, lang)
|
|
118
|
+
target = File.join(target_dir, lang)
|
|
119
|
+
unless File.exist?(target)
|
|
120
|
+
mkdir_p target
|
|
121
|
+
sh "cvs add #{target}"
|
|
122
|
+
end
|
|
123
|
+
cvs_add_targets = ""
|
|
124
|
+
Dir.glob(File.join(target_dir, "ja/*.po")).sort.each do |f|
|
|
125
|
+
srcfile = File.join(src_dir, File.basename(f))
|
|
126
|
+
if File.exist?(srcfile)
|
|
127
|
+
unless File.exist?(File.join(target, File.basename(f)))
|
|
128
|
+
cvs_add_targets << File.join(target, File.basename(f)) + " "
|
|
129
|
+
end
|
|
130
|
+
mv srcfile, target, :verbose => true
|
|
131
|
+
else
|
|
132
|
+
puts "mv #{srcfile} #{target}/ -- skipped"
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
sh "cvs add #{cvs_add_targets}" if cvs_add_targets.size > 0
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
desc "Deploy localized pofiles to current source tree. (for me)"
|
|
139
|
+
task :deploypo do
|
|
140
|
+
srcdir = ENV["SRCDIR"] ||= File.join(ENV["HOME"], "pofiles")
|
|
141
|
+
lang = ENV["LOCALE"]
|
|
142
|
+
unless lang
|
|
143
|
+
puts "USAGE: rake deploypo [SRCDIR=#{ENV["HOME"]}/pofiles] LOCALE=ja"
|
|
144
|
+
exit
|
|
145
|
+
end
|
|
146
|
+
puts "SRCDIR = #{srcdir}, LOCALE = #{lang}"
|
|
147
|
+
|
|
148
|
+
mv_pofiles(srcdir, "po", lang)
|
|
149
|
+
mv_pofiles(srcdir, "samples/cgi/po", lang)
|
|
150
|
+
mv_pofiles(srcdir, "samples/po", lang)
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
############################################################
|
|
154
|
+
# Package tasks
|
|
155
|
+
############################################################
|
|
156
|
+
desc "Create gem and tar.gz"
|
|
157
|
+
spec = Gem::Specification.new do |s|
|
|
158
|
+
s.name = 'gettext'
|
|
159
|
+
s.version = PKG_VERSION
|
|
160
|
+
s.summary = 'Ruby-GetText-Package is a libary and tools to localize messages.'
|
|
161
|
+
s.author = 'Masao Mutoh'
|
|
162
|
+
s.email = 'mutomasa at gmail.com'
|
|
163
|
+
s.homepage = 'http://gettext.rubyforge.org/'
|
|
164
|
+
s.rubyforge_project = "gettext"
|
|
165
|
+
s.files = FileList['**/*'].to_a.select{|v| v !~ /pkg|CVS/}
|
|
166
|
+
s.require_path = 'lib'
|
|
167
|
+
s.executables = Dir.entries('bin').delete_if {|item| /^\.|CVS|~$/ =~ item }
|
|
168
|
+
s.bindir = 'bin'
|
|
169
|
+
s.add_dependency('locale', '>= 2.0.5')
|
|
170
|
+
s.has_rdoc = true
|
|
171
|
+
s.description = <<-EOF
|
|
172
|
+
Ruby-GetText-Package is a GNU GetText-like program for Ruby.
|
|
173
|
+
The catalog file(po-file) is same format with GNU GetText.
|
|
174
|
+
So you can use GNU GetText tools for maintaining.
|
|
175
|
+
EOF
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
Rake::PackageTask.new("ruby-gettext-package", PKG_VERSION) do |o|
|
|
179
|
+
o.package_files = FileList['**/*'].to_a.select{|v| v !~ /pkg|CVS/}
|
|
180
|
+
o.need_tar_gz = true
|
|
181
|
+
o.need_zip = false
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
Rake::GemPackageTask.new(spec) do |p|
|
|
185
|
+
p.gem_spec = spec
|
|
186
|
+
p.need_tar_gz = false
|
|
187
|
+
p.need_zip = false
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
task :package => [:makemo]
|
|
191
|
+
|
|
192
|
+
############################################################
|
|
193
|
+
# Misc tasks
|
|
194
|
+
############################################################
|
|
195
|
+
desc 'Run all tests'
|
|
196
|
+
task :test do
|
|
197
|
+
Dir.chdir("test") do
|
|
198
|
+
if RUBY_PLATFORM =~ /win32/
|
|
199
|
+
sh "rake.bat", "test"
|
|
200
|
+
else
|
|
201
|
+
sh "rake", "test"
|
|
202
|
+
end
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
Rake::RDocTask.new { |rdoc|
|
|
207
|
+
begin
|
|
208
|
+
allison = `allison --path`.chop
|
|
209
|
+
rescue
|
|
210
|
+
allison = ''
|
|
211
|
+
end
|
|
212
|
+
rdoc.rdoc_dir = 'doc'
|
|
213
|
+
rdoc.title = "Ruby-GetText-Package API Reference"
|
|
214
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
|
215
|
+
rdoc.rdoc_files.include('README.rdoc', 'ChangeLog')
|
|
216
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
217
|
+
rdoc.template = allison if allison.size > 0
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
desc "Publish the release files to RubyForge."
|
|
221
|
+
task :release => [ :package ] do
|
|
222
|
+
require 'rubyforge'
|
|
223
|
+
|
|
224
|
+
rubyforge = RubyForge.new
|
|
225
|
+
rubyforge.configure
|
|
226
|
+
rubyforge.login
|
|
227
|
+
rubyforge.add_release("gettext", "gettext",
|
|
228
|
+
"Ruby-GetText-Package #{PKG_VERSION}",
|
|
229
|
+
"pkg/gettext-#{PKG_VERSION}.gem",
|
|
230
|
+
"pkg/ruby-gettext-package-#{PKG_VERSION}.tar.gz")
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
desc "Setup Ruby-GetText-Package. (for setup.rb)"
|
|
234
|
+
task :setup => [:makemo]
|
data/bin/rgettext
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#! /usr/bin/ruby
|
|
2
|
+
=begin
|
|
3
|
+
rgettext - ruby version of xgettext
|
|
4
|
+
|
|
5
|
+
Copyright (C) 2005-2009 Masao Mutoh
|
|
6
|
+
|
|
7
|
+
You may redistribute it and/or modify it under the same
|
|
8
|
+
license terms as Ruby.
|
|
9
|
+
|
|
10
|
+
=end
|
|
11
|
+
|
|
12
|
+
begin
|
|
13
|
+
require 'gettext/rgettext'
|
|
14
|
+
rescue LoadError
|
|
15
|
+
begin
|
|
16
|
+
require 'rubygems'
|
|
17
|
+
require 'gettext/tools/rgettext'
|
|
18
|
+
rescue LoadError
|
|
19
|
+
raise 'Ruby-GetText-Package are not installed.'
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
GetText.rgettext
|
data/bin/rmsgfmt
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#! /usr/bin/ruby
|
|
2
|
+
=begin
|
|
3
|
+
rgettext - ruby version of xgettext
|
|
4
|
+
|
|
5
|
+
Copyright (C) 2005-2009 Masao Mutoh
|
|
6
|
+
|
|
7
|
+
You may redistribute it and/or modify it under the same
|
|
8
|
+
license terms as Ruby.
|
|
9
|
+
=end
|
|
10
|
+
|
|
11
|
+
begin
|
|
12
|
+
require 'gettext/tools/rmsgfmt'
|
|
13
|
+
rescue LoadError
|
|
14
|
+
begin
|
|
15
|
+
require 'rubygems'
|
|
16
|
+
require 'gettext/tools/rmsgfmt'
|
|
17
|
+
rescue LoadError
|
|
18
|
+
raise 'Ruby-GetText-Package are not installed.'
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
GetText.rmsgfmt
|
data/bin/rmsgmerge
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#! /usr/bin/ruby
|
|
2
|
+
=begin
|
|
3
|
+
rmsgmerge - ruby version of msgmerge
|
|
4
|
+
|
|
5
|
+
Copyright (C) 2005-2009 Masao Mutoh
|
|
6
|
+
|
|
7
|
+
You may redistribute it and/or modify it under the same
|
|
8
|
+
license terms as Ruby.
|
|
9
|
+
=end
|
|
10
|
+
|
|
11
|
+
begin
|
|
12
|
+
require 'gettext/tools/rmsgmerge'
|
|
13
|
+
rescue LoadError
|
|
14
|
+
begin
|
|
15
|
+
require 'rubygems'
|
|
16
|
+
require 'gettext/tools/rmsgmerge'
|
|
17
|
+
rescue LoadError
|
|
18
|
+
raise 'Ruby-GetText-Package are not installed.'
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
GetText.rmsgmerge
|