grosser-gettext 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (406) hide show
  1. data/ChangeLog +2014 -0
  2. data/README.rdoc +172 -0
  3. data/Rakefile +192 -0
  4. data/bin/rgettext +24 -0
  5. data/bin/rmsgfmt +24 -0
  6. data/bin/rmsgmerge +24 -0
  7. data/gettext.gemspec +39 -0
  8. data/lib/gettext.rb +263 -0
  9. data/lib/gettext/cgi.rb +40 -0
  10. data/lib/gettext/class_info.rb +55 -0
  11. data/lib/gettext/core_ext/iconv.rb +109 -0
  12. data/lib/gettext/core_ext/string.rb +63 -0
  13. data/lib/gettext/mofile.rb +320 -0
  14. data/lib/gettext/parser/erb.rb +50 -0
  15. data/lib/gettext/parser/glade.rb +99 -0
  16. data/lib/gettext/parser/ruby.rb +170 -0
  17. data/lib/gettext/poparser.rb +332 -0
  18. data/lib/gettext/textdomain.rb +225 -0
  19. data/lib/gettext/textdomain_manager.rb +218 -0
  20. data/lib/gettext/tools.rb +177 -0
  21. data/lib/gettext/tools/rgettext.rb +275 -0
  22. data/lib/gettext/tools/rmsgfmt.rb +84 -0
  23. data/lib/gettext/tools/rmsgmerge.rb +505 -0
  24. data/lib/gettext/utils.rb +39 -0
  25. data/lib/gettext/version.rb +12 -0
  26. data/po/bg/rgettext.po +150 -0
  27. data/po/bs/rgettext.po +151 -0
  28. data/po/ca/rgettext.po +149 -0
  29. data/po/cs/rgettext.po +152 -0
  30. data/po/de/#rails.po# +175 -0
  31. data/po/de/rgettext.po +157 -0
  32. data/po/el/rgettext.po +148 -0
  33. data/po/eo/rgettext.po +149 -0
  34. data/po/es/rgettext.po +150 -0
  35. data/po/et/rgettext.po +147 -0
  36. data/po/fr/rgettext.po +153 -0
  37. data/po/hr/rgettext.po +151 -0
  38. data/po/hu/rgettext.po +149 -0
  39. data/po/it/rgettext.po +150 -0
  40. data/po/ja/rails.po.old +150 -0
  41. data/po/ja/rgettext.po +149 -0
  42. data/po/ko/rgettext.po +149 -0
  43. data/po/lv/rgettext.po +150 -0
  44. data/po/nb/rgettext.po +151 -0
  45. data/po/nl/rgettext.po +150 -0
  46. data/po/pt_BR/rgettext.po +152 -0
  47. data/po/rgettext.pot +141 -0
  48. data/po/ru/rgettext.po +151 -0
  49. data/po/sr/rgettext.po +150 -0
  50. data/po/sv/rgettext.po +143 -0
  51. data/po/ua/rgettext.po +155 -0
  52. data/po/vi/rgettext.po +148 -0
  53. data/po/zh/rgettext.po +149 -0
  54. data/po/zh_TW/rgettext.po +148 -0
  55. data/samples/README +16 -0
  56. data/samples/cgi/README +43 -0
  57. data/samples/cgi/Rakefile +27 -0
  58. data/samples/cgi/cookie.cgi +64 -0
  59. data/samples/cgi/gettext.css +116 -0
  60. data/samples/cgi/helloerb.rhtml +28 -0
  61. data/samples/cgi/helloerb1.cgi +58 -0
  62. data/samples/cgi/helloerb2.cgi +51 -0
  63. data/samples/cgi/hellolib.rb +20 -0
  64. data/samples/cgi/http.rb +51 -0
  65. data/samples/cgi/index.cgi +111 -0
  66. data/samples/cgi/other.rhtml +20 -0
  67. data/samples/cgi/po/bg/helloerb1.po +59 -0
  68. data/samples/cgi/po/bg/helloerb2.po +51 -0
  69. data/samples/cgi/po/bg/hellolib.po +23 -0
  70. data/samples/cgi/po/bg/main.po +83 -0
  71. data/samples/cgi/po/bs/helloerb1.po +59 -0
  72. data/samples/cgi/po/bs/helloerb2.po +51 -0
  73. data/samples/cgi/po/bs/hellolib.po +23 -0
  74. data/samples/cgi/po/bs/main.po +83 -0
  75. data/samples/cgi/po/ca/helloerb1.po +59 -0
  76. data/samples/cgi/po/ca/helloerb2.po +51 -0
  77. data/samples/cgi/po/ca/hellolib.po +23 -0
  78. data/samples/cgi/po/ca/main.po +83 -0
  79. data/samples/cgi/po/cs/helloerb1.po +61 -0
  80. data/samples/cgi/po/cs/helloerb2.po +52 -0
  81. data/samples/cgi/po/cs/hellolib.po +25 -0
  82. data/samples/cgi/po/cs/main.po +85 -0
  83. data/samples/cgi/po/de/helloerb1.po +61 -0
  84. data/samples/cgi/po/de/helloerb2.po +52 -0
  85. data/samples/cgi/po/de/hellolib.po +24 -0
  86. data/samples/cgi/po/de/main.po +86 -0
  87. data/samples/cgi/po/el/helloerb1.po +60 -0
  88. data/samples/cgi/po/el/helloerb2.po +51 -0
  89. data/samples/cgi/po/el/hellolib.po +23 -0
  90. data/samples/cgi/po/el/main.po +84 -0
  91. data/samples/cgi/po/eo/helloerb1.po +60 -0
  92. data/samples/cgi/po/eo/helloerb2.po +52 -0
  93. data/samples/cgi/po/eo/hellolib.po +24 -0
  94. data/samples/cgi/po/eo/main.po +84 -0
  95. data/samples/cgi/po/es/helloerb1.po +59 -0
  96. data/samples/cgi/po/es/helloerb2.po +50 -0
  97. data/samples/cgi/po/es/hellolib.po +22 -0
  98. data/samples/cgi/po/es/main.po +83 -0
  99. data/samples/cgi/po/fr/helloerb1.po +59 -0
  100. data/samples/cgi/po/fr/helloerb2.po +51 -0
  101. data/samples/cgi/po/fr/hellolib.po +22 -0
  102. data/samples/cgi/po/fr/main.po +85 -0
  103. data/samples/cgi/po/helloerb1.pot +60 -0
  104. data/samples/cgi/po/helloerb2.pot +52 -0
  105. data/samples/cgi/po/hellolib.pot +24 -0
  106. data/samples/cgi/po/hr/helloerb1.po +59 -0
  107. data/samples/cgi/po/hr/helloerb2.po +51 -0
  108. data/samples/cgi/po/hr/hellolib.po +23 -0
  109. data/samples/cgi/po/hr/main.po +83 -0
  110. data/samples/cgi/po/hu/helloerb1.po +59 -0
  111. data/samples/cgi/po/hu/helloerb2.po +51 -0
  112. data/samples/cgi/po/hu/hellolib.po +23 -0
  113. data/samples/cgi/po/hu/main.po +82 -0
  114. data/samples/cgi/po/it/helloerb1.po +60 -0
  115. data/samples/cgi/po/it/helloerb2.po +52 -0
  116. data/samples/cgi/po/it/hellolib.po +24 -0
  117. data/samples/cgi/po/it/main.po +84 -0
  118. data/samples/cgi/po/ja/helloerb1.po +60 -0
  119. data/samples/cgi/po/ja/helloerb2.po +52 -0
  120. data/samples/cgi/po/ja/hellolib.po +24 -0
  121. data/samples/cgi/po/ja/main.po +85 -0
  122. data/samples/cgi/po/ko/helloerb1.po +59 -0
  123. data/samples/cgi/po/ko/helloerb2.po +51 -0
  124. data/samples/cgi/po/ko/hellolib.po +23 -0
  125. data/samples/cgi/po/ko/main.po +84 -0
  126. data/samples/cgi/po/lv/helloerb1.po +65 -0
  127. data/samples/cgi/po/lv/helloerb2.po +52 -0
  128. data/samples/cgi/po/lv/hellolib.po +24 -0
  129. data/samples/cgi/po/lv/main.po +77 -0
  130. data/samples/cgi/po/main.pot +80 -0
  131. data/samples/cgi/po/nb/helloerb1.po +60 -0
  132. data/samples/cgi/po/nb/helloerb2.po +52 -0
  133. data/samples/cgi/po/nb/hellolib.po +24 -0
  134. data/samples/cgi/po/nb/main.po +84 -0
  135. data/samples/cgi/po/nl/helloerb1.po +61 -0
  136. data/samples/cgi/po/nl/helloerb2.po +52 -0
  137. data/samples/cgi/po/nl/hellolib.po +24 -0
  138. data/samples/cgi/po/nl/main.po +86 -0
  139. data/samples/cgi/po/pt_BR/helloerb1.po +59 -0
  140. data/samples/cgi/po/pt_BR/helloerb2.po +51 -0
  141. data/samples/cgi/po/pt_BR/hellolib.po +23 -0
  142. data/samples/cgi/po/pt_BR/main.po +84 -0
  143. data/samples/cgi/po/ru/helloerb1.po +58 -0
  144. data/samples/cgi/po/ru/helloerb2.po +50 -0
  145. data/samples/cgi/po/ru/hellolib.po +22 -0
  146. data/samples/cgi/po/ru/main.po +82 -0
  147. data/samples/cgi/po/sr/helloerb1.po +60 -0
  148. data/samples/cgi/po/sr/helloerb2.po +52 -0
  149. data/samples/cgi/po/sr/hellolib.po +24 -0
  150. data/samples/cgi/po/sr/main.po +80 -0
  151. data/samples/cgi/po/ua/helloerb1.po +62 -0
  152. data/samples/cgi/po/ua/helloerb2.po +54 -0
  153. data/samples/cgi/po/ua/hellolib.po +26 -0
  154. data/samples/cgi/po/ua/main.po +84 -0
  155. data/samples/cgi/po/vi/helloerb1.po +65 -0
  156. data/samples/cgi/po/vi/helloerb2.po +52 -0
  157. data/samples/cgi/po/vi/hellolib.po +24 -0
  158. data/samples/cgi/po/vi/main.po +77 -0
  159. data/samples/cgi/po/zh/helloerb1.po +60 -0
  160. data/samples/cgi/po/zh/helloerb2.po +52 -0
  161. data/samples/cgi/po/zh/hellolib.po +24 -0
  162. data/samples/cgi/po/zh/main.po +80 -0
  163. data/samples/cgi/po/zh_TW/helloerb1.po +67 -0
  164. data/samples/cgi/po/zh_TW/helloerb2.po +54 -0
  165. data/samples/cgi/po/zh_TW/hellolib.po +26 -0
  166. data/samples/cgi/po/zh_TW/main.po +79 -0
  167. data/samples/hello.rb +36 -0
  168. data/samples/hello2.rb +23 -0
  169. data/samples/hello_glade2.glade +70 -0
  170. data/samples/hello_glade2.rb +25 -0
  171. data/samples/hello_gtk2.rb +27 -0
  172. data/samples/hello_noop.rb +31 -0
  173. data/samples/hello_plural.rb +26 -0
  174. data/samples/hello_tk.rb +19 -0
  175. data/samples/makemo.rb +4 -0
  176. data/samples/po/bg/hello.po +24 -0
  177. data/samples/po/bg/hello2.po +31 -0
  178. data/samples/po/bg/hello_glade2.po +31 -0
  179. data/samples/po/bg/hello_gtk.po +23 -0
  180. data/samples/po/bg/hello_noop.po +27 -0
  181. data/samples/po/bg/hello_plural.po +25 -0
  182. data/samples/po/bg/hello_tk.po +23 -0
  183. data/samples/po/bs/hello.po +23 -0
  184. data/samples/po/bs/hello2.po +31 -0
  185. data/samples/po/bs/hello_glade2.po +31 -0
  186. data/samples/po/bs/hello_gtk.po +23 -0
  187. data/samples/po/bs/hello_noop.po +27 -0
  188. data/samples/po/bs/hello_plural.po +26 -0
  189. data/samples/po/bs/hello_tk.po +23 -0
  190. data/samples/po/ca/hello.po +23 -0
  191. data/samples/po/ca/hello2.po +31 -0
  192. data/samples/po/ca/hello_glade2.po +31 -0
  193. data/samples/po/ca/hello_gtk.po +23 -0
  194. data/samples/po/ca/hello_noop.po +27 -0
  195. data/samples/po/ca/hello_plural.po +25 -0
  196. data/samples/po/ca/hello_tk.po +23 -0
  197. data/samples/po/cs/hello.po +23 -0
  198. data/samples/po/cs/hello2.po +31 -0
  199. data/samples/po/cs/hello_glade2.po +37 -0
  200. data/samples/po/cs/hello_gtk.po +23 -0
  201. data/samples/po/cs/hello_noop.po +27 -0
  202. data/samples/po/cs/hello_plural.po +26 -0
  203. data/samples/po/cs/hello_tk.po +23 -0
  204. data/samples/po/de/hello.po +20 -0
  205. data/samples/po/de/hello2.po +28 -0
  206. data/samples/po/de/hello_glade2.po +27 -0
  207. data/samples/po/de/hello_gtk.po +20 -0
  208. data/samples/po/de/hello_noop.po +24 -0
  209. data/samples/po/de/hello_plural.po +25 -0
  210. data/samples/po/de/hello_tk.po +20 -0
  211. data/samples/po/el/hello.po +23 -0
  212. data/samples/po/el/hello2.po +31 -0
  213. data/samples/po/el/hello_glade2.po +31 -0
  214. data/samples/po/el/hello_gtk.po +22 -0
  215. data/samples/po/el/hello_noop.po +27 -0
  216. data/samples/po/el/hello_plural.po +25 -0
  217. data/samples/po/el/hello_tk.po +23 -0
  218. data/samples/po/eo/hello.po +23 -0
  219. data/samples/po/eo/hello2.po +31 -0
  220. data/samples/po/eo/hello_glade2.po +32 -0
  221. data/samples/po/eo/hello_gtk.po +23 -0
  222. data/samples/po/eo/hello_noop.po +27 -0
  223. data/samples/po/eo/hello_plural.po +26 -0
  224. data/samples/po/eo/hello_tk.po +24 -0
  225. data/samples/po/es/hello.po +21 -0
  226. data/samples/po/es/hello2.po +28 -0
  227. data/samples/po/es/hello_glade2.po +28 -0
  228. data/samples/po/es/hello_gtk.po +20 -0
  229. data/samples/po/es/hello_noop.po +24 -0
  230. data/samples/po/es/hello_plural.po +23 -0
  231. data/samples/po/es/hello_tk.po +20 -0
  232. data/samples/po/fr/hello.po +18 -0
  233. data/samples/po/fr/hello2.po +26 -0
  234. data/samples/po/fr/hello_glade2.po +27 -0
  235. data/samples/po/fr/hello_gtk.po +18 -0
  236. data/samples/po/fr/hello_noop.po +22 -0
  237. data/samples/po/fr/hello_plural.po +21 -0
  238. data/samples/po/fr/hello_tk.po +18 -0
  239. data/samples/po/hello.pot +23 -0
  240. data/samples/po/hello2.pot +31 -0
  241. data/samples/po/hello_glade2.pot +32 -0
  242. data/samples/po/hello_gtk.pot +23 -0
  243. data/samples/po/hello_noop.pot +27 -0
  244. data/samples/po/hello_plural.pot +26 -0
  245. data/samples/po/hello_tk.pot +24 -0
  246. data/samples/po/hr/hello.po +23 -0
  247. data/samples/po/hr/hello2.po +31 -0
  248. data/samples/po/hr/hello_glade2.po +31 -0
  249. data/samples/po/hr/hello_gtk.po +23 -0
  250. data/samples/po/hr/hello_noop.po +27 -0
  251. data/samples/po/hr/hello_plural.po +26 -0
  252. data/samples/po/hr/hello_tk.po +23 -0
  253. data/samples/po/hu/hello.po +22 -0
  254. data/samples/po/hu/hello2.po +30 -0
  255. data/samples/po/hu/hello_glade2.po +31 -0
  256. data/samples/po/hu/hello_gtk.po +22 -0
  257. data/samples/po/hu/hello_noop.po +26 -0
  258. data/samples/po/hu/hello_plural.po +25 -0
  259. data/samples/po/hu/hello_tk.po +23 -0
  260. data/samples/po/it/hello.po +20 -0
  261. data/samples/po/it/hello2.po +28 -0
  262. data/samples/po/it/hello_glade2.po +28 -0
  263. data/samples/po/it/hello_gtk.po +21 -0
  264. data/samples/po/it/hello_noop.po +24 -0
  265. data/samples/po/it/hello_plural.po +23 -0
  266. data/samples/po/it/hello_tk.po +21 -0
  267. data/samples/po/ja/hello.po +20 -0
  268. data/samples/po/ja/hello2.po +28 -0
  269. data/samples/po/ja/hello_glade2.po +26 -0
  270. data/samples/po/ja/hello_gtk.po +19 -0
  271. data/samples/po/ja/hello_noop.po +23 -0
  272. data/samples/po/ja/hello_plural.po +21 -0
  273. data/samples/po/ja/hello_tk.po +19 -0
  274. data/samples/po/ko/hello.po +18 -0
  275. data/samples/po/ko/hello2.po +26 -0
  276. data/samples/po/ko/hello_glade2.po +29 -0
  277. data/samples/po/ko/hello_gtk.po +18 -0
  278. data/samples/po/ko/hello_noop.po +22 -0
  279. data/samples/po/ko/hello_plural.po +25 -0
  280. data/samples/po/ko/hello_tk.po +19 -0
  281. data/samples/po/lv/hello.po +24 -0
  282. data/samples/po/lv/hello2.po +32 -0
  283. data/samples/po/lv/hello_glade2.po +38 -0
  284. data/samples/po/lv/hello_gtk.po +24 -0
  285. data/samples/po/lv/hello_noop.po +28 -0
  286. data/samples/po/lv/hello_plural.po +26 -0
  287. data/samples/po/lv/hello_tk.po +24 -0
  288. data/samples/po/nb/hello.po +23 -0
  289. data/samples/po/nb/hello2.po +31 -0
  290. data/samples/po/nb/hello_glade2.po +31 -0
  291. data/samples/po/nb/hello_gtk.po +23 -0
  292. data/samples/po/nb/hello_noop.po +27 -0
  293. data/samples/po/nb/hello_plural.po +26 -0
  294. data/samples/po/nb/hello_tk.po +24 -0
  295. data/samples/po/nl/hello.po +24 -0
  296. data/samples/po/nl/hello2.po +32 -0
  297. data/samples/po/nl/hello_glade2.po +31 -0
  298. data/samples/po/nl/hello_gtk.po +24 -0
  299. data/samples/po/nl/hello_noop.po +28 -0
  300. data/samples/po/nl/hello_plural.po +25 -0
  301. data/samples/po/nl/hello_tk.po +24 -0
  302. data/samples/po/pt_BR/hello.po +21 -0
  303. data/samples/po/pt_BR/hello2.po +29 -0
  304. data/samples/po/pt_BR/hello_glade2.po +29 -0
  305. data/samples/po/pt_BR/hello_gtk.po +21 -0
  306. data/samples/po/pt_BR/hello_noop.po +25 -0
  307. data/samples/po/pt_BR/hello_plural.po +23 -0
  308. data/samples/po/pt_BR/hello_tk.po +21 -0
  309. data/samples/po/ru/hello.po +22 -0
  310. data/samples/po/ru/hello2.po +30 -0
  311. data/samples/po/ru/hello_glade2.po +30 -0
  312. data/samples/po/ru/hello_gtk.po +22 -0
  313. data/samples/po/ru/hello_noop.po +26 -0
  314. data/samples/po/ru/hello_plural.po +28 -0
  315. data/samples/po/ru/hello_tk.po +22 -0
  316. data/samples/po/sr/hello.po +22 -0
  317. data/samples/po/sr/hello2.po +30 -0
  318. data/samples/po/sr/hello_glade2.po +32 -0
  319. data/samples/po/sr/hello_gtk.po +22 -0
  320. data/samples/po/sr/hello_noop.po +26 -0
  321. data/samples/po/sr/hello_plural.po +26 -0
  322. data/samples/po/sr/hello_tk.po +24 -0
  323. data/samples/po/sv/hello.po +20 -0
  324. data/samples/po/sv/hello2.po +28 -0
  325. data/samples/po/sv/hello_glade2.po +28 -0
  326. data/samples/po/sv/hello_gtk.po +20 -0
  327. data/samples/po/sv/hello_noop.po +24 -0
  328. data/samples/po/sv/hello_plural.po +23 -0
  329. data/samples/po/sv/hello_tk.po +20 -0
  330. data/samples/po/test.rb +11 -0
  331. data/samples/po/ua/hello.po +22 -0
  332. data/samples/po/ua/hello2.po +30 -0
  333. data/samples/po/ua/hello_glade2.po +34 -0
  334. data/samples/po/ua/hello_gtk.po +22 -0
  335. data/samples/po/ua/hello_noop.po +26 -0
  336. data/samples/po/ua/hello_plural.po +29 -0
  337. data/samples/po/ua/hello_tk.po +26 -0
  338. data/samples/po/vi/hello.po +23 -0
  339. data/samples/po/vi/hello2.po +31 -0
  340. data/samples/po/vi/hello_glade2.po +38 -0
  341. data/samples/po/vi/hello_gtk.po +23 -0
  342. data/samples/po/vi/hello_noop.po +27 -0
  343. data/samples/po/vi/hello_plural.po +26 -0
  344. data/samples/po/vi/hello_tk.po +24 -0
  345. data/samples/po/zh/hello.po +23 -0
  346. data/samples/po/zh/hello2.po +31 -0
  347. data/samples/po/zh/hello_glade2.po +31 -0
  348. data/samples/po/zh/hello_gtk.po +23 -0
  349. data/samples/po/zh/hello_noop.po +27 -0
  350. data/samples/po/zh/hello_plural.po +25 -0
  351. data/samples/po/zh/hello_tk.po +23 -0
  352. data/samples/po/zh_TW/hello.po +26 -0
  353. data/samples/po/zh_TW/hello2.po +34 -0
  354. data/samples/po/zh_TW/hello_glade2.po +40 -0
  355. data/samples/po/zh_TW/hello_gtk.po +25 -0
  356. data/samples/po/zh_TW/hello_noop.po +30 -0
  357. data/samples/po/zh_TW/hello_plural.po +28 -0
  358. data/samples/po/zh_TW/hello_tk.po +26 -0
  359. data/src/poparser.ry +198 -0
  360. data/test/README +1 -0
  361. data/test/Rakefile +19 -0
  362. data/test/po/cr/plural.po +23 -0
  363. data/test/po/da/plural.po +22 -0
  364. data/test/po/da/plural_error.po +21 -0
  365. data/test/po/fr/plural.po +28 -0
  366. data/test/po/fr/plural_error.po +20 -0
  367. data/test/po/fr/test1.po +23 -0
  368. data/test/po/fr/test2.po +19 -0
  369. data/test/po/fr/test6.po +23 -0
  370. data/test/po/ir/plural.po +23 -0
  371. data/test/po/ja/npgettext.po +46 -0
  372. data/test/po/ja/nsgettext.po +65 -0
  373. data/test/po/ja/pgettext.po +41 -0
  374. data/test/po/ja/plural.po +28 -0
  375. data/test/po/ja/plural_error.po +20 -0
  376. data/test/po/ja/rubyparser.po +43 -0
  377. data/test/po/ja/sgettext.po +47 -0
  378. data/test/po/ja/test1.po +23 -0
  379. data/test/po/ja/test2.po +19 -0
  380. data/test/po/ja/test6.po +23 -0
  381. data/test/po/la/plural.po +23 -0
  382. data/test/po/la/plural_error.po +21 -0
  383. data/test/po/li/plural.po +23 -0
  384. data/test/po/po/plural.po +23 -0
  385. data/test/po/sl/plural.po +24 -0
  386. data/test/test_class_info.rb +80 -0
  387. data/test/test_gettext.rb +274 -0
  388. data/test/test_parser.rb +113 -0
  389. data/test/test_string.rb +14 -0
  390. data/test/test_textdomain.rb +25 -0
  391. data/test/test_textdomain_multi.rb +69 -0
  392. data/test/test_textdomain_toplevel.rb +42 -0
  393. data/test/testlib/N_.rb +66 -0
  394. data/test/testlib/erb.rhtml +15 -0
  395. data/test/testlib/erb.rxml +16 -0
  396. data/test/testlib/gettext.rb +96 -0
  397. data/test/testlib/gladeparser.glade +183 -0
  398. data/test/testlib/helper.rb +11 -0
  399. data/test/testlib/multi_textdomain.rb +119 -0
  400. data/test/testlib/ngettext.rb +74 -0
  401. data/test/testlib/npgettext.rb +31 -0
  402. data/test/testlib/nsgettext.rb +42 -0
  403. data/test/testlib/pgettext.rb +31 -0
  404. data/test/testlib/sgettext.rb +46 -0
  405. data/test/testlib/simple.rb +14 -0
  406. metadata +509 -0
