babelphish 0.2.3 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. data/.gitignore +6 -0
  2. data/LICENSE +1 -1
  3. data/README.rdoc +91 -1
  4. data/Rakefile +17 -31
  5. data/VERSION +1 -0
  6. data/babelphish.gemspec +268 -0
  7. data/bin/babelphish +1 -0
  8. data/config/website.yml +2 -0
  9. data/doc/classes/Babelphish.html +206 -0
  10. data/doc/classes/Babelphish/Exceptions.html +111 -0
  11. data/doc/classes/Babelphish/Exceptions/GoogleResponseError.html +111 -0
  12. data/doc/classes/Babelphish/GoogleTranslate.html +565 -0
  13. data/doc/classes/Babelphish/HtmlTranslator.html +335 -0
  14. data/doc/classes/Babelphish/Translator.html +311 -0
  15. data/doc/classes/Babelphish/YmlTranslator.html +402 -0
  16. data/doc/created.rid +1 -0
  17. data/doc/files/History_txt.html +110 -0
  18. data/doc/files/PostInstall_txt.html +108 -0
  19. data/doc/files/README_rdoc.html +255 -0
  20. data/doc/files/bin/babelphish.html +109 -0
  21. data/doc/files/lib/babelphish/exceptions_rb.html +101 -0
  22. data/doc/files/lib/babelphish/html_translator_rb.html +101 -0
  23. data/doc/files/lib/babelphish/languages_rb.html +108 -0
  24. data/doc/files/lib/babelphish/translator_rb.html +101 -0
  25. data/doc/files/lib/babelphish/yml_translator_rb.html +101 -0
  26. data/doc/files/lib/babelphish_rb.html +113 -0
  27. data/doc/files/lib/tasks/babelphish_rake.html +147 -0
  28. data/doc/fr_class_index.html +33 -0
  29. data/doc/fr_file_index.html +37 -0
  30. data/doc/fr_method_index.html +43 -0
  31. data/doc/index.html +24 -0
  32. data/doc/rdoc-style.css +208 -0
  33. data/lib/babelphish.rb +1 -1
  34. data/lib/babelphish/html_translator.rb +6 -0
  35. data/lib/babelphish/translator.rb +8 -4
  36. data/lib/babelphish/yml_translator.rb +23 -14
  37. data/lib/tasks/babelphish.rake +25 -12
  38. data/script/txt2html +71 -0
  39. data/test/html_translations/test.ar.html.erb +4 -0
  40. data/test/html_translations/test.bg.html.erb +4 -0
  41. data/test/html_translations/test.ca.html.erb +4 -0
  42. data/test/html_translations/test.cs.html.erb +4 -0
  43. data/test/html_translations/test.da.html.erb +4 -0
  44. data/test/html_translations/test.de.html.erb +4 -0
  45. data/test/html_translations/test.el.html.erb +4 -0
  46. data/test/html_translations/test.es.html.erb +4 -0
  47. data/test/html_translations/test.et.html.erb +4 -0
  48. data/test/html_translations/test.fa.html.erb +4 -0
  49. data/test/html_translations/test.fi.html.erb +4 -0
  50. data/test/html_translations/test.fr.html.erb +4 -0
  51. data/test/html_translations/test.gl.html.erb +4 -0
  52. data/test/html_translations/test.hi.html.erb +4 -0
  53. data/test/html_translations/test.hr.html.erb +4 -0
  54. data/test/html_translations/test.html.erb +4 -0
  55. data/test/html_translations/test.hu.html.erb +4 -0
  56. data/test/html_translations/test.id.html.erb +4 -0
  57. data/test/html_translations/test.it.html.erb +4 -0
  58. data/test/html_translations/test.iw.html.erb +4 -0
  59. data/test/html_translations/test.ja.html.erb +4 -0
  60. data/test/html_translations/test.ko.html.erb +4 -0
  61. data/test/html_translations/test.lt.html.erb +4 -0
  62. data/test/html_translations/test.lv.html.erb +4 -0
  63. data/test/html_translations/test.mt.html.erb +4 -0
  64. data/test/html_translations/test.nl.html.erb +4 -0
  65. data/test/html_translations/test.no.html.erb +4 -0
  66. data/test/html_translations/test.pl.html.erb +4 -0
  67. data/test/html_translations/test.pt-PT.html.erb +4 -0
  68. data/test/html_translations/test.ro.html.erb +4 -0
  69. data/test/html_translations/test.ru.html.erb +4 -0
  70. data/test/html_translations/test.sk.html.erb +4 -0
  71. data/test/html_translations/test.sl.html.erb +4 -0
  72. data/test/html_translations/test.sq.html.erb +4 -0
  73. data/test/html_translations/test.sr.html.erb +4 -0
  74. data/test/html_translations/test.sv.html.erb +4 -0
  75. data/test/html_translations/test.text.ar.html.erb +5 -0
  76. data/test/html_translations/test.text.ar.plain.erb +8 -0
  77. data/test/html_translations/test.text.bg.html.erb +5 -0
  78. data/test/html_translations/test.text.bg.plain.erb +8 -0
  79. data/test/html_translations/test.text.ca.html.erb +5 -0
  80. data/test/html_translations/test.text.ca.plain.erb +8 -0
  81. data/test/html_translations/test.text.cs.html.erb +5 -0
  82. data/test/html_translations/test.text.cs.plain.erb +8 -0
  83. data/test/html_translations/test.text.da.html.erb +5 -0
  84. data/test/html_translations/test.text.da.plain.erb +8 -0
  85. data/test/html_translations/test.text.de.html.erb +5 -0
  86. data/test/html_translations/test.text.de.plain.erb +8 -0
  87. data/test/html_translations/test.text.el.html.erb +5 -0
  88. data/test/html_translations/test.text.el.plain.erb +8 -0
  89. data/test/html_translations/test.text.es.html.erb +5 -0
  90. data/test/html_translations/test.text.es.plain.erb +8 -0
  91. data/test/html_translations/test.text.et.html.erb +5 -0
  92. data/test/html_translations/test.text.et.plain.erb +8 -0
  93. data/test/html_translations/test.text.fa.html.erb +5 -0
  94. data/test/html_translations/test.text.fa.plain.erb +8 -0
  95. data/test/html_translations/test.text.fi.html.erb +5 -0
  96. data/test/html_translations/test.text.fi.plain.erb +8 -0
  97. data/test/html_translations/test.text.fr.html.erb +5 -0
  98. data/test/html_translations/test.text.fr.plain.erb +8 -0
  99. data/test/html_translations/test.text.gl.html.erb +5 -0
  100. data/test/html_translations/test.text.gl.plain.erb +8 -0
  101. data/test/html_translations/test.text.hi.html.erb +5 -0
  102. data/test/html_translations/test.text.hi.plain.erb +8 -0
  103. data/test/html_translations/test.text.hr.html.erb +5 -0
  104. data/test/html_translations/test.text.hr.plain.erb +8 -0
  105. data/test/html_translations/test.text.html.erb +5 -0
  106. data/test/html_translations/test.text.hu.html.erb +5 -0
  107. data/test/html_translations/test.text.hu.plain.erb +8 -0
  108. data/test/html_translations/test.text.id.html.erb +5 -0
  109. data/test/html_translations/test.text.id.plain.erb +8 -0
  110. data/test/html_translations/test.text.it.html.erb +5 -0
  111. data/test/html_translations/test.text.it.plain.erb +8 -0
  112. data/test/html_translations/test.text.iw.html.erb +5 -0
  113. data/test/html_translations/test.text.iw.plain.erb +8 -0
  114. data/test/html_translations/test.text.ja.html.erb +5 -0
  115. data/test/html_translations/test.text.ja.plain.erb +8 -0
  116. data/test/html_translations/test.text.ko.html.erb +5 -0
  117. data/test/html_translations/test.text.ko.plain.erb +8 -0
  118. data/test/html_translations/test.text.lt.html.erb +5 -0
  119. data/test/html_translations/test.text.lt.plain.erb +8 -0
  120. data/test/html_translations/test.text.lv.html.erb +5 -0
  121. data/test/html_translations/test.text.lv.plain.erb +8 -0
  122. data/test/html_translations/test.text.mt.html.erb +5 -0
  123. data/test/html_translations/test.text.mt.plain.erb +8 -0
  124. data/test/html_translations/test.text.nl.html.erb +5 -0
  125. data/test/html_translations/test.text.nl.plain.erb +8 -0
  126. data/test/html_translations/test.text.no.html.erb +5 -0
  127. data/test/html_translations/test.text.no.plain.erb +8 -0
  128. data/test/html_translations/test.text.pl.html.erb +5 -0
  129. data/test/html_translations/test.text.pl.plain.erb +8 -0
  130. data/test/html_translations/test.text.plain.erb +8 -0
  131. data/test/html_translations/test.text.pt-PT.html.erb +5 -0
  132. data/test/html_translations/test.text.pt-PT.plain.erb +8 -0
  133. data/test/html_translations/test.text.ro.html.erb +5 -0
  134. data/test/html_translations/test.text.ro.plain.erb +8 -0
  135. data/test/html_translations/test.text.ru.html.erb +5 -0
  136. data/test/html_translations/test.text.ru.plain.erb +8 -0
  137. data/test/html_translations/test.text.sk.html.erb +5 -0
  138. data/test/html_translations/test.text.sk.plain.erb +8 -0
  139. data/test/html_translations/test.text.sl.html.erb +5 -0
  140. data/test/html_translations/test.text.sl.plain.erb +8 -0
  141. data/test/html_translations/test.text.sq.html.erb +5 -0
  142. data/test/html_translations/test.text.sq.plain.erb +8 -0
  143. data/test/html_translations/test.text.sr.html.erb +5 -0
  144. data/test/html_translations/test.text.sr.plain.erb +8 -0
  145. data/test/html_translations/test.text.sv.html.erb +5 -0
  146. data/test/html_translations/test.text.sv.plain.erb +8 -0
  147. data/test/html_translations/test.text.th.html.erb +5 -0
  148. data/test/html_translations/test.text.th.plain.erb +8 -0
  149. data/test/html_translations/test.text.tl.html.erb +5 -0
  150. data/test/html_translations/test.text.tl.plain.erb +8 -0
  151. data/test/html_translations/test.text.tr.html.erb +5 -0
  152. data/test/html_translations/test.text.tr.plain.erb +8 -0
  153. data/test/html_translations/test.text.uk.html.erb +5 -0
  154. data/test/html_translations/test.text.uk.plain.erb +8 -0
  155. data/test/html_translations/test.text.vi.html.erb +5 -0
  156. data/test/html_translations/test.text.vi.plain.erb +8 -0
  157. data/test/html_translations/test.text.zh-CN.html.erb +5 -0
  158. data/test/html_translations/test.text.zh-CN.plain.erb +8 -0
  159. data/test/html_translations/test.text.zh-TW.html.erb +5 -0
  160. data/test/html_translations/test.text.zh-TW.plain.erb +8 -0
  161. data/test/html_translations/test.text.zh.html.erb +5 -0
  162. data/test/html_translations/test.text.zh.plain.erb +8 -0
  163. data/test/html_translations/test.th.html.erb +4 -0
  164. data/test/html_translations/test.tl.html.erb +4 -0
  165. data/test/html_translations/test.tr.html.erb +4 -0
  166. data/test/html_translations/test.uk.html.erb +4 -0
  167. data/test/html_translations/test.vi.html.erb +4 -0
  168. data/test/html_translations/test.zh-CN.html.erb +4 -0
  169. data/test/html_translations/test.zh-TW.html.erb +4 -0
  170. data/test/html_translations/test.zh.html.erb +4 -0
  171. data/test/test_yml_translator.rb +3 -2
  172. data/test/translations/ar.yml +7 -0
  173. data/test/translations/bg.yml +7 -0
  174. data/test/translations/ca.yml +7 -0
  175. data/test/translations/cs.yml +7 -0
  176. data/test/translations/da.yml +7 -0
  177. data/test/translations/de.yml +7 -0
  178. data/test/translations/el.yml +7 -0
  179. data/test/translations/en.yml +6 -0
  180. data/test/translations/es.yml +7 -0
  181. data/test/translations/et.yml +7 -0
  182. data/test/translations/fa.yml +7 -0
  183. data/test/translations/fi.yml +7 -0
  184. data/test/translations/fr.yml +7 -0
  185. data/test/translations/gl.yml +7 -0
  186. data/test/translations/hi.yml +7 -0
  187. data/test/translations/hr.yml +7 -0
  188. data/test/translations/hu.yml +7 -0
  189. data/test/translations/id.yml +7 -0
  190. data/test/translations/it.yml +7 -0
  191. data/test/translations/iw.yml +7 -0
  192. data/test/translations/ja.yml +7 -0
  193. data/test/translations/ko.yml +7 -0
  194. data/test/translations/lt.yml +7 -0
  195. data/test/translations/lv.yml +7 -0
  196. data/test/translations/mt.yml +7 -0
  197. data/test/translations/nl.yml +7 -0
  198. data/test/translations/no.yml +8 -0
  199. data/test/translations/pl.yml +7 -0
  200. data/test/translations/pt-PT.yml +7 -0
  201. data/test/translations/ro.yml +7 -0
  202. data/test/translations/ru.yml +7 -0
  203. data/test/translations/sk.yml +7 -0
  204. data/test/translations/sl.yml +7 -0
  205. data/test/translations/sq.yml +7 -0
  206. data/test/translations/sr.yml +7 -0
  207. data/test/translations/sv.yml +7 -0
  208. data/test/translations/th.yml +7 -0
  209. data/test/translations/tl.yml +7 -0
  210. data/test/translations/tr.yml +7 -0
  211. data/test/translations/uk.yml +7 -0
  212. data/test/translations/vi.yml +7 -0
  213. data/test/translations/zh-CN.yml +7 -0
  214. data/test/translations/zh-TW.yml +7 -0
  215. data/test/translations/zh.yml +7 -0
  216. metadata +222 -49
  217. data/History.txt +0 -3
  218. data/Manifest.txt +0 -19
  219. data/PostInstall.txt +0 -2
