Nucleus(JP)フォーラム Forum Index

Find on the forum:
OR  AND    » Advanced Search

未返信の記事を表示全てのフォーラムを既読にする

新しいトピックを投稿 トピックに返信
投稿者 メッセージ
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', ......);
で作成する(普段定数にしてるところを括って「文字列」として登録する)と、もしかするとうまくいくかもしれません。

トップに戻る

ユーザーのプロフィールを表示 プライベートメッセージを送信 投稿者のウェブサイトに移動 MSNM
きゃしゃ



登録日: 2007.12.15
記事: 302
所在地: 河内平野

記事 日時: 2009.02.10 (火) 15:51   記事の件名:
引用付きで返信

Mocchi wrote:
ここ痒い。何とかして手が届くようにならないものか Rolling Eyes

痒いですよねぇ Crying or Very sad
さらに、メンバーごとに使用する言語を切り替えできる仕様にも関わらず、
プラグインのメンバーオプションは、インストールしたメンバーのインストール時の言語設定に固定される。
その言語で表示されるならまだかわいいけど文字化けするし。(双方UTF-8の場合以外は)
shizuki wrote:
もしかするとうまくいくかもしれません。

やっぱ後方互換は諦めれってことですよねぇ。うーん。 Confused

トップに戻る

ユーザーのプロフィールを表示 プライベートメッセージを送信
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さん、ありがとー!

トップに戻る

ユーザーのプロフィールを表示 プライベートメッセージを送信 投稿者のウェブサイトに移動 MSNM
きゃしゃ



登録日: 2007.12.15
記事: 302
所在地: 河内平野

記事 日時: 2009.03.11 (水) 21:49   記事の件名:
引用付きで返信

すごい!
あー、PrePluginOptionsEdit。こんな簡単なことだったんだ。
shizukiさんNKJGさんありがとです。

トップに戻る

ユーザーのプロフィールを表示 プライベートメッセージを送信
Mocchi



登録日: 2006.11.19
記事: 143

記事 日時: 2009.04.10 (金) 12:59   記事の件名: やったっ!!でーきた
引用付きで返信

痒い痒い言っていたわりに反応がなくてすみません。。。
今制作中のプラグインで、PrePluginOptionsEditによる国際化を試してみたら、すごいっ!!できました。感激です Razz

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さんの記事を参考にさせていただきました。

トップに戻る

ユーザーのプロフィールを表示 プライベートメッセージを送信
新しいトピックを投稿 トピックに返信
特定期間内の記事を表示:   

ページ移動 前へ  1, 2

Page 2 of 2

All times are GMT + 9 Hours

移動先:  

新規投稿: 不可
返信投稿: 不可
記事編集: 不可
記事削除: 不可
投票参加: 不可
ファイル添付不可
ダウンロード:

Powered by phpBB © 2001, 2002 phpBB Group