首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用正确的NumberFormatter和localizedStringWithFormat的手动语言

使用正确的NumberFormatter和localizedStringWithFormat的手动语言
EN

Stack Overflow用户
提问于 2015-09-01 07:56:09
回答 1查看 282关注 0票数 3

我在我的iOS应用程序中添加了一个手动语言部分,您可以在其中更改应用程序应该显示的语言。如果有人选择一种手动语言,我就会像这样覆盖"AppleLanguages“standardUserDefaults

NSString *language = [[[NSUserDefaults alloc] initWithSuiteName:kAppGroup] objectForKey:kManualLanguageKey];

代码语言:javascript
复制
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:language, nil]
                                                      forKey:@"AppleLanguages"];

现在,当用户重新启动应用程序时(在终止应用程序之后),应用程序会自动加载正确的LocalizedStrings。

现在是我的问题:

虽然这解决了我的问题,改变语言的应用,它没有正确地显示数字等。Number/DateFormatter和localizedStringWithFormat依赖于NSLocale currentLocale。我知道我可以像这样对现在的洛卡莱进行过度的仪式。

代码语言:javascript
复制
[[NSUserDefaults standardUserDefaults] setObject:language
                                                      forKey:@"AppleLocale"];

但是,一旦用户决定禁用手动语言,我就无法获得在系统设置中选择的真实语言/区域。在重写之前,我可以将currentLocale存储在自己的userDefaults中,但是如果用户决定(无论出于什么原因)在应用程序中的手动语言处于活动状态时更改系统语言,那么我将无法获得这种新的选定的系统语言。

有没有任何方法可以获得正确的数字和日期格式,而无需手动更改NumberFormatter的区域设置属性等?

EN

回答 1

Stack Overflow用户

发布于 2015-09-01 08:12:19

好的,在用户禁用http://www.thetawelle.de/?p=3800上的手动语言之后,我找到了一种重新设置当前区域设置的方法。

M中,如果手动语言的bool为false,我将当前语言重置如下:

代码语言:javascript
复制
  NSArray *keysToRemove = @[@"AppleLanguages",@"NSLanguages",@"AppleLocale"];
            NSLog( @"RESETTING TO USE SYSTEM LOCALE" );
            @try {
                for( NSString *currentKey in keysToRemove ) {
                    if( [defaults objectForKey:currentKey] ) {
                        [defaults removeObjectForKey:currentKey];
                    }
                }
            }
            @catch (NSException *exception) {
                // NOTHNG TO CATCH HERE
            }
            @finally {
                [defaults synchronize];
            }

之后,当前区域设置和语言将返回到在系统设置中选择的语言和区域。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32326400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档