Added the "navigationTitle" property to the ContentViewModel view model in the Sample app target to update the navigation title to show the selected locale.

This commit is contained in:
2026-07-07 00:59:40 +02:00
parent d27e5fb38f
commit 3dc5b2b7fc
4 changed files with 43 additions and 3 deletions
+2 -2
View File
@@ -62,13 +62,13 @@
}
},
"view.recording.navigation.title" : {
"comment" : "The title of the navigation bar in the recording view.",
"comment" : "The title of the navigation bar in the recording view. %@ is the name of the selected locale — its language name followed by the region flag, e.g. \"English 🇺🇸\".",
"extractionState" : "manual",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Recording"
"value" : "Transcribe to %@"
}
}
}
@@ -97,6 +97,14 @@ extension ContentView {
self.reporter = reporter
self.transcriber = transcriber
}
// MARK: Computed
/// The navigation title of ``ContentView``: the localized "Transcribe to " filled with the name of the selected ``locale``, so
/// the title updates on every locale change.
var navigationTitle: LocalizedStringResource {
.viewRecordingNavigationTitle(name(for: locale))
}
// MARK: Methods
+1 -1
View File
@@ -62,7 +62,7 @@ struct ContentView: View {
maxWidth: .infinity,
maxHeight: .infinity
)
.navigationTitle(.viewRecordingNavigationTitle)
.navigationTitle(model.navigationTitle)
#if !os(macOS)
.navigationBarTitleDisplayMode(.inline)
#endif
@@ -256,6 +256,38 @@ struct ContentViewModelTests {
}
// MARK: Navigation Title
@MainActor
@Suite("Navigation title")
struct NavigationTitle {
@Test
func `navigation title names the selected locale`() {
let model = Model(preinstaller: PreinstallingMock())
model.locale = .english
#expect(String(localized: model.navigationTitle) == "Transcribe to \(model.name(for: .english))")
}
@Test
func `navigation title updates when the locale changes`() {
let model = Model(preinstaller: PreinstallingMock())
model.locale = .english
let english = String(localized: model.navigationTitle)
model.locale = .dutch
let dutch = String(localized: model.navigationTitle)
#expect(english == "Transcribe to \(model.name(for: .english))")
#expect(dutch == "Transcribe to \(model.name(for: .dutch))")
#expect(english != dutch)
}
}
}
// MARK: - Constants