gettext 1.9.0-mswin32 → 1.10.0-mswin32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (333) hide show
  1. data/ChangeLog +122 -1
  2. data/NEWS +21 -0
  3. data/README +30 -22
  4. data/data/locale/bs/LC_MESSAGES/rails.mo +0 -0
  5. data/data/locale/bs/LC_MESSAGES/rgettext.mo +0 -0
  6. data/data/locale/ca/LC_MESSAGES/rails.mo +0 -0
  7. data/data/locale/ca/LC_MESSAGES/rgettext.mo +0 -0
  8. data/data/locale/cs/LC_MESSAGES/rails.mo +0 -0
  9. data/data/locale/cs/LC_MESSAGES/rgettext.mo +0 -0
  10. data/data/locale/de/LC_MESSAGES/rails.mo +0 -0
  11. data/data/locale/de/LC_MESSAGES/rgettext.mo +0 -0
  12. data/data/locale/el/LC_MESSAGES/rails.mo +0 -0
  13. data/data/locale/el/LC_MESSAGES/rgettext.mo +0 -0
  14. data/data/locale/eo/LC_MESSAGES/rails.mo +0 -0
  15. data/data/locale/eo/LC_MESSAGES/rgettext.mo +0 -0
  16. data/data/locale/es/LC_MESSAGES/rails.mo +0 -0
  17. data/data/locale/es/LC_MESSAGES/rgettext.mo +0 -0
  18. data/data/locale/et/LC_MESSAGES/rails.mo +0 -0
  19. data/data/locale/fr/LC_MESSAGES/rails.mo +0 -0
  20. data/data/locale/fr/LC_MESSAGES/rgettext.mo +0 -0
  21. data/data/locale/hr/LC_MESSAGES/rails.mo +0 -0
  22. data/data/locale/hr/LC_MESSAGES/rgettext.mo +0 -0
  23. data/data/locale/it/LC_MESSAGES/rails.mo +0 -0
  24. data/data/locale/it/LC_MESSAGES/rgettext.mo +0 -0
  25. data/data/locale/ja/LC_MESSAGES/rails.mo +0 -0
  26. data/data/locale/ja/LC_MESSAGES/rgettext.mo +0 -0
  27. data/data/locale/ko/LC_MESSAGES/rails.mo +0 -0
  28. data/data/locale/ko/LC_MESSAGES/rgettext.mo +0 -0
  29. data/data/locale/nb/LC_MESSAGES/rails.mo +0 -0
  30. data/data/locale/nb/LC_MESSAGES/rgettext.mo +0 -0
  31. data/data/locale/nl/LC_MESSAGES/rails.mo +0 -0
  32. data/data/locale/nl/LC_MESSAGES/rgettext.mo +0 -0
  33. data/data/locale/pt_BR/LC_MESSAGES/rails.mo +0 -0
  34. data/data/locale/pt_BR/LC_MESSAGES/rgettext.mo +0 -0
  35. data/data/locale/ru/LC_MESSAGES/rails.mo +0 -0
  36. data/data/locale/ru/LC_MESSAGES/rgettext.mo +0 -0
  37. data/data/locale/sv/LC_MESSAGES/rgettext.mo +0 -0
  38. data/data/locale/vi/LC_MESSAGES/rails.mo +0 -0
  39. data/data/locale/vi/LC_MESSAGES/rgettext.mo +0 -0
  40. data/data/locale/zh/LC_MESSAGES/rails.mo +0 -0
  41. data/data/locale/zh/LC_MESSAGES/rgettext.mo +0 -0
  42. data/data/locale/zh_TW/LC_MESSAGES/rails.mo +0 -0
  43. data/data/locale/zh_TW/LC_MESSAGES/rgettext.mo +0 -0
  44. data/ext/gettext/Makefile +2 -2
  45. data/ext/gettext/locale_system.o +0 -0
  46. data/ext/gettext/locale_system.so +0 -0
  47. data/lib/gettext/active_record.rb +51 -31
  48. data/lib/gettext/locale_win32.rb +2 -1
  49. data/lib/gettext/parser/active_record.rb +2 -2
  50. data/lib/gettext/parser/ruby.rb +2 -2
  51. data/lib/gettext/poparser.rb +303 -298
  52. data/lib/gettext/rails.rb +104 -50
  53. data/lib/gettext/rails_compat.rb +16 -0
  54. data/lib/gettext/rgettext.rb +37 -3
  55. data/lib/gettext/textdomain.rb +45 -6
  56. data/lib/gettext/utils.rb +7 -0
  57. data/lib/gettext/version.rb +1 -1
  58. data/lib/gettext.rb +119 -37
  59. data/lib/locale_system.so +0 -0
  60. data/po/bs/rails.po +148 -0
  61. data/po/bs/rgettext.po +131 -0
  62. data/po/ca/rails.po +45 -26
  63. data/po/ca/rgettext.po +21 -21
  64. data/po/cs/rails.po +46 -24
  65. data/po/cs/rgettext.po +21 -21
  66. data/po/de/rails.po +46 -27
  67. data/po/de/rgettext.po +21 -21
  68. data/po/el/rails.po +46 -25
  69. data/po/el/rgettext.po +22 -22
  70. data/po/eo/rails.po +49 -30
  71. data/po/eo/rgettext.po +21 -21
  72. data/po/es/rails.po +45 -24
  73. data/po/es/rgettext.po +21 -21
  74. data/po/et/rails.po +49 -30
  75. data/po/fr/rails.po +47 -28
  76. data/po/fr/rgettext.po +31 -29
  77. data/po/hr/rails.po +148 -0
  78. data/po/hr/rgettext.po +131 -0
  79. data/po/it/rails.po +42 -24
  80. data/po/it/rgettext.po +21 -21
  81. data/po/ja/rails.po +43 -25
  82. data/po/ja/rgettext.po +21 -21
  83. data/po/ko/rails.po +44 -24
  84. data/po/ko/rgettext.po +21 -21
  85. data/po/nb/rails.po +140 -0
  86. data/po/nb/rgettext.po +127 -0
  87. data/po/nl/rails.po +50 -30
  88. data/po/nl/rgettext.po +21 -21
  89. data/po/pt_BR/rails.po +48 -29
  90. data/po/pt_BR/rgettext.po +21 -21
  91. data/po/rails.pot +42 -24
  92. data/po/rgettext.pot +21 -21
  93. data/po/ru/rails.po +50 -31
  94. data/po/ru/rgettext.po +21 -21
  95. data/po/sv/rgettext.po +21 -21
  96. data/po/vi/rails.po +141 -0
  97. data/po/vi/rgettext.po +126 -0
  98. data/po/zh/rails.po +60 -43
  99. data/po/zh/rgettext.po +22 -22
  100. data/po/zh_TW/rails.po +61 -43
  101. data/po/zh_TW/rgettext.po +22 -22
  102. data/samples/cgi/locale/bs/LC_MESSAGES/helloerb1.mo +0 -0
  103. data/samples/cgi/locale/bs/LC_MESSAGES/helloerb2.mo +0 -0
  104. data/samples/cgi/locale/bs/LC_MESSAGES/hellolib.mo +0 -0
  105. data/samples/cgi/locale/bs/LC_MESSAGES/main.mo +0 -0
  106. data/samples/cgi/locale/hr/LC_MESSAGES/helloerb1.mo +0 -0
  107. data/samples/cgi/locale/hr/LC_MESSAGES/helloerb2.mo +0 -0
  108. data/samples/cgi/locale/hr/LC_MESSAGES/hellolib.mo +0 -0
  109. data/samples/cgi/locale/hr/LC_MESSAGES/main.mo +0 -0
  110. data/samples/cgi/locale/nb/LC_MESSAGES/helloerb1.mo +0 -0
  111. data/samples/cgi/locale/nb/LC_MESSAGES/helloerb2.mo +0 -0
  112. data/samples/cgi/locale/nb/LC_MESSAGES/hellolib.mo +0 -0
  113. data/samples/cgi/locale/nb/LC_MESSAGES/main.mo +0 -0
  114. data/samples/cgi/locale/vi/LC_MESSAGES/helloerb1.mo +0 -0
  115. data/samples/cgi/locale/vi/LC_MESSAGES/helloerb2.mo +0 -0
  116. data/samples/cgi/locale/vi/LC_MESSAGES/hellolib.mo +0 -0
  117. data/samples/cgi/locale/vi/LC_MESSAGES/main.mo +0 -0
  118. data/samples/cgi/po/bs/helloerb1.po +59 -0
  119. data/samples/cgi/po/bs/helloerb2.po +51 -0
  120. data/samples/cgi/po/bs/hellolib.po +23 -0
  121. data/samples/cgi/po/bs/main.po +83 -0
  122. data/samples/cgi/po/hr/helloerb1.po +59 -0
  123. data/samples/cgi/po/hr/helloerb2.po +51 -0
  124. data/samples/cgi/po/hr/hellolib.po +23 -0
  125. data/samples/cgi/po/hr/main.po +83 -0
  126. data/samples/cgi/po/nb/helloerb1.po +58 -0
  127. data/samples/cgi/po/nb/helloerb2.po +50 -0
  128. data/samples/cgi/po/nb/hellolib.po +22 -0
  129. data/samples/cgi/po/nb/main.po +82 -0
  130. data/samples/cgi/po/vi/helloerb1.po +65 -0
  131. data/samples/cgi/po/vi/helloerb2.po +52 -0
  132. data/samples/cgi/po/vi/hellolib.po +24 -0
  133. data/samples/cgi/po/vi/main.po +77 -0
  134. data/samples/locale/bs/LC_MESSAGES/hello.mo +0 -0
  135. data/samples/locale/bs/LC_MESSAGES/hello2.mo +0 -0
  136. data/samples/locale/bs/LC_MESSAGES/hello_noop.mo +0 -0
  137. data/samples/locale/bs/LC_MESSAGES/hello_plural.mo +0 -0
  138. data/samples/locale/bs/LC_MESSAGES/helloglade2.mo +0 -0
  139. data/samples/locale/bs/LC_MESSAGES/hellogtk.mo +0 -0
  140. data/samples/locale/bs/LC_MESSAGES/hellotk.mo +0 -0
  141. data/samples/locale/hr/LC_MESSAGES/hello.mo +0 -0
  142. data/samples/locale/hr/LC_MESSAGES/hello2.mo +0 -0
  143. data/samples/locale/hr/LC_MESSAGES/hello_noop.mo +0 -0
  144. data/samples/locale/hr/LC_MESSAGES/hello_plural.mo +0 -0
  145. data/samples/locale/hr/LC_MESSAGES/helloglade2.mo +0 -0
  146. data/samples/locale/hr/LC_MESSAGES/hellogtk.mo +0 -0
  147. data/samples/locale/hr/LC_MESSAGES/hellotk.mo +0 -0
  148. data/samples/locale/ja/LC_MESSAGES/hello_plural.mo +0 -0
  149. data/samples/locale/nb/LC_MESSAGES/hello.mo +0 -0
  150. data/samples/locale/nb/LC_MESSAGES/hello2.mo +0 -0
  151. data/samples/locale/nb/LC_MESSAGES/hello_noop.mo +0 -0
  152. data/samples/locale/nb/LC_MESSAGES/hello_plural.mo +0 -0
  153. data/samples/locale/nb/LC_MESSAGES/helloglade2.mo +0 -0
  154. data/samples/locale/nb/LC_MESSAGES/hellogtk.mo +0 -0
  155. data/samples/locale/nb/LC_MESSAGES/hellotk.mo +0 -0
  156. data/samples/locale/vi/LC_MESSAGES/hello.mo +0 -0
  157. data/samples/locale/vi/LC_MESSAGES/hello2.mo +0 -0
  158. data/samples/locale/vi/LC_MESSAGES/hello_noop.mo +0 -0
  159. data/samples/locale/vi/LC_MESSAGES/hello_plural.mo +0 -0
  160. data/samples/locale/vi/LC_MESSAGES/helloglade2.mo +0 -0
  161. data/samples/locale/vi/LC_MESSAGES/hellogtk.mo +0 -0
  162. data/samples/locale/vi/LC_MESSAGES/hellotk.mo +0 -0
  163. data/samples/po/bs/hello.po +23 -0
  164. data/samples/po/bs/hello2.po +31 -0
  165. data/samples/po/bs/hello_noop.po +27 -0
  166. data/samples/po/bs/hello_plural.po +26 -0
  167. data/samples/po/bs/helloglade2.po +31 -0
  168. data/samples/po/bs/hellogtk.po +23 -0
  169. data/samples/po/bs/hellotk.po +23 -0
  170. data/samples/po/hr/hello.po +23 -0
  171. data/samples/po/hr/hello2.po +31 -0
  172. data/samples/po/hr/hello_noop.po +27 -0
  173. data/samples/po/hr/hello_plural.po +26 -0
  174. data/samples/po/hr/helloglade2.po +31 -0
  175. data/samples/po/hr/hellogtk.po +23 -0
  176. data/samples/po/hr/hellotk.po +23 -0
  177. data/samples/po/ja/hello_plural.po +1 -1
  178. data/samples/po/nb/hello.po +22 -0
  179. data/samples/po/nb/hello2.po +31 -0
  180. data/samples/po/nb/hello_noop.po +26 -0
  181. data/samples/po/nb/hello_plural.po +24 -0
  182. data/samples/po/nb/helloglade2.po +30 -0
  183. data/samples/po/nb/hellogtk.po +22 -0
  184. data/samples/po/nb/hellotk.po +22 -0
  185. data/samples/po/vi/hello.po +23 -0
  186. data/samples/po/vi/hello2.po +31 -0
  187. data/samples/po/vi/hello_noop.po +27 -0
  188. data/samples/po/vi/hello_plural.po +26 -0
  189. data/samples/po/vi/helloglade2.po +38 -0
  190. data/samples/po/vi/hellogtk.po +23 -0
  191. data/samples/po/vi/hellotk.po +24 -0
  192. data/samples/rails/locale/bs/LC_MESSAGES/blog.mo +0 -0
  193. data/samples/rails/locale/hr/LC_MESSAGES/blog.mo +0 -0
  194. data/samples/rails/locale/nb/LC_MESSAGES/blog.mo +0 -0
  195. data/samples/rails/locale/vi/LC_MESSAGES/blog.mo +0 -0
  196. data/samples/rails/po/bs/blog.po +106 -0
  197. data/samples/rails/po/hr/blog.po +106 -0
  198. data/samples/rails/po/nb/blog.po +104 -0
  199. data/samples/rails/po/vi/blog.po +110 -0
  200. data/samples/rails/vendor/plugins/gettext/locale/bs/LC_MESSAGES/gettext_plugin.mo +0 -0
  201. data/samples/rails/vendor/plugins/gettext/locale/hr/LC_MESSAGES/gettext_plugin.mo +0 -0
  202. data/samples/rails/vendor/plugins/gettext/locale/nb/LC_MESSAGES/gettext_plugin.mo +0 -0
  203. data/samples/rails/vendor/plugins/gettext/locale/vi/LC_MESSAGES/gettext_plugin.mo +0 -0
  204. data/samples/rails/vendor/plugins/gettext/po/bs/gettext_plugin.po +27 -0
  205. data/samples/rails/vendor/plugins/gettext/po/hr/gettext_plugin.po +27 -0
  206. data/samples/rails/vendor/plugins/gettext/po/nb/gettext_plugin.po +27 -0
  207. data/samples/rails/vendor/plugins/gettext/po/vi/gettext_plugin.po +28 -0
  208. data/src/poparser.ry +9 -4
  209. data/test/README +2 -0
  210. data/test/Rakefile +2 -0
  211. data/test/gettext_test.rb +51 -13
  212. data/test/gettext_test_active_record.rb +33 -0
  213. data/test/gettext_test_parser.rb +5 -0
  214. data/test/gettext_test_rails_caching.rb +211 -0
  215. data/test/locale/da/LC_MESSAGES/plural_error.mo +0 -0
  216. data/test/locale/fr/LC_MESSAGES/plural.mo +0 -0
  217. data/test/locale/fr/LC_MESSAGES/plural_error.mo +0 -0
  218. data/test/locale/ja/LC_MESSAGES/plural.mo +0 -0
  219. data/test/locale/ja/LC_MESSAGES/plural_error.mo +0 -0
  220. data/test/locale/ja/LC_MESSAGES/test_nsgettext.mo +0 -0
  221. data/test/locale/la/LC_MESSAGES/plural_error.mo +0 -0
  222. data/test/po/da/plural_error.po +3 -3
  223. data/test/po/fr/plural.po +6 -0
  224. data/test/po/fr/plural_error.po +3 -3
  225. data/test/po/ja/plural.po +6 -0
  226. data/test/po/ja/plural_error.po +2 -2
  227. data/test/po/ja/test_nsgettext.po +65 -0
  228. data/test/po/la/plural_error.po +3 -3
  229. data/test/rails/README +5 -0
  230. data/test/rails/Rakefile +35 -0
  231. data/test/rails/app/controllers/application.rb +8 -0
  232. data/test/rails/app/controllers/articles_controller.rb +61 -0
  233. data/test/rails/app/controllers/mailer_controller.rb +19 -0
  234. data/test/rails/app/helpers/application_helper.rb +3 -0
  235. data/test/rails/app/helpers/articles_helper.rb +2 -0
  236. data/test/rails/app/helpers/mailer_helper.rb +2 -0
  237. data/test/rails/app/models/article.rb +5 -0
  238. data/test/rails/app/models/mailer.rb +38 -0
  239. data/test/rails/app/models/user.rb +3 -0
  240. data/test/rails/app/views/articles/_form.rhtml +13 -0
  241. data/test/rails/app/views/articles/edit.rhtml +9 -0
  242. data/test/rails/app/views/articles/list.rhtml +30 -0
  243. data/test/rails/app/views/articles/list_fr.rhtml +1 -0
  244. data/test/rails/app/views/articles/multi_error_messages_for.rhtml +19 -0
  245. data/test/rails/app/views/articles/new.rhtml +8 -0
  246. data/test/rails/app/views/articles/show.rhtml +28 -0
  247. data/test/rails/app/views/layouts/application.rhtml +14 -0
  248. data/test/rails/app/views/layouts/mailer.rhtml +20 -0
  249. data/test/rails/app/views/mailer/coverpage.rhtml +6 -0
  250. data/test/rails/app/views/mailer/coverpage_fr.rhtml +6 -0
  251. data/test/rails/app/views/mailer/singlepart.rhtml +3 -0
  252. data/test/rails/app/views/mailer/singlepart_fr.rhtml +3 -0
  253. data/test/rails/config/boot.rb +45 -0
  254. data/test/rails/config/database.yml +36 -0
  255. data/test/rails/config/environment.rb +64 -0
  256. data/test/rails/config/environments/development.rb +21 -0
  257. data/test/rails/config/environments/production.rb +18 -0
  258. data/test/rails/config/environments/test.rb +19 -0
  259. data/test/rails/config/routes.rb +23 -0
  260. data/test/rails/db/schema.rb +27 -0
  261. data/test/rails/po/ja/rails_test.po +142 -0
  262. data/test/rails/po/rails_test.pot +147 -0
  263. data/test/rails/public/404.html +30 -0
  264. data/test/rails/public/500.html +30 -0
  265. data/test/rails/public/dispatch.cgi +10 -0
  266. data/test/rails/public/dispatch.fcgi +24 -0
  267. data/test/rails/public/dispatch.rb +10 -0
  268. data/test/rails/public/favicon.ico +0 -0
  269. data/test/rails/public/images/rails.png +0 -0
  270. data/test/rails/public/index.html +277 -0
  271. data/test/rails/public/javascripts/application.js +2 -0
  272. data/test/rails/public/javascripts/controls.js +833 -0
  273. data/test/rails/public/javascripts/dragdrop.js +942 -0
  274. data/test/rails/public/javascripts/effects.js +1088 -0
  275. data/test/rails/public/javascripts/prototype.js +2515 -0
  276. data/test/rails/public/robots.txt +1 -0
  277. data/test/rails/public/stylesheets/scaffold.css +74 -0
  278. data/test/rails/script/about +3 -0
  279. data/test/rails/script/breakpointer +3 -0
  280. data/test/rails/script/console +3 -0
  281. data/test/rails/script/destroy +3 -0
  282. data/test/rails/script/generate +3 -0
  283. data/test/rails/script/performance/benchmarker +3 -0
  284. data/test/rails/script/performance/profiler +3 -0
  285. data/test/rails/script/plugin +3 -0
  286. data/test/rails/script/process/inspector +3 -0
  287. data/test/rails/script/process/reaper +3 -0
  288. data/test/rails/script/process/spawner +3 -0
  289. data/test/rails/script/runner +3 -0
  290. data/test/rails/script/server +3 -0
  291. data/test/rails/test/fixtures/articles.yml +11 -0
  292. data/test/rails/test/functional/articles_controller_test.rb +109 -0
  293. data/test/rails/test/functional/mailer_controller_test.rb +93 -0
  294. data/test/rails/test/integration/general_stories_test.rb +58 -0
  295. data/test/rails/test/result/en/create_error.html +95 -0
  296. data/test/rails/test/result/en/list.html +65 -0
  297. data/test/rails/test/result/en/multi_error_messages_for.html +153 -0
  298. data/test/rails/test/result/en/multipart.html +67 -0
  299. data/test/rails/test/result/en/new.html +95 -0
  300. data/test/rails/test/result/en/show.html +50 -0
  301. data/test/rails/test/result/en/singlepart.html +10 -0
  302. data/test/rails/test/result/fr/list.html +15 -0
  303. data/test/rails/test/result/fr/multipart.html +67 -0
  304. data/test/rails/test/result/fr/singlepart.html +10 -0
  305. data/test/rails/test/result/ja/create_error.html +95 -0
  306. data/test/rails/test/result/ja/list.html +65 -0
  307. data/test/rails/test/result/ja/multi_error_messages_for.html +153 -0
  308. data/test/rails/test/result/ja/multipart.html +67 -0
  309. data/test/rails/test/result/ja/new.html +95 -0
  310. data/test/rails/test/result/ja/show.html +50 -0
  311. data/test/rails/test/result/ja/singlepart.html +10 -0
  312. data/test/rails/test/test_helper.rb +28 -0
  313. data/test/rails/test/unit/article_test.rb +18 -0
  314. data/test/test.sh +4 -0
  315. data/test/test_nsgettext.rb +44 -0
  316. data/test/test_rubyparser_n_.rb +10 -0
  317. metadata +317 -20
  318. data/ext/gettext/locale_system-i386-mswin32.def +0 -2
  319. data/ext/gettext/locale_system-i386-mswin32.exp +0 -0
  320. data/ext/gettext/locale_system-i386-mswin32.lib +0 -0
  321. data/ext/gettext/locale_system-i386-mswin32.pdb +0 -0
  322. data/ext/gettext/locale_system.obj +0 -0
  323. data/ext/gettext/vc70.pdb +0 -0
  324. data/samples/rails/locale/cs/LC_MESSAGES/gettext_plugin.mo +0 -0
  325. data/samples/rails/locale/de/LC_MESSAGES/gettext_plugin.mo +0 -0
  326. data/samples/rails/locale/el/LC_MESSAGES/gettext_plugin.mo +0 -0
  327. data/samples/rails/locale/es/LC_MESSAGES/gettext_plugin.mo +0 -0
  328. data/samples/rails/locale/fr/LC_MESSAGES/gettext_plugin.mo +0 -0
  329. data/samples/rails/locale/ja/LC_MESSAGES/gettext_plugin.mo +0 -0
  330. data/samples/rails/locale/ko/LC_MESSAGES/gettext_plugin.mo +0 -0
  331. data/samples/rails/locale/nl/LC_MESSAGES/gettext_plugin.mo +0 -0
  332. data/samples/rails/locale/pt_BR/LC_MESSAGES/gettext_plugin.mo +0 -0
  333. data/samples/rails/locale/ru/LC_MESSAGES/gettext_plugin.mo +0 -0
