多語系設定

Zhi-Hong Lin
4 min readJul 16, 2020

首先建立一個命名為 Localizable 的 Strings File

新增所要支援的語系,這邊用繁體中文當範例

成功的話會在 Localizable 這邊看到新增了繁體中文的 .strings

在這兩個檔案中建立 localizedKey 所相對應的內容,等號前面是我們要設定的 key,等號後面則是要設定的 value

切記要加分號!!

系統設定切換語系

extension String {     var localized: String {         return NSLocalizedString(self, tableName: nil, bundle:   Bundle.main, value: "", comment: "")     }}

不隨著系統設定切換語系

若想要讓 App 的語系不隨著系統設定改的話,可以透過以下寫法去指定要讀的 Localizable 檔案

extension String {var localized: String {// forResource: 指定要讀的副檔名 繁體中文=“zh-Hant”let path = Bundle.main.path(forResource: "zh-Hant", ofType: "lproj")!let bundle = Bundle(path: path)!return NSLocalizedString(self, tableName: nil, bundle: bundle, value: "", comment: "")}
}

實作如下,”Test”是設定的 key

如果有像以下這樣會需要帶參數的字串,可以透過格式化字串的部分來實作

self.localized 是上面 extension 所建立的變數

extension String {func localizeWithFormat(arguments: CVarArg...) -> String {return String(format: self.localized, arguments:arguments)}}

實作如下,如果有多個參數帶入的話,只需要加入逗號,如 “字串”, “次數”

圖片多語系

在 Localization 選擇你要支援的語系,再將對應語系的圖片放進對應欄位即可

Summary

這次在做多語系的時候,有兩點紀錄一下。

  1. 由於專案裡有部分的文案是寫在 xib 或 storyboard 上,常常在找文案設定多語系時會遺漏掉,建議純用程式碼刻畫面。
  2. 另外還有在做專案前,建議文案的部分先寫在 Localizable.strings 檔裡,用 key 來塞字串,免得未來有多語系需求時,還要重寫文案!!

Sign up to discover human stories that deepen your understanding of the world.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

No responses yet

Write a response