日本語にてPlone3.xを使用する便利なプロダクト
2008年8月31日
ご無沙汰しております。夏休み最後の日は北軽井沢で過ごしています。3箇月に1回程度定期的に行っている、開発合宿に来ています。その成果の一部でもあります、プロダクトを2つ紹介します。
日本語でPloneを使う際の問題点
- ファイルアイテム(コンテンツタイプ)にて、日本語ファイル名をアップロードして、ダウンロードする際にファイル名が元の物と変わってしまう。
- 日本語にてタイトルを入力し、自動的にショートネームを生成すると意味のない文字列になる。
- 日本語検索がデフォルトで提供されない。また、アドオンプロダクトの設定も面倒。
- メールの文字化けなど発生するケースがある。
- その他
ファイルアイテム(コンテンツタイプ)の日本語ファイル名取り扱い
下記のプロダクトを説明の通りインストールしてください。日本語ファイル名ダウンロードプロダクトファイルをダウンロードする際のファイル名取得方法の仕様からみていきたいと思います。
基本
HTTPヘッダーにContent-Disposition: attachment; filename="filename.txt"とします。
もし、このヘッダーが無い場合は、URLの末尾を使用するようです。
日本語の場合
下記のような疑問が出てきます。- 文字コードを何にするか? ページのエンコーディングと一緒か?
- Windowsだったら、Shift_jisにすればいいのか?
- ヘッダーに日本語をいれて、RFC的に問題ない??
但し、ここからが問題です。このRFC2231の通り実装してもブラウザ毎に挙動が違うのです。それらが課題となりました。
ブラウザ毎の違い
- MS-IE6、MS-IE7
- 独自仕様が多くいつも困らされているが今回も・・・
- UTF-8で、URLエンコードした文字列を指定する。
- 即ち、「filename*=URLエンコードされたファイル名.txt」のように指定する。
- この場合は、拡張子が有ることが条件のようです。
- この方法以外にも、生Shift_jisの文字列を使用することでも機能するようです。(こちらは拡張子の有無に関係ないらしい)
- FireFox
- もっとも仕様に厳格で、RFC2231の通り実装すれば機能します。
- 即ち、「filename*=utf-8'B'URLエンコードされたファイル名.txt」のように指定する。
- Safari
- 様々なWebサイトを見ましたが、完全な答えは見つかりませんでした。
- ただ、Content-Disposition: を指定せず、URLの末尾に、UTF-8でURLエンコードしたファイル名を指定することで解決できるようです。(未確認)
- Opera
- 仕様がよく分かりません。
- 生UTF-8を指定することでうまくいくケースと駄目なケース(ファイルによる)があります。
- そこで、日本のOperaに知り合いがいたので、その方を経由して技術的な仕様を確認しているところです。今しばらくお待ち下さい。
このサイトを参考にさせていただきました。
日本語タイトルを意味のあるショートネームにする
下記のプロダクトを説明の通りインストールしてください。Plone日本語タイトルからショートネームを翻訳生成プロダクトこれは、先日のPlone研究会でたかのりさんにアイデアを頂きまして実装してみました。
アイデア段階では、Google翻訳を使用すれば良いと言うことだったのですが、Google側の仕様が変わったようで教えていただいたモジュールも使用できず、Yahoo!のAPIを使わせていただきました。
商用で使用できるかというと、外部のサイトを使ったりと問題も多そうですが、一つのアイデアプロダクトとして公開します。
その他
これら2つのプロダクトとも、現在の所、α公開です。またPlone3.0以降に対応させています。今後の仕様変更やクリティカルなバグが潜んでいる可能性が有ります。ただし、データベース操作をする物ではないので、プロダクトソースを消すことで元の機能に戻ります。
まだ、改良の余地も多いと思います。バグ報告や機能アップ要望などがありましたら、連絡をいただければと思います。
機能をお客様のために作り込むお仕事もさせていただいています。その際もご連絡を頂ければと思います。