gettext 1.93.0 → 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 +16 -1941
- data/ChangeLog-1 +2016 -0
- data/{NEWS → NEWS-1} +2 -0
- data/README.rdoc +251 -0
- data/Rakefile +46 -57
- data/bin/rgettext +1 -1
- data/bin/rmsgfmt +2 -2
- data/bin/rmsgmerge +3 -3
- data/data/locale/bg/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/bs/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/ca/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/cs/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/de/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/el/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/eo/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/es/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/et/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/fr/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/hr/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/hu/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/it/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/ja/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/ko/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/lv/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/nb/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/nl/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/pt_BR/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/ru/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/sr/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/sv/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/ua/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/vi/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/zh/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/zh_TW/LC_MESSAGES/rgettext.mo +0 -0
- data/gettext.gemspec +40 -0
- data/lib/gettext.rb +101 -431
- data/lib/gettext/cgi.rb +4 -4
- data/lib/gettext/class_info.rb +54 -0
- data/lib/gettext/{iconv.rb → core_ext/iconv.rb} +1 -0
- data/lib/gettext/{string.rb → core_ext/string.rb} +12 -8
- data/lib/gettext/locale_path.rb +107 -0
- data/lib/gettext/mofile.rb +314 -0
- data/lib/gettext/parser/erb.rb +2 -1
- data/lib/gettext/parser/glade.rb +2 -1
- data/lib/gettext/parser/ruby.rb +66 -63
- data/lib/gettext/poparser.rb +3 -3
- data/lib/gettext/textdomain.rb +97 -171
- data/lib/gettext/textdomain_manager.rb +224 -0
- data/lib/gettext/tools.rb +195 -0
- data/lib/gettext/{rgettext.rb → tools/rgettext.rb} +74 -77
- data/lib/gettext/{rmsgfmt.rb → tools/rmsgfmt.rb} +12 -26
- data/lib/gettext/{rmsgmerge.rb → tools/rmsgmerge.rb} +3 -6
- data/lib/gettext/utils.rb +18 -135
- data/lib/gettext/version.rb +2 -2
- data/po/bg/rgettext.po +84 -88
- data/po/bs/rgettext.po +86 -90
- data/po/ca/rgettext.po +85 -88
- data/po/cs/rgettext.po +86 -90
- data/po/de/{rails.po → #rails.po#} +17 -16
- data/po/de/rgettext.po +84 -88
- data/po/el/rgettext.po +85 -89
- data/po/eo/rgettext.po +85 -89
- data/po/es/rgettext.po +84 -88
- data/po/et/rgettext.po +84 -88
- data/po/fr/rgettext.po +84 -88
- data/po/hr/rgettext.po +86 -90
- data/po/hu/rgettext.po +84 -88
- data/po/it/rgettext.po +82 -86
- data/po/ja/rails.po.old +150 -0
- data/po/ja/rgettext.po +84 -88
- data/po/ko/rgettext.po +86 -90
- data/po/lv/rgettext.po +84 -88
- data/po/nb/rgettext.po +84 -88
- data/po/nl/rgettext.po +86 -90
- data/po/pt_BR/rgettext.po +84 -88
- data/po/rgettext.pot +54 -70
- data/po/ru/rgettext.po +84 -88
- data/po/sr/rgettext.po +84 -88
- data/po/sv/rgettext.po +57 -73
- data/po/ua/rgettext.po +85 -89
- data/po/vi/rgettext.po +84 -88
- data/po/zh/rgettext.po +83 -87
- data/po/zh_TW/rgettext.po +83 -87
- data/samples/README +4 -8
- data/samples/cgi/Rakefile +2 -2
- data/samples/cgi/cookie.cgi +1 -0
- data/samples/cgi/helloerb1.cgi +8 -4
- data/samples/cgi/helloerb2.cgi +6 -4
- data/samples/cgi/hellolib.rb +1 -2
- data/samples/cgi/index.cgi +1 -0
- data/samples/cgi/locale/bg/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/bs/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/ca/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/cs/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/de/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/el/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/eo/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/es/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/fr/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/hr/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/hu/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/it/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/ja/LC_MESSAGES/helloerb1.mo +0 -0
- data/samples/cgi/locale/ja/LC_MESSAGES/helloerb2.mo +0 -0
- data/samples/cgi/locale/ja/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/ja/LC_MESSAGES/main.mo +0 -0
- data/samples/cgi/locale/ko/LC_MESSAGES/helloerb1.mo +0 -0
- data/samples/cgi/locale/ko/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/lv/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/nb/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/nl/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/pt_BR/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/ru/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/sr/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/ua/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/vi/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/zh/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/zh_TW/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/po/ja/helloerb1.po +2 -2
- data/samples/cgi/po/ja/helloerb2.po +2 -2
- data/samples/cgi/po/ja/hellolib.po +2 -2
- data/samples/cgi/po/ja/main.po +2 -2
- data/samples/hello.rb +4 -3
- data/samples/hello2.rb +2 -1
- data/samples/{helloglade2.glade → hello_glade2.glade} +0 -0
- data/samples/{helloglade2.rb → hello_glade2.rb} +5 -4
- data/samples/{hellogtk2.rb → hello_gtk2.rb} +3 -3
- data/samples/hello_noop.rb +2 -1
- data/samples/hello_plural.rb +2 -1
- data/samples/{hellotk.rb → hello_tk.rb} +3 -2
- data/samples/locale/bg/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/bg/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/bg/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/bg/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/bg/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/bg/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/locale/bs/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/bs/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/bs/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/bs/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/bs/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/bs/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/locale/ca/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/ca/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/ca/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/ca/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/ca/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/ca/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/locale/cs/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/cs/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/cs/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/cs/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/cs/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/cs/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/locale/de/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/de/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/de/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/de/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/de/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/de/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/locale/el/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/el/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/el/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/el/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/el/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/el/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/locale/eo/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/eo/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/eo/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/eo/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/eo/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/eo/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/locale/es/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/es/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/es/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/es/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/es/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/es/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/locale/fr/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/fr/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/fr/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/fr/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/fr/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/fr/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/locale/hr/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/hr/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/hr/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/hr/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/hr/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/hr/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/locale/hu/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/hu/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/hu/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/hu/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/hu/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/hu/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/locale/it/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/it/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/it/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/it/LC_MESSAGES/{hellotk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/it/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/it/LC_MESSAGES/{hellogtk.mo → hello_tk.mo} +0 -0
- data/samples/locale/ja/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/ja/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/ja/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/ja/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/ja/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/ja/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/locale/ko/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/ko/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/ko/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/ko/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/ko/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/ko/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/locale/lv/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/lv/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/lv/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/lv/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/lv/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/lv/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/locale/nb/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/nb/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/nb/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/nb/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/nb/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/nb/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/locale/nl/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/nl/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/nl/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/nl/LC_MESSAGES/{hellotk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/nl/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/nl/LC_MESSAGES/{hellogtk.mo → hello_tk.mo} +0 -0
- data/samples/locale/pt_BR/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/pt_BR/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/pt_BR/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/pt_BR/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/pt_BR/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/pt_BR/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/locale/ru/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/ru/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/ru/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/ru/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/ru/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/ru/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/locale/sr/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/sr/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/sr/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/sr/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/sr/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/sr/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/locale/sv/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/sv/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/sv/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/sv/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/sv/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/sv/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/locale/ua/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/ua/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/ua/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/ua/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/ua/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/ua/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/locale/vi/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/vi/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/vi/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/vi/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/vi/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/vi/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/locale/zh/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/zh/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/zh/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/zh/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/zh/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/zh/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/locale/zh_TW/LC_MESSAGES/hello.mo +0 -0
- data/samples/locale/zh_TW/LC_MESSAGES/hello2.mo +0 -0
- data/samples/locale/zh_TW/LC_MESSAGES/{helloglade2.mo → hello_glade2.mo} +0 -0
- data/samples/locale/zh_TW/LC_MESSAGES/{hellogtk.mo → hello_gtk.mo} +0 -0
- data/samples/locale/zh_TW/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/zh_TW/LC_MESSAGES/{hellotk.mo → hello_tk.mo} +0 -0
- data/samples/makemo.rb +3 -2
- data/samples/po/bg/{helloglade2.po → hello_glade2.po} +4 -4
- data/samples/po/bg/{hellogtk.po → hello_gtk.po} +1 -1
- data/samples/po/bg/{hellotk.po → hello_tk.po} +2 -2
- data/samples/po/bs/{helloglade2.po → hello_glade2.po} +6 -6
- data/samples/po/bs/{hellogtk.po → hello_gtk.po} +3 -3
- data/samples/po/bs/{hellotk.po → hello_tk.po} +4 -4
- data/samples/po/ca/{helloglade2.po → hello_glade2.po} +4 -4
- data/samples/po/ca/{hellogtk.po → hello_gtk.po} +1 -1
- data/samples/po/ca/{hellotk.po → hello_tk.po} +2 -2
- data/samples/po/cs/hello.po +1 -1
- data/samples/po/cs/hello2.po +1 -1
- data/samples/po/cs/{helloglade2.po → hello_glade2.po} +3 -3
- data/samples/po/cs/{hellogtk.po → hello_gtk.po} +2 -2
- data/samples/po/cs/hello_noop.po +1 -1
- data/samples/po/cs/{hellotk.po → hello_tk.po} +2 -2
- data/samples/po/de/hello.po +1 -1
- data/samples/po/de/hello2.po +1 -1
- data/samples/po/de/{helloglade2.po → hello_glade2.po} +3 -3
- data/samples/po/de/{hellogtk.po → hello_gtk.po} +2 -2
- data/samples/po/de/hello_noop.po +1 -1
- data/samples/po/de/{hellotk.po → hello_tk.po} +2 -2
- data/samples/po/el/hello.po +1 -1
- data/samples/po/el/{helloglade2.po → hello_glade2.po} +4 -4
- data/samples/po/el/{hellogtk.po → hello_gtk.po} +1 -1
- data/samples/po/el/{hellotk.po → hello_tk.po} +2 -2
- data/samples/po/eo/{helloglade2.po → hello_glade2.po} +4 -4
- data/samples/po/eo/{hellogtk.po → hello_gtk.po} +1 -1
- data/samples/po/eo/{hellotk.po → hello_tk.po} +2 -2
- data/samples/po/es/{helloglade2.po → hello_glade2.po} +4 -4
- data/samples/po/es/{hellogtk.po → hello_gtk.po} +2 -2
- data/samples/po/es/{hellotk.po → hello_tk.po} +2 -2
- data/samples/po/fr/{helloglade2.po → hello_glade2.po} +4 -4
- data/samples/po/fr/{hellogtk.po → hello_gtk.po} +2 -2
- data/samples/po/fr/{hellotk.po → hello_tk.po} +2 -2
- data/samples/po/{helloglade2.pot → hello_glade2.pot} +4 -4
- data/samples/po/{hellogtk.pot → hello_gtk.pot} +1 -1
- data/samples/po/{hellotk.pot → hello_tk.pot} +2 -2
- data/samples/po/hr/{helloglade2.po → hello_glade2.po} +6 -6
- data/samples/po/hr/{hellogtk.po → hello_gtk.po} +3 -3
- data/samples/po/hr/{hellotk.po → hello_tk.po} +4 -4
- data/samples/po/hu/{helloglade2.po → hello_glade2.po} +4 -4
- data/samples/po/hu/{hellogtk.po → hello_gtk.po} +1 -1
- data/samples/po/hu/{hellotk.po → hello_tk.po} +2 -2
- data/samples/po/it/hello.po +1 -1
- data/samples/po/it/hello2.po +1 -1
- data/samples/po/it/{helloglade2.po → hello_glade2.po} +4 -4
- data/samples/po/it/{hellogtk.po → hello_gtk.po} +2 -2
- data/samples/po/it/hello_noop.po +1 -1
- data/samples/po/it/{hellotk.po → hello_tk.po} +2 -2
- data/samples/po/ja/{helloglade2.po → hello_glade2.po} +4 -4
- data/samples/po/ja/{hellogtk.po → hello_gtk.po} +2 -2
- data/samples/po/ja/{hellotk.po → hello_tk.po} +2 -2
- data/samples/po/ko/hello.po +1 -1
- data/samples/po/ko/hello2.po +1 -1
- data/samples/po/ko/{helloglade2.po → hello_glade2.po} +3 -3
- data/samples/po/ko/{hellogtk.po → hello_gtk.po} +2 -2
- data/samples/po/ko/hello_noop.po +1 -1
- data/samples/po/ko/{hellotk.po → hello_tk.po} +1 -1
- data/samples/po/lv/{helloglade2.po → hello_glade2.po} +4 -4
- data/samples/po/lv/{hellogtk.po → hello_gtk.po} +1 -1
- data/samples/po/lv/{hellotk.po → hello_tk.po} +2 -2
- data/samples/po/nb/{helloglade2.po → hello_glade2.po} +5 -6
- data/samples/po/nb/{hellogtk.po → hello_gtk.po} +1 -1
- data/samples/po/nb/{hellotk.po → hello_tk.po} +2 -2
- data/samples/po/nl/hello.po +1 -1
- data/samples/po/nl/hello2.po +1 -1
- data/samples/po/nl/{helloglade2.po → hello_glade2.po} +5 -5
- data/samples/po/nl/{hellogtk.po → hello_gtk.po} +2 -2
- data/samples/po/nl/hello_noop.po +1 -1
- data/samples/po/nl/hello_plural.po +1 -1
- data/samples/po/nl/{hellotk.po → hello_tk.po} +2 -2
- data/samples/po/pt_BR/{helloglade2.po → hello_glade2.po} +4 -4
- data/samples/po/pt_BR/{hellogtk.po → hello_gtk.po} +1 -1
- data/samples/po/pt_BR/{hellotk.po → hello_tk.po} +0 -0
- data/samples/po/ru/{helloglade2.po → hello_glade2.po} +5 -5
- data/samples/po/ru/{hellogtk.po → hello_gtk.po} +3 -3
- data/samples/po/ru/{hellotk.po → hello_tk.po} +3 -3
- data/samples/po/sr/{helloglade2.po → hello_glade2.po} +4 -4
- data/samples/po/sr/{hellogtk.po → hello_gtk.po} +1 -1
- data/samples/po/sr/{hellotk.po → hello_tk.po} +2 -2
- data/samples/po/sv/{helloglade2.po → hello_glade2.po} +4 -4
- data/samples/po/sv/{hellogtk.po → hello_gtk.po} +1 -1
- data/samples/po/sv/{hellotk.po → hello_tk.po} +2 -2
- data/samples/po/test.rb +11 -0
- data/samples/po/ua/{helloglade2.po → hello_glade2.po} +4 -4
- data/samples/po/ua/{hellogtk.po → hello_gtk.po} +1 -1
- data/samples/po/ua/{hellotk.po → hello_tk.po} +2 -2
- data/samples/po/vi/{helloglade2.po → hello_glade2.po} +4 -4
- data/samples/po/vi/{hellogtk.po → hello_gtk.po} +1 -1
- data/samples/po/vi/{hellotk.po → hello_tk.po} +2 -2
- data/samples/po/zh/{helloglade2.po → hello_glade2.po} +4 -4
- data/samples/po/zh/{hellogtk.po → hello_gtk.po} +2 -2
- data/samples/po/zh/{hellotk.po → hello_tk.po} +2 -2
- data/samples/po/zh_TW/{helloglade2.po → hello_glade2.po} +4 -4
- data/samples/po/zh_TW/{hellogtk.po → hello_gtk.po} +1 -1
- data/samples/po/zh_TW/{hellotk.po → hello_tk.po} +2 -2
- data/src/poparser.ry +1 -1
- data/test/README +1 -18
- data/test/Rakefile +14 -41
- data/test/locale/cr/LC_MESSAGES/plural.mo +0 -0
- data/test/locale/da/LC_MESSAGES/plural.mo +0 -0
- data/test/locale/da/LC_MESSAGES/plural_error.mo +0 -0
- data/test/locale/fr/LC_MESSAGES/plural_error.mo +0 -0
- data/test/locale/fr/LC_MESSAGES/test1.mo +0 -0
- data/test/locale/fr/LC_MESSAGES/test2.mo +0 -0
- data/test/locale/fr/LC_MESSAGES/test6.mo +0 -0
- data/test/locale/ir/LC_MESSAGES/plural.mo +0 -0
- data/test/locale/ja/LC_MESSAGES/npgettext.mo +0 -0
- data/test/locale/ja/LC_MESSAGES/{test_nsgettext.mo → nsgettext.mo} +0 -0
- data/test/locale/ja/LC_MESSAGES/{test_pgettext.mo → pgettext.mo} +0 -0
- data/test/locale/ja/LC_MESSAGES/plural_error.mo +0 -0
- data/test/locale/ja/LC_MESSAGES/{test_rubyparser.mo → rubyparser.mo} +0 -0
- data/test/locale/ja/LC_MESSAGES/{test_sgettext.mo → sgettext.mo} +0 -0
- data/test/locale/ja/LC_MESSAGES/test2.mo +0 -0
- data/test/locale/la/LC_MESSAGES/plural.mo +0 -0
- data/test/locale/la/LC_MESSAGES/plural_error.mo +0 -0
- data/test/locale/li/LC_MESSAGES/plural.mo +0 -0
- data/test/locale/po/LC_MESSAGES/plural.mo +0 -0
- data/test/locale/sl/LC_MESSAGES/plural.mo +0 -0
- data/test/po/fr/test1.po +3 -3
- data/test/po/fr/test6.po +1 -1
- data/test/po/ja/{test_npgettext.po → npgettext.po} +2 -2
- data/test/po/ja/{test_nsgettext.po → nsgettext.po} +8 -8
- data/test/po/ja/{test_pgettext.po → pgettext.po} +2 -2
- data/test/po/ja/{test_rubyparser.po → rubyparser.po} +0 -0
- data/test/po/ja/{test_sgettext.po → sgettext.po} +8 -8
- data/test/po/ja/test1.po +2 -2
- data/test/test_class_info.rb +80 -0
- data/test/test_gettext.rb +118 -257
- data/test/test_locale_path.rb +37 -0
- data/test/test_parser.rb +6 -105
- data/test/test_string.rb +1 -2
- data/test/test_textdomain_bind.rb +37 -0
- data/test/test_textdomain_multi.rb +69 -0
- data/test/test_textdomain_toplevel.rb +42 -0
- data/test/test_thread.rb +39 -0
- data/test/testlib/N_.rb +1 -1
- data/test/testlib/erb.rhtml +1 -1
- data/test/testlib/erb.rxml +1 -1
- data/test/testlib/gettext.rb +1 -1
- data/test/testlib/helper.rb +11 -0
- data/test/testlib/multi_textdomain.rb +119 -0
- data/test/testlib/ngettext.rb +1 -1
- data/test/testlib/npgettext.rb +1 -3
- data/test/testlib/nsgettext.rb +1 -3
- data/test/testlib/pgettext.rb +1 -3
- data/test/testlib/sgettext.rb +1 -3
- data/test/testlib/{testlib1.rb → simple.rb} +3 -4
- data/{samples/rails/public/favicon.ico → test/tools/files/app.pot} +0 -0
- data/test/{rails/public/favicon.ico → tools/files/de/app.po} +0 -0
- data/test/tools/files/en/app.po +0 -0
- data/test/tools/files/en/test.po +21 -0
- data/test/tools/files/simple_1.po +2 -0
- data/test/tools/files/simple_2.po +2 -0
- data/test/tools/files/simple_translation.rb +1 -0
- data/test/tools/files/version.po +7 -0
- data/test/tools/test.pot +21 -0
- data/test/tools/test_tools.rb +61 -0
- metadata +224 -853
- data/README +0 -177
- data/data/locale/bg/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/bs/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/ca/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/cs/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/de/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/el/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/eo/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/es/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/et/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/fr/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/hr/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/hu/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/it/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/ja/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/ko/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/lv/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/nb/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/nl/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/pt_BR/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/ru/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/sr/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/ua/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/vi/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/zh/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/zh_TW/LC_MESSAGES/rails.mo +0 -0
- data/doc/classes/ActionView/Helpers/FormBuilder.html +0 -154
- data/doc/classes/ActionView/TemplateFinder.html +0 -152
- data/doc/classes/ActiveRecord/Base.html +0 -360
- data/doc/classes/ActiveRecord/ConnectionAdapters/Column.html +0 -182
- data/doc/classes/ActiveRecord/Migration.html +0 -118
- data/doc/classes/GetText.html +0 -2003
- data/doc/classes/GetText/ActiveRecordParser.html +0 -236
- data/doc/classes/GetText/Container.html +0 -119
- data/doc/classes/GetText/ErbContainer.html +0 -223
- data/doc/classes/GetText/ErbParser.html +0 -156
- data/doc/classes/GetText/GladeParser.html +0 -133
- data/doc/classes/GetText/NoboundTextDomainError.html +0 -119
- data/doc/classes/GetText/PoParser.html +0 -169
- data/doc/classes/GetText/Rails.html +0 -293
- data/doc/classes/GetText/RubyParser.html +0 -133
- data/doc/classes/GetText/TextDomain.html +0 -572
- data/doc/classes/GetText/TextDomainManager.html +0 -443
- data/doc/classes/Iconv.html +0 -257
- data/doc/classes/Iconv/Failure.html +0 -105
- data/doc/classes/Iconv/IllegalSequence.html +0 -118
- data/doc/classes/Iconv/InvalidCharacter.html +0 -118
- data/doc/classes/Iconv/InvalidEncoding.html +0 -118
- data/doc/classes/Locale.html +0 -840
- data/doc/classes/Locale/Object.html +0 -803
- data/doc/classes/Locale/SystemBase.html +0 -271
- data/doc/classes/Locale/SystemCGI.html +0 -312
- data/doc/classes/Locale/SystemJRuby.html +0 -112
- data/doc/classes/Locale/SystemPosix.html +0 -163
- data/doc/classes/Locale/SystemWin32.html +0 -167
- data/doc/classes/Locale/SystemWin32Table.html +0 -123
- data/doc/classes/MOFile.html +0 -695
- data/doc/classes/MOFile/HeaderRev1.html +0 -150
- data/doc/classes/MOFile/InvalidFormat.html +0 -111
- data/doc/classes/Module.html +0 -158
- data/doc/classes/String.html +0 -225
- data/doc/created.rid +0 -1
- data/doc/files/ChangeLog.html +0 -2623
- data/doc/files/README.html +0 -531
- data/doc/files/lib/gettext/active_record_rb.html +0 -110
- data/doc/files/lib/gettext/cgi_rb.html +0 -110
- data/doc/files/lib/gettext/container_rb.html +0 -108
- data/doc/files/lib/gettext/erb_rb.html +0 -109
- data/doc/files/lib/gettext/iconv_rb.html +0 -109
- data/doc/files/lib/gettext/mo_rb.html +0 -109
- data/doc/files/lib/gettext/parser/active_record_rb.html +0 -119
- data/doc/files/lib/gettext/parser/erb_rb.html +0 -109
- data/doc/files/lib/gettext/parser/glade_rb.html +0 -109
- data/doc/files/lib/gettext/parser/ruby_rb.html +0 -110
- data/doc/files/lib/gettext/poparser_rb.html +0 -108
- data/doc/files/lib/gettext/rails_compat_rb.html +0 -108
- data/doc/files/lib/gettext/rails_rb.html +0 -112
- data/doc/files/lib/gettext/rgettext_rb.html +0 -110
- data/doc/files/lib/gettext/rmsgfmt_rb.html +0 -113
- data/doc/files/lib/gettext/rmsgmerge_rb.html +0 -112
- data/doc/files/lib/gettext/string_rb.html +0 -101
- data/doc/files/lib/gettext/textdomain_rb.html +0 -109
- data/doc/files/lib/gettext/textdomainmanager_rb.html +0 -109
- data/doc/files/lib/gettext/utils_rb.html +0 -111
- data/doc/files/lib/gettext/version_rb.html +0 -101
- data/doc/files/lib/gettext_rb.html +0 -113
- data/doc/files/lib/locale/base_rb.html +0 -101
- data/doc/files/lib/locale/cgi_rb.html +0 -108
- data/doc/files/lib/locale/jruby_rb.html +0 -110
- data/doc/files/lib/locale/object_rb.html +0 -101
- data/doc/files/lib/locale/posix_rb.html +0 -108
- data/doc/files/lib/locale/win32_rb.html +0 -110
- data/doc/files/lib/locale/win32_table_rb.html +0 -101
- data/doc/files/lib/locale_rb.html +0 -111
- data/doc/fr_class_index.html +0 -61
- data/doc/fr_file_index.html +0 -58
- data/doc/fr_method_index.html +0 -163
- data/doc/index.html +0 -24
- data/doc/rdoc-style.css +0 -208
- data/lib/gettext/active_record.rb +0 -357
- data/lib/gettext/container.rb +0 -19
- data/lib/gettext/erb.rb +0 -56
- data/lib/gettext/mo.rb +0 -320
- data/lib/gettext/parser/active_record.rb +0 -184
- data/lib/gettext/rails.rb +0 -547
- data/lib/gettext/rails_compat.rb +0 -16
- data/lib/gettext/textdomainmanager.rb +0 -103
- data/lib/locale.rb +0 -183
- data/lib/locale/base.rb +0 -60
- data/lib/locale/cgi.rb +0 -103
- data/lib/locale/jruby.rb +0 -36
- data/lib/locale/object.rb +0 -237
- data/lib/locale/posix.rb +0 -36
- data/lib/locale/win32.rb +0 -49
- data/lib/locale/win32_table.rb +0 -235
- data/po/bg/rails.po +0 -169
- data/po/bs/rails.po +0 -185
- data/po/ca/rails.po +0 -170
- data/po/cs/rails.po +0 -189
- data/po/el/rails.po +0 -169
- data/po/eo/rails.po +0 -170
- data/po/es/rails.po +0 -170
- data/po/et/rails.po +0 -170
- data/po/fr/rails.po +0 -174
- data/po/hr/rails.po +0 -186
- data/po/hu/rails.po +0 -170
- data/po/it/rails.po +0 -176
- data/po/ja/rails.po +0 -170
- data/po/ko/rails.po +0 -174
- data/po/lv/rails.po +0 -175
- data/po/nb/rails.po +0 -171
- data/po/nl/rails.po +0 -178
- data/po/pt_BR/rails.po +0 -171
- data/po/rails.pot +0 -170
- data/po/ru/rails.po +0 -178
- data/po/sr/rails.po +0 -178
- data/po/ua/rails.po +0 -184
- data/po/vi/rails.po +0 -170
- data/po/zh/rails.po +0 -166
- data/po/zh_TW/rails.po +0 -166
- data/post-setup.rb +0 -17
- data/pre-setup.rb +0 -20
- data/samples/hello_textdomain.rb +0 -21
- data/samples/hellogtk.rb +0 -27
- data/samples/rails/README +0 -73
- data/samples/rails/Rakefile +0 -10
- data/samples/rails/app/controllers/application.rb +0 -40
- data/samples/rails/app/controllers/articles_controller.rb +0 -96
- data/samples/rails/app/helpers/application_helper.rb +0 -3
- data/samples/rails/app/helpers/articles_helper.rb +0 -60
- data/samples/rails/app/models/article.rb +0 -16
- data/samples/rails/app/views/articles/edit.html.erb +0 -21
- data/samples/rails/app/views/articles/index.html.erb +0 -17
- data/samples/rails/app/views/articles/new.html.erb +0 -19
- data/samples/rails/app/views/articles/show.html.erb +0 -6
- data/samples/rails/app/views/layouts/articles.html.erb +0 -26
- data/samples/rails/config/boot.rb +0 -109
- data/samples/rails/config/database.yml +0 -47
- data/samples/rails/config/environment.rb +0 -60
- data/samples/rails/config/environments/development.rb +0 -18
- data/samples/rails/config/environments/production.rb +0 -18
- data/samples/rails/config/environments/test.rb +0 -22
- data/samples/rails/config/initializers/inflections.rb +0 -10
- data/samples/rails/config/initializers/mime_types.rb +0 -5
- data/samples/rails/config/routes.rb +0 -38
- data/samples/rails/db/migrate/001_create_articles.rb +0 -14
- data/samples/rails/db/schema.rb +0 -20
- data/samples/rails/lib/tasks/gettext.rake +0 -16
- data/samples/rails/locale/bg/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/bs/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/ca/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/cs/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/de/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/el/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/en/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/eo/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/es/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/fr/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/hr/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/hu/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/it/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/ja/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/ko/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/lv/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/nb/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/nl/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/pt_BR/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/ru/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/sr/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/ua/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/vi/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/zh/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/locale/zh_TW/LC_MESSAGES/blog.mo +0 -0
- data/samples/rails/po/bg/blog.po +0 -101
- data/samples/rails/po/blog.pot +0 -102
- data/samples/rails/po/bs/blog.po +0 -103
- data/samples/rails/po/ca/blog.po +0 -101
- data/samples/rails/po/cs/blog.po +0 -104
- data/samples/rails/po/de/blog.po +0 -104
- data/samples/rails/po/el/blog.po +0 -102
- data/samples/rails/po/en/blog.po +0 -103
- data/samples/rails/po/eo/blog.po +0 -102
- data/samples/rails/po/es/blog.po +0 -101
- data/samples/rails/po/fr/blog.po +0 -102
- data/samples/rails/po/hr/blog.po +0 -102
- data/samples/rails/po/hu/blog.po +0 -101
- data/samples/rails/po/it/blog.po +0 -102
- data/samples/rails/po/ja/blog.po +0 -101
- data/samples/rails/po/ko/blog.po +0 -102
- data/samples/rails/po/lv/blog.po +0 -103
- data/samples/rails/po/nb/blog.po +0 -102
- data/samples/rails/po/nl/blog.po +0 -102
- data/samples/rails/po/pt_BR/blog.po +0 -102
- data/samples/rails/po/ru/blog.po +0 -102
- data/samples/rails/po/sr/blog.po +0 -103
- data/samples/rails/po/ua/blog.po +0 -105
- data/samples/rails/po/vi/blog.po +0 -102
- data/samples/rails/po/zh/blog.po +0 -101
- data/samples/rails/po/zh_TW/blog.po +0 -103
- data/samples/rails/public/404.html +0 -30
- data/samples/rails/public/422.html +0 -30
- data/samples/rails/public/500.html +0 -30
- data/samples/rails/public/dispatch.cgi +0 -10
- data/samples/rails/public/dispatch.fcgi +0 -24
- data/samples/rails/public/dispatch.rb +0 -10
- data/samples/rails/public/images/rails.png +0 -0
- data/samples/rails/public/index.html +0 -277
- data/samples/rails/public/javascripts/application.js +0 -2
- data/samples/rails/public/javascripts/controls.js +0 -963
- data/samples/rails/public/javascripts/dragdrop.js +0 -972
- data/samples/rails/public/javascripts/effects.js +0 -1120
- data/samples/rails/public/javascripts/prototype.js +0 -4225
- data/samples/rails/public/robots.txt +0 -1
- data/samples/rails/public/stylesheets/blog.css +0 -136
- data/samples/rails/public/stylesheets/scaffold.css +0 -74
- data/samples/rails/script/about +0 -3
- data/samples/rails/script/breakpointer +0 -3
- data/samples/rails/script/console +0 -3
- data/samples/rails/script/destroy +0 -3
- data/samples/rails/script/generate +0 -3
- data/samples/rails/script/performance/benchmarker +0 -3
- data/samples/rails/script/performance/profiler +0 -3
- data/samples/rails/script/plugin +0 -3
- data/samples/rails/script/process/reaper +0 -3
- data/samples/rails/script/process/spawner +0 -3
- data/samples/rails/script/process/spinner +0 -3
- data/samples/rails/script/runner +0 -3
- data/samples/rails/script/server +0 -3
- data/samples/rails/test/fixtures/articles.yml +0 -5
- data/samples/rails/test/functional/articles_controller_test.rb +0 -51
- data/samples/rails/test/test_helper.rb +0 -38
- data/samples/rails/test/unit/article_test.rb +0 -7
- data/samples/rails/vendor/plugins/gettext/README +0 -17
- data/samples/rails/vendor/plugins/gettext/Rakefile +0 -17
- data/samples/rails/vendor/plugins/gettext/init.rb +0 -21
- data/samples/rails/vendor/plugins/gettext/lib/gettext_plugin.rb +0 -33
- data/samples/rails/vendor/plugins/gettext/locale/bg/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/bs/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/ca/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/cs/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/de/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/el/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/eo/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/es/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/fr/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/hr/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/hu/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/it/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/ja/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/ko/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/lv/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/nb/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/nl/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/pt_BR/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/ru/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/sr/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/ua/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/vi/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/zh/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/locale/zh_TW/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/po/bg/gettext_plugin.po +0 -27
- data/samples/rails/vendor/plugins/gettext/po/bs/gettext_plugin.po +0 -27
- data/samples/rails/vendor/plugins/gettext/po/ca/gettext_plugin.po +0 -27
- data/samples/rails/vendor/plugins/gettext/po/cs/gettext_plugin.po +0 -29
- data/samples/rails/vendor/plugins/gettext/po/de/gettext_plugin.po +0 -29
- data/samples/rails/vendor/plugins/gettext/po/el/gettext_plugin.po +0 -27
- data/samples/rails/vendor/plugins/gettext/po/eo/gettext_plugin.po +0 -28
- data/samples/rails/vendor/plugins/gettext/po/es/gettext_plugin.po +0 -28
- data/samples/rails/vendor/plugins/gettext/po/fr/gettext_plugin.po +0 -27
- data/samples/rails/vendor/plugins/gettext/po/gettext_plugin.pot +0 -28
- data/samples/rails/vendor/plugins/gettext/po/hr/gettext_plugin.po +0 -27
- data/samples/rails/vendor/plugins/gettext/po/hu/gettext_plugin.po +0 -27
- data/samples/rails/vendor/plugins/gettext/po/it/gettext_plugin.po +0 -27
- data/samples/rails/vendor/plugins/gettext/po/ja/gettext_plugin.po +0 -28
- data/samples/rails/vendor/plugins/gettext/po/ko/gettext_plugin.po +0 -27
- data/samples/rails/vendor/plugins/gettext/po/lv/gettext_plugin.po +0 -28
- data/samples/rails/vendor/plugins/gettext/po/nb/gettext_plugin.po +0 -29
- data/samples/rails/vendor/plugins/gettext/po/nl/gettext_plugin.po +0 -28
- data/samples/rails/vendor/plugins/gettext/po/pt_BR/gettext_plugin.po +0 -27
- data/samples/rails/vendor/plugins/gettext/po/ru/gettext_plugin.po +0 -25
- data/samples/rails/vendor/plugins/gettext/po/sr/gettext_plugin.po +0 -28
- data/samples/rails/vendor/plugins/gettext/po/ua/gettext_plugin.po +0 -30
- data/samples/rails/vendor/plugins/gettext/po/vi/gettext_plugin.po +0 -27
- data/samples/rails/vendor/plugins/gettext/po/zh/gettext_plugin.po +0 -27
- data/samples/rails/vendor/plugins/gettext/po/zh_TW/gettext_plugin.po +0 -29
- data/setup.rb +0 -1585
- data/test/benchmark.rb +0 -28
- data/test/db/mysql.drop.sql +0 -5
- data/test/db/mysql.sql +0 -57
- data/test/fixtures/book.rb +0 -3
- data/test/fixtures/developer.rb +0 -5
- data/test/fixtures/developers.yml +0 -21
- data/test/fixtures/inept_wizard.rb +0 -3
- data/test/fixtures/people.yml +0 -6
- data/test/fixtures/reply.rb +0 -40
- data/test/fixtures/topic.rb +0 -68
- data/test/fixtures/topics.yml +0 -22
- data/test/fixtures/user.rb +0 -3
- data/test/fixtures/wizard.rb +0 -5
- data/test/locale/ja/LC_MESSAGES/active_record.mo +0 -0
- data/test/locale/ja/LC_MESSAGES/test_npgettext.mo +0 -0
- data/test/po/active_record.pot +0 -393
- data/test/po/ja/active_record.po +0 -392
- data/test/rails/README +0 -5
- data/test/rails/Rakefile +0 -36
- data/test/rails/app/controllers/application.rb +0 -8
- data/test/rails/app/controllers/articles_controller.rb +0 -61
- data/test/rails/app/controllers/mailer_controller.rb +0 -19
- data/test/rails/app/controllers/users_controller.rb +0 -11
- data/test/rails/app/helpers/application_helper.rb +0 -3
- data/test/rails/app/helpers/articles_helper.rb +0 -2
- data/test/rails/app/helpers/mailer_helper.rb +0 -2
- data/test/rails/app/models/article.rb +0 -5
- data/test/rails/app/models/mailer.rb +0 -38
- data/test/rails/app/models/user.rb +0 -4
- data/test/rails/app/views/articles/_form.html.erb +0 -13
- data/test/rails/app/views/articles/_form_fr.html.erb +0 -1
- data/test/rails/app/views/articles/active_form_error.html.erb +0 -1
- data/test/rails/app/views/articles/change_title_error_messages_for.html.erb +0 -21
- data/test/rails/app/views/articles/edit.html.erb +0 -9
- data/test/rails/app/views/articles/list.html.erb +0 -27
- data/test/rails/app/views/articles/list_fr.html.erb +0 -1
- data/test/rails/app/views/articles/multi_error_messages_for.html.erb +0 -19
- data/test/rails/app/views/articles/new.html.erb +0 -8
- data/test/rails/app/views/articles/show.html.erb +0 -29
- data/test/rails/app/views/layouts/application.html.erb +0 -14
- data/test/rails/app/views/layouts/mailer.html.erb +0 -20
- data/test/rails/app/views/layouts/users.html.erb +0 -13
- data/test/rails/app/views/mailer/coverpage.rhtml +0 -6
- data/test/rails/app/views/mailer/coverpage_fr.rhtml +0 -6
- data/test/rails/app/views/mailer/singlepart.rhtml +0 -3
- data/test/rails/app/views/mailer/singlepart_fr.rhtml +0 -3
- data/test/rails/app/views/users/custom_error_message.html.erb +0 -13
- data/test/rails/app/views/users/custom_error_message_fr.html.erb +0 -13
- data/test/rails/config/boot.rb +0 -109
- data/test/rails/config/database.yml +0 -36
- data/test/rails/config/environment.rb +0 -70
- data/test/rails/config/environments/development.rb +0 -18
- data/test/rails/config/environments/production.rb +0 -18
- data/test/rails/config/environments/test.rb +0 -19
- data/test/rails/config/routes.rb +0 -23
- data/test/rails/db/schema.rb +0 -34
- data/test/rails/po/ja/rails_test.po +0 -149
- data/test/rails/po/rails_test.pot +0 -149
- data/test/rails/public/404.html +0 -30
- data/test/rails/public/500.html +0 -30
- data/test/rails/public/dispatch.cgi +0 -10
- data/test/rails/public/dispatch.fcgi +0 -24
- data/test/rails/public/dispatch.rb +0 -10
- data/test/rails/public/images/rails.png +0 -0
- data/test/rails/public/index.html +0 -277
- data/test/rails/public/javascripts/application.js +0 -2
- data/test/rails/public/javascripts/controls.js +0 -963
- data/test/rails/public/javascripts/dragdrop.js +0 -972
- data/test/rails/public/javascripts/effects.js +0 -1120
- data/test/rails/public/javascripts/prototype.js +0 -4225
- data/test/rails/public/robots.txt +0 -1
- data/test/rails/public/stylesheets/scaffold.css +0 -74
- data/test/rails/script/about +0 -3
- data/test/rails/script/breakpointer +0 -3
- data/test/rails/script/console +0 -3
- data/test/rails/script/destroy +0 -3
- data/test/rails/script/generate +0 -3
- data/test/rails/script/performance/benchmarker +0 -3
- data/test/rails/script/performance/profiler +0 -3
- data/test/rails/script/plugin +0 -3
- data/test/rails/script/process/inspector +0 -3
- data/test/rails/script/process/reaper +0 -3
- data/test/rails/script/process/spawner +0 -3
- data/test/rails/script/runner +0 -3
- data/test/rails/script/server +0 -3
- data/test/rails/test/fixtures/articles.yml +0 -11
- data/test/rails/test/fixtures/users.yml +0 -5
- data/test/rails/test/functional/articles_controller_test.rb +0 -119
- data/test/rails/test/functional/mailer_controller_test.rb +0 -95
- data/test/rails/test/functional/users_controller_test.rb +0 -65
- data/test/rails/test/integration/general_stories_test.rb +0 -58
- data/test/rails/test/result/en/create_error.html +0 -95
- data/test/rails/test/result/en/custom_error_message.html +0 -83
- data/test/rails/test/result/en/custom_error_message_with_plural.html +0 -83
- data/test/rails/test/result/en/list.html +0 -62
- data/test/rails/test/result/en/multi_error_messages_for.html +0 -153
- data/test/rails/test/result/en/multipart.html +0 -67
- data/test/rails/test/result/en/new.html +0 -95
- data/test/rails/test/result/en/show.html +0 -51
- data/test/rails/test/result/en/singlepart.html +0 -10
- data/test/rails/test/result/fr/custom_error_message.html +0 -83
- data/test/rails/test/result/fr/custom_error_message_with_plural.html +0 -83
- data/test/rails/test/result/fr/list.html +0 -15
- data/test/rails/test/result/fr/multipart.html +0 -67
- data/test/rails/test/result/fr/new.html +0 -23
- data/test/rails/test/result/fr/singlepart.html +0 -10
- data/test/rails/test/result/ja/create_error.html +0 -95
- data/test/rails/test/result/ja/custom_error_message.html +0 -83
- data/test/rails/test/result/ja/custom_error_message_with_plural.html +0 -83
- data/test/rails/test/result/ja/list.html +0 -62
- data/test/rails/test/result/ja/multi_error_messages_for.html +0 -153
- data/test/rails/test/result/ja/multipart.html +0 -67
- data/test/rails/test/result/ja/new.html +0 -95
- data/test/rails/test/result/ja/show.html +0 -51
- data/test/rails/test/result/ja/singlepart.html +0 -10
- data/test/rails/test/test_helper.rb +0 -28
- data/test/rails/test/unit/article_test.rb +0 -18
- data/test/test.bat +0 -2
- data/test/test.sh +0 -13
- data/test/test_active_record.rb +0 -2606
- data/test/test_cgi.rb +0 -91
- data/test/test_erb.rhtml +0 -15
- data/test/test_erb.rxml +0 -16
- data/test/test_gettext_toplevel.rb +0 -44
- data/test/test_gladeparser.glade +0 -183
- data/test/test_java.sh +0 -12
- data/test/test_locale.rb +0 -250
- data/test/test_multi_textdomain.rb +0 -49
- data/test/test_rails.rb +0 -45
- data/test/test_rails_caching.rb +0 -232
- data/test/testlib/testlib2.rb +0 -11
- data/test/testlib/testlib3.rb +0 -12
- data/test/testlib/testlib4.rb +0 -11
- data/test/testlib/testlib5.rb +0 -70
- data/test/testlib/testlib6.rb +0 -19
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
gettext/textdomain_manager - GetText::TextDomainManager class
|
|
3
|
+
|
|
4
|
+
Copyright (C) 2009 Masao Mutoh
|
|
5
|
+
|
|
6
|
+
You may redistribute it and/or modify it under the same
|
|
7
|
+
license terms as Ruby.
|
|
8
|
+
|
|
9
|
+
=end
|
|
10
|
+
|
|
11
|
+
require 'gettext/textdomain'
|
|
12
|
+
require 'gettext/class_info'
|
|
13
|
+
require 'locale/util/memoizable'
|
|
14
|
+
|
|
15
|
+
module GetText
|
|
16
|
+
class TextDomainManager
|
|
17
|
+
include Locale::Util::Memoizable
|
|
18
|
+
|
|
19
|
+
@@textdomain_pool = {}
|
|
20
|
+
@@textdomain_manager_pool = {}
|
|
21
|
+
|
|
22
|
+
@@output_charset = nil
|
|
23
|
+
@@gettext_classes = []
|
|
24
|
+
|
|
25
|
+
# Find textdomain by name
|
|
26
|
+
def self.textdomain_pool(domainname)
|
|
27
|
+
@@textdomain_pool[domainname]
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# create or find a textdomain-manager for an given object/class
|
|
31
|
+
def self.get(obj)
|
|
32
|
+
klass = ClassInfo.normalize_class(obj)
|
|
33
|
+
manager = @@textdomain_manager_pool[klass]
|
|
34
|
+
return manager if manager
|
|
35
|
+
@@textdomain_manager_pool[klass] = TextDomainManager.new
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Set the value whether cache messages or not.
|
|
39
|
+
# true to cache messages, otherwise false.
|
|
40
|
+
#
|
|
41
|
+
# Default is true. If $DEBUG is false, messages are not checked even if
|
|
42
|
+
# this value is true.
|
|
43
|
+
def self.cached=(val)
|
|
44
|
+
TextDomain.cached = val
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Return the cached value.
|
|
48
|
+
def self.cached?
|
|
49
|
+
TextDomain.cached?
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Gets the output charset.
|
|
53
|
+
def self.output_charset
|
|
54
|
+
@@output_charset
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Sets the output charset.The program can have a output charset.
|
|
58
|
+
def self.output_charset=(charset)
|
|
59
|
+
@@output_charset = charset
|
|
60
|
+
@@textdomain_pool.each do |key, textdomain|
|
|
61
|
+
textdomain.output_charset = charset
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# bind textdomain to the class.
|
|
66
|
+
def self.bind_to(klass, domainname, options = {})
|
|
67
|
+
warn "Bind the domain '#{domainname}' to '#{klass}'. " if $DEBUG
|
|
68
|
+
|
|
69
|
+
charset = options[:output_charset] || self.output_charset
|
|
70
|
+
textdomain = create_or_find_textdomain(domainname,options[:path],charset)
|
|
71
|
+
|
|
72
|
+
target_klass = ClassInfo.normalize_class(klass)
|
|
73
|
+
get(target_klass).add(textdomain, options[:supported_language_tags])
|
|
74
|
+
add_to_gettext_classes(target_klass)
|
|
75
|
+
|
|
76
|
+
textdomain
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def self.each_textdomains(klass) #:nodoc:
|
|
80
|
+
ClassInfo.related_classes(klass, @@gettext_classes).each do |target|
|
|
81
|
+
msg = nil
|
|
82
|
+
get(target).textdomains.each do |textdomain|
|
|
83
|
+
yield textdomain
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
#
|
|
89
|
+
# Instance methods
|
|
90
|
+
#
|
|
91
|
+
|
|
92
|
+
# Returns the textdoman in the instance.
|
|
93
|
+
attr_reader :textdomains, :supported_language_tags
|
|
94
|
+
|
|
95
|
+
def initialize
|
|
96
|
+
@textdomains = []
|
|
97
|
+
@supported_language_tags = nil
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def add(textdomain, supported_language_tags)
|
|
101
|
+
@textdomains.unshift(textdomain) unless @textdomains.include? textdomain
|
|
102
|
+
@supported_language_tags = supported_language_tags if supported_language_tags
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# Translates msgid, but if there are no localized text,
|
|
106
|
+
# it returns a last part of msgid separeted "div" or whole of the msgid with no "div".
|
|
107
|
+
#
|
|
108
|
+
# * msgid: the message id.
|
|
109
|
+
# * div: separator or nil.
|
|
110
|
+
# * Returns: the localized text by msgid. If there are no localized text,
|
|
111
|
+
# it returns a last part of msgid separeted "div".
|
|
112
|
+
def translate_singluar_message(klass, msgid, div = '|')
|
|
113
|
+
lang = Locale.candidates(:supported_language_tags => @supported_language_tags,
|
|
114
|
+
:type => :posix)[0]
|
|
115
|
+
translate_singluar_message_to(lang, klass, msgid, div)
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def translate_singluar_message_to(lang, klass, msgid, div = '|') #:nodoc:
|
|
119
|
+
msg = nil
|
|
120
|
+
# Find messages from related classes.
|
|
121
|
+
self.class.each_textdomains(klass) do |textdomain|
|
|
122
|
+
msg = textdomain.translate_singluar_message(lang, msgid)
|
|
123
|
+
break if msg
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# If not found, return msgid.
|
|
127
|
+
msg ||= msgid
|
|
128
|
+
if div and msg == msgid
|
|
129
|
+
if index = msg.rindex(div)
|
|
130
|
+
msg = msg[(index + 1)..-1]
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
msg
|
|
134
|
+
end
|
|
135
|
+
memoize :translate_singluar_message_to unless $DEBUG
|
|
136
|
+
|
|
137
|
+
# This function is similar to the get_singluar_message function
|
|
138
|
+
# as it finds the message catalogs in the same way.
|
|
139
|
+
# But it takes two extra arguments for plural form.
|
|
140
|
+
# The msgid parameter must contain the singular form of the string to be converted.
|
|
141
|
+
# It is also used as the key for the search in the catalog.
|
|
142
|
+
# The msgid_plural parameter is the plural form.
|
|
143
|
+
# The parameter n is used to determine the plural form.
|
|
144
|
+
# If no message catalog is found msgid1 is returned if n == 1, otherwise msgid2.
|
|
145
|
+
# And if msgid includes "div", it returns a last part of msgid separeted "div".
|
|
146
|
+
#
|
|
147
|
+
# * msgid: the singular form with "div". (e.g. "Special|An apple", "An apple")
|
|
148
|
+
# * msgid_plural: the plural form. (e.g. "%{num} Apples")
|
|
149
|
+
# * n: a number used to determine the plural form.
|
|
150
|
+
# * div: the separator. Default is "|".
|
|
151
|
+
# * Returns: the localized text which key is msgid_plural if n is plural(follow plural-rule) or msgid.
|
|
152
|
+
# "plural-rule" is defined in po-file.
|
|
153
|
+
#
|
|
154
|
+
# or
|
|
155
|
+
#
|
|
156
|
+
# * [msgid, msgid_plural] : msgid and msgid_plural an Array
|
|
157
|
+
# * n: a number used to determine the plural form.
|
|
158
|
+
# * div: the separator. Default is "|".
|
|
159
|
+
def translate_plural_message(klass, arg1, arg2, arg3 = "|", arg4 = "|")
|
|
160
|
+
lang = Locale.candidates(:supported_language_tags => @supported_language_tags,
|
|
161
|
+
:type => :posix)[0]
|
|
162
|
+
translate_plural_message_to(lang, klass, arg1, arg2, arg3, arg4)
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def translate_plural_message_to(lang, klass, arg1, arg2, arg3 = "|", arg4 = "|")
|
|
166
|
+
# parse arguments
|
|
167
|
+
if arg1.kind_of?(Array)
|
|
168
|
+
msgid = arg1[0]
|
|
169
|
+
msgid_plural = arg1[1]
|
|
170
|
+
n = arg2
|
|
171
|
+
if arg3 and arg3.kind_of? Numeric
|
|
172
|
+
raise ArgumentError, _("3rd parmeter is wrong: value = %{number}") % {:number => arg3}
|
|
173
|
+
end
|
|
174
|
+
div = arg3
|
|
175
|
+
else
|
|
176
|
+
msgid = arg1
|
|
177
|
+
msgid_plural = arg2
|
|
178
|
+
n = arg3
|
|
179
|
+
div = arg4
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
# Find messages from related classes.
|
|
183
|
+
msgs = nil
|
|
184
|
+
self.class.each_textdomains(klass) do |textdomain|
|
|
185
|
+
msgs = textdomain.translate_plural_message(lang, msgid, msgid_plural)
|
|
186
|
+
break if msgs
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
# If not found, return msgid.
|
|
190
|
+
msgs = [[msgid, msgid_plural], "n != 1"] unless msgs
|
|
191
|
+
|
|
192
|
+
msgstrs = msgs[0]
|
|
193
|
+
if div and msgstrs[0] == msgid and index = msgstrs[0].rindex(div)
|
|
194
|
+
msgstrs[0] = msgstrs[0][(index + 1)..-1]
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
# Return the singular or plural message.
|
|
198
|
+
plural = eval(msgs[1])
|
|
199
|
+
return msgstrs[plural] if plural.kind_of?(Numeric)
|
|
200
|
+
return plural ? msgstrs[1] : msgstrs[0]
|
|
201
|
+
end
|
|
202
|
+
memoize :translate_plural_message_to unless $DEBUG
|
|
203
|
+
|
|
204
|
+
# for testing.
|
|
205
|
+
def self.clear_all_textdomains
|
|
206
|
+
@@textdomain_pool = {}
|
|
207
|
+
@@textdomain_manager_pool = {}
|
|
208
|
+
@@gettext_classes = []
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
private
|
|
212
|
+
|
|
213
|
+
def self.add_to_gettext_classes(klass)
|
|
214
|
+
@@gettext_classes << klass unless @@gettext_classes.include? klass
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
def self.create_or_find_textdomain(name, path, charset)#:nodoc:
|
|
218
|
+
textdomain = @@textdomain_pool[name]
|
|
219
|
+
return textdomain if textdomain
|
|
220
|
+
|
|
221
|
+
@@textdomain_pool[name] = TextDomain.new(name, path, charset)
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
end
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
tools.rb - Utility functions
|
|
3
|
+
|
|
4
|
+
Copyright (C) 2005-2008 Masao Mutoh
|
|
5
|
+
|
|
6
|
+
You may redistribute it and/or modify it under the same
|
|
7
|
+
license terms as Ruby.
|
|
8
|
+
=end
|
|
9
|
+
|
|
10
|
+
require 'rbconfig'
|
|
11
|
+
if /mingw|mswin|mswin32/ =~ RUBY_PLATFORM
|
|
12
|
+
ENV['PATH'] = %w(bin lib).collect{|dir|
|
|
13
|
+
"#{Config::CONFIG["prefix"]}\\lib\\GTK\\#{dir};"
|
|
14
|
+
}.join('') + ENV['PATH']
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
require 'gettext/tools/rgettext'
|
|
18
|
+
require 'gettext/tools/rmsgfmt'
|
|
19
|
+
require 'gettext/mofile'
|
|
20
|
+
require 'fileutils'
|
|
21
|
+
|
|
22
|
+
module GetText
|
|
23
|
+
bindtextdomain "rgettext"
|
|
24
|
+
|
|
25
|
+
BOM_UTF8 = [0xef, 0xbb, 0xbf].pack("c3")
|
|
26
|
+
|
|
27
|
+
# Currently, GNU msgmerge doesn't accept BOM.
|
|
28
|
+
# This mesthod remove the UTF-8 BOM from the po-file.
|
|
29
|
+
def remove_bom(path) #:nodoc:
|
|
30
|
+
bom = IO.read(path, 3)
|
|
31
|
+
if bom == BOM_UTF8
|
|
32
|
+
data = IO.read(path)[3..-1]
|
|
33
|
+
File.open(path, "w") {|f| f.write(data)}
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Merges two Uniforum style .po files together.
|
|
38
|
+
#
|
|
39
|
+
# *Note* This function requires "msgmerge" tool included in GNU GetText. So you need to install GNU GetText.
|
|
40
|
+
#
|
|
41
|
+
# The def.po file is an existing PO file with translations which will be taken
|
|
42
|
+
# over to the newly created file as long as they still match; comments will be preserved,
|
|
43
|
+
# but extracted comments and file positions will be discarded.
|
|
44
|
+
#
|
|
45
|
+
# The ref.pot file is the last created PO file with up-to-date source references but
|
|
46
|
+
# old translations, or a PO Template file (generally created by rgettext);
|
|
47
|
+
# any translations or comments in the file will be discarded, however dot
|
|
48
|
+
# comments and file positions will be preserved. Where an exact match
|
|
49
|
+
# cannot be found, fuzzy matching is used to produce better results.
|
|
50
|
+
#
|
|
51
|
+
# Usually you don't need to call this function directly. Use GetText.update_pofiles instead.
|
|
52
|
+
#
|
|
53
|
+
# * defpo: a po-file. translations referring to old sources
|
|
54
|
+
# * refpo: a po-file. references to new sources
|
|
55
|
+
# * app_version: the application information which appears "Project-Id-Version: #{app_version}" in the pot/po-files.
|
|
56
|
+
# * Returns: self
|
|
57
|
+
def msgmerge(defpo, refpo, app_version, options={})
|
|
58
|
+
verbose = options.delete(:verbose)
|
|
59
|
+
puts "msgmerge called" if verbose
|
|
60
|
+
$stderr.print defpo + " "
|
|
61
|
+
|
|
62
|
+
content = merge_po_files(defpo,refpo,options.delete(:msgmerge),verbose)
|
|
63
|
+
|
|
64
|
+
if content.empty?
|
|
65
|
+
# report failure
|
|
66
|
+
failed_filename = refpo + "~"
|
|
67
|
+
FileUtils.cp(refpo, failed_filename)
|
|
68
|
+
$stderr.puts _("Failed to merge with %{defpo}") % {:defpo => defpo}
|
|
69
|
+
$stderr.puts _("New .pot was copied to %{failed_filename}") %{:failed_filename => failed_filename}
|
|
70
|
+
raise _("Check these po/pot-files. It may have syntax errors or something wrong.")
|
|
71
|
+
else
|
|
72
|
+
# update version and save merged data
|
|
73
|
+
content.sub!(/(Project-Id-Version\:).*$/, "\\1 #{app_version}\\n\"")
|
|
74
|
+
File.open(defpo, "w") {|f|f.write(content)}
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
self
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Creates mo-files using #{po_root}/#{lang}/*.po an put them to
|
|
81
|
+
# #{targetdir}/#{targetdir_rule}/.
|
|
82
|
+
#
|
|
83
|
+
# This is a convenience function of GetText.rmsgfmt for multiple target files.
|
|
84
|
+
# * options: options as a Hash.
|
|
85
|
+
# * verbose: true if verbose mode, otherwise false
|
|
86
|
+
# * po_root: the root directory of po-files.
|
|
87
|
+
# * mo_root: the target root directory where the mo-files are stored.
|
|
88
|
+
# * mo_path_rule: the target directory for each mo-files.
|
|
89
|
+
def create_mofiles(options = {})
|
|
90
|
+
options = {:po_root => "./po"}.merge(options)
|
|
91
|
+
|
|
92
|
+
Dir.glob(File.join(options[:po_root], "*/*.po")) do |po_file|
|
|
93
|
+
mo_file = mo_file_from_po_file(po_file,options)
|
|
94
|
+
$stderr.print %Q[#{po_file} -> #{mo_file} ... ] if options[:verbose]
|
|
95
|
+
FileUtils.mkdir_p(File.dirname(mo_file))
|
|
96
|
+
rmsgfmt(po_file, mo_file)
|
|
97
|
+
$stderr.puts "Done." if options[:verbose]
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
# At first, this creates the #{po_root}/#{domainname}.pot file using GetText.rgettext.
|
|
103
|
+
# In the second step, this updates(merges) the #{po_root}/#{domainname}.pot and all of the
|
|
104
|
+
# #{po_root}/#{lang}/#{domainname}.po files under "po_root" using "msgmerge".
|
|
105
|
+
#
|
|
106
|
+
# *Note* "msgmerge" tool is included in GNU GetText. So you need to install GNU GetText.
|
|
107
|
+
#
|
|
108
|
+
# See <HOWTO maintain po/mo files(http://www.yotabanana.com/hiki/ruby-gettext-howto-manage.html)> for more detals.
|
|
109
|
+
# * domainname: the textdomain name.
|
|
110
|
+
# * targetfiles: An Array of target files, that should be parsed for messages (See GetText.rgettext for more details).
|
|
111
|
+
# * app_version: the application information which appears "Project-Id-Version: #{app_version}" in the pot/po-files.
|
|
112
|
+
# * options: a hash with following possible settings
|
|
113
|
+
# :lang - update files only for one language - the language specified by this option
|
|
114
|
+
# :po_root - the root directory of po-files
|
|
115
|
+
# :msgmerge - an array with the options, passed through to the gnu msgmerge tool
|
|
116
|
+
# symbols are automatically translated to options with dashes,
|
|
117
|
+
# example: [:no_wrap, :no_fuzzy_matching, :sort_output] translated to '--no-fuzzy-matching --sort-output'
|
|
118
|
+
# :verbose - true to show verbose messages. default is false.
|
|
119
|
+
#
|
|
120
|
+
# Example: GetText.update_pofiles("myapp", Dir.glob("lib/*.rb"), "myapp 1.0.0", :verbose => true)
|
|
121
|
+
def update_pofiles(textdomain, files, app_version, options = {})
|
|
122
|
+
puts options.inspect if options[:verbose]
|
|
123
|
+
|
|
124
|
+
#write found messages to tmp.pot
|
|
125
|
+
temp_pot = "tmp.pot"
|
|
126
|
+
rgettext(files, temp_pot)
|
|
127
|
+
|
|
128
|
+
#merge tmp.pot and existing pot
|
|
129
|
+
po_root = options.delete(:po_root) || "po"
|
|
130
|
+
FileUtils.mkdir_p(po_root)
|
|
131
|
+
msgmerge("#{po_root}/#{textdomain}.pot", temp_pot, app_version, options.dup)
|
|
132
|
+
|
|
133
|
+
#update local po-files
|
|
134
|
+
only_one_language = options.delete(:lang)
|
|
135
|
+
if only_one_language
|
|
136
|
+
msgmerge("#{po_root}/#{only_one_language}/#{textdomain}.po", temp_pot, app_version, options.dup)
|
|
137
|
+
else
|
|
138
|
+
Dir.glob("#{po_root}/*/#{textdomain}.po") do |po_file|
|
|
139
|
+
msgmerge(po_file, temp_pot, app_version, options.dup)
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
File.delete(temp_pot)
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
private
|
|
147
|
+
|
|
148
|
+
# Merge 2 po files, using msgmerge
|
|
149
|
+
def merge_po_files(po_a,po_b,msgmerge_options=[],verbose=false)
|
|
150
|
+
return File.read(po_b) unless FileTest.exist? po_a
|
|
151
|
+
|
|
152
|
+
cmd = ENV["MSGMERGE_PATH"] || "msgmerge"
|
|
153
|
+
ensure_command_exists(cmd)
|
|
154
|
+
|
|
155
|
+
remove_bom(po_a)
|
|
156
|
+
|
|
157
|
+
cmd_params = array_to_cli_options(msgmerge_options)
|
|
158
|
+
to_run = "#{cmd} #{cmd_params} #{po_a} #{po_b}"
|
|
159
|
+
puts "\nrunning #{to_run}" if verbose
|
|
160
|
+
`#{to_run}`
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
# convert an array of String/Symbol to cli options
|
|
164
|
+
def array_to_cli_options(array)
|
|
165
|
+
[*array].map do |o|
|
|
166
|
+
o.kind_of?(Symbol) ? "--#{o}".gsub('_','-') : o.to_s
|
|
167
|
+
end.join(' ')
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
def ensure_command_exists(cmd)
|
|
171
|
+
`#{cmd} --help`
|
|
172
|
+
unless $? && $?.success?
|
|
173
|
+
raise _("`%{cmd}' can not be found. \nInstall GNU Gettext then set PATH or MSGMERGE_PATH correctly.") % {:cmd => cmd}
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
# where lies the mo file for a given po_file
|
|
178
|
+
# generare directory unless it exists
|
|
179
|
+
def mo_file_from_po_file(po_file,options)
|
|
180
|
+
options = {
|
|
181
|
+
:mo_root => "./data/locale",
|
|
182
|
+
:mo_path_rule => "%{lang}/LC_MESSAGES"
|
|
183
|
+
}.merge(options)
|
|
184
|
+
|
|
185
|
+
lang, textdomain = %r[/([^/]+?)/(.*)\.po].match(po_file[options[:po_root].size..-1]).to_a[1,2]
|
|
186
|
+
|
|
187
|
+
mo_dir_rule = File.join(options[:mo_root], options[:mo_path_rule])
|
|
188
|
+
mo_dir = mo_dir_rule % {:lang => lang}
|
|
189
|
+
File.join(mo_dir, "#{textdomain}.mo")
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
if __FILE__ == $0
|
|
194
|
+
GetText.update_pofiles("foo", ARGV, "foo 1.1.0")
|
|
195
|
+
end
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
=begin
|
|
3
3
|
rgettext.rb - Generate a .pot file.
|
|
4
4
|
|
|
5
|
-
Copyright (C) 2003-
|
|
5
|
+
Copyright (C) 2003-2009 Masao Mutoh
|
|
6
6
|
Copyright (C) 2001,2002 Yasushi Shoji, Masao Mutoh
|
|
7
7
|
|
|
8
8
|
Yasushi Shoji <yashi at atmark-techno.com>
|
|
9
|
-
Masao Mutoh <
|
|
9
|
+
Masao Mutoh <mutomasa at gmail.com>
|
|
10
10
|
|
|
11
11
|
You may redistribute it and/or modify it under the same
|
|
12
12
|
license terms as Ruby.
|
|
@@ -32,16 +32,16 @@ module GetText
|
|
|
32
32
|
[
|
|
33
33
|
["glade.rb", "GladeParser"],
|
|
34
34
|
["erb.rb", "ErbParser"],
|
|
35
|
-
["active_record.rb", "ActiveRecordParser"],
|
|
35
|
+
# ["active_record.rb", "ActiveRecordParser"],
|
|
36
36
|
# ["ripper.rb", "RipperParser"],
|
|
37
37
|
["ruby.rb", "RubyParser"] # Default parser.
|
|
38
38
|
].each do |f, klass|
|
|
39
39
|
begin
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
require "gettext/parser/#{f}"
|
|
41
|
+
@ex_parsers << GetText.const_get(klass)
|
|
42
42
|
rescue
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
$stderr.puts _("'%{klass}' is ignored.") % {:klass => klass}
|
|
44
|
+
$stderr.puts $! if $DEBUG
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
|
|
@@ -73,7 +73,8 @@ module GetText
|
|
|
73
73
|
sign = off <= 0 ? '-' : '+'
|
|
74
74
|
time += sprintf('%s%02d%02d', sign, *(off.abs / 60).divmod(60))
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
<<TITLE
|
|
77
|
+
# SOME DESCRIPTIVE TITLE.
|
|
77
78
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
|
78
79
|
# This file is distributed under the same license as the PACKAGE package.
|
|
79
80
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
@@ -89,42 +90,42 @@ msgstr ""
|
|
|
89
90
|
"MIME-Version: 1.0\\n"
|
|
90
91
|
"Content-Type: text/plain; charset=UTF-8\\n"
|
|
91
92
|
"Content-Transfer-Encoding: 8bit\\n"
|
|
92
|
-
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\\n"
|
|
93
|
+
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\\n"
|
|
94
|
+
TITLE
|
|
93
95
|
end
|
|
94
96
|
|
|
95
97
|
def generate_pot(ary) # :nodoc:
|
|
96
98
|
str = ""
|
|
97
|
-
result = Array.new
|
|
98
99
|
ary.each do |key|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
100
|
+
msgid = key.shift
|
|
101
|
+
curr_pos = MAX_LINE_LEN
|
|
102
|
+
key.each do |e|
|
|
103
|
+
if curr_pos + e.size > MAX_LINE_LEN
|
|
104
|
+
str << "\n#:"
|
|
105
|
+
curr_pos = 3
|
|
106
|
+
else
|
|
107
|
+
curr_pos += (e.size + 1)
|
|
108
|
+
end
|
|
109
|
+
str << " " << e
|
|
110
|
+
end
|
|
111
|
+
msgid.gsub!(/"/, '\"')
|
|
112
|
+
msgid.gsub!(/\r/, '')
|
|
113
|
+
if msgid.include?("\004")
|
|
114
|
+
msgctxt, msgid = msgid.split(/\004/)
|
|
115
|
+
str << "\nmsgctxt \"" << msgctxt << "\"\n"
|
|
115
116
|
else
|
|
116
117
|
str << "\n"
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
118
|
+
end
|
|
119
|
+
if msgid.include?("\000")
|
|
120
|
+
ids = msgid.split(/\000/)
|
|
121
|
+
str << "msgid \"" << ids[0] << "\"\n"
|
|
122
|
+
str << "msgid_plural \"" << ids[1] << "\"\n"
|
|
123
|
+
str << "msgstr[0] \"\"\n"
|
|
124
|
+
str << "msgstr[1] \"\"\n"
|
|
125
|
+
else
|
|
126
|
+
str << "msgid \"" << msgid << "\"\n"
|
|
127
|
+
str << "msgstr \"\"\n"
|
|
128
|
+
end
|
|
128
129
|
end
|
|
129
130
|
str
|
|
130
131
|
end
|
|
@@ -142,7 +143,7 @@ msgstr ""
|
|
|
142
143
|
single_msg[0] != plural_msg[0])
|
|
143
144
|
if single_msg[0] != key
|
|
144
145
|
warn %Q[Warning: n_("#{plural_msg[0].gsub(/\000/, '", "')}") and n_("#{single_msg[0].gsub(/\000/, '", "')}") are duplicated. First msgid was used.]
|
|
145
|
-
|
|
146
|
+
used_plural_msgs << single_msg[0]
|
|
146
147
|
end
|
|
147
148
|
|
|
148
149
|
single_msg[1..-1].each do |line_info|
|
|
@@ -167,17 +168,17 @@ msgstr ""
|
|
|
167
168
|
def parse(files) # :nodoc:
|
|
168
169
|
ary = []
|
|
169
170
|
files.each do |file|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
171
|
+
begin
|
|
172
|
+
@ex_parsers.each do |klass|
|
|
173
|
+
if klass.target?(file)
|
|
174
|
+
ary = klass.parse(file, ary)
|
|
175
|
+
break
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
rescue
|
|
179
|
+
puts "Error occurs in " + file
|
|
180
|
+
raise
|
|
181
|
+
end
|
|
181
182
|
end
|
|
182
183
|
normalize(ary)
|
|
183
184
|
end
|
|
@@ -193,33 +194,33 @@ msgstr ""
|
|
|
193
194
|
opts.separator(_("Specific options:"))
|
|
194
195
|
|
|
195
196
|
opts.on("-o", "--output=FILE", _("write output to specified file")) do |out|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
197
|
+
unless FileTest.exist? out
|
|
198
|
+
output = File.new(File.expand_path(out), "w+")
|
|
199
|
+
else
|
|
200
|
+
$stderr.puts(_("File '%s' already exists.") % out)
|
|
201
|
+
exit 1
|
|
202
|
+
end
|
|
202
203
|
end
|
|
203
204
|
|
|
204
205
|
opts.on("-r", "--require=library", _("require the library before executing rgettext")) do |out|
|
|
205
|
-
|
|
206
|
+
require out
|
|
206
207
|
end
|
|
207
208
|
|
|
208
209
|
opts.on("-d", "--debug", _("run in debugging mode")) do
|
|
209
|
-
|
|
210
|
+
$DEBUG = true
|
|
210
211
|
end
|
|
211
212
|
|
|
212
213
|
opts.on_tail("--version", _("display version information and exit")) do
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
214
|
+
puts "#{$0} #{VERSION} (#{DATE})"
|
|
215
|
+
puts "#{File.join(Config::CONFIG["bindir"], Config::CONFIG["RUBY_INSTALL_NAME"])} #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
|
|
216
|
+
exit
|
|
216
217
|
end
|
|
217
218
|
|
|
218
219
|
opts.parse!(ARGV)
|
|
219
220
|
|
|
220
221
|
if ARGV.size == 0
|
|
221
|
-
|
|
222
|
-
|
|
222
|
+
puts opts.help
|
|
223
|
+
exit 1
|
|
223
224
|
end
|
|
224
225
|
|
|
225
226
|
[ARGV, output]
|
|
@@ -227,38 +228,34 @@ msgstr ""
|
|
|
227
228
|
|
|
228
229
|
def run(targetfiles = nil, out = STDOUT) # :nodoc:
|
|
229
230
|
if targetfiles.is_a? String
|
|
230
|
-
|
|
231
|
+
targetfiles = [targetfiles]
|
|
231
232
|
elsif ! targetfiles
|
|
232
|
-
|
|
233
|
+
targetfiles, out = check_options
|
|
233
234
|
end
|
|
234
235
|
|
|
235
236
|
if targetfiles.size == 0
|
|
236
|
-
|
|
237
|
+
raise ArgumentError, _("no input files")
|
|
237
238
|
end
|
|
238
239
|
|
|
239
240
|
if out.is_a? String
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
241
|
+
File.open(File.expand_path(out), "w+") do |file|
|
|
242
|
+
file.puts generate_pot_header
|
|
243
|
+
file.puts generate_pot(parse(targetfiles))
|
|
244
|
+
end
|
|
244
245
|
else
|
|
245
|
-
|
|
246
|
-
|
|
246
|
+
out.puts generate_pot_header
|
|
247
|
+
out.puts generate_pot(parse(targetfiles))
|
|
247
248
|
end
|
|
248
249
|
self
|
|
249
250
|
end
|
|
250
251
|
end
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
# Creates a po-file from targetfiles(ruby-script-files, ActiveRecord, .rhtml files, glade-2 XML files),
|
|
252
|
+
extend self
|
|
253
|
+
# Creates a po-file from targetfiles(ruby-script-files, .rhtml files, glade-2 XML files),
|
|
254
254
|
# then output the result to out. If no parameter is set, it behaves same as command line tools(rgettet).
|
|
255
255
|
#
|
|
256
256
|
# This function is a part of GetText.create_pofiles.
|
|
257
257
|
# Usually you don't need to call this function directly.
|
|
258
258
|
#
|
|
259
|
-
# *Note* for ActiveRecord, you need to run your database server and configure the config/database.xml
|
|
260
|
-
# correctly before execute this function.
|
|
261
|
-
#
|
|
262
259
|
# * targetfiles: An Array of po-files or nil.
|
|
263
260
|
# * out: output IO or output path.
|
|
264
261
|
# * Returns: self
|