experteer-gettext 2.0.4

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 (424) hide show
  1. data/COPYING +55 -0
  2. data/ChangeLog +57 -0
  3. data/ChangeLog-1 +2016 -0
  4. data/NEWS-1 +414 -0
  5. data/README.rdoc +251 -0
  6. data/Rakefile +260 -0
  7. data/VERSION +2 -0
  8. data/bin/rgettext +24 -0
  9. data/bin/rmsgfmt +24 -0
  10. data/bin/rmsgmerge +24 -0
  11. data/gettext.gemspec +494 -0
  12. data/lib/gettext/cgi.rb +39 -0
  13. data/lib/gettext/class_info.rb +67 -0
  14. data/lib/gettext/core_ext/iconv.rb +112 -0
  15. data/lib/gettext/core_ext/string.rb +84 -0
  16. data/lib/gettext/locale_path.rb +123 -0
  17. data/lib/gettext/mofile.rb +330 -0
  18. data/lib/gettext/parser/erb.rb +54 -0
  19. data/lib/gettext/parser/glade.rb +100 -0
  20. data/lib/gettext/parser/ruby.rb +193 -0
  21. data/lib/gettext/poparser.rb +355 -0
  22. data/lib/gettext/textdomain.rb +179 -0
  23. data/lib/gettext/textdomain_group.rb +24 -0
  24. data/lib/gettext/textdomain_manager.rb +212 -0
  25. data/lib/gettext/tools/rgettext.rb +236 -0
  26. data/lib/gettext/tools/rmsgfmt.rb +84 -0
  27. data/lib/gettext/tools/rmsgmerge.rb +498 -0
  28. data/lib/gettext/tools.rb +195 -0
  29. data/lib/gettext/translation_target.rb +93 -0
  30. data/lib/gettext/utils.rb +37 -0
  31. data/lib/gettext/version.rb +12 -0
  32. data/lib/gettext.rb +312 -0
  33. data/po/bg/rgettext.po +130 -0
  34. data/po/bs/rgettext.po +131 -0
  35. data/po/ca/rgettext.po +129 -0
  36. data/po/cs/rgettext.po +132 -0
  37. data/po/de/rgettext.po +137 -0
  38. data/po/el/rgettext.po +128 -0
  39. data/po/eo/rgettext.po +129 -0
  40. data/po/es/rgettext.po +130 -0
  41. data/po/et/rgettext.po +127 -0
  42. data/po/fr/rgettext.po +133 -0
  43. data/po/hr/rgettext.po +131 -0
  44. data/po/hu/rgettext.po +129 -0
  45. data/po/it/rgettext.po +130 -0
  46. data/po/ja/rgettext.po +129 -0
  47. data/po/ko/rgettext.po +129 -0
  48. data/po/lv/rgettext.po +130 -0
  49. data/po/nb/rgettext.po +131 -0
  50. data/po/nl/rgettext.po +130 -0
  51. data/po/pt_BR/rgettext.po +132 -0
  52. data/po/rgettext.pot +121 -0
  53. data/po/ru/rgettext.po +131 -0
  54. data/po/sr/rgettext.po +130 -0
  55. data/po/sv/rgettext.po +123 -0
  56. data/po/ua/rgettext.po +134 -0
  57. data/po/vi/rgettext.po +128 -0
  58. data/po/zh/rgettext.po +129 -0
  59. data/po/zh_TW/rgettext.po +128 -0
  60. data/samples/README +16 -0
  61. data/samples/cgi/README +43 -0
  62. data/samples/cgi/Rakefile +27 -0
  63. data/samples/cgi/cookie.cgi +64 -0
  64. data/samples/cgi/gettext.css +116 -0
  65. data/samples/cgi/helloerb.rhtml +28 -0
  66. data/samples/cgi/helloerb1.cgi +58 -0
  67. data/samples/cgi/helloerb2.cgi +51 -0
  68. data/samples/cgi/hellolib.rb +20 -0
  69. data/samples/cgi/http.rb +51 -0
  70. data/samples/cgi/index.cgi +111 -0
  71. data/samples/cgi/other.rhtml +20 -0
  72. data/samples/cgi/po/bg/helloerb1.po +59 -0
  73. data/samples/cgi/po/bg/helloerb2.po +51 -0
  74. data/samples/cgi/po/bg/hellolib.po +23 -0
  75. data/samples/cgi/po/bg/main.po +83 -0
  76. data/samples/cgi/po/bs/helloerb1.po +59 -0
  77. data/samples/cgi/po/bs/helloerb2.po +51 -0
  78. data/samples/cgi/po/bs/hellolib.po +23 -0
  79. data/samples/cgi/po/bs/main.po +83 -0
  80. data/samples/cgi/po/ca/helloerb1.po +59 -0
  81. data/samples/cgi/po/ca/helloerb2.po +51 -0
  82. data/samples/cgi/po/ca/hellolib.po +23 -0
  83. data/samples/cgi/po/ca/main.po +83 -0
  84. data/samples/cgi/po/cs/helloerb1.po +61 -0
  85. data/samples/cgi/po/cs/helloerb2.po +52 -0
  86. data/samples/cgi/po/cs/hellolib.po +25 -0
  87. data/samples/cgi/po/cs/main.po +85 -0
  88. data/samples/cgi/po/de/helloerb1.po +61 -0
  89. data/samples/cgi/po/de/helloerb2.po +52 -0
  90. data/samples/cgi/po/de/hellolib.po +24 -0
  91. data/samples/cgi/po/de/main.po +86 -0
  92. data/samples/cgi/po/el/helloerb1.po +60 -0
  93. data/samples/cgi/po/el/helloerb2.po +51 -0
  94. data/samples/cgi/po/el/hellolib.po +23 -0
  95. data/samples/cgi/po/el/main.po +84 -0
  96. data/samples/cgi/po/eo/helloerb1.po +60 -0
  97. data/samples/cgi/po/eo/helloerb2.po +52 -0
  98. data/samples/cgi/po/eo/hellolib.po +24 -0
  99. data/samples/cgi/po/eo/main.po +84 -0
  100. data/samples/cgi/po/es/helloerb1.po +59 -0
  101. data/samples/cgi/po/es/helloerb2.po +50 -0
  102. data/samples/cgi/po/es/hellolib.po +22 -0
  103. data/samples/cgi/po/es/main.po +83 -0
  104. data/samples/cgi/po/fr/helloerb1.po +59 -0
  105. data/samples/cgi/po/fr/helloerb2.po +51 -0
  106. data/samples/cgi/po/fr/hellolib.po +22 -0
  107. data/samples/cgi/po/fr/main.po +85 -0
  108. data/samples/cgi/po/helloerb1.pot +60 -0
  109. data/samples/cgi/po/helloerb2.pot +52 -0
  110. data/samples/cgi/po/hellolib.pot +24 -0
  111. data/samples/cgi/po/hr/helloerb1.po +59 -0
  112. data/samples/cgi/po/hr/helloerb2.po +51 -0
  113. data/samples/cgi/po/hr/hellolib.po +23 -0
  114. data/samples/cgi/po/hr/main.po +83 -0
  115. data/samples/cgi/po/hu/helloerb1.po +59 -0
  116. data/samples/cgi/po/hu/helloerb2.po +51 -0
  117. data/samples/cgi/po/hu/hellolib.po +23 -0
  118. data/samples/cgi/po/hu/main.po +82 -0
  119. data/samples/cgi/po/it/helloerb1.po +60 -0
  120. data/samples/cgi/po/it/helloerb2.po +52 -0
  121. data/samples/cgi/po/it/hellolib.po +24 -0
  122. data/samples/cgi/po/it/main.po +84 -0
  123. data/samples/cgi/po/ja/helloerb1.po +60 -0
  124. data/samples/cgi/po/ja/helloerb2.po +52 -0
  125. data/samples/cgi/po/ja/hellolib.po +24 -0
  126. data/samples/cgi/po/ja/main.po +85 -0
  127. data/samples/cgi/po/ko/helloerb1.po +59 -0
  128. data/samples/cgi/po/ko/helloerb2.po +51 -0
  129. data/samples/cgi/po/ko/hellolib.po +23 -0
  130. data/samples/cgi/po/ko/main.po +84 -0
  131. data/samples/cgi/po/lv/helloerb1.po +65 -0
  132. data/samples/cgi/po/lv/helloerb2.po +52 -0
  133. data/samples/cgi/po/lv/hellolib.po +24 -0
  134. data/samples/cgi/po/lv/main.po +77 -0
  135. data/samples/cgi/po/main.pot +80 -0
  136. data/samples/cgi/po/nb/helloerb1.po +60 -0
  137. data/samples/cgi/po/nb/helloerb2.po +52 -0
  138. data/samples/cgi/po/nb/hellolib.po +24 -0
  139. data/samples/cgi/po/nb/main.po +84 -0
  140. data/samples/cgi/po/nl/helloerb1.po +61 -0
  141. data/samples/cgi/po/nl/helloerb2.po +52 -0
  142. data/samples/cgi/po/nl/hellolib.po +24 -0
  143. data/samples/cgi/po/nl/main.po +86 -0
  144. data/samples/cgi/po/pt_BR/helloerb1.po +59 -0
  145. data/samples/cgi/po/pt_BR/helloerb2.po +51 -0
  146. data/samples/cgi/po/pt_BR/hellolib.po +23 -0
  147. data/samples/cgi/po/pt_BR/main.po +84 -0
  148. data/samples/cgi/po/ru/helloerb1.po +58 -0
  149. data/samples/cgi/po/ru/helloerb2.po +50 -0
  150. data/samples/cgi/po/ru/hellolib.po +22 -0
  151. data/samples/cgi/po/ru/main.po +82 -0
  152. data/samples/cgi/po/sr/helloerb1.po +60 -0
  153. data/samples/cgi/po/sr/helloerb2.po +52 -0
  154. data/samples/cgi/po/sr/hellolib.po +24 -0
  155. data/samples/cgi/po/sr/main.po +80 -0
  156. data/samples/cgi/po/ua/helloerb1.po +62 -0
  157. data/samples/cgi/po/ua/helloerb2.po +54 -0
  158. data/samples/cgi/po/ua/hellolib.po +26 -0
  159. data/samples/cgi/po/ua/main.po +84 -0
  160. data/samples/cgi/po/vi/helloerb1.po +65 -0
  161. data/samples/cgi/po/vi/helloerb2.po +52 -0
  162. data/samples/cgi/po/vi/hellolib.po +24 -0
  163. data/samples/cgi/po/vi/main.po +77 -0
  164. data/samples/cgi/po/zh/helloerb1.po +60 -0
  165. data/samples/cgi/po/zh/helloerb2.po +52 -0
  166. data/samples/cgi/po/zh/hellolib.po +24 -0
  167. data/samples/cgi/po/zh/main.po +80 -0
  168. data/samples/cgi/po/zh_TW/helloerb1.po +67 -0
  169. data/samples/cgi/po/zh_TW/helloerb2.po +54 -0
  170. data/samples/cgi/po/zh_TW/hellolib.po +26 -0
  171. data/samples/cgi/po/zh_TW/main.po +79 -0
  172. data/samples/hello.rb +36 -0
  173. data/samples/hello2.rb +23 -0
  174. data/samples/hello_glade2.glade +70 -0
  175. data/samples/hello_glade2.rb +25 -0
  176. data/samples/hello_gtk2.rb +27 -0
  177. data/samples/hello_noop.rb +31 -0
  178. data/samples/hello_plural.rb +26 -0
  179. data/samples/hello_tk.rb +19 -0
  180. data/samples/makemo.rb +4 -0
  181. data/samples/po/bg/hello.po +24 -0
  182. data/samples/po/bg/hello2.po +31 -0
  183. data/samples/po/bg/hello_glade2.po +31 -0
  184. data/samples/po/bg/hello_gtk.po +23 -0
  185. data/samples/po/bg/hello_noop.po +27 -0
  186. data/samples/po/bg/hello_plural.po +25 -0
  187. data/samples/po/bg/hello_tk.po +23 -0
  188. data/samples/po/bs/hello.po +23 -0
  189. data/samples/po/bs/hello2.po +31 -0
  190. data/samples/po/bs/hello_glade2.po +31 -0
  191. data/samples/po/bs/hello_gtk.po +23 -0
  192. data/samples/po/bs/hello_noop.po +27 -0
  193. data/samples/po/bs/hello_plural.po +26 -0
  194. data/samples/po/bs/hello_tk.po +23 -0
  195. data/samples/po/ca/hello.po +23 -0
  196. data/samples/po/ca/hello2.po +31 -0
  197. data/samples/po/ca/hello_glade2.po +31 -0
  198. data/samples/po/ca/hello_gtk.po +23 -0
  199. data/samples/po/ca/hello_noop.po +27 -0
  200. data/samples/po/ca/hello_plural.po +25 -0
  201. data/samples/po/ca/hello_tk.po +23 -0
  202. data/samples/po/cs/hello.po +23 -0
  203. data/samples/po/cs/hello2.po +31 -0
  204. data/samples/po/cs/hello_glade2.po +37 -0
  205. data/samples/po/cs/hello_gtk.po +23 -0
  206. data/samples/po/cs/hello_noop.po +27 -0
  207. data/samples/po/cs/hello_plural.po +26 -0
  208. data/samples/po/cs/hello_tk.po +23 -0
  209. data/samples/po/de/hello.po +20 -0
  210. data/samples/po/de/hello2.po +28 -0
  211. data/samples/po/de/hello_glade2.po +27 -0
  212. data/samples/po/de/hello_gtk.po +20 -0
  213. data/samples/po/de/hello_noop.po +24 -0
  214. data/samples/po/de/hello_plural.po +25 -0
  215. data/samples/po/de/hello_tk.po +20 -0
  216. data/samples/po/el/hello.po +23 -0
  217. data/samples/po/el/hello2.po +31 -0
  218. data/samples/po/el/hello_glade2.po +31 -0
  219. data/samples/po/el/hello_gtk.po +22 -0
  220. data/samples/po/el/hello_noop.po +27 -0
  221. data/samples/po/el/hello_plural.po +25 -0
  222. data/samples/po/el/hello_tk.po +23 -0
  223. data/samples/po/eo/hello.po +23 -0
  224. data/samples/po/eo/hello2.po +31 -0
  225. data/samples/po/eo/hello_glade2.po +32 -0
  226. data/samples/po/eo/hello_gtk.po +23 -0
  227. data/samples/po/eo/hello_noop.po +27 -0
  228. data/samples/po/eo/hello_plural.po +26 -0
  229. data/samples/po/eo/hello_tk.po +24 -0
  230. data/samples/po/es/hello.po +21 -0
  231. data/samples/po/es/hello2.po +28 -0
  232. data/samples/po/es/hello_glade2.po +28 -0
  233. data/samples/po/es/hello_gtk.po +20 -0
  234. data/samples/po/es/hello_noop.po +24 -0
  235. data/samples/po/es/hello_plural.po +23 -0
  236. data/samples/po/es/hello_tk.po +20 -0
  237. data/samples/po/fr/hello.po +18 -0
  238. data/samples/po/fr/hello2.po +26 -0
  239. data/samples/po/fr/hello_glade2.po +27 -0
  240. data/samples/po/fr/hello_gtk.po +18 -0
  241. data/samples/po/fr/hello_noop.po +22 -0
  242. data/samples/po/fr/hello_plural.po +21 -0
  243. data/samples/po/fr/hello_tk.po +18 -0
  244. data/samples/po/hello.pot +23 -0
  245. data/samples/po/hello2.pot +31 -0
  246. data/samples/po/hello_glade2.pot +32 -0
  247. data/samples/po/hello_gtk.pot +23 -0
  248. data/samples/po/hello_noop.pot +27 -0
  249. data/samples/po/hello_plural.pot +26 -0
  250. data/samples/po/hello_tk.pot +24 -0
  251. data/samples/po/hr/hello.po +23 -0
  252. data/samples/po/hr/hello2.po +31 -0
  253. data/samples/po/hr/hello_glade2.po +31 -0
  254. data/samples/po/hr/hello_gtk.po +23 -0
  255. data/samples/po/hr/hello_noop.po +27 -0
  256. data/samples/po/hr/hello_plural.po +26 -0
  257. data/samples/po/hr/hello_tk.po +23 -0
  258. data/samples/po/hu/hello.po +22 -0
  259. data/samples/po/hu/hello2.po +30 -0
  260. data/samples/po/hu/hello_glade2.po +31 -0
  261. data/samples/po/hu/hello_gtk.po +22 -0
  262. data/samples/po/hu/hello_noop.po +26 -0
  263. data/samples/po/hu/hello_plural.po +25 -0
  264. data/samples/po/hu/hello_tk.po +23 -0
  265. data/samples/po/it/hello.po +20 -0
  266. data/samples/po/it/hello2.po +28 -0
  267. data/samples/po/it/hello_glade2.po +28 -0
  268. data/samples/po/it/hello_gtk.po +21 -0
  269. data/samples/po/it/hello_noop.po +24 -0
  270. data/samples/po/it/hello_plural.po +23 -0
  271. data/samples/po/it/hello_tk.po +21 -0
  272. data/samples/po/ja/hello.po +20 -0
  273. data/samples/po/ja/hello2.po +28 -0
  274. data/samples/po/ja/hello_glade2.po +26 -0
  275. data/samples/po/ja/hello_gtk.po +19 -0
  276. data/samples/po/ja/hello_noop.po +23 -0
  277. data/samples/po/ja/hello_plural.po +21 -0
  278. data/samples/po/ja/hello_tk.po +19 -0
  279. data/samples/po/ko/hello.po +18 -0
  280. data/samples/po/ko/hello2.po +26 -0
  281. data/samples/po/ko/hello_glade2.po +29 -0
  282. data/samples/po/ko/hello_gtk.po +18 -0
  283. data/samples/po/ko/hello_noop.po +22 -0
  284. data/samples/po/ko/hello_plural.po +25 -0
  285. data/samples/po/ko/hello_tk.po +19 -0
  286. data/samples/po/lv/hello.po +24 -0
  287. data/samples/po/lv/hello2.po +32 -0
  288. data/samples/po/lv/hello_glade2.po +38 -0
  289. data/samples/po/lv/hello_gtk.po +24 -0
  290. data/samples/po/lv/hello_noop.po +28 -0
  291. data/samples/po/lv/hello_plural.po +26 -0
  292. data/samples/po/lv/hello_tk.po +24 -0
  293. data/samples/po/nb/hello.po +23 -0
  294. data/samples/po/nb/hello2.po +31 -0
  295. data/samples/po/nb/hello_glade2.po +31 -0
  296. data/samples/po/nb/hello_gtk.po +23 -0
  297. data/samples/po/nb/hello_noop.po +27 -0
  298. data/samples/po/nb/hello_plural.po +26 -0
  299. data/samples/po/nb/hello_tk.po +24 -0
  300. data/samples/po/nl/hello.po +24 -0
  301. data/samples/po/nl/hello2.po +32 -0
  302. data/samples/po/nl/hello_glade2.po +31 -0
  303. data/samples/po/nl/hello_gtk.po +24 -0
  304. data/samples/po/nl/hello_noop.po +28 -0
  305. data/samples/po/nl/hello_plural.po +25 -0
  306. data/samples/po/nl/hello_tk.po +24 -0
  307. data/samples/po/pt_BR/hello.po +21 -0
  308. data/samples/po/pt_BR/hello2.po +29 -0
  309. data/samples/po/pt_BR/hello_glade2.po +29 -0
  310. data/samples/po/pt_BR/hello_gtk.po +21 -0
  311. data/samples/po/pt_BR/hello_noop.po +25 -0
  312. data/samples/po/pt_BR/hello_plural.po +23 -0
  313. data/samples/po/pt_BR/hello_tk.po +21 -0
  314. data/samples/po/ru/hello.po +22 -0
  315. data/samples/po/ru/hello2.po +30 -0
  316. data/samples/po/ru/hello_glade2.po +30 -0
  317. data/samples/po/ru/hello_gtk.po +22 -0
  318. data/samples/po/ru/hello_noop.po +26 -0
  319. data/samples/po/ru/hello_plural.po +28 -0
  320. data/samples/po/ru/hello_tk.po +22 -0
  321. data/samples/po/sr/hello.po +22 -0
  322. data/samples/po/sr/hello2.po +30 -0
  323. data/samples/po/sr/hello_glade2.po +32 -0
  324. data/samples/po/sr/hello_gtk.po +22 -0
  325. data/samples/po/sr/hello_noop.po +26 -0
  326. data/samples/po/sr/hello_plural.po +26 -0
  327. data/samples/po/sr/hello_tk.po +24 -0
  328. data/samples/po/sv/hello.po +20 -0
  329. data/samples/po/sv/hello2.po +28 -0
  330. data/samples/po/sv/hello_glade2.po +28 -0
  331. data/samples/po/sv/hello_gtk.po +20 -0
  332. data/samples/po/sv/hello_noop.po +24 -0
  333. data/samples/po/sv/hello_plural.po +23 -0
  334. data/samples/po/sv/hello_tk.po +20 -0
  335. data/samples/po/test.rb +11 -0
  336. data/samples/po/ua/hello.po +22 -0
  337. data/samples/po/ua/hello2.po +30 -0
  338. data/samples/po/ua/hello_glade2.po +34 -0
  339. data/samples/po/ua/hello_gtk.po +22 -0
  340. data/samples/po/ua/hello_noop.po +26 -0
  341. data/samples/po/ua/hello_plural.po +29 -0
  342. data/samples/po/ua/hello_tk.po +26 -0
  343. data/samples/po/vi/hello.po +23 -0
  344. data/samples/po/vi/hello2.po +31 -0
  345. data/samples/po/vi/hello_glade2.po +38 -0
  346. data/samples/po/vi/hello_gtk.po +23 -0
  347. data/samples/po/vi/hello_noop.po +27 -0
  348. data/samples/po/vi/hello_plural.po +26 -0
  349. data/samples/po/vi/hello_tk.po +24 -0
  350. data/samples/po/zh/hello.po +23 -0
  351. data/samples/po/zh/hello2.po +31 -0
  352. data/samples/po/zh/hello_glade2.po +31 -0
  353. data/samples/po/zh/hello_gtk.po +23 -0
  354. data/samples/po/zh/hello_noop.po +27 -0
  355. data/samples/po/zh/hello_plural.po +25 -0
  356. data/samples/po/zh/hello_tk.po +23 -0
  357. data/samples/po/zh_TW/hello.po +26 -0
  358. data/samples/po/zh_TW/hello2.po +34 -0
  359. data/samples/po/zh_TW/hello_glade2.po +40 -0
  360. data/samples/po/zh_TW/hello_gtk.po +25 -0
  361. data/samples/po/zh_TW/hello_noop.po +30 -0
  362. data/samples/po/zh_TW/hello_plural.po +28 -0
  363. data/samples/po/zh_TW/hello_tk.po +26 -0
  364. data/test/README +1 -0
  365. data/test/Rakefile +17 -0
  366. data/test/po/cr/plural.po +23 -0
  367. data/test/po/da/plural.po +22 -0
  368. data/test/po/da/plural_error.po +22 -0
  369. data/test/po/fr/plural.po +28 -0
  370. data/test/po/fr/plural_error.po +20 -0
  371. data/test/po/fr/test1.po +23 -0
  372. data/test/po/fr/test2.po +19 -0
  373. data/test/po/ir/plural.po +23 -0
  374. data/test/po/ja/npgettext.po +46 -0
  375. data/test/po/ja/nsgettext.po +65 -0
  376. data/test/po/ja/pgettext.po +41 -0
  377. data/test/po/ja/plural.po +28 -0
  378. data/test/po/ja/plural_error.po +20 -0
  379. data/test/po/ja/rubyparser.po +43 -0
  380. data/test/po/ja/sgettext.po +47 -0
  381. data/test/po/ja/test1.po +23 -0
  382. data/test/po/ja/test2.po +19 -0
  383. data/test/po/ja/test3.po +19 -0
  384. data/test/po/la/plural.po +23 -0
  385. data/test/po/la/plural_error.po +21 -0
  386. data/test/po/li/plural.po +23 -0
  387. data/test/po/li/plural_error.po +27 -0
  388. data/test/po/po/plural.po +23 -0
  389. data/test/po/sl/plural.po +24 -0
  390. data/test/test_class_info.rb +83 -0
  391. data/test/test_gettext.rb +311 -0
  392. data/test/test_locale_path.rb +50 -0
  393. data/test/test_parser.rb +157 -0
  394. data/test/test_po_generation.rb +20 -0
  395. data/test/test_string.rb +65 -0
  396. data/test/test_textdomain_bind.rb +37 -0
  397. data/test/test_textdomain_multi.rb +80 -0
  398. data/test/test_textdomain_toplevel.rb +42 -0
  399. data/test/test_thread.rb +41 -0
  400. data/test/test_translation_target.rb +29 -0
  401. data/test/testlib/N_.rb +66 -0
  402. data/test/testlib/erb.rhtml +15 -0
  403. data/test/testlib/erb.rxml +16 -0
  404. data/test/testlib/gettext.rb +113 -0
  405. data/test/testlib/gladeparser.glade +183 -0
  406. data/test/testlib/helper.rb +11 -0
  407. data/test/testlib/multi_textdomain.rb +131 -0
  408. data/test/testlib/ngettext.rb +79 -0
  409. data/test/testlib/npgettext.rb +31 -0
  410. data/test/testlib/nsgettext.rb +42 -0
  411. data/test/testlib/pgettext.rb +36 -0
  412. data/test/testlib/sgettext.rb +46 -0
  413. data/test/testlib/simple.rb +14 -0
  414. data/test/tools/files/app.pot +0 -0
  415. data/test/tools/files/de/app.po +0 -0
  416. data/test/tools/files/en/app.po +0 -0
  417. data/test/tools/files/en/test.po +21 -0
  418. data/test/tools/files/simple_1.po +2 -0
  419. data/test/tools/files/simple_2.po +2 -0
  420. data/test/tools/files/simple_translation.rb +1 -0
  421. data/test/tools/files/version.po +7 -0
  422. data/test/tools/test.pot +21 -0
  423. data/test/tools/test_tools.rb +61 -0
  424. metadata +510 -0
