ํ์งํ, ์ง์ญํ, ๋ก์ปฌ๋ผ์ด์ง ๋ฑ๋ฑ์ผ๋ก ๋ค์ํ๊ฒ ๋ถ๋ฆฌ๊ณ ์๋๋ฐ ์ฝ๊ฒ ๋งํด์ ๋ค๋ฅธ ๋๋ผ์์ ์ฑ์ ์คํํ๋ฉด ๊ทธ ๋๋ผ์ ์ธ์ด์ ๋ง๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ์ด๋ฅผ ์ค์ ํด ์ฃผ๋ ๊ธฐ๋ฅ์ ๋๋ค~ ์ฒ์ ๋ฐฐ์ธ ๋๋ ์ด๋ฐ ๊ธฐ๋ฅ์ด ํ์ํ ๊น ์ถ์๋๋ฐ ๊ธ๋ก๋ฒ ์ฑ์ ๋ง๋ค๊ณ ์ ํ๋ค๋ฉด ํ์์ผ ๊ฒ ๊ฐ์ ์ ๋ฆฌํด๋ณด๊ธฐ๋ก ํ์ต๋๋ค!
** ๋ณธ ๋ด์ฉ์ iOS Program 6th (The Big Ranch Guide) ์์ดํ์ ๋ณด๊ณ ๊ณต๋ถํ ๊ฒ์ด๋ผ ํ๋ฆฐ ๋ด์ฉ์ด๋ ์ค์ญ์ด ์์ ์ ์์ต๋๋ค. ํ๋ฆฐ ๋ด์ฉ์ด๋ ์ง์ ์์ผ์๋ฉด ๊ผญ ๋๊ธ ๋ถํ๋๋ฆฝ๋๋ค!
๐ view๋ฅผ ๋ง๋ค์ด ์ฃผ๋ ๋ฐฉ๋ฒ์๋ Story board๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ Programmatically ์ฆ, ์ฝ๋๋ก ๊ตฌํํด ์ฃผ๋ ๋ฐฉ๋ฒ์ด ์๋ฏ
์ง์ญํ ๋ํ ์ ๋๊ฐ์ง ๋ฐฉ์์ ๋์ํ๋ ๋ฐฉ๋ฒ์ด ์กด์ฌํฉ๋๋ค.
์ฐ์ ์ฒซ ๋ฒ์งธ๋ก Stroy board๋ฅผ ํตํด ๊ตฌํํ view์์ ์ด๋ป๊ฒ ์ง์ญํ๋ฅผ ํ ์ ์๋์ง ์์๋ด ์๋ค :)
๐ ์คํ ๋ฆฌ ๋ณด๋์์ ๊ตฌํํ๊ธฐ
์คํ ๋ฆฌ๋ณด๋์ ์๋ ์์๋ฅผ ์ง์ญํ ํด์ค๋ค๋ ๊ฒ์ ์ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ ์ผ๋ก ๋ฐ๋์ง ์๋ ๊ฒ์ ์ ์ฉํ๊ฒ ๋ฉ๋๋ค. ์ด๋ฏธ์ง์์ ๋ณด์ด๋ ๊ฒ๊ณผ ๊ฐ์ด UILabel์ ์ ํ ์๋ "์ด๊ฒ์ ํ ์คํธ ์ฑ"์ด ์ฝ๋ฉ์ด๋ ๊ธฐํ ํ๋ก๊ทธ๋๋ฐ ์ ์์๋ก ๋ค๋ฅธ ๊ธ๊ท๋ฅผ ๊ฐ์ง์ง ์๊ณ ๊ณ ์ ๋ ๋ด์ฉ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์คํ ๋ฆฌ ๋ณด๋์์ ๊ตฌํํ๋ค๊ณ ์ ์ด ๋์์ง๋ง ํ๋ก๊ทธ๋๋ฐ ์ ์ผ๋ก ๊ตฌํํ์ง ์์ ๋๋ผ๊ณ ๋งํ๋ ๊ฒ์ด ๋ ๊ฐ๊น์ธ ๊ฒ ๊ฐ์์
ํ๋ก์ ํธ๋ก ๋ค์ด๊ฐ ์ค๋๋ค. Info ํญ์ ๋๋ฌ ์ฃผ์ธ์~
Localizations์ ํ๋จ์ ๋ณด์ด๋ + ๋ฒํผ์ ๋๋ฌ์ค๋๋ค.
์ ๋ ์ค๊ตญ์ด๋ฅผ ์ถ๊ฐํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค
์ง์ญํ๋ฅผ ์ ์ฉํด ์ค Main.Storyboard๋ ์ฒดํฌ ์ํ๋ก ๋๋๊ณ ๋ฐ์น ์คํฌ๋ฆฐ์ ํด์งํด ์ฃผ์์ต๋๋ค.
๋ค์ ๋์์ Localizations๋ฅผ ๋ณด๋ฉด ์ถ๊ฐ ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค
ํ๋ก์ ํธ ๋ค๋น๊ฒ์ดํฐ๋ฅผ ๋ณด๋ฉด Base.lproj ๋๋ ํ ๋ฆฌ์ Main.Stringsํ์ผ์ด es.lproj ๋๋ ํ ๋ฆฌ์ ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
Main.strings ํ์ผ์ ํด๋ฆญํด ์ค๋๋ค.
์ ๋ ์ค๊ตญ์ด๋ก ์๋น์คํ๊ธฐ๋ก ํ์ผ๋ฏ๋ก ํ๊ธ์ ์ค๊ตญ์ด๋ก '์ง์ ' ๋ฒ์ญํ์ฌ ํ๊ธ ํ ์คํธ ์๋ฆฌ์ ๋ฃ์ด ์ฃผ๋ฉด ๋ฉ๋๋ค ;; ใ ใ ใ ใ
์ด ๋ฒ์ญ๊ธฐ๋ก ์ ๊ธ์ ์ค๊ตญ์ด๋ก ๋ฐ๊ฟ์ฃผ๊ฒ ์ต๋๋ค~
(kakao i ๋ ๊ฐ์ธ์ ์ผ๋ก ์ ์ผ ํธํ๊ฒ ์ฌ์ฉํ๊ณ ์๋ ๋ฒ์ญ๊ธฐ ์
๋๋ค. ๊ด๊ณ ์๋)
์ด๋ ๊ฒ ํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
๋น๋ํด๋ณด๋ฉด
๊ทธ๋ ์ต๋๋ค. ์์ง ๋์ด ์๋์์
Settings ์ ๋ค์ด๊ฐ ์ค๋๋ค.
General ๋ฉ๋ด์ ๋ค์ด๊ฐ์ ํ
Language & Region ํด๋ฆญ
Region ํด๋ฆญ
ํ์งํ ์๋น์คํ ๊ตญ๊ฐ๋ก ์ ํํด ์ฃผ์ธ์
์ง์ญ์ ๋ฐ๊ฟจ์ผ๋ฉด ์ธ์ด๋ฅผ ์ถ๊ฐํด์ค์ผ ํฉ๋๋ค. ์๋น์ค ํ ์ง์ญ์ ์ธ์ด๋ฅผ Add Language ๋ฒํผ์ ๋๋ฌ ์ถ๊ฐ ํด ์ค๋๋ค.
๊ทธ ํ iPhone Language์ ์ธ์ด ๋ํ ์๋น์ค ๊ตญ๊ฐ์ ์ธ์ด๋ก ๋ณ๊ฒฝํด ์ฃผ์ด์ผ ํฉ๋๋ค. ๋ค ๋ณ๊ฒฝํด ์ฃผ๊ณ ๋๋ฉด ์๋์ ๊ฐ์ด ๋ณด์ผ ๊ฒ๋๋ค~
๋น๋ํ๊ณ ์ดํ ์คํํ๋ฉด ์๋น์ค ๊ตญ๊ฐ์ ๋ง๋ ์ธ์ด๋ก ์ฑ์ด ์๋น์ค ๋ฉ๋๋ค.
๐จ๐ป ์ฝ๋๋ก ๊ตฌํํ๊ธฐ
๋ผ๋ฒจ์ ํ๋ ๋ ๋ง๋ค์ด ์ฃผ์๊ณ
Outlet์ผ๋ก ์ฐ๊ฒฐํด ์ค๋๋ค
ViewController.swift
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var txtLbl: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
}
์ด์ ์ฝ๋๋ก ๋ผ๋ฒจ์ ๊ธ์๋ฅผ ์ง์ ํด ์ค๋๋ค.
class ViewController: UIViewController {
@IBOutlet weak var txtLbl: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
self.txtLbl.text = "๋ ๋ฒ์งธ ๋ผ๋ฒจ"
}
}
์คํํด๋ณด๋ฉด
์ด์ ์ Main.storyboard ์์ ํ์งํ ํด์ค ๋ผ๋ฒจ์ ์ค๊ตญ์ด๋ก ๋จ๋ ๋ฐ๋ฉด
์ง์ ์ฝ๋๋ก ์ง์ ํด ์ค๊ฒ์ ๊ทธ๋ ์ง ์์ต๋๋ค~
์ฝ๋๋ก ์์ฑ๋ ๋ผ๋ฒจ์ ๊ธ์๋ฅผ ํ์งํ ํด์ฃผ๋ ค๋ฉด
์ด์ ์ ๋ฐฉ๋ฒ์ด ์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ ๊ทผํด ์ฃผ์ด์ผ ํฉ๋๋ค
NSLocalizedString(_:comment:)
๋ฅผ ์ฌ์ฉํด ์ฃผ๋ฉด ๋ฉ๋๋ค
์ด๋ฅผ ์ด์ฉํด์ ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ๋ฐ๊ฟ ์ค๋๋ค.
self.txtLbl.text = NSLocalizedString("๋ ๋ฒ์งธ ๋ผ๋ฒจ", comment: "the second label")
๋ค์์ terminal์ ์ด์ด ์ค๋๋ค
๋ค๋ฅธ ๋ฐฉ๋ฒ๋ ์๋ ๊ฒ ๊ฐ์๋ฐ ์ถํ์ ๋ ์์๋ด์ผ ํ ๊ฒ ๊ฐ๊ณ
์ฐ์ ๊ณต๋ถํ ์ฑ ์์๋ ํฐ๋ฏธ๋์ ์ด์ฉํฉ๋๋ค
Command + space bar
๋ก Spotlight ์ฐฝ์์
terminal.app ์ ๊ฒ์ํด์ ์คํ
ํ๋ก์ ํธ๊ฐ ์๋ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํด์ผ ํ๋๋ฐ
1. ํฐ๋ฏธ๋์ cd ์ ๋ ฅ (change directory์ ์ฝ์์ ๋๋ค). ์คํ์ด์ค ํค ๋๋ฌ ํ ์นธ ๋์ด ์ฃผ์๊ณ
2. ํ๋ก์ ํธ ์ด๋ฆ๊ณผ ๋์ผํ ํด๋๋ฅผ ๋๋๊ทธ ํด์
3. ํฐ๋ฏธ๋์ ๋์ด ๋ฃ์ด ์ค๋๋ค.
4. ์ํฐ ๋๋ฌ์ฃผ์ธ์
5. ls๋ฅผ ๋๋ฅด๋ฉด ํด๋น ํด๋์ ์ด๋ค ํ์ผ์ด ์๋์ง ๋ณด์ค ์ ์์ต๋๋ค
6. ์ด์ ํ์งํ๋ฅผ ํ๋ ค๊ณ ํ๋ ์ค์ํํธ ํ์ผ ์ด๋ฆ์ด ViewController.swift๋ผ๋ฉด
genstrings ViewController.swift
๋ผ๊ณ ์ ๋ ฅํด์ฃผ์ธ์
ํ์ธ๋๋ก ๋ณด์๋ฉด ์ด๋ ๊ฒ ํ์ผ์ด ์๊ฒผ์ง๋ง ํ๋ก์ ํธ ๋ค๋น๊ฒ์ดํฐ์๋ ๋ณด์ด์ง ์์ต๋๋ค
ํ๋ก์ ํธ ๋ค๋น๊ฒ์ดํฐ์์
ํ๋ก์ ํธ๋ช ์ ํด๋์ Add Files๋ฅผ ๋๋ฌ ์ค๋๋ค.
๋ฐฉ๊ธ ์์ฑํ Localizable.strings ํ์ผ์ ์ ํ ํ์ฌ add ํด์ค๋๋ค.
๊ทธ๋ฌ๋ฉด ํ๋ก์ ํธ ๋ค๋น๊ฒ์ดํฐ์ ๋ณด์ด๊ฒ ๋๋๋ฐ
๋๋ธ ํด๋ฆญํด์ ๋ณด์๋ฉด
์ต์ํ ํํ์ ๊ตฌ์กฐ๊ฐ ๋ณด์ ๋๋ค
์ข์์ ๐ค๐์ข์์๐ค๐
์ค๋ฅธ์ชฝ์ ์ง์ญํ ํ ์ธ์ด๋ฅผ ๋ฃ์ด ์ค๋๋ค.
๋ง์ฝ UTF-8 ๊ณผ ํจ๊ป ๋นจ๊ฐ ์ค๋ฅ๊ฐ ๋ด๋ค๋ฉด ๋ฐ๋ก ์ค๋ฅธ์ชฝ file inspector์์
Text Encoding์ ์ํฉ์ ๋ง๊ฒ ๋ฐ๊ฟ์ฃผ์๋ฉด ๋ฉ๋๋ค.
๋น๋ํ๊ณ ์คํํด ๋ณด๋ฉด!
์ ๋์ต๋๋ค ์ด์ ๋ค์ ์ ํ ์ ๋๋๋ ค ๋ณด๋ฉด
์ฒซ ๋ฒ์งธ ๋ผ๋ฒจ์ ํ๊ตญ์ด๋ก ๋์ค๋๋ ๋ ๋ฒ์งธ ๋ผ๋ฒจ์ ๊ณ์ ์ค๊ตญ์ด๋ก ๋น๋๋ค
stackoverflow์ ํ์ ๋น๋ ค ์ค๋ฅ๋ฅผ ๊ณ ์ณ ๋ด ๋๋ค
๐์ค๋ฅ ์์
1. ๋ค์ ํฐ๋ฏธ๋์ ์ด๊ณ ํ๋ก์ ํธ๋ช ์ผ๋ก ๋์ด ์๋ ํด๋๋ก cd ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ ์ด๋ํด ์ค๋๋ค.
2. ls ๋ก ํ์ผ ๊ฒ์
3. Localizable.strings๊ฐ ์๋ ๊ฒ์ ํ์ธ ํ์ จ์ผ๋ฉด ์๋์ ๊ฐ์ด ์ ๋ ฅํด ์ค๋๋ค
git add Localizable.strings
4. ์ด์ ํ๋ก์ ํธ ๋ค๋น๊ฒ์ดํฐ๋ก ๋ค์ ๋์์ค์ ์ Localizable.strings๋ฅผ ๋๋ธํด๋ฆญํด์ ์ด์ด์ค๋๋ค.
๋ง์ฝ ์ ์ฒ๋ผ ์ค๋ฅ๊ฐ ๋์ จ๋ค๋ฉด Localization ์ด ๋ถ๋ถ์ ์ ์ฌ์ง๊ณผ ๊ฐ์ด
ํ์ผ์ด ๋ณด์ด๋ ๊ฒ์ด ์๋๋ผ ๋ฒํผ์ด ๋ณด์ผ ๊ฑฐ์์
๋ฒํผ ๋๋ฌ ๋จ๋ ์ฐฝ์์ ํ์งํํ ์ธ์ด ์ ํํ์ ํ ๋ค์ ๋น๋ ํ๋ฉด
์ ์ ์ถ๋ ฅ ๋ฉ๋๋ค.
ํน์ ๋ชจ๋ฅด๋ ๋ค์ ํ๋ฒ ์ง์ญ์ด๋ ์ธ์ด ๋ฐ๊ฟ ๋ณด๋ฉด...
์ ๋์ต๋๋ค ;; ใ ใ
๐ฉ๐ซ ๊ถ๊ธํ๊ฑฐ๋ ๋ ๊ณต๋ถํ ๋ด์ฉ
1. ๋ง์ฝ ์ธํฐํ์ด์ค ๋ฐ๋๊ฑฐ๋ ๋ ์ถ๊ฐ ๋๋ฉด Main.string ํ์ผ ๋ค์ ๋ง๋ค์ด ์ค์ผ ํ๋ ๊ฑด๊ฐ..
2. ๋ง์ฝ ๋ผ๋ฒจ ์ค๊ฐ์ ์ ๋์ ์ธ ๋ด์ฉ์ด ๋ค์ด ๊ฐ๋ค๋ฉด UILabel ์ฌ๋ฌ๊ฐ๋ก ๋ถ๋ฆฌํด ์ค์ผ ํ๋ ๊ฑธ๊น
3. ์์ฃผ ๋ง์ ๊ตญ๊ฐ์์ ์๋น์ค ํ๋ฉด Localizable.strings ๋ ์ด๋ป๊ฒ ํด์ค์ผ ํ์ง
4. XLIFF
๋๊ธ