第 24 章
App 本地化以支援多國語言
Good code is its own best documentation. As you're about to add a comment, ask yourself, "How can I improve the code so that this comment isn't needed?" Improve the code and then document it to make it even clearer.
- Steve McConnell
在本章中,我們將介紹一下「本地化」( Localization )。iOS 裝置(包括 iPhone 與 iPad )在世界各地都可以取得。而 App Store 在世界上超過 150 個國家都可下載。你的使用者來自不同國家,說著不同的語言。要提供很棒的使用者體驗給全世界的使用者,你需要讓你的 App 能夠支援多種語言下載。而支援一個特定語言的過程,一般稱為「本地化」。
Xcode 已經內建支援本地化。它讓開發者十分容易地透過本地化功能與一些 API 的呼叫來實作 App 的本地化。
你可能聽過這兩個名詞:「本地化」與「國際化」,你可能認為這指的是翻譯過程,有部分是正確的。在 iOS 程式開發中,「國際化」( Internationalization )是建置本地化 App 的里程碑。為了讓你的 App 能夠順應不同的語言,App 設計架構中涉及語言及地區差異的部分必須獨立出來,這便是所謂的「國際化」。舉例而言,如果你的 App 需要顯示價格欄位,則已知某些國家是用「句點」來代表小數點(例如:$1000.50),而某些國家則是使用「逗點」(例如:1000,50)。因此,對這款 App 做國際化的具體過程,便需要將價格欄位設計成可順應不同的地區。
至於本地化,則是 App 在經過國際化後,再進一步地支援多種語言及地區的具體過程。這項過程包含了對靜態及可見文字的特定語言翻譯,並加上對於特定國家的元素,例如:圖片、影片及聲音等。
在本章中,我們將會本地化 FoodPin App 為中文及德文。不過,不要期望我會翻譯 App 中的所有文字。我只是想要教導你使用 Xcode 實作本地化的程序。
App 國際化
打造本地化 App 的第一步就是「國際化」。在本小節中,我們將會修改這個 App,使它可以容易順應各種語言。
首先,我們來說明一下 App 中顯示使用者介面( User-facing )的文字。在原始碼當中有許多的使用者介面文字,這裡為了方便起見,我們在程式碼中定義字串。圖 24.1 顯示了 NewRestaurantView
結構中一些使用者介面的文字。當它要開始本地化,這些寫死在程式碼中的字串無法本地化,我們必須先將它國際化。
字串國際化的核心是 NSLocalizedString
巨集。這個巨集讓你可以將使用者介面的文字字串輕易地國際化。它有兩個參數:
key
- 準備進行本地化的字串。comment
- 是一個用來提供額外翻譯資訊的字串。
這個巨集回傳一個字串的本地化版本。要在你的 App 中國際化使用者介面的字串,你只需要將現行字串以 Xcode 13 導入的String(localized:)
整個包裹起來。
本文摘自《iOS 17 App程式設計實戰心法》(SwiftUI)》一書。如果你想更深入學習Swift程式設計和下載完整程式碼,你可以從 AppCoda網站 購買完整電子版