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.
Files changed (327) hide show
  1. data/ChangeLog +156 -2
  2. data/NEWS +28 -0
  3. data/README +128 -138
  4. data/Rakefile +83 -43
  5. data/data/locale/es/LC_MESSAGES/rails.mo +0 -0
  6. data/data/locale/hu/LC_MESSAGES/rails.mo +0 -0
  7. data/data/locale/hu/LC_MESSAGES/rgettext.mo +0 -0
  8. data/data/locale/ua/LC_MESSAGES/rails.mo +0 -0
  9. data/data/locale/ua/LC_MESSAGES/rgettext.mo +0 -0
  10. data/doc/classes/ActiveRecord/Base.html +360 -0
  11. data/doc/classes/ActiveRecord/ConnectionAdapters/Column.html +182 -0
  12. data/doc/classes/ActiveRecord/Migration.html +118 -0
  13. data/doc/classes/GetText.html +1790 -0
  14. data/doc/classes/GetText/ActiveRecordParser.html +236 -0
  15. data/doc/classes/GetText/Container.html +119 -0
  16. data/doc/classes/GetText/ErbContainer.html +223 -0
  17. data/doc/classes/GetText/ErbParser.html +156 -0
  18. data/doc/classes/GetText/GladeParser.html +133 -0
  19. data/doc/classes/GetText/NoboundTextDomainError.html +119 -0
  20. data/doc/classes/GetText/PoParser.html +169 -0
  21. data/doc/classes/GetText/Rails.html +293 -0
  22. data/doc/classes/GetText/RubyParser.html +123 -0
  23. data/doc/classes/GetText/TextDomain.html +572 -0
  24. data/doc/classes/GetText/TextDomainManager.html +443 -0
  25. data/doc/classes/Iconv.html +257 -0
  26. data/doc/classes/Iconv/Failure.html +105 -0
  27. data/doc/classes/Iconv/IllegalSequence.html +118 -0
  28. data/doc/classes/Iconv/InvalidCharacter.html +118 -0
  29. data/doc/classes/Iconv/InvalidEncoding.html +118 -0
  30. data/doc/classes/Locale.html +839 -0
  31. data/doc/classes/Locale/Object.html +799 -0
  32. data/doc/classes/Locale/SystemBase.html +271 -0
  33. data/doc/classes/Locale/SystemCGI.html +312 -0
  34. data/doc/classes/Locale/SystemJRuby.html +112 -0
  35. data/doc/classes/Locale/SystemPosix.html +113 -0
  36. data/doc/classes/Locale/SystemWin32.html +182 -0
  37. data/doc/classes/MOFile.html +678 -0
  38. data/doc/classes/MOFile/InvalidFormat.html +111 -0
  39. data/doc/classes/Module.html +158 -0
  40. data/doc/classes/String.html +225 -0
  41. data/doc/created.rid +1 -0
  42. data/doc/files/ChangeLog.html +2355 -0
  43. data/doc/files/README.html +510 -0
  44. data/doc/files/lib/gettext/active_record_rb.html +110 -0
  45. data/doc/files/lib/gettext/cgi_rb.html +110 -0
  46. data/doc/files/lib/gettext/container_rb.html +108 -0
  47. data/doc/files/lib/gettext/erb_rb.html +109 -0
  48. data/doc/files/lib/gettext/iconv_rb.html +109 -0
  49. data/doc/files/lib/gettext/mo_rb.html +108 -0
  50. data/doc/files/lib/gettext/parser/active_record_rb.html +119 -0
  51. data/doc/files/lib/gettext/parser/erb_rb.html +109 -0
  52. data/doc/files/lib/gettext/parser/glade_rb.html +109 -0
  53. data/doc/files/lib/gettext/parser/ruby_rb.html +110 -0
  54. data/doc/files/lib/gettext/poparser_rb.html +108 -0
  55. data/doc/files/lib/gettext/rails_compat_rb.html +108 -0
  56. data/doc/files/lib/gettext/rails_rb.html +112 -0
  57. data/doc/files/lib/gettext/rgettext_rb.html +110 -0
  58. data/doc/files/lib/gettext/rmsgfmt_rb.html +112 -0
  59. data/doc/files/lib/gettext/rmsgmerge_rb.html +112 -0
  60. data/doc/files/lib/gettext/string_rb.html +101 -0
  61. data/doc/files/lib/gettext/textdomain_rb.html +109 -0
  62. data/doc/files/lib/gettext/textdomainmanager_rb.html +109 -0
  63. data/doc/files/lib/gettext/utils_rb.html +111 -0
  64. data/doc/files/lib/gettext/version_rb.html +101 -0
  65. data/doc/files/lib/gettext_rb.html +113 -0
  66. data/doc/files/lib/locale/base_rb.html +101 -0
  67. data/doc/files/lib/locale/cgi_rb.html +108 -0
  68. data/doc/files/lib/locale/jruby_rb.html +110 -0
  69. data/doc/files/lib/locale/object_rb.html +101 -0
  70. data/doc/files/lib/locale/posix_rb.html +108 -0
  71. data/doc/files/lib/locale/win32_rb.html +110 -0
  72. data/doc/files/lib/locale/win32_table_rb.html +101 -0
  73. data/doc/files/lib/locale_rb.html +111 -0
  74. data/doc/fr_class_index.html +57 -0
  75. data/doc/fr_file_index.html +58 -0
  76. data/doc/fr_method_index.html +155 -0
  77. data/doc/index.html +24 -0
  78. data/doc/rdoc-style.css +208 -0
  79. data/lib/gettext.rb +102 -50
  80. data/lib/gettext/cgi.rb +2 -27
  81. data/lib/gettext/iconv.rb +76 -62
  82. data/lib/gettext/mo.rb +3 -3
  83. data/lib/gettext/parser/erb.rb +2 -2
  84. data/lib/gettext/rails.rb +69 -48
  85. data/lib/gettext/rgettext.rb +2 -2
  86. data/lib/gettext/rmsgmerge.rb +2 -2
  87. data/lib/gettext/string.rb +9 -5
  88. data/lib/gettext/textdomain.rb +3 -3
  89. data/lib/gettext/textdomainmanager.rb +5 -5
  90. data/lib/gettext/utils.rb +4 -3
  91. data/lib/gettext/version.rb +1 -1
  92. data/lib/{gettext/locale.rb → locale.rb} +11 -58
  93. data/lib/locale/base.rb +60 -0
  94. data/lib/{gettext/locale_cgi.rb → locale/cgi.rb} +30 -28
  95. data/lib/locale/jruby.rb +36 -0
  96. data/lib/{gettext/locale_object.rb → locale/object.rb} +78 -24
  97. data/lib/locale/posix.rb +22 -0
  98. data/lib/locale/win32.rb +48 -0
  99. data/lib/{gettext/locale_table_win32.rb → locale/win32_table.rb} +3 -2
  100. data/po/es/rails.po +1 -2
  101. data/po/hu/rails.po +139 -0
  102. data/po/hu/rgettext.po +126 -0
  103. data/po/ja/rails.po +5 -5
  104. data/po/ua/rails.po +150 -0
  105. data/po/ua/rgettext.po +132 -0
  106. data/pre-setup.rb +2 -4
  107. data/samples/cgi/cookie.cgi +1 -0
  108. data/samples/cgi/helloerb1.cgi +6 -3
  109. data/samples/cgi/helloerb2.cgi +6 -3
  110. data/samples/cgi/http.rb +3 -7
  111. data/samples/cgi/index.cgi +2 -1
  112. data/samples/cgi/locale/hu/LC_MESSAGES/helloerb1.mo +0 -0
  113. data/samples/cgi/locale/hu/LC_MESSAGES/helloerb2.mo +0 -0
  114. data/samples/cgi/locale/hu/LC_MESSAGES/hellolib.mo +0 -0
  115. data/samples/cgi/locale/hu/LC_MESSAGES/main.mo +0 -0
  116. data/samples/cgi/locale/ua/LC_MESSAGES/helloerb1.mo +0 -0
  117. data/samples/cgi/locale/ua/LC_MESSAGES/helloerb2.mo +0 -0
  118. data/samples/cgi/locale/ua/LC_MESSAGES/hellolib.mo +0 -0
  119. data/samples/cgi/locale/ua/LC_MESSAGES/main.mo +0 -0
  120. data/samples/cgi/po/hu/helloerb1.po +59 -0
  121. data/samples/cgi/po/hu/helloerb2.po +51 -0
  122. data/samples/cgi/po/hu/hellolib.po +23 -0
  123. data/samples/cgi/po/hu/main.po +82 -0
  124. data/samples/cgi/po/ua/helloerb1.po +62 -0
  125. data/samples/cgi/po/ua/helloerb2.po +54 -0
  126. data/samples/cgi/po/ua/hellolib.po +26 -0
  127. data/samples/cgi/po/ua/main.po +84 -0
  128. data/samples/locale/hu/LC_MESSAGES/hello.mo +0 -0
  129. data/samples/locale/hu/LC_MESSAGES/hello2.mo +0 -0
  130. data/samples/locale/hu/LC_MESSAGES/hello_noop.mo +0 -0
  131. data/samples/locale/hu/LC_MESSAGES/hello_plural.mo +0 -0
  132. data/samples/locale/hu/LC_MESSAGES/helloglade2.mo +0 -0
  133. data/samples/locale/hu/LC_MESSAGES/hellogtk.mo +0 -0
  134. data/samples/locale/hu/LC_MESSAGES/hellotk.mo +0 -0
  135. data/samples/locale/ua/LC_MESSAGES/hello.mo +0 -0
  136. data/samples/locale/ua/LC_MESSAGES/hello2.mo +0 -0
  137. data/samples/locale/ua/LC_MESSAGES/hello_noop.mo +0 -0
  138. data/samples/locale/ua/LC_MESSAGES/hello_plural.mo +0 -0
  139. data/samples/locale/ua/LC_MESSAGES/helloglade2.mo +0 -0
  140. data/samples/locale/ua/LC_MESSAGES/hellogtk.mo +0 -0
  141. data/samples/locale/ua/LC_MESSAGES/hellotk.mo +0 -0
  142. data/samples/po/hu/hello.po +22 -0
  143. data/samples/po/hu/hello2.po +30 -0
  144. data/samples/po/hu/hello_noop.po +26 -0
  145. data/samples/po/hu/hello_plural.po +25 -0
  146. data/samples/po/hu/helloglade2.po +31 -0
  147. data/samples/po/hu/hellogtk.po +22 -0
  148. data/samples/po/hu/hellotk.po +23 -0
  149. data/samples/po/ua/hello.po +22 -0
  150. data/samples/po/ua/hello2.po +30 -0
  151. data/samples/po/ua/hello_noop.po +26 -0
  152. data/samples/po/ua/hello_plural.po +29 -0
  153. data/samples/po/ua/helloglade2.po +34 -0
  154. data/samples/po/ua/hellogtk.po +22 -0
  155. data/samples/po/ua/hellotk.po +26 -0
  156. data/samples/rails/README +15 -31
  157. data/samples/rails/Rakefile +1 -1
  158. data/samples/rails/app/controllers/application.rb +11 -4
  159. data/samples/rails/app/controllers/articles_controller.rb +96 -0
  160. data/samples/rails/app/helpers/application_helper.rb +1 -1
  161. data/samples/rails/app/helpers/{blog_helper.rb → articles_helper.rb} +6 -7
  162. data/samples/rails/app/views/articles/edit.html.erb +18 -0
  163. data/samples/rails/app/views/articles/index.html.erb +17 -0
  164. data/samples/rails/app/views/articles/new.html.erb +16 -0
  165. data/samples/rails/app/views/articles/show.html.erb +6 -0
  166. data/samples/rails/app/views/layouts/articles.html.erb +26 -0
  167. data/samples/rails/config/boot.rb +104 -13
  168. data/samples/rails/config/database.yml +24 -21
  169. data/samples/rails/config/environment.rb +35 -30
  170. data/samples/rails/config/environments/development.rb +5 -6
  171. data/samples/rails/config/environments/production.rb +2 -3
  172. data/samples/rails/config/environments/test.rb +5 -2
  173. data/samples/rails/config/initializers/inflections.rb +10 -0
  174. data/samples/rails/config/initializers/mime_types.rb +5 -0
  175. data/samples/rails/config/routes.rb +30 -11
  176. data/samples/rails/db/migrate/001_create_articles.rb +14 -0
  177. data/samples/rails/db/schema.rb +16 -5
  178. data/samples/rails/lib/tasks/gettext.rake +2 -2
  179. data/samples/rails/locale/bs/LC_MESSAGES/blog.mo +0 -0
  180. data/samples/rails/locale/ca/LC_MESSAGES/blog.mo +0 -0
  181. data/samples/rails/locale/cs/LC_MESSAGES/blog.mo +0 -0
  182. data/samples/rails/locale/de/LC_MESSAGES/blog.mo +0 -0
  183. data/samples/rails/locale/el/LC_MESSAGES/blog.mo +0 -0
  184. data/samples/rails/locale/en/LC_MESSAGES/blog.mo +0 -0
  185. data/samples/rails/locale/eo/LC_MESSAGES/blog.mo +0 -0
  186. data/samples/rails/locale/es/LC_MESSAGES/blog.mo +0 -0
  187. data/samples/rails/locale/fr/LC_MESSAGES/blog.mo +0 -0
  188. data/samples/rails/locale/hr/LC_MESSAGES/blog.mo +0 -0
  189. data/samples/rails/locale/hu/LC_MESSAGES/blog.mo +0 -0
  190. data/samples/rails/locale/it/LC_MESSAGES/blog.mo +0 -0
  191. data/samples/rails/locale/ja/LC_MESSAGES/blog.mo +0 -0
  192. data/samples/rails/locale/ko/LC_MESSAGES/blog.mo +0 -0
  193. data/samples/rails/locale/nb/LC_MESSAGES/blog.mo +0 -0
  194. data/samples/rails/locale/nl/LC_MESSAGES/blog.mo +0 -0
  195. data/samples/rails/locale/pt_BR/LC_MESSAGES/blog.mo +0 -0
  196. data/samples/rails/locale/ru/LC_MESSAGES/blog.mo +0 -0
  197. data/samples/rails/locale/ua/LC_MESSAGES/blog.mo +0 -0
  198. data/samples/rails/locale/vi/LC_MESSAGES/blog.mo +0 -0
  199. data/samples/rails/locale/zh/LC_MESSAGES/blog.mo +0 -0
  200. data/samples/rails/locale/zh_TW/LC_MESSAGES/blog.mo +0 -0
  201. data/samples/rails/po/blog.pot +24 -24
  202. data/samples/rails/po/bs/blog.po +29 -29
  203. data/samples/rails/po/ca/blog.po +27 -27
  204. data/samples/rails/po/cs/blog.po +27 -27
  205. data/samples/rails/po/de/blog.po +27 -27
  206. data/samples/rails/po/el/blog.po +27 -27
  207. data/samples/rails/po/en/blog.po +24 -24
  208. data/samples/rails/po/eo/blog.po +27 -27
  209. data/samples/rails/po/es/blog.po +27 -27
  210. data/samples/rails/po/fr/blog.po +27 -27
  211. data/samples/rails/po/hr/blog.po +29 -29
  212. data/samples/rails/po/hu/blog.po +105 -0
  213. data/samples/rails/po/it/blog.po +27 -27
  214. data/samples/rails/po/ja/blog.po +27 -27
  215. data/samples/rails/po/ko/blog.po +27 -27
  216. data/samples/rails/po/nb/blog.po +26 -27
  217. data/samples/rails/po/nl/blog.po +27 -27
  218. data/samples/rails/po/pt_BR/blog.po +27 -27
  219. data/samples/rails/po/ru/blog.po +27 -27
  220. data/samples/rails/po/ua/blog.po +108 -0
  221. data/samples/rails/po/vi/blog.po +26 -31
  222. data/samples/rails/po/zh/blog.po +27 -27
  223. data/samples/rails/po/zh_TW/blog.po +27 -27
  224. data/samples/rails/public/404.html +27 -5
  225. data/samples/rails/public/422.html +30 -0
  226. data/samples/rails/public/500.html +27 -5
  227. data/samples/rails/public/index.html +6 -6
  228. data/samples/rails/public/javascripts/application.js +2 -0
  229. data/samples/rails/public/javascripts/controls.js +532 -319
  230. data/samples/rails/public/javascripts/dragdrop.js +521 -133
  231. data/samples/rails/public/javascripts/effects.js +708 -442
  232. data/samples/rails/public/javascripts/prototype.js +3393 -953
  233. data/samples/rails/public/stylesheets/blog.css +4 -0
  234. data/samples/rails/public/stylesheets/scaffold.css +5 -5
  235. data/samples/rails/test/functional/articles_controller_test.rb +51 -0
  236. data/samples/rails/test/test_helper.rb +31 -19
  237. data/samples/rails/test/unit/article_test.rb +2 -9
  238. data/samples/rails/vendor/plugins/gettext/init.rb +5 -3
  239. data/samples/rails/vendor/plugins/gettext/lib/gettext_plugin.rb +9 -10
  240. data/samples/rails/vendor/plugins/gettext/locale/eo/LC_MESSAGES/gettext_plugin.mo +0 -0
  241. data/samples/rails/vendor/plugins/gettext/locale/hu/LC_MESSAGES/gettext_plugin.mo +0 -0
  242. data/samples/rails/vendor/plugins/gettext/locale/ua/LC_MESSAGES/gettext_plugin.mo +0 -0
  243. data/samples/rails/vendor/plugins/gettext/po/eo/gettext_plugin.po +28 -0
  244. data/samples/rails/vendor/plugins/gettext/po/hu/gettext_plugin.po +27 -0
  245. data/samples/rails/vendor/plugins/gettext/po/ua/gettext_plugin.po +30 -0
  246. data/test/Rakefile +2 -1
  247. data/test/benchmark.rb +28 -0
  248. data/test/fixtures/topic.rb +15 -0
  249. data/test/rails/Rakefile +2 -1
  250. data/test/rails/app/controllers/articles_controller.rb +1 -1
  251. data/test/rails/app/controllers/users_controller.rb +10 -0
  252. data/test/rails/app/models/user.rb +2 -1
  253. data/test/rails/app/views/articles/{_form.rhtml → _form.html.erb} +0 -0
  254. data/test/rails/app/views/articles/active_form_error.html.erb +1 -0
  255. data/test/rails/app/views/articles/change_title_error_messages_for.html.erb +21 -0
  256. data/test/rails/app/views/articles/{edit.rhtml → edit.html.erb} +0 -0
  257. data/test/rails/app/views/articles/{list.rhtml → list.html.erb} +0 -3
  258. data/test/rails/app/views/articles/{list_fr.rhtml → list_fr.html.erb} +0 -0
  259. data/test/rails/app/views/articles/{multi_error_messages_for.rhtml → multi_error_messages_for.html.erb} +0 -0
  260. data/test/rails/app/views/articles/{new.rhtml → new.html.erb} +0 -0
  261. data/test/rails/app/views/articles/{show.rhtml → show.html.erb} +0 -0
  262. data/test/rails/app/views/layouts/{application.rhtml → application.html.erb} +0 -0
  263. data/test/rails/app/views/layouts/{mailer.rhtml → mailer.html.erb} +0 -0
  264. data/test/rails/app/views/layouts/users.html.erb +13 -0
  265. data/test/rails/app/views/users/custom_error_message.html.erb +13 -0
  266. data/test/rails/app/views/users/custom_error_message_fr.html.erb +13 -0
  267. data/test/rails/config/environment.rb +6 -1
  268. data/test/rails/config/environments/development.rb +0 -3
  269. data/test/rails/db/schema.rb +17 -10
  270. data/test/rails/locale/ja/LC_MESSAGES/rails_test.mo +0 -0
  271. data/test/rails/log/development.log +136 -29
  272. data/test/rails/log/test.log +2002 -128
  273. data/test/rails/po/ja/rails_test.po +68 -61
  274. data/test/rails/po/rails_test.pot +57 -55
  275. data/test/rails/test/fixtures/users.yml +5 -0
  276. data/test/rails/test/functional/articles_controller_test.rb +6 -1
  277. data/test/rails/test/functional/users_controller_test.rb +65 -0
  278. data/test/rails/test/result/en/custom_error_message.html +83 -0
  279. data/test/rails/test/result/en/custom_error_message_with_plural.html +83 -0
  280. data/test/rails/test/result/en/list.html +0 -3
  281. data/test/rails/test/result/en/multi_error_messages_for.html +1 -1
  282. data/test/rails/test/result/fr/custom_error_message.html +83 -0
  283. data/test/rails/test/result/fr/custom_error_message_with_plural.html +83 -0
  284. data/test/rails/test/result/ja/custom_error_message.html +83 -0
  285. data/test/rails/test/result/ja/custom_error_message_with_plural.html +83 -0
  286. data/test/rails/test/result/ja/list.html +0 -3
  287. data/test/rails/test/result/ja/multi_error_messages_for.html +1 -1
  288. data/test/test.sh +5 -7
  289. data/test/{gettext_test_active_record.rb → test_active_record.rb} +20 -10
  290. data/test/{gettext_test_cgi.rb → test_cgi.rb} +0 -0
  291. data/test/{gettext_test.rb → test_gettext.rb} +91 -9
  292. data/test/test_java.sh +12 -0
  293. data/test/{gettext_test_locale.rb → test_locale.rb} +3 -8
  294. data/test/{gettext_test_multi_textdomain.rb → test_multi_textdomain.rb} +2 -2
  295. data/test/{gettext_test_parser.rb → test_parser.rb} +77 -77
  296. data/test/{gettext_test_rails.rb → test_rails.rb} +0 -0
  297. data/test/{gettext_test_rails_caching.rb → test_rails_caching.rb} +16 -2
  298. data/test/{gettext_test_string.rb → test_string.rb} +1 -0
  299. data/test/{test_rubyparser_N.rb → testlib/N_.rb} +0 -0
  300. data/test/testlib/erb.rhtml +15 -0
  301. data/test/testlib/erb.rxml +16 -0
  302. data/test/{test_rubyparser.rb → testlib/gettext.rb} +0 -0
  303. data/test/testlib/gladeparser.glade +183 -0
  304. data/test/{test_rubyparser_n_.rb → testlib/ngettext.rb} +0 -0
  305. data/test/{test_nsgettext.rb → testlib/nsgettext.rb} +0 -0
  306. data/test/{test_sgettext.rb → testlib/sgettext.rb} +0 -0
  307. data/test/{testlib1.rb → testlib/testlib1.rb} +0 -0
  308. data/test/{testlib2.rb → testlib/testlib2.rb} +1 -1
  309. data/test/{testlib3.rb → testlib/testlib3.rb} +0 -0
  310. data/test/{testlib4.rb → testlib/testlib4.rb} +1 -1
  311. data/test/{testlib5.rb → testlib/testlib5.rb} +0 -0
  312. data/test/{testlib6.rb → testlib/testlib6.rb} +0 -0
  313. metadata +1374 -1171
  314. data/ext/gettext/extconf.rb +0 -20
  315. data/ext/gettext/locale_system.c +0 -83
  316. data/lib/gettext/locale_posix.rb +0 -82
  317. data/lib/gettext/locale_win32.rb +0 -82
  318. data/samples/cgi/ruby.bat +0 -4
  319. data/samples/rails/app/controllers/blog_controller.rb +0 -58
  320. data/samples/rails/app/views/blog/_form.rhtml +0 -25
  321. data/samples/rails/app/views/blog/edit.rhtml +0 -22
  322. data/samples/rails/app/views/blog/list.rhtml +0 -29
  323. data/samples/rails/app/views/blog/new.rhtml +0 -21
  324. data/samples/rails/app/views/blog/show.rhtml +0 -18
  325. data/samples/rails/app/views/layouts/blog.rhtml +0 -36
  326. data/samples/rails/test/functional/blog_controller_test.rb +0 -98
  327. 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.27 2007/07/05 05:29:28 mutoh Exp $
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 'gettext/locale'
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 = true
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
- manager = @@__textdomainmanagers[bound_target]
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(bound_target, opt[:locale])
96
- @@__textdomainmanagers[bound_target] = manager
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
- manager = @@__textdomainmanagers[bound_target]
128
+ target_key = bound_target
129
+ manager = @@__textdomainmanagers[target_key]
125
130
  unless manager
