profile picture

Rust プラグインをローカライズする

Published on 2024/08/15
Tags game rust mod plugin oxide

概要

Rust プラグインをローカライズします。

参考情報

関連情報

デフォルトの文言を設定

Rust プラグインのチャットコマンドを実装する で作成した ActivePlayers.cs ファイルをローカライズします。

  1. Dictionary を使用するため、System.Collections.Generic をインポートします。

    using System.Collections.Generic;
    
  2. LoadDefaultMessages メソッドをオーバーライドして、デフォルトの文言を設定します。言語コードは ISO 639 language code を指定します。

                // English
                lang.RegisterMessages(new Dictionary<string, string>
                {
                    ["ActivePlayerName"] = "Active Player: {0}"
                }, this);
    
                // Japanese
                lang.RegisterMessages(new Dictionary<string, string>
                {
                    ["ActivePlayerName"] = "アクティブプレーヤー: {0}"
                }, this, "ja");
    
  3. ActivePlayersCommand メソッドでデフォルトの文言を取得します。

                string activePlayerNameMessage = lang.GetMessage("ActivePlayerName", this, player.UserIDString);
    
  4. デフォルトの文言をチャットに表示します。

                foreach (BasePlayer activePlayer in BasePlayer.activePlayerList)
                {
                    PrintToChat(player, string.Format(activePlayerNameMessage, activePlayer.displayName));
                }
    
  5. 全てのソースコードは次の通りです。

    using System.Collections.Generic;
    
    namespace Oxide.Plugins
    {
        [Info("Active Players", "Unknown Author", "0.1.0")]
        [Description("This plugin displays all active usernames in the chat.")]
        class ActivePlayers : RustPlugin
        {
            void Init()
            {
            }
    
            protected override void LoadDefaultMessages()
            {
                // English
                lang.RegisterMessages(new Dictionary<string, string>
                {
                    ["ActivePlayerName"] = "Active Player: {0}"
                }, this);
    
                // Japanese
                lang.RegisterMessages(new Dictionary<string, string>
                {
                    ["ActivePlayerName"] = "アクティブプレーヤー: {0}"
                }, this, "ja");
            }
    
            [ChatCommand("activeplayers")]
            void ActivePlayersCommand(BasePlayer player, string command, string[] args)
            {
                string activePlayerNameMessage = lang.GetMessage("ActivePlayerName", this, player.UserIDString);
    
                foreach (BasePlayer activePlayer in BasePlayer.activePlayerList)
                {
                    PrintToChat(player, string.Format(activePlayerNameMessage, activePlayer.displayName));
                }
            }
        }
    }
    

デフォルトの文言を上書き

プラグインの文言をサーバー側で上書きします。

  1. サーバーの oxide/lang/ja にある JSON ファイル ActivePlayers.json を VSCode で開きます。

  2. ActivePlayerName の文言を書き換えます。

    {
        "ActivePlayerName": "現在ログイン中のユーザー: {0}"
    }
    

プラグインの動作確認

  1. ActivePlayers.cs ファイルをサーバーの oxide/plugins フォルダにコピーします。

  2. サーバーを起動します。

  3. Rust を起動してサーバーに接続します。

  4. チャットに /activeplayers を入力します。