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,37 @@
1
+ =begin
2
+ utils.rb - Utility functions
3
+
4
+ Copyright (C) 2005,2006 Masao Mutoh
5
+
6
+ You may redistribute it and/or modify it under the same
7
+ license terms as Ruby or LGPL.
8
+ =end
9
+
10
+ require 'gettext/tools'
11
+
12
+ warn "'gettext/utils.rb' is deprecated. Use gettext/tools.rb."
13
+
14
+ module GetText
15
+
16
+ alias :create_mofiles_org :create_mofiles #:nodoc:
17
+ alias :update_pofiles_org :update_pofiles #:nodoc:
18
+
19
+
20
+ # Deprecated. Use gettext/tools instead.
21
+ def create_mofiles(verbose = false,
22
+ podir = "./po", targetdir = "./data/locale",
23
+ targetpath_rule = "%s/LC_MESSAGES") # :nodoc:
24
+ warn "'gettext/utils.rb' is deprecated. Use gettext/tools.rb."
25
+ create_mofiles_org(:verbose => verbose,
26
+ :po_root => podir,
27
+ :mo_root => targetdir,
28
+ :mo_root_rule => targetpath_rule)
29
+ end
30
+
31
+ # Deprecated. Use gettext/tools instead.
32
+ def update_pofiles(textdomain, files, app_version, po_root = "po", refpot = "tmp.pot") # :nodoc:
33
+ warn "'gettext/utils.rb' is deprecated. Use gettext/tools.rb."
34
+ options = {:po_root => po_root}
35
+ update_pofiles_org(textdomain, files, app_version, options)
36
+ end
37
+ end
@@ -0,0 +1,12 @@
1
+ #! /usr/bin/ruby
2
+ =begin
3
+ version - version information of Ruby-GetText-Package
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
+ module GetText
11
+ VERSION = "2.1.0"
12
+ end
data/lib/gettext.rb ADDED
@@ -0,0 +1,310 @@
1
+ =begin
2
+ gettext.rb - GetText module
3
+
4
+ Copyright (C) 2001-2009 Masao Mutoh
5
+ Copyright (C) 2001-2003 Masahiro Sakai
6
+
7
+ Masao Mutoh <mutomasa at gmail.com>
8
+ Masahiro Sakai <s01397ms@sfc.keio.ac.jp>
9
+
10
+ You may redistribute it and/or modify it under the same
11
+ license terms as Ruby or LGPL.
12
+ =end
13
+
14
+ if Object.constants.include? "Gem"
15
+ begin
16
+ begin
17
+ gem 'locale', '>=2.0.4'
18
+ rescue Gem::LoadError
19
+ end
20
+ rescue NoMethodError
21
+ else LoadError
22
+ end
23
+ end
24
+
25
+ require 'locale'
26
+ raise "Install locale as gem or uninstall old gettext" unless Locale.respond_to? :candidates
27
+
28
+ require 'gettext/version'
29
+ require 'gettext/runtime/textdomain_manager'
30
+
31
+ module GetText
32
+ # If the textdomain isn't bound when calling GetText.textdomain, this error is raised.
33
+ class NoboundTextDomainError < RuntimeError
34
+ def initialize(domainname)
35
+ @domainname = domainname
36
+ end
37
+ def message
38
+ "#{@domainname} is not bound."
39
+ end
40
+ end
41
+
42
+ extend self
43
+
44
+ def self.included(mod) #:nodoc:
45
+ mod.extend self
46
+ end
47
+
48
+ # bindtextdomain(domainname, options = {})
49
+ #
50
+ # Bind a textdomain(%{path}/%{locale}/LC_MESSAGES/%{domainname}.mo) to
51
+ # your program.
52
+ # Normally, the texdomain scope becomes the class/module(and parent
53
+ # classes/included modules).
54
+ #
55
+ # * domainname: the textdomain name.
56
+ # * options: options as an Hash.
57
+ # * :path - the path to the mo-files. When the value is nil, it will search default paths such as
58
+ # /usr/share/locale, /usr/local/share/locale)
59
+ # * :output_charset - The output charset. Same with GetText.set_output_charset. Usually, L10n
60
+ # library doesn't use this option. Application may use this once.
61
+ # * Returns: the GetText::TextDomainManager.
62
+ #
63
+ def bindtextdomain(domainname, *options)
64
+ bindtextdomain_to(self, domainname, *options)
65
+ end
66
+
67
+ # Includes GetText module and bind a textdomain to a class.
68
+ # * klass: the target ruby class.
69
+ # * domainname: the textdomain name.
70
+ # * options: options as an Hash. See GetText.bindtextdomain.
71
+ def bindtextdomain_to(klass, domainname, *options)
72
+ if options[0].kind_of? Hash
73
+ opts = options[0]
74
+ else
75
+ # for backward compatibility.
76
+ opts = {}
77
+ opts[:path] = options[0] if options[0]
78
+ opts[:output_charset] = options[2] if options[2]
79
+ end
80
+ unless (klass.kind_of? GetText or klass.include? GetText)
81
+ klass.__send__(:include, GetText)
82
+ end
83
+ TextDomainManager.bind_to(klass, domainname, opts)
84
+ end
85
+
86
+ # Binds a existed textdomain to your program.
87
+ # This is the same function with GetText.bindtextdomain but simpler(and faster) than bindtextdomain.
88
+ # Note that you need to call GetText.bindtextdomain first. If the domainname hasn't bound yet,
89
+ # raises GetText::NoboundTextDomainError.
90
+ # * domainname: a textdomain name.
91
+ # * Returns: the GetText::TextDomainManager.
92
+ def textdomain(domainname) #:nodoc:
93
+ textdomain_to(self, domainname)
94
+ end
95
+
96
+ # Includes GetText module and bind an exsited textdomain to a class.
97
+ # See textdomain for more detail.
98
+ # * klass: the target ruby class.
99
+ # * domainname: the textdomain name.
100
+
101
+ def textdomain_to(klass, domainname) #:nodoc:
102
+ domain = TextDomainManager.textdomain_pool(domainname)
103
+ raise NoboundTextDomainError.new(domainname) unless domain
104
+ bindtextdomain_to(klass, domainname)
105
+ end
106
+
107
+ # call-seq:
108
+ # gettext(msgid)
109
+ # _(msgid)
110
+ #
111
+ # Translates msgid and return the message.
112
+ # This doesn't make a copy of the message.
113
+ #
114
+ # You need to use String#dup if you want to modify the return value
115
+ # with destructive functions.
116
+ #
117
+ # (e.g.1) _("Hello ").dup << "world"
118
+ #
119
+ # But e.g.1 should be rewrite to:
120
+ #
121
+ # (e.g.2) _("Hello %{val}") % {:val => "world"}
122
+ #
123
+ # Because the translator may want to change the position of "world".
124
+ #
125
+ # * msgid: the message id.
126
+ # * Returns: localized text by msgid. If there are not binded mo-file, it will return msgid.
127
+ def gettext(msgid)
128
+ TextDomainManager.translate_singluar_message(self, msgid)
129
+ end
130
+
131
+ # call-seq:
132
+ # sgettext(msgid, div = '|')
133
+ # s_(msgid, div = '|')
134
+ #
135
+ # Translates msgid, but if there are no localized text,
136
+ # it returns a last part of msgid separeted "div".
137
+ #
138
+ # * msgid: the message id.
139
+ # * separator: separator or nil for no seperation.
140
+ # * Returns: the localized text by msgid. If there are no localized text,
141
+ # it returns a last part of the msgid separeted by "seperator".
142
+ # <tt>Movie|Location -> Location</tt>
143
+ # See: http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC151
144
+ def sgettext(msgid, seperator = "|")
145
+ TextDomainManager.translate_singluar_message(self, msgid, seperator)
146
+ end
147
+
148
+ # call-seq:
149
+ # pgettext(msgctxt, msgid)
150
+ # p_(msgctxt, msgid)
151
+ #
152
+ # Translates msgid with msgctxt. This methods is similer with s_().
153
+ # e.g.) p_("File", "New") == s_("File|New")
154
+ # p_("File", "Open") == s_("File|Open")
155
+ #
156
+ # * msgctxt: the message context.
157
+ # * msgid: the message id.
158
+ # * Returns: the localized text by msgid. If there are no localized text,
159
+ # it returns msgid.
160
+ # See: http://www.gnu.org/software/autoconf/manual/gettext/Contexts.html
161
+ def pgettext(msgctxt, msgid)
162
+ TextDomainManager.translate_singluar_message(self, "#{msgctxt}\004#{msgid}", "\004")
163
+ end
164
+
165
+ # call-seq:
166
+ # ngettext(msgid, msgid_plural, n)
167
+ # ngettext(msgids, n) # msgids = [msgid, msgid_plural]
168
+ # n_(msgid, msgid_plural, n)
169
+ # n_(msgids, n) # msgids = [msgid, msgid_plural]
170
+ #
171
+ # The ngettext is similar to the gettext function as it finds the message catalogs in the same way.
172
+ # But it takes two extra arguments for plural form.
173
+ #
174
+ # * msgid: the singular form.
175
+ # * msgid_plural: the plural form.
176
+ # * n: a number used to determine the plural form.
177
+ # * Returns: the localized text which key is msgid_plural if n is plural(follow plural-rule) or msgid.
178
+ # "plural-rule" is defined in po-file.
179
+ def ngettext(msgid, msgid_plural, n = nil)
180
+ TextDomainManager.translate_plural_message(self, msgid, msgid_plural, n)
181
+ end
182
+
183
+ # call-seq:
184
+ # nsgettext(msgid, msgid_plural, n, div = "|")
185
+ # nsgettext(msgids, n, div = "|") # msgids = [msgid, msgid_plural]
186
+ # ns_(msgid, msgid_plural, n, div = "|")
187
+ # ns_(msgids, n, div = "|") # msgids = [msgid, msgid_plural]
188
+ #
189
+ # The nsgettext is similar to the ngettext.
190
+ # But if there are no localized text,
191
+ # it returns a last part of msgid separeted "div".
192
+ #
193
+ # * msgid: the singular form with "div". (e.g. "Special|An apple")
194
+ # * msgid_plural: the plural form. (e.g. "%{num} Apples")
195
+ # * n: a number used to determine the plural form.
196
+ # * Returns: the localized text which key is msgid_plural if n is plural(follow plural-rule) or msgid.
197
+ # "plural-rule" is defined in po-file.
198
+ def nsgettext(msgid, msgid_plural, n="|", seperator = "|")
199
+ TextDomainManager.translate_plural_message(self, msgid, msgid_plural, n, seperator)
200
+ end
201
+
202
+ # call-seq:
203
+ # npgettext(msgctxt, msgid, msgid_plural, n)
204
+ # npgettext(msgctxt, msgids, n) # msgids = [msgid, msgid_plural]
205
+ # np_(msgctxt, msgid, msgid_plural, n)
206
+ # np_(msgctxt, msgids, n) # msgids = [msgid, msgid_plural]
207
+ #
208
+ # The npgettext is similar to the nsgettext function.
209
+ # e.g.) np_("Special", "An apple", "%{num} Apples", num) == ns_("Special|An apple", "%{num} Apples", num)
210
+ # * msgctxt: the message context.
211
+ # * msgid: the singular form.
212
+ # * msgid_plural: the plural form.
213
+ # * n: a number used to determine the plural form.
214
+ # * Returns: the localized text which key is msgid_plural if n is plural(follow plural-rule) or msgid.
215
+ # "plural-rule" is defined in po-file.
216
+ def npgettext(msgctxt, msgids, arg2 = nil, arg3 = nil)
217
+ if msgids.kind_of?(Array)
218
+ msgid = msgids[0]
219
+ msgid_ctxt = "#{msgctxt}\004#{msgid}"
220
+ msgid_plural = msgids[1]
221
+ opt1 = arg2
222
+ opt2 = arg3
223
+ else
224
+ msgid = msgids
225
+ msgid_ctxt = "#{msgctxt}\004#{msgid}"
226
+ msgid_plural = arg2
227
+ opt1 = arg3
228
+ opt2 = nil
229
+ end
230
+
231
+ msgstr = TextDomainManager.translate_plural_message(self, msgid_ctxt, msgid_plural, opt1, opt2)
232
+ if msgstr == msgid_ctxt
233
+ msgid
234
+ else
235
+ msgstr
236
+ end
237
+ end
238
+
239
+ # makes dynamic translation messages readable for the gettext parser.
240
+ # <tt>_(fruit)</tt> cannot be understood by the gettext parser. To help the parser find all your translations,
241
+ # you can add <tt>fruit = N_("Apple")</tt> which does not translate, but tells the parser: "Apple" needs translation.
242
+ # * msgid: the message id.
243
+ # * Returns: msgid.
244
+ def N_(msgid)
245
+ msgid
246
+ end
247
+
248
+ # This is same function as N_ but for ngettext.
249
+ # * msgid: the message id.
250
+ # * msgid_plural: the plural message id.
251
+ # * Returns: msgid.
252
+ def Nn_(msgid, msgid_plural)
253
+ [msgid, msgid_plural]
254
+ end
255
+
256
+ # Sets charset(String) such as "euc-jp", "sjis", "CP932", "utf-8", ...
257
+ # You shouldn't use this in your own Libraries.
258
+ # * charset: an output_charset
259
+ # * Returns: self
260
+ def set_output_charset(charset)
261
+ TextDomainManager.output_charset = charset
262
+ self
263
+ end
264
+
265
+ # Gets the current output_charset which is set using GetText.set_output_charset.
266
+ # * Returns: output_charset.
267
+ def output_charset
268
+ TextDomainManager.output_charset
269
+ end
270
+
271
+ # Set the locale. This value forces the locale whole the programs.
272
+ # This method calls Locale.set_app_language_tags, Locale.default, Locale.current.
273
+ # Use Locale methods if you need to handle locales more flexible.
274
+ def set_locale(lang)
275
+ Locale.set_app_language_tags(lang)
276
+ Locale.default = lang
277
+ Locale.current = lang
278
+ end
279
+
280
+ # Set the locale to the current thread.
281
+ # Note that if #set_locale is set, this value is ignored.
282
+ # If you need, set_locale(nil); set_current_locale(lang)
283
+ def set_current_locale(lang)
284
+ Locale.current = lang
285
+ end
286
+
287
+ def locale
288
+ Locale.current[0]
289
+ end
290
+
291
+ alias :locale= :set_locale #:nodoc:
292
+ alias :current_locale= :set_current_locale #:nodoc:
293
+ alias :_ :gettext #:nodoc:
294
+ alias :n_ :ngettext #:nodoc:
295
+ alias :s_ :sgettext #:nodoc:
296
+ alias :ns_ :nsgettext #:nodoc:
297
+ alias :np_ :npgettext #:nodoc:
298
+
299
+ alias :output_charset= :set_output_charset #:nodoc:
300
+
301
+ unless defined? XX
302
+ # This is the workaround to conflict p_ methods with the xx("double x") library.
303
+ # http://rubyforge.org/projects/codeforpeople/
304
+ alias :p_ :pgettext #:nodoc:
305
+ end
306
+
307
+ # for backward compatibility
308
+ alias :set_locale_all :set_locale #:nodoc:
309
+ alias :setlocale :set_locale #:nodoc:
310
+ end
data/po/bg/rgettext.po ADDED
@@ -0,0 +1,134 @@
1
+ #
2
+ # a po-file for Ruby-GetText-Package
3
+ #
4
+ # Copyright (C) 2004-2006 Masao Mutoh
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: ruby-gettext 2.1.0\n"
12
+ "POT-Creation-Date: 2009-11-08 22:43+0900\n"
13
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\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
+ #: lib/gettext/tools/rmsgmerge.rb:402
22
+ msgid "Usage: %s def.po ref.pot [-o output.pot]"
23
+ msgstr "Употреба: %s def.po ref.pot [-o output.pot]"
24
+
25
+ #: lib/gettext/tools/rmsgmerge.rb:405
26
+ msgid ""
27
+ "Merges two Uniforum style .po files together. The def.po file is an existing "
28
+ "PO file with translations. The ref.pot file is the last created PO file with "
29
+ "up-to-date source references. ref.pot is generally created by rgettext."
30
+ msgstr ""
31
+ "Слива два Uniforum .pо файла. def.po е съществуващ PO файл с преводи. ref."
32
+ "pot е пресен PO файл с актуални референции към кода. ref.pot обикновено е "
33
+ "създаден от rgettext."
34
+
35
+ #: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
36
+ #: lib/gettext/tools/rmsgfmt.rb:50
37
+ msgid "Specific options:"
38
+ msgstr "Специфични опции:"
39
+
40
+ #: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
41
+ #: lib/gettext/tools/rmsgfmt.rb:52
42
+ msgid "write output to specified file"
43
+ msgstr "изходът беше записан в зададения файл"
44
+
45
+ #: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
46
+ #: lib/gettext/tools/rmsgfmt.rb:56
47
+ msgid "display version information and exit"
48
+ msgstr "показване на версията и изход"
49
+
50
+ #: lib/gettext/tools/rmsgmerge.rb:446
51
+ msgid "definition po is not given."
52
+ msgstr "съществуващия po не е зададен."
53
+
54
+ #: lib/gettext/tools/rmsgmerge.rb:448
55
+ msgid "reference pot is not given."
56
+ msgstr "pot с референциите не е зададен."
57
+
58
+ #: lib/gettext/tools/parser/glade.rb:73
59
+ msgid "`%{file}' is not glade-2.0 format."
60
+ msgstr "`%{file}' не е във формат glade-2.0."
61
+
62
+ #: lib/gettext/tools/rgettext.rb:40
63
+ msgid "'%{klass}' is ignored."
64
+ msgstr "'%{klass}' беше игнориран."
65
+
66
+ #: lib/gettext/tools/rgettext.rb:134
67
+ msgid "Error parsing %{path}"
68
+ msgstr ""
69
+
70
+ #: lib/gettext/tools/rgettext.rb:145
71
+ msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
72
+ msgstr "Употреба: %s input.rb [-r parser.rb] [-o output.pot] "
73
+
74
+ #: lib/gettext/tools/rgettext.rb:147
75
+ msgid "Extract translatable strings from given input files."
76
+ msgstr "Извличане на преводните низове от зададените файлове."
77
+
78
+ #: lib/gettext/tools/rgettext.rb:155
79
+ msgid "File '%s' already exists."
80
+ msgstr "Файлът '%s' съществува."
81
+
82
+ #: lib/gettext/tools/rgettext.rb:160
83
+ msgid "require the library before executing rgettext"
84
+ msgstr "заредете библиотеката с require преди да изпълните rgettext"
85
+
86
+ #: lib/gettext/tools/rgettext.rb:164
87
+ msgid "run in debugging mode"
88
+ msgstr "изпълнение в режим на дебъгване"
89
+
90
+ #: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
91
+ msgid "no input files"
92
+ msgstr "няма зададени файлове"
93
+
94
+ #: lib/gettext/tools/rmsgfmt.rb:46
95
+ msgid "Usage: %s input.po [-o output.mo]"
96
+ msgstr "Употреба: %s input.po [-o output.mo]"
97
+
98
+ #: lib/gettext/tools/rmsgfmt.rb:48
99
+ msgid "Generate binary message catalog from textual translation description."
100
+ msgstr "Генериране на двоични файлове с преводите от текстовите описания."
101
+
102
+ #: lib/gettext/tools.rb:68
103
+ msgid "Failed to merge with %{defpo}"
104
+ msgstr "Пропадна сливането с %{defpo}"
105
+
106
+ #: lib/gettext/tools.rb:69
107
+ msgid "New .pot was copied to %{failed_filename}"
108
+ msgstr "Новия .pot беше копиран като %{failed_filename}"
109
+
110
+ #: lib/gettext/tools.rb:70
111
+ msgid "Check these po/pot-files. It may have syntax errors or something wrong."
112
+ msgstr ""
113
+ "Проверете тези po/pot файлове. Може да имат синтактични грешки или нещо "
114
+ "друго."
115
+
116
+ #: lib/gettext/tools.rb:173
117
+ msgid ""
118
+ "`%{cmd}' can not be found. \n"
119
+ "Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
120
+ msgstr ""
121
+
122
+ #: lib/gettext/runtime/textdomain_manager.rb:147
123
+ msgid "3rd parmeter is wrong: value = %{number}"
124
+ msgstr "Третият параметър е грешен: value = %{number}"
125
+
126
+ #: src/poparser.ry:38 src/poparser.ry:55
127
+ msgid "Warning: fuzzy message was ignored.\n"
128
+ msgstr "Предупреждение: беше игнорирано неточно съобщение"
129
+
130
+ #: src/poparser.ry:148
131
+ msgid "Warning: obsolete msgid exists.\n"
132
+ msgstr ""
133
+ "Предупреждение: има несъществуващи вече msgid\n"
134
+ "."
data/po/bs/rgettext.po ADDED
@@ -0,0 +1,135 @@
1
+ # translation of rgettext.po to Bosnian
2
+ #
3
+ # a po-file for Ruby-GetText-Package
4
+ #
5
+ # Copyright (C) 2004-2006 Masao Mutoh
6
+ # This file is distributed under the same license as the Ruby-GetText-Package.
7
+ #
8
+ # Sanjin Sehic <saserr@gmail.com>, 2007.
9
+ msgid ""
10
+ msgstr ""
11
+ "Project-Id-Version: ruby-gettext 2.1.0\n"
12
+ "POT-Creation-Date: 2009-11-08 22:43+0900\n"
13
+ "PO-Revision-Date: 2007-03-17 16:19+0100\n"
14
+ "Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
15
+ "Language-Team: Bosnian <saserr@gmail.com>\n"
16
+ "MIME-Version: 1.0\n"
17
+ "Content-Type: text/plain; charset=UTF-8\n"
18
+ "Content-Transfer-Encoding: 8bit\n"
19
+ "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
20
+ "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
21
+ "X-Generator: KBabel 1.11.4\n"
22
+
23
+ #: lib/gettext/tools/rmsgmerge.rb:402
24
+ msgid "Usage: %s def.po ref.pot [-o output.pot]"
25
+ msgstr "Korištenje: %s def.po ref.pot [-o izlaz.pot]"
26
+
27
+ #: lib/gettext/tools/rmsgmerge.rb:405
28
+ msgid ""
29
+ "Merges two Uniforum style .po files together. The def.po file is an existing "
30
+ "PO file with translations. The ref.pot file is the last created PO file with "
31
+ "up-to-date source references. ref.pot is generally created by rgettext."
32
+ msgstr ""
33
+ "Spaja dvije Uniforum style .po datoteke skupa. def.po datoteka je već "
34
+ "postojeća PO datoteka sa prevodima. ref.pot je zadnja napravljena PO "
35
+ "datoteka sa najnovijim referencama koda. ref.pot je najčešće napravljen sa "
36
+ "rgettext."
37
+
38
+ #: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
39
+ #: lib/gettext/tools/rmsgfmt.rb:50
40
+ msgid "Specific options:"
41
+ msgstr "Specifične opcije:"
42
+
43
+ #: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
44
+ #: lib/gettext/tools/rmsgfmt.rb:52
45
+ msgid "write output to specified file"
46
+ msgstr "zapiši izlaz u specifičnu datoteku"
47
+
48
+ #: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
49
+ #: lib/gettext/tools/rmsgfmt.rb:56
50
+ msgid "display version information and exit"
51
+ msgstr "prikaži informaciju o verziji i završi"
52
+
53
+ #: lib/gettext/tools/rmsgmerge.rb:446
54
+ msgid "definition po is not given."
55
+ msgstr "definicijski po nije dat."
56
+
57
+ #: lib/gettext/tools/rmsgmerge.rb:448
58
+ msgid "reference pot is not given."
59
+ msgstr "referencni po nije dat."
60
+
61
+ #: lib/gettext/tools/parser/glade.rb:73
62
+ msgid "`%{file}' is not glade-2.0 format."
63
+ msgstr "'%{file}' nije glade-2.0 format."
64
+
65
+ #: lib/gettext/tools/rgettext.rb:40
66
+ msgid "'%{klass}' is ignored."
67
+ msgstr "%{klass} je ignorisan."
68
+
69
+ #: lib/gettext/tools/rgettext.rb:134
70
+ msgid "Error parsing %{path}"
71
+ msgstr ""
72
+
73
+ #: lib/gettext/tools/rgettext.rb:145
74
+ msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
75
+ msgstr "Korištenje: %s ulaz.rb [-r parser.rb] [-o izlaz.pot]"
76
+
77
+ #: lib/gettext/tools/rgettext.rb:147
78
+ msgid "Extract translatable strings from given input files."
79
+ msgstr "Izvadi niske za prevođenje iz date ulazne datoteke."
80
+
81
+ #: lib/gettext/tools/rgettext.rb:155
82
+ msgid "File '%s' already exists."
83
+ msgstr "Datoteka '%s' već postoji."
84
+
85
+ #: lib/gettext/tools/rgettext.rb:160
86
+ msgid "require the library before executing rgettext"
87
+ msgstr "zahtjevaj biblioteku prije izvršavanja rgettext-a"
88
+
89
+ #: lib/gettext/tools/rgettext.rb:164
90
+ msgid "run in debugging mode"
91
+ msgstr "pokreni u modu za nalaženje grešaka"
92
+
93
+ #: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
94
+ msgid "no input files"
95
+ msgstr "nema ulaznih datoteka"
96
+
97
+ #: lib/gettext/tools/rmsgfmt.rb:46
98
+ msgid "Usage: %s input.po [-o output.mo]"
99
+ msgstr "Korištenje: %s ulaz.po [-o izlaz.mo]"
100
+
101
+ #: lib/gettext/tools/rmsgfmt.rb:48
102
+ msgid "Generate binary message catalog from textual translation description."
103
+ msgstr "Generiši binarni katalog poruka iz tekstualnog opisa prevoda"
104
+
105
+ #: lib/gettext/tools.rb:68
106
+ #, fuzzy
107
+ msgid "Failed to merge with %{defpo}"
108
+ msgstr "Spajanje sa %{defpo} nije uspjelo - nastavljam dalje!"
109
+
110
+ #: lib/gettext/tools.rb:69
111
+ #, fuzzy
112
+ msgid "New .pot was copied to %{failed_filename}"
113
+ msgstr "Molim da provjerite novi .pot u %{failed_filename}"
114
+
115
+ #: lib/gettext/tools.rb:70
116
+ msgid "Check these po/pot-files. It may have syntax errors or something wrong."
117
+ msgstr ""
118
+
119
+ #: lib/gettext/tools.rb:173
120
+ msgid ""
121
+ "`%{cmd}' can not be found. \n"
122
+ "Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
123
+ msgstr ""
124
+
125
+ #: lib/gettext/runtime/textdomain_manager.rb:147
126
+ msgid "3rd parmeter is wrong: value = %{number}"
127
+ msgstr ""
128
+
129
+ #: src/poparser.ry:38 src/poparser.ry:55
130
+ msgid "Warning: fuzzy message was ignored.\n"
131
+ msgstr "Upozorenje: čudna poruka je ignorisana.\n"
132
+
133
+ #: src/poparser.ry:148
134
+ msgid "Warning: obsolete msgid exists.\n"
135
+ msgstr "Upozorenje: nekorišteni msgid postoji.\n"