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/mo.rb CHANGED
@@ -12,7 +12,7 @@
12
12
  of Ruby. License of Ruby is included with Ruby distribution in
13
13
  the file "README".
14
14
 
15
- $Id: mo.rb,v 1.7 2006/06/11 15:36:20 mutoh Exp $
15
+ $Id: mo.rb,v 1.8 2007/11/10 02:51:21 mutoh Exp $
16
16
  =end
17
17
 
18
18
  require 'gettext/iconv'
@@ -104,7 +104,7 @@ class MOFile < Hash
104
104
  io.pos = trans_table_data[i * 2 + 1]
105
105
  str = io.read(trans_table_data[i * 2 + 0])
106
106
 
107
- if original_strings[i] == ""
107
+ if (! original_strings[i]) || original_strings[i] == ""
108
108
  if str
109
109
  @charset = nil
110
110
  @nplurals = nil
@@ -124,7 +124,7 @@ class MOFile < Hash
124
124
  else
125
125
  if @output_charset
126
126
  begin
127
- str = Iconv.iconv(@output_charset, @charset, str).join if @charset
127
+ str = Iconv.conv(@output_charset, @charset, str) if @charset
128
128
  rescue Iconv::Failure
129
129
  if $DEBUG
130
130
  $stderr.print "@charset = ", @charset, "\n"
@@ -6,7 +6,7 @@
6
6
  You may redistribute it and/or modify it under the same
7
7
  license terms as Ruby.
8
8
 
9
- $Id: erb.rb,v 1.4 2006/02/22 16:42:41 mutoh Exp $
9
+ $Id: erb.rb,v 1.5 2007/08/01 01:39:14 mutoh Exp $
10
10
  =end
11
11
 
12
12
  require 'erb'
@@ -15,7 +15,7 @@ require 'gettext/parser/ruby.rb'
15
15
  module GetText
16
16
  module ErbParser
17
17
  @config = {
18
- :extnames => ['.rhtml']
18
+ :extnames => ['.rhtml', '.erb']
19
19
  }
20
20
 
21
21
  module_function
data/lib/gettext/rails.rb CHANGED
@@ -1,12 +1,12 @@
1
1
  =begin
2
2
  gettext/rails.rb - GetText for "Ruby on Rails"
3
3
 
4
- Copyright (C) 2005,2006 Masao Mutoh
4
+ Copyright (C) 2005-2008 Masao Mutoh
5
5
 
6
6
  You may redistribute it and/or modify it under the same
7
7
  license terms as Ruby.
8
8
 
9
- $Id: rails.rb,v 1.63 2007/07/05 16:55:59 mutoh Exp $
9
+ $Id: rails.rb,v 1.72 2008/01/29 16:30:29 mutoh Exp $
10
10
  =end
11
11
 
12
12
  require 'gettext/cgi'
@@ -54,20 +54,31 @@ module GetText
54
54
  # And the charset is set order by "the argument of bindtextdomain"
55
55
  # > HTTP_ACCEPT_CHARSET > Default charset(UTF-8).
56
56
  #
57
- # Note: Don't use locale, charset, with_model argument(not in options).
58
- # They are remained for backward compatibility.
59
57
  #
60
- def bindtextdomain(domainname, options = {}, locale = nil, charset = nil, with_model = true)
61
- opt = {}
62
- if options.kind_of? CGI
63
- # For backward compatibility
64
- opt.merge!(:cgi => options, :locale => locale, :charset => charset)
65
- else
66
- opt.merge!(options)
58
+ def bindtextdomain(domainname, options = {})
59
+ options[:path] ||= File.join(RAILS_ROOT, "locale")
60
+ _bindtextdomain(domainname, options)
61
+ end
62
+
63
+ @@available_locales = nil
64
+ # Returns locales which supported by the application.
65
+ # This function returns an reversed array of the locale strings under RAILS_ROOT/locale/*.
66
+ # It is used for restriction such as caching files.
67
+ def available_locales
68
+ unless (GetText.cached? and @@available_locales)
69
+ @@available_locales = (Dir.glob(File.join(RAILS_ROOT, "locale/[a-z]*")).map{|path| File.basename(path)} << "en").uniq.sort.reverse
67
70
  end