data/lib/gettext/rails.rb CHANGED
@@ -6,11 +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: rails.rb,v 1.55 2007/01/21 15:16:06 mutoh Exp $
9
+ $Id: rails.rb,v 1.63 2007/07/05 16:55:59 mutoh Exp $
10
10
  =end
11
11
 
12
12
  require 'gettext/cgi'
13
13
  require 'action_controller'
14
+ require 'gettext/rails_compat'
14
15
 
15
16
  module GetText
16
17
  # GetText::Rails supports Ruby on Rails.
@@ -237,11 +238,27 @@ module ActionController #:nodoc:
237
238
  end
238
239
 
239
240
  class TestRequest < AbstractRequest #:nodoc:
241
+ class GetTextMockCGI < CGI #:nodoc:
242
+ attr_accessor :stdinput, :stdoutput, :env_table
243
+
244
+ def initialize(env, input=nil)
245
+ self.env_table = env
246
+ self.stdinput = StringIO.new(input || "")
247
+ self.stdoutput = StringIO.new
248
+
249
+ super()
250
+ end
251
+ end
252
+
240
253
  @cgi = nil
241
254
  def cgi
242
255
  unless @cgi
243
- ENV['REQUEST_URI'] ||= "http://localhost:3000/"
244
- @cgi = CGI.new
256
+ @cgi = GetTextMockCGI.new("REQUEST_METHOD" => "GET",
257
+ "QUERY_STRING" => "",
258
+ "REQUEST_URI" => "/",
259
+ "HTTP_HOST" => "www.example.com",
260
+ "SERVER_PORT" => "80",
261
+ "HTTPS" => "off")
245
262
  end
246
263
  @cgi
247
264
  end
@@ -310,50 +327,64 @@ module ActionView #:nodoc:
310
327
  end
311
328
  @error_message_explanation = [single_msg, plural_msg]
312
329
  end
313
-
314
- def error_message_title #:nodoc:
315
- if @error_message_title
316
- [_(@error_message_title[0]), _(@error_message_title[1])]
317
- else
318
- nil
319
- end
320
- end
321
- def error_message_explanation #:nodoc:
322
- if @error_message_explanation
323
- [_(@error_message_explanation[0]), _(@error_message_explanation[1])]
324
- else
325
- nil
326
- end
327
- end
328
330
 
329
- def render_error_message(object, klass, record, count, options)
330
- message_title = @error_message_title
331
- message_explanation = @error_message_explanation
332
-
333
- klass.content_tag("div",
334
- klass.content_tag(
335
- options[:header_tag] || "h2",
336
- n_(message_title, count) % {:num => count, :record => record}
337
- ) +
338
- klass.content_tag("p", n_(message_explanation, count) % {:num => count}) +
339
- klass.content_tag("ul", object.errors.full_messages.collect { |msg| klass.content_tag("li", msg) }),
340
- "id" => options[:id] || "errorExplanation", "class" => options[:class] || "errorExplanation"
341
- )
342
- end
343
331
 