126
- manager = TextDomainManager.new(bound_target, Locale.get)
127
- @@__textdomainmanagers[bound_target] = manager
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 = bound_target, ignore_targets = []) #:nodoc:
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
- def bound_target # :nodoc:
166
- if self.kind_of? Class or self.kind_of? Module
167
- self
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
- self.class
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 (@@__cached or ! $DEBUG)
210
- if @@__cache_msgids.keys.include?(cached_key)
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
- each_textdomain {|textdomain|
216
- msg = textdomain.gettext(msgid)
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 (@@__cached or ! $DEBUG)
298
- if @@__cache_nmsgids.keys.include?(cached_key)
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
- each_textdomain {|textdomain|
304
- msgs = textdomain.ngettext_data(msgid, msgid_plural)
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
- textdomain.set_locale(ret)
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
- :N_, :gettext, :_, :ngettext, :n_, :sgettext, :s_, :nsgettext, :ns_, :bound_target, :bound_targets,
479
- :setlocale, :set_locale, :locale=, :set_locale_all, :locale, :charset=, :set_charset,
480
- :set_output_charset, :output_charset=, :output_charset, :current_textdomain_info
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.6 2006/02/20 12:35:06 mutoh Exp $
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 'gettext/locale_cgi'
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 module
2
+ iconv.rb - Pseudo Iconv class. Supports Iconv.iconv, Iconv.conv.
3
3
 
4
- If you don't have iconv but glib2, this library behaves
5
- as Iconv.iconv.
4
+ For Matz Ruby:
5
+ If you don't have iconv but glib2, this library uses glib2 iconv functions.
6
6
 
7
- Copyright (C) 2004 Masao Mutoh <mutoh@highway.ne.jp>
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.3 2006/06/11 15:36:20 mutoh Exp $
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
- begin
19
- require 'glib2'
20
- # Pseudo Iconv module
21
- #
22
- # Provides Iconv.iconv which uses Ruby/GLib(1) functions. This library also required from 'gettext'.
23
- # If you require 'gettext/iconv', Iconv.iconv try to call Ruby/GLib function
24
- # when it doesn't find original Iconv module(iconv.so).
25
- #
26
- # (1) Ruby/GLib is a module which is provided from Ruby-GNOME2 Project.
27
- # You can get binaries for Win32(One-Click Ruby Installer).
28
- # <URL: http://ruby-gnome2.sourceforge.jp/>
29
- module Iconv
30
- module Failure; end
31
- class InvalidEncoding < ArgumentError; include Failure; end
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
- def check_glib_version?(major, minor, micro) # :nodoc:
36
- (GLib::BINDING_VERSION[0] > major ||
37
- (GLib::BINDING_VERSION[0] == major &&
38
- GLib::BINDING_VERSION[1] > minor) ||
39
- (GLib::BINDING_VERSION[0] == major &&
40
- GLib::BINDING_VERSION[1] == minor &&
41
- GLib::BINDING_VERSION[2] >= micro))
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
- module_function :check_glib_version?
44
-
45
- if check_glib_version?(0, 11, 0)
46
- # This is a function equivalent of Iconv.iconv.
47
- # * to: encoding name for destination
48
- # * from: encoding name for source
49
- # * str: strings to be converted
50
- # * Returns: Returns an Array of converted strings.
51
- def iconv(to, from, str)
52
- begin
53
- GLib.convert(str, to, from).split(//)
54
- rescue GLib::ConvertError => e
55
- case e.code
56
- when GLib::ConvertError::NO_CONVERSION
57
- raise InvalidEncoding.new(str)
58
- when GLib::ConvertError::ILLEGAL_SEQUENCE
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
- else
66
- def iconv(to, from, str) # :nodoc:
67
- begin
68
- GLib.convert(str, to, from).split(//)
69
- rescue
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
- rescue LoadError
77
- module Iconv
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