68
- opt[:path] ||= File.join(RAILS_ROOT, "locale")
69
- _bindtextdomain(domainname, opt)
71
+ @@available_locales
72
+ end
73
+
74
+ # Returns a normalized locale which is in available_locales.
75
+ # * locale: a Locale::Object or nil.
76
+ def normalized_locale(locale = nil)
77
+ locale ||= GetText.locale
78
+ (available_locales &
79
+ [locale.to_general, locale.to_s, locale.language, Locale.default.language, "en"].uniq)[0]
70
80
  end
81
+
71
82
  end
72
83
  end
73
84
 
@@ -219,15 +230,6 @@ module ActionController #:nodoc:
219
230
  textdomain_to(ActionMailer::Base, domainname) if defined? ActionMailer::Base
220
231
  end
221
232
 
222
- # Gets the textdomain name of this controller.
223
- # This returns the first textdomain which is bound in app/controller/*.rb.
224
- #
225
- # *Notice* Deprecated since 1.8.
226
- def self.textdomainname
227
- textdomain = @@gettext_domainnames[0]
228
- textdomain ? textdomain[0] : nil
229
- end
230
-
231
233
  # Gets the textdomain name and path of this controller which is set
232
234
  # with init_gettext. *(Since 1.8)*
233
235
  #
@@ -273,7 +275,7 @@ module ActionView #:nodoc:
273
275
  # instead of foo.rhtml. If the file isn't found, foo.rhtml is used.
274
276
  def render_file(template_path, use_full_path = true, local_assigns = {})
275
277
  locale = GetText.locale
276
- [locale.to_general, locale.to_s, locale.language, Locale.default.language].each do |v|
278
+ [locale.to_general, locale.to_s, locale.language, Locale.default.language].uniq.each do |v|
277
279
  localized_path = "#{template_path}_#{v}"
278
280
  return render_file_without_locale(localized_path, use_full_path, local_assigns) if file_exists? localized_path
279
281
  end
@@ -328,13 +330,10 @@ module ActionView #:nodoc:
328
330
  @error_message_explanation = [single_msg, plural_msg]
329
331
  end
330
332
 
331
-
333
+ #
332
334
  def error_messages_for(instance, objects, object_names, count, options)
333
335
  record = ActiveRecord::Base.human_attribute_table_name_for_error(options[:object_name] || object_names[0].to_s)
334
336
 
335
- message_title = instance.error_message_title(@error_message_title)
336
- message_explanation = instance.error_message_explanation(@error_message_explanation)
337
-
338
337
  html = {}
339
338
  [:id, :class].each do |key|
340
339
  if options.include?(key)
@@ -345,36 +344,44 @@ module ActionView #:nodoc:
345
344
  end
346
345
  end
347
346
 
348
- header_message = n_(message_title, count) % {:num => count, :record => record}
347
+ if options[:message_title]
348
+ header_message = instance.error_message(options[:message_title], count) % {:num => count, :record => record}
349
+ else
350
+ header_message = n_(@error_message_title, count) % {:num => count, :record => record}
351
+ end
352
+ if options[:message_explanation]
353
+ message_explanation = instance.error_message(options[:message_explanation], count) % {:num => count}
354
+ else
355
+ message_explanation = n_(@error_message_explanation, count) % {:num => count}
356
+ end
357
+
349
358
  error_messages = objects.map {|object| object.errors.full_messages.map {|msg| instance.content_tag(:li, msg) } }
350
359
 
351
360
  instance.content_tag(:div,
352
361
  instance.content_tag(options[:header_tag] || :h2, header_message) <<
353
- instance.content_tag(:p, n_(message_explanation, count) % {:num => count}) <<
362
+ instance.content_tag(:p, message_explanation) <<
354
363
  instance.content_tag(:ul, error_messages),
355
364
  html
356
365
  )
357
366
  end
358
367
  end
