Как реализовать локализацию в Swift UI - PullRequest
0 голосов
/ 27 октября 2019

Кто-нибудь может мне помочь? Я не могу найти описание локализации в Swift UI. Может кто-нибудь дать совет или лучше пример как локализовать например Text()?

Ответы [ 2 ]

2 голосов
/ 27 октября 2019

Когда вы смотрите документацию по тексту, вы видите, что он берет LocalizedStringKey, а не строку в свой инициализатор:

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

Это делает локализацию очень простой. Все, что вам нужно сделать, это:

  • создать новый файл типа Strings File, назовите его Localizable
  • , выберите новый файл и перейдите к File Inspector на правой панели инажмите Localize ...
  • перейдите к файлу вашего проекта в раздел Localizations и добавьте другой язык в список - Xcode создаст файлы локализации для вас

Когда вы выберете Localizable. Строки, вы увидите, что он содержит файлы для исходного языка и языка, который вы только что добавили. Вот куда вы переводите свои переводы, т. Е. Парные локализованные текстовые пары.

Если у вас есть такой текст, как ваше приложение:

Text("Hello World!")

Теперь вам нужно добавить в свои Localizable.stringsваши переводы:

для вашего базового языка:

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

и для вашего второго языка (в данном случае немецкий):

"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))
        }
    }
}
1 голос
/ 27 октября 2019

Для файла Swift UI вам просто нужно вставить строковый ключ из файла .strings локализации

import 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";

результат здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...