ローカライズと非UTF8文字の表示
Swarmでは、ローカライズと一部の非UTF8文字の表示がサポートされています。
構成情報を変更しても、構成キャッシュを再ロードしない限り、その構成情報がSwarmで使用されることはありません。構成キャッシュを再ロードすると、変更した構成情報がSwarmで強制的に使用されます。 Swarm構成キャッシュを再ロードするには、admin ユーザまたはsuper ユーザでなくてはなりません。 [ユーザID]ドロップダウンメニューに移動して[システム情報]を選択し、[キャッシュ情報]タブをクリックしてから[構成の再ロード]ボタンをクリックします。
ローカライズ
Swarmは、完全にローカライズされています。適切な言語パックをインストールすると、Swarmで複数の言語のユーザをサポートすることができます。
言語パックは、gettext-style
default.po
ファイルとdefault.mo
ファイルで構成されています。これらのファイルは、Swarmのルートディレクトリの言語フォルダ内で、その言語を表す名前の付いたフォルダに保管されています。 また、言語パックには、ブラウザ内のUIの翻訳文字列である2つのJavaScriptファイル(locale.js
とlocale.jsgz
)が含まれています。両方のファイルが、SWARM_ROOT/public/build/language
フォルダに表示されます。
以下の例では、言語パックのディレクトリレイアウトを示します。
SWARM_ROOT/
language/
locale/
default.mo
default.po
public/
build/
language/
locale.js
locale.jsgz
特定のローカライズ動作を、SWARM_ROOT/data/config.php
ファイルのtranslator
構成ブロックで設定します。 以下に例を示します。
<?php
// this block should be a peer of 'p4'
'translator' => array(
'detect_locale' => true,
'locale' => "",
'translation_file_patterns' => array(),
),
detect_locale
キーにより、Swarmでブラウザのロケールを検出するかどうかを指定します。 デフォルト値はtrue
です。 値として「false
」を設定すると、ブラウザのロケール検出機能が無効になります。
locale
キーは、Swarmのデフォルトのロケールを指定する文字列です。 代わりに、2文字の配列を使用してデフォルトロケールとフォールバックロケールを指定することができます。 以下に例を示します。
<?php
// this block should be a peer of 'p4'
'translator' => array(
'locale' => array("en_GB", "en_US"),
),
translation_file_patterns
キーを使用して、独自の言語パックの開発時にLaminasの翻訳インフラストラクチャをカスタマイズすることができます。 詳しくは、Laminas\I18nを参照してください。
Swarmは、LICENSE.txtファイルに記載されているバージョンのLaminasコンポーネントをサポートしています。それ以降のバージョンのLaminasで導入されたLaminasドキュメントは、Swarmでは動作しません。 LICENSE.txtファイルは、Swarmのインストール環境のreadmeフォルダに保管されています。
非UTF8文字の表示
以下の条件すべてに該当する場合、Swarmで非UTF8文字を表示することができます。
- Helix CoreサーバでUnicodeが有効になっていること。
- 文字エンコーディングがSwarmでサポートされていること。
- 文字エンコーディングがtranslator配列に登録されていること。
上記の配列で、複数の文字エンコーディングを指定することができます。一致するエンコーディングが配列内に見つからない場合、Swarmがwindows-1252にフォールバックします。 サポートされていない文字エンコーディングや無効な文字エンコーディングが配列に含まれている場合、これらの文字エンコーディングは無視されます。
Swarmでサポートされている文字エンコーディングの詳細については、http://php.net/manual/en/mbstring.supported-encodings.phpを参照してください。
文字エンコーディングを設定するには、SWARM_ROOT/data/config.php
ファイルで以下のブロックを追加します。 以下に例を示します。
<?php
// this block should be a peer of 'p4'
'translator' => array(
'non_utf8_encodings' => array('sjis', 'euc-jp', 'windows-1252'),
),
windows-1252は、デフォルトの文字エンコーディングです。これは、常に配列内の最後のエントリでなければなりません。