iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0
Mobile Development

在 iOS 開發路上的大小事系列 第 8

【在 iOS 開發路上的大小事-Day08】讓你的 App 與世界接軌!

前情提要

一般在開發 App 的時候,除非是只想在單一國家上架,不然基本上都會做多國語系,來讓 App 可以根據系統語言來切換 App 內元件顯示的語言,所以今天要來介紹,如何讓你的 App 與世界接軌

實作環節 Part 1 (元件)

首先,打開專案的 xcodeproj,點擊「PROJECT」,找到「Localization」,將你想要新增的語系新增進去,這邊是示範新增「繁體中文跟韓文」這兩種語系

接著在左邊檔案列表內新增一個資料夾叫做「Localizable」,用來分類各國語系,然後新增一個 Strings 檔案,Strings 檔案的檔名一定要叫做「Localizable」

接著點開 Localizable.strings,在右側點擊「Localize...」,選擇你要支援的其中一種語系,這邊是選擇「English」

接著將右側 Localization 裡要支援的語系打勾

這時候,Localizable.strings 裡就會出現所有有打勾的語系檔

下面就示範繁體中文跟韓文的部分,其他語系也是一樣的做法
新增的方法,很簡單,在對應語言的 Localizable.strings 加入 Key 和 Value,每行最後都要加分號,下面是範例

"Hello" = "你好"; // 繁體中文範例
"Hello" = "안녕하세요"; // 韓文範例

接著在你有需要多國語系的元件,改成下面的程式碼,以 UILabel 做示範
前面的 Hello 就是我們的 Key,後面的 comment 是註解,如果沒有特殊需求的話,打空字串就可以了

label.text = NSLocalizedString("Hello", comment: "")

實作環節 Part 2 (App 顯示名稱)

接著是如何讓 App 顯示名稱也可以多國語系化
這邊可以參考 Apple Developer 官方文件

作法跟前面的基本上是大同小異,唯一有差別的地方是檔名和 Key 的不同
檔名只能取「InfoPlist.strings」,Key 只能打「CFBundleDisplayName」,這是 Apple 規定的

"CFBundleDisplayName" = "本地化 Demo"; // 繁體中文範例
"CFBundleDisplayName" = "현지화 데모"; // 韓文範例

成果


本篇的範例程式碼:GitHub

參考資料

  1. https://franksios.medium.com/ios-localization-%E6%9C%AC%E5%9C%B0%E5%8C%96-7b16b58bb9df
  2. https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html

上一篇
【在 iOS 開發路上的大小事-Day07】除了用 WKWebView 以外,還可以如何在 App 中顯示 PDF 檔案呢?
下一篇
【在 iOS 開發路上的大小事-Day09】將常用的 Function 寫成一個 class,讓各個檔案都能使用
系列文
在 iOS 開發路上的大小事30

尚未有邦友留言

立即登入留言