Localization strings (#878)
This commit is contained in:
parent
043a95de00
commit
18b06ff297
|
@ -20,6 +20,8 @@ internal enum L10n {
|
||||||
internal static let accessibility = L10n.tr("Localizable", "accessibility", fallback: "Accessibility")
|
internal static let accessibility = L10n.tr("Localizable", "accessibility", fallback: "Accessibility")
|
||||||
/// Add URL
|
/// Add URL
|
||||||
internal static let addURL = L10n.tr("Localizable", "addURL", fallback: "Add URL")
|
internal static let addURL = L10n.tr("Localizable", "addURL", fallback: "Add URL")
|
||||||
|
/// Advanced
|
||||||
|
internal static let advanced = L10n.tr("Localizable", "advanced", fallback: "Advanced")
|
||||||
/// Airs %s
|
/// Airs %s
|
||||||
internal static func airWithDate(_ p1: UnsafePointer<CChar>) -> String {
|
internal static func airWithDate(_ p1: UnsafePointer<CChar>) -> String {
|
||||||
return L10n.tr("Localizable", "airWithDate", p1, fallback: "Airs %s")
|
return L10n.tr("Localizable", "airWithDate", p1, fallback: "Airs %s")
|
||||||
|
@ -34,10 +36,14 @@ internal enum L10n {
|
||||||
internal static let appIcon = L10n.tr("Localizable", "appIcon", fallback: "App Icon")
|
internal static let appIcon = L10n.tr("Localizable", "appIcon", fallback: "App Icon")
|
||||||
/// Apply
|
/// Apply
|
||||||
internal static let apply = L10n.tr("Localizable", "apply", fallback: "Apply")
|
internal static let apply = L10n.tr("Localizable", "apply", fallback: "Apply")
|
||||||
|
/// Aspect Fill
|
||||||
|
internal static let aspectFill = L10n.tr("Localizable", "aspectFill", fallback: "Aspect Fill")
|
||||||
/// Audio
|
/// Audio
|
||||||
internal static let audio = L10n.tr("Localizable", "audio", fallback: "Audio")
|
internal static let audio = L10n.tr("Localizable", "audio", fallback: "Audio")
|
||||||
/// Audio & Captions
|
/// Audio & Captions
|
||||||
internal static let audioAndCaptions = L10n.tr("Localizable", "audioAndCaptions", fallback: "Audio & Captions")
|
internal static let audioAndCaptions = L10n.tr("Localizable", "audioAndCaptions", fallback: "Audio & Captions")
|
||||||
|
/// Audio Offset
|
||||||
|
internal static let audioOffset = L10n.tr("Localizable", "audioOffset", fallback: "Audio Offset")
|
||||||
/// Audio Track
|
/// Audio Track
|
||||||
internal static let audioTrack = L10n.tr("Localizable", "audioTrack", fallback: "Audio Track")
|
internal static let audioTrack = L10n.tr("Localizable", "audioTrack", fallback: "Audio Track")
|
||||||
/// Authorize
|
/// Authorize
|
||||||
|
@ -46,10 +52,14 @@ internal enum L10n {
|
||||||
internal static let autoPlay = L10n.tr("Localizable", "autoPlay", fallback: "Auto Play")
|
internal static let autoPlay = L10n.tr("Localizable", "autoPlay", fallback: "Auto Play")
|
||||||
/// Back
|
/// Back
|
||||||
internal static let back = L10n.tr("Localizable", "back", fallback: "Back")
|
internal static let back = L10n.tr("Localizable", "back", fallback: "Back")
|
||||||
|
/// Bar Buttons
|
||||||
|
internal static let barButtons = L10n.tr("Localizable", "barButtons", fallback: "Bar Buttons")
|
||||||
/// Blue
|
/// Blue
|
||||||
internal static let blue = L10n.tr("Localizable", "blue", fallback: "Blue")
|
internal static let blue = L10n.tr("Localizable", "blue", fallback: "Blue")
|
||||||
/// Bugs and Features
|
/// Bugs and Features
|
||||||
internal static let bugsAndFeatures = L10n.tr("Localizable", "bugsAndFeatures", fallback: "Bugs and Features")
|
internal static let bugsAndFeatures = L10n.tr("Localizable", "bugsAndFeatures", fallback: "Bugs and Features")
|
||||||
|
/// Buttons
|
||||||
|
internal static let buttons = L10n.tr("Localizable", "buttons", fallback: "Buttons")
|
||||||
/// Cancel
|
/// Cancel
|
||||||
internal static let cancel = L10n.tr("Localizable", "cancel", fallback: "Cancel")
|
internal static let cancel = L10n.tr("Localizable", "cancel", fallback: "Cancel")
|
||||||
/// Cannot connect to host
|
/// Cannot connect to host
|
||||||
|
@ -64,6 +74,8 @@ internal enum L10n {
|
||||||
internal static let channels = L10n.tr("Localizable", "channels", fallback: "Channels")
|
internal static let channels = L10n.tr("Localizable", "channels", fallback: "Channels")
|
||||||
/// Chapters
|
/// Chapters
|
||||||
internal static let chapters = L10n.tr("Localizable", "chapters", fallback: "Chapters")
|
internal static let chapters = L10n.tr("Localizable", "chapters", fallback: "Chapters")
|
||||||
|
/// Chapter Slider
|
||||||
|
internal static let chapterSlider = L10n.tr("Localizable", "chapterSlider", fallback: "Chapter Slider")
|
||||||
/// Cinematic
|
/// Cinematic
|
||||||
internal static let cinematic = L10n.tr("Localizable", "cinematic", fallback: "Cinematic")
|
internal static let cinematic = L10n.tr("Localizable", "cinematic", fallback: "Cinematic")
|
||||||
/// Cinematic Views
|
/// Cinematic Views
|
||||||
|
@ -76,6 +88,8 @@ internal enum L10n {
|
||||||
internal static let collections = L10n.tr("Localizable", "collections", fallback: "Collections")
|
internal static let collections = L10n.tr("Localizable", "collections", fallback: "Collections")
|
||||||
/// Color
|
/// Color
|
||||||
internal static let color = L10n.tr("Localizable", "color", fallback: "Color")
|
internal static let color = L10n.tr("Localizable", "color", fallback: "Color")
|
||||||
|
/// Coming soon
|
||||||
|
internal static let comingSoon = L10n.tr("Localizable", "comingSoon", fallback: "Coming soon")
|
||||||
/// Compact
|
/// Compact
|
||||||
internal static let compact = L10n.tr("Localizable", "compact", fallback: "Compact")
|
internal static let compact = L10n.tr("Localizable", "compact", fallback: "Compact")
|
||||||
/// Compact Logo
|
/// Compact Logo
|
||||||
|
@ -102,6 +116,8 @@ internal enum L10n {
|
||||||
internal static let `continue` = L10n.tr("Localizable", "continue", fallback: "Continue")
|
internal static let `continue` = L10n.tr("Localizable", "continue", fallback: "Continue")
|
||||||
/// Continue Watching
|
/// Continue Watching
|
||||||
internal static let continueWatching = L10n.tr("Localizable", "continueWatching", fallback: "Continue Watching")
|
internal static let continueWatching = L10n.tr("Localizable", "continueWatching", fallback: "Continue Watching")
|
||||||
|
/// Current
|
||||||
|
internal static let current = L10n.tr("Localizable", "current", fallback: "Current")
|
||||||
/// Current Position
|
/// Current Position
|
||||||
internal static let currentPosition = L10n.tr("Localizable", "currentPosition", fallback: "Current Position")
|
internal static let currentPosition = L10n.tr("Localizable", "currentPosition", fallback: "Current Position")
|
||||||
/// Customize
|
/// Customize
|
||||||
|
@ -114,6 +130,8 @@ internal enum L10n {
|
||||||
internal static let delivery = L10n.tr("Localizable", "delivery", fallback: "Delivery")
|
internal static let delivery = L10n.tr("Localizable", "delivery", fallback: "Delivery")
|
||||||
/// DIRECTOR
|
/// DIRECTOR
|
||||||
internal static let director = L10n.tr("Localizable", "director", fallback: "DIRECTOR")
|
internal static let director = L10n.tr("Localizable", "director", fallback: "DIRECTOR")
|
||||||
|
/// Disabled
|
||||||
|
internal static let disabled = L10n.tr("Localizable", "disabled", fallback: "Disabled")
|
||||||
/// Discovered Servers
|
/// Discovered Servers
|
||||||
internal static let discoveredServers = L10n.tr("Localizable", "discoveredServers", fallback: "Discovered Servers")
|
internal static let discoveredServers = L10n.tr("Localizable", "discoveredServers", fallback: "Discovered Servers")
|
||||||
/// Dismiss
|
/// Dismiss
|
||||||
|
@ -126,6 +144,8 @@ internal enum L10n {
|
||||||
internal static let editJumpLengths = L10n.tr("Localizable", "editJumpLengths", fallback: "Edit Jump Lengths")
|
internal static let editJumpLengths = L10n.tr("Localizable", "editJumpLengths", fallback: "Edit Jump Lengths")
|
||||||
/// Empty Next Up
|
/// Empty Next Up
|
||||||
internal static let emptyNextUp = L10n.tr("Localizable", "emptyNextUp", fallback: "Empty Next Up")
|
internal static let emptyNextUp = L10n.tr("Localizable", "emptyNextUp", fallback: "Empty Next Up")
|
||||||
|
/// Enabled
|
||||||
|
internal static let enabled = L10n.tr("Localizable", "enabled", fallback: "Enabled")
|
||||||
/// Episode Landscape Poster
|
/// Episode Landscape Poster
|
||||||
internal static let episodeLandscapePoster = L10n.tr("Localizable", "episodeLandscapePoster", fallback: "Episode Landscape Poster")
|
internal static let episodeLandscapePoster = L10n.tr("Localizable", "episodeLandscapePoster", fallback: "Episode Landscape Poster")
|
||||||
/// Episode %1$@
|
/// Episode %1$@
|
||||||
|
@ -154,6 +174,8 @@ internal enum L10n {
|
||||||
internal static let filters = L10n.tr("Localizable", "filters", fallback: "Filters")
|
internal static let filters = L10n.tr("Localizable", "filters", fallback: "Filters")
|
||||||
/// Genres
|
/// Genres
|
||||||
internal static let genres = L10n.tr("Localizable", "genres", fallback: "Genres")
|
internal static let genres = L10n.tr("Localizable", "genres", fallback: "Genres")
|
||||||
|
/// Gestures
|
||||||
|
internal static let gestures = L10n.tr("Localizable", "gestures", fallback: "Gestures")
|
||||||
/// Green
|
/// Green
|
||||||
internal static let green = L10n.tr("Localizable", "green", fallback: "Green")
|
internal static let green = L10n.tr("Localizable", "green", fallback: "Green")
|
||||||
/// Grid
|
/// Grid
|
||||||
|
@ -172,6 +194,8 @@ internal enum L10n {
|
||||||
internal static let invertedLight = L10n.tr("Localizable", "invertedLight", fallback: "Inverted Light")
|
internal static let invertedLight = L10n.tr("Localizable", "invertedLight", fallback: "Inverted Light")
|
||||||
/// Items
|
/// Items
|
||||||
internal static let items = L10n.tr("Localizable", "items", fallback: "Items")
|
internal static let items = L10n.tr("Localizable", "items", fallback: "Items")
|
||||||
|
/// Jump
|
||||||
|
internal static let jump = L10n.tr("Localizable", "jump", fallback: "Jump")
|
||||||
/// Jump Backward
|
/// Jump Backward
|
||||||
internal static let jumpBackward = L10n.tr("Localizable", "jumpBackward", fallback: "Jump Backward")
|
internal static let jumpBackward = L10n.tr("Localizable", "jumpBackward", fallback: "Jump Backward")
|
||||||
/// Jump Backward Length
|
/// Jump Backward Length
|
||||||
|
@ -186,6 +210,8 @@ internal enum L10n {
|
||||||
internal static func jumpLengthSeconds(_ p1: UnsafePointer<CChar>) -> String {
|
internal static func jumpLengthSeconds(_ p1: UnsafePointer<CChar>) -> String {
|
||||||
return L10n.tr("Localizable", "jumpLengthSeconds", p1, fallback: "%s seconds")
|
return L10n.tr("Localizable", "jumpLengthSeconds", p1, fallback: "%s seconds")
|
||||||
}
|
}
|
||||||
|
/// Kids
|
||||||
|
internal static let kids = L10n.tr("Localizable", "kids", fallback: "Kids")
|
||||||
/// Larger
|
/// Larger
|
||||||
internal static let larger = L10n.tr("Localizable", "larger", fallback: "Larger")
|
internal static let larger = L10n.tr("Localizable", "larger", fallback: "Larger")
|
||||||
/// Largest
|
/// Largest
|
||||||
|
@ -212,8 +238,12 @@ internal enum L10n {
|
||||||
internal static func loginToWithString(_ p1: Any) -> String {
|
internal static func loginToWithString(_ p1: Any) -> String {
|
||||||
return L10n.tr("Localizable", "loginToWithString", String(describing: p1), fallback: "Login to %@")
|
return L10n.tr("Localizable", "loginToWithString", String(describing: p1), fallback: "Login to %@")
|
||||||
}
|
}
|
||||||
|
/// Logs
|
||||||
|
internal static let logs = L10n.tr("Localizable", "logs", fallback: "Logs")
|
||||||
/// Media
|
/// Media
|
||||||
internal static let media = L10n.tr("Localizable", "media", fallback: "Media")
|
internal static let media = L10n.tr("Localizable", "media", fallback: "Media")
|
||||||
|
/// Menu Buttons
|
||||||
|
internal static let menuButtons = L10n.tr("Localizable", "menuButtons", fallback: "Menu Buttons")
|
||||||
/// Missing
|
/// Missing
|
||||||
internal static let missing = L10n.tr("Localizable", "missing", fallback: "Missing")
|
internal static let missing = L10n.tr("Localizable", "missing", fallback: "Missing")
|
||||||
/// Missing Items
|
/// Missing Items
|
||||||
|
@ -228,10 +258,14 @@ internal enum L10n {
|
||||||
}
|
}
|
||||||
/// Name
|
/// Name
|
||||||
internal static let name = L10n.tr("Localizable", "name", fallback: "Name")
|
internal static let name = L10n.tr("Localizable", "name", fallback: "Name")
|
||||||
|
/// Native Player
|
||||||
|
internal static let nativePlayer = L10n.tr("Localizable", "nativePlayer", fallback: "Native Player")
|
||||||
/// Networking
|
/// Networking
|
||||||
internal static let networking = L10n.tr("Localizable", "networking", fallback: "Networking")
|
internal static let networking = L10n.tr("Localizable", "networking", fallback: "Networking")
|
||||||
/// Network timed out
|
/// Network timed out
|
||||||
internal static let networkTimedOut = L10n.tr("Localizable", "networkTimedOut", fallback: "Network timed out")
|
internal static let networkTimedOut = L10n.tr("Localizable", "networkTimedOut", fallback: "Network timed out")
|
||||||
|
/// News
|
||||||
|
internal static let news = L10n.tr("Localizable", "news", fallback: "News")
|
||||||
/// Next
|
/// Next
|
||||||
internal static let next = L10n.tr("Localizable", "next", fallback: "Next")
|
internal static let next = L10n.tr("Localizable", "next", fallback: "Next")
|
||||||
/// Next Item
|
/// Next Item
|
||||||
|
@ -268,6 +302,8 @@ internal enum L10n {
|
||||||
internal static let ok = L10n.tr("Localizable", "ok", fallback: "Ok")
|
internal static let ok = L10n.tr("Localizable", "ok", fallback: "Ok")
|
||||||
/// 1 user
|
/// 1 user
|
||||||
internal static let oneUser = L10n.tr("Localizable", "oneUser", fallback: "1 user")
|
internal static let oneUser = L10n.tr("Localizable", "oneUser", fallback: "1 user")
|
||||||
|
/// On Now
|
||||||
|
internal static let onNow = L10n.tr("Localizable", "onNow", fallback: "On Now")
|
||||||
/// Operating System
|
/// Operating System
|
||||||
internal static let operatingSystem = L10n.tr("Localizable", "operatingSystem", fallback: "Operating System")
|
internal static let operatingSystem = L10n.tr("Localizable", "operatingSystem", fallback: "Operating System")
|
||||||
/// Orange
|
/// Orange
|
||||||
|
@ -290,12 +326,18 @@ internal enum L10n {
|
||||||
}
|
}
|
||||||
/// Password
|
/// Password
|
||||||
internal static let password = L10n.tr("Localizable", "password", fallback: "Password")
|
internal static let password = L10n.tr("Localizable", "password", fallback: "Password")
|
||||||
|
/// Pause on background
|
||||||
|
internal static let pauseOnBackground = L10n.tr("Localizable", "pauseOnBackground", fallback: "Pause on background")
|
||||||
/// People
|
/// People
|
||||||
internal static let people = L10n.tr("Localizable", "people", fallback: "People")
|
internal static let people = L10n.tr("Localizable", "people", fallback: "People")
|
||||||
/// Play
|
/// Play
|
||||||
internal static let play = L10n.tr("Localizable", "play", fallback: "Play")
|
internal static let play = L10n.tr("Localizable", "play", fallback: "Play")
|
||||||
/// Play / Pause
|
/// Play / Pause
|
||||||
internal static let playAndPause = L10n.tr("Localizable", "playAndPause", fallback: "Play / Pause")
|
internal static let playAndPause = L10n.tr("Localizable", "playAndPause", fallback: "Play / Pause")
|
||||||
|
/// Playback
|
||||||
|
internal static let playback = L10n.tr("Localizable", "playback", fallback: "Playback")
|
||||||
|
/// Playback Buttons
|
||||||
|
internal static let playbackButtons = L10n.tr("Localizable", "playbackButtons", fallback: "Playback Buttons")
|
||||||
/// Playback settings
|
/// Playback settings
|
||||||
internal static let playbackSettings = L10n.tr("Localizable", "playbackSettings", fallback: "Playback settings")
|
internal static let playbackSettings = L10n.tr("Localizable", "playbackSettings", fallback: "Playback settings")
|
||||||
/// Playback Speed
|
/// Playback Speed
|
||||||
|
@ -310,6 +352,8 @@ internal enum L10n {
|
||||||
internal static let playNext = L10n.tr("Localizable", "playNext", fallback: "Play Next")
|
internal static let playNext = L10n.tr("Localizable", "playNext", fallback: "Play Next")
|
||||||
/// Play Next Item
|
/// Play Next Item
|
||||||
internal static let playNextItem = L10n.tr("Localizable", "playNextItem", fallback: "Play Next Item")
|
internal static let playNextItem = L10n.tr("Localizable", "playNextItem", fallback: "Play Next Item")
|
||||||
|
/// Play on active
|
||||||
|
internal static let playOnActive = L10n.tr("Localizable", "playOnActive", fallback: "Play on active")
|
||||||
/// Play Previous Item
|
/// Play Previous Item
|
||||||
internal static let playPreviousItem = L10n.tr("Localizable", "playPreviousItem", fallback: "Play Previous Item")
|
internal static let playPreviousItem = L10n.tr("Localizable", "playPreviousItem", fallback: "Play Previous Item")
|
||||||
/// Posters
|
/// Posters
|
||||||
|
@ -364,10 +408,14 @@ internal enum L10n {
|
||||||
internal static let regular = L10n.tr("Localizable", "regular", fallback: "Regular")
|
internal static let regular = L10n.tr("Localizable", "regular", fallback: "Regular")
|
||||||
/// Released
|
/// Released
|
||||||
internal static let released = L10n.tr("Localizable", "released", fallback: "Released")
|
internal static let released = L10n.tr("Localizable", "released", fallback: "Released")
|
||||||
|
/// Reload
|
||||||
|
internal static let reload = L10n.tr("Localizable", "reload", fallback: "Reload")
|
||||||
/// Remaining Time
|
/// Remaining Time
|
||||||
internal static let remainingTime = L10n.tr("Localizable", "remainingTime", fallback: "Remaining Time")
|
internal static let remainingTime = L10n.tr("Localizable", "remainingTime", fallback: "Remaining Time")
|
||||||
/// Remove
|
/// Remove
|
||||||
internal static let remove = L10n.tr("Localizable", "remove", fallback: "Remove")
|
internal static let remove = L10n.tr("Localizable", "remove", fallback: "Remove")
|
||||||
|
/// Remove All Servers
|
||||||
|
internal static let removeAllServers = L10n.tr("Localizable", "removeAllServers", fallback: "Remove All Servers")
|
||||||
/// Remove All Users
|
/// Remove All Users
|
||||||
internal static let removeAllUsers = L10n.tr("Localizable", "removeAllUsers", fallback: "Remove All Users")
|
internal static let removeAllUsers = L10n.tr("Localizable", "removeAllUsers", fallback: "Remove All Users")
|
||||||
/// Remove From Resume
|
/// Remove From Resume
|
||||||
|
@ -378,16 +426,26 @@ internal enum L10n {
|
||||||
internal static let requestFeature = L10n.tr("Localizable", "requestFeature", fallback: "Request a Feature")
|
internal static let requestFeature = L10n.tr("Localizable", "requestFeature", fallback: "Request a Feature")
|
||||||
/// Reset
|
/// Reset
|
||||||
internal static let reset = L10n.tr("Localizable", "reset", fallback: "Reset")
|
internal static let reset = L10n.tr("Localizable", "reset", fallback: "Reset")
|
||||||
|
/// Reset all settings back to defaults.
|
||||||
|
internal static let resetAllSettings = L10n.tr("Localizable", "resetAllSettings", fallback: "Reset all settings back to defaults.")
|
||||||
/// Reset App Settings
|
/// Reset App Settings
|
||||||
internal static let resetAppSettings = L10n.tr("Localizable", "resetAppSettings", fallback: "Reset App Settings")
|
internal static let resetAppSettings = L10n.tr("Localizable", "resetAppSettings", fallback: "Reset App Settings")
|
||||||
/// Reset User Settings
|
/// Reset User Settings
|
||||||
internal static let resetUserSettings = L10n.tr("Localizable", "resetUserSettings", fallback: "Reset User Settings")
|
internal static let resetUserSettings = L10n.tr("Localizable", "resetUserSettings", fallback: "Reset User Settings")
|
||||||
/// Resume 5 Second Offset
|
/// Resume 5 Second Offset
|
||||||
internal static let resume5SecondOffset = L10n.tr("Localizable", "resume5SecondOffset", fallback: "Resume 5 Second Offset")
|
internal static let resume5SecondOffset = L10n.tr("Localizable", "resume5SecondOffset", fallback: "Resume 5 Second Offset")
|
||||||
|
/// Resume Offset
|
||||||
|
internal static let resumeOffset = L10n.tr("Localizable", "resumeOffset", fallback: "Resume Offset")
|
||||||
|
/// Resume content seconds before the recorded resume time
|
||||||
|
internal static let resumeOffsetDescription = L10n.tr("Localizable", "resumeOffsetDescription", fallback: "Resume content seconds before the recorded resume time")
|
||||||
|
/// Retrieving media information
|
||||||
|
internal static let retrievingMediaInformation = L10n.tr("Localizable", "retrievingMediaInformation", fallback: "Retrieving media information")
|
||||||
/// Retry
|
/// Retry
|
||||||
internal static let retry = L10n.tr("Localizable", "retry", fallback: "Retry")
|
internal static let retry = L10n.tr("Localizable", "retry", fallback: "Retry")
|
||||||
/// Runtime
|
/// Runtime
|
||||||
internal static let runtime = L10n.tr("Localizable", "runtime", fallback: "Runtime")
|
internal static let runtime = L10n.tr("Localizable", "runtime", fallback: "Runtime")
|
||||||
|
/// Scrub Current Time
|
||||||
|
internal static let scrubCurrentTime = L10n.tr("Localizable", "scrubCurrentTime", fallback: "Scrub Current Time")
|
||||||
/// Search
|
/// Search
|
||||||
internal static let search = L10n.tr("Localizable", "search", fallback: "Search")
|
internal static let search = L10n.tr("Localizable", "search", fallback: "Search")
|
||||||
/// Search…
|
/// Search…
|
||||||
|
@ -458,6 +516,12 @@ internal enum L10n {
|
||||||
internal static func signInToServer(_ p1: UnsafePointer<CChar>) -> String {
|
internal static func signInToServer(_ p1: UnsafePointer<CChar>) -> String {
|
||||||
return L10n.tr("Localizable", "signInToServer", p1, fallback: "Sign In to %s")
|
return L10n.tr("Localizable", "signInToServer", p1, fallback: "Sign In to %s")
|
||||||
}
|
}
|
||||||
|
/// Slider
|
||||||
|
internal static let slider = L10n.tr("Localizable", "slider", fallback: "Slider")
|
||||||
|
/// Slider Color
|
||||||
|
internal static let sliderColor = L10n.tr("Localizable", "sliderColor", fallback: "Slider Color")
|
||||||
|
/// Slider Type
|
||||||
|
internal static let sliderType = L10n.tr("Localizable", "sliderType", fallback: "Slider Type")
|
||||||
/// Smaller
|
/// Smaller
|
||||||
internal static let smaller = L10n.tr("Localizable", "smaller", fallback: "Smaller")
|
internal static let smaller = L10n.tr("Localizable", "smaller", fallback: "Smaller")
|
||||||
/// Smallest
|
/// Smallest
|
||||||
|
@ -470,14 +534,20 @@ internal enum L10n {
|
||||||
internal static let sourceCode = L10n.tr("Localizable", "sourceCode", fallback: "Source Code")
|
internal static let sourceCode = L10n.tr("Localizable", "sourceCode", fallback: "Source Code")
|
||||||
/// Special Features
|
/// Special Features
|
||||||
internal static let specialFeatures = L10n.tr("Localizable", "specialFeatures", fallback: "Special Features")
|
internal static let specialFeatures = L10n.tr("Localizable", "specialFeatures", fallback: "Special Features")
|
||||||
|
/// Sports
|
||||||
|
internal static let sports = L10n.tr("Localizable", "sports", fallback: "Sports")
|
||||||
/// STUDIO
|
/// STUDIO
|
||||||
internal static let studio = L10n.tr("Localizable", "studio", fallback: "STUDIO")
|
internal static let studio = L10n.tr("Localizable", "studio", fallback: "STUDIO")
|
||||||
/// Studios
|
/// Studios
|
||||||
internal static let studios = L10n.tr("Localizable", "studios", fallback: "Studios")
|
internal static let studios = L10n.tr("Localizable", "studios", fallback: "Studios")
|
||||||
/// Subtitle
|
/// Subtitle
|
||||||
internal static let subtitle = L10n.tr("Localizable", "subtitle", fallback: "Subtitle")
|
internal static let subtitle = L10n.tr("Localizable", "subtitle", fallback: "Subtitle")
|
||||||
|
/// Subtitle Color
|
||||||
|
internal static let subtitleColor = L10n.tr("Localizable", "subtitleColor", fallback: "Subtitle Color")
|
||||||
/// Subtitle Font
|
/// Subtitle Font
|
||||||
internal static let subtitleFont = L10n.tr("Localizable", "subtitleFont", fallback: "Subtitle Font")
|
internal static let subtitleFont = L10n.tr("Localizable", "subtitleFont", fallback: "Subtitle Font")
|
||||||
|
/// Subtitle Offset
|
||||||
|
internal static let subtitleOffset = L10n.tr("Localizable", "subtitleOffset", fallback: "Subtitle Offset")
|
||||||
/// Subtitles
|
/// Subtitles
|
||||||
internal static let subtitles = L10n.tr("Localizable", "subtitles", fallback: "Subtitles")
|
internal static let subtitles = L10n.tr("Localizable", "subtitles", fallback: "Subtitles")
|
||||||
/// Subtitle Size
|
/// Subtitle Size
|
||||||
|
@ -492,8 +562,16 @@ internal enum L10n {
|
||||||
internal static let systemControlGesturesEnabled = L10n.tr("Localizable", "systemControlGesturesEnabled", fallback: "System Control Gestures Enabled")
|
internal static let systemControlGesturesEnabled = L10n.tr("Localizable", "systemControlGesturesEnabled", fallback: "System Control Gestures Enabled")
|
||||||
/// Tags
|
/// Tags
|
||||||
internal static let tags = L10n.tr("Localizable", "tags", fallback: "Tags")
|
internal static let tags = L10n.tr("Localizable", "tags", fallback: "Tags")
|
||||||
|
/// Timestamp
|
||||||
|
internal static let timestamp = L10n.tr("Localizable", "timestamp", fallback: "Timestamp")
|
||||||
|
/// Timestamp Type
|
||||||
|
internal static let timestampType = L10n.tr("Localizable", "timestampType", fallback: "Timestamp Type")
|
||||||
/// Too Many Redirects
|
/// Too Many Redirects
|
||||||
internal static let tooManyRedirects = L10n.tr("Localizable", "tooManyRedirects", fallback: "Too Many Redirects")
|
internal static let tooManyRedirects = L10n.tr("Localizable", "tooManyRedirects", fallback: "Too Many Redirects")
|
||||||
|
/// Trailing Value
|
||||||
|
internal static let trailingValue = L10n.tr("Localizable", "trailingValue", fallback: "Trailing Value")
|
||||||
|
/// Transition
|
||||||
|
internal static let transition = L10n.tr("Localizable", "transition", fallback: "Transition")
|
||||||
/// Try again
|
/// Try again
|
||||||
internal static let tryAgain = L10n.tr("Localizable", "tryAgain", fallback: "Try again")
|
internal static let tryAgain = L10n.tr("Localizable", "tryAgain", fallback: "Try again")
|
||||||
/// TV Shows
|
/// TV Shows
|
||||||
|
@ -534,6 +612,8 @@ internal enum L10n {
|
||||||
internal static let video = L10n.tr("Localizable", "video", fallback: "Video")
|
internal static let video = L10n.tr("Localizable", "video", fallback: "Video")
|
||||||
/// Video Player
|
/// Video Player
|
||||||
internal static let videoPlayer = L10n.tr("Localizable", "videoPlayer", fallback: "Video Player")
|
internal static let videoPlayer = L10n.tr("Localizable", "videoPlayer", fallback: "Video Player")
|
||||||
|
/// Video Player Type
|
||||||
|
internal static let videoPlayerType = L10n.tr("Localizable", "videoPlayerType", fallback: "Video Player Type")
|
||||||
/// Who's watching?
|
/// Who's watching?
|
||||||
internal static let whosWatching = L10n.tr("Localizable", "WhosWatching", fallback: "Who's watching?")
|
internal static let whosWatching = L10n.tr("Localizable", "WhosWatching", fallback: "Who's watching?")
|
||||||
/// WIP
|
/// WIP
|
||||||
|
|
|
@ -55,7 +55,7 @@ struct BasicAppSettingsView: View {
|
||||||
L10n.accentColorDescription.text
|
L10n.accentColorDescription.text
|
||||||
}
|
}
|
||||||
|
|
||||||
ChevronButton(title: "Logs")
|
ChevronButton(title: L10n.logs)
|
||||||
.onSelect {
|
.onSelect {
|
||||||
router.route(to: \.log)
|
router.route(to: \.log)
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ struct BasicAppSettingsView: View {
|
||||||
Button {
|
Button {
|
||||||
removeAllServersSelected = true
|
removeAllServersSelected = true
|
||||||
} label: {
|
} label: {
|
||||||
Text("Remove All Servers")
|
Text(L10n.removeAllServers)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -79,9 +79,9 @@ struct BasicAppSettingsView: View {
|
||||||
viewModel.resetUserSettings()
|
viewModel.resetUserSettings()
|
||||||
}
|
}
|
||||||
} message: {
|
} message: {
|
||||||
Text("Reset all settings back to defaults.")
|
Text(L10n.resetAllSettings)
|
||||||
}
|
}
|
||||||
.alert("Remove All Servers", isPresented: $removeAllServersSelected) {
|
.alert(L10n.removeAllServers, isPresented: $removeAllServersSelected) {
|
||||||
Button(L10n.reset, role: .destructive) {
|
Button(L10n.reset, role: .destructive) {
|
||||||
viewModel.removeAllServers()
|
viewModel.removeAllServers()
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ struct DownloadListView: View {
|
||||||
DownloadTaskRow(downloadTask: item)
|
DownloadTaskRow(downloadTask: item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.navigationTitle("Downloads")
|
.navigationTitle(L10n.downloads)
|
||||||
.navigationBarTitleDisplayMode(.inline)
|
.navigationBarTitleDisplayMode(.inline)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,7 +75,7 @@ extension DownloadTaskView {
|
||||||
.padding(.horizontal)
|
.padding(.horizontal)
|
||||||
case let .error(error):
|
case let .error(error):
|
||||||
VStack {
|
VStack {
|
||||||
PrimaryButton(title: "Retry")
|
PrimaryButton(title: L10n.retry)
|
||||||
.onSelect {
|
.onSelect {
|
||||||
downloadManager.download(task: downloadTask)
|
downloadManager.download(task: downloadTask)
|
||||||
}
|
}
|
||||||
|
@ -86,7 +86,7 @@ extension DownloadTaskView {
|
||||||
.padding(.horizontal)
|
.padding(.horizontal)
|
||||||
}
|
}
|
||||||
case .complete:
|
case .complete:
|
||||||
PrimaryButton(title: "Play")
|
PrimaryButton(title: L10n.play)
|
||||||
.onSelect {
|
.onSelect {
|
||||||
if Defaults[.VideoPlayer.videoPlayerType] == .swiftfin {
|
if Defaults[.VideoPlayer.videoPlayerType] == .swiftfin {
|
||||||
router.dismissCoordinator {
|
router.dismissCoordinator {
|
||||||
|
@ -113,7 +113,7 @@ extension DownloadTaskView {
|
||||||
Button {
|
Button {
|
||||||
isPresentingVideoPlayerTypeError = false
|
isPresentingVideoPlayerTypeError = false
|
||||||
} label: {
|
} label: {
|
||||||
Text("Dismiss")
|
Text(L10n.dismiss)
|
||||||
}
|
}
|
||||||
} message: {
|
} message: {
|
||||||
Text("Downloaded items are only playable through the Swiftfin video player.")
|
Text("Downloaded items are only playable through the Swiftfin video player.")
|
||||||
|
|
|
@ -80,11 +80,11 @@ struct LiveTVChannelsView: View {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
VStack {
|
VStack {
|
||||||
Text("No results.")
|
Text(L10n.noResults)
|
||||||
Button {
|
Button {
|
||||||
viewModel.getChannels()
|
viewModel.getChannels()
|
||||||
} label: {
|
} label: {
|
||||||
Text("Reload")
|
Text(L10n.reload)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,6 @@ import SwiftUI
|
||||||
|
|
||||||
struct LiveTVHomeView: View {
|
struct LiveTVHomeView: View {
|
||||||
var body: some View {
|
var body: some View {
|
||||||
Text("Coming Soon")
|
Text(L10n.comingSoon)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ struct LiveTVProgramsView: View {
|
||||||
LazyVStack(alignment: .leading) {
|
LazyVStack(alignment: .leading) {
|
||||||
if !viewModel.recommendedItems.isEmpty {
|
if !viewModel.recommendedItems.isEmpty {
|
||||||
let items = viewModel.recommendedItems
|
let items = viewModel.recommendedItems
|
||||||
PosterHStack(title: "On Now", type: .portrait, items: items)
|
PosterHStack(title: L10n.onNow, type: .portrait, items: items)
|
||||||
// .onSelect { item in
|
// .onSelect { item in
|
||||||
// if let chanId = item.channelId,
|
// if let chanId = item.channelId,
|
||||||
// let chan = viewModel.findChannel(id: chanId)
|
// let chan = viewModel.findChannel(id: chanId)
|
||||||
|
@ -34,7 +34,7 @@ struct LiveTVProgramsView: View {
|
||||||
}
|
}
|
||||||
if !viewModel.seriesItems.isEmpty {
|
if !viewModel.seriesItems.isEmpty {
|
||||||
let items = viewModel.seriesItems
|
let items = viewModel.seriesItems
|
||||||
PosterHStack(title: "Shows", type: .portrait, items: items)
|
PosterHStack(title: L10n.tvShows, type: .portrait, items: items)
|
||||||
// .onSelect { item in
|
// .onSelect { item in
|
||||||
// if let chanId = item.channelId,
|
// if let chanId = item.channelId,
|
||||||
// let chan = viewModel.findChannel(id: chanId)
|
// let chan = viewModel.findChannel(id: chanId)
|
||||||
|
@ -47,7 +47,7 @@ struct LiveTVProgramsView: View {
|
||||||
}
|
}
|
||||||
if !viewModel.movieItems.isEmpty {
|
if !viewModel.movieItems.isEmpty {
|
||||||
let items = viewModel.movieItems
|
let items = viewModel.movieItems
|
||||||
PosterHStack(title: "Movies", type: .portrait, items: items)
|
PosterHStack(title: L10n.movies, type: .portrait, items: items)
|
||||||
// .onSelect { item in
|
// .onSelect { item in
|
||||||
// if let chanId = item.channelId,
|
// if let chanId = item.channelId,
|
||||||
// let chan = viewModel.findChannel(id: chanId)
|
// let chan = viewModel.findChannel(id: chanId)
|
||||||
|
@ -60,7 +60,7 @@ struct LiveTVProgramsView: View {
|
||||||
}
|
}
|
||||||
if !viewModel.sportsItems.isEmpty {
|
if !viewModel.sportsItems.isEmpty {
|
||||||
let items = viewModel.sportsItems
|
let items = viewModel.sportsItems
|
||||||
PosterHStack(title: "Sports", type: .portrait, items: items)
|
PosterHStack(title: L10n.sports, type: .portrait, items: items)
|
||||||
// .onSelect { item in
|
// .onSelect { item in
|
||||||
// if let chanId = item.channelId,
|
// if let chanId = item.channelId,
|
||||||
// let chan = viewModel.findChannel(id: chanId)
|
// let chan = viewModel.findChannel(id: chanId)
|
||||||
|
@ -73,7 +73,7 @@ struct LiveTVProgramsView: View {
|
||||||
}
|
}
|
||||||
if !viewModel.kidsItems.isEmpty {
|
if !viewModel.kidsItems.isEmpty {
|
||||||
let items = viewModel.kidsItems
|
let items = viewModel.kidsItems
|
||||||
PosterHStack(title: "Kids", type: .portrait, items: items)
|
PosterHStack(title: L10n.kids, type: .portrait, items: items)
|
||||||
// .onSelect { item in
|
// .onSelect { item in
|
||||||
// if let chanId = item.channelId,
|
// if let chanId = item.channelId,
|
||||||
// let chan = viewModel.findChannel(id: chanId)
|
// let chan = viewModel.findChannel(id: chanId)
|
||||||
|
@ -86,7 +86,7 @@ struct LiveTVProgramsView: View {
|
||||||
}
|
}
|
||||||
if !viewModel.newsItems.isEmpty {
|
if !viewModel.newsItems.isEmpty {
|
||||||
let items = viewModel.newsItems
|
let items = viewModel.newsItems
|
||||||
PosterHStack(title: "News", type: .portrait, items: items)
|
PosterHStack(title: L10n.news, type: .portrait, items: items)
|
||||||
// .onSelect { item in
|
// .onSelect { item in
|
||||||
// if let chanId = item.channelId,
|
// if let chanId = item.channelId,
|
||||||
// let chan = viewModel.findChannel(id: chanId)
|
// let chan = viewModel.findChannel(id: chanId)
|
||||||
|
|
|
@ -51,11 +51,11 @@ struct FilterDrawerButtonSelectorView: View {
|
||||||
.onMove(perform: move)
|
.onMove(perform: move)
|
||||||
|
|
||||||
if _selectedButtons.isEmpty {
|
if _selectedButtons.isEmpty {
|
||||||
Text("None")
|
Text(L10n.none)
|
||||||
.foregroundColor(.secondary)
|
.foregroundColor(.secondary)
|
||||||
}
|
}
|
||||||
} header: {
|
} header: {
|
||||||
Text("Enabled")
|
Text(L10n.enabled)
|
||||||
}
|
}
|
||||||
|
|
||||||
Section {
|
Section {
|
||||||
|
@ -80,11 +80,11 @@ struct FilterDrawerButtonSelectorView: View {
|
||||||
}
|
}
|
||||||
|
|
||||||
if disabledButtons.isEmpty {
|
if disabledButtons.isEmpty {
|
||||||
Text("None")
|
Text(L10n.none)
|
||||||
.foregroundColor(.secondary)
|
.foregroundColor(.secondary)
|
||||||
}
|
}
|
||||||
} header: {
|
} header: {
|
||||||
Text("Disabled")
|
Text(L10n.disabled)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.animation(.linear(duration: 0.2), value: _selectedButtons)
|
.animation(.linear(duration: 0.2), value: _selectedButtons)
|
||||||
|
|
|
@ -63,11 +63,11 @@ struct SettingsView: View {
|
||||||
|
|
||||||
Section {
|
Section {
|
||||||
EnumPicker(
|
EnumPicker(
|
||||||
title: "Video Player Type",
|
title: L10n.videoPlayerType,
|
||||||
selection: $videoPlayerType
|
selection: $videoPlayerType
|
||||||
)
|
)
|
||||||
|
|
||||||
ChevronButton(title: "Native Player")
|
ChevronButton(title: L10n.nativePlayer)
|
||||||
.onSelect {
|
.onSelect {
|
||||||
router.route(to: \.nativePlayerSettings)
|
router.route(to: \.nativePlayerSettings)
|
||||||
}
|
}
|
||||||
|
@ -83,7 +83,7 @@ struct SettingsView: View {
|
||||||
Section {
|
Section {
|
||||||
EnumPicker(title: L10n.appearance, selection: $appAppearance)
|
EnumPicker(title: L10n.appearance, selection: $appAppearance)
|
||||||
|
|
||||||
ChevronButton(title: "App Icon")
|
ChevronButton(title: L10n.appIcon)
|
||||||
.onSelect {
|
.onSelect {
|
||||||
router.route(to: \.appIconSelector)
|
router.route(to: \.appIconSelector)
|
||||||
}
|
}
|
||||||
|
@ -102,9 +102,9 @@ struct SettingsView: View {
|
||||||
}
|
}
|
||||||
|
|
||||||
Section {
|
Section {
|
||||||
ColorPicker("Accent Color", selection: $accentColor, supportsOpacity: false)
|
ColorPicker(L10n.accentColor, selection: $accentColor, supportsOpacity: false)
|
||||||
} footer: {
|
} footer: {
|
||||||
Text("Some views may need an app restart to update.")
|
Text(L10n.accentColorDescription)
|
||||||
}
|
}
|
||||||
|
|
||||||
ChevronButton(title: L10n.about)
|
ChevronButton(title: L10n.about)
|
||||||
|
@ -112,7 +112,7 @@ struct SettingsView: View {
|
||||||
router.route(to: \.about)
|
router.route(to: \.about)
|
||||||
}
|
}
|
||||||
|
|
||||||
ChevronButton(title: "Logs")
|
ChevronButton(title: L10n.logs)
|
||||||
.onSelect {
|
.onSelect {
|
||||||
router.route(to: \.log)
|
router.route(to: \.log)
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,7 +65,7 @@ struct VideoPlayerSettingsView: View {
|
||||||
var body: some View {
|
var body: some View {
|
||||||
Form {
|
Form {
|
||||||
|
|
||||||
ChevronButton(title: "Gestures")
|
ChevronButton(title: L10n.gestures)
|
||||||
.onSelect {
|
.onSelect {
|
||||||
router.route(to: \.gestureSettings)
|
router.route(to: \.gestureSettings)
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,7 @@ struct VideoPlayerSettingsView: View {
|
||||||
Section {
|
Section {
|
||||||
|
|
||||||
BasicStepper(
|
BasicStepper(
|
||||||
title: "Resume Offset",
|
title: L10n.resumeOffset,
|
||||||
value: $resumeOffset,
|
value: $resumeOffset,
|
||||||
range: 0 ... 30,
|
range: 0 ... 30,
|
||||||
step: 1
|
step: 1
|
||||||
|
@ -86,40 +86,40 @@ struct VideoPlayerSettingsView: View {
|
||||||
$0.secondFormat
|
$0.secondFormat
|
||||||
}
|
}
|
||||||
} footer: {
|
} footer: {
|
||||||
Text("Resume content seconds before the recorded resume time")
|
Text(L10n.resumeOffsetDescription)
|
||||||
}
|
}
|
||||||
|
|
||||||
Section("Buttons") {
|
Section(L10n.buttons) {
|
||||||
|
|
||||||
EnumPicker(title: "Playback Buttons", selection: $playbackButtonType)
|
EnumPicker(title: L10n.playbackButtons, selection: $playbackButtonType)
|
||||||
|
|
||||||
Toggle(isOn: $showJumpButtons) {
|
Toggle(isOn: $showJumpButtons) {
|
||||||
HStack {
|
HStack {
|
||||||
Image(systemName: "goforward")
|
Image(systemName: "goforward")
|
||||||
Text("Jump")
|
Text(L10n.jump)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ChevronButton(title: "Bar Buttons")
|
ChevronButton(title: L10n.barButtons)
|
||||||
.onSelect {
|
.onSelect {
|
||||||
router.route(to: \.actionButtonSelector, $barActionButtons)
|
router.route(to: \.actionButtonSelector, $barActionButtons)
|
||||||
}
|
}
|
||||||
|
|
||||||
ChevronButton(title: "Menu Buttons")
|
ChevronButton(title: L10n.menuButtons)
|
||||||
.onSelect {
|
.onSelect {
|
||||||
router.route(to: \.actionButtonSelector, $menuActionButtons)
|
router.route(to: \.actionButtonSelector, $menuActionButtons)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Section("Slider") {
|
Section(L10n.slider) {
|
||||||
|
|
||||||
Toggle("Chapter Slider", isOn: $chapterSlider)
|
Toggle(L10n.chapterSlider, isOn: $chapterSlider)
|
||||||
|
|
||||||
ColorPicker(selection: $sliderColor, supportsOpacity: false) {
|
ColorPicker(selection: $sliderColor, supportsOpacity: false) {
|
||||||
Text("Slider Color")
|
Text(L10n.sliderColor)
|
||||||
}
|
}
|
||||||
|
|
||||||
EnumPicker(title: "Slider Type", selection: $sliderType)
|
EnumPicker(title: L10n.sliderType, selection: $sliderType)
|
||||||
}
|
}
|
||||||
|
|
||||||
Section {
|
Section {
|
||||||
|
@ -137,31 +137,31 @@ struct VideoPlayerSettingsView: View {
|
||||||
)
|
)
|
||||||
|
|
||||||
ColorPicker(selection: $subtitleColor, supportsOpacity: false) {
|
ColorPicker(selection: $subtitleColor, supportsOpacity: false) {
|
||||||
Text("Subtitle Color")
|
Text(L10n.subtitleColor)
|
||||||
}
|
}
|
||||||
} header: {
|
} header: {
|
||||||
Text("Subtitle")
|
Text(L10n.subtitle)
|
||||||
} footer: {
|
} footer: {
|
||||||
// TODO: better wording
|
// TODO: better wording
|
||||||
Text("Settings only affect some subtitle types")
|
Text("Settings only affect some subtitle types")
|
||||||
}
|
}
|
||||||
|
|
||||||
Section("Timestamp") {
|
Section(L10n.timestamp) {
|
||||||
|
|
||||||
Toggle("Scrub Current Time", isOn: $showCurrentTimeWhileScrubbing)
|
Toggle(L10n.scrubCurrentTime, isOn: $showCurrentTimeWhileScrubbing)
|
||||||
|
|
||||||
EnumPicker(title: "Timestamp Type", selection: $timestampType)
|
EnumPicker(title: L10n.timestampType, selection: $timestampType)
|
||||||
|
|
||||||
EnumPicker(title: "Trailing Value", selection: $trailingTimestampType)
|
EnumPicker(title: L10n.trailingValue, selection: $trailingTimestampType)
|
||||||
}
|
}
|
||||||
|
|
||||||
Section("Transition") {
|
Section(L10n.transition) {
|
||||||
|
|
||||||
Toggle("Pause on background", isOn: $pauseOnBackground)
|
Toggle(L10n.pauseOnBackground, isOn: $pauseOnBackground)
|
||||||
Toggle("Play on active", isOn: $playOnActive)
|
Toggle(L10n.playOnActive, isOn: $playOnActive)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.navigationTitle("Video Player")
|
.navigationTitle(L10n.videoPlayer)
|
||||||
.onChange(of: barActionButtons) { newValue in
|
.onChange(of: barActionButtons) { newValue in
|
||||||
autoPlayEnabled = newValue.contains(.autoPlay) || menuActionButtons.contains(.autoPlay)
|
autoPlayEnabled = newValue.contains(.autoPlay) || menuActionButtons.contains(.autoPlay)
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ extension VideoPlayer {
|
||||||
|
|
||||||
VStack(spacing: 10) {
|
VStack(spacing: 10) {
|
||||||
|
|
||||||
Text("Retrieving media information")
|
Text(L10n.retrievingMediaInformation)
|
||||||
.foregroundColor(.white)
|
.foregroundColor(.white)
|
||||||
|
|
||||||
ProgressView()
|
ProgressView()
|
||||||
|
@ -30,7 +30,7 @@ extension VideoPlayer {
|
||||||
Button {
|
Button {
|
||||||
router.dismissCoordinator()
|
router.dismissCoordinator()
|
||||||
} label: {
|
} label: {
|
||||||
Text("Cancel")
|
Text(L10n.cancel)
|
||||||
.foregroundColor(.red)
|
.foregroundColor(.red)
|
||||||
.padding()
|
.padding()
|
||||||
.overlay {
|
.overlay {
|
||||||
|
|
|
@ -45,7 +45,7 @@ struct PlaybackSettingsView: View {
|
||||||
}
|
}
|
||||||
|
|
||||||
BasicStepper(
|
BasicStepper(
|
||||||
title: "Audio Offset",
|
title: L10n.audioOffset,
|
||||||
value: _audioOffset.wrappedValue,
|
value: _audioOffset.wrappedValue,
|
||||||
range: -30000 ... 30000,
|
range: -30000 ... 30000,
|
||||||
step: 100
|
step: 100
|
||||||
|
@ -55,7 +55,7 @@ struct PlaybackSettingsView: View {
|
||||||
}
|
}
|
||||||
|
|
||||||
BasicStepper(
|
BasicStepper(
|
||||||
title: "Subtitle Offset",
|
title: L10n.subtitleOffset,
|
||||||
value: _subtitleOffset.wrappedValue,
|
value: _subtitleOffset.wrappedValue,
|
||||||
range: -30000 ... 30000,
|
range: -30000 ... 30000,
|
||||||
step: 100
|
step: 100
|
||||||
|
@ -65,7 +65,7 @@ struct PlaybackSettingsView: View {
|
||||||
}
|
}
|
||||||
|
|
||||||
if !viewModel.videoStreams.isEmpty {
|
if !viewModel.videoStreams.isEmpty {
|
||||||
Section("Video") {
|
Section(L10n.video) {
|
||||||
ForEach(viewModel.videoStreams, id: \.displayTitle) { mediaStream in
|
ForEach(viewModel.videoStreams, id: \.displayTitle) { mediaStream in
|
||||||
ChevronButton(title: mediaStream.displayTitle ?? .emptyDash)
|
ChevronButton(title: mediaStream.displayTitle ?? .emptyDash)
|
||||||
.onSelect {
|
.onSelect {
|
||||||
|
@ -76,7 +76,7 @@ struct PlaybackSettingsView: View {
|
||||||
}
|
}
|
||||||
|
|
||||||
if !viewModel.audioStreams.isEmpty {
|
if !viewModel.audioStreams.isEmpty {
|
||||||
Section("Audio") {
|
Section(L10n.audio) {
|
||||||
ForEach(viewModel.audioStreams, id: \.displayTitle) { mediaStream in
|
ForEach(viewModel.audioStreams, id: \.displayTitle) { mediaStream in
|
||||||
ChevronButton(title: mediaStream.displayTitle ?? .emptyDash)
|
ChevronButton(title: mediaStream.displayTitle ?? .emptyDash)
|
||||||
.onSelect {
|
.onSelect {
|
||||||
|
@ -87,7 +87,7 @@ struct PlaybackSettingsView: View {
|
||||||
}
|
}
|
||||||
|
|
||||||
if !viewModel.subtitleStreams.isEmpty {
|
if !viewModel.subtitleStreams.isEmpty {
|
||||||
Section("Subtitle") {
|
Section(L10n.subtitle) {
|
||||||
ForEach(viewModel.subtitleStreams, id: \.displayTitle) { mediaStream in
|
ForEach(viewModel.subtitleStreams, id: \.displayTitle) { mediaStream in
|
||||||
ChevronButton(title: mediaStream.displayTitle ?? .emptyDash)
|
ChevronButton(title: mediaStream.displayTitle ?? .emptyDash)
|
||||||
.onSelect {
|
.onSelect {
|
||||||
|
@ -97,7 +97,7 @@ struct PlaybackSettingsView: View {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.navigationTitle("Playback")
|
.navigationTitle(L10n.playback)
|
||||||
.navigationBarTitleDisplayMode(.inline)
|
.navigationBarTitleDisplayMode(.inline)
|
||||||
.navigationCloseButton {
|
.navigationCloseButton {
|
||||||
splitContentViewProxy.hide()
|
splitContentViewProxy.hide()
|
||||||
|
|
|
@ -60,7 +60,7 @@ extension VideoPlayer.Overlay {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} label: {
|
} label: {
|
||||||
Text("Current")
|
Text(L10n.current)
|
||||||
.font(.title2)
|
.font(.title2)
|
||||||
.foregroundColor(accentColor)
|
.foregroundColor(accentColor)
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ extension VideoPlayer.Overlay {
|
||||||
HStack {
|
HStack {
|
||||||
Image(systemName: "gearshape.fill")
|
Image(systemName: "gearshape.fill")
|
||||||
|
|
||||||
Text("Advanced")
|
Text(L10n.advanced)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ extension VideoPlayer.Overlay {
|
||||||
Image(systemName: "arrow.up.left.and.arrow.down.right")
|
Image(systemName: "arrow.up.left.and.arrow.down.right")
|
||||||
}
|
}
|
||||||
|
|
||||||
Text("Aspect Fill")
|
Text(L10n.aspectFill)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -113,7 +113,7 @@ extension VideoPlayer.Overlay {
|
||||||
HStack {
|
HStack {
|
||||||
Image(systemName: "chevron.right.circle")
|
Image(systemName: "chevron.right.circle")
|
||||||
|
|
||||||
Text("Play Next Item")
|
Text(L10n.playNextItem)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -126,7 +126,7 @@ extension VideoPlayer.Overlay {
|
||||||
HStack {
|
HStack {
|
||||||
Image(systemName: "chevron.left.circle")
|
Image(systemName: "chevron.left.circle")
|
||||||
|
|
||||||
Text("Play Previous Item")
|
Text(L10n.playPreviousItem)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
"cast" = "CAST";
|
"cast" = "CAST";
|
||||||
"changeServer" = "Change Server";
|
"changeServer" = "Change Server";
|
||||||
"closedCaptions" = "Closed Captions";
|
"closedCaptions" = "Closed Captions";
|
||||||
|
"comingSoon" = "Coming soon";
|
||||||
"connect" = "Connect";
|
"connect" = "Connect";
|
||||||
"connectManually" = "Connect Manually";
|
"connectManually" = "Connect Manually";
|
||||||
"connectToJellyfin" = "Connect to Jellyfin";
|
"connectToJellyfin" = "Connect to Jellyfin";
|
||||||
|
@ -39,8 +40,10 @@
|
||||||
"password" = "Password";
|
"password" = "Password";
|
||||||
"playNext" = "Play Next";
|
"playNext" = "Play Next";
|
||||||
"play" = "Play";
|
"play" = "Play";
|
||||||
|
"playback" = "Playback";
|
||||||
"playbackSettings" = "Playback settings";
|
"playbackSettings" = "Playback settings";
|
||||||
"playbackSpeed" = "Playback Speed";
|
"playbackSpeed" = "Playback Speed";
|
||||||
|
"reload" = "Reload";
|
||||||
"reset" = "Reset";
|
"reset" = "Reset";
|
||||||
"seasonAndEpisode" = "S%1$@:E%2$@";
|
"seasonAndEpisode" = "S%1$@:E%2$@";
|
||||||
"search" = "Search";
|
"search" = "Search";
|
||||||
|
@ -77,6 +80,10 @@
|
||||||
/* Represents the light theme setting */
|
/* Represents the light theme setting */
|
||||||
"light" = "Light";
|
"light" = "Light";
|
||||||
|
|
||||||
|
"advanced" = "Advanced";
|
||||||
|
"aspectFill" = "Aspect Fill";
|
||||||
|
"enabled" = "Enabled";
|
||||||
|
"disabled" = "Disabled";
|
||||||
"existingServer" = "Existing Server";
|
"existingServer" = "Existing Server";
|
||||||
"existingUser" = "Existing User";
|
"existingUser" = "Existing User";
|
||||||
"serverAlreadyConnected" = "Server %s is already connected";
|
"serverAlreadyConnected" = "Server %s is already connected";
|
||||||
|
@ -90,8 +97,10 @@
|
||||||
"defaultScheme" = "Default Scheme";
|
"defaultScheme" = "Default Scheme";
|
||||||
"networking" = "Networking";
|
"networking" = "Networking";
|
||||||
"resetUserSettings" = "Reset User Settings";
|
"resetUserSettings" = "Reset User Settings";
|
||||||
|
"resetAllSettings" = "Reset all settings back to defaults.";
|
||||||
"resetAppSettings" = "Reset App Settings";
|
"resetAppSettings" = "Reset App Settings";
|
||||||
"removeAllUsers" = "Remove All Users";
|
"removeAllUsers" = "Remove All Users";
|
||||||
|
"removeAllServers" = "Remove All Servers";
|
||||||
"settings" = "Settings";
|
"settings" = "Settings";
|
||||||
"cancel" = "Cancel";
|
"cancel" = "Cancel";
|
||||||
"connectToJellyfinServer" = "Connect to a Jellyfin server";
|
"connectToJellyfinServer" = "Connect to a Jellyfin server";
|
||||||
|
@ -128,16 +137,24 @@
|
||||||
"overlayType" = "Overlay Type";
|
"overlayType" = "Overlay Type";
|
||||||
"user" = "User";
|
"user" = "User";
|
||||||
"server" = "Server";
|
"server" = "Server";
|
||||||
|
"nativePlayer" = "Native Player";
|
||||||
"videoPlayer" = "Video Player";
|
"videoPlayer" = "Video Player";
|
||||||
|
"videoPlayerType" = "Video Player Type";
|
||||||
|
"gestures" = "Gestures";
|
||||||
"jumpForwardLength" = "Jump Forward Length";
|
"jumpForwardLength" = "Jump Forward Length";
|
||||||
"jumpBackwardLength" = "Jump Backward Length";
|
"jumpBackwardLength" = "Jump Backward Length";
|
||||||
"jumpGesturesEnabled" = "Jump Gestures Enabled";
|
"jumpGesturesEnabled" = "Jump Gestures Enabled";
|
||||||
"systemControlGesturesEnabled" = "System Control Gestures Enabled";
|
"systemControlGesturesEnabled" = "System Control Gestures Enabled";
|
||||||
"playerGesturesLockGestureEnabled" = "Player Gestures Lock Gesture Enabled";
|
"playerGesturesLockGestureEnabled" = "Player Gestures Lock Gesture Enabled";
|
||||||
"seekSlideGestureEnabled" = "Seek Slide Gesture Enabled";
|
"seekSlideGestureEnabled" = "Seek Slide Gesture Enabled";
|
||||||
|
"audioOffset" = "Audio Offset";
|
||||||
|
"subtitleOffset" = "Subtitle Offset";
|
||||||
|
"resumeOffset" = "Resume Offset";
|
||||||
|
"resumeOffsetDescription" = "Resume content seconds before the recorded resume time";
|
||||||
"resume5SecondOffset" = "Resume 5 Second Offset";
|
"resume5SecondOffset" = "Resume 5 Second Offset";
|
||||||
"showPosterLabels" = "Show Poster Labels";
|
"showPosterLabels" = "Show Poster Labels";
|
||||||
"showCastAndCrew" = "Show Cast & Crew";
|
"showCastAndCrew" = "Show Cast & Crew";
|
||||||
|
"subtitleColor" = "Subtitle Color";
|
||||||
"subtitleSize" = "Subtitle Size";
|
"subtitleSize" = "Subtitle Size";
|
||||||
"subtitleFont" = "Subtitle Font";
|
"subtitleFont" = "Subtitle Font";
|
||||||
"signInGetStarted" = "Sign in to get started";
|
"signInGetStarted" = "Sign in to get started";
|
||||||
|
@ -193,6 +210,7 @@
|
||||||
"customize" = "Customize";
|
"customize" = "Customize";
|
||||||
"tooManyRedirects" = "Too Many Redirects";
|
"tooManyRedirects" = "Too Many Redirects";
|
||||||
"chapters" = "Chapters";
|
"chapters" = "Chapters";
|
||||||
|
"current" = "Current";
|
||||||
"currentPosition" = "Current Position";
|
"currentPosition" = "Current Position";
|
||||||
"remainingTime" = "Remaining Time";
|
"remainingTime" = "Remaining Time";
|
||||||
"sourceCode" = "Source Code";
|
"sourceCode" = "Source Code";
|
||||||
|
@ -262,3 +280,28 @@
|
||||||
"random" = "Random";
|
"random" = "Random";
|
||||||
"grid" = "Grid";
|
"grid" = "Grid";
|
||||||
"list" = "List";
|
"list" = "List";
|
||||||
|
"logs" = "Logs";
|
||||||
|
|
||||||
|
"onNow" = "On Now";
|
||||||
|
"sports" = "Sports";
|
||||||
|
"kids" = "Kids";
|
||||||
|
"news" = "News";
|
||||||
|
|
||||||
|
"buttons" = "Buttons";
|
||||||
|
"playbackButtons" = "Playback Buttons";
|
||||||
|
"barButtons" = "Bar Buttons";
|
||||||
|
"menuButtons" = "Menu Buttons";
|
||||||
|
"jump" = "Jump";
|
||||||
|
"slider" = "Slider";
|
||||||
|
"chapterSlider" = "Chapter Slider";
|
||||||
|
"sliderColor" = "Slider Color";
|
||||||
|
"sliderType" = "Slider Type";
|
||||||
|
"timestamp" = "Timestamp";
|
||||||
|
"scrubCurrentTime" = "Scrub Current Time";
|
||||||
|
"timestampType" = "Timestamp Type";
|
||||||
|
"trailingValue" = "Trailing Value";
|
||||||
|
"transition" = "Transition";
|
||||||
|
"pauseOnBackground" = "Pause on background";
|
||||||
|
"playOnActive" = "Play on active";
|
||||||
|
|
||||||
|
"retrievingMediaInformation" = "Retrieving media information";
|
||||||
|
|
Loading…
Reference in New Issue