Mar*_*l W 0 iphone xamarin.ios
我想让用户可以更改我的应用程序中的语言.
这里描述了执行此操作的方法,在单触引代码中将首选语言设置为荷兰语,将备用语言设置为英语:
NSUserDefaults.StandardUserDefaults.SetValueForKey
(NSArray.FromStrings("nl", "en"), new NSString("AppleLanguages"));
Run Code Online (Sandbox Code Playgroud)
您必须重新启动应用程序才能生效.但是在iPhone 4上,关闭它时应用程序不会重新启动,它只是隐藏了.是否有办法强制应用程序在关闭后重新启动?
谢谢迪米特里斯.因此,在运行时更改语言并不那么简单.
我发现了一个适用于我的解决方案:
当用户更改语言时,我使用Mauro Delrio在"如何强制NSLocalizedString使用特定语言"中描述的解决方案.在monotouch:
string newLanguage = "nl";
myBundle = NSBundle.FromPath(NSBundle.MainBundle.PathForResource(newLanguage, "lproj"));
Run Code Online (Sandbox Code Playgroud)
现在,所有字符串都将使用myBundle.LocalizedString(...)以所选语言加载.当然,已经打印在视图上的所有内容尚未翻译.但我找到了一种简单的方法来重置所有视图.在我的应用程序中,我使用MainTabController,如下所示:
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()
};
}
}
Run Code Online (Sandbox Code Playgroud)
所以我要做的就是调用Reset,如:
((AppDelegate)UIApplication.SharedApplication.Delegate).MainTabBarController.Reset();
Run Code Online (Sandbox Code Playgroud)
所有当前视图都以正确的语言进行处理和重新创建.看起来像一个技巧,但它是完全合法和文档,请参阅MainTabBarController viewControllers属性的Apple文档.它甚至激活与活动的选项卡索引相同的选项卡索引,因此对于用户而言,似乎只有语言被更改.
当然,所有视图中的任何未保存数据都会丢失,因此如果这是一个问题,您必须找到一种方法来在重置之前保存它.
| 归档时间: |
|
| 查看次数: |
5179 次 |
| 最近记录: |