# General Translation Python SDKs: リクエストのロケールを検出する
URL: https://generaltranslation.com/ja/docs/python/guides/detecting-locale.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: General Translation for Python で、各リクエストのロケールを自動的に、または独自のロジックで解決する方法。

すべての [`t`](/docs/python/reference/functions/t) 呼び出しは、現在のリクエストのロケールで翻訳されます。[`initialize_gt`](/docs/python/reference/functions/initialize-gt) がロケール検出を設定してくれるので、デフォルトのまま使うことも、独自のコールバックを指定することもできます。

## デフォルトの検出を使用する [#default]

デフォルトでは、SDK は `Accept-Language` ヘッダーを読み取り、その quality 値を解析して、設定済みのロケールの中から最適な一致を選び、デフォルトロケールにフォールバックします。Flask ではこれを `before_request` フックで行い、FastAPI では HTTP ミドルウェアで行います。追加のセットアップは不要です。

[`get_locale`](/docs/python/reference/functions/get-locale) を使うと、リクエスト内のどこからでも解決されたロケールを取得できます。

```python
from gt_flask import get_locale  # または: from gt_fastapi import get_locale

get_locale()
```

## カスタム検出を提供する [#custom]

明示的な選択 (クエリパラメータ、クッキー、またはパスプレフィックス) を優先するには、[`get_locale`](/docs/python/reference/functions/get-locale) コールバックを [`initialize_gt`](/docs/python/reference/functions/initialize-gt) に渡します。カスタムコールバックを指定すると、`Accept-Language` による検出は完全に置き換えられます。つまり、独自のコールバックを指定した場合、`Accept-Language` は参照されません。

<Tabs items={['Flask', 'FastAPI']}>
  <Tab value="Flask">
    ```python
    def detect_locale(request):
        return request.args.get("lang") or request.cookies.get("locale") or "en"

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

  <Tab value="FastAPI">
    ```python
    def detect_locale(request):
        return request.query_params.get("lang") or request.cookies.get("locale") or "en"

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

返した値は、そのリクエストに対してそのまま使われます。コールバックが `None` などの falsy な値を返した場合、ロケールは設定されたデフォルトロケール (`Accept-Language` ではなく) に解決されます。異なる動作にしたい場合は、明示的なフォールバックを返してください。

*注: 組み込みの `Accept-Language` 検出とは異なり、カスタムコールバックの戻り値は設定された `locales` に対して再検証されません。対応しているロケールを返すか、未対応の値は自分で解決してください。*

## Next steps

- /docs/python/guides/translating-strings
- /docs/python/guides/configuring
- /docs/python/guides/declaring-variables
- /docs/python/guides/storing-translations

## Sitemap

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