Opera ウィジェット エミュレータ

OperaはPCでのブラウザのシェアとしては大きくないんだけれども
Wiiなどのゲーム機やモバイル機、携帯などにも
搭載されているのでそれを合わせると結構な数になると思います。
当然Opera ウィジェットもWiiで動いたりします。
そこでの動作環境の確認用にエミュレータがあります。
Opera ウィジェットとしてOperaから提供されています。

エミュレータで動かすためには
下記の文章を書いてあげる必要があります。
 <script type=”text/javascript” language=”javascript”>
  if(parent.emulator){
   parent.emulator.begin(window);
  }
 </script>

注意点はあくまで動かしている
Operaのバージョン上でエミュレートしており
実機のOepraバージョンとは異なったりします。
残念ながらやっぱりエミュレータでしかないところです。

音の再生

今回は各ガジェットにて音の再生と停止についてです。

Opera ウィジェット、Mac OS X Dashboard ウィジェット、
iGoogle ガジェットに関しては拡張APIが用意されていません。
なのでFlash経由などで行う方法しかないようです。

また、音源ファイルにはいろいろとフォーマットがありますが
Adobe AIRはmp3のみサポートしていますので
要注意です。

ではその他のガジェットに関しては下記のように行います。
 Windows サイドバーガジェット:
  <再生>
   System.Sound.playSound(“foo.mp3”);

  <停止> 引数にから文字を設定します
   System.Sound.playSound(“”);

 Adobe AIR:
  <再生>
   if(airSoundChannel != null){
    airSoundChannel.stop();
   }
   var sound = new air.Sound(
    new air.URLRequest(“foo.map3”)
   );
   airSoundChannel = sound.play(0);

  <停止>
   if(airSoundChannel != null){
    airSoundChannel.stop();
   }

 Google デスクトップ ガジェット:
  <再生>
   if(curAudioClip == null){
    curAudioClip = framework.audio.play(“foo.mp3”, onAudioStateChange);
   } else {
    curAudioClip.currentPosition = 0;
   }

  <停止>
   if(curAudioClip != null){
    curAudioClip.stop();
    curAudioClip = null;
   }

 Yahoo!ウィジェット:
  <再生>
   play(“foo.mp3”, true);

  <停止> 引数にnullを設定
   play(null, true);

Yahoo!ウィジェットでのローカライズについて

Yahoo!ウィジェットでのローカライズについてですが
これはベースディレクトリの下に”Resources”ディレクトリを作成し
その下に”ja”などの言語ディレクトリを作成します。
そこにはローカライズ毎に”Localizable.strings”を作成します。

“Localizable.strings”ファイルの中身は
下記のように記述します。
行末の”;”を忘れないようにしてください。
 “foo” = “bar”;

ローカライズされたメッセージを取得するときは
下記の拡張APIを使用します。
 var msg = widget.getLocalizedString(“foo”);

Google デスクトップ ガジェットでのローカライズについて

Google デスクトップ ガジェットでのローカライズについてですが
iGoogle ガジェットと同じかと思いきや違います。

ベースディレクトリの下に日本語だったら”1041″、
英語だったら”1033″という風に言語に対する
言語コードとなる番号のディレクトリを作成します。
その配下には”strings.xml”の
ローカライズされたXMLファイルを置きます。

“strings.xml”の中身はというと
下記のように記述します。
 <strings>
  <foo>bar</foo>
 </strings>

注意しないといけないのは”strings.xml”の
ファイルエンコードは”UTF-8″のBOM付きです。

さて、ローカライズされたメッセージを取得するときですが
そのまま下記のように取得出来ちゃいます。
 var msg = foo;

iGoogle ガジェットでのローカライズについて

iGoogle ガジェットではベースディレクトリ直下に
“ja_ALL.xml”のように”<言語>_<国>.xml”を作ります。
ワイルドカードとして”ALL”が使えます。
なので”ALL_ALL.xml”を作るのもありです。
むしろ”ALL_ALL.xml”を作って置いた方が良いと思います。

それでローカライズ毎のXMLファイルの中身はというと
下記のように記述してあげます。
 <messagebundle>
  <msg name=”foo”>bar</msg>
 </messagebundle>

メッセージを取得する方法は下記のように行います。
  var pref = new _IG_Prefs(__MODULE_ID__); // new gadgets.Prefs();
  var msg = pref.getMsg(“foo”);

Adobe AIRでのローカライズについて

Adobe AIRでは専用の拡張APIを持っていますので
今までとはちょっと違います。
まずベースディレクトリの下に”locale”ディレクトリを作成します。
“locale”ディレクトリの下に”ja”などの
言語ディレクトリを作成します。
言語ディレクトリの下には”localizedStrings.properties”のように
ローカライズ毎のプロパティファイルを置いておきます。

