# General Translation Python SDKs: General Translation の設定
URL: https://generaltranslation.com/ja/docs/python/guides/configuring.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Python で General Translation をアプリ、ロケール、翻訳の配信とともに初期化する方法。Flask、FastAPI、またはコアライブラリで利用できます。

Python SDK は、1 回の呼び出しで設定できます。Flask と FastAPI では `initialize_gt(app)` を使います。コアの `gt-i18n` library では、[`I18nManager`](/docs/python/reference/classes/i18n-manager) を自分で作成します。このガイドでは、この 2 つの方法に加えて、翻訳の配信方法と事前読み込みについても説明します。

## Flask または FastAPI アプリを設定する [#framework]

リクエストを処理する前に、`initialize_gt(app)` を 1 回だけ呼び出します。これにより、`gt.config.json` を読み込み、翻訳マネージャーを作成し、リクエストごとのロケール検出を登録して、翻訳を事前に読み込みます。

<Tabs items={['Flask', 'FastAPI']}>
  <Tab value="Flask">
    ```python title="app.py"
    from flask import Flask
    from gt_flask import initialize_gt

    app = Flask(__name__)
    initialize_gt(app, default_locale="en", locales=["es", "fr"])
    ```
  </Tab>

  <Tab value="FastAPI">
    ```python title="main.py"
    from fastapi import FastAPI
    from gt_fastapi import initialize_gt

    app = FastAPI()
    initialize_gt(app, default_locale="en", locales=["es", "fr"])
    ```
  </Tab>
</Tabs>

キーワード引数は `gt.config.json` の内容より優先されます。すべてのオプションと設定キーについては、[設定リファレンス](/docs/python/reference/config) を参照してください。

この 2 つの統合は、[`initialize_gt`](/docs/python/reference/functions/initialize-gt) のシグネチャは共通で、異なるのは内部実装だけです。Flask では、ロケールを設定する `before_request` フックを登録します。FastAPI では、アプリのライフスパンをラップして (事前読み込みのため) 、ロケールを設定する HTTP ミドルウェアを追加します。

## コアライブラリを設定する [#core]

コアの `gt-i18n` パッケージには [`initialize_gt`](/docs/python/reference/functions/initialize-gt) は含まれていません。[`I18nManager`](/docs/python/reference/classes/i18n-manager) を作成し、[`set_i18n_manager`](/docs/python/reference/functions/set-i18n-manager) でアクティブなマネージャーとして登録したうえで、リクエストのロケールを自分で設定してください。ここでは、ロケール検出と事前読み込みは自動では行われません。

```python
from gt_i18n import I18nManager, set_i18n_manager, t

manager = I18nManager(default_locale="en", locales=["es", "fr"])
set_i18n_manager(manager)

manager.set_locale("es")   # ロケールはリクエストごとに制御できます
print(t("Hello, world!"))
```

どの翻訳関数 ([`t`](/docs/python/reference/functions/t)、[`get_locale`](/docs/python/reference/functions/get-locale) など) も、[`set_i18n_manager`](/docs/python/reference/functions/set-i18n-manager) で設定したマネージャーを参照します。マネージャーを設定する前にこれらを呼び出すと、`RuntimeError` が発生します。

## 翻訳の配信方法を選択する [#delivery]

SDK は、次のいずれかのモードで翻訳を読み込みます。

* **General Translation CDN:** `project_id` (設定内またはキーワード引数として) を設定すると、翻訳は CDN の `{cache_url}/{project_id}/{locale}` から読み込まれます。ベース URL は `cache_url` で上書きできます。
* **ローカルファイル:** ロケールごとに `dict[str, str]` を返す `load_translations` callback を渡します。これにより CDN loader は置き換えられます。[翻訳をローカルに保存する](/docs/python/guides/storing-translations)を参照してください。

API Key はありません。CDN 配信は `project_id` と `cache_url` のみによって決まります。

## 翻訳を事前読み込み [#preload]

[`t`](/docs/python/reference/functions/t) 関数はインメモリキャッシュから読み取るため、リクエストで使用する前に翻訳を読み込む必要があります。デフォルトでは、[`initialize_gt`](/docs/python/reference/functions/initialize-gt) が起動時に事前読み込みします (`eager_loading=True`) 。

*メモ: 事前読み込みは、ターゲットの `locales` が既知の場合にのみ実行されます。Flask では、`gt.config.json` から読み込まれた `locales` ではなく、[`initialize_gt`](/docs/python/reference/functions/initialize-gt) に直接渡した `locales` が確認されます。ロケールを設定ファイルからのみ取得する場合は、明示的に渡すか、自分で翻訳を読み込んでください。翻訳がまだ読み込まれていない場合、[`t`](/docs/python/reference/functions/t) はソース文字列を返します。*

*メモ: インメモリキャッシュは `cache_expiry_time` (デフォルトは 60 秒) の経過後に期限切れとなります。[`t`](/docs/python/reference/functions/t) が使用する同期読み取りパスではキャッシュは再読み込みされないため、期限切れ後は非同期ローダーが再度実行されるまで、[`t`](/docs/python/reference/functions/t) はソース文字列にフォールバックします。[`initialize_gt`](/docs/python/reference/functions/initialize-gt) では `cache_expiry_time` を指定できません。*

## 翻訳が見つからない場合の対処 [#missing]

翻訳が見つからない場合、[`t`](/docs/python/reference/functions/t) はエラーを投げるのではなく、変数を補間したソース文字列を返すため、リクエストは常にレンダリングされます。本番環境ですぐ使えるよう、デプロイ前に [CLI](/docs/cli/quickstart) で翻訳を生成しておいてください。

## Next steps

- /docs/python/guides/translating-strings
- /docs/python/guides/detecting-locale
- /docs/python/guides/declaring-variables
- /docs/python/guides/storing-translations

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