@@ -0,0 +1,335 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Module: Babelphish::HtmlTranslator</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Module</strong></td>
53
+ <td class="class-name-in-header">Babelphish::HtmlTranslator</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/babelphish/html_translator_rb.html">
59
+ lib/babelphish/html_translator.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ </table>
66
+ </div>
67
+ <!-- banner header -->
68
+
69
+ <div id="bodyContent">
70
+
71
+
72
+
73
+ <div id="contextContent">
74
+
75
+
76
+
77
+ </div>
78
+
79
+ <div id="method-list">
80
+ <h3 class="section-bar">Methods</h3>
81
+
82
+ <div class="name-list">
83
+ <a href="#M000009">get_translated_file</a>&nbsp;&nbsp;
84
+ <a href="#M000006">translate</a>&nbsp;&nbsp;
85
+ <a href="#M000008">translate_and_write_page</a>&nbsp;&nbsp;
86
+ <a href="#M000007">translate_and_write_pages</a>&nbsp;&nbsp;
87
+ <a href="#M000010">translate_file?</a>&nbsp;&nbsp;
88
+ </div>
89
+ </div>
90
+
91
+ </div>
92
+
93
+
94
+ <!-- if includes -->
95
+
96
+ <div id="section">
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+ <!-- if method_list -->
106
+ <div id="methods">
107
+ <h3 class="section-bar">Public Class methods</h3>
108
+
109
+ <div id="method-M000009" class="method-detail">
110
+ <a name="M000009"></a>
111
+
112
+ <div class="method-heading">
113
+ <a href="#M000009" class="method-signature">
114
+ <span class="method-name">get_translated_file</span><span class="method-args">(page, to)</span>
115
+ </a>
116
+ </div>
117
+
118
+ <div class="method-description">
119
+ <p>
120
+ Generate a file name for the newly translated content
121
+ </p>
122
+ <p><a class="source-toggle" href="#"
123
+ onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
124
+ <div class="method-source-code" id="M000009-source">
125
+ <pre>
126
+ <span class="ruby-comment cmt"># File lib/babelphish/html_translator.rb, line 95</span>
127
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_translated_file</span>(<span class="ruby-identifier">page</span>, <span class="ruby-identifier">to</span>)
128
+ <span class="ruby-identifier">new_page</span> = <span class="ruby-identifier">page</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-value str">'.html'</span>, <span class="ruby-node">&quot;.#{to}.html&quot;</span>)
129
+ <span class="ruby-identifier">new_page</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-value str">'text.html'</span>, <span class="ruby-node">&quot;text.#{to}.html&quot;</span>)
130
+ <span class="ruby-identifier">new_page</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-value str">'text.plain'</span>, <span class="ruby-node">&quot;text.#{to}.plain&quot;</span>)
131
+ <span class="ruby-identifier">new_page</span>
132
+ <span class="ruby-keyword kw">end</span>
133
+ </pre>
134
+ </div>
135
+ </div>
136
+ </div>
137
+
138
+ <div id="method-M000006" class="method-detail">
139
+ <a name="M000006"></a>
140
+
141
+ <div class="method-heading">
142
+ <a href="#M000006" class="method-signature">
143
+ <span class="method-name">translate</span><span class="method-args">(path, translate_tos, translate_from = 'en', overwrite = false)</span>
144
+ </a>
145
+ </div>
146
+
147
+ <div class="method-description">
148
+ <p>
149
+ Translates all files in the given path from the language specififed by
150
+ &#8216;translate_from&#8217; into the languages in
151
+ &#8216;translate_tos&#8217;. Translations that already exist will not be
152
+ overwritten unless overwrite = true
153
+ </p>
154
+ <p><a class="source-toggle" href="#"
155
+ onclick="toggleCode('M000006-source');return false;">[Source]</a></p>
156
+ <div class="method-source-code" id="M000006-source">
157
+ <pre>
158
+ <span class="ruby-comment cmt"># File lib/babelphish/html_translator.rb, line 9</span>
159
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">translate</span>(<span class="ruby-identifier">path</span>, <span class="ruby-identifier">translate_tos</span>, <span class="ruby-identifier">translate_from</span> = <span class="ruby-value str">'en'</span>, <span class="ruby-identifier">overwrite</span> = <span class="ruby-keyword kw">false</span>)
160
+ <span class="ruby-ivar">@path</span> = <span class="ruby-identifier">path</span>
161
+ <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-constant">Babelphish</span><span class="ruby-operator">::</span><span class="ruby-constant">GoogleTranslate</span><span class="ruby-operator">::</span><span class="ruby-constant">LANGUAGES</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">translate_from</span>)
162
+ <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{translate_from} is not one of the available languages.&quot;</span>
163
+ <span class="ruby-keyword kw">return</span>
164
+ <span class="ruby-keyword kw">end</span>
165
+ <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">exists?</span>(<span class="ruby-identifier">path</span>)
166
+ <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{path} does not exist.&quot;</span>
167
+ <span class="ruby-keyword kw">return</span>
168
+ <span class="ruby-keyword kw">end</span>
169
+ <span class="ruby-identifier">translate_and_write_pages</span>(<span class="ruby-identifier">path</span>, <span class="ruby-identifier">translate_tos</span>, <span class="ruby-identifier">translate_from</span>, <span class="ruby-identifier">overwrite</span>)
170
+ <span class="ruby-keyword kw">end</span>
171
+ </pre>
172
+ </div>
173
+ </div>
174
+ </div>
175
+
176
+ <div id="method-M000008" class="method-detail">
177
+ <a name="M000008"></a>
178
+
179
+ <div class="method-heading">
180
+ <a href="#M000008" class="method-signature">
181
+ <span class="method-name">translate_and_write_page</span><span class="method-args">(source_page, tos, from, overwrite)</span>
182
+ </a>
183
+ </div>
184
+
185
+ <div class="method-description">
186
+ <p>
187
+ Translate a single page from the language specified in &#8216;from&#8217;
188
+ into the languages specified by &#8216;tos&#8216;
189
+ </p>
190
+ <p><a class="source-toggle" href="#"
191
+ onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
192
+ <div class="method-source-code" id="M000008-source">
193
+ <pre>
194
+ <span class="ruby-comment cmt"># File lib/babelphish/html_translator.rb, line 34</span>
195
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">translate_and_write_page</span>(<span class="ruby-identifier">source_page</span>, <span class="ruby-identifier">tos</span>, <span class="ruby-identifier">from</span>, <span class="ruby-identifier">overwrite</span>)
196
+ <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">source_page</span>)
197
+ <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Translating: #{source_page}&quot;</span>
198
+ <span class="ruby-keyword kw">else</span>
199
+ <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Could not find file: #{source_page}&quot;</span>
200
+ <span class="ruby-keyword kw">return</span>
201
+ <span class="ruby-keyword kw">end</span>
202
+
203
+ <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">translate_file?</span>(<span class="ruby-identifier">source_page</span>)
204
+ <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Not translating file: #{source_page}&quot;</span>
205
+ <span class="ruby-keyword kw">return</span>
206
+ <span class="ruby-keyword kw">end</span>
207
+
208
+ <span class="ruby-identifier">text</span> = <span class="ruby-constant">IO</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">source_page</span>)
209
+
210
+ <span class="ruby-identifier">begins_with_html</span> = <span class="ruby-identifier">text</span>[<span class="ruby-value str">'&lt;html&gt;'</span>]
211
+
212
+ <span class="ruby-comment cmt"># Pull out all the code blocks so Google doesn't mess with those</span>
213
+ <span class="ruby-identifier">pattern</span> = <span class="ruby-regexp re">/\&lt;\%.+\%\&gt;/</span>
214
+ <span class="ruby-identifier">holder</span> = <span class="ruby-value str">'{{---}}'</span>
215
+ <span class="ruby-identifier">replacements</span> = <span class="ruby-identifier">text</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-identifier">pattern</span>)
216
+ <span class="ruby-identifier">text</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-identifier">pattern</span>, <span class="ruby-identifier">holder</span>)
217
+
218
+ <span class="ruby-comment cmt"># Pull out all the new lines so Google doesn't mess with those</span>
219
+ <span class="ruby-identifier">pattern</span> = <span class="ruby-regexp re">/\n/</span>
220
+ <span class="ruby-identifier">newline_holder</span> = <span class="ruby-value str">'&lt;brr /&gt;'</span>
221
+ <span class="ruby-identifier">newline_replacements</span> = <span class="ruby-identifier">text</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-identifier">pattern</span>)
222
+ <span class="ruby-identifier">text</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-identifier">pattern</span>, <span class="ruby-identifier">newline_holder</span>)
223
+
224
+ <span class="ruby-comment cmt"># Send to Google for translations</span>
225
+ <span class="ruby-identifier">translations</span> = <span class="ruby-constant">Babelphish</span><span class="ruby-operator">::</span><span class="ruby-constant">Translator</span>.<span class="ruby-identifier">multiple_translate</span>(<span class="ruby-identifier">text</span>, <span class="ruby-identifier">tos</span>, <span class="ruby-identifier">from</span>)
226
+
227
+ <span class="ruby-comment cmt"># Put the code back</span>
228
+ <span class="ruby-identifier">translations</span>.<span class="ruby-identifier">each_key</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">locale</span><span class="ruby-operator">|</span>
229
+ <span class="ruby-identifier">replacements</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
230
+ <span class="ruby-identifier">translations</span>[<span class="ruby-identifier">locale</span>].<span class="ruby-identifier">sub!</span>(<span class="ruby-identifier">holder</span>, <span class="ruby-identifier">r</span>)
231
+ <span class="ruby-keyword kw">end</span>
232
+ <span class="ruby-keyword kw">end</span>
233
+
234
+ <span class="ruby-comment cmt"># Put the newlines back in</span>
235
+ <span class="ruby-identifier">translations</span>.<span class="ruby-identifier">each_key</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">locale</span><span class="ruby-operator">|</span>
236
+ <span class="ruby-identifier">newline_replacements</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
237
+ <span class="ruby-identifier">translations</span>[<span class="ruby-identifier">locale</span>].<span class="ruby-identifier">sub!</span>(<span class="ruby-identifier">newline_holder</span>, <span class="ruby-identifier">r</span>)
238
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">translations</span>[<span class="ruby-identifier">locale</span>][<span class="ruby-value str">'&lt;html&gt;'</span>]
239
+ <span class="ruby-comment cmt"># Google translate can insert '&lt;html&gt;' at the beginning of the result. Remove it.</span>
240
+ <span class="ruby-identifier">translations</span>[<span class="ruby-identifier">locale</span>][<span class="ruby-value str">'&lt;html&gt;'</span>]= <span class="ruby-value str">''</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">begins_with_html</span>
241
+ <span class="ruby-keyword kw">end</span>
242
+ <span class="ruby-keyword kw">end</span>
243
+ <span class="ruby-keyword kw">end</span>
244
+
245
+ <span class="ruby-comment cmt"># Write the new file</span>
246
+ <span class="ruby-identifier">translations</span>.<span class="ruby-identifier">each_key</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">locale</span><span class="ruby-operator">|</span>
247
+ <span class="ruby-identifier">translated_filename</span> = <span class="ruby-identifier">get_translated_file</span>(<span class="ruby-identifier">source_page</span>, <span class="ruby-identifier">locale</span>)
248
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">locale</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">from</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">overwrite</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">exists?</span>(<span class="ruby-identifier">translated_filename</span>))
249
+ <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">translated_filename</span>, <span class="ruby-value str">'w'</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">translations</span>[<span class="ruby-identifier">locale</span>]) }
250
+ <span class="ruby-keyword kw">end</span>
251
+ <span class="ruby-keyword kw">end</span>
252
+
253
+ <span class="ruby-keyword kw">end</span>
254
+ </pre>
255
+ </div>
256
+ </div>
257
+ </div>
258
+
259
+ <div id="method-M000007" class="method-detail">
260
+ <a name="M000007"></a>
261
+
262
+ <div class="method-heading">
263
+ <a href="#M000007" class="method-signature">
264
+ <span class="method-name">translate_and_write_pages</span><span class="method-args">(path, tos, from, overwrite)</span>
265
+ </a>
266
+ </div>
267
+
268
+ <div class="method-description">
269
+ <p><a class="source-toggle" href="#"
270
+ onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
271
+ <div class="method-source-code" id="M000007-source">
272
+ <pre>
273
+ <span class="ruby-comment cmt"># File lib/babelphish/html_translator.rb, line 22</span>
274
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">translate_and_write_pages</span>(<span class="ruby-identifier">path</span>, <span class="ruby-identifier">tos</span>, <span class="ruby-identifier">from</span>, <span class="ruby-identifier">overwrite</span>)
275
+ <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">glob</span>(<span class="ruby-node">&quot;#{path}/*&quot;</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">next_file</span><span class="ruby-operator">|</span>
276
+ <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">directory?</span>(<span class="ruby-identifier">next_file</span>)
277
+ <span class="ruby-identifier">translate_and_write_pages</span>(<span class="ruby-identifier">next_file</span>, <span class="ruby-identifier">language</span>)
278
+ <span class="ruby-keyword kw">else</span>
279
+ <span class="ruby-identifier">translate_and_write_page</span>(<span class="ruby-identifier">next_file</span>, <span class="ruby-identifier">tos</span>, <span class="ruby-identifier">from</span>, <span class="ruby-identifier">overwrite</span>)
280
+ <span class="ruby-keyword kw">end</span>
281
+ <span class="ruby-keyword kw">end</span>
282
+ <span class="ruby-keyword kw">end</span>
283
+ </pre>
284
+ </div>
285
+ </div>
286
+ </div>
287
+
288
+ <div id="method-M000010" class="method-detail">
289
+ <a name="M000010"></a>
290
+
291
+ <div class="method-heading">
292
+ <a href="#M000010" class="method-signature">
293
+ <span class="method-name">translate_file?</span><span class="method-args">(page)</span>
294
+ </a>
295
+ </div>
296
+
297
+ <div class="method-description">
298
+ <p>
299
+ This is a hack but all the translated files live in the same directory as
300
+ the original file so we have to have some way of not translating the
301
+ translated files. this should return true for test.html.erb,
302
+ test.text.html.erb and test.text.plain.erb and false for test.es.html.erb,
303
+ test.text.es.html.erb and test.text.es.plain.erb
304
+ </p>
305
+ <p><a class="source-toggle" href="#"
306
+ onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
307
+ <div class="method-source-code" id="M000010-source">
308
+ <pre>
309
+ <span class="ruby-comment cmt"># File lib/babelphish/html_translator.rb, line 109</span>
310
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">translate_file?</span>(<span class="ruby-identifier">page</span>)
311
+ <span class="ruby-identifier">test</span> = <span class="ruby-identifier">page</span>
312
+ <span class="ruby-identifier">test</span> = <span class="ruby-identifier">test</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-value str">'./'</span>, <span class="ruby-value str">''</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">page</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'./'</span>
313
+ <span class="ruby-identifier">test</span> = <span class="ruby-identifier">test</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-value str">'.text.html.erb'</span>, <span class="ruby-value str">''</span>)
314
+ <span class="ruby-identifier">test</span> = <span class="ruby-identifier">test</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-value str">'.text.plain.erb'</span>, <span class="ruby-value str">''</span>)
315
+ <span class="ruby-identifier">test</span> = <span class="ruby-identifier">test</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-value str">'.html.erb'</span>, <span class="ruby-value str">''</span>)
316
+ <span class="ruby-identifier">test</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">'.'</span>).<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
317
+ <span class="ruby-keyword kw">end</span>
318
+ </pre>
319
+ </div>
320
+ </div>
321
+ </div>
322
+
323
+
324
+ </div>
325
+
326
+
327
+ </div>
328
+
329
+
330
+ <div id="validator-badges">
331
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
332
+ </div>
333
+
334
+ </body>
335
+ </html>
@@ -0,0 +1,311 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Module: Babelphish::Translator</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Module</strong></td>
53
+ <td class="class-name-in-header">Babelphish::Translator</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/babelphish/translator_rb.html">
59
+ lib/babelphish/translator.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ </table>
66
+ </div>
67
+ <!-- banner header -->
68
+
69
+ <div id="bodyContent">
70
+
71
+
72
+
73
+ <div id="contextContent">
74
+
75
+
76
+
77
+ </div>
78
+
79
+ <div id="method-list">
80
+ <h3 class="section-bar">Methods</h3>
81
+
82
+ <div class="name-list">
83
+ <a href="#M000004">detect_language</a>&nbsp;&nbsp;
84
+ <a href="#M000003">multiple_translate</a>&nbsp;&nbsp;
85
+ <a href="#M000005">supported_languages</a>&nbsp;&nbsp;
86
+ <a href="#M000002">translate</a>&nbsp;&nbsp;
87
+ </div>
88
+ </div>
89
+
90
+ </div>
91
+
92
+
93
+ <!-- if includes -->
94
+
95
+ <div id="section">
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+ <!-- if method_list -->
105
+ <div id="methods">
106
+ <h3 class="section-bar">Public Class methods</h3>
107
+
108
+ <div id="method-M000004" class="method-detail">
109
+ <a name="M000004"></a>
110
+
111
+ <div class="method-heading">
112
+ <a href="#M000004" class="method-signature">
113
+ <span class="method-name">detect_language</span><span class="method-args">(text)</span>
114
+ </a>
115
+ </div>
116
+
117
+ <div class="method-description">
118
+ <p>
119
+ Sends a string to google to attempt to detect the language. Returns an
120
+ array indicating success/fail and the resulting data from google in a hash:
121
+ {&quot;language&quot;=&gt;&quot;en&quot;,
122
+ &quot;confidence&quot;=&gt;0.08594032, &quot;isReliable&quot;=&gt;false}
123
+ </p>
124
+ <p><a class="source-toggle" href="#"
125
+ onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
126
+ <div class="method-source-code" id="M000004-source">
127
+ <pre>
128
+ <span class="ruby-comment cmt"># File lib/babelphish/translator.rb, line 90</span>
129
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">detect_language</span>(<span class="ruby-identifier">text</span>)
130
+ <span class="ruby-identifier">request</span> = <span class="ruby-constant">Babelphish</span><span class="ruby-operator">::</span><span class="ruby-constant">GOOGLE_AJAX_URL</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;detect?v=1.0&amp;q=&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-constant">CGI</span>.<span class="ruby-identifier">escape</span>(<span class="ruby-identifier">text</span>)
131
+ <span class="ruby-comment cmt"># send get request</span>
132
+ <span class="ruby-identifier">response</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>.<span class="ruby-identifier">get_response</span>( <span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>( <span class="ruby-identifier">request</span> ) )
133
+ <span class="ruby-identifier">json</span> = <span class="ruby-constant">JSON</span>.<span class="ruby-identifier">parse</span>( <span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span> )
134
+ [<span class="ruby-identifier">json</span>[<span class="ruby-value str">'responseStatus'</span>] <span class="ruby-operator">==</span> <span class="ruby-value">200</span>, <span class="ruby-identifier">json</span>[<span class="ruby-value str">'responseData'</span>]]
135
+ <span class="ruby-keyword kw">end</span>
136
+ </pre>
137
+ </div>
138
+ </div>
139
+ </div>
140
+
141
+ <div id="method-M000003" class="method-detail">
142
+ <a name="M000003"></a>
143
+
144
+ <div class="method-heading">
145
+ <a href="#M000003" class="method-signature">
146
+ <span class="method-name">multiple_translate</span><span class="method-args">(text, tos, from = 'en', tries = 0)</span>
147
+ </a>
148
+ </div>
149
+
150
+ <div class="method-description">
151
+ <p>
152
+ <a href="Translator.html#M000002">translate</a> from the &#8216;from&#8217;
153
+ language into all available languages multiple strings and multiple
154
+ languages
155
+ </p>
156
+ <p>
157
+ <a
158
+ href="http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=hello%20world&langpair=en|it&q=goodbye&langpair=en|fr">ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=hello%20world&langpair=en|it&q=goodbye&langpair=en|fr</a>
159
+ results from google look like this: {&quot;responseData&quot;:
160
+ [{&quot;responseData&quot;:{&quot;translatedText&quot;:&quot;ciao
161
+ mondo&quot;},&quot;responseDetails&quot;:null,&quot;responseStatus&quot;:200},{&quot;responseData&quot;:{&quot;translatedText&quot;:&quot;au
162
+ revoir&quot;},&quot;responseDetails&quot;:null,&quot;responseStatus&quot;:200}],
163
+ &quot;responseDetails&quot;: null, &quot;responseStatus&quot;: 200}
164
+ </p>
165
+ <p>
166
+ One string into multiple languages <a
167
+ href="http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=hello%20world&langpair=en|it&langpair=en|fr">ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=hello%20world&langpair=en|it&langpair=en|fr</a>
168
+ results from google look like this: {&quot;responseData&quot;:
169
+ [{&quot;responseData&quot;:{&quot;translatedText&quot;:&quot;ciao
170
+ mondo&quot;},&quot;responseDetails&quot;:null,&quot;responseStatus&quot;:200},{&quot;responseData&quot;:{&quot;translatedText&quot;:&quot;Bonjour
171
+ le
172
+ Monde&quot;},&quot;responseDetails&quot;:null,&quot;responseStatus&quot;:200}],
173
+ &quot;responseDetails&quot;: null, &quot;responseStatus&quot;: 200}
174
+ </p>
175
+ <p><a class="source-toggle" href="#"
176
+ onclick="toggleCode('M000003-source');return false;">[Source]</a></p>
177
+ <div class="method-source-code" id="M000003-source">
178
+ <pre>
179
+ <span class="ruby-comment cmt"># File lib/babelphish/translator.rb, line 46</span>
180
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">multiple_translate</span>(<span class="ruby-identifier">text</span>, <span class="ruby-identifier">tos</span>, <span class="ruby-identifier">from</span> = <span class="ruby-value str">'en'</span>, <span class="ruby-identifier">tries</span> = <span class="ruby-value">0</span>)
181
+ <span class="ruby-keyword kw">return</span> {} <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">text</span>.<span class="ruby-identifier">strip</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-comment cmt"># Google doesn't like it when you send them an empty string</span>
182
+ <span class="ruby-identifier">base</span> = <span class="ruby-constant">Babelphish</span><span class="ruby-operator">::</span><span class="ruby-constant">GOOGLE_AJAX_URL</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'translate'</span>
183
+ <span class="ruby-comment cmt"># assemble query params</span>
184
+ <span class="ruby-identifier">params</span> = {
185
+ <span class="ruby-identifier">:q</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">text</span>,
186
+ <span class="ruby-identifier">:v</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">1.0</span>
187
+ }
188
+ <span class="ruby-identifier">query</span> = <span class="ruby-identifier">params</span>.<span class="ruby-identifier">map</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-node">&quot;#{k}=#{CGI.escape(v.to_s)}&quot;</span> }.<span class="ruby-identifier">join</span>(<span class="ruby-value str">'&amp;'</span>)
189
+
190
+ <span class="ruby-identifier">tos</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">to</span><span class="ruby-operator">|</span>
191
+ <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-constant">Babelphish</span><span class="ruby-operator">::</span><span class="ruby-constant">GoogleTranslate</span><span class="ruby-operator">::</span><span class="ruby-constant">LANGUAGES</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">to</span>)
192
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">Exceptions</span><span class="ruby-operator">::</span><span class="ruby-constant">GoogleResponseError</span>, <span class="ruby-node">&quot;#{to} is not a valid Google Translate code. Please be sure language codes are one of: #{Babelphish::GoogleTranslate::LANGUAGES.join(',')}&quot;</span>
193
+ <span class="ruby-keyword kw">end</span>
194
+ <span class="ruby-identifier">query</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;&amp;langpair=&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-constant">CGI</span>.<span class="ruby-identifier">escape</span>(<span class="ruby-node">&quot;#{from}|#{to}&quot;</span>)
195
+ <span class="ruby-keyword kw">end</span>
196
+
197
+ <span class="ruby-identifier">response</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>.<span class="ruby-identifier">get_response</span>( <span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>( <span class="ruby-node">&quot;#{base}?#{query}&quot;</span> ) )
198
+ <span class="ruby-identifier">json</span> = <span class="ruby-constant">JSON</span>.<span class="ruby-identifier">parse</span>( <span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span> )
199
+
200
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">json</span>[<span class="ruby-value str">'responseStatus'</span>] <span class="ruby-operator">==</span> <span class="ruby-value">200</span>
201
+ <span class="ruby-identifier">results</span> = {}
202
+ <span class="ruby-identifier">json</span>[<span class="ruby-value str">'responseData'</span>].<span class="ruby-identifier">each_with_index</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">data</span>, <span class="ruby-identifier">index</span><span class="ruby-operator">|</span>
203
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">data</span>[<span class="ruby-value str">'responseStatus'</span>] <span class="ruby-operator">==</span> <span class="ruby-value">200</span>
204
+ <span class="ruby-identifier">results</span>[<span class="ruby-identifier">tos</span>[<span class="ruby-identifier">index</span>]] = <span class="ruby-identifier">data</span>[<span class="ruby-value str">'responseData'</span>][<span class="ruby-value str">'translatedText'</span>]
205
+ <span class="ruby-keyword kw">else</span>
206
+ <span class="ruby-comment cmt"># retry the single translation</span>
207
+ <span class="ruby-identifier">translate</span>(<span class="ruby-identifier">text</span>, <span class="ruby-identifier">tos</span>[<span class="ruby-identifier">index</span>], <span class="ruby-identifier">from</span>)
208
+ <span class="ruby-keyword kw">end</span>
209
+ <span class="ruby-keyword kw">end</span>
210
+ <span class="ruby-identifier">results</span>
211
+ <span class="ruby-keyword kw">else</span>
212
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tries</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-constant">Babelphish</span><span class="ruby-operator">::</span><span class="ruby-constant">MAX_RETRIES</span>
213
+ <span class="ruby-comment cmt"># Try again a few more times</span>
214
+ <span class="ruby-identifier">multiple_translate</span>(<span class="ruby-identifier">text</span>, <span class="ruby-identifier">tos</span>, <span class="ruby-identifier">from</span>, <span class="ruby-identifier">tries</span><span class="ruby-operator">+=</span><span class="ruby-value">1</span>)
215
+ <span class="ruby-keyword kw">else</span>
216
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">Exceptions</span><span class="ruby-operator">::</span><span class="ruby-constant">GoogleResponseError</span>, <span class="ruby-node">&quot;A problem occured while translating. #{response} -- #{response.body} -- From: #{from} -- Text: #{text}&quot;</span>
217
+ <span class="ruby-keyword kw">end</span>
218
+ <span class="ruby-keyword kw">end</span>
219
+ <span class="ruby-keyword kw">end</span>
220
+ </pre>
221
+ </div>
222
+ </div>
223
+ </div>
224
+
225
+ <div id="method-M000005" class="method-detail">
226
+ <a name="M000005"></a>
227
+
228
+ <div class="method-heading">
229
+ <a href="#M000005" class="method-signature">
230
+ <span class="method-name">supported_languages</span><span class="method-args">()</span>
231
+ </a>
232
+ </div>
233
+
234
+ <div class="method-description">
235
+ <p><a class="source-toggle" href="#"
236
+ onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
237
+ <div class="method-source-code" id="M000005-source">
238
+ <pre>
239
+ <span class="ruby-comment cmt"># File lib/babelphish/translator.rb, line 98</span>
240
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">supported_languages</span>
241
+ <span class="ruby-constant">Babelphish</span><span class="ruby-operator">::</span><span class="ruby-constant">GoogleTranslate</span><span class="ruby-operator">::</span><span class="ruby-constant">LANGUAGES</span>
242
+ <span class="ruby-keyword kw">end</span>
243
+ </pre>
244
+ </div>
245
+ </div>
246
+ </div>
247
+
248
+ <div id="method-M000002" class="method-detail">
249
+ <a name="M000002"></a>
250
+
251
+ <div class="method-heading">
252
+ <a href="#M000002" class="method-signature">
253
+ <span class="method-name">translate</span><span class="method-args">(text, to, from = 'en', tries = 0)</span>
254
+ </a>
255
+ </div>
256
+
257
+ <div class="method-description">
258
+ <p>
259
+ from: <a
260
+ href="http://ruby.geraldbauer.ca/google-translation-api.html">ruby.geraldbauer.ca/google-translation-api.html</a>
261
+ <a href="Translator.html#M000002">translate</a> text from
262
+ &#8216;from&#8217; to &#8216;to&#8216;
263
+ </p>
264
+ <p><a class="source-toggle" href="#"
265
+ onclick="toggleCode('M000002-source');return false;">[Source]</a></p>
266
+ <div class="method-source-code" id="M000002-source">
267
+ <pre>
268
+ <span class="ruby-comment cmt"># File lib/babelphish/translator.rb, line 8</span>
269
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">translate</span>(<span class="ruby-identifier">text</span>, <span class="ruby-identifier">to</span>, <span class="ruby-identifier">from</span> = <span class="ruby-value str">'en'</span>, <span class="ruby-identifier">tries</span> = <span class="ruby-value">0</span>)
270
+
271
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">to</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">from</span>
272
+ <span class="ruby-identifier">base</span> = <span class="ruby-constant">Babelphish</span><span class="ruby-operator">::</span><span class="ruby-constant">GOOGLE_AJAX_URL</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'translate'</span>
273
+ <span class="ruby-comment cmt"># assemble query params</span>
274
+ <span class="ruby-identifier">params</span> = {
275
+ <span class="ruby-identifier">:langpair</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;#{from}|#{to}&quot;</span>,
276
+ <span class="ruby-identifier">:q</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">text</span>,
277
+ <span class="ruby-identifier">:v</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">1.0</span>
278
+ }
279
+ <span class="ruby-identifier">query</span> = <span class="ruby-identifier">params</span>.<span class="ruby-identifier">map</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-node">&quot;#{k}=#{CGI.escape(v.to_s)}&quot;</span> }.<span class="ruby-identifier">join</span>(<span class="ruby-value str">'&amp;'</span>)
280
+ <span class="ruby-comment cmt"># send get request</span>
281
+ <span class="ruby-identifier">response</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>.<span class="ruby-identifier">get_response</span>( <span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>( <span class="ruby-node">&quot;#{base}?#{query}&quot;</span> ) )
282
+ <span class="ruby-identifier">json</span> = <span class="ruby-constant">JSON</span>.<span class="ruby-identifier">parse</span>( <span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span> )
283
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">json</span>[<span class="ruby-value str">'responseStatus'</span>] <span class="ruby-operator">==</span> <span class="ruby-value">200</span>
284
+ <span class="ruby-identifier">json</span>[<span class="ruby-value str">'responseData'</span>][<span class="ruby-value str">'translatedText'</span>]
285
+ <span class="ruby-keyword kw">else</span>
286
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tries</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-constant">Babelphish</span><span class="ruby-operator">::</span><span class="ruby-constant">MAX_RETRIES</span>
287
+ <span class="ruby-comment cmt"># Try again a few more times</span>
288
+ <span class="ruby-identifier">translate</span>(<span class="ruby-identifier">text</span>, <span class="ruby-identifier">to</span>, <span class="ruby-identifier">from</span>, <span class="ruby-identifier">tries</span><span class="ruby-operator">+=</span><span class="ruby-value">1</span>)
289
+ <span class="ruby-keyword kw">else</span>
290
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">Exceptions</span><span class="ruby-operator">::</span><span class="ruby-constant">GoogleResponseError</span>, <span class="ruby-node">&quot;A problem occured while translating from #{from} to #{to}. #{json['responseDetails']}&quot;</span>
291
+ <span class="ruby-keyword kw">end</span>
292
+ <span class="ruby-keyword kw">end</span>
293
+ <span class="ruby-keyword kw">end</span>
294
+ </pre>
295
+ </div>
296
+ </div>
297
+ </div>
298
+
299
+
300
+ </div>
301
+
302
+
303
+ </div>
304
+
305
+
306
+ <div id="validator-badges">
307
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
308
+ </div>
309
+
310
+ </body>
311
+ </html>