なのでプロパティファイルの中身は下記のようになります。
 foo =bar

そして取得の方法は下記のように行います。
getStringメソッドの第1引数に”言語”、
第2引数にプロパティファイルで記述したキーを指定します。
 var msg = air.Localizer.localizer.getString(“ja”, “foo”);

Mac OS X Dashboard ウィジェットでのローカライズについて

Mac OS X Dashboard ウィジェットでのローカライズについてです。

Mac OS X Dashboard ウィジェットではベースディレクトリの下に
“ja.lproj”のように”<言語>.lproj”ディレクトリを作成します。
この下にローカライズされたファイルを置いておきます。
ファイルのエンコードは”UTF-16,Big-Endian”です。
UTF-8でも大丈夫だと思うけれども
“UTF-16,Big-Endian”にしておいた方が無難です。

ローカライズされたメッセージの取得については
 “ローカライズについて”
 “Opera ウィジェットでのローカライズについて”
を参照してください。

Opera ウィジェットでのローカライズについて

Opera ウィジェットでのローカライズについてですが
Opera ウィジェットではないです。
Opera ウィジェットの方ではなにもしてくれません。
なので自前で行うしかないです。

どうやって自前で行うかというと
jsファイルを言語ごとに分けておいて
表示したい言語によってそれを切り分けます。
対象となるエレメントを取得して削除しちゃいます。
そして読込みたいエレメントを追加します。

こんな風にsetLocalizedを呼んで言語ファイルを変更して
getStringを呼んでローカライズメッセージを取得します。
下記のような形で。

 this.LANG_NAME     = localizedStrings;
 this.LANG_NAME_JS  = this.LANG_NAME + “.js”;
 this.ROOT_LOCATION = location.toString().substring(0, location.toString().lastIndexOf(“/”)) + “/”;

 /**
  * ローカライズの設定。
  *
  * @param <string> lang 言語名
  */
 function setLocalized(lang) {
  if (lang == null) {
   throw new Error(“lang is null”);
  }
  if (this.gadget.isAIR()) {
   return;
  }

  var jsObjList = document.getElementsByTagName(“script”);
  for (var cnt = 0; cnt < jsObjList.length; cnt++) {
   var jsSrc = jsObjList[cnt].src;
   if (jsSrc.lastIndexOf(this.LANG_NAME_JS) < 0) {
    continue;
   }

   var jsSrc = null;
   if (lang == “ja”) {
    jsSrc = this.LANG_NAME_JS;
   } else {
    jsSrc = lang + “/” + this.LANG_NAME_JS;
   }

   if (
    jsObjList[cnt].src == jsSrc
    || jsObjList[cnt].src == this.ROOT_LOCATION + jsSrc
   ) {
    break;
   }

   // 今のjsを削除
   var headObj = jsObjList[cnt].parentNode;
   headObj.removeChild(jsObjList[cnt]);

   // 新しいjsを追加
   var jsObj = document.createElement(“script”);
   jsObj.src    = jsSrc;
   jsObj.onload = initSettingData;
   headObj.appendChild(jsObj);
   break;
  } // for (var cnt = 0; cnt < jsObjList.length; cnt++)
 }

 /**
  * ローカライズされた文字列の取得。
  *
  * @param  <string> キー
  * @return <string> ローカライズされた文字列
  */
 function getString(key) {
  if (key == null) {
   throw new Error(“key is null”);
  }

  var ret = null;
  try {
   ret = localizedStrings[key];

  } catch(ex) {
  }

  if (ret == null || ret === undefined) {
   ret = key;
  }

  return ret;
 }

Windows サイドバーガジェットでのローカライズについて

Windows サイドバーガジェットでのローカライズについてです。

Windows サイドバーガジェットではベースディレクトリの下に
“js-JP”のように”<言語>-<国名>”のディレクトリをつくって切り分けます。
画像など同じファイルはベースディレクトリの下においてあげます。
画像ディレクトリにアクセスしたいときには特に気にせずに
言語ごとに分けたサブディレクトリからアクセスできます。
Windows サイドバーガジェットのほうでなかったら
ベースディレクトリを再検索してくれるので。

卒業のCM

昨日もちろん”卒業”を購入しました。

そして一日中聞いていました。

 

そこでふと思ったのが”卒業”のCMってみたことないなって。

いつもテレビを見ない方なのでだからかもしれないけれども。

なので長渕剛 公式ホームページよりCMをみました。

下記のサイトです。

  http://www.nagabuchi.or.jp/new_contents/graduate/tv.html

 

なんかおかしいです。。

悪くないんだけれども。。

“卒業”の世界観と全くマッチしていないのです。

大丈夫かな?