ofm_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 (384) hide show
  1. data/ChangeLog +78 -0
  2. data/README.rdoc +245 -0
  3. data/Rakefile +234 -0
  4. data/bin/rgettext +23 -0
  5. data/bin/rmsgfmt +22 -0
  6. data/bin/rmsgmerge +22 -0
  7. data/gettext.gemspec +40 -0
  8. data/lib/gettext/cgi.rb +39 -0
  9. data/lib/gettext/core_ext/iconv.rb +110 -0
  10. data/lib/gettext/core_ext/string.rb +86 -0
  11. data/lib/gettext/parser/erb.rb +5 -0
  12. data/lib/gettext/parser/glade.rb +5 -0
  13. data/lib/gettext/parser/ruby.rb +172 -0
  14. data/lib/gettext/tools/rgettext.rb +251 -0
  15. data/lib/gettext/tools/rmsgfmt.rb +86 -0
  16. data/lib/gettext/tools/rmsgmerge.rb +500 -0
  17. data/lib/gettext/tools.rb +197 -0
  18. data/lib/gettext/utils.rb +39 -0
  19. data/lib/gettext/version.rb +12 -0
  20. data/lib/gettext.rb +312 -0
  21. data/po/bg/rgettext.po +139 -0
  22. data/po/bs/rgettext.po +139 -0
  23. data/po/ca/rgettext.po +138 -0
  24. data/po/cs/rgettext.po +140 -0
  25. data/po/de/rgettext.po +146 -0
  26. data/po/el/rgettext.po +137 -0
  27. data/po/eo/rgettext.po +138 -0
  28. data/po/es/rgettext.po +139 -0
  29. data/po/et/rgettext.po +136 -0
  30. data/po/fr/rgettext.po +142 -0
  31. data/po/hr/rgettext.po +139 -0
  32. data/po/hu/rgettext.po +138 -0
  33. data/po/it/rgettext.po +138 -0
  34. data/po/ja/rgettext.po +140 -0
  35. data/po/ko/rgettext.po +137 -0
  36. data/po/lv/rgettext.po +139 -0
  37. data/po/nb/rgettext.po +140 -0
  38. data/po/nl/rgettext.po +138 -0
  39. data/po/pt_BR/rgettext.po +141 -0
  40. data/po/rgettext.pot +129 -0
  41. data/po/ru/rgettext.po +140 -0
  42. data/po/sr/rgettext.po +139 -0
  43. data/po/sv/rgettext.po +131 -0
  44. data/po/vi/rgettext.po +137 -0
  45. data/po/zh/rgettext.po +138 -0
  46. data/po/zh_TW/rgettext.po +137 -0
  47. data/samples/README +16 -0
  48. data/samples/cgi/README +43 -0
  49. data/samples/cgi/Rakefile +27 -0
  50. data/samples/cgi/cookie.cgi +64 -0
  51. data/samples/cgi/gettext.css +116 -0
  52. data/samples/cgi/helloerb.rhtml +28 -0
  53. data/samples/cgi/helloerb1.cgi +58 -0
  54. data/samples/cgi/helloerb2.cgi +51 -0
  55. data/samples/cgi/hellolib.rb +18 -0
  56. data/samples/cgi/http.rb +49 -0
  57. data/samples/cgi/index.cgi +111 -0
  58. data/samples/cgi/other.rhtml +20 -0
  59. data/samples/cgi/po/bg/helloerb1.po +59 -0
  60. data/samples/cgi/po/bg/helloerb2.po +51 -0
  61. data/samples/cgi/po/bg/hellolib.po +23 -0
  62. data/samples/cgi/po/bg/main.po +83 -0
  63. data/samples/cgi/po/bs/helloerb1.po +59 -0
  64. data/samples/cgi/po/bs/helloerb2.po +51 -0
  65. data/samples/cgi/po/bs/hellolib.po +23 -0
  66. data/samples/cgi/po/bs/main.po +83 -0
  67. data/samples/cgi/po/ca/helloerb1.po +59 -0
  68. data/samples/cgi/po/ca/helloerb2.po +51 -0
  69. data/samples/cgi/po/ca/hellolib.po +23 -0
  70. data/samples/cgi/po/ca/main.po +83 -0
  71. data/samples/cgi/po/cs/helloerb1.po +61 -0
  72. data/samples/cgi/po/cs/helloerb2.po +52 -0
  73. data/samples/cgi/po/cs/hellolib.po +25 -0
  74. data/samples/cgi/po/cs/main.po +85 -0
  75. data/samples/cgi/po/de/helloerb1.po +61 -0
  76. data/samples/cgi/po/de/helloerb2.po +52 -0
  77. data/samples/cgi/po/de/hellolib.po +24 -0
  78. data/samples/cgi/po/de/main.po +86 -0
  79. data/samples/cgi/po/el/helloerb1.po +60 -0
  80. data/samples/cgi/po/el/helloerb2.po +51 -0
  81. data/samples/cgi/po/el/hellolib.po +23 -0
  82. data/samples/cgi/po/el/main.po +84 -0
  83. data/samples/cgi/po/eo/helloerb1.po +60 -0
  84. data/samples/cgi/po/eo/helloerb2.po +52 -0
  85. data/samples/cgi/po/eo/hellolib.po +24 -0
  86. data/samples/cgi/po/eo/main.po +84 -0
  87. data/samples/cgi/po/es/helloerb1.po +59 -0
  88. data/samples/cgi/po/es/helloerb2.po +50 -0
  89. data/samples/cgi/po/es/hellolib.po +22 -0
  90. data/samples/cgi/po/es/main.po +83 -0
  91. data/samples/cgi/po/fr/helloerb1.po +59 -0
  92. data/samples/cgi/po/fr/helloerb2.po +51 -0
  93. data/samples/cgi/po/fr/hellolib.po +22 -0
  94. data/samples/cgi/po/fr/main.po +85 -0
  95. data/samples/cgi/po/helloerb1.pot +60 -0
  96. data/samples/cgi/po/helloerb2.pot +52 -0
  97. data/samples/cgi/po/hellolib.pot +24 -0
  98. data/samples/cgi/po/hr/helloerb1.po +59 -0
  99. data/samples/cgi/po/hr/helloerb2.po +51 -0
  100. data/samples/cgi/po/hr/hellolib.po +23 -0
  101. data/samples/cgi/po/hr/main.po +83 -0
  102. data/samples/cgi/po/hu/helloerb1.po +59 -0
  103. data/samples/cgi/po/hu/helloerb2.po +51 -0
  104. data/samples/cgi/po/hu/hellolib.po +23 -0
  105. data/samples/cgi/po/hu/main.po +82 -0
  106. data/samples/cgi/po/it/helloerb1.po +60 -0
  107. data/samples/cgi/po/it/helloerb2.po +52 -0
  108. data/samples/cgi/po/it/hellolib.po +24 -0
  109. data/samples/cgi/po/it/main.po +84 -0
  110. data/samples/cgi/po/ja/helloerb1.po +60 -0
  111. data/samples/cgi/po/ja/helloerb2.po +52 -0
  112. data/samples/cgi/po/ja/hellolib.po +24 -0
  113. data/samples/cgi/po/ja/main.po +85 -0
  114. data/samples/cgi/po/ko/helloerb1.po +59 -0
  115. data/samples/cgi/po/ko/helloerb2.po +51 -0
  116. data/samples/cgi/po/ko/hellolib.po +23 -0
  117. data/samples/cgi/po/ko/main.po +84 -0
  118. data/samples/cgi/po/lv/helloerb1.po +65 -0
  119. data/samples/cgi/po/lv/helloerb2.po +52 -0
  120. data/samples/cgi/po/lv/hellolib.po +24 -0
  121. data/samples/cgi/po/lv/main.po +77 -0
  122. data/samples/cgi/po/main.pot +80 -0
  123. data/samples/cgi/po/nb/helloerb1.po +60 -0
  124. data/samples/cgi/po/nb/helloerb2.po +52 -0
  125. data/samples/cgi/po/nb/hellolib.po +24 -0
  126. data/samples/cgi/po/nb/main.po +84 -0
  127. data/samples/cgi/po/nl/helloerb1.po +61 -0
  128. data/samples/cgi/po/nl/helloerb2.po +52 -0
  129. data/samples/cgi/po/nl/hellolib.po +24 -0
  130. data/samples/cgi/po/nl/main.po +86 -0
  131. data/samples/cgi/po/pt_BR/helloerb1.po +59 -0
  132. data/samples/cgi/po/pt_BR/helloerb2.po +51 -0
  133. data/samples/cgi/po/pt_BR/hellolib.po +23 -0
  134. data/samples/cgi/po/pt_BR/main.po +84 -0
  135. data/samples/cgi/po/ru/helloerb1.po +58 -0
  136. data/samples/cgi/po/ru/helloerb2.po +50 -0
  137. data/samples/cgi/po/ru/hellolib.po +22 -0
  138. data/samples/cgi/po/ru/main.po +82 -0
  139. data/samples/cgi/po/sr/helloerb1.po +60 -0
  140. data/samples/cgi/po/sr/helloerb2.po +52 -0
  141. data/samples/cgi/po/sr/hellolib.po +24 -0
  142. data/samples/cgi/po/sr/main.po +80 -0
  143. data/samples/cgi/po/vi/helloerb1.po +65 -0
  144. data/samples/cgi/po/vi/helloerb2.po +52 -0
  145. data/samples/cgi/po/vi/hellolib.po +24 -0
  146. data/samples/cgi/po/vi/main.po +77 -0
  147. data/samples/cgi/po/zh/helloerb1.po +60 -0
  148. data/samples/cgi/po/zh/helloerb2.po +52 -0
  149. data/samples/cgi/po/zh/hellolib.po +24 -0
  150. data/samples/cgi/po/zh/main.po +80 -0
  151. data/samples/cgi/po/zh_TW/helloerb1.po +67 -0
  152. data/samples/cgi/po/zh_TW/helloerb2.po +54 -0
  153. data/samples/cgi/po/zh_TW/hellolib.po +26 -0
  154. data/samples/cgi/po/zh_TW/main.po +79 -0
  155. data/samples/hello.rb +36 -0
  156. data/samples/hello2.rb +23 -0
  157. data/samples/hello_glade2.glade +70 -0
  158. data/samples/hello_glade2.rb +25 -0
  159. data/samples/hello_gtk2.rb +27 -0
  160. data/samples/hello_noop.rb +31 -0
  161. data/samples/hello_plural.rb +26 -0
  162. data/samples/hello_tk.rb +19 -0
  163. data/samples/makemo.rb +6 -0
  164. data/samples/po/bg/hello.po +24 -0
  165. data/samples/po/bg/hello2.po +31 -0
  166. data/samples/po/bg/hello_glade2.po +31 -0
  167. data/samples/po/bg/hello_gtk.po +23 -0
  168. data/samples/po/bg/hello_noop.po +27 -0
  169. data/samples/po/bg/hello_plural.po +25 -0
  170. data/samples/po/bg/hello_tk.po +23 -0
  171. data/samples/po/bs/hello.po +23 -0
  172. data/samples/po/bs/hello2.po +31 -0
  173. data/samples/po/bs/hello_glade2.po +31 -0
  174. data/samples/po/bs/hello_gtk.po +23 -0
  175. data/samples/po/bs/hello_noop.po +27 -0
  176. data/samples/po/bs/hello_plural.po +26 -0
  177. data/samples/po/bs/hello_tk.po +23 -0
  178. data/samples/po/ca/hello.po +23 -0
  179. data/samples/po/ca/hello2.po +31 -0
  180. data/samples/po/ca/hello_glade2.po +31 -0
  181. data/samples/po/ca/hello_gtk.po +23 -0
  182. data/samples/po/ca/hello_noop.po +27 -0
  183. data/samples/po/ca/hello_plural.po +25 -0
  184. data/samples/po/ca/hello_tk.po +23 -0
  185. data/samples/po/cs/hello.po +23 -0
  186. data/samples/po/cs/hello2.po +31 -0
  187. data/samples/po/cs/hello_glade2.po +37 -0
  188. data/samples/po/cs/hello_gtk.po +23 -0
  189. data/samples/po/cs/hello_noop.po +27 -0
  190. data/samples/po/cs/hello_plural.po +26 -0
  191. data/samples/po/cs/hello_tk.po +23 -0
  192. data/samples/po/de/hello.po +20 -0
  193. data/samples/po/de/hello2.po +28 -0
  194. data/samples/po/de/hello_glade2.po +27 -0
  195. data/samples/po/de/hello_gtk.po +20 -0
  196. data/samples/po/de/hello_noop.po +24 -0
  197. data/samples/po/de/hello_plural.po +25 -0
  198. data/samples/po/de/hello_tk.po +20 -0
  199. data/samples/po/el/hello.po +23 -0
  200. data/samples/po/el/hello2.po +31 -0
  201. data/samples/po/el/hello_glade2.po +31 -0
  202. data/samples/po/el/hello_gtk.po +22 -0
  203. data/samples/po/el/hello_noop.po +27 -0
  204. data/samples/po/el/hello_plural.po +25 -0
  205. data/samples/po/el/hello_tk.po +23 -0
  206. data/samples/po/eo/hello.po +23 -0
  207. data/samples/po/eo/hello2.po +31 -0
  208. data/samples/po/eo/hello_glade2.po +32 -0
  209. data/samples/po/eo/hello_gtk.po +23 -0
  210. data/samples/po/eo/hello_noop.po +27 -0
  211. data/samples/po/eo/hello_plural.po +26 -0
  212. data/samples/po/eo/hello_tk.po +24 -0
  213. data/samples/po/es/hello.po +21 -0
  214. data/samples/po/es/hello2.po +28 -0
  215. data/samples/po/es/hello_glade2.po +28 -0
  216. data/samples/po/es/hello_gtk.po +20 -0
  217. data/samples/po/es/hello_noop.po +24 -0
  218. data/samples/po/es/hello_plural.po +23 -0
  219. data/samples/po/es/hello_tk.po +20 -0
  220. data/samples/po/fr/hello.po +18 -0
  221. data/samples/po/fr/hello2.po +26 -0
  222. data/samples/po/fr/hello_glade2.po +27 -0
  223. data/samples/po/fr/hello_gtk.po +18 -0
  224. data/samples/po/fr/hello_noop.po +22 -0
  225. data/samples/po/fr/hello_plural.po +21 -0
  226. data/samples/po/fr/hello_tk.po +18 -0
  227. data/samples/po/hello.pot +23 -0
  228. data/samples/po/hello2.pot +31 -0
  229. data/samples/po/hello_glade2.pot +32 -0
  230. data/samples/po/hello_gtk.pot +23 -0
  231. data/samples/po/hello_noop.pot +27 -0
  232. data/samples/po/hello_plural.pot +26 -0
  233. data/samples/po/hello_tk.pot +24 -0
  234. data/samples/po/hr/hello.po +23 -0
  235. data/samples/po/hr/hello2.po +31 -0
  236. data/samples/po/hr/hello_glade2.po +31 -0
  237. data/samples/po/hr/hello_gtk.po +23 -0
  238. data/samples/po/hr/hello_noop.po +27 -0
  239. data/samples/po/hr/hello_plural.po +26 -0
  240. data/samples/po/hr/hello_tk.po +23 -0
  241. data/samples/po/hu/hello.po +22 -0
  242. data/samples/po/hu/hello2.po +30 -0
  243. data/samples/po/hu/hello_glade2.po +31 -0
  244. data/samples/po/hu/hello_gtk.po +22 -0
  245. data/samples/po/hu/hello_noop.po +26 -0
  246. data/samples/po/hu/hello_plural.po +25 -0
  247. data/samples/po/hu/hello_tk.po +23 -0
  248. data/samples/po/it/hello.po +20 -0
  249. data/samples/po/it/hello2.po +28 -0
  250. data/samples/po/it/hello_glade2.po +28 -0
  251. data/samples/po/it/hello_gtk.po +21 -0
  252. data/samples/po/it/hello_noop.po +24 -0
  253. data/samples/po/it/hello_plural.po +23 -0
  254. data/samples/po/it/hello_tk.po +21 -0
  255. data/samples/po/ja/hello.po +20 -0
  256. data/samples/po/ja/hello2.po +28 -0
  257. data/samples/po/ja/hello_glade2.po +26 -0
  258. data/samples/po/ja/hello_gtk.po +19 -0
  259. data/samples/po/ja/hello_noop.po +23 -0
  260. data/samples/po/ja/hello_plural.po +21 -0
  261. data/samples/po/ja/hello_tk.po +19 -0
  262. data/samples/po/ko/hello.po +18 -0
  263. data/samples/po/ko/hello2.po +26 -0
  264. data/samples/po/ko/hello_glade2.po +29 -0
  265. data/samples/po/ko/hello_gtk.po +18 -0
  266. data/samples/po/ko/hello_noop.po +22 -0
  267. data/samples/po/ko/hello_plural.po +25 -0
  268. data/samples/po/ko/hello_tk.po +19 -0
  269. data/samples/po/lv/hello.po +24 -0
  270. data/samples/po/lv/hello2.po +32 -0
  271. data/samples/po/lv/hello_glade2.po +38 -0
  272. data/samples/po/lv/hello_gtk.po +24 -0
  273. data/samples/po/lv/hello_noop.po +28 -0
  274. data/samples/po/lv/hello_plural.po +26 -0
  275. data/samples/po/lv/hello_tk.po +24 -0
  276. data/samples/po/nb/hello.po +23 -0
  277. data/samples/po/nb/hello2.po +31 -0
  278. data/samples/po/nb/hello_glade2.po +31 -0
  279. data/samples/po/nb/hello_gtk.po +23 -0
  280. data/samples/po/nb/hello_noop.po +27 -0
  281. data/samples/po/nb/hello_plural.po +26 -0
  282. data/samples/po/nb/hello_tk.po +24 -0
  283. data/samples/po/nl/hello.po +24 -0
  284. data/samples/po/nl/hello2.po +32 -0
  285. data/samples/po/nl/hello_glade2.po +31 -0
  286. data/samples/po/nl/hello_gtk.po +24 -0
  287. data/samples/po/nl/hello_noop.po +28 -0
  288. data/samples/po/nl/hello_plural.po +25 -0
  289. data/samples/po/nl/hello_tk.po +24 -0
  290. data/samples/po/pt_BR/hello.po +21 -0
  291. data/samples/po/pt_BR/hello2.po +29 -0
  292. data/samples/po/pt_BR/hello_glade2.po +29 -0
  293. data/samples/po/pt_BR/hello_gtk.po +21 -0
  294. data/samples/po/pt_BR/hello_noop.po +25 -0
  295. data/samples/po/pt_BR/hello_plural.po +23 -0
  296. data/samples/po/pt_BR/hello_tk.po +21 -0
  297. data/samples/po/ru/hello.po +22 -0
  298. data/samples/po/ru/hello2.po +30 -0
  299. data/samples/po/ru/hello_glade2.po +30 -0
  300. data/samples/po/ru/hello_gtk.po +22 -0
  301. data/samples/po/ru/hello_noop.po +26 -0
  302. data/samples/po/ru/hello_plural.po +28 -0
  303. data/samples/po/ru/hello_tk.po +22 -0
  304. data/samples/po/sr/hello.po +22 -0
  305. data/samples/po/sr/hello2.po +30 -0
  306. data/samples/po/sr/hello_glade2.po +32 -0
  307. data/samples/po/sr/hello_gtk.po +22 -0
  308. data/samples/po/sr/hello_noop.po +26 -0
  309. data/samples/po/sr/hello_plural.po +26 -0
  310. data/samples/po/sr/hello_tk.po +24 -0
  311. data/samples/po/sv/hello.po +20 -0
  312. data/samples/po/sv/hello2.po +28 -0
  313. data/samples/po/sv/hello_glade2.po +28 -0
  314. data/samples/po/sv/hello_gtk.po +20 -0
  315. data/samples/po/sv/hello_noop.po +24 -0
  316. data/samples/po/sv/hello_plural.po +23 -0
  317. data/samples/po/sv/hello_tk.po +20 -0
  318. data/samples/po/test.rb +13 -0
  319. data/samples/po/vi/hello.po +23 -0
  320. data/samples/po/vi/hello2.po +31 -0
  321. data/samples/po/vi/hello_glade2.po +38 -0
  322. data/samples/po/vi/hello_gtk.po +23 -0
  323. data/samples/po/vi/hello_noop.po +27 -0
  324. data/samples/po/vi/hello_plural.po +26 -0
  325. data/samples/po/vi/hello_tk.po +24 -0
  326. data/samples/po/zh/hello.po +23 -0
  327. data/samples/po/zh/hello2.po +31 -0
  328. data/samples/po/zh/hello_glade2.po +31 -0
  329. data/samples/po/zh/hello_gtk.po +23 -0
  330. data/samples/po/zh/hello_noop.po +27 -0
  331. data/samples/po/zh/hello_plural.po +25 -0
  332. data/samples/po/zh/hello_tk.po +23 -0
  333. data/samples/po/zh_TW/hello.po +26 -0
  334. data/samples/po/zh_TW/hello2.po +34 -0
  335. data/samples/po/zh_TW/hello_glade2.po +40 -0
  336. data/samples/po/zh_TW/hello_gtk.po +25 -0
  337. data/samples/po/zh_TW/hello_noop.po +30 -0
  338. data/samples/po/zh_TW/hello_plural.po +28 -0
  339. data/samples/po/zh_TW/hello_tk.po +26 -0
  340. data/src/poparser.ry +217 -0
  341. data/test/README +1 -0
  342. data/test/Rakefile +17 -0
  343. data/test/po/cr/plural.po +23 -0
  344. data/test/po/da/plural.po +22 -0
  345. data/test/po/da/plural_error.po +22 -0
  346. data/test/po/fr/plural.po +28 -0
  347. data/test/po/fr/plural_error.po +20 -0
  348. data/test/po/fr/test1.po +23 -0
  349. data/test/po/fr/test2.po +19 -0
  350. data/test/po/ir/plural.po +23 -0
  351. data/test/po/ja/npgettext.po +46 -0
  352. data/test/po/ja/nsgettext.po +65 -0
  353. data/test/po/ja/pgettext.po +41 -0
  354. data/test/po/ja/plural.po +28 -0
  355. data/test/po/ja/plural_error.po +20 -0
  356. data/test/po/ja/rubyparser.po +43 -0
  357. data/test/po/ja/sgettext.po +47 -0
  358. data/test/po/ja/test1.po +23 -0
  359. data/test/po/ja/test2.po +19 -0
  360. data/test/po/la/plural.po +23 -0
  361. data/test/po/la/plural_error.po +21 -0
  362. data/test/po/li/plural.po +23 -0
  363. data/test/po/po/plural.po +23 -0
  364. data/test/po/sl/plural.po +24 -0
  365. data/test/test_class_info.rb +88 -0
  366. data/test/test_gettext.rb +322 -0
  367. data/test/test_parser.rb +160 -0
  368. data/test/test_string.rb +67 -0
  369. data/test/test_textdomain_multi.rb +82 -0
  370. data/test/test_textdomain_toplevel.rb +44 -0
  371. data/test/testlib/N_.rb +68 -0
  372. data/test/testlib/erb.rhtml +15 -0
  373. data/test/testlib/erb.rxml +16 -0
  374. data/test/testlib/gettext.rb +115 -0
  375. data/test/testlib/gladeparser.glade +183 -0
  376. data/test/testlib/helper.rb +13 -0
  377. data/test/testlib/multi_textdomain.rb +133 -0
  378. data/test/testlib/ngettext.rb +81 -0
  379. data/test/testlib/npgettext.rb +33 -0
  380. data/test/testlib/nsgettext.rb +44 -0
  381. data/test/testlib/pgettext.rb +38 -0
  382. data/test/testlib/sgettext.rb +48 -0
  383. data/test/testlib/simple.rb +16 -0
  384. metadata +475 -0
