# General Translation Python SDKs: StorageAdapter
URL: https://generaltranslation.com/ru/docs/python/reference/classes/storage-adapter.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Абстрактный базовый класс для хранения локали на уровне запроса в General Translation Python. Справочник по API для StorageAdapter.

Создайте его подкласс, чтобы управлять тем, где хранится текущая локаль (например, в контексте запроса фреймворка). Реализация по умолчанию — [`ContextVarStorageAdapter`](/docs/python/reference/classes/context-var-storage-adapter).

## Обзор [#overview]

`StorageAdapter` — это [абстрактный базовый класс](https://docs.python.org/3/library/abc.html) (наследуется от `abc.ABC`). Он определяет два абстрактных метода, которые необходимо реализовать; напрямую создать его экземпляр нельзя.

```python
from gt_i18n import StorageAdapter

class MyAdapter(StorageAdapter):
    def get_item(self, key: str) -> str | None:
        ...

    def set_item(self, key: str, value: str) -> None:
        ...
```

Импортируйте `StorageAdapter` из `gt_i18n`. Пакеты фреймворка его не реэкспортируют.

## Как это работает [#how-it-works]

* **Абстрактные методы.** `get_item` и `set_item` — абстрактные методы; подкласс должен реализовать оба.
* **Ключ локали.** Менеджер читает и записывает локаль по ключу `"locale"`. Адаптер может игнорировать другие ключи.
* **Подключение.** Передайте пользовательский адаптер в параметр `store_adapter` класса [`I18nManager`](/docs/python/reference/classes/i18n-manager).

## Методы [#members]

| Метод                          | Описание                                  | Возвращает    |
| ------------------------------ | ----------------------------------------- | ------------- |
| [`get_item`](#member-get-item) | Возвращает сохранённое значение по ключу. | `str \| None` |
| [`set_item`](#member-set-item) | Сохраняет значение по ключу.              | `None`        |

### `get_item(key)` [#member-get-item]

**Абстрактно.** Возвращает сохранённое значение по `key` или `None`, если оно отсутствует.

### `set_item(key, value)` [#member-set-item]

**Абстрактно.** Сохраняет `value` по ключу `key`.

## Пример [#example]

```python
from gt_i18n import StorageAdapter, I18nManager

class DictStorageAdapter(StorageAdapter):
    def __init__(self) -> None:
        self._data: dict[str, str] = {}

    def get_item(self, key: str) -> str | None:
        return self._data.get(key)

    def set_item(self, key: str, value: str) -> None:
        self._data[key] = value

manager = I18nManager(default_locale="en", store_adapter=DictStorageAdapter())
```

## Sitemap

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