Easy AI18n | 更好用的 Python3 i18n 库

1 天前
 zilingmio

目前已有 i18n 库的痛点

  1. Python 自带的 gettext 不支持动态选择语言 (比如 Bot 需要根据用户选择语言)
  2. 其他库需要手动维护翻译字典, 开发效率低
  3. 都不支持 f-string 语法, 写起来不够优雅, 不够方便

所以, Easy AI18n 诞生了, 解决了以上所有痛点


Easy AI18n 是一个现代化的 Python3 国际化工具库,支持 AI 翻译、多用户场景以及完整的字符串格式化语法,让项目全球化变得更加优雅自然。

https://github.com/z-mio/easy-ai18n


特点

对比

其他 i18n 工具 EasyAI18n
需手动维护翻译字典, 开发效率低 自动提取翻译内容,无需手动维护文件
仅支持部分格式化语法 完全支持所有格式化语法
不支持实时多语言切换,不适用于多用户场景 支持默认语言与多语言切换,适配多用户环境

👥 多用户多语言场景(如 Telegram Bot )

通过自定义语言选择器, 在多用户环境中实现动态语言选择:

/i18n.py:

from pyrogram.types import Message
from easy_ai18n import EasyAI18n, PostLanguageSelector


class MyPostLanguageSelector(PostLanguageSelector):
    def __getitem__(self, msg: Message):
        lang = msg.from_user.language_code
        return super().__getitem__(lang)


i18n = EasyAI18n()

_ = i18n.i18n(post_lang_selector=MyPostLanguageSelector)

if __name__ == "__main__":
    i18n.build(target_lang=['en', 'ru'])

/bot.py:

@bot.on_message()
async def start(__, msg: Message):
    await msg.reply(_[msg]("Hello, world!"))
823 次点击
所在节点    Python
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1159007

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX