2014年06月12日

Xamarin.Formsでローカライズ(XAML編)

前回の続き

Xamarin.Formsの売りはやっぱりXamlですよね?ストアアプリあたりと互換性があったら間違いなくそうなっていたと思います。
とりあえず今は静観状態なんですが、ついでなのでXAMLでのローカライズ方法。(ネット見つけた方法なのでほぼそのままです)

試用するのは前回のソリューションなので本当に続きから。

まずIMarkupExtensionを実装したクラスを作ります。


次にForms Xaml Pageを追加します。
名前はXamlPage.cs
localize10.PNG

できたXAMLはこんな感じ。


これをこんな感じに変更。

5行目でクラスを見れるようにして、LabeのTextの中身を変更です。

これは簡単だと思いました。

あとはなぜかContentPageを継承していないXamlPage.xaml.csに継承を追加して、localize11.PNG

App.csを書き換えてあげるだけ。
localize12.PNG


実行結果がこちら。
localize14.pnglocalize13.png


簡単でした。

ということで前回と今回のが混ざった奴をGitHubにあげてみました。(うまくあがってるかな?)
https://github.com/punio/LocalizeSample

おしまい


posted by ぷにお at 16:05 | Comment(0) | Xamarin | このブログの読者になる | 更新情報をチェックする

Xamarin.Formsでローカライズ

Xamarin3で追加された話題のXamarin.Formsをさっそくつかってさっそくはまりまくっている今日この頃。

ローカライズに悩んでいたわけですが、何とか解決したので投稿してみます。

まずVisual Studio 2013で新しいプロジェクトを作ります。
(私はVS大好き人間なのでVSオンリーです。Xamarin Studioのことは知りません)

作るのはテンプレート内の[Mobile Apps]→[Blank App (Xamarin.Forms.Portable)]です。
localize1.PNG
これはXamarin.Formsのチュートリアル(?)通りですね。

そのままiOSシミュレータで動かすとこんな感じ。
localize2.png


あまり面白くないですが楽なので「Hello, Forms!」の文字列を実行したOSのカルチャに合わせてみます。


まず、ソリューション内に新しい項目を追加します。
localize6.png
追加するのは「アセンブリリソースファイル」で、ファイル名は今回は「String.resx」にしました。


やることは.Net使っている方ならおなじみな感じの事ですね。
localize3.PNG
「Hello」という名前の文字列を定義して、アクセス修飾子をPublicに変更。

次に「String.ja.resx」を作成して「Hello」を定義します。
localize7.png

これでロケールが日本語なら「こんにちは」、それ以外なら「ハロー」と出てくれる気がしますね。


最後にApp.csを下のように書き換えます。


StackLayoutと下のラベルは現在のカルチャを出すためのものなので無視してください。

デフォルトと違うのは上のラベルの
Text = Strings.Hello,ってところだけですね。

これで実行すると、
localize4.pnglocalize5.png

ちゃんと変わってくれました。
posted by ぷにお at 15:03 | Comment(0) | Xamarin | このブログの読者になる | 更新情報をチェックする

2014年05月23日

データを圧縮する時にはまること

何度もはまっていて自分の記憶力に絶望しているのでブログに残しておくことにしました。

やりたいこと
データ(DATA)をシリアライズして適当に圧縮したbyte[]がほしい
シリアライザーは今回はProtoBuf-net使ってます。

ダメな例



なんとなくデータが出来上がるんですが、デシリアライズで失敗します。
調べてみるとDeflateStreamを閉じないとちゃんとしたデータが取れないみたいです。

ということで


{}(ブレース?)を省略したいがためにはまる悲劇でした。


posted by ぷにお at 16:44 | Comment(0) | C# | このブログの読者になる | 更新情報をチェックする
×

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