add chinese subtitles
This commit is contained in:
@@ -7,6 +7,8 @@ struct PlayerSectionView: View {
|
||||
@Binding var continuousPlayback: Bool
|
||||
var showsSubtitle: Binding<Bool>? = .constant(true)
|
||||
var showsLessonTitle: Bool = true
|
||||
var showChineseSubtitles: Binding<Bool>? = nil
|
||||
var chineseSubtitlePlaceholder: String = "正在翻译中文字幕…"
|
||||
var onFullscreen: () -> Void
|
||||
|
||||
@State private var progressDragging = false
|
||||
@@ -93,14 +95,34 @@ struct PlayerSectionView: View {
|
||||
}
|
||||
.padding(.vertical, 2)
|
||||
}
|
||||
if let showChineseSubtitles = showChineseSubtitles {
|
||||
HStack(spacing: 0) {
|
||||
Text("中文字幕")
|
||||
.font(.system(size: 13, weight: .bold))
|
||||
.foregroundColor(Theme.textSubtle)
|
||||
Spacer()
|
||||
Toggle("", isOn: showChineseSubtitles)
|
||||
.labelsHidden()
|
||||
.tint(Theme.accent)
|
||||
}
|
||||
.padding(.vertical, 2)
|
||||
}
|
||||
Text(sentenceMetaText)
|
||||
.font(.system(size: 13))
|
||||
.foregroundColor(Theme.textSubtle)
|
||||
HStack(alignment: .center, spacing: 8) {
|
||||
Text(sentenceTextText)
|
||||
.font(.system(size: 15))
|
||||
.foregroundColor(.white)
|
||||
.lineLimit(4)
|
||||
VStack(alignment: .leading, spacing: 4) {
|
||||
Text(sentenceTextText)
|
||||
.font(.system(size: 15))
|
||||
.foregroundColor(.white)
|
||||
.lineLimit(4)
|
||||
if let chineseSubtitleText = chineseSubtitleText {
|
||||
Text(chineseSubtitleText)
|
||||
.font(.system(size: 14))
|
||||
.foregroundColor(Theme.textMuted)
|
||||
.lineLimit(4)
|
||||
}
|
||||
}
|
||||
Spacer()
|
||||
Button {
|
||||
guard let sentence = controller.currentSentence, !(sentence.text ?? "").isEmpty else {
|
||||
@@ -205,6 +227,20 @@ struct PlayerSectionView: View {
|
||||
}
|
||||
}
|
||||
|
||||
private var chineseSubtitleText: String? {
|
||||
guard showChineseSubtitles?.wrappedValue == true else {
|
||||
return nil
|
||||
}
|
||||
if let zh = controller.currentSentence?.zhText?.trimmingCharacters(in: .whitespacesAndNewlines),
|
||||
!zh.isEmpty {
|
||||
return zh
|
||||
}
|
||||
if (controller.currentSentence?.text ?? "").trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
|
||||
return nil
|
||||
}
|
||||
return chineseSubtitlePlaceholder
|
||||
}
|
||||
|
||||
private var statusText: String {
|
||||
if let message = controller.cacheState.statusMessage {
|
||||
return message
|
||||
|
||||
Reference in New Issue
Block a user