
目前已有 i18n 库的痛点
gettext 不支持动态选择语言 (比如 Bot 需要根据用户选择语言)f-string 语法, 写起来不够优雅, 不够方便所以, Easy AI18n 诞生了, 解决了以上所有痛点
Easy AI18n 是一个现代化的 Python3 国际化工具库,支持 AI 翻译、多用户场景以及完整的字符串格式化语法,让项目全球化变得更加优雅自然。
https://github.com/z-mio/easy-ai18n
| 其他 i18n 工具 | EasyAI18n |
|---|---|
需手动维护翻译字典, 开发效率低 | 自动提取翻译内容,无需手动维护文件 |
仅支持部分格式化语法 | 完全支持所有格式化语法 |
不支持实时多语言切换,不适用于多用户场景 | 支持默认语言与多语言切换,适配多用户环境 |
通过自定义语言选择器, 在多用户环境中实现动态语言选择:
/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!")) 1 ruanimal 94 天前 下划线是 python 常用变量吧 |