![](/img/trans.png)
[英]Specified file not found '''FileNotFoundError: [Errno 2] No such file or directory''':
[英]gettext: FileNotFoundError: [Errno 2] No translation file found for domain: 'base'
盡管密切關注文檔和在線資源,但我似乎無法讓我的 GNU gettext 實用程序正常工作。
我的文件夾結構如下:
/
|- src
| |- __init__.py
| |- main.py
|- locales
|- ru
|- LC_MESSAGES
|- base.mo
|- base.po
我的 main.py 的頂部是這樣的(Windows 機器):
import argparse
import gettext
from gettext import gettext as _
argparser = argparse.ArgumentParser()
argparser.add_argument("--language", required=False, default="en")
arguments = argparser.parse_args()
gettext.translation(
"base", localedir=r".\locales", languages=[arguments.language[:2]]
).install()
然而,當我嘗試以英語或俄語運行腳本時,我仍然收到錯誤消息:
FileNotFoundError: [Errno 2] No translation file found for domain: 'base'
我究竟做錯了什么?
我嘗試將locales
目錄放入src
文件夾並刪除點前綴( gettext.translation("base", localedir=r"locales", ...
),但它似乎沒有任何改變。
編輯:添加fallback=True
似乎有效,但翻譯似乎沒有進行。 您可以在此處找到要重現的詳細信息。
我已經設法通過結合執行以下操作來解決我的問題,但不確定具體是哪件事有所幫助:
使用pathlib.Path(__file__).resolve().parents[1] / "locale"
指定絕對路徑,而不是帶點的簡單字符串。
安裝后不覆蓋下划線 - from gettext import gettext as _
必須被刪除,為了使 PyCharm linter 靜音,我使用了這個技巧:
from gettext import gettext as _
def main() -> None:
gettext.translation(...).install()
del globals()["_"] # Keep PyCharm happy
[ru]
,而不是ru
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.