アプリの多言語対応

Posted by muchag | Android | 2011-01-24 (月) 13:58:54

Android アプリは、Android Market を通じて世界中に簡単に配布できる。

せっかくならより多くの人に利用してもらうべく
多言語対応にできるといいね。

方法は、リソース(画像と文字列)を対応したい言語分用意するだけ。
もちろん、画像は全世界共通! ということであれば文字列だけでよい。

ディレクトリ構成

デフォルトのフォルダ構成は左図の通り。
(android-sdk_r08-windows)

中身の画像ファイルは自分で用意。

これは、Android 端末で
英語を利用している場合
特に言語設定をしていない場合
または、当該言語用フォルダがない場合
に用いられるフォルダ。

画像用:drawable-hdpi, drawable-ldpi, drawable-mdpi
文字列用:values
 
そこで
res フォルダのコンテキストメニューから
[新規]-[フォルダー]
または res フォルダを選択した後で
[ファイル]-[新規]-[フォルダー]
を選択して
出てきたダイアログにフォルダ名を設定し
新たに言語用フォルダを作成。

画像用:drawable-ja-hdpi, drawable-ja-ldpi, drawable-ja-mdpi
文字列用:values-ja
言語コード
 
ひとまずは、これらのフォルダの中に
元祖フォルダからそれぞれファイルをコピーする。

画像については、これだけやっておけば
作成した画像をそれぞれのフォルダに配置し
読み込み箇所を任意に指定するだけで
アプリ側が自動的に読み込んでくれる。
 

文字列の準備

文字列に関しても読み込みは自動だが
文字列は自動では入力してくれない。(当たり前だ

values/string.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3.     <string name="app_name">HelloWorld</string>
  4.     <string name="hello">Hello World, HelloWorld!</string>
  5.     <string name="文字列定数名">文字列</string>
  6. </resources>

と設定しておく。
 

配置の指定
XML

XML ファイルで記述する場合。

AndroidManifest.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3.      package="com.example.emergencyhealth"
  4.      android:versionCode="1"
  5.      android:versionName="1.0">
  6.     <application android:icon="@drawable/icon" android:label="@string/app_name">
  7.     </application>
  8. </manifest>

6行目

android:icon=”@drawable/icon”

android:icon 属性に先ほど用意していたアイコン画像のファイル名を
拡張子なしで記述。
 

android:label=”@string/app_name”

android:label 属性に文字列を設定。
 

hoge.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.    android:orientation="vertical"
  4.    android:layout_width="fill_parent"
  5.    android:layout_height="fill_parent"
  6.    >
  7. <TextView  
  8.    android:layout_width="fill_parent"
  9.    android:layout_height="wrap_content"
  10.    android:text="@string/hello"
  11.    />
  12. </LinearLayout>

 
10行目

android:text=”@string/hello”

TextView の android:text 属性に文字列を設定。

Android | 2011-01-24 (月) 13:58:54 |

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment