Swift 本地化问候语的问题

Swift 本地化问候语的问题,swift,nslocale,Swift,Nslocale,我刚刚完成我的第一个应用程序,并已本地化不同的功能。我的应用程序中有一个功能,我不确定是否可以本地化 基本上,当用户打开我的应用程序时,他们会收到一条信息,上面写着“下午好”、“早上好”或“晚上好”。我创建了一些代码来检查时间前缀以决定显示什么消息,但是由于不同国家的时间格式不同,我不确定如何将其本地化 我是否需要找出它在哪些国家工作,并添加一个if语句来决定应用程序是否可以显示此问候语?否则,是否根据他们的姓名显示问候语 这是我的密码: var date = NSDate() let

我刚刚完成我的第一个应用程序,并已本地化不同的功能。我的应用程序中有一个功能,我不确定是否可以本地化

基本上,当用户打开我的应用程序时,他们会收到一条信息,上面写着“下午好”、“早上好”或“晚上好”。我创建了一些代码来检查时间前缀以决定显示什么消息,但是由于不同国家的时间格式不同,我不确定如何将其本地化

我是否需要找出它在哪些国家工作,并添加一个if语句来决定应用程序是否可以显示此问候语?否则,是否根据他们的姓名显示问候语

这是我的密码:

var date = NSDate()
    let dateFormatter = NSDateFormatter()
    dateFormatter.timeStyle = .ShortStyle
    let time = dateFormatter.stringFromDate(date)

    var currentTimeOfDay = ""

    if time.hasPrefix("0") {
        currentTimeOfDay = "morning"
    } else if time.hasPrefix("10") {
        currentTimeOfDay = "morning"
    } else if time.hasPrefix("11") {
        currentTimeOfDay = "morning"
    } else if time.hasPrefix("12") {
        currentTimeOfDay = "morning"
    } else if time.hasPrefix("13") {
        currentTimeOfDay = "afternoon"
    } else if time.hasPrefix("14") {
        currentTimeOfDay = "afternoon"
    } else if time.hasPrefix("15") {
        currentTimeOfDay = "afternoon"
    } else if time.hasPrefix("16") {
        currentTimeOfDay = "afternoon"
    } else if time.hasPrefix("17") {
        currentTimeOfDay = "afternoon"
    } else if time.hasPrefix("18") {
        currentTimeOfDay = "evening"
    } else if time.hasPrefix("19") {
        currentTimeOfDay = "evening"
    } else if time.hasPrefix("2") {
        currentTimeOfDay = "evening"
    }

您不应该使用本地化的时间字符串来确定一天中的时间

使用NSCalendar和NSDate组件:

现在,小时是一个范围为0的整数。。。二十三,

var currentTimeOfDay = ""
switch hour {
case 0 ... 12:
    currentTimeOfDay = "morning"
case 13 ... 17:
    currentTimeOfDay = "afternoon"
default:
    currentTimeOfDay = "evening"
}
适用于使用Swift 4.0的用户


啊!!谢谢!我本来应该在我的原始代码中使用范围运算符,但我完全忘记了。@user3746428:不客气。还可以查看NSLocalizedString方法,以将输出本地化为设备设置。我刚刚在iOS 7设备上首次尝试了我的应用程序,但收到一个错误。当我注释掉这段代码时,应用程序运行正常,但当我将其保留在中时,我收到以下错误“-[\u NSCopyOnWriteCalendarWrapper component:fromDate:]:无法识别的选择器发送到实例0x175b5580'@user3746428:组件方法是在iOS 8中引入的。我已经修改了代码,这样它现在也可以在iOS 7上运行了。啊,我想这一定是问题所在。这不会是一个问题,但我只是决定将部署目标从iOS 8更改为7。您的更改解决了问题,再次感谢!好吧,那太疯狂了,我只能在有超过6个字符要添加的情况下编辑!不管怎样,你错过了if-let时间段的右括号。
var currentTimeOfDay = ""
switch hour {
case 0 ... 12:
    currentTimeOfDay = "morning"
case 13 ... 17:
    currentTimeOfDay = "afternoon"
default:
    currentTimeOfDay = "evening"
}
    let dateComponents = Calendar.current.dateComponents([.hour], from: Date())

    if let hour = dateComponents.hour {
      let greetingString: String
      switch hour {
      case 0..<12:
        greetingString = "Good morning"
      case 12..<17:
        greetingString = "Good afternoon"
      default:
        greetingString = "Good evening"
      }
   }