2011-06-24 9 views
4

ユーザーが自分のアプリケーションを自分の言語に翻訳できるようにする考えがあります。 私はこの方法でこれを想像:Androidアプリケーションの「ソーシャル」国際化 - リソースを動的にロード

をアプリケーションは、UIの英語バージョンが表示され、ユーザーは翻訳で助けを求めているユーザーのシステム言語に翻訳されていない場合(それは明らかだ) 次に、ユーザは、変換のために求められています英語から母国語へのフレーズ。そして、他の翻訳をチェックするように頼んだ。 (これはちょっとした作業ですが洗練されたものではありません) 私のアイデアの厳しい部分は: このプレス用の「更新翻訳」とテキストリソースは、最新版へのアップデートです。 頻繁に更新することは可能ですが、このアプローチにはいくつかの欠点があります。 1.これらの更新プログラムをすべて頻繁に作成しなければならず、すべてのユーザーがそれに満足するわけではありません。 2毎週更新が行われても、結果を得るために努力してからの時間は、ユーザーの大部分を形成するには時間がかかり過ぎます。おそらく、応答はできるだけ良くないでしょう。

"オンライン"で翻訳を読み込む方法はありますか?

答えて

1

現在、Androidはこれをサポートしていません。必要なものを実現するには、独自のリソース処理コードを挿入して、UIで使用されるあらゆる場所で文字列を返す必要があります。つまり、フレームワークに文字列をロードさせることはできません(例えば、レイアウトではアンドロイド:text = "@ string/something"を使用しません)、独自の関数を呼び出してResources.getString()/ getText()。

また、リソースIDが安定せず、アプリケーションのすべてのビルドで変更できるという事実にも対処する必要があります。

だから、あなたはかなり簡単ではないものを見ています。

+0

は、 "resources.loadResourceFromFile(custom_strings.xml)"のようなことをする方法がありますか?コード内のリソースへの呼び出しを置き換えるのは簡単ですが、私がその方法を選択した場合は、layout.xmlの問題も処理しています。 – piotrpo

0

現在のユーザーの翻訳のいずれかをSD /ストレージのファイルにキャッシュして、その特定のユーザーに表示できます。その後、毎週更新を取得したら、キャッシュされたファイルを削除してから再開しますか?

+0

でも、それはどうですか?リソースは.apkにコンパイルされ、一部のコードも生成されます。私はアプリケーションが "外部" strings.xmlを使用するように強制する方法を知らない翻訳ロジックは簡単な部分です。 – piotrpo

1

は、私が使用して、いくつかのinternationalizationsを行っている:

getLocalization

  • android2poで、彼らは、APIのいくつかの種類を持っている場合は、私が最初にチェックします。 APIがない場合、私はgettextのJava実装をチェックし、それを使って変換を処理します。