Swift UI에서 현지화를 구현하는 방법


10

아무도 나를 도울 수 있습니까? Swift UI에서 현지화에 대한 설명을 찾을 수 없습니다. 누구든지 예를 들어 현지화하는 방법에 대한 조언이나 더 나은 예를 들어 줄 수 있습니까 Text()?

답변:


15

Text 문서를 살펴보면 String이 아닌 LocalizedStringKey가 초기화 프로그램에 사용된다는 것을 알 수 있습니다.

init(_ key: LocalizedStringKey, tableName: String? = nil, bundle: Bundle? = nil, comment: StaticString? = nil)

현지화가 매우 간단합니다. 당신이해야 할 일은 :

  • Strings File 형식의 새 파일을 만들고 Localizable이라고 부릅니다.
  • 새 파일을 선택하고 오른쪽 패널에서 File Inspector로 이동 한 다음 Localize ...를 클릭하십시오.
  • 프로젝트 파일에서 현지화 섹션으로 이동하여 목록에 다른 언어를 추가하십시오-Xcode가 현지화 파일을 생성합니다

Localizable.strings를 선택하면 원래 언어 및 방금 추가 한 언어의 파일이 포함되어 있음을 알 수 있습니다. 여기에 번역, 즉 키-현지화 된 텍스트 쌍이 있습니다.

다음과 같은 텍스트가 있으면 앱입니다.

Text("Hello World!")

이제 Localizable.strings에 번역을 추가해야합니다.

귀하의 기본 언어 :

"Hello World!" = "Hello World!";

그리고 당신의 제 2 언어 (이 경우 독일어) :

"Hello World!" = "Hallo Welt!";

미리보기를 현지화 된 언어로 보려면 다음과 같이 미리 정의 할 수 있습니다.

struct ContentViewView_Previews: PreviewProvider {

    static var previews: some View {
        ForEach(["en", "de"], id: \.self) { id in
            ContentView()
                .environment(\.locale, .init(identifier: id))
        }
    }
}

감사합니다, 도움이되었습니다! 그러나 여러 언어가 이미 추가 되었기 때문에 몇 가지 문제가있었습니다.
Oleh H

나는이 지시 사항을 편지에 따라했지만 효과가 없었다. iOS 10.15.1 Beta 및 Xcode 11.1을 실행하고 있습니다. 어떤 조언도 기꺼이 받아 들였다. 지금 나는이에 더 이상 시간을 낭비 베타 소프트웨어의 결함을 가정하지 않는거야
요셉 보이스 '엄마

문제가 정확히 무엇입니까?
LuLuGaGa

1
@LuLuGaGa 문제를 발견했습니다. 내가 말했듯이 편지의 지시 사항을 따르지 않았다는 것이 밝혀졌습니다. 내 현지화 문자열 파일이 하위 폴더에있었습니다. 프로젝트 수준으로 설정하면 제대로 작동합니다.
Joseph Beuys 'Mum

1
또한 (내 생각)을 발견하는 것보다 다른 문자열 파일 아무것도 호출 지역화 수단 그것을하지 않습니다 일
요셉 보이스 '엄마

3

신속한 UI 파일의 경우 현지화 .strings 파일에서 문자열 키를 삽입하면됩니다.

SwiftUI 가져 오기

struct ContentView: View {
    var body: some View {
        VStack {
            Text("selectLanguage")
            Text("languagesList")
        }



    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
            .environment(\.locale, .init(identifier: "en"))
    }
}

.strings 파일의 예입니다.

"selectLanguage" = "Select language";
"languagesList" = "Languages list";

결과는 여기


0

앱을 현지화하려면 다음이 필요합니다.

  1. Text ( "Nice") 와 같은 SwiftUI 요소를 사용하십시오 . Nice는 Localizable.strings의 핵심이됩니다.
  2. 텍스트가 SwiftUI 요소에없는 경우 NSLocalizedString 을 사용해야 합니다.
  3. 앱 대상을 선택하십시오.
  4. 현지화 내보내기 : 편집 -> 현지화 내보내기 ...
  5. 내 보낸 파일을 번역기에 제공하십시오.
  6. 번역 가져 오기 : 편집 -> 현지화 가져 오기 ...

0

SwiftUI에서 Localazable을 사용하려면 다음과 같이 수행하십시오.

파일에서 LocalizedStringKey를 사용하도록 SwiftUI 가져 오기

//MARK: - File where you enum your keys to your Localized file
enum ButtonName: LocalizedStringKey {
case submit
case cancel
}

//MARK: - Your Localized file where are your translation
"submit" = "Submit is pressed";
"cancel" = "Cancel";

//MARK: - In your code
let submitButtonName = ButtonName.submit.rawValue
let cancelButtonName = ButtonName.cancel.rawValue

VStack {
Text(submitButtonName)
Text(cancelButtonName)
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.