@@ -0,0 +1,31 @@
1
+ # hello_glade2.po - sample for Ruby/Libglade2
2
+ #
3
+ # Copyright (C) 2005,2006 Masao Mutoh
4
+ #
5
+ # This file is distributed under the same license as the Ruby-GetText-Package.
6
+ #
7
+ # Yingfeng <blogyingfeng at gmail.com>, 2006.
8
+ #
9
+ msgid ""
10
+ msgstr ""
11
+ "Project-Id-Version: ruby-gettext 1.1.1\n"
12
+ "POT-Creation-Date: 2004-07-03 23:38+0900\n"
13
+ "PO-Revision-Date: 2006-04-15 13:11+0300\n"
14
+ "Last-Translator: Yingfeng <blogyingfeng at gmail.com>\n"
15
+ "Language-Team: Simplified Chinese\n"
16
+ "MIME-Version: 1.0\n"
17
+ "Content-Type: text/plain; charset=UTF-8\n"
18
+ "Content-Transfer-Encoding: 8bit\n"
19
+ "Plural-Forms: nplurals=1; plural=0;\n"
20
+
21
+ #: hello_glade2.glade:8
22
+ msgid "window1"
23
+ msgstr "窗口1"
24
+
25
+ #: hello_glade2.glade:29
26
+ msgid "first line\nsecond line\nthird line"
27
+ msgstr "第一行\n第二行\n第三行"
28
+
29
+ #: hello_glade2.glade:53
30
+ msgid "<Hello world>"
31
+ msgstr "<你好世界>"
@@ -0,0 +1,23 @@
1
+ # Hello World for Ruby/GTK -- sample for ruby-gettext-package
2
+ #
3
+ # Copyright (C) 2001-2006 Masao Mutoh <mutoh@highway.ne.jp>
4
+ #
5
+ # This file is distributed under the same license as the Ruby-GetText-Package.
6
+ #
7
+ # Yingfeng <blogyingfeng at gmail.com>, 2006.
8
+ #
9
+ msgid ""
10
+ msgstr ""
11
+ "Project-Id-Version: ruby-gettext 1.1.1\n"
12
+ "POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
13
+ "PO-Revision-Date: 2006-04-15 13:11+0300\n"
14
+ "Last-Translator: Yingfeng <blogyingfeng at gmail.com>\n"
15
+ "Language-Team: Simplified Chinese\n"
16
+ "MIME-Version: 1.0\n"
17
+ "Content-Type: text/plain; charset=GB2312\n"
18
+ "Content-Transfer-Encoding: 8bit\n"
19
+ "Plural-Forms: nplurals=1; plural=0;\n"
20
+
21
+ #: ../hello_gtk.rb:14
22
+ msgid "hello, gtk world"
23
+ msgstr "��ã�gtk����"
@@ -0,0 +1,27 @@
1
+ # Hello World noop -- sample for ruby-gettext-package
2
+ #
3
+ # Copyright (C) 2002-2006 Masao Mutoh
4
+ #
5
+ # This file is distributed under the same license as the Ruby-GetText-Package.
6
+ #
7
+ # Yingfeng <blogyingfeng at gmail.com>, 2006.
8
+ #
9
+ msgid ""
10
+ msgstr ""
11
+ "Project-Id-Version: ruby-gettext 1.1.1\n"
12
+ "POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
13
+ "PO-Revision-Date: 2006-04-15 13:11+0300\n"
14
+ "Last-Translator: Yingfeng <blogyingfeng at gmail.com>\n"
15
+ "Language-Team: Simplified Chinese\n"
16
+ "MIME-Version: 1.0\n"
17
+ "Content-Type: text/plain; charset=GB2312\n"
18
+ "Content-Transfer-Encoding: 8bit\n"
19
+ "Plural-Forms: nplurals=1; plural=0;\n"
20
+
21
+ #: hello_noop.rb:8
22
+ msgid "Hello World"
23
+ msgstr "�������"
24
+
25
+ #: hello_noop.rb:8
26
+ msgid "Hello World2"
27
+ msgstr "�������2"
@@ -0,0 +1,25 @@
1
+ # hello_plural.po - sample for plural messages
2
+ #
3
+ # Copyright (C) 2002-2006 Masao Mutoh
4
+ #
5
+ # This file is distributed under the same license as the Ruby-GetText-Package.
6
+ #
7
+ # Yingfeng <blogyingfeng at gmail.com>, 2006.
8
+ #
9
+ msgid ""
10
+ msgstr ""
11
+ "Project-Id-Version: ruby-gettext 1.6.0\n"
12
+ "POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
13
+ "PO-Revision-Date: 2006-04-15 13:11+0300\n"
14
+ "Last-Translator: Yingfeng <blogyingfeng at gmail.com>\n"
15
+ "Language-Team: Simplified Chinese\n"
16
+ "MIME-Version: 1.0\n"
17
+ "Content-Type: text/plain; charset=GB2312\n"
18
+ "Content-Transfer-Encoding: 8bit\n"
19
+ "Plural-Forms: nplurals=1; plural=0;\n"
20
+
21
+ #: hello_plural.rb:11
22
+ msgid "There is an apple.\n"
23
+ msgid_plural "There are %{num} apples.\n"
24
+ msgstr[0] "��һ��ƻ����\n"
25
+ msgstr[1] "��%{num}��ƻ����\n"
@@ -0,0 +1,23 @@
1
+ # hello_tk.po - sample for Ruby/TK
2
+ #
3
+ # Copyright (C) 2004 Masao Mutoh
4
+ #
5
+ # This file is distributed under the same license as the Ruby-GetText-Package.
6
+ #
7
+ # Yingfeng <blogyingfeng at gmail.com>, 2006.
8
+ #
9
+ msgid ""
10
+ msgstr ""
11
+ "Project-Id-Version: ruby-gettext 1.1.1\n"
12
+ "POT-Creation-Date: 2004-11-05 21:38+0900\n"
13
+ "PO-Revision-Date: 2006-04-15 13:11+0300\n"
14
+ "Last-Translator: Yingfeng <blogyingfeng at gmail.com>\n"
15
+ "Language-Team: Simplified Chinese\n"
16
+ "MIME-Version: 1.0\n"
17
+ "Content-Type: text/plain; charset=UTF-8\n"
18
+ "Content-Transfer-Encoding: 8bit\n"
19
+ "Plural-Forms: nplurals=1; plural=0;\n"
20
+
21
+ #: hello_tk.rb:10
22
+ msgid "hello, tk world"
23
+ msgstr "你好,tk世界"
@@ -0,0 +1,26 @@
1
+ # Hello World -- a sample for Ruby-GetText-Package
2
+ #
3
+ # Copyright (C) 2001-2006 Masao Mutoh
4
+ #
5
+ # This file is distributed under the same license as the Ruby-GetText-Package.
6
+ #
7
+ # LIN CHUNG-YI <xmarsh at gmail.com>, 2006.
8
+ #
9
+ msgid ""
10
+ msgstr ""
11
+ "Project-Id-Version: ruby-gettext 1.1.1\n"
12
+ "POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
13
+ "PO-Revision-Date: 2006-08-18 14:48+0800\n"
14
+ "Last-Translator: LIN CHUNG-YI <xmarsh at gmail.com>\n"
15
+ "Language-Team: zh_TW <xmarsh at gmail.com>\n"
16
+ "MIME-Version: 1.0\n"
17
+ "Content-Type: text/plain; charset=utf-8\n"
18
+ "Content-Transfer-Encoding: 8bit\n"
19
+ "Plural-Forms: nplurals=1; plural=0;\n"
20
+ "X-Poedit-Language: Chinese\n"
21
+ "X-Poedit-Country: TAIWAN\n"
22
+
23
+ #: ../hello.rb:7
24
+ msgid "Hello World\n"
25
+ msgstr "哈囉世界\n"
26
+
@@ -0,0 +1,34 @@
1
+ # Hello World 2 -- sample for ruby-gettext-package
2
+ #
3
+ # Copyright (C) 2002-2006 Masao Mutoh
4
+ #
5
+ # This file is distributed under the same license as the Ruby-GetText-Package.
6
+ #
7
+ # LIN CHUNG-YI <xmarsh at gmail.com>, 2006.
8
+ #
9
+ msgid ""
10
+ msgstr ""
11
+ "Project-Id-Version: ruby-gettext 1.1.1\n"
12
+ "POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
13
+ "PO-Revision-Date: 2006-08-18 14:49+0800\n"
14
+ "Last-Translator: LIN CHUNG-YI <xmarsh at gmail.com>\n"
15
+ "Language-Team: zh_TW <xmarsh at gmail.com>\n"
16
+ "MIME-Version: 1.0\n"
17
+ "Content-Type: text/plain; charset=utf-8\n"
18
+ "Content-Transfer-Encoding: 8bit\n"
19
+ "Plural-Forms: nplurals=1; plural=0;\n"
20
+ "X-Poedit-Language: Chinese\n"
21
+ "X-Poedit-Country: TAIWAN\n"
22
+
23
+ #: hello2.rb:9
24
+ msgid "World"
25
+ msgstr "世界"
26
+
27
+ #: hello2.rb:8
28
+ msgid "One is %{num}\n"
29
+ msgstr "一個是 %{num}\n"
30
+
31
+ #: hello2.rb:9
32
+ msgid "Hello %{world}\n"
33
+ msgstr "哈囉 %{world}\n"
34
+
@@ -0,0 +1,40 @@
1
+ # hello_glade2.po - sample for Ruby/Libglade2
2
+ #
3
+ # Copyright (C) 2005,2006 Masao Mutoh
4
+ #
5
+ # This file is distributed under the same license as the Ruby-GetText-Package.
6
+ #
7
+ # LIN CHUNG-YI <xmarsh at gmail.com>, 2006.
8
+ #
9
+ msgid ""
10
+ msgstr ""
11
+ "Project-Id-Version: ruby-gettext 1.1.1\n"
12
+ "POT-Creation-Date: 2004-07-03 23:38+0900\n"
13
+ "PO-Revision-Date: 2006-08-21 09:05+0800\n"
14
+ "Last-Translator: LIN CHUNG-YI <xmarsh at gmail.com>\n"
15
+ "Language-Team: zh_TW <xmarsh at gmail.com>\n"
16
+ "MIME-Version: 1.0\n"
17
+ "Content-Type: text/plain; charset=UTF-8\n"
18
+ "Content-Transfer-Encoding: 8bit\n"
19
+ "Plural-Forms: nplurals=1; plural=0;\n"
20
+ "X-Poedit-Language: Chinese\n"
21
+ "X-Poedit-Country: TAIWAN\n"
22
+
23
+ #: hello_glade2.glade:8
24
+ msgid "window1"
25
+ msgstr "視窗一"
26
+
27
+ #: hello_glade2.glade:29
28
+ msgid ""
29
+ "first line\n"
30
+ "second line\n"
31
+ "third line"
32
+ msgstr ""
33
+ "第一行\n"
34
+ "第二行\n"
35
+ "第三行"
36
+
37
+ #: hello_glade2.glade:53
38
+ msgid "<Hello world>"
39
+ msgstr "<哈囉世界>"
40
+
@@ -0,0 +1,25 @@
1
+ # Hello World for Ruby/GTK -- sample for ruby-gettext-package
2
+ #
3
+ # Copyright (C) 2001-2006 Masao Mutoh
4
+ #
5
+ # This file is distributed under the same license as the Ruby-GetText-Package.
6
+ #
7
+ # LIN CHUNG-YI <xmarsh at gmail.com>, 2006.
8
+ #
9
+ msgid ""
10
+ msgstr ""
11
+ "Project-Id-Version: ruby-gettext 1.1.1\n"
12
+ "POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
13
+ "PO-Revision-Date: 2006-08-21 09:06+0800\n"
14
+ "Last-Translator: LIN CHUNG-YI <xmarsh at gmail.com>\n"
15
+ "Language-Team: zh_TW <xmarsh at gmail.com>\n"
16
+ "MIME-Version: 1.0\n"
17
+ "Content-Type: text/plain; charset=utf-8\n"
18
+ "Content-Transfer-Encoding: 8bit\n"
19
+ "X-Poedit-Language: Chinese\n"
20
+ "X-Poedit-Country: TAIWAN\n"
21
+
22
+ #: ../hello_gtk.rb:14
23
+ msgid "hello, gtk world"
24
+ msgstr "哈囉, gtk 世界"
25
+
@@ -0,0 +1,30 @@
1
+ # Hello World noop -- sample for ruby-gettext-package
2
+ #
3
+ # Copyright (C) 2002-2006 Masao Mutoh
4
+ #
5
+ # This file is distributed under the same license as the Ruby-GetText-Package.
6
+ #
7
+ # LIN CHUNG-YI <xmarsh at gmail.com>, 2006.
8
+ #
9
+ msgid ""
10
+ msgstr ""
11
+ "Project-Id-Version: ruby-gettext 1.1.1\n"
12
+ "POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
13
+ "PO-Revision-Date: 2006-08-18 14:51+0800\n"
14
+ "Last-Translator: LIN CHUNG-YI <xmarsh at gmail.com>\n"
15
+ "Language-Team: zh_TW <xmarsh at gmail.com>\n"
16
+ "MIME-Version: 1.0\n"
17
+ "Content-Type: text/plain; charset=utf-8\n"
18
+ "Content-Transfer-Encoding: 8bit\n"
19
+ "Plural-Forms: nplurals=1; plural=0;\n"
20
+ "X-Poedit-Language: Chinese\n"
21
+ "X-Poedit-Country: TAIWAN\n"
22
+
23
+ #: hello_noop.rb:8
24
+ msgid "Hello World"
25
+ msgstr "哈囉世界"
26
+
27
+ #: hello_noop.rb:8
28
+ msgid "Hello World2"
29
+ msgstr "哈囉世界二"
30
+
@@ -0,0 +1,28 @@
1
+ # hello_plural.po - sample for plural messages
2
+ #
3
+ # Copyright (C) 2002-2006 Masao Mutoh
4
+ #
5
+ # This file is distributed under the same license as the Ruby-GetText-Package.
6
+ #
7
+ # LIN CHUNG-YI <xmarsh at gmail.com>, 2006.
8
+ #
9
+ msgid ""
10
+ msgstr ""
11
+ "Project-Id-Version: ruby-gettext 1.1.1\n"
12
+ "POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
13
+ "PO-Revision-Date: 2006-08-18 15:01+0800\n"
14
+ "Last-Translator: LIN CHUNG-YI <xmarsh at gmail.com>\n"
15
+ "Language-Team: zh_TW <xmarsh at gmail.com>\n"
16
+ "MIME-Version: 1.0\n"
17
+ "Content-Type: text/plain; charset=utf-8\n"
18
+ "Content-Transfer-Encoding: 8bit\n"
19
+ "Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
20
+ "X-Poedit-Language: Chinese\n"
21
+ "X-Poedit-Country: TAIWAN\n"
22
+
23
+ #: hello_plural.rb:11
24
+ msgid "There is an apple.\n"
25
+ msgid_plural "There are %{num} apples.\n"
26
+ msgstr[0] "有一個蘋果。\n"
27
+ msgstr[1] "有 %{num} 個蘋果。\n"
28
+
@@ -0,0 +1,26 @@
1
+ # hello_tk.po - sample for Ruby/TK
2
+ #
3
+ # Copyright (C) 2004-2006 Masao Mutoh
4
+ #
5
+ # This file is distributed under the same license as the Ruby-GetText-Package.
6
+ #
7
+ # LIN CHUNG-YI <xmarsh at gmail.com>, 2006.
8
+ #
9
+ msgid ""
10
+ msgstr ""
11
+ "Project-Id-Version: ruby-gettext 1.1.1\n"
12
+ "POT-Creation-Date: 2004-11-05 21:38+0900\n"
13
+ "PO-Revision-Date: 2006-08-21 09:10+0800\n"
14
+ "Last-Translator: LIN CHUNG-YI <xmarsh at gmail.com>\n"
15
+ "Language-Team: zh_TW <xmarsh at gmail.com>\n"
16
+ "MIME-Version: 1.0\n"
17
+ "Content-Type: text/plain; charset=UTF-8\n"
18
+ "Content-Transfer-Encoding: 8bit\n"
19
+ "Plural-Forms: nplurals=1; plural=0;\n"
20
+ "X-Poedit-Language: Chinese\n"
21
+ "X-Poedit-Country: TAIWAN\n"
22
+
23
+ #: hello_tk.rb:10
24
+ msgid "hello, tk world"
25
+ msgstr "哈囉, tk 世界"
26
+
data/src/poparser.ry ADDED
@@ -0,0 +1,198 @@
1
+ #
2
+ # poparser.ry - ruby version of msgfmt
3
+ #
4
+ # Copyright (C) 2002-2008 Masao Mutoh <mutoh@highway.ne.jp>
5
+ #
6
+ # You may redistribute it and/or modify it under the same
7
+ # license terms as Ruby.
8
+
9
+ class GetText::PoParser
10
+ token COMMENT MSGID MSGCTXT MSGID_PLURAL MSGSTR STRING PLURAL_NUM
11
+
12
+ rule
13
+
14
+ msgfmt
15
+ : /* empty */
16
+ | msgfmt comment
17
+ | msgfmt msgctxt
18
+ | msgfmt message
19
+ ;
20
+
21
+ msgctxt
22
+ : MSGCTXT string_list
23
+ {
24
+ @msgctxt = unescape(val[1]) + "\004"
25
+ }
26
+ ;
27
+
28
+ message
29
+ : single_message
30
+ | plural_message
31
+ ;
32
+
33
+ single_message
34
+ : MSGID string_list MSGSTR string_list
35
+ {
36
+ if @fuzzy and $ignore_fuzzy
37
+ if val[1] != ""
38
+ $stderr.print _("Warning: fuzzy message was ignored.\n")
39
+ $stderr.print " msgid '#{val[1]}'\n"
40
+ else
41
+ on_message('', unescape(val[3]))
42
+ end
43
+ @fuzzy = false
44
+ else
45
+ on_message(@msgctxt + unescape(val[1]), unescape(val[3]))
46
+ end
47
+ result = ""
48
+ }
49
+
50
+ plural_message
51
+ : MSGID string_list MSGID_PLURAL string_list msgstr_plural
52
+ {
53
+ if @fuzzy and $ignore_fuzzy
54
+ if val[1] != ""
55
+ $stderr.print _("Warning: fuzzy message was ignored.\n")
56
+ $stderr.print "msgid = '#{val[1]}\n"
57
+ else
58
+ on_message('', unescape(val[3]))
59
+ end
60
+ @fuzzy = false
61
+ else
62
+ on_message(@msgctxt + unescape(val[1]) + "\000" + unescape(val[3]), unescape(val[4]))
63
+ end
64
+ result = ""
65
+ }
66
+ ;
67
+
68
+ msgstr_plural
69
+ : msgstr_plural msgstr_plural_line
70
+ {
71
+ if val[0].size > 0
72
+ result = val[0] + "\000" + val[1]
73
+ else
74
+ result = ""
75
+ end
76
+ }
77
+ | msgstr_plural_line
78
+ ;
79
+
80
+ msgstr_plural_line
81
+ : MSGSTR PLURAL_NUM string_list
82
+ {
83
+ result = val[2]
84
+ }
85
+ ;
86
+
87
+ comment
88
+ : COMMENT
89
+ {
90
+ on_comment(val[0])
91
+ }
92
+ #| COMMENT
93
+ #;
94
+
95
+ string_list
96
+ : string_list STRING
97
+ {
98
+ result = val.delete_if{|item| item == ""}.join
99
+ }
100
+ | STRING
101
+ {
102
+ result = val[0]
103
+ }
104
+ ;
105
+ end
106
+
107
+ ---- inner
108
+ include GetText
109
+ GetText.bindtextdomain("rgettext")
110
+
111
+ def unescape(orig)
112
+ ret = orig.gsub(/\\n/, "\n")
113
+ ret.gsub!(/\\t/, "\t")
114
+ ret.gsub!(/\\r/, "\r")
115
+ ret.gsub!(/\\"/, "\"")
116
+ ret
117
+ end
118
+
119
+ def parse(str, data, ignore_fuzzy = true)
120
+ @comments = []
121
+ @data = data
122
+ @fuzzy = false
123
+ @msgctxt = ""
124
+ $ignore_fuzzy = ignore_fuzzy
125
+
126
+ str.strip!
127
+ @q = []
128
+ until str.empty? do
129
+ case str
130
+ when /\A\s+/
131
+ str = $'
132
+ when /\Amsgctxt/
133
+ @q.push [:MSGCTXT, $&]
134
+ str = $'
135
+ when /\Amsgid_plural/
136
+ @q.push [:MSGID_PLURAL, $&]
137
+ str = $'
138
+ when /\Amsgid/
139
+ @q.push [:MSGID, $&]
140
+ str = $'
141
+ when /\Amsgstr/
142
+ @q.push [:MSGSTR, $&]
143
+ str = $'
144
+ when /\A\[(\d+)\]/
145
+ @q.push [:PLURAL_NUM, $1]
146
+ str = $'
147
+ when /\A\#~(.*)/
148
+ $stderr.print _("Warning: obsolete msgid exists.\n")
149
+ $stderr.print " #{$&}\n"
150
+ @q.push [:COMMENT, $&]
151
+ str = $'
152
+ when /\A\#(.*)/
153
+ @q.push [:COMMENT, $&]
154
+ str = $'
155
+ when /\A\"(.*)\"/
156
+ @q.push [:STRING, $1]
157
+ str = $'
158
+ else
159
+ #c = str[0,1]
160
+ #@q.push [:STRING, c]
161
+ str = str[1..-1]
162
+ end
163
+ end
164
+ @q.push [false, '$end']
165
+ if $DEBUG
166
+ @q.each do |a,b|
167
+ puts "[#{a}, #{b}]"
168
+ end
169
+ end
170
+ @yydebug = true if $DEBUG
171
+ do_parse
172
+
173
+ if @comments.size > 0
174
+ @data.set_comment(:last, @comments.join("\n"))
175
+ end
176
+ @data
177
+ end
178
+
179
+ def next_token
180
+ @q.shift
181
+ end
182
+
183
+ def on_message(msgid, msgstr)
184
+ if msgstr.size > 0
185
+ @data[msgid] = msgstr
186
+ @data.set_comment(msgid, @comments.join("\n"))
187
+ end
188
+ @comments.clear
189
+ @msgctxt = ""
190
+ end
191
+
192
+ def on_comment(comment)
193
+ @fuzzy = true if (/fuzzy/ =~ comment)
194
+ @comments << comment
195
+ end
196
+
197
+
198
+ ---- footer