Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Qt'de .ts Dosyaları ile Lokalizasyon: UI String'lerini Hardcode'dan Kurtarmak

nexter

Üye
Katılım
14 Mart 2026
Mesajlar
40
🌍 Dil Dosyalarına Giriş

Kafayı yiyecektim arkadaşlar. Şaka gibi ama, uygulamamın arayüz metinlerini kodun içine direkt yazıyordum. "Kullanıcı Adı", "Şifre", "Giriş Yap"... Her şey hardcode. Sonra bir müşteri çıkageldi, "Bunu İngilizce'ye de çevirebilir miyiz?" dedi. O an, kodumun içine gömülü o yüzlerce string'i tek tek bulup değiştirmenin kabusunu gördüm. Meğerse Qt'nin hazır bir çözümü varmış: .ts (Translation Source) dosyaları.

🛠️ Qt Linguist ile Tanışma

İlk iş, .pro dosyama şu satırları eklemek oldu. Qt Creator'ın işi sizin için otomatik yapmasını beklemeyin, bazen elle müdahale şart.

Kod:
TRANSLATIONS += app_tr_TR.ts
TRANSLATIONS += app_en_US.ts

Sonra terminale daldım ve lupdate komutunu çalıştırdım. Bu sihirli araç, projemdeki tüm tr() fonksiyonları içine alınmış string'leri tarayıp, .ts dosyalarını oluşturuyor.

Kod:
lupdate projeadi.pro

📖 Çeviri Yapmak ve Yayınlamak

Oluşan .ts dosyasını açmak için Qt Linguist uygulamasını kullandım. Arayüzü biraz eski görünse de, işini mükemmel yapıyor. Her bir string için kaynak ve hedef dilde çeviri alanları var. "Giriş Yap" -> "Log In" yaptım. Tüm çevirileri tamamlayıp kaydettikten sonra, sıra geldi bu XML benzeri .ts dosyasını, uygulamanın okuyabileceği yoğun bir .qm (Qt Message) dosyasına çevirmeye.

Kod:
lrelease app_en_US.ts

Artık elimde app_en_US.qm dosyam vardı. Uygulama başlangıcında, sadece aşağıdaki gibi birkaç satır kodla bu dosyayı yükleyip, tüm arayüz anında İngilizce'ye dönebiliyor.

Python:
translator = QTranslator()
translator.load("app_en_US.qm", ".")
app.installTranslator(translator)

💡 Hardcode'dan Kurtulmanın Huzuru

Şaka gibi ama, bu sisteme geçtikten sonra yeni bir dil eklemek saatler süren bir iş olmaktan çıkıp dakikalar süren bir iş haline geldi. Kodum temizlendi, sadece tr("metin") ifadeleri kaldı. Çevirmen, kodla hiç uğraşmadan sadece .ts dosyasıyla ilgilenebiliyor. StackOverflow'da bile bu kadar temiz bir çözüm aramıştım.

Peki ya siz? UI metinlerinizi nasıl yönetiyorsunuz? Hiç hardcode string kabusu yaşadınız mı? Qt'nin bu sisteminde takıldığınız, "keşke şöyle olsaydı" dediğiniz bir nokta var mı?
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri