国際化について
決められたルールでテンプレートを記述することで、指定した言語を別の言語に切り替えてページを表示できます。例えば英語圏のユーザには管理画面を英語で表示するといった用途があります。
特定の文字列を翻訳可能にする方法
a-blog cms で文字列を翻訳可能にするには元の文字列を以下のコメントで囲みます。
<!-- TRANS -->翻訳文字<!-- /TRANS -->
または
<!-- T -->翻訳文字<!-- /T -->
変数の埋め込み
翻訳対象の中に変数が入ってくる場合は以下のように変数を<!--$1-->で囲みます。変数の数によって$数値を増やしてください。
ソース
<!--T-->こんにちは<!--$1-->{lastName}<!--/$1--> <!--$2-->{firstName}<!--/$2-->さん<!--/T-->
POファイル
msgid "こんにちは$1 $2さん"
msgstr "Hello, $2 $1"
文脈
文字列としては同じでも、文脈により意味が異なるケースがあります。その場合は以下のようにctx=""を振ることで、別のものとして翻訳することができます。
テンプレート側の記述
<!--T ctx="show"-->表示<!--/T-->
<!--T ctx="display"-->表示<!--/T-->
その際に後ほど紹介するPOファイルには以下のように記述し、翻訳内容を切り替えます。
msgid "表示_CTX_show"
msgstr "show"
msgid "表示_CTX_display"
msgstr "display"
翻訳用ファイルの作成手順
翻訳用ファイル(MO)ファイル作成にはPOTファイル生成 → POファイル生成 → MOファイル生成という段階を踏む必要があります。その際に専用のソフトウェアであるPoeditを使うと便利です。
POTファイル
各テーマのadmin以下のテンプレートでマークした文字列を抽出します。管理ページ > コンフィグ管理 > 国際化 ( i18n ) のpot ダウンロードからPOTファイルをダウンロードして下さい。
POファイル
ダウンロードしたPOTファイルから各言語に翻訳してPOファイルを生成します。拡張子を.potから.poに変更するだけで構いません。
例: 英語に翻訳
#: themes/system/admin/top.html
msgid "ダッシュボード"
msgstr "Dashboard"
MOファイル
先ほど紹介した、Poeditなどのソフトウェアを使いPOファイルをMOファイルに変換します。
出来上がったMOファイルを以下の場所(デフォルト)に設置してください。
例 : /lang/en_US/LC_MESSAGES/messages.mo
/a-blogcms設置ディレクトリ/lang/[言語]_[地域]/LC_MESSAGES/messages.mo
言語と地域の例
説明(例) | 言語 | 地域 |
日本語、日本 | ja | JP |
英語、米国 | en | US |
ロシア語、ロシア | ru | RU |
韓国語、韓国 | ko | KR |
config.server.phpの設定
config.server.php で以下の設定ができます。
define('GETTEXT_TYPE', 'auto'); // fix|auto
define('GETTEXT_APPLICATION_RANGE', 'admin'); // admin|login|all
define('GETTEXT_DEFAULT_LOCALE', 'ja_JP.UTF-8');
define('GETTEXT_DOMAIN', 'messages');
define('GETTEXT_PATH', 'lang');
GETTEXT_DOMAINおよびGETTEXT_PATHはとくに変更の必要はありません。
GETTEXT_TYPE
fix | config.server.phpで指定した言語地域で固定します |
user | ユーザ毎に管理画面より言語地域を設定します。 |
auto | ブラウザの言語地域の設定を反映します |
TYPEが"user"だった場合、ユーザ詳細ページのカスタマイズが必要になります。
<!-- /独自テーマ/admin/user/field.html に用意 -->
<tr>
<th>ロケール<i class="acms-admin-icon-tooltip js-acms-tooltip" data-acms-tooltip="ユーザー毎のロケールを設定します。"></i></th>
<td>
<select name="locale">
<option value="ja_JP.UTF-8"{locale:selected#ja_JP.UTF-8}>日本語</option>
<option value="en_US.UTF-8"{locale:selected#en_US.UTF-8}>English</option>
</select>
<input type="hidden" name="user[]" value="locale" />
</td>
</tr>
GETTEXT_APPLICATION_RANGE
admin | adminディレクトリ以下(管理ページ)のみ翻訳します |
login | ログインしている時のみ翻訳します |
all | すべてのページを翻訳対象にします |
GETTEXT_DEFAULT_LOCALE
基本の言語地域を設定します。GETTEXT_TYPEが固定だった場合やブラウザの言語地域のmoファイルが見つからない場合にこの言語地域が使用されます。
GETTEXT_DOMAIN
gettextのグローバルドメインを設定します。(デフォルト: messages)
GETTEXT_PATH
ドメインへのパスを設定します。(デフォルト: lang)