@@ -0,0 +1,113 @@
1
+ require 'gettext'
2
+ include GetText
3
+
4
+ class TestRubyParser
5
+ bindtextdomain("rubyparser", :path => "locale")
6
+
7
+ def test_1
8
+ _("aaa")
9
+ end
10
+
11
+ def test_2
12
+ _("aaa\n")
13
+ end
14
+
15
+ def test_3
16
+ _("bbb\nccc")
17
+ end
18
+
19
+ def test_4
20
+ _("bbb
21
+ ccc
22
+ ddd
23
+ ")
24
+ end
25
+
26
+ def test_5
27
+ _("eee")
28
+ end
29
+
30
+ def test_6
31
+ _("eee") + "foo" + _("fff")
32
+ end
33
+
34
+ def test_7
35
+ _("ggg"\
36
+ "hhh"\
37
+ "iii")
38
+ end
39
+
40
+ def test_8
41
+ _('a"b"c"')
42
+ end
43
+
44
+ def test_9
45
+ _("d\"e\"f\"")
46
+ end
47
+
48
+ def test_10
49
+ _("jjj") +
50
+ _("kkk")
51
+ end
52
+
53
+ def test_11
54
+ _("lll" + "mmm")
55
+ end
56
+
57
+ def test_12
58
+ puts _(msg), "ppp" #Ignored
59
+ end
60
+
61
+ def test_13
62
+ _("nnn\n" +
63
+ "ooo")
64
+ end
65
+ def test_14
66
+ _("\#")
67
+ end
68
+
69
+ def test_15
70
+ _('#')
71
+ end
72
+
73
+ def test_16
74
+ _('\taaa')
75
+ end
76
+
77
+ def test_17
78
+ ret = _(<<EOF
79
+ Here document1
80
+ Here document2
81
+ EOF
82
+ )
83
+ end
84
+
85
+ def test_18
86
+ "<div>#{_('in_quote')}</div>"
87
+ end
88
+
89
+ def about
90
+ puts (
91
+ # TRANSLATORS: This is a proper name. See the gettext
92
+ # manual, section Names. Note this is actually a non-ASCII
93
+ # name: The first name is (with Unicode escapes)
94
+ # "Fran\u00e7ois" or (with HTML entities) "Fran&ccedil;ois".
95
+ # Pronunciation is like "fraa-swa pee-nar".
96
+ # This is an example from GNU gettext documentation.
97
+ _("Francois Pinard"))
98
+
99
+ puts (
100
+ # This comment should not be extracted because it does
101
+ # not start with 'TRANSLATORS:'
102
+ _('self explaining'))
103
+ end
104
+
105
+ end
106
+
107
+ module ActionController
108
+ class Base
109
+ end
110
+ end
111
+ class ApplicationController < ActionController::Base
112
+ "#{Time.now.strftime('%m/%d')}"
113
+ end
@@ -0,0 +1,183 @@
1
+ <?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
2
+ <!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
3
+
4
+ <glade-interface>
5
+
6
+ <widget class="GtkWindow" id="window1">
7
+ <property name="visible">True</property>
8
+ <property name="title" translatable="yes">window1</property>
9
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
10
+ <property name="window_position">GTK_WIN_POS_NONE</property>
11
+ <property name="modal">False</property>
12
+ <property name="resizable">True</property>
13
+ <property name="destroy_with_parent">False</property>
14
+ <property name="decorated">True</property>
15
+ <property name="skip_taskbar_hint">False</property>
16
+ <property name="skip_pager_hint">False</property>
17
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
18
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
19
+
20
+ <child>
21
+ <widget class="GtkVBox" id="vbox1">
22
+ <property name="visible">True</property>
23
+ <property name="homogeneous">False</property>
24
+ <property name="spacing">0</property>
25
+
26
+ <child>
27
+ <widget class="GtkLabel" id="label4">
28
+ <property name="visible">True</property>
29
+ <property name="label" translatable="yes">normal text</property>
30
+ <property name="use_underline">False</property>
31
+ <property name="use_markup">False</property>
32
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
33
+ <property name="wrap">False</property>
34
+ <property name="selectable">False</property>
35
+ <property name="xalign">0.5</property>
36
+ <property name="yalign">0.5</property>
37
+ <property name="xpad">0</property>
38
+ <property name="ypad">0</property>
39
+ </widget>
40
+ <packing>
41
+ <property name="padding">0</property>
42
+ <property name="expand">False</property>
43
+ <property name="fill">False</property>
44
+ </packing>
45
+ </child>
46
+
47
+ <child>
48
+ <widget class="GtkLabel" id="label5">
49
+ <property name="visible">True</property>
50
+ <property name="label" translatable="yes">1st line
51
+ 2nd line
52
+ 3rd line</property>
53
+ <property name="use_underline">False</property>
54
+ <property name="use_markup">False</property>
55
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
56
+ <property name="wrap">False</property>
57
+ <property name="selectable">False</property>
58
+ <property name="xalign">0.5</property>
59
+ <property name="yalign">0.5</property>
60
+ <property name="xpad">0</property>
61
+ <property name="ypad">0</property>
62
+ </widget>
63
+ <packing>
64
+ <property name="padding">0</property>
65
+ <property name="expand">False</property>
66
+ <property name="fill">False</property>
67
+ </packing>
68
+ </child>
69
+
70
+ <child>
71
+ <widget class="GtkLabel" id="label6">
72
+ <property name="visible">True</property>
73
+ <property name="label" translatable="yes">&lt;span color=&quot;red&quot; weight=&quot;bold&quot; size=&quot;large&quot;&gt;markup &lt;/span&gt;</property>
74
+ <property name="use_underline">False</property>
75
+ <property name="use_markup">True</property>
76
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
77
+ <property name="wrap">False</property>
78
+ <property name="selectable">False</property>
79
+ <property name="xalign">0.5</property>
80
+ <property name="yalign">0.5</property>
81
+ <property name="xpad">0</property>
82
+ <property name="ypad">0</property>
83
+ </widget>
84
+ <packing>
85
+ <property name="padding">0</property>
86
+ <property name="expand">False</property>
87
+ <property name="fill">False</property>
88
+ </packing>
89
+ </child>
90
+
91
+ <child>
92
+ <widget class="GtkLabel" id="label7">
93
+ <property name="visible">True</property>
94
+ <property name="label" translatable="yes">&lt;span color=&quot;red&quot;&gt;1st line markup &lt;/span&gt;
95
+ &lt;span color=&quot;blue&quot;&gt;2nd line markup&lt;/span&gt;</property>
96
+ <property name="use_underline">False</property>
97
+ <property name="use_markup">True</property>
98
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
99
+ <property name="wrap">False</property>
100
+ <property name="selectable">False</property>
101
+ <property name="xalign">0.5</property>
102
+ <property name="yalign">0.5</property>
103
+ <property name="xpad">0</property>
104
+ <property name="ypad">0</property>
105
+ </widget>
106
+ <packing>
107
+ <property name="padding">0</property>
108
+ <property name="expand">False</property>
109
+ <property name="fill">False</property>
110
+ </packing>
111
+ </child>
112
+
113
+ <child>
114
+ <widget class="GtkLabel" id="label8">
115
+ <property name="visible">True</property>
116
+ <property name="label" translatable="yes">&lt;span&gt;&amp;quot;markup&amp;quot; with &amp;lt;escaped strings&amp;gt;&lt;/span&gt;</property>
117
+ <property name="use_underline">False</property>
118
+ <property name="use_markup">True</property>
119
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
120
+ <property name="wrap">False</property>
121
+ <property name="selectable">False</property>
122
+ <property name="xalign">0.5</property>
123
+ <property name="yalign">0.5</property>
124
+ <property name="xpad">0</property>
125
+ <property name="ypad">0</property>
126
+ </widget>
127
+ <packing>
128
+ <property name="padding">0</property>
129
+ <property name="expand">False</property>
130
+ <property name="fill">False</property>
131
+ </packing>
132
+ </child>
133
+
134
+ <child>
135
+ <widget class="GtkLabel" id="label9">
136
+ <property name="visible">True</property>
137
+ <property name="label" translatable="yes">duplicated</property>
138
+ <property name="use_underline">False</property>
139
+ <property name="use_markup">False</property>
140
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
141
+ <property name="wrap">False</property>
142
+ <property name="selectable">False</property>
143
+ <property name="xalign">0.5</property>
144
+ <property name="yalign">0.5</property>
145
+ <property name="xpad">0</property>
146
+ <property name="ypad">0</property>
147
+ </widget>
148
+ <packing>
149
+ <property name="padding">0</property>
150
+ <property name="expand">False</property>
151
+ <property name="fill">False</property>
152
+ </packing>
153
+ </child>
154
+
155
+ <child>
156
+ <widget class="GtkLabel" id="label10">
157
+ <property name="visible">True</property>
158
+ <property name="label" translatable="yes">duplicated</property>
159
+ <property name="use_underline">False</property>
160
+ <property name="use_markup">False</property>
161
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
162
+ <property name="wrap">False</property>
163
+ <property name="selectable">False</property>
164
+ <property name="xalign">0.5</property>
165
+ <property name="yalign">0.5</property>
166
+ <property name="xpad">0</property>
167
+ <property name="ypad">0</property>
168
+ </widget>
169
+ <packing>
170
+ <property name="padding">0</property>
171
+ <property name="expand">False</property>
172
+ <property name="fill">False</property>
173
+ </packing>
174
+ </child>
175
+
176
+ <child>
177
+ <placeholder/>
178
+ </child>
179
+ </widget>
180
+ </child>
181
+ </widget>
182
+
183
+ </glade-interface>
@@ -0,0 +1,11 @@
1
+ $LOAD_PATH.unshift File.expand_path("../../lib", File.dirname(__FILE__))
2
+ require 'test/unit'
3
+
4
+ require 'rubygems'
5
+ require 'gettext'
6
+
7
+ #optional gems
8
+ begin
9
+ require 'redgreen'
10
+ rescue LoadError
11
+ end
@@ -0,0 +1,131 @@
1
+ class C11
2
+ include GetText
3
+ def initialize
4
+ bindtextdomain("test1", :path => "locale")
5
+ bindtextdomain("test2", :path => "locale")
6
+ end
7
+ def test
8
+ _("language")
9
+ end
10
+ def test2
11
+ _("LANGUAGE")
12
+ end
13
+ end
14
+
15
+ class C12
16
+ include GetText
17
+ bindtextdomain("test1", :path => "locale")
18
+ bindtextdomain("test2", :path => "locale")
19
+
20
+ def test
21
+ _("language")
22
+ end
23
+ def test2
24
+ _("LANGUAGE")
25
+ end
26
+ end
27
+
28
+ class C21 < C11
29
+ end
30
+
31
+ class C22 < C12
32
+ end
33
+
34
+ module M1
35
+ include GetText
36
+ bindtextdomain("test1", :path => "locale")
37
+
38
+ module_function
39
+ def test
40
+ _("language")
41
+ end
42
+
43
+ module M1M1
44
+ include GetText
45
+ module_function
46
+ def test
47
+ _("language")
48
+ end
49
+ # Doesn't translate
50
+ def test2
51
+ _("LANGUAGE")
52
+ end
53
+ end
54
+
55
+ class M1C1
56
+ include GetText
57
+ bindtextdomain("test2", :path => "locale")
58
+ def test
59
+ _("language")
60
+ end
61
+ def test2
62
+ _("LANGUAGE")
63
+ end
64
+ end
65
+
66
+ class M1C2
67
+ include GetText
68
+ def initialize
69
+ bindtextdomain("test2", :path => "locale")
70
+ end
71
+ def test
72
+ _("language")
73
+ end
74
+ def test2
75
+ _("LANGUAGE")
76
+ end
77
+ end
78
+
79
+ end
80
+
81
+ class C2
82
+ include GetText
83
+ def initialize
84
+ bindtextdomain("test1", :path => "locale")
85
+ end
86
+
87
+ def test
88
+ _("language")
89
+ end
90
+
91
+ def test_eval
92
+ eval("_(\"language\")")
93
+ end
94
+ end
95
+
96
+ class C3
97
+ include GetText
98
+ bindtextdomain("test1", :path => "locale")
99
+
100
+ def test
101
+ _("language")
102
+ end
103
+
104
+ def self.test
105
+ _("language")
106
+ end
107
+ end
108
+
109
+ class C4 < C3
110
+ bindtextdomain("test2", :path => "locale")
111
+
112
+ def test2
113
+ _("LANGUAGE")
114
+ end
115
+
116
+ def test3
117
+ _("no data")
118
+ end
119
+ end
120
+
121
+ class C51
122
+ include GetText
123
+ bindtextdomain("test3", :path => "locale")
124
+ def test
125
+ _("language")
126
+ end
127
+ end
128
+
129
+ class C52 < C12
130
+ bindtextdomain("test3", :path => "locale")
131
+ end
@@ -0,0 +1,79 @@
1
+ require 'gettext'
2
+ include GetText
3
+
4
+ class TestRubyParser_n
5
+ bindtextdomain("rubyparser", :path => "locale")
6
+
7
+ def test_1
8
+ n_("aaa","aaa2",1)
9
+ end
10
+
11
+ def test_2
12
+ n_("bbb\n", "ccc2\nccc2", 1)
13
+ end
14
+
15
+ def test_3_1
16
+ n_("ddd\nddd",
17
+ "ddd2\nddd2",
18
+ 1)
19
+ end
20
+ def test_3_2
21
+ n_("eee\neee\n" ,
22
+ "eee2\neee2\n" ,
23
+ 1)
24
+ end
25
+
26
+ def test_4
27
+ n_("ddd
28
+ eee
29
+ ", "ddd
30
+ eee2", 1)
31
+ end
32
+
33
+ def test_5_1
34
+ n_("fff", "fff2", 1)
35
+ end
36
+
37
+ def test_5_2
38
+ n_("fff", "fff2", 1) + "foo" + n_("ggg", "ggg2", 1)
39
+ end
40
+
41
+ def test_6
42
+ n_("ggg"\
43
+ "hhh"\
44
+ "iii",
45
+ "jjj"\
46
+ "kkk"\
47
+ "lll", 1)
48
+ end
49
+
50
+ def test_7
51
+ n_('a"b"c"', 'a"b"c"2', 1)
52
+ end
53
+
54
+ def test_8
55
+ n_("d\"e\"f\"", "d\"e\"f\"2", 1)
56
+ end
57
+
58
+ def test_9
59
+ n_("mmm" + "mmm","mmm2" + "mmm2",1) +
60
+ n_("nnn" ,"nnn2" ,1)
61
+ end
62
+
63
+ def test_10
64
+ _("ooo")
65
+ n_("ooo", "ppp", 1)
66
+ end
67
+
68
+ def test_11
69
+ n_("qqq", "rrr", 1)
70
+ n_("qqq", "sss", 1) # This is merged to "qqq" with plural form "rrr".
71
+ end
72
+
73
+ def extracted_comments
74
+ # TRANSLATORS:please provide translations for all
75
+ # the plural forms!
76
+ n_('comment', 'comments', 2)
77
+ end
78
+ end
79
+
@@ -0,0 +1,31 @@
1
+ require 'gettext'
2
+
3
+ class TestNPGetText
4
+ include GetText
5
+ bindtextdomain("npgettext", :path => "locale")
6
+
7
+ def test_1
8
+ [np_("Magazine", "a book", "%{num} books", 1),
9
+ np_("Magazine", "a book", "%{num} books", 2)]
10
+ end
11
+
12
+ def test_2
13
+ [npgettext("Magazine", "a book", "%{num} books", 1),
14
+ npgettext("Magazine", "a book", "%{num} books", 2)]
15
+ end
16
+
17
+ def test_3
18
+ [np_("Hardcover", "a book", "%{num} books", 1),
19
+ np_("Hardcover", "a book", "%{num} books", 2)]
20
+ end
21
+
22
+ def test_4
23
+ [np_("Magaine", "I have a magazine", "I have %{num} magazines", 1),
24
+ np_("Magaine", "I have a magazine", "I have %{num} magazines", 2)]
25
+ end
26
+
27
+ def test_5
28
+ [np_("Hardcover", "a picture", "%{num} pictures", 1),
29
+ np_("Hardcover", "a picture", "%{num} pictures", 2)] #not found.
30
+ end
31
+ end
@@ -0,0 +1,42 @@
1
+ require 'gettext'
2
+
3
+ class TestNSGetText
4
+ include GetText
5
+ bindtextdomain("nsgettext", :path => "locale")
6
+
7
+ def test_1
8
+ [ns_("AAA|BBB", "CCC", 1), ns_("AAA|BBB", "CCC", 2)]
9
+ end
10
+
11
+ def test_2
12
+ [nsgettext("AAA|BBB", "CCC", 1), nsgettext("AAA|BBB", "CCC", 2)]
13
+ end
14
+
15
+ def test_3
16
+ [ns_("AAA", "BBB", 1), ns_("AAA", "BBB", 2)] #not found
17
+ end
18
+
19
+ def test_4
20
+ [ns_("AAA|CCC", "DDD", 1), ns_("AAA|CCC", "DDD", 2)] #not found
21
+ end
22
+
23
+ def test_5
24
+ [ns_("AAA|BBB|CCC", "DDD", 1), ns_("AAA|BBB|CCC", "DDD", 2)] #not found
25
+ end
26
+
27
+ def test_6
28
+ [ns_("AAA$BBB", "CCC", 1, "$"), ns_("AAA$BBB", "CCC", 2, "$")] #not found
29
+ end
30
+
31
+ def test_7
32
+ [ns_("AAA$B|BB", "CCC", 1, "$"), ns_("AAA$B|BB", "CCC", 2, "$")] #not found
33
+ end
34
+
35
+ def test_8
36
+ [ns_("AAA$B|CC", "DDD", 1, "$"), ns_("AAA$B|CC", "DDD", 2, "$")]
37
+ end
38
+
39
+ def test_9
40
+ [ns_("AAA|CCC|BBB", "DDD", 1), ns_("AAA|CCC|BBB", "DDD", 2)] #not found
41
+ end
42
+ end
@@ -0,0 +1,36 @@
1
+ require 'gettext'
2
+
3
+ class TestPGetText
4
+ include GetText
5
+ bindtextdomain("pgettext", :path => "locale")
6
+
7
+ def test_1
8
+ p_("AAA", "BBB")
9
+ end
10
+
11
+ def test_2
12
+ pgettext("AAA", "BBB")
13
+ end
14
+
15
+ def test_3
16
+ pgettext("AAA|BBB", "CCC")
17
+ end
18
+
19
+ def test_4
20
+ p_("AAA", "CCC") #not found
21
+ end
22
+
23
+ def test_5
24
+ p_("CCC", "BBB")
25
+ end
26
+
27
+ def test_6 # not pgettext.
28
+ _("BBB")
29
+ end
30
+
31
+ def with_context
32
+ # TRANSLATORS:please translate 'name' in the context of 'program'.
33
+ # Hint: the translation should NOT contain the translation of 'program'.
34
+ p_('program', 'name')
35
+ end
36
+ end
@@ -0,0 +1,46 @@
1
+ require 'gettext'
2
+
3
+ class TestSGetText
4
+ include GetText
5
+ bindtextdomain("sgettext", :path => "locale")
6
+
7
+ def test_1
8
+ s_("AAA|BBB")
9
+ end
10
+
11
+ def test_2
12
+ sgettext("AAA|BBB")
13
+ end
14
+
15
+ def test_3
16
+ s_("AAA") #not found
17
+ end
18
+
19
+ def test_4
20
+ s_("AAA|CCC") #not found
21
+ end
22
+
23
+ def test_5
24
+ s_("AAA|BBB|CCC") #not found
25
+ end
26
+
27
+ def test_6
28
+ s_("AAA$BBB", "$") #not found
29
+ end
30
+
31
+ def test_7
32
+ s_("AAA$B|BB", "$") #not found
33
+ end
34
+
35
+ def test_8
36
+ s_("AAA$B|CC", "$")
37
+ end
38
+
39
+ def test_9
40
+ s_("AAA|CCC|BBB") #not found
41
+ end
42
+
43
+ def setlocale(locale)
44
+ __setlocale(locale)
45
+ end
46
+ end
@@ -0,0 +1,14 @@
1
+ require 'gettext'
2
+
3
+ class Simple
4
+ include GetText
5
+ bindtextdomain("test1", :path => "locale")
6
+
7
+ def test
8
+ _("language")
9
+ end
10
+
11
+ def test_formatted_string
12
+ _("one is %d.") % 1
13
+ end
14
+ end
File without changes
File without changes
File without changes