【问题标题】:kivy Buildozer Android build cannot find translation fileskivy Buildozer Android build 找不到翻译文件
【发布时间】:2020-06-17 21:32:50
【问题描述】:

使用 Buildozer 为 Android 构建我的 kivy 应用程序后,运行步骤失败,因为它找不到 gettext 的消息文件。 我的 .spec 文件中有以下行:

source.include_exts = py,png,jpg,kv,atlas,mo,po,ini

.mo 文件位于 ./locales 下的当前应用程序目录中。

我还在 .spec 中包含以下行:

source.include_patterns = locales/*

最后,我在 main.py 中的代码包括:

trans = gettext.translation('base', localedir='locales', languages=[locale.getdefaultlocale()[0][0:2]])

languages 设置为 en 并且 en 目录位于 locales 文件夹中。

看起来好像是 Buildozer 正在拾取这些:

Listing '/Users/martinprater/PycharmProjects/kivy/.buildozer/android/app/locale/de'...
Listing '/Users/martinprater/PycharmProjects/kivy/.buildozer/android/app/locale/de/LC_MESSAGES'...
Listing '/Users/martinprater/PycharmProjects/kivy/.buildozer/android/app/locale/en'...
Listing '/Users/martinprater/PycharmProjects/kivy/.buildozer/android/app/locale/en/LC_MESSAGES'...

如何验证它们是否包含在应用程序中? 谢谢, 马丁

【问题讨论】:

  • 添加一些日志以打印出设备上目录结构的详细信息,然后在 logcat 流中读取这些详细信息,看看它是否符合您的预期。
  • 生成的.apk 实际上是一个zip 文件。您可以unzip 看看apk 中包含的内容。
  • 除了我的代码之外,只有我的图标在包中。我已经尝试通过注释掉包含目录中的所有内容:#source.include_exts = py,png,jpg,kv,atlas。不幸的是同样的效果。

标签: python android kivy gettext buildozer


【解决方案1】:

我不确定这是否是最简单的方法,但可以通过切换到 p4a 本机并使用 setup.py 来解决问题:

setup(
    ...
    package_data={'.': ['main.py', '*.kv', '*.png', 'locales/*/LC_MESSAGES/base.mo']}
)

然后使用 pkg_resources 访问文件:

pkg_resources.resource_filename('pkg', 'locales')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多