Programer/iOS

[Swift] StoryBoard 로컬라이즈(지역화) 쉽게하기

아즈샤 2018. 8. 24. 20:21
반응형

0. 들어가기 전에..


기본적인 로컬라이즈(지역화) 방법은 아래 블로그를 참고하시면 쉽게 설정할 수 있습니다.


http://trend21c.tistory.com/1689



1. 스토리보드 로컬라이즈

스토리보드 로컬라이즈를 할 때, 일일히 Outlet를 바꿔줘야 하는 이슈가 있습니다.

저같은 경우는 스토리보드나 Nib 를 많이 사용하므로 로컬라이즈 할 때 꽤나 난감했습니다.

스토리보드에 있는 Outlet을 코드로 연결해줄수 없을까 했는데 다음과 같은 방법을 사용했습니다.

protocol StroyBoardLocalizable {

    var LocalizerKey: String? { get set }

} 


일단, Label, Button, TextField 등 아웃렛에 사용할 프로토콜을 선언해주고..


extension UILabel: StroyBoardLocalizable {

    @IBInspectable var LocalizerKey: String? {

        get { return nil }

        set(key) {

            text = key?.localized

        }

    }

}


extension UIButton: StroyBoardLocalizable {

    @IBInspectable var LocalizerKey: String? {

        get { return nil }

        set(key) {

            setTitle(key?.localized, for: .normal)

        }

    }

}


위와 같이 Inspectable를 사용에서 스토리보드에 LocalizerKey를 추가하였습니다.


extension String {

    var localized: String {

        return NSLocalizedString(self, comment: self)

    }

}


위와 같이 String에 로컬라이즈를 위해 Extension를 해주고나서, Localizable.strings 같은 로컬라이즈 파일에서 작성을 해주면 스토리보드에서 로컬라이즈를 할 필요가 없습니다.


2. 한계점

그러나 스토리보드에 아울렛에 일일히 넣어주는 수고를 들일수 밖에는 없을 것 같습니다.
혹시 스토리보드에서 로컬라이징을 좀 더 쉽게하는 방법이 있으면 언제든지 알려주세요:)

(이제 슬슬 스냅킷을 이용해서 UI도 코드로 해봐야겠습니다..)

3. 참고 링크



반응형