要は「java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM,Locale.JAPAN)」のテキスト版みたいな事がやりたかったわけだ。
散々調べ廻ったけど、現在言語指定を切り替える方法はあれど、getString(int ID,Locale local)みたいな代物は見あたらない。
無理矢理↓みたいなコードも書いてみた。
2826-0.javaConfiguration c = new Configuration();
c.locale = Locale.JAPAN;
Resources r = new Resources(Resources_.getAssets(),new DisplayMetrics(), c);
r.getString(R.string.hoge);
確かに Locale.JAPANなテキストは取得できたけど…元のコンテキストの言語設定まで書き換わる…_no
なんとかならんかとソースを追っていったら…AssetManager.setLocaleというネイティブメソッドまでたどり着いた。
AssetManagerのインスタンスを作って setLocaleを呼べば目的は達成できそう。
でもね、AssetManager.javaによると AssetManagerのインスタンスはアプリケーションから作れないんだわ。
オマケに AssetManagerのインスタンスはシングルトンになっている。
先述のコードは最終的にアプリケーショングローバルな言語設定を書き換えているので件の結果になったと。*1
結論として、やりたいことは「言語設定保存&読み込み&言語設定復帰をアトミックに行う」という泥臭い実装をするしかないということに…_no
*1 そこまでコードを追ってはいないけど、動作と調べた内容からするとそういうことになる。