PyI18n으로 앱을 국제화하는 쉬운 방법

6656 단어 pythonprogramming

소개



PyI18n은 Python 프로젝트용으로 작성된 간단하고 사용하기 쉬운 국제화 라이브러리로, 응용 프로그램에서 여러 언어를 처리하는 데 도움이 됩니다.

PyI18n 사용 시작 방법



먼저, 로케일 파일을 만들어야 합니다. 제 예에서는 locale 디렉토리(기본 PyI18n 로케일 경로)에 있습니다. 내 예에서는 폴란드어(pl.yml)와 영어(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 확장을 사용했습니다(Visual Studio 코드의 우편 배달부와 같습니다).





이 모듈에 대한 전체 문서는 https://sectasy0.github.io/pyi18n 에서 볼 수 있습니다.

질문이 있거나 부정확한 내용이 있으면 아래 댓글에 알려주세요! 읽어주셔서 감사합니다 <3

좋은 웹페이지 즐겨찾기