|
|
| 投稿者 |
メッセージ |
shizuki
モデレーター

登録日: 2006.03.23
記事: 891
所在地: 西播磨
|
日時: 2009.02.08 (日) 17:56 記事の件名:
| きゃしゃ wrote: | 「"歴史的理由により"Descriptionは英文にしておく」というのを暗黙のお作法にしたほうがいいんでしょうか?
そういえば、多言語化してあるプラグインでもDescriptionは英文にしてあるのが結構ありますよねぇ。 | 理由としては「忘れてた」とか「面倒」がトップな気もしますが…
それはさておき、Descriptionは多国語化しても大丈夫です。
ここは表示の都度呼び出されますから、ちゃんと言語ファイルを使う限り問題ないです。
但し、「プラグインオプション」は | Mocchi wrote: | | インストールと同時にデータベースに登録されてしまう | ので、 | Mocchi wrote: | | インストール時の言語設定に左右されてしまうという | 悲しい事になります。
これなんですが、showlist.php の listplug_plugOptionRow($current) にある
| Code: | | echo '<td>',htmlspecialchars($current['description']?$current['description']:$current['name']),'</td>'; | の部分を
| Code: | | $plugDesc = $current['description'] ? (defined($current['description']) ? defined($current['description']) : $current['description']) : $current['name']; | として、オプション作成時に
| Code: | | createOption('optionName', '_PLUG_OPTION_DESC', ......); | で作成する(普段定数にしてるところを括って「文字列」として登録する)と、もしかするとうまくいくかもしれません。
|
|
トップに戻る
|
|
きゃしゃ
登録日: 2007.12.15
記事: 302
所在地: 河内平野
|
日時: 2009.02.10 (火) 15:51 記事の件名:
| Mocchi wrote: | ここ痒い。何とかして手が届くようにならないものか  |
痒いですよねぇ
さらに、メンバーごとに使用する言語を切り替えできる仕様にも関わらず、
プラグインのメンバーオプションは、インストールしたメンバーのインストール時の言語設定に固定される。
その言語で表示されるならまだかわいいけど文字化けするし。(双方UTF-8の場合以外は)
| shizuki wrote: | | もしかするとうまくいくかもしれません。 |
やっぱ後方互換は諦めれってことですよねぇ。うーん。
|
|
トップに戻る
|
|
shizuki
モデレーター

登録日: 2006.03.23
記事: 891
所在地: 西播磨
|
日時: 2009.03.11 (水) 14:18 記事の件名:
プラグインAPIを使用して、オプションの多国語化に成功しました。
| Code: | function event_PrePluginOptionsEdit($data)
{
if ($data['plugid'] === $this->getID()) {
foreach($data['options'] as $key => $value){
if (defined($value['description'])) {
$data['options'][$key]['description'] = constant($value['description']);
}
// if (!strcmp($value['type'], 'select') && defined($value['typeinfo'])) {
// $data['options'][$key]['typeinfo'] = constant($value['typeinfo']);
// }
}
}
} |
このコードでうまくいきます。
install() メソッドでオプションを作成する時に | Code: | | createOption('optionName', '_PLUG_OPTION_DESC', ......); | として、「オプションの説明」を文字列として登録することで、呼び出されたときにその文字列に対応した定数を呼び出すことができます。
3行ほどコメントアウトしてある部分は「select」タイプに対応している部分で、「select」タイプのオプションで、選択肢も定数化して使っている場合などに使用できます。
コアの改造無しで、プラグインがフックするイベントを一つ追加するだけで出来るので結構お手軽だと思います。
NKJGさん、ありがとー!
|
|
トップに戻る
|
|
きゃしゃ
登録日: 2007.12.15
記事: 302
所在地: 河内平野
|
日時: 2009.03.11 (水) 21:49 記事の件名:
すごい!
あー、PrePluginOptionsEdit。こんな簡単なことだったんだ。
shizukiさんNKJGさんありがとです。
|
|
トップに戻る
|
|
Mocchi
登録日: 2006.11.19
記事: 143
|
日時: 2009.04.10 (金) 12:59 記事の件名: やったっ!!でーきた
痒い痒い言っていたわりに反応がなくてすみません。。。
今制作中のプラグインで、PrePluginOptionsEditによる国際化を試してみたら、すごいっ!!できました。感激です
shizukiさんNKJGさん、どうもありがとう
|
|
トップに戻る
|
|
きゃしゃ
登録日: 2007.12.15
記事: 302
所在地: 河内平野
|
日時: 2009.06.24 (水) 17:03 記事の件名:
メンバーオプション等も言語設定連動できるように拡張しました。
| Code: | function event_PrePluginOptionsEdit($data) {
if ($data['context'] == 'global') {
if ($data['plugid'] === $this->getID()) {
foreach($data['options'] as $key => $value){
if (defined($value['description'])) {
$data['options'][$key]['description'] = constant($value['description']);
}
// if (!strcmp($value['type'], 'select') && defined($value['typeinfo'])) {
// $data['options'][$key]['typeinfo'] = constant($value['typeinfo']);
// }
}
}
} else {
foreach($data['options'] as $key => $value){
if (($value['pid'] == $this->getID()) && (defined($value['description']))) {
$data['options'][$key]['description'] = constant($value['description']);
}
// if (($value['pid'] == $this->getID()) && !strcmp($value['type'], 'select') && defined($value['typeinfo'])) {
// $data['options'][$key]['typeinfo'] = constant($value['typeinfo']);
// }
}
}
} | NKJGさんの記事を参考にさせていただきました。
|
|
トップに戻る
|
|
|
|
|
|
Page 2 of 2
All times are GMT + 9 Hours
新規投稿: 不可 返信投稿: 不可 記事編集: 不可 記事削除: 不可 投票参加: 不可 ファイル添付不可 ダウンロード: 可
Powered by phpBB © 2001, 2002 phpBB Group
|