ترجمه ی پارسی در برنامه های PyQt

درود دوستان . در این پست ترجمه ی رابط گرافیکی کاربر PyQt  به پارسی رو آموزش می دم .   در ویندوز بعد از نصب بسته ی پایکیوت نرم افزاری بنام زبان شناس (Linguist) هم روی سیستم نصب می شه . از توی منوی استارت همونجا که پای کیوت قرار داره قابل دسترسیه . Linguist کارش اینه که لغات درون برنامه مون رو همراه ترجمشون می پذیره و در یه فایل ایکس ام ال با فرمت ts  خروجی می ده.   این فایل باید به پسوند qm  تبدیل بشه . من روی ویندوز با زبان شناس کار نکردم ولی  تویراهنمای ویندوز زبان شناس  اشاره شده که qm هم پشتیبانی می شود

و اما روی لینوکس تبدیل ts  به qm براحتی با نصب یه بسته از سافت وار سنتر قابل انجامه. بسته ی  Qt4 linguist tools رو  با حجم ۸۰۰ کیلوبایت  نصب کنید .

خب حالا اپلیکشن ما باید چیزی شبیه این باشه :

from PyQt4 import QtCore, QtGui
import sys

class MainWindow(QtGui.QMainWindow):
    def __init__(self,parent=None):
        QtGui.QMainWindow.__init__(self,parent)

        label = QtGui.QLabel(self.tr("Hello World!"))

        self.setCentralWidget(label)
        self.setWindowTitle(self.tr("Title"))

if __name__=="__main__":
    app = QtGui.QApplication(sys.argv)

    translator = QtCore.QTranslator()
    translator.load("Persian.qm")
    app.installTranslator(translator)

    window = MainWindow()
    window.show()
    app.exec_()

و فایل ts رو می شه دستی برای برنامه هامون ویرایش کنیم – اسم فایل رو هم Persian.ts می ذارم

<!DOCTYPE TS>
<TS version="2.0" language="Persian">
<context>
<name>MainWindow</name>
<message>
<source>Title</source>
<translation>عنوان</translation>
</message>
<message>
<source>Hello World!</source>
<translation>سلام جهان !</translation>
</message>
</context>
</TS>

 

حالا فایل ts  رو به qm  تبدیل می کنم و تمام .   توی ترمینال با تایپ ذستور lrelease فایل ساخته می شه . این دستور ۲تا آرگومان می گیره . آرگومان اول آدرس فایل ts  و دومی  آدرس ذخیره ی qm:

برای من :

lrelease /home/iraj/Desktop/Persian.ts  home/iraj/Desktop/Persian.qm

برنامه با موفقیت ترجمه شد  موفق باشید دوستان 🙂

9 دیدگاه برای «ترجمه ی پارسی در برنامه های PyQt»

  1. سلام
    من احتیاج دارم که از اطلاعات داخل دیتابیس یه گزارش به صورت pdf درست کنم. برای این منظور از کتابخانه ی reportlab استفاده کردم، ولی حالا مشکلی که دارم اینه که این کتابخانه با خوندن عبارات فارسی مشکل داره و اونها رو درست نشون نمیده. ممنون میشم اگر راهنماییم کنید.

  2. سلام
    یه نمونه کد از کاری که میخوام انجام بدم رو توی این لینک قرار دادم.
    http://pars-expert.persiangig.com/other/test.rar/download
    با اجرای برنامه و انتخاب دکمه ی “تهیه گزارش” یه فایل pdf درست میشه، ولی متاسفانه با کاراکترهای فارسی مشکل داره! برای اجرای کد باید فایل reportlab-2.7.win32-py2.7.exe رو هم که در ضمیمه قرار دادم نصب کنید.
    یه سوال دیگه هم در مورد ساختن فایل اجرایی دارم. من با اسفاده از روشی که همینجا آموزش دادید فایل اجرایی برنامه رو درست کردم و میخوام بدونم آیا روشی وجود داره که صفحه مشکی که در حین اجرای برنامه وجود داره از بین بره؟
    خیلی ممنون بابت راهنمایی هاتون

    1. سلام . ماژول زیپورت لب رو تست کردم انگار مشکل از خود بستس که کلا زبان های خاورمیانه ای که معمولا راست به چپ هستن رو ( مثل هبری و عربی) پشتیبانی نمی کنه البته قول دادن که این مشکل رو رفع کنن و روش کار می کنن ولی خب معلوم نیست کی به سرانجام برسه . بسته های دیگه مثل sphinx pypdf pisa رو هم امتحان کردم ولی بعضی هاشون از همون reportlab استفاده می کنن که به مشکل بر می خوریم . ۲ تا راه داریم که این کار رو با خود کیوت انجام بدیم . راه اول با استفاده از paint جداول رو draw کنیم (که برای مبتدی ها کار سختیه ) راه دوم اینه که با استفاده از html جدول رو رسم کنیم و ازش پرینت بگیریم .

      برای نمایش ندادن کنسول هم اگر از pyinstaller استفاده می کنین درون Makespec.py ای که ساخته می شه console=True را به console=False تغییر بدین

      اگر از cx_freeze استفاده میکنین خط زیر رو base = ‘Win32GUI’ رو به Executable() اضافه کنیم . یه چیزی شبیه زیر:

      executables = [Executable("hello.py",base = 'Win32GUI')]) 
      
  3. سلام
    من تصمیم گرفتم برای رفع مشکل فارس نویسی برای تهیه گزارش از اکسل استفاده کنم، ولی متاسفانه اینجا هم با عبارات فارسی دچار مشکل شدم.
    خیلی ممنون میشم اگر راه حلی پیشنهاد کنید.
    باتشکر

  4. سلام من یه برنامه مربوط به یه debbuger دارم از روی یه کتاب می نویسم ، هرچی کتاب نوشته منم خط به خط نوشتم ولی تو قسمتی که مربوط به CLass nameOfClass(): هست بهم خطا می ده ،امکانش هست لطف کنید بگید من کجا رو اشتباه می کنم؟
    اینم لینک فایل:
    http://up.ashiyane.org/images/yiadm4tpzn1gmuf2zg.rar

    1. سلام . بنظر میاد اسکریپت برای پلت فرم ویندوزه . من ویندوز روی سیستمم ندارم و اینکه ماژول my_debugger_defines رو هم ندارم . خطا رو لطفا برام بفرستید

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *