# General Translation Python SDKs: StorageAdapter
URL: https://generaltranslation.com/zh/docs/python/reference/classes/storage-adapter.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: General Translation Python 中用于按请求存储区域设置的抽象基类。StorageAdapter 的 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:
        ...
```

从 `gt_i18n` 导入 `StorageAdapter`。框架包不会重新导出它。

## 工作原理 [#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.
