Swift 設(shè)置支持多語言

在項目開發(fā)的過程中,難免會遇到多語言適配的問題,特此在這里總結(jié)一下在項目中如何進(jìn)行多語言的適配,具體步驟如下:

項目中的基礎(chǔ)配置

  • 第一步

Xcode里面創(chuàng)建一個名叫Localizable.strings的文件來存儲Key-Value信息。

截屏2021-04-01 下午2.23.51.png

  • 第二步

Projectinfo里添加所需要支持的語言,這里選擇的是Chinese(Simplified)English-Development Language,會讓你勾選語言適配方式,點擊Finish。

截屏2021-04-01 下午2.28.40.png
截屏2021-04-01 下午2.28.55.png
  • 第三步

添加完成后,可以看到在Localizable.strings下多了一個Localizable.strings(Chinese,Simplified)文件用于保存簡體中文的文本信息。

  • 第四步

現(xiàn)在可以在Localizable.strings里面添加下面的Key-Value來讓App顯示中文了。

當(dāng)用戶在iOSSetting App里面把語言選擇為簡體中文以后,App里面的文本就會變?yōu)橹形摹?/p>

使用SwiftGen管理多語言字符串

  • 安裝SwiftGen

為了保證整個團(tuán)隊所使用SwiftGen的版本都保持一致,我們使用Cocoapods來安裝SwiftGen。在Podfile文件中添加Swift Pod即可。

pod 'SwiftGen', '= 6.4.0', configurations: ['Debug']
  • Build Phases里面添加Run SwiftGen步驟,然后配置它執(zhí)行"${PODS_ROOT}/SwiftGen/bin/swiftgen"命令。
截屏2021-04-01 下午3.31.03.png

這里要注意,由于我們自己的源代碼會使用到 SwiftGen 所生成的代碼,因此必須把 Run SwiftGen 步驟放在 Compile Source 步驟之前。

  • 創(chuàng)建Strings.swift文件,添加如下代碼
internal enum L10n {
    internal enum LoginModeList {
        //手機號
        internal static let phoneNumberMessage = L10n.tr("Localizable", "LoginModeList.phoneNumberMessage")
    }
}
extension L10n {
  private static func tr(_ table: String, _ key: String, _ args: CVarArg...) -> String {
    let format = BundleToken.bundle.localizedString(forKey: key, value: nil, table: table)
    return String(format: format, locale: Locale.current, arguments: args)
  }
}

// swiftlint:disable convenience_type
private final class BundleToken {
  static let bundle: Bundle = {
    #if SWIFT_PACKAGE
    return Bundle.module
    #else
    return Bundle(for: BundleToken.self)
    #endif
  }()
}
  • Localizable.strings(English)中添加如下代碼
"LoginModeList.phoneNumberMessage" = "phone number";
  • Localizable.strings(Chinese,Simplified)中添加如下代碼
"LoginModeList.phoneNumberMessage" = "手機號";
  • 具體使用
let label = UILabel()
label.text = L10n.LoginModeList.phoneNumberMessage
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容