Commit 893a4ef5 authored by Michal Čihař's avatar Michal Čihař

MyMemory backend for machine translation

parent f40acfce
# -*- coding: utf-8 -*-
#
# Copyright © 2012 - 2013 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <http://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import urllib
from trans.machine.base import MachineTranslation
class MyMemoryTranslation(MachineTranslation):
'''
MyMemory machine translation support.
'''
name = 'mymemory'
verbose = 'MyMemory'
def is_supported(self, language):
'''
Any language is supported.
'''
return True
def format_match(self, match):
'''
Reformats match to (translation, quality) tuple.
'''
if match['quality'].isdigit():
quality = int(match['quality'])
else:
quality = 0
return (
match['translation'],
quality * match['match']
)
def download_translations(self, language, text):
'''
Downloads and processes translations.
'''
args = urllib.urlencode({
'q': text,
'langpair': 'en|%s' % language,
})
response = self.json_req(
'http://mymemory.translated.net/api/get?' + args
)
return [self.format_match(match) for match in response['matches']]
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment