Zıplanacak içerik
  • Üye Ol

QT Designer - PyQt - Arayüzü Tamamen Türkçeleştirme


Muallim-i Âli

Önerilen İletiler

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.

 

qtlinguist1ha4.jpg

 

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 :

 

qtlinguist2st6.jpg

 

 

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 :

 

lineedit2pa1.jpg

 

Sonuç :

 

lineeditha7.jpg

 

# -*- 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_())

Yoruma sekme
Diğer sitelerde paylaş

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.

Misafir
Maalesef göndermek istediğiniz içerik izin vermediğimiz terimler içeriyor. Aşağıda belirginleştirdiğimiz terimleri lütfen tekrar düzenleyerek gönderiniz.
Bu başlığa cevap yaz

×   Zengin metin olarak yapıştırıldı..   Onun yerine sade metin olarak yapıştır

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Önceki içeriğiniz geri getirildi..   Editörü temizle

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Yeni Oluştur...

Önemli Bilgiler

Bu siteyi kullanmaya başladığınız anda kuralları kabul ediyorsunuz Kullanım Koşulu.