wa - NucleusやFlashなどなど

RSS

Home > Nucleus > (マルチバイトな)Nucleusプラグインを自動的に言語ファイル対応に変換するツール

01.28 '06

(マルチバイトな)Nucleusプラグインを自動的に言語ファイル対応に変換するツール

プラグインを作る時、euc版とutf8版を用意するのって、意外と面倒なんですよね。(NP_znItemFieldEXみたいに複数のファイルを含むものの場合は特に)
準備して、さぁアップだと思った時に、修正箇所が見つかると、、、、、ちょっとめげます。(英語で書ければなぁ。)
それで、これからは(以前から気になっていた)言語ファイル対応にしてみようと思いまして、、、自動的にプラグインのソースコードを解析・変換して、指定した文字コード用(複数可)の言語ファイルを生成するツールをPHPで作ってみました。(NP_znItemFieldEXver0.03alphaを作りながら。)
言語ファイルへの対応方法は、Nucleus(JP)フォーラム - 「Tips:プラグインの国際化」を参考にさせていただきました。Andyさんありがとうございます。:-D

(自分用に覚書ということで。。。)
配列セットに、プラグインごとの設定値を用意しておいて、MULTILANGUAGEクラスに渡すだけです。
設定値は、こんな感じ
パラメータ用途
language 元ファイルの文字コード
languageFile 言語ファイル保存先
define define接頭辞
character 作成する言語ファイルの文字コード(配列で複数指定可能)
fileSetDefine 変換対象ファイルと、保存先ファイルのセット(配列で複数指定可能)
fileSetEncode 文字コード変換対象ファイルと、保存先ファイルのセット(配列で複数指定可能)

実際には、こんな感じで使用
//プロジェクト定義
$NP_znItemFieldEX = array(
  "language"      => "EUC-JP",             //元ファイルの文字コード
  "languageFile"  => "../znitemfieldex/",  //言語ファイル保存先
  "define"        => "_ZNIFEX",            //define接頭辞
  "character"     => array("euc""utf8"), //作成する言語ファイルの文字コード
  "fileSetDefine" => array(                //変換対象ファイルと、保存先ファイルのセット
    "NP_znItemFieldEX/NP_znItemFieldEX.php"    => "../NP_znItemFieldEX.php"
    "NP_znItemFieldEX/znitemfieldex/index.php" => "../znitemfieldex/index.php"
  ), 
  "fileSetEncode" => array(                //文字コード変換対象ファイルと、保存先ファイルのセット
    "NP_znItemFieldEX/znitemfieldex/help.php"         => "../znitemfieldex/\0help.php"
    "NP_znItemFieldEX/znitemfieldex/helpex.php"       => "../znitemfieldex/\0helpex.php"
    "NP_znItemFieldEX/znitemfieldex/helptemplate.php" => "../znitemfieldex/\0helptemplate.php"
  )
);
//実行
$ml = new MULTILANGUAGE($NP_znItemFieldEX);
$ml->projectConvert();
プラグインごとに、プロジェクト定義しておいて、フォームのSELECTなどで選択できるようにしておけば、変換するプラグインを、”選んでポン”って感じで変換できます。
上の例では、
ファイル種類ファイル名解説
プラグイン本体 NP_znItemFieldEX.php ← マルチバイト文字列を定数に変換したファイルを生成
プラグイン管理ページ znitemfieldex/index.php ← マルチバイト文字列を定数に変換したファイルを生成
euc言語ファイル znitemfieldex/japanese-euc.php ← 定数を定義した言語ファイルを生成
utf8言語ファイル znitemfieldex/japanese-utf8.php ← 定数を定義した言語ファイルを生成
eucヘルプ znitemfieldex/japanese-euc.help.php ← エンコードしたファイルを生成
eucヘルプ znitemfieldex/japanese-euc.helpex.php ← エンコードしたファイルを生成
eucヘルプ znitemfieldex/japanese-euc.helptemplate.php ← エンコードしたファイルを生成
utf8ヘルプ znitemfieldex/japanese-utf8.help.php ← エンコードしたファイルを生成
utf8ヘルプ znitemfieldex/japanese-utf8.helpex.php ← エンコードしたファイルを生成
utf8ヘルプ znitemfieldex/japanese-utf8.helptemplate.php ← エンコードしたファイルを生成
計10個のファイルが生成されます。

元のプラグインソースファイルは、普通にマルチバイト文字列を使用して作ります。
MULTILANGUAGEクラスが、ソースを解析して、以下の変換を行います。
対象ファイルを自動的に圧縮して、アップロード先ディレクトリに自動的にコピーしてくれると、更に楽かも。
あと、機械翻訳で、English言語ファイルも自動生成しちゃうのはダメかな。完全全自動。(意味不明な英文作りそう。:mrgreen:
と、ここまで書いて、今気が付きました。
eucと、utf8の変換が面倒で作り始めたのですが、何も言語ファイルに対応しなくても、自動で文字コードを変換するだけで、良かったのかも。
気付くのが、作り終わった後で良かった。:heart:早く気付いてたら多分、言語ファイル対応してないもん。(←ばか)

横道にそれまくっていますが、NP_znItemFieldEX ver0.03alphaの作成は順調です。:!!:

コメント

01.28 '06 03:30:49 Kimitake
今回 NP_SkinFiles の英語から日本語化してたんですが、
例えば
Cannot delete file <<test.txt>>.
みたいに表示してる部分があるんですが、馬鹿正直に、
ファイルが削除出来ません <<test.txt>>。
ってやるとちょっと変なので、
ファイル <<test.txt>> が削除出来ません。
ってな感じで若干元も文章を細かく分割して言語ファイルに移動したりしたので結構手間取りました。ま、元々がそのあたりのこと考慮せずにメッセージなど書かれてあったからなんですが、それで自動である程度作成できるとうれしいかもしれないですね。
01.28 '06 11:49:08 佐藤(な)
うわぁー、、、そっか~。
基本的に、本体ソースファイルに全角を入れないようにすることを目的として作ったので、
英語 → 日本語
の変換には全く使えません。:[]すみません。タイトルが間違いです。(マルチバイトな)を追加しておきました。:oops:

日本語と英語とで、文章中の単語の入る位置が違ったりするので難しいですね。
ぼく、メッセージ内の括弧も全角で書くクセがありまして、この自動変換ツールを使うと、"("だけ切り出されたりします。:mrgreen:
言語ファイルに、defineの一覧が出力されるので、「ん?」と思うところは、元ソースから修正したりしてます。
コメントも、全角部分が削除されちゃうので、バージョン経歴とかも消えちゃったりします。(これは何とかしないと。)

手間は激減しますが、なかなか、自動変換っていうのも難しいですね。
02.17 '06 12:09:04 佐藤(な)
翻訳サービスを利用して、
English言語ファイルも自動生成しちゃうようにしてみました。:mrgreen:(99%自動化?!)
今後は、一部の佐藤(な)製プラグインには、かなり意味不明な英文のenglish.phpファイルが同梱されることになりますが、あんまり気にしないで下さい。:oops::poeeen:
英語圏で使用される方は、いらっしゃらないと思いますが、言語ファイルに対応させた都合で、english.phpファイルを付けています。

コメント追加



プレビュー

コメント追加通知RSS:
↑このフィードをRSSリーダーに登録しておくと、この記事へのコメント追加をチェックすることができます。
コメント追加後の、返事待ちなどにお使い下さい。
なお、コメントチェックの必要がなくなった際には、このRSSを削除して下さいね。
不要なトラフィックを避けるために、ご協力お願いいたします。

トラックバック

トラックバック
このエントリにトラックバックはありません
このトラックバックURLを使ってこの記事にトラックバックを送ることができます。 もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。.
トラックバックURL:
PluginGenerator znBackup znItemFieldEX znCustomAdmin znBackup znSmiley znShowDraft yuiCalendar znSpeedCubing znKeywordLink znCommentRSS znCCitation znItemParts znMCList znHatenaExist znQuestionnaire znFlash