代码之家  ›  专栏  ›  技术社区  ›  Дмитрий Ковальчук

如何使用babel翻译Python GUI应用程序?

  •  0
  • Дмитрий Ковальчук  · 技术社区  · 2 年前

    我将非常感谢您的帮助:

    我正在尝试本地化我的GUI应用程序,比如说白俄罗斯语言。我已经提取了一个标签字符串并编译了一个.mo文件。第一次尝试时,我只想在加载应用程序后,打开默认翻译了上述字符串的应用程序。然而,由于某种原因,翻译似乎被跳过了。 你能帮我找出错误在哪里吗?:

    messages.mo目录:C:\Users\MyUser\PycharmProjects\PersFin\translations\be\LC_messages

    我要翻译的标签字符串:

    my_transactions_frame = tkinter.LabelFrame(frame, text=_("**My Transactions**"),
        font=('Helvetica', 12, 'bold'), fg='dodger blue')
    

    翻译代码(主程序部分之前的开始块):

    translations = Translations.load(r'C:\Users\MyUser\PycharmProjects\PersFin\translations\be\LC_MESSAGES', locales=[Locale('be')])
    os.environ['LANG'] = 'be'
    translations.install()
    

    这就是.po文件所包含的内容(.mo文件是从中编译的):

    # Belarusian translations for PROJECT.
    # Copyright (C) 2023 ORGANIZATION
    # This file is distributed under the same license as the PROJECT project.
    # FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
    #
    msgid ""
    msgstr ""
    "Project-Id-Version: PROJECT VERSION\n"
    "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
    "POT-Creation-Date: 2023-08-30 22:36+0300\n"
    "PO-Revision-Date: 2023-08-30 22:40+0300\n"
    "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
    "Language: be\n"
    "Language-Team: be <[email protected]>\n"
    "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
    "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
    "MIME-Version: 1.0\n"
    "Content-Type: text/plain; charset=utf-8\n"
    "Content-Transfer-Encoding: 8bit\n"
    "Generated-By: Babel 2.9.1\n"
    
    #: PersFin_5.0.py:572
    msgid "My Transactions"
    msgstr "Мае Транзакцыі"
    

    我尝试过:重新编译.mo文件,重新启动IDE,检查目的地/目录,gettext。。。

    0 回复  |  直到 2 年前
        1
  •  0
  •   Jason Kohles    2 年前

    这不起作用,因为您已包含 be\LC_MESSAGES 在你经过的路上 Translations.load 。该路径应结束于translations目录的顶部,在那里它可以找到不同语言的子目录,以便可以使用指定的区域设置来选择要使用的子目录。