/gtr/gtr
Ruby | 105 lines | 94 code | 7 blank | 4 comment | 8 complexity | 9f625858f76888cd31c9a123db6f09c3 MD5 | raw file
Possible License(s): LGPL-2.0, Unlicense, AGPL-1.0, BitTorrent-1.0, EPL-1.0, GPL-3.0, BSD-3-Clause, GPL-2.0, MIT, CC-BY-SA-3.0, BSD-2-Clause, MPL-2.0, BSD-3-Clause-No-Nuclear-License-2014, JSON, AGPL-3.0, MPL-2.0-no-copyleft-exception, IPL-1.0, LGPL-2.1, ISC, CC-BY-3.0, WTFPL, 0BSD, CC0-1.0, LGPL-3.0, Cube, Apache-2.0
- #!/usr/bin/ruby
- #-- vim:sw=2:et
- #++
- # Author:: Okasu <oka.sux@gmail.com>
- require 'open-uri'
- require 'cgi'
- from = ARGV[0]
- to = ARGV[1]
- subj = CGI.escape(ARGV[2..-1].to_s.gsub(/[\[\]",]/, ""))
- if from == "-h" || from == "--help" || from == nil
- puts <<help
- gtr - translates text from given language to given language
- SYNOPSIS
- gtr [FROM] [TO] [TEXT]
- FROM - code of language you want to translate from
- TO - code of language you want to translate to
- TEXT - your text
- POSSIBLE LANGUAGES AND THEIR CODES
- auto - Special code - automatic recognition of language
- af - Africaans
- sq - Albanian
- ar - Arabic
- hy - Armenian
- az - Azerbaijani
- eu - Basque
- be - Belarusian
- bg - Bulgarian
- ca - Catalan
- zh-CN - Chinese
- hr - Croatian
- cs - Czech
- da - Danish
- nl - Dutch
- en - English
- et - Estonian
- tl - Filipino
- fi - Finnish
- fr - French
- gl - Galician
- ka - Georgian
- de - German
- el - Greek
- ht - Haitian Creole
- iw - Hebrew
- hi - Hindi
- hu - Hungarian
- is - Icelandic
- id - Indonesian
- ga - Irish
- it - Italian
- ja - Japanese
- ko - Korean
- la - Latin
- lv - Latvian
- lt - Lithuanian
- mk - Macedonian
- ms - Malay
- mt - Maltese
- no - Norwegian
- fa - Persian
- pl - Polish
- pt - Portuguese
- ro - Romanian
- ru - Russian
- sr - Serbian
- sk - Slovak
- sl - Slovenian
- es - Spanish
- sw - Swahili
- sv - Swedish
- th - Thai
- tr - Turkish
- uk - Ukrainian
- ur - Urdu
- vi - Vietnamese
- cy - Welsh
- yi - Yiddish
- help
- exit
- end
- open("http://translate.google.com/?sl=#{from}&tl=#{to}&oe=UTF-8&text=#{subj}") do |page|
- page_content = page.read
- rare_word = page_content.scan(/'">.+<\/span><\/s/).to_s.gsub(/['"><\[\]\/\\]/, "")
- words = page_content.scan(/<li>noun<div><div>.*<\/div><\/li><\/ol>/).to_s.gsub(/<\/?\w+>/, ">").squeeze(">").each_line(">").to_a.uniq
- if words == ["[]"]
- puts rare_word[0..-6].gsub("'","'").gsub(/span.*fff/, "")
- break
- end
- words[1..-2].each do |word|
- case word
- when "noun>"; puts "Nouns:"; next
- when "verb>"; puts "\nVerbs:"; next
- when "adjective>"; puts "\nAdjectives:"; next
- when "adverb>"; puts "\nAdverbs:"; next
- end
- puts word.chop
- end
- end