# General Translation Python SDKs: StorageAdapter
URL: https://generaltranslation.com/en-US/docs/python/reference/classes/storage-adapter.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Abstract base class for per-request locale storage in General Translation Python. API reference for StorageAdapter.

Subclass `StorageAdapter` to control where the current locale lives (for example, a framework's request context). The default implementation is [`ContextVarStorageAdapter`](/docs/python/reference/classes/context-var-storage-adapter).

## Overview [#overview]

`StorageAdapter` is an [abstract base class](https://docs.python.org/3/library/abc.html) (it extends `abc.ABC`). It defines two abstract methods you must implement; you cannot instantiate it directly.

```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:
        ...
```

Import `StorageAdapter` from `gt_i18n`. It is not re-exported by the framework packages.

## How it works [#how-it-works]

- **Abstract methods.** `get_item` and `set_item` are abstract; a subclass must implement both.
- **Locale key.** The manager reads and writes the locale under the key `"locale"`. An adapter may ignore other keys.
- **Wiring.** Pass a custom adapter as `store_adapter` to [`I18nManager`](/docs/python/reference/classes/i18n-manager).

## Methods [#members]

| Member | Description | Returns |
| --- | --- | --- |
| [`get_item`](#member-get-item) | Retrieve a stored value by key. | `str \| None` |
| [`set_item`](#member-set-item) | Store a value by key. | `None` |

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

**Abstract.** Returns the stored value for `key`, or `None` when absent.

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

**Abstract.** Stores `value` under `key`.

## Example [#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.
