メインコンテンツまでスキップ

言語設定

EasyMenu 7は標準で多言語に対応しており、メッセージファイルを編集することでプレイヤーに送信されるシステムメッセージを自由にカスタマイズできます。


言語の切り替え​

plugins/EasyMenu/config.yml の language キーで使用する言語コードを指定します。

plugins/EasyMenu/config.yml
# 利用可能: ja_jp (日本語), en_us (英語), ru_ru (ロシア語)
language: "ja_jp"

変更後、/menu reload を実行すると即座に反映されます。


同梱されている言語ファイル​

初回起動時、plugins/EasyMenu/lang/ フォルダ内に以下の言語ファイルが自動生成されます。

  • lang/ja_jp.yml (日本語)
  • lang/en_us.yml (英語)
  • lang/ru_ru.yml (ロシア語)

メッセージのカスタマイズ​

言語ファイルを直接編集して、サーバー独自の文言に変更できます。 言語ファイルはネストした形式で、plugins/EasyMenu/lang/ 内の各ファイルは次のキーを持ちます。

plugins/EasyMenu/lang/ja_jp.yml
plugin:
enabled: "EasyMenuを有効化しました。"
disabled: "EasyMenuを無効化しました。"

command:
player-only: "このコマンドはプレイヤーのみ使用できます。"
no-permission: "このコマンドを使用する権限がありません。"
submenu-error: "メニュー '%s' の読み込みに失敗しました。"

reload:
start: "EasyMenuを再読み込みしています..."
success: "EasyMenuの再読み込みが完了しました。"
error: "再読み込みに失敗しました。詳細はコンソールを確認してください。"
menu-updated: "EasyMenuが再読み込みされたためメニューを閉じました。"

menu:
execution-error: "メニュー操作を完了できませんでした。"
open-denied: "このメニューは開けません。"
element-disabled: "この項目は現在利用できません。"
render-failed: "メニューを表示できませんでした。"
presentation-unavailable: "このメニューは現在のサーバーバージョンでは表示できません。"

cooldown:
active: "あと %s 秒待ってください。"

action:
teleport-world-missing: "テレポートに失敗しました: ワールド '%s' が存在しません。"
teleport-invalid-coordinates: "テレポートに失敗しました: 座標が不正です。"

input.*(入力の案内・エラー文言)のキーも同じ形式で用意されています。全キーは同梱の lang/en_us.yml を参照してください。

ルール内容
キーの形式reload.success のように、YAMLのネストを . でつないだ名前で参照されます。reload-success: のような平らなキーは読まれません。
%s%s は実行時の値(メニューID、残り秒数、最小値など)に置き換わる書式指定です。個数と順序を変えないでください。% そのものを使いたい場合は %% と書きます。
色コードメニュー操作に関するメッセージ(menu.*、cooldown.active、command.submenu-error)は &a などのカラーコードが変換されます。リロードや入力に関するメッセージは、EasyMenuが色を固定して送信するため、色コードを入れても効きません。
部分的な上書き一部のキーだけを書いても構いません。書かなかったキーは、同梱の英語メッセージ、選んだ言語の同梱メッセージの順に補われます。
新しい言語lang/<コード>.yml を作り、config.yml の language にそのコード(小文字)を指定します。同梱ファイルが無い言語でも、ファイルがあれば使われます。どちらも無い場合は警告が出て英語になります。
メッセージ内変数の安全性

言語ファイルの %s は、EasyMenuが実行時の値を差し込むための書式です。メニューのYAMLで使う {player} や {remaining} といった変数とは別の仕組みで、言語ファイルでは {player} などは展開されません。 {remaining} が使えるのは、アイテムの cooldown.message の中だけです。