344
- def error_messages_for(object, object_name, klass, options = {})
345
- options = options.symbolize_keys
346
-
347
- if object && ! object.errors.empty?
348
- count = object.errors.count
349
- record = ActiveRecord::Base.human_attribute_table_name_for_error(object_name.to_s)
350
- render_error_message(object, klass, record, count, options)
351
- end
332
+ def error_messages_for(instance, objects, object_names, count, options)
333
+ record = ActiveRecord::Base.human_attribute_table_name_for_error(options[:object_name] || object_names[0].to_s)
334
+
335
+ message_title = instance.error_message_title(@error_message_title)
336
+ message_explanation = instance.error_message_explanation(@error_message_explanation)
337
+
338
+ html = {}
339
+ [:id, :class].each do |key|
340
+ if options.include?(key)
341
+ value = options[key]
342
+ html[key] = value unless value.blank?
343
+ else
344
+ html[key] = 'errorExplanation'
345
+ end
346
+ end
347
+
348
+ header_message = n_(message_title, count) % {:num => count, :record => record}
349
+ error_messages = objects.map {|object| object.errors.full_messages.map {|msg| instance.content_tag(:li, msg) } }
350
+
351
+ instance.content_tag(:div,
352
+ instance.content_tag(options[:header_tag] || :h2, header_message) <<
353
+ instance.content_tag(:p, n_(message_explanation, count) % {:num => count}) <<
354
+ instance.content_tag(:ul, error_messages),
355
+ html
356
+ )
352
357
  end
