ご存知のように、strings.xml ファイルは APK には存在しません。これは、 getResources().getString(R.string.mystring) が返すものを変更する方法がないことを意味します。
「お客様からのお願いです」とのこと。私の提案は、お客様に「これは悪い考えです」と伝えることです。本当にそうだから。
顧客がこの問題を解決しない場合、必要な言語でテキストをダウンロードし、アプリの外部ファイル ストレージに保存するしかないと思います。プロパティファイルを使用することをお勧めします。それを InputStream としてロードし、そこから文字列を取得します。
アプリがフライト モードの場合、または起動時にネットワークが利用できない場合にどうなるかを考えたことはありますか? デフォルト値を提供しますか?
また、このソリューションでは、システムがプロパティ ファイルでダウンロードした翻訳にアクセスできないため、TextViews または XML で同様のテキストを設定することはできません。
それでもこれを続行する場合は、プロパティ ファイルを他のクラスにラップし、プロパティ ファイルにテキストが存在しない場合、または存在しない場合は、strings.xml にあるテキストにフォールバックすることもお勧めします。何らかの理由でダウンロードされませんでした:
class TextRetriever {
// the downloaded texts go here
private Properties properties;
private Context context;
public String getString(String key) {
String s = properties.getProperty(key);
// not found in properties file
if(s == null) {
// fall back to value in strings.xml
s = context.getResources().getIdentifier(key, "string", context.getPackageName())
}
return s;
}
}