mirror of
				https://github.com/yattee/yattee.git
				synced 2025-10-31 12:41:57 +00:00 
			
		
		
		
	Localizations
This commit is contained in:
		
							
								
								
									
										7
									
								
								Extensions/String+Localizable.swift
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								Extensions/String+Localizable.swift
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| import Foundation | ||||
|  | ||||
| extension String { | ||||
|     func localized(_ comment: String = "") -> Self { | ||||
|         NSLocalizedString(self, tableName: "Localizable", bundle: .main, comment: comment) | ||||
|     } | ||||
| } | ||||
| @@ -42,7 +42,7 @@ struct Instance: Defaults.Serializable, Hashable, Identifiable { | ||||
|     } | ||||
|  | ||||
|     var anonymousAccount: Account { | ||||
|         Account(instanceID: id, name: "Anonymous", url: apiURL, anonymous: true) | ||||
|         Account(instanceID: id, name: "Anonymous".localized(), url: apiURL, anonymous: true) | ||||
|     } | ||||
|  | ||||
|     var urlComponents: URLComponents { | ||||
|   | ||||
| @@ -10,7 +10,7 @@ final class SearchQuery: ObservableObject { | ||||
|         } | ||||
|  | ||||
|         var name: String { | ||||
|             rawValue.capitalized | ||||
|             rawValue.capitalized.localized() | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -22,7 +22,7 @@ final class SearchQuery: ObservableObject { | ||||
|         } | ||||
|  | ||||
|         var name: String { | ||||
|             rawValue.capitalized | ||||
|             rawValue.capitalized.localized() | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -36,11 +36,11 @@ final class SearchQuery: ObservableObject { | ||||
|         var name: String { | ||||
|             switch self { | ||||
|             case .uploadDate: | ||||
|                 return "Date" | ||||
|                 return "Date".localized() | ||||
|             case .viewCount: | ||||
|                 return "Views" | ||||
|                 return "Views".localized() | ||||
|             default: | ||||
|                 return rawValue.capitalized | ||||
|                 return rawValue.capitalized.localized() | ||||
|             } | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -18,12 +18,18 @@ final class SponsorBlockAPI: ObservableObject { | ||||
|         } | ||||
|  | ||||
|         switch name { | ||||
|         case "sponsor": | ||||
|             return "Sponsor".localized() | ||||
|         case "selfpromo": | ||||
|             return "Self-promotion" | ||||
|  | ||||
|             return "Self-promotion".localized() | ||||
|         case "intro": | ||||
|             return "Intro".localized() | ||||
|         case "outro": | ||||
|             return "Outro".localized() | ||||
|         case "interaction": | ||||
|             return "Interaction".localized() | ||||
|         case "music_offtopic": | ||||
|             return "Offtopic in Music Videos" | ||||
|  | ||||
|             return "Offtopic in Music Videos".localized() | ||||
|         default: | ||||
|             return name.capitalized | ||||
|         } | ||||
| @@ -36,25 +42,25 @@ final class SponsorBlockAPI: ObservableObject { | ||||
|  | ||||
|         switch name { | ||||
|         case "sponsor": | ||||
|             return "Part of a video promoting a product or service not directly related to the creator. " + | ||||
|                 "The creator will receive payment or compensation in the form of money or free products." | ||||
|             return ("Part of a video promoting a product or service not directly related to the creator. " + | ||||
|                 "The creator will receive payment or compensation in the form of money or free products.").localized() | ||||
|  | ||||
|         case "selfpromo": | ||||
|             return "Promoting a product or service that is directly related to the creator themselves. " + | ||||
|                 "This usually includes merchandise or promotion of monetized platforms." | ||||
|             return ("Promoting a product or service that is directly related to the creator themselves. " + | ||||
|                 "This usually includes merchandise or promotion of monetized platforms.").localized() | ||||
|  | ||||
|         case "intro": | ||||
|             return "Segments typically found at the start of a video that include an animation, " + | ||||
|                 "still frame or clip which are also seen in other videos by the same creator." | ||||
|             return ("Segments typically found at the start of a video that include an animation, " + | ||||
|                 "still frame or clip which are also seen in other videos by the same creator.").localized() | ||||
|  | ||||
|         case "outro": | ||||
|             return "Typically near or at the end of the video when the credits pop up and/or endcards are shown." | ||||
|             return ("Typically near or at the end of the video when the credits pop up and/or endcards are shown.").localized() | ||||
|  | ||||
|         case "interaction": | ||||
|             return "Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)." | ||||
|             return ("Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video).").localized() | ||||
|  | ||||
|         case "music_offtopic": | ||||
|             return "For videos which feature music as the primary content." | ||||
|             return ("For videos which feature music as the primary content.").localized() | ||||
|  | ||||
|         default: | ||||
|             return nil | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| import Defaults | ||||
| import Foundation | ||||
|  | ||||
| enum TrendingCategory: String, CaseIterable, Identifiable, Defaults.Serializable { | ||||
|     case `default`, music, gaming, movies | ||||
| @@ -8,14 +9,23 @@ enum TrendingCategory: String, CaseIterable, Identifiable, Defaults.Serializable | ||||
|     } | ||||
|  | ||||
|     var title: RawValue { | ||||
|         rawValue.capitalized | ||||
|         switch self { | ||||
|         case .default: | ||||
|             return "All".localized() | ||||
|         case .music: | ||||
|             return "Music".localized() | ||||
|         case .gaming: | ||||
|             return "Gaming".localized() | ||||
|         case .movies: | ||||
|             return "Movies".localized() | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     var name: String { | ||||
|         id == "default" ? "Trending" : title | ||||
|         id == "default" ? "Trending".localized() : title | ||||
|     } | ||||
|  | ||||
|     var controlLabel: String { | ||||
|         id == "default" ? "All" : title | ||||
|         id == "default" ? "All".localized() : title | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -238,7 +238,7 @@ enum VisibleSection: String, CaseIterable, Comparable, Defaults.Serializable { | ||||
|     case favorites, subscriptions, popular, trending, playlists | ||||
|  | ||||
|     var title: String { | ||||
|         rawValue.localizedCapitalized | ||||
|         rawValue.capitalized.localized() | ||||
|     } | ||||
|  | ||||
|     var tabSelection: TabSelection { | ||||
| @@ -312,6 +312,17 @@ enum PlayerDetailsPageButtonLabelStyle: String, CaseIterable, Defaults.Serializa | ||||
|  | ||||
| enum ThumbnailsQuality: String, CaseIterable, Defaults.Serializable { | ||||
|     case highest, medium, low | ||||
|  | ||||
|     var description: String { | ||||
|         switch self { | ||||
|         case .highest: | ||||
|             return "Highest quality".localized() | ||||
|         case .medium: | ||||
|             return "Medium quality".localized() | ||||
|         case .low: | ||||
|             return "Low quality".localized() | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| enum SystemControlsCommands: String, CaseIterable, Defaults.Serializable { | ||||
|   | ||||
| @@ -3,7 +3,7 @@ import Foundation | ||||
| import SwiftUI | ||||
|  | ||||
| struct Buffering: View { | ||||
|     var reason = "Buffering stream..." | ||||
|     var reason = "Buffering stream...".localized() | ||||
|     var state: String? | ||||
|  | ||||
|     #if os(iOS) | ||||
|   | ||||
| @@ -14,7 +14,15 @@ struct OpeningStream: View { | ||||
|     } | ||||
|  | ||||
|     var reason: String { | ||||
|         player.videoBeingOpened.isNil ? "Opening\(streamQuality)stream..." : "Loading streams..." | ||||
|         guard player.videoBeingOpened != nil else { | ||||
|             return "Loading streams...".localized() | ||||
|         } | ||||
|  | ||||
|         if player.musicMode { | ||||
|             return "Opening audio stream...".localized() | ||||
|         } | ||||
|  | ||||
|         return String(format: "Opening %@ stream...".localized(), streamQuality) | ||||
|     } | ||||
|  | ||||
|     var state: String? { | ||||
|   | ||||
| @@ -45,11 +45,11 @@ enum PlayerControlsLayout: String, CaseIterable, Defaults.Serializable { | ||||
|     var description: String { | ||||
|         switch self { | ||||
|         case .tvRegular: | ||||
|             return "TV" | ||||
|             return "TV".localized() | ||||
|         case .veryLarge: | ||||
|             return "Very Large" | ||||
|             return "Very Large".localized() | ||||
|         default: | ||||
|             return rawValue.capitalized | ||||
|             return rawValue.capitalized.localized() | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -70,11 +70,26 @@ struct VideoDetails: View { | ||||
|             ) | ||||
|  | ||||
|             HStack(spacing: 4) { | ||||
|                 pageButton("Info", "info.circle", .info, !video.isNil) | ||||
|                 pageButton("Chapters", "bookmark", .chapters, !(video?.chapters.isEmpty ?? true)) | ||||
|                 pageButton("Comments", "text.bubble", .comments, !video.isNil) { comments.load() } | ||||
|                 pageButton("Related", "rectangle.stack.fill", .related, !video.isNil) | ||||
|                 pageButton("Queue", "list.number", .queue, !player.queue.isEmpty) | ||||
|                 pageButton( | ||||
|                     "Info".localized(), | ||||
|                     "info.circle", .info, !video.isNil | ||||
|                 ) | ||||
|                 pageButton( | ||||
|                     "Chapters".localized(), | ||||
|                     "bookmark", .chapters, !(video?.chapters.isEmpty ?? true) | ||||
|                 ) | ||||
|                 pageButton( | ||||
|                     "Comments".localized(), | ||||
|                     "text.bubble", .comments, !video.isNil | ||||
|                 ) { comments.load() } | ||||
|                 pageButton( | ||||
|                     "Related".localized(), | ||||
|                     "rectangle.stack.fill", .related, !video.isNil | ||||
|                 ) | ||||
|                 pageButton( | ||||
|                     "Queue".localized(), | ||||
|                     "list.number", .queue, !player.queue.isEmpty | ||||
|                 ) | ||||
|             } | ||||
|             .onChange(of: player.currentItem) { _ in | ||||
|                 page.update(.moveToFirst) | ||||
|   | ||||
| @@ -328,6 +328,7 @@ struct VideoPlayerView: View { | ||||
|                             if !fullScreenPlayer { | ||||
|                                 VideoDetails(sidebarQueue: sidebarQueue, fullScreen: $fullScreenDetails) | ||||
|                                 #if os(iOS) | ||||
| //                                    .zIndex(-1) | ||||
|                                     .ignoresSafeArea(.all, edges: .bottom) | ||||
|                                 #endif | ||||
|                                     .background(colorScheme == .dark ? Color.black : Color.white) | ||||
|   | ||||
| @@ -89,28 +89,29 @@ struct PlaylistsView: View { | ||||
|             } | ||||
|             .padding(.horizontal) | ||||
|         }) { | ||||
|             SignInRequiredView(title: "Playlists") { | ||||
|                 VStack { | ||||
|                     #if os(tvOS) | ||||
|                         toolbar | ||||
|                     #endif | ||||
|  | ||||
|                     if currentPlaylist != nil, items.isEmpty { | ||||
|                         hintText("Playlist is empty\n\nTap and hold on a video and then tap \"Add to Playlist\"") | ||||
|                     } else if model.all.isEmpty { | ||||
|                         hintText("You have no playlists\n\nTap on \"New Playlist\" to create one") | ||||
|                     } else { | ||||
|                         Group { | ||||
|                             #if os(tvOS) | ||||
|                                 HorizontalCells(items: items) | ||||
|                                     .padding(.top, 40) | ||||
|                                 Spacer() | ||||
|                             #else | ||||
|                                 VerticalCells(items: items) | ||||
|                                     .environment(\.scrollViewBottomPadding, 70) | ||||
|                             #endif | ||||
|             SignInRequiredView(title: "Playlists".localized()) { | ||||
|                 ScrollView { | ||||
|                     VStack { | ||||
|                         #if os(tvOS) | ||||
|                             toolbar | ||||
|                         #endif | ||||
|                         if currentPlaylist != nil, items.isEmpty { | ||||
|                             hintText("Playlist is empty\n\nTap and hold on a video and then \n\"Add to Playlist\"".localized()) | ||||
|                         } else if model.all.isEmpty { | ||||
|                             hintText("You have no playlists\n\nTap on \"New Playlist\" to create one".localized()) | ||||
|                         } else { | ||||
|                             Group { | ||||
|                                 #if os(tvOS) | ||||
|                                     HorizontalCells(items: items) | ||||
|                                         .padding(.top, 40) | ||||
|                                     Spacer() | ||||
|                                 #else | ||||
|                                     VerticalCells(items: items) | ||||
|                                         .environment(\.scrollViewBottomPadding, 70) | ||||
|                                 #endif | ||||
|                             } | ||||
|                             .environment(\.currentPlaylistID, currentPlaylist?.id) | ||||
|                         } | ||||
|                         .environment(\.currentPlaylistID, currentPlaylist?.id) | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|   | ||||
| @@ -112,7 +112,7 @@ struct AdvancedSettings: View { | ||||
|     } | ||||
|  | ||||
|     var manifestHeader: some View { | ||||
|         SettingsHeader(text: "Public Manifest") | ||||
|         SettingsHeader(text: "Public Manifest".localized()) | ||||
|     } | ||||
|  | ||||
|     var showMPVPlaybackStatsToggle: some View { | ||||
|   | ||||
| @@ -45,7 +45,7 @@ struct BrowsingSettings: View { | ||||
|     } | ||||
|  | ||||
|     private var interfaceSettings: some View { | ||||
|         Section(header: SettingsHeader(text: "Interface")) { | ||||
|         Section(header: SettingsHeader(text: "Interface".localized())) { | ||||
|             #if os(iOS) | ||||
|                 Toggle("Lock portrait mode", isOn: $lockPortraitWhenBrowsing) | ||||
|                     .onChange(of: lockPortraitWhenBrowsing) { lock in | ||||
| @@ -66,7 +66,7 @@ struct BrowsingSettings: View { | ||||
|     } | ||||
|  | ||||
|     private var thumbnailsSettings: some View { | ||||
|         Section(header: SettingsHeader(text: "Thumbnails")) { | ||||
|         Section(header: SettingsHeader(text: "Thumbnails".localized())) { | ||||
|             thumbnailsQualityPicker | ||||
|             #if !os(tvOS) | ||||
|                 Toggle("Round corners", isOn: $roundedThumbnails) | ||||
| @@ -79,14 +79,14 @@ struct BrowsingSettings: View { | ||||
|     private var thumbnailsQualityPicker: some View { | ||||
|         Picker("Quality", selection: $thumbnailsQuality) { | ||||
|             ForEach(ThumbnailsQuality.allCases, id: \.self) { quality in | ||||
|                 Text(quality.rawValue.capitalized + " quality").tag(quality) | ||||
|                 Text(quality.description) | ||||
|             } | ||||
|         } | ||||
|         .modifier(SettingsPickerModifier()) | ||||
|     } | ||||
|  | ||||
|     private var visibleSectionsSettings: some View { | ||||
|         Section(header: SettingsHeader(text: "Sections")) { | ||||
|         Section(header: SettingsHeader(text: "Sections".localized())) { | ||||
|             #if os(macOS) | ||||
|                 let list = ForEach(VisibleSection.allCases, id: \.self) { section in | ||||
|                     VisibleSectionSelectionRow( | ||||
|   | ||||
| @@ -17,34 +17,34 @@ struct Help: View { | ||||
|             ScrollView(.vertical, showsIndicators: false) { | ||||
|                 VStack(alignment: .leading, spacing: 0) { | ||||
|                     Section { | ||||
|                         header("I am lost") | ||||
|                         header("I am lost".localized()) | ||||
|  | ||||
|                         Text("You can find information about using Yattee in the Wiki pages.") | ||||
|                             .padding(.bottom, 8) | ||||
|  | ||||
|                         helpItemLink("Wiki", url: Self.wikiURL, systemImage: "questionmark.circle") | ||||
|                         helpItemLink("Wiki".localized(), url: Self.wikiURL, systemImage: "questionmark.circle") | ||||
|                             .padding(.bottom, 8) | ||||
|                     } | ||||
|  | ||||
|                     Spacer() | ||||
|  | ||||
|                     Section { | ||||
|                         header("I want to ask a question") | ||||
|                         header("I want to ask a question".localized()) | ||||
|  | ||||
|                         Text("Discussions take place in Discord and Matrix. It's a good spot for general questions.") | ||||
|                             .padding(.bottom, 8) | ||||
|  | ||||
|                         helpItemLink("Discord Server", url: Self.discordURL, systemImage: "message") | ||||
|                         helpItemLink("Discord Server".localized(), url: Self.discordURL, systemImage: "message") | ||||
|                             .padding(.bottom, 8) | ||||
|                         helpItemLink("Matrix Channel", url: Self.matrixURL, systemImage: "message") | ||||
|                         helpItemLink("Matrix Channel".localized(), url: Self.matrixURL, systemImage: "message") | ||||
|                             .padding(.bottom, 8) | ||||
|                     } | ||||
|  | ||||
|                     Spacer() | ||||
|  | ||||
|                     Section { | ||||
|                         header("I found a bug /") | ||||
|                         header("I have a feature request") | ||||
|                         header("I found a bug /".localized()) | ||||
|                         header("I have a feature request".localized()) | ||||
|  | ||||
|                         Text("Bugs and great feature ideas can be sent to the GitHub issues tracker. ") | ||||
|                         Text("If you are reporting a bug, include all relevant details (especially: app\u{00a0}version, used device and system version, steps to reproduce).") | ||||
| @@ -52,8 +52,8 @@ struct Help: View { | ||||
|                             .padding(.bottom, 8) | ||||
|  | ||||
|                         VStack(alignment: .leading, spacing: 8) { | ||||
|                             helpItemLink("Issues Tracker", url: Self.issuesURL, systemImage: "ladybug") | ||||
|                             helpItemLink("Milestones", url: Self.milestonesURL, systemImage: "list.star") | ||||
|                             helpItemLink("Issues Tracker".localized(), url: Self.issuesURL, systemImage: "ladybug") | ||||
|                             helpItemLink("Milestones".localized(), url: Self.milestonesURL, systemImage: "list.star") | ||||
|                         } | ||||
|                         .padding(.bottom, 8) | ||||
|                     } | ||||
| @@ -61,15 +61,14 @@ struct Help: View { | ||||
|                     Spacer() | ||||
|  | ||||
|                     Section { | ||||
|                         header("I like this app!") | ||||
|                         header("I like this app!".localized()) | ||||
|  | ||||
|                         Text("That's nice to hear. It is fun to deliver apps other people want to use. " + | ||||
|                             "You can consider donating to the project or help by contributing to new features development.") | ||||
|                         Text("That's nice to hear. It is fun to deliver apps other people want to use. You can consider donating to the project or help by contributing to new features development.") | ||||
|                             .padding(.bottom, 8) | ||||
|  | ||||
|                         VStack(alignment: .leading, spacing: 8) { | ||||
|                             helpItemLink("Donations", url: Self.donationsURL, systemImage: "dollarsign.circle") | ||||
|                             helpItemLink("Contributing", url: Self.contributingURL, systemImage: "hammer") | ||||
|                             helpItemLink("Donations".localized(), url: Self.donationsURL, systemImage: "dollarsign.circle") | ||||
|                             helpItemLink("Contributing".localized(), url: Self.contributingURL, systemImage: "hammer") | ||||
|                         } | ||||
|                         .padding(.bottom, 8) | ||||
|                     } | ||||
|   | ||||
| @@ -39,7 +39,7 @@ struct HistorySettings: View { | ||||
|     private var sections: some View { | ||||
|         Group { | ||||
|             #if os(tvOS) | ||||
|                 Section(header: SettingsHeader(text: "History")) { | ||||
|                 Section(header: SettingsHeader(text: "History".localized())) { | ||||
|                     Toggle("Save history of searches, channels and playlists", isOn: $saveRecents) | ||||
|                     Toggle("Save history of played videos", isOn: $saveHistory) | ||||
|                     Toggle("Show progress of watching on thumbnails", isOn: $showWatchingProgress) | ||||
| @@ -53,7 +53,7 @@ struct HistorySettings: View { | ||||
|                     watchedVideoBadgeColorPicker | ||||
|                 } | ||||
|             #else | ||||
|                 Section(header: SettingsHeader(text: "History")) { | ||||
|                 Section(header: SettingsHeader(text: "History".localized())) { | ||||
|                     Toggle("Save history of searches, channels and playlists", isOn: $saveRecents) | ||||
|                     Toggle("Save history of played videos", isOn: $saveHistory) | ||||
|                     Toggle("Show progress of watching on thumbnails", isOn: $showWatchingProgress) | ||||
| @@ -61,7 +61,7 @@ struct HistorySettings: View { | ||||
|                     Toggle("Keep last played video in the queue after restart", isOn: $saveLastPlayed) | ||||
|                 } | ||||
|  | ||||
|                 Section(header: SettingsHeader(text: "Watched")) { | ||||
|                 Section(header: SettingsHeader(text: "Watched".localized())) { | ||||
|                     watchedVideoPlayNowBehaviorPicker | ||||
|                     #if os(macOS) | ||||
|                     .padding(.top, 1) | ||||
| @@ -70,7 +70,7 @@ struct HistorySettings: View { | ||||
|                     resetWatchedStatusOnPlayingToggle | ||||
|                 } | ||||
|  | ||||
|                 Section(header: SettingsHeader(text: "Interface")) { | ||||
|                 Section(header: SettingsHeader(text: "Interface".localized())) { | ||||
|                     watchedVideoStylePicker | ||||
|                     #if os(macOS) | ||||
|                     .padding(.top, 1) | ||||
| @@ -88,7 +88,7 @@ struct HistorySettings: View { | ||||
|     } | ||||
|  | ||||
|     private var watchedThresholdPicker: some View { | ||||
|         Section(header: SettingsHeader(text: "Mark video as watched after playing", secondary: true)) { | ||||
|         Section(header: SettingsHeader(text: "Mark video as watched after playing".localized(), secondary: true)) { | ||||
|             Picker("Mark video as watched after playing", selection: $watchedThreshold) { | ||||
|                 ForEach(Self.watchedThresholds, id: \.self) { threshold in | ||||
|                     Text("\(threshold)%").tag(threshold) | ||||
| @@ -100,7 +100,7 @@ struct HistorySettings: View { | ||||
|     } | ||||
|  | ||||
|     private var watchedVideoStylePicker: some View { | ||||
|         Section(header: SettingsHeader(text: "Mark watched videos with", secondary: true)) { | ||||
|         Section(header: SettingsHeader(text: "Mark watched videos with".localized(), secondary: true)) { | ||||
|             Picker("Mark watched videos with", selection: $watchedVideoStyle) { | ||||
|                 Text("Nothing").tag(WatchedVideoStyle.nothing) | ||||
|                 Text("Badge").tag(WatchedVideoStyle.badge) | ||||
| @@ -113,7 +113,7 @@ struct HistorySettings: View { | ||||
|     } | ||||
|  | ||||
|     private var watchedVideoBadgeColorPicker: some View { | ||||
|         Section(header: SettingsHeader(text: "Badge color", secondary: true)) { | ||||
|         Section(header: SettingsHeader(text: "Badge color".localized(), secondary: true)) { | ||||
|             Picker("Badge color", selection: $watchedVideoBadgeColor) { | ||||
|                 Text("Based on system color scheme").tag(WatchedVideoBadgeColor.colorSchemeBased) | ||||
|                 Text("Blue").tag(WatchedVideoBadgeColor.blue) | ||||
| @@ -127,7 +127,7 @@ struct HistorySettings: View { | ||||
|     } | ||||
|  | ||||
|     private var watchedVideoPlayNowBehaviorPicker: some View { | ||||
|         Section(header: SettingsHeader(text: "When partially watched video is played", secondary: true)) { | ||||
|         Section(header: SettingsHeader(text: "When partially watched video is played".localized(), secondary: true)) { | ||||
|             Picker("When partially watched video is played", selection: $watchedVideoPlayNowBehavior) { | ||||
|                 Text("Continue").tag(WatchedVideoPlayNowBehavior.continue) | ||||
|                 Text("Restart").tag(WatchedVideoPlayNowBehavior.restart) | ||||
|   | ||||
| @@ -11,7 +11,7 @@ struct InstanceSettings: View { | ||||
|  | ||||
|     var body: some View { | ||||
|         List { | ||||
|             Section(header: Text("Accounts")) { | ||||
|             Section(header: Text("Accounts".localized())) { | ||||
|                 if instance.app.supportsAccounts { | ||||
|                     ForEach(InstancesModel.accounts(instance.id), id: \.self) { account in | ||||
|                         #if os(tvOS) | ||||
| @@ -61,7 +61,7 @@ struct InstanceSettings: View { | ||||
|                 } | ||||
|             } | ||||
|             if instance.app.hasFrontendURL { | ||||
|                 Section(header: Text("Frontend URL")) { | ||||
|                 Section(header: Text("Frontend URL".localized())) { | ||||
|                     TextField( | ||||
|                         "Frontend URL", | ||||
|                         text: $frontendURL | ||||
|   | ||||
| @@ -41,7 +41,7 @@ struct LocationsSettings: View { | ||||
|     } | ||||
|  | ||||
|     @ViewBuilder var settings: some View { | ||||
|         Section(header: SettingsHeader(text: "Public Locations"), footer: countryFooter) { | ||||
|         Section(header: SettingsHeader(text: "Public Locations".localized()), footer: countryFooter) { | ||||
|             Picker("Country", selection: $countryOfPublicInstances) { | ||||
|                 Text("Don't use public locations").tag(String?.none) | ||||
|                 ForEach(countries, id: \.self) { country in | ||||
| @@ -65,7 +65,7 @@ struct LocationsSettings: View { | ||||
|             .disabled(countryOfPublicInstances.isNil) | ||||
|         } | ||||
|  | ||||
|         Section(header: SettingsHeader(text: "Custom Locations")) { | ||||
|         Section(header: SettingsHeader(text: "Custom Locations".localized())) { | ||||
|             #if os(macOS) | ||||
|                 InstancesSettings() | ||||
|                     .environmentObject(model) | ||||
| @@ -80,8 +80,8 @@ struct LocationsSettings: View { | ||||
|  | ||||
|     @ViewBuilder var countryFooter: some View { | ||||
|         if let account = accounts.current { | ||||
|             let locationType = account.isPublic ? (account.country ?? "Unknown") : "Custom" | ||||
|             let description = account.isPublic ? account.url : account.instance?.description ?? "unknown" | ||||
|             let locationType = account.isPublic ? (account.country ?? "Unknown") : "Custom".localized() | ||||
|             let description = account.isPublic ? account.url : account.instance?.description ?? "unknown".localized() | ||||
|  | ||||
|             Text("Current: \(locationType)\n\(description)") | ||||
|                 .foregroundColor(.secondary) | ||||
| @@ -99,7 +99,7 @@ struct LocationsSettings: View { | ||||
|                 } | ||||
|             } | ||||
|             .onFailure { _ in | ||||
|                 model.presentAlert(title: "Could not load locations manifest") | ||||
|                 model.presentAlert(title: "Could not load locations manifest".localized()) | ||||
|             } | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -61,7 +61,7 @@ struct PlayerSettings: View { | ||||
|  | ||||
|     private var sections: some View { | ||||
|         Group { | ||||
|             Section(header: SettingsHeader(text: "Playback")) { | ||||
|             Section(header: SettingsHeader(text: "Playback".localized())) { | ||||
|                 sourcePicker | ||||
|                 pauseOnHidingPlayerToggle | ||||
|                 #if !os(macOS) | ||||
| @@ -73,20 +73,20 @@ struct PlayerSettings: View { | ||||
|             } | ||||
|  | ||||
|             #if !os(tvOS) | ||||
|                 Section(header: SettingsHeader(text: "Controls"), footer: controlsLayoutFooter) { | ||||
|                 Section(header: SettingsHeader(text: "Controls".localized()), footer: controlsLayoutFooter) { | ||||
|                     horizontalPlayerGestureEnabledToggle | ||||
|                     SettingsHeader(text: "Seek gesture sensitivity", secondary: true) | ||||
|                     SettingsHeader(text: "Seek gesture sensitivity".localized(), secondary: true) | ||||
|                     seekGestureSensitivityPicker | ||||
|                     SettingsHeader(text: "Seek gesture speed", secondary: true) | ||||
|                     SettingsHeader(text: "Seek gesture speed".localized(), secondary: true) | ||||
|                     seekGestureSpeedPicker | ||||
|                     SettingsHeader(text: "Regular size", secondary: true) | ||||
|                     SettingsHeader(text: "Regular size".localized(), secondary: true) | ||||
|                     playerControlsLayoutPicker | ||||
|                     SettingsHeader(text: "Fullscreen size", secondary: true) | ||||
|                     SettingsHeader(text: "Fullscreen size".localized(), secondary: true) | ||||
|                     fullScreenPlayerControlsLayoutPicker | ||||
|                 } | ||||
|             #endif | ||||
|  | ||||
|             Section(header: SettingsHeader(text: "Interface")) { | ||||
|             Section(header: SettingsHeader(text: "Interface".localized())) { | ||||
|                 #if os(iOS) | ||||
|                     if idiom == .pad { | ||||
|                         sidebarPicker | ||||
| @@ -103,7 +103,7 @@ struct PlayerSettings: View { | ||||
|             } | ||||
|  | ||||
|             #if os(iOS) | ||||
|                 Section(header: SettingsHeader(text: "Orientation")) { | ||||
|                 Section(header: SettingsHeader(text: "Orientation".localized())) { | ||||
|                     if idiom == .pad { | ||||
|                         enterFullscreenInLandscapeToggle | ||||
|                     } | ||||
| @@ -111,7 +111,7 @@ struct PlayerSettings: View { | ||||
|                 } | ||||
|             #endif | ||||
|  | ||||
|             Section(header: SettingsHeader(text: "Picture in Picture")) { | ||||
|             Section(header: SettingsHeader(text: "Picture in Picture".localized())) { | ||||
|                 closePiPOnNavigationToggle | ||||
|                 closePiPOnOpeningPlayerToggle | ||||
|                 closePlayerOnOpeningPiPToggle | ||||
| @@ -124,7 +124,7 @@ struct PlayerSettings: View { | ||||
|  | ||||
|     private var sourcePicker: some View { | ||||
|         Picker("Source", selection: $playerInstanceID) { | ||||
|             Text("Account Instance").tag(String?.none) | ||||
|             Text("Instance of current account").tag(String?.none) | ||||
|  | ||||
|             ForEach(instances) { instance in | ||||
|                 Text(instance.description).tag(Optional(instance.id)) | ||||
| @@ -136,15 +136,15 @@ struct PlayerSettings: View { | ||||
|     private var systemControlsCommandsPicker: some View { | ||||
|         func labelText(_ label: String) -> String { | ||||
|             #if os(macOS) | ||||
|                 "System controls show buttons for \(label)" | ||||
|                 String(format: "System controls show buttons for %@".localized(), label) | ||||
|             #else | ||||
|                 label | ||||
|             #endif | ||||
|         } | ||||
|  | ||||
|         return Picker("System controls buttons", selection: $systemControlsCommands) { | ||||
|             Text(labelText("10 seconds forwards/backwards")).tag(SystemControlsCommands.seek) | ||||
|             Text(labelText("Restart/Play next")).tag(SystemControlsCommands.restartAndAdvanceToNext) | ||||
|             Text(labelText("10 seconds forwards/backwards".localized())).tag(SystemControlsCommands.seek) | ||||
|             Text(labelText("Restart/Play next".localized())).tag(SystemControlsCommands.restartAndAdvanceToNext) | ||||
|         } | ||||
|         .onChange(of: systemControlsCommands) { _ in | ||||
|             player.updateRemoteCommandCenter() | ||||
|   | ||||
| @@ -68,7 +68,7 @@ struct QualitySettings: View { | ||||
|                 forceAVPlayerForLiveStreamsToggle | ||||
|             } | ||||
|             .disabled(qualityProfiles.isEmpty) | ||||
|             Section(header: SettingsHeader(text: "Profiles"), footer: profilesFooter) { | ||||
|             Section(header: SettingsHeader(text: "Profiles".localized()), footer: profilesFooter) { | ||||
|                 profilesList | ||||
|  | ||||
|                 Button { | ||||
|   | ||||
| @@ -99,7 +99,7 @@ struct SettingsView: View { | ||||
|                 .tag(Tabs.help) | ||||
|             } | ||||
|             .padding(20) | ||||
|             .frame(width: 520, height: windowHeight) | ||||
|             .frame(width: 600, height: windowHeight) | ||||
|         #else | ||||
|             NavigationView { | ||||
|                 settingsList | ||||
|   | ||||
| @@ -39,7 +39,7 @@ struct SponsorBlockSettings: View { | ||||
|                 #endif | ||||
|             } | ||||
|  | ||||
|             Section(header: SettingsHeader(text: "Categories to Skip"), footer: categoriesDetails) { | ||||
|             Section(header: SettingsHeader(text: "Categories to Skip".localized()), footer: categoriesDetails) { | ||||
|                 #if os(macOS) | ||||
|                     let list = ForEach(SponsorBlockAPI.categories, id: \.self) { category in | ||||
|                         MultiselectRow( | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| import SwiftUI | ||||
|  | ||||
| struct TrendingCountry: View { | ||||
|     static let prompt = "Country Name or Code" | ||||
|     static let prompt = "Country Name or Code".localized() | ||||
|     @Binding var selectedCountry: Country | ||||
|  | ||||
|     @StateObject private var store = Store(Country.allCases) | ||||
|   | ||||
| @@ -24,7 +24,7 @@ struct VideoBanner: View { | ||||
|                 #endif | ||||
|             } | ||||
|             VStack(alignment: .leading, spacing: 4) { | ||||
|                 Text(video?.title ?? "Loading...") | ||||
|                 Text(video?.title ?? "Loading...".localized()) | ||||
|                     .truncationMode(.middle) | ||||
|                     .lineLimit(2) | ||||
|                     .font(.headline) | ||||
|   | ||||
| @@ -227,7 +227,8 @@ struct ControlsBar: View { | ||||
|                 } | ||||
|  | ||||
|                 VStack(alignment: .leading, spacing: 0) { | ||||
|                     Text(model.currentVideo?.title ?? "Not Playing") | ||||
|                     let notPlaying = "Not Playing".localized() | ||||
|                     Text(model.currentVideo?.title ?? notPlaying) | ||||
|                         .font(.system(size: 14)) | ||||
|                         .fontWeight(.semibold) | ||||
|                         .foregroundColor(model.currentVideo.isNil ? .secondary : .accentColor) | ||||
|   | ||||
| @@ -89,13 +89,19 @@ struct ShareButton: View { | ||||
|     } | ||||
|  | ||||
|     private func labelForShareURL(_ app: String, withTime: Bool = false) -> String { | ||||
|         let time = withTime ? "with time" : "" | ||||
|  | ||||
|         #if os(macOS) | ||||
|             return "Copy \(app) link \(time)" | ||||
|         #else | ||||
|             return "Share \(app) link \(time)" | ||||
|         #endif | ||||
|         if withTime { | ||||
|             #if os(macOS) | ||||
|                 return String(format: "Copy %@ link with time".localized(), app) | ||||
|             #else | ||||
|                 return String(format: "Share %@ link with time".localized(), app) | ||||
|             #endif | ||||
|         } else { | ||||
|             #if os(macOS) | ||||
|                 return String(format: "Copy %@ link".localized(), app) | ||||
|             #else | ||||
|                 return String(format: "Share %@ link".localized(), app) | ||||
|             #endif | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -16,7 +16,7 @@ struct SubscriptionsView: View { | ||||
|  | ||||
|     var body: some View { | ||||
|         BrowserPlayerControls { | ||||
|             SignInRequiredView(title: "Subscriptions") { | ||||
|             SignInRequiredView(title: "Subscriptions".localized()) { | ||||
|                 VerticalCells(items: videos) | ||||
|                     .onAppear { | ||||
|                         loadResources() | ||||
|   | ||||
| @@ -112,14 +112,15 @@ struct VideoContextMenuView: View { | ||||
|  | ||||
|     private var watchedAtString: String? { | ||||
|         if watchingNow { | ||||
|             return "Watching now" | ||||
|             return "Watching now".localized() | ||||
|         } | ||||
|  | ||||
|         if let watch = watch, let watchedAtString = watch.watchedAtString { | ||||
|             if watchedAtString == "in 0 seconds" { | ||||
|                 return "Just watched" | ||||
|                 return "Just watched".localized() | ||||
|             } | ||||
|             return "Watched \(watchedAtString)" | ||||
|             let localizedWatchedString = "Watched %@".localized() | ||||
|             return String(format: localizedWatchedString, watchedAtString) | ||||
|         } | ||||
|  | ||||
|         return nil | ||||
|   | ||||
| @@ -61,8 +61,8 @@ struct WelcomeScreen: View { | ||||
|                     .background(RoundedRectangle(cornerRadius: 4).foregroundColor(Color.accentColor)) | ||||
|                     .frame(maxWidth: .infinity) | ||||
|             #endif | ||||
|             Text("This information will be processed only on your device and used to connect you to the server in the specified country.\n" + | ||||
|                 "It can be changed later in settings. You can use your own locations too.") | ||||
|             Text("This information will be processed only on your device and used to connect you to the server in the specified country.".localized() + "\n" + | ||||
|                 "It can be changed later in settings. You can use your own locations too.".localized()) | ||||
|                 .font(.caption) | ||||
|                 .foregroundColor(.secondary) | ||||
|         } | ||||
|   | ||||
							
								
								
									
										976
									
								
								Shared/en.lproj/Localizable.strings
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										976
									
								
								Shared/en.lproj/Localizable.strings
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,976 @@ | ||||
| /* No comment provided by engineer. */ | ||||
| " subscribers" = " subscribers"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "#" = "#"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "%@" = "%@"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "%@ %@" = "%@ %@"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "%@ Channel" = "%@ Channel"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "%@ Playlist" = "%@ Playlist"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "%@ subscribers" = "%@ subscribers"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "%lld" = "%lld"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "%lld videos" = "%lld videos"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "%lld%%" = "%lld%%"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "1 century ago" = "1 century ago"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "1,234M" = "1,234M"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "10 seconds forwards/backwards" = "10 seconds forwards/backwards"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "1234" = "1234"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "a" = "a"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "A" = "A"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Accounts" = "Accounts"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Accounts are not supported for the application of this instance" = "Accounts are not supported for the application of this instance"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Add Account" = "Add Account"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Add Account..." = "Add Account..."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Add Location" = "Add Location"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Add Location..." = "Add Location..."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Add profile..." = "Add profile..."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Add Quality Profile" = "Add Quality Profile"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Add to %@" = "Add to %@"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Add to Favorites" = "Add to Favorites"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Add to Playlist" = "Add to Playlist"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Add to Playlist..." = "Add to Playlist..."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Advanced" = "Advanced"; | ||||
|  | ||||
| /* Trending category, section containing all kinds of videos */ | ||||
| "All" = "All"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Always use AVPlayer for live videos" = "Always use AVPlayer for live videos"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Anonymous" = "Anonymous"; | ||||
|  | ||||
| /* Video date filter in search | ||||
|    Video duration filter in search */ | ||||
| "Any" = "Any"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Apply to all" = "Apply to all"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Are you sure you want to clear history of watched videos?" = "Are you sure you want to clear history of watched videos?"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Are you sure you want to clear search history?" = "Are you sure you want to clear search history?"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Are you sure you want to delete playlist?" = "Are you sure you want to delete playlist?"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Are you sure you want to restore default quality profiles?" = "Are you sure you want to restore default quality profiles?"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Are you sure you want to unsubscribe from %@?" = "Are you sure you want to unsubscribe from %@?"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Automatic" = "Automatic"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Autoplaying Next" = "Autoplaying Next"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Backend" = "Backend"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Badge" = "Badge"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Badge & Decreased opacity" = "Badge & Decreased opacity"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Badge color" = "Badge color"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Based on system color scheme" = "Based on system color scheme"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Battery" = "Battery"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Blue" = "Blue"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Browsing" = "Browsing"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Buffering stream..." = "Buffering stream..."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Bugs and great feature ideas can be sent to the GitHub issues tracker. " = "Bugs and great feature ideas can be sent to the GitHub issues tracker. "; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Button" = "Button"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "cache-pause-wait" = "cache-pause-wait"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "cache-secs" = "cache-secs"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Cancel" = "Cancel"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Captions" = "Captions"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Categories to Skip" = "Categories to Skip"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Category" = "Category"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Cellular" = "Cellular"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Chapters" = "Chapters"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Charging" = "Charging"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Clear" = "Clear"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Clear All" = "Clear All"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Clear All Recents" = "Clear All Recents"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Clear History" = "Clear History"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Clear Search History" = "Clear Search History"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Clear Search History..." = "Clear Search History..."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Clear the queue" = "Clear the queue"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Close" = "Close"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Close PiP and open player when application enters foreground" = "Close PiP and open player when application enters foreground"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Close PiP when player is opened" = "Close PiP when player is opened"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Close PiP when starting playing other video" = "Close PiP when starting playing other video"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Close player when closing video" = "Close player when closing video"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Close player when starting PiP" = "Close player when starting PiP"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Close Video" = "Close Video"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Close video after playing last in the queue" = "Close video after playing last in the queue"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Comments" = "Comments"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Connected successfully (%@)" = "Connected successfully (%@)"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Connection failed" = "Connection failed"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Contact" = "Contact"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Continue" = "Continue"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Continue from %@" = "Continue from %@"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Contributing" = "Contributing"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Controls" = "Controls"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Copy %@ link" = "Copy %@ link"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Copy %@ link with time" = "Copy %@ link with time"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Could not load locations manifest" = "Could not load locations manifest"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Country" = "Country"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Country Name or Code" = "Country Name or Code"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Create Playlist" = "Create Playlist"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Current: %@\n%@" = "Current: %@\n%@"; | ||||
|  | ||||
| /* Locations settings, custom instance is selected as current */ | ||||
| "Custom" = "Custom"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Custom Locations" = "Custom Locations"; | ||||
|  | ||||
| /* Video sort order in search */ | ||||
| "Date" = "Date"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Decrease rate" = "Decrease rate"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Decreased opacity" = "Decreased opacity"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Delete" = "Delete"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Disabled" = "Disabled"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Discord Server" = "Discord Server"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Discussions take place in Discord and Matrix. It's a good spot for general questions." = "Discussions take place in Discord and Matrix. It's a good spot for general questions."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Don't use public locations" = "Don't use public locations"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Donations" = "Donations"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Done" = "Done"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Duration" = "Duration"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Edit" = "Edit"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Edit Playlist" = "Edit Playlist"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Edit Quality Profile" = "Edit Quality Profile"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Edit..." = "Edit..."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Enable logging" = "Enable logging"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Enable Return YouTube Dislike" = "Enable Return YouTube Dislike"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Enter fullscreen in landscape" = "Enter fullscreen in landscape"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Error" = "Error"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Error when accessing playlist" = "Error when accessing playlist"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)." = "Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Favorites" = "Favorites"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Filter" = "Filter"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Filter: active" = "Filter: active"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Find Other" = "Find Other"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Finding something to play..." = "Finding something to play..."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "For videos which feature music as the primary content." = "For videos which feature music as the primary content."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Formats will be selected in order as listed.\nHLS is an adaptive format (resolution setting does not apply)." = "Formats will be selected in order as listed.\nHLS is an adaptive format (resolution setting does not apply)."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Frontend URL" = "Frontend URL"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Fullscreen size" = "Fullscreen size"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Fullscreen Size" = "Fullscreen Size"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Gaming" = "Gaming"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Help" = "Help"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Hide sidebar" = "Hide sidebar"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "High" = "High"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Highest" = "Highest"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Highest quality" = "Highest quality"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "History" = "History"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Honor orientation lock" = "Honor orientation lock"; | ||||
|  | ||||
| /* Video date filter in search */ | ||||
| "Hour" = "Hour"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "I am lost" = "I am lost"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "I found a bug /" = "I found a bug /"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "I have a feature request" = "I have a feature request"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "I like this app!" = "I like this app!"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "I want to ask a question" = "I want to ask a question"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "If you are interested what's coming in future updates, you can track project Milestones." = "If you are interested what's coming in future updates, you can track project Milestones."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "If you are reporting a bug, include all relevant details (especially: app version, used device and system version, steps to reproduce)." = "If you are reporting a bug, include all relevant details (especially: app version, used device and system version, steps to reproduce)."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Increase rate" = "Increase rate"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Info" = "Info"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Instance of current account" = "Instance of current account"; | ||||
|  | ||||
| /* SponsorBlock category name */ | ||||
| "Interaction" = "Interaction"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Interface" = "Interface"; | ||||
|  | ||||
| /* SponsorBlock category name */ | ||||
| "Intro" = "Intro"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Issues Tracker" = "Issues Tracker"; | ||||
|  | ||||
| /* Selected video has just finished playing */ | ||||
| "Just watched" = "Just watched"; | ||||
|  | ||||
| /* Player controls layout size */ | ||||
| "Large" = "Large"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Large layout is not suitable for all devices and using it may cause controls not to fit on the screen." = "Large layout is not suitable for all devices and using it may cause controls not to fit on the screen."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "LIVE" = "LIVE"; | ||||
|  | ||||
| /* Loading stream OSD */ | ||||
| "Loading streams..." = "Loading streams..."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Loading..." = "Loading..."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Locations" = "Locations"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Lock portrait mode" = "Lock portrait mode"; | ||||
|  | ||||
| /* Video duration filter in search */ | ||||
| "Long" = "Long"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Low" = "Low"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Low quality" = "Low quality"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Lowest" = "Lowest"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Mark as watched" = "Mark as watched"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Mark video as watched after playing" = "Mark video as watched after playing"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Mark watched videos with" = "Mark watched videos with"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Matrix Channel" = "Matrix Channel"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Matrix Chat" = "Matrix Chat"; | ||||
|  | ||||
| /* Player controls layout size */ | ||||
| "Medium" = "Medium"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Medium quality" = "Medium quality"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Milestones" = "Milestones"; | ||||
|  | ||||
| /* Video date filter in search */ | ||||
| "Month" = "Month"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "More info can be found in:" = "More info can be found in:"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Movies" = "Movies"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "MPV Documentation" = "MPV Documentation"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Music" = "Music"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Name" = "Name"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "New Playlist" = "New Playlist"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Next" = "Next"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "No description" = "No description"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "No Playlists" = "No Playlists"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "No results" = "No results"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Normal" = "Normal"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Not available" = "Not available"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Not Playing" = "Not Playing"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Nothing" = "Nothing"; | ||||
|  | ||||
| /* SponsorBlock category name */ | ||||
| "Offtopic in Music Videos" = "Offtopic in Music Videos"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Only when signed in" = "Only when signed in"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Open \"Playlists\" tab to create new one" = "Open \"Playlists\" tab to create new one"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Open Settings" = "Open Settings"; | ||||
|  | ||||
| /* Loading stream OSD */ | ||||
| "Opening %@ stream..." = "Opening %@ stream..."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Opening audio stream..." = "Opening audio stream..."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Orientation" = "Orientation"; | ||||
|  | ||||
| /* SponsorBlock category name */ | ||||
| "Outro" = "Outro"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Part of a video promoting a product or service not directly related to the creator. The creator will receive payment or compensation in the form of money or free products." = "Part of a video promoting a product or service not directly related to the creator. The creator will receive payment or compensation in the form of money or free products."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Password" = "Password"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Pause" = "Pause"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Pause when entering background" = "Pause when entering background"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Pause when player is closed" = "Pause when player is closed"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Picture in Picture" = "Picture in Picture"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Play" = "Play"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Play All" = "Play All"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Play in PiP" = "Play in PiP"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Play Last" = "Play Last"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Play Music" = "Play Music"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Play Next" = "Play Next"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Play Now" = "Play Now"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Playback" = "Playback"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Player" = "Player"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Playlist" = "Playlist"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Playlist \"%@\" will be deleted.\nIt cannot be reverted." = "Playlist \"%@\" will be deleted.\nIt cannot be reverted."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Playlists" = "Playlists"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Popular" = "Popular"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Preferred Formats" = "Preferred Formats"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Profiles" = "Profiles"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Promoting a product or service that is directly related to the creator themselves. This usually includes merchandise or promotion of monetized platforms." = "Promoting a product or service that is directly related to the creator themselves. This usually includes merchandise or promotion of monetized platforms."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Proxy videos" = "Proxy videos"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Public Locations" = "Public Locations"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Public Manifest" = "Public Manifest"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Quality" = "Quality"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Quality Profile" = "Quality Profile"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Queue" = "Queue"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Queue is empty" = "Queue is empty"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Rate" = "Rate"; | ||||
|  | ||||
| /* Video sort order in search */ | ||||
| "Rating" = "Rating"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Recents" = "Recents"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Red" = "Red"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Refresh" = "Refresh"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Regular size" = "Regular size"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Regular Size" = "Regular Size"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Related" = "Related"; | ||||
|  | ||||
| /* Video sort order in search */ | ||||
| "Relevance" = "Relevance"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Remove" = "Remove"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Remove from Favorites" = "Remove from Favorites"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Remove from history" = "Remove from history"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Remove from Playlist" = "Remove from Playlist"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Remove from the queue" = "Remove from the queue"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Replies" = "Replies"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Reset" = "Reset"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Reset search filters" = "Reset search filters"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Reset watched status when playing again" = "Reset watched status when playing again"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Resolution" = "Resolution"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Restart" = "Restart"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Restart the app to apply the settings above." = "Restart the app to apply the settings above."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Restart/Play next" = "Restart/Play next"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Restore default profiles..." = "Restore default profiles..."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Rotate to portrait when exiting fullscreen" = "Rotate to portrait when exiting fullscreen"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Round corners" = "Round corners"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Save" = "Save"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Save history of played videos" = "Save history of played videos"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Save history of searches, channels and playlists" = "Save history of searches, channels and playlists"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Search" = "Search"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Search history is empty" = "Search history is empty"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Search..." = "Search..."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Sections" = "Sections"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Seek gesture sensitivity" = "Seek gesture sensitivity"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Seek gesture speed" = "Seek gesture speed"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Seek with horizontal swipe on video" = "Seek with horizontal swipe on video"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Segments typically found at the start of a video that include an animation, still frame or clip which are also seen in other videos by the same creator." = "Segments typically found at the start of a video that include an animation, still frame or clip which are also seen in other videos by the same creator."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Select location closest to you:" = "Select location closest to you:"; | ||||
|  | ||||
| /* SponsorBlock category name */ | ||||
| "Self-promotion" = "Self-promotion"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Settings" = "Settings"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Share %@ link" = "Share %@ link"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Share %@ link with time" = "Share %@ link with time"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Share..." = "Share..."; | ||||
|  | ||||
| /* Video duration filter in search */ | ||||
| "Short" = "Short"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Show account username" = "Show account username"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Show anonymous accounts" = "Show anonymous accounts"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Show channel name" = "Show channel name"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Show history" = "Show history"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Show keywords" = "Show keywords"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Show playback statistics" = "Show playback statistics"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Show progress of watching on thumbnails" = "Show progress of watching on thumbnails"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Show sidebar when space permits" = "Show sidebar when space permits"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Show video length" = "Show video length"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Shuffle" = "Shuffle"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Shuffle All" = "Shuffle All"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Sidebar" = "Sidebar"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Sign In Required" = "Sign In Required"; | ||||
|  | ||||
| /* Player controls layout size */ | ||||
| "Small" = "Small"; | ||||
|  | ||||
| /* Player controls layout size */ | ||||
| "Smaller" = "Smaller"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Sort" = "Sort"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Sort: %@" = "Sort: %@"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Source" = "Source"; | ||||
|  | ||||
| /* SponsorBlock category name */ | ||||
| "Sponsor" = "Sponsor"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "SponsorBlock" = "SponsorBlock"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "SponsorBlock API Instance" = "SponsorBlock API Instance"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Subscribe" = "Subscribe"; | ||||
|  | ||||
| /* Subscriptions title */ | ||||
| "Subscriptions" = "Subscriptions"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Switch to other public location" = "Switch to other public location"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Switch to public locations" = "Switch to public locations"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "System controls buttons" = "System controls buttons"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "System controls show buttons for %@" = "System controls show buttons for %@"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "That's nice to hear. It is fun to deliver apps other people want to use. You can consider donating to the project or help by contributing to new features development." = "That's nice to hear. It is fun to deliver apps other people want to use. You can consider donating to the project or help by contributing to new features development."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "This cannot be reverted" = "This cannot be reverted"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "This cannot be reverted. You might need to switch between views or restart the app to see changes." = "This cannot be reverted. You might need to switch between views or restart the app to see changes."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "This information will be processed only on your device and used to connect you to the server in the specified country." = "This information will be processed only on your device and used to connect you to the server in the specified country."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "This will remove all your custom profiles and return their default values. This cannot be reverted." = "This will remove all your custom profiles and return their default values. This cannot be reverted."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Thumbnails" = "Thumbnails"; | ||||
|  | ||||
| /* Video date filter in search */ | ||||
| "Today" = "Today"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Trending" = "Trending"; | ||||
|  | ||||
| /* Player controls layout size for TV */ | ||||
| "TV" = "TV"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Typically near or at the end of the video when the credits pop up and/or endcards are shown." = "Typically near or at the end of the video when the credits pop up and/or endcards are shown."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "unknown" = "unknown"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Unsubscribe" = "Unsubscribe"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Upload date" = "Upload date"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "URL" = "URL"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Used to create links from videos, channels and playlists" = "Used to create links from videos, channels and playlists"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Username" = "Username"; | ||||
|  | ||||
| /* Player controls layout size */ | ||||
| "Very Large" = "Very Large"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Videos" = "Videos"; | ||||
|  | ||||
| /* Video sort order in search */ | ||||
| "Views" = "Views"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Watched" = "Watched"; | ||||
|  | ||||
| /* Selected video was played on given date */ | ||||
| "Watched %@" = "Watched %@"; | ||||
|  | ||||
| /* Selected video is being played */ | ||||
| "Watching now" = "Watching now"; | ||||
|  | ||||
| /* Video date filter in search */ | ||||
| "Week" = "Week"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Welcome" = "Welcome"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "When partially watched video is played" = "When partially watched video is played"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Wi-Fi" = "Wi-Fi"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Wiki" = "Wiki"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Yattee" = "Yattee"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Yattee %@ (build %@)" = "Yattee %@ (build %@)"; | ||||
|  | ||||
| /* Video date filter in search */ | ||||
| "Year" = "Year"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "You can find information about using Yattee in the Wiki pages." = "You can find information about using Yattee in the Wiki pages."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "You can use automatic profile selection based on current device status or switch it in video playback settings controls." = "You can use automatic profile selection based on current device status or switch it in video playback settings controls."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "You have no Playlists" = "You have no Playlists"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "You have no playlists\n\nTap on \"New Playlist\" to create one" = "You have no playlists\n\nTap on \"New Playlist\" to create one"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "You need to create an instance and accounts\nto access %@ section" = "You need to create an instance and accounts\nto access %@ section"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "You need to select an account\nto access %@ section" = "You need to select an account\nto access %@ section"; | ||||
|  | ||||
							
								
								
									
										976
									
								
								Shared/pl.lproj/Localizable.strings
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										976
									
								
								Shared/pl.lproj/Localizable.strings
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,976 @@ | ||||
| /* No comment provided by engineer. */ | ||||
| " subscribers" = " subskrybentów"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "#" = "#"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "%@" = "%@"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "%@ %@" = "%@ %@"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "%@ Channel" = "Kanał %@"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "%@ Playlist" = "Playlista %@"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "%@ subscribers" = "%@ subskrybentów"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "%lld" = "%lld"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "%lld videos" = "%lld wideo"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "%lld%%" = "%lld%%"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "1 century ago" = "Dawno temu"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "1,234M" = "1,234M"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "10 seconds forwards/backwards" = "Przewijanie o 10 sekund"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "1234" = "1234"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "a" = "a"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "A" = "A"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Accounts" = "Konta"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Accounts are not supported for the application of this instance" = "Konta nie są obsługiwane dla tej instancji"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Add Account" = "Dodaj konto"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Add Account..." = "Dodaj konto…"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Add Location" = "Dodaj lokalizację"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Add Location..." = "Dodaj lokalizację…"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Add profile..." = "Dodaj profil…"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Add Quality Profile" = "Dodaj profil jakości"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Add to %@" = "Dodaj do %@"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Add to Favorites" = "Dodaj do ulubionych"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Add to Playlist" = "Dodaj do playlisty"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Add to Playlist..." = "Dodaj do playlisty..."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Advanced" = "Zaawansowane"; | ||||
|  | ||||
| /* Trending category, section containing all kinds of videos */ | ||||
| "All" = "Wszystkie"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Always use AVPlayer for live videos" = "Zawsze używaj AVPlayera z filmami na żywo"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Anonymous" = "Anonim"; | ||||
|  | ||||
| /* Video date filter in search | ||||
|    Video duration filter in search */ | ||||
| "Any" = "Dowolna"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Apply to all" = "Zastosuj do wszystkich"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Are you sure you want to clear history of watched videos?" = "Czy na pewno usunąć historię oglądania filmów?"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Are you sure you want to clear search history?" = "Czy na pewno usunąć historię wyszukiwania?"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Are you sure you want to delete playlist?" = "Czy na pewno usunąć playlistę?"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Are you sure you want to restore default quality profiles?" = "Czy na pewno przywrócić domyślne profile jakości?"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Are you sure you want to unsubscribe from %@?" = "Czy na pewno chcesz przestać subskrybować kanał %@?"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Automatic" = "Automatyczny"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Autoplaying Next" = "Wybrany do kolejki"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Backend" = "Silnik"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Badge" = "Znaczek"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Badge & Decreased opacity" = "Znaczek i przezroczystość"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Badge color" = "Kolor znaczka"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Based on system color scheme" = "Schemat kolorów systemu"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Battery" = "Bateria"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Blue" = "Niebieski"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Browsing" = "Przeglądanie"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Buffering stream..." = "Buforowanie strumienia…"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Bugs and great feature ideas can be sent to the GitHub issues tracker. " = "Błędy i wspaniałe pomysły na nowe funkcje wyślij na GitHub Issues "; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Button" = "Przycisk"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "cache-pause-wait" = "cache-pause-wait"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "cache-secs" = "cache-secs"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Cancel" = "Anuluj"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Captions" = "Napisy"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Categories to Skip" = "Kategorie do pomijania"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Category" = "Kategoria"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Cellular" = "Sieć komórkowa"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Chapters" = "Rozdziały"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Charging" = "Ładowanie"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Clear" = "Wyczyść"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Clear All" = "Wyczyść wszystko"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Clear All Recents" = "Wyczyść ostatnie"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Clear History" = "Wyczyść historię"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Clear Search History" = "Wyczyść historię wyszukiwania"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Clear Search History..." = "Wyczyść historię wyszukiwania..."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Clear the queue" = "Wyczyść kolejkę"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Close" = "Zamknij"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Close PiP and open player when application enters foreground" = "Zamknij PiP i otwórz odtwarzacz przy wejściu na pierwszy plan"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Close PiP when player is opened" = "Zamknij PiP przy otwarciu odtwarzacza"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Close PiP when starting playing other video" = "Zamknij PiP przy rozpoczęciu odtwarzania innego filmu"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Close player when closing video" = "Zamknij odtwarzacz przy zamknięciu wideo"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Close player when starting PiP" = "Zamknij odtwarzacz przy uruchomieniu PiP"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Close Video" = "Zamknij wideo"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Close video after playing last in the queue" = "Zamknij wideo po odtworzeniu ostatniego w kolejce"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Comments" = "Komentarze"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Connected successfully (%@)" = "Połączono (%@)"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Connection failed" = "Błąd połączenia"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Contact" = "Kontakt"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Continue" = "Kontynuuj"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Continue from %@" = "Kontynuuj od %@"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Contributing" = "Współpraca nad rozwojem"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Controls" = "Kontrolki"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Copy %@ link" = "Kopiuj link do %@"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Copy %@ link with time" = "Kopiuj link do %@ wraz z czasem"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Could not load locations manifest" = "Nie można wczytać publicznej listy instancji"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Country" = "Kraj"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Country Name or Code" = "Nazwa kraju lub kod"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Create Playlist" = "Dodaj playlistę"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Current: %@\n%@" = "Aktualnie: %@\n%@"; | ||||
|  | ||||
| /* Locations settings, custom instance is selected as current */ | ||||
| "Custom" = "Własna"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Custom Locations" = "Własne lokalizacje"; | ||||
|  | ||||
| /* Video sort order in search */ | ||||
| "Date" = "Data"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Decrease rate" = "Zmniejsz prędkość odtwarzania"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Decreased opacity" = "Zwiększona przezroczystość"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Delete" = "Usuń"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Disabled" = "Wyłączone"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Discord Server" = "Serwer Discorda"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Discussions take place in Discord and Matrix. It's a good spot for general questions." = "Dysktujemy na Discordzie i Matrixie. To dobre miejsca na ogólne pytania."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Don't use public locations" = "Nie używaj publicznych lokalizacji"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Donations" = "Wsparcie"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Done" = "Gotowe"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Duration" = "Długość"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Edit" = "Edytuj"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Edit Playlist" = "Edytuj playlistę"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Edit Quality Profile" = "Edytuj profil jakości"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Edit..." = "Edytuj..."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Enable logging" = "Włącz logowanie"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Enable Return YouTube Dislike" = "Włącz łapki w dół (Return YouTube Dislike)"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Enter fullscreen in landscape" = "W poziomej orientacji uruchom tryb pełnoekranowy"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Error" = "Błąd"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Error when accessing playlist" = "Błąd podczas pobierania playlisty"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)." = "Wyraźne przypomnienia, aby polubić, zasubskrybować lub wejść w interakcję z nimi na jakiejkolwiek płatnej lub bezpłatnej platformie (np. kliknąć na wideo)."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Favorites" = "Ulubione"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Filter" = "Filtr"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Filter: active" = "Filtr: aktywny"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Find Other" = "Znajdź coś innego"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Finding something to play..." = "Szukanie następnego filmu..."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "For videos which feature music as the primary content." = "Dla filmów, których główną treścią jest muzyka."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Formats will be selected in order as listed.\nHLS is an adaptive format (resolution setting does not apply)." = "Formaty będą wybierane w kolejności tak jak wyżej.\nHLS to format adaptacyjny (ustawienie rozdzielczości nie ma zastosowania)."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Frontend URL" = "Adres frontendu"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Fullscreen size" = "Rozmiar pełnoekranowy"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Fullscreen Size" = "Pełen ekran"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Gaming" = "Gry"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Help" = "Pomoc"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Hide sidebar" = "Ukryj pasek boczny"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "High" = "Wysoka"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Highest" = "Najwyższa"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Highest quality" = "Najwyższa jakość"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "History" = "Historia"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Honor orientation lock" = "Honoruj blokadę orientacji systemu"; | ||||
|  | ||||
| /* Video date filter in search */ | ||||
| "Hour" = "Godzina"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "I am lost" = "Nic tu nie ogarniam"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "I found a bug /" = "Znalazłem błąd /"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "I have a feature request" = "Mam prośbę o dodanie funkcji"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "I like this app!" = "Podoba mi się ta aplikacja!"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "I want to ask a question" = "Chcę zadać pytanie"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "If you are interested what's coming in future updates, you can track project Milestones." = "Jeśli interesuje Cię przyszłość projektu, śledź GitHubowe Milestone'y."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "If you are reporting a bug, include all relevant details (especially: app version, used device and system version, steps to reproduce)." = "Jeśli zgłaszasz błąd, dołącz potrzebne informacje (takie jak: wersja aplikacji, rodzaj urządzenia i jego wersja systemu, lista kroków do zreprodukowania)."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Increase rate" = "Zwiększ prędkość"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Info" = "Info"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Instance of current account" = "Instancja aktualnie wybranego konta"; | ||||
|  | ||||
| /* SponsorBlock category name */ | ||||
| "Interaction" = "Interakcja"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Interface" = "Interfejs"; | ||||
|  | ||||
| /* SponsorBlock category name */ | ||||
| "Intro" = "Wprowadzenie"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Issues Tracker" = "Śledzenie błędów"; | ||||
|  | ||||
| /* Selected video has just finished playing */ | ||||
| "Just watched" = "Właśnie obejrzane"; | ||||
|  | ||||
| /* Player controls layout size */ | ||||
| "Large" = "Duży"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Large layout is not suitable for all devices and using it may cause controls not to fit on the screen." = "Duże rozmiary nie są przeznaczone dla wszystkich urządzeń, użycie ich może spowodować że przyciski nie będą mieścić się na ekranie."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "LIVE" = "LIVE"; | ||||
|  | ||||
| /* Loading stream OSD */ | ||||
| "Loading streams..." = "Ładowanie strumieni..."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Loading..." = "Ładowanie…"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Locations" = "Lokalizacje"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Lock portrait mode" = "Zablokuj tryb portretowy"; | ||||
|  | ||||
| /* Video duration filter in search */ | ||||
| "Long" = "Długie"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Low" = "Niska"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Low quality" = "Niska jakość"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Lowest" = "Najniższa"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Mark as watched" = "Oznacz jako obejrzane"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Mark video as watched after playing" = "Oznacz jako obejrzane po odtworzeniu"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Mark watched videos with" = "Oznacz obejrzane wideo"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Matrix Channel" = "Kanał Matrix"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Matrix Chat" = "Chat Matrix"; | ||||
|  | ||||
| /* Player controls layout size */ | ||||
| "Medium" = "Średni"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Medium quality" = "Średnia jakość"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Milestones" = "Kamienie milowe"; | ||||
|  | ||||
| /* Video date filter in search */ | ||||
| "Month" = "Miesiąc"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "More info can be found in:" = "Więcej informacji można znaleźć tutaj:"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Movies" = "Filmy"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "MPV Documentation" = "Dokumentacja MPV"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Music" = "Muzyka"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Name" = "Nazwa"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "New Playlist" = "Nowa playlista"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Next" = "Następny"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "No description" = "Brak opisu"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "No Playlists" = "Brak playlist"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "No results" = "Brak wyników"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Normal" = "Normalna"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Not available" = "Niedostępne"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Not Playing" = "Nie odtwarza"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Nothing" = "Nic"; | ||||
|  | ||||
| /* SponsorBlock category name */ | ||||
| "Offtopic in Music Videos" = "Offtopic w teledyskach"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Only when signed in" = "Tylko gdy zalogowany"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Open \"Playlists\" tab to create new one" = "Otwórz \"Playlisty\" aby stworzyć nową"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Open Settings" = "Otwórz Ustawienia"; | ||||
|  | ||||
| /* Loading stream OSD */ | ||||
| "Opening %@ stream..." = "Otwieranie strumienia %@…"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Opening audio stream..." = "Otwieranie strumienia audio..."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Orientation" = "Orientacja"; | ||||
|  | ||||
| /* SponsorBlock category name */ | ||||
| "Outro" = "Outro"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Part of a video promoting a product or service not directly related to the creator. The creator will receive payment or compensation in the form of money or free products." = "Część filmu promująca produkt lub usługę niezwiązaną bezpośrednio z twórcą. Twórca otrzyma zapłatę lub rekompensatę w postaci pieniędzy lub darmowych produktów."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Password" = "Hasło"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Pause" = "Pauza"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Pause when entering background" = "Zatrzymaj w tle"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Pause when player is closed" = "Zatrzymaj przy zamykaniu odtwarzacza"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Picture in Picture" = "Obraz w obrazie"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Play" = "Odtwarzaj"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Play All" = "Odtwórz wszystkie"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Play in PiP" = "Otwórz w PiP"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Play Last" = "Odtwórz jako ostatni"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Play Music" = "Odtwarzaj muzykę"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Play Next" = "Odtwarzaj następne"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Play Now" = "Odtwórz teraz"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Playback" = "Odtwarzanie"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Player" = "Odtwarzacz"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Playlist" = "Playlista"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Playlist \"%@\" will be deleted.\nIt cannot be reverted." = "Playlista \"%@\" zostanie usunięta.\nNie można tego cofnąć."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Playlists" = "Playlisty"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Popular" = "Popularne"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Preferred Formats" = "Preferowane formaty"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Profiles" = "Profile"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Promoting a product or service that is directly related to the creator themselves. This usually includes merchandise or promotion of monetized platforms." = "Promowanie produktu lub usługi bezpośrednio związanej z samym twórcą. Zwykle obejmuje to towary lub promocję platform, na których można zarabiać."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Proxy videos" = "Używaj proxy do odtwarzania wideo"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Public Locations" = "Publiczne lokalizacje"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Public Manifest" = "Manifest publiczny"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Quality" = "Jakość"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Quality Profile" = "Profil jakości"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Queue" = "Kolejka"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Queue is empty" = "Kolejka jest pusta"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Rate" = "Prędkość"; | ||||
|  | ||||
| /* Video sort order in search */ | ||||
| "Rating" = "Ocena"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Recents" = "Ostatnie"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Red" = "Czerwony"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Refresh" = "Odśwież"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Regular size" = "Regularny rozmiar"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Regular Size" = "Zwykły rozmiar"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Related" = "Powiązane"; | ||||
|  | ||||
| /* Video sort order in search */ | ||||
| "Relevance" = "Dopasowanie"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Remove" = "Usuń"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Remove from Favorites" = "Usuń z ulubionych"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Remove from history" = "Usuń z historii"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Remove from Playlist" = "Usuń z playlisty"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Remove from the queue" = "Usuń z kolejki"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Replies" = "Odpowiedzi"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Reset" = "Zresetuj"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Reset search filters" = "Zresetuj filtry"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Reset watched status when playing again" = "Resetuj status odtwarzania za każdym odtworzeniem"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Resolution" = "Rozdzielczość"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Restart" = "Od początku"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Restart the app to apply the settings above." = "Zrestartuj aplikację aby zastosować powyższe ustawienia."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Restart/Play next" = "Od początku/Następny"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Restore default profiles..." = "Przywróć domyślne profile…"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Rotate to portrait when exiting fullscreen" = "Obróć do trybu portretowego przy zamykaniu pełnego ekranu"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Round corners" = "Zaokrąglaj rogi"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Save" = "Zapisz"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Save history of played videos" = "Zapisuj historię oglądania"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Save history of searches, channels and playlists" = "Zapisuj historię wyszukiwania, kanały i playlisty"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Search" = "Szukaj"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Search history is empty" = "Historia wyszukiwania jest pusta"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Search..." = "Szukaj…"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Sections" = "Sekcje"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Seek gesture sensitivity" = "Czułość gestu przewijania"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Seek gesture speed" = "Prędkość gestu przewijania"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Seek with horizontal swipe on video" = "Przewijaj wideo gestem poziomym"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Segments typically found at the start of a video that include an animation, still frame or clip which are also seen in other videos by the same creator." = "Segmenty, które zwykle znajdują się na początku filmu, zawierają animację, nieruchomą klatkę lub klip, które są również widoczne w innych filmach tego samego twórcy."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Select location closest to you:" = "Wybierz najbliższą lokalizację:"; | ||||
|  | ||||
| /* SponsorBlock category name */ | ||||
| "Self-promotion" = "Autopromocja"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Settings" = "Ustawienia"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Share %@ link" = "Udostępnij link do %@"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Share %@ link with time" = "Udostępnij link do %@ wraz z czasem"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Share..." = "Udostępnij…"; | ||||
|  | ||||
| /* Video duration filter in search */ | ||||
| "Short" = "Krótkie"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Show account username" = "Pokaż nazwę konta"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Show anonymous accounts" = "Pokaż anonimowe konta"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Show channel name" = "Pokaż nazwę kanału"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Show history" = "Pokaż historię"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Show keywords" = "Pokaż słowa kluczowe"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Show playback statistics" = "Pokaż statystyki odtwarzania"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Show progress of watching on thumbnails" = "Pokazuj postęp odtwarzania na miniaturkach"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Show sidebar when space permits" = "Pokazuj pasek boczny gdy jest na to miejsce"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Show video length" = "Pokaż długość wideo"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Shuffle" = "Mieszaj"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Shuffle All" = "Mieszaj wszystkie"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Sidebar" = "Pasek boczny"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Sign In Required" = "Wymagane logowanie"; | ||||
|  | ||||
| /* Player controls layout size */ | ||||
| "Small" = "Mały"; | ||||
|  | ||||
| /* Player controls layout size */ | ||||
| "Smaller" = "Mniejszy"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Sort" = "Sortuj"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Sort: %@" = "Sortowanie: %@"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Source" = "Źródło"; | ||||
|  | ||||
| /* SponsorBlock category name */ | ||||
| "Sponsor" = "Sponsor"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "SponsorBlock" = "SponsorBlock"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "SponsorBlock API Instance" = "Instancja SponsorBlock"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Subscribe" = "Subskrybuj"; | ||||
|  | ||||
| /* Subscriptions title */ | ||||
| "Subscriptions" = "Subskrybcje"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Switch to other public location" = "Przełącz publiczną lokalizację na inną"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Switch to public locations" = "Przełącz na publiczne lokalizacje"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "System controls buttons" = "Przyciski w systemowych kontrolkach"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "System controls show buttons for %@" = "Kontrolki systemu pokazują przyciski: %@"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "That's nice to hear. It is fun to deliver apps other people want to use. You can consider donating to the project or help by contributing to new features development." = "Miło to słyszeć. Fajnie jest dostarczać aplikacje, których inni ludzie chcą używać. Możesz rozważyć przekazanie darowizny na rzecz projektu lub pomóc poprzez przyczynienie się do rozwoju nowych funkcji."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "This cannot be reverted" = "Nie można tego cofnąć"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "This cannot be reverted. You might need to switch between views or restart the app to see changes." = "Nie można tego cofnąć. Ponowne uruchomienie aplikacji może być wymagane aby zobaczyć zmiany."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "This information will be processed only on your device and used to connect you to the server in the specified country." = "Ta informacja będzie przetwarzana tylko na tym urządzeniu aby połączyć się z serwerem najbliższym do podnego kraju. "; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "This will remove all your custom profiles and return their default values. This cannot be reverted." = "Twoje profile zostaną usunięte i przywrócone zostaną domyślne. Nie można tego cofnąć."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Thumbnails" = "Miniaturki"; | ||||
|  | ||||
| /* Video date filter in search */ | ||||
| "Today" = "Dziś"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Trending" = "Na czasie"; | ||||
|  | ||||
| /* Player controls layout size for TV */ | ||||
| "TV" = "TV"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Typically near or at the end of the video when the credits pop up and/or endcards are shown." = "Zazwyczaj w pobliżu lub na końcu filmu, gdy pojawiają się napisy i/lub karty końcowe."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "unknown" = "nieznany"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Unsubscribe" = "Odsubskrybuj"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Upload date" = "Data dodania"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "URL" = "Adres"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Used to create links from videos, channels and playlists" = "Do tworzenia linków wideo, kanałów i playlist"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Username" = "Nazwa użytkownika"; | ||||
|  | ||||
| /* Player controls layout size */ | ||||
| "Very Large" = "Bardzo duży"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Videos" = "Wideo"; | ||||
|  | ||||
| /* Video sort order in search */ | ||||
| "Views" = "Wyświetlenia"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Watched" = "Obejrzane"; | ||||
|  | ||||
| /* Selected video was played on given date */ | ||||
| "Watched %@" = "Obejrzano %@"; | ||||
|  | ||||
| /* Selected video is being played */ | ||||
| "Watching now" = "Oglądane teraz"; | ||||
|  | ||||
| /* Video date filter in search */ | ||||
| "Week" = "Tydzień"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Welcome" = "Witaj"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "When partially watched video is played" = "Gdy odtwarzane jest poprzednio widziane wideo"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Wi-Fi" = "Wi-Fi"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Wiki" = "Wiki"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Yattee" = "Yattee"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "Yattee %@ (build %@)" = "Yattee %@ (build %@)"; | ||||
|  | ||||
| /* Video date filter in search */ | ||||
| "Year" = "Rok"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "You can find information about using Yattee in the Wiki pages." = "Trochę informacji jak używać Yattee możesz znaleźć w Wiki."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "You can use automatic profile selection based on current device status or switch it in video playback settings controls." = "Możesz używać automatycznego wybierania profilu albo wybrać inny z ustawień odtwarzania wideo."; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "You have no Playlists" = "Nie masz żadnych playlist"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "You have no playlists\n\nTap on \"New Playlist\" to create one" = "Nie masz żadnych list odtwarzania\n\nStuknij w \"Nowa lista odtwarzania\", aby ją stworzyć"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "You need to create an instance and accounts\nto access %@ section" = "Musisz dodać instancję i konto\naby otworzyć sekcję: %@"; | ||||
|  | ||||
| /* No comment provided by engineer. */ | ||||
| "You need to select an account\nto access %@ section" = "Musisz wybrać konto\naby otworzyć sekcję: %@"; | ||||
|  | ||||
| @@ -186,6 +186,9 @@ | ||||
| 		371F2F1C269B43D300E4A7AB /* NavigationModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 371F2F19269B43D300E4A7AB /* NavigationModel.swift */; }; | ||||
| 		3722AEBC274DA396005EA4D6 /* Badge+Backport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3722AEBB274DA396005EA4D6 /* Badge+Backport.swift */; }; | ||||
| 		3722AEBE274DA401005EA4D6 /* Backport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3722AEBD274DA401005EA4D6 /* Backport.swift */; }; | ||||
| 		37270F1C28E06E3E00856150 /* String+Localizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37270F1B28E06E3E00856150 /* String+Localizable.swift */; }; | ||||
| 		37270F1D28E06E3E00856150 /* String+Localizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37270F1B28E06E3E00856150 /* String+Localizable.swift */; }; | ||||
| 		37270F1E28E06E3E00856150 /* String+Localizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37270F1B28E06E3E00856150 /* String+Localizable.swift */; }; | ||||
| 		3727B74A27872A920021C15E /* VisualEffectBlur-iOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3727B74927872A920021C15E /* VisualEffectBlur-iOS.swift */; }; | ||||
| 		3727B74B27872B880021C15E /* VisualEffectBlur-macOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3727B74727872A500021C15E /* VisualEffectBlur-macOS.swift */; }; | ||||
| 		3729037E2739E47400EA99F6 /* MenuCommands.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3729037D2739E47400EA99F6 /* MenuCommands.swift */; }; | ||||
| @@ -356,6 +359,9 @@ | ||||
| 		37599F38272B4D740087F250 /* FavoriteButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37599F37272B4D740087F250 /* FavoriteButton.swift */; }; | ||||
| 		37599F39272B4D740087F250 /* FavoriteButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37599F37272B4D740087F250 /* FavoriteButton.swift */; }; | ||||
| 		37599F3A272B4D740087F250 /* FavoriteButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37599F37272B4D740087F250 /* FavoriteButton.swift */; }; | ||||
| 		375B537428DF6CBB004C1D19 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 375B537828DF6CBB004C1D19 /* Localizable.strings */; }; | ||||
| 		375B537528DF6CBB004C1D19 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 375B537828DF6CBB004C1D19 /* Localizable.strings */; }; | ||||
| 		375B537628DF6CBB004C1D19 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 375B537828DF6CBB004C1D19 /* Localizable.strings */; }; | ||||
| 		375B8AB128B57F4200397B31 /* KeychainAccess in Frameworks */ = {isa = PBXBuildFile; productRef = 375B8AB028B57F4200397B31 /* KeychainAccess */; }; | ||||
| 		375B8AB328B580D300397B31 /* KeychainModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 375B8AB228B580D300397B31 /* KeychainModel.swift */; }; | ||||
| 		375B8AB428B580D300397B31 /* KeychainModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 375B8AB228B580D300397B31 /* KeychainModel.swift */; }; | ||||
| @@ -1040,6 +1046,7 @@ | ||||
| 		3722AEBB274DA396005EA4D6 /* Badge+Backport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Badge+Backport.swift"; sourceTree = "<group>"; }; | ||||
| 		3722AEBD274DA401005EA4D6 /* Backport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Backport.swift; sourceTree = "<group>"; }; | ||||
| 		3722AEBF274DAEB8005EA4D6 /* Tint+Backport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Tint+Backport.swift"; sourceTree = "<group>"; }; | ||||
| 		37270F1B28E06E3E00856150 /* String+Localizable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Localizable.swift"; sourceTree = "<group>"; }; | ||||
| 		3727B74727872A500021C15E /* VisualEffectBlur-macOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "VisualEffectBlur-macOS.swift"; sourceTree = "<group>"; }; | ||||
| 		3727B74927872A920021C15E /* VisualEffectBlur-iOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "VisualEffectBlur-iOS.swift"; sourceTree = "<group>"; }; | ||||
| 		3729037D2739E47400EA99F6 /* MenuCommands.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuCommands.swift; sourceTree = "<group>"; }; | ||||
| @@ -1111,6 +1118,8 @@ | ||||
| 		37599F2F272B42810087F250 /* FavoriteItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoriteItem.swift; sourceTree = "<group>"; }; | ||||
| 		37599F33272B44000087F250 /* FavoritesModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoritesModel.swift; sourceTree = "<group>"; }; | ||||
| 		37599F37272B4D740087F250 /* FavoriteButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoriteButton.swift; sourceTree = "<group>"; }; | ||||
| 		375B537728DF6CBB004C1D19 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Localizable.strings; sourceTree = "<group>"; }; | ||||
| 		375B537928DF6CC4004C1D19 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; }; | ||||
| 		375B8AB228B580D300397B31 /* KeychainModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeychainModel.swift; sourceTree = "<group>"; }; | ||||
| 		375DFB5726F9DA010013F468 /* InstancesModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstancesModel.swift; sourceTree = "<group>"; }; | ||||
| 		375E45F427B1976B00BA7902 /* MPVOGLView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MPVOGLView.swift; sourceTree = "<group>"; }; | ||||
| @@ -1181,6 +1190,7 @@ | ||||
| 		37A3B16C27255E7F000FB5EE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; | ||||
| 		37A3B16D27255E7F000FB5EE /* Open in Yattee.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Open in Yattee.entitlements"; sourceTree = "<group>"; }; | ||||
| 		37A3B1792725735F000FB5EE /* Open in Yattee - iOS.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Open in Yattee - iOS.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| 		37A5967628C4EDD80055F98E /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/InfoPlist.strings; sourceTree = "<group>"; }; | ||||
| 		37A5DBC7285E371400CA4DD1 /* ControlBackgroundModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ControlBackgroundModifier.swift; sourceTree = "<group>"; }; | ||||
| 		37A9965926D6F8CA006E3224 /* HorizontalCells.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HorizontalCells.swift; sourceTree = "<group>"; }; | ||||
| 		37A9965D26D6F9B9006E3224 /* FavoritesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoritesView.swift; sourceTree = "<group>"; }; | ||||
| @@ -1930,6 +1940,7 @@ | ||||
| 				37A3B15B27255E7F000FB5EE /* Resources */, | ||||
| 				37A3B16427255E7F000FB5EE /* content.js */, | ||||
| 				37A3B16C27255E7F000FB5EE /* Info.plist */, | ||||
| 				37BCBC4628C38D8E0088BE85 /* InfoPlist.strings */, | ||||
| 				37A3B16D27255E7F000FB5EE /* Open in Yattee.entitlements */, | ||||
| 				37A3B15927255E7F000FB5EE /* SafariWebExtensionHandler.swift */, | ||||
| 			); | ||||
| @@ -1989,6 +2000,7 @@ | ||||
| 				37F7AB4C28A9361F00FB46B5 /* UIDevice+Cellular.swift */, | ||||
| 				370B79CB286279BA0045DB77 /* UIViewController+HideHomeIndicator.swift */, | ||||
| 				3743CA51270F284F00E4D32B /* View+Borders.swift */, | ||||
| 				37270F1B28E06E3E00856150 /* String+Localizable.swift */, | ||||
| 			); | ||||
| 			path = Extensions; | ||||
| 			sourceTree = "<group>"; | ||||
| @@ -2035,6 +2047,7 @@ | ||||
| 				372915E52687E3B900F5A35B /* Defaults.swift */, | ||||
| 				37D2E0D328B67EFC00F64D52 /* Delay.swift */, | ||||
| 				3761ABFC26F0F8DE00AA496F /* EnvironmentValues.swift */, | ||||
| 				375B537828DF6CBB004C1D19 /* Localizable.strings */, | ||||
| 				3729037D2739E47400EA99F6 /* MenuCommands.swift */, | ||||
| 				37B7958F2771DAE0001CF27B /* OpenURLHandler.swift */, | ||||
| 				37ECED55289FE166002BC2C9 /* SafeArea.swift */, | ||||
| @@ -2547,6 +2560,7 @@ | ||||
| 			hasScannedForEncodings = 0; | ||||
| 			knownRegions = ( | ||||
| 				en, | ||||
| 				pl, | ||||
| 				Base, | ||||
| 			); | ||||
| 			mainGroup = 37D4B0BC2671614700C925CA; | ||||
| @@ -2621,6 +2635,7 @@ | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 				37D4B0E82671614900C925CA /* Assets.xcassets in Resources */, | ||||
| 				375B537428DF6CBB004C1D19 /* Localizable.strings in Resources */, | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| @@ -2629,6 +2644,7 @@ | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 				37D4B0E92671614900C925CA /* Assets.xcassets in Resources */, | ||||
| 				375B537528DF6CBB004C1D19 /* Localizable.strings in Resources */, | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| @@ -2651,6 +2667,7 @@ | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 				37D4B1862671691600C925CA /* Assets.xcassets in Resources */, | ||||
| 				375B537628DF6CBB004C1D19 /* Localizable.strings in Resources */, | ||||
| 				37D4B15F267164AF00C925CA /* Assets.xcassets in Resources */, | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| @@ -2891,6 +2908,7 @@ | ||||
| 				378AE940274EDFB5006A4EE1 /* Tint+Backport.swift in Sources */, | ||||
| 				376BE50927347B5F009AD608 /* SettingsHeader.swift in Sources */, | ||||
| 				376527BB285F60F700102284 /* PlayerTimeModel.swift in Sources */, | ||||
| 				37270F1C28E06E3E00856150 /* String+Localizable.swift in Sources */, | ||||
| 				3722AEBE274DA401005EA4D6 /* Backport.swift in Sources */, | ||||
| 				37EFAC0828C138CD00ED9B89 /* ControlsOverlayModel.swift in Sources */, | ||||
| 				37F4AD2628613B81004D0F66 /* Color+Debug.swift in Sources */, | ||||
| @@ -3235,6 +3253,7 @@ | ||||
| 				3782B95E2755858100990149 /* NSTextField+FocusRingType.swift in Sources */, | ||||
| 				37C3A252272366440087A57A /* ChannelPlaylistView.swift in Sources */, | ||||
| 				3754B01628B7F84D009717C8 /* Constants.swift in Sources */, | ||||
| 				37270F1D28E06E3E00856150 /* String+Localizable.swift in Sources */, | ||||
| 				373CFADC269663F1003CB2C6 /* Thumbnail.swift in Sources */, | ||||
| 				37C0697B2725C09E00F7F6CB /* PlayerQueueItemBridge.swift in Sources */, | ||||
| 				37CFB48628AFE2510070024C /* VideoDescription.swift in Sources */, | ||||
| @@ -3459,6 +3478,7 @@ | ||||
| 				379775952689365600DD52A8 /* Array+Next.swift in Sources */, | ||||
| 				3752069F285E910600CA655F /* ChapterView.swift in Sources */, | ||||
| 				37F4AD1D28612B23004D0F66 /* OpeningStream.swift in Sources */, | ||||
| 				37270F1E28E06E3E00856150 /* String+Localizable.swift in Sources */, | ||||
| 				3705B180267B4DFB00704544 /* TrendingCountry.swift in Sources */, | ||||
| 				375B8AB528B580D300397B31 /* KeychainModel.swift in Sources */, | ||||
| 				373CFACD26966264003CB2C6 /* SearchQuery.swift in Sources */, | ||||
| @@ -3544,6 +3564,26 @@ | ||||
| 		}; | ||||
| /* End PBXTargetDependency section */ | ||||
|  | ||||
| /* Begin PBXVariantGroup section */ | ||||
| 		375B537828DF6CBB004C1D19 /* Localizable.strings */ = { | ||||
| 			isa = PBXVariantGroup; | ||||
| 			children = ( | ||||
| 				375B537728DF6CBB004C1D19 /* pl */, | ||||
| 				375B537928DF6CC4004C1D19 /* en */, | ||||
| 			); | ||||
| 			name = Localizable.strings; | ||||
| 			sourceTree = "<group>"; | ||||
| 		}; | ||||
| 		37BCBC4628C38D8E0088BE85 /* InfoPlist.strings */ = { | ||||
| 			isa = PBXVariantGroup; | ||||
| 			children = ( | ||||
| 				37A5967628C4EDD80055F98E /* pl */, | ||||
| 			); | ||||
| 			name = InfoPlist.strings; | ||||
| 			sourceTree = "<group>"; | ||||
| 		}; | ||||
| /* End PBXVariantGroup section */ | ||||
|  | ||||
| /* Begin XCBuildConfiguration section */ | ||||
| 		3712643F2865FF4500D77974 /* Debug */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
|   | ||||
| @@ -36,7 +36,7 @@ struct InstancesSettings: View { | ||||
|             } | ||||
|  | ||||
|             if !selectedInstance.isNil, selectedInstance.app.supportsAccounts { | ||||
|                 SettingsHeader(text: "Accounts") | ||||
|                 SettingsHeader(text: "Accounts".localized()) | ||||
|  | ||||
|                 let list = List(selection: $selectedAccount) { | ||||
|                     if selectedInstanceAccounts.isEmpty { | ||||
| @@ -79,7 +79,7 @@ struct InstancesSettings: View { | ||||
|             } | ||||
|  | ||||
|             if selectedInstance != nil, selectedInstance.app.hasFrontendURL { | ||||
|                 SettingsHeader(text: "Frontend URL") | ||||
|                 SettingsHeader(text: "Frontend URL".localized()) | ||||
|  | ||||
|                 TextField("Frontend URL", text: $frontendURL) | ||||
|                     .onChange(of: selectedInstance) { _ in | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Arkadiusz Fal
					Arkadiusz Fal