353
358
  end
354
- def error_messages_for(object_name, options = {})
355
- object = instance_variable_get("@#{object_name}")
356
- L10n.error_messages_for(object, object_name, self, options)
359
+
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
374
+ end
375
+
376
+ alias error_messages_for_without_localize error_messages_for #:nodoc:
377
+
378
+ def error_messages_for(*params)
379
+ options = params.last.is_a?(Hash) ? params.pop.symbolize_keys : {}
380
+ objects = params.collect {|object_name| instance_variable_get("@#{object_name}") }.compact
381
+ object_names = params.dup
382
+ count = objects.inject(0) {|sum, object| sum + object.errors.count }
383
+ if count.zero?
384
+ ''
385
+ else
386
+ L10n.error_messages_for(self, objects, object_names, count, options)
387
+ end
357
388
  end
358
389
  end
359
390
 
@@ -363,17 +394,19 @@ module ActionView #:nodoc:
363
394
 
364
395
  # This is FAKE constant. The messages are found by rgettext as the msgid.
365
396
  MESSAGESS = [N_('less than 5 seconds'), N_('less than 10 seconds'), N_('less than 20 seconds'),
366
- N_('half a minute'), N_('less than a minute')]
367
- MINUTES = [/^(\d+) minutes?$/, Nn_('1 minute', '%{num} minutes')]
368
- HOURS = [/^about (\d+) hours?$/, Nn_('about 1 hour', 'about %{num} hours')]
369
- DAYS = [/^(\d+) days?$/, Nn_('1 day', '%{num} days')]
397
+ N_('half a minute'), N_('less than a minute'), N_('about 1 month'),
398
+ N_('about 1 year'), N_('over 2 years')]
399
+ NMINUTES = [/^(\d+) minutes?$/, Nn_('1 minute', '%{num} minutes')]
400
+ NHOURS = [/^about (\d+) hours?$/, Nn_('about 1 hour', 'about %{num} hours')]
401
+ NDAYS = [/^(\d+) days?$/, Nn_('1 day', '%{num} days')]
402
+ NMONTHS = [/^(\d+) months?$/, Nn_('1 month', '%{num} months')]
370
403
 
