Skip to main content

Simple and Elegant Python3 Internationalization (i18n) Tool

Project description

icon

Simple and Elegant Python3 Internationalization (i18n) Tool

Python GitHub stars GitHub forks PyPI version GitHub License

English | 中文 | 日本語

🌍 Easy AI18n

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.

✨ Key Features:

  • 🚀 Easy to Use: Implement i18n with just a few lines of code
  • ✨ Elegant Syntax: Use _() to wrap translatable texts, seamlessly integrating into your code
  • 🤖 AI Translation: Supports translation using large language models (LLMs) for high-quality results
  • 📝 Full Formatting Support: Fully supports all Python string formatting syntaxes
  • 🌐 Multi-language Support: Choose languages using [] selector for multilingual support

🔍 Comparison with Other i18n Tools

Other 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

⚡ Quick Start

📦 Installation

pip install easy-ai18n

🧪 Simple Example

/i18n.py

from easy_ai18n import EasyAI18n

i18n = EasyAI18n()

_ = i18n.i18n()

if __name__ == "__main__":
    i18n.build(to_locales=["ja"])

/main.py

from i18n import _


def main():
    print(_("Hello, world!")['ja'])


if __name__ == "__main__":
    main()

🗂️ Project Structure

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

📘 Usage Tutorial

🛠️ Custom Translation Function Names

from easy_ai18n import EasyAI18n

i18n = EasyAI18n(
    func_names=["_t", '_']  # Custom translation function names
)

_t = i18n.i18n()
_ = _t

print(_t("Hello, world!"))
print(_("Hello, world!"))

🤖 Use AI for Translation

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(to_locales=["ru", "ja", 'zh-Hant'], translator=translator)

_ = i18n.i18n()

print(_("Hello, world!")['zh-Hant'])

🔎 Language Selector

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: みかん

👥 Multi-user Language Scenarios (e.g. Telegram Bot)

Use custom language selector to dynamically select languages in multi-user environments:

/i18n.py:

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


class MyPostLocaleSelector(PostLocaleSelector):
    def __getitem__(self, msg: Message):
        # ......
        lang = msg.from_user.language_code
        return super().__getitem__(lang)


i18n = EasyAI18n()

_ = i18n.i18n(post_locale_selector=MyPostLocaleSelector)

if __name__ == "__main__":
    i18n.build(to_locales=['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()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

easy_ai18n-1.1.3.tar.gz (22.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

easy_ai18n-1.1.3-py3-none-any.whl (20.9 kB view details)

Uploaded Python 3

File details

Details for the file easy_ai18n-1.1.3.tar.gz.

File metadata

  • Download URL: easy_ai18n-1.1.3.tar.gz
  • Upload date:
  • Size: 22.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.11 {"installer":{"name":"uv","version":"0.11.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for easy_ai18n-1.1.3.tar.gz
Algorithm Hash digest
SHA256 85e538fcc6f4088a3fa471a50542b21cc219511ee1ecd2854412f3dc210696d8
MD5 e48a8c7cacff62000c22e9d9f7da91dc
BLAKE2b-256 acf41fc5edc98cc88fedd16c6f78d86ab3ac8c04b3aa09d607a3abc4b9762c52

See more details on using hashes here.

File details

Details for the file easy_ai18n-1.1.3-py3-none-any.whl.

File metadata

  • Download URL: easy_ai18n-1.1.3-py3-none-any.whl
  • Upload date:
  • Size: 20.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.11 {"installer":{"name":"uv","version":"0.11.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for easy_ai18n-1.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 8ddf80eba38924cb961d1d5234846b20004c5c0ea65226c68470cb9fc09fef01
MD5 623cdf275175691e2d8607e27931731a
BLAKE2b-256 727c23df7555b0b24f6ed60df3c4cf4f05d1ec2811be5c74994d0cf47cb6c703

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page