日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python gettext_python gettext使用

發布時間:2024/7/5 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python gettext_python gettext使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python中使用gettext進行語言國際化的方法

1.編輯源代碼, 保存為gettextdemo.py

import gettext

catalogs = gettext.find("example", localedir="locale", all=True)

print 'catalogs:',catalogs

t = gettext.translation('example', "locale", fallback=True)

_=t.ugettext

print(_("this message"))

2.從源代碼中抽取需要國際化的文本消息,并轉換創建.pot文件, 可以使用的工具為pygettext.py 或者GNU工具 xgettext

這里我使用xgettext, ?MAC上使用homebrew 安裝, 輸入命令:

>brew install xgettext

即可自動完成安裝, 安裝后的默認目錄:/usr/local/Cellar/gettext/0.19.2/,

進入/usr/local/Cellar/gettext/0.19.2/bin 可以看到有很多可執行文件 , 我們這里需要用到xgettext 和 msgfmt

回到正題, 輸入以下命令生成example.pot文件

xgettext -o example.pot gettextdemo.py

3.將example.pot復制到./local/en_US/LC_MESSAGES/example.po, 修改這個文件,替換要國際化的消息內容

如把

msgid "this message"

msgstr "translated message"修改為:

msgid "this message"

msgstr "translated message"

4.將po文件轉換成.mo 二進制文件,

cd locale/en_US/LC_MESSAGES/

msgfmt -o example.mo example.po可以看到轉換后生成的mo是二進制文件,而po,pot都是文本文件

這一步很關鍵,我在弄的時候沒注意到這一步, 直接把.po文件復制成.mo文件, 導致出現以下類似的情況, 掉到坑里,半天爬不出來,汗~

File "C:\env\lib\gettext.py", line 281, in _parse

raise IOError(0, 'Bad magic number', filename)

IOError: [Errno 0] Bad magic number: 'advbus/locale\\ja\\LC_MESSAGES\\noname.mo'

參考資料:

1. 15.1.3

總結

以上是生活随笔為你收集整理的python gettext_python gettext使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。