簡體   English   中英

gettext: FileNotFoundError: [Errno 2] 找不到域的翻譯文件: 'base'

[英]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似乎有效,但翻譯似乎沒有進行。 您可以在此處找到要重現的詳細信息。

我已經設法通過結合執行以下操作來解決我的問題,但不確定具體是哪件事有所幫助:

  1. 使用pathlib.Path(__file__).resolve().parents[1] / "locale"指定絕對路徑,而不是帶點的簡單字符串。

  2. 安裝后不覆蓋下划線 - from gettext import gettext as _必須被刪除,為了使 PyCharm linter 靜音,我使用了這個技巧:

from gettext import gettext as _

def main() -> None:
    gettext.translation(...).install()
    del globals()["_"]  # Keep PyCharm happy
  1. 語言環境必須是一個列表 - [ru] ,而不是ru

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM