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 /opt
le 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 /opt
requisito, 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 bindtextdomain
chiamata 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
?