Ho creato un'applicazione che vorrei presentare tramite il processo di sviluppo dell'app Ubuntu . Uno dei requisiti per il processo è che una volta installati, tutti i file vanno nella /opt/extras.ubuntu.com/<appname>directory.
Attraverso i cambiamenti nel packaging e con l'aiuto di altri l'ho realizzato, ma ora sto affrontando un nuovo problema: quando eseguo /optle traduzioni dalla mia app non vengono caricate.
Quello che succede è il seguente: se non diversamente specificato, i file binari (file MO) contenenti traduzioni per un'applicazione vengono caricati da /usr/share/locale(o nel caso di Ubuntu, da /usr/share/locale-langpack), ma nella mia app, a causa del /optrequisito, sono installati in /opt/extras.ubuntu.com/qreator/locale.
In teoria va bene, poiché gettext consente di specificare una posizione alternativa per caricare le traduzioni, quindi aggiungo la bindtextdomainchiamata per raggiungere questo obiettivo:
import gettext
from gettext import gettext as _
gettext.bindtextdomain('qreator', '/opt/extras.ubuntu.com/qreator/share/locale/')
gettext.textdomain('qreator')
Funziona bene fino a un certo punto: tutti i messaggi che vengono emessi sulla riga di comando vengono quindi tradotti come previsto. Ma non risolve il problema principale : per caricare le traduzioni dall'interfaccia utente Glade è necessario specificare ancora una volta il dominio di traduzione (l'equivalente alla gettext.textdomain('qreator')chiamata sopra), ma non consente di specificare da dove caricare le traduzioni (ovvero l'equivalente di Glade bindtextdomain, che purtroppo non esiste). Ecco un estratto del codice che sto usando:
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)
Ciò significa essenzialmente che le traduzioni dall'interfaccia utente non possono essere caricate se l'app è installata /opt.
Sono praticamente bloccato a questo punto. Qualche idea su come fare in modo che Glade carichi le traduzioni /opt/extras.ubuntu.com/qreator/share/locale/anziché /usr/share/locale?