Φ Muallim-i Âli Gönderi tarihi: 31 Mayıs , 2008 Paylaş Gönderi tarihi: 31 Mayıs , 2008 Qt Designer ile birlikte kurulan Linguist adlı programı çalıştırıyoruz. Daha sonra File > Open menüsünden Qt' nin kurulu olduğu dizindeki translations klasöründen qt_untranslated.ts adlı dosyayı seçip açıyoruz. Diyelim ki lineEdit e sağ tıklayınca gelen menüdeki yazıları Türkçe yapmak istiyoruz. Yapmamız gereken aşağıdaki resimdeki gibi QLineEdit i seçmek ve altındakileri tıklayıp sağ kısımdaki Translation bölümüne & karakterini koyduktan sonra karşılığını yazmak. & karakterini olmayanlarda aynı durum söz konusu değildir. Onların karşılıklarını direk yazabilirsiniz. Dil çalışmamızı ayrı bir dosya olarak save_as kısmından kaydedebiliriz. Eğer dil dosyasını kaydedersek daha sonra üzerinde istediğimiz kısımları da istediğimiz dilde çeviri için düzenleyebiliriz. qm dosyası üzerinde oynama yapılamaz. Şimdi aşağıdaki resimdeki yönergeleri yaparak .qm adlı dosyayı oluşturalım : Evet geriye bir tek .qm dosyasını arayüze uygulamak kaldı. qt_turkce.qm diye dosyayı oluşturduğunuzu varsayıyorum : app = QtGui.QApplication(sys.argv) kodundan hemen sonra aşağıdaki tarzda kodlarımızı yazıyoruz : 1. yol : (C:\ dizinine qt_turkce.qm diye dosyayı oluşturduğunuzu varsayıyorum.) tr_yukle = QtCore.QTranslator() tr_yukle.load("C:/qt_turkce.qm") app.installTranslator(tr_yukle) 2. yol : (Eğer .pyw dosyamızın bulunduğu dizine koymak istiyorsak bu dosyayı o zaman şöyle bir yol izlenebilir.) dizin_pyw = os.path.realpath(__file__) # En sondaki nokta karakterini arayıp konumunu buluyoruz. dizin = dizin_pyw.rfind('.') # dizin - 6 ile .pyw den önceki kısım ne kadarlık karakterse / karaktere kadar olan kısımı alıyoruz. dizin = dizin_pyw[: dizin - 6] # Eğer C:\ şeklinde bulduysa C:/ bu hâle getiriyoruz. # Gerçi bu hâle getirmesek de düzgün çalışıyor. (Linux'ta denemedim) if dizin.find('\\'): # Eğer .pyw dosyamızın olduğu yerde bir klasöre atacaksak onu burada ekliyoruz. dizin = dizin.replace('\\', '/') + "ts/" # Qt dil dönüştürücünü tr_yukle değişkenine atama yapıyoruz. tr_yukle = QtCore.QTranslator() # Eğer buradaki gibi (dizin + "dosya_adi.qm") şeklinde yapmazsanız, qm dosyasını yüklenmez. # Ya bu tarzda yapın veya 1. yolu deneyin. tr_yukle.load(dizin + "qt_turkce.qm") # qm dosyasımı arayüze yüklüyoruz. app.installTranslator(tr_yukle) İlk Hâli : Sonuç : # -*- coding: utf-8 -*- import sys, os from PyQt4 import QtCore, QtGui class turkce: def __init__(self, ui): self.ui = ui class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(QtCore.QSize(QtCore.QRect(0,0,300,300).size()).expandedTo(MainWindow.minimumSizeHint())) MainWindow.setMinimumSize(QtCore.QSize(300,300)) MainWindow.setMaximumSize(QtCore.QSize(300,300)) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.lineEdit = QtGui.QLineEdit(self.centralwidget) self.lineEdit.setGeometry(QtCore.QRect(30,90,241,31)) self.lineEdit.setObjectName("lineEdit") MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "lineEdit - Türkçe Menü", None, QtGui.QApplication.UnicodeUTF8)) app = QtGui.QApplication(sys.argv) """ dizin_pyw = os.path.realpath(__file__) dizin = dizin_pyw.rfind('.') dizin = dizin_pyw[: dizin - 6] if dizin.find('\\'): dizin = dizin.replace('\\', '/') + "ts/" """ tr_yukle = QtCore.QTranslator() tr_yukle.load("C:\qt_turkce.qm") app.installTranslator(tr_yukle) window = QtGui.QMainWindow() ui = Ui_MainWindow() ui.setupUi(window) window.show() sys.exit(app.exec_()) Alıntı Yoruma sekme Diğer sitelerde paylaş Daha Fazla Paylaşım Siteleri
Önerilen İletiler
Katılın Görüşlerinizi Paylaşın
Şu anda misafir olarak gönderiyorsunuz. Eğer ÜYE iseniz, ileti gönderebilmek için HEMEN GİRİŞ YAPIN.
Eğer üye değilseniz hemen KAYIT OLUN.
Not: İletiniz gönderilmeden önce bir Moderatör kontrolünden geçirilecektir.