fair-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 (396) 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 +37 -0
  9. data/lib/gettext/core_ext/iconv.rb +110 -0
  10. data/lib/gettext/core_ext/string.rb +84 -0
  11. data/lib/gettext/parser/erb.rb +3 -0
  12. data/lib/gettext/parser/glade.rb +3 -0
  13. data/lib/gettext/parser/ruby.rb +172 -0
  14. data/lib/gettext/tools/rgettext.rb +248 -0
  15. data/lib/gettext/tools/rmsgfmt.rb +84 -0
  16. data/lib/gettext/tools/rmsgmerge.rb +498 -0
  17. data/lib/gettext/tools.rb +202 -0
  18. data/lib/gettext/utils.rb +37 -0
  19. data/lib/gettext/version.rb +12 -0
  20. data/lib/gettext.rb +310 -0
  21. data/po/bg/rgettext.po +134 -0
  22. data/po/bs/rgettext.po +135 -0
  23. data/po/ca/rgettext.po +133 -0
  24. data/po/cs/rgettext.po +136 -0
  25. data/po/de/rgettext.po +141 -0
  26. data/po/el/rgettext.po +132 -0
  27. data/po/eo/rgettext.po +133 -0
  28. data/po/es/rgettext.po +134 -0
  29. data/po/et/rgettext.po +131 -0
  30. data/po/fr/rgettext.po +137 -0
  31. data/po/hr/rgettext.po +135 -0
  32. data/po/hu/rgettext.po +133 -0
  33. data/po/it/rgettext.po +134 -0
  34. data/po/ja/rgettext.po +134 -0
  35. data/po/ko/rgettext.po +133 -0
  36. data/po/lv/rgettext.po +134 -0
  37. data/po/nb/rgettext.po +135 -0
  38. data/po/nl/rgettext.po +134 -0
  39. data/po/pt_BR/rgettext.po +136 -0
  40. data/po/rgettext.pot +125 -0
  41. data/po/ru/rgettext.po +135 -0
  42. data/po/sr/rgettext.po +134 -0
  43. data/po/sv/rgettext.po +127 -0
  44. data/po/ua/rgettext.po +138 -0
  45. data/po/vi/rgettext.po +132 -0
  46. data/po/zh/rgettext.po +133 -0
  47. data/po/zh_TW/rgettext.po +132 -0
  48. data/samples/README +16 -0
  49. data/samples/cgi/README +43 -0
  50. data/samples/cgi/Rakefile +27 -0
  51. data/samples/cgi/cookie.cgi +64 -0
  52. data/samples/cgi/gettext.css +116 -0
  53. data/samples/cgi/helloerb.rhtml +28 -0
  54. data/samples/cgi/helloerb1.cgi +58 -0
  55. data/samples/cgi/helloerb2.cgi +51 -0
  56. data/samples/cgi/hellolib.rb +18 -0
  57. data/samples/cgi/http.rb +49 -0
  58. data/samples/cgi/index.cgi +111 -0
  59. data/samples/cgi/other.rhtml +20 -0
  60. data/samples/cgi/po/bg/helloerb1.po +59 -0
  61. data/samples/cgi/po/bg/helloerb2.po +51 -0
  62. data/samples/cgi/po/bg/hellolib.po +23 -0
  63. data/samples/cgi/po/bg/main.po +83 -0
  64. data/samples/cgi/po/bs/helloerb1.po +59 -0
  65. data/samples/cgi/po/bs/helloerb2.po +51 -0
  66. data/samples/cgi/po/bs/hellolib.po +23 -0
  67. data/samples/cgi/po/bs/main.po +83 -0
  68. data/samples/cgi/po/ca/helloerb1.po +59 -0
  69. data/samples/cgi/po/ca/helloerb2.po +51 -0
  70. data/samples/cgi/po/ca/hellolib.po +23 -0
  71. data/samples/cgi/po/ca/main.po +83 -0
  72. data/samples/cgi/po/cs/helloerb1.po +61 -0
  73. data/samples/cgi/po/cs/helloerb2.po +52 -0
  74. data/samples/cgi/po/cs/hellolib.po +25 -0
  75. data/samples/cgi/po/cs/main.po +85 -0
  76. data/samples/cgi/po/de/helloerb1.po +61 -0
  77. data/samples/cgi/po/de/helloerb2.po +52 -0
  78. data/samples/cgi/po/de/hellolib.po +24 -0
  79. data/samples/cgi/po/de/main.po +86 -0
  80. data/samples/cgi/po/el/helloerb1.po +60 -0
  81. data/samples/cgi/po/el/helloerb2.po +51 -0
  82. data/samples/cgi/po/el/hellolib.po +23 -0
  83. data/samples/cgi/po/el/main.po +84 -0
  84. data/samples/cgi/po/eo/helloerb1.po +60 -0
  85. data/samples/cgi/po/eo/helloerb2.po +52 -0
  86. data/samples/cgi/po/eo/hellolib.po +24 -0
  87. data/samples/cgi/po/eo/main.po +84 -0
  88. data/samples/cgi/po/es/helloerb1.po +59 -0
  89. data/samples/cgi/po/es/helloerb2.po +50 -0
  90. data/samples/cgi/po/es/hellolib.po +22 -0
  91. data/samples/cgi/po/es/main.po +83 -0
  92. data/samples/cgi/po/fr/helloerb1.po +59 -0
  93. data/samples/cgi/po/fr/helloerb2.po +51 -0
  94. data/samples/cgi/po/fr/hellolib.po +22 -0
  95. data/samples/cgi/po/fr/main.po +85 -0
  96. data/samples/cgi/po/helloerb1.pot +60 -0
  97. data/samples/cgi/po/helloerb2.pot +52 -0
  98. data/samples/cgi/po/hellolib.pot +24 -0
  99. data/samples/cgi/po/hr/helloerb1.po +59 -0
  100. data/samples/cgi/po/hr/helloerb2.po +51 -0
  101. data/samples/cgi/po/hr/hellolib.po +23 -0
  102. data/samples/cgi/po/hr/main.po +83 -0
  103. data/samples/cgi/po/hu/helloerb1.po +59 -0
  104. data/samples/cgi/po/hu/helloerb2.po +51 -0
  105. data/samples/cgi/po/hu/hellolib.po +23 -0
  106. data/samples/cgi/po/hu/main.po +82 -0
  107. data/samples/cgi/po/it/helloerb1.po +60 -0
  108. data/samples/cgi/po/it/helloerb2.po +52 -0
  109. data/samples/cgi/po/it/hellolib.po +24 -0
  110. data/samples/cgi/po/it/main.po +84 -0
  111. data/samples/cgi/po/ja/helloerb1.po +60 -0
  112. data/samples/cgi/po/ja/helloerb2.po +52 -0
  113. data/samples/cgi/po/ja/hellolib.po +24 -0
  114. data/samples/cgi/po/ja/main.po +85 -0
  115. data/samples/cgi/po/ko/helloerb1.po +59 -0
  116. data/samples/cgi/po/ko/helloerb2.po +51 -0
  117. data/samples/cgi/po/ko/hellolib.po +23 -0
  118. data/samples/cgi/po/ko/main.po +84 -0
  119. data/samples/cgi/po/lv/helloerb1.po +65 -0
  120. data/samples/cgi/po/lv/helloerb2.po +52 -0
  121. data/samples/cgi/po/lv/hellolib.po +24 -0
  122. data/samples/cgi/po/lv/main.po +77 -0
  123. data/samples/cgi/po/main.pot +80 -0
  124. data/samples/cgi/po/nb/helloerb1.po +60 -0
  125. data/samples/cgi/po/nb/helloerb2.po +52 -0
  126. data/samples/cgi/po/nb/hellolib.po +24 -0
  127. data/samples/cgi/po/nb/main.po +84 -0
  128. data/samples/cgi/po/nl/helloerb1.po +61 -0
  129. data/samples/cgi/po/nl/helloerb2.po +52 -0
  130. data/samples/cgi/po/nl/hellolib.po +24 -0
  131. data/samples/cgi/po/nl/main.po +86 -0
  132. data/samples/cgi/po/pt_BR/helloerb1.po +59 -0
  133. data/samples/cgi/po/pt_BR/helloerb2.po +51 -0
  134. data/samples/cgi/po/pt_BR/hellolib.po +23 -0
  135. data/samples/cgi/po/pt_BR/main.po +84 -0
  136. data/samples/cgi/po/ru/helloerb1.po +58 -0
  137. data/samples/cgi/po/ru/helloerb2.po +50 -0
  138. data/samples/cgi/po/ru/hellolib.po +22 -0
  139. data/samples/cgi/po/ru/main.po +82 -0
  140. data/samples/cgi/po/sr/helloerb1.po +60 -0
  141. data/samples/cgi/po/sr/helloerb2.po +52 -0
  142. data/samples/cgi/po/sr/hellolib.po +24 -0
  143. data/samples/cgi/po/sr/main.po +80 -0
  144. data/samples/cgi/po/ua/helloerb1.po +62 -0
  145. data/samples/cgi/po/ua/helloerb2.po +54 -0
  146. data/samples/cgi/po/ua/hellolib.po +26 -0
  147. data/samples/cgi/po/ua/main.po +84 -0
  148. data/samples/cgi/po/vi/helloerb1.po +65 -0
  149. data/samples/cgi/po/vi/helloerb2.po +52 -0
  150. data/samples/cgi/po/vi/hellolib.po +24 -0
  151. data/samples/cgi/po/vi/main.po +77 -0
  152. data/samples/cgi/po/zh/helloerb1.po +60 -0
  153. data/samples/cgi/po/zh/helloerb2.po +52 -0
  154. data/samples/cgi/po/zh/hellolib.po +24 -0
  155. data/samples/cgi/po/zh/main.po +80 -0
  156. data/samples/cgi/po/zh_TW/helloerb1.po +67 -0
  157. data/samples/cgi/po/zh_TW/helloerb2.po +54 -0
  158. data/samples/cgi/po/zh_TW/hellolib.po +26 -0
  159. data/samples/cgi/po/zh_TW/main.po +79 -0
  160. data/samples/hello.rb +36 -0
  161. data/samples/hello2.rb +23 -0
  162. data/samples/hello_glade2.glade +70 -0
  163. data/samples/hello_glade2.rb +25 -0
  164. data/samples/hello_gtk2.rb +27 -0
  165. data/samples/hello_noop.rb +31 -0
  166. data/samples/hello_plural.rb +26 -0
  167. data/samples/hello_tk.rb +19 -0
  168. data/samples/makemo.rb +4 -0
  169. data/samples/po/bg/hello.po +24 -0
  170. data/samples/po/bg/hello2.po +31 -0
  171. data/samples/po/bg/hello_glade2.po +31 -0
  172. data/samples/po/bg/hello_gtk.po +23 -0
  173. data/samples/po/bg/hello_noop.po +27 -0
  174. data/samples/po/bg/hello_plural.po +25 -0
  175. data/samples/po/bg/hello_tk.po +23 -0
  176. data/samples/po/bs/hello.po +23 -0
  177. data/samples/po/bs/hello2.po +31 -0
  178. data/samples/po/bs/hello_glade2.po +31 -0
  179. data/samples/po/bs/hello_gtk.po +23 -0
  180. data/samples/po/bs/hello_noop.po +27 -0
  181. data/samples/po/bs/hello_plural.po +26 -0
  182. data/samples/po/bs/hello_tk.po +23 -0
  183. data/samples/po/ca/hello.po +23 -0
  184. data/samples/po/ca/hello2.po +31 -0
  185. data/samples/po/ca/hello_glade2.po +31 -0
  186. data/samples/po/ca/hello_gtk.po +23 -0
  187. data/samples/po/ca/hello_noop.po +27 -0
  188. data/samples/po/ca/hello_plural.po +25 -0
  189. data/samples/po/ca/hello_tk.po +23 -0
  190. data/samples/po/cs/hello.po +23 -0
  191. data/samples/po/cs/hello2.po +31 -0
  192. data/samples/po/cs/hello_glade2.po +37 -0
  193. data/samples/po/cs/hello_gtk.po +23 -0
  194. data/samples/po/cs/hello_noop.po +27 -0
  195. data/samples/po/cs/hello_plural.po +26 -0
  196. data/samples/po/cs/hello_tk.po +23 -0
  197. data/samples/po/de/hello.po +20 -0
  198. data/samples/po/de/hello2.po +28 -0
  199. data/samples/po/de/hello_glade2.po +27 -0
  200. data/samples/po/de/hello_gtk.po +20 -0
  201. data/samples/po/de/hello_noop.po +24 -0
  202. data/samples/po/de/hello_plural.po +25 -0
  203. data/samples/po/de/hello_tk.po +20 -0
  204. data/samples/po/el/hello.po +23 -0
  205. data/samples/po/el/hello2.po +31 -0
  206. data/samples/po/el/hello_glade2.po +31 -0
  207. data/samples/po/el/hello_gtk.po +22 -0
  208. data/samples/po/el/hello_noop.po +27 -0
  209. data/samples/po/el/hello_plural.po +25 -0
  210. data/samples/po/el/hello_tk.po +23 -0
  211. data/samples/po/eo/hello.po +23 -0
  212. data/samples/po/eo/hello2.po +31 -0
  213. data/samples/po/eo/hello_glade2.po +32 -0
  214. data/samples/po/eo/hello_gtk.po +23 -0
  215. data/samples/po/eo/hello_noop.po +27 -0
  216. data/samples/po/eo/hello_plural.po +26 -0
  217. data/samples/po/eo/hello_tk.po +24 -0
  218. data/samples/po/es/hello.po +21 -0
  219. data/samples/po/es/hello2.po +28 -0
  220. data/samples/po/es/hello_glade2.po +28 -0
  221. data/samples/po/es/hello_gtk.po +20 -0
  222. data/samples/po/es/hello_noop.po +24 -0
  223. data/samples/po/es/hello_plural.po +23 -0
  224. data/samples/po/es/hello_tk.po +20 -0
  225. data/samples/po/fr/hello.po +18 -0
  226. data/samples/po/fr/hello2.po +26 -0
  227. data/samples/po/fr/hello_glade2.po +27 -0
  228. data/samples/po/fr/hello_gtk.po +18 -0
  229. data/samples/po/fr/hello_noop.po +22 -0
  230. data/samples/po/fr/hello_plural.po +21 -0
  231. data/samples/po/fr/hello_tk.po +18 -0
  232. data/samples/po/hello.pot +23 -0
  233. data/samples/po/hello2.pot +31 -0
  234. data/samples/po/hello_glade2.pot +32 -0
  235. data/samples/po/hello_gtk.pot +23 -0
  236. data/samples/po/hello_noop.pot +27 -0
  237. data/samples/po/hello_plural.pot +26 -0
  238. data/samples/po/hello_tk.pot +24 -0
  239. data/samples/po/hr/hello.po +23 -0
  240. data/samples/po/hr/hello2.po +31 -0
  241. data/samples/po/hr/hello_glade2.po +31 -0
  242. data/samples/po/hr/hello_gtk.po +23 -0
  243. data/samples/po/hr/hello_noop.po +27 -0
  244. data/samples/po/hr/hello_plural.po +26 -0
  245. data/samples/po/hr/hello_tk.po +23 -0
  246. data/samples/po/hu/hello.po +22 -0
  247. data/samples/po/hu/hello2.po +30 -0
  248. data/samples/po/hu/hello_glade2.po +31 -0
  249. data/samples/po/hu/hello_gtk.po +22 -0
  250. data/samples/po/hu/hello_noop.po +26 -0
  251. data/samples/po/hu/hello_plural.po +25 -0
  252. data/samples/po/hu/hello_tk.po +23 -0
  253. data/samples/po/it/hello.po +20 -0
  254. data/samples/po/it/hello2.po +28 -0
  255. data/samples/po/it/hello_glade2.po +28 -0
  256. data/samples/po/it/hello_gtk.po +21 -0
  257. data/samples/po/it/hello_noop.po +24 -0
  258. data/samples/po/it/hello_plural.po +23 -0
  259. data/samples/po/it/hello_tk.po +21 -0
  260. data/samples/po/ja/hello.po +20 -0
  261. data/samples/po/ja/hello2.po +28 -0
  262. data/samples/po/ja/hello_glade2.po +26 -0
  263. data/samples/po/ja/hello_gtk.po +19 -0
  264. data/samples/po/ja/hello_noop.po +23 -0
  265. data/samples/po/ja/hello_plural.po +21 -0
  266. data/samples/po/ja/hello_tk.po +19 -0
  267. data/samples/po/ko/hello.po +18 -0
  268. data/samples/po/ko/hello2.po +26 -0
  269. data/samples/po/ko/hello_glade2.po +29 -0
  270. data/samples/po/ko/hello_gtk.po +18 -0
  271. data/samples/po/ko/hello_noop.po +22 -0
  272. data/samples/po/ko/hello_plural.po +25 -0
  273. data/samples/po/ko/hello_tk.po +19 -0
  274. data/samples/po/lv/hello.po +24 -0
  275. data/samples/po/lv/hello2.po +32 -0
  276. data/samples/po/lv/hello_glade2.po +38 -0
  277. data/samples/po/lv/hello_gtk.po +24 -0
  278. data/samples/po/lv/hello_noop.po +28 -0
  279. data/samples/po/lv/hello_plural.po +26 -0
  280. data/samples/po/lv/hello_tk.po +24 -0
  281. data/samples/po/nb/hello.po +23 -0
  282. data/samples/po/nb/hello2.po +31 -0
  283. data/samples/po/nb/hello_glade2.po +31 -0
  284. data/samples/po/nb/hello_gtk.po +23 -0
  285. data/samples/po/nb/hello_noop.po +27 -0
  286. data/samples/po/nb/hello_plural.po +26 -0
  287. data/samples/po/nb/hello_tk.po +24 -0
  288. data/samples/po/nl/hello.po +24 -0
  289. data/samples/po/nl/hello2.po +32 -0
  290. data/samples/po/nl/hello_glade2.po +31 -0
  291. data/samples/po/nl/hello_gtk.po +24 -0
  292. data/samples/po/nl/hello_noop.po +28 -0
  293. data/samples/po/nl/hello_plural.po +25 -0
  294. data/samples/po/nl/hello_tk.po +24 -0
  295. data/samples/po/pt_BR/hello.po +21 -0
  296. data/samples/po/pt_BR/hello2.po +29 -0
  297. data/samples/po/pt_BR/hello_glade2.po +29 -0
  298. data/samples/po/pt_BR/hello_gtk.po +21 -0
  299. data/samples/po/pt_BR/hello_noop.po +25 -0
  300. data/samples/po/pt_BR/hello_plural.po +23 -0
  301. data/samples/po/pt_BR/hello_tk.po +21 -0
  302. data/samples/po/ru/hello.po +22 -0
  303. data/samples/po/ru/hello2.po +30 -0
  304. data/samples/po/ru/hello_glade2.po +30 -0
  305. data/samples/po/ru/hello_gtk.po +22 -0
  306. data/samples/po/ru/hello_noop.po +26 -0
  307. data/samples/po/ru/hello_plural.po +28 -0
  308. data/samples/po/ru/hello_tk.po +22 -0
  309. data/samples/po/sr/hello.po +22 -0
  310. data/samples/po/sr/hello2.po +30 -0
  311. data/samples/po/sr/hello_glade2.po +32 -0
  312. data/samples/po/sr/hello_gtk.po +22 -0
  313. data/samples/po/sr/hello_noop.po +26 -0
  314. data/samples/po/sr/hello_plural.po +26 -0
  315. data/samples/po/sr/hello_tk.po +24 -0
  316. data/samples/po/sv/hello.po +20 -0
  317. data/samples/po/sv/hello2.po +28 -0
  318. data/samples/po/sv/hello_glade2.po +28 -0
  319. data/samples/po/sv/hello_gtk.po +20 -0
  320. data/samples/po/sv/hello_noop.po +24 -0
  321. data/samples/po/sv/hello_plural.po +23 -0
  322. data/samples/po/sv/hello_tk.po +20 -0
  323. data/samples/po/test.rb +11 -0
  324. data/samples/po/ua/hello.po +22 -0
  325. data/samples/po/ua/hello2.po +30 -0
  326. data/samples/po/ua/hello_glade2.po +34 -0
  327. data/samples/po/ua/hello_gtk.po +22 -0
  328. data/samples/po/ua/hello_noop.po +26 -0
  329. data/samples/po/ua/hello_plural.po +29 -0
  330. data/samples/po/ua/hello_tk.po +26 -0
  331. data/samples/po/vi/hello.po +23 -0
  332. data/samples/po/vi/hello2.po +31 -0
  333. data/samples/po/vi/hello_glade2.po +38 -0
  334. data/samples/po/vi/hello_gtk.po +23 -0
  335. data/samples/po/vi/hello_noop.po +27 -0
  336. data/samples/po/vi/hello_plural.po +26 -0
  337. data/samples/po/vi/hello_tk.po +24 -0
  338. data/samples/po/zh/hello.po +23 -0
  339. data/samples/po/zh/hello2.po +31 -0
  340. data/samples/po/zh/hello_glade2.po +31 -0
  341. data/samples/po/zh/hello_gtk.po +23 -0
  342. data/samples/po/zh/hello_noop.po +27 -0
  343. data/samples/po/zh/hello_plural.po +25 -0
  344. data/samples/po/zh/hello_tk.po +23 -0
  345. data/samples/po/zh_TW/hello.po +26 -0
  346. data/samples/po/zh_TW/hello2.po +34 -0
  347. data/samples/po/zh_TW/hello_glade2.po +40 -0
  348. data/samples/po/zh_TW/hello_gtk.po +25 -0
  349. data/samples/po/zh_TW/hello_noop.po +30 -0
  350. data/samples/po/zh_TW/hello_plural.po +28 -0
  351. data/samples/po/zh_TW/hello_tk.po +26 -0
  352. data/src/poparser.ry +217 -0
  353. data/test/README +1 -0
  354. data/test/Rakefile +17 -0
  355. data/test/po/cr/plural.po +23 -0
  356. data/test/po/da/plural.po +22 -0
  357. data/test/po/da/plural_error.po +22 -0
  358. data/test/po/fr/plural.po +28 -0
  359. data/test/po/fr/plural_error.po +20 -0
  360. data/test/po/fr/test1.po +23 -0
  361. data/test/po/fr/test2.po +19 -0
  362. data/test/po/ir/plural.po +23 -0
  363. data/test/po/ja/npgettext.po +46 -0
  364. data/test/po/ja/nsgettext.po +65 -0
  365. data/test/po/ja/pgettext.po +41 -0
  366. data/test/po/ja/plural.po +28 -0
  367. data/test/po/ja/plural_error.po +20 -0
  368. data/test/po/ja/rubyparser.po +43 -0
  369. data/test/po/ja/sgettext.po +47 -0
  370. data/test/po/ja/test1.po +23 -0
  371. data/test/po/ja/test2.po +19 -0
  372. data/test/po/la/plural.po +23 -0
  373. data/test/po/la/plural_error.po +21 -0
  374. data/test/po/li/plural.po +23 -0
  375. data/test/po/po/plural.po +23 -0
  376. data/test/po/sl/plural.po +24 -0
  377. data/test/test_class_info.rb +83 -0
  378. data/test/test_gettext.rb +311 -0
  379. data/test/test_parser.rb +158 -0
  380. data/test/test_string.rb +65 -0
  381. data/test/test_textdomain_multi.rb +80 -0
  382. data/test/test_textdomain_toplevel.rb +42 -0
  383. data/test/testlib/N_.rb +66 -0
  384. data/test/testlib/erb.rhtml +15 -0
  385. data/test/testlib/erb.rxml +16 -0
  386. data/test/testlib/gettext.rb +113 -0
  387. data/test/testlib/gladeparser.glade +183 -0
  388. data/test/testlib/helper.rb +11 -0
  389. data/test/testlib/multi_textdomain.rb +131 -0
  390. data/test/testlib/ngettext.rb +79 -0
  391. data/test/testlib/npgettext.rb +31 -0
  392. data/test/testlib/nsgettext.rb +42 -0
  393. data/test/testlib/pgettext.rb +36 -0
  394. data/test/testlib/sgettext.rb +46 -0
  395. data/test/testlib/simple.rb +14 -0
  396. metadata +496 -0
@@ -0,0 +1,43 @@
1
+ Sample script for CGI/ERB and Ruby-GetText-Package.
2
+
3
+ At first, create mo file once:
4
+ $ rake
5
+
6
+ # You need 'rake' to execute it.
7
+
8
+ (One click ruby installer for Windonws user only)
9
+ Edit ruby.bat to fit your environment. If you don't have GTK,
10
+ removes 'set PATH=c:\gtk\bin' line.
11
+
12
+ Then run the http server.
13
+ $ ruby http.rb
14
+
15
+ Access the http server from WWW browser:
16
+
17
+ http://localhost:10080/
18
+ http://localhost:10080/1
19
+ http://localhost:10080/2
20
+
21
+ or
22
+
23
+ If you want to set locale(lang) forcely, then:
24
+
25
+ http://localhost:10080/?lang=ja
26
+ http://localhost:10080/1?lang=ja
27
+ http://localhost:10080/2?lang=ja
28
+ #ja is a target locale in this sample.
29
+
30
+ http.rb - an http server for samples using WEBrick
31
+ Rakefile - a Rakefile to create mo files from po files.
32
+
33
+ index.cgi - a sample menu (CGI sample) - textdomain: main
34
+ cookie.cgi - a sample menu (CGI sample) - textdomain: main
35
+ helloerb1.cgi - an ERB/CGI sample (UTF-8) - textdomain: helloerb1
36
+ helloerb2.cgi - an ERB/CGI sample (Auto-Detect) - textdomain: helloerb2
37
+
38
+ helloerb.rhtml - an ERB file (used from both of helloerb1/helloerb2)
39
+ other.rhtml - an ERB file (used from helloerb1)
40
+
41
+ hellolib.rb - a smple library called from helloerb.rhtml which have an
42
+ independent textdomain: hellolib
43
+ ruby.bat - Execute ruby interpreter on Win32.
@@ -0,0 +1,27 @@
1
+ task :default => [:makemo]
2
+
3
+ require 'gettext/tools'
4
+
5
+ desc "Create *.mo from *.po"
6
+ task :makemo do
7
+ GetText.create_mofiles(:mo_root => "locale")
8
+ end
9
+
10
+ desc "Update pot/po files to match new version."
11
+ task :updatepo do
12
+ =begin
13
+ GetText.update_pofiles("helloerb1",
14
+ ["helloerb1.cgi", "helloerb.rhtml", "other.rhtml"],
15
+ "cgi-sample 1.1.1")
16
+ GetText.update_pofiles("helloerb2",
17
+ ["helloerb2.cgi", "helloerb.rhtml"],
18
+ "cgi-sample 1.1.1")
19
+ GetText.update_pofiles("hellolib",
20
+ ["hellolib.rb"],
21
+ "cgi-sample 1.1.1")
22
+ =end
23
+ GetText.update_pofiles("main",
24
+ ["index.cgi", "cookie.cgi"],
25
+ "cgi-sample 1.1.1")
26
+ end
27
+
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env ruby
2
+ =begin
3
+ cookie.cgi - Set a selected locale to the cookie of WWW Browser.
4
+
5
+ Set UTF-8 forcely as output charset.
6
+
7
+ Recommanded to set UTF-8 forcely because some web browser
8
+ doesn't send HTTP_ACCEPT_CHARSET correctly.
9
+
10
+ Copyright (C) 2005 Masao Mutoh
11
+
12
+ You may redistribute it and/or modify it under the same
13
+ license terms as Ruby.
14
+ =end
15
+ $:.insert(0, "../../lib")
16
+
17
+ # gettext/cgi support CGI.
18
+ begin
19
+ require 'rubygems'
20
+ rescue LoadError
21
+ end
22
+
23
+ require 'gettext/cgi'
24
+
25
+ include GetText
26
+
27
+ # Configure GetText first.
28
+ set_output_charset("UTF-8")
29
+ set_cgi(CGI.new)
30
+ bindtextdomain("main", "locale")
31
+
32
+ lang = GetText.cgi['lang']
33
+ lang = "en" unless lang.size > 0
34
+
35
+ #
36
+ # CGI part
37
+ #
38
+ print "Set-Cookie:lang=#{lang}\n"
39
+ print "Content-type:text/html; charset=UTF-8\n\n"
40
+
41
+ puts %Q[
42
+ <head>
43
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8">
44
+ <link rel="stylesheet" type="text/css" href="gettext.css" media="all">
45
+ <title>]
46
+ puts _("Sample script for CGI/ERB and Ruby-GetText-Package")
47
+ puts %Q[</title>
48
+ </head>
49
+ <body>
50
+ ]
51
+
52
+ puts "<h1>" + _("Set [%s] as the cookie of your WWW Browser.") % lang + "</h1>"
53
+
54
+ puts %Q[</h1>
55
+ <p><a href="/">]
56
+ puts _("Back")
57
+ puts %Q[</a></p>
58
+ <div style="text-align:right">
59
+ <p>Copyright (C) 2005 Masao Mutoh</p>
60
+ </div>
61
+ </body>
62
+ </html>
63
+ ]
64
+
@@ -0,0 +1,116 @@
1
+ /*
2
+ CSS for Ruby-GetText-Package
3
+ by Masao Mutoh.
4
+ */
5
+
6
+ body {
7
+ margin: 0px;
8
+ padding: 0px;
9
+ color: #000;
10
+ background-color: #fff;
11
+ font-size: 90%;
12
+ font-family: Times, Sans-Serif;
13
+ line-height: 1.5em;
14
+ }
15
+
16
+ h1 {
17
+ color: #002288;
18
+ text-align: left;
19
+ clear: both;
20
+ padding:0.4em;
21
+ font-weight: bold;
22
+ font-size: 1.8em;
23
+ padding-left:0.5em;
24
+ padding-right:10px;
25
+ margin-top: 10px;
26
+ margin-left: 20px;
27
+ margin-bottom:1em;
28
+ margin-right:5px;
29
+ border: solid thin;
30
+ border-left: solid;
31
+ border-color: #9999ff;
32
+ border-top-width: 0px;
33
+ border-right-width: 0px;
34
+ border-bottom-width: 1px;
35
+ border-left-width: 15px;
36
+ }
37
+ h2 {
38
+ margin: 0px;
39
+ font-size: large;
40
+ font-weight: bold;
41
+ font-size: 1.4em;
42
+ padding: 0.3em;
43
+ padding-left:0.5em;
44
+ padding-right:10px;
45
+ margin-top: 1em;
46
+ margin-left: 1.5em;
47
+ margin-right: 10px;
48
+ margin-bottom:0.8em;
49
+ border: solid thin;
50
+ border-left: solid;
51
+ border-color: #9999ff;
52
+ border-top-width: 0px;
53
+ border-right-width: 0px;
54
+ border-bottom-width: 1px;
55
+ border-left-width: 15px;
56
+
57
+ }
58
+
59
+ h3 {
60
+ margin:1em;
61
+ margin-bottom: 0.5em;
62
+ margin-top: 1.5em;
63
+ margin-left: 2em;
64
+ margin-right: 24px;
65
+ padding: 0.1em;
66
+ padding-top: 0;
67
+ padding-left: 0.7em;
68
+ font-size: 1.2em;
69
+ border-style: dashed;
70
+ border-width: 0px 0px 1px 1px;
71
+ border-color: #ddddff;
72
+ }
73
+
74
+ p {
75
+ padding-left: 1em;
76
+ padding-right: 1em;
77
+ margin-top: 0px;
78
+ margin-left: 1.5em;
79
+ margin-right: 1em;
80
+ margin-bottom: 0.5em;
81
+ }
82
+
83
+ ol, ul {
84
+ margin-top: 0.2em;
85
+ margin-left: 3em;
86
+ padding-left: 1.5em;
87
+ }
88
+
89
+ li {
90
+ margin-top: 0.2em;
91
+ margin-left: 0em;
92
+ padding-left: 0em;
93
+ line-height: 1.2em;
94
+ }
95
+
96
+ .locale {
97
+ margin: 2em;
98
+ padding: 1em;
99
+ border-style: solid;
100
+ border-width: 1px 1px 1px 1px;
101
+ border-color: #ddddff;
102
+ }
103
+
104
+ pre {
105
+ margin: 2em;
106
+ padding: 1em;
107
+ border-style: solid;
108
+ border-width: 1px 1px 1px 1px;
109
+ border-color: #ddddff;
110
+ background-color: #eeffee;
111
+ }
112
+
113
+ .copyright {
114
+ text-align: right;
115
+ padding: 2em;
116
+ }
@@ -0,0 +1,28 @@
1
+ <html>
2
+ <head>
3
+ <meta http-equiv="content-type" content="text/html; charset=<%= GetText.output_charset %>">
4
+ <link rel="stylesheet" type="text/css" href="gettext.css" media="all">
5
+ <title><%= _("Sample script for CGI/ERB and Ruby-GetText-Package") %></title>
6
+ </head>
7
+ <body>
8
+ <%
9
+ require 'hellolib'
10
+ require 'cgi'
11
+ lib = HelloLib.new
12
+ %>
13
+ <h1><%= _("Hello World") %> - <%= @domainname %></h1>
14
+ <p><%= description %></p>
15
+ <div class="locale">
16
+ <p><%= _("locale") %>: <%= Locale.get %></p>
17
+ <p><%= _("output_charset") %>: <%= GetText.output_charset %></p>
18
+ <p><%= _("QUERY_STRING") %>: <%= cgi.query_string %></p>
19
+ </div>
20
+ <p><%= _("Call a library method which has another textdomain.") %></p>
21
+ <div class="locale"><%= lib.hello %></div>
22
+ <p><a href="/"><%= _("Back") %></a></p>
23
+
24
+ <div class="copyright">
25
+ Copyright (C) 2005 Masao Mutoh
26
+ </div>
27
+ </body>
28
+ </html>
@@ -0,0 +1,58 @@
1
+ #!/usr/bin/env ruby
2
+ =begin
3
+ helloerb1.cgi - Sample script for CGI/ERB
4
+
5
+ Set UTF-8 forcely as output charset.
6
+
7
+ Recommanded to set UTF-8 forcely because some web browser
8
+ doesn't send HTTP_ACCEPT_CHARSET correctly.
9
+
10
+ Copyright (C) 2005-2009 Masao Mutoh
11
+
12
+ You may redistribute it and/or modify it under the same
13
+ license terms as Ruby.
14
+ =end
15
+ $:.insert(0, "../../lib")
16
+
17
+ begin
18
+ require 'rubygems'
19
+ rescue LoadError
20
+ end
21
+
22
+ require 'erb'
23
+ require 'gettext/cgi'
24
+
25
+ class SimpleContainer1
26
+ include GetText
27
+
28
+
29
+ def initialize(domainname, domainpath, cgi)
30
+ set_cgi(cgi)
31
+ bindtextdomain(domainname, :path => domainpath)
32
+ @domainname = domainname
33
+ end
34
+
35
+ def description
36
+ _("Sample script for CGI/ERB (UTF-8).")
37
+ end
38
+
39
+ def to_html(path)
40
+ erb = ERB.new(IO.read(path)).src
41
+ eval(erb, binding)
42
+ end
43
+ end
44
+
45
+
46
+ GetText.output_charset = "UTF-8"
47
+
48
+ print "Content-type:text/html; charset=UTF-8\n\n"
49
+
50
+ cgi = CGI.new
51
+
52
+ con = SimpleContainer1.new("helloerb1", "locale", cgi)
53
+
54
+ if GetText.cgi["other"] == "true"
55
+ print con.to_html("other.rhtml")
56
+ else
57
+ print con.to_html("helloerb.rhtml")
58
+ end
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env ruby
2
+ =begin
3
+ helloerb2.cgi - Sample script for CGI/ERB
4
+
5
+ Set locale/charset automaticaly.
6
+ (from HTTP_ACCEPT_LANGUAGE, HTTP_ACCEPT_CHARSET sended by web browser).
7
+
8
+ Recommanded to set UTF-8 forcely because some web browser
9
+ doesn't send HTTP_ACCEPT_CHARSET correctly.(See helloerb.cgi)
10
+
11
+ Copyright (C) 2005 Masao Mutoh
12
+
13
+ You may redistribute it and/or modify it under the same
14
+ license terms as Ruby.
15
+ =end
16
+ $:.insert(0, "../../lib")
17
+
18
+ begin
19
+ require 'rubygems'
20
+ rescue LoadError
21
+ end
22
+
23
+ require 'gettext/cgi'
24
+ require 'erb'
25
+
26
+ class SimpleContainer2
27
+ include GetText
28
+
29
+ def initialize(domainname, domainpath)
30
+ bindtextdomain(domainname, :path => domainpath)
31
+ @domainname = domainname
32
+ end
33
+
34
+ def description
35
+ _("Sample script for CGI/ERB (Auto-Detect charset).")
36
+ end
37
+
38
+ def to_html(path)
39
+ erb = ERB.new(IO.read(path)).src
40
+ eval(erb, binding)
41
+ end
42
+ end
43
+
44
+ cgi = CGI.new
45
+ GetText.set_cgi(cgi)
46
+
47
+ print "Content-type:text/html; charset=#{Locale.charset}\n\n"
48
+
49
+ con = SimpleContainer2.new("helloerb2", "locale")
50
+
51
+ print con.to_html("helloerb.rhtml")
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/ruby
2
+ # hellolib.rb
3
+ #
4
+ # Copyright (C) 2005-2009 Masao Mutoh
5
+ #
6
+ # This file is distributed under the same
7
+ # license as Ruby-GetText-Package.
8
+ #
9
+
10
+ require 'gettext'
11
+
12
+ class HelloLib
13
+ include GetText
14
+ bindtextdomain("hellolib", "locale")
15
+ def hello
16
+ _("This message is from hellolib.")
17
+ end
18
+ end
@@ -0,0 +1,49 @@
1
+ #! /usr/bin/env ruby
2
+ =begin
3
+ http.rb - An WebServer for helloerb sample.
4
+
5
+ Copyright (C) 2005-2009 Masao Mutoh
6
+
7
+ You may redistribute it and/or modify it under the same
8
+ license terms as Ruby or LGPL.
9
+ =end
10
+
11
+ require 'webrick'
12
+ require 'cgi'
13
+ require 'rbconfig'
14
+
15
+ interpreter = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name']) +
16
+ Config::CONFIG['EXEEXT']
17
+
18
+ srv = WEBrick::HTTPServer.new({:BindAddress => '127.0.0.1',
19
+ :Logger => WEBrick::Log::new($stderr, WEBrick::Log::DEBUG),
20
+ :CGIInterpreter => interpreter,
21
+ # :CGIInterpreter => "ruby -d",
22
+ :Port => 10080})
23
+
24
+ ['INT', 'TERM'].each { |signal|
25
+ trap(signal){ srv.shutdown}
26
+ }
27
+
28
+ srv.mount("/", WEBrick::HTTPServlet::FileHandler, File.expand_path('.'))
29
+
30
+ srv.mount_proc("/src/") do |req, res|
31
+ res.header["Content-Type"] = "text/html; charset=UTF-8"
32
+ if req.query_string
33
+ file = File.open(req.query_string).read
34
+ res.body = %Q[<html>
35
+ <head>
36
+ <title>View a source code</title>
37
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8">
38
+ <link rel="stylesheet" type="text/css" href="/gettext.css" media="all">
39
+ </head>
40
+ <body><h1>#{req.query_string}</h1>
41
+ <pre>#{CGI.escapeHTML(file)}</pre>
42
+ <p><a href="/">Back</a></p>
43
+ </body>
44
+ </html>
45
+ ]
46
+ end
47
+ end
48
+
49
+ srv.start
@@ -0,0 +1,111 @@
1
+ #!/usr/bin/env ruby
2
+ =begin
3
+ hello.cgi - Sample script for CGI
4
+
5
+ Set UTF-8 forcely as output charset.
6
+
7
+ Recommanded to set UTF-8 forcely because some web browser
8
+ doesn't send HTTP_ACCEPT_CHARSET correctly.
9
+
10
+ Copyright (C) 2005 Masao Mutoh
11
+
12
+ You may redistribute it and/or modify it under the same
13
+ license terms as Ruby.
14
+ =end
15
+ $:.insert(0, "../../lib")
16
+
17
+ # gettext/cgi support CGI.
18
+ begin
19
+ require 'rubygems'
20
+ rescue LoadError
21
+ end
22
+
23
+ require 'gettext/cgi'
24
+
25
+ include GetText
26
+ set_cgi(CGI.new)
27
+
28
+ print "Content-type:text/html; charset=UTF-8\n\n"
29
+
30
+ # Configure GetText first.
31
+ set_output_charset("UTF-8")
32
+ bindtextdomain("main", "locale")
33
+
34
+ langs = ["en"] + Dir.glob("locale/*").collect{|item| File.basename(item)}
35
+ langs.sort!
36
+
37
+ urls = [
38
+ ["helloerb1.cgi", N_("an ERB/CGI sample (UTF-8).")],
39
+ ["helloerb1.cgi?other=true", N_("an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 but has a different rhtml file.")],
40
+ ["helloerb2.cgi", N_("an ERB/CGI sample (Auto-Detect charset).")]
41
+ ]
42
+
43
+
44
+ #
45
+ # CGI part
46
+ #
47
+
48
+ puts %Q[<html><head>
49
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8">
50
+ <link rel="stylesheet" type="text/css" href="gettext.css" media="all">
51
+ <title>]
52
+ puts _("Sample script for CGI/ERB and Ruby-GetText-Package")
53
+ puts "</title>
54
+ </head>
55
+ <body>
56
+ <h1>"
57
+ puts _("Ruby-GetText CGI sample scripts")
58
+ puts "</h1>"
59
+ puts "<p>" + _("Supported Locales:") + "[#{langs.join(", ")}]</p>"
60
+ puts "<h2>" + _("Auto-Detect a locale from the WWW browser") + "</h2>"
61
+ puts "<ol>"
62
+
63
+ urls.each do |url, desc|
64
+ puts "<li><a href=\"/#{url}\">#{url}</a><br/>" + _(desc) + "</a></li>"
65
+ end
66
+ puts "</ol>"
67
+
68
+ puts "<h2>" + _('Set locale as a "lang" parameter') + "</h2>"
69
+
70
+ langs.each do |lang|
71
+ puts "<h3>[#{lang}]</h3>"
72
+ puts "<ol>"
73
+ urls.each do |url, desc|
74
+ if /\?other/ =~ url
75
+ url += "&lang=" + lang
76
+ else
77
+ url += "?lang=" + lang
78
+ end
79
+ puts "<li><a href=\"#{url}\">#{CGI.escapeHTML(url)}</a><br/>" + _(desc) + "</li>"
80
+ end
81
+ puts "</ol>"
82
+ end
83
+
84
+ puts "<h2>" + _('Set "lang" to cookie.') + "</h2>"
85
+ puts "<p>" + _('Click one of the link below, and then click "Auto-Detect a locale from the WWW browser" samples.') + "</p>"
86
+ puts "<ol>"
87
+
88
+ langs.each do |lang|
89
+ url = "cookie.cgi?lang=" + lang
90
+ puts "<li><a href=\"#{url}\">#{CGI.escapeHTML(url)}</a> [#{lang}]</li>"
91
+ end
92
+
93
+ puts "</ol>"
94
+ puts "<h2>" + _("Source codes") + "</h2>"
95
+ puts "<ol>"
96
+
97
+ Dir.glob("*cgi\0*rb\0*rhtml)").sort.each do |src|
98
+ unless /http.rb|makemo.rb/ =~ src
99
+ puts %Q[<li><a href="/src/?#{src}">#{src}</a></li>]
100
+ end
101
+ end
102
+ puts %Q[</ol>
103
+ <hr/>
104
+ <div class="copyright">
105
+ <p>] + _("index.cgi is also a Ruby-GetText sample script using CGI(not ERB).")+ %Q[</p>
106
+ <p>Copyright (C) 2005-2008 Masao Mutoh</p>
107
+ </div>
108
+ </body>
109
+ </html>
110
+ ]
111
+
@@ -0,0 +1,20 @@
1
+ <html>
2
+ <head>
3
+ <meta http-equiv="content-type" content="text/html; charset=<%= GetText.output_charset %>">
4
+ <link rel="stylesheet" type="text/css" href="gettext.css" media="all">
5
+ <title><%= _("Sample script for CGI/ERB and Ruby-GetText-Package") %></title>
6
+ </head>
7
+ <body>
8
+ <h1><%= _("Another sample") %> - <%= @domainname %></h1>
9
+ <p><%= _("This sample(other.rhtml) is the another ERB file of helloerb1.cgi.") %></p>
10
+ <div class="locale">
11
+ <p><%= _("locale") %>: <%= Locale.get %></p>
12
+ <p><%= _("output_charset") %>: <%= GetText.output_charset %></p>
13
+ <p><%= _("QUERY_STRING") %>: <%= CGI.escapeHTML(cgi.query_string) %></p>
14
+ </div>
15
+ <p><a href="/"><%= _("Back") %></a></p>
16
+ <div class="copyright">
17
+ Copyright (C) 2005 Masao Mutoh
18
+ </div>
19
+ </body>
20
+ </html>
@@ -0,0 +1,59 @@
1
+ # CGI/ERB sample for Ruby-GetText-Package.
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
+ # Georgi Stoimenov <georgistoimenov@abv.bg>, 2008
8
+ #
9
+ msgid ""
10
+ msgstr ""
11
+ "Project-Id-Version: cgi-sample 1.1.1\n"
12
+ "POT-Creation-Date: 2006-01-07 14:48+0900\n"
13
+ "PO-Revision-Date: 2005-04-23 12:44+0900\n"
14
+ "Last-Translator: Sava Chankov <sava.chankov@gmail.com>\n"
15
+ "Language-Team: Bulgarian <ruby-on-rails-bulgaria@googlegroups.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);\n"
20
+
21
+ #: helloerb1.cgi:32
22
+ msgid "Sample script for CGI/ERB (UTF-8)."
23
+ msgstr "Примерен CGI/ERB скрипт (UTF-8)."
24
+
25
+ #: helloerb.rhtml:5 other.rhtml:5
26
+ msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
27
+ msgstr "Примерен скрипт, ползващ CGI/ERB и Ruby-GetText-Package"
28
+
29
+ #: helloerb.rhtml:12
30
+ msgid "Hello World"
31
+ msgstr "Гепи копеле"
32
+
33
+ #: helloerb.rhtml:15 other.rhtml:11
34
+ msgid "locale"
35
+ msgstr "локал"
36
+
37
+ #: helloerb.rhtml:16 other.rhtml:12
38
+ msgid "output_charset"
39
+ msgstr "изходно_кодиране"
40
+
41
+ #: helloerb.rhtml:17 other.rhtml:13
42
+ msgid "QUERY_STRING"
43
+ msgstr "НИЗ_С_ПАРАМЕТРИ"
44
+
45
+ #: helloerb.rhtml:19
46
+ msgid "Call a library method which has another textdomain."
47
+ msgstr "Извикване на метод от библиотеката, който принадлежи на друга текстова област"
48
+
49
+ #: helloerb.rhtml:21 other.rhtml:15
50
+ msgid "Back"
51
+ msgstr "Назад"
52
+
53
+ #: other.rhtml:8
54
+ msgid "Another sample"
55
+ msgstr "Друг пример"
56
+
57
+ #: other.rhtml:9
58
+ msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
59
+ msgstr "Този пример (other.rhtml) е другия ERB файл от helloerb1.cgi."