
Security News
Crates.io Users Targeted by Phishing Emails
The Rust Security Response WG is warning of phishing emails from rustfoundation.dev targeting crates.io users.
Easy AI18n is a modern internationalization tool library for Python3. It supports AI translation, multi-user scenarios, and full string formatting syntax, making globalization of your project more elegant and natural.
_()
to wrap translatable texts, seamlessly integrating into your code[]
selector for multilingual supportOther i18n Tools | EasyAI18n |
---|---|
![]() Requires manual maintenance of keys and i18n files, high development cost | ![]() Automatically extracts translation content, no manual file maintenance needed |
![]() Supports only partial formatting syntax | ![]() Fully supports all formatting syntax |
![]() No real-time multi-language switching, unsuitable for multi-user scenarios | ![]() Supports default language and multi-language switching, adaptable to multi-user environments |
pip install easy-ai18n
/i18n.py
from easy_ai18n import EasyAI18n
i18n = EasyAI18n()
_ = i18n.i18n()
if __name__ == "__main__":
i18n.build(["ja"])
/main.py
from i18n import _
def main():
print(_("Hello, world!")['ja'])
if __name__ == "__main__":
main()
easy_ai18n
├── core # Core functionality module
│ ├── builder.py # Builder: extract, translate, generate YAML files
│ ├── i18n.py # Main translation logic
│ ├── loader.py # Loader: load translation files
│ └── parser.py # AST parser
├── prompts # Translation prompts
├── translator # Translator module
└── main.py # Project entry point
from easy_ai18n import EasyAI18n
i18n = EasyAI18n(
i18n_function_names=["_t", '_'] # Custom translation function names
)
_t = i18n.i18n()
_ = _t
print(_t("Hello, world!"))
print(_("Hello, world!"))
from easy_ai18n import EasyAI18n
from easy_ai18n.translator import OpenAIBulkTranslator
translator = OpenAIBulkTranslator(api_key=..., base_url=..., model='gpt-4o-mini')
i18n = EasyAI18n()
i18n.build(target_lang=["ru", "ja", 'zh-Hant'], translator=translator)
_ = i18n.i18n()
print(_("Hello, world!")['zh-Hant'])
from easy_ai18n import EasyAI18n
i18n = EasyAI18n()
_ = i18n.i18n()
_t = _['ja']
d = {
1: _('apple'),
2: _('banana'),
3: _t('orange'),
}
print(d[1]['zh-hans']) # output: 苹果
print(d[2]) # output: banana
print(d[3]) # output: みかん
Use custom language selector to dynamically select languages in multi-user environments:
/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
:
from pyrogram import Client
from pyrogram.types import Message
from i18n import _
bot = Client("my_bot")
@bot.on_message()
async def start(__, msg: Message):
await msg.reply(_[msg]("Hello, world!"))
if __name__ == "__main__":
bot.run()
FAQs
Simple and Elegant Python3 Internationalization (i18n) Tool
We found that easy-ai18n demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The Rust Security Response WG is warning of phishing emails from rustfoundation.dev targeting crates.io users.
Product
Socket now lets you customize pull request alert headers, helping security teams share clear guidance right in PRs to speed reviews and reduce back-and-forth.
Product
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.