Простой способ интернационализации ваших приложений с помощью PyI18n


Введение

PyI18n — это простая и удобная в использовании библиотека интернационализации, написанная для проектов на python, чтобы помочь вам работать с несколькими языками в ваших приложениях.

Как начать использовать PyI18n

Сначала необходимо создать файлы локалей, в моем примере это будет в каталоге locale (путь к локалям PyI18n по умолчанию). В моем примере я использую только два языка polish (pl.yml) и english (en.yml).

Давайте напишем простое приложение FastAPI.

Структура проекта для этого примера

.
├── app.py
└── locales
    ├── en.yml
    └── pl.yml
Вход в полноэкранный режим Выход из полноэкранного режима

en.yml

en:
  greetings:
    hello_name: "Hello there {name}! nice to meet you" 
Вход в полноэкранный режим Выход из полноэкранного режима

pl.yml

pl:
  greetings:
    hello_name: "Witaj {name}! miło mi cię poznać" 
Войти в полноэкранный режим Выйти из полноэкранного режима

Предположим, что мы вошли в систему и сохранили локали в базе данных, иначе мы просто вернем локаль по умолчанию.

from pyi18n import PyI18n
from fastapi import FastAPI
from typing import Callable, Dict

app: FastAPI = FastAPI()
i18n: PyI18n = PyI18n(('pl', 'en'))

DEFAULT_LOCALE: str = 'en'

_: Callable = i18n.gettext

fake_db: Dict[str, str] = {
    "logged_users": {
        "Piotrek": {
            "locale": "pl"
        },
        "John": {
            "locale": "en",
        },
    }

}

def get_user_locale(name) -> str:
    current_user_locale: str = fake_db["logged_users"].get(name)
    return current_user_locale['locale'] if current_user_locale else DEFAULT_LOCALE


@app.get("/hello/{name}")
def hello_name(name: str):
    locale: str = get_user_locale(name)
    return {"greeting": _(locale, "greetings.hello_name", name=name)}

Вход в полноэкранный режим Выход из полноэкранного режима

Теперь пришло время запустить наше приложение и проверить, что произойдет, для тестирования я использовал расширение RapidAPI vscode (Это что-то вроде postman в коде visual studio).

Полная документация по этому модулю доступна по адресу: https://sectasy0.github.io/pyi18n.

Если у вас возникли вопросы или вы заметили какие-либо неточности, пожалуйста, дайте мне знать в комментариях ниже! Спасибо за чтение <3

Оцените статью
devanswers.ru
Добавить комментарий