Поскольку я только начал новый проект в качестве своего первого опыта разработки под iOS (у меня более 10 лет опыта работы с Android), я нашел эту функцию очень удобной, учитывая, как она делалась в прошлом.
Так или иначе, я начал реализовывать свою самую первую строку для английского и французского языков (мой родной язык). Проект настроен на использование английского языка в качестве языка по умолчанию.
Мой проект разделен на несколько целей (простые платформы Swift), и в моей цели View, где я пишу код пользовательского интерфейса, я создал папку ресурсов, в которой я создал каталог строк, содержимое которого следующее:
Код: Выделить всё
{
"sourceLanguage" : "en",
"strings" : {
"loading data" : {
"extractionState" : "manual",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Loading data..."
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Chargement des données..."
}
}
}
}
},
"version" : "1.1"
}
Код: Выделить всё
public struct HomeScreen: View {
public init(){}
@StateObject private var viewModel: HomeViewModel = Resolver.resolve()
public var body: some View {
content
}
@ViewBuilder
private var content: some View {
switch(viewModel.uiState) {
case .loading:
ProgressView(String(localized: .HomeScreenStrings.loadinData))
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(Color(.systemBackground))
... // other cases
}
}
Если я переключусь на французский язык в качестве языка по умолчанию в Project > Infos > Localizations, французский текст будет отображаться правильно, что, по крайней мере, подтвердит, что каталог правильно включен в мое приложение. Кстати, оба языка (FR / EN) перечислены в основном Infos.plist проекта.
Я также обязательно добавил 2 поддерживаемых языка в Infos.plist моей цели View:
Код: Выделить всё
CFBundleLocalizations
en
fr
Наконец, если я распечатаю предпочитаемый язык моего устройства:
Код: Выделить всё
print(Locale.preferredLanguages)
И вот оно. Я не знаю, как это исправить. Я делаю что-то не так?
Подробнее здесь: https://stackoverflow.com/questions/798 ... use-correc
Мобильная версия