السلام عليكم و رحمة الله و بركاته
منذ مدة راودتني فكرة كتابة برنامج يستعين بالواجهة البرمجية لجوجل google api ، بالخصوص خدمة الترجمة التلقائية لتحويل ملفات .po التي تستعملها البرامج الحرة من الإنجليزية إلى العربية، لكني وجدت من سبقني فاعتمدت عليه لإنشاء السكريبت التالي tarjim .
هذا السكريبت تعطيه ملف .po انجليزي فيقوم بترجمته إلى العربية و إنتاج ملفين :
مثلا إذا كان لديك ملف test.po يمكن بدأ ترجمته هكذا :
سيعطيك ملفين
بعدها يمكنك استعمال أحد برامج تحرير ملفات .po مثل kbabel لتصحيح الترجمة التلقائية من جوجل لأنها في الغالب تكون رديئة.
إذا هذا البرنامج لا يعيك ترجمة تلقائية مقبولة دون جهد و لكنه يساعد في وضعك على الطريق.
فيما يلي نص السكريبت و سأضعه أيضا في الملحقات مع العلم أني لم أجربه بعد و هو يحتاج إلى python 2.6 فما فوق أو تثبيت simplejson مع python 2.5.
من قام بتنزيله فلا ينسى بتغيير صلاحيات الملف كي يجعله ملف تنفيذي
أو أو يقوم بوضع كلمة python أمام اسم السكريبت عند تنفيذه
و هذا رابط السكريبت الأصلي
أكرر أن مستوى الترجمة الناتجة عن هذا السكريبت رديئ و يحتاج مراجعة يدوية.
منذ مدة راودتني فكرة كتابة برنامج يستعين بالواجهة البرمجية لجوجل google api ، بالخصوص خدمة الترجمة التلقائية لتحويل ملفات .po التي تستعملها البرامج الحرة من الإنجليزية إلى العربية، لكني وجدت من سبقني فاعتمدت عليه لإنشاء السكريبت التالي tarjim .
هذا السكريبت تعطيه ملف .po انجليزي فيقوم بترجمته إلى العربية و إنتاج ملفين :
- واحد يحمل نفس الإسم و لكن بامتداد .mo الذي يستعمله البرنامج مباشرة
- و آخر بصيغة .po يحتوي على النص العربي و يكون اسمه مشابه لاسم الملف المدخل مع زيادة _ar.
مثلا إذا كان لديك ملف test.po يمكن بدأ ترجمته هكذا :
كود:
tarjim test.po
كود:
test.mo ar_test.po
إذا هذا البرنامج لا يعيك ترجمة تلقائية مقبولة دون جهد و لكنه يساعد في وضعك على الطريق.
فيما يلي نص السكريبت و سأضعه أيضا في الملحقات مع العلم أني لم أجربه بعد و هو يحتاج إلى python 2.6 فما فوق أو تثبيت simplejson مع python 2.5.
من قام بتنزيله فلا ينسى بتغيير صلاحيات الملف كي يجعله ملف تنفيذي
كود:
chmod 755 tarjim
كود:
python tarjim test.po
كود:
#!/usr/bin/env python # The google translate API can be found here: # http://code.google.com/apis/ajaxlanguage/documentation/#Examples # http://code.activestate.com/recipes/576890-python-wrapper-for-google-ajax-language-api/ #import re import sys import urllib import simplejson import polib baseUrl = "http://ajax.googleapis.com/ajax/services/language/translate" def getSplits(text,splitLength=4500): ''' Translate Api has a limit on length of text(4500 characters) that can be translated at once, ''' return (text[index:index+splitLength] for index in xrange(0,len(text),splitLength)) def translate(text, src='', to='en'): ''' A Python Wrapper for Google AJAX Language API: * Uses Google Language Detection, in cases source language is not provided with the source text * Splits up text if it's longer then 4500 characters, as a limit put up by the API ''' params = ({'langpair': '%s|%s' % (src, to), 'v': '1.0' }) retText='' for text in getSplits(text): params['q'] = text resp = simplejson.load(urllib.urlopen('%s' % (baseUrl), data = urllib.urlencode(params))) try: retText += resp['responseData']['translatedText'] except: raise return retText def tarjim(file): po = polib.pofile(file) for entry in (po.untranslated_entries() + po.fuzzy_entries()): entry.msgstr = translate(enrty.msgid, 'en', 'ar') #print entry.msgid, entry.msgstr print "Translated: %d\%." % po.percent_translated() po.save_as_mofile('%s.mo' % file) po.save_as_pofile('ar_%s' % file) if __name__=='__main__': tarjim(sys.argv[1])
أكرر أن مستوى الترجمة الناتجة عن هذا السكريبت رديئ و يحتاج مراجعة يدوية.
تعليق