2017年8月21日 星期一

iOS Swift Multiple Language Localizable 切換多語系

不是認手機語系, 而是直接在app上切換語系

1.在Main.storyboard 拉三個按鈕與一個Label


2.與ViewController.swift建立連接
import UIKit

class ViewController: UIViewController {
    
    @IBOutlet weak var labMessage: UILabel!
    

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func btnEnglish(_ sender: UIButton) {
        UserDefaults.standard.set("Base", forKey: "lang") //儲存語系為基本
        setMessage()
    }
    
    @IBAction func btnJapan(_ sender: UIButton) {
        UserDefaults.standard.set("ja", forKey: "lang") //儲存語系為日文
        setMessage()
    }
    
    @IBAction func btnChinses(_ sender: UIButton) {
        UserDefaults.standard.set("zh-Hant", forKey: "lang") //儲存語系為繁體中文
        setMessage()
    }
    
    func setMessage() {
        labMessage.text = "A Song of Ice and Fire".localized //使用擴展功能 localized
    }

}

extension String{

    var localized: String {
                
        let lang = UserDefaults.standard.string(forKey: "lang")
        
        let bundle = Bundle(path: Bundle.main.path(forResource: lang, ofType: "lproj")!)

        return NSLocalizedString(self, tableName: nil, bundle: bundle!, value: "", comment: "")
        
    }
}

3.建立Localizable.strings檔案
New File... -> 找到 String File  -> 輸入Localizable.strings -> Create
建立完成後點選檔案->右邊的 ->再點選Localize...

4.回到PROJECTInfo 點選Localizations的 + 會出現所有語言, 這裡選擇Japanese(ja)與Chinses(zh-Hant), 括弧內為設定文字對應的縮寫

勾選建立的Localizable.strings就好

 接著Localizable.strings會出現三個檔案

分別在 Localizable.strings(Base)輸入
"A Song of Ice and Fire" = "A Song of Ice and Fire";

Localizable.strings(Japanese)輸入
"A Song of Ice and Fire" = "氷と炎の歌";

Localizable.strings(Chinese(Traditional))輸入
"A Song of Ice and Fire" = "冰與火之歌"; 





檔案下載:
https://github.com/terryyamg/MultipleLanguageTest
參考連結:
https://stackoverflow.com/questions/25081757/whats-nslocalizedstring-equivalent-in-swift
https://medium.com/lean-localization/ios-localization-tutorial-938231f9f881

5 則留言 :

  1. Thank you for sharing this.It is worth reading for everyone.
    goldenslot

    回覆刪除
  2. u31 com เข้า สู่ ระบบ ความสบาย สบายของคุณเป็น เรื่องสำคัญ pg slot ยิ่งเมื่อเพลินใจ กับเกมออนไลน์ที่ u31 u31 ใช้มาตร การรักษาความปลอดภัย ที่รวมทั้งแต่ละเกม ได้รับการออกตัว

    回覆刪除
  3. 75r17 สล็อต เว็บไซต์ตรง ฝากถอนไว ไม่มีอย่างน้อยปัจจุบัน ให้บริการลงทะเบียนเป็นสมาชิก เล่นเกมพนันครบวงจรสูงที่สุด pgslot โดยเปิดให้เล่นให้บริการแต่ว่าเกมสล็อตแตกง่ายที่สุด

    回覆刪除
  4. PGSlot ทางเข้า มือถือ โลกของ PG Slot ทางเข้ามือถือ ประสบการณ์การเล่นเกมผ่านมือถือที่น่าตื่นเต้น PG SLOT ค้นหาข้อมูลที่น่าสนใจและเคล็ดลับจากผู้เชี่ยวชาญเพื่อเพิ่มความสนุกในการเล่นเกม

    回覆刪除