๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ iOS

[iOS, Swift] Localization(๋กœ์ปฌ๋ผ์ด์ง•, ํ˜„์ง€ํ™”)

by ํ‹ด๋”” 2020. 8. 19.
728x90
๋ฐ˜์‘ํ˜•

ํ˜„์ง€ํ™”, ์ง€์—ญํ™”, ๋กœ์ปฌ๋ผ์ด์ง• ๋“ฑ๋“ฑ์œผ๋กœ ๋‹ค์–‘ํ•˜๊ฒŒ ๋ถˆ๋ฆฌ๊ณ  ์žˆ๋Š”๋ฐ ์‰ฝ๊ฒŒ ๋งํ•ด์„œ ๋‹ค๋ฅธ ๋‚˜๋ผ์—์„œ ์•ฑ์„ ์‹คํ–‰ํ•˜๋ฉด ๊ทธ ๋‚˜๋ผ์˜ ์–ธ์–ด์— ๋งž๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์–ธ์–ด๋ฅผ ์„ค์ •ํ•ด ์ฃผ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค~ ์ฒ˜์Œ ๋ฐฐ์šธ ๋•Œ๋Š” ์ด๋Ÿฐ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ• ๊นŒ ์‹ถ์—ˆ๋Š”๋ฐ ๊ธ€๋กœ๋ฒŒ ์•ฑ์„ ๋งŒ๋“ค๊ณ ์ž ํ•œ๋‹ค๋ฉด ํ•„์ˆ˜์ผ ๊ฒƒ ๊ฐ™์•„ ์ •๋ฆฌํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค!

 

** ๋ณธ ๋‚ด์šฉ์€ 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 ๋ฒˆ์—ญ

ํ†ตํ•ฉ ์ธ๊ณต์ง€๋Šฅ ํ”Œ๋žซํผ, Kakao i์˜ ๊ธฐ๊ณ„๋ฒˆ์—ญ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

translate.kakao.com

์ด ๋ฒˆ์—ญ๊ธฐ๋กœ ์œ„ ๊ธ€์„ ์ค‘๊ตญ์–ด๋กœ ๋ฐ”๊ฟ”์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค~

(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

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€