ios - 真实设备上的月份和星期几语言

标签 ios nsdateformatter

我正在创建一个主要供西类牙用户使用的应用。

我无法访问真实设备来测试应用程序,但我已将 iOS 模拟器语言更改为西类牙语,并将地区更改为西类牙。

在应用程序中,我使用 NSDateFormatter 将 NSDate 转换为字符串,但在模拟器上,星期几和月份的字符串是英文的。

这是结果:

enter image description here

我的问题是:我应该以编程方式将字符串更改为西类牙语,还是在真实设备上以西类牙语显示?

谢谢。

更新

这里是我目前的代码:

 //convertir fecha
    NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0];
    NSLog(@"LOCALE = %@",language);

//NSLog result = es

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd"];
    NSDate *date = [formatter dateFromString:fecha];

    [formatter setLocale:[NSLocale currentLocale]];

    NSDateFormatter *weekDay = [[NSDateFormatter alloc] init] ;
    [weekDay setDateFormat:@"EEEE"];
    [weekDay setLocale:[NSLocale currentLocale]];

更新 2

我已将模拟器配置更改为西类牙语/西类牙,正如您在图片中看到的那样,但日期显示为英文!!!为什么?

enter image description here

最佳答案

确保在模拟器中将区域设置为西类牙语/西类牙(相对于西类牙,西类牙可以是英语)。 (语言设置与日期无关。)在设置/常规/国际屏幕上,它将显示当前区域格式的示例;必须使用西类牙语才能使您的代码正常工作。

International Settings page

要在您的应用中查看,请添加以下代码:

NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0];
NSCalendar * calendar = [[NSLocale currentLocale] objectForKey:NSLocaleCalendar];
NSLog(@"LOCALE = %@/%@",language,   [calendar.locale localeIdentifier ] );

日历 Locale 可以是 en_ES(在西类牙表示英语)或 es_ES(在西类牙表示西类牙语)。

所有这些都意味着您的代码没问题;在西类牙的真实设备上,您不会有任何问题,要看到这一点,您只需像西类牙的设备一样设置模拟器的设置。

关于ios - 真实设备上的月份和星期几语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22283418/

相关文章:

objective-c - NSDateFormatter 返回 nil

ios - 修剪 NSDate 以仅显示日期

ios - dateFromString 对某些值返回 nil

ios - 如何将 RFC3339-String 转换为 NSDate

ios - 从日期选择器获取日期到变量中的字符串

ios - UITableView:如何只实现一行与其他行不同

ios - 如何修改包含 '-'作为单词字符的单词边界

ios - 如何在 CoreData 中保存字典数组?

objective-c - iOS 弹窗作为菜单教程

swift - NSDateformatter 可以用于读取瑞典月份吗