371
404
  def distance_of_time_in_words(from_time, to_time = 0, include_seconds = false)
372
405
  textdomain("rails")
373
406
 
374
407
  msg = distance_of_time_in_words_without_locale(from_time, to_time, include_seconds)
375
408
  match = false
376
- [MINUTES, HOURS, DAYS].each do |regexp, nn|
409
+ [NMINUTES, NHOURS, NDAYS, NMONTHS].each do |regexp, nn|
377
410
  if regexp =~ msg
378
411
  match = true
379
412
  msg = n_(nn, $1.to_i) % {:num => $1}
@@ -416,8 +449,29 @@ if defined? ActionMailer
416
449
  part.body = NKF.nkf('-j', part.body)
417
450
  end
418
451
  end
419
- @mail
452
+ @mail
453
+ end
454
+ end
455
+ end
456
+ end
457
+
458
+ module ActionController #:nodoc: all
459
+ module Caching
460
+ module Fragments
461
+ def fragment_cache_key_with_gettext(name)
462
+ fragment_cache_key_without_gettext(name).gsub('?', '.').gsub(/:/, ".") << "_#{Locale.current}"
463
+ end
464
+ alias_method_chain :fragment_cache_key, :gettext
465
+
466
+ def expire_fragment_with_gettext(name, options = nil)
467
+ return unless perform_caching
468
+
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)
472
+ end
420
473
  end
474
+ alias_method_chain :expire_fragment, :gettext
421
475
  end
422
476
  end
423
477
  end
@@ -432,7 +486,7 @@ end
432
486
 
433
487
 
434
488
  if ::RAILS_ENV == "development"
435
- GetText::TextDomain.check_mo = true
489
+ GetText.cached = false
436
490
  end
437
491
 
438
492
  require 'gettext/active_record'
@@ -0,0 +1,16 @@
1
+ #
2
+ # This file is for Rails-1.1.6.
3
+ # From activesupport-1.4.1/lib/active_support/core_ext/module/aliasing.rb
4
+ #
5
+ class Module
6
+ unless defined? alias_method_chain
7
+ def alias_method_chain(target, feature)
8
+ # Strip out punctuation on predicates or bang methods since
9
+ # e.g. target?_without_feature is not a valid method name.
10
+ aliased_target, punctuation = target.to_s.sub(/([?!=])$/, ''), $1
11
+ yield(aliased_target, punctuation) if block_given?
12
+ alias_method "#{aliased_target}_without_#{feature}#{punctuation}", target
13
+ alias_method target, "#{aliased_target}_with_#{feature}#{punctuation}"
14
+ end
15
+ end
16
+ end
@@ -25,7 +25,7 @@ module GetText
25
25
 
26
26
  # constant values
27
27
  VERSION = GetText::VERSION
28
- DATE = %w($Date: 2006/12/14 16:35:57 $)[1]
28
+ DATE = %w($Date: 2007/07/02 16:40:18 $)[1]
29
29
  MAX_LINE_LEN = 70
30
30
 
31
31
  @ex_parsers = []
@@ -123,6 +123,41 @@ msgstr ""
123
123
  str
124
124
  end
125
125
 
126
+ def normalize(ary) # :nodoc:
127
+ used_plural_msgs = []
128
+ ary.select{|item| item[0].include? "\000"}.each do |plural_msg|
129
+ next if used_plural_msgs.include?(plural_msg[0])
130
+
131
+ key = plural_msg[0].split("\000")[0]
132
+
133
+ ary.dup.each do |single_msg|
134
+ if single_msg[0] == key or
135
+ (single_msg[0] =~ /#{Regexp.quote(key)}\000/ and
136
+ single_msg[0] != plural_msg[0])
137
+ if single_msg[0] != key
138
+ warn %Q[Warning: n_("#{plural_msg[0].gsub(/\000/, '", "')}") and n_("#{single_msg[0].gsub(/\000/, '", "')}") are duplicated. First msgid was used.]
139
+ used_plural_msgs << single_msg[0]
140
+ end
141
+
142
+ single_msg[1..-1].each do |line_info|
143
+ plural_msg << line_info
144
+ fname = line_info.split(/:/)[0]
145
+ sorted = plural_msg[1..-1].select{|l| l.split(/:/)[0].include?(fname)}.collect{|l|
146
+ aline = l.split(/:/)
147
+ [aline[0], aline[1] =~ /[0-9]+/ ? aline[1].to_i : aline[1]]
148
+ }.sort.collect{|l| "#{l[0]}:#{l[1]}"}
149
+ plural_msg.delete_if{|i| sorted.include?(i)}
150
+ sorted.each {|i|
151
+ plural_msg << i
152
+ }
153
+ end
154
+ ary.delete(single_msg)
155
+ end
156
+ end
157
+ end
158
+ ary.collect{|i| i.uniq}
159
+ end
160
+
126
161
  def parse(files) # :nodoc:
127
162
  ary = []
128
163
  files.each do |file|
@@ -138,8 +173,7 @@ msgstr ""
138
173
  raise
139
174
  end
140
175
  end
141
-
142
- ary
176
+ normalize(ary)
143
177
  end
144
178
 
145
179
  def check_options # :nodoc:
@@ -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.20 2006/09/11 16:30:31 mutoh Exp $
13
+ $Id: textdomain.rb,v 1.22 2007/07/02 16:40:18 mutoh Exp $
14
14
  =end
15
15
 
16
16
  require 'gettext/string'
@@ -116,14 +116,34 @@ module GetText
116
116
  # * Returns: the translated string or nil if not found.
117
117
  def gettext(msgid)
118
118
  return "" if msgid == "" or msgid.nil?
119
- if @current_mo and @current_mo[msgid] and (@current_mo[msgid].size > 0)
120
- @current_mo[msgid]
119
+ return nil unless @current_mo
120
+ if @current_mo[msgid] and (@current_mo[msgid].size > 0)
121
+ @current_mo[msgid]
122
+ elsif msgid.include?("\000")
123
+ ret = nil
124
+ msgid_single = msgid.split("\000")[0]
125
+ @current_mo.each{|key, val|
126
+ if key =~ /^#{Regexp.quote(msgid_single)}\000/
127
+ # Usually, this is not caused to make po-files from rgettext.
128
+ warn %Q[Warning: n_("#{msgid_single}", "#{msgid.split("\000")[1]}") and n_("#{key.gsub(/\000/, '", "')}") are duplicated.] if $DEBUG
129
+ ret = val
130
+ break
131
+ end
132
+ }
133
+ ret
121
134
  else
