JavaScript、Ajax、HTML5(API)、Ruby…Web及び関連技術の実験&情報公開&制作物紹介。

CatSort ver.0.42 - MT3.2における不具合を修正

CatSort - カテゴリーソートプラグインを修正、バージョン番号を ver.0.42 としました。

修正内容は以下の通り:

  • Movable Type ver.3.2x で使用する際、プラグイン一覧表示をしようとしたときにエラーが発生してしまう不具合を修正
    →MT3.2では日本語ローカライズされず、プラグイン情報は英語で表示されます。
  • 一部誤記を訂正

MT3.2xをご使用の方は、最新版への差し替えをお願いします。
MT3.3xでの使用に関しては、0.41でも問題ありません。機能追加もありませんので、MT3.3xをご使用の方は特にバージョンアップの必要はありません。

以下に、今回発覚した問題について詳細を報告します。
(技術情報になるので、関心のない方は読み飛ばしていただいても構いません。)

MT3.3のプラグイン・ローカライズ機構

CatSortプラグインは、ver.0.2 から日本語ローカライズを施しています。
これは、Six Apart - 技術情報提供ブログ: ローカライズ技術の解説を参考にそれを実践してみたものなのですが、これがそもそも、MT3.3以降を対象にしたものでした。
プラグインを構成するファイルのうち、L10N.pm([CatSort]/lib/CatSort/L10N.pm)というファイルは、MT::Plugin::L10Nというパッケージ([MT]/lib/Plugin/L10N.pm ファイル)を参照しているのですが、これがMT3.3から追加されたものであり、MT3.2には存在しません。
この時点で、そのまま動作させようとするとエラーになり得ます。
ただ、実際には「プラグインごとのローカライズ」という機能そのものがMT3.2には存在しないため、[CatSort]/lib/CatSort/L10N.pm ファイルが読み込まれることはなく、そのことによるエラーは発生しません。

訳文が存在しないときにエラーになるローカライズの指定

プラグインを自作したり、管理画面をいじったりする人じゃないとなかなか知らないものですが、実は<MT_TRANS>というテンプレートタグが存在します。
といってもこれは、管理画面を表示するテンプレートのみで使用できるモノで、phrase="?"属性で指定した文章を翻訳する働きをします。
翻訳の仕組みは、あらかじめ辞書ファイルが用意されており、phraseに対応する訳文が見つかったらそれに置き換える、というもの。
辞書ファイルの検索順序は、「MTの(ログインユーザの)使用言語(私たちは通常日本語(ja))」→「英語(en_us)」で、英語辞書でも見つからなかった場合は、phrase属性値がそのまま表示されます。
ただし、phrase属性値が「_PLUGIN_AUTHOR」のように「_(アンダースコア)」で始まっている場合は、最後まで検索しても見つからなかった場合はエラーになってしまいます。
つまり、「_HOGE_HOGE」等の「_」で始まるフレーズは、少なくとも英語辞書では必ず訳文を指定しておかなければならないのです。それ以外は、通常は英文にしておいて、それに対応する訳文を各言語の辞書ファイルに指定、なければその英文をそのまま表示、という仕組みを利用します。

今回の問題は、プラグインの説明と作者名に「_」で始まるローカライズ(翻訳)の指定をしており、それに対応する訳文(訳語)が見つからない([CatSort]/lib/CatSort/L10N/ ディレクトリ内には対応する辞書ファイルがありましたが、先ほどの「MT3.3のプラグインごとのローカライズ」に対応したものだったので読み込まれなかった)ためにエラーが発生していた、ということです。

解決方法

で。
今回は、MTのバージョンを確認し、3.3以上ならば今まで通りの(プラグインごとの)ローカライズが有効になるようにし、3.3未満の場合はデフォルトの英語表記が適用されるようにプラグイン本体を修正しました。

他にも、MT3.2でも3.3でも共通で使える、「MT全体のローカライズ機能」を利用してローカライズする、という選択肢もあります。
(建設的でないものとして「ローカライズしない」というのもありますけれど……。)

蛇足

今回の問題は、実は、全然別のプラグインを開発していて発見しました。
それまで気付かなかったし、誰からも指摘がなかったのは……自分自身を含め、MT3.2x 使用人口がどんどん減ってきているのが大きな理由でしょうか。
(CatSortプラグインの知名度がまだまだ低い、というのが一番大きいでしょうけれど……。)

カテゴリ

月別 アーカイブ

OpenID対応しています OpenIDについて

このブログ記事について

このページは、あんちもん2が2007年1月19日 21:52に書いたブログ記事です。

ひとつ前のブログ記事は「VarHandlerプラグイン」です。

次のブログ記事は「『日付表示用の言語』の設定を拡張! - DateLangX プラグイン」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。