QML dosyalarını çevrilebilir hale getirmek için gettext nasıl kullanılır


10

Python ( PySide ) ve QML tabanlı bir QtQuick uygulaması yazmak istiyorum .

Qt uygulamalarının kendi çeviri teknolojilerine sahip olduğunu biliyorum, ancak bunun için metin almak istiyoruz . Aşağıdakilerin mümkün olup olmadığını bilmek istiyorum:

  • QML dosyalarında çeviri için dizeleri gettext araçlarının bir .potdosyaya çıkarabileceği şekilde işaretleyin
  • Gettext'in çalışma zamanında QML dosyalarını çevirmesini sağlayın.

Bu C ++, Unity 2D kodunda yapıldığını biliyorum , bu yüzden Python ile nasıl yapılabilir merak ediyorum.

Not: gettext ve Qt Linguist formatları arasında dönüştürme yapmak değil, çalışma zamanında yalnızca gettext kullanmaktan bahsediyorum.

Yanıtlar:


6

Genel olarak konuşursak, QT'de gettext çevirisini kullanmanın bir yolu yoktur, çünkü kütüphane burada QTBUG-2404'te belirtildiği gibi bir dahili çeviri mekanizması (Qtranslate ve .ts dosyaları) kullanır .

Ancak, uygulanabilir bir alternatif var.

QT ile nakliye, .ts dosyalarını .po ve tersine dönüştürmek için kullanılabilen lconvert adlı bir araç seti vardır .

Böylece tüm çevirinizi şunlarla çıkarabilirsiniz:

lupdate

Sonra bir po dosyası almak için lconvert kullanın:

lconvert -of po -o file.po file.ts

Çeviriden sonra po dosyasını ts'ye dönüştürebilirsiniz:

lconvert -of ts -o file.ts file.po

Ardından yazılımınızda kullanabilirsiniz.

lupdate hem QT hem de QtQuick için kullanılabilir.


1
Cevap için teşekkürler!. Dönüştürme araçlarının farkındayım, ancak gettext çalışma zamanında çevirileri yüklemesini sağlamayacaklar. Unity 2D çocuklar C ++ 'da yaptığı gibi, Qt tercüme çağrısı geçersiz kılma teknik olarak mümkün olduğunu biliyorum, ben sadece Python bunu nasıl anlamaya çalışıyorum.
David Planella

0

Sen lupdate kaynağını kesmek için qsTr yerine istediğiniz bir şey kullanabilirsiniz. (kolay) ve sonra hack kullanmak lupdate + lconvert + gettext hedef ulaşmak için libintl custome.


1
Nasıl olduğunu açıklayınız.
Kaz Wolfe

qdeclarative.cpp (lupdte kaynak kodunda) açın "qsTr" bulmak istediğiniz herhangi bir şey ile değiştirin, "dsTr" kullanın varsayalım. Sonra qml içinde dsTr ("siz string") kullanın. ts dosyası oluşturmak için değiştirilmiş lupdat kullandıktan sonra lconvert bir pot dosyası oluşturun. Son ihtiyacınız dsTr'yi global bağlama taşıyın ve dışa aktarın
snyh

Git ve yanıta koy. Genel bir kural olarak, her zaman nasıl ve sonra kaynak verin.
Kaz Wolfe
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.