天天看點

NSLocalizedString系列處理字元串

更多的關于字元串使用的資訊可以詳見: Using Strings Files for User-Facing Text.

NSLocalizedString 這個宏是字元串本地化的核心工具。它還有三個鮮為人知的變體:NSLocalizedStringFromTable、NSLocalizedStringFromTableInBundle 和 NSLocalizedStringWithDefaultValue。這些宏最終都調用 NSBundle 的 localizedStringForKey:value:table: 方法來完成任務。

使用這些宏有兩個好處:一方面相比直接調用 localizedStringForKey:value:table: 方法,使用宏讓代碼簡單易懂;另一方面,類似 genstrings 這樣的工具能夠監測到這些宏,進而生成供你翻譯使用的字元串檔案。這些工具會解析 .c 和 .m 字尾的檔案,然後為其中每一個需要進行本地化的字元串都生成對應條目,并寫入到生成的 .strings 檔案中。

1.傳回字元串的本地版本:

NSString *NSLocalizedString(NSString *key, NSString *comment)
           

NSLocalizedString是一個定義在NSBundle.h中的宏,其用途是尋找目前系統語言對應的Localizable.strings檔案中的某個key的值。

第一個參數是key的名字,第二個參數是對這個“鍵值對”的注釋。

2.從指定的表中傳回字元串的本地化版本:

NSString *NSLocalizedStringFromTable(NSString *key, NSString *tableName, NSString *comment)
           

tableName指定了String file的檔案名。

3.傳回字元串的本地化版本:

NSString *NSLocalizedStringFromTableInBundle(NSString *key, NSString *tableName, NSBundle *bundle, NSString *comment)
           

包含String file中指定的bundle。

4.傳回字元串的本地化版本:

NSString *NSLocalizedStringWithDefaultValue(NSString *key, NSString *tableName, NSBundle *bundle, NSString *value, NSString *comment)