【解決済み】Scene Glossaryと翻訳プラグインの競合について。

ぶたマスク見習い
記事: 41
登録日時: 2016年11月23日(水) 23:03

【解決済み】Scene Glossaryと翻訳プラグインの競合について。

投稿記事by ぶたマスク見習い » 2019年5月05日(日) 20:16

こんばんは。いつもお世話になっています。
トリアコンタン様のプラグイン、Scene Glossaryを利用しようと思うのですが、SRD_TranslationEngineと競合してしまい、メニューを開く前にエラーが起きてしまいます。
(追記) エラー内容は ”undefined is not a function” でした。
SRD_TranslationEngineは翻訳文を挿入できるプラグインなのですが、SRDude様の説明動画曰く、他のプラグインでコマンドが増えても問題なく動くそうなのですが、メニュー画面に追加された辞書コマンドに対応できていないような気がします。
SRD_TranslationEngineの内容に、下記のようなコードを見かけたのですが、ここを変更すれば上手く動作するでしょうか?

コード: 全て選択

////===========================================================================
//// Window_Command
////
//// A small field is appended in order to identify Window_Command children.
//// The "addCommand" function is manipulated in order to apply translations.
////===========================================================================

Window_Command._id = '49202934';

$.Window_Command_initialize = Window_Command.prototype.initialize;
Window_Command.prototype.initialize = function(x, y) {
   $.Window_Command_initialize.apply(this, arguments);
   this[Window_Command._id] = true; //Special code used to identify the window as a child of Window_Command.
};

$.Window_Command_addCommand = Window_Command.prototype.addCommand;
Window_Command.prototype.addCommand = function(name, symbol, enabled, ext) {
   if(ConfigManager.isDefaultLanguage()) {
      $.Window_Command_addCommand.apply(this, arguments);
      return;
   }
   var lang = ConfigManager.getLanguage();
   if($dataTranslations['cmd'] && $dataTranslations['cmd'][name] && $dataTranslations['cmd'][name][lang]) {
      name = $dataTranslations['cmd'][name][lang];
   }
   $.Window_Command_addCommand.call(this, name, symbol, enabled, ext);
};

Window_Command.prototype.currentName = function() {
   return this.currentData() ? this.currentData().name : null;
};



双方の内容を確認したのですが、まだまだ知識不足ゆえ私の力では解決できませんでした。もし何か助言がございましたら、大変助かります。RPGツクールmvはver1.5.1、macOS Sierraを使用しています。
よろしくお願いします。
最後に編集したユーザー ぶたマスク見習い on 2019年5月07日(火) 15:46 [ 編集 2 回目 ]

ぶたマスク見習い
記事: 41
登録日時: 2016年11月23日(水) 23:03

Re: Scene Glossaryと翻訳プラグインの競合について。

投稿記事by ぶたマスク見習い » 2019年5月06日(月) 16:59

先日からエラー内容を確認しました。SceneGlossaryではこちらがエラーの原因になるだろうと思われます。
引き続き解決策を捜索中です。

コード: 全て選択

    //=============================================================================
    // Window_MenuCommand
    //  用語集画面の呼び出しの選択肢を追加定義します。
    //=============================================================================
    var _Window_MenuCommand_addOriginalCommands      = Window_MenuCommand.prototype.addOriginalCommands;
    Window_MenuCommand.prototype.addOriginalCommands = function() {
        _Window_MenuCommand_addOriginalCommands.apply(this, arguments);
        param.GlossaryInfo.forEach(function(glossaryInfo, index) {
            var glossaryName = glossaryInfo.CommandName;
            if (Scene_Menu.isVisibleGlossaryCommand(index)) {
                if (typeof TranslationManager !== 'undefined') {
                    TranslationManager.translateIfNeed(glossaryName, function(translatedText) {
                        glossaryName = translatedText;
                    });
                }
                this.addCommand(glossaryName, 'glossary' + String(index + 1), this.isGlossaryEnabled(index));
            }
        }, this);
    };

    Window_MenuCommand.prototype.isGlossaryEnabled = function() {
        return true;
    };
奏ねこま
記事: 702
登録日時: 2016年1月20日(水) 20:04

Re: Scene Glossaryと翻訳プラグインの競合について。

投稿記事by 奏ねこま » 2019年5月06日(月) 18:55

エラーが出た、という場合はそのエラーの内容も記載しましょう。
(やってみればわかるというのは質問をする側として不誠実だと思いますので)

トリアコンタンさんの用語辞典プラグインは同じく同氏提供の「自動翻訳プラグイン」に対応するための処理が施してあるのですが、その自動翻訳プラグインのプログラムで使われている名前がたまたまSRD_TranslationEngineと被ってしまっているために「自動翻訳プラグインを使っている」と判断されてしまっているようです。

添付した画像のような記述を追加をすることで、その判断部分を無効化することができます。
なお、この修正により自動翻訳プラグインとの併用はできなくなります。

■SceneGrossary.jsの修正箇所■
無題.png
無題.png (11.25 KiB) 閲覧数: 2182 回
ぶたマスク見習い
記事: 41
登録日時: 2016年11月23日(水) 23:03

Re: Scene Glossaryと翻訳プラグインの競合について。

投稿記事by ぶたマスク見習い » 2019年5月07日(火) 15:44

ありがとうございます。無事双方のプラグインが機能しました!
そしてエラー内容の不備について、大変申し訳ございません。決して回答者様方に投げやりにするような無礼を働くつもりはなく、質問内容の記載漏れをしてしまい、ご迷惑をおかけ致しました。今後抜けのないよう気をつけます。

奏ねこま さんが書きました:エラーが出た、という場合はそのエラーの内容も記載しましょう。
(やってみればわかるというのは質問をする側として不誠実だと思いますので)

トリアコンタンさんの用語辞典プラグインは同じく同氏提供の「自動翻訳プラグイン」に対応するための処理が施してあるのですが、その自動翻訳プラグインのプログラムで使われている名前がたまたまSRD_TranslationEngineと被ってしまっているために「自動翻訳プラグインを使っている」と判断されてしまっているようです。

添付した画像のような記述を追加をすることで、その判断部分を無効化することができます。
なお、この修正により自動翻訳プラグインとの併用はできなくなります。

■SceneGrossary.jsの修正箇所■
無題.png

“MV:質問” へ戻る