在使用pygbag运行pygame应用时如何获取浏览器语言代码

0 投票
1 回答
27 浏览
提问于 2025-04-14 15:40

我用pygame-ce做了一个游戏,里面的文字是和特定语言对应的。所以在运行游戏的时候,我通过一个函数 locale.getdefaultlocale() 来获取语言代码,然后显示相应的文字。如果获取失败,就显示默认语言的文字。在我的电脑上运行的时候,这个功能挺好用的,但在浏览器里用 pygbag 库运行时,这个函数就不管用了,只能显示默认语言的文字。

我用的函数是这样的:

def _get_language():
    l, e = locale.getdefaultlocale()
    if os.path.exists(os.path.join(STRDIR, f'{l}.json')):
        return (l, 'UTF-8')
    else:
        return ('en_US', 'UTF-8')

有没有办法让这个函数在pygbag(网页)环境和桌面环境下都能正常工作呢?

我想过可以把语言代码作为参数传给Python应用,但我不知道怎么通过修改pygbag生成的 index.html 文件来实现。这样的话,我可能可以用JavaScript来获取语言代码。

我也接受其他解决这个问题的方法。

1 个回答

1

如果你想在使用pygbag的时候获取浏览器的语言,可以查看平台参数。

根据文档,你可以主要区分系统平台是运行在浏览器上还是桌面上。如果平台是“emscripten”,那么你可以确定,如果你导入“platform”,几乎可以获取到你用JavaScript从浏览器实例中得到的所有信息。下面的例子是我用来获取语言代码的:

import sys, platform
if sys.platform == 'emscripten':
    lang = platform.window.navigator.language
    change_language_to(lang)

撰写回答