Локализованное название панели навигации SwiftUI не изменилось

#swift #swiftui #navigationbar

#быстрый #свифтуи #панель навигации

Вопрос:

Я столкнулся с проблемой с локализованным названием панели навигации.

Когда я изменяю объект среды локали, заголовок панели навигации некорневого представления стека навигации не изменится. Пожалуйста, смотрите изображения ниже, Service это корневой вид стека навигации, Card Maker это второй вид.

en место действия

введите описание изображения здесь

jp место действия

введите описание изображения здесь

Код, который я пробовал

Services Вид

 NavigationView {  VStack {  NavigationLink {  CardsMakerView()  } label: {  Text("Open Cards")  }  }  .navigationTitle("Services")  .navigationBarTitleDisplayMode(.inline)  } .environment(.locale, viewModel.language)  

Card Maker Вид

 ScrollView { // ... } .navigationTitle("Card Maker") .navigationBarTitleDisplayMode(.inline)  

С ServiceView заголовком панели навигации проблем нет. Спасибо за вашу помощь.

Комментарии:

1. Попробуйте поместить .navigationTitle("Services") и другие NavigationView соответствующие модификаторы *внутрь*(!) NavigationView .

2. вы могли бы попробовать использовать: .navigationTitle(LocalizedStringKey("Card Maker"))

3. спасибо @Asperi @workingdog, я отредактировал свой вопрос и тоже попробовал, LocalizedStringKey но безуспешно. Строки «Производитель карт» и «Сервисы» уже существуют в моих локализуемых строках.для обоих языков.

4. Вы можете попробовать: 1.. navigationBarTitle(Текст(NSLocalizedString(«Создатель карт», комментарий: «Создатель карт»))) (обычно работает) 2. используйте «стиль ключа» (что это значит — в вашем «Локализуемом» используйте один ключ для строк, в вашем случае «Создатель карт» = «Создатель карт»; и для другого языка «создатель карт» = «»;). Следовательно, в вызове вы используете что-то вроде «Текст(«card_maker»)»

5. @ViktorGolubenkov, спасибо за комментарий. Я использую первый язык в качестве ключевого. Проблема не в загрузке локализованной строки. Просто предположим, что модификация swiftui .environment(.locale все еще не работает мгновенно со вторым представлением в стеке навигации.