mirror of
https://github.com/iv-org/invidious
synced 2024-12-01 07:23:28 +01:00
f54fbd057e
* Add prefers-color-scheme support This should fix <https://github.com/omarroth/invidious/issues/559>. The cookie storage format has been changed from boolean ("true"/"false") to tri-state ("dark"/"light"/""), so that users without a cookie set will get dark mode if they have enabled the dark theme in their operating system. The code for handling the cookie state, along with the user's operating system theme, has been factored out into a new function `update_mode`, which is called both at window load and at the "storage" event listener, because the "storage" event listener is only trigerred when a change is made to the localStorage from another tab/window (for more info - see <https://stackoverflow.com/a/4679754>).
370 lines
14 KiB
JSON
370 lines
14 KiB
JSON
{
|
|
"`x` subscribers": {
|
|
"(\\D|^)1(\\D|$)": "`x` subscriber",
|
|
"": "`x` subscribers"
|
|
},
|
|
"`x` videos": {
|
|
"(\\D|^)1(\\D|$)": "`x` video",
|
|
"": "`x` videos"
|
|
},
|
|
"LIVE": "LIVE",
|
|
"Shared `x` ago": "Shared `x` ago",
|
|
"Unsubscribe": "Unsubscribe",
|
|
"Subscribe": "Subscribe",
|
|
"View channel on YouTube": "View channel on YouTube",
|
|
"View playlist on YouTube": "View playlist on YouTube",
|
|
"newest": "newest",
|
|
"oldest": "oldest",
|
|
"popular": "popular",
|
|
"last": "last",
|
|
"Next page": "Next page",
|
|
"Previous page": "Previous page",
|
|
"Clear watch history?": "Clear watch history?",
|
|
"New password": "New password",
|
|
"New passwords must match": "New passwords must match",
|
|
"Cannot change password for Google accounts": "Cannot change password for Google accounts",
|
|
"Authorize token?": "Authorize token?",
|
|
"Authorize token for `x`?": "Authorize token for `x`?",
|
|
"Yes": "Yes",
|
|
"No": "No",
|
|
"Import and Export Data": "Import and Export Data",
|
|
"Import": "Import",
|
|
"Import Invidious data": "Import Invidious data",
|
|
"Import YouTube subscriptions": "Import YouTube subscriptions",
|
|
"Import FreeTube subscriptions (.db)": "Import FreeTube subscriptions (.db)",
|
|
"Import NewPipe subscriptions (.json)": "Import NewPipe subscriptions (.json)",
|
|
"Import NewPipe data (.zip)": "Import NewPipe data (.zip)",
|
|
"Export": "Export",
|
|
"Export subscriptions as OPML": "Export subscriptions as OPML",
|
|
"Export subscriptions as OPML (for NewPipe & FreeTube)": "Export subscriptions as OPML (for NewPipe & FreeTube)",
|
|
"Export data as JSON": "Export data as JSON",
|
|
"Delete account?": "Delete account?",
|
|
"History": "History",
|
|
"An alternative front-end to YouTube": "An alternative front-end to YouTube",
|
|
"JavaScript license information": "JavaScript license information",
|
|
"source": "source",
|
|
"Log in": "Log in",
|
|
"Log in/register": "Log in/register",
|
|
"Log in with Google": "Log in with Google",
|
|
"User ID": "User ID",
|
|
"Password": "Password",
|
|
"Time (h:mm:ss):": "Time (h:mm:ss):",
|
|
"Text CAPTCHA": "Text CAPTCHA",
|
|
"Image CAPTCHA": "Image CAPTCHA",
|
|
"Sign In": "Sign In",
|
|
"Register": "Register",
|
|
"E-mail": "E-mail",
|
|
"Google verification code": "Google verification code",
|
|
"Preferences": "Preferences",
|
|
"Player preferences": "Player preferences",
|
|
"Always loop: ": "Always loop: ",
|
|
"Autoplay: ": "Autoplay: ",
|
|
"Play next by default: ": "Play next by default: ",
|
|
"Autoplay next video: ": "Autoplay next video: ",
|
|
"Listen by default: ": "Listen by default: ",
|
|
"Proxy videos: ": "Proxy videos: ",
|
|
"Default speed: ": "Default speed: ",
|
|
"Preferred video quality: ": "Preferred video quality: ",
|
|
"Player volume: ": "Player volume: ",
|
|
"Default comments: ": "Default comments: ",
|
|
"youtube": "youtube",
|
|
"reddit": "reddit",
|
|
"Default captions: ": "Default captions: ",
|
|
"Fallback captions: ": "Fallback captions: ",
|
|
"Show related videos: ": "Show related videos: ",
|
|
"Show annotations by default: ": "Show annotations by default: ",
|
|
"Visual preferences": "Visual preferences",
|
|
"Player style: ": "",
|
|
"Dark mode: ": "Dark mode: ",
|
|
"Theme: ": "",
|
|
"dark": "",
|
|
"light": "",
|
|
"Thin mode: ": "Thin mode: ",
|
|
"Subscription preferences": "Subscription preferences",
|
|
"Show annotations by default for subscribed channels: ": "Show annotations by default for subscribed channels? ",
|
|
"Redirect homepage to feed: ": "Redirect homepage to feed: ",
|
|
"Number of videos shown in feed: ": "Number of videos shown in feed: ",
|
|
"Sort videos by: ": "Sort videos by: ",
|
|
"published": "published",
|
|
"published - reverse": "published - reverse",
|
|
"alphabetically": "alphabetically",
|
|
"alphabetically - reverse": "alphabetically - reverse",
|
|
"channel name": "channel name",
|
|
"channel name - reverse": "channel name - reverse",
|
|
"Only show latest video from channel: ": "Only show latest video from channel: ",
|
|
"Only show latest unwatched video from channel: ": "Only show latest unwatched video from channel: ",
|
|
"Only show unwatched: ": "Only show unwatched: ",
|
|
"Only show notifications (if there are any): ": "Only show notifications (if there are any): ",
|
|
"Enable web notifications": "Enable web notifications",
|
|
"`x` uploaded a video": "`x` uploaded a video",
|
|
"`x` is live": "`x` is live",
|
|
"Data preferences": "Data preferences",
|
|
"Clear watch history": "Clear watch history",
|
|
"Import/export data": "Import/export data",
|
|
"Change password": "Change password",
|
|
"Manage subscriptions": "Manage subscriptions",
|
|
"Manage tokens": "Manage tokens",
|
|
"Watch history": "Watch history",
|
|
"Delete account": "Delete account",
|
|
"Administrator preferences": "Administrator preferences",
|
|
"Default homepage: ": "Default homepage: ",
|
|
"Feed menu: ": "Feed menu: ",
|
|
"Top enabled: ": "Top enabled: ",
|
|
"CAPTCHA enabled: ": "CAPTCHA enabled: ",
|
|
"Login enabled: ": "Login enabled? ",
|
|
"Registration enabled: ": "Registration enabled? ",
|
|
"Report statistics: ": "Report statistics? ",
|
|
"Save preferences": "Save preferences",
|
|
"Subscription manager": "Subscription manager",
|
|
"Token manager": "Token manager",
|
|
"Token": "Token",
|
|
"`x` subscriptions": {
|
|
"(\\D|^)1(\\D|$)": "`x` subscription",
|
|
"": "`x` subscriptions"
|
|
},
|
|
"`x` tokens": {
|
|
"(\\D|^)1(\\D|$)": "`x` token",
|
|
"": "`x` tokens"
|
|
},
|
|
"Import/export": "Import/export",
|
|
"unsubscribe": "unsubscribe",
|
|
"revoke": "revoke",
|
|
"Subscriptions": "Subscriptions",
|
|
"`x` unseen notifications": {
|
|
"(\\D|^)1(\\D|$)": "`x` unseen notification",
|
|
"": "`x` unseen notifications"
|
|
},
|
|
"search": "search",
|
|
"Log out": "Log out",
|
|
"Released under the AGPLv3 by Omar Roth.": "Released under the AGPLv3 by Omar Roth.",
|
|
"Source available here.": "Source available here.",
|
|
"View JavaScript license information.": "View JavaScript license information.",
|
|
"View privacy policy.": "View privacy policy.",
|
|
"Trending": "Trending",
|
|
"Unlisted": "Unlisted",
|
|
"Watch on YouTube": "Watch on YouTube",
|
|
"Hide annotations": "Hide annotations",
|
|
"Show annotations": "Show annotations",
|
|
"Genre: ": "Genre: ",
|
|
"License: ": "License: ",
|
|
"Family friendly? ": "Family friendly? ",
|
|
"Wilson score: ": "Wilson score: ",
|
|
"Engagement: ": "Engagement: ",
|
|
"Whitelisted regions: ": "Whitelisted regions: ",
|
|
"Blacklisted regions: ": "Blacklisted regions: ",
|
|
"Shared `x`": "Shared `x`",
|
|
"`x` views": {
|
|
"(\\D|^)1(\\D|$)": "`x` views",
|
|
"": "`x` views"
|
|
},
|
|
"Premieres in `x`": "Premieres in `x`",
|
|
"Premieres `x`": "Premieres `x`",
|
|
"Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.",
|
|
"View YouTube comments": "View YouTube comments",
|
|
"View more comments on Reddit": "View more comments on Reddit",
|
|
"View `x` comments": "View `x` comments",
|
|
"View Reddit comments": "View Reddit comments",
|
|
"Hide replies": "Hide replies",
|
|
"Show replies": "Show replies",
|
|
"Incorrect password": "Incorrect password",
|
|
"Quota exceeded, try again in a few hours": "Quota exceeded, try again in a few hours",
|
|
"Unable to log in, make sure two-factor authentication (Authenticator or SMS) is turned on.": "Unable to log in, make sure two-factor authentication (Authenticator or SMS) is turned on.",
|
|
"Invalid TFA code": "Invalid TFA code",
|
|
"Login failed. This may be because two-factor authentication is not turned on for your account.": "Login failed. This may be because two-factor authentication is not turned on for your account.",
|
|
"Wrong answer": "Wrong answer",
|
|
"Erroneous CAPTCHA": "Erroneous CAPTCHA",
|
|
"CAPTCHA is a required field": "CAPTCHA is a required field",
|
|
"User ID is a required field": "User ID is a required field",
|
|
"Password is a required field": "Password is a required field",
|
|
"Wrong username or password": "Wrong username or password",
|
|
"Please sign in using 'Log in with Google'": "Please sign in using 'Log in with Google'",
|
|
"Password cannot be empty": "Password cannot be empty",
|
|
"Password cannot be longer than 55 characters": "Password cannot be longer than 55 characters",
|
|
"Please log in": "Please log in",
|
|
"Invidious Private Feed for `x`": "Invidious Private Feed for `x`",
|
|
"channel:`x`": "channel:`x`",
|
|
"Deleted or invalid channel": "Deleted or invalid channel",
|
|
"This channel does not exist.": "This channel does not exist.",
|
|
"Could not get channel info.": "Could not get channel info.",
|
|
"Could not fetch comments": "Could not fetch comments",
|
|
"View `x` replies": {
|
|
"(\\D|^)1(\\D|$)": "View `x` reply",
|
|
"": "View `x` replies"
|
|
},
|
|
"`x` ago": "`x` ago",
|
|
"Load more": "Load more",
|
|
"`x` points": {
|
|
"(\\D|^)1(\\D|$)": "`x` point",
|
|
"": "`x` points"
|
|
},
|
|
"Could not create mix.": "Could not create mix.",
|
|
"Empty playlist": "Empty playlist",
|
|
"Not a playlist.": "Not a playlist.",
|
|
"Playlist does not exist.": "Playlist does not exist.",
|
|
"Could not pull trending pages.": "Could not pull trending pages.",
|
|
"Hidden field \"challenge\" is a required field": "Hidden field \"challenge\" is a required field",
|
|
"Hidden field \"token\" is a required field": "Hidden field \"token\" is a required field",
|
|
"Erroneous challenge": "Erroneous challenge",
|
|
"Erroneous token": "Erroneous token",
|
|
"No such user": "No such user",
|
|
"Token is expired, please try again": "Token is expired, please try again",
|
|
"English": "English",
|
|
"English (auto-generated)": "English (auto-generated)",
|
|
"Afrikaans": "Afrikaans",
|
|
"Albanian": "Albanian",
|
|
"Amharic": "Amharic",
|
|
"Arabic": "Arabic",
|
|
"Armenian": "Armenian",
|
|
"Azerbaijani": "Azerbaijani",
|
|
"Bangla": "Bangla",
|
|
"Basque": "Basque",
|
|
"Belarusian": "Belarusian",
|
|
"Bosnian": "Bosnian",
|
|
"Bulgarian": "Bulgarian",
|
|
"Burmese": "Burmese",
|
|
"Catalan": "Catalan",
|
|
"Cebuano": "Cebuano",
|
|
"Chinese (Simplified)": "Chinese (Simplified)",
|
|
"Chinese (Traditional)": "Chinese (Traditional)",
|
|
"Corsican": "Corsican",
|
|
"Croatian": "Croatian",
|
|
"Czech": "Czech",
|
|
"Danish": "Danish",
|
|
"Dutch": "Dutch",
|
|
"Esperanto": "Esperanto",
|
|
"Estonian": "Estonian",
|
|
"Filipino": "Filipino",
|
|
"Finnish": "Finnish",
|
|
"French": "French",
|
|
"Galician": "Galician",
|
|
"Georgian": "Georgian",
|
|
"German": "German",
|
|
"Greek": "Greek",
|
|
"Gujarati": "Gujarati",
|
|
"Haitian Creole": "Haitian Creole",
|
|
"Hausa": "Hausa",
|
|
"Hawaiian": "Hawaiian",
|
|
"Hebrew": "Hebrew",
|
|
"Hindi": "Hindi",
|
|
"Hmong": "Hmong",
|
|
"Hungarian": "Hungarian",
|
|
"Icelandic": "Icelandic",
|
|
"Igbo": "Igbo",
|
|
"Indonesian": "Indonesian",
|
|
"Irish": "Irish",
|
|
"Italian": "Italian",
|
|
"Japanese": "Japanese",
|
|
"Javanese": "Javanese",
|
|
"Kannada": "Kannada",
|
|
"Kazakh": "Kazakh",
|
|
"Khmer": "Khmer",
|
|
"Korean": "Korean",
|
|
"Kurdish": "Kurdish",
|
|
"Kyrgyz": "Kyrgyz",
|
|
"Lao": "Lao",
|
|
"Latin": "Latin",
|
|
"Latvian": "Latvian",
|
|
"Lithuanian": "Lithuanian",
|
|
"Luxembourgish": "Luxembourgish",
|
|
"Macedonian": "Macedonian",
|
|
"Malagasy": "Malagasy",
|
|
"Malay": "Malay",
|
|
"Malayalam": "Malayalam",
|
|
"Maltese": "Maltese",
|
|
"Maori": "Maori",
|
|
"Marathi": "Marathi",
|
|
"Mongolian": "Mongolian",
|
|
"Nepali": "Nepali",
|
|
"Norwegian Bokmål": "Norwegian Bokmål",
|
|
"Nyanja": "Nyanja",
|
|
"Pashto": "Pashto",
|
|
"Persian": "Persian",
|
|
"Polish": "Polish",
|
|
"Portuguese": "Portuguese",
|
|
"Punjabi": "Punjabi",
|
|
"Romanian": "Romanian",
|
|
"Russian": "Russian",
|
|
"Samoan": "Samoan",
|
|
"Scottish Gaelic": "Scottish Gaelic",
|
|
"Serbian": "Serbian",
|
|
"Shona": "Shona",
|
|
"Sindhi": "Sindhi",
|
|
"Sinhala": "Sinhala",
|
|
"Slovak": "Slovak",
|
|
"Slovenian": "Slovenian",
|
|
"Somali": "Somali",
|
|
"Southern Sotho": "Southern Sotho",
|
|
"Spanish": "Spanish",
|
|
"Spanish (Latin America)": "Spanish (Latin America)",
|
|
"Sundanese": "Sundanese",
|
|
"Swahili": "Swahili",
|
|
"Swedish": "Swedish",
|
|
"Tajik": "Tajik",
|
|
"Tamil": "Tamil",
|
|
"Telugu": "Telugu",
|
|
"Thai": "Thai",
|
|
"Turkish": "Turkish",
|
|
"Ukrainian": "Ukrainian",
|
|
"Urdu": "Urdu",
|
|
"Uzbek": "Uzbek",
|
|
"Vietnamese": "Vietnamese",
|
|
"Welsh": "Welsh",
|
|
"Western Frisian": "Western Frisian",
|
|
"Xhosa": "Xhosa",
|
|
"Yiddish": "Yiddish",
|
|
"Yoruba": "Yoruba",
|
|
"Zulu": "Zulu",
|
|
"`x` years": {
|
|
"(\\D|^)1(\\D|$)": "`x` year",
|
|
"": "`x` years"
|
|
},
|
|
"`x` months": {
|
|
"(\\D|^)1(\\D|$)": "`x` month",
|
|
"": "`x` months"
|
|
},
|
|
"`x` weeks": {
|
|
"(\\D|^)1(\\D|$)": "`x` week",
|
|
"": "`x` weeks"
|
|
},
|
|
"`x` days": {
|
|
"(\\D|^)1(\\D|$)": "`x` day",
|
|
"": "`x` days"
|
|
},
|
|
"`x` hours": {
|
|
"(\\D|^)1(\\D|$)": "`x` hour",
|
|
"": "`x` hours"
|
|
},
|
|
"`x` minutes": {
|
|
"(\\D|^)1(\\D|$)": "`x` minute",
|
|
"": "`x` minutes"
|
|
},
|
|
"`x` seconds": {
|
|
"(\\D|^)1(\\D|$)": "`x` second",
|
|
"": "`x` seconds"
|
|
},
|
|
"Fallback comments: ": "Fallback comments: ",
|
|
"Popular": "Popular",
|
|
"Top": "Top",
|
|
"About": "About",
|
|
"Rating: ": "Rating: ",
|
|
"Language: ": "Language: ",
|
|
"View as playlist": "View as playlist",
|
|
"Default": "Default",
|
|
"Music": "Music",
|
|
"Gaming": "Gaming",
|
|
"News": "News",
|
|
"Movies": "Movies",
|
|
"Download": "Download",
|
|
"Download as: ": "Download as: ",
|
|
"%A %B %-d, %Y": "%A %B %-d, %Y",
|
|
"(edited)": "(edited)",
|
|
"YouTube comment permalink": "YouTube comment permalink",
|
|
"permalink": "",
|
|
"`x` marked it with a ❤": "`x` marked it with a ❤",
|
|
"Audio mode": "Audio mode",
|
|
"Video mode": "Video mode",
|
|
"Videos": "Videos",
|
|
"Playlists": "Playlists",
|
|
"Community": "Community",
|
|
"Current version: ": "Current version: "
|
|
} |