122
- nil
135
+ ret = nil
136
+ @current_mo.each{|key, val|
137
+ if key =~ /^#{Regexp.quote(msgid)}\000/
138
+ ret = val.split("\000")[0]
139
+ break
140
+ end
141
+ }
142
+ ret
123
143
  end
124
144
  end
125
145
 
126
- # Gets the translated string.
146
+ # Gets the translated string. (Deprecated. Don't call this method directly)
127
147
  # * msgid: the original message(single).
128
148
  # * msgid: the original message(plural).
129
149
  # * n: the number
@@ -132,7 +152,7 @@ module GetText
132
152
  key = msgid + "\000" + msgid_plural
133
153
  msg = gettext(key)
134
154
  if ! msg
135
- nil
155
+ nil # do nothing.
136
156
  elsif msg == key
137
157
  msg = n == 1 ? msgid : msgid_plural
138
158
  elsif msg.include?("\000")
@@ -151,6 +171,25 @@ module GetText
151
171
  msg
152
172
  end
153
173
 
174
+ def ngettext_data(msgid, msgid_plural) #:nodoc:
175
+ key = msgid + "\000" + msgid_plural
176
+ msg = gettext(key)
177
+ ret = nil
178
+ if ! msg
179
+ ret = nil
180
+ elsif msg == key
181
+ ret = nil
182
+ elsif msg.include?("\000")
183
+ # [[msgstr[0], msgstr[1], msgstr[2],...], cond]
184
+ cond = @current_mo ? @current_mo.plural : nil
185
+ cond ||= "n != 1"
186
+ ret = [msg.split("\000"), cond]
187
+ else
188
+ ret = [[msg], "0"]
189
+ end
190
+ ret
191
+ end
192
+
154
193
  # Compare this object has the same name, topdir and locale.
155
194
  # * name: the textdomain name
156
195
  # * topdir: the top directory of mo files or nil.
data/lib/gettext/utils.rb CHANGED
@@ -7,6 +7,13 @@
7
7
  license terms as Ruby.
8
8
  =end
9
9
 
10
+ require 'rbconfig'
11
+ if /mingw|mswin|mswin32/ =~ RUBY_PLATFORM
12
+ ENV['PATH'] = %w(bin lib).collect{|dir|
13
+ "#{Config::CONFIG["prefix"]}\\lib\\GTK\\#{dir};"
14
+ }.join('') + ENV['PATH']
15
+ end
16
+
10
17
  require 'gettext/rgettext'
11
18
  require 'gettext/rmsgfmt'
12
19
  require 'fileutils'
@@ -8,5 +8,5 @@
8
8
  license terms as Ruby.
9
9
  =end
10
10
  module GetText
11
- VERSION = "1.9.0"
11
+ VERSION = "1.10.0"
12
12
  end
data/lib/gettext.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  =begin
2
2
  gettext.rb - GetText module
3
3
 
4
- Copyright (C) 2001-2006 Masao Mutoh
4
+ Copyright (C) 2001-2007 Masao Mutoh
5
5
  Copyright (C) 2001-2003 Masahiro Sakai
6
6
 
7
7
  Masao Mutoh <mutoh@highway.ne.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: gettext.rb,v 1.22 2006/12/03 16:26:59 mutoh Exp $
13
+ $Id: gettext.rb,v 1.27 2007/07/05 05:29:28 mutoh Exp $
14
14
  =end
15
15
 
16
16
  require 'rbconfig'
@@ -29,6 +29,29 @@ module GetText
29
29
  mod.extend self
30
30
  end
31
31
 
32
+ @@__cached = true
33
+
34
+ # Set the value whether cache messages or not.
35
+ # true to cache messages, otherwise false.
36
+ #
37
+ # Default is true. If $DEBUG is false, messages are not checked even if
38
+ # this value is true.
39
+ def cached=(val)
40
+ @@__cached = val
41
+ GetText::TextDomain.check_mo = ! val
42
+ end
43
+
44
+ # Return the cached value.
45
+ def cached?
46
+ @@__cached
47
+ end
48
+
49
+ # Clear the cached messages.
50
+ def clear_cache
51
+ @@__cache_msgids = {}
52
+ @@__cache_nmsgids = {}
53
+ end
54
+
32
55
  @@__textdomainmanagers = Hash.new
33
56
 
34
57
  # call-seq:
@@ -156,6 +179,8 @@ module GetText
156
179
  ((ret + klass.ancestors + [GetText]) & @@__textdomainmanagers.keys).uniq
157
180
  end
158
181
 
182
+ @@__cache_msgids = {}
183
+
159
184
  # call-seq:
160
185
  # gettext(msgid)
161
186
  # _(msgid)
@@ -164,14 +189,44 @@ module GetText
164
189
  # * msgid: the message id.
165
190
  # * Returns: localized text by msgid. If there are not binded mo-file, it will return msgid.
166
191
  def gettext(msgid)
167
- ret = nil
192
+ sgettext(msgid, nil)
193
+ end
194
+
195
+ # call-seq:
196
+ # sgettext(msgid, div = '|')
197
+ # s_(msgid, div = '|')
198
+ #
199
+ # Translates msgid, but if there are no localized text,
200
+ # it returns a last part of msgid separeted "div".
201
+ #
202
+ # * msgid: the message id.
203
+ # * div: separator or nil.
204
+ # * Returns: the localized text by msgid. If there are no localized text,
205
+ # it returns a last part of msgid separeted "div".
206
+ # See: http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC151
207
+ def sgettext(msgid, div = '|')
208
+ cached_key = [bound_target, Locale.current, msgid]
209
+ if (@@__cached or ! $DEBUG)
210
+ if @@__cache_msgids.keys.include?(cached_key)
211
+ return @@__cache_msgids[cached_key]
212
+ end
213
+ end
214
+ msg = nil
168
215
  each_textdomain {|textdomain|
169
- ret = textdomain.gettext(msgid)
170
- break if ret
216
+ msg = textdomain.gettext(msgid)
217
+ break if msg
171
218
  }
