谷歌翻译

来自 PostgreSQL 维基
跳转到导航跳转到搜索

库片段

使用谷歌翻译翻译字符串

适用于 PostgreSQL

任何版本

PL/PythonU

依赖于

python-simplejson

此函数使用 谷歌翻译 服务翻译字符串。

CREATE OR REPLACE FUNCTION gtranslate(src text, target text, phrase text) RETURNS text
LANGUAGE plpythonu
AS $$
import re
import urllib

import simplejson as json

class UrlOpener(urllib.FancyURLopener):
        version = "py-gtranslate/1.0"

base_uri = "http://ajax.googleapis.com/ajax/services/language/translate"
default_params = {'v': '1.0'}

def translate(src, to, phrase):
        args = default_params.copy()
        args.update({
                'langpair': '%s%%7C%s' % (src, to),
                'q': urllib.quote_plus(phrase),
        })
        argstring = '%s' % ('&'.join(['%s=%s' % (k,v) for (k,v) in args.iteritems()]))
        resp = json.load(UrlOpener().open('%s?%s' % (base_uri, argstring)))
        try:
                return resp['responseData']['translatedText']
        except:
                # should probably warn about failed translation
                return phrase

return translate(src, target, phrase)
$$;

该代码最初来源于 http://code.google.com/p/py-gtranslate 提供的代码。

例子

SELECT gtranslate('de', 'en', 'Die Würde des Menschen ist unantastbar. Sie zu achten und zu schützen ist Verpflichtung aller staatlichen Gewalt.');
                                            gtranslate
--------------------------------------------------------------------------------------------------
 Human dignity is inviolable. To respect and protect it shall be the duty of all state authority.
(1 row)

(来自德意志联邦共和国宪法)