ありがとうDimitris。したがって、実行時に言語を変更するのは簡単ではありません。ユーザーは、私が"How to force NSLocalizedString to use a specific language"にマウロDelrioで説明するソリューションを使用する言語を変更
:
は、私は私の場合に機能するソリューションを見つけました。 MonoTouchでで:
string newLanguage = "nl";
myBundle = NSBundle.FromPath(NSBundle.MainBundle.PathForResource(newLanguage, "lproj"));
すべての文字列は、今myBundle.LocalizedString(...)で選択した言語でロードされます。もちろん、ビューにすでに印刷されているものはすべて翻訳されていません。しかし、私はすべてのビューをリセットする簡単な方法を見つけました。現在のすべてのビューが配置され、正しい言語で再作成
((AppDelegate)UIApplication.SharedApplication.Delegate).MainTabBarController.Reset();
:だから私がしなければならないすべては次のようにリセット呼んで
public class MainTabBarController : UITabBarController
{
public override void ViewDidLoad()
{
Reset();
SelectedIndex = 2;
}
public void Reset()
{
ViewControllers = new UIViewController[]
{
new ViewControllerTab1(),
new ViewControllerTab2(),
new ViewControllerTab3(),
new ViewControllerTab4(),
new ViewControllerTab5()
};
}
}
:私のアプリでは、私はこのようになりますどのMainTabControllerを使用します。トリックのように見えますが、それは完全に合法であり、文書化されています。Apple documentation for MainTabBarController viewControllers propertyを参照してください。これは、アクティブなものと同じタブインデックスをアクティブにするため、ユーザーにとっては言語だけが変更されているようです。
もちろん、すべてのビューの保存されていないデータは失われるため、問題がある場合は、リセットする前に保存する方法を見つける必要があります。
ニース!共有してくれてありがとう。素敵な答えと役に立つ情報のためには –
+1。 – bharath