172
- ret ? ret : msgid
219
+ msg ||= msgid
220
+ if div and msg == msgid
221
+ if index = msg.rindex(div)
222
+ msg = msg[(index + 1)..-1]
223
+ end
224
+ end
225
+ @@__cache_msgids[cached_key] = msg
173
226
  end
174
227
 
228
+ @@__cache_nmsgids = {}
229
+
175
230
  # call-seq:
176
231
  # ngettext(msgid, msgid_plural, n)
177
232
  # ngettext(msgids, n) # msgids = [msgid, msgid_plural]
@@ -187,21 +242,7 @@ module GetText
187
242
  # * Returns: the localized text which key is msgid_plural if n is plural(follow plural-rule) or msgid.
188
243
  # "plural-rule" is defined in po-file.
189
244
  def ngettext(arg1, arg2, arg3 = nil)
190
- if arg1.kind_of?(Array)
191
- msgid = arg1[0]
192
- msgid_plural = arg1[1]
193
- n = arg2
194
- else
195
- msgid = arg1
196
- msgid_plural = arg2
197
- n = arg3
198
- end
199
- ret = nil
200
- each_textdomain {|textdomain|
201
- ret = textdomain.ngettext(msgid, msgid_plural, n)
202
- break if ret
203
- }
204
- ret ? ret : (n == 1 ? msgid : msgid_plural)
245
+ nsgettext(arg1, arg2, arg3, nil)
205
246
  end
206
247
 
207
248
  # This function does nothing. But it is required in order to recognize the msgid by rgettext.
@@ -219,26 +260,66 @@ module GetText
219
260
  [msgid, msgid_plural]
220
261
  end
221
262
 
263
+
222
264
  # call-seq:
223
- # sgettext(msgid, div = '|')
224
- # s_(msgid, div = '|')
265
+ # nsgettext(msgid, msgid_plural, n, div = "|")
266
+ # nsgettext(msgids, n, div = "|") # msgids = [msgid, msgid_plural]
267
+ # n_(msgid, msgid_plural, n, div = "|")
268
+ # n_(msgids, n, div = "|") # msgids = [msgid, msgid_plural]
225
269
  #
226
- # Translates msgid, but if there are no localized text,
270
+ # The nsgettext is similar to the ngettext.
271
+ # But if there are no localized text,
227
272
  # it returns a last part of msgid separeted "div".
228
273
  #
229
- # * msgid: the message id.
230
- # * div: separator or nil.
231
- # * Returns: the localized text by msgid. If there are no localized text,
232
- # it returns a last part of msgid separeted "div".
233
- # See: http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC151
234
- def sgettext(msgid, div = '|')
235
- msg = gettext(msgid)
236
- if msg == msgid
237
- if index = msg.rindex(div)
238
- msg = msg[(index + 1)..-1]
274
+ # * msgid: the singular form with "div". (e.g. "Special|An apple")
275
+ # * msgid_plural: the plural form. (e.g. "%{num} Apples")
276
+ # * n: a number used to determine the plural form.
277
+ # * Returns: the localized text which key is msgid_plural if n is plural(follow plural-rule) or msgid.
278
+ # "plural-rule" is defined in po-file.
279
+ def nsgettext(arg1, arg2, arg3 = "|", arg4 = "|")
280
+ if arg1.kind_of?(Array)
281
+ msgid = arg1[0]
282
+ msgid_plural = arg1[1]
283
+ n = arg2
284
+ if arg3 and arg3.kind_of? Numeric
285
+ raise ArgumentError, _("3rd parmeter is wrong: value = %{number}") % {:number => arg3}
239
286
  end
287
+ div = arg3
288
+ else
289
+ msgid = arg1
290
+ msgid_plural = arg2
291
+ n = arg3
292
+ div = arg4
240
293
  end
241
- msg
294
+
295
+ cached_key = [bound_target, Locale.current, msgid + "\000" + msgid_plural]
296
+ msgs = nil
297
+ if (@@__cached or ! $DEBUG)
298
+ if @@__cache_nmsgids.keys.include?(cached_key)
299
+ msgs = @@__cache_nmsgids[cached_key] # [msgstr, cond_as_string]
300
+ end
301
+ end
302
+ unless msgs
303
+ each_textdomain {|textdomain|
304
+ msgs = textdomain.ngettext_data(msgid, msgid_plural)
305
+ break if msgs
306
+ }
307
+ msgs = [[msgid, msgid_plural], "n != 1"] unless msgs
308
+ @@__cache_nmsgids[cached_key] = msgs
309
+ end
310
+ msgstrs = msgs[0]
311
+ if div and msgstrs[0] == msgid
312
+ if index = msgstrs[0].rindex(div)
313
+ msgstrs[0] = msgstrs[0][(index + 1)..-1]
314
+ end
315
+ end
316
+ plural = eval(msgs[1])
317
+ if plural.kind_of?(Numeric)
318
+ ret = msgstrs[plural]
319
+ else
320
+ ret = plural ? msgstrs[1] : msgstrs[0]
321
+ end
322
+ ret
242
323
  end
243
324
 
244
325
  # Sets the current locale to the current class/module
@@ -391,9 +472,10 @@ module GetText
391
472
  alias :_ :gettext #:nodoc:
392
473
  alias :n_ :ngettext #:nodoc:
393
474
  alias :s_ :sgettext #:nodoc:
475
+ alias :ns_ :nsgettext #:nodoc:
394
476
 
395
- module_function :bindtextdomain, :textdomain, :each_textdomain,
396
- :N_, :gettext, :_, :ngettext, :n_, :sgettext, :s_, :bound_target, :bound_targets,
477
+ module_function :bindtextdomain, :textdomain, :each_textdomain, :cached=, :cached?, :clear_cache,
478
+ :N_, :gettext, :_, :ngettext, :n_, :sgettext, :s_, :nsgettext, :ns_, :bound_target, :bound_targets,
397
479
  :setlocale, :set_locale, :locale=, :set_locale_all, :locale, :charset=, :set_charset,
398
480
  :set_output_charset, :output_charset=, :output_charset, :current_textdomain_info
399
481
  end
data/lib/locale_system.so CHANGED
Binary file