第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python:翻譯文本顯示 msgid 而不是 msgstr

Python:翻譯文本顯示 msgid 而不是 msgstr

有只小跳蛙 2021-07-07 18:37:11
我是使用 gettext 庫翻譯文本的新手。我想翻譯下一個文件中的文本:dobles_message.pydef set_message(self, language):    t = gettext.translation("basketmetrics_i18n", "../i18n", fallback=True, languages=["'" + language + "'"])    t.install()    _ = t.gettext    self.message = _("mensaje_dd_1")為此,首先我使用以下指令創(chuàng)建了 dobles_message.po:xgettext -i dobles_message.py -o dobles_message.pot -d basketmetrics_i18n然后,我創(chuàng)建了這些目錄結(jié)構(gòu) i18n/es/LC_MESSAGES 和 i18n/en/LC_MESSAGES,并使用以下說明為每個語言創(chuàng)建了 .po 版本:msginit -i dobles_message.pot -o ../i18n/es/LC_MESSAGES/basketmetrics_i18n.po -l esmsginit -i dobles_message.pot -o ../i18n/en/LC_MESSAGES/basketmetrics_i18n.po -l en第三,我更改了字符集并翻譯了每個文件的文本。第四,我在目錄 i18n/es/LC_MESSAGES 和目錄 i18n/en/LC_MESSAGES 中使用此指令從每個 .po 文件創(chuàng)建了 .mo 文件msgfmt basketmetrics_i18n.po -o basketmetrics_i18n.mo但是,當我運行我的應用程序而不是翻譯文本時,我的應用程序會向我顯示 msgid。這些是我的文件和目錄結(jié)構(gòu):
查看完整描述

2 回答

?
慕森王

TA貢獻1777條經(jīng)驗 獲得超3個贊

最后,我發(fā)現(xiàn)了錯誤。由于語言目錄所在目錄的路徑而導致的錯誤。您必須從項目的根目錄而不是從要翻譯文本的文件中指定此路徑。所以,我的功能最終是:


def set_message(self, language):

    t = gettext.translation("basketmetrics_i18n", "../i18n", fallback=True, languages=["'" + language + "'"])

    t.install()

    _ = t.gettext

    self.message = _("mensaje_dd_1")

因為我的目錄語言“i18n”在項目的根目錄下


查看完整回答
反對 回復 2021-07-13
?
慕運維8079593

TA貢獻1876條經(jīng)驗 獲得超5個贊

問題:使用 gettext 庫翻譯文本


從文檔:


獲取文本(消息)


在目錄中查找消息 id 并返回相應的消息字符串,作為 Unicode 字符串。如果目錄中沒有消息 id 的條目,并且已設置回退,則查找將轉(zhuǎn)發(fā)到回退的 gettext() 方法。否則,返回消息 ID。


如果您更改以下內(nèi)容,您的代碼將對我有用languages=[language]:


def set_message(self, language):

    t = gettext.translation(package, localedir, fallback=True, languages=[language])

    t.install()

    _ = t.gettext

    message = _("mensaje_dd_1")


set_message('es')

根據(jù)Python Documentation,您必須執(zhí)行以下操作:


import gettext

gettext.bindtextdomain('myapplication', '/path/to/my/language/directory')

gettext.textdomain('myapplication')

_ = gettext.gettext

# ...

print(_('This is a translatable string.'))


查看完整回答
反對 回復 2021-07-13
  • 2 回答
  • 0 關(guān)注
  • 382 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號