3分鐘實現iOS語言本地化/國際化(圖文詳解)

來源:互聯網
上載者:User

標籤:使用   原理   通用   boa   value   應用   前言   cal   view   

  • 前言
    • 語言本地化,又叫做語言國際化。
    • 是指根據使用者作業系統的語言設定,自動將應用程式的語言設定為和使用者作業系統語言一致的語言。
    • 往往一些應用程式需要提供給多個國家的人群使用,或者一個國家有多種語言,這就要求應用程式所展示的文字、圖片等資訊,能夠讓講不同語言的使用者讀懂、看懂。
    • 進而提出為同一個應用程式適配多種語言,也即是國際化。
    • 語言國際化之所以又叫做語言本地化,這是站在每個使用者的角度而言的,是指能夠讓使用者本地、本土人群能夠看懂的語言資訊,顧名思義,語言本地化。其實語言本地化 == 語言國際化!
1、前期準備配置需要國際化的語言
  • 配置需要國際化的語言,這也是國際化之前的準備工作,無論我們是國際化App名稱、代碼中的字串、圖片、還是storyboard和xib,都需要進行這一步的準備工作(一個項目中需要且僅需要配置一次)。
  • 選中project->Info->Localizations,然後點擊"+",添加需要國際化/本地化的語言,如(預設需要勾選Use Base Internationalization):
  • 此處以添加法語為例,如:
  • 彈出如下對話方塊,直接點擊finish,如:
  • 同理,添加簡體中文、繁體中文、韓語,最終結果如:
  • 備忘: “zh-Hans”和“zh-Hant”是簡體中文和繁體中文的縮寫。這是標準的縮寫。H可大寫也可小寫。"en"是英語的縮寫。ko是韓語的縮寫,fr是法語的縮寫。其他語言請百度各國語言縮寫即可查詢。
2、各種國際化
  • (一)應用程式名稱本地化/國際化
  • (二)代碼中字串的本地化
  • (三)多人開發情況下的字串本地化
  • (四)圖片本地化
3、查看/切換本地語言
  • 原理:應用啟動時,首先會讀取NSUserDefaults中的key為AppleLanguages對應的value,該value是一個String數組,也就是說,我們訪問這個名為AppleLanguages的key可以返回一個string數組,該數組儲存著APP支援的語言列表,數組的第一項為APP當前預設的語言。
   #import "ViewController.h"       @interface ViewController ()       @end       @implementation ViewController       - (void)viewDidLoad {       [super viewDidLoad];           NSArray *languages = [[NSUserDefaults standardUserDefaults] valueForKey:@"AppleLanguages"];       NSString *currentLanguage = languages.firstObject;       NSLog(@"模擬器當前語言:%@",currentLanguage);   }   @end
  • 控制台列印結果:
  • 同理,既然我們可以通過AppleLanguages這個key從NSUserDefaults中取出語言數組,那麼我們也可以給AppleLanguages這個key賦值來達到切換本地語言的效果,從此以後,我們就無需頻繁的去模擬器的設定->通用->語言與地區 中切換語言。
    #import "ViewController.h"         @interface ViewController ()         @end         @implementation ViewController         - (void)viewDidLoad {        [super viewDidLoad];             // 切換語言前        NSArray *langArr1 = [[NSUserDefaults standardUserDefaults] valueForKey:@"AppleLanguages"];        NSString *language1 = langArr1.firstObject;        NSLog(@"模擬器語言切換之前:%@",language1);             // 切換語言        NSArray *lans = @[@"en"];        [[NSUserDefaults standardUserDefaults] setObject:lans forKey:@"AppleLanguages"];             // 切換語言後        NSArray *langArr2 = [[NSUserDefaults standardUserDefaults] valueForKey:@"AppleLanguages"];        NSString *language2 = langArr2.firstObject;        NSLog(@"模擬器語言切換之後:%@",language2);    }    @end
  • 回想一下,我在上面的技巧一節中提過:切換語言無需在模擬器中設定,只需要在Xcode中進行如下設定: Edit->Scheme->Run->Arguments Passed On Launch ->-AppleLanguages (語言代碼)。其實本質上就是給NSUserDefaults中名為AppleLanguages的key賦值。

3分鐘實現iOS語言本地化/國際化(圖文詳解)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.