gettext 1.10.0 → 1.90.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 +156 -2
- data/NEWS +28 -0
- data/README +128 -138
- data/Rakefile +83 -43
- data/data/locale/es/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/hu/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/hu/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/ua/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/ua/LC_MESSAGES/rgettext.mo +0 -0
- data/doc/classes/ActiveRecord/Base.html +360 -0
- data/doc/classes/ActiveRecord/ConnectionAdapters/Column.html +182 -0
- data/doc/classes/ActiveRecord/Migration.html +118 -0
- data/doc/classes/GetText.html +1790 -0
- data/doc/classes/GetText/ActiveRecordParser.html +236 -0
- data/doc/classes/GetText/Container.html +119 -0
- data/doc/classes/GetText/ErbContainer.html +223 -0
- data/doc/classes/GetText/ErbParser.html +156 -0
- data/doc/classes/GetText/GladeParser.html +133 -0
- data/doc/classes/GetText/NoboundTextDomainError.html +119 -0
- data/doc/classes/GetText/PoParser.html +169 -0
- data/doc/classes/GetText/Rails.html +293 -0
- data/doc/classes/GetText/RubyParser.html +123 -0
- data/doc/classes/GetText/TextDomain.html +572 -0
- data/doc/classes/GetText/TextDomainManager.html +443 -0
- data/doc/classes/Iconv.html +257 -0
- data/doc/classes/Iconv/Failure.html +105 -0
- data/doc/classes/Iconv/IllegalSequence.html +118 -0
- data/doc/classes/Iconv/InvalidCharacter.html +118 -0
- data/doc/classes/Iconv/InvalidEncoding.html +118 -0
- data/doc/classes/Locale.html +839 -0
- data/doc/classes/Locale/Object.html +799 -0
- data/doc/classes/Locale/SystemBase.html +271 -0
- data/doc/classes/Locale/SystemCGI.html +312 -0
- data/doc/classes/Locale/SystemJRuby.html +112 -0
- data/doc/classes/Locale/SystemPosix.html +113 -0
- data/doc/classes/Locale/SystemWin32.html +182 -0
- data/doc/classes/MOFile.html +678 -0
- data/doc/classes/MOFile/InvalidFormat.html +111 -0
- data/doc/classes/Module.html +158 -0
- data/doc/classes/String.html +225 -0
- data/doc/created.rid +1 -0
- data/doc/files/ChangeLog.html +2355 -0
- data/doc/files/README.html +510 -0
- data/doc/files/lib/gettext/active_record_rb.html +110 -0
- data/doc/files/lib/gettext/cgi_rb.html +110 -0
- data/doc/files/lib/gettext/container_rb.html +108 -0
- data/doc/files/lib/gettext/erb_rb.html +109 -0
- data/doc/files/lib/gettext/iconv_rb.html +109 -0
- data/doc/files/lib/gettext/mo_rb.html +108 -0
- data/doc/files/lib/gettext/parser/active_record_rb.html +119 -0
- data/doc/files/lib/gettext/parser/erb_rb.html +109 -0
- data/doc/files/lib/gettext/parser/glade_rb.html +109 -0
- data/doc/files/lib/gettext/parser/ruby_rb.html +110 -0
- data/doc/files/lib/gettext/poparser_rb.html +108 -0
- data/doc/files/lib/gettext/rails_compat_rb.html +108 -0
- data/doc/files/lib/gettext/rails_rb.html +112 -0
- data/doc/files/lib/gettext/rgettext_rb.html +110 -0
- data/doc/files/lib/gettext/rmsgfmt_rb.html +112 -0
- data/doc/files/lib/gettext/rmsgmerge_rb.html +112 -0
- data/doc/files/lib/gettext/string_rb.html +101 -0
- data/doc/files/lib/gettext/textdomain_rb.html +109 -0
- data/doc/files/lib/gettext/textdomainmanager_rb.html +109 -0
- data/doc/files/lib/gettext/utils_rb.html +111 -0
- data/doc/files/lib/gettext/version_rb.html +101 -0
- data/doc/files/lib/gettext_rb.html +113 -0
- data/doc/files/lib/locale/base_rb.html +101 -0
- data/doc/files/lib/locale/cgi_rb.html +108 -0
- data/doc/files/lib/locale/jruby_rb.html +110 -0
- data/doc/files/lib/locale/object_rb.html +101 -0
- data/doc/files/lib/locale/posix_rb.html +108 -0
- data/doc/files/lib/locale/win32_rb.html +110 -0
- data/doc/files/lib/locale/win32_table_rb.html +101 -0
- data/doc/files/lib/locale_rb.html +111 -0
- data/doc/fr_class_index.html +57 -0
- data/doc/fr_file_index.html +58 -0
- data/doc/fr_method_index.html +155 -0
- data/doc/index.html +24 -0
- data/doc/rdoc-style.css +208 -0
- data/lib/gettext.rb +102 -50
- data/lib/gettext/cgi.rb +2 -27
- data/lib/gettext/iconv.rb +76 -62
- data/lib/gettext/mo.rb +3 -3
- data/lib/gettext/parser/erb.rb +2 -2
- data/lib/gettext/rails.rb +69 -48
- data/lib/gettext/rgettext.rb +2 -2
- data/lib/gettext/rmsgmerge.rb +2 -2
- data/lib/gettext/string.rb +9 -5
- data/lib/gettext/textdomain.rb +3 -3
- data/lib/gettext/textdomainmanager.rb +5 -5
- data/lib/gettext/utils.rb +4 -3
- data/lib/gettext/version.rb +1 -1
- data/lib/{gettext/locale.rb → locale.rb} +11 -58
- data/lib/locale/base.rb +60 -0
- data/lib/{gettext/locale_cgi.rb → locale/cgi.rb} +30 -28
- data/lib/locale/jruby.rb +36 -0
- data/lib/{gettext/locale_object.rb → locale/object.rb} +78 -24
- data/lib/locale/posix.rb +22 -0
- data/lib/locale/win32.rb +48 -0
- data/lib/{gettext/locale_table_win32.rb → locale/win32_table.rb} +3 -2
- data/po/es/rails.po +1 -2
- data/po/hu/rails.po +139 -0
- data/po/hu/rgettext.po +126 -0
- data/po/ja/rails.po +5 -5
- data/po/ua/rails.po +150 -0
- data/po/ua/rgettext.po +132 -0
- data/pre-setup.rb +2 -4
- data/samples/cgi/cookie.cgi +1 -0
- data/samples/cgi/helloerb1.cgi +6 -3
- data/samples/cgi/helloerb2.cgi +6 -3
- data/samples/cgi/http.rb +3 -7
- data/samples/cgi/index.cgi +2 -1
- data/samples/cgi/locale/hu/LC_MESSAGES/helloerb1.mo +0 -0
- data/samples/cgi/locale/hu/LC_MESSAGES/helloerb2.mo +0 -0
- data/samples/cgi/locale/hu/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/hu/LC_MESSAGES/main.mo +0 -0
- data/samples/cgi/locale/ua/LC_MESSAGES/helloerb1.mo +0 -0
- data/samples/cgi/locale/ua/LC_MESSAGES/helloerb2.mo +0 -0
- data/samples/cgi/locale/ua/LC_MESSAGES/hellolib.mo +0 -0
- data/samples/cgi/locale/ua/LC_MESSAGES/main.mo +0 -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/ua/helloerb1.po +62 -0
- data/samples/cgi/po/ua/helloerb2.po +54 -0
- data/samples/cgi/po/ua/hellolib.po +26 -0
- data/samples/cgi/po/ua/main.po +84 -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/hello_noop.mo +0 -0
- data/samples/locale/hu/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/hu/LC_MESSAGES/helloglade2.mo +0 -0
- data/samples/locale/hu/LC_MESSAGES/hellogtk.mo +0 -0
- data/samples/locale/hu/LC_MESSAGES/hellotk.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/hello_noop.mo +0 -0
- data/samples/locale/ua/LC_MESSAGES/hello_plural.mo +0 -0
- data/samples/locale/ua/LC_MESSAGES/helloglade2.mo +0 -0
- data/samples/locale/ua/LC_MESSAGES/hellogtk.mo +0 -0
- data/samples/locale/ua/LC_MESSAGES/hellotk.mo +0 -0
- data/samples/po/hu/hello.po +22 -0
- data/samples/po/hu/hello2.po +30 -0
- data/samples/po/hu/hello_noop.po +26 -0
- data/samples/po/hu/hello_plural.po +25 -0
- data/samples/po/hu/helloglade2.po +31 -0
- data/samples/po/hu/hellogtk.po +22 -0
- data/samples/po/hu/hellotk.po +23 -0
- data/samples/po/ua/hello.po +22 -0
- data/samples/po/ua/hello2.po +30 -0
- data/samples/po/ua/hello_noop.po +26 -0
- data/samples/po/ua/hello_plural.po +29 -0
- data/samples/po/ua/helloglade2.po +34 -0
- data/samples/po/ua/hellogtk.po +22 -0
- data/samples/po/ua/hellotk.po +26 -0
- data/samples/rails/README +15 -31
- data/samples/rails/Rakefile +1 -1
- data/samples/rails/app/controllers/application.rb +11 -4
- data/samples/rails/app/controllers/articles_controller.rb +96 -0
- data/samples/rails/app/helpers/application_helper.rb +1 -1
- data/samples/rails/app/helpers/{blog_helper.rb → articles_helper.rb} +6 -7
- data/samples/rails/app/views/articles/edit.html.erb +18 -0
- data/samples/rails/app/views/articles/index.html.erb +17 -0
- data/samples/rails/app/views/articles/new.html.erb +16 -0
- data/samples/rails/app/views/articles/show.html.erb +6 -0
- data/samples/rails/app/views/layouts/articles.html.erb +26 -0
- data/samples/rails/config/boot.rb +104 -13
- data/samples/rails/config/database.yml +24 -21
- data/samples/rails/config/environment.rb +35 -30
- data/samples/rails/config/environments/development.rb +5 -6
- data/samples/rails/config/environments/production.rb +2 -3
- data/samples/rails/config/environments/test.rb +5 -2
- data/samples/rails/config/initializers/inflections.rb +10 -0
- data/samples/rails/config/initializers/mime_types.rb +5 -0
- data/samples/rails/config/routes.rb +30 -11
- data/samples/rails/db/migrate/001_create_articles.rb +14 -0
- data/samples/rails/db/schema.rb +16 -5
- data/samples/rails/lib/tasks/gettext.rake +2 -2
- 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/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/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/blog.pot +24 -24
- data/samples/rails/po/bs/blog.po +29 -29
- data/samples/rails/po/ca/blog.po +27 -27
- data/samples/rails/po/cs/blog.po +27 -27
- data/samples/rails/po/de/blog.po +27 -27
- data/samples/rails/po/el/blog.po +27 -27
- data/samples/rails/po/en/blog.po +24 -24
- data/samples/rails/po/eo/blog.po +27 -27
- data/samples/rails/po/es/blog.po +27 -27
- data/samples/rails/po/fr/blog.po +27 -27
- data/samples/rails/po/hr/blog.po +29 -29
- data/samples/rails/po/hu/blog.po +105 -0
- data/samples/rails/po/it/blog.po +27 -27
- data/samples/rails/po/ja/blog.po +27 -27
- data/samples/rails/po/ko/blog.po +27 -27
- data/samples/rails/po/nb/blog.po +26 -27
- data/samples/rails/po/nl/blog.po +27 -27
- data/samples/rails/po/pt_BR/blog.po +27 -27
- data/samples/rails/po/ru/blog.po +27 -27
- data/samples/rails/po/ua/blog.po +108 -0
- data/samples/rails/po/vi/blog.po +26 -31
- data/samples/rails/po/zh/blog.po +27 -27
- data/samples/rails/po/zh_TW/blog.po +27 -27
- data/samples/rails/public/404.html +27 -5
- data/samples/rails/public/422.html +30 -0
- data/samples/rails/public/500.html +27 -5
- data/samples/rails/public/index.html +6 -6
- data/samples/rails/public/javascripts/application.js +2 -0
- data/samples/rails/public/javascripts/controls.js +532 -319
- data/samples/rails/public/javascripts/dragdrop.js +521 -133
- data/samples/rails/public/javascripts/effects.js +708 -442
- data/samples/rails/public/javascripts/prototype.js +3393 -953
- data/samples/rails/public/stylesheets/blog.css +4 -0
- data/samples/rails/public/stylesheets/scaffold.css +5 -5
- data/samples/rails/test/functional/articles_controller_test.rb +51 -0
- data/samples/rails/test/test_helper.rb +31 -19
- data/samples/rails/test/unit/article_test.rb +2 -9
- data/samples/rails/vendor/plugins/gettext/init.rb +5 -3
- data/samples/rails/vendor/plugins/gettext/lib/gettext_plugin.rb +9 -10
- data/samples/rails/vendor/plugins/gettext/locale/eo/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/ua/LC_MESSAGES/gettext_plugin.mo +0 -0
- data/samples/rails/vendor/plugins/gettext/po/eo/gettext_plugin.po +28 -0
- data/samples/rails/vendor/plugins/gettext/po/hu/gettext_plugin.po +27 -0
- data/samples/rails/vendor/plugins/gettext/po/ua/gettext_plugin.po +30 -0
- data/test/Rakefile +2 -1
- data/test/benchmark.rb +28 -0
- data/test/fixtures/topic.rb +15 -0
- data/test/rails/Rakefile +2 -1
- data/test/rails/app/controllers/articles_controller.rb +1 -1
- data/test/rails/app/controllers/users_controller.rb +10 -0
- data/test/rails/app/models/user.rb +2 -1
- data/test/rails/app/views/articles/{_form.rhtml → _form.html.erb} +0 -0
- data/test/rails/app/views/articles/active_form_error.html.erb +1 -0
- data/test/rails/app/views/articles/change_title_error_messages_for.html.erb +21 -0
- data/test/rails/app/views/articles/{edit.rhtml → edit.html.erb} +0 -0
- data/test/rails/app/views/articles/{list.rhtml → list.html.erb} +0 -3
- data/test/rails/app/views/articles/{list_fr.rhtml → list_fr.html.erb} +0 -0
- data/test/rails/app/views/articles/{multi_error_messages_for.rhtml → multi_error_messages_for.html.erb} +0 -0
- data/test/rails/app/views/articles/{new.rhtml → new.html.erb} +0 -0
- data/test/rails/app/views/articles/{show.rhtml → show.html.erb} +0 -0
- data/test/rails/app/views/layouts/{application.rhtml → application.html.erb} +0 -0
- data/test/rails/app/views/layouts/{mailer.rhtml → mailer.html.erb} +0 -0
- data/test/rails/app/views/layouts/users.html.erb +13 -0
- data/test/rails/app/views/users/custom_error_message.html.erb +13 -0
- data/test/rails/app/views/users/custom_error_message_fr.html.erb +13 -0
- data/test/rails/config/environment.rb +6 -1
- data/test/rails/config/environments/development.rb +0 -3
- data/test/rails/db/schema.rb +17 -10
- data/test/rails/locale/ja/LC_MESSAGES/rails_test.mo +0 -0
- data/test/rails/log/development.log +136 -29
- data/test/rails/log/test.log +2002 -128
- data/test/rails/po/ja/rails_test.po +68 -61
- data/test/rails/po/rails_test.pot +57 -55
- data/test/rails/test/fixtures/users.yml +5 -0
- data/test/rails/test/functional/articles_controller_test.rb +6 -1
- data/test/rails/test/functional/users_controller_test.rb +65 -0
- data/test/rails/test/result/en/custom_error_message.html +83 -0
- data/test/rails/test/result/en/custom_error_message_with_plural.html +83 -0
- data/test/rails/test/result/en/list.html +0 -3
- data/test/rails/test/result/en/multi_error_messages_for.html +1 -1
- data/test/rails/test/result/fr/custom_error_message.html +83 -0
- data/test/rails/test/result/fr/custom_error_message_with_plural.html +83 -0
- data/test/rails/test/result/ja/custom_error_message.html +83 -0
- data/test/rails/test/result/ja/custom_error_message_with_plural.html +83 -0
- data/test/rails/test/result/ja/list.html +0 -3
- data/test/rails/test/result/ja/multi_error_messages_for.html +1 -1
- data/test/test.sh +5 -7
- data/test/{gettext_test_active_record.rb → test_active_record.rb} +20 -10
- data/test/{gettext_test_cgi.rb → test_cgi.rb} +0 -0
- data/test/{gettext_test.rb → test_gettext.rb} +91 -9
- data/test/test_java.sh +12 -0
- data/test/{gettext_test_locale.rb → test_locale.rb} +3 -8
- data/test/{gettext_test_multi_textdomain.rb → test_multi_textdomain.rb} +2 -2
- data/test/{gettext_test_parser.rb → test_parser.rb} +77 -77
- data/test/{gettext_test_rails.rb → test_rails.rb} +0 -0
- data/test/{gettext_test_rails_caching.rb → test_rails_caching.rb} +16 -2
- data/test/{gettext_test_string.rb → test_string.rb} +1 -0
- data/test/{test_rubyparser_N.rb → testlib/N_.rb} +0 -0
- data/test/testlib/erb.rhtml +15 -0
- data/test/testlib/erb.rxml +16 -0
- data/test/{test_rubyparser.rb → testlib/gettext.rb} +0 -0
- data/test/testlib/gladeparser.glade +183 -0
- data/test/{test_rubyparser_n_.rb → testlib/ngettext.rb} +0 -0
- data/test/{test_nsgettext.rb → testlib/nsgettext.rb} +0 -0
- data/test/{test_sgettext.rb → testlib/sgettext.rb} +0 -0
- data/test/{testlib1.rb → testlib/testlib1.rb} +0 -0
- data/test/{testlib2.rb → testlib/testlib2.rb} +1 -1
- data/test/{testlib3.rb → testlib/testlib3.rb} +0 -0
- data/test/{testlib4.rb → testlib/testlib4.rb} +1 -1
- data/test/{testlib5.rb → testlib/testlib5.rb} +0 -0
- data/test/{testlib6.rb → testlib/testlib6.rb} +0 -0
- metadata +1374 -1171
- data/ext/gettext/extconf.rb +0 -20
- data/ext/gettext/locale_system.c +0 -83
- data/lib/gettext/locale_posix.rb +0 -82
- data/lib/gettext/locale_win32.rb +0 -82
- data/samples/cgi/ruby.bat +0 -4
- data/samples/rails/app/controllers/blog_controller.rb +0 -58
- data/samples/rails/app/views/blog/_form.rhtml +0 -25
- data/samples/rails/app/views/blog/edit.rhtml +0 -22
- data/samples/rails/app/views/blog/list.rhtml +0 -29
- data/samples/rails/app/views/blog/new.rhtml +0 -21
- data/samples/rails/app/views/blog/show.rhtml +0 -18
- data/samples/rails/app/views/layouts/blog.rhtml +0 -36
- data/samples/rails/test/functional/blog_controller_test.rb +0 -98
- data/test/gettext_runner.rb +0 -22
data/lib/gettext.rb
CHANGED
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
You may redistribute it and/or modify it under the same
|
|
11
11
|
license terms as Ruby.
|
|
12
12
|
|
|
13
|
-
$Id: gettext.rb,v 1.
|
|
13
|
+
$Id: gettext.rb,v 1.37 2008/01/29 16:30:29 mutoh Exp $
|
|
14
14
|
=end
|
|
15
15
|
|
|
16
16
|
require 'rbconfig'
|
|
17
17
|
require 'gettext/version'
|
|
18
18
|
require 'gettext/mo'
|
|
19
|
-
require '
|
|
19
|
+
require 'locale'
|
|
20
20
|
require 'gettext/textdomainmanager'
|
|
21
21
|
require 'gettext/string'
|
|
22
22
|
|
|
@@ -29,7 +29,7 @@ module GetText
|
|
|
29
29
|
mod.extend self
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
@@__cached =
|
|
32
|
+
@@__cached = ! $DEBUG
|
|
33
33
|
|
|
34
34
|
# Set the value whether cache messages or not.
|
|
35
35
|
# true to cache messages, otherwise false.
|
|
@@ -45,11 +45,14 @@ module GetText
|
|
|
45
45
|
def cached?
|
|
46
46
|
@@__cached
|
|
47
47
|
end
|
|
48
|
-
|
|
48
|
+
|
|
49
49
|
# Clear the cached messages.
|
|
50
50
|
def clear_cache
|
|
51
51
|
@@__cache_msgids = {}
|
|
52
52
|
@@__cache_nmsgids = {}
|
|
53
|
+
@@__cache_target_classes = {}
|
|
54
|
+
@@__cache_bound_target = {}
|
|
55
|
+
@@__cache_bound_targets = {}
|
|
53
56
|
end
|
|
54
57
|
|
|
55
58
|
@@__textdomainmanagers = Hash.new
|
|
@@ -85,15 +88,16 @@ module GetText
|
|
|
85
88
|
opt = options
|
|
86
89
|
end
|
|
87
90
|
opt[:locale] = opt[:locale] ? Locale::Object.new(opt[:locale]) : Locale.get
|
|
88
|
-
opt[:charset] = output_charset if output_charset
|
|
89
|
-
locale.charset = opt[:charset] if opt[:charset]
|
|
91
|
+
opt[:charset] = TextDomainManager.output_charset if TextDomainManager.output_charset
|
|
92
|
+
opt[:locale].charset = opt[:charset] if opt[:charset]
|
|
90
93
|
Locale.set_current(opt[:locale])
|
|
91
|
-
|
|
94
|
+
target_key = bound_target
|
|
95
|
+
manager = @@__textdomainmanagers[target_key]
|
|
92
96
|
if manager
|
|
93
97
|
manager.set_locale(opt[:locale])
|
|
94
98
|
else
|
|
95
|
-
manager = TextDomainManager.new(
|
|
96
|
-
@@__textdomainmanagers[
|
|
99
|
+
manager = TextDomainManager.new(target_key, opt[:locale])
|
|
100
|
+
@@__textdomainmanagers[target_key] = manager
|
|
97
101
|
end
|
|
98
102
|
manager.add_textdomain(domainname, opt)
|
|
99
103
|
manager
|
|
@@ -121,10 +125,11 @@ module GetText
|
|
|
121
125
|
def textdomain(domainname)
|
|
122
126
|
domain = TextDomainManager.textdomain(domainname)
|
|
123
127
|
raise NoboundTextDomainError, "#{domainname} is not bound." unless domain
|
|
124
|
-
|
|
128
|
+
target_key = bound_target
|
|
129
|
+
manager = @@__textdomainmanagers[target_key]
|
|
125
130
|
unless manager
|
|
126
|
-
manager = TextDomainManager.new(
|
|
127
|
-
@@__textdomainmanagers[
|
|
131
|
+
manager = TextDomainManager.new(target_key, Locale.get)
|
|
132
|
+
@@__textdomainmanagers[target_key] = manager
|
|
128
133
|
end
|
|
129
134
|
manager.set_locale(Locale.get)
|
|
130
135
|
manager.add_textdomain(domainname)
|
|
@@ -148,7 +153,7 @@ module GetText
|
|
|
148
153
|
# * klass: a class/module to find. Default is the class of self.
|
|
149
154
|
# * ignore_targets: Ignore tragets.
|
|
150
155
|
# * Returns: a bound GetText::TextDomain or nil.
|
|
151
|
-
def each_textdomain(klass =
|
|
156
|
+
def each_textdomain(klass = self, ignore_targets = []) #:nodoc:
|
|
152
157
|
bound_targets(klass).each do |target|
|
|
153
158
|
unless ignore_targets.include? target
|
|
154
159
|
manager = @@__textdomainmanagers[target]
|
|
@@ -162,23 +167,70 @@ module GetText
|
|
|
162
167
|
self
|
|
163
168
|
end
|
|
164
169
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
170
|
+
@@__cache_target_classes = {}
|
|
171
|
+
|
|
172
|
+
def find_targets(klass) #:nodoc:
|
|
173
|
+
if cached?
|
|
174
|
+
return @@__cache_target_classes[klass] if @@__cache_target_classes[klass]
|
|
175
|
+
end
|
|
176
|
+
unless (klass.kind_of? Class or klass.kind_of? Module)
|
|
177
|
+
klass = klass.class
|
|
178
|
+
end
|
|
179
|
+
ret = []
|
|
180
|
+
ary = klass.name.split(/::/)
|
|
181
|
+
while(v = ary.shift)
|
|
182
|
+
if ret.size == 0
|
|
183
|
+
if v.kind_of? Class
|
|
184
|
+
target = v
|
|
185
|
+
else
|
|
186
|
+
target = eval(v)
|
|
187
|
+
return [GetText] unless (target = eval(v)) # For anonymous module
|
|
188
|
+
end
|
|
189
|
+
else
|
|
190
|
+
target = ret[0].const_get(v)
|
|
191
|
+
end
|
|
192
|
+
ret.unshift(target) if target
|
|
193
|
+
end
|
|
194
|
+
@@__cache_target_classes[klass] = ret.size > 0 ? ret : [klass]
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
@@__cache_bound_target = {}
|
|
198
|
+
|
|
199
|
+
def bound_target(klass = self) # :nodoc:
|
|
200
|
+
if cached?
|
|
201
|
+
if @@__cache_bound_target[klass]
|
|
202
|
+
return @@__cache_bound_target[klass]
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
ret = nil
|
|
207
|
+
if klass.kind_of? Class or klass.kind_of? Module
|
|
208
|
+
ret = klass
|
|
168
209
|
else
|
|
169
|
-
|
|
210
|
+
ret = klass.class
|
|
170
211
|
end
|
|
212
|
+
ret = GetText if ret.name =~ /^\#<|^$/
|
|
213
|
+
@@__cache_bound_target[klass] = ret
|
|
214
|
+
ret
|
|
171
215
|
end
|
|
172
216
|
|
|
217
|
+
@@__cache_bound_targets = {}
|
|
218
|
+
|
|
173
219
|
def bound_targets(klass) # :nodoc:
|
|
220
|
+
if cached?
|
|
221
|
+
if @@__cache_bound_targets[klass]
|
|
222
|
+
return @@__cache_bound_targets[klass]
|
|
223
|
+
end
|
|
224
|
+
end
|
|
174
225
|
ret = []
|
|
226
|
+
klass = bound_target(klass)
|
|
175
227
|
ary = klass.name.split(/::/)
|
|
176
228
|
while(v = ary.shift)
|
|
177
229
|
ret.unshift(((ret.size == 0) ? eval(v) : ret[0].const_get(v)))
|
|
178
230
|
end
|
|
179
|
-
((ret + klass.ancestors + [GetText]) & @@__textdomainmanagers.keys).uniq
|
|
231
|
+
@@__cache_bound_targets[klass] = ((ret + klass.ancestors + [GetText]) & @@__textdomainmanagers.keys).uniq
|
|
180
232
|
end
|
|
181
|
-
|
|
233
|
+
|
|
182
234
|
@@__cache_msgids = {}
|
|
183
235
|
|
|
184
236
|
# call-seq:
|
|
@@ -206,16 +258,23 @@ module GetText
|
|
|
206
258
|
# See: http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC151
|
|
207
259
|
def sgettext(msgid, div = '|')
|
|
208
260
|
cached_key = [bound_target, Locale.current, msgid]
|
|
209
|
-
if
|
|
210
|
-
if @@__cache_msgids
|
|
261
|
+
if cached?
|
|
262
|
+
if @@__cache_msgids[cached_key]
|
|
211
263
|
return @@__cache_msgids[cached_key]
|
|
212
264
|
end
|
|
213
265
|
end
|
|
214
266
|
msg = nil
|
|
215
|
-
|
|
216
|
-
|
|
267
|
+
|
|
268
|
+
# Use "for"(not "each") to support JRuby 1.1.0.
|
|
269
|
+
for target in bound_targets(self)
|
|
270
|
+
manager = @@__textdomainmanagers[target]
|
|
271
|
+
for textdomain in manager.textdomains
|
|
272
|
+
msg = textdomain[1].gettext(msgid)
|
|
273
|
+
break if msg
|
|
274
|
+
end
|
|
217
275
|
break if msg
|
|
218
|
-
|
|
276
|
+
end
|
|
277
|
+
|
|
219
278
|
msg ||= msgid
|
|
220
279
|
if div and msg == msgid
|
|
221
280
|
if index = msg.rindex(div)
|
|
@@ -294,16 +353,21 @@ module GetText
|
|
|
294
353
|
|
|
295
354
|
cached_key = [bound_target, Locale.current, msgid + "\000" + msgid_plural]
|
|
296
355
|
msgs = nil
|
|
297
|
-
if
|
|
298
|
-
if @@__cache_nmsgids.
|
|
356
|
+
if @@__cached
|
|
357
|
+
if @@__cache_nmsgids.has_key?(cached_key)
|
|
299
358
|
msgs = @@__cache_nmsgids[cached_key] # [msgstr, cond_as_string]
|
|
300
359
|
end
|
|
301
360
|
end
|
|
302
361
|
unless msgs
|
|
303
|
-
|
|
304
|
-
|
|
362
|
+
# Use "for"(not "each") to support JRuby 1.1.0.
|
|
363
|
+
for target in bound_targets(self)
|
|
364
|
+
manager = @@__textdomainmanagers[target]
|
|
365
|
+
for textdomain in manager.textdomains
|
|
366
|
+
msgs = textdomain[1].ngettext_data(msgid, msgid_plural)
|
|
367
|
+
break if msgs
|
|
368
|
+
end
|
|
305
369
|
break if msgs
|
|
306
|
-
|
|
370
|
+
end
|
|
307
371
|
msgs = [[msgid, msgid_plural], "n != 1"] unless msgs
|
|
308
372
|
@@__cache_nmsgids[cached_key] = msgs
|
|
309
373
|
end
|
|
@@ -338,7 +402,7 @@ module GetText
|
|
|
338
402
|
else
|
|
339
403
|
ret = Locale::Object.new(locale.to_s)
|
|
340
404
|
end
|
|
341
|
-
ret.charset = output_charset if output_charset
|
|
405
|
+
ret.charset = TextDomainManager.output_charset if TextDomainManager.output_charset
|
|
342
406
|
Locale.set(ret)
|
|
343
407
|
else
|
|
344
408
|
Locale.set(nil)
|
|
@@ -347,11 +411,11 @@ module GetText
|
|
|
347
411
|
if this_target_only
|
|
348
412
|
manager = @@__textdomainmanagers[bound_target]
|
|
349
413
|
if manager
|
|
350
|
-
manager.set_locale(ret)
|
|
414
|
+
manager.set_locale(ret, ! cached?)
|
|
351
415
|
end
|
|
352
416
|
else
|
|
353
417
|
each_textdomain {|textdomain|
|
|
354
|
-
|
|
418
|
+
textdomain.set_locale(ret, ! cached?)
|
|
355
419
|
}
|
|
356
420
|
end
|
|
357
421
|
self
|
|
@@ -373,10 +437,10 @@ module GetText
|
|
|
373
437
|
else
|
|
374
438
|
ret = Locale.default
|
|
375
439
|
end
|
|
376
|
-
ret.charset = output_charset if output_charset
|
|
440
|
+
ret.charset = TextDomainManager.output_charset if TextDomainManager.output_charset
|
|
377
441
|
Locale.set_current(ret)
|
|
378
442
|
TextDomainManager.each_all {|textdomain|
|
|
379
|
-
textdomain.set_locale(ret)
|
|
443
|
+
textdomain.set_locale(ret, ! cached?)
|
|
380
444
|
}
|
|
381
445
|
self
|
|
382
446
|
end
|
|
@@ -412,7 +476,7 @@ module GetText
|
|
|
412
476
|
# Gets the current output_charset which is set using GetText.set_output_charset.
|
|
413
477
|
# * Returns: output_charset.
|
|
414
478
|
def output_charset
|
|
415
|
-
TextDomainManager.output_charset
|
|
479
|
+
TextDomainManager.output_charset || locale.charset
|
|
416
480
|
end
|
|
417
481
|
|
|
418
482
|
# Gets the current locale.
|
|
@@ -421,17 +485,6 @@ module GetText
|
|
|
421
485
|
Locale.current
|
|
422
486
|
end
|
|
423
487
|
|
|
424
|
-
# Deprecated. Now this function do nothing. Use GetText.output_charset= instead.
|
|
425
|
-
def set_charset(cs) #:nodoc:
|
|
426
|
-
$stderr.puts "Deprecated. Now this function do nothing. Use GetText.output_charset= instead." if $DEBUG
|
|
427
|
-
self
|
|
428
|
-
end
|
|
429
|
-
|
|
430
|
-
def charset=(cs) #:nodoc:
|
|
431
|
-
set_charset(cs)
|
|
432
|
-
cs
|
|
433
|
-
end
|
|
434
|
-
|
|
435
488
|
# Add default locale path.
|
|
436
489
|
# * path: a new locale path. (e.g.) "/usr/share/locale/%{locale}/LC_MESSAGES/%{name}.mo"
|
|
437
490
|
# ('locale' => "ja_JP", 'name' => "textdomain")
|
|
@@ -445,7 +498,6 @@ module GetText
|
|
|
445
498
|
# * :with_messages - show informations with messages of the current mo file. Default is false.
|
|
446
499
|
# * :out - An output target. Default is STDOUT.
|
|
447
500
|
# * :with_paths - show the load paths for mo-files.
|
|
448
|
-
# * Returns: localized text by msgid. If there are not binded mo-file, it will return msgid.
|
|
449
501
|
def current_textdomain_info(options = {})
|
|
450
502
|
opts = {:with_messages => false, :with_paths => false, :out => STDOUT}.merge(options)
|
|
451
503
|
ret = nil
|
|
@@ -475,7 +527,7 @@ module GetText
|
|
|
475
527
|
alias :ns_ :nsgettext #:nodoc:
|
|
476
528
|
|
|
477
529
|
module_function :bindtextdomain, :textdomain, :each_textdomain, :cached=, :cached?, :clear_cache,
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
530
|
+
:N_, :gettext, :_, :ngettext, :n_, :sgettext, :s_, :nsgettext, :ns_, :bound_target, :bound_targets, :find_targets,
|
|
531
|
+
:setlocale, :set_locale, :locale=, :set_locale_all, :locale,
|
|
532
|
+
:set_output_charset, :output_charset=, :output_charset, :current_textdomain_info
|
|
481
533
|
end
|
data/lib/gettext/cgi.rb
CHANGED
|
@@ -6,37 +6,12 @@
|
|
|
6
6
|
You may redistribute it and/or modify it under the same
|
|
7
7
|
license terms as Ruby.
|
|
8
8
|
|
|
9
|
-
$Id: cgi.rb,v 1.
|
|
9
|
+
$Id: cgi.rb,v 1.7 2007/10/29 15:32:39 mutoh Exp $
|
|
10
10
|
=end
|
|
11
11
|
|
|
12
12
|
require 'cgi'
|
|
13
13
|
require 'gettext'
|
|
14
|
-
require '
|
|
15
|
-
|
|
16
|
-
module Locale
|
|
17
|
-
module_function
|
|
18
|
-
# Sets a CGI object.
|
|
19
|
-
# * cgi_: CGI object
|
|
20
|
-
# * Returns: self
|
|
21
|
-
def set_cgi(cgi_)
|
|
22
|
-
@@locale_system_module.set_cgi(cgi_)
|
|
23
|
-
self
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# Sets a CGI object.
|
|
27
|
-
# * cgi_: CGI object
|
|
28
|
-
# * Returns: cgi_
|
|
29
|
-
def cgi=(cgi_)
|
|
30
|
-
set_cgi(cgi_)
|
|
31
|
-
cgi_
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
# Gets the CGI object. If it is nil, returns new CGI object.
|
|
35
|
-
# * Returns: the CGI object
|
|
36
|
-
def cgi
|
|
37
|
-
@@locale_system_module.cgi
|
|
38
|
-
end
|
|
39
|
-
end
|
|
14
|
+
require 'locale/cgi'
|
|
40
15
|
|
|
41
16
|
module GetText
|
|
42
17
|
module_function
|
data/lib/gettext/iconv.rb
CHANGED
|
@@ -1,85 +1,99 @@
|
|
|
1
1
|
=begin
|
|
2
|
-
iconv.rb - Pseudo Iconv
|
|
2
|
+
iconv.rb - Pseudo Iconv class. Supports Iconv.iconv, Iconv.conv.
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
For Matz Ruby:
|
|
5
|
+
If you don't have iconv but glib2, this library uses glib2 iconv functions.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
For JRuby:
|
|
8
|
+
Use Java String class to convert strings.
|
|
9
|
+
|
|
10
|
+
Copyright (C) 2004-2007 Masao Mutoh
|
|
8
11
|
|
|
9
12
|
You may redistribute it and/or modify it under the same
|
|
10
13
|
license terms as Ruby.
|
|
11
14
|
|
|
12
|
-
$Id: iconv.rb,v 1.
|
|
15
|
+
$Id: iconv.rb,v 1.6 2007/11/08 14:21:22 mutoh Exp $
|
|
13
16
|
=end
|
|
14
17
|
|
|
15
18
|
begin
|
|
16
19
|
require 'iconv.so'
|
|
17
20
|
rescue LoadError
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
class IllegalSequence < ArgumentError; include Failure; end
|
|
33
|
-
class InvalidCharacter < ArgumentError; include Failure; end
|
|
21
|
+
# Pseudo Iconv class
|
|
22
|
+
#
|
|
23
|
+
# Provides Iconv.iconv which uses Ruby/GLib(1) functions. This library also required from 'gettext'.
|
|
24
|
+
# If you require 'gettext/iconv', Iconv.iconv try to call Ruby/GLib function
|
|
25
|
+
# when it doesn't find original Iconv class(iconv.so).
|
|
26
|
+
#
|
|
27
|
+
# (1) Ruby/GLib is a module which is provided from Ruby-GNOME2 Project.
|
|
28
|
+
# You can get binaries for Win32(One-Click Ruby Installer).
|
|
29
|
+
# <URL: http://ruby-gnome2.sourceforge.jp/>
|
|
30
|
+
class Iconv
|
|
31
|
+
module Failure; end
|
|
32
|
+
class InvalidEncoding < ArgumentError; include Failure; end
|
|
33
|
+
class IllegalSequence < ArgumentError; include Failure; end
|
|
34
|
+
class InvalidCharacter < ArgumentError; include Failure; end
|
|
34
35
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
if RUBY_PLATFORM =~ /java/
|
|
37
|
+
def self.conv(to, from, str)
|
|
38
|
+
raise InvalidCharacter, "the 3rd argument is nil" unless str
|
|
39
|
+
begin
|
|
40
|
+
str = java.lang.String.new(str.unpack("C*").to_java(:byte), from)
|
|
41
|
+
str.getBytes(to).to_ary.pack("C*")
|
|
42
|
+
rescue java.io.UnsupportedEncodingException
|
|
43
|
+
raise InvalidEncoding
|
|
44
|
+
end
|
|
42
45
|
end
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
GLib
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
46
|
+
else
|
|
47
|
+
begin
|
|
48
|
+
require 'glib2'
|
|
49
|
+
|
|
50
|
+
def self.check_glib_version?(major, minor, micro) # :nodoc:
|
|
51
|
+
(GLib::BINDING_VERSION[0] > major ||
|
|
52
|
+
(GLib::BINDING_VERSION[0] == major &&
|
|
53
|
+
GLib::BINDING_VERSION[1] > minor) ||
|
|
54
|
+
(GLib::BINDING_VERSION[0] == major &&
|
|
55
|
+
GLib::BINDING_VERSION[1] == minor &&
|
|
56
|
+
GLib::BINDING_VERSION[2] >= micro))
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
if check_glib_version?(0, 11, 0)
|
|
60
|
+
# This is a function equivalent of Iconv.iconv.
|
|
61
|
+
# * to: encoding name for destination
|
|
62
|
+
# * from: encoding name for source
|
|
63
|
+
# * str: strings to be converted
|
|
64
|
+
# * Returns: Returns an Array of converted strings.
|
|
65
|
+
def self.conv(to, from, str)
|
|
66
|
+
begin
|
|
67
|
+
GLib.convert(str, to, from)
|
|
68
|
+
rescue GLib::ConvertError => e
|
|
69
|
+
case e.code
|
|
70
|
+
when GLib::ConvertError::NO_CONVERSION
|
|
71
|
+
raise InvalidEncoding.new(str)
|
|
72
|
+
when GLib::ConvertError::ILLEGAL_SEQUENCE
|
|
73
|
+
raise IllegalSequence.new(str)
|
|
74
|
+
else
|
|
75
|
+
raise InvalidCharacter.new(str)
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
else
|
|
80
|
+
def self.conv(to, from, str) # :nodoc:
|
|
81
|
+
begin
|
|
82
|
+
GLib.convert(str, to, from)
|
|
83
|
+
rescue
|
|
59
84
|
raise IllegalSequence.new(str)
|
|
60
|
-
else
|
|
61
|
-
raise InvalidCharacter.new(str)
|
|
62
85
|
end
|
|
63
86
|
end
|
|
64
87
|
end
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
raise IllegalSequence.new(str)
|
|
71
|
-
end
|
|
72
|
-
end
|
|
88
|
+
rescue LoadError
|
|
89
|
+
def self.conv(to, from, str) # :nodoc:
|
|
90
|
+
warn "Iconv was not found." if $DEBUG
|
|
91
|
+
str
|
|
92
|
+
end
|
|
73
93
|
end
|
|
74
|
-
module_function :iconv
|
|
75
94
|
end
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
module_function
|
|
79
|
-
def iconv(to, from, str) # :nodoc:
|
|
80
|
-
warn "Iconv was not found." if $DEBUG
|
|
81
|
-
str.split(//)
|
|
82
|
-
end
|
|
95
|
+
def self.iconv(to, from, str)
|
|
96
|
+
conv(to, from, str).split(//)
|
|
83
97
|
end
|
|
84
98
|
end
|
|
85
99
|
end
|