res/フォルダ以下のフォルダを必要な言語数だけ作れば良いのです。
一般的に、デフォルトフォルダは英語用ファイルを入れます。
他の言語にはハイフン+言語の略称を入れます。例えば、日本語なら-jaをデフォルトフォルダ名とします。
ここまでは、簡単ですが…
WebViewで、ローカルhtmlファイルを表示したいとき問題がはっせいします。
他のファイルのようにres/raw(英語版)とres/raw-ja(日本語版)にhtmlファイルを入れて
以下のように実行する。
webView.loadUrl("file:///android_res/raw/index.html");
2.2以降であればきちんと出力されるが、2.1だと「ファイルが見つかりません」的な表示になる。
2.1の場合、htmlを出力させるにはres直下では配置しても表示されない。
もともと、htmlはassetsフォルダ直下に配置して出力するもので、多くの本やサイトには
webView.loadUrl("file:///android_asset/index.html");
で書かれる。
だけど・・・・assetsはres直下じゃないから、-jaが効かないです。
はてさて、どうしましょう?
発想を変えてみましょう。
フォルダで分離できないなら、ソースコードで分離すればいいですよね。
さて、ソースコードで言語を区別するにはどうしましょうか?
端末の言語を調べるにはLocaleクラスがあります。
そこで、
String mlocale = getResources().getConfiguration(); mm = mlocale.locale.getLanguage(); mmm = mlocale.locale.getDisplayCountry(); if (mm == "ja" || mmm == "JP) { //日本語htmlで表示 webView.loadUrl("file:///android_asset/indexja.html"); }else{ //英語htmlで表示 webView.loadUrl("file:///android_asset/index.html"); }
としてみる。が、しかし・・・
英語しか表示されない。そこでgoogle先生に調べてもらったところ、
夢茶爺&苦茶爺のPC奮戦備忘録 さん
にて、紹介されえていました。
if ( Locale.JAPAN.equals(Locale.getDefault() ) { // 日本語の処理 webView.loadUrl("file:///android_asset/indexja.html"); } else { // 英語の処理 webView.loadUrl("file:///android_asset/index.html"); }
これで、うまくいきます。
夢茶爺&苦茶爺のPC奮戦備忘録 さんは日本AndroidのMLを参考にされたそうです。
日本Androidの会 Sue さん
というかんじです。お疲れ様でした。
0 件のコメント:
コメントを投稿