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



在分配时,我需要一个本地化的 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 提取器,同时向其传递其他路径 - 就像那样(我用 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或运行命令的情况下,Env 变量赋值语法可能会有所不同。

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

最新更新