相关疑难解决方法(0)

NSLocale currentLocale始终返回"en_US"而不是用户的当前语言

我正在进行国际化iPhone应用程序的过程 - 我需要根据用户当前的语言环境对某些视图进行编程更改.我疯了,因为无论iPhone模拟器或实际硬件上的语言偏好如何,locale总是评估为"en_US":

NSString *locale = [[NSLocale currentLocale] localeIdentifier];
NSLog(@"current locale: %@", locale);
Run Code Online (Sandbox Code Playgroud)

疯狂的是,应用程序的其余部分按预期运行.从Localization.strings文件中选择正确的字符串并在界面中使用,并使用所选语言环境的正确.xib文件.

我也试过以下,但没有用,结果相同:

NSString *locale = [[NSLocale autoupdatingCurrentLocale] localeIdentifier];
NSLog(@"current locale: %@", locale);
Run Code Online (Sandbox Code Playgroud)

我有什么简单的东西吗?可能是偏好还是导入?

我以前做的:

正如Darren的回答所暗示的那样,我正在寻找的偏好不在NSLocale,而是在这里:

NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
NSArray* languages = [userDefaults objectForKey:@"AppleLanguages"];
NSString* preferredLanguage = [languages objectAtIndex:0];
NSLog(@"preferredLanguage: %@", preferredLang);
Run Code Online (Sandbox Code Playgroud)

彼得的答案似乎是一个更好的解决方案:

NSArray* preferredLanguages = [NSLocale preferredLanguages];
NSLog(@"preferredLanguages: %@", preferredLanguages);
Run Code Online (Sandbox Code Playgroud)

iphone cocoa objective-c internationalization

79
推荐指数
4
解决办法
6万
查看次数

NSLocale preferredLanguages objectAtIndex:0总是返回"en"

模拟器的语言已经改为日语,为什么[[NSLocale preferredLanguages] objectAtIndex:0] 总是返回"en"

首选语言和地区都与"en"无关,它"en"来自哪里?

这是截图

试图获得[[NSLocale preferredLanguages] objectAtIndex:2],然后崩溃显示*** Terminating app due to uncaught exception 'NSRangeException', reason: '-[__NSCFArray objectAtIndex:]: index (2) beyond bounds (1)

这是否意味着模拟器中没有设置任何语言?太奇怪了!

在使用iOS8.1/7.1升级到Xcode 6.1之前,这种情况从未发生过.

同时,在我的iPhone 5上试过同样的东西,控制台输出正确的东西.

为什么这么奇怪?有没有人有这样的问题?

更新:1

  • 删除Xcode和模拟器,然后从Mac Store下载重新安装.
  • 创建一个新的简单项目,更改simlulator的语言
  • 仍然总是"en".

哦! 怎么了....


更新:2

  • 今天,通过重新格式化HD重新安装了全新的Yosemite
  • 下载Xcode 6.1
  • 启动一个新的简单默认项目
  • 把这些代码
  • 更改/添加模拟器语言,日语,荷兰语,英语,
  • 天啊!只得到了"en"再次,日语和英语没有发现!

为什么还只能"en"找到一个?日语和英语在哪里?

模拟器怎么了?

我错过了什么吗?

iphone nsuserdefaults region nslocale ios8.1

25
推荐指数
1
解决办法
7235
查看次数

获取iOS当前语言(包括国家/地区代码)

我需要得到一个字符串像en_USes_ESiOS中.

显而易见的方法是使用[NSLocale currentLocale]并从那里获取语言信息.但是,这会为您提供"区域格式"而不是实际的设备语言,这意味着如果您使用英语设备语言但区域格式为"西班牙",则会错误地报告es_ES.

如果您需要设备语言,则必须执行以下操作: [[NSLocale preferredLanguages] objectAtIndex:0]

但是,这只会为您提供语言,因此您可以获得类似enes最终没有国家/地区代码的内容.

我如何正确获取国家代码,就像Safari一样?

country-codes ios

11
推荐指数
1
解决办法
2万
查看次数

如何使用JavaScript检测iOS设备的系统语言?

我已经找到了上一个问题,但它使用C.有没有办法通过JQuery或JavaScript来做到这一点?

