다국어 대응을 시도했습니다.

8180 단어 iOSswift3

소개



실제로 하면 이것만으로는 부족한 부분(복수형의 이야기 등)이 있다고 생각합니다만, iPhone의 언어 설정에 의해 앱의 표시 언어를 전환하는 방법을 시도해 보았을 때의 작업 메모입니다.
음량 변경 앱의 소스에 추가·변경을 하고 있습니다.

Localizations에 추가



다국어 설정을 위해 먼저 PROJECT - Info의 "Localizations"에 설정을 추가합니다.


"+"를 클릭하여 목록을 표시하고 "Japanese(ko)"를 선택합니다.


선택 화면이 표시되지만 이번에는 다음 상태(변경 없음)로 완료됩니다.


다음과 같이 'Japanese'가 추가됩니다.


Localizable.strings 추가



언어를 전환할 대상이 되는 단어를 등록하는 파일을 추가합니다.

추가 파일 템플릿 추가 화면에서 Strings File을 선택하고 계속 진행합니다.


파일 이름을 "Localizable.strings"로 설정하여 파일을 만듭니다.


추가된 파일을 선택하면 Inspector에 'Localization' 입력란에 버튼이 표시되므로 이를 클릭합니다. 클릭하면 "Do you want to localize this file?"라고 적힌 화면이 표시되므로 "Localize"를 선택합니다.



Inspector의 'Localization' 입력란에 확인란이 표시됩니다.


'Japanese' 확인란을 선택하면 'Localizable.strings' 아래에 파일이 추가됩니다.


Localizable.strings



Localized.string의 내용을 "Key 값 = 표시할 문자열;"로 설정합니다.

Localizable.strings(Japanese)
connectbutton = "接続";
talkbutton = "話す";
talktext = "こんにちは";

Localizable.strings(Base)
connectbutton = "connect";
talkbutton = "talk";
talktext = "Hello";

위와 같이 키별로 대응시켜 각 언어를 설정합니다.

ViewController.swift



언어에 의해 표시를 바꾸고 싶은 부분에 사용하는 캐릭터 라인은 다음 함수 를 사용해 취득합니다.

NSLocalizedString
func NSLocalizedString(_ key: String, tableName: String? = default, bundle: Bundle = default, value: String = default, comment: String) -> String

viewDidLoad에 다음 설명을 추가합니다.

viewDidLoad
        let connect = NSLocalizedString("connectbutton", comment: "")
        let talk = NSLocalizedString("talkbutton", comment: "")
        myConnectButton.setTitle(connect, for: .normal)
        myTalkButton.setTitle(talk, for: .normal)

tapTalkButton에서 다음과 같이 변경합니다.

tapTalkButton
    @IBAction func tapTalkButton(_ sender: Any) {
        //話す内容の設定
        //let talkText = "こんにちは"
        let talkText = NSLocalizedString("talktext", comment: "")

        //略

    }

화면 표시



iPhone의 언어 설정을 변경하면 다음과 같이 표시가 변경됩니다.
・Japanese


・English(일본어 이외)


※ 각 언어의 Localalizable.strings 파일을 설정하면 각각 설정한 내용으로 표시되지만, 개별적으로 설정되어 있지 않은 언어가 설정된 경우는 Base로 설정된 내용이 표시됩니다.
예) 러시아어


결론



이번에는 언어 설정을 변경했을 때 각각 다른 표시를 할 수 있는지 시험한 형태가 됩니다.
실제로 본허리를 넣어 다언어 대응하는 경우는, 좀 더 깊은 곳까지 해 나가지 않으면 안 된다고 생각합니다만, 수법에 대해 배울 수 있었다고 하는 것으로 향후에 살려 가고 ​​싶습니다.

참고



이하의 링크처를 참고로 했습니다.
Internationalization and Localization Guide
[iOS] 처음부터 시작! 간단! 다언어 대응!
iOS 앱의 국제화 대응의 장소와 Tips집(Swift판)
이 기사에서는 언급하지 않은 설정에 대해서 등 기재되어 있으므로, 읽어 주시면 좋을까 생각합니다.

좋은 웹페이지 즐겨찾기