359
368
 
360
- def error_message_title(msg) #:nodoc:
361
- if msg
362
- [_(msg[0]), _(msg[1])]
363
- else
364
- nil
365
- end
366
- end
367
-
368
- def error_message_explanation(msg) #:nodoc:
369
- if msg
370
- [_(msg[0]), _(msg[1])]
371
- else
372
- nil
373
- end
369
+ def error_message(msg, count) #:nodoc:
370
+ ngettext(msg, count)
374
371
  end
375
372
 
376
373
  alias error_messages_for_without_localize error_messages_for #:nodoc:
377
374
 
375
+ # error_messages_for overrides original method with localization.
376
+ # And also it extends to be able to replace the title/explanation of the header of the error dialog. (Since 1.90)
377
+ # If you want to override these messages in the whole application,
378
+ # use ActionView::Helpers::ActiveRecordHelper::L10n.set_error_message_(title|explanation) instead.
379
+ # * :message_title - the title of message. Use Nn_() to path the strings for singular/plural.
380
+ # e.g. Nn_("%{num} error prohibited this %{record} from being saved",
381
+ # "%{num} errors prohibited this %{record} from being saved")
382
+ # * :message_explanation - the explanation of message
383
+ # e.g. Nn_("There was a problem with the following field:",
384
+ # "There were %{num} problems with the following fields:")
378
385
  def error_messages_for(*params)
379
386
  options = params.last.is_a?(Hash) ? params.pop.symbolize_keys : {}
380
387
  objects = params.collect {|object_name| instance_variable_get("@#{object_name}") }.compact
@@ -403,7 +410,7 @@ module ActionView #:nodoc:
403
410
 
404
411
  def distance_of_time_in_words(from_time, to_time = 0, include_seconds = false)
405
412
  textdomain("rails")
406
-
413
+
407
414
  msg = distance_of_time_in_words_without_locale(from_time, to_time, include_seconds)
408
415
  match = false
409
416
  [NMINUTES, NHOURS, NDAYS, NMONTHS].each do |regexp, nn|
@@ -459,16 +466,30 @@ module ActionController #:nodoc: all
459
466
  module Caching
460
467
  module Fragments
461
468
  def fragment_cache_key_with_gettext(name)
462
- fragment_cache_key_without_gettext(name).gsub('?', '.').gsub(/:/, ".") << "_#{Locale.current}"
469
+ ret = fragment_cache_key_without_gettext(name)
470
+ if ret.is_a? String
471
+ ret.gsub(/:/, ".") << "_#{normalized_locale}"
472
+ else
473
+ ret
474
+ end
463
475
  end
464
476
  alias_method_chain :fragment_cache_key, :gettext
465
477
 
466
478
  def expire_fragment_with_gettext(name, options = nil)
467
479
  return unless perform_caching
468
480
 
