iOS國際化適配

添加應用需要國際化的語言

在Project的Localizations選項,點擊加號(+),添加需要國際化的語言。如果需要適配storyboard和啟動頁可以勾選。


Snip20200809_10.png
Snip20200809_11.png

一、語言適配

步驟一、批量替換字符串
  • Command+Shift+F,進入全局搜索引擎,切換為Replace模式,并把匹配模式改為正則匹配模式Regular Expression。
  • 使用正則表達式搜索并替換中文字符串:在搜索條件里輸入(@"[^"]*[\u4E00-\u9FA5]+[^"\n]*?"),在下面替換內容里輸入NSLocalizedString($1, nil),點擊Replace All,即可完成替換。關于正則表達式不太懂的,請戳我
步驟二、生成多語言文件
  • 首先,創(chuàng)建所需語言的文件夾,這里主要適配中午和英文。
cd 工程目錄
mkdir en.lproj
mkdir zh-Hans.lproj
  • 然后,遍歷所有.m文件,根據每個文件內的需要國際化的字符串生成key和value。
find . -name *.m | xargs genstrings -o en.lproj
find . -name *.m | xargs genstrings -o zh-Hans.lproj
  • en.lprojzh-Hans.lproj文件夾中就應該有了相應的Localizable.string文件了,我們把這兩個文件夾拖到工程里,然后在相應的Localizable.strings文件中,修改每個key所對應的value值就可以了。

二、權限提示文字適配

  • 添加Strings文件,命名為 InfoPlist.string


    Snip20200809_3.png
Snip20200809_6.png
Snip20200809_8.png
  • 根據項目需要,添加字段
CFBundleDisplayName = "InternationalTest";
NSPhotoLibraryUsageDescription = "InternationalTest needs to access your photo album so that you can use photo saving and publishing dynamic services normally";
.
.
.
CFBundleDisplayName = "國際化適配";
NSPhotoLibraryUsageDescription = "使用相冊";
.
.
.

三、圖片適配

方法1、指定不同圖片名字

在不同語言的Localizable.strings中指定不同的圖片名稱,通過NSLocalizedString(key, comment)獲取不同的圖片名稱后進行顯示不同的圖片

//en.lproj/Localizable.strings
"im_service_zh" = "im_service_en";

//zh-Hans.lproj/Localizable.strings
"im_service_zh" = "im_service_zh";

//xxx.m
imgView.image = [UIImage imageNamed:NSLocalizedString(@"im_service_zh", nil)];
2、方法2、利用xcode生成

這種方法不用對代碼進行改動,只需要在工程目錄中新建一個Group,放入所有需要國際化的原有圖片。然后選中圖片,點擊右側的Localization,選中需要支持的語言即可在原有圖片下生成選中語言所對應的子文件。然后替換掉對應語言的子圖片即可。

Snip20200809_15.png
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容