2011年10月03日

スマートフォンアプリ選手権

SMPA.PNG

スマートフォンアプリ選手権に登録しちゃいました。
参加特典の「App Hub」無料登録コードが目当てでした。出来心でした。

いや、私が参加する時には「先着200名」だったんですよ。で、すでにだいぶ期間が経っていたので先着に漏れると思ったんですよね〜。「もらえるとは思ってないけど、もらえたらラッキーだな〜」って感じで応募しました。
完全にもらえないものだと思ってたんですが、今朝メール見たらちゃんともらえてました。(ノД`)

別に入賞狙うわけじゃないし、とりあえず登録すればいいらしいし、、ってことでこのブログで紹介している電力消費アプリを移植することにしますた。
どっちもSilverlightなのでほとんどコピペなコードになるでしょう。

問題は実機を持ってないことなんだよな〜・・・・。
(エミュレータでチェックできればよさげだけど)
posted by ぷにお at 13:28 | Comment(0) | WCF | このブログの読者になる | 更新情報をチェックする

2011年05月18日

WCFでクライアントに合わせて言語を変える

半日くらい詰まったので投稿。
同じように困っている人の助けになったり、もっとスマートなやり方を知っている人の突っ込みがあったらいいな〜。


やりたいこと:
ASP.NET上で動くWebサービス(WCF+Silverlight)で文字列を返す際に、クライアントのロケールに合わせて文字列を変更したい


ネットで調べて多言語対応処理を入れてみました。
でも、各言語用のリソースを用意しても使用されるのはサービスが動いているOS上の言語という結果。(日本語OS上のIISなら日本語、英語OSなら英語)
やりたいのは一つのサーバでクライアント毎にロケールを変える事なのでこれではだめぽ。


CurrentThread.CurrentUICultureを変えるとちゃんと変わるので、リクエストヘッダから言語情報を持ってきて無理やり書き換えてあげればいいかな〜、なんて思ったのでそんな感じに。


やったこと:
Thread.CurrentThread.CurrentUICulture = new CultureInfo(WebOperationContext.Current.IncomingRequest.Headers[HttpRequestHeader.AcceptLanguage].Split(',')[0]);

異常判定とかそーいうの全部なしです。nullチェックとか忘れずに。

WebOperationContext.Current.IncomingRequest.Headers

HttpRequestHeader.AcceptLanguage
が「応答で推奨される自然言語を指定する」って書いてあったのでこれを取得。
IE/FireFoxでしか確認してませんが中身は「インターネットオプション」の「言語」設定が優先順位順にカンマ区切りで入って来るので、最初のやつを使用。

ブラウザの設定で優先言語を英語にすればちゃんと英語の応答が返ってくるようになりました。
めでたしめでたし。


もっとスマートな方法を知ってる方、突っ込みお願いします。
posted by ぷにお at 10:44 | Comment(0) | WCF | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。