APLanguage+MPaaS.h 3.09 KB
Newer Older
张杰's avatar
张杰 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
//
//  APLanguage+MPaaS.h
//  MPaaS
//
//  Created by shenmo on 5/9/16.
//  Copyright © 2016 Alipay. All rights reserved.
//

@protocol APLanguageClass <NSObject>

@property (nonatomic, copy            ) NSString            *name;              /**< 语言名称 */
@property (nonatomic, assign          ) BOOL                isCurrentLanguage;  /**< 是否为当前语言 */
@property (nonatomic, strong, readonly) NSMutableDictionary *strings;           /**< 该语言对应的字符串表的所有key-value对组成的字典(暂不支持,始终为nil) */
@property (nonatomic, strong, readonly) NSString            *tableName;         /**< 该语言对应的字符串表文件名,如 @"en" */

@end

@protocol APLanguageSettingClass <NSObject>

/**
 *  获取当前语言对象
 *
 *  @return 当前语言对象,APLanguage的一个实例
 */
+ (id<APLanguageClass>)currentLanguage;

/**
 *  在名称为 \c bundleName 的bundle中取当前语言状态下\c key 对应的字符串值.
 *
 *  @param key        字符串表中\c key
 *  @param value      默认值, 当找不到该 \c key 对应的 \c value 时返回该默认值.
 *  @param bundleName bundle名称字符串
 *
 *  @return 当前语言状态下\c key 对应的字符串值
 */
+ (NSString *)localizedStringForKey:(NSString *)key
                       defaultValue:(NSString *)value
                           inBundle:(NSString *)bundleName;

/**
 *  App已经支持的语言列表
 *
 *  @return 支持的语言数组,每个元素为支持的语言的名称, 如支持简体中文、英文: @[@"zh-Hans",@"en"]
 */
+ (NSArray *)supportedLanguages;

/**
 *  设置为跟随系统语言,若不支持当前系统语言,默认设置成英文(\c APLanguageEnglish). @see [APLanguageSetting isFollowingSystemLanguage]
 *
 *  @return 成功返回  \c YES , 失败返回  \c NO.
 */
+ (BOOL)setSystemLanguage;

/**
 *  是否当前语言环境是跟随系统语言的,跟随系统语言不一定与系统语言一致,如系统当前语言App不支持,会fallback到英文.
 *
 *  @return 正在跟随系统语言时返回 \c YES, 否则返回 \c NO .
 */
+ (BOOL)isFollowingSystemLanguage;

/**
 * 是否系统语言(非App内语言)在两次启动间隔中发生了语言切换.
 * @note 切换系统语言时系统会杀掉App进程,所以该种切换指的是前后两次启动的切换. 系统语言切换时,App内语言不一定切换.
 *
 *  @return 系统语言发生了切换时返回 \c YES, 否则返回 \c NO .
 */
+ (BOOL)systemLanguageDidChange;

/**
 *  是否多语言环境是打开的,在服务端下发关闭多语言环境的开关后的下一次冷启动生效,关闭多语言环境时,当前语言默认返回 \c 简体中文.
 *
 *  @return 多语言环境打开时返回 \c YES, 关闭时返回 \c NO.
 */
+ (BOOL)isMultiLanguageEnabled;

/**
 *  一个语言名称对应的显示在UI上的字符串,如: \c APLanguageChineseSimplified (\c @"zh-Hans") 显示为 \c @"简体中文" .)@note 暂不支持
 *
 *  @param langName 语言名称
 *
 *  @return 语言名称对应的显示在UI上的字符串
 */
+ (NSString *)displayNameForLanguageName:(NSString *)langName;

@end