在iPhone上NSLocalizedString返回iPhone 语言的字符串.是否可以强制NSLocalizedString使用特定语言使应用程序使用与设备不同的语言?
localization objective-c internationalization nslocalizedstring ios
我的问题:
我的iPhone应用程序如何告诉iOS,用户确实在应用程序首选项中选择了一种语言,这与一般设置中设置的语言不同?
同一问题的其他表述:
我如何告诉系统,不NSLocalizedString (@"text", @"comment");应该访问系统范围内选定的语言,而是应用程序选择的语言?
背景,例如:
请以这种情况为例:德国移民的儿子住在法国东北部,毗邻卢森堡和德国.他的母语是法语,因此他确实将iPhone的用户界面语言设置为法语(设置 - >常规 - >国际 - >语言 - >Français).但由于他的文化背景以及他所居住的地区是双语的,他也会说德语.但他不会说十个英语单词.在iPhone(以及iPad)上,他没有机会选择第二语言,因此手机只知道他会说法语.它不了解其他语言的用户技能.
现在来了我的应用程序:我用英语和德语开发了它(德语是我的母语,英语是IT的标准语言).我根据多语言iOS应用程序的所有规则和最佳实践进行了开发.我的应用程序的"第一"语言(默认语言)是英语.
这意味着:
如果有人在他的"设置"中选择了英语或德语,则应用程序用户界面将自动使用所选语言.用户甚至不会注意到还有其他语言可用.
但如果他在常规设置中选择了任何其他语言(如中文,波兰语或法语),他将获得应用程序默认语言,在我的例子中,它是英语.但对于我的法德朋友来说,这不是最好的选择.他想使用现有的德语版本,但似乎没有办法让用户选择这个版本.
添加法语翻译可以解决我们法国 - 德国朋友的问题,但对于说其他两种语言(如意大利语和德语)的人不会,我不能用这个星球上所有语言支持我的应用程序.将默认语言设置为德语也不是最佳选择,因为对于说法语(母语)和英语(作为第二语言)的人来说,这会引起同样的问题.
所以我认为我的应用程序必须能够手动选择与预选语言不同的语言.将语言选择添加到应用程序设置面板不是问题.但是,我如何告诉系统,不NSLocalizedString (@"text", @"comment");应该访问系统范围内选定的语言,而应该使用应用内选择的语言?
如何更改Xcode 5中的语言
我有3个按钮 ChangeLanguageViewController
这是:
这是代码:
#import <UIKit/UIKit.h>
@interface ChangeLanguageViewController :UIViewController
-(IBAction)changeEnglish:(id)sender;
-(IBAction)changeChinesesimplified:(id)sender;
-(IBAction)changeBahasaMalaysia:(id)sender;
-(IBAction)changeEnglish:(id)sender{
[[NSUSerDefaults standardUSerDefaults] setObject:[NSArray arrayWithObjects:@"en", @"zh-Hans", @"ms", nil] forKey:@"AppleLanguage"];
}
-(IBAction)changeChinesesimplified:(id)sender{
[[NSUSerDefaults standardUSerDefaults] setObject:[NSArray arrayWithObjects:@"zh-Hans", @"ms", @"en", nil] forKey:@"AppleLanguage"];
}
-(IBAction)changeBahasaMalaysia:(id)sender{
[[NSUSerDefaults standardUSerDefaults] setObject:[NSArray arrayWithObjects:@"ms",@"en",@"zh-Hans", nil] forKey:@"AppleLanguage"];
}
Run Code Online (Sandbox Code Playgroud)
我想看到当用户按下按钮时语言发生变化,它不会杀死应用程序,但会改变应用程序内部的语言
我正在尝试实现可以更改应用程序语言的功能.
我试着像这样设置:
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject("de", forKey: "AppleLanguages")
Run Code Online (Sandbox Code Playgroud)
应用程序重启后语言仍为"系统默认".
现在我通过设置测试不同的语言Scheme > Application Language > language.
但用户是否可以单击按钮并在重新启动后查看所选语言?
还有什么方法可以避免在重启时更改语言?
我遇到问题,更改语言后,我想重新启动应用程序。
所以,我想提醒消息的文字“ 你要重新启动应用程序更改语言吗? ”“ 是 ”“ 否 ”
如果用户按YES,我如何重新启动应用程序?
我的解决方案:
let alertController = UIAlertController(title: "Language".localized(), message: "To changing language you need to restart application, do you want to restart?".localized(), preferredStyle: .alert)
let okAction = UIAlertAction(title: "Yes".localized(), style: UIAlertActionStyle.default) {
UIAlertAction in
NSLog("OK Pressed")
exit(0)
}
let cancelAction = UIAlertAction(title: "Restart later".localized(), style: UIAlertActionStyle.cancel) {
UIAlertAction in
NSLog("Cancel Pressed")
}
alertController.addAction(okAction)
alertController.addAction(cancelAction)
self.present(alertController, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
应用关闭后,用户将手动启动应用。