> For the complete documentation index, see [llms.txt](https://docs.cs-cart.jp/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cs-cart.jp/addon-development/language-variables-in-addon.md).

# アドオンの言語変数

{% hint style="info" %}
HINT

言語変数とその使用方法についてはこちらをご覧ください
{% endhint %}

言語変数を使用すると、CS-Cartのアドオンの翻訳（多言語化）を行うことが出来ます。\
CS-Cartでは言語のテキストは、PHPコードやSmartyテンプレートファイルに直接記述されていません。言語を表示する際には特別な関数が呼び出されます。言語変数の名前が関数に渡され、ユーザーの環境に応じた言語でテキストが返されます。

アドオンの言語変数はPOファイルに保存されています。\
POファイルは言語ごとに別々のフォルダにあります：`var/langs/[言語コード]/addons/[アドオン名].po`

たとえば、「アクセス制御」アドオンの英語翻訳のPOファイルは`var/langs/en/addons/access_restrictions.po`にあります。

POファイルのファイル名は、`app/addons/<アドオン名>`にある`addon.xml`の`id`セクションの内容と同じでなければなりません。

この記事では、アドオンのインストール、アンインストール、またはアップグレードの際に言語変数がどのように処理されるかについて説明します。

## アドオンのインストール時

アドオンがインストールされると、そのPOファイルが分析されます。\
使用可能なすべての言語の言語変数の値がlanguage\_valuesテーブルに書き込まれます。\
このテーブルは次のフィールドで構成されています。

* `lang_code` —言語コード
* `name` —プレフィックスなしの言語変数の名前
* `value` —指定された言語コードの言語変数の値

POファイルの値も`original_values`テーブルに入れられます。\
構造は次のとおりです。

* `msgctxt` — POファイルの`msgctxt`と同様に、プレフィックス付きの言語変数の名前。
* `msgid` — POファイルの`msgid`と同様に、翻訳元の言語変数の値（原則として英語）。

## アドオンの使用時

言語変数が初めて`__`関数で使用されるとき、その値は`language_values`テーブルから取得され、キャッシュされます。以降、値はキャッシュから取得されます。言語変数は、CS-Cartの汎用キャッシュの一部です。キャッシングメカニズムは、CS-Cartの設定に依存します。

管理者は、管理パネルで言語変数の値を変更できます。これらの変更は、`language_values`テーブルの値フィールドに記録されますが、`original_values`テーブルは変更されません。

言語変数を管理パネルからのPOファイルにエクスポートする場合、`msgtxt`と`MSGID`の値は`original_values`から、`msgStr`の値は`language_values`から取得されてエクスポートされます。

## アドオンのアップグレード時

アドオンがアップグレードされると、アップグレードパッケージ内のPOファイルが分析されます。新しい言語変数は追加されますが、既存の言語変数は更新されません。これは、CS-Cart自体のアップグレードの際にも適用されます。

アドオンのアップグレードパッケージの作成についての詳細についてはこちらをご覧ください。

## アドオンのアンインストール時

アドオンがアンインストールされると、POファイルが分析されます。アドオンのすべての言語変数が`original_values`と`language_values`がテーブルから削除されます。また、言語キャッシュからも削除されます。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.cs-cart.jp/addon-development/language-variables-in-addon.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
