| 投稿者 | メッセージ | ||||
|---|---|---|---|---|---|
|
Andy モデレーター ![]() 登録日: 2004.03.18 記事: 1490 所在地: 横浜 |
最近,プラグインを作るときに,メッセージなどをハードコーディングするのではなく,Nucleus本体と同じように 言語ファイルを使うようにしています(実際には途中までハードコーディングで作っていて,完成が近づくと 言語ファイル化するという感じですが)。 一応,覚書とほかの方にも参考になるかと思って方法を書いておきます。 (1)プラグインと同じ名前のディレクトリを作る ただし,NP_は取って,小文字にする必要があります。 例えばNP_ABC.phpなら abc というディレクトリをプラグイン・ディレクトリの下に作ります (2)ディレクトリの中に,開発環境と同じ言語用の言語ファイルを作る UTF-8ならjapanese-utf8.php,EUC-JPならjapanese-euc.phpが標準です (3)
といった形でプログラム中の日本語メッセージを定義していき,並行してプログラムのメッセージを _ABC_MESSAGENAME などに置き換える。 メッセージはグローバルな名前になるので,プラグイン名を最初に付けるようにしています。 (4)プラグインのinit関数を以下のようにする
(5)言語ファイルを増やしていく UTF-8からEUC-JPや,その逆はエディタでエンコードを変えるだけでできます。 あと,english.phpは日本語以外のデフォルトなのでなるべく作るようにします。 以上です。 これで,後から他の言語を追加するのも容易になります。 _________________ Foodyn CMS開発日誌 http://www.matsubarafamily.com/lab/ |
||||
|
|
|||||
|
nakahara21 モデレーター ![]() 登録日: 2003.11.14 記事: 1298 所在地: 尼崎 |
最新版ではhelp.htmlをadminディレクトリに置いて、
と書くと、プラグイン一覧ページの「アクション」に『ヘルプ』リンクが生成されて、ヘルプ表示が可能となっているようですが。 このhelp.htmlを他言語化したい(言語ファイルを使いたい)場合は、どのようにすれば一番簡単なのでしょう? 言語ファイルを読み込ませるよりも、japanese-euc.help.htmlとかを用意する方が作成時は楽チンなのですが、ADMIN.phpのfunction action_pluginhelp()を改良してもらった方がいいような気がします。 改良例がないと誰も賛同してくれないような気がしますが... _________________ nakahara21 http://nakahara21.com/ *移転しています |
||||
|
|
|||||
|
nakahara21 モデレーター ![]() 登録日: 2003.11.14 記事: 1298 所在地: 尼崎 |
ADMIN.phpのfunction action_pluginhelp()の後半は、
こんなかんじでどうでしょうか。 file_existsが2回実行されるのでスマートではないですが、例えばって事で。 _________________ nakahara21 http://nakahara21.com/ *移転しています |
||||
|
|
|||||
|
Andy モデレーター ![]() 登録日: 2004.03.18 記事: 1490 所在地: 横浜 |
まみおさんの書いた方法が現実的ではないかと思います。 install()内で言語調べてリネームなんていうのも考えたのですが, そうなると今度はパーミッションが引っかかってくるし… _________________ Foodyn CMS開発日誌 http://www.matsubarafamily.com/lab/ |
||||
|
|
|||||
|
nakahara21 モデレーター ![]() 登録日: 2003.11.14 記事: 1298 所在地: 尼崎 |
あつかましいですが、本家に意見投稿をお願いできたら嬉しいです。 くだんのスキン内変数の件と一緒でも良いです。 _________________ nakahara21 http://nakahara21.com/ *移転しています |
||||
|
|
|||||
|
Andy モデレーター ![]() 登録日: 2004.03.18 記事: 1490 所在地: 横浜 |
了解です。 _________________ Foodyn CMS開発日誌 http://www.matsubarafamily.com/lab/ |
||||
|
|
|||||
|
shizuki モデレーター ![]() 登録日: 2006.03.23 記事: 891 所在地: 西播磨 |
古い話を引っ張り出して恐縮ですが、この話はその後どうなったんでしょう? もし都合が悪くなければ日本語版だけでも・・・ |
||||
|
|
|||||
|
Andy モデレーター ![]() 登録日: 2004.03.18 記事: 1490 所在地: 横浜 |
ここはまだ入れてないです。すみません… 3.3日本語版に入れますか?→Kimitakeさん _________________ Foodyn CMS開発日誌 http://www.matsubarafamily.com/lab/ |
||||
|
|
|||||
|
yama.kyms モデレーター ![]() 登録日: 2005.07.07 記事: 1049 所在地: fujisawa |
もしこのようにヘルプのページを簡単に作れるようになるなら、自分もできる範囲で いくつかのプラグインのヘルプの作成をお手伝いしたいと思います。 よろしくお願いします。 |
||||
|
|
|||||
kosugiatkips![]() 登録日: 2006.01.15 記事: 353 所在地: 金沢区 |
コア側で言語を判定して読んでくれるのはありがたいのかもしれませんが、プラグイン一覧からヘルプを呼ぶだけではなく、管理画面の他のシチュエーションから呼ぶことも考えられるので、そもそもhelp.html決め打ちじゃなくて、help.phpを呼ぶようにすれば、ダイナミックなヘルプページが作れるからいいと思います。 リンク元の状況や、見る人の権限によっては不要なヘルプコンテンツもあるでしょうから。 help.phpがなかったらhelp.htmlを呼ぶようにすれば下位互換性も保てるわけですし。
|
||||
|
|
|||||
|
Katsumi モデレーター ![]() 登録日: 2005.06.24 記事: 632 所在地: CA |
ちょっと強引ですが、あるプラグインで help.html を
でも、やはり help.php をコアで読み込みに行くなどの方法が、簡単でいいですね。 _________________ Nucleus-SQLite 配布中 VBScript / JScript で Win32API / 構造体 / コールバック関数: SFC mini |
||||
|
|
|||||
|
Katsumi モデレーター ![]() 登録日: 2005.06.24 記事: 632 所在地: CA |
最近、wiki のページが充実しているプラグインが増えていますが、プラグイン一覧ページの『ヘルプ』にwikiの内容を取り込めばいいなと思っていました。 このトピックスで議論のある多言語化の問題とか複雑なのですが、おそらく一番簡単にこれが実装できる方法を発見しました。 help.htmlに、
_________________ Nucleus-SQLite 配布中 VBScript / JScript で Win32API / 構造体 / コールバック関数: SFC mini |
||||
|
|
|||||
|
yama.kyms モデレーター ![]() 登録日: 2005.07.07 記事: 1049 所在地: fujisawa |
国際化をちょくちょくやるようになって気付いたことですが。。 自国語のlangファイルがなければenglish.phpを読みに行く。そこのところはいいのですが、 ファイルはあるけど中身のエントリー数が合ってないということがあると思います。 プラグインのバージョンアップに合わせてlangファイルもアップデートする必要があるわけで、 対応言語が多いほど単純作業が増えることになりますね。 この手間を惜しんでも_ABC_MESSAGENAMEなどのエントリー名がそのまんま表示されるだけで さほど困ったことにはならないですが、もし該当エントリーが存在しない場合はデフォルトの english.phpから読み出してくるという書き方もできそうな気がします。 _________________ yama Nucleus CMS 3.51JP |
||||
|
|
|||||
|
Katsumi モデレーター ![]() 登録日: 2005.06.24 記事: 632 所在地: CA |
一番簡単な解決策は、例えば japanese-utf8.phpをインクルードした後に、english.phpをインクルードすることです。先にインクルードされたほうが優先になります。2回目のインクルードのときに Notice が出るので、@include()としておけばよいと思います。ただしこの方法だと1ミリ秒ほどのロスがあるので、ベータバージョンでのみ使うようにしたほうが良いと思います。 _________________ Nucleus-SQLite 配布中 VBScript / JScript で Win32API / 構造体 / コールバック関数: SFC mini |
||||
|
|
|||||
|
yama.kyms モデレーター ![]() 登録日: 2005.07.07 記事: 1049 所在地: fujisawa |
先にenglish.phpを読み込んで、後からjapanese.phpで上書きするのかと思ってましたが、逆なんですね。今度機会があったら試してみます。今やってるNP_MitasNomはまた違う方式のようですが。(MovableTypeみたい、と思いました) _________________ yama Nucleus CMS 3.51JP |
||||
|
|
|||||
|
Andy モデレーター ![]() 登録日: 2004.03.18 記事: 1490 所在地: 横浜 |
これでそうなります。 _________________ Foodyn CMS開発日誌 http://www.matsubarafamily.com/lab/ |
||||
|
|
|||||
|
yama.kyms モデレーター ![]() 登録日: 2005.07.07 記事: 1049 所在地: fujisawa |
ありがとうございます。おかげで他国語対応少し手抜きができそうです。 _________________ yama Nucleus CMS 3.51JP |
||||
|
|
|||||
|
きゃしゃ 登録日: 2007.12.15 記事: 302 所在地: 河内平野 |
プラグインの日本語化について、Katsumiさん方式と佐藤(な)さん方式の折衷でこんなルーチンを考えてみました。 開発効率の向上が目的です。arrayにすれば多言語化も可能です。 メリット ・langファイルを別途用意しなくて良い ・ソースの見通しがよい ・辞書の見通しがよい ・辞書に漏れやtypoがあっても英文が表示される ・グローバル定数とのバッティングを気にしなくてよい デメリット ・いちいちfunction呼ぶので効率がよろしくない
実例として、試しにNP_Captchaを日本語化してみました。 |
||||
|
|
|||||
|
きゃしゃ 登録日: 2007.12.15 記事: 302 所在地: 河内平野 |
質問です。 っていうか、相談ていうか、意見を伺いたいんですが。 日本語版コアではglobalfunctionsのencode_descをHTML_ENTITIESからHTML_SPECIALCHARSに変更してあるので、 Descriptionも2バイト文字で表示できますけど、本家版では文字化けしますよね。 最新の本家版3.40RCで確認したんですが、HTML_ENTITIESのままでした。 日本語版コアで使う分にはよいのですが、プラグインを「国際版」と考えるなら、 「"歴史的理由により"Descriptionは英文にしておく」というのを暗黙のお作法にしたほうがいいんでしょうか? そういえば、多言語化してあるプラグインでもDescriptionは英文にしてあるのが結構ありますよねぇ。 NP_Mediatocuも英文でしたわ、そういえば。勝手に日本語にしちゃったのですけど。 現実的には、日/英 以外の多言語化されているプラグインをあたしは知らないのですけど。 |
||||
|
|
|||||
|
Mocchi 登録日: 2006.11.19 記事: 143 |
折衷案は、言語ファイルの規模があまり大きくないプラグインに向いてそうですね。基本は配列操作なので、それほど重さを感じないようなルーチンではないでしょうか。
これは今まで気づきませんでした。言語ファイルでDescriptionもプラグイン・オプションの説明文も日本語化していましたが、これらって、インストールと同時にデータベースに登録されてしまうんですね。そうしたら、言語ファイルを準備しても、表示自体は、インストール時の言語設定に左右されてしまうという事態に。。。 ここ痒い。何とかして手が届くようにならないものか |
||||
|
|
|||||
|
All times are GMT + 9 Hours
新規投稿: 不可 Powered by phpBB © 2001, 2002 phpBB Group |
|||||