スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:スポンサー広告 

【Android】strings.xml内でプレースホルダが使える

はじめに


Androidアプリの開発をしていると文字列のリテラルなどはstrings.xmlに書くと思います。これは多言語アプリを開発してる場合は特にそうだと思います。
少しそれますが、日本だけで個人プロジェクトの様な場合はコードに直接書く場合もあるかもしれませんね。

そんなstrings.xmlですが、とある多言語化対応しているアプリを開発していてふと困ったことが起きました。

例えば画面上に

これには2つの問題があります
This has 2 problems

という表示をしたいと考えた場合を例に考えてみます。

最初、プレースホルダが使えることを知らなかった僕は

ja/strings.xml


strings.xml


それでJavaのロジックの部分で

なんてことをしてしまってました!

そう、多言語どうのと言うよりstringsの文字列中に変数使いたい場合こんなに面倒なことしなきゃいけないのか。
という少し別の問題に気がついたのです。多言語化のアプリの場合この面倒が対応する言語の数だけ倍増するということですね。それはそれで問題です。

解決方法


いろいろ調べると以下のようにできそうです。

ja/strings.xml


strings.xml




これはもちろんprintf関数などにも使われる記法に準拠していて、今回の例では数字を使いましたが、文字列の場合はdとなっている部分をsに変更するだけです。

最後に


このプレースホルダを知っているだけで、奇妙な文字列連結からも、冗長なstrings.xmlの追記からも救われます。
こういう細かいところをあんまり意識してこなかったですが、多言語対応アプリを開発している時にめんどくささが倍増して押し寄せて来たことで意識できるようになりました。

たまにはいつもと違ったことしてみるのも勉強になりますね。

スポンサーサイト

Tag:Android  Trackback:0 comment:0 

プロフィール

6rats

Author:6rats
こんにちは、ITベンチャーで働くエンジニアです
主に自分の周りで起きた技術的なことをメモとして書き残して行きます。
Android以外にもRuby/Ruby on RailsやFuelPHPなどなどたまにやります。基本的なスタンスとしては興味があるもしくは必要になったらいろんなことにチャレンジします。
最近はiOSアプリ開発を始めています。

購読
follow us in feedly
個人プロダクト

Androidアプリ

Twitterクライアント

Webアプリケーション

EcPriceWatch(Amazon価格の推移を計測、最安値を知らせるサービス)
Google AdSense
ブログ村
にほんブログ村 IT技術ブログへ
にほんブログ村
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。