NSLocale 本地化信息

前言

  • NSLocale 本地化信息

    • Objective-C

      1
      @interface NSLocale : NSObject <NSCopying, NSSecureCoding>
    • Swift

      1
      public class NSLocale : NSObject, NSCopying, NSSecureCoding
    • NSLocale 类返回本地化信息,主要体现在”语言”和”区域格式”这两个设置项。

1、NSLocale 本地化信息的创建

  • Objective-C

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // 用标示符创建
    NSLocale *locale1 = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];

    // 返回系统初始本地化信息
    NSLocale *locale2 = [NSLocale systemLocale];

    // 一直保持在 cache 中,第一次用此方法实例化对象后,即使修改了本地化设定,也不改变
    NSLocale *locale3 = [NSLocale currentLocale];

    // 每次修改本地化设定,其实例化的对象也会随之改变
    NSLocale *locale4 = [NSLocale autoupdatingCurrentLocale];
  • Swift

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    // 用标示符创建
    let locale1: NSLocale = NSLocale(localeIdentifier: "zh_CN")

    let strSymbol: AnyObject? = locale1.objectForKey(NSLocaleCurrencySymbol)

    // 返回系统初始本地化信息
    let locale2: NSLocale = NSLocale.systemLocale()

    let calendarIdentifier = locale2.objectForKey(NSLocaleCalendar)?.calendarIdentifier

    // 一直保持在 cache 中,第一次用此方法实例化对象后,即使修改了本地化设定,也不会改变
    let locale3: NSLocale = NSLocale.currentLocale()

    // 每次修改本地化设定,其实例化的对象也会随之改变
    let locale4: NSLocale = NSLocale.autoupdatingCurrentLocale()

2、NSLocale 本地化信息的设置

  • Objective-C

    1
    2
    3
    NSCalendar *calendar = [NSCalendar currentCalendar];

    [calendar setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]];
  • Swift

    1
    2
    3
    4
    let calendar: NSCalendar = NSCalendar.currentCalendar()

    // 设置区域
    calendar.locale = NSLocale(localeIdentifier: "zh_CN")

3、NSLocale 本地化信息的获取

  • Objective-C

    1
    2
    3
    4
    // 根据不同的 key 返回各种本地化信息
    NSString *strSymbol = [[NSLocale currentLocale] objectForKey:NSLocaleCurrencySymbol];

    NSCalendar *calendar = [[NSLocale currentLocale] objectForKey:NSLocaleCalendar];
  • Swift

    1
    2
    3
    4
    5
    6
    let locale = NSLocale.currentLocale()

    // 根据不同的 key 返回各种本地化信息
    let strSymbol: AnyObject? = locale.objectForKey(NSLocaleCurrencySymbol)

    let calendar: AnyObject? = NSLocale.currentLocale().objectForKey(NSLocaleCalendar)

4、显示特定地区代号下相应键的显示名称

  • Objective-C

    1
    2
    3
    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];

    NSString *str = [locale displayNameForKey:NSLocaleIdentifier value:@"en_US"];
  • Swift

    1
    2
    3
    let locale = NSLocale(localeIdentifier: "zh_CN")

    let str = locale.displayNameForKey(NSLocaleIdentifier, value: "en_US")
文章目录
  1. 1. 前言
  2. 2. 1、NSLocale 本地化信息的创建
  3. 3. 2、NSLocale 本地化信息的设置
  4. 4. 3、NSLocale 本地化信息的获取
  5. 5. 4、显示特定地区代号下相应键的显示名称
隐藏目录