# General Translation Python SDKs: StorageAdapter URL: https://generaltranslation.com/en-US/docs/python/reference/classes/storage-adapter.mdx --- title: StorageAdapter description: Abstract base class for per-request locale storage in General Translation Python. API reference for StorageAdapter. --- The abstract base class for adapters that store and read the per-request locale. Subclass it 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()) ```