|
ローカリゼーションに関する資料をかなり集めてきましたが、実際に自分で試してみて、基本的なローカリゼーション(特殊なケースを除けば)はそれほど難しくないと感じています。今日は、私が集めた資料の一部を共有したいと思います。興味のある方は、ぜひ参考にしてみてください。 APK ファイルの説明: APK は Android パッケージの略で、Android アプリケーション パッケージ ファイルまたは Android インストール パッケージです。 AndroidManifest.xml、アプリケーションのグローバル構成ファイル。 classes.dex Dalvik バイトコード コンパイルされたバイナリリソースファイル resources.arsc META-INF ディレクトリには署名情報が含まれています。 res\ ディレクトリにはリソース ファイルが格納されます。 アセットディレクトリにはいくつかの設定ファイルを保存できます。以下に、これらのファイルとディレクトリに関する基本的なコメントと説明を示します。 AndroidManifest.xmlファイルは、すべてのAPKアプリケーションに必須です。アプリケーション名、バージョン、権限、参照ライブラリファイルなどの情報が記述されています。 classes.dexファイルは、Javaソースコードをコンパイルした後に生成されるJavaバイトコードファイルです。「dex」はDalvik VM executes(Android Dalvik実行プログラム)の略です。解析ツールを使用してJavaコードに変換することで、読みやすく理解しやすくなります。 resources.arsc はコンパイルされたバイナリリソースファイルです。テーマをカスタマイズする際には、このファイルを頻繁に操作することになります。 META-INFディレクトリには署名情報が含まれています。APKパッケージの整合性とシステムのセキュリティを確保するために使用される署名ファイルは3つあります。 EclipseはAPKファイルをコンパイルして生成する際に、パッケージ化するすべてのファイルに対して検証計算を実行し、その結果をMETA-INFディレクトリに格納します。これにより、APKファイル内のファイルが恣意的に置き換えられることが防止されます。例えば、APKファイル内の画像、コードの一部、著作権情報を置き換えたい場合、単純に解凍して置き換え、再パッケージ化するだけでは事実上不可能になります。これにより、ウイルス感染や悪意のある改変の難易度が高まり、システムセキュリティの保護に役立ちます。 `res` ディレクトリには、画像や文字列などのリソースファイルが格納されます。このディレクトリには、主に `drawable`、`layout`、`xml` といった複数のサブディレクトリが含まれています。解凍後、ほぼすべての変更と編集はここで行われます。ROM のローカライズ作業は主にここで行われます。ROM のローカライズには、基本的にすべての APK アプリケーションの文字ファイルを中国語に翻訳することが含まれます。 アセット ディレクトリには構成ファイルを保存でき、その内容はプログラム実行中に関連する API を通じて取得できます。 以下の例では、設定アプリケーション「Settings.apk」を使用しています。WinRARでファイルを開くと、上記の6つの項目が表示されます。ファイルを解凍したとしても、各ファイルの内容を直接読み取ることはできません。これらのファイルの内容を読み取って、さらに変更や編集を行うには、適切なツールが必要です。 APKアプリケーションの解凍およびパッケージ化ツール:このセクションでは、主にWindowsシステムでAPKアプリケーションの解凍、パッケージ化、逆コンパイル、解析によく使用されるツールキットをいくつか紹介します。すべてのAPKツールキットにはJavaが必要です。 以下に、収集した例をいくつか示します。 このセクションでは、APK のローカリゼーションについて説明します。まずは APK について説明しましょう。 APK の中国語文字ローカライズ(英語初心者向け、Google 翻訳など) Notepad++ で string.xml を開きます。 中国語に翻訳するだけです。 ローカリゼーションには、一般的に 1. 標準ローカリゼーション、2. 強制ローカリゼーションの 2 つの方法があります。 1. APKアプリケーションを適切にローカライズすることで、英語と中国語の両方のシステムで動作できるようになります。`/values`ディレクトリには英語の言語パックが含まれています。中国語の言語パックを作成するには、`/values`の横にサブフォルダ`/values-zh-rCN`を作成します(このファイル名は重要です)。`values-zh`は中国語の言語パック(香港、マカオ、台湾、中国本土を含む)、`values-zh-rCN`は簡体字中国語の言語パック(中国本土のみを含む)、`values-zh-rTW`は繁体字中国語の言語パック(香港、マカオ、台湾を含む)です。`strings.xml`などの言語ファイルを`/values`フォルダから`/values-zh-rCN`にコピーします。ソフトウェアによっては、`strings.xml`ファイルのみが存在する場合があります。 `/values-zh-rCN` に移動し、テキスト エディターで `strings.xml` を開いて、英語の説明を対応する中国語に翻訳します。 例えば、上記の string.xml ファイルを次のように翻訳できます。`ミュート起動が有効; サイレント起動 シャットダウンもサイレントシャットダウン サイレントではない\nサイレント起動が有効でない場合は、シャットダウン時に起動音楽を再生します`。`\n` 演算子は改行文字であり、テキスト内容を新しい行に表示します。その後、「名前を付けて保存」を使用して UTF-8 形式でファイルを保存します。これにより、中国語テキストの形式が保持されます。ローカライズ作業を行う際には、string.xml ファイルを変更する必要があります。場合によっては、他の XML ファイルも変更する必要があります。各ファイルを慎重に確認し、1 つずつローカライズしてください。 2. 強制ローカリゼーション いわゆる「強制ローカライズ」とは、`/values-zh-rCN`フォルダを作成しないことを意味します。代わりに、`/values`フォルダ内のローカライズが必要なすべてのファイルを中国語に直接翻訳します。当然のことながら、英語版OSに中国語の文字セットがない場合、強制ローカライズAPKは文字化けする可能性があります。そのため、適切なローカライズ方法を身につけ、「適切なローカライズ」を行うことをお勧めします。 上記のローカライズでは、`string.xml` を修正して英語のテキストを対応する中国語の文字に翻訳し、パッケージ化と署名を行います。しかし、一部の APK ファイルでは、表示される文字が XML ファイル内にすべて含まれているわけではありません。元の APK 作成者がコード内に特定の文字を記述しており、逆コンパイルすると、それらは `/smali` フォルダに保存されます。レイヤーを検索すると、最終的に多数の Dalvik コードファイルが見つかります。これらはすべて `.smali` 拡張子を持っています。例えば、テキストエディタで `.smali` ファイルを開くと、`const-string v5, “ServiceMode”` と表示されます。`“ServiceMode”` は APK の実行時に英語で表示されます。そのため、ローカライズする必要があります。ROM では、プロジェクトモードで特別なコードを使用して表示されるものの多くがこれに該当します。これを中国語に翻訳するのは非常に時間がかかります。`ServiceMode` を「服务模式」(サービスモード)に翻訳する必要があります。これはどのように行うのでしょうか? `const-string v5, “ServiceMode”` を `const-string v5, “服务模式”` に直接変更することはできません。パッケージ化は失敗します。正しい方法は、対応する中国語の文字を16進Unicodeで表現することです。例えば、「service mode」は16進Unicodeでは \u670d\u52a1\u6a21\u5f0f です。各中国語の文字は4文字で表現され、\u は16進Unicodeのコードポイントを表します。したがって、正しい翻訳は const-string v5, "\u670d\u52a1\u6a21\u5f0f" です。 APKのパッケージ化と署名は簡単なプロセスです。APKファイルを再構築します。ソフトウェアによって若干の違いが生じる場合があります。再構築後、署名するだけです。一部のプログラムは署名できません。結果として得られる新しいAPKアプリケーションがローカライズされたAPKです。次に、ファイル名を希望の名前に変更します。 仕上げる。 元記事のリンク: |