iOS開發-功能篇-國際化|NSUserDefaults

/*=========================================軟件國際化================================================*/app

1.簡介:函數

    軟件國際化主要是在軟件中添加多種語言,以實現不一樣國家的人羣需求。測試

    主要的應用方式有兩種:1.根據系統的語言環境自動進行切換;2.人爲的添加按鈕等進行主動切換。spa

    目前實現的主要方法有兩種:1.Xcode可視化界面添加Localizations的操做。2.利用NSLocalizedString配合genstrings進行實現。這裏主要介紹第二種方法。code

2.實現:orm

    2.1 NSUserDefaults:適合存儲輕量級的本地數據,好比要保存一個登錄用戶名、密碼、語言環境之類的,使用NSUserDefaults是首選。對象

    NSDictionary* defaultsee = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];blog

    NSLog(@"Defaults: %@", defaultsee);//利用字典查看一下全部NSUserDefaults的設置rem

    2.2 NSLocalizedString:基礎的國際化函數,查看一下定義同步

#define NSLocalizedString(key, comment) \
    [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]//key-value,comment:註釋

    對上述函數進行拓展自定義,語言包存放在en.lproj(英),zh-Hans.lproj(漢)等,以key-value方式進行獲取。

#define CustomLocalizedString(key, comment) \
    [[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]] ofType:@"lproj"]] localizedStringForKey:(key) value:@"" table:nil]//利用key取出相應地object

    2.3 利用genstrings生成相應語言的.lproj語言文件Localizable.strings

    genstrings -o ~/.../zh-Hans.lproj *.m//-o 生成的目標文件夾,掃描當前目錄下的全部.m文件

    genstrings -o ~/.../en.lproj *.m

    2.4 而後在相應地Localizable.strings文件中添加"登錄" = "login";等

 [[NSUserDefaults standardUserDefaults] setObject:@"zh-Hans" forKey:appLanguage];//添加語言文件
    NSArray *array = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];//獲取系統當前的語言
    NSString *currentLanguage = [array objectAtIndex:0];

注意:1.生成的Localizable.strings文件名沒有標識,因此在生成文件處能夠加文件夾或者添加註釋區分

    2.必定要掃描全部須要國際化的.m文件

    3.NSUserDefaults只是起到存儲屬性值和路徑做用,利用相似字典方式獲取數據

 

/*===========================================NSUserDefaults詳解==========================================*/

1.簡介:NSUserDefaults對象是用來保存應用程序相關的偏好設置,配置數據等等,主要用來恢復基礎設置,記錄密碼和系統的一些語言和鍵盤等默認信息。數據則存放在<UUID for your App>\Library\Preferences\<your App"s bundle ID>.plist的文件中

2.功能:

    2.1 NSUserDefaults只能存放5種數據格式:NSString, NSNumber, NSDate, NSArray, NSDictionary.

    2.2 查看當前全部的配置數據:

 NSDictionary* defaultsee = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];
    NSLog(@"Defaults: %@", defaultsee);

    2.3 單例模式: +(NSUserDefaults *)standardUserDefaults//獲取當前類的實例

    2.4 key-value模式:

 -(void)setObject:(id)value forKey:(NSString *)defaultName;//設置數據
    - (id)objectForKey:(NSString *)defaultName;//取數據

    2.5 由於NSUserDefaults是持久化數據存儲方法,重啓設備並不能將設置在裏面的數據進行更改,只能經過兩種方式進行刪除:

    1.刪除沙盒(重裝)

       2.-(void)removeObjectForKey:(NSString *)defaultName;//函數方法

    2.6 其餘:- (NSDictionary *)dictionaryRepresentation;//利用字典進行配置查看

               - (BOOL)synchronize;//數據同步

 //=========================v2017.8.3新需求,國際化語言 當出現系統不支持的第三方語言出現時,默認使用英文。

1.嘗試修改scheme裏的region和language(做用不大)。

2.修改配置文件:Localization native development region 爲String類型   指定en語言(做用不大)。

3.核心:用戶自行修改,當出現不匹配的語言時,進入到設置->通用->語言和地區->首選語言設置(設置第一順序爲英文),經測試最具實效。

相關文章
相關標籤/搜索