Swift多語言版本的建立

z小志發表於2017-12-14

#程式碼

1、建立Localizable.string檔案

1、選中檔案點選右側選單欄
2、點選Localize..
3、選中Base與English
複製程式碼

圖1

圖2

圖3

2、填寫Localizable.string檔案內容

Localizable.strings(Base)內容格式如下:

/*
 MDHomeViewController.swift
 */
"今日"="今日";
"明日"="明日";
"本週"="本週";
"本月"="本月";
"本年"="本年";
複製程式碼

Localizable.strings(English)內容格式如下:

/*
 MDHomeViewController.swift
 */
"今日"="Today";
"明日"="Tomorrow";
"本週"="Weak";
"本月"="Month";
"本年"="Year";
複製程式碼

2、查詢專案中文內容並替換

 "[^"]*[\u4E00-\u9FA5]+[^"\n]*?"(OC 中為@"[^"]*[\u4E00-\u9FA5]+[^"\n]*?")


呼叫 NSLocalizedString 方法  
比如:NSLocalizedString(str:"今日")

func NSLocalizedString(str:String) -> String{
    return NSLocalizedString(str, comment: str)
}
記得以前是可以直接一鍵替換的 ,現在不知道是Xcode版本的問題還是什麼 一直不成功,有知道的可以評論。我會及時更新,謝謝大家!
複製程式碼

正則查詢

StoryBoard Or Xib

1、選中檔案點選右側選單欄
2、點選Localize..
3、選中Base與English
4、檔案內容基本如下:
/* Class = "UILabel"; text = "微信"; ObjectID = "2c7-OE-g5X"; */
"2c7-OE-g5X.text" = "微信";
在English中把 "2c7-OE-g5X.text" = "微信";  替換成 "2c7-OE-g5X.text" = "weChat"; 即可
複製程式碼

BEC8C7B8-FF73-4A1F-AA3D-9E967E16556F.png

#infoPlist

1、建立InfoPlist.string檔案
2、選中檔案點選右側選單欄
3、點選Localize..
4、選中Base與English
5、在InfoPlist.string(English)中 :
CFBundleDisplayName="英文名";
複製程式碼

附:快速匯出專案中中文字元

我們已經知道如何識別專案中的字串了,但是如何取出來使用呢? 這就需要遍歷專案中所有的指定字尾(e.g: .h、.m等)的檔案,然後利用正則表達匹配所有使用到的中文字串,並寫入檔案中。為了方便起見,我將此過程寫了一個Mac客戶端小應用,可直接將選中的專案中所有的中文字串,匯出到指定的路徑下;該應用還可以選擇對於重複出現的中文字串進行處理,以及還可以將中文字串匯出為繁體; 小應用更值得關注的是它匯出的檔案,可以直接拿來當做多語言檔案中的key=value 使用,非常簡單,喜歡的可以去下載看看, 含有原始碼的哦;小應用執行圖如下:

1610415-af673e2626489737.jpg

可參考 去看看

相關文章