-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Ye Dingding
committed
Jul 11, 2009
1 parent
0140160
commit 11f3abd
Showing
8 changed files
with
142 additions
and
34 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,12 @@ | ||
require 'rubygems' | ||
require 'hoe' | ||
|
||
Hoe.new('rtranslate', '1.0') do |p| | ||
Hoe.new('rtranslate', '1.1') do |p| | ||
p.rubyforge_name = 'rtranslate' | ||
p.author = 'Ye Dingding' | ||
p.email = 'yedingding@gmail.com' | ||
p.url = 'http://sishen.lifegoo.com' | ||
p.url = 'http://github.com/sishen/rtranslate' | ||
p.summary = 'Google translate ruby client api' | ||
p.description = 'A simple, unofficial, ruby client API for using Google Translate.' | ||
p.extra_deps = [['hpricot', '>= 0.4'], ['json', '>= 1.1.3']] | ||
p.extra_deps = [['json', '>= 1.1.3']] | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,23 +1,27 @@ | ||
require File.join(File.dirname(__FILE__), 'rtranslate/language') | ||
require File.join(File.dirname(__FILE__), 'rtranslate/rtranslate') | ||
require File.join(File.dirname(__FILE__), 'rtranslate/detection') | ||
require 'uri' | ||
require 'open-uri' | ||
|
||
begin | ||
require 'hpricot' | ||
require 'json' | ||
rescue LoadError | ||
require 'rubygems' | ||
require 'hpricot' | ||
require 'json' | ||
end | ||
|
||
$KCODE = 'u' | ||
|
||
include Translate | ||
def Translate.t(text, from, to) | ||
begin | ||
RTranslate.translate(text, from, to) | ||
rescue | ||
"Error: " + $! | ||
end | ||
RTranslate.translate(text, from, to) | ||
rescue | ||
"Error: " + $! | ||
end | ||
|
||
def Translate.d(text) | ||
Detection.detect(text) | ||
rescue | ||
"Error: " + $! | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
# The program is a simple, unofficial, ruby client API | ||
# for using Google Translate. | ||
# | ||
# Author:: Dingding Ye (mailto:yedingding@gmail.com) | ||
# Copyright:: Copyright (c) 2007 Dingding Ye | ||
# License:: Distributes under MIT License | ||
|
||
module Translate | ||
class DetectionResponse | ||
attr_reader :abbrev | ||
attr_reader :language | ||
attr_reader :reliability | ||
attr_reader :confidence | ||
|
||
def initialize(json) | ||
@abbrev = json["language"] | ||
@language = Google::Language::Languages[@abbrev] | ||
@reliability = json["isReliable"] | ||
@confidence = json["confidence"] | ||
end | ||
|
||
def to_s | ||
abbrev | ||
end | ||
end | ||
|
||
class Detection | ||
# Google AJAX Language REST Service URL | ||
GOOGLE_DETECTION_URL = "http://ajax.googleapis.com/ajax/services/language/detect" | ||
|
||
# Default version of Google AJAX Language API | ||
DEFAULT_VERSION = "1.0" | ||
|
||
attr_reader :version, :key | ||
|
||
class << self | ||
def detect(text) | ||
Detection.new.detect(text) | ||
end | ||
alias_method :d, :detect | ||
end | ||
|
||
def initialize(version = DEFAULT_VERSION, key = nil) | ||
@version = version | ||
@key = key | ||
end | ||
|
||
def detect(text, details = false) | ||
url = "#{GOOGLE_DETECTION_URL}?q=#{text}&v=#{@version}" | ||
if @key | ||
url << "&key=#{@key}" | ||
end | ||
detection_response = do_detect(url) | ||
details ? detection_response : detection_response.abbrev | ||
end | ||
|
||
private | ||
def do_detect(url) | ||
jsondoc = open(URI.escape(url)).read | ||
response = JSON.parse(jsondoc) | ||
if response["responseStatus"] == 200 | ||
DetectionResponse.new(response["responseData"]) | ||
else | ||
raise StandardError, response["responseDetails"] | ||
end | ||
rescue Exception => e | ||
raise StandardError, e.message | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
# -*- coding: utf-8 -*- | ||
$:.unshift File.expand_path(File.dirname(__FILE__) + "/../lib") | ||
|
||
require 'test/unit' | ||
require 'rtranslate' | ||
|
||
class Translate::DetectionTest < Test::Unit::TestCase | ||
include Google::Language | ||
def test_detection | ||
d = Detection.new | ||
assert_equal "es", d.detect("para poner este importante proyecto en práctica") | ||
assert_equal "en", d.detect("this is a test of the Emergency text categorizing system.") | ||
assert_equal "fr", d.detect("serait désigné peu après PDG d'Antenne 2 et de FR 3. Pas même lui ! Le") | ||
assert_equal "it", d.detect("studio dell'uomo interiore? La scienza del cuore umano, che") | ||
assert_equal "ro", d.detect("taiate pe din doua, in care vezi stralucind brun sau violet cristalele interioare") | ||
assert_equal "pl", d.detect("na porozumieniu, na ³±czeniu si³ i ¶rodków. Dlatego szukam ludzi, którzy") | ||
assert_equal "de", d.detect("sagt Hühsam das war bei Über eine Annonce in einem Frankfurter der Töpfer ein. Anhand von gefundenen gut kennt, hatte ihm die wahren Tats | ||
achen Sechzehn Adorno-Schüler erinnern und daß ein Weiterdenken der Theorie für ihre Festlegung sind drei Jahre Erschütterung Einblick in die Abhängigkeit der Bauarbeiten | ||
sei") | ||
assert_equal "fi", d.detect("koulun arkistoihin pölyttymään, vaan nuoret saavat itse vaikuttaa ajatustensa eteenpäinviemiseen esimerkiksi") | ||
assert_equal "sv", d.detect("enligt all sannolikhet för att få ro oavsiktligt intagit en för") | ||
assert_equal "hu", d.detect("esôzéseket egy kissé túlméretezte, ebbôl kifolyólag a Földet egy hatalmas árvíz mosta el") | ||
assert_equal "fi", d.detect("koulun arkistoihin pölyttymään, vaan nuoret saavat itse vaikuttaa ajatustensa eteenpäinviemiseen esimerkiksi") | ||
assert_equal "nl", d.detect("tegen de kabinetsplannen. Een speciaal in het leven geroepen Landelijk") | ||
assert_equal "da", d.detect("viksomhed, 58 pct. har et arbejde eller er under uddannelse, 76 pct. forsørges ikke længere af Kolding") | ||
assert_equal "cs", d.detect("datují rokem 1862. Naprosto zakázán byl v pocitech smutku, beznadìje èi jiné") | ||
assert_equal "no", d.detect("hånd på den enda hvitere restaurant-duken med en bevegelse så forfinet") | ||
assert_equal "pt", d.detect("popular. Segundo o seu biógrafo, a Maria Adelaide auxiliava muita gente") | ||
assert_equal "en", d.detect("TaffyDB finders looking nice so far!") | ||
end | ||
end |