ローカライズと非UTF8文字の表示

重要

Unicode文字を含むすべての文字を表示し、それらの文字をSwarmで正しく処理するには、HelixサーバをUnicodeモード用に設定します。HelixサーバをUnicodeモード用に設定する方法については、『Helix Coreサーバ管理者ガイド』の「Unicode環境の構成と管理」を参照してください。

ヒント

構成情報を変更しても、構成キャッシュを再ロードしない限り、その構成情報がSwarmで使用されることはありません。構成キャッシュを再ロードすると、変更した構成情報がSwarmで強制的に使用されます。Swarm構成キャッシュを再ロードするには、admin ユーザまたはsuper ユーザでなくてはなりません。[ユーザID]ドロップダウンメニューに移動して[システム情報]を選択し、[キャッシュ情報]タブをクリックしてから[構成の再ロード]ボタンボタンをクリックします。

Swarmでは、ローカライズと一部の非UTF8文字の表示がサポートされています。

ローカライズ

Swarmは、完全にローカライズされています。適切な言語パックをインストールすると、Swarmで複数の言語のユーザをサポートすることができます。

言語パックは、gettext-style default.poファイルとdefault.moファイルで構成されています。これらのファイルは、Swarmのルートディレクトリの言語フォルダ内で、その言語を表す名前の付いたフォルダに保管されています。また、言語パックには、ブラウザ内のUIの翻訳文字列である2つのJavaScriptファイル(locale.jslocale.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配列に登録されていること。

上記の配列で、複数の文字エンコーディングを指定することができます。一致するエンコーディングが配列内に見つからない場合、Swarmwindows-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は、デフォルトの文字エンコーディングです。これは、常に配列内の最後のエントリでなければなりません。

UTF8文字への変換

非Unicodeが有効になっているHelixサーバSwarmが接続されている場合、Swarmにより、特殊文字がデフォルトでUTF8文字に変換されます。ANSIファイルとASCIIファイルの場合、差分ビューで一部の特殊文字が正しく表示されないことがあります(または、差分ビューに特殊文字が何も表示されない場合もあります)。Swarmによる特殊文字からUTF8文字への変換を停止し、特殊文字を不明な文字(�)として表示する場合は、utf8_convertの値を「false」に設定します。これにより、UTF8文字への変換機能が無効になります。

SWARM_ROOT/data/config.phpファイルに以下のコードブロックを追加すると、UTF8文字への変換機能が無効になります。以下に例を示します。

<?php
    // this block should be a peer of 'p4'
    'translator' => array(
        'utf8_convert' => false,
    ),

この構成可能変数のデフォルト値はtrueです。