Skip to main content

Simple and Elegant Python3 Internationalization (i18n) Tool

Project description

Simple and Elegant Python3 Internationalization (i18n) Tool

PyPI version

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

from easy_ai18n import EasyAI18n

i18n = EasyAI18n(target_lang=["ru", "ja", 'zh-CN'])
i18n.build()

_ = i18n.t()

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

🗂️ 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

⚙️ Initialize EasyAI18n Instance

from easy_ai18n import EasyAI18n, PreLanguageSelector, PostLanguageSelector
from easy_ai18n.translator import GoogleTranslator

# Initialize EasyAI18n instance
i18n = EasyAI18n(
    global_lang="zh",  # Global default language
    target_lang=["zh", "ja"],  # Target translation languages
    languages=["zh", "ja"],  # Enabled languages (default is target_lang)
    project_dir="/path/to/your/project",  # Root directory (default is current dir)
    include=[],  # Included files/directories
    exclude=[".idea"],  # Excluded files/directories
    i18n_file_dir="i18n",  # Directory to store translation files
    func_name=["_"],  # Translation function names (supports multiple)
    sep=" ",  # Separator (default is space)
    translator=GoogleTranslator(),  # Translator (default is Google)
    pre_lang_selector=PreLanguageSelector,  # Pre language selector
    post_lang_selector=PostLanguageSelector  # Post language selector
)

# Build translation files
i18n.build()

# Set translation function, here we use _, can be customized
_ = i18n.t()

# Put strings to be translated inside the function
print(_("Hello, world!"))

🛠️ Custom Translation Function Names

from easy_ai18n import EasyAI18n

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

_t = i18n.t()
_ = _t

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

🤖 Use AI for Translation

from easy_ai18n import EasyAI18n
from easy_ai18n.translator import OpenAIYAMLTranslator

translator = OpenAIYAMLTranslator(api_key=..., base_url=..., model='gpt-4o-mini')

i18n = EasyAI18n(target_lang=["ru", "ja", 'zh-CN'], translator=translator)
i18n.build()

_ = i18n.t()

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

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

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

from pyrogram import Client
from pyrogram.types import Message

from easy_ai18n import EasyAI18n, PostLanguageSelector


class MyPostLanguageSelector(PostLanguageSelector):
    def __getitem__(self, msg: Message):
        # Get user's language
        lang = msg.from_user.language_code
        return super().__getitem__(lang)


i18n = EasyAI18n(
    target_lang=['zh', 'ru'],
    post_lang_selector=MyPostLanguageSelector,
)
_ = i18n.t()

bot = Client("my_bot")


@bot.on_message()
async def start(__, msg: Message):
    await msg.reply(_[msg]("Hello, world!"))


if __name__ == "__main__":
    bot.loop.run_until_complete(i18n.build_async())
    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-0.0.7.tar.gz (20.9 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-0.0.7-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: easy_ai18n-0.0.7.tar.gz
  • Upload date:
  • Size: 20.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.16

File hashes

Hashes for easy_ai18n-0.0.7.tar.gz
Algorithm Hash digest
SHA256 cf4b83ce26d513c7e3db733a832a4ebd1af139b1fc175eaec1023c1c6cd5eaed
MD5 90871577c6a0007fa98de85ee20313f8
BLAKE2b-256 248e247a4ed6ae5e2a4fc8e7c10006792f62a9f00ae2b69157b7da45dd9af1da

See more details on using hashes here.

File details

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

File metadata

  • Download URL: easy_ai18n-0.0.7-py3-none-any.whl
  • Upload date:
  • Size: 19.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.16

File hashes

Hashes for easy_ai18n-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 3f709b4fef9df4e3b56aaab5e6e7a547a09fbd61af23ee39774e8d73692299b4
MD5 46e838703851a3cc1b60dbf16015700d
BLAKE2b-256 cee3785cefcffb97760a4da41cd155725be811f28c3a5766bab3f155b45afad2

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