多言語対応について

87 views
Skip to first unread message

たけまる

unread,
Apr 2, 2010, 4:02:32 AM4/2/10
to 日本Androidの会
アプリを日本語と英語に対応させたいと思います。
res/values-en
res/values-ja
をつくり、それぞれstring.xmlを置くと、たしかにAndroidの言語設定を判断して言語が切り替わるようになりました。

しかし、たとえば次のような文字列で、「東京駅」と「5」という値はDBや外部APIから取得する場合、
英語:「5mins walk from 東京駅」
日本語:「東京駅から徒歩5分」
と、文法の違いから文字の並び順が違います。
こうなると単純に「分」とか「から」をstring.xmlに定義していたのでは対応できません。

iPhoneのSDKではこの辺の対応方法が提供されており、
「"%2$@ mins walk from %1$@"」
のように書けばそのような問題を解消できるようになっているようです。

Androidの場合、この問題はどのように解消すべきでしょうか。
よろしくお願いいたします。

l.b.

unread,
Apr 2, 2010, 4:29:07 AM4/2/10
to 日本Androidの会

 村上です。

 どちらかというとAndroidというよりはJavaのi18nで対応すべき問題だと思います。
 java.text.MessageFormatでの対応はいかがでしょうか。

乳牛

unread,
Apr 2, 2010, 5:47:55 AM4/2/10
to 日本Androidの会
はじめまして。乳牛です。

String#formatでもいいですね。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/String.html#format(java.util.Locale,
java.lang.String, java.lang.Object...)

Lewske Wada

unread,
Apr 2, 2010, 5:41:09 AM4/2/10
to android-g...@googlegroups.com
On Apr 2, 2010, at 5:29 PM, l.b. wrote:
>  どちらかというとAndroidというよりはJavaのi18n
> で対応すべき問題だと思います。
>  java.text.MessageFormatでの対応はいかがでしょうか。
> On 4月2日, 午後5:02, たけまる
> <takemaru...@gmail.com> wrote:
>> 英語:「5mins walk from 東京駅」
>> 日本語:「東京駅から徒歩5分」
>>
>> iPhoneのSDKではこの辺の対応方法が提供されており、
>> 「"%2$@ mins walk from %1$@"」
>> のように書けばそのような問題を解消できるようになっているようで
>> す。


プログラムで文字列くっつけるか, 自分で置換規則を作るしかない
ような気がする.

Cheers,
Ryu


KISHIKAWA Katsumi

unread,
Apr 2, 2010, 7:45:01 AM4/2/10
to android-g...@googlegroups.com
http://groups.google.co.jp/group/android-group-japan/browse_thread/thread/e8b8c1e6e7810e54

過去ログですが、こちらの方法がズバリそうだと思います。


岸川克己
kishikaw...@mac.com
kishikaw...@gmail.com
http://d.hatena.ne.jp/KishikawaKatsumi/


2010年4月2日18:41 Lewske Wada <r...@run.sh>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com
> にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
> からこのグループにアクセスしてください。
>
>

Link-you Android

unread,
Apr 2, 2010, 8:37:39 PM4/2/10
to android-g...@googlegroups.com
Linkyou と申します。

既に解決済みかもしれませんが、情報提供として。

Android のApplications (CalendarやEMailなどがあるプロジェクト)
のソースを見る限り、xliff が多用されてますね。

手前味噌ですが、
に説明してますので、ご参照下さい。

ソース上でフォーマット処理を行うのと、xml で完結させる方法とで、
実現できる事はほぼ同じですが、色々な言語に対応させる為に、
翻訳家に翻訳作業を依頼する場合、翻訳家の方がソース上でどんな
フォーマットが行われているかを把握する必要なく、strings.xml を見た
だけで体感的に翻訳が行える xliff の方がいいのではないかと思って
います。
ソースも複雑化しませんし。

個人的な見解なので、更に情報をお持ちの方は提供して頂ければ
と思います。




2010年4月2日20:45 KISHIKAWA Katsumi <kishikaw...@gmail.com>:



--
==============================
Developer Name: Linkyou
Mail:android...@gmail.com
Web:http://link-you.jp/android/countap/
==============================

たけまる

unread,
Apr 5, 2010, 9:28:02 AM4/5/10
to 日本Androidの会
多数の回答ありがとうございます。

今回はString.format()を利用することに致しました。
単にC言語のsprintfのようなものと認識していましたが、恥ずかしながら
フォーマット指定で文字列の順序を指定できることを知りませんでした。

また、過去ログにあることを蒸し返してしまい申し訳ございません。

今回はそこまでしませんが、xliffも興味深いです。
今後研究してみたいと思います。

本当にありがとうございました。

On 4月2日, 午後8:45, KISHIKAWA Katsumi <kishikawakats...@gmail.com> wrote:
> http://groups.google.co.jp/group/android-group-japan/browse_thread/th...
>
> 過去ログですが、こちらの方法がズバリそうだと思います。
>
> 岸川克己
> kishikawakats...@mac.com
> kishikawakats...@gmail.comhttp://d.hatena.ne.jp/KishikawaKatsumi/

Reply all
Reply to author
Forward
0 new messages