Guest User

On the fly translation, AutoHotKey;

a guest
Oct 31st, 2025
21
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.09 KB | None | 0 0
  1. ; By balawi28
  2. ; Forked by Valravn, from original:https://github.com/balawi28/AHKFastTranslator
  3. ; Stripped everything, this is an app with no gui. Win+R and type shell:startup, paste the executable there for it to start at system start
  4. ; you can compile different executables with different target langs and different shortcuts for each!
  5.  
  6. ; Hotkey: Ctrl+Shift+T
  7.  
  8.  
  9. dict := GetLanguagesDict()
  10.  
  11. SourceLang := "English"
  12. TargetLang := "Swedish"
  13.  
  14. ^+t::
  15. {
  16. ; Clear clipboard
  17. Clipboard := ""
  18. ; Copy selected text
  19. Send ^c
  20. ; Wait for clipboard to contain data
  21. ClipWait 2
  22.  
  23. if (Clipboard != "")
  24. {
  25. TextToTranslate := Clipboard
  26. url := TranslateURL(dict[SourceLang], dict[TargetLang], TextToTranslate)
  27. response := PostRequest(url)
  28. cleanResponse := SubStr(response, 3, StrLen(response) - 4)
  29. ; Replace clipboard with translation
  30. Clipboard := cleanResponse
  31. ; Paste translation
  32. Send ^v
  33. }
  34. }
  35. return
  36.  
  37. EncodeParams(params)
  38. {
  39. encodedParams := ""
  40. for key, value in params
  41. {
  42. encodedKey := key
  43. encodedValue := value
  44. encodedParams .= (encodedParams = "") ? encodedKey . "=" . encodedValue : "&" . encodedKey . "=" . encodedValue
  45. }
  46. Return encodedParams
  47. }
  48. PostRequest(url){
  49. response := ComObjCreate("WinHttp.WinHttpRequest.5.1")
  50. response.Open("POST", url, false)
  51. response.Send()
  52. Return response.ResponseText
  53. }
  54. TranslateURL(sourceLang, targetLang, textToTranslate)
  55. {
  56. baseUrl := "http://translate.google.com/translate_a/t?"
  57. params := []
  58. params["sl"] := sourceLang
  59. params["tl"] := targetLang
  60. params["uptl"] := targetLang
  61. params["q"] := UriEncode(textToTranslate)
  62. params["client"] := "p"
  63. params["hl"] := "en"
  64. params["sc"] := "2"
  65. params["ie"] := "UTF-8"
  66. params["oe"] := "UTF-8"
  67. params["oc"] := "1"
  68. params["prev"] := "conf"
  69. params["psl"] := "auto"
  70. params["ptl"] := "en"
  71. params["otf"] := "1"
  72. params["it"] := "sel.8936"
  73. params["ssel"] := "0"
  74. params["tsel"] := "3"
  75. Return baseUrl . EncodeParams(params)
  76. }
  77.  
  78. ; UriEncode function is written by the-Automator
  79. ; https://www.the-automator.com/parse-url-parameters/
  80. UriEncode(Uri, RE="[0-9A-Za-z]")
  81. {
  82. VarSetCapacity(Var, StrPut(Uri, "UTF-8"), 0)
  83. StrPut(Uri, &Var, "UTF-8")
  84. While Code := NumGet(Var, A_Index-1, "UChar")
  85. {
  86. Res .= (Chr := Chr(Code)) ~= RE ? Chr : Format("%{:02X}", Code)
  87. }
  88. Return Res
  89. }
  90. GetLanguagesDict(){
  91. global dict
  92. if !dict {
  93. dict := {}
  94. dict["_Auto Detect_"] := "auto"
  95. dict["Afrikaans"] := "af"
  96. dict["Albanian"] := "sq"
  97. dict["Amharic"] := "am"
  98. dict["Arabic"] := "ar"
  99. dict["Armenian"] := "hy"
  100. dict["Assamese"] := "as"
  101. dict["Aymara"] := "ay"
  102. dict["Azerbaijani"] := "az"
  103. dict["Bambara"] := "bm"
  104. dict["Basque"] := "eu"
  105. dict["Belarusian"] := "be"
  106. dict["Bengali"] := "bn"
  107. dict["Bhojpuri"] := "bho"
  108. dict["Bosnian"] := "bs"
  109. dict["Bulgarian"] := "bg"
  110. dict["Catalan"] := "ca"
  111. dict["Cebuano"] := "ceb"
  112. dict["Chinese (Simplified)"] := "zh-CN"
  113. dict["Chinese (Traditional)"] := "zh-TW"
  114. dict["Corsican"] := "co"
  115. dict["Croatian"] := "hr"
  116. dict["Czech"] := "cs"
  117. dict["Danish"] := "da"
  118. dict["Dhivehi"] := "dv"
  119. dict["Dogri"] := "doi"
  120. dict["Dutch"] := "nl"
  121. dict["English"] := "en"
  122. dict["Esperanto"] := "eo"
  123. dict["Estonian"] := "et"
  124. dict["Ewe"] := "ee"
  125. dict["Filipino (Tagalog)"] := "fil"
  126. dict["Finnish"] := "fi"
  127. dict["French"] := "fr"
  128. dict["Frisian"] := "fy"
  129. dict["Galician"] := "gl"
  130. dict["Georgian"] := "ka"
  131. dict["German"] := "de"
  132. dict["Greek"] := "el"
  133. dict["Guarani"] := "gn"
  134. dict["Gujarati"] := "gu"
  135. dict["Haitian Creole"] := "ht"
  136. dict["Hausa"] := "ha"
  137. dict["Hawaiian"] := "haw"
  138. dict["Hebrew"] := "he"
  139. dict["Hindi"] := "hi"
  140. dict["Hmong"] := "hmn"
  141. dict["Hungarian"] := "hu"
  142. dict["Icelandic"] := "is"
  143. dict["Igbo"] := "ig"
  144. dict["Ilocano"] := "ilo"
  145. dict["Indonesian"] := "id"
  146. dict["Irish"] := "ga"
  147. dict["Italian"] := "it"
  148. dict["Japanese"] := "ja"
  149. dict["Javanese"] := "jv"
  150. dict["Kannada"] := "kn"
  151. dict["Kazakh"] := "kk"
  152. dict["Khmer"] := "km"
  153. dict["Kinyarwanda"] := "rw"
  154. dict["Konkani"] := "gom"
  155. dict["Korean"] := "ko"
  156. dict["Krio"] := "kri"
  157. dict["Kurdish"] := "ku"
  158. dict["Kurdish (Sorani)"] := "ckb"
  159. dict["Kyrgyz"] := "ky"
  160. dict["Lao"] := "lo"
  161. dict["Latin"] := "la"
  162. dict["Latvian"] := "lv"
  163. dict["Lingala"] := "ln"
  164. dict["Lithuanian"] := "lt"
  165. dict["Luganda"] := "lg"
  166. dict["Luxembourgish"] := "lb"
  167. dict["Macedonian"] := "mk"
  168. dict["Maithili"] := "mai"
  169. dict["Malagasy"] := "mg"
  170. dict["Malay"] := "ms"
  171. dict["Malayalam"] := "ml"
  172. dict["Maltese"] := "mt"
  173. dict["Maori"] := "mi"
  174. dict["Marathi"] := "mr"
  175. dict["Meiteilon (Manipuri)"] := "mni-Mtei"
  176. dict["Mizo"] := "lus"
  177. dict["Mongolian"] := "mn"
  178. dict["Myanmar (Burmese)"] := "my"
  179. dict["Nepali"] := "ne"
  180. dict["Norwegian"] := "no"
  181. dict["Nyanja (Chichewa)"] := "ny"
  182. dict["Odia (Oriya)"] := "or"
  183. dict["Oromo"] := "om"
  184. dict["Pashto"] := "ps"
  185. dict["Persian"] := "fa"
  186. dict["Polish"] := "pl"
  187. dict["Portuguese"] := "pt"
  188. dict["Punjabi"] := "pa"
  189. dict["Quechua"] := "qu"
  190. dict["Romanian"] := "ro"
  191. dict["Russian"] := "ru"
  192. dict["Samoan"] := "sm"
  193. dict["Sanskrit"] := "sa"
  194. dict["Scots Gaelic"] := "gd"
  195. dict["Sepedi"] := "nso"
  196. dict["Serbian"] := "sr"
  197. dict["Sesotho"] := "st"
  198. dict["Shona"] := "sn"
  199. dict["Sindhi"] := "sd"
  200. dict["Sinhala (Sinhalese)"] := "si"
  201. dict["Slovak"] := "sk"
  202. dict["Slovenian"] := "sl"
  203. dict["Somali"] := "so"
  204. dict["Spanish"] := "es"
  205. dict["Sundanese"] := "su"
  206. dict["Swahili"] := "sw"
  207. dict["Swedish"] := "sv"
  208. dict["Tagalog (Filipino)"] := "tl"
  209. dict["Tajik"] := "tg"
  210. dict["Tamil"] := "ta"
  211. dict["Tatar"] := "tt"
  212. dict["Telugu"] := "te"
  213. dict["Thai"] := "th"
  214. dict["Tigrinya"] := "ti"
  215. dict["Tsonga"] := "ts"
  216. dict["Turkish"] := "tr"
  217. dict["Turkmen"] := "tk"
  218. dict["Twi (Akan)"] := "ak"
  219. dict["Ukrainian"] := "uk"
  220. dict["Urdu"] := "ur"
  221. dict["Uyghur"] := "ug"
  222. dict["Uzbek"] := "uz"
  223. dict["Vietnamese"] := "vi"
  224. dict["Welsh"] := "cy"
  225. dict["Xhosa"] := "xh"
  226. dict["Yiddish"] := "yi"
  227. dict["Yoruba"] := "yo"
  228. dict["Zulu"] := "zu"
  229. }
  230. Return dict
  231. }
Advertisement
Add Comment
Please, Sign In to add comment