From f74a2dacf2009e75cf6a604a19e1986757153761 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 30 Dec 2024 11:28:52 -0500 Subject: [PATCH 1/7] Update Slovak --- BookPlayer/sk-SK.lproj/Localizable.strings | 14 +++++++------- BookPlayerWatch/sk-SK.lproj/Localizable.strings | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/BookPlayer/sk-SK.lproj/Localizable.strings b/BookPlayer/sk-SK.lproj/Localizable.strings index 1e5fb7af..24ab2484 100644 --- a/BookPlayer/sk-SK.lproj/Localizable.strings +++ b/BookPlayer/sk-SK.lproj/Localizable.strings @@ -299,7 +299,7 @@ Usilovne pracujeme na poskytovaní bezproblémového zážitku, ak je to možné "intent_sleeptimer_eoc_title" = "Nastavenie časovača spánku na koniec kapitoly"; "intent_lastbook_play_title" = "Obnovenie poslednej prehrávanej knihy"; "intent_lastbook_empty_error" = "Žiadna naposledy prehrávaná kniha"; -"intent_playback_pause_title" = "Pozastavenie prehrávanie"; +"intent_playback_pause_title" = "Pozastavenie prehrávania"; "storage_artwork_cache_title" = "Veľkosť vyrovnávacej pamäte obalov kníh"; "settings_share_debug_information" = "Zdieľať informácie o ladení"; "settings_autlock_section_title" = "Automatické uzamknutie"; @@ -329,16 +329,16 @@ Usilovne pracujeme na poskytovaní bezproblémového zážitku, ak je to možné "jellyfin_section_server_url" = "Adresa URL servera"; "jellyfin_section_server_url_footer" = "Pripojte sa k serveru Jellyfin"; "jellyfin_section_server" = "Server"; -"jellyfin_server_name_label" = "Meno"; +"jellyfin_server_name_label" = "Názov"; "jellyfin_server_url_label" = "URL"; -"jellyfin_section_login" = "Prihláste sa"; +"jellyfin_section_login" = "Prihlásenie"; "jellyfin_username_placeholder" = "Používateľské meno"; -"jellyfin_password_placeholder" = "heslo"; -"jellyfin_password_remember_me_label" = "Pamätaj na mňa"; +"jellyfin_password_placeholder" = "Heslo"; +"jellyfin_password_remember_me_label" = "Zapamätať si mňa"; "settings_jellyfin_manage_connection_title" = "Spravovať pripojenie"; -"jellyfin_internal_error_invalid_url" = "Interná chyba: Adresa URL požiadavky je neplatná: %@"; +"jellyfin_internal_error_invalid_url" = "Interná chyba: URL požiadavky je neplatná: %@"; "jellyfin_internal_error_build_url" = "Interná chyba: Nepodarilo sa vytvoriť adresu URL požiadavky"; -"jellyfin_internal_error_no_client" = "Nie je možné kontaktovať server Jellyfin. Skontrolujte poskytnutú adresu URL servera."; +"jellyfin_internal_error_no_client" = "Nie je možné kontaktovať server Jellyfin. Skontrolujte poskytnutú adresu URL."; "jellyfin_error_unexpected_response" = "Neočakávaná odpoveď servera"; "jellyfin_error_unexpected_response_with_code" = "Neočakávaná odpoveď servera (kód: %d – %@ )"; "jellyfin_error_unauthorized" = "Prihlásenie zlyhalo. Skontrolujte svoje používateľské meno a heslo."; diff --git a/BookPlayerWatch/sk-SK.lproj/Localizable.strings b/BookPlayerWatch/sk-SK.lproj/Localizable.strings index e2cdece6..bfa9b168 100644 --- a/BookPlayerWatch/sk-SK.lproj/Localizable.strings +++ b/BookPlayerWatch/sk-SK.lproj/Localizable.strings @@ -16,7 +16,7 @@ "watchapp_connect_error_title" = "Chyba pripojenia"; "watchapp_connect_error_description" = "Pri pripojení k telefónu došlo k problémom, vyskúšajte to prosím neskôr"; "chapters_title" = "Kapitoly"; -"settings_controls_title" = "Ovládacie prvky Prehrávača"; +"settings_controls_title" = "Ovládanie Prehrávača"; "settings_boostvolume_title" = "Zvýšenie hlasitosti"; "settings_skip_title" = "PRETÁČANIE"; "settings_skip_rewind_title" = "Dozadu"; From 33d7494ac5051e1e5aeabb900ca8f5ef9668cd10 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 30 Dec 2024 12:31:31 -0500 Subject: [PATCH 2/7] Fix speed title translation --- BookPlayerWatch/PlaybackFullControlsView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BookPlayerWatch/PlaybackFullControlsView.swift b/BookPlayerWatch/PlaybackFullControlsView.swift index 3bfa946d..f5de72d7 100644 --- a/BookPlayerWatch/PlaybackFullControlsView.swift +++ b/BookPlayerWatch/PlaybackFullControlsView.swift @@ -18,7 +18,7 @@ struct PlaybackFullControlsView: View { var body: some View { GeometryReader { metrics in List { - Section("speed".localized.uppercased()) { + Section("speed_title".localized.uppercased()) { VStack { HStack { Spacer() From b7b5e4fe75857ac3801c27be467c2c9971b77772 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 2 Jan 2025 12:33:10 -0500 Subject: [PATCH 3/7] polish VO navigation --- BookPlayerWatch/RefreshableListView.swift | 11 +++++++++-- .../RemoteItemList/RemoteItemListView.swift | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/BookPlayerWatch/RefreshableListView.swift b/BookPlayerWatch/RefreshableListView.swift index 1a3ba672..85ecd34f 100644 --- a/BookPlayerWatch/RefreshableListView.swift +++ b/BookPlayerWatch/RefreshableListView.swift @@ -29,7 +29,7 @@ struct RefreshableListView: View { List { Section { if refreshing { - ProgressView() + ProgressView().id(UUID()) .tint(.white) .frame(height: 10) .listRowBackground(Color.clear) @@ -44,6 +44,11 @@ struct RefreshableListView: View { } } .listRowBackground(Color.clear) + .accessibilityRemoveTraits(.isImage) + .accessibilityLabel("watchapp_refresh_data_title".localized) + .accessibilityAction { + self.refreshing = true + } } } content @@ -52,7 +57,9 @@ struct RefreshableListView: View { .environment(\.defaultMinListRowHeight, 1) .background(FixedView()) .onPreferenceChange(RefreshableKeyTypes.PrefKey.self) { values in - refreshLogic(values: values) + Task { @MainActor in + refreshLogic(values: values) + } } } diff --git a/BookPlayerWatch/RemoteItemList/RemoteItemListView.swift b/BookPlayerWatch/RemoteItemList/RemoteItemListView.swift index c8e0c9f9..b974fc90 100644 --- a/BookPlayerWatch/RemoteItemList/RemoteItemListView.swift +++ b/BookPlayerWatch/RemoteItemList/RemoteItemListView.swift @@ -234,6 +234,7 @@ struct RemoteItemListView: View { } header: { Text("") } + .accessibilityHidden(true) } .ignoresSafeArea(edges: [.bottom]) .background( From 4ab21655e29d4c5fddb013b52de587a29d92c404 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 2 Jan 2025 21:41:16 -0500 Subject: [PATCH 4/7] Fix UI for Login view in Watch app --- BookPlayerWatch/Settings/Login/LoginView.swift | 14 ++++++++++++-- BookPlayerWatch/Settings/SettingsView.swift | 1 - 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/BookPlayerWatch/Settings/Login/LoginView.swift b/BookPlayerWatch/Settings/Login/LoginView.swift index c03ea171..0a277fc5 100644 --- a/BookPlayerWatch/Settings/Login/LoginView.swift +++ b/BookPlayerWatch/Settings/Login/LoginView.swift @@ -15,14 +15,20 @@ struct LoginView: View { @Binding var account: Account? @State private var isLoading = false @State private var error: Error? - + var body: some View { - VStack(spacing: Spacing.S1) { + List { Text("BookPlayer Pro") .font(Font(Fonts.titleLarge)) + .frame(maxWidth: .infinity) + .multilineTextAlignment(.center) + .listRowBackground(Color.clear) Text("benefits_watchapp_description".localized) .font(Font(Fonts.body)) .multilineTextAlignment(.center) + .listRowBackground(Color.clear) + Spacer(minLength: Spacing.S2) + .listRowBackground(Color.clear) SignInWithAppleButton(.signIn) { request in request.requestedScopes = [.email] } onCompletion: { result in @@ -58,7 +64,11 @@ struct LoginView: View { } } .frame(maxHeight: 45) + .listRowBackground(Color.clear) + Spacer(minLength: Spacing.M) + .listRowBackground(Color.clear) } + .environment(\.defaultMinListRowHeight, 1) .errorAlert(error: $error) .overlay { Group { diff --git a/BookPlayerWatch/Settings/SettingsView.swift b/BookPlayerWatch/Settings/SettingsView.swift index b7eb3c5b..0cdd6e23 100644 --- a/BookPlayerWatch/Settings/SettingsView.swift +++ b/BookPlayerWatch/Settings/SettingsView.swift @@ -24,7 +24,6 @@ struct SettingsView: View { ProfileView(account: $account) } else { LoginView(account: $account) - .fixedSize(horizontal: false, vertical: true) } } .padding(.horizontal, Spacing.S3) From 4acc2831ab8139bc0dd057471dcfed06d3e6cb4a Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 2 Jan 2025 21:42:46 -0500 Subject: [PATCH 5/7] Add global speed control --- BookPlayerWatch/PlaybackFullControlsView.swift | 9 +++++++++ BookPlayerWatch/PlayerToolbarView.swift | 12 ++++++++++++ 2 files changed, 21 insertions(+) diff --git a/BookPlayerWatch/PlaybackFullControlsView.swift b/BookPlayerWatch/PlaybackFullControlsView.swift index f5de72d7..ab456696 100644 --- a/BookPlayerWatch/PlaybackFullControlsView.swift +++ b/BookPlayerWatch/PlaybackFullControlsView.swift @@ -59,6 +59,15 @@ struct PlaybackFullControlsView: View { .listRowBackground(Color.clear) Section { + Toggle( + "settings_globalspeed_title", + isOn: .init( + get: { model.globalSpeed }, + set: { _ in + model.handleGlobalSpeedToggle() + } + ) + ) Toggle( "settings_boostvolume_title", isOn: .init( diff --git a/BookPlayerWatch/PlayerToolbarView.swift b/BookPlayerWatch/PlayerToolbarView.swift index 7f5e1f6c..383a3a89 100644 --- a/BookPlayerWatch/PlayerToolbarView.swift +++ b/BookPlayerWatch/PlayerToolbarView.swift @@ -19,6 +19,10 @@ final class PlaybackFullControlsViewModel: ObservableObject { var boostVolume: Bool { UserDefaults.standard.bool(forKey: Constants.UserDefaults.boostVolumeEnabled) } + + var globalSpeed: Bool { + UserDefaults.standard.bool(forKey: Constants.UserDefaults.globalSpeedEnabled) + } init(playerManager: PlayerManager) { self.playerManager = playerManager @@ -30,6 +34,11 @@ final class PlaybackFullControlsViewModel: ObservableObject { self.playerManager.setBoostVolume(flag) } + + func handleGlobalSpeedToggle() { + let flag = !globalSpeed + UserDefaults.standard.set(flag, forKey: Constants.UserDefaults.globalSpeedEnabled) + } func handleNewSpeed(_ rate: Float) { let roundedValue = round(rate * 100) / 100.0 @@ -67,6 +76,7 @@ struct PlayerToolbarView: View { destination: PlaybackFullControlsView(model: PlaybackFullControlsViewModel(playerManager: playerManager)) ) { ResizeableImageView(name: "dial.max") + .accessibilityLabel("settings_controls_title".localized) .padding(11) } .buttonStyle(PlainButtonStyle()) @@ -74,6 +84,7 @@ struct PlayerToolbarView: View { Spacer() VolumeView(type: .local) + .accessibilityHidden(true) Spacer() @@ -81,6 +92,7 @@ struct PlayerToolbarView: View { isShowingMoreList = true } label: { ResizeableImageView(name: "list.bullet") + .accessibilityLabel("chapters_title".localized) .padding(14) } .buttonStyle(PlainButtonStyle()) From ba34d89063e2c27aa1c9596ff1f526b36ab5fea8 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 2 Jan 2025 21:43:33 -0500 Subject: [PATCH 6/7] Update VoiceOver translations --- BookPlayer.xcodeproj/project.pbxproj | 64 ++----------------- BookPlayer/Base.lproj/Localizable.strings | 2 + BookPlayer/Services/VoiceOverService.swift | 6 +- BookPlayer/ar.lproj/Localizable.strings | 2 + BookPlayer/cs.lproj/Localizable.strings | 2 + BookPlayer/da.lproj/Localizable.strings | 2 + BookPlayer/de.lproj/Localizable.strings | 2 + BookPlayer/el.lproj/Localizable.strings | 2 + BookPlayer/en.lproj/Localizable.strings | 2 + BookPlayer/es.lproj/Localizable.strings | 2 + BookPlayer/fi.lproj/Localizable.strings | 2 + BookPlayer/fr.lproj/Localizable.strings | 2 + BookPlayer/hu.lproj/Localizable.strings | 2 + BookPlayer/it.lproj/Localizable.strings | 2 + BookPlayer/ja.lproj/Localizable.strings | 2 + BookPlayer/nb.lproj/Localizable.strings | 2 + BookPlayer/nl.lproj/Localizable.strings | 2 + BookPlayer/pl.lproj/Localizable.strings | 2 + BookPlayer/pt-BR.lproj/Localizable.strings | 2 + BookPlayer/pt-PT.lproj/Localizable.strings | 2 + BookPlayer/ro.lproj/Localizable.strings | 2 + BookPlayer/ru.lproj/Localizable.strings | 2 + BookPlayer/sk-SK.lproj/Localizable.strings | 2 + BookPlayer/sv.lproj/Localizable.strings | 2 + BookPlayer/tr.lproj/Localizable.strings | 2 + BookPlayer/uk.lproj/Localizable.strings | 2 + BookPlayer/zh-Hans.lproj/Localizable.strings | 2 + .../Base.lproj/Localizable.strings | 29 --------- .../Views/NowPlayingTitleView.swift | 5 ++ BookPlayerWatch/PlayerControlsView.swift | 2 + .../RemoteItemListCellView.swift | 12 ++++ BookPlayerWatch/RemotePlayerView.swift | 5 +- BookPlayerWatch/RootView.swift | 1 + BookPlayerWatch/ar.lproj/Localizable.strings | 29 --------- BookPlayerWatch/cs.lproj/Localizable.strings | 29 --------- BookPlayerWatch/da.lproj/Localizable.strings | 29 --------- BookPlayerWatch/de.lproj/Localizable.strings | 29 --------- BookPlayerWatch/el.lproj/Localizable.strings | 29 --------- BookPlayerWatch/en.lproj/Localizable.strings | 29 --------- BookPlayerWatch/es.lproj/Localizable.strings | 29 --------- BookPlayerWatch/fi.lproj/Localizable.strings | 29 --------- BookPlayerWatch/fr.lproj/Localizable.strings | 29 --------- BookPlayerWatch/hu.lproj/Localizable.strings | 29 --------- BookPlayerWatch/it.lproj/Localizable.strings | 29 --------- BookPlayerWatch/ja.lproj/Localizable.strings | 29 --------- BookPlayerWatch/nb.lproj/Localizable.strings | 29 --------- BookPlayerWatch/nl.lproj/Localizable.strings | 29 --------- BookPlayerWatch/pl.lproj/Localizable.strings | 29 --------- .../pt-BR.lproj/Localizable.strings | 29 --------- .../pt-PT.lproj/Localizable.strings | 29 --------- BookPlayerWatch/ro.lproj/Localizable.strings | 29 --------- BookPlayerWatch/ru.lproj/Localizable.strings | 29 --------- .../sk-SK.lproj/Localizable.strings | 29 --------- BookPlayerWatch/sv.lproj/Localizable.strings | 29 --------- BookPlayerWatch/tr.lproj/Localizable.strings | 29 --------- BookPlayerWatch/uk.lproj/Localizable.strings | 29 --------- .../zh-Hans.lproj/Localizable.strings | 29 --------- 57 files changed, 83 insertions(+), 787 deletions(-) delete mode 100644 BookPlayerWatch/Base.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/ar.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/cs.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/da.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/de.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/el.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/en.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/es.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/fi.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/fr.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/hu.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/it.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/ja.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/nb.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/nl.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/pl.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/pt-BR.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/pt-PT.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/ro.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/ru.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/sk-SK.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/sv.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/tr.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/uk.lproj/Localizable.strings delete mode 100644 BookPlayerWatch/zh-Hans.lproj/Localizable.strings diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index fced9235..8f75689d 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -279,6 +279,8 @@ 41F1A20D254B0A0C0043FCF3 /* Sentry in Frameworks */ = {isa = PBXBuildFile; productRef = 41F1A20C254B0A0C0043FCF3 /* Sentry */; }; 41F1A228254B0C6C0043FCF3 /* ZipArchive in Frameworks */ = {isa = PBXBuildFile; productRef = 41F1A227254B0C6C0043FCF3 /* ZipArchive */; }; 4645F9FD2D1E46AC00A04257 /* SwipeInlineTip.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4645F9FC2D1E46AC00A04257 /* SwipeInlineTip.swift */; }; + 4689C06D2D270A7100D6C169 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 419B375423B8D5A500128A8F /* Localizable.strings */; }; + 46EEDDC92D23154C0063811F /* VoiceOverService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69343D322133844D000C425E /* VoiceOverService.swift */; }; 5126F121258E9F18009965DC /* URL+BookPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5126F120258E9F18009965DC /* URL+BookPlayer.swift */; }; 5126F122258E9F18009965DC /* URL+BookPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5126F120258E9F18009965DC /* URL+BookPlayer.swift */; }; 5126F123258E9F18009965DC /* URL+BookPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5126F120258E9F18009965DC /* URL+BookPlayer.swift */; }; @@ -328,7 +330,6 @@ 6309F1262B0CF1C1002B86A4 /* BookPlaybackToggleIntent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6309F1252B0CF1C1002B86A4 /* BookPlaybackToggleIntent.swift */; }; 6309F1272B0CF658002B86A4 /* BookPlaybackToggleIntent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6309F1252B0CF1C1002B86A4 /* BookPlaybackToggleIntent.swift */; }; 630EC82F2CEF9F0700C19411 /* ForcedEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 630EC82E2CEF9F0700C19411 /* ForcedEnvironment.swift */; }; - 630F115E2AE7EEBA000A997A /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 419B375B23B8D6DB00128A8F /* Localizable.strings */; }; 630F115F2AE7EECA000A997A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4140EA34227288EF0009F794 /* Assets.xcassets */; }; 63125D0E2C36D84E00D35533 /* EventsAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63125D0D2C36D84E00D35533 /* EventsAPI.swift */; }; 63125D0F2C36D84E00D35533 /* EventsAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63125D0D2C36D84E00D35533 /* EventsAPI.swift */; }; @@ -860,7 +861,6 @@ 410D0FF01EDF659900A52EB9 /* PlayerManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PlayerManager.swift; sourceTree = ""; }; 4111FBB025EDD81C0096954F /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = hu; path = hu.lproj/Localizable.stringsdict; sourceTree = ""; }; 4111FBB125EDD81C0096954F /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Localizable.strings; sourceTree = ""; }; - 4111FBB225EDD81C0096954F /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Localizable.strings; sourceTree = ""; }; 4111FBDD25EDEFBD0096954F /* forest-green-ipad@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "forest-green-ipad@2x.png"; sourceTree = ""; }; 4111FBDE25EDEFBD0096954F /* forest-green-ipad@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "forest-green-ipad@3x.png"; sourceTree = ""; }; 4111FBE825EDEFDD0096954F /* forest-green@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "forest-green@3x.png"; sourceTree = ""; }; @@ -890,7 +890,6 @@ 41342D0B24435EF800F0905B /* SleepTimerHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SleepTimerHandler.swift; sourceTree = ""; }; 4136175B24019EE700D2DDC1 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Localizable.strings; sourceTree = ""; }; 4136175C24019EEB00D2DDC1 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = sv; path = sv.lproj/Localizable.stringsdict; sourceTree = ""; }; - 4136175D24019EF000D2DDC1 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Localizable.strings; sourceTree = ""; }; 4137BBCB272DAF2E009ED9FE /* MVVMControllerProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MVVMControllerProtocol.swift; sourceTree = ""; }; 4137BBCD272DBB16009ED9FE /* SettingsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewModel.swift; sourceTree = ""; }; 4137BBCF272DEBEC009ED9FE /* LoadingCoordinatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadingCoordinatorTests.swift; sourceTree = ""; }; @@ -946,7 +945,6 @@ 4160A0A023F304530039166B /* LocalizableLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalizableLabel.swift; sourceTree = ""; }; 4161D495245660B800D1C01B /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ro; path = ro.lproj/Localizable.stringsdict; sourceTree = ""; }; 4161D496245660B800D1C01B /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/Localizable.strings; sourceTree = ""; }; - 4161D497245660B900D1C01B /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/Localizable.strings; sourceTree = ""; }; 4163E3102148606600072AA2 /* ImportFileItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportFileItem.swift; sourceTree = ""; }; 4163E312214AC43000072AA2 /* ImportOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportOperationTests.swift; sourceTree = ""; }; 4163E314214ACB4300072AA2 /* DataTestUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataTestUtils.swift; sourceTree = ""; }; @@ -959,7 +957,6 @@ 416A297C2568671F00605395 /* AVPlayer+BookPlayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AVPlayer+BookPlayer.swift"; sourceTree = ""; }; 416A298A256875B300605395 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "pt-BR"; path = "pt-BR.lproj/Localizable.stringsdict"; sourceTree = ""; }; 416A298B256875B300605395 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Localizable.strings"; sourceTree = ""; }; - 416A298C256875B300605395 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Localizable.strings"; sourceTree = ""; }; 416A29A32569658100605395 /* BookPlayerWidgetsPhone.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = BookPlayerWidgetsPhone.appex; sourceTree = BUILT_PRODUCTS_DIR; }; 416A29A42569658100605395 /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; }; 416A29A62569658100605395 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; }; @@ -970,30 +967,24 @@ 416A9D4A2743D51E00463621 /* StorageViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StorageViewModelTests.swift; sourceTree = ""; }; 416AAC2F23F44A88005AD04F /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = cs; path = cs.lproj/Localizable.stringsdict; sourceTree = ""; }; 416AAC3023F44A88005AD04F /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = ""; }; - 416AAC3123F44A88005AD04F /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = ""; }; 416AAC3223F51031005AD04F /* LocalizableButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalizableButton.swift; sourceTree = ""; }; 416B63A72146354B007D04B1 /* ImportManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportManager.swift; sourceTree = ""; }; 416B640C1E72F362000E955A /* Notification+BookPlayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Notification+BookPlayer.swift"; sourceTree = ""; }; 416BF8A526537A4C00239166 /* BookPlayer-NoCarPlay.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "BookPlayer-NoCarPlay.entitlements"; sourceTree = ""; }; 416E40F32404BD5C006FA2EF /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.stringsdict"; sourceTree = ""; }; 416E40F42404BD5C006FA2EF /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = ""; }; - 416E40F52404BD5C006FA2EF /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = ""; }; 4172CB662495BFBA00AD4A55 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = it; path = it.lproj/Localizable.stringsdict; sourceTree = ""; }; 4172CB672495BFBA00AD4A55 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = ""; }; - 4172CB682495BFBA00AD4A55 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = ""; }; 4172CB692495C00F00AD4A55 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = tr; path = tr.lproj/Localizable.stringsdict; sourceTree = ""; }; 4172CB6A2495C00F00AD4A55 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Localizable.strings; sourceTree = ""; }; - 4172CB6B2495C00F00AD4A55 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Localizable.strings; sourceTree = ""; }; 4172CB6C2495C09300AD4A55 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = uk; path = uk.lproj/Localizable.stringsdict; sourceTree = ""; }; 4172CB6D2495C09300AD4A55 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Localizable.strings; sourceTree = ""; }; - 4172CB6E2495C09300AD4A55 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Localizable.strings; sourceTree = ""; }; 4175E1232206CF9600FB7B71 /* DataManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataManager.swift; sourceTree = ""; }; 4175E14422080C7700FB7B71 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; }; 417D9993256DE3FB00C3B753 /* LastPlayedWidgetView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LastPlayedWidgetView.swift; sourceTree = ""; }; 418445C2258AE11E0072DD13 /* WidgetUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetUtils.swift; sourceTree = ""; }; 418A2B692419E5BD0001AEDB /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; }; 418A2B6A2419EBA70001AEDB /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ru; path = ru.lproj/Localizable.stringsdict; sourceTree = ""; }; - 418A2B6B2419EE060001AEDB /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; }; 418B6CF81D2707F800F974FB /* BookPlayer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BookPlayer.app; sourceTree = BUILT_PRODUCTS_DIR; }; 418B6CFB1D2707F800F974FB /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 418B6D021D2707F800F974FB /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; @@ -1009,7 +1000,6 @@ 4193E201243A91AE004D6A82 /* ActionParserService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionParserService.swift; sourceTree = ""; }; 4193E203243A98AB004D6A82 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = fr; path = fr.lproj/Localizable.stringsdict; sourceTree = ""; }; 4193E204243A98AB004D6A82 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; }; - 4193E205243A98AB004D6A82 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; }; 41964C822220B4F700FF1A2F /* ContributorCellView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContributorCellView.swift; sourceTree = ""; }; 419723FF21874D5F00AB1190 /* UserActivityManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserActivityManager.swift; sourceTree = ""; }; 4197FAFB267E480100811CC8 /* ImportViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportViewController.swift; sourceTree = ""; }; @@ -1018,12 +1008,8 @@ 419B374323B8D18000128A8F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/PlusBannerView.xib; sourceTree = ""; }; 419B375523B8D5A500128A8F /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.strings; sourceTree = ""; }; 419B375723B8D5B000128A8F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; - 419B375C23B8D6DB00128A8F /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.strings; sourceTree = ""; }; - 419B375F23B8D6E200128A8F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; 419B377423B92CC100128A8F /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; }; - 419B377523B92CC100128A8F /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; }; 419B379523B92E1600128A8F /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = ""; }; - 419B379623B92E1600128A8F /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = ""; }; 41A1B0D2226E9BC400EA0400 /* BookPlayerKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = BookPlayerKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 41A1B0D4226E9BC400EA0400 /* BookPlayerKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BookPlayerKit.h; sourceTree = ""; }; 41A1B0D5226E9BC400EA0400 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -1045,7 +1031,6 @@ 41A6AFA926FB666700A69E6B /* SettingsCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsCoordinator.swift; sourceTree = ""; }; 41A7DE7824BC136100396FD3 /* sk-SK */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "sk-SK"; path = "sk-SK.lproj/Localizable.stringsdict"; sourceTree = ""; }; 41A7DE7924BC136200396FD3 /* sk-SK */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "sk-SK"; path = "sk-SK.lproj/Localizable.strings"; sourceTree = ""; }; - 41A7DE7A24BC136200396FD3 /* sk-SK */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "sk-SK"; path = "sk-SK.lproj/Localizable.strings"; sourceTree = ""; }; 41A8941F2652A5DE0032E972 /* Configuration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Configuration.swift; sourceTree = ""; }; 41A894292652A7DF0032E972 /* Bundle+BookPlayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Bundle+BookPlayer.swift"; sourceTree = ""; }; 41A8BAFD227E6C88003C9895 /* Notification+BookPlayerWatchApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Notification+BookPlayerWatchApp.swift"; sourceTree = ""; }; @@ -1115,10 +1100,8 @@ 41E563032239570100C06BC9 /* retro-icon-ipad@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "retro-icon-ipad@2x.png"; sourceTree = ""; }; 41E69F4A25A7CC1100C26920 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = pl; path = pl.lproj/Localizable.stringsdict; sourceTree = ""; }; 41E69F4B25A7CC1100C26920 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Localizable.strings; sourceTree = ""; }; - 41E69F4C25A7CC1100C26920 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Localizable.strings; sourceTree = ""; }; 41E73EFA241D2EFC00D2C1D7 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = da; path = da.lproj/Localizable.stringsdict; sourceTree = ""; }; 41E73EFB241D2EFC00D2C1D7 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Localizable.strings; sourceTree = ""; }; - 41E73EFC241D2EFC00D2C1D7 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Localizable.strings; sourceTree = ""; }; 41E79BE826C60BF600EA9FFF /* PlayerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerViewController.swift; sourceTree = ""; }; 41E79BEA26C60DC600EA9FFF /* PlayerViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerViewModel.swift; sourceTree = ""; }; 41E79BEC26C61D2B00EA9FFF /* PlayPauseIconView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayPauseIconView.swift; sourceTree = ""; }; @@ -1133,7 +1116,6 @@ 5CBB29522163A17F00E3A9FF /* ZIPFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ZIPFoundation.framework; path = Carthage/Build/iOS/ZIPFoundation.framework; sourceTree = ""; }; 620C73C7275DA00300D495AA /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ar; path = ar.lproj/Localizable.stringsdict; sourceTree = ""; }; 620C73C8275DA00400D495AA /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = ""; }; - 620C73C9275DA00400D495AA /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = ""; }; 624AB20A2724808600F6A486 /* AVAudioAssetImageDataProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AVAudioAssetImageDataProvider.swift; sourceTree = ""; }; 624EB9832755D8E700D462A8 /* Audiobook Player 8.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Audiobook Player 8.xcdatamodel"; sourceTree = ""; }; 62AAE2242749283F001EB9FF /* MiniPlayerViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MiniPlayerViewModelTests.swift; sourceTree = ""; }; @@ -1145,7 +1127,6 @@ 63005A442AE7FD8100A4CA2C /* Watch-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Watch-Info.plist"; path = "/Users/pro.gianni.carlo/Workspace/BookPlayer/Watch-Info.plist"; sourceTree = ""; }; 6304CF662B4B595400055285 /* SettingsAutoplayViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsAutoplayViewModel.swift; sourceTree = ""; }; 6304CF692B4C2AE800055285 /* SettingsAutoplayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsAutoplayView.swift; sourceTree = ""; }; - 630584E22ADEB88500FBFA6F /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-PT"; path = "pt-PT.lproj/Localizable.strings"; sourceTree = ""; }; 630584E32ADEB88500FBFA6F /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "pt-PT"; path = "pt-PT.lproj/Localizable.stringsdict"; sourceTree = ""; }; 630584E42ADEB88500FBFA6F /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-PT"; path = "pt-PT.lproj/Localizable.strings"; sourceTree = ""; }; 630825FD2AF293DC002ACE0D /* SharedWidgetContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedWidgetContainerView.swift; sourceTree = ""; }; @@ -1196,7 +1177,6 @@ 635390BC2D0DEB1500FE6E45 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ja; path = ja.lproj/Localizable.stringsdict; sourceTree = ""; }; 635390BD2D0DEB1500FE6E45 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = ""; }; 635390BE2D0DEB1500FE6E45 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/AppShortcuts.strings; sourceTree = ""; }; - 635390BF2D0DEB1500FE6E45 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = ""; }; 6354CD9B2B4902CE006D9551 /* DebugInformationActivityItemSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DebugInformationActivityItemSource.swift; sourceTree = ""; }; 6356D48B2C584EFD00994B71 /* CustomSkipForwardIntent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomSkipForwardIntent.swift; sourceTree = ""; }; 6356F9B42AC7CC5600B7A027 /* CancelSleepTimerIntent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CancelSleepTimerIntent.swift; sourceTree = ""; }; @@ -1212,7 +1192,6 @@ 636086022C5B589900341D78 /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = el; path = el.lproj/Localizable.stringsdict; sourceTree = ""; }; 636086032C5B589900341D78 /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/Localizable.strings; sourceTree = ""; }; 636086042C5B589900341D78 /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/AppShortcuts.strings; sourceTree = ""; }; - 636086052C5B589900341D78 /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/Localizable.strings; sourceTree = ""; }; 63717EA92B792E350006291E /* RefreshTaskOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RefreshTaskOperation.swift; sourceTree = ""; }; 6376091A2ADCD81400A01D5D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/AppShortcuts.strings; sourceTree = ""; }; 6376091C2ADCD82100A01D5D /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/AppShortcuts.strings; sourceTree = ""; }; @@ -1326,7 +1305,6 @@ 9F1804B727A4AEC500FEDFE5 /* AccessibleSliderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccessibleSliderView.swift; sourceTree = ""; }; 9F1804BF27A739D400FEDFE5 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = fi; path = fi.lproj/Localizable.stringsdict; sourceTree = ""; }; 9F1804C027A739D400FEDFE5 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/Localizable.strings; sourceTree = ""; }; - 9F1804C127A739D400FEDFE5 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/Localizable.strings; sourceTree = ""; }; 9F1C30FB2A2E593300D5BC81 /* PlayableItemMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayableItemMock.swift; sourceTree = ""; }; 9F22DE2B288CAAB800056FCD /* ImageIcons.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageIcons.swift; sourceTree = ""; }; 9F22DE2D288CB1A900056FCD /* Fonts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Fonts.swift; sourceTree = ""; }; @@ -1343,7 +1321,6 @@ 9F2DA27E27F0C68D00C8EF2B /* CarPlaySceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CarPlaySceneDelegate.swift; sourceTree = ""; }; 9F2DC9CE29FEDFFF006CDF1F /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = nl; path = nl.lproj/Localizable.stringsdict; sourceTree = ""; }; 9F2DC9CF29FEDFFF006CDF1F /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = ""; }; - 9F2DC9D029FEDFFF006CDF1F /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = ""; }; 9F2DC9D82A008B19006CDF1F /* PricingOptionsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PricingOptionsView.swift; sourceTree = ""; }; 9F2DC9DA2A008B28006CDF1F /* PricingRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PricingRowView.swift; sourceTree = ""; }; 9F2DC9E32A01313C006CDF1F /* PricingModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PricingModel.swift; sourceTree = ""; }; @@ -1368,7 +1345,6 @@ 9F4A33E4292B0C710034CD4C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 9F5011F32A62027C0075FEBA /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = nb; path = nb.lproj/Localizable.stringsdict; sourceTree = ""; }; 9F5011F42A62027C0075FEBA /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/Localizable.strings; sourceTree = ""; }; - 9F5011F52A62027C0075FEBA /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/Localizable.strings; sourceTree = ""; }; 9F5011F62A620D140075FEBA /* PlayerViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerViewModelTests.swift; sourceTree = ""; }; 9F5011F82A6580800075FEBA /* ShakeMotionService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShakeMotionService.swift; sourceTree = ""; }; 9F56C84C287B734C00EA9751 /* BPLogger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BPLogger.swift; sourceTree = ""; }; @@ -1712,7 +1688,6 @@ 9F197F0327C3E1680029C989 /* Utils */, 4140EA34227288EF0009F794 /* Assets.xcassets */, 4140EA36227288EF0009F794 /* Info.plist */, - 419B375B23B8D6DB00128A8F /* Localizable.strings */, ); path = BookPlayerWatch; sourceTree = ""; @@ -3361,7 +3336,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 630F115E2AE7EEBA000A997A /* Localizable.strings in Resources */, + 4689C06D2D270A7100D6C169 /* Localizable.strings in Resources */, 630F115F2AE7EECA000A997A /* Assets.xcassets in Resources */, 41A8BAFB227E2991003C9895 /* Assets.xcassets in Resources */, ); @@ -3536,6 +3511,7 @@ 6399D0722CEBA37C00A2E278 /* RemoteItemListCellView.swift in Sources */, 6334CF212CFE330300F1FA17 /* RefreshableListView.swift in Sources */, 9FA334B627C15DE30064E8EA /* VolumeView.swift in Sources */, + 46EEDDC92D23154C0063811F /* VoiceOverService.swift in Sources */, 6350E46D2CF4315B0077CDC1 /* PlayerLoaderService.swift in Sources */, 6350E46B2CF42B500077CDC1 /* UserActivityManager.swift in Sources */, 63E7DCC02D076185005B5E1F /* View+BookPlayer.swift in Sources */, @@ -4324,38 +4300,6 @@ name = Localizable.strings; sourceTree = ""; }; - 419B375B23B8D6DB00128A8F /* Localizable.strings */ = { - isa = PBXVariantGroup; - children = ( - 419B375C23B8D6DB00128A8F /* Base */, - 419B375F23B8D6E200128A8F /* en */, - 419B377523B92CC100128A8F /* es */, - 419B379623B92E1600128A8F /* de */, - 416AAC3123F44A88005AD04F /* cs */, - 4136175D24019EF000D2DDC1 /* sv */, - 416E40F52404BD5C006FA2EF /* zh-Hans */, - 418A2B6B2419EE060001AEDB /* ru */, - 41E73EFC241D2EFC00D2C1D7 /* da */, - 4193E205243A98AB004D6A82 /* fr */, - 4161D497245660B900D1C01B /* ro */, - 4172CB682495BFBA00AD4A55 /* it */, - 4172CB6B2495C00F00AD4A55 /* tr */, - 4172CB6E2495C09300AD4A55 /* uk */, - 41A7DE7A24BC136200396FD3 /* sk-SK */, - 416A298C256875B300605395 /* pt-BR */, - 41E69F4C25A7CC1100C26920 /* pl */, - 4111FBB225EDD81C0096954F /* hu */, - 620C73C9275DA00400D495AA /* ar */, - 9F1804C127A739D400FEDFE5 /* fi */, - 9F2DC9D029FEDFFF006CDF1F /* nl */, - 9F5011F52A62027C0075FEBA /* nb */, - 630584E22ADEB88500FBFA6F /* pt-PT */, - 636086052C5B589900341D78 /* el */, - 635390BF2D0DEB1500FE6E45 /* ja */, - ); - name = Localizable.strings; - sourceTree = ""; - }; 41B2A5D821CAE42600917584 /* Settings.storyboard */ = { isa = PBXVariantGroup; children = ( diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index 49969e43..95959661 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -344,3 +344,5 @@ We're working hard on providing a seamless experience, if possible, please conta "jellyfin_error_unauthorized" = "Sign In failed. Check your username and password."; "file_size_unknown" = "Unknown size"; "runtime_unknown" = "Unknown duration"; +"subscription_required_title" = "Subscription required"; +"Swipe rows to see download options" = "Swipe rows to see download options"; diff --git a/BookPlayer/Services/VoiceOverService.swift b/BookPlayer/Services/VoiceOverService.swift index 381d6b71..5f95eba8 100644 --- a/BookPlayer/Services/VoiceOverService.swift +++ b/BookPlayer/Services/VoiceOverService.swift @@ -1,4 +1,8 @@ -import BookPlayerKit +#if os(watchOS) + import BookPlayerWatchKit +#else + import BookPlayerKit +#endif import Foundation class VoiceOverService { diff --git a/BookPlayer/ar.lproj/Localizable.strings b/BookPlayer/ar.lproj/Localizable.strings index b7cb7ee3..1acd9167 100644 --- a/BookPlayer/ar.lproj/Localizable.strings +++ b/BookPlayer/ar.lproj/Localizable.strings @@ -344,3 +344,5 @@ "jellyfin_error_unauthorized" = "فشل تسجيل الدخول. تحقق من اسم المستخدم وكلمة المرور."; "file_size_unknown" = "حجم غير معروف"; "runtime_unknown" = "مدة غير معروفة"; +"subscription_required_title" = "الاشتراك مطلوب"; +"Swipe rows to see download options" = "مرر الصفوف لرؤية خيارات التنزيل"; diff --git a/BookPlayer/cs.lproj/Localizable.strings b/BookPlayer/cs.lproj/Localizable.strings index dccc4ea9..58e45899 100644 --- a/BookPlayer/cs.lproj/Localizable.strings +++ b/BookPlayer/cs.lproj/Localizable.strings @@ -344,3 +344,5 @@ "jellyfin_error_unauthorized" = "Přihlášení se nezdařilo. Zkontrolujte své uživatelské jméno a heslo."; "file_size_unknown" = "Neznámá velikost"; "runtime_unknown" = "Neznámá doba trvání"; +"subscription_required_title" = "Je vyžadováno předplatné"; +"Swipe rows to see download options" = "Přejetím po řádcích zobrazíte možnosti stahování"; diff --git a/BookPlayer/da.lproj/Localizable.strings b/BookPlayer/da.lproj/Localizable.strings index 9a68e928..204cdabc 100644 --- a/BookPlayer/da.lproj/Localizable.strings +++ b/BookPlayer/da.lproj/Localizable.strings @@ -344,3 +344,5 @@ "jellyfin_error_unauthorized" = "Log ind mislykkedes. Tjek dit brugernavn og adgangskode."; "file_size_unknown" = "Ukendt størrelse"; "runtime_unknown" = "Ukendt varighed"; +"subscription_required_title" = "Kræver abonnement"; +"Swipe rows to see download options" = "Stryg rækkerne for at se downloadmuligheder"; diff --git a/BookPlayer/de.lproj/Localizable.strings b/BookPlayer/de.lproj/Localizable.strings index ea9a80b0..e57e3d08 100644 --- a/BookPlayer/de.lproj/Localizable.strings +++ b/BookPlayer/de.lproj/Localizable.strings @@ -344,3 +344,5 @@ "jellyfin_error_unauthorized" = "Anmeldung fehlgeschlagen. Überprüfen Sie Ihren Benutzernamen und Ihr Passwort."; "file_size_unknown" = "Unbekannte Größe"; "runtime_unknown" = "Unbekannte Dauer"; +"subscription_required_title" = "Abonnement erforderlich"; +"Swipe rows to see download options" = "Wischen Sie durch die Zeilen, um die Download-Optionen anzuzeigen"; diff --git a/BookPlayer/el.lproj/Localizable.strings b/BookPlayer/el.lproj/Localizable.strings index 21c68b48..d24caca6 100644 --- a/BookPlayer/el.lproj/Localizable.strings +++ b/BookPlayer/el.lproj/Localizable.strings @@ -344,3 +344,5 @@ "jellyfin_error_unauthorized" = "Η σύνδεση απέτυχε. Ελέγξτε το όνομα χρήστη και τον κωδικό πρόσβασής σας."; "file_size_unknown" = "Άγνωστο μέγεθος"; "runtime_unknown" = "Άγνωστη διάρκεια"; +"subscription_required_title" = "Απαιτείται συνδρομή"; +"Swipe rows to see download options" = "Σύρετε σειρές για να δείτε τις επιλογές λήψης"; diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index bf85b4c5..f504bee1 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -344,3 +344,5 @@ We're working hard on providing a seamless experience, if possible, please conta "jellyfin_error_unauthorized" = "Sign In failed. Check your username and password."; "file_size_unknown" = "Unknown size"; "runtime_unknown" = "Unknown duration"; +"subscription_required_title" = "Subscription required"; +"Swipe rows to see download options" = "Swipe rows to see download options"; diff --git a/BookPlayer/es.lproj/Localizable.strings b/BookPlayer/es.lproj/Localizable.strings index 3a91013e..c3d3332b 100644 --- a/BookPlayer/es.lproj/Localizable.strings +++ b/BookPlayer/es.lproj/Localizable.strings @@ -344,3 +344,5 @@ "jellyfin_error_unauthorized" = "Error al iniciar sesión. Verifique su nombre de usuario y contraseña."; "file_size_unknown" = "Tamaño desconocido"; "runtime_unknown" = "Duración desconocida"; +"subscription_required_title" = "Se requiere suscripción"; +"Swipe rows to see download options" = "Desliza las filas para ver las opciones de descarga"; diff --git a/BookPlayer/fi.lproj/Localizable.strings b/BookPlayer/fi.lproj/Localizable.strings index 97c90681..0bd40403 100644 --- a/BookPlayer/fi.lproj/Localizable.strings +++ b/BookPlayer/fi.lproj/Localizable.strings @@ -344,3 +344,5 @@ "jellyfin_error_unauthorized" = "Kirjautuminen epäonnistui. Tarkista käyttäjätunnuksesi ja salasanasi."; "file_size_unknown" = "Tuntematon koko"; "runtime_unknown" = "Tuntematon kesto"; +"subscription_required_title" = "Tilaus vaaditaan"; +"Swipe rows to see download options" = "Pyyhkäise rivejä nähdäksesi latausvaihtoehdot"; diff --git a/BookPlayer/fr.lproj/Localizable.strings b/BookPlayer/fr.lproj/Localizable.strings index 770e8095..7def660b 100644 --- a/BookPlayer/fr.lproj/Localizable.strings +++ b/BookPlayer/fr.lproj/Localizable.strings @@ -344,3 +344,5 @@ "jellyfin_error_unauthorized" = "La connexion a échoué. Vérifiez votre nom d'utilisateur et votre mot de passe."; "file_size_unknown" = "Taille inconnue"; "runtime_unknown" = "Durée inconnue"; +"subscription_required_title" = "Abonnement requis"; +"Swipe rows to see download options" = "Faites glisser les lignes pour voir les options de téléchargement"; diff --git a/BookPlayer/hu.lproj/Localizable.strings b/BookPlayer/hu.lproj/Localizable.strings index be141dfa..d6a6b7df 100644 --- a/BookPlayer/hu.lproj/Localizable.strings +++ b/BookPlayer/hu.lproj/Localizable.strings @@ -344,3 +344,5 @@ "jellyfin_error_unauthorized" = "Sikertelen bejelentkezés. Ellenőrizze felhasználónevét és jelszavát."; "file_size_unknown" = "Ismeretlen méret"; "runtime_unknown" = "Ismeretlen időtartam"; +"subscription_required_title" = "Előfizetés szükséges"; +"Swipe rows to see download options" = "Csúsztassa el a sorokat a letöltési lehetőségek megtekintéséhez"; diff --git a/BookPlayer/it.lproj/Localizable.strings b/BookPlayer/it.lproj/Localizable.strings index 074e6694..6f0027b9 100644 --- a/BookPlayer/it.lproj/Localizable.strings +++ b/BookPlayer/it.lproj/Localizable.strings @@ -344,3 +344,5 @@ "jellyfin_error_unauthorized" = "Accesso non riuscito. Controlla il tuo nome utente e la tua password."; "file_size_unknown" = "Dimensioni sconosciute"; "runtime_unknown" = "Durata sconosciuta"; +"subscription_required_title" = "Abbonamento richiesto"; +"Swipe rows to see download options" = "Scorri le righe per vedere le opzioni di download"; diff --git a/BookPlayer/ja.lproj/Localizable.strings b/BookPlayer/ja.lproj/Localizable.strings index 49969e43..95959661 100644 --- a/BookPlayer/ja.lproj/Localizable.strings +++ b/BookPlayer/ja.lproj/Localizable.strings @@ -344,3 +344,5 @@ We're working hard on providing a seamless experience, if possible, please conta "jellyfin_error_unauthorized" = "Sign In failed. Check your username and password."; "file_size_unknown" = "Unknown size"; "runtime_unknown" = "Unknown duration"; +"subscription_required_title" = "Subscription required"; +"Swipe rows to see download options" = "Swipe rows to see download options"; diff --git a/BookPlayer/nb.lproj/Localizable.strings b/BookPlayer/nb.lproj/Localizable.strings index 9ebc1161..32d058fd 100644 --- a/BookPlayer/nb.lproj/Localizable.strings +++ b/BookPlayer/nb.lproj/Localizable.strings @@ -344,3 +344,5 @@ Vi jobber hardt for å gi deg en sømløs opplevelse. Hvis mulig, kontakt oss p "jellyfin_error_unauthorized" = "Pålogging mislyktes. Sjekk brukernavnet og passordet ditt."; "file_size_unknown" = "Ukjent størrelse"; "runtime_unknown" = "Ukjent varighet"; +"subscription_required_title" = "Abonnement kreves"; +"Swipe rows to see download options" = "Sveip rader for å se nedlastingsalternativer"; diff --git a/BookPlayer/nl.lproj/Localizable.strings b/BookPlayer/nl.lproj/Localizable.strings index 03fccaa4..306b8180 100644 --- a/BookPlayer/nl.lproj/Localizable.strings +++ b/BookPlayer/nl.lproj/Localizable.strings @@ -344,3 +344,5 @@ "jellyfin_error_unauthorized" = "Aanmelden mislukt. Controleer uw gebruikersnaam en wachtwoord."; "file_size_unknown" = "Onbekende grootte"; "runtime_unknown" = "Onbekende duur"; +"subscription_required_title" = "Abonnement vereist"; +"Swipe rows to see download options" = "Veeg over de rijen om de downloadopties te zien"; diff --git a/BookPlayer/pl.lproj/Localizable.strings b/BookPlayer/pl.lproj/Localizable.strings index e8bd968b..e0e42c81 100644 --- a/BookPlayer/pl.lproj/Localizable.strings +++ b/BookPlayer/pl.lproj/Localizable.strings @@ -344,3 +344,5 @@ "jellyfin_error_unauthorized" = "Logowanie nie powiodło się. Sprawdź swoją nazwę użytkownika i hasło."; "file_size_unknown" = "Nieznany rozmiar"; "runtime_unknown" = "Nieznany czas trwania"; +"subscription_required_title" = "Wymagana subskrypcja"; +"Swipe rows to see download options" = "Przesuń wiersze, aby zobaczyć opcje pobierania"; diff --git a/BookPlayer/pt-BR.lproj/Localizable.strings b/BookPlayer/pt-BR.lproj/Localizable.strings index 0e2caa23..963ab6c4 100644 --- a/BookPlayer/pt-BR.lproj/Localizable.strings +++ b/BookPlayer/pt-BR.lproj/Localizable.strings @@ -344,3 +344,5 @@ "jellyfin_error_unauthorized" = "Falha ao entrar. Verifique seu nome de usuário e senha."; "file_size_unknown" = "Tamanho desconhecido"; "runtime_unknown" = "Duração desconhecida"; +"subscription_required_title" = "Assinatura necessária"; +"Swipe rows to see download options" = "Deslize as linhas para ver as opções de download"; diff --git a/BookPlayer/pt-PT.lproj/Localizable.strings b/BookPlayer/pt-PT.lproj/Localizable.strings index d9331061..25d045e9 100644 --- a/BookPlayer/pt-PT.lproj/Localizable.strings +++ b/BookPlayer/pt-PT.lproj/Localizable.strings @@ -344,3 +344,5 @@ "jellyfin_error_unauthorized" = "Falha ao entrar. Verifique seu nome de usuário e senha."; "file_size_unknown" = "Tamanho desconhecido"; "runtime_unknown" = "Duração desconhecida"; +"subscription_required_title" = "Assinatura necessária"; +"Swipe rows to see download options" = "Deslize as linhas para ver as opções de download"; diff --git a/BookPlayer/ro.lproj/Localizable.strings b/BookPlayer/ro.lproj/Localizable.strings index 39b8e9f0..dad76ea1 100644 --- a/BookPlayer/ro.lproj/Localizable.strings +++ b/BookPlayer/ro.lproj/Localizable.strings @@ -344,3 +344,5 @@ "jellyfin_error_unauthorized" = "Conectarea a eșuat. Verificați-vă numele de utilizator și parola."; "file_size_unknown" = "Dimensiune necunoscută"; "runtime_unknown" = "Durată necunoscută"; +"subscription_required_title" = "Este necesar un abonament"; +"Swipe rows to see download options" = "Glisați rândurile pentru a vedea opțiunile de descărcare"; diff --git a/BookPlayer/ru.lproj/Localizable.strings b/BookPlayer/ru.lproj/Localizable.strings index 3f4bf774..6495d1f4 100644 --- a/BookPlayer/ru.lproj/Localizable.strings +++ b/BookPlayer/ru.lproj/Localizable.strings @@ -344,3 +344,5 @@ "jellyfin_error_unauthorized" = "Войти не удалось. Проверьте имя пользователя и пароль."; "file_size_unknown" = "Неизвестный размер"; "runtime_unknown" = "Неизвестная продолжительность"; +"subscription_required_title" = "Требуется подписка"; +"Swipe rows to see download options" = "Проведите пальцем по строкам, чтобы увидеть варианты загрузки"; diff --git a/BookPlayer/sk-SK.lproj/Localizable.strings b/BookPlayer/sk-SK.lproj/Localizable.strings index 24ab2484..fbe234f6 100644 --- a/BookPlayer/sk-SK.lproj/Localizable.strings +++ b/BookPlayer/sk-SK.lproj/Localizable.strings @@ -344,3 +344,5 @@ Usilovne pracujeme na poskytovaní bezproblémového zážitku, ak je to možné "jellyfin_error_unauthorized" = "Prihlásenie zlyhalo. Skontrolujte svoje používateľské meno a heslo."; "file_size_unknown" = "Neznáma veľkosť"; "runtime_unknown" = "Neznáme trvanie"; +"subscription_required_title" = "Vyžaduje sa predplatné"; +"Swipe rows to see download options" = "Potiahnutím riadkov zobrazíte možnosti sťahovania"; diff --git a/BookPlayer/sv.lproj/Localizable.strings b/BookPlayer/sv.lproj/Localizable.strings index b00ee661..7347ae0e 100644 --- a/BookPlayer/sv.lproj/Localizable.strings +++ b/BookPlayer/sv.lproj/Localizable.strings @@ -344,3 +344,5 @@ "jellyfin_error_unauthorized" = "Inloggning misslyckades. Kontrollera ditt användarnamn och lösenord."; "file_size_unknown" = "Okänd storlek"; "runtime_unknown" = "Okänd varaktighet"; +"subscription_required_title" = "Prenumeration krävs"; +"Swipe rows to see download options" = "Svep rader för att se nedladdningsalternativ"; diff --git a/BookPlayer/tr.lproj/Localizable.strings b/BookPlayer/tr.lproj/Localizable.strings index 3852e490..f0e2d9d8 100644 --- a/BookPlayer/tr.lproj/Localizable.strings +++ b/BookPlayer/tr.lproj/Localizable.strings @@ -344,3 +344,5 @@ "jellyfin_error_unauthorized" = "Giriş başarısız. Kullanıcı adınızı ve şifrenizi kontrol edin."; "file_size_unknown" = "Bilinmeyen boyut"; "runtime_unknown" = "Bilinmeyen süre"; +"subscription_required_title" = "Abonelik gerekli"; +"Swipe rows to see download options" = "İndirme seçeneklerini görmek için satırları kaydırın"; diff --git a/BookPlayer/uk.lproj/Localizable.strings b/BookPlayer/uk.lproj/Localizable.strings index 44501405..69c1aaf5 100644 --- a/BookPlayer/uk.lproj/Localizable.strings +++ b/BookPlayer/uk.lproj/Localizable.strings @@ -344,3 +344,5 @@ "jellyfin_error_unauthorized" = "Помилка входу. Перевірте своє ім'я користувача та пароль."; "file_size_unknown" = "Невідомий розмір"; "runtime_unknown" = "Невідома тривалість"; +"subscription_required_title" = "Потрібна підписка"; +"Swipe rows to see download options" = "Гортайте рядки, щоб переглянути параметри завантаження"; diff --git a/BookPlayer/zh-Hans.lproj/Localizable.strings b/BookPlayer/zh-Hans.lproj/Localizable.strings index 8953741d..77599e87 100644 --- a/BookPlayer/zh-Hans.lproj/Localizable.strings +++ b/BookPlayer/zh-Hans.lproj/Localizable.strings @@ -344,3 +344,5 @@ "jellyfin_error_unauthorized" = "登录失败。请检查您的用户名和密码。"; "file_size_unknown" = "未知尺寸"; "runtime_unknown" = "持续时间未知"; +"subscription_required_title" = "需要订阅"; +"Swipe rows to see download options" = "滑动行查看下载选项"; diff --git a/BookPlayerWatch/Base.lproj/Localizable.strings b/BookPlayerWatch/Base.lproj/Localizable.strings deleted file mode 100644 index 7e8a1c6f..00000000 --- a/BookPlayerWatch/Base.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Library"; -"delete_button" = "Delete"; -"ok_button" = "OK"; -"recent_title" = "Recent"; -"storage_total_title" = "Total space used"; -"watchapp_last_played_title" = "Last Played"; -"watchapp_refresh_data_title" = "Refresh data"; -"watchapp_connect_error_title" = "Connectivity Error"; -"watchapp_connect_error_description" = "There's a problem connecting to your phone, please try again later"; -"chapters_title" = "Chapters"; -"settings_controls_title" = "Player Controls"; -"settings_boostvolume_title" = "Boost Volume"; -"settings_skip_title" = "SKIP INTERVALS"; -"settings_skip_rewind_title" = "Rewind"; -"settings_skip_forward_title" = "Forward"; -"settings_autoplay_section_title" = "AUTOPLAY"; -"speed_title" = "speed"; -"logout_title" = "Log out"; -"benefits_watchapp_description" = "Stream or download your books and listen on the go without your phone."; -"subscription_required_title" = "Subscription required"; -"Swipe rows to see download options" = "Swipe rows to see download options"; diff --git a/BookPlayerWatch/NowPlaying/Views/NowPlayingTitleView.swift b/BookPlayerWatch/NowPlaying/Views/NowPlayingTitleView.swift index c35c62aa..32907170 100644 --- a/BookPlayerWatch/NowPlaying/Views/NowPlayingTitleView.swift +++ b/BookPlayerWatch/NowPlaying/Views/NowPlayingTitleView.swift @@ -26,5 +26,10 @@ struct NowPlayingTitleView: View { .lineLimit(2) .fixedSize(horizontal: false, vertical: true) } + .accessibilityElement(children: .ignore) + .accessibilityLabel(VoiceOverService.playerMetaText( + title: item?.title ?? "", + author: item?.author ?? "" + )) } } diff --git a/BookPlayerWatch/PlayerControlsView.swift b/BookPlayerWatch/PlayerControlsView.swift index 79e339e9..c40cf363 100644 --- a/BookPlayerWatch/PlayerControlsView.swift +++ b/BookPlayerWatch/PlayerControlsView.swift @@ -28,6 +28,7 @@ struct PlayerControlsView: View { .padding(10) } .buttonStyle(PlainButtonStyle()) + .accessibilityLabel(VoiceOverService.rewindText()) .frame(width: geometry.size.width * 0.28) Spacer() Button { @@ -54,6 +55,7 @@ struct PlayerControlsView: View { .padding(10) } .buttonStyle(PlainButtonStyle()) + .accessibilityLabel(VoiceOverService.fastForwardText()) .frame(width: geometry.size.width * 0.28) Spacer() } diff --git a/BookPlayerWatch/RemoteItemList/RemoteItemListCellView.swift b/BookPlayerWatch/RemoteItemList/RemoteItemListCellView.swift index c460f92c..c21cfec5 100644 --- a/BookPlayerWatch/RemoteItemList/RemoteItemListCellView.swift +++ b/BookPlayerWatch/RemoteItemList/RemoteItemListCellView.swift @@ -34,6 +34,17 @@ struct RemoteItemListCellView: View { return "\(Int(model.item.percentCompleted))% - " } } + + var accessibilityDownloadStateLabel: String { + switch model.downloadState { + case .notDownloaded: + return ". ☁️" + case .downloading(let progress): + return "" + case .downloaded: + return ". ⌚️" + } + } func formattedProgress(_ progress: Double) -> String { numberFormatter.string(from: NSNumber(value: progress)) ?? "" @@ -125,6 +136,7 @@ struct RemoteItemListCellView: View { } } } + .accessibilityLabel(VoiceOverService.getAccessibilityLabel(for: model.item) + accessibilityDownloadStateLabel) } } diff --git a/BookPlayerWatch/RemotePlayerView.swift b/BookPlayerWatch/RemotePlayerView.swift index be5c1a67..36f1696d 100644 --- a/BookPlayerWatch/RemotePlayerView.swift +++ b/BookPlayerWatch/RemotePlayerView.swift @@ -20,6 +20,7 @@ struct RemotePlayerView: View { value: currentItem.currentTime / currentItem.duration, fillColor: .accentColor ) + .accessibilityHidden(true) .frame(maxHeight: 3) } @@ -37,7 +38,9 @@ struct RemotePlayerView: View { } .fixedSize(horizontal: false, vertical: false) .ignoresSafeArea(edges: .bottom) - .navigationTitle(TimeParser.formatTotalDuration(playerManager.currentItem?.maxTimeInContext(prefersChapterContext: false, prefersRemainingTime: true, at: 1.0) ?? 0)) + .navigationTitle( + TimeParser.formatTotalDuration(playerManager.currentItem?.maxTimeInContext(prefersChapterContext: false, prefersRemainingTime: true, at: playerManager.currentSpeed) ?? 0) + ) .errorAlert(error: $playerManager.error) } } diff --git a/BookPlayerWatch/RootView.swift b/BookPlayerWatch/RootView.swift index 4618e0b2..a8c051d5 100644 --- a/BookPlayerWatch/RootView.swift +++ b/BookPlayerWatch/RootView.swift @@ -42,6 +42,7 @@ struct RootView: View { : nil ) .environment(\.coreServices, coreServices) + .ignoresSafeArea(edges: .bottom) } } diff --git a/BookPlayerWatch/ar.lproj/Localizable.strings b/BookPlayerWatch/ar.lproj/Localizable.strings deleted file mode 100644 index c74d5877..00000000 --- a/BookPlayerWatch/ar.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "المكتبة"; -"delete_button" = "حذف"; -"ok_button" = "موافق"; -"recent_title" = "مؤخراً"; -"storage_total_title" = "المساحة الإجمالية المُستَخدَمة"; -"watchapp_last_played_title" = "التشغيل الاخير"; -"watchapp_refresh_data_title" = "تحديث البيانات"; -"watchapp_connect_error_title" = "خطأ في الاتصال"; -"watchapp_connect_error_description" = "هناك مشكلة في الاتصال بهاتفك، الرجاء المحاولة مرة أخرى لاحقًا"; -"chapters_title" = "الفصول"; -"settings_controls_title" = "ضبط المشغل"; -"settings_boostvolume_title" = "زيادة مستوى الصوت"; -"settings_skip_title" = "القفزات الزمنية"; -"settings_skip_rewind_title" = "التأخير"; -"settings_skip_forward_title" = "التقديم"; -"settings_autoplay_section_title" = "التشغيل التلقائي"; -"speed_title" = "السرعة"; -"logout_title" = "تسجيل خروج"; -"benefits_watchapp_description" = "قم ببث كتبك أو تنزيلها واستمع إليها أثناء التنقل دون الحاجة إلى هاتفك."; -"subscription_required_title" = "الاشتراك مطلوب"; -"Swipe rows to see download options" = "مرر الصفوف لرؤية خيارات التنزيل"; diff --git a/BookPlayerWatch/cs.lproj/Localizable.strings b/BookPlayerWatch/cs.lproj/Localizable.strings deleted file mode 100644 index 55e7a43f..00000000 --- a/BookPlayerWatch/cs.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Knihovna"; -"delete_button" = "Odstranit"; -"ok_button" = "OK"; -"recent_title" = "Nedávné"; -"storage_total_title" = "Celkový využitý prostor"; -"watchapp_last_played_title" = "Naposledy přehráno"; -"watchapp_refresh_data_title" = "Obnovit data"; -"watchapp_connect_error_title" = "Chyba připojení"; -"watchapp_connect_error_description" = "Při připojení k telefonu došlo k potížím, zkuste to prosím později."; -"chapters_title" = "Kapitoly"; -"settings_controls_title" = "Ovládací prvky přehrávače"; -"settings_boostvolume_title" = "Zvýšení hlasitosti"; -"settings_skip_title" = "Intervaly přetáčení"; -"settings_skip_rewind_title" = "Vrátit"; -"settings_skip_forward_title" = "Přetočit"; -"settings_autoplay_section_title" = "AUTOMATICKÉ PŘEHRÁVÁNÍ"; -"speed_title" = "Rychlost"; -"logout_title" = "Odhlásit se"; -"benefits_watchapp_description" = "Streamujte nebo stahujte své knihy a poslouchejte je na cestách bez telefonu."; -"subscription_required_title" = "Je vyžadováno předplatné"; -"Swipe rows to see download options" = "Přejetím po řádcích zobrazíte možnosti stahování"; diff --git a/BookPlayerWatch/da.lproj/Localizable.strings b/BookPlayerWatch/da.lproj/Localizable.strings deleted file mode 100644 index dae30cde..00000000 --- a/BookPlayerWatch/da.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Bibliotek"; -"delete_button" = "Slet"; -"ok_button" = "OK"; -"recent_title" = "Seneste"; -"storage_total_title" = "Samlet plads brugt"; -"watchapp_last_played_title" = "Senest afspillet"; -"watchapp_refresh_data_title" = "Genindlæs"; -"watchapp_connect_error_title" = "Forbindelsesfejl"; -"watchapp_connect_error_description" = "Der er et problem med at oprette forbindelse til din telefon. Prøv igen senere"; -"chapters_title" = "Kapitler"; -"settings_controls_title" = "Afspiller kontrol"; -"settings_boostvolume_title" = "Boost lydstyrken"; -"settings_skip_title" = "SPRING OVER-INTERVALLER"; -"settings_skip_rewind_title" = "Spol tilbage"; -"settings_skip_forward_title" = "Spol frem"; -"settings_autoplay_section_title" = "AUTOMATISK AFSPILNING"; -"speed_title" = "Hastighed"; -"logout_title" = "Log ud"; -"benefits_watchapp_description" = "Stream eller download dine bøger, og lyt på farten uden din telefon."; -"subscription_required_title" = "Kræver abonnement"; -"Swipe rows to see download options" = "Stryg rækkerne for at se downloadmuligheder"; diff --git a/BookPlayerWatch/de.lproj/Localizable.strings b/BookPlayerWatch/de.lproj/Localizable.strings deleted file mode 100644 index 5f3dc7e5..00000000 --- a/BookPlayerWatch/de.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Bibliothek"; -"delete_button" = "Löschen"; -"ok_button" = "OK"; -"recent_title" = "Kürzlich"; -"storage_total_title" = "Insgesamt belegter Speicher"; -"watchapp_last_played_title" = "Zuletzt gespielt"; -"watchapp_refresh_data_title" = "Daten aktualisieren"; -"watchapp_connect_error_title" = "Verbindungsfehler"; -"watchapp_connect_error_description" = "Es gibt ein Problem mit der Verbindung zu Ihrem Telefon, bitte versuche es später noch einmal."; -"chapters_title" = "Kapitel"; -"settings_controls_title" = "Steuerung"; -"settings_boostvolume_title" = "Lautstärke erhöhen"; -"settings_skip_title" = "Tasten „Überspringen“"; -"settings_skip_rewind_title" = "Rückwärts"; -"settings_skip_forward_title" = "Vorwärts"; -"settings_autoplay_section_title" = "AUTOMATISCHES ABSPIELEN"; -"speed_title" = "Wiedergabegeschwindigkeit"; -"logout_title" = "Ausloggen"; -"benefits_watchapp_description" = "Streamen oder laden Sie Ihre Bücher herunter und hören Sie sie unterwegs ohne Ihr Telefon."; -"subscription_required_title" = "Abonnement erforderlich"; -"Swipe rows to see download options" = "Wischen Sie durch die Zeilen, um die Download-Optionen anzuzeigen"; diff --git a/BookPlayerWatch/el.lproj/Localizable.strings b/BookPlayerWatch/el.lproj/Localizable.strings deleted file mode 100644 index ca74afff..00000000 --- a/BookPlayerWatch/el.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Βιβλιοθήκη"; -"delete_button" = "Διαγράφω"; -"ok_button" = "Εντάξει"; -"recent_title" = "Πρόσφατος"; -"storage_total_title" = "Συνολικός χώρος που χρησιμοποιείται"; -"watchapp_last_played_title" = "Τελευταία αναπαραγωγή"; -"watchapp_refresh_data_title" = "Ανανέωση δεδομένων"; -"watchapp_connect_error_title" = "Σφάλμα συνδεσιμότητας"; -"watchapp_connect_error_description" = "Παρουσιάστηκε πρόβλημα με τη σύνδεση με το τηλέφωνό σας, δοκιμάστε ξανά αργότερα"; -"chapters_title" = "Κεφάλαια"; -"settings_controls_title" = "Χειριστήρια αναπαραγωγού"; -"settings_boostvolume_title" = "Ενίσχυση όγκου"; -"settings_skip_title" = "ΔΙΑΣΤΗΜΑΤΑ ΠΑΡΑΛΕΙΨΗΣ"; -"settings_skip_rewind_title" = "Πίσω"; -"settings_skip_forward_title" = "Προς τα εμπρός"; -"settings_autoplay_section_title" = "ΑΥΤΟΜΑΤΗ ΑΝΑΠΑΡΑΓΩΓΗ"; -"speed_title" = "Ταχύτητα"; -"logout_title" = "Αποσύνδεση"; -"benefits_watchapp_description" = "Μεταδώστε ροή ή κατεβάστε τα βιβλία σας και ακούστε τα εν κινήσει χωρίς το τηλέφωνό σας."; -"subscription_required_title" = "Απαιτείται συνδρομή"; -"Swipe rows to see download options" = "Σύρετε σειρές για να δείτε τις επιλογές λήψης"; diff --git a/BookPlayerWatch/en.lproj/Localizable.strings b/BookPlayerWatch/en.lproj/Localizable.strings deleted file mode 100644 index 5b177408..00000000 --- a/BookPlayerWatch/en.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Library"; -"delete_button" = "Delete"; -"ok_button" = "OK"; -"recent_title" = "Recent"; -"storage_total_title" = "Total space used"; -"watchapp_last_played_title" = "Last Played"; -"watchapp_refresh_data_title" = "Refresh data"; -"watchapp_connect_error_title" = "Connectivity Error"; -"watchapp_connect_error_description" = "There's a problem connecting to your phone, please try again later"; -"chapters_title" = "Chapters"; -"settings_controls_title" = "Player Controls"; -"settings_boostvolume_title" = "Boost Volume"; -"settings_skip_title" = "SKIP INTERVALS"; -"settings_skip_rewind_title" = "Rewind"; -"settings_skip_forward_title" = "Forward"; -"settings_autoplay_section_title" = "AUTOPLAY"; -"speed_title" = "speed"; -"logout_title" = "Log out"; -"benefits_watchapp_description" = "Stream or download your books and listen on the go without your phone."; -"subscription_required_title" = "Subscription required"; -"Swipe rows to see download options" = ""; diff --git a/BookPlayerWatch/es.lproj/Localizable.strings b/BookPlayerWatch/es.lproj/Localizable.strings deleted file mode 100644 index ff563c5c..00000000 --- a/BookPlayerWatch/es.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Biblioteca"; -"delete_button" = "Eliminar"; -"ok_button" = "OK"; -"recent_title" = "Recientes"; -"storage_total_title" = "Espacio total utilizado"; -"watchapp_last_played_title" = "Reciente"; -"watchapp_refresh_data_title" = "Actualizar data"; -"watchapp_connect_error_title" = "Error de conectividad"; -"watchapp_connect_error_description" = "Hay un problema de conexión con el teléfono, por favor, inténtelo de nuevo más tarde."; -"chapters_title" = "Capítulos"; -"settings_controls_title" = "Controles Del Reproductor"; -"settings_boostvolume_title" = "Aumentar el volumen"; -"settings_skip_title" = "INTERVALOS DE SALTO"; -"settings_skip_rewind_title" = "Retroceder"; -"settings_skip_forward_title" = "Adelante"; -"settings_autoplay_section_title" = "AUTO-REPRODUCCIÓN"; -"speed_title" = "velocidad"; -"logout_title" = "Cerrar sesión"; -"benefits_watchapp_description" = "Transmite o descarga tus libros y escúchalos mientras viajas sin tu teléfono."; -"subscription_required_title" = "Se requiere suscripción"; -"Swipe rows to see download options" = "Desliza las filas para ver las opciones de descarga"; diff --git a/BookPlayerWatch/fi.lproj/Localizable.strings b/BookPlayerWatch/fi.lproj/Localizable.strings deleted file mode 100644 index 9829afd3..00000000 --- a/BookPlayerWatch/fi.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Kirjasto"; -"delete_button" = "Poista"; -"ok_button" = "OK"; -"recent_title" = "Viimeisin"; -"storage_total_title" = "Käytetty tila yhteensä"; -"watchapp_last_played_title" = "Viimeksi soitettu"; -"watchapp_refresh_data_title" = "Päivitä tiedot"; -"watchapp_connect_error_title" = "Yhteysvirhe"; -"watchapp_connect_error_description" = "Ongelma yhteyden muodostamisessa puhelimeesi. Yritä myöhemmin uudelleen"; -"chapters_title" = "Kappaleet"; -"settings_controls_title" = "Soitinsäätimet"; -"settings_boostvolume_title" = "Lisää äänenvoimakkuutta"; -"settings_skip_title" = "Skippaus intervallit"; -"settings_skip_rewind_title" = "Kelaa taaksepäin"; -"settings_skip_forward_title" = "Eteenpäin"; -"settings_autoplay_section_title" = "AUTOMAATTINEN TOISTO"; -"speed_title" = "nopeus"; -"logout_title" = "Kirjautua ulos"; -"benefits_watchapp_description" = "Suoratoista tai lataa kirjojasi ja kuuntele tien päällä ilman puhelinta."; -"subscription_required_title" = "Tilaus vaaditaan"; -"Swipe rows to see download options" = "Pyyhkäise rivejä nähdäksesi latausvaihtoehdot"; diff --git a/BookPlayerWatch/fr.lproj/Localizable.strings b/BookPlayerWatch/fr.lproj/Localizable.strings deleted file mode 100644 index 064fa132..00000000 --- a/BookPlayerWatch/fr.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Bibliothèque"; -"delete_button" = "Supprimer"; -"ok_button" = "OK"; -"recent_title" = "Récent"; -"storage_total_title" = "Espace total utilisé"; -"watchapp_last_played_title" = "Dernier lu"; -"watchapp_refresh_data_title" = "Actualiser"; -"watchapp_connect_error_title" = "Erreur de connexion"; -"watchapp_connect_error_description" = "Il y a un problème de connexion à votre téléphone, veuillez réessayer plus tard"; -"chapters_title" = "Chapitres"; -"settings_controls_title" = "Contrôles de lecture"; -"settings_boostvolume_title" = "Augmenter le volume"; -"settings_skip_title" = "INTERVALLES DE SAUT"; -"settings_skip_rewind_title" = "Rembobiner"; -"settings_skip_forward_title" = "Avancer"; -"settings_autoplay_section_title" = "LECTURE AUTOMATIQUE"; -"speed_title" = "vitesse"; -"logout_title" = "Se déconnecter"; -"benefits_watchapp_description" = "Diffusez ou téléchargez vos livres et écoutez-les en déplacement sans votre téléphone."; -"subscription_required_title" = "Abonnement requis"; -"Swipe rows to see download options" = "Faites glisser les lignes pour voir les options de téléchargement"; diff --git a/BookPlayerWatch/hu.lproj/Localizable.strings b/BookPlayerWatch/hu.lproj/Localizable.strings deleted file mode 100644 index dee23ced..00000000 --- a/BookPlayerWatch/hu.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Könyvtár"; -"delete_button" = "Törlés"; -"ok_button" = "OK"; -"recent_title" = "Friss"; -"storage_total_title" = "Teljes felhasznált terület"; -"watchapp_last_played_title" = "Utoljára lejátszott"; -"watchapp_refresh_data_title" = "Adatok frissítése"; -"watchapp_connect_error_title" = "Kapcsolódási hiba"; -"watchapp_connect_error_description" = "Probléma a telefonhoz való csatlakozáskor, próbálkozzon később ismételten"; -"chapters_title" = "Fejezetek"; -"settings_controls_title" = "Lejátszóvezérlők"; -"settings_boostvolume_title" = "Hangerő növelése"; -"settings_skip_title" = "UGRÁSOK IDŐTARTAMA"; -"settings_skip_rewind_title" = "Visszatekerés"; -"settings_skip_forward_title" = "Előretekerés"; -"settings_autoplay_section_title" = "AUTOMATIKUS LEJÁTSZÁS"; -"speed_title" = "sebesség"; -"logout_title" = "Kijelentkezés"; -"benefits_watchapp_description" = "Streamelje vagy töltse le könyveit, és telefonja nélkül hallgassa útközben."; -"subscription_required_title" = "Előfizetés szükséges"; -"Swipe rows to see download options" = "Csúsztassa el a sorokat a letöltési lehetőségek megtekintéséhez"; diff --git a/BookPlayerWatch/it.lproj/Localizable.strings b/BookPlayerWatch/it.lproj/Localizable.strings deleted file mode 100644 index 2edca506..00000000 --- a/BookPlayerWatch/it.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Libreria"; -"delete_button" = "Elimina"; -"ok_button" = "OK"; -"recent_title" = "Recente"; -"storage_total_title" = "Spazio totale utilizzato"; -"watchapp_last_played_title" = "Ultimo Riprodotto"; -"watchapp_refresh_data_title" = "Aggiorna i dati"; -"watchapp_connect_error_title" = "Errore di connettività"; -"watchapp_connect_error_description" = "Si è verificato un problema durante la connessione con il telefono, riprova più tardi"; -"chapters_title" = "Capitoli"; -"settings_controls_title" = "Controlli della Riproduzione"; -"settings_boostvolume_title" = "Aumenta il volume massimo"; -"settings_skip_title" = "SALTA INTERVALLI"; -"settings_skip_rewind_title" = "Riavvolgi"; -"settings_skip_forward_title" = "Avanti"; -"settings_autoplay_section_title" = "RIPRODUZIONE AUTOMATICA"; -"speed_title" = "velocità"; -"logout_title" = "Disconnettersi"; -"benefits_watchapp_description" = "Ascolta in streaming o scarica i tuoi libri e ascoltali ovunque tu sia, senza usare il telefono."; -"subscription_required_title" = "Abbonamento richiesto"; -"Swipe rows to see download options" = "Scorri le righe per vedere le opzioni di download"; diff --git a/BookPlayerWatch/ja.lproj/Localizable.strings b/BookPlayerWatch/ja.lproj/Localizable.strings deleted file mode 100644 index 7e8a1c6f..00000000 --- a/BookPlayerWatch/ja.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Library"; -"delete_button" = "Delete"; -"ok_button" = "OK"; -"recent_title" = "Recent"; -"storage_total_title" = "Total space used"; -"watchapp_last_played_title" = "Last Played"; -"watchapp_refresh_data_title" = "Refresh data"; -"watchapp_connect_error_title" = "Connectivity Error"; -"watchapp_connect_error_description" = "There's a problem connecting to your phone, please try again later"; -"chapters_title" = "Chapters"; -"settings_controls_title" = "Player Controls"; -"settings_boostvolume_title" = "Boost Volume"; -"settings_skip_title" = "SKIP INTERVALS"; -"settings_skip_rewind_title" = "Rewind"; -"settings_skip_forward_title" = "Forward"; -"settings_autoplay_section_title" = "AUTOPLAY"; -"speed_title" = "speed"; -"logout_title" = "Log out"; -"benefits_watchapp_description" = "Stream or download your books and listen on the go without your phone."; -"subscription_required_title" = "Subscription required"; -"Swipe rows to see download options" = "Swipe rows to see download options"; diff --git a/BookPlayerWatch/nb.lproj/Localizable.strings b/BookPlayerWatch/nb.lproj/Localizable.strings deleted file mode 100644 index 27e26037..00000000 --- a/BookPlayerWatch/nb.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Bibliotek"; -"delete_button" = "Slett"; -"ok_button" = "OK"; -"recent_title" = "Nylig"; -"storage_total_title" = "Total plass brukt"; -"watchapp_last_played_title" = "Sist spilt"; -"watchapp_refresh_data_title" = "Oppdater data"; -"watchapp_connect_error_title" = "Tilkoblingsfeil"; -"watchapp_connect_error_description" = "Det er et problem med å koble til telefonen din, prøv igjen senere"; -"chapters_title" = "Kapitler"; -"settings_controls_title" = "Avspillingskontroller"; -"settings_boostvolume_title" = "Boost volumet"; -"settings_skip_title" = "HOPP OVER INTERVALLER"; -"settings_skip_rewind_title" = "Spol tilbake"; -"settings_skip_forward_title" = "Spol fremover"; -"settings_autoplay_section_title" = "AUTOPLAY"; -"speed_title" = "hastighet"; -"logout_title" = "Logg ut"; -"benefits_watchapp_description" = "Stream eller last ned bøkene dine og lytt mens du er på farten uten telefonen."; -"subscription_required_title" = "Abonnement kreves"; -"Swipe rows to see download options" = "Sveip rader for å se nedlastingsalternativer"; diff --git a/BookPlayerWatch/nl.lproj/Localizable.strings b/BookPlayerWatch/nl.lproj/Localizable.strings deleted file mode 100644 index fb986385..00000000 --- a/BookPlayerWatch/nl.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Bibliotheek"; -"delete_button" = "Verwijderen"; -"ok_button" = "Oké"; -"recent_title" = "Recente"; -"storage_total_title" = "Totale gebruikte ruimte"; -"watchapp_last_played_title" = "Laatst Afgespeeld"; -"watchapp_refresh_data_title" = "Ververs data"; -"watchapp_connect_error_title" = "Verbindingsfout"; -"watchapp_connect_error_description" = "Er is een probleem met het verbinden met je telefoon, probeer het later opnieuw"; -"chapters_title" = "Hoofdstukken"; -"settings_controls_title" = "Spelerbediening"; -"settings_boostvolume_title" = "Boost volume"; -"settings_skip_title" = "INTERVAL OVERSLAAN"; -"settings_skip_rewind_title" = "Terugspoelen"; -"settings_skip_forward_title" = "Naar voren"; -"settings_autoplay_section_title" = "AUTOMATISCH AFSPELEN"; -"speed_title" = "snelheid"; -"logout_title" = "Uitloggen"; -"benefits_watchapp_description" = "Stream of download uw boeken en luister er onderweg naar, zonder uw telefoon."; -"subscription_required_title" = "Abonnement vereist"; -"Swipe rows to see download options" = "Veeg over de rijen om de downloadopties te zien"; diff --git a/BookPlayerWatch/pl.lproj/Localizable.strings b/BookPlayerWatch/pl.lproj/Localizable.strings deleted file mode 100644 index e3476410..00000000 --- a/BookPlayerWatch/pl.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Biblioteka"; -"delete_button" = "Usuń"; -"ok_button" = "OK"; -"recent_title" = "Ostatnie"; -"storage_total_title" = "Całkowita wykorzystana przestrzeń"; -"watchapp_last_played_title" = "Ostatnio odtwarzane"; -"watchapp_refresh_data_title" = "Odśwież dane"; -"watchapp_connect_error_title" = "Błąd połączenia"; -"watchapp_connect_error_description" = "Wystąpił problem z połączeniem z telefonem, spróbuj ponownie później"; -"chapters_title" = "Rozdziały"; -"settings_controls_title" = "Elementy sterujące odtwarzacza"; -"settings_boostvolume_title" = "Zwiększ głośność"; -"settings_skip_title" = "POMIJANIE INTERWAŁÓW"; -"settings_skip_rewind_title" = "Cofnij"; -"settings_skip_forward_title" = "Do przodu"; -"settings_autoplay_section_title" = "AUTOMATYCZNE ODTWARZANIE"; -"speed_title" = "prędkość"; -"logout_title" = "Wyloguj"; -"benefits_watchapp_description" = "Przesyłaj strumieniowo lub pobieraj książki i słuchaj ich w podróży, bez użycia telefonu."; -"subscription_required_title" = "Wymagana subskrypcja"; -"Swipe rows to see download options" = "Przesuń wiersze, aby zobaczyć opcje pobierania"; diff --git a/BookPlayerWatch/pt-BR.lproj/Localizable.strings b/BookPlayerWatch/pt-BR.lproj/Localizable.strings deleted file mode 100644 index 8c1509d5..00000000 --- a/BookPlayerWatch/pt-BR.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Biblioteca"; -"delete_button" = "Excluir"; -"ok_button" = "OK"; -"recent_title" = "Mais recente"; -"storage_total_title" = "Espaço total utilizado"; -"watchapp_last_played_title" = "Último Reproduzido"; -"watchapp_refresh_data_title" = "Atualizar dados"; -"watchapp_connect_error_title" = "Erro de conexão"; -"watchapp_connect_error_description" = "Há um problema de conexão com o seu telefone, tente novamente mais tarde"; -"chapters_title" = "Capítulos"; -"settings_controls_title" = "Controles do Reprodutor"; -"settings_boostvolume_title" = "Aumentar volume"; -"settings_skip_title" = "PULAR INTERVALOS"; -"settings_skip_rewind_title" = "Retroceder"; -"settings_skip_forward_title" = "Avançar"; -"settings_autoplay_section_title" = "REPRODUÇÃO AUTOMÁTICA"; -"speed_title" = "velocidade"; -"logout_title" = "Sair"; -"benefits_watchapp_description" = "Transmita ou baixe seus livros e ouça em qualquer lugar, sem precisar do seu celular."; -"subscription_required_title" = "Assinatura necessária"; -"Swipe rows to see download options" = "Deslize as linhas para ver as opções de download"; diff --git a/BookPlayerWatch/pt-PT.lproj/Localizable.strings b/BookPlayerWatch/pt-PT.lproj/Localizable.strings deleted file mode 100644 index 874f8062..00000000 --- a/BookPlayerWatch/pt-PT.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Biblioteca"; -"delete_button" = "Apagar"; -"ok_button" = "OK"; -"recent_title" = "Recente"; -"storage_total_title" = "Total de armazenamento utilizado"; -"watchapp_last_played_title" = "Último Reproduzido"; -"watchapp_refresh_data_title" = "Actualizar dados"; -"watchapp_connect_error_title" = "Erro de ligação"; -"watchapp_connect_error_description" = "Há um problema de ligação ao seu telemóvel, tentar novamente mais tarde"; -"chapters_title" = "Capítulos"; -"settings_controls_title" = "Controles do Reprodutor"; -"settings_boostvolume_title" = "Aumentar volume"; -"settings_skip_title" = "SALTAR INTERVALOS"; -"settings_skip_rewind_title" = "Rebobinar"; -"settings_skip_forward_title" = "Avançar"; -"settings_autoplay_section_title" = "REPRODUÇÃO AUTOMÁTICA"; -"speed_title" = "velocidade"; -"logout_title" = "Sair"; -"benefits_watchapp_description" = "Transmita ou baixe seus livros e ouça em qualquer lugar, sem precisar do seu celular."; -"subscription_required_title" = "Assinatura necessária"; -"Swipe rows to see download options" = "Deslize as linhas para ver as opções de download"; diff --git a/BookPlayerWatch/ro.lproj/Localizable.strings b/BookPlayerWatch/ro.lproj/Localizable.strings deleted file mode 100644 index b3419ae3..00000000 --- a/BookPlayerWatch/ro.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Bibliotecă"; -"delete_button" = "Ștergere"; -"ok_button" = "OK"; -"recent_title" = "Recent"; -"storage_total_title" = "Spațiul total folosit"; -"watchapp_last_played_title" = "Ultimul redat"; -"watchapp_refresh_data_title" = "Actualizați datele"; -"watchapp_connect_error_title" = "Eroare de conectivitate"; -"watchapp_connect_error_description" = "Există o problemă de conectare la telefonul dvs., încercați din nou mai târziu"; -"chapters_title" = "Capitole"; -"settings_controls_title" = "Controlul Playerului"; -"settings_boostvolume_title" = "Creșterea volumului"; -"settings_skip_title" = "SĂRIȚI INTERVALURILE"; -"settings_skip_rewind_title" = "Derulare înapoi"; -"settings_skip_forward_title" = "Înainte"; -"settings_autoplay_section_title" = "REDARE AUTOMATA"; -"speed_title" = "Viteza"; -"logout_title" = "Deconectați-vă"; -"benefits_watchapp_description" = "Transmiteți în flux sau descărcați cărțile și ascultați din mers fără telefon."; -"subscription_required_title" = "Este necesar un abonament"; -"Swipe rows to see download options" = "Glisați rândurile pentru a vedea opțiunile de descărcare"; diff --git a/BookPlayerWatch/ru.lproj/Localizable.strings b/BookPlayerWatch/ru.lproj/Localizable.strings deleted file mode 100644 index a09774fc..00000000 --- a/BookPlayerWatch/ru.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Библиотека"; -"delete_button" = "Удалить"; -"ok_button" = "OK"; -"recent_title" = "Последние"; -"storage_total_title" = "Использовано памяти"; -"watchapp_last_played_title" = "Последняя воспроизведенная книга"; -"watchapp_refresh_data_title" = "Обновить данные"; -"watchapp_connect_error_title" = "Ошибка подключения"; -"watchapp_connect_error_description" = "Не удается подключиться к вашему устройству, попробуйте позже"; -"chapters_title" = "Главы"; -"settings_controls_title" = "Управление плеером"; -"settings_boostvolume_title" = "Увеличить громкость"; -"settings_skip_title" = "ШАГ ПЕРЕМОТКИ"; -"settings_skip_rewind_title" = "Назад"; -"settings_skip_forward_title" = "Вперёд"; -"settings_autoplay_section_title" = "АВТОВОСПРОИЗВЕДЕНИЕ"; -"speed_title" = "скорость"; -"logout_title" = "Выйти"; -"benefits_watchapp_description" = "Слушайте книги онлайн или скачивайте их, где бы вы ни находились, без телефона."; -"subscription_required_title" = "Требуется подписка"; -"Swipe rows to see download options" = "Проведите пальцем по строкам, чтобы увидеть варианты загрузки"; diff --git a/BookPlayerWatch/sk-SK.lproj/Localizable.strings b/BookPlayerWatch/sk-SK.lproj/Localizable.strings deleted file mode 100644 index bfa9b168..00000000 --- a/BookPlayerWatch/sk-SK.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Knižnica"; -"delete_button" = "Odstrániť"; -"ok_button" = "OK"; -"recent_title" = "Nedávne"; -"storage_total_title" = "Celkový využitý priestor"; -"watchapp_last_played_title" = "Naposledy prehraté"; -"watchapp_refresh_data_title" = "Obnoviť dáta"; -"watchapp_connect_error_title" = "Chyba pripojenia"; -"watchapp_connect_error_description" = "Pri pripojení k telefónu došlo k problémom, vyskúšajte to prosím neskôr"; -"chapters_title" = "Kapitoly"; -"settings_controls_title" = "Ovládanie Prehrávača"; -"settings_boostvolume_title" = "Zvýšenie hlasitosti"; -"settings_skip_title" = "PRETÁČANIE"; -"settings_skip_rewind_title" = "Dozadu"; -"settings_skip_forward_title" = "Dopredu"; -"settings_autoplay_section_title" = "AUTOMATICKÉ PREHRÁVANIE"; -"speed_title" = "rýchlosť"; -"logout_title" = "Odhlásiť sa"; -"benefits_watchapp_description" = "Streamujte alebo sťahujte svoje knihy a počúvajte na cestách bez telefónu."; -"subscription_required_title" = "Vyžaduje sa predplatné"; -"Swipe rows to see download options" = "Potiahnutím riadkov zobrazíte možnosti sťahovania"; diff --git a/BookPlayerWatch/sv.lproj/Localizable.strings b/BookPlayerWatch/sv.lproj/Localizable.strings deleted file mode 100644 index bbba1328..00000000 --- a/BookPlayerWatch/sv.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Bibliotek"; -"delete_button" = "Radera"; -"ok_button" = "OK"; -"recent_title" = "Senaste"; -"storage_total_title" = "Totalt använt utrymme"; -"watchapp_last_played_title" = "Senast spelad"; -"watchapp_refresh_data_title" = "Uppdatera data"; -"watchapp_connect_error_title" = "Anslutningsfel"; -"watchapp_connect_error_description" = "Där är problem med att ansluta till din telefon, vänligen försök igen senare"; -"chapters_title" = "Kapitel"; -"settings_controls_title" = "Spelarkontroller"; -"settings_boostvolume_title" = "Öka volymen"; -"settings_skip_title" = "SNABBSPOLNING"; -"settings_skip_rewind_title" = "Tillbaka"; -"settings_skip_forward_title" = "Framåt"; -"settings_autoplay_section_title" = "AUTOSPELA"; -"speed_title" = "hastighet"; -"logout_title" = "Logga ut"; -"benefits_watchapp_description" = "Streama eller ladda ner dina böcker och lyssna på språng utan din telefon."; -"subscription_required_title" = "Prenumeration krävs"; -"Swipe rows to see download options" = "Svep rader för att se nedladdningsalternativ"; diff --git a/BookPlayerWatch/tr.lproj/Localizable.strings b/BookPlayerWatch/tr.lproj/Localizable.strings deleted file mode 100644 index dccb7b66..00000000 --- a/BookPlayerWatch/tr.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Kitaplık"; -"delete_button" = "Sil"; -"ok_button" = "Tamam"; -"recent_title" = "Son"; -"storage_total_title" = "Kullanılan toplam alan"; -"watchapp_last_played_title" = "Son Oynatılan"; -"watchapp_refresh_data_title" = "Verileri yenile"; -"watchapp_connect_error_title" = "Bağlantı Hatası"; -"watchapp_connect_error_description" = "Telefonunuza bağlanmada bir sorun var, lütfen daha sonra tekrar deneyin"; -"chapters_title" = "Bölümler"; -"settings_controls_title" = "Oynatıcı Kontrolleri"; -"settings_boostvolume_title" = "Sesi Güçlendir"; -"settings_skip_title" = "ATLAMA ARALIKLARI"; -"settings_skip_rewind_title" = "Geri Sarma"; -"settings_skip_forward_title" = "İleri Sarma"; -"settings_autoplay_section_title" = "OTOMATİK OYNATMA"; -"speed_title" = "hız"; -"logout_title" = "Çıkış Yap"; -"benefits_watchapp_description" = "Kitaplarınızı yayınlayın veya indirin ve telefonunuz olmadan hareket halindeyken dinleyin."; -"subscription_required_title" = "Abonelik gerekli"; -"Swipe rows to see download options" = "İndirme seçeneklerini görmek için satırları kaydırın"; diff --git a/BookPlayerWatch/uk.lproj/Localizable.strings b/BookPlayerWatch/uk.lproj/Localizable.strings deleted file mode 100644 index 1ad9779e..00000000 --- a/BookPlayerWatch/uk.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "Бібліотека"; -"delete_button" = "Видалити"; -"ok_button" = "Гаразд"; -"recent_title" = "Останні"; -"storage_total_title" = "Загальний використаний простір"; -"watchapp_last_played_title" = "Остання відтворена"; -"watchapp_refresh_data_title" = "Оновити дані"; -"watchapp_connect_error_title" = "Помилка з'єднання"; -"watchapp_connect_error_description" = "Виникла проблема з підключенням до телефону, будь ласка, спробуйте пізніше"; -"chapters_title" = "Розділи"; -"settings_controls_title" = "Керування програвачем"; -"settings_boostvolume_title" = "Збільшення гучності"; -"settings_skip_title" = "Інтервали перемотування"; -"settings_skip_rewind_title" = "Назад"; -"settings_skip_forward_title" = "Вперед"; -"settings_autoplay_section_title" = "АВТОМАТИЧНЕ ВІДТВОРЕННЯ"; -"speed_title" = "швидкість"; -"logout_title" = "Вийти"; -"benefits_watchapp_description" = "Транслюйте або завантажуйте свої книги та слухайте їх у дорозі без телефону."; -"subscription_required_title" = "Потрібна підписка"; -"Swipe rows to see download options" = "Гортайте рядки, щоб переглянути параметри завантаження"; diff --git a/BookPlayerWatch/zh-Hans.lproj/Localizable.strings b/BookPlayerWatch/zh-Hans.lproj/Localizable.strings deleted file mode 100644 index 9eba411f..00000000 --- a/BookPlayerWatch/zh-Hans.lproj/Localizable.strings +++ /dev/null @@ -1,29 +0,0 @@ -/* - Localizable.strings - BookPlayer - - Created by Gianni Carlo on 12/29/19. - Copyright © 2019 BookPlayer LLC. All rights reserved. -*/ - -"library_title" = "有声书库"; -"delete_button" = "删除"; -"ok_button" = "确定"; -"recent_title" = "最近"; -"storage_total_title" = "总使用空间"; -"watchapp_last_played_title" = "上次播放"; -"watchapp_refresh_data_title" = "刷新数据"; -"watchapp_connect_error_title" = "连接错误"; -"watchapp_connect_error_description" = "连接手机时出现问题,请稍后重试"; -"chapters_title" = "章节"; -"settings_controls_title" = "播放器控制"; -"settings_boostvolume_title" = "提高音量"; -"settings_skip_title" = "跳过间隔"; -"settings_skip_rewind_title" = "倒带"; -"settings_skip_forward_title" = "快进"; -"settings_autoplay_section_title" = "自动播放"; -"speed_title" = "速度"; -"logout_title" = "登出"; -"benefits_watchapp_description" = "流式传输或下载您的书籍并随时随地收听,无需使用手机。"; -"subscription_required_title" = "需要订阅"; -"Swipe rows to see download options" = "滑动行查看下载选项"; From 942c1511adeba47f42bfab222fa25bd3352074d7 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Fri, 3 Jan 2025 15:55:26 -0500 Subject: [PATCH 7/7] Fix toggles not working with VO --- .../PlaybackFullControlsView.swift | 21 ++++++++----------- BookPlayerWatch/PlayerToolbarView.swift | 14 +------------ 2 files changed, 10 insertions(+), 25 deletions(-) diff --git a/BookPlayerWatch/PlaybackFullControlsView.swift b/BookPlayerWatch/PlaybackFullControlsView.swift index ab456696..684ca9e2 100644 --- a/BookPlayerWatch/PlaybackFullControlsView.swift +++ b/BookPlayerWatch/PlaybackFullControlsView.swift @@ -11,6 +11,8 @@ import SwiftUI struct PlaybackFullControlsView: View { @ObservedObject var model: PlaybackFullControlsViewModel + @AppStorage(Constants.UserDefaults.globalSpeedEnabled) var globalSpeedEnabled: Bool = false + @AppStorage(Constants.UserDefaults.boostVolumeEnabled) var boostVolumeEnabled: Bool = false @AppStorage(Constants.UserDefaults.autoplayEnabled) var autoplayEnabled: Bool = true @AppStorage(Constants.UserDefaults.rewindInterval) var rewindInterval: TimeInterval = 30 @AppStorage(Constants.UserDefaults.forwardInterval) var forwardInterval: TimeInterval = 30 @@ -28,6 +30,7 @@ struct PlaybackFullControlsView: View { ResizeableImageView(name: "minus.circle") } .buttonStyle(PlainButtonStyle()) + .accessibilityLabel("➖") .frame(width: metrics.size.width * 0.15) Spacer() .padding([.leading], 5) @@ -51,6 +54,7 @@ struct PlaybackFullControlsView: View { ResizeableImageView(name: "plus.circle") } .buttonStyle(PlainButtonStyle()) + .accessibilityLabel("➕") .frame(width: metrics.size.width * 0.15) Spacer() } @@ -61,21 +65,11 @@ struct PlaybackFullControlsView: View { Section { Toggle( "settings_globalspeed_title", - isOn: .init( - get: { model.globalSpeed }, - set: { _ in - model.handleGlobalSpeedToggle() - } - ) + isOn: $globalSpeedEnabled ) Toggle( "settings_boostvolume_title", - isOn: .init( - get: { model.boostVolume }, - set: { _ in - model.handleBoostVolumeToggle() - } - ) + isOn: $boostVolumeEnabled ) Toggle( "settings_autoplay_section_title".localized.capitalized, @@ -108,6 +102,9 @@ struct PlaybackFullControlsView: View { } } .environment(\.defaultMinListRowHeight, 40) + .onChange(of: boostVolumeEnabled) { boostVolume in + model.handleBoostVolumeToggle(boostVolume) + } } .navigationTitle("settings_controls_title") } diff --git a/BookPlayerWatch/PlayerToolbarView.swift b/BookPlayerWatch/PlayerToolbarView.swift index 383a3a89..a058cc91 100644 --- a/BookPlayerWatch/PlayerToolbarView.swift +++ b/BookPlayerWatch/PlayerToolbarView.swift @@ -19,26 +19,14 @@ final class PlaybackFullControlsViewModel: ObservableObject { var boostVolume: Bool { UserDefaults.standard.bool(forKey: Constants.UserDefaults.boostVolumeEnabled) } - - var globalSpeed: Bool { - UserDefaults.standard.bool(forKey: Constants.UserDefaults.globalSpeedEnabled) - } init(playerManager: PlayerManager) { self.playerManager = playerManager } - func handleBoostVolumeToggle() { - let flag = !boostVolume - UserDefaults.standard.set(flag, forKey: Constants.UserDefaults.boostVolumeEnabled) - + func handleBoostVolumeToggle(_ flag: Bool) { self.playerManager.setBoostVolume(flag) } - - func handleGlobalSpeedToggle() { - let flag = !globalSpeed - UserDefaults.standard.set(flag, forKey: Constants.UserDefaults.globalSpeedEnabled) - } func handleNewSpeed(_ rate: Float) { let roundedValue = round(rate * 100) / 100.0