Как отмечалось в нескольких сеансах WWDC19, представляющих его, SwiftUI пытается обработать для вас по умолчанию целую кучу хороших платформ-граждан, которые конечные пользователи учитывают базовые требования приложения, но которые, как правило, усложняют работу.для разработчиков.
Локализация - одна из таких вещей - Text
инициализаторы автоматически делают правильные вещи.Примеры:
Text(“Some Text”)
обрабатывает строковый литерал как локализованный, потому что статически определенный текст почти всегда предназначен для текста пользовательского интерфейса. - То же самое для
Text(“\(items.count) items”)
, который корректно локализует строку формата и вставляет интерполированное значение. Text(item.name)
динамически передает различные строки во время выполнения, поэтому текст почти наверняка является «содержимым», которое остается неизменным независимо от языкового стандарта (потому что это от пользователя, извне программы и т. Д.).
Это означает, что в 99% случаев вы можете просто делать самые естественные и лаконичные звонки, чтобы настроить свой пользовательский интерфейс, и в конечном итоге получить приложение, которое готово к локализации, без необходимости возвращаться и менять группукода, как вы делаете с другими структурами пользовательского интерфейса.
И если в вашем приложении биты не соответствуют этим предположениям, Text(verbatim:)
и Text(_:tableName:bundle:comment:)
позволяют создавать статический текст, который не является локализованным, и программный текст, который локализуется.