我如何使用 gettext 翻译第三方 python 模块的字符串

How I can translate the strings of third-party python modules using gettext

在分配时,我需要一个本地化的 CLI 应用程序,出于这些目的,我决定使用 gettext,但是 运行 进入本地化 click 模块的标准输出的问题.有没有办法本地化第三方模块的字符串?

下面我介绍了 click 模块的典型代码以及 gettext

import click
import gettext

ru = gettext.translation('app', localedir='locale', languages=['ru'])
ru.install()

@click.command()
def main():
    pass

if __name__ == "__main__":
    main()

创建 .pot 文件时,可以只本地化我的代码,但我也对第三方模块的本地化感兴趣。

没有简单的方法,所以我将不得不自己搜索并更改点击模块中的字符串。

如果有人需要这样做,在本地翻译第三方库的相对干净和简单的方法是使用 Babel extractor while passing additional paths to it - like that (I did it with zxcvbn,其中所需的字符串已经标记为可翻译:

ZXCVBN_DIR=`python -c "import zxcvbn; import pathlib; print(pathlib.Path(zxcvbn.__file__).parent, end='')"`
pybabel extract -F babel.cfg -o locale/messages.pot my_module_dir ${ZXCVBN_DIR}

在 Docker.

中使用 make 或 运行 命令时,环境变量赋值语法可能会有所不同