У меня есть следующий код в SwiftUI, и я хочу перевести ярлык доступности с английского на польский:
Text("Example")
.accessibilityLabel("Color: \(color.description)")
И у меня есть такие переводы в файле Localizable.strings:
/* Color: color.description */
"Color: %@" = "Kolor: %@";
/* Color */
"blue" = "niebieski";
Я проверил это с помощью VoiceOver, и он гласит: "Цвет: синий" Но следует читать: "Цвет: небески"
Это означает, что color.description («синий» в моем случае) не был переведен на «niebieski». Это почему? Что я делаю не так?





Вы должны использовать NSLocalizedString для локализации вашей строки.
Итак, в вашем случае вы должны использовать
Text("Example")
.accessibilityLabel(String(format: NSLocalizedString("Color: %@", comment: ""),
color.description))
@mallow Я думаю, вам все еще нужно локализовать color.description и получить локализованное значение.
Но у меня есть перевод цвета в файле Localizable.strings. Или мне нужно что-то еще?
Я исправил :) Это довольно просто.
Вот рабочий код:
Text("Example")
.accessibilityLabel("Color")
.accessibilityValue(LocalizedStringKey(Color.blue.description))
И если значение цвета из переменной (как в исходном вопросе), оно будет:
Text("Example")
.accessibilityLabel("Color")
.accessibilityValue(LocalizedStringKey(color.description))
Важно использовать локализованная строка (значение:). И я разделил accessibilityLabel на отдельные accessibilityLabel и accessibilityValue.
Спасибо, я только что проверил, но он не работает и по-прежнему читает «Цвет: синий». По-прежнему не используется перевод цвета, который я предоставил в файле Localizable.strings:/