469
- key = %r{#{fragment_cache_key_without_gettext(name).gsub('?', '.').gsub(/:/, ".")}}
470
- self.class.benchmark "Expired fragments matching: #{key.source}" do
471
- fragment_cache_store.delete_matched(key, options)
481
+ key = fragment_cache_key_without_gettext(name)
482
+ if key.is_a?(Regexp)
483
+ self.class.benchmark "Expired fragments matching: #{key.source}" do
484
+ fragment_cache_store.delete_matched(key, options)
485
+ end
486
+ else
487
+ key = key.gsub(/:/, ".")
488
+ self.class.benchmark "Expired fragment: #{key}, lang = #{available_locales.inspect}" do
489
+ available_locales.each do |lang|
490
+ fragment_cache_store.delete("#{key}_#{lang}", options)
491
+ end
492
+ end
472
493
  end
473
494
  end
474
495
  alias_method_chain :expire_fragment, :gettext
@@ -25,7 +25,7 @@ module GetText
25
25
 
26
26
  # constant values
27
27
  VERSION = GetText::VERSION
28
- DATE = %w($Date: 2007/07/02 16:40:18 $)[1]
28
+ DATE = %w($Date: 2008/01/27 10:58:10 $)[1]
29
29
  MAX_LINE_LEN = 70
30
30
 
31
31
  @ex_parsers = []
@@ -132,7 +132,7 @@ msgstr ""
132
132
 
133
133
  ary.dup.each do |single_msg|
134
134
  if single_msg[0] == key or
135
- (single_msg[0] =~ /#{Regexp.quote(key)}\000/ and
135
+ (single_msg[0] =~ /^#{Regexp.quote(key)}\000/ and
136
136
  single_msg[0] != plural_msg[0])
137
137
  if single_msg[0] != key
138
138
  warn %Q[Warning: n_("#{plural_msg[0].gsub(/\000/, '", "')}") and n_("#{single_msg[0].gsub(/\000/, '", "')}") are duplicated. First msgid was used.]
@@ -394,7 +394,7 @@ module GetText
394
394
 
395
395
  # constant values
396
396
  VERSION = GetText::VERSION
397
- DATE = %w($Date: 2006/06/11 15:36:20 $)[1]
397
+ DATE = %w($Date: 2007/07/21 15:03:05 $)[1]
398
398
 
399
399
  module_function
400
400
 
@@ -459,7 +459,7 @@ module GetText
459
459
 
460
460
  m = Merger.new
461
461
  result = m.merge(defpo, refpot)
462
- pp result if $DEBUG
462
+ p result if $DEBUG
463
463
  print result.generate_po if $DEBUG
464
464
 
465
465
  begin
@@ -34,7 +34,6 @@ class String
34
34
  # * Returns: formatted String
35
35
  #
36
36
  # (e.g.) "%{firstname}, %{familyname}" % {:firstname => "Masao", :familyname => "Mutoh"}
37
- REGEXP_NORMAL = /%\{/ #:nodoc:
38
37
  def %(args)
39
38
  if args.kind_of?(Hash)
40
39
  ret = dup
@@ -43,12 +42,17 @@ class String
43
42
  }
44
43
  ret
45
44
  else
46
- ret = gsub(REGEXP_NORMAL, '%%{')
45
+ ret = gsub(/%\{/, '%%{')
47
46
  begin
48
47
  ret._old_format_m(args)
49
- rescue ArgumentError
50
- $stderr.puts " The string:#{ret}"
51
- $stderr.puts " args:#{args.inspect}"
48
+ rescue ArgumentError => e
49
+ if $DEBUG
50
+ $stderr.puts " The string:#{ret}"
51
+ $stderr.puts " args:#{args.inspect}"
52
+ puts e.backtrace
53
+ else
54
+ raise ArgumentError, e.message
55
+ end
52
56
  end
53
57
  end
54
58
  end
@@ -1,7 +1,7 @@
1
1
  =begin
2
2
  textdomain.rb - GetText::Textdomain
3
3
 
4
- Copyright (C) 2001-2006 Masao Mutoh
4
+ Copyright (C) 2001-2008 Masao Mutoh
5
5
  Copyright (C) 2001-2003 Masahiro Sakai
6
6
 
7
7
  Masahiro Sakai <s01397ms@sfc.keio.ac.jp>
@@ -10,7 +10,7 @@
10
10
  You may redistribute it and/or modify it under the same
11
11
  license terms as Ruby.
12
12
 
13
- $Id: textdomain.rb,v 1.22 2007/07/02 16:40:18 mutoh Exp $
13
+ $Id: textdomain.rb,v 1.23 2008/01/19 17:07:02 mutoh Exp $
14
14
  =end
15
15
 
16
16
  require 'gettext/string'
@@ -202,7 +202,7 @@ module GetText
202
202
  private
203
203
  def load_mo(reload = false)
204
204
  @current_mo = nil
205
- return @current_mo unless @current_locale
205
+ return nil unless @current_locale
206
206
  unless reload
207
207
  @current_mo = @mofiles[@current_locale]
208
208
  if @current_mo
@@ -6,10 +6,10 @@
6
6
  You may redistribute it and/or modify it under the same
7
7
  license terms as Ruby.
8
8
 
9
- $Id: textdomainmanager.rb,v 1.2 2006/06/11 15:36:20 mutoh Exp $
9
+ $Id: textdomainmanager.rb,v 1.6 2008/01/29 16:30:29 mutoh Exp $
10
10
  =end
11
11
 
12
- require 'gettext/locale'
12
+ require 'locale'
13
13
  require 'gettext/textdomain'
14
14
 
15
15
  module GetText
@@ -18,7 +18,7 @@ module GetText
18
18
  class TextDomainManager
19
19
  include Enumerable
20
20
 
21
- attr_reader :target
21
+ attr_reader :target, :textdomains
22
22
 
23
23
  @@output_charset = ENV["OUTPUT_CHARSET"]
24
24
  @@textdomain_all = {}
@@ -33,7 +33,7 @@ module GetText
33
33
  # Gets the current output_charset.
34
34
  # * Returns: output_charset.
35
35
  def self.output_charset
36
- @@output_charset
36
+ @@output_charset
37
37
  end
38
38
 
39
39
  def self.each_all
@@ -93,7 +93,7 @@ module GetText
93
93
  def set_locale(locale, force = false)
94
94
  if locale != @locale or force
95
95
  each do |textdomain|
96
- textdomain.set_locale(locale)
96
+ textdomain.set_locale(locale, force)
97
97
  end
98
98
  @locale = locale
99
99
  end
data/lib/gettext/utils.rb CHANGED
@@ -23,7 +23,7 @@ module GetText
23
23
 
24
24
  # Merges two Uniforum style .po files together.
25
25
  #
26
- # *Note* "msgmerge" tool is included in GNU GetText. So you need to install GNU GetText.
26
+ # *Note* This function requires "msgmerge" tool included in GNU GetText. So you need to install GNU GetText.
27
27
  #
28
28
  # The def.po file is an existing PO file with translations which will be taken
29
29
  # over to the newly created file as long as they still match; comments will be preserved,
@@ -56,8 +56,9 @@ module GetText
56
56
  if cont.empty?
57
57
  failed_filename = refpo + "~"
58
58
  FileUtils.cp(refpo, failed_filename)
59
- $stderr.puts _("Failed to merge with %{defpo} - skipping!") % {:defpo => defpo}
60
- $stderr.puts _("Please check new .pot in %{failed_filename}") %{:failed_filename => failed_filename}
59
+ $stderr.puts _("Failed to merge with %{defpo}") % {:defpo => defpo}
60
+ $stderr.puts _("New .pot was copied to %{failed_filename}") %{:failed_filename => failed_filename}
61
+ raise _("`#{cmd}' may not be found. \nInstall GNU Gettext then set PATH or MSGMERGE_PATH correctly.")
61
62
  else
62
63
  cont.sub!(/(Project-Id-Version\:).*$/, "\\1 #{app_version}\\n\"")
63
64
  File.open(defpo, "w") do |out|
@@ -8,5 +8,5 @@
8
8
  license terms as Ruby.
9
9
  =end
10
10
  module GetText
11
- VERSION = "1.10.0"
11
+ VERSION = "1.90.0"
12
12
  end
@@ -1,62 +1,31 @@
1
1
  =begin
2
2
  locale.rb - Locale module
3
3
 
4
- Copyright (C) 2002-2006 Masao Mutoh
4
+ Copyright (C) 2002-2007 Masao Mutoh
5
5
 
6
6
  You may redistribute it and/or modify it under the same
7
7
  license terms as Ruby.
8
8
 
9
- $Id: locale.rb,v 1.13 2006/12/03 16:26:59 mutoh Exp $
9
+ $Id: locale.rb,v 1.2 2007/11/08 16:44:22 mutoh Exp $
10
10
  =end
11
11
 
12
- require 'gettext/locale_object'
13
-
14
- begin
15
- require 'locale_system'
16
- rescue LoadError
17
- # This is used for installation process(from rake only)
18
- # And deprecated these constants.
19
- module Locale
20
- # Deprecated.
21
- CTYPE = 0
22
- # Deprecated.
23
- NUMERIC = 1
24
- # Deprecated.
25
- TIME = 2
26
- # Deprecated.
27
- COLLATE = 3
28
- # Deprecated.
29
- MONETARY = 4
30
- # Deprecated.
31
- MESSAGES = 5
32
- # Deprecated.
33
- ALL = 6
34
- end
35
- end
12
+ require 'locale/object'
36
13
 
37
14
  if /cygwin|mingw|win32/ =~ RUBY_PLATFORM
38
- require 'gettext/locale_win32'
15
+ require 'locale/win32'
16
+ elsif /java/ =~ RUBY_PLATFORM
17
+ require 'locale/jruby'
39
18
  else
40
- require 'gettext/locale_posix'
19
+ require 'locale/posix'
41
20
  end
42
21
 
43
22
  # Locale module manages the locale informations of the application.
44
23
  module Locale
45
- unless defined? CTYPE
46
- CTYPE = 0 #:nodoc:
47
- NUMERIC = 1 #:nodoc:
48
- TIME = 2 #:nodoc:
49
- COLLATE = 3 #:nodoc:
50
- MONETARY = 4 #:nodoc:
51
- MESSAGES = 5 #:nodoc:
52
- ALL = 6 #:nodoc:
53
- end
54
-
55
24
  @@default = nil
56
25
  @@current = nil
57
26
 
58
27
  module_function
59
- # Sets the default locale (Locale::Object or String(such as ja_JP.eucjP)).
28
+ # Sets the default locale (Locale::Object or String(such as ja_JP.eucJP)).
60
29
  #
61
30
  # * locale: the default locale
62
31
  # * Returns: self.
@@ -67,7 +36,7 @@ module Locale
67
36
  else
68
37
  @@default = Locale::Object.new(locale)
69
38
  end
70
- @@default.charset ||= @@locale_system_module.get_charset(@@default)
39
+ @@default.charset ||= @@locale_system_module.charset
71
40
  else
72
41
  @@default = nil
73
42
  end
@@ -127,7 +96,7 @@ module Locale
127
96
  else
128
97
  @@current = Locale::Object.new(lang, country, charset)
129
98
  end
130
- @@current.charset ||= @@locale_system_module.get_charset(@@current)
99
+ @@current.charset ||= @@locale_system_module.charset
131
100
  end
132
101
  self
133
102
  end
@@ -158,14 +127,6 @@ module Locale
158
127
  #
159
128
  # *Notice*: Locale.set(lctype, locale) is deprecated.
160
129
  def set(lang, country = nil, charset = nil)
161
- if lang.kind_of? Numeric
162
- warn "Locale.set(lctype, locale) is deprecated. Use Locale.set(locale) instead."
163
- # Locale.set(Locale::CTYPE, "ja_JP.eucJP") "country" means locale.
164
- lang = country
165
- country = nil
166
- charset = nil
167
- end
168
-
169
130
  set_current(nil)
170
131
  if lang.kind_of? String
171
132
  set_default(Locale::Object.new(lang, country, charset))
@@ -180,23 +141,15 @@ module Locale
180
141
  # call-seq:
181
142
  # current
182
143
  # get
183
- # get(lctype = nil) (Deprecated)
184
144
  #
185
145
  # * Returns: the current locale (Locale::Object).
186
146
  #
187
147
  # *Notice*: lctype is deprecated. Use this with no parameter instead.
188
- def get(lctype = nil)
189
- warn "Locale.get(lctype) is deprecated. Use Locale.get (noparam) instead." if lctype
148
+ def get
190
149
  @@current = default unless @@current
191
150
  @@current
192
151
  end
193
152
 
194
- # *Deprecated*. Use Locale.set or Locale.set_current instead.
195
- def setlocale(lctype, loc)
196
- warn "Deprecated. Use Locale#set instead."
197
- set(lctype, loc)
198
- end
199
-
200
153
  # Same as charset. Gets the charset of the current locale.
201
154
  # * Returns: the charset of the current locale (String)
202
155
  def codeset