PROJECT > Info ํญ > Localization ์น์ > + ๋ฒํผ ๋๋ฌ์ ์ธ์ด ์ถ๊ฐ
New File > Strings File ์ถ๊ฐ
์์ฑ๋ ํ์ผ ํ์ธ > ์ค๋ฅธ์ชฝ File ์ธ์คํํฐ ํ์ธ
Localize ๋ฒํผ > ์ธ์ด ์ ํ > Localize ๋ฒํผ ํด๋ฆญ
๋ค์ File Inspector ํ์ธํ๋ฉด Localization ์น์ ์์ญ์ ์ถ๊ฐํ ์ธ์ด ๋ชฉ๋ก์ด ํ์๋จ
๋ค๊ตญ์ด ์ฒ๋ฆฌํ ์ธ์ด ์ ํํ๋ฉด Project Navigator์์ ์ธ์ด ๋ณ๋ก Localizable ์์ฑ๋ ๊ฒ ํ์ธ ๊ฐ๋ฅ
๋์์ด์์ด, ํ๋ฉด๋ณ๋ก ๋ณ์ญ๋์ด์ผ ํ๋ ๋จ์ด๊ฐ ๋ค๋ฅผ ์ ์์ผ๋ฏ๋ก ํค๊ฐ์ ๊ณ ์ ๊ฐ์ผ๋ก ์์ฑํด ์ฃผ๋ ๊ฒ์ด ์ข์
String Extension
extension String {
var localized: String {
return NSLocalizedString(self, comment: "\(self)_comment")
}
func localized(_ args: CVarArg...) -> String {
return String(format: localized, args)
}
}
label.text = "login_enter_snow".localized
์ฌ์ฉ์์ ํค๊ฐ์ผ๋ก ์ง์ ํด ์ค ๊ฐ์ localized ์ต์คํ
์
์ ์ฌ์ฉํ ์ ์์
// Localizable (Korean)
"currency" = "%d์";
// Localizable (English)
"currency" = "$ %d";
๋ง์ผ ํน์ ๋จ์ด๋ ์ซ์๋ฅผ ์ ์ธํ๊ณ ๋ก์ปฌ๋ผ์ด์ง ๋์ด์ผ ํ๋ค๋ฉด ์ซ์ %d, ๋ฌธ์์ด %@๋ฅผ ์ฌ์ฉํ ์ ์์
label.text = "currency".localized(100)
์ธ์๋ก ๊ฐ์ ์ ๋ฌํด ์ค
๊ตฌ์กฐ์ฒด ์ฌ์ฉ
struct LocalizableStrings {
struct Placeholder {
static let name = "name".localized
}
}
struct๋ฅผ ์์ฑํ ๋ค ๋ก์ปฌ๋ผ์ด์ฆ string์ ๊ฐ์ง๋ ๋ณ์๋ฅผ ์ถ๊ฐํด ์ค
// Localizable (Korean)
"name" = "์ด๋ฆ์ ์
๋ ฅํด ์ฃผ์ธ์";
// Localizable (English)
"name" = "Insert your name";
์ฐธ๊ณ ์ฌ์ดํธ
String Extension
https://gist.github.com/Juanpe/0ba09355229c0afa2ced6609735fd46c
Structure
https://i-colours-u.tistory.com/22
'๐ iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS/Swift] Dynamic Link ์ ๋ฆฌ (0) | 2023.03.08 |
---|---|
[iOS/Swift] Firebase Remote Notification ์ ๋ฆฌ (0) | 2023.03.08 |
[iOS/Swift] SafeArea ๋์ด ๊ตฌํ๊ธฐ (0) | 2023.02.05 |
[iOS/Swift] UIDevice ๋ฒ์ , UUID, ๊ธฐ๊ธฐ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ (0) | 2023.02.04 |
[iOS/Swift] infoDictionary ์ฑ ๋ฒ์ , ๋ฒ๋ค ์์ด๋ ๊ฐ์ ธ์ค๊ธฐ (0) | 2023.02.04 |
๋๊ธ