Ubuntu uygulama geliştirici süreci aracılığıyla göndermek istediğim bir uygulama oluşturdum . İşlem için gereksinimlerden biri, yüklendiğinde tüm dosyaların /opt/extras.ubuntu.com/<appname>
dizine girmesidir .
Paketlemedeki değişiklikler ve diğerlerinin yardımıyla bunu başardım, ancak şimdi yeni bir sorunla karşılaşıyorum: /opt
Uygulamamın çevirilerinden çalışırken yüklenmiyor.
Ne olur: aksi belirtilmedikçe, bir uygulama için çeviriler içeren ikili dosyalar (MO dosyaları) yüklenir /usr/share/locale
(veya Ubuntu durumunda, itibaren /usr/share/locale-langpack
), ancak benim uygulamada, /opt
gereksinim nedeniyle , /opt/extras.ubuntu.com/qreator/locale
.
Gettext , çevirileri yüklemek için alternatif bir konum belirtmeye izin verdiği için bu teoride iyidir, bu yüzden bunu bindtextdomain
başarmak için çağrıyı ekliyorum :
import gettext
from gettext import gettext as _
gettext.bindtextdomain('qreator', '/opt/extras.ubuntu.com/qreator/share/locale/')
gettext.textdomain('qreator')
Bu bir noktaya kadar iyi çalışır: komut satırında çıkan tüm iletiler beklendiği gibi çevrilmiş olarak görünür. Ancak ana sorunu çözmez : UI Glade'den çevirileri yüklemek için çeviri alanının bir kez daha belirtilmesi gerekir ( gettext.textdomain('qreator')
yukarıdaki çağrıya eşdeğerdir ), ancak çevirilerin nereden yükleneceğini belirtmeye izin vermez (yani, Glade, bindtextdomain
ne yazık ki mevcut değil). İşte kullandığım kodun bir özeti:
builder = Gtk.Builder()
builder.set_translation_domain('qreator')
# There isn't a way to tell glade to load translations from
# somewhere else than /usr/share/locale here
builder.add_from_file(ui_filename)
Bu, esasen, uygulamanız yüklüyse kullanıcı arayüzünden çevirilerin yüklenemeyeceği anlamına gelir /opt
.
Bu noktada oldukça sıkışıp kaldım. /opt/extras.ubuntu.com/qreator/share/locale/
Bunun yerine Glade yük çevirilerini nasıl yapacağınız hakkında bir fikriniz var /usr/share/locale
mı?