ویکیپدیا:درخواستهای ربات/ربات مترجم بر اساس میانویکی/ویرایش ۱
ربات برای ترجمه مقاله به کمک اینترویکی
برای شروع کدهای زیر را در یک فایل متنی با پسوند py. در کنار (در همان فولدر) دیگر رباتهای استاندارد ویکیپدیا (pywikipedia) ذخیره کنید و سپس به عنوان تست فایل را اجرا نمایید.
موارد مورد نیاز
[ویرایش]برای اجرای این ربات موارد زیر مورد نیاز هست
- پایتون ۲٫۶ یا ۲٫۷ این کد بر روی پایتون خانواده ۳ کار نمیکند
- مجموعه رباتهای استاندارد ویکیپدیا (pywikipedia)
- برنامه خواندن متن مانند notepad (که معمولا در همه سیستم عاملها به صورت پیش فرض موجود هست)
اطلاعات فنی
[ویرایش]- مورد یک برای اسم ویکی انگلیسی یا مثلا آلمانی یا حتی برای ویکی فارسی در صورتی که مقاله شما در بخش تست زیر مجموعه کاربری شما هست
- مورد (2) برای آدرس مقاله در ویکیای که در مورد (1) انتخاب کردید
- مورد (3) حرف اختصاری ویکی ای هست که مقاله از آن آمده (زبان) مثلا ممکن است مقالهای انگلیسی از ویکی در تست خود ذخیره کردهاید در این حالت مورد یک fa و مورد (3) en میشود
- مورد (4) زبان مقصد که معمولا چون هدف ما ترجمه به فارسی است همان fa میماند مگر اینکه بخواهید از زبان انگلیسی یا فارسی به انگلیسی یا آلمانی یا موارد دیگر ترجمه کنید
- مورد (5) برای ترجمه مقالات موجود در یک رده است که باید آن رده را مشخص کنید
- مورد (6) نام فایل متن خروجی ربات هست که در کنار فایل ربات ذخیره میشود.
- در صورتی که موارد فوق را تغییر ندهید ربات مقاله موجود در List of stadiums in England در ویکی انگلیسی را ترجمه به فارسی میکند و در فایل متنای به نام FinallResult.txt در کنار فایل پایتون ربات ذخیره میکند . که پس از ویرایش میتوانید نتیجه را در ویکیفا آپلود کنید.
کاربردها
[ویرایش]- این ربات کاربرد بسیاری در ترجمه مقالات و موضوعهایی که به صورت فهرست باشند و همچنین تعداد مقالات مرتبط و موضوع بحث که دارای میان ویکی با ویکی مبدا هستند زیاد باشد.
- برای ترجمه و انتقال الگوها به خصوص الگوهای ناوباکس بسیار کمک میکند تا مواردی که در ویکیفا هستند به سرعت لینکشان ترجمه شود
- با کمی تغییرات جزئی در ربات میتوان یک رده خاص (مثلا از ویکی انگلیسی) را به ربات داد تا همه مقالات آن را ترجمه و آماده نماید تا به کمک ربات استاندارد 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
site = wikipedia.getSite( 'en' ) #(1) Wiki That you want to import the article or template from it. for example 'fa' for wikiFa
- cat = catlib.Category( site,u'Category:Roads in Iran' )#(5)---category
- gen = pagegenerators.CategorizedPageGenerator( cat )
bpage = wikipedia.Page( site,u'List of stadiums in England' )#(2) address that is located in source wiki for example 'List of stadiums in England' pagework = u'List'
text = bpage.get()
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()
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 )