本文へスキップ
ドキュメント

開発者ガイド

言語ファイルと多言語対応

モジュール・スキン・レイアウトの文言を多言語で提供する方法です。

言語ファイル:lang/ko.php

モジュールの lang/ フォルダーに、言語コードごとの PHP ファイルを置きます(ko.php、en.php、ja.php ...)。

<?php

$lang->mymodule = '내 모듈';
$lang->msg_title_required = '제목을 입력해 주세요.';

// 배열 형식도 가능
$lang->status_names = [
	'open' => '진행중',
	'closed' => '마감',
];

形式に注意:$lang->key = 'value'; の単純な羅列である必要があります。関数定義や複雑なロジックを入れないでください。コアがこのファイルをパース・キャッシュします。

コードで使う

// PHP
$message = lang('mymodule.msg_title_required');   // 모듈 지정
return new \BaseObject(-1, 'mymodule.msg_title_required');  // 오류 메시지로

// 템플릿 v2
{{ $lang->msg_title_required }}
@lang('mymodule.msg_title_required')
  • 現在のモジュールの言語ファイルは自動で読み込まれます。他のモジュールのものを使うには moduleName.key と指定するか、Context::loadLang('modules/moduleName/lang') で読み込みます。
  • スキン・レイアウトも自分の lang/ フォルダーを持つことができ、テンプレートで @load('../lang/') によって読み込みます。

XML メタデータの多言語対応

info.xml・skin.xml の名前・説明は、xml:lang 属性で言語ごとに記述します。

<title xml:lang="ko">내 모듈</title>
<title xml:lang="en">My Module</title>
<description xml:lang="ko">설명</description>
<description xml:lang="en">Description</description>

ユーザーの言語設定に合うものが表示され、ない場合は既定の言語で代替されます。

ユーザー入力の多言語対応

管理者が入力する文言(掲示板名など)は、多言語入力ウィジェットで言語ごとの値を受け取れます。こうした値は、出力時に Context::replaceUserLang($value) を通すと現在の言語に置き換えられます。

<h2>{{ Context::replaceUserLang($module_info->board_title) }}</h2>

推奨事項

  • テンプレートに文言をハードコーディングせず、言語キーを使ってください。韓国語専用で始める場合でも ko.php をひとつ置いておけば、あとで言語を追加するときはファイルを追加するだけで済みます。
  • 言語ファイルにないキーを参照すると、キー名がそのまま表示されます。テンプレートでは {{ $lang->key ?? 'default text' }} で防げます。
  • Zittme のコアは12言語に対応しています。配布用の資料であれば、最低でも ko・en の2種類を推奨します。