2017-11-23 31 views
-3

私はandroid i18nに取り組んでいます。多くのvalues-xxxxディレクトリにはstrings.xmlファイルがいくつかありますが、プロダクトマネージャーはこれらの穴をstrings.xmlのファイルに入れたいと思っています。strings.xml言語パラメータによって動的にromネットワークをファイルします。しかし、strings.xmlは次のように使用されます。 @ストリング/ xx、Widget.setText(R.string.xx)、getString(R.string.xx)、Toast.make(x、R.string.x、x)など... strings.xmlは簡単ですか?それとも、私の問題を解決するための簡単な方法がありますか?ありがとう!strings.xmlを動的に読み込む方法は簡単ですか?

+0

リソースは読み取り専用なので、置き換えることはできません。言語 –

+0

プロダクトマネージャのローカリゼーション機能(-en、-it、-de ...)を使用しますか?何 ? – ADM

+0

あなたのプロダクトマネージャーは、開発者の作業を妨害すべきではありません。本当に。 –

答えて

0

私が働いた1つのアプリから:

アプリ起動後、api呼び出しを行います。サーバーは、すべての文字列を含むJSONで応答します。それを解析した後、必要に応じて文字列を取得するために、正しいコンテキスト内のすべての文字列を動的に設定したり、オブジェクトを保持したり、jsonを設定することもできます。

このアイデアがお役に立てば幸いです。

0

私は、プロダクトマネージャーが理由でこれを変更したいと考えています。次のように

私の解決策は、次のようになります。

  1. は異なるURLパターンを持つサーバー上の別の言語に関連するすべての文字列を保管してください。短いURLでhttp://www.example.com/strings/{lang_param}/例:http://www.example.com/strings/en/http://www.example.com/strings/pt-br/のような文字列を取得する必要があります。
  2. サーバーでJSONが返されるようにします。文字列のキーは同じですが、値はURLパラメータ(lang_param)に基づいて変更されます。 JSONサーバーはIDを返さなければならず、一部の文字列アイテムが変更されているかどうかを示す必要があります。このアイデンティティハッシュは、次回のアプリケーション起動時にサーバーチェックハッシュを照会することができるように、共有プリファレンスで保持する必要があります。
  3. デフォルトの文字列を保持することが必須です。アプリケーションの内部メモリのxmlは、に与えられたFile file = new File(context.getFilesDir(), filename);を使用しています。
  4. 新しいファイルを取得したら、内部メモリjsonファイルを更新し、このjsonを解析するユーティリティメソッドを作成します。異なる言語に基づいて異なるハッシュとjson文字列ファイルを維持する必要があることに注意してください。
関連する問題