
FastAPI フレームワークを使用して國際的な Web アプリケーションを構(gòu)築する
FastAPI は、Python 型の注釈と高性能の非同期サポートを組み合わせた高性能 Python Web フレームワークであり、開発を容易にします。 Web アプリケーションをより簡単、より速く、より信頼性の高いものにします。國際的な Web アプリケーションを構(gòu)築する場合、FastAPI は、アプリケーションで複數(shù)の言語を簡単にサポートできる便利なツールと概念を提供します。
以下に、FastAPI フレームワークを使用して國際化をサポートする Web アプリケーションを構(gòu)築する方法を紹介する具體的なコード例を示します。
- まず、FastAPI と対応する依存関係ライブラリ。 pip を使用してインストールできます:
pip install fastapi[all]
- Web アプリケーションを定義するための app.py ファイルを作成します:
from typing import Optional
from fastapi import FastAPI
from fastapi import Request, Depends
from fastapi.templating import Jinja2Templates
from fastapi.staticfiles import StaticFiles
from fastapi.responses import HTMLResponse
from starlette.templating import Jinja2Templates
from starlette.requests import Request
from fastapi.i18n import (
I18nMiddleware,
get_accept_languages
)
app = FastAPI()
# 加載靜態(tài)文件
app.mount("/static", StaticFiles(directory="static"), name="static")
# 初始化國際化中間件
app.add_middleware(I18nMiddleware, default_language="en", translation_directory="translations")
templates = Jinja2Templates(directory="templates")
# 通過GET方法獲取主頁面
@app.get("/", response_class=HTMLResponse)
async def read_root(request: Request, languages: str = Depends(get_accept_languages)):
return templates.TemplateResponse("index.html", {"request": request, "languages": languages})
# 通過POST方法獲取表單提交的數(shù)據(jù)并返回
@app.post("/form")
async def form_post(request: Request):
form_data = await request.form()
return {"data": form_data}
- プロジェクトのルート ディレクトリにtranslations フォルダーを作成し、その中に英語の翻訳ファイルを保存する en フォルダーを作成します。 en フォルダーにmessages.po ファイルを作成して英語翻訳を定義します:
msgid "Hello"
msgstr "Hello"
msgid "Submit"
msgstr "Submit"
- テンプレート フォルダーにindex.html ファイルを作成してページ テンプレートを定義します:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>{{ _('Welcome to my website') }}</title>
</head>
<body>
<h1>{{ _('Hello') }}</h1>
<p>{{ _('This is a sample web application') }}</p>
<form action="/form" method="post">
<input type="text" name="name" placeholder="{{ _('Enter your name') }}">
<button type="submit">{{ _('Submit') }}</button>
</form>
<h2>{{ _('Supported Languages') }}</h2>
<ul>
{% for language in languages %}
<li><a href="/?language={{ language }}">{{ language }}</a></li>
{% endfor %}
</ul>
</body>
</html>
- アプリケーションの起動:
uvicorn app:app --reload
http://localhost:8000 にアクセスすると、アプリケーションを表示できます。デフォルトの言語は英語で、URL パラメータを渡すことができます language
を使用して言語を切り替えます (http://localhost:8000/? language=zh など)。
上記の例では、FastAPI が提供する國際化ミドルウェアを使用して、HTTP リクエスト ヘッダーに Accept-Language を追加することでユーザーの言語設(shè)定を指定し、多言語サポートを?qū)g現(xiàn)しています。このアプリケーションでは、Jinja2 テンプレート エンジンを使用してページをレンダリングし、テンプレート內(nèi)で {{ _('xxx') }}
を使用して翻訳を?qū)毪筏蓼埂?
上記の例を通じて、FastAPI フレームワークの下で國際化をサポートする Web アプリケーションを簡単に構(gòu)築し、より良いユーザー エクスペリエンスとグローバル サービスを提供できます。
以上がF(xiàn)astAPI フレームワークを使用して國際的な Web アプリケーションを構(gòu)築するの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。