ویکیپدیا:درخواستهای ربات/ربات مترجم بر اساس میانویکی/ویرایش ۲
ربات برای ترجمه مقاله به کمک اینترویکی
برای شروع کدهای زیر را در یک فایل متنی با پسوند py. در کنار (در همان فولدر) دیگر رباتهای استاندارد ویکیپدیا (pywikipedia) ذخیره کنید و سپس به عنوان تست فایل را اجرا نمایید.
موارد مورد نیاز[ویرایش]
برای اجرای این ربات موارد زیر مورد نیاز هست
- پایتون ۲٫۶ یا ۲٫۷ این کد بر روی پایتون خانواده ۳ کار نمیکند
- مجموعه رباتهای استاندارد ویکیپدیا (pywikipedia)
- برنامه خواندن متن مانند notepad (که معمولا در همه سیستم عاملها به صورت پیش فرض موجود هست)
اطلاعات فنی[ویرایش]
- مورد یک برای اسم ویکی انگلیسی یا مثلا آلمانی یا حتی برای ویکی فارسی در صورتی که مقاله شما در بخش تست زیر مجموعه کاربری شما هست
- مورد (2) برای آدرس مقاله در ویکیای که در مورد (1) انتخاب کردید
- مورد (3) حرف اختصاری ویکی ای هست که مقاله از آن آمده (زبان) مثلا ممکن است مقالهای انگلیسی از ویکی در تست خود ذخیره کردهاید در این حالت مورد یک fa و مورد (3) en میشود
- مورد (4) زبان مقصد که معمولا چون هدف ما ترجمه به فارسی است همان fa میماند مگر اینکه بخواهید از زبان انگلیسی یا فارسی به انگلیسی یا آلمانی یا موارد دیگر ترجمه کنید
- مورد (5) برای ترجمه مقالات موجود در یک رده است که باید آن رده را مشخص کنید
- مورد (6) نام فایل متن خروجی ربات هست که در کنار فایل ربات ذخیره میشود.
- در صورتی که موارد فوق را تغییر ندهید ربات مقالههای ( u'List of football stadiums in Spain',u'List of football stadiums in Italy',u'List of football stadiums in Brazil',u'List of football stadiums in Germany',u'List of football stadiums in Austria',u'List of football stadiums in Canada' ) در ویکی انگلیسی را ترجمه به فارسی میکند و در فایل متنای به نام FinallResult.txt در کنار فایل پایتون ربات ذخیره میکند . که پس از ویرایش میتوانید نتیجه را در ویکیفا به صورت دستی یا به کمک ربات pagefromfile.py آپلود کنید.
کاربردها[ویرایش]
- این ربات کاربرد بسیاری در ترجمه مقالات و موضوعهایی که به صورت فهرست باشند و همچنین تعداد مقالات مرتبط و موضوع بحث که دارای میان ویکی با ویکی مبدا هستند زیاد باشد.
- برای ترجمه و انتقال الگوها به خصوص الگوهای ناوباکس بسیار کمک میکند تا مواردی که در ویکیفا هستند به سرعت لینکشان ترجمه شود
- به کمک ربات استاندارد pagefromfile.py (که در بسته رباتهای استاندارد ویکیپدیا موجود هست) میتوان ترجمهها را در ویکیفا بارگذاری کرد.
- در این ویرایش برای سرعت بخشیدن به کار می توان نام چند صفحه را با هم به ربات داد تا یکی پس از دیگری صفحات را ترجمه و در فایل متنی ذخیره نماید.
<syntaxhighlight lang="python">
- !/usr/bin/python
- -*- coding: utf-8 -*-
- Reza(User:reza1615), 2011
- Distributed under the terms of the CC-BY-SA 3.0 .
import catlib ,pprint ,pagegenerators import wikipedia,add_text import codecs,time,string,re
def englishdictionry( enlink ):
site = wikipedia.getSite( 'en' )#(3)------------change to source wiki name------ apage = wikipedia.Page( site,enlink ) enlinkfinall = '' + enlink + '$' NOPAGE = False try: atext = apage.get() except wikipedia.IsRedirectPage: apage = apage.getRedirectTarget() try: atext = apage.get() except: return enlinkfinall except: return enlinkfinall if not NOPAGE == True: if atext.find( '[[fa:' ) != -1: #(4)------------change to finall wiki name------ falink = atext.split( '[[fa:' )[1] falink = falink.split( ']]' )[0] falink = '' + falink + '$'# $ because of Bot doesn't repeat one link two times return falink else: return enlinkfinall else: return enlinkfinall
def farsiwriter( text ):
with codecs.open( 'FinallResult.txt',mode = 'a',encoding = 'utf8' ) as f:# (6)-----Name of Text file that it will save as translation f.write( text ) f.close()
site = wikipedia.getSite( 'en' ) #(1) Wiki That you want to import the article or template from it. for example 'fa' for wikiFa PagesList = ( u'List of football stadiums in Spain',u'List of football stadiums in Italy',u'List of football stadiums in Brazil',u'List of football stadiums in Germany',u'List of football stadiums in Austria',u'List of football stadiums in Canada' )#(2) address that is located in source wiki for example 'List of stadiums in England'
for pagelist in PagesList:
bpage = wikipedia.Page( site,pagelist ) pagework = u'List' text = bpage.get() newtext = ' ' count = 0 pagework = str( pagework ) pprint.pprint( pagework ) for link in text.split( '[[' ): count = count + 1 link = link.split( ']]' )[0] linkeng = '' + link + '' link = link.split( '|' )[0].strip() if link == : continue if link.find( '{' ) != -1: continue if link.find( 'file:' ) != -1: continue if link.find( '#' ) != -1: continue if link.find( 'File:' ) != -1: continue if link.find( 'Image:' ) != -1: continue if link.find( 'image:' ) != -1: continue if link.find( '$' ) != -1: continue falink = englishdictionry( link ) first = text.split( '[[' )[0:count - 1] newtext = newtext + falink text = text.replace( linkeng,falink ) pprint.pprint( linkeng ) pprint.pprint( 'InterWiki Tranlation==> ' + falink ) text = text.replace( '$', ) pprint.pprint( text ) pagework = str( pagework ) pagework = pagework.replace( '[[', ) pagework = pagework.replace( ']]', ).strip() pagework = englishdictionry( pagework ) pagework = pagework.replace( '[[', ) pagework = pagework.replace( '$', ) pagework = pagework.replace( ']]', ).strip() textresult = u'xxx\nXXX%sXXX\n%s\nxxx\n' % ( pagework,text ) farsiwriter( textresult )