在iPhone上NSLocalizedString返回iPhone 语言的字符串.是否可以强制NSLocalizedString使用特定语言使应用程序使用与设备不同的语言?
localization objective-c internationalization nslocalizedstring ios
我似乎有些应用程序可以在应用程序内部更改语言,而无需重新启动应用程序,我想知道它们是如何实现的.
例如,对于我们使用NSLocalizedString,我知道可以在运行时在未初始化main.m时设置语言AppDelegate,但是一旦初始化(特别是创建了视图控制器),更改它直到下次重新启动才会生效
[[NSUserDefaults standardUserDefaults]
setObject:[NSMutableArray arrayWithObjects:language, nil]
forKey:@"AppleLanguages"];
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何在不重新启动应用程序的情况下完成这些动态语言更改?
有没有办法在运行时更改应用程序语言?
因此,更改后NSLocalizedString立即返回新语言的字符串.
我现在正在做的是使用以下代码更改语言:
- (void)onChangeLanguage: (id)sender
{
NSArray *lang = [NSArray arrayWithObjects:((InfoWhatever *)sender).language, nil];
[[NSUserDefaults standardUserDefaults] setObject:lang forKey:@"AppleLanguages"];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *languages = [defaults objectForKey:@"AppleLanguages"];
NSString *currentLanguage = [languages objectAtIndex:0];
NSLog(@"Current language: %@", currentLanguage);
}
Run Code Online (Sandbox Code Playgroud)
只有在重新启动应用程序后,语言才会更改.
我需要在我的iOS应用程序中加载本地化图像,但还必须考虑到它们可能需要...@2x那种类型.我怎样才能做到这一点?
我正在尝试更改应用程序语言,但是当我关闭应用程序并再次运行它后,我在main.h语言chages中运行此代码.这可以在不重新启动的情况下更改语言吗?
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSArray *languages = [NSArray arrayWithObject:@"en_GB"];
[[NSUserDefaults standardUserDefaults] setObject:languages forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
Run Code Online (Sandbox Code Playgroud) 我为我的iOS应用程序做了本地化.通过客户端订单我需要进行修改,即应用程序语言应该通过按钮操作进行更改.我之前的本地化是基于设备语言的工作.现在我必须修改应用程序以通过重新启动设备来更改语言.
在 iOS 中,是否可以覆盖当前在手机上设置的语言环境并使其在我的应用程序中使用不同语言环境的字符串?
localization ×6
ios ×4
objective-c ×4
cocoa ×2
iphone ×2
cocoa-touch ×1
image ×1
performance ×1
restart ×1
uiimage ×1
xcode ×1