Ubuntu 앱 개발자 프로세스를 통해 제출하려는 응용 프로그램을 만들었습니다 . 프로세스 요구 사항 중 하나는 설치시 모든 파일이 /opt/extras.ubuntu.com/<appname>
디렉토리 로 이동해야한다는 것 입니다.
패키징 변경과 다른 사람들의 도움을 통해 그것을 달성했지만 이제는 새로운 문제에 직면하고 있습니다. /opt
앱에서 번역을 실행할 때로 드되지 않습니다.
달리 지정되지 않는 한 응용 프로그램의 번역을 포함하는 이진 파일 (MO 파일)은 /usr/share/locale
(또는 Ubuntu의 경우)에서 로드 /usr/share/locale-langpack
되지만 /opt
요구 사항 으로 인해 내 응용 프로그램 에 설치됩니다. /opt/extras.ubuntu.com/qreator/locale
.
gettext를 사용하면 번역을로드 할 대체 위치를 지정할 수 있으므로 이론 상으로는 문제 bindtextdomain
가되지 않습니다.
import gettext
from gettext import gettext as _
gettext.bindtextdomain('qreator', '/opt/extras.ubuntu.com/qreator/share/locale/')
gettext.textdomain('qreator')
명령 줄에 출력 된 모든 메시지가 예상대로 번역 된 것으로 나타납니다. 그러나 주요 문제를 해결하지 못합니다 : UI Glade에서 번역을로드하려면 번역 도메인을 한 번 더 지정해야 gettext.textdomain('qreator')
하지만 (위 의 호출 과 동일 ) 번역을로드 할 위치를 지정하지 않습니다 (예 : Glade bindtextdomain
슬프게도 존재하지 않습니다). 다음은 내가 사용하는 코드의 추출입니다.
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)
이는 기본적으로 앱이에 설치된 경우 UI에서 번역을로드 할 수 없음을 의미합니다 /opt
.
나는이 시점에서 거의 붙어 있습니다. Glade에서 /opt/extras.ubuntu.com/qreator/share/locale/
대신에 번역을로드하는 방법에 대한 아이디어 가 /usr/share/locale
있습니까?