@@ -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,13 @@
1
+ # encoding: utf-8
2
+
3
+ $LOAD_PATH.unshift File.expand_path("../../lib", File.dirname(__FILE__))
4
+ require 'test/unit'
5
+
6
+ require 'rubygems'
7
+ require 'gettext'
8
+
9
+ #optional gems
10
+ begin
11
+ require 'redgreen'
12
+ rescue LoadError
13
+ end
@@ -0,0 +1,133 @@
1
+ # encoding: utf-8
2
+
3
+ class C11
4
+ include GetText
5
+ def initialize
6
+ bindtextdomain("test1", :path => "locale")
7
+ bindtextdomain("test2", :path => "locale")
8
+ end
9
+ def test
10
+ _("language")
11
+ end
12
+ def test2
13
+ _("LANGUAGE")
14
+ end
15
+ end
16
+
17
+ class C12
18
+ include GetText
19
+ bindtextdomain("test1", :path => "locale")
20
+ bindtextdomain("test2", :path => "locale")
21
+
22
+ def test
23
+ _("language")
24
+ end
25
+ def test2
26
+ _("LANGUAGE")
27
+ end
28
+ end
29
+
30
+ class C21 < C11
31
+ end
32
+
33
+ class C22 < C12
34
+ end
35
+
36
+ module M1
37
+ include GetText
38
+ bindtextdomain("test1", :path => "locale")
39
+
40
+ module_function
41
+ def test
42
+ _("language")
43
+ end
44
+
45
+ module M1M1
46
+ include GetText
47
+ module_function
48
+ def test
49
+ _("language")
50
+ end
51
+ # Doesn't translate
52
+ def test2
53
+ _("LANGUAGE")
54
+ end
55
+ end
56
+
57
+ class M1C1
58
+ include GetText
59
+ bindtextdomain("test2", :path => "locale")
60
+ def test
61
+ _("language")
62
+ end
63
+ def test2
64
+ _("LANGUAGE")
65
+ end
66
+ end
67
+
68
+ class M1C2
69
+ include GetText
70
+ def initialize
71
+ bindtextdomain("test2", :path => "locale")
72
+ end
73
+ def test
74
+ _("language")
75
+ end
76
+ def test2
77
+ _("LANGUAGE")
78
+ end
79
+ end
80
+
81
+ end
82
+
83
+ class C2
84
+ include GetText
85
+ def initialize
86
+ bindtextdomain("test1", :path => "locale")
87
+ end
88
+
89
+ def test
90
+ _("language")
91
+ end
92
+
93
+ def test_eval
94
+ eval("_(\"language\")")
95
+ end
96
+ end
97
+
98
+ class C3
99
+ include GetText
100
+ bindtextdomain("test1", :path => "locale")
101
+
102
+ def test
103
+ _("language")
104
+ end
105
+
106
+ def self.test
107
+ _("language")
108
+ end
109
+ end
110
+
111
+ class C4 < C3
112
+ bindtextdomain("test2", :path => "locale")
113
+
114
+ def test2
115
+ _("LANGUAGE")
116
+ end
117
+
118
+ def test3
119
+ _("no data")
120
+ end
121
+ end
122
+
123
+ class C51
124
+ include GetText
125
+ bindtextdomain("test3", :path => "locale")
126
+ def test
127
+ _("language")
128
+ end
129
+ end
130
+
131
+ class C52 < C12
132
+ bindtextdomain("test3", :path => "locale")
133
+ end
@@ -0,0 +1,81 @@
1
+ # encoding: utf-8
2
+
3
+ require 'gettext'
4
+ include GetText
5
+
6
+ class TestRubyParser_n
7
+ bindtextdomain("rubyparser", :path => "locale")
8
+
9
+ def test_1
10
+ n_("aaa","aaa2",1)
11
+ end
12
+
13
+ def test_2
14
+ n_("bbb\n", "ccc2\nccc2", 1)
15
+ end
16
+
17
+ def test_3_1
18
+ n_("ddd\nddd",
19
+ "ddd2\nddd2",
20
+ 1)
21
+ end
22
+ def test_3_2
23
+ n_("eee\neee\n" ,
24
+ "eee2\neee2\n" ,
25
+ 1)
26
+ end
27
+
28
+ def test_4
29
+ n_("ddd
30
+ eee
31
+ ", "ddd
32
+ eee2", 1)
33
+ end
34
+
35
+ def test_5_1
36
+ n_("fff", "fff2", 1)
37
+ end
38
+
39
+ def test_5_2
40
+ n_("fff", "fff2", 1) + "foo" + n_("ggg", "ggg2", 1)
41
+ end
42
+
43
+ def test_6
44
+ n_("ggg"\
45
+ "hhh"\
46
+ "iii",
47
+ "jjj"\
48
+ "kkk"\
49
+ "lll", 1)
50
+ end
51
+
52
+ def test_7
53
+ n_('a"b"c"', 'a"b"c"2', 1)
54
+ end
55
+
56
+ def test_8
57
+ n_("d\"e\"f\"", "d\"e\"f\"2", 1)
58
+ end
59
+
60
+ def test_9
61
+ n_("mmm" + "mmm","mmm2" + "mmm2",1) +
62
+ n_("nnn" ,"nnn2" ,1)
63
+ end
64
+
65
+ def test_10
66
+ _("ooo")
67
+ n_("ooo", "ppp", 1)
68
+ end
69
+
70
+ def test_11
71
+ n_("qqq", "rrr", 1)
72
+ n_("qqq", "sss", 1) # This is merged to "qqq" with plural form "rrr".
73
+ end
74
+
75
+ def extracted_comments
76
+ # TRANSLATORS:please provide translations for all
77
+ # the plural forms!
78
+ n_('comment', 'comments', 2)
79
+ end
80
+ end
81
+
@@ -0,0 +1,33 @@
1
+ # encoding: utf-8
2
+
3
+ require 'gettext'
4
+
5
+ class TestNPGetText
6
+ include GetText
7
+ bindtextdomain("npgettext", :path => "locale")
8
+
9
+ def test_1
10
+ [np_("Magazine", "a book", "%{num} books", 1),
11
+ np_("Magazine", "a book", "%{num} books", 2)]
12
+ end
13
+
14
+ def test_2
15
+ [npgettext("Magazine", "a book", "%{num} books", 1),
16
+ npgettext("Magazine", "a book", "%{num} books", 2)]
17
+ end
18
+
19
+ def test_3
20
+ [np_("Hardcover", "a book", "%{num} books", 1),
21
+ np_("Hardcover", "a book", "%{num} books", 2)]
22
+ end
23
+
24
+ def test_4
25
+ [np_("Magaine", "I have a magazine", "I have %{num} magazines", 1),
26
+ np_("Magaine", "I have a magazine", "I have %{num} magazines", 2)]
27
+ end
28
+
29
+ def test_5
30
+ [np_("Hardcover", "a picture", "%{num} pictures", 1),
31
+ np_("Hardcover", "a picture", "%{num} pictures", 2)] #not found.
32
+ end
33
+ end
@@ -0,0 +1,44 @@
1
+ # encoding: utf-8
2
+
3
+ require 'gettext'
4
+
5
+ class TestNSGetText
6
+ include GetText
7
+ bindtextdomain("nsgettext", :path => "locale")
8
+
9
+ def test_1
10
+ [ns_("AAA|BBB", "CCC", 1), ns_("AAA|BBB", "CCC", 2)]
11
+ end
12
+
13
+ def test_2
14
+ [nsgettext("AAA|BBB", "CCC", 1), nsgettext("AAA|BBB", "CCC", 2)]
15
+ end
16
+
17
+ def test_3
18
+ [ns_("AAA", "BBB", 1), ns_("AAA", "BBB", 2)] #not found
19
+ end
20
+
21
+ def test_4
22
+ [ns_("AAA|CCC", "DDD", 1), ns_("AAA|CCC", "DDD", 2)] #not found
23
+ end
24
+
25
+ def test_5
26
+ [ns_("AAA|BBB|CCC", "DDD", 1), ns_("AAA|BBB|CCC", "DDD", 2)] #not found
27
+ end
28
+
29
+ def test_6
30
+ [ns_("AAA$BBB", "CCC", 1, "$"), ns_("AAA$BBB", "CCC", 2, "$")] #not found
31
+ end
32
+
33
+ def test_7
34
+ [ns_("AAA$B|BB", "CCC", 1, "$"), ns_("AAA$B|BB", "CCC", 2, "$")] #not found
35
+ end
36
+
37
+ def test_8
38
+ [ns_("AAA$B|CC", "DDD", 1, "$"), ns_("AAA$B|CC", "DDD", 2, "$")]
39
+ end
40
+
41
+ def test_9
42
+ [ns_("AAA|CCC|BBB", "DDD", 1), ns_("AAA|CCC|BBB", "DDD", 2)] #not found
43
+ end
44
+ end
@@ -0,0 +1,38 @@
1
+ # encoding: utf-8
2
+
3
+ require 'gettext'
4
+
5
+ class TestPGetText
6
+ include GetText
7
+ bindtextdomain("pgettext", :path => "locale")
8
+
9
+ def test_1
10
+ p_("AAA", "BBB")
11
+ end
12
+
13
+ def test_2
14
+ pgettext("AAA", "BBB")
15
+ end
16
+
17
+ def test_3
18
+ pgettext("AAA|BBB", "CCC")
19
+ end
20
+
21
+ def test_4
22
+ p_("AAA", "CCC") #not found
23
+ end
24
+
25
+ def test_5
26
+ p_("CCC", "BBB")
27
+ end
28
+
29
+ def test_6 # not pgettext.
30
+ _("BBB")
31
+ end
32
+
33
+ def with_context
34
+ # TRANSLATORS:please translate 'name' in the context of 'program'.
35
+ # Hint: the translation should NOT contain the translation of 'program'.
36
+ p_('program', 'name')
37
+ end
38
+ end
@@ -0,0 +1,48 @@
1
+ # encoding: utf-8
2
+
3
+ require 'gettext'
4
+
5
+ class TestSGetText
6
+ include GetText
7
+ bindtextdomain("sgettext", :path => "locale")
8
+
9
+ def test_1
10
+ s_("AAA|BBB")
11
+ end
12
+
13
+ def test_2
14
+ sgettext("AAA|BBB")
15
+ end
16
+
17
+ def test_3
18
+ s_("AAA") #not found
19
+ end
20
+
21
+ def test_4
22
+ s_("AAA|CCC") #not found
23
+ end
24
+
25
+ def test_5
26
+ s_("AAA|BBB|CCC") #not found
27
+ end
28
+
29
+ def test_6
30
+ s_("AAA$BBB", "$") #not found
31
+ end
32
+
33
+ def test_7
34
+ s_("AAA$B|BB", "$") #not found
35
+ end
36
+
37
+ def test_8
38
+ s_("AAA$B|CC", "$")
39
+ end
40
+
41
+ def test_9
42
+ s_("AAA|CCC|BBB") #not found
43
+ end
44
+
45
+ def setlocale(locale)
46
+ __setlocale(locale)
47
+ end
48
+ end
@@ -0,0 +1,16 @@
1
+ # encoding: utf-8
2
+
3
+ require 'gettext'
4
+
5
+ class Simple
6
+ include GetText
7
+ bindtextdomain("test1", :path => "locale")
8
+
9
+ def test
10
+ _("language")
11
+ end
12
+
13
+ def test_formatted_string
14
+ _("one is %d.") % 1
15
+ end
16
+ end