morelocaleを使わずにアプリを日本語表示にしたい
海外スマートホンを購入すると言語設定で日本語が選択できないものがあります。
これは独自UIなどにした際に言語の翻訳に手間をかけていないなどの理由から日本語リソースが含まれていないために起こるものです。
言語設定で日本語が選択できないとGoogleアプリなどすべてのアプリで日本語表示できないため、簡易的にmorelocaleというアプリ等を使用して日本語を表示可能にしますが、
今回はapkファイルを編集して言語設定から「日本語」を選択できるようにしてみます。
変更が必要なファイル
framework-res.apk ←これが重要
Settings.apk
言語設定で「日本語」が表示されるしくみは、
通常、Settings.apkに含まれるLocalePicker.javaの中のString[] locales = getAssets().getLocales();の部分でframework-res.apkの中に含まれる言語をチェックして選択肢を表示しています。
つまり、framework-res.apkの中に日本語リソースが含まれていないと[Setting]-[Language & input]-[Language]で日本語の選択肢が出てきません。
framework-res.apkに必要な日本語リソースを入れる
apkファイルを編集するにはApktoolを使用します。
apktool d framework-res.apk
展開されたframework-res/res以下に「values-ja-rJP」フォルダを作成して中に次の内容のarrays.xmlを作成します。framework-res/res/values-ja-rJP/arrays.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer-array name="maps_starting_lat_lng">
<item>35666667</item>
<item>139750000</item>
</integer-array>
<integer-array name="maps_starting_zoom">
<item>5</item>
</integer-array>
</resources>
作成が完了したら再構築を行います。apktool b -c framework-res -o framework-res_new.apk
これで[Setting]-[Language & input]-[Language]に「Japanese」という選択肢が出るはずです。
言語設定の選択肢「Japanese」を「日本語」に変更
Apktoolで展開後、
apktool d Settings.apk
Settings/res/values/arrays.xmlを編集します。special_localeで検索をかけると以下の様な文字列があります。(無い場合は最後に追加)
<string-array translatable="false" name="special_locale_codes">
<item>zh_CN</item>
<item>zh_TW</item>
<item>ja_JP</item>
</string-array>
<string-array translatable="false" name="special_locale_names">
<item>中文 (简体)</item>
<item>中文 (繁體)</item>
<item>日本語</item>
</string-array>
※Android4.4以下はname="special_locale_codes_display_names"、name="special_locale_display_names"以上のように「<item>ja_JP</item>」「<item>日本語</item>」を追加します。
編集が完了したら再構築を行います。
apktool b -c Settings -o Settings_new.apk
これで[Setting]-[Language & input]-[Language]に「日本語」という選択肢が出るはずです。
以上で言語設定の「日本語」を選べるようになりますが、翻訳済みの日本語リソースが含まれていないため設定メニューは英語のままです。
この方法と同様にXXXX.apk/res/values-ja以下に翻訳したstrings.xmlファイルを作成することで設定メニューなどの表示を日本語化することができます。
0 件のコメント :
コメントを投稿
当ブログの内容は私感を含むため確実性は保証できかねます。