ios cordova

10
推荐指数
1
解决办法
2万
查看次数

iOS上的三个字母国家代码

我知道你可以在iOS上获得所有国家的双字母国家代码.但有没有办法获得三个字母的国家代码?

所以从http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2http://en.wikipedia.org/wiki/ISO_3166-1_alpha-3 提前致谢!

country-codes ios

8
推荐指数
0
解决办法
1806
查看次数

从代码中打开地图应用程序 - 在哪里/如何找到"当前位置"?

我打开地图应用程序,从我的代码中显示从用户的当前位置到目标坐标的路线.我使用以下代码打开地图应用.我按下按钮时调用此代码.getCurrentLocation是一种返回最近更新位置的方法.

- (void)showDirectionsToHere {

    CLLocationCoordinate2D currentLocation = [self getCurrentLocation];  // LINE 1
    NSString* url = [NSString stringWithFormat: @"http://maps.google.com/maps?saddr=%f,%f&daddr=%f,%f", 
                                                  currentLocation.latitude,
                                                  currentLocation.longitude, 
                                                  destCoordinate.latitude, 
                                                  destCoordinate.longitude];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
}
Run Code Online (Sandbox Code Playgroud)

这里[self getCurrentLocation]LINE 1中用于CLLocationManager确定当前位置并返回该值.

注意:我还没有在LINE1中实现代码.我刚刚计划这样做.

我的问题是:

  1. 这是一个很好的做法,在调用地图应用程序时计算当前位置?
  2. [self getCurrentLocationopenURL被叫之前返回当前位置吗?
  3. 在打开地图应用之前,我是否必须确定当前位置?

我对这些事情有点困惑.请指导我.谢谢.

iphone google-maps core-location ios

7
推荐指数
3
解决办法
1万
查看次数

格式化时间Swift上午/下午/晚上/任何时间

我试图找到一种方法来获取当天的时间.显然,有一种简单的方法可以将它应用于显示早晨,晚上 如果您对一种语言的静态单词感到满意.有没有办法根据Locale制作它?NSDateComponentsFormatter似乎没有做到这一点.

nsdateformatter swift

7
推荐指数
1
解决办法
4397
查看次数

如何获得操作系统语言和语言环境?

我的应用程序在运行时更改语言,并建议用户重新启动应用程序.我是这样做的:

    typealias LanguageLocaleType = (language: String?, locale: String?, title: String)

    let elements: [LanguageLocaleType] = [
        (nil, nil, "System Default"),
        ("en", "en_US", "English"),
        ("ar", "ar_SA", "Arabic"),
    ]

    //...func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)...

    let element = elements[indexPath.row]

    guard let language = element.language else {
        // How to really reset app back to OS language/locale???
        UserDefaults.standard.removeObject(forKey: "AppleLanguages")
        UserDefaults.standard.removeObject(forKey: "AppleLocale")
        return
    }

    UserDefaults.standard.set([language], forKey: "AppleLanguages")

    if let locale = element.locale, !locale.isEmpty,
        Locale.current.identifier != locale,
        !Locale.current.identifier.hasPrefix("\(language)_") {
            UserDefaults.standard.set(locale, forKey: "AppleLocale")
    }
Run Code Online (Sandbox Code Playgroud)

我想提供在列表中设置语言并选择正确的语言,其中一个语言被提供给语言设置System …

localization ios nslocale swift

6
推荐指数
1
解决办法
1625
查看次数

iOS键盘语言更改时是否有委托调用?

我有一个场景,我希望有一个处理程序,当用户按下iOS键盘上的语言更改(地球图标)时会触发该处理程序.

我怎么可能实现这一目标?

谢谢

keyboard ios ios5

5
推荐指数
1
解决办法
1098
查看次数

NSLocale preferredLanguages 总是检索“en”语言

我正在尝试使用以下代码在我的设备中获取正确的语言(不在模拟器中):

 NSString * languageLocale = [[NSLocale preferredLanguages] objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)

它总是“en”, 但我当前的语言设置为西班牙语

有什么想法为什么检索总是“en”而不是当前的设备语言?

ios

5
推荐指数
2
解决办法
946
查看次数