Merge pull request #1896 from dragos-efy/efy

Update from Main
This commit is contained in:
Bnyro 2022-12-19 16:32:31 +01:00 committed by GitHub
commit 07f5aa9c3b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
68 changed files with 1931 additions and 768 deletions

View File

@ -22,7 +22,7 @@ body:
label: Official Instance
description: Can the bug be reproduced on the official instance?
options:
- label: The bug is reproducable on the [official hosted instance](http://piped.kavin.rocks/) or is API related.
- label: The bug is reproducable on the [official hosted instance](http://piped.video/) or is API related.
- type: textarea
attributes:

30
.github/workflows/deploy-azure.yml vendored Normal file
View File

@ -0,0 +1,30 @@
name: Azure Static Web Apps CI/CD
on:
push:
branches:
- master
jobs:
build_and_deploy_job:
if: github.event_name == 'push'
runs-on: ubuntu-latest
name: Build and Deploy Job
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Build And Deploy
id: builddeploy
uses: Azure/static-web-apps-deploy@v1
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_LEMON_WATER_0063A7F03 }}
repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments)
action: "upload"
###### Repository/Build Configurations - These values can be configured to match your app requirements. ######
# For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig
app_location: "/" # App source code path
app_build_command: "yarn build && sed -i 's/fonts.gstatic.com/fonts.kavin.rocks/g' dist/assets/*.css"
api_location: "" # Api source code path - optional
output_location: "dist" # Built app content directory - optional
###### End of Repository/Build Configurations ######

16
.github/workflows/weblate-merge.yml vendored Normal file
View File

@ -0,0 +1,16 @@
name: Merge Weblate translations
on:
pull_request:
types: [opened, reopened]
jobs:
merge:
runs-on: ubuntu-latest
steps:
- name: AutoMerge Weblate translations
if: github.event.pull_request.user.login == 'weblate'
run: gh pr merge --auto --delete-branch --merge "$PR_URL"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -2,7 +2,7 @@
[![AGPL v3](https://shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0.en.html)
[![Matrix](https://img.shields.io/matrix/piped:matrix.org)](https://matrix.to/#/#piped:matrix.org)
[![Registered Users](https://pipedapi.kavin.rocks/registered/badge)](https://piped.kavin.rocks/register)
[![Registered Users](https://pipedapi.kavin.rocks/registered/badge)](https://piped.video/register)
[![IPFS Build](https://github.com/TeamPiped/Piped/actions/workflows/ipfs-build.yml/badge.svg)](https://piped-ipfs.kavin.rocks/)
[![GitHub Repo stars](https://img.shields.io/github/stars/TeamPiped/Piped-Frontend?style=social)](https://github.com/TeamPiped/Piped/stargazers)
[![GitHub last commit](https://img.shields.io/github/last-commit/TeamPiped/Piped-Frontend)](https://github.com/TeamPiped/Piped/commits)
@ -39,6 +39,7 @@ By using Piped, you can freely watch and listen to content without the fear of p
- [x] [Available in many languages](src/locales), thanks to [our translators](https://hosted.weblate.org/projects/piped/frontend/)
- [x] Embedded video support
- [x] No age restriction
- [x] Bypasses Geo restrictions if possible through a federated network
**Technical Features**
@ -46,7 +47,8 @@ By using Piped, you can freely watch and listen to content without the fear of p
- [x] Performant by design, designed to handle 1000s of users concurrently
- [x] Does not use official YouTube APIs
- [x] Uses [NewPipeExtractor](https://github.com/TeamNewPipe/NewPipeExtractor) to extract information
- [x] Public [JSON API](https://piped-docs.kavin.rocks/docs/api-documentation/)
- [x] Public [JSON API](https://docs.piped.video/docs/api-documentation/)
- [x] Federated protocol on Matrix to let instances collaborate with each other
## Screenshots
@ -61,13 +63,13 @@ By using Piped, you can freely watch and listen to content without the fear of p
## Self-Hosting
See https://piped-docs.kavin.rocks/docs/self-hosting/ for more details.
See https://docs.piped.video/docs/self-hosting/ for more details.
The source code of the documentation website is available at https://github.com/TeamPiped/Documentation.
## Documentation
The documentation can be found at https://piped-docs.kavin.rocks (accessible via IPNS as well).
The documentation can be found at https://docs.piped.video (accessible via IPNS as well).
## Extensions
@ -79,6 +81,16 @@ To redirect all YouTube links to Piped, you are highly recommended to use either
You can help by translating the project to a language you speak at https://hosted.weblate.org/projects/piped/frontend/
### Mirrors
- Cloudflare Pages - [cf.piped.video](https://cf.piped.video/)
- Vercel - [vc.piped.video](https://vc.piped.video/)
- Render - [re.piped.video](https://re.piped.video/)
- Fleek - [fl.piped.video](https://fl.piped.video/)
- DigitalOcean - [do.piped.video](https://do.piped.video/)
- Netlify - [nf.piped.video](https://nf.piped.video/)
- Azure - [az.piped.video](https://az.piped.video/)
### Forking, and contributing
- Fork the repository on GitHub: https://github.com/TeamPiped/Piped/fork

View File

@ -9,41 +9,41 @@
"lint": "eslint --fix --color --ignore-path .gitignore --ext .js,.vue ."
},
"dependencies": {
"@fortawesome/fontawesome-svg-core": "6.2.0",
"@fortawesome/free-brands-svg-icons": "6.2.0",
"@fortawesome/free-solid-svg-icons": "6.2.0",
"@fortawesome/vue-fontawesome": "3.0.1",
"@fortawesome/fontawesome-svg-core": "6.2.1",
"@fortawesome/free-brands-svg-icons": "6.2.1",
"@fortawesome/free-solid-svg-icons": "6.2.1",
"@fortawesome/vue-fontawesome": "3.0.2",
"buffer": "6.0.3",
"dompurify": "2.4.0",
"hotkeys-js": "3.10.0",
"dompurify": "2.4.1",
"hotkeys-js": "3.10.1",
"javascript-time-ago": "2.5.9",
"mux.js": "6.2.0",
"shaka-player": "4.2.3",
"shaka-player": "4.3.2",
"stream-browserify": "3.0.0",
"vue": "3.2.41",
"vue": "3.2.45",
"vue-i18n": "9.2.2",
"vue-router": "4.1.6",
"xml-js": "1.6.11"
},
"devDependencies": {
"@iconify/json": "2.1.132",
"@iconify/json": "2.1.153",
"@intlify/vite-plugin-vue-i18n": "6.0.3",
"@unocss/preset-icons": "0.46.3",
"@unocss/preset-web-fonts": "0.46.3",
"@unocss/transformer-directives": "0.46.3",
"@unocss/transformer-variant-group": "0.46.3",
"@vitejs/plugin-legacy": "2.3.0",
"@vitejs/plugin-vue": "3.2.0",
"@vue/compiler-sfc": "3.2.41",
"eslint": "8.26.0",
"@unocss/preset-icons": "0.47.6",
"@unocss/preset-web-fonts": "0.47.6",
"@unocss/transformer-directives": "0.47.6",
"@unocss/transformer-variant-group": "0.47.6",
"@vitejs/plugin-legacy": "3.0.1",
"@vitejs/plugin-vue": "4.0.0",
"@vue/compiler-sfc": "3.2.45",
"eslint": "8.29.0",
"eslint-config-prettier": "8.5.0",
"eslint-plugin-prettier": "4.2.1",
"eslint-plugin-vue": "9.7.0",
"prettier": "2.7.1",
"unocss": "0.46.3",
"vite": "3.2.2",
"eslint-plugin-vue": "9.8.0",
"prettier": "2.8.1",
"unocss": "0.47.6",
"vite": "3.2.5",
"vite-plugin-eslint": "1.8.1",
"vite-plugin-pwa": "0.13.1"
"vite-plugin-pwa": "0.14.0"
},
"eslintConfig": {
"root": true,

1
public/_redirects Normal file
View File

@ -0,0 +1 @@
/* /index.html 200

View File

@ -4,7 +4,7 @@
<LongName>Piped Search</LongName>
<Description>Search for videos, channels, and playlists on Piped</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="48" height="48" type="image/x-icon">https://piped.kavin.rocks/favicon.ico</Image>
<Url method="get" rel="results" type="text/html" template="https://piped.kavin.rocks/results?search_query={searchTerms}" />
<Image width="48" height="48" type="image/x-icon">https://piped.video/favicon.ico</Image>
<Url method="get" rel="results" type="text/html" template="https://piped.video/results?search_query={searchTerms}" />
<Url method="get" rel="suggestions" type="application/x-suggestions+json" template="https://pipedapi.kavin.rocks/opensearch/suggestions?query={searchTerms}" />
</OpenSearchDescription>

View File

@ -1,2 +1,2 @@
User-agent: *
Disallow:
Disallow: /

View File

@ -181,7 +181,7 @@ export default {
const App = this;
(async function () {
const defaultLang = await App.defaultLangage;
const defaultLang = await App.defaultLanguage;
const locale = App.getPreferenceString("hl", defaultLang);
if (locale !== App.TimeAgoConfig.locale) {
const localeTime = await import(`../node_modules/javascript-time-ago/locale/${locale}.json`)

View File

@ -36,6 +36,7 @@
>
<font-awesome-icon icon="rss" />
</a>
<WatchOnYouTubeButton :link="`https://youtube.com/channel/${this.channel.id}`" />
<p>|</p>
<button
v-for="(tab, index) in tabs"
@ -75,11 +76,13 @@
<script>
import ErrorHandler from "./ErrorHandler.vue";
import ContentItem from "./ContentItem.vue";
import WatchOnYouTubeButton from "./WatchOnYouTubeButton.vue";
export default {
components: {
ErrorHandler,
ContentItem,
WatchOnYouTubeButton,
},
data() {
return {
@ -201,23 +204,23 @@ export default {
},
});
} else {
this.handleLocalSubscriptions(this.channel.id);
if (!this.handleLocalSubscriptions(this.channel.id)) return;
}
this.subscribed = !this.subscribed;
},
getTranslatedTabName(tabName) {
let translatedTabName = tabName;
switch (tabName) {
case "Livestreams":
case "livestreams":
translatedTabName = this.$t("titles.livestreams");
break;
case "Playlists":
case "playlists":
translatedTabName = this.$t("titles.playlists");
break;
case "Channels":
case "channels":
translatedTabName = this.$t("titles.channels");
break;
case "Shorts":
case "shorts":
translatedTabName = this.$t("video.shorts");
break;
default:

View File

@ -4,7 +4,7 @@
<font-awesome-icon :icon="['fab', 'github']" />
<span v-t="'actions.source_code'" />
</a>
<a href="https://piped-docs.kavin.rocks/" target="_blank">
<a href="https://docs.piped.video/" target="_blank">
<font-awesome-icon :icon="['fa', 'book']" />
<span v-t="'actions.documentation'" />
</a>

View File

@ -159,7 +159,11 @@ export default {
: [...new Set((this.getLocalSubscriptions() ?? []).concat(newChannels))];
// Sort for better cache hits
subscriptions.sort();
localStorage.setItem("localSubscriptions", JSON.stringify(subscriptions));
try {
localStorage.setItem("localSubscriptions", JSON.stringify(subscriptions));
} catch (e) {
alert(this.$t("info.local_storage"));
}
},
},
};

View File

@ -5,7 +5,7 @@
><img alt="logo" src="/img/icons/logo.svg" height="32" width="32" />iped</router-link
>
</div>
<div class="lt-md:hidden flex flex-1 justify-start">
<div class="lt-md:hidden flex flex-1 justify-start" style="position: relative">
<input
v-model="searchText"
type="text"
@ -54,7 +54,7 @@
</nav>
<!-- search suggestions for mobile devices -->
<div class="w-{full - 4} md:hidden mx-2">
<div class="w-{full - 4} md:hidden mx-2" style="position: relative">
<input
v-model="searchText"
type="text"
@ -66,6 +66,7 @@
@focus="onInputFocus"
@blur="onInputBlur"
/>
<span v-if="searchText" class="delete-search" @click="searchText = ''">x</span>
</div>
<SearchSuggestions
v-show="(searchText || showSearchHistory) && suggestionsVisible"
@ -104,12 +105,29 @@
width: auto;
margin: 0 -5rem;
}
.delete-search {
position: absolute;
display: flex;
right: 6rem;
top: 5.5rem;
height: 30rem;
width: 30rem;
cursor: pointer;
background-color: var(--efy_bg1);
border: var(--efy_border);
border-radius: var(--efy_radius0);
place-content: center;
font-size: 20rem;
color: var(--efy_text);
flex-wrap: wrap;
align-content: center;
}
</style>
<script>
import SearchSuggestions from "./SearchSuggestions.vue";
import hotkeys from "hotkeys-js";
import LoginModal from "./LoginModal.vue";
import hotkeys from "hotkeys-js";
export default {
components: {
SearchSuggestions,
@ -119,8 +137,8 @@ export default {
return {
searchText: "",
suggestionsVisible: false,
showTopNav: false,
showLoginModal: false,
showTopNav: false,
};
},
mounted() {
@ -138,8 +156,8 @@ export default {
shouldShowTrending(_this) {
return _this.getPreferenceString("homepage", "trending") != "trending";
},
showSearchHistory() {
return localStorage.getItem("searchHistory") && localStorage.getItem("search_history");
showSearchHistory(_this) {
return _this.getPreferenceBoolean("searchHistory", false) && localStorage.getItem("search_history");
},
},
methods: {

View File

@ -14,7 +14,7 @@
<div>
<strong v-text="`${playlist.videos} ${$t('video.videos')}`" />
<br />
<button class="btn mr-1" v-if="authenticated && !isPipedPlaylist" @click="clonePlaylist">
<button class="btn mr-1 ml-2" v-if="authenticated && !isPipedPlaylist" @click="clonePlaylist">
{{ $t("actions.clone_playlist") }}<font-awesome-icon class="ml-3" icon="clone" />
</button>
<button class="btn mr-1" @click="downloadPlaylistAsTxt">
@ -23,6 +23,7 @@
<a class="btn" :href="getRssUrl">
<font-awesome-icon icon="rss" />
</a>
<WatchOnYouTubeButton :link="`https://www.youtube.com/playlist?list=${this.$route.query.list}`" />
</div>
</div>
@ -47,11 +48,13 @@
<script>
import ErrorHandler from "./ErrorHandler.vue";
import VideoItem from "./VideoItem.vue";
import WatchOnYouTubeButton from "./WatchOnYouTubeButton.vue";
export default {
components: {
ErrorHandler,
VideoItem,
WatchOnYouTubeButton,
},
data() {
return {
@ -137,7 +140,7 @@ export default {
downloadPlaylistAsTxt() {
var data = "";
this.playlist.relatedStreams.forEach(element => {
data += "https://piped.kavin.rocks" + element.url + "\n";
data += "https://piped.video" + element.url + "\n";
});
this.download(data, this.playlist.name + ".txt", "text/plain");
},

View File

@ -3,8 +3,26 @@
<hr />
<div v-if="authenticated">
<button v-t="'actions.create_playlist'" class="btn" @click="createPlaylist" />
<div>
<div class="flex justify-between">
<button v-t="'actions.create_playlist'" class="btn mr-2" @click="onCreatePlaylist" />
<div class="flex">
<button
v-if="this.playlists.length > 0"
v-t="'actions.export_to_json'"
class="btn"
@click="exportPlaylists"
/>
<input
id="fileSelector"
ref="fileSelector"
type="file"
class="display-none"
@change="importPlaylists"
/>
<label for="fileSelector" v-t="'actions.import_from_json'" class="btn ml-2" role="button" />
</div>
</div>
<div class="video-grid">
<div v-for="playlist in playlists" :key="playlist.id" class="efy_trans_filter">
@ -36,34 +54,18 @@
</div>
</div>
</div>
<div v-else class="text-center h-[65vh] flex flex-col justify-center items-center">
<h1 v-t="'actions.not_logged_in'"></h1>
<div class="flex mt-100 items-center children:(mx-30)">
<button @click="showLoginModal = true" v-t="'titles.account'"></button>
<a class="btn h-min!" href="/" v-t="'actions.back_to_home'"></a>
</div>
</div>
<br />
<LoginModal v-if="showLoginModal" @close="showLoginModal = !showLoginModal" />
</template>
<script>
import LoginModal from "./LoginModal.vue";
export default {
components: {
LoginModal,
},
data() {
return {
playlists: [],
showLoginModal: false,
};
},
mounted() {
if (this.authenticated) this.fetchPlaylists();
else this.showLoginModal = true;
else this.$router.push("/login");
},
activated() {
document.title = this.$t("titles.playlists") + " - Piped";
@ -119,22 +121,90 @@ export default {
else this.playlists = this.playlists.filter(playlist => playlist.id !== id);
});
},
createPlaylist() {
onCreatePlaylist() {
const name = prompt(this.$t("actions.create_playlist"));
if (name)
this.fetchJson(this.authApiUrl() + "/user/playlists/create", null, {
method: "POST",
body: JSON.stringify({
name: name,
}),
headers: {
Authorization: this.getAuthToken(),
"Content-Type": "application/json",
},
}).then(json => {
if (json.error) alert(json.error);
else this.fetchPlaylists();
});
if (!name) return;
this.createPlaylist(name).then(json => {
if (json.error) alert(json.error);
else this.fetchPlaylists();
});
},
async createPlaylist(name) {
let json = await this.fetchJson(this.authApiUrl() + "/user/playlists/create", null, {
method: "POST",
body: JSON.stringify({
name: name,
}),
headers: {
Authorization: this.getAuthToken(),
"Content-Type": "application/json",
},
});
return json;
},
async exportPlaylists() {
if (!this.playlists) return;
let json = {
format: "Piped",
version: 1,
playlists: [],
};
let tasks = [];
for (var i = 0; i < this.playlists.length; i++) {
tasks.push(this.fetchPlaylistJson(this.playlists[i].id));
}
json.playlists = await Promise.all(tasks);
this.download(JSON.stringify(json), "playlists.json", "application/json");
},
async fetchPlaylistJson(playlistId) {
let playlist = await this.fetchJson(this.authApiUrl() + "/playlists/" + playlistId);
let playlistJson = {
name: playlist.name,
// possible other types: history, watch later, ...
type: "playlist",
// as Invidious supports public and private playlists
visibility: "private",
// list of the videos, starting with "https://youtube.com" to clarify that those are YT videos
videos: [],
};
for (var i = 0; i < playlist.relatedStreams.length; i++) {
playlistJson.videos.push("https://youtube.com" + playlist.relatedStreams[i].url);
}
return playlistJson;
},
async importPlaylists() {
const file = this.$refs.fileSelector.files[0];
let text = await file.text();
let playlists = JSON.parse(text).playlists;
if (!playlists.length) {
alert(this.$t("actions.no_valid_playlists"));
return;
}
let tasks = [];
for (var i = 0; i < playlists.length; i++) {
tasks.push(this.createPlaylistWithVideos(playlists[i]));
}
await Promise.all(tasks);
window.location.reload();
},
async createPlaylistWithVideos(playlist) {
let newPlaylist = await this.createPlaylist(playlist.name);
console.log(newPlaylist);
let videoIds = playlist.videos.map(url => url.substr(-11));
await this.addVideosToPlaylist(newPlaylist.playlistId, videoIds);
},
async addVideosToPlaylist(playlistId, videoIds) {
await this.fetchJson(this.authApiUrl() + "/user/playlists/add", null, {
method: "POST",
body: JSON.stringify({
playlistId: playlistId,
videoIds: videoIds,
}),
headers: {
Authorization: this.getAuthToken(),
"Content-Type": "application/json",
},
});
},
},
};

View File

@ -192,6 +192,36 @@
@change="onChange($event)"
/>
</label>
<label class="pref" for="chkMinimizeChapters">
<strong v-t="'actions.minimize_chapters_default'" />
<input
id="chkMinimizeChapters"
v-model="minimizeChapters"
class="checkbox"
type="checkbox"
@change="onChange($event)"
/>
</label>
<label class="pref" for="chkShowWatchOnYouTube">
<strong v-t="'actions.show_watch_on_youtube'" />
<input
id="chkShowWatchOnYouTube"
v-model="showWatchOnYouTube"
class="checkbox"
type="checkbox"
@change="onChange($event)"
/>
</label>
<label class="pref" for="chkStoreSearchHistory">
<strong v-t="'actions.store_search_history'" />
<input
id="chkStoreSearchHistory"
v-model="searchHistory"
class="checkbox"
type="checkbox"
@change="onChange($event)"
/>
</label>
<label class="pref" for="chkStoreWatchHistory">
<strong v-t="'actions.store_watch_history'" />
<input
@ -202,6 +232,16 @@
@change="onChange($event)"
/>
</label>
<label v-if="watchHistory" class="pref" for="chkHideWatched">
<strong v-t="'actions.hide_watched'" />
<input
id="chkHideWatched"
v-model="hideWatched"
class="checkbox"
type="checkbox"
@change="onChange($event)"
/>
</label>
<label class="pref" for="ddlEnabledCodecs">
<strong v-t="'actions.enabled_codecs'" />
<select
@ -419,6 +459,8 @@ export default {
minimizeComments: false,
minimizeDescription: false,
minimizeRecommendations: false,
minimizeChapters: false,
showWatchOnYouTube: false,
watchHistory: false,
searchHistory: false,
hideWatched: false,
@ -444,6 +486,7 @@ export default {
{ code: "hi", name: "हिंदी" },
{ code: "id", name: "Indonesia" },
{ code: "is", name: "Íslenska" },
{ code: "kab", name: "Taqbaylit" },
{ code: "hr", name: "Hrvatski" },
{ code: "it", name: "Italiano" },
{ code: "ja", name: "日本語" },
@ -452,10 +495,12 @@ export default {
{ code: "ml", name: "മലയാളം" },
{ code: "nb_NO", name: "Norwegian Bokmål" },
{ code: "nl", name: "Nederlands" },
{ code: "or", name: "ଓଡ଼ିଆ" },
{ code: "pl", name: "Polski" },
{ code: "pt", name: "Português" },
{ code: "pt_PT", name: "Português (Portugal)" },
{ code: "pt_BR", name: "Português (Brasil)" },
{ code: "ro", name: "Română" },
{ code: "ru", name: "Русский" },
{ code: "sr", name: "Српски" },
{ code: "sv", name: "Svenska" },
@ -555,9 +600,11 @@ export default {
this.minimizeComments = this.getPreferenceBoolean("minimizeComments", false);
this.minimizeDescription = this.getPreferenceBoolean("minimizeDescription", false);
this.minimizeRecommendations = this.getPreferenceBoolean("minimizeRecommendations", false);
this.minimizeChapters = this.getPreferenceBoolean("minimizeChapters", false);
this.showWatchOnYouTube = this.getPreferenceBoolean("showWatchOnYouTube", false);
this.watchHistory = this.getPreferenceBoolean("watchHistory", false);
this.searchHistory = this.getPreferenceBoolean("searchHistory", false);
this.selectedLanguage = this.getPreferenceString("hl", await this.defaultLangage);
this.selectedLanguage = this.getPreferenceString("hl", await this.defaultLanguage);
this.enabledCodecs = this.getPreferenceString("enabledCodecs", "vp9,avc").split(",");
this.disableLBRY = this.getPreferenceBoolean("disableLBRY", false);
this.proxyLBRY = this.getPreferenceBoolean("proxyLBRY", false);
@ -581,8 +628,8 @@ export default {
if (
this.getPreferenceString("theme", "dark") !== this.selectedTheme ||
this.getPreferenceBoolean("watchHistory", false) != this.watchHistory ||
this.getPreferenceString("hl", await this.defaultLangage) !== this.selectedLanguage ||
this.getPreferenceString("enabledCodecs", "av1,vp9,avc") !== this.enabledCodecs.join(",")
this.getPreferenceString("hl", await this.defaultLanguage) !== this.selectedLanguage ||
this.getPreferenceString("enabledCodecs", "vp9,avc") !== this.enabledCodecs.join(",")
)
shouldReload = true;
@ -614,6 +661,8 @@ export default {
localStorage.setItem("minimizeComments", this.minimizeComments);
localStorage.setItem("minimizeDescription", this.minimizeDescription);
localStorage.setItem("minimizeRecommendations", this.minimizeRecommendations);
localStorage.setItem("minimizeChapters", this.minimizeChapters);
localStorage.setItem("showWatchOnYouTube", this.showWatchOnYouTube);
localStorage.setItem("watchHistory", this.watchHistory);
localStorage.setItem("searchHistory", this.searchHistory);
if (!this.searchHistory) localStorage.removeItem("search_history");

View File

@ -66,8 +66,8 @@ export default {
}
},
onChange() {
this.setPreference("shareWithTimeCode", this.withTimeCode);
this.setPreference("shareAsPipedLink", this.pipedLink);
this.setPreference("shareWithTimeCode", this.withTimeCode, true);
this.setPreference("shareAsPipedLink", this.pipedLink, true);
},
},
computed: {

View File

@ -9,27 +9,38 @@
<i18n-t keypath="subscriptions.subscribed_channels_count">{{ subscriptions.length }}</i18n-t>
</div>
<hr />
<div class="grid">
<div class="mb-3" v-for="subscription in subscriptions" :key="subscription.url">
<div class="flex justify-center place-items-center">
<div class="w-full flex justify-between items-center">
<router-link :to="subscription.url" class="pp-import-channel flex font-bold">
<img :src="subscription.avatar" width="48" height="48" />
<span class="mx-2" v-text="subscription.name" />
</router-link>
<button
class="btn w-min"
@click="handleButton(subscription)"
v-t="`actions.${subscription.subscribed ? 'unsubscribe' : 'subscribe'}`"
/>
</div>
</div>
<!-- Subscriptions card list -->
<div class="pp-subs-cards">
<!-- channel info card -->
<div efy_card class="pp-subs-card" v-for="subscription in subscriptions" :key="subscription.url">
<router-link :to="subscription.url" class="pp-import-channel flex font-bold">
<img :src="subscription.avatar" width="48" height="48" />
<span class="mx-2" v-text="subscription.name" />
</router-link>
<!-- (un)subscribe btn -->
<button
@click="handleButton(subscription)"
v-t="`actions.${subscription.subscribed ? 'unsubscribe' : 'subscribe'}`"
/>
</div>
</div>
<br />
</template>
<style>
.pp-subs-cards {
display: grid;
gap: var(--efy_gap);
grid-template-columns: repeat(auto-fill, minmax(240rem, 1fr));
}
.pp-subs-card :is(a, span) {
-webkit-text-fill-color: var(--efy_text) !important;
}
.pp-subs-card button {
margin-bottom: 0;
width: 100%;
}
</style>
<script>
export default {
data() {

View File

@ -17,6 +17,7 @@ export default {
};
},
mounted() {
if (this.$route.path == "/" && this.getPreferenceString("homepage", "trending") == "feed") return;
let region = this.getPreferenceString("region", "US");
this.fetchTrending(region).then(videos => {

View File

@ -273,7 +273,11 @@ export default {
).generate_dash_file_from_formats(streams, this.video.duration);
uri = "data:application/dash+xml;charset=utf-8;base64," + btoa(dash);
} else uri = this.video.dash;
} else {
const url = new URL(this.video.dash);
url.searchParams.set("rewrite", false);
uri = url.toString();
}
mime = "application/dash+xml";
} else if (lbry) {
uri = lbry.url;
@ -372,13 +376,13 @@ export default {
});
videoEl.addEventListener("volumechange", () => {
this.setPreference("volume", videoEl.volume);
this.setPreference("volume", videoEl.volume, true);
});
videoEl.addEventListener("ratechange", e => {
const rate = videoEl.playbackRate;
if (rate > 0 && !isNaN(videoEl.duration) && !isNaN(videoEl.duration - e.timeStamp / 1000))
this.setPreference("rate", rate);
this.setPreference("rate", rate, true);
});
videoEl.addEventListener("ended", () => {
@ -440,7 +444,14 @@ export default {
this.$ui = new shaka.ui.Overlay(localPlayer, this.$refs.container, videoEl);
const overflowMenuButtons = ["quality", "captions", "picture_in_picture", "playback_rate", "airplay"];
const overflowMenuButtons = [
"quality",
"language",
"captions",
"picture_in_picture",
"playback_rate",
"airplay",
];
if (this.isEmbed) {
overflowMenuButtons.push("open_new_tab");
@ -480,22 +491,40 @@ export default {
if (qualityConds) this.$player.configure("abr.enabled", false);
player.load(uri, 0, mime).then(() => {
const isSafari = window.navigator?.vendor?.includes("Apple");
if (!isSafari) {
// Set the audio language
const prefLang = this.getPreferenceString("hl", "en").substr(0, 2);
var lang = "en";
for (var l in player.getAudioLanguages()) {
if (l == prefLang) {
lang = l;
return;
}
}
player.selectAudioLanguage(lang);
}
if (qualityConds) {
var leastDiff = Number.MAX_VALUE;
var bestStream = null;
var bestAudio = 0;
const tracks = player
.getVariantTracks()
.filter(track => track.language == lang || track.language == "und");
// Choose the best audio stream
if (quality >= 480)
player.getVariantTracks().forEach(track => {
tracks.forEach(track => {
const audioBandwidth = track.audioBandwidth;
if (audioBandwidth > bestAudio) bestAudio = audioBandwidth;
});
// Find best matching stream based on resolution and bitrate
player
.getVariantTracks()
tracks
.sort((a, b) => a.bandwidth - b.bandwidth)
.forEach(stream => {
if (stream.audioBandwidth < bestAudio) return;
@ -706,6 +735,7 @@ html .shaka-range-element:focus {
.material-icons-round,
.shaka-current-time {
-webkit-text-fill-color: #fff !important;
filter: none !important;
opacity: 1 !important;
}
.shaka-overflow-menu,

View File

@ -0,0 +1,24 @@
<script>
export default {
props: {
link: String,
},
};
</script>
<template>
<template v-if="this.getPreferenceBoolean('showWatchOnYouTube', false)">
<a :href="link" class="pp-watch-onyt-btn btn" role="button" :title="$t('player.watch_on') + 'YouTube'">
<font-awesome-icon class="mx-1.5" :icon="['fab', 'youtube']" />
</a>
</template>
</template>
<style>
.pp-watch-onyt-btn {
display: flex;
margin-left: var(--efy_gap0);
align-items: center;
gap: 5rem;
}
</style>

View File

@ -96,7 +96,8 @@
>
<font-awesome-icon icon="rss" />
</a>
<!-- watch on youtube button -->
<WatchOnYouTubeButton :link="`https://youtu.be/${getVideoId()}`" />
<!-- Share Dialog -->
<button class="btn" @click="showShareModal = !showShareModal">
<i18n-t class="lt-lg:hidden" keypath="actions.share" tag="strong"></i18n-t>
<font-awesome-icon class="mx-1.5 ml-1" icon="fa-share" />
@ -212,6 +213,7 @@ import ChaptersBar from "./ChaptersBar.vue";
import PlaylistAddModal from "./PlaylistAddModal.vue";
import ShareModal from "./ShareModal.vue";
import PlaylistVideos from "./PlaylistVideos.vue";
import WatchOnYouTubeButton from "./WatchOnYouTubeButton.vue";
export default {
name: "App",
@ -224,6 +226,7 @@ export default {
PlaylistAddModal,
ShareModal,
PlaylistVideos,
WatchOnYouTubeButton,
},
data() {
const smallViewQuery = window.matchMedia("(max-width: 640px)");
@ -330,6 +333,7 @@ export default {
this.showComments = !this.getPreferenceBoolean("minimizeComments", false);
this.showDesc = !this.getPreferenceBoolean("minimizeDescription", false);
this.showRecs = !this.getPreferenceBoolean("minimizeRecommendations", false);
this.showChapters = !this.getPreferenceBoolean("minimizeChapters", false);
if (this.video.duration) {
document.title = this.video.title + " - Piped";
this.$refs.videoPlayer.loadVideo();
@ -368,7 +372,7 @@ export default {
return this.fetchJson(this.apiUrl() + "/comments/" + this.getVideoId());
},
onChange() {
this.setPreference("autoplay", this.selectedAutoPlay);
this.setPreference("autoplay", this.selectedAutoPlay, true);
},
async getVideoData() {
await this.fetchVideo()
@ -470,7 +474,7 @@ export default {
},
});
} else {
this.handleLocalSubscriptions(this.channelId);
if (!this.handleLocalSubscriptions(this.channelId)) return;
}
this.subscribed = !this.subscribed;
},

View File

@ -10,7 +10,9 @@
"feed": "التغذية",
"account": "الحساب",
"instance": "الخادم",
"player": "المشغل"
"player": "المشغل",
"livestreams": "البث المباشر",
"channels": "القنوات"
},
"player": {
"watch_on": "شاهد عبر"
@ -114,7 +116,10 @@
"hide_watched": "إخفاء مقاطع الفيديو التي تمت مشاهدتها من الخلاصة",
"reply_count": "{count} الردود",
"minimize_comments_default": "تصغير التعليقات بشكل افتراضي",
"minimize_comments": "تصغير التعليقات"
"minimize_comments": "تصغير التعليقات",
"show_watch_on_youtube": "عرض زر مشاهدة على يوتيوب",
"minimize_chapters_default": "تصغير الفصول بشكل افتراضي",
"no_valid_playlists": "لا يحتوي الملف على قوائم تشغيل صالحة!"
},
"video": {
"sponsor_segments": "المقاطع الإعلانية",
@ -166,6 +171,7 @@
"preferences_note": "ملاحظة: يتم حفظ التفضيلات في وحدة التخزين المحلية في متصفحك. سيؤدي حذف بيانات المتصفح إلى إعادة تعيينها.",
"page_not_found": "لم يتم العثور على الصفحة",
"copied": "نسخ!",
"cannot_copy": "لا يمكن نسخه!"
"cannot_copy": "لا يمكن نسخه!",
"local_storage": "يتطلب هذا الإجراء التخزين المحلي، هل يتم تمكين ملفات تعريف الارتباط؟"
}
}

View File

@ -10,7 +10,9 @@
"playlists": "Pleylistlər",
"account": "Hesab",
"instance": "Nümunə",
"player": "Oynadıcı"
"player": "Oynadıcı",
"livestreams": "Canlı yayımlar",
"channels": "Kanallar"
},
"player": {
"watch_on": "{0} saytında baxın"
@ -114,7 +116,10 @@
"back_to_home": "Evə qayıt",
"reply_count": "{count} cavab",
"minimize_comments_default": "Şərhləri standart olaraq kiçilt",
"minimize_comments": "Şərhləri Kiçilt"
"minimize_comments": "Şərhləri Kiçilt",
"minimize_chapters_default": "Defolt olaraq bölmələri kiçilt",
"show_watch_on_youtube": "YouTube-da Baxış düyməsini göstər",
"no_valid_playlists": "Faylda etibarlı pleylistlər yoxdur!"
},
"comment": {
"pinned_by": "Tərəfindən Sabitləndi {author}",
@ -166,6 +171,7 @@
"preferences_note": "Qeyd: Seçimlər brauzerinizin yerli yaddaşında saxlanılır. Brauzer məlumatlarınızın silinməsi onları sıfırlayacaq.",
"page_not_found": "Səhifə tapılmadı",
"copied": "Kopyalandı!",
"cannot_copy": "Kopyalanmır!"
"cannot_copy": "Kopyalanmır!",
"local_storage": "Bu fəaliyyət localStorage tələb edir, məlumat bazası aktivdir?"
}
}

View File

@ -10,7 +10,9 @@
"playlists": "Llistes de reproducció",
"account": "Compte",
"instance": "Instància",
"player": "Reproductor"
"player": "Reproductor",
"livestreams": "Retransmissió en directe",
"channels": "Canals"
},
"actions": {
"channel_name_desc": "Nom del Canal (Z-A)",
@ -108,7 +110,11 @@
"show_chapters": "Capítols",
"status_page": "Estat",
"source_code": "Codi font",
"documentation": "Documentació"
"documentation": "Documentació",
"show_watch_on_youtube": "Mostra el botó \"Veure a Youtube\"",
"reply_count": "{count} respostes",
"minimize_comments_default": "Minimitzar els comentaris per defecte",
"minimize_comments": "Minimitza els comentaris"
},
"comment": {
"pinned_by": "Fixat per {author}",

View File

@ -10,7 +10,9 @@
"playlists": "Playlisty",
"account": "Účet",
"instance": "Instance",
"player": "Přehrávač"
"player": "Přehrávač",
"livestreams": "Živé přenosy",
"channels": "Kanály"
},
"actions": {
"loop_this_video": "Přehrávat video ve smyčce",
@ -111,7 +113,10 @@
"status_page": "Stav",
"reply_count": "{count} odpovědí",
"minimize_comments_default": "Ve výchozím nastavení skrýt komentáře",
"minimize_comments": "Skrýt komentáře"
"minimize_comments": "Skrýt komentáře",
"show_watch_on_youtube": "Zobrazit tlačítko Sledovat na YouTube",
"minimize_chapters_default": "Ve výchozím nastavení skrýt kapitoly",
"no_valid_playlists": "Soubor neobsahuje platné playlisty!"
},
"player": {
"watch_on": "Sledovat na {0}"
@ -166,6 +171,7 @@
"preferences_note": "Poznámka: předvolby se ukládají do místního úložiště prohlížeče. Vymazáním dat prohlížeče budou obnoveny.",
"page_not_found": "Stránka nenalezena",
"copied": "Zkopírováno!",
"cannot_copy": "Nelze zkopírovat!"
"cannot_copy": "Nelze zkopírovat!",
"local_storage": "Tato akce vyžaduje localStorage, jsou povoleny cookies?"
}
}

View File

@ -41,7 +41,7 @@
"minimize_description": "Beschreibung minimieren",
"show_recommendations": "Empfehlungen anzeigen",
"minimize_recommendations": "Empfehlungen minimieren",
"donations": "Spenden",
"donations": "Spenden für die Entwickler",
"auto_play_next_video": "Nächstes Video automatisch abspielen",
"loop_this_video": "Dieses Video wiederholen",
"import_from_json": "Aus JSON/CSV importieren",
@ -89,7 +89,19 @@
"confirm_reset_preferences": "Bist du sicher, dass du deine Einstellungen zurücksetzen möchtest?",
"backup_preferences": "Einstellungen sichern",
"restore_preferences": "Einstellungen wiederherstellen",
"show_chapters": "Kapitel"
"show_chapters": "Kapitel",
"source_code": "Quellcode",
"store_search_history": "Suchverlauf speichern",
"hide_watched": "Gesehene Videos im Feed ausblenden",
"reply_count": "{count} Antworten",
"instance_donations": "Instanz-Spenden",
"documentation": "Dokumentation",
"status_page": "Status",
"minimize_chapters_default": "Kapitel standardmäßig minimieren",
"minimize_comments_default": "Kommentare automatisch minimieren",
"minimize_comments": "Kommentare minimieren",
"no_valid_playlists": "Die Datei enthält keine gültigen Wiedergabelisten!",
"show_watch_on_youtube": "Schaltfläche „Auf YouTube ansehen“ anzeigen"
},
"player": {
"watch_on": "Auf {0} ansehen"
@ -105,7 +117,9 @@
"playlists": "Wiedergabelisten",
"account": "Konto",
"player": "Player",
"instance": "Instanz"
"instance": "Instanz",
"livestreams": "Livestreams",
"channels": "Kanäle"
},
"video": {
"sponsor_segments": "Sponsoren-Segmente",
@ -154,6 +168,7 @@
"preferences_note": "Achtung: Einstellung werden lokal in deinem Browser gespeichert. Wenn du deine Browserdaten löschst werden sie auch gelöscht.",
"page_not_found": "Seite nicht gefunden",
"copied": "Kopiert!",
"cannot_copy": "Kopieren nicht möglich!"
"cannot_copy": "Kopieren nicht möglich!",
"local_storage": "Diese Aktion erfordert „localStorage“, sind Cookies aktiviert?"
}
}

View File

@ -90,6 +90,8 @@
"delete_account": "Delete Account",
"logout": "Logout from this device",
"minimize_recommendations_default": "Minimize Recommendations by default",
"minimize_chapters_default": "Minimize Chapters by default",
"show_watch_on_youtube": "Show Watch on YouTube button",
"invalidate_session": "Logout all devices",
"different_auth_instance": "Use a different instance for authentication",
"instance_auth_selection": "Autentication Instance Selection",
@ -117,7 +119,7 @@
"source_code": "Source code",
"instance_donations": "Instance donations",
"reply_count": "{count} replies",
"not_logged_in": "Not logged in yet."
"no_valid_playlists": "The file doesn't contain valid playlists!"
},
"comment": {
"pinned_by": "Pinned by {author}",
@ -166,6 +168,7 @@
"preferences_note": "Note: preferences are saved in the local storage of your browser. Deleting your browser data will reset them.",
"page_not_found": "Page not found",
"copied": "Copied!",
"cannot_copy": "Can't copy!"
"cannot_copy": "Can't copy!",
"local_storage": "This action requires localStorage, are cookies enabled?"
}
}

View File

@ -10,7 +10,9 @@
"playlists": "Ludlistoj",
"account": "Konto",
"player": "Ludilo",
"instance": "Nodo"
"instance": "Nodo",
"channels": "Kanaloj",
"livestreams": "Tujelsendoj"
},
"player": {
"watch_on": "Vidi en {0}"
@ -114,7 +116,10 @@
"minimize_description_default": "Defaŭlte Plejetigi Priskribon",
"minimize_recommendations_default": "Defaŭlte Plejetigi Rekomendojn",
"minimize_comments_default": "Defaŭlte Plejetigi Komentojn",
"minimize_comments": "Plejetigi Komentojn"
"minimize_comments": "Plejetigi Komentojn",
"show_watch_on_youtube": "Montri «Vidi en Youtube»-butonon",
"minimize_chapters_default": "Defaŭlte plejetigi ĉapitrojn",
"no_valid_playlists": "La dosiero ne enhavas validajn ludlistojn!"
},
"video": {
"chapters": "Sekcioj",
@ -141,7 +146,8 @@
"copied": "Kopiita!",
"cannot_copy": "Ne povas kopii!",
"preferences_note": "Noto: la agordoj estas konservitaj en la loka memoro de via retumilo. Forigi la datumojn de via retumilo restarigos ilin.",
"page_not_found": "Paĝo ne trovita"
"page_not_found": "Paĝo ne trovita",
"local_storage": "Ĉi tiu ago postulas localStorage, ĉu kuketoj estas ebligitaj?"
},
"login": {
"username": "Uzantnomo",

View File

@ -123,7 +123,10 @@
"hide_watched": "Ocultar los vídeos vistos en el feed",
"reply_count": "{count} respuestas",
"minimize_comments_default": "Minimizar comentarios por defecto",
"minimize_comments": "Minimizar comentarios"
"minimize_comments": "Minimizar comentarios",
"show_watch_on_youtube": "Mostrar botón Ver en YouTube",
"minimize_chapters_default": "Minimiza capítulos por defecto",
"no_valid_playlists": "¡El archivo no contiene listas de reproducción válidas!"
},
"titles": {
"feed": "Fuente web",
@ -136,7 +139,9 @@
"playlists": "Listas de reproducción",
"account": "Cuenta",
"instance": "Instancia",
"player": "Reproductor"
"player": "Reproductor",
"livestreams": "Directos",
"channels": "Canales"
},
"player": {
"watch_on": "Ver en {0}"
@ -163,6 +168,7 @@
"preferences_note": "Nota: las preferencias se guardan en el almacenamiento local de tu navegador. Al borrar los datos del navegador se restablecerán.",
"page_not_found": "Página no encontrada",
"copied": "¡Copiado!",
"cannot_copy": "¡No se puede copiar!"
"cannot_copy": "¡No se puede copiar!",
"local_storage": "Esta acción requiere «localStorage», ¿están activadas las «cookies»?"
}
}

View File

@ -89,7 +89,40 @@
"skip_highlight": "Ohita kohokohta",
"skip_filler_tangent": "Ohita epäolennainen",
"enabled_codecs": "Käytössä olevat koodekit (useita)",
"show_markers": "Näytä merkit soittimessa"
"show_markers": "Näytä merkit soittimessa",
"confirm_reset_preferences": "Oletko varma, että haluat palauttaa asetukset?",
"back_to_home": "Takaisin kotisivuun",
"minimize_recommendations_default": "Minimoi suositukset oletusarvoisesti",
"with_timecode": "Jaa aikakoodilla",
"documentation": "Dokumentaatio",
"piped_link": "Piped-linkki",
"store_search_history": "Tallenna hakuhistoria",
"minimize_chapters_default": "Minimoi luvut oletusarvoisesti",
"show_watch_on_youtube": "Näytä Katso YouTubessa -painike",
"different_auth_instance": "Käytä eri instanssia todennukseen",
"download_as_txt": "Lataa .txt-tiedostona",
"rename_playlist": "Nimeä soittolista uudelleen",
"show_chapters": "Luvut",
"minimize_comments": "Minimoi kommentit",
"minimize_comments_default": "Minimoi kommentit oletusarvoisesti",
"delete_account": "Poista tili",
"clone_playlist_success": "Onnistunut kloonaus!",
"reset_preferences": "Nollaa asetukset",
"copy_link": "Kopioi linkki",
"status_page": "Tila",
"source_code": "Lähdekoodi",
"instance_donations": "Instanssille lahjoitukset",
"no_valid_playlists": "Tiedosto ei sisällä kelvollisia soittolistoja!",
"share": "Jaa",
"reply_count": "{count} vastausta",
"hide_watched": "Piilota katsotut videot syötteessä",
"time_code": "Aikakoodi (sekunteina)",
"follow_link": "Avaa linkki",
"new_playlist_name": "Soittolistan uusi nimi",
"invalidate_session": "Kirjaudu ulos kaikista laitteista",
"logout": "Kirjaudu ulos tästä laitteesta",
"backup_preferences": "Varmuuskopiointiasetukset",
"restore_preferences": "Palauta asetukset"
},
"player": {
"watch_on": "Katso sivustolla {0}"
@ -102,7 +135,11 @@
"register": "Rekisteröidy",
"login": "Kirjaudu sisään",
"trending": "Nousussa",
"playlists": "Soittolistat"
"playlists": "Soittolistat",
"player": "Toistin",
"instance": "Instanssi",
"account": "Tili",
"channels": "Kanavat"
},
"search": {
"did_you_mean": "Tarkoititko: {0}?",
@ -116,6 +153,15 @@
"music_playlists": "YT Music: Soittolistat"
},
"comment": {
"pinned_by": "Kiinnitti {author}"
"pinned_by": "Kiinnitti {author}",
"loading": "Ladataan kommentteja…",
"user_disabled": "Kommentit on poistettu käytöstä asetuksista.",
"disabled": "Lataaja on poistanut kommentit käytöstä."
},
"info": {
"page_not_found": "Sivua ei löydy",
"copied": "Kopioitu!",
"cannot_copy": "Ei voi kopioida!",
"local_storage": "Tämä toiminto vaatii localStorage, ovatko evästeet käytössä?"
}
}

View File

@ -10,7 +10,9 @@
"playlists": "Listes de lecture",
"account": "Compte",
"instance": "Instance",
"player": "Lecteur"
"player": "Lecteur",
"livestreams": "Diffusions en direct",
"channels": "Chaînes"
},
"actions": {
"subscribe": "S'abonner - {count}",
@ -88,9 +90,9 @@
"instance_auth_selection": "Sélection de l'instance d'authentification",
"clone_playlist": "Cloner la liste de lecture",
"clone_playlist_success": "Clonage réussi !",
"download_as_txt": "Télécharger en tant que",
"download_as_txt": "Télécharger en tant que .txt",
"reset_preferences": "Réinitialiser les préférences",
"confirm_reset_preferences": "Êtes-vous sûre de vouloir réinitialiser les préférences ?",
"confirm_reset_preferences": "Êtes-vous sûr·e de vouloir réinitialiser les préférences ?",
"restore_preferences": "Restaurer les préférences",
"backup_preferences": "Sauvegarde des préférences",
"with_timecode": "Partager avec l'horodatage",
@ -111,7 +113,10 @@
"hide_watched": "Masquer les vidéos regardées dans le flux",
"reply_count": "{count} réponses",
"minimize_comments_default": "Minimiser les commentaires par défaut",
"minimize_comments": "Minimiser les commentaires"
"minimize_comments": "Minimiser les commentaires",
"show_watch_on_youtube": "Afficher le bouton Regarder sur YouTube",
"minimize_chapters_default": "Minimiser les chapitres par défaut",
"no_valid_playlists": "Le fichier ne contient pas de listes de lecture valides !"
},
"player": {
"watch_on": "Regarder sur {0}"
@ -166,6 +171,7 @@
"preferences_note": "Remarque : les préférences sont enregistrées dans la mémoire locale de votre navigateur. La suppression des données de votre navigateur les réinitialisera.",
"page_not_found": "Page non trouvée",
"copied": "Copié !",
"cannot_copy": "Impossible de copier !"
"cannot_copy": "Impossible de copier !",
"local_storage": "Cette action nécessite localStorage, les cookies sont-ils activés ?"
}
}

View File

@ -10,7 +10,9 @@
"feed": "ערוץ עדכונים",
"account": "חשבון",
"playlists": "רשימות נגינה",
"instance": "עותק"
"instance": "עותק",
"livestreams": "שידורים חיים",
"channels": "ערוצים"
},
"player": {
"watch_on": "לצפות ב־{0}"
@ -114,7 +116,10 @@
"instance_donations": "תרומות להפעלה",
"reply_count": "{count} תגובות",
"minimize_comments_default": "צמצום הערות כברירת מחדל",
"minimize_comments": "צמצום הערות"
"minimize_comments": "צמצום הערות",
"minimize_chapters_default": "מזעור הפרקים כברירת מחדל",
"show_watch_on_youtube": "הצגת כפתור לצפייה ב־YouTube",
"no_valid_playlists": "הקובץ לא מכיל רשימות נגינה תקפות!"
},
"comment": {
"pinned_by": "ננעץ על ידי {author}",
@ -160,7 +165,8 @@
"preferences_note": "לתשומת לבך: ההעדפות נשמרות באחסון המקומי של הדפדפן שלך. מחיקת נתוני הדפדפן שלך תאפס אותם.",
"page_not_found": "העמוד לא נמצא",
"copied": "הועתק!",
"cannot_copy": "לא ניתן להעתיק!"
"cannot_copy": "לא ניתן להעתיק!",
"local_storage": "פעולה זו דורשת אחסון מקומי (localStorage), האם עוגיות פעילות?"
},
"subscriptions": {
"subscribed_channels_count": "נרשמת אל: {0}"

View File

@ -7,7 +7,9 @@
"preferences": "प्राथमिकताएँ",
"subscriptions": "सदस्यता",
"feed": "फ़ीड",
"playlists": "प्लेलिस्ट"
"playlists": "प्लेलिस्ट",
"livestreams": "लाइव स्ट्रीम",
"channels": "चैनल"
},
"actions": {
"subscribe": "सदस्यता लें - {count}",

View File

@ -121,7 +121,12 @@
"store_search_history": "Spremi povijest pretrage",
"hide_watched": "Sakrij gledana videa u novostima",
"status_page": "Stanje",
"reply_count": "{count} odgovora"
"reply_count": "{count} odgovora",
"minimize_comments_default": "Standardno sakrij komentare",
"minimize_comments": "Sakrij komentare",
"show_watch_on_youtube": "Prikaži gumb „Gledaj na YouTubeu”",
"minimize_chapters_default": "Standardno sakrij poglavlja",
"no_valid_playlists": "Datoteka ne sadrži ispravan popisi snimaka!"
},
"player": {
"watch_on": "Gledaj na {0}"
@ -137,7 +142,9 @@
"playlists": "Playliste",
"account": "Račun",
"instance": "Instanca",
"player": "Plejer"
"player": "Player",
"channels": "Kanali",
"livestreams": "Prijenosi uživo"
},
"login": {
"password": "Lozinka",
@ -164,6 +171,7 @@
"preferences_note": "Napomena: postavke se spremaju u lokalno spremište tvog preglednika. Brisanje podataka preglednika će ih resetirati.",
"page_not_found": "Stranica nije pronađena",
"copied": "Kopirano!",
"cannot_copy": "Nije moguće kopirati!"
"cannot_copy": "Nije moguće kopirati!",
"local_storage": "Ova radnja zahtijeva lokalno spremište. Jesu li kolačići uključeni?"
}
}

View File

@ -10,7 +10,9 @@
"playlists": "Daftar Putar",
"instance": "Instansi",
"account": "Akun",
"player": "Pemain"
"player": "Pemain",
"livestreams": "Siaran Langsung",
"channels": "Saluran"
},
"player": {
"watch_on": "Tonton di {0}"
@ -109,12 +111,15 @@
"store_search_history": "Simpan riwayat pencarian",
"documentation": "Dokumentasi",
"instance_donations": "Donasi instansi",
"hide_watched": "Sembunyikan video yang telah ditonton di umpan",
"hide_watched": "Sembunyikan video yang sudah ditonton dari umpan",
"status_page": "Status",
"source_code": "Kode sumber",
"reply_count": "{count} balasan",
"minimize_comments_default": "Kecilkan Komentar secara bawaan",
"minimize_comments": "Kecilkan Komentar"
"minimize_comments": "Kecilkan Komentar",
"show_watch_on_youtube": "Tampilkan tombol Tonton di YouTube",
"minimize_chapters_default": "Kecilkan Bab secara bawaan",
"no_valid_playlists": "Berkas ini tidak berisi daftar putar yang valid!"
},
"comment": {
"pinned_by": "Dipasangi pin oleh {author}",
@ -126,7 +131,7 @@
"instance_name": "Nama Instansi",
"ssl_score": "Skor SSL",
"instance_locations": "Lokasi Instansi",
"has_cdn": "Mempunyai CDN?",
"has_cdn": "Memakai CDN?",
"up_to_date": "Sudah terkini?",
"version": "Versi",
"registered_users": "Pengguna Terdaftar"
@ -166,6 +171,7 @@
"page_not_found": "Laman tidak ditemukan",
"preferences_note": "Catatan: preferensi disimpan dalam penyimpanan lokal peramban Anda. Menghapus data peramban Anda akan mengatur ulang.",
"copied": "Disalin!",
"cannot_copy": "Tidak dapat menyalin!"
"cannot_copy": "Tidak dapat menyalin!",
"local_storage": "Tindakan ini membutuhkan localStorage, apakah kuki diaktifkan?"
}
}

View File

@ -10,7 +10,9 @@
"playlists": "Spilunarlistar",
"player": "Spilari",
"account": "Reikningur",
"instance": "Tilvik"
"instance": "Tilvik",
"livestreams": "Útsendingar í beinni",
"channels": "Rásir"
},
"actions": {
"sort_by": "Raða eftir:",
@ -111,7 +113,9 @@
"show_chapters": "Kaflar",
"reply_count": "{count} svör",
"minimize_comments_default": "Fela ummæli sjálfgefið",
"minimize_comments": "Fela ummæli"
"minimize_comments": "Fela ummæli",
"show_watch_on_youtube": "Sýna hnapp til að horfa á YouTube",
"minimize_chapters_default": "Lágmarka kafla sjálfgefið"
},
"player": {
"watch_on": "Horfa á {0}"

View File

@ -94,7 +94,14 @@
"status_page": "Stato",
"documentation": "Documentazione",
"source_code": "Codice sorgente",
"reply_count": "{count} risposte"
"reply_count": "{count} risposte",
"hide_watched": "Nascondi i video guardati nel feed",
"show_watch_on_youtube": "Mostra il bottone guarda su Youtube",
"instance_donations": "Donazioni istanza",
"minimize_comments_default": "Minimizza i commenti per impostazione predefinita",
"minimize_comments": "Minimizza i commenti",
"minimize_chapters_default": "Minimizza i capitoli per impostazione predefinita",
"no_valid_playlists": "Il file non contiene playlist valide!"
},
"player": {
"watch_on": "Guarda su {0}"
@ -110,7 +117,9 @@
"playlists": "Playlist",
"account": "Account",
"instance": "Istanza",
"player": "Riproduttore"
"player": "Riproduttore",
"livestreams": "Streaming live",
"channels": "Canali"
},
"video": {
"sponsor_segments": "Segmenti sponsor",
@ -162,6 +171,7 @@
"page_not_found": "Pagina non trovata",
"preferences_note": "Nota: le preferenze sono salvate nella memoria locale del tuo browser. L'eliminazione dei dati del tuo browser le ripristinerà.",
"copied": "Copiato!",
"cannot_copy": "Impossibile copiare!"
"cannot_copy": "Impossibile copiare!",
"local_storage": "Questa azione richiede localStorage, i cookie sono abilitati?"
}
}

View File

@ -1,13 +1,18 @@
{
"titles": {
"trending": "トレンド",
"trending": "急上昇",
"login": "ログイン",
"register": "新規登録",
"feed": "フィード",
"preferences": "設定",
"history": "履歴",
"subscriptions": "サブスクリプション",
"playlists": "再生リスト"
"subscriptions": "登録チャンネル",
"playlists": "再生リスト",
"account": "アカウント",
"player": "プレイヤー",
"instance": "インスタンス",
"channels": "チャンネル",
"livestreams": "ライブ配信"
},
"player": {
"watch_on": "{0}で見る"
@ -15,35 +20,35 @@
"actions": {
"subscribe": "チャンネル登録 - {count}",
"unsubscribe": "登録解除 - {count}",
"view_subscriptions": "サブスクリプションを見る",
"view_subscriptions": "登録チャンネルを見る",
"sort_by": "表示順:",
"most_recent": "新しい順",
"least_recent": "古い順",
"channel_name_asc": "チャンネル名",
"channel_name_desc": "チャンネル名逆順",
"channel_name_asc": "チャンネル名 (AからZ)",
"channel_name_desc": "チャンネル名 (ZからA)",
"back": "戻る",
"uses_api_from": "API使用元 ",
"enable_sponsorblock": "広告ブロックをオン",
"enable_sponsorblock": "SponsorBlockを有効化",
"skip_sponsors": "広告をスキップ",
"skip_intro": "イントロ部分をスキップする",
"skip_outro": "クレジット部分をスキップする",
"skip_preview": "Skip プレビュー・要約をスキップ",
"skip_interaction": "自己宣伝シーンをスキップ",
"skip_self_promo": "プロモーションをスキップ",
"skip_non_music": "音楽以外のセクションをスキップ",
"skip_intro": "インターミッション/イントロアニメーションをスキップする",
"skip_outro": "エンドカード/クレジットをスキップする",
"skip_preview": "プレビュー/要約をスキップ",
"skip_interaction": "インタラクションリマインダーをスキップする (チャンネル登録)",
"skip_self_promo": "無償/自己プロモーションをスキップ",
"skip_non_music": "音楽: 非音楽部分をスキップ",
"theme": "テーマ",
"auto": "自動",
"dark": "ダークテーマ",
"light": "ライトテーマ",
"autoplay_video": "自動再生",
"dark": "ダーク",
"light": "ライト",
"autoplay_video": "動画を自動再生",
"audio_only": "音声のみ",
"default_quality": "デフォルトの画質",
"buffering_goal": "バッファリング目標値(秒単位)",
"buffering_goal": "バッファリング目標値 (秒)",
"country_selection": "国の選択",
"default_homepage": "デフォルトのホームページ",
"show_comments": "コメントを表示",
"minimize_description_default": "デフォルトで詳細を最小化",
"store_watch_history": "視聴履歴を記録する",
"minimize_description_default": "デフォルトで詳細を最小化する",
"store_watch_history": "再生履歴を保存する",
"language_selection": "言語の選択",
"instances_list": "インスタンス一覧",
"enabled_codecs": "コーデックの有効化 (複数選択)",
@ -51,13 +56,13 @@
"show_more": "もっと見る",
"yes": "はい",
"no": "いいえ",
"export_to_json": "JSONファイルに出力",
"import_from_json": "JSON/CSVファイルを読み込む",
"loop_this_video": "ループ再生",
"auto_play_next_video": "自動再生",
"donations": "寄付",
"minimize_description": "最小化",
"show_description": "詳細",
"export_to_json": "JSONに出力",
"import_from_json": "JSON/CSVを読み込む",
"loop_this_video": "この動画をループ再生",
"auto_play_next_video": "次の動画を自動再生",
"donations": "開発者に寄付",
"minimize_description": "説明を最小化",
"show_description": "説明を表示",
"minimize_recommendations": "おすすめを最小化",
"show_recommendations": "おすすめを見る",
"disable_lbry": "ストリーミングのLBRYを無効化",
@ -65,56 +70,105 @@
"view_ssl_score": "SSLスコアを見る",
"search": "検索",
"filter": "フィルター",
"loading": "読込中…",
"clear_history": "履歴を消去",
"loading": "読中…",
"clear_history": "再生履歴を削除",
"hide_replies": "返信を非表示",
"load_more_replies": "もっと見る",
"load_more_replies": "リプライをもっと見る",
"skip_filler_tangent": "無関係なコンテンツをスキップ",
"skip_highlight": "要点をスキップ",
"add_to_playlist": "再生リストに追加",
"create_playlist": "新しい再生リストを作成",
"skip_highlight": "ハイライトをスキップ",
"add_to_playlist": "再生リストに追加する",
"create_playlist": "再生リストを作成",
"remove_from_playlist": "再生リストから削除",
"delete_playlist_video_confirm": "再生リストからこの動画を削除してもよろしいですか?",
"delete_playlist_video_confirm": "再生リストからこの動画を削除しすか?",
"delete_playlist": "再生リストを削除",
"please_select_playlist": "再生リストを選択してください",
"show_markers": "プレヤーにマーカーを表示",
"show_markers": "プレヤーにマーカーを表示",
"select_playlist": "再生リストを選択",
"delete_playlist_confirm": "再生リストを削除してもよろしいですか?"
"delete_playlist_confirm": "再生リストを削除しますか?",
"delete_account": "アカウントを削除する",
"store_search_history": "検索履歴を保存する",
"show_chapters": "チャプター",
"status_page": "状態",
"source_code": "ソースコード",
"instance_donations": "インスタンスに寄付",
"minimize_comments": "コメントを最小化する",
"share": "共有",
"with_timecode": "タイムコード付きで共有",
"different_auth_instance": "認証に別のインスタンスを使う",
"download_as_txt": ".txtでダウンロード",
"logout": "このデバイスでログアウト",
"minimize_recommendations_default": "デフォルトでおすすめを最小化する",
"hide_watched": "再生済みの動画をフィードに表示しない",
"minimize_chapters_default": "デフォルトでチャプターを最小化する",
"show_watch_on_youtube": "\"YouTubeで見る\"ボタンを表示する",
"invalidate_session": "すべてのデバイスでログアウトする",
"instance_auth_selection": "認証インスタンスの選択",
"clone_playlist_success": "複製に成功しました!",
"backup_preferences": "設定をバックアップする",
"restore_preferences": "設定を復元する",
"back_to_home": "ホームに戻る",
"copy_link": "リンクをコピーする",
"time_code": "タイムコード (秒)",
"documentation": "ドキュメント",
"reset_preferences": "設定をリセット",
"confirm_reset_preferences": "設定をリセットしますか?",
"rename_playlist": "プレイリスト名を変更する",
"piped_link": "Pipedリンク",
"new_playlist_name": "新しいプレイリスト名",
"follow_link": "リンクに従う",
"reply_count": "{count} 件の返信",
"clone_playlist": "プレイリストを複製",
"minimize_comments_default": "デフォルトでコメントを最小化する",
"no_valid_playlists": "ファイルに有効なプレイリストが含まれていません。"
},
"comment": {
"pinned_by": "固定されたコメント {author}"
"pinned_by": "{author} によって固定",
"loading": "コメントを読み込み中...",
"user_disabled": "コメントは設定で無効になっています。",
"disabled": "コメントは投稿者によって無効化されています。"
},
"preferences": {
"instance_name": "インスタンス名",
"instance_locations": "インスタンスの場所",
"has_cdn": "CDNの有無",
"has_cdn": "CDNは存在する?",
"ssl_score": "SSLスコア",
"registered_users": "登録済みユーザー",
"version": "バージョン",
"up_to_date": "最新か否か"
"up_to_date": "最新"
},
"login": {
"username": "ユーザー名",
"password": "パスワード"
},
"video": {
"videos": "ビデオ",
"views": "{views} 視聴",
"watched": "視聴済み",
"videos": "動画",
"views": "{views} 回再生",
"watched": "再生済み",
"sponsor_segments": "スポンサーによる広告",
"ratings_disabled": "評価は無効化されています",
"chapters": "チャプター",
"live": "{0}ライブ"
"live": "{0} ライブ配信",
"shorts": "ショート"
},
"search": {
"did_you_mean": "もしかして: {0}?",
"all": "Youtube: 全て",
"videos": "Youtube: ビデオ",
"channels": "Youtube: チャンネル",
"playlists": "Youtube: 再生リスト",
"did_you_mean": "もしかして: {0}",
"all": "YouTube: すべて",
"videos": "YouTube: 動画",
"channels": "YouTube: チャンネル",
"playlists": "YouTube: 再生リスト",
"music_songs": "YT Music: 音楽",
"music_videos": "YT Music: ビデオ",
"music_videos": "YT Music: 動画",
"music_albums": "YT Music: アルバム",
"music_playlists": "YT Music: 再生リスト"
},
"info": {
"page_not_found": "ページが見つかりません",
"copied": "コピーしました!",
"cannot_copy": "コピーできません!",
"preferences_note": "注意: 設定はブラウザのローカルストレージに保存されます。ブラウザのデータを削除するとリセットされます。",
"local_storage": "この操作にはlocalStorageが必要です。Cookieは有効ですか"
},
"subscriptions": {
"subscribed_channels_count": "チャンネル登録: {0}"
}
}

34
src/locales/kab.json Normal file
View File

@ -0,0 +1,34 @@
{
"titles": {
"login": "Aseqdac",
"register": "Jerred",
"preferences": "Ismenyifen",
"history": "Amazray",
"subscriptions": "Ijerriden",
"account": "Amiḍan",
"channels": "Ibuda"
},
"actions": {
"dark": "Ubrik",
"language_selection": "Afran n tutlayt",
"yes": "Ih",
"no": "Uhu",
"search": "Nadi",
"filter": "Imsizdeg",
"loading": "Asali...",
"delete_playlist_confirm": "Kkes tabdart-a n tɣuri?",
"share": "Bḍu",
"documentation": "Tasemlit",
"status_page": "État"
},
"preferences": {
"version": "Lqem"
},
"login": {
"username": "Nom d'utilisateur",
"password": "Awal n uɛeddi"
},
"video": {
"videos": "Tividyutin"
}
}

View File

@ -73,12 +73,12 @@
"remove_from_playlist": "Pašalinti iš grojaraščio",
"confirm_reset_preferences": "Ar tikrai norite iš naujo nustatyti nuostatas?",
"reset_preferences": "Iš naujo nustatyti nuostatas",
"backup_preferences": "Atsarginės kopijos nuostatos",
"backup_preferences": "Atsarginė nuostatų kopija",
"source_code": "Pirminis kodas",
"documentation": "Dokumentacija",
"with_timecode": "Dalintis su laiko kodu",
"reply_count": "{count} atsakymų",
"show_chapters": "Skyriai",
"reply_count": "{count} atsakymai",
"show_chapters": "Skirsniai",
"piped_link": "Piped nuoroda",
"rename_playlist": "Pervardyti grojaraštį",
"follow_link": "Sekti nuorodą",
@ -98,7 +98,10 @@
"skip_highlight": "Praleisti išskirtų dalių pakartojimus",
"time_code": "Laiko kodas (sekundėmis)",
"minimize_comments_default": "Suskleisti komentarus automatiškai",
"minimize_comments": "Suskleisti komentarus"
"minimize_comments": "Suskleisti komentarus",
"show_watch_on_youtube": "Rodyti mygtuką „Žiūrėti YouTube“",
"minimize_chapters_default": "Suskleisti skirsnius automatiškai",
"no_valid_playlists": "Faile nėra galiojančių grojaraščių!"
},
"player": {
"watch_on": "Žiūrėti per {0}"
@ -114,7 +117,9 @@
"playlists": "Grojaraščiai",
"account": "Paskyra",
"player": "Grotuvas",
"instance": "Perdavimo šaltinis"
"instance": "Perdavimo šaltinis",
"livestreams": "Tiesioginės transliacijos",
"channels": "Kanalai"
},
"preferences": {
"instance_locations": "Perdavimo šaltinio vietovė",
@ -128,7 +133,7 @@
"comment": {
"pinned_by": "Prisegė {author}",
"loading": "Įkeliami komentarai...",
"disabled": "Komentarai yra išjungti įkėlėjo.",
"disabled": "Įkėlėjas išjungė komentarus.",
"user_disabled": "Komentarai yra išjungti nustatymuose."
},
"video": {
@ -137,7 +142,7 @@
"sponsor_segments": "Rėmėjų segmentai",
"watched": "Žiūrėta",
"ratings_disabled": "Įvertinimai išjungti",
"chapters": "Skyriai",
"chapters": "Skirsniai",
"live": "{0} tiesiogiai",
"shorts": "Trumpi filmukai"
},
@ -160,7 +165,8 @@
"copied": "Nukopijuota!",
"cannot_copy": "Negalima kopijuoti!",
"page_not_found": "Puslapis nerastas",
"preferences_note": "Pastaba: nuostatos išsaugomos vietinėje naršyklės atmintyje. Ištrynus naršyklės duomenis, jie bus nustatyti iš naujo."
"preferences_note": "Pastaba: nuostatos išsaugomos vietinėje naršyklės atmintyje. Ištrynus naršyklės duomenis, jos bus nustatytos iš naujo.",
"local_storage": "Šiam veiksmui reikia localStorage, ar slapukai įjungti?"
},
"subscriptions": {
"subscribed_channels_count": "Prenumeruojama: {0}"

174
src/locales/or.json Normal file
View File

@ -0,0 +1,174 @@
{
"titles": {
"login": "ଲଗ୍ ଇନ୍",
"feed": "ଫିଡ୍",
"trending": "ଟ୍ରେଣ୍ଡିଂ",
"register": "ପଂଜିକରଣ",
"preferences": "ପସନ୍ଦ",
"history": "ଇତିହାସ",
"subscriptions": "ଅନୁସୃତ ଗୁଡ଼ିକ",
"playlists": "ପ୍ଲେଲିଷ୍ଟ ଗୁଡ଼ିକ",
"instance": "ଉଦାହରଣ",
"account": "ଆକାଉଣ୍ଟ",
"player": "ପ୍ଲେୟାର",
"livestreams": "ସିଧାପ୍ରସାରଣ ଗୁଡ଼ିକ",
"channels": "ସ୍ରୋତ ଗୁଡ଼ିକ"
},
"player": {
"watch_on": "{0} ରେ ଦେଖନ୍ତୁ"
},
"actions": {
"subscribe": "ସଦସ୍ୟତା - {count}",
"unsubscribe": "ସଦସ୍ୟତା ରଦ୍ଦ କରନ୍ତୁ - {count}",
"view_subscriptions": "ସଦସ୍ୟତା ଗୁଡ଼ିକ ଦେଖନ୍ତୁ",
"sort_by": "ଏହି କ୍ରମରେ ସଜାନ୍ତୁ:",
"most_recent": "ସଦ୍ୟତମ",
"uses_api_from": "ରୁ API ବ୍ୟବହାର କରେ ",
"enable_sponsorblock": "ପ୍ରଯୋଜକ ବନ୍ଦ ସକ୍ଷମ କରନ୍ତୁ",
"skip_intro": "ଇଣ୍ଟରମିସନ୍ / ଇଣ୍ଟ୍ରୋ ଆନିମେସନ୍ ଛାଡିଦିଅ",
"default_homepage": "ଡିଫଲ୍ଟ ମୂଳପୃଷ୍ଠା",
"minimize_comments_default": "ଡିଫଲ୍ଟ ଭାବରେ ମନ୍ତବ୍ୟଗୁଡିକୁ କମ୍ କରନ୍ତୁ",
"show_description": "ବର୍ଣ୍ଣନା ଦେଖାନ୍ତୁ",
"minimize_recommendations": "ସୁପାରିଶକୁ କମ୍ କରନ୍ତୁ",
"show_recommendations": "ସୁପାରିଶଗୁଡିକ ଦେଖାନ୍ତୁ",
"disable_lbry": "ଷ୍ଟ୍ରିମିଂ ପାଇଁ LBRY ଅକ୍ଷମ କରନ୍ତୁ",
"search": "ସନ୍ଧାନ କରନ୍ତୁ",
"rename_playlist": "ପ୍ଲେ ଲିଷ୍ଟର ନାମ ପରିବର୍ତ୍ତନ କରନ୍ତୁ",
"new_playlist_name": "ନୂତନ ପ୍ଲେଲିଷ୍ଟ ନାମ",
"channel_name_asc": "ସ୍ରୋତ ର ନାମ (A-Z)",
"least_recent": "ସର୍ବନିମ୍ନ ସାମ୍ପ୍ରତିକ",
"channel_name_desc": "ସ୍ରୋତ ର ନାମ (Z-A)",
"back": "ପଛକୁ ଯାଆନ୍ତୁ",
"skip_sponsors": "ପ୍ରଯୋଜକମାନଙ୍କୁ ଛାଡ଼ିଦିଅ",
"skip_outro": "ଏଣ୍ଡକାର୍ଡ / କ୍ରେଡିଟ୍ ଛାଡିଦିଅ",
"skip_preview": "ପୂର୍ବାବଲୋକନ / ପୁନଃପ୍ରକାଶକୁ ଛାଡିଦିଅ",
"restore_preferences": "ପସନ୍ଦଗୁଡିକ ପୁନରୁଦ୍ଧାର କରନ୍ତୁ",
"skip_interaction": "ପାରସ୍ପରିକ ସ୍ମାରକକୁ ଏଡ଼ାଇ ଦିଅନ୍ତୁ (ସବସ୍କ୍ରାଇବ କରନ୍ତୁ)",
"skip_self_promo": "ଅନାଦେୟ / ଆତ୍ମ ପଦୋନ୍ନତି ଛାଡିଦିଅ",
"skip_non_music": "ସଙ୍ଗୀତ ପରିତ୍ୟାଗ କରନ୍ତୁ: ଅଣ-ସଙ୍ଗୀତ ବିଭାଗ",
"skip_highlight": "ହାଇଲାଇଟ୍ କୁ ଛାଡିଦିଅ",
"auto": "ସ୍ଵତଃ",
"skip_filler_tangent": "ଫିଲର୍ ଟାଙ୍ଗେଣ୍ଟ୍ ଛାଡିଦିଅ",
"default_quality": "ଡିଫଲ୍ଟ ଗୁଣବତ୍ତା",
"show_markers": "ପ୍ଲେୟାରରେ ମାର୍କର୍ସ ଦେଖାନ୍ତୁ",
"theme": "ଥିମ୍",
"dark": "ଅନ୍ଧାର",
"light": "ଉଜ୍ଜଳ",
"autoplay_video": "ଅଟୋପ୍ଲେ ଭିଡିଓ",
"enabled_codecs": "ସକ୍ଷମ କୋଡେକସ୍ (ଏକାଧିକ)",
"audio_only": "କେବଳ ସ୍ୱର",
"language_selection": "ଭାଷା ଚୟନ",
"show_more": "ଅଧିକ ଦେଖାନ୍ତୁ",
"buffering_goal": "ବଫରିଂ ଲକ୍ଷ୍ୟ (ସେକେଣ୍ଡରେ)",
"country_selection": "ଦେଶ ଚୟନ",
"minimize_description_default": "ଡିଫଲ୍ଟ ଭାବରେ ବର୍ଣ୍ଣନାକୁ କମ୍ କରନ୍ତୁ",
"store_watch_history": "ଦେଖିଥିବା ଭିଡିଓ ଗୁଡ଼ିକର ଇତିହାସ ରଖନ୍ତୁ",
"instances_list": "ଉଦାହରଣ ତାଲିକା",
"instance_selection": "ଇନଷ୍ଟାନ୍ସ ଚୟନ",
"yes": "ହଁ",
"import_from_json": "JSON / CSV ରୁ ଆମଦାନୀ କରନ୍ତୁ",
"no": "ନାହିଁ",
"export_to_json": "JSON କୁ ରପ୍ତାନି କରନ୍ତୁ",
"loop_this_video": "ଏହି ଭିଡିଓକୁ ଲୁପ୍ କରନ୍ତୁ",
"auto_play_next_video": "ପରବର୍ତ୍ତୀ ଭିଡିଓ ସ୍ଵତଃ ଚଲାନ୍ତୁ",
"donations": "ବିକାଶ ପାଇଁ ଦାନ",
"minimize_comments": "ମନ୍ତବ୍ୟଗୁଡିକୁ କମ୍ କରନ୍ତୁ",
"show_comments": "ମନ୍ତବ୍ୟଗୁଡିକ ଦେଖାନ୍ତୁ",
"delete_playlist_video_confirm": "ପ୍ଲେ ଲିଷ୍ଟରୁ ଭିଡିଓ ଅପସାରଣ କରିବେ କି?",
"minimize_description": "ବର୍ଣ୍ଣନାକୁ କମ୍ କରନ୍ତୁ",
"view_ssl_score": "SSL ସ୍କୋର ଦେଖନ୍ତୁ",
"loading": "ଲୋଡ୍ ହେଉଛି...",
"enable_lbry_proxy": "LBRY ପାଇଁ ପ୍ରକ୍ସି ସକ୍ଷମ କରନ୍ତୁ",
"filter": "ଫିଲ୍ଟର୍ କରନ୍ତୁ",
"load_more_replies": "ଅଧିକ ଉତ୍ତର ଲୋଡ୍ କରନ୍ତୁ",
"clear_history": "ଇତିହାସ ସଫା କରନ୍ତୁ",
"hide_replies": "ଉତ୍ତରଗୁଡିକ ଲୁଚାନ୍ତୁ",
"remove_from_playlist": "ପ୍ଲେ ଲିଷ୍ଟରୁ ହଟାନ୍ତୁ",
"add_to_playlist": "ପ୍ଲେ ଲିଷ୍ଟରେ ଯୋଡନ୍ତୁ",
"create_playlist": "ପ୍ଲେଲିଷ୍ଟ ସୃଷ୍ଟି କରନ୍ତୁ",
"please_select_playlist": "ଦୟାକରି ଏକ ପ୍ଲେଲିଷ୍ଟ ଚୟନ କରନ୍ତୁ",
"delete_playlist": "ପ୍ଲେ ଲିଷ୍ଟ ଡିଲିଟ୍ କରନ୍ତୁ",
"show_watch_on_youtube": "ୟୁଟ୍ୟୁବ୍ ବଟନ୍ ରେ ୱାଚ୍ ଦେଖାନ୍ତୁ",
"reset_preferences": "ପସନ୍ଦଗୁଡିକ ପୁନଃସେଟ୍ କରନ୍ତୁ",
"share": "ଅଂଶୀଦାର କରନ୍ତୁ",
"select_playlist": "ଏକ ପ୍ଲେଲିଷ୍ଟ ଚୟନ କରନ୍ତୁ",
"delete_playlist_confirm": "ଏହି ପ୍ଲେଲିଷ୍ଟ ବିଲୋପ କରିବେ କି?",
"delete_account": "ଖାତା ବିଲୋପ କରନ୍ତୁ",
"logout": "ଏହି ଉପକରଣରୁ ଲଗଆଉଟ୍ କରନ୍ତୁ",
"minimize_recommendations_default": "ଡିଫଲ୍ଟ ଭାବରେ ସୁପାରିଶକୁ କମ୍ କରନ୍ତୁ",
"invalidate_session": "ସମସ୍ତ ଡିଭାଇସ୍ ରୁ ଲଗଆଉଟ୍ କରନ୍ତୁ",
"download_as_txt": ".Txt ଭାବରେ ଡାଉନଲୋଡ୍ କରନ୍ତୁ",
"instance_auth_selection": "ପ୍ରାମାଣିକିକରଣ ଇନଷ୍ଟାନ୍ସ ଚୟନ",
"confirm_reset_preferences": "ଆପଣ ନିଶ୍ଚିତ କି ଆପଣ ଆପଣଙ୍କର ପସନ୍ଦଗୁଡିକ ପୁନଃ ସେଟ୍ କରିବାକୁ ଚାହୁଁଛନ୍ତି?",
"status_page": "ସ୍ଥିତି",
"different_auth_instance": "ପ୍ରାମାଣିକିକରଣ ପାଇଁ ଏକ ଭିନ୍ନ ଉଦାହରଣ ବ୍ୟବହାର କରନ୍ତୁ",
"clone_playlist": "କ୍ଲୋନ୍ ପ୍ଲେଲିଷ୍ଟ୍",
"clone_playlist_success": "ସଫଳତାର ସହିତ କ୍ଲୋନ ହୋଇଛି!",
"backup_preferences": "ପସନ୍ଦ ଗୁଡ଼ିକର ନକଲ ସଂରକ୍ଷଣ କରନ୍ତୁ",
"back_to_home": "ଘରକୁ ଫେରନ୍ତୁ",
"show_chapters": "ଅଧ୍ୟାୟ ଗୁଡ଼ିକ",
"store_search_history": "ସନ୍ଧାନ ଇତିହାସ ଗଚ୍ଛିତ କରନ୍ତୁ",
"hide_watched": "ଫିଡରେ ଦେଖାଯାଇଥିବା ଭିଡିଓଗୁଡିକ ଲୁଚାନ୍ତୁ",
"follow_link": "ଲିଙ୍କ୍ ଅନୁସରଣ କରନ୍ତୁ",
"copy_link": "ଲିଙ୍କ୍ କପି କରନ୍ତୁ",
"with_timecode": "ଟାଇମ୍ କୋଡ୍ ସହିତ ଅଂଶୀଦାର କରନ୍ତୁ",
"piped_link": "ପାଇପ୍ ଲିଙ୍କ୍",
"time_code": "ସମୟ କୋଡ୍ (ସେକେଣ୍ଡରେ)",
"source_code": "ଉତ୍ସ କୋଡ୍",
"reply_count": "{count} ଉତ୍ତର",
"documentation": "ଡକ୍ୟୁମେଣ୍ଟେସନ୍",
"instance_donations": "ଇନଷ୍ଟାଣ୍ଟ ଦାନ ଗୁଡ଼ିକ",
"minimize_chapters_default": "ଡିଫଲ୍ଟ ଭାବରେ ଅଧ୍ୟାୟଗୁଡ଼ିକୁ କମ୍ କରନ୍ତୁ",
"no_valid_playlists": "ଫାଇଲ୍ ଟି ବୈଧ ପ୍ଲେଲିଷ୍ଟ ଧାରଣ କରେ ନାହିଁ!"
},
"comment": {
"loading": "ମନ୍ତବ୍ୟ ଲୋଡ୍ ହେଉଛି ...",
"user_disabled": "ମନ୍ତବ୍ୟଗୁଡିକ ସେଟିଂସମୂହରେ ଅକ୍ଷମ ହୋଇଛି ।",
"pinned_by": "{author} ଙ୍କ ଦ୍ୱାରା ପିନ୍ ହୋଇଛି",
"disabled": "ମନ୍ତବ୍ୟଗୁଡିକ ଅପଲୋଡର୍ ଦ୍ୱାରା ଅକ୍ଷମ ହୋଇଛି ।"
},
"video": {
"views": "{views} ଦୃଶ୍ୟ",
"watched": "ଦେଖାଯାଇଛି",
"sponsor_segments": "ପ୍ରାୟୋଜକ ଖଣ୍ଡଗୁଡିକ",
"shorts": "ସର୍ଟସ୍",
"videos": "ଭିଡିଓ ଗୁଡିକ",
"ratings_disabled": "ମୂଲ୍ୟାୟନ ଅକ୍ଷମ ହୋଇଛି",
"chapters": "ଅଧ୍ୟାୟ ଗୁଡ଼ିକ",
"live": "{0} ସିଧାପ୍ରସାରଣ"
},
"search": {
"did_you_mean": "ଆପଣ କହିବାକୁ ଚାହୁଁଛନ୍ତି କି: {0}?",
"music_albums": "ୟୁଟିଉବ୍ ସଙ୍ଗୀତ: ଆଲବମ୍ ଗୁଡ଼ିକ",
"music_playlists": "ୟୁଟିଉବ୍ ସଙ୍ଗୀତ: ପ୍ଲେଲିଷ୍ଟଗୁଡିକ",
"music_videos": "ୟୁଟିଉବ୍ ସଙ୍ଗୀତ: ଭିଡିଓଗୁଡିକ",
"all": "ୟୁଟ୍ୟୁବ୍: ସମସ୍ତ",
"videos": "ୟୁଟ୍ୟୁବ୍: ଭିଡିଓଗୁଡିକ",
"channels": "ୟୁଟ୍ୟୁବ୍: ଚ୍ୟାନେଲଗୁଡିକ",
"music_songs": "ୟୁଟିଉବ୍ ସଙ୍ଗୀତ: ଗୀତ ଗୁଡ଼ିକ",
"playlists": "ୟୁଟ୍ୟୁବ୍: ପ୍ଲେଲିଷ୍ଟଗୁଡିକ"
},
"subscriptions": {
"subscribed_channels_count": "ସଦସ୍ୟତା: {0}"
},
"info": {
"preferences_note": "ଟିପନ୍ତୁ: ପସନ୍ଦଗୁଡିକ ଆପଣଙ୍କ ବ୍ରାଉଜରର ସ୍ଥାନୀୟ ଷ୍ଟୋରେଜ୍ ରେ ସେଭ୍ ହୋଇଛି । ଆପଣଙ୍କର ବ୍ରାଉଜର୍ ଡାଟା ଡିଲିଟ୍ କରିବା ସେଗୁଡ଼ିକୁ ପୁନଃସେଟ୍ କରିବ ।",
"copied": "କପି ହୋଇଛି!",
"cannot_copy": "କପି କରିପାରିବ ନାହିଁ!",
"page_not_found": "ପୃଷ୍ଠାଟି ମିଳିଲା ନାହିଁ",
"local_storage": "ଏହି କ୍ରିୟା ଲୋକାଲ୍ ଷ୍ଟୋରେଜ୍ ଆବଶ୍ୟକ କରେ, କୁକିଜ୍ ସକ୍ଷମ ଅଛି କି?"
},
"preferences": {
"instance_name": "ଇନଷ୍ଟାନ୍ସ ନାମ",
"registered_users": "ପଞ୍ଜୀକୃତ ଉପଭୋକ୍ତା",
"version": "ସଂସ୍କରଣ",
"instance_locations": "ଇନଷ୍ଟାନ୍ସ ଅବସ୍ଥାନ",
"has_cdn": "CDN ଅଛି କି?",
"up_to_date": "ଅଦ୍ୟାବଧି?",
"ssl_score": "SSL ସ୍କୋର"
},
"login": {
"password": "ପାସୱାର୍ଡ",
"username": "ଉପଯୋଗକର୍ତ୍ତା ନାମ"
}
}

View File

@ -7,14 +7,19 @@
"preferences": "Ustawienia",
"history": "Historia",
"subscriptions": "Lista kanałów",
"playlists": "Playlisty"
"playlists": "Playlisty",
"player": "Odtwarzacz",
"account": "Konto",
"instance": "Instancja",
"livestreams": "Na żywo",
"channels": "Kanały"
},
"player": {
"watch_on": "Obejrzyj na {0}"
},
"actions": {
"subscribe": "Subskrybuj - {count}",
"unsubscribe": "Anuluj subskrypcję - {count}",
"unsubscribe": "Odsubskrybuj - {count}",
"view_subscriptions": "Zarządzaj subskrybcjami",
"sort_by": "Sortuj:",
"most_recent": "Najnowsze",
@ -26,7 +31,7 @@
"enable_sponsorblock": "Włącz SponsorBlock",
"skip_sponsors": "Pomijaj segmenty sponsorowane",
"skip_intro": "Pomijaj czołówkę",
"skip_outro": "Pomijaj tyłówkę",
"skip_outro": "Pomiń karty końcowe / Podziękowania",
"skip_preview": "Pomijaj podgląd/podsumowanie",
"skip_interaction": "Pomijaj prośby o interakcję/subskrybcję",
"skip_self_promo": "Pomijaj autopromocję",
@ -34,7 +39,7 @@
"skip_highlight": "Przechodź do meritum filmu",
"skip_filler_tangent": "Pomijaj wstawki humorystyczne",
"theme": "Motyw",
"auto": "Automatyczny",
"auto": "Automatyczna",
"dark": "Ciemny",
"light": "Jasny",
"autoplay_video": "Autoodtwarzanie",
@ -43,9 +48,9 @@
"buffering_goal": "Cel buforowania (w sekundach)",
"country_selection": "Wybór kraju",
"default_homepage": "Domyślna strona główna",
"show_comments": "Pokazuj komentarze",
"minimize_description_default": "Zawsze chowaj opis",
"store_watch_history": "Zapisuj historię oglądania",
"show_comments": "Pokaż komentarze",
"minimize_description_default": "Ukryj opis",
"store_watch_history": "Zapamiętaj historię oglądania",
"language_selection": "Wybór języka",
"instances_list": "Lista instancji",
"enabled_codecs": "Włączone kodeki (lista wielokrotnego wyboru)",
@ -58,10 +63,10 @@
"loop_this_video": "Zapętlaj ten film",
"auto_play_next_video": "Autoodtwarzanie następnego filmu",
"donations": "Wsparcie",
"minimize_description": "Schowaj opis",
"minimize_description": "Ukryj opis",
"show_description": "Pokaż opis",
"minimize_recommendations": "Minimalizuj rekomendacje",
"show_recommendations": "Pokaż rekomendacje",
"minimize_recommendations": "Ukryj proponowane",
"show_recommendations": "Pokaż proponowane",
"disable_lbry": "Wyłącz LBRY dla streaming-u",
"enable_lbry_proxy": "Włącz proxy dla LBRY",
"view_ssl_score": "Pokaż ocenę SSL",
@ -69,25 +74,64 @@
"filter": "Filtruj",
"loading": "Ładowanie...",
"clear_history": "Wyczyść historię",
"hide_replies": "Schowaj odpowiedzi",
"hide_replies": "Ukryj odpowiedzi",
"load_more_replies": "Pokaż więcej odpowiedzi",
"add_to_playlist": "Dodaj do playlisty",
"remove_from_playlist": "Usuń z playlisty",
"delete_playlist_video_confirm": "Czy jesteś pewien, że chcesz usunąć ten film z tej playlisty?",
"delete_playlist_video_confirm": "Usunąć film z playlisty?",
"create_playlist": "Stwórz playlistę",
"delete_playlist": "Usuń playlistę",
"select_playlist": "Wybierz playlistę",
"delete_playlist_confirm": "Czy jesteś pewien, że chcesz usunąć tę playlistę?",
"please_select_playlist": "Musisz wybrać playlistę"
"delete_playlist_confirm": "Usunąć tę playlistę?",
"please_select_playlist": "Musisz wybrać playlistę",
"confirm_reset_preferences": "Zresetować ustawienia?",
"show_watch_on_youtube": "Przycisk „Oglądaj na YouTube”",
"restore_preferences": "Przywróć ustawienia z kopii zapasowej",
"clone_playlist_success": "Pomyślnie sklonowano!",
"copy_link": "Skopiuj link",
"documentation": "Dokumentacja",
"instance_donations": "Darowizny na rzecz instancji",
"back_to_home": "Idź do strony głównej",
"instance_auth_selection": "Wybrana instancja autoryzacyjna",
"time_code": "Kod czasowy (w sekundach)",
"show_markers": "Pokaż segmenty na odtwarzaczu",
"store_search_history": "Zapamiętaj historię wyszukiwania",
"hide_watched": "Ukryj obejrzane filmy",
"source_code": "Kod źródłowy",
"show_chapters": "Rozdziały",
"minimize_chapters_default": "Ukryj rozdziały",
"rename_playlist": "Zmień nazwę playlisty",
"follow_link": "Otwórz link",
"minimize_comments_default": "Ukryj sekcję komentarzy",
"minimize_comments": "Ukryj komentarze",
"delete_account": "Usuń konto",
"logout": "Wyloguj się z tego urządzenia",
"minimize_recommendations_default": "Ukryj proponowane filmy",
"invalidate_session": "Wyloguj się ze wszystkich urządzeń",
"different_auth_instance": "Użyj innej instancji do obsługi konta Piped",
"clone_playlist": "Sklonuj playlistę",
"backup_preferences": "Pobierz kopię zapasową ustawień",
"download_as_txt": "Pobierz jako .txt",
"reset_preferences": "Zresetuj ustawienia",
"new_playlist_name": "Nowa nazwa playlisty",
"share": "Udostępnij",
"with_timecode": "Udostępnij z kodem czasowym",
"piped_link": "Link Piped",
"status_page": "Status",
"reply_count": "{count} odpowiedzi",
"no_valid_playlists": "Ten plik nie zawiera poprawnych playlist!"
},
"comment": {
"pinned_by": "Przypięty przez {author}"
"pinned_by": "Przypięty przez {author}",
"disabled": "Komentarze zostały wyłączone przez twórcę.",
"loading": "Wczytywanie komentarzy...",
"user_disabled": "Komentarze wyłączone w ustawieniach."
},
"preferences": {
"instance_name": "Nazwa instancji",
"instance_locations": "Lokalizacje instancji",
"has_cdn": "Używa CDN?",
"registered_users": "Il. zarej. uż.",
"registered_users": "Zarejestrowani użytkownicy",
"version": "Wersja",
"up_to_date": "Aktualna?",
"ssl_score": "Ocena SSL"
@ -103,7 +147,8 @@
"sponsor_segments": "Segmenty sponsorowane",
"ratings_disabled": "Ocenianie wyłączone",
"chapters": "Rozdziały",
"live": "{0} Na żywo"
"live": "{0} Na żywo",
"shorts": "Krótkie wideo"
},
"search": {
"did_you_mean": "Czy chodziło ci o: {0}?",
@ -115,5 +160,15 @@
"music_videos": "YT Music: Teledyski",
"music_albums": "YT Music: Albumy",
"music_playlists": "YT Music: Playlisty"
},
"info": {
"cannot_copy": "Nie można skopiować!",
"copied": "Skopiowano!",
"page_not_found": "Strona nie znaleziona",
"preferences_note": "Uwaga: ustawienia są zapisywane w lokalnej pamięci przeglądarki. Usunięcie danych przeglądarki spowoduje ich zresetowanie.",
"local_storage": "Ta akcja wymaga dostępu do lokalnej pamięci, czy pliki cookie są włączone?"
},
"subscriptions": {
"subscribed_channels_count": "Licznik subskrybcji: {0}"
}
}

View File

@ -1,142 +1,174 @@
{
"titles": {
"trending": "Tendências",
"preferences": "Preferências",
"preferences": "Configurações",
"subscriptions": "Subscrições",
"login": "Entrar",
"login": "Iniciar Sessão",
"register": "Registar",
"history": "Histórico",
"feed": "Feed",
"playlists": "Listas de reprodução",
"feed": "Conteúdo",
"playlists": "Listas de Reprodução",
"account": "Conta",
"instance": "Instância",
"player": "Reprodutor"
"player": "Reprodutor",
"livestreams": "Transmissões ao vivo",
"channels": "Canais"
},
"actions": {
"sort_by": "Ordenar por:",
"most_recent": "Mais recentes",
"least_recent": "Menos recentes",
"channel_name_asc": "Nome do canal (A-Z)",
"back": "Recuar",
"uses_api_from": "Utiliza a API de ",
"enable_sponsorblock": "Ativar 'Sponsorblock'",
"skip_intro": "Ignorar intervalo/animação de abertura",
"skip_outro": "Ignorar cartões finais/créditos",
"skip_preview": "Ignorar pré-visualização/resumo",
"most_recent": "Mais Recente",
"least_recent": "Menos Recente",
"channel_name_asc": "Nome do Canal (A-Z)",
"back": "Voltar",
"uses_api_from": "Utiliza a \"API\" de ",
"enable_sponsorblock": "Ativar \"SponsorBlock\"",
"skip_intro": "Saltar Intermissão/Animação de Introdução",
"skip_outro": "Saltar \"Endcards\"/Créditos",
"skip_preview": "Saltar Pré-Visualização/Recapitulação",
"auto": "Automático",
"dark": "Escuro",
"autoplay_video": "Reprodução automática",
"audio_only": "Apenas áudio",
"default_quality": "Qualidade padrão",
"country_selection": "Seleção de país",
"default_homepage": "Página inicial padrão",
"show_comments": "Mostrar comentários",
"minimize_description_default": "Minimizar descrição por definição",
"store_watch_history": "Guardar histórico de visualizações",
"instances_list": "Lista de instâncias",
"enabled_codecs": "Codificadores ativados (Vários)",
"instance_selection": "Seleção de instância",
"show_more": "Mostrar mais",
"autoplay_video": "Reproduzir Vídeo Automaticamente",
"audio_only": "Apenas Áudio",
"default_quality": "Qualidade Padrão",
"country_selection": "Seleção de País",
"default_homepage": "Página Inicial Padrão",
"show_comments": "Mostrar Comentários",
"minimize_description_default": "Minimizar Descrição por defeito",
"store_watch_history": "Guardar Histórico de Visualizações",
"instances_list": "Lista de Instâncias",
"enabled_codecs": "\"Codecs\" Activados (Vários)",
"instance_selection": "Seleção de Instância",
"show_more": "Mostrar Mais",
"import_from_json": "Importar de JSON/CSV",
"export_to_json": "Exportar para JSON",
"loop_this_video": "Repetir este vídeo",
"auto_play_next_video": "Reproduzir próximo vídeo automaticamente",
"donations": "Doações",
"minimize_description": "Minimizar descrição",
"show_description": "Mostrar descrição",
"show_recommendations": "Mostrar recomendações",
"disable_lbry": "Desativar LBRY para streaming",
"enable_lbry_proxy": "Ativar proxy para LBRY",
"view_ssl_score": "Ver valor SSL",
"search": "Pesquisa",
"loop_this_video": "Repetir este Vídeo",
"auto_play_next_video": "Reproduzir Automaticamente o próximo Vídeo",
"donations": "Doações de desenvolvimento",
"minimize_description": "Minimizar Descrição",
"show_description": "Mostrar Descrição",
"show_recommendations": "Mostrar Recomendações",
"disable_lbry": "Desactivar \"LBRY\" para Transmissão",
"enable_lbry_proxy": "Activar \"Proxy\" para \"LBRY\"",
"view_ssl_score": "Ver Pontuação \"SSL\"",
"search": "Procurar",
"filter": "Filtrar",
"loading": "A carregar...",
"clear_history": "Limpar histórico",
"loading": "A Carregar...",
"clear_history": "Limpar Histórico",
"subscribe": "Subscrever - {count}",
"unsubscribe": "Cancelar subscrição - {count}",
"view_subscriptions": "Ver subscrições",
"channel_name_desc": "Nome do canal (Z-A)",
"skip_sponsors": "Ignorar publicidade",
"unsubscribe": "Anular subscrição - {count}",
"view_subscriptions": "Ver Subscrições",
"channel_name_desc": "Nome do Canal (Z-A)",
"skip_sponsors": "Saltar Patrocínios",
"yes": "Sim",
"skip_non_music": "Música: ignorar secção não musical",
"skip_non_music": "Saltar Música: Secção Não-Musical",
"no": "Não",
"theme": "Tema",
"language_selection": "Seleção de idioma",
"minimize_recommendations": "Minimizar recomendações",
"language_selection": "Seleção de Idioma",
"minimize_recommendations": "Minimizar Recomendações",
"light": "Claro",
"hide_replies": "Ocultar respostas",
"load_more_replies": "Carregar mais respostas",
"skip_highlight": "Ignorar destaques",
"skip_interaction": "Ignorar lembrete de Interação (Subscrição)",
"skip_self_promo": "Ignorar promoção não paga/autopromoção",
"buffering_goal": "Objetivo de memória (segundos)",
"skip_filler_tangent": "Ignorar cenas desnecessárias",
"hide_replies": "Ocultar Respostas",
"load_more_replies": "Carregar mais Respostas",
"skip_highlight": "Saltar Destaque",
"skip_interaction": "Saltar Lembrete de Interação (Subscreve)",
"skip_self_promo": "Saltar Promoção Não Paga/Auto-Promoção",
"buffering_goal": "Objetivo de \"Buffering\" (em segundos)",
"skip_filler_tangent": "Saltar Tangente \"Filler\"",
"add_to_playlist": "Adicionar à lista de reprodução",
"delete_playlist": "Eliminar lista de reprodução",
"select_playlist": "Seleccione uma lista de reprodução",
"delete_playlist_confirm": "Eliminar esta lista de reprodução?",
"please_select_playlist": "Selecione uma lista de reprodução",
"delete_playlist_video_confirm": "Remover vídeo da lista de reprodução?",
"delete_playlist": "Apagar Lista de Reprodução",
"select_playlist": "Selecionar uma Lista de Reprodução",
"delete_playlist_confirm": "Apagar esta lista de reprodução?",
"please_select_playlist": "Selecionar uma lista de reprodução se faz favor",
"delete_playlist_video_confirm": "Remover o vídeo da lista de reprodução?",
"remove_from_playlist": "Remover da lista de reprodução",
"create_playlist": "Criar lista de reprodução",
"create_playlist": "Criar Lista de Reprodução",
"clone_playlist_success": "Clonada com sucesso!",
"clone_playlist": "Clonar lista de reprodução",
"show_markers": "Mostrar marcas no reprodutor",
"delete_account": "Eliminar conta",
"logout": "Terminar sessão neste dispositivo",
"minimize_recommendations_default": "Minimizar recomendações por definição",
"invalidate_session": "Terminar sessão em todos os dispositivos",
"different_auth_instance": "Use uma instância diferente para autenticação",
"instance_auth_selection": "Seleção de instância de autenticação",
"confirm_reset_preferences": "Tem a certeza de que deseja restaurar as preferências originais?",
"download_as_txt": "Descarregar como txt",
"reset_preferences": "Repor definições originais",
"restore_preferences": "Restaurar preferências"
"clone_playlist": "Clonar Lista de Reprodução",
"show_markers": "Mostrar Marcadores no Leitor",
"delete_account": "Apagar Conta",
"logout": "Terminar sessão neste aparelho",
"minimize_recommendations_default": "Minimizar Recomendações por defeito",
"invalidate_session": "Terminar sessão em todos os aparelhos",
"different_auth_instance": "Usar uma instância diferente para autenticação",
"instance_auth_selection": "Selecção da Instância para Autenticação",
"confirm_reset_preferences": "Tem a certeza que quer redefinir as suas configurações?",
"download_as_txt": "Descarregar como .txt",
"reset_preferences": "Redefinir preferências",
"restore_preferences": "Restaurar configurações",
"follow_link": "Seguir ligação",
"piped_link": "Ligação do Piped",
"backup_preferences": "Exportar configurações",
"store_search_history": "Armazenar Histórico de Pesquisa",
"hide_watched": "Ocultar vídeos assistidos no feed",
"documentation": "Documentação",
"status_page": "Estado",
"source_code": "Código-fonte",
"instance_donations": "Doações de instâncias",
"minimize_chapters_default": "Minimizar Capítulos por padrão",
"show_watch_on_youtube": "Mostrar Botão Assistir no YouTube",
"new_playlist_name": "Novo nome da lista de reprodução",
"minimize_comments": "Minimizar Comentários",
"back_to_home": "Voltar ao início",
"rename_playlist": "Renomear",
"copy_link": "Copiar ligação",
"time_code": "Código de tempo (em segundos)",
"minimize_comments_default": "Minimizar Comentários por defeito",
"share": "Partilhar",
"with_timecode": "Partilhar com código de tempo",
"show_chapters": "Capítulos",
"reply_count": "{count} respostas",
"no_valid_playlists": "O ficheiro não contém listas de reprodução válidas!"
},
"preferences": {
"instance_name": "Nome da instância",
"instance_locations": "Localizações da instância",
"ssl_score": "Valor SSL",
"has_cdn": "Tem CDN?",
"instance_name": "Nome da Instância",
"instance_locations": "Localizações da Instância",
"ssl_score": "Pontuação \"SSL\"",
"has_cdn": "Tem \"CDN\"?",
"version": "Versão",
"registered_users": "Utilizadores registados",
"up_to_date": "Atualizado?"
"registered_users": "Utilizadores Registados",
"up_to_date": "Atualizada?"
},
"login": {
"password": "Palavra-passe",
"username": "Utilizador"
"username": "Nome de utilizador"
},
"video": {
"videos": "Vídeos",
"views": "{views} visualizações",
"watched": "Assistido",
"sponsor_segments": "Segmentos de patrocínios",
"ratings_disabled": "Avaliações desativadas",
"watched": "Visto",
"sponsor_segments": "Segmentos Patrocinados",
"ratings_disabled": "Classificações Desactivadas",
"chapters": "Capítulos",
"live": "{0} em direto",
"shorts": "Curtos"
"live": "{0} em Direto",
"shorts": "\"Shorts\""
},
"search": {
"did_you_mean": "Será que queria dizer: {0}?",
"did_you_mean": "Será que querias dizer: {0}?",
"all": "YouTube: Tudo",
"videos": "YouTube: Vídeos",
"channels": "YouTube: Canais",
"music_songs": "YT Music: Músicas",
"music_videos": "YT Music: Vídeos",
"music_albums": "YT Music: Álbuns",
"music_playlists": "YT Music: Listas de reprodução",
"playlists": "YouTube: Listas de reprodução"
"music_playlists": "YT Music: Listas de Reprodução",
"playlists": "YouTube: Listas de Reprodução"
},
"player": {
"watch_on": "Ver em {0}"
},
"comment": {
"pinned_by": "Fixado por {author}",
"disabled": "Os comentários form desativados pelo publicador.",
"loading": "Carregando comentários...",
"user_disabled": "Os comentários estão desativados nas definições."
"pinned_by": "Afixado por {author}",
"disabled": "Os comentários estão desactivados pelo dono do canal.",
"loading": "A carregar comentários...",
"user_disabled": "Os comentários estão desactivados nas definições."
},
"subscriptions": {
"subscribed_channels_count": "{0} subscrito"
"subscribed_channels_count": "Subscrito a: {0}"
},
"info": {
"copied": "Copiada!",
"cannot_copy": "Não foi possível copiar!",
"page_not_found": "Página não encontrada",
"local_storage": "Esta ação requer localStorage, os cookies estão ativados?",
"preferences_note": "Nota: as configurações são guardadas no armazenamento local to seu navegador. Eliminar os dados de navegação irá redefini-las."
}
}

View File

@ -9,41 +9,41 @@
"channel_name_desc": "Nome do Canal (Z-A)",
"dark": "Escuro",
"light": "Claro",
"show_comments": "Mostrar comentários",
"show_comments": "Exibir Comentários",
"country_selection": "Seleção de País",
"default_homepage": "Página inicial (padrão)",
"default_quality": "Qualidade padrão",
"autoplay_video": "Reprodução automática",
"minimize_description_default": "Minimizar descrição por padrão",
"default_homepage": "Página Inicial Padrão",
"default_quality": "Qualidade Padrão",
"autoplay_video": "Reprodução Automática",
"minimize_description_default": "Minimizar Descrição por padrão",
"theme": "Tema",
"audio_only": "Apenas áudio",
"audio_only": "Apenas Áudio",
"subscribe": "Inscrever-se - {count}",
"unsubscribe": "Desinscrever-se - {count}",
"skip_sponsors": "Pular patrocinadores",
"skip_sponsors": "Pular Patrocinadores",
"auto": "Automático",
"uses_api_from": "Usa a API de ",
"enable_sponsorblock": "Habilitar Sponsorblock",
"enable_sponsorblock": "Ativar Sponsorblock",
"skip_interaction": "Pular Lembrete de Interação (Inscrever-se)",
"skip_self_promo": "Pular Promoção não paga/Autopromoção",
"show_markers": "Exibir marcadores no player",
"show_markers": "Exibir Marcadores no Player",
"skip_intro": "Pular Intervalo/Introdução Animada",
"skip_outro": "Pular Créditos/Cartões finais",
"skip_preview": "Pular Recapitulação",
"skip_highlight": "Pular destaque",
"buffering_goal": "Cache de buffer (em segundos)",
"skip_highlight": "Pular Destaque",
"buffering_goal": "Cache de Buffer (em segundos)",
"skip_non_music": "Pular Música: Seção não Musical",
"skip_filler_tangent": "Pular Enchimento Tangencial",
"enabled_codecs": "Habilitar Codecs (Múltiplos)",
"enabled_codecs": "Codecs Ativados (Múltiplos)",
"language_selection": "Seleção de Idioma",
"yes": "Sim",
"show_more": "Mostrar mais",
"show_more": "Mostrar Mais",
"export_to_json": "Exportar para JSON",
"donations": "Doações de desenvolvimento",
"minimize_recommendations": "Recolher recomendações",
"minimize_recommendations": "Minimizar Recomendações",
"loading": "Carregando...",
"hide_replies": "Esconder respostas",
"minimize_description": "Esconder descrição",
"load_more_replies": "Exibir mais respostas",
"hide_replies": "Ocultar Respostas",
"minimize_description": "Minimizar Descrição",
"load_more_replies": "Carregar mais Respostas",
"create_playlist": "Criar Playlist",
"delete_playlist": "Excluir Playlist",
"select_playlist": "Selecionar uma Playlist",
@ -53,20 +53,20 @@
"please_select_playlist": "Por favor, selecione uma playlist",
"remove_from_playlist": "Remover da playlist",
"view_ssl_score": "Ver Pontuação SSL",
"disable_lbry": "Desabilitar LBRY para Streaming",
"enable_lbry_proxy": "Habilitar proxy para LBRY",
"disable_lbry": "Desativar LBRY para Streaming",
"enable_lbry_proxy": "Ativar Proxy para LBRY",
"import_from_json": "Importar de JSON/CSV",
"loop_this_video": "Repetir este Vídeo",
"instances_list": "Lista de Instâncias",
"clear_history": "Limpar Histórico",
"search": "Pesquisar",
"no": "Não",
"show_description": "Exibir descrição",
"show_description": "Exibir Descrição",
"instance_selection": "Seleção de Instância",
"auto_play_next_video": "Autoreproduzir vídeo seguinte",
"auto_play_next_video": "Autorreproduzir Próximo Vídeo",
"filter": "Filtro",
"store_watch_history": "Salvar Histórico de Exibição",
"show_recommendations": "Mostrar recomendações",
"show_recommendations": "Exibir Recomendações",
"minimize_comments_default": "Minimizar Comentários por padrão",
"minimize_comments": "Minimizar Comentários",
"different_auth_instance": "Use uma instância diferente para autenticação",
@ -81,7 +81,7 @@
"status_page": "Estado",
"source_code": "Código fonte",
"instance_donations": "Doações de instâncias",
"instance_auth_selection": "Seleção de iIstância de Autenticação",
"instance_auth_selection": "Seleção de Instância de Autenticação",
"clone_playlist_success": "Clonada com sucesso!",
"download_as_txt": "Baixar como .txt",
"restore_preferences": "Restaurar preferências",
@ -91,14 +91,17 @@
"new_playlist_name": "Novo nome da playlist",
"with_timecode": "Compartilhar com código de tempo",
"piped_link": "Link do Piped",
"follow_link": "Siguir link",
"follow_link": "Seguir link",
"time_code": "Código de tempo (em segundos)",
"show_chapters": "Capítulos",
"confirm_reset_preferences": "Tem certeza de que deseja redefinir suas preferências?",
"reset_preferences": "Redefinir preferências",
"documentation": "Documentação",
"reply_count": "{count} respostas",
"minimize_recommendations_default": "Minimizar Recomendações por padrão"
"minimize_recommendations_default": "Minimizar Recomendações por padrão",
"show_watch_on_youtube": "Mostrar Botão Assistir no YouTube",
"minimize_chapters_default": "Minimizar Capítulos por padrão",
"no_valid_playlists": "O arquivo não contém playlists válidas!"
},
"titles": {
"history": "Histórico",
@ -111,10 +114,12 @@
"subscriptions": "Inscrições",
"instance": "Instância",
"player": "Player",
"account": "Conta"
"account": "Conta",
"channels": "Canais",
"livestreams": "Transmissões ao vivo"
},
"player": {
"watch_on": "Assistir no"
"watch_on": "Assistir no {0}"
},
"comment": {
"pinned_by": "Fixado por {author}",
@ -123,7 +128,7 @@
"loading": "Carregando comentários..."
},
"preferences": {
"registered_users": "Usuários cadastrados",
"registered_users": "Usuários Registrados",
"version": "Versão",
"instance_name": "Nome da Instância",
"instance_locations": "Localizações da Instância",
@ -141,8 +146,8 @@
"chapters": "Capítulos",
"live": "{0} Ao vivo",
"watched": "Assistido",
"ratings_disabled": "Avaliações desabilitadas",
"sponsor_segments": "Segmentos de patrocinadores",
"ratings_disabled": "Avaliações Desativadas",
"sponsor_segments": "Segmentos de Patrocinadores",
"shorts": "Shorts"
},
"search": {
@ -160,7 +165,8 @@
"copied": "Copiado!",
"cannot_copy": "Não foi possível copiar!",
"preferences_note": "Nota: as preferências são salvas no armazenamento local do seu navegador. A exclusão dos dados do seu navegador irá redefini-los.",
"page_not_found": "página não encontrada"
"page_not_found": "página não encontrada",
"local_storage": "Esta ação requer localStorage, os cookies estão ativados?"
},
"subscriptions": {
"subscribed_channels_count": "Inscrito em: {0}"

View File

@ -10,7 +10,9 @@
"playlists": "Listas de Reprodução",
"account": "Conta",
"instance": "Instância",
"player": "Reprodutor"
"player": "Reprodutor",
"livestreams": "Transmissões ao vivo",
"channels": "Canais"
},
"actions": {
"view_subscriptions": "Ver Subscrições",
@ -47,7 +49,7 @@
"import_from_json": "Importar de JSON/CSV",
"loop_this_video": "Repetir este Vídeo",
"auto_play_next_video": "Reproduzir Automaticamente o próximo Vídeo",
"donations": "Doações",
"donations": "Doações de desenvolvimento",
"minimize_description": "Minimizar Descrição",
"show_description": "Mostrar Descrição",
"minimize_recommendations": "Minimizar Recomendações",
@ -101,7 +103,20 @@
"time_code": "Código de tempo (em segundos)",
"reset_preferences": "Redefinir preferências",
"backup_preferences": "Exportar configurações",
"back_to_home": "Voltar ao início"
"back_to_home": "Voltar ao início",
"minimize_comments_default": "Minimizar Comentários por defeito",
"store_search_history": "Armazenar Histórico de Pesquisa",
"minimize_chapters_default": "Minimizar Capítulos por padrão",
"show_watch_on_youtube": "Mostrar Botão Assistir no YouTube",
"show_chapters": "Capítulos",
"hide_watched": "Ocultar vídeos assistidos no feed",
"documentation": "Documentação",
"status_page": "Estado",
"minimize_comments": "Minimizar Comentários",
"reply_count": "{count} respostas",
"source_code": "Código-fonte",
"instance_donations": "Doações de instâncias",
"no_valid_playlists": "O ficheiro não contém listas de reprodução válidas!"
},
"comment": {
"pinned_by": "Afixado por {author}",
@ -153,6 +168,7 @@
"preferences_note": "Nota: as configurações são guardadas no armazenamento local to seu navegador. Eliminar os dados de navegação irá redefini-las.",
"page_not_found": "Página não encontrada",
"copied": "Copiada!",
"cannot_copy": "Não foi possível copiar!"
"cannot_copy": "Não foi possível copiar!",
"local_storage": "Esta ação requer localStorage, os cookies estão ativados?"
}
}

172
src/locales/ro.json Normal file
View File

@ -0,0 +1,172 @@
{
"actions": {
"back_to_home": "Înapoi acasă",
"store_search_history": "Salveaza Istoric de Cautări",
"with_timecode": "Distribuie cu cod de timp",
"piped_link": "Link Piped",
"time_code": "Cod de timp (secunde)",
"show_chapters": "Capitole",
"search": "Caută",
"logout": "Scoate contul de pe acest dispozitiv",
"add_to_playlist": "Adaugă în Playlist",
"remove_from_playlist": "Șterge din Playlist",
"create_playlist": "Creează Playlist",
"delete_playlist": "Șterge Playlist",
"delete_playlist_confirm": "Ștergi acest playlist?",
"please_select_playlist": "Te rog să alegi un playlist",
"minimize_recommendations_default": "Ascunde Recomandări ca default",
"subscribe": "Abonează-te - {count}",
"least_recent": "Mai puțin recente",
"channel_name_asc": "Nume Canal (A-Z)",
"channel_name_desc": "Nume Canal (Z-A)",
"back": "Înapoi",
"uses_api_from": "Folosește API de la ",
"enable_sponsorblock": "Activează Sponsorblock",
"skip_intro": "Sari animația de Intermisie / Intro",
"skip_preview": "Sari Preview / Recapitulare",
"skip_self_promo": "Sari Promoția Neplătita / Proprie",
"skip_non_music": "Sari Muzica: Secțiunea de Non-Muzică",
"skip_highlight": "Sari Highlight",
"show_markers": "Arată Marcaje in Player",
"dark": "Întunecat",
"auto": "Auto",
"audio_only": "Doar Audio",
"default_quality": "Calitate Default",
"country_selection": "Selecție Țară",
"default_homepage": "Pagina de Acasă",
"minimize_comments_default": "Ascunde Comentariile",
"minimize_description_default": "Ascunde Descrierea",
"language_selection": "Selecție Limbă",
"instances_list": "Listă de Instanțe",
"enabled_codecs": "Activează Codecuri (Multiple)",
"loop_this_video": "Repornește Video-ul",
"donations": "Donații",
"show_recommendations": "Recomandări",
"disable_lbry": "Oprește LBRY pentru Streaming",
"enable_lbry_proxy": "Activează Proxy pentru LBRY",
"view_ssl_score": "Vezi Scor SSL",
"filter": "Filtru",
"loading": "Se încarcă...",
"clear_history": "Șterge Istoric",
"hide_replies": "Ascunde răspunsuri",
"load_more_replies": "Mai multe Răspunsuri",
"delete_playlist_video_confirm": "Ștergi video-ul din playlist?",
"select_playlist": "Alege un Playlist",
"delete_account": "Șterge Contul",
"show_watch_on_youtube": "Arata buton de Vezi pe YouTube",
"invalidate_session": "Deconectează-te peste tot",
"instance_auth_selection": "Selecție Instanță de Autentificare",
"clone_playlist_success": "Clonat cu succes!",
"reset_preferences": "Resetează preferințele",
"confirm_reset_preferences": "Sigur vrei să îți resetezi preferințele?",
"rename_playlist": "Redenumește playlist",
"new_playlist_name": "Nume playlist nou",
"share": "Distribuie",
"follow_link": "Deschide link",
"copy_link": "Copiază link",
"hide_watched": "Ascunde video-urile vizionate",
"documentation": "Documentație",
"status_page": "Status",
"source_code": "Cod sursă",
"instance_donations": "Donații instanță",
"reply_count": "{count} răspunsuri",
"minimize_chapters_default": "Ascunde Capitole ca default",
"skip_sponsors": "Sari Sponsori",
"different_auth_instance": "Folosește altă instanță pentru autentificare",
"clone_playlist": "Clonează Playlist",
"backup_preferences": "Backup preferințe",
"unsubscribe": "Dezabonează-te - {count}",
"view_subscriptions": "Vezi Subscripții",
"sort_by": "Sortează după:",
"download_as_txt": "Descarcă ca .txt",
"most_recent": "Cele mai Recente",
"skip_outro": "Sari Endcards / Credite",
"skip_interaction": "Sari Reminder de interacțiune (Subscribe)",
"light": "Luminat",
"restore_preferences": "Restore preferințe",
"skip_filler_tangent": "Sari Tangenta Filler",
"theme": "Temă",
"autoplay_video": "Autopornește Video",
"buffering_goal": "Buffering Goal (secunde)",
"instance_selection": "Selecție Instanță",
"store_watch_history": "Salvează Istoricul de Vizionare",
"minimize_comments": "Comentarii",
"minimize_description": "Descriere",
"show_more": "Mai Mult",
"no": "Nu",
"export_to_json": "Exportă ca JSON",
"import_from_json": "Importă din JSON/CSV",
"auto_play_next_video": "Autopornește următorul Video",
"minimize_recommendations": "Recomandări",
"yes": "Da",
"show_comments": "Comentarii",
"show_description": "Descriere"
},
"preferences": {
"ssl_score": "Scor SSL",
"version": "Versiune",
"up_to_date": "Actualizat?",
"instance_name": "Nume Instanță",
"instance_locations": "Locațiile Instanței",
"has_cdn": "Are CDN?",
"registered_users": "Useri Înregistrați"
},
"comment": {
"user_disabled": "Comentariile sunt dezactivate în setări.",
"pinned_by": "Pomovat de {author}",
"disabled": "Comentariile sunt dezactivate de creator.",
"loading": "Se incarcă comentariile..."
},
"video": {
"views": "{views} vizionări",
"chapters": "Capitole",
"shorts": "Shorts",
"watched": "Văzut",
"sponsor_segments": "Segmente Sponsori",
"ratings_disabled": "Like-uri dezactivate",
"live": "{0} Live",
"videos": "Video-uri"
},
"login": {
"username": "Nume User",
"password": "Parolă"
},
"search": {
"videos": "YouTube: Video-uri",
"music_playlists": "YT Music: Playlisturi",
"did_you_mean": "Voiai să scrii: {0}?",
"all": "YouTube: Toate",
"channels": "YouTube: Canale",
"playlists": "YouTube: Playlisturi",
"music_songs": "YT Music: Cântece",
"music_videos": "YT Music: Video-uri",
"music_albums": "YT Music: Albume"
},
"info": {
"cannot_copy": "Nu se poate copia!",
"preferences_note": "Sfat: preferințele sunt salvate in memoria locala a browserului tău. Ștergând datele browserului le ștergi si pe ele.",
"page_not_found": "Pagină negăsită",
"copied": "S-a copiat!"
},
"subscriptions": {
"subscribed_channels_count": "Abonat la: {0}"
},
"titles": {
"register": "Înregistrare",
"history": "Istoric",
"subscriptions": "Abonări",
"playlists": "Playlisturi",
"account": "Cont",
"instance": "Instanță",
"login": "Logare",
"feed": "Abonări",
"trending": "Trending",
"livestreams": "Live-uri",
"channels": "Canale",
"preferences": "Preferințe",
"player": "Player"
},
"player": {
"watch_on": "Vezi pe {0}"
}
}

View File

@ -10,7 +10,9 @@
"playlists": "Плейлисты",
"account": "Аккаунт",
"player": "Плеер",
"instance": "Сервер"
"instance": "Сервер",
"livestreams": "Прямые трансляции",
"channels": "Каналы"
},
"player": {
"watch_on": "Смотреть на {0}"
@ -103,7 +105,7 @@
"time_code": "Тайм-код (в секундах)",
"reset_preferences": "Сбросить настройки",
"confirm_reset_preferences": "Вы уверены, что хотите сбросить настройки?",
"backup_preferences": "Настройки бэкапов",
"backup_preferences": "Бэкап настроек",
"restore_preferences": "Восстановить настройки",
"back_to_home": "Вернутся на главную",
"store_search_history": "Хранить историю поиска",
@ -114,7 +116,10 @@
"instance_donations": "Пожертвования сервера",
"reply_count": "{count} ответов",
"minimize_comments_default": "Сворачивать комментарии по умолчанию",
"minimize_comments": "Свернуть комментарии"
"minimize_comments": "Свернуть комментарии",
"show_watch_on_youtube": "Показать кнопку Смотреть на YouTube",
"minimize_chapters_default": "Скрывать главы по умолчанию",
"no_valid_playlists": "Файл не содержит действительных списков воспроизведения!"
},
"comment": {
"pinned_by": "Прикреплено пользователем {author}",
@ -163,6 +168,7 @@
"preferences_note": "Примечание: настройки сохранены в локальном хранилище браузера. При удалении данных браузера они будут удалены.",
"copied": "Скопировано!",
"cannot_copy": "Не получилось скопировать!",
"page_not_found": "Страница не найдена"
"page_not_found": "Страница не найдена",
"local_storage": "Это действие требует локального хранилища (localStorage), разрешены ли файлы cookie?"
}
}

View File

@ -108,7 +108,9 @@
"new_playlist_name": "Ново име плејлисте",
"minimize_comments_default": "Подразумевано умањи коментаре",
"minimize_comments": "Умањи коментаре",
"reply_count": "{count} одговора"
"reply_count": "{count} одговора",
"minimize_chapters_default": "Умањи поглавља подразумевано",
"show_watch_on_youtube": "Прикажи сат на Јутјуб дугмету"
},
"preferences": {
"instance_locations": "Локација инстанце",
@ -145,7 +147,9 @@
"playlists": "Пописи Снимака",
"account": "Рачун",
"instance": "Инстанца",
"player": "Плејер"
"player": "Плејер",
"livestreams": "Уживо преноси",
"channels": "Канали"
},
"comment": {
"pinned_by": "Закачено од {author}",
@ -163,6 +167,7 @@
"page_not_found": "Страница није пронађена",
"copied": "Копирано!",
"cannot_copy": "Није могуће копирати!",
"preferences_note": "Напомена: подешавања се чувају у локалној меморији вашег претраживача. Брисање података прегледача ће их ресетовати."
"preferences_note": "Напомена: подешавања се чувају у локалној меморији вашег претраживача. Брисање података прегледача ће их ресетовати.",
"local_storage": "Ова радња захтева локално складиште, да ли су колачићи омогућени ?"
}
}

View File

@ -7,7 +7,7 @@
"show_comments": "Yorumları Göster",
"default_homepage": "Öntanımlı Ana Sayfa",
"country_selection": "Ülke Seçimi",
"buffering_goal": "Arabelleğe Alma Hedefi (saniye cinsinden)",
"buffering_goal": "Arabelleğe Alma Hedefi (Saniye Cinsinden)",
"default_quality": "Öntanımlı Kalite",
"audio_only": "Yalnızca Ses",
"autoplay_video": "Videoyu Otomatik Oynat",
@ -31,17 +31,17 @@
"most_recent": "En Yeni",
"sort_by": "Sıralama ölçütü:",
"view_subscriptions": "Abonelikleri Görüntüle",
"unsubscribe": "Abonelikten çık - {count}",
"subscribe": "Abone ol - {count}",
"unsubscribe": "Abonelikten Çık - {count}",
"subscribe": "Abone Ol - {count}",
"enabled_codecs": "Etkin Çözücüler (Birden Çok)",
"enable_lbry_proxy": "LBRY için Vekil Sunucuyu Etkinleştir",
"disable_lbry": "Akış için LBRY'yi Devre Dışı Bırak",
"show_description": "Açıklamayı Göster",
"minimize_description": "Açıklamayı Küçült",
"donations": "Geliştirme bışları",
"donations": "Geliştirme Bışları",
"auto_play_next_video": "Sonraki Videoyu Otomatik Oynat",
"loop_this_video": "Bu Videoyu Döngüye Al",
"import_from_json": "JSON/CSV dosyasından içe aktar",
"import_from_json": "JSON/CSV Dosyasından İçe Aktar",
"export_to_json": "JSON Olarak Dışa Aktar",
"no": "Hayır",
"yes": "Evet",
@ -60,67 +60,72 @@
"skip_filler_tangent": "Doldurma Sahnelerini Atla",
"delete_playlist_confirm": "Bu oynatma listesi silinsin mi?",
"delete_playlist_video_confirm": "Video oynatma listesinden kaldırılsın mı?",
"remove_from_playlist": "Oynatma listesinden kaldır",
"remove_from_playlist": "Oynatma Listesinden Kaldır",
"delete_playlist": "Oynatma Listesini Sil",
"add_to_playlist": "Oynatma listesine ekle",
"add_to_playlist": "Oynatma Listesine Ekle",
"create_playlist": "Oynatma Listesi Oluştur",
"select_playlist": "Oynatma Listesi Seç",
"please_select_playlist": "Lütfen bir oynatma listesi seçin",
"please_select_playlist": "Lütfen Bir Oynatma Listesi Seçin",
"show_markers": "Oynatıcıda İşaretçileri Göster",
"delete_account": "Hesabı Sil",
"logout": "Bu aygıttan oturumu kapat",
"logout": "Bu Aygıttan Oturumu Kapat",
"minimize_recommendations_default": "Önerileri Öntanımlı Olarak Küçült",
"different_auth_instance": "Kimlik doğrulama için farklı bir örnek kullan",
"invalidate_session": "Tüm aygıtlardan oturumu kapat",
"different_auth_instance": "Kimlik Doğrulama İçin Farklı Bir Örnek Kullan",
"invalidate_session": "Tüm Aygıtlardan Oturumu Kapat",
"instance_auth_selection": "Kimlik Doğrulama Örneği Seçimi",
"clone_playlist": "Oynatma Listesini Kopyala",
"clone_playlist_success": "Başarıyla kopyalandı!",
"download_as_txt": ".txt olarak indir",
"reset_preferences": "Tercihleri sıfırla",
"download_as_txt": ".txt Olarak İndir",
"reset_preferences": "Tercihleri Sıfırla",
"confirm_reset_preferences": "Tercihlerinizi sıfırlamak istediğinize emin misiniz?",
"backup_preferences": "Tercihleri yedekle",
"restore_preferences": "Tercihleri geri yükle",
"back_to_home": "Ana sayfaya dön",
"follow_link": "Bağlantıyı takip et",
"copy_link": "Bağlantıyı kopyala",
"time_code": "Zaman kodu (saniye cinsinden)",
"with_timecode": "Zaman koduyla paylaş",
"piped_link": "Piped bağlantısı",
"backup_preferences": "Tercihleri Yedekle",
"restore_preferences": "Tercihleri Geri Yükle",
"back_to_home": "Ana Sayfaya Dön",
"follow_link": "Bağlantıyı Takip Et",
"copy_link": "Bağlantıyı Kopyala",
"time_code": "Zaman Kodu (Saniye Cinsinden)",
"with_timecode": "Zaman Koduyla Paylaş",
"piped_link": "Piped Bağlantısı",
"share": "Paylaş",
"rename_playlist": "Oynatma listesini yeniden adlandır",
"new_playlist_name": "Yeni oynatma listesi adı",
"rename_playlist": "Oynatma Listesini Yeniden Adlandır",
"new_playlist_name": "Yeni Oynatma Listesi Adı",
"show_chapters": "Bölümler",
"store_search_history": "Arama geçmişini sakla",
"hide_watched": "Akışta izlenen videoları gizle",
"source_code": "Kaynak kodu",
"store_search_history": "Arama Geçmişini Sakla",
"hide_watched": "Akışta İzlenen Videoları Gizle",
"source_code": "Kaynak Kodu",
"documentation": "Belgelendirme",
"instance_donations": "Örnek bışları",
"instance_donations": "Örnek Bışları",
"status_page": "Durum",
"reply_count": "{count} yanıt",
"reply_count": "{count} Yanıt",
"minimize_comments": "Yorumları Küçült",
"minimize_comments_default": "Yorumları Öntanımlı Olarak Küçült"
"minimize_comments_default": "Yorumları Öntanımlı Olarak Küçült",
"show_watch_on_youtube": "YouTube'da İzle Düğmesini Göster",
"minimize_chapters_default": "Bölümleri Öntanımlı Olarak Küçült",
"no_valid_playlists": "Dosya geçerli oynatma listeleri içermiyor!"
},
"player": {
"watch_on": "{0} üzerinde izle"
"watch_on": "{0} Üzerinde İzle"
},
"titles": {
"history": "Geçmiş",
"preferences": "Tercihler",
"feed": "Akış",
"register": "Kaydol",
"register": "Kayıt Ol",
"login": "Oturum Aç",
"trending": "Öne Çıkanlar",
"subscriptions": "Abonelikler",
"playlists": "Oynatma Listeleri",
"account": "Hesap",
"instance": "Örnek",
"player": "Oynatıcı"
"player": "Oynatıcı",
"livestreams": "Canlı Yayınlar",
"channels": "Kanallar"
},
"video": {
"sponsor_segments": "Sponsorlar Bölümleri",
"watched": "İzlendi",
"views": "{views} izlenme",
"videos": "Videolar",
"views": "{views} İzlenme",
"videos": "Video",
"ratings_disabled": "Derecelendirmeler Devre Dışı",
"chapters": "Bölümler",
"live": "{0} Canlı",
@ -133,17 +138,17 @@
"instance_name": "Örnek Adı",
"registered_users": "Kayıtlı Kullanıcılar",
"version": "Sürüm",
"up_to_date": "Güncel mi?"
"up_to_date": "Güncel Mi?"
},
"comment": {
"pinned_by": "Şunun tarafından sabitlendi {author}",
"pinned_by": "Şunun Tarafından Sabitlendi {author}",
"loading": "Yorumlar yükleniyor...",
"user_disabled": "Yorumlar ayarlarda devre dışı bırakıldı.",
"disabled": "Yorumlar yükleyen tarafından devre dışı bırakıldı."
},
"login": {
"password": "Parola",
"username": "Kullanıcı adı"
"username": "Kullanıcı Adı"
},
"search": {
"did_you_mean": "Bunu mu demek istediniz: {0}?",
@ -157,15 +162,16 @@
"music_albums": "YT Müzik: Albümler"
},
"subscriptions": {
"subscribed_channels_count": "Abone olunan: {0}"
"subscribed_channels_count": "Abone Olunan: {0}"
},
"information": {
"preferences_note": "Not: Tercihler tarayıcınızın yerel depolama alanına kaydedilir. Tarayıcı verilerinizi silmek onları sıfırlayacaktır."
},
"info": {
"preferences_note": "Not: Tercihler tarayıcınızın yerel depolama alanına kaydedilir. Tarayıcı verilerinizi silmek onları sıfırlayacaktır.",
"page_not_found": "Sayfa bulunamadı",
"page_not_found": "Sayfa Bulunamadı",
"copied": "Kopyalandı!",
"cannot_copy": "Kopyalanamıyor!"
"cannot_copy": "Kopyalanamıyor!",
"local_storage": "Bu eylem yerel depolama gerektirir, çerezler etkin mi?"
}
}

View File

@ -56,7 +56,7 @@
"import_from_json": "Імпорт з JSON/CSV",
"loop_this_video": "Повтор поточного відео",
"auto_play_next_video": "Одразу програвати наступне рекомендоване відео",
"donations": "Пожертвування",
"donations": "Пожертвування на розробку",
"show_description": "Показати опис",
"disable_lbry": "Вимкнути LBRY для стримінгу",
"filter": "Фільтр",
@ -67,12 +67,48 @@
"remove_from_playlist": "Видалити з плейлісту",
"add_to_playlist": "Додати до плейлісту",
"create_playlist": "Створити Плейліст",
"delete_playlist_confirm": "Чи ви певні що хочете видалити цей плейліст?",
"delete_playlist_confirm": "Видалити цей плейлист?",
"skip_filler_tangent": "Пропускати Нерелевантне",
"delete_playlist_video_confirm": "Чи певні ви що хочете видалити це відео з плейлісту?",
"delete_playlist_video_confirm": "Видалити відео з плейлисту?",
"delete_playlist": "Видалити Плейліст",
"select_playlist": "Вибрати Плейліст",
"please_select_playlist": "Будь ласка виберіть плейліст"
"please_select_playlist": "Будь ласка виберіть плейліст",
"confirm_reset_preferences": "Ви впевнені, що бажаєте скинути налаштування?",
"show_markers": "Показувати Маркери на Програвачі",
"minimize_recommendations_default": "Ховати Рекомендації за замовчуванням",
"logout": "Вийти з цього пристрою",
"backup_preferences": "Налаштування резервних копій",
"download_as_txt": "Завантажити як .txt",
"rename_playlist": "Перейменувати плейлист",
"show_chapters": "Глави",
"invalidate_session": "Вийти зі всіх пристроїв",
"clone_playlist": "Клонувати Плейлист",
"reset_preferences": "Скинути налаштування",
"back_to_home": "Повернутися на головну",
"share": "Поділитися",
"with_timecode": "Поділитися з відміткою часу",
"piped_link": "Покликання Piped",
"follow_link": "Покликання підписки",
"instance_donations": "Пожертвування інстанції",
"copy_link": "Копіювати покликання",
"store_search_history": "Зберігати історію Пошуку",
"documentation": "Документація",
"instance_auth_selection": "Вибір Інстанції для Аутентифікації",
"minimize_chapters_default": "Ховати глави за замовчуванням",
"show_watch_on_youtube": "Показати кнопку Дивитися на YouTube",
"restore_preferences": "Відновити налаштування",
"different_auth_instance": "Використовувати іншу інстанцію для аутентифікації",
"clone_playlist_success": "Клонування пройшло успішно!",
"hide_watched": "Сховати переглянуті відео в стрічці",
"status_page": "Статус",
"source_code": "Вихідний код",
"new_playlist_name": "Нова назва плейлиста",
"time_code": "Відмітка часу (в секундах)",
"reply_count": "{count} відповідей",
"minimize_comments_default": "Згортати коментарі за замовчуванням",
"minimize_comments": "Згорнути коментарі",
"delete_account": "Видалити Акаунт",
"no_valid_playlists": "Файл не містить дійсних плейлистів!"
},
"titles": {
"register": "Реєстрація",
@ -82,10 +118,18 @@
"subscriptions": "Канали, на які ви підписані",
"trending": "Тренди",
"login": "Логін",
"playlists": "Плейлісти"
"playlists": "Плейлісти",
"instance": "Інстанція",
"player": "Програвач",
"account": "Акаунт",
"livestreams": "Наживо",
"channels": "Канали"
},
"comment": {
"pinned_by": "Прикріплено користувачем {author}"
"pinned_by": "Прикріплено користувачем {author}",
"loading": "Завантаження коментарів...",
"disabled": "Коментарі вимкнені автором.",
"user_disabled": "Коментарі вимкнені в налаштуваннях."
},
"preferences": {
"instance_locations": "Місцезнаходження копії сервісу",
@ -93,7 +137,7 @@
"instance_name": "Назва копії сервісу",
"has_cdn": "Використовує CDN?",
"version": "Версія",
"up_to_date": "Версія Актуальна?",
"up_to_date": "Версія актуальна?",
"registered_users": "Зареєстровано Користувачей"
},
"video": {
@ -103,7 +147,8 @@
"sponsor_segments": "Рекламні сегменти",
"ratings_disabled": "Оцінки вимкнені",
"chapters": "Розділи",
"live": "{0} Наживо"
"live": "{0} Наживо",
"shorts": "Shorts"
},
"search": {
"did_you_mean": "Можливо, ви мали на увазі: {0}?",
@ -115,5 +160,15 @@
"music_videos": "TY Music: Відео",
"playlists": "YouTube: Плейлісти",
"music_albums": "YT Music: Альбоми"
},
"subscriptions": {
"subscribed_channels_count": "Підписано на: {0}"
},
"info": {
"copied": "Скопійовано!",
"cannot_copy": "Не вийшло скопіювати!",
"page_not_found": "Сторінка не знайдена",
"preferences_note": "Зауваження: налаштування зберігаються в локальному сховищі вашого браузера. Видалення даних браузере їх скине.",
"local_storage": "Ця дія потребує localStorage, чи ввімкнуті файли cookie?"
}
}

View File

@ -57,16 +57,30 @@
"yes": "Có",
"enabled_codecs": "Mã hóa được kích hoạt (Nhiều)",
"export_to_json": "Xuất định dạng JSON",
"no": "Không"
"no": "Không",
"remove_from_playlist": "Xóa khỏi danh sách phát",
"add_to_playlist": "Thêm vào danh sách phát",
"delete_playlist_video_confirm": "Bạn có chắc là muốn xóa video khỏi danh sách phát này không?",
"delete_playlist_confirm": "Bạn có chắc là bạn muốn xóa danh sách phát này không?",
"create_playlist": "Tạo danh sách phát",
"delete_playlist": "Xóa danh sách phát",
"select_playlist": "Chọn một danh sách phát",
"please_select_playlist": "Hãy chọn một danh sách phát",
"copy_link": "Sao chép liên kết",
"source_code": "Mã nguồn",
"piped_link": "Liên kết Piped"
},
"titles": {
"register": "Đăng ký",
"preferences": "Sở thích",
"preferences": "Cài đặt",
"history": "Lịch sử",
"subscriptions": "Đăng ký",
"trending": "Xu hướng",
"login": "Đăng nhập",
"feed": "Mới nhất"
"feed": "Mới nhất",
"playlists": "Danh sách phát",
"account": "Tài khoản",
"channels": "Kênh"
},
"player": {
"watch_on": "Xem trên {0}"
@ -106,5 +120,8 @@
"videos": "YouTube: Video",
"music_videos": "YT Music: Video",
"music_albums": "YT Music: Album"
},
"info": {
"copied": "Đã sao chép!"
}
}

View File

@ -98,7 +98,10 @@
"documentation": "文档",
"reply_count": "{count} 条回复",
"minimize_comments": "最小化评论",
"minimize_comments_default": "默认最小化评论"
"minimize_comments_default": "默认最小化评论",
"show_watch_on_youtube": "显示“在 YouTube 上观看”按钮",
"minimize_chapters_default": "默认最小化章节",
"no_valid_playlists": "此文件不含无效的播放列表!"
},
"video": {
"sponsor_segments": "赞助商部分",
@ -139,7 +142,9 @@
"playlists": "播放列表",
"account": "账户",
"instance": "实例",
"player": "播放器"
"player": "播放器",
"livestreams": "直播",
"channels": "频道"
},
"login": {
"password": "密码",
@ -166,6 +171,7 @@
"preferences_note": "注意:首选项保存在浏览器的本地存储中。删除浏览器数据会重置它们。",
"page_not_found": "未找到页面",
"copied": "已复制!",
"cannot_copy": "无法复制!"
"cannot_copy": "无法复制!",
"local_storage": "此操作需要 localStorage启用 cookie 了吗?"
}
}

View File

@ -21,7 +21,7 @@ import {
faServer,
faDonate,
} from "@fortawesome/free-solid-svg-icons";
import { faGithub, faBitcoin } from "@fortawesome/free-brands-svg-icons";
import { faGithub, faBitcoin, faYoutube } from "@fortawesome/free-brands-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
library.add(
faEye,
@ -31,6 +31,7 @@ library.add(
faCheck,
faHeart,
faHeadphones,
faYoutube,
faRss,
faChevronLeft,
faLevelDownAlt,
@ -95,7 +96,17 @@ const mixin = {
return str;
},
numberFormat(num) {
const formatter = Intl.NumberFormat(undefined, { notation: "compact" });
var loc = `${this.getPreferenceString("hl")}-${this.getPreferenceString("region")}`;
try {
Intl.getCanonicalLocales(loc);
} catch {
loc = undefined;
}
const formatter = Intl.NumberFormat(loc, {
notation: "compact",
});
return formatter.format(num);
},
addCommas(num) {
@ -114,8 +125,12 @@ const mixin = {
purifyHTML(original) {
return DOMPurify.sanitize(original);
},
setPreference(key, value) {
if (localStorage) localStorage.setItem(key, value);
setPreference(key, value, disableAlert = false) {
try {
localStorage.setItem(key, value);
} catch {
if (!disableAlert) alert(this.$t("info.local_storage"));
}
},
getPreferenceBoolean(key, defaultVal) {
var value;
@ -200,7 +215,11 @@ const mixin = {
}
},
getLocalSubscriptions() {
return JSON.parse(localStorage.getItem("localSubscriptions"));
try {
return JSON.parse(localStorage.getItem("localSubscriptions"));
} catch {
return [];
}
},
isSubscribedLocally(channelId) {
const localSubscriptions = this.getLocalSubscriptions();
@ -214,7 +233,13 @@ const mixin = {
else localSubscriptions.push(channelId);
// Sort for better cache hits
localSubscriptions.sort();
localStorage.setItem("localSubscriptions", JSON.stringify(localSubscriptions));
try {
localStorage.setItem("localSubscriptions", JSON.stringify(localSubscriptions));
return true;
} catch {
alert(this.$t("info.local_storage"));
}
return false;
},
getUnauthenticatedChannels() {
const localSubscriptions = this.getLocalSubscriptions() ?? [];
@ -244,7 +269,7 @@ const mixin = {
return false;
}
},
async defaultLangage() {
async defaultLanguage() {
const languages = window.navigator.languages;
for (let i = 0; i < languages.length; i++) {
try {

View File

@ -58,6 +58,7 @@
{ "code": "GY", "name": "Guyana" },
{ "code": "HT", "name": "Haiti" },
{ "code": "HN", "name": "Honduras" },
{ "code": "HK", "name": "Hongkong" },
{ "code": "IN", "name": "Indien" },
{ "code": "ID", "name": "Indonesien" },
{ "code": "IQ", "name": "Irak" },
@ -168,6 +169,7 @@
{ "code": "SR", "name": "Suriname" },
{ "code": "SY", "name": "Syrien" },
{ "code": "TJ", "name": "Tadschikistan" },
{ "code": "TW", "name": "Taiwan" },
{ "code": "TZ", "name": "Tansania" },
{ "code": "TH", "name": "Thailand" },
{ "code": "TG", "name": "Togo" },

View File

@ -176,6 +176,7 @@
{ "code": "TH", "name": "Ταϊλάνδη" },
{ "code": "TZ", "name": "Τανζανία" },
{ "code": "TJ", "name": "Τατζικιστάν" },
{ "code": "TW", "name": "Ταϊβάν" },
{ "code": "JM", "name": "Τζαμάικα" },
{ "code": "DJ", "name": "Τζιμπουτί" },
{ "code": "TO", "name": "Τόγκα" },
@ -191,5 +192,6 @@
{ "code": "PH", "name": "Φιλιππίνες" },
{ "code": "FI", "name": "Φινλανδία" },
{ "code": "FJ", "name": "Φίτζι" },
{ "code": "CL", "name": "Χιλή" }
{ "code": "CL", "name": "Χιλή" },
{ "code": "HK", "name": "Χονγκ Κονγκ" }
]

View File

@ -73,6 +73,7 @@
{ "code": "GY", "name": "Guyana" },
{ "code": "HT", "name": "Haiti" },
{ "code": "HN", "name": "Honduras" },
{ "code": "HK", "name": "Hong Kong" },
{ "code": "HU", "name": "Hungary" },
{ "code": "IS", "name": "Iceland" },
{ "code": "IN", "name": "India" },
@ -168,6 +169,7 @@
{ "code": "SE", "name": "Sweden" },
{ "code": "CH", "name": "Switzerland" },
{ "code": "SY", "name": "Syrian Arab Republic" },
{ "code": "TW", "name": "Taiwan" },
{ "code": "TJ", "name": "Tajikistan" },
{ "code": "TZ", "name": "Tanzania, United Republic of" },
{ "code": "TH", "name": "Thailand" },

View File

@ -76,6 +76,7 @@
{ "code": "GY", "name": "Guyana" },
{ "code": "HT", "name": "Haití" },
{ "code": "HN", "name": "Honduras" },
{ "code": "HK", "name": "Hong Kong" },
{ "code": "HU", "name": "Hungría" },
{ "code": "IN", "name": "India" },
{ "code": "ID", "name": "Indonesia" },
@ -171,6 +172,7 @@
{ "code": "CH", "name": "Suiza" },
{ "code": "SR", "name": "Surinam" },
{ "code": "TH", "name": "Tailandia" },
{ "code": "TW", "name": "Taiwán" },
{ "code": "TZ", "name": "Tanzania" },
{ "code": "TJ", "name": "Tayikistán" },
{ "code": "TL", "name": "Timor Oriental" },

View File

@ -77,6 +77,7 @@
{ "code": "GY", "name": "Guyana" },
{ "code": "HT", "name": "Haïti" },
{ "code": "HN", "name": "Honduras" },
{ "code": "HK", "name": "Hong Kong" },
{ "code": "HU", "name": "Hongrie" },
{ "code": "IN", "name": "Inde" },
{ "code": "ID", "name": "Indonésie" },
@ -173,6 +174,7 @@
{ "code": "SY", "name": "Syrie" },
{ "code": "TJ", "name": "Tadjikistan" },
{ "code": "TZ", "name": "Tanzanie" },
{ "code": "TW", "name": "Taïwan" },
{ "code": "TD", "name": "Tchad" },
{ "code": "CZ", "name": "Tchéquie" },
{ "code": "TH", "name": "Thaïlande" },

View File

@ -76,6 +76,7 @@
{ "code": "GY", "name": "Guyana" },
{ "code": "HT", "name": "Haiti" },
{ "code": "HN", "name": "Honduras" },
{ "code": "HK", "name": "Hong Kong" },
{ "code": "IN", "name": "India" },
{ "code": "ID", "name": "Indonesia" },
{ "code": "IR", "name": "Iran" },
@ -171,6 +172,7 @@
{ "code": "CH", "name": "Svizzera" },
{ "code": "SZ", "name": "eSwatini" },
{ "code": "TJ", "name": "Tagikistan" },
{ "code": "TW", "name": "Taiwan" },
{ "code": "TZ", "name": "Tanzania" },
{ "code": "TH", "name": "Thailandia" },
{ "code": "TL", "name": "Timor Est" },

View File

@ -54,6 +54,7 @@
{ "code": "GY", "name": "Gajana" },
{ "code": "HT", "name": "Haitis" },
{ "code": "HN", "name": "Hondūras" },
{ "code": "HK", "name": "Honkongas" },
{ "code": "HU", "name": "Vengrija" },
{ "code": "IS", "name": "Islandija" },
{ "code": "IN", "name": "Indija" },
@ -169,6 +170,7 @@
{ "code": "TJ", "name": "Tadžikija" },
{ "code": "TZ", "name": "Tanzanija" },
{ "code": "TH", "name": "Tailandas" },
{ "code": "TW", "name": "Taivanas" },
{ "code": "TL", "name": "Rytų Timoras" },
{ "code": "TG", "name": "Togas" },
{ "code": "TO", "name": "Tonga" },

View File

@ -65,6 +65,7 @@
{ "code": "ES", "name": "Hiszpania" },
{ "code": "NL", "name": "Holandia" },
{ "code": "HN", "name": "Honduras" },
{ "code": "HK", "name": "Hongkong" },
{ "code": "IN", "name": "Indie" },
{ "code": "ID", "name": "Indonezja" },
{ "code": "IQ", "name": "Irak" },
@ -166,6 +167,7 @@
{ "code": "SE", "name": "Szwecja" },
{ "code": "TJ", "name": "Tadżykistan" },
{ "code": "TH", "name": "Tajlandia" },
{ "code": "TW", "name": "Tajwan" },
{ "code": "TZ", "name": "Tanzania" },
{ "code": "TL", "name": "Timor Wschodni" },
{ "code": "TG", "name": "Togo" },

View File

@ -58,6 +58,7 @@
{ "code": "HT", "name": "Haiti" },
{ "code": "NL", "name": "Holandsko" },
{ "code": "HN", "name": "Honduras" },
{ "code": "HK", "name": "Hongkong" },
{ "code": "HR", "name": "Chorvátsko" },
{ "code": "IN", "name": "India" },
{ "code": "ID", "name": "Indonézia" },
@ -172,6 +173,7 @@
{ "code": "CH", "name": "Švajčiarsko" },
{ "code": "SE", "name": "Švédsko" },
{ "code": "TJ", "name": "Tadžikistan" },
{ "code": "TW", "name": "Taiwan" },
{ "code": "IT", "name": "Taliansko" },
{ "code": "TZ", "name": "Tanzánia" },
{ "code": "TH", "name": "Thajsko" },

View File

@ -73,6 +73,7 @@
{ "code": "GY", "name": "Гајана" },
{ "code": "HT", "name": "Хаити" },
{ "code": "HN", "name": "Хондурас" },
{ "code": "HK", "name": "Хонгконг" },
{ "code": "HU", "name": "Мађарска" },
{ "code": "IS", "name": "Исланд" },
{ "code": "IN", "name": "Индија" },
@ -170,6 +171,7 @@
{ "code": "SY", "name": "Сиријска Арапска Република" },
{ "code": "TJ", "name": "Таџикистан" },
{ "code": "TZ", "name": "Танзанија" },
{ "code": "TW", "name": "Тајван" },
{ "code": "TH", "name": "Тајланд" },
{ "code": "TL", "name": "Тимор-Лесте" },
{ "code": "TG", "name": "Того" },

View File

@ -73,6 +73,7 @@
{ "code": "GY", "name": "蓋亞那" },
{ "code": "HT", "name": "海地" },
{ "code": "HN", "name": "宏都拉斯" },
{ "code": "HK", "name": "香港" },
{ "code": "HU", "name": "匈牙利" },
{ "code": "IS", "name": "冰島" },
{ "code": "IN", "name": "印度" },
@ -179,6 +180,7 @@
{ "code": "TR", "name": "土耳其" },
{ "code": "TM", "name": "土庫曼" },
{ "code": "TV", "name": "吐瓦魯" },
{ "code": "TW", "name": "台灣" },
{ "code": "UG", "name": "烏干達" },
{ "code": "UA", "name": "烏克蘭" },
{ "code": "AE", "name": "阿聯" },

View File

@ -42,55 +42,69 @@ const DashUtils = {
},
generate_adaptation_set(VideoFormatArray) {
const adaptationSets = [];
const mimeTypes = [];
const mimeObjects = [[]];
// sort the formats by mime types
let mimeAudioObjs = [];
VideoFormatArray.forEach(videoFormat => {
// the dual formats should not be used
if (videoFormat.mimeType.indexOf("video") != -1 && !videoFormat.videoOnly) {
return;
}
// if these properties are not available, then we skip it because we cannot set these properties
//if (!(videoFormat.hasOwnProperty('initRange') && videoFormat.hasOwnProperty('indexRange'))) {
// return
//}
const audioTrackId = videoFormat.audioTrackId;
const mimeType = videoFormat.mimeType;
const mimeTypeIndex = mimeTypes.indexOf(mimeType);
if (mimeTypeIndex > -1) {
mimeObjects[mimeTypeIndex].push(videoFormat);
} else {
mimeTypes.push(mimeType);
mimeObjects.push([]);
mimeObjects[mimeTypes.length - 1].push(videoFormat);
for (let i = 0; i < mimeAudioObjs.length; i++) {
const mimeAudioObj = mimeAudioObjs[i];
if (mimeAudioObj.audioTrackId == audioTrackId && mimeAudioObj.mimeType == mimeType) {
mimeAudioObj.videoFormats.push(videoFormat);
return;
}
}
mimeAudioObjs.push({
audioTrackId,
mimeType,
videoFormats: [videoFormat],
});
});
// for each MimeType generate a new Adaptation set with Representations as sub elements
for (let i = 0; i < mimeTypes.length; i++) {
let isVideoFormat = false;
mimeAudioObjs.forEach(mimeAudioObj => {
const adapSet = {
type: "element",
name: "AdaptationSet",
attributes: {
id: i,
mimeType: mimeTypes[i],
id: mimeAudioObj.audioTrackId,
lang: mimeAudioObj.audioTrackId?.substr(0, 2),
mimeType: mimeAudioObj.mimeType,
startWithSAP: "1",
subsegmentAlignment: "true",
},
elements: [],
};
if (!mimeTypes[i].includes("audio")) {
adapSet.attributes.scanType = "progressive";
let isVideoFormat = false;
if (mimeAudioObj.mimeType.includes("video")) {
isVideoFormat = true;
}
mimeObjects[i].forEach(format => {
if (isVideoFormat) {
adapSet.attributes.scanType = "progressive";
}
for (var i = 0; i < mimeAudioObj.videoFormats.length; i++) {
const videoFormat = mimeAudioObj.videoFormats[i];
if (isVideoFormat) {
adapSet.elements.push(this.generate_representation_video(format));
adapSet.elements.push(this.generate_representation_video(videoFormat));
} else {
adapSet.elements.push(this.generate_representation_audio(format));
adapSet.elements.push(this.generate_representation_audio(videoFormat));
}
});
}
adaptationSets.push(adapSet);
}
});
return adaptationSets;
},
generate_representation_audio(Format) {

12
vercel.json Normal file
View File

@ -0,0 +1,12 @@
{
"github": {
"silent": true
},
"routes": [
{
"src": "/[^.]+",
"dest": "/",
"status": 200
}
]
}

658
yarn.lock
View File

@ -892,10 +892,10 @@
dependencies:
regenerator-runtime "^0.13.4"
"@babel/standalone@^7.19.6":
version "7.19.6"
resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.19.6.tgz#88674a287d3875a635b62afb066ebf162cedf13c"
integrity sha512-SUOBMtHlxGpXf14X85c1vtHyxYgIODBUdclntETSEGkgI274MNPBUkOVWpvFmRhMuLokK3CL07qJoK2e5CIToA==
"@babel/standalone@^7.20.6":
version "7.20.6"
resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.20.6.tgz#7deb7ad244176414c3cbde020aad0607afdbe2fe"
integrity sha512-u5at/CbBLETf7kx2LOY4XdhseD79Y099WZKAOMXeT8qvd9OSR515my2UNBBLY4qIht/Qi9KySeQHQwQwxJN4Sw==
"@babel/template@^7.16.7":
version "7.16.7"
@ -955,36 +955,36 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
"@fortawesome/fontawesome-common-types@6.2.0":
version "6.2.0"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.0.tgz#76467a94aa888aeb22aafa43eb6ff889df3a5a7f"
integrity sha512-rBevIsj2nclStJ7AxTdfsa3ovHb1H+qApwrxcTVo+NNdeJiB9V75hsKfrkG5AwNcRUNxrPPiScGYCNmLMoh8pg==
"@fortawesome/fontawesome-common-types@6.2.1":
version "6.2.1"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.1.tgz#411e02a820744d3f7e0d8d9df9d82b471beaa073"
integrity sha512-Sz07mnQrTekFWLz5BMjOzHl/+NooTdW8F8kDQxjWwbpOJcnoSg4vUDng8d/WR1wOxM0O+CY9Zw0nR054riNYtQ==
"@fortawesome/fontawesome-svg-core@6.2.0":
version "6.2.0"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.0.tgz#11856eaf4dd1d865c442ddea1eed8ee855186ba2"
integrity sha512-Cf2mAAeMWFMzpLC7Y9H1I4o3wEU+XovVJhTiNG8ZNgSQj53yl7OCJaS80K4YjrABWZzbAHVaoHE1dVJ27AAYXw==
"@fortawesome/fontawesome-svg-core@6.2.1":
version "6.2.1"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.1.tgz#e87e905e444b5e7b715af09b64d27b53d4c8f9d9"
integrity sha512-HELwwbCz6C1XEcjzyT1Jugmz2NNklMrSPjZOWMlc+ZsHIVk+XOvOXLGGQtFBwSyqfJDNgRq4xBCwWOaZ/d9DEA==
dependencies:
"@fortawesome/fontawesome-common-types" "6.2.0"
"@fortawesome/fontawesome-common-types" "6.2.1"
"@fortawesome/free-brands-svg-icons@6.2.0":
version "6.2.0"
resolved "https://registry.yarnpkg.com/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.2.0.tgz#ce072179677f9b5d6767f918cfbf296f357cc1d0"
integrity sha512-fm1y4NyZ2qKYNmYhdMz9VAWRw1Et7PMHNunSw3W0SVAwKwv6o0qiJworLH3Y9SnmhHzAymXJwCX1op22FFvGiA==
"@fortawesome/free-brands-svg-icons@6.2.1":
version "6.2.1"
resolved "https://registry.yarnpkg.com/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.2.1.tgz#04a6d6f7898f7ef392aba7a65030a584d4f4c84f"
integrity sha512-L8l4MfdHPmZlJ72PvzdfwOwbwcCAL0vx48tJRnI6u1PJXh+j2f3yDoKyQgO3qjEsgD5Fr2tQV/cPP8F/k6aUig==
dependencies:
"@fortawesome/fontawesome-common-types" "6.2.0"
"@fortawesome/fontawesome-common-types" "6.2.1"
"@fortawesome/free-solid-svg-icons@6.2.0":
version "6.2.0"
resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.2.0.tgz#8dcde48109354fd7a5ece8ea48d678bb91d4b5f0"
integrity sha512-UjCILHIQ4I8cN46EiQn0CZL/h8AwCGgR//1c4R96Q5viSRwuKVo0NdQEc4bm+69ZwC0dUvjbDqAHF1RR5FA3XA==
"@fortawesome/free-solid-svg-icons@6.2.1":
version "6.2.1"
resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.2.1.tgz#2290ea5adcf1537cbd0c43de6feb38af02141d27"
integrity sha512-oKuqrP5jbfEPJWTij4sM+/RvgX+RMFwx3QZCZcK9PrBDgxC35zuc7AOFsyMjMd/PIFPeB2JxyqDr5zs/DZFPPw==
dependencies:
"@fortawesome/fontawesome-common-types" "6.2.0"
"@fortawesome/fontawesome-common-types" "6.2.1"
"@fortawesome/vue-fontawesome@3.0.1":
version "3.0.1"
resolved "https://registry.yarnpkg.com/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.1.tgz#ced35cefc52b364f7db973f2fe9f50c3dd160715"
integrity sha512-CdXZJoCS+aEPec26ZP7hWWU3SaJlQPZSCGdgpQ2qGl2HUmtUUNrI3zC4XWdn1JUmh3t5OuDeRG1qB4eGRNSD4A==
"@fortawesome/vue-fontawesome@3.0.2":
version "3.0.2"
resolved "https://registry.yarnpkg.com/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.2.tgz#1b2ec546caab790c38d3dcb38407485a70703dd2"
integrity sha512-xHVtVY8ASUeEvgcA/7vULUesENhD+pi/EirRHdMBqooHlXBqK+yrV6d8tUye1m5UKQKVgYAHMhUBfOnoiwvc8Q==
"@humanwhocodes/config-array@^0.11.6":
version "0.11.6"
@ -1005,10 +1005,10 @@
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
"@iconify/json@2.1.132":
version "2.1.132"
resolved "https://registry.yarnpkg.com/@iconify/json/-/json-2.1.132.tgz#a78f23fb871164580a48cb99930babe6b90977d7"
integrity sha512-b2ddD44ufErLm18Aku0WNxKzFz1Rvtcb4rOoBtzOyQcttZUawQvE8e/wBHMLhaMRlEn0p4YlVOl6jjj0xmDYJg==
"@iconify/json@2.1.153":
version "2.1.153"
resolved "https://registry.yarnpkg.com/@iconify/json/-/json-2.1.153.tgz#aaf4024766a607f579b2aaed99a4caf92595a997"
integrity sha512-9DSzK1DIbrbjDK+LV8PTF/pTM8wJOrmRETEvVP47na093F6LEvcOQnq7Ett51e/WW0mA32GIj7LpO9opyJ/gtQ==
dependencies:
"@iconify/types" "*"
pathe "^0.3.0"
@ -1018,10 +1018,10 @@
resolved "https://registry.yarnpkg.com/@iconify/types/-/types-2.0.0.tgz#ab0e9ea681d6c8a1214f30cd741fe3a20cc57f57"
integrity sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==
"@iconify/utils@^2.0.1":
version "2.0.1"
resolved "https://registry.yarnpkg.com/@iconify/utils/-/utils-2.0.1.tgz#bbd29368e0a269f29abc920e375ba84e23ec3a36"
integrity sha512-t8IyICk25wgZL4YKn/2kYfjG5MGA6EWZlaUJZ1OEIku4V+kX9V900T5E4HIqS3hLyD6/RJET0zY4vxO9pHLHHw==
"@iconify/utils@^2.0.2":
version "2.0.2"
resolved "https://registry.yarnpkg.com/@iconify/utils/-/utils-2.0.2.tgz#d3986021d691c66a5fe8d29ae5113e0a0e221d71"
integrity sha512-13B3wJxDLmSNBEIEpKleKSkJVQgdAy9ra3Xsu233i/5qD5yXBGhpOFxTB/k8cqme0xVsMKBPV5vbvq9MgQlX+w==
dependencies:
"@antfu/install-pkg" "^0.1.0"
"@antfu/utils" "^0.5.2"
@ -1139,7 +1139,7 @@
"@jridgewell/gen-mapping" "^0.3.0"
"@jridgewell/trace-mapping" "^0.3.9"
"@jridgewell/sourcemap-codec@^1.4.10":
"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13":
version "1.4.14"
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
@ -1214,6 +1214,14 @@
"@rollup/pluginutils" "^3.1.0"
magic-string "^0.25.7"
"@rollup/plugin-replace@^5.0.1":
version "5.0.1"
resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.1.tgz#49a57af3e6df111a9e75dea3f3572741f4c5c83e"
integrity sha512-Z3MfsJ4CK17BfGrZgvrcp/l6WXoKb0kokULO+zt/7bmcyayokDaQ2K3eDJcRLCTAlp5FPI4/gz9MHAsosz4Rag==
dependencies:
"@rollup/pluginutils" "^5.0.1"
magic-string "^0.26.4"
"@rollup/pluginutils@^3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b"
@ -1231,10 +1239,10 @@
estree-walker "^2.0.1"
picomatch "^2.2.2"
"@rollup/pluginutils@^5.0.1":
version "5.0.1"
resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.1.tgz#63def51f5a76dadd984689d33c7f000164152a97"
integrity sha512-4HaCVEXXuObvcPUaUlLt4faHYHCeQOOWNj8NKFGaRSrw3ZLD0TWeAFZicV9vXjnE2nkNuaVTfTuwAnjR+6uc9A==
"@rollup/pluginutils@^5.0.1", "@rollup/pluginutils@^5.0.2":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33"
integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==
dependencies:
"@types/estree" "^1.0.0"
estree-walker "^2.0.2"
@ -1295,227 +1303,227 @@
resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756"
integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==
"@unocss/astro@0.46.3":
version "0.46.3"
resolved "https://registry.yarnpkg.com/@unocss/astro/-/astro-0.46.3.tgz#94626e4afb53e581da9414df78afa33e67f45316"
integrity sha512-3Of0VLh5TVWc5MXzAF+Ik/9XBDkaaUcbxKquAI6hMSehtcnGOpmmNLZNjOaBdLuFDFP4RJGZ9Kkp/MuSLPuHDQ==
"@unocss/astro@0.47.6":
version "0.47.6"
resolved "https://registry.yarnpkg.com/@unocss/astro/-/astro-0.47.6.tgz#fa6a905e156c2f4adcf0c31d8392589ae0e366b9"
integrity sha512-8lR4KwuCeVxOTKk6g6hx6VUHhW1u+hki8oRsJaKEB0s5iUPmY6rCNtb/iaBJdceY11bZMMy5LZHJFTkod/T/zg==
dependencies:
"@unocss/core" "0.46.3"
"@unocss/reset" "0.46.3"
"@unocss/vite" "0.46.3"
"@unocss/core" "0.47.6"
"@unocss/reset" "0.47.6"
"@unocss/vite" "0.47.6"
"@unocss/cli@0.46.3":
version "0.46.3"
resolved "https://registry.yarnpkg.com/@unocss/cli/-/cli-0.46.3.tgz#69f29f4c2a666e77d16cba1d447a19fa42883673"
integrity sha512-sZju0nWDRMX4mNA5fryFj3EyC1vUruEsin6rpqKoW7khRCADV1edqsr7azIQRsDDfOAUld22BrJr1cBssKWn3Q==
"@unocss/cli@0.47.6":
version "0.47.6"
resolved "https://registry.yarnpkg.com/@unocss/cli/-/cli-0.47.6.tgz#d53b0d0a299e79fb999fcf64b272c8afc9dec391"
integrity sha512-Lwuzl6xK+67LUb4pCKlyrMv9cDuTvywhlSBiYzDj1Su+21IQVRxUagpo10b1WlLXWWQz4J3bOJZYE/e/QV2/HQ==
dependencies:
"@ampproject/remapping" "^2.2.0"
"@rollup/pluginutils" "^5.0.1"
"@unocss/config" "0.46.3"
"@unocss/core" "0.46.3"
"@unocss/preset-uno" "0.46.3"
"@rollup/pluginutils" "^5.0.2"
"@unocss/config" "0.47.6"
"@unocss/core" "0.47.6"
"@unocss/preset-uno" "0.47.6"
cac "^6.7.14"
chokidar "^3.5.3"
colorette "^2.0.19"
consola "^2.15.3"
fast-glob "^3.2.12"
magic-string "^0.26.7"
pathe "^0.3.9"
pathe "^1.0.0"
perfect-debounce "^0.1.3"
"@unocss/config@0.46.3":
version "0.46.3"
resolved "https://registry.yarnpkg.com/@unocss/config/-/config-0.46.3.tgz#64f5b528b0ca1af530a0ac33660f68e68786dbd7"
integrity sha512-eecCWGeKMGVa2by0Q8xDugQLWwpA1BYP3ZORx/LYJHUDhh3aGHgf5GA6EHc97ITg3p5dK3RZSZMZnxjy5aunpg==
"@unocss/config@0.47.6":
version "0.47.6"
resolved "https://registry.yarnpkg.com/@unocss/config/-/config-0.47.6.tgz#eb6848fc16db2f4139729d8ad93303c46f273aec"
integrity sha512-KycIrpKqPrTnrbNRLUgePuzfZUKk6afsKII6B53q9rVxxC1og4g7wCsvrn2D89lPipsJ6B9041VsdIhNqa8bFg==
dependencies:
"@unocss/core" "0.46.3"
"@unocss/core" "0.47.6"
unconfig "^0.3.7"
"@unocss/core@0.46.3":
version "0.46.3"
resolved "https://registry.yarnpkg.com/@unocss/core/-/core-0.46.3.tgz#4ddae823bbd9f7f1bc8b7f62c92b7fb157254263"
integrity sha512-Wcyuw9KlFgxKz/QDJ+bNnQyI0h+LAWOpZWTkRQiDh1OxzLzYrBR3ljhtZe0tymKQRzQqUSpV5iBWOxJ8raJW1w==
"@unocss/core@0.47.6":
version "0.47.6"
resolved "https://registry.yarnpkg.com/@unocss/core/-/core-0.47.6.tgz#9501cb903b45e33ef86d77bd99aa6b7ad05f615b"
integrity sha512-Pjg/NdpuTwZk2Ns3bzI/3XVPuXU+AQ78Sw+9QJyMgA56dArd3TlpNDN6UTOD9XAK6mxdPUu7rNSKpNTLpBW2og==
"@unocss/inspector@0.46.3":
version "0.46.3"
resolved "https://registry.yarnpkg.com/@unocss/inspector/-/inspector-0.46.3.tgz#9e6f36cb67d314bca4e4fb29722b4b5101f29ab2"
integrity sha512-WVcDTzORo7dZO7clEwzC19ENr7aLM2CsGsh75ofYiyZs2iYHvgnuZRspKv7SeXSjf4b49O0Xa9sDov7neTlMfA==
"@unocss/inspector@0.47.6":
version "0.47.6"
resolved "https://registry.yarnpkg.com/@unocss/inspector/-/inspector-0.47.6.tgz#b7cc2b9ea2d0ebb0401c30831083460acd409273"
integrity sha512-enYQJo7+/UtSbgzpyKzL4vZU9Tz3QyoPGDmuKoHXSIt6sAtB+DQelW7vMWjcmwA19uaISxIGXx9BJPj5XV67UA==
dependencies:
gzip-size "^6.0.0"
sirv "^2.0.2"
"@unocss/preset-attributify@0.46.3":
version "0.46.3"
resolved "https://registry.yarnpkg.com/@unocss/preset-attributify/-/preset-attributify-0.46.3.tgz#6bbc23867264a3aadf58496b8fc539e7a1e32992"
integrity sha512-vOXHFQlSZU5QLchiGKKdwz/dDS7zH6xZlxEcwdWHxzpl+kd1RfryRFa0N7MiS/6i++ko6Whr53pUyb0etafKgw==
"@unocss/preset-attributify@0.47.6":
version "0.47.6"
resolved "https://registry.yarnpkg.com/@unocss/preset-attributify/-/preset-attributify-0.47.6.tgz#e8b0027df337d87340c3b3ec27a18c11b2f8fdc6"
integrity sha512-s5XB8JpBPbGCHjvzc2j+Cx9o+QQm2CjRdQ7UjL05+uQcVYb8PBjlfD3BeIA21eBH5IxXF9SdOJfx8kUWNa5WFQ==
dependencies:
"@unocss/core" "0.46.3"
"@unocss/core" "0.47.6"
"@unocss/preset-icons@0.46.3":
version "0.46.3"
resolved "https://registry.yarnpkg.com/@unocss/preset-icons/-/preset-icons-0.46.3.tgz#01827b8c30e6df58f8a50b4bc8658ec7175751b7"
integrity sha512-n0i4LQzj7nKZ/2MF1OH5srjDbqMec3EJZdAKIFKLohuBCpEzddRlC2rZzMdP6KCYyuxg4eJ0EIEuXgX7tWHu+Q==
"@unocss/preset-icons@0.47.6":
version "0.47.6"
resolved "https://registry.yarnpkg.com/@unocss/preset-icons/-/preset-icons-0.47.6.tgz#18cf2a0b68a55b0f44ebe107c1934d7e437fd128"
integrity sha512-YvANR5ueN+r1E4YOfqF1llyUzS6yxROrJ+7MGNdIfyNHFcTwdHRy0f6y8uyiMYWyLc6nGGrUjjdo+DEc30obSA==
dependencies:
"@iconify/utils" "^2.0.1"
"@unocss/core" "0.46.3"
ohmyfetch "^0.4.20"
"@iconify/utils" "^2.0.2"
"@unocss/core" "0.47.6"
ohmyfetch "^0.4.21"
"@unocss/preset-mini@0.46.3":
version "0.46.3"
resolved "https://registry.yarnpkg.com/@unocss/preset-mini/-/preset-mini-0.46.3.tgz#5cf8e724bac0c08d459a868337166b2fa89657c9"
integrity sha512-Z9pQWYi12M+Pu/3F9OYTefcJpcZkdLAtQ7ibg1PAkL06Ua24qH8KRBhTALQr9enn4yTqpCt4OsK3KtMGp84dhw==
"@unocss/preset-mini@0.47.6":
version "0.47.6"
resolved "https://registry.yarnpkg.com/@unocss/preset-mini/-/preset-mini-0.47.6.tgz#16fed207076f2ee427be411cc187084f9520884b"
integrity sha512-XP7ShDB42WU0xvZA1dG4E3LnzN4TYISm6AKQee3gmITUtE0ELTp9XutMgt0sqTe5FXeTRqw9XH7axv+4EqnE3Q==
dependencies:
"@unocss/core" "0.46.3"
"@unocss/core" "0.47.6"
"@unocss/preset-tagify@0.46.3":
version "0.46.3"
resolved "https://registry.yarnpkg.com/@unocss/preset-tagify/-/preset-tagify-0.46.3.tgz#7f022759361dde59125b959fbdd5634ae1e50d5b"
integrity sha512-u8YJEPHM0Mxd8kWaM2+IfRKBRk3KxCghOVzYo2+/1ez+c+A1LZIduLwjmN/Tb7BxR/awNfOmC59kxxx0fIT1PQ==
"@unocss/preset-tagify@0.47.6":
version "0.47.6"
resolved "https://registry.yarnpkg.com/@unocss/preset-tagify/-/preset-tagify-0.47.6.tgz#d6dfd03f40ad10ae9eafaa81b478a5e8c9dadecb"
integrity sha512-9MxgZAUWWEg5OPLY+fpEf/Clw88pi57HON95E9zKvRy816S5gqhbt3PSxal7pCB9WO+3JM6BFLazAJ7DHpT1qA==
dependencies:
"@unocss/core" "0.46.3"
"@unocss/core" "0.47.6"
"@unocss/preset-typography@0.46.3":
version "0.46.3"
resolved "https://registry.yarnpkg.com/@unocss/preset-typography/-/preset-typography-0.46.3.tgz#09b55fc155f87a6d3e36e976525432b2bebcae38"
integrity sha512-o9a1QMRlCL7/9wR2FwL+ncb4ITh8nCQUCQk+yhvP8/89afn+jmpLajccDX03THcR9s3rByp1/TnuyRrJoUer+A==
"@unocss/preset-typography@0.47.6":
version "0.47.6"
resolved "https://registry.yarnpkg.com/@unocss/preset-typography/-/preset-typography-0.47.6.tgz#a953cc85ac70bb04b293a976a00113d41c87b7d8"
integrity sha512-/Hfsw05ogolLXqrxTu5bLFIgGGmVdRHGw5vSmY3g+YPy37HfWpbP3cOs8YEOv8r3lV9J7vzAxAKKT0MQgukiHQ==
dependencies:
"@unocss/core" "0.46.3"
"@unocss/core" "0.47.6"
"@unocss/preset-uno@0.46.3":
version "0.46.3"
resolved "https://registry.yarnpkg.com/@unocss/preset-uno/-/preset-uno-0.46.3.tgz#43a9072e2820aa9e38f34e13df7f4a2af02a8a14"
integrity sha512-MxRDodapsIV31z5/M7yhd/rxjtj7k8Z3kZROTSfTuRma9oD4e3Z6Q3GGUcn+dkgJmYDLTW61fbQf+ntOMlVcjg==
"@unocss/preset-uno@0.47.6":
version "0.47.6"
resolved "https://registry.yarnpkg.com/@unocss/preset-uno/-/preset-uno-0.47.6.tgz#2a81775850b8fa3e8f95abb33513b50c587b4d64"
integrity sha512-pDRuFmPzshX6ICaWhj7UBrnoL++rYD/QY52aljg9L4yAOZsZ1m0XRUlbnoXXXsEqDjw38SYNUzA1LtYcevBRvA==
dependencies:
"@unocss/core" "0.46.3"
"@unocss/preset-mini" "0.46.3"
"@unocss/preset-wind" "0.46.3"
"@unocss/core" "0.47.6"
"@unocss/preset-mini" "0.47.6"
"@unocss/preset-wind" "0.47.6"
"@unocss/preset-web-fonts@0.46.3":
version "0.46.3"
resolved "https://registry.yarnpkg.com/@unocss/preset-web-fonts/-/preset-web-fonts-0.46.3.tgz#02d218eeb82af29c1e100ed562fcf217ec486565"
integrity sha512-sY3pGJ4CUVOiIhX4foq5t5nd7NIcSq1Xa6jUS4Bf/pt0Nn9fyP5uRUgwXT0EXler2uF+Xq8JS9iNUA/dwmD9kg==
"@unocss/preset-web-fonts@0.47.6":
version "0.47.6"
resolved "https://registry.yarnpkg.com/@unocss/preset-web-fonts/-/preset-web-fonts-0.47.6.tgz#0e0a1291f6902572a38b40320f5b0c0c1b680ed2"
integrity sha512-TkN/etSSl61TtqxQJSVG/zfJUccdpgIuvqYrJOf4OZMj2rLwNHU2kOJEPFCfDyHTS+UjQ7LibfnE6snFDJ3pgQ==
dependencies:
"@unocss/core" "0.46.3"
ohmyfetch "^0.4.20"
"@unocss/core" "0.47.6"
ohmyfetch "^0.4.21"
"@unocss/preset-wind@0.46.3":
version "0.46.3"
resolved "https://registry.yarnpkg.com/@unocss/preset-wind/-/preset-wind-0.46.3.tgz#a9d64e17c905d2ea422d0b657b58e29d245aba21"
integrity sha512-qI9Ta4NIL2SBJ3UlBJAB72FBAe2czOkX0EvlsY+9DxlB2l1orBJy2n5EksbtAu0dk+RSxlk2E1zfXfV02ngqmA==
"@unocss/preset-wind@0.47.6":
version "0.47.6"
resolved "https://registry.yarnpkg.com/@unocss/preset-wind/-/preset-wind-0.47.6.tgz#3844db2615aa0bb62c9f815a35ac63fb41130a99"
integrity sha512-yl9zayR/CRfgnlM1iGEBKI3CkIVADv72UQHY+ZHqq/0VzeW8lSRG1KezqDKz2x3fMfrtbfls/fGLXQPNpD0mIw==
dependencies:
"@unocss/core" "0.46.3"
"@unocss/preset-mini" "0.46.3"
"@unocss/core" "0.47.6"
"@unocss/preset-mini" "0.47.6"
"@unocss/reset@0.46.3":
version "0.46.3"
resolved "https://registry.yarnpkg.com/@unocss/reset/-/reset-0.46.3.tgz#71086aed1fac7292f4a8c9043730a4bad9946e76"
integrity sha512-Jb9zx3h5IPVjSAyW+cLq+/cyeTcExtRaK+Jd7Zjcw6LhgeY5uFeEAQPoFVLCX8az7BXO6FQD3cAmWvl/yogAOA==
"@unocss/reset@0.47.6":
version "0.47.6"
resolved "https://registry.yarnpkg.com/@unocss/reset/-/reset-0.47.6.tgz#cde6769bad57f839a59edf189b7e7c3ce297ac59"
integrity sha512-bdc2dbuDg+CzgeLowEwO1URRIMdzmCE4RH4IKpCpT1Xoa+92RRubdtzK4N/9ZiSo8d4vvfWcc8fvhZko/6smPQ==
"@unocss/scope@0.46.3":
version "0.46.3"
resolved "https://registry.yarnpkg.com/@unocss/scope/-/scope-0.46.3.tgz#ad0490565712fff8a009b21482e97cff882d4b15"
integrity sha512-oL8dC7vuy3Z76JTmrrJGMdNaojTPSwNnspaNQrGXydqLj/jwKAsLN2GeJi0FHvsnC1vicHjXhBRJ1uNQvwm/bQ==
"@unocss/scope@0.47.6":
version "0.47.6"
resolved "https://registry.yarnpkg.com/@unocss/scope/-/scope-0.47.6.tgz#c944a6412fd91bf06e94eb2f9e64ff679d9c678b"
integrity sha512-aI7B4Il5xYfMcr50AC90I+Igi3KB9U0JPX2yiU2/WhOaO33ZReBWJmBQ4LhBGrdgNh8vkHpeqs8ntwq/o25nbA==
"@unocss/transformer-attributify-jsx@0.46.3":
version "0.46.3"
resolved "https://registry.yarnpkg.com/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.46.3.tgz#f0c76e9572db10057d2eb83020449c10be89fa00"
integrity sha512-VW0gNAtSGkWz4LpviFVnOuGHJkhzPdj05OFVwYBBtPDI52rnx0pg0Nfu6epYwK9EfcdHLsmtJ3Bz3Jr1ldWAfg==
"@unocss/transformer-attributify-jsx@0.47.6":
version "0.47.6"
resolved "https://registry.yarnpkg.com/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.47.6.tgz#a94becbfd9e1d2200bcb3ae7e95798ee2304fba9"
integrity sha512-1sjBPNpczbg1ZsM4OKr9SCisc3vXEpW+3aeCRlBq7UGlJId3vJlX19Yp6IV9IEnVubsUkgo/3nr0B12OD58VdQ==
dependencies:
"@unocss/core" "0.46.3"
"@unocss/core" "0.47.6"
"@unocss/transformer-compile-class@0.46.3":
version "0.46.3"
resolved "https://registry.yarnpkg.com/@unocss/transformer-compile-class/-/transformer-compile-class-0.46.3.tgz#65d5eca6bdadd1f3cf91bfd84fc1432c32c6872a"
integrity sha512-TFtfSAxjX5x1mbQT3EqbmW2X9lDgKUEp134sdX44SO09VA5UZDpg/i+iI5adMr8h44c76S5HOqoLGEKgirT51w==
"@unocss/transformer-compile-class@0.47.6":
version "0.47.6"
resolved "https://registry.yarnpkg.com/@unocss/transformer-compile-class/-/transformer-compile-class-0.47.6.tgz#63080deb4407f2252dbd6f1ce2a462b1b8045ff6"
integrity sha512-/+O0qJlHFOF4iO+RVkK5sPLJJzWp8dkAJGH/ArBzpT4hnxe8W7c0tb0hlJxwUp5J7UcP4lDhd8VKKvlyadHkuA==
dependencies:
"@unocss/core" "0.46.3"
"@unocss/core" "0.47.6"
"@unocss/transformer-directives@0.46.3":
version "0.46.3"
resolved "https://registry.yarnpkg.com/@unocss/transformer-directives/-/transformer-directives-0.46.3.tgz#857e9bf6d98ad7191db65ca66d1a7a45dc2bd931"
integrity sha512-9h5HZ7JJco6Hk6M6Gp3e+n5+s9reMRv6zPWeoTG7Y3gzHDbYDjQgaoCi7+6fPQ9642zN2WsAIsIm7r1gVpYveQ==
"@unocss/transformer-directives@0.47.6":
version "0.47.6"
resolved "https://registry.yarnpkg.com/@unocss/transformer-directives/-/transformer-directives-0.47.6.tgz#ac714d9952c2e217dc94d7839718b94769ab28a5"
integrity sha512-vRY9bNhE+iNlRpsnky86MtKpRb8ipk3IHvtuRkK5DSjcjn7RGmh5ZpH9pzg39NvbWtRYq5/EN19riIYQHRetnA==
dependencies:
"@unocss/core" "0.46.3"
"@unocss/core" "0.47.6"
css-tree "^2.2.1"
"@unocss/transformer-variant-group@0.46.3":
version "0.46.3"
resolved "https://registry.yarnpkg.com/@unocss/transformer-variant-group/-/transformer-variant-group-0.46.3.tgz#cc0ffd5c5b41e3c02102e7c8a68883ebbc4fdfaf"
integrity sha512-OdOREPMEo0D2tKaJa53CYoriKUIhjNCaBwr/0XGOamDwfYclt3+YyZ92AhpQIfqrdNbzlaBArjWGXMLjGLI1OA==
"@unocss/transformer-variant-group@0.47.6":
version "0.47.6"
resolved "https://registry.yarnpkg.com/@unocss/transformer-variant-group/-/transformer-variant-group-0.47.6.tgz#aeb2f046654a232b6fbfb72885bc602dec3b185f"
integrity sha512-+uXz0pOv6WbEzQuW5RbgDSiwO274blsOsE63PdiRBMID1eSYKffGBcmiDh875QWc9ncFpjSKml+4q8jU7I+a0w==
dependencies:
"@unocss/core" "0.46.3"
"@unocss/core" "0.47.6"
"@unocss/vite@0.46.3":
version "0.46.3"
resolved "https://registry.yarnpkg.com/@unocss/vite/-/vite-0.46.3.tgz#b66af4305f2dda3bb2f2dcfc0c88636a1bb0cfb0"
integrity sha512-LCq3olCaRTheit6s5oE6x9/BlODpdG5K5CJ44GP7UZei3SuHOAKkbHNq7tanmMXc1jvIUre8HOeIKhARcA5Bwg==
"@unocss/vite@0.47.6":
version "0.47.6"
resolved "https://registry.yarnpkg.com/@unocss/vite/-/vite-0.47.6.tgz#35cef2e954be69a69b0d06f698e310f4ccb3ace6"
integrity sha512-NL3A20sJHwMyCHOaxLlFXnr71QHEd118GN82e/mtFluEh7F3WyLndaZfWQLmLEeJ3z+P4nURFCLirZJIXr4XgQ==
dependencies:
"@ampproject/remapping" "^2.2.0"
"@rollup/pluginutils" "^5.0.1"
"@unocss/config" "0.46.3"
"@unocss/core" "0.46.3"
"@unocss/inspector" "0.46.3"
"@unocss/scope" "0.46.3"
"@unocss/transformer-directives" "0.46.3"
magic-string "^0.26.7"
"@rollup/pluginutils" "^5.0.2"
"@unocss/config" "0.47.6"
"@unocss/core" "0.47.6"
"@unocss/inspector" "0.47.6"
"@unocss/scope" "0.47.6"
"@unocss/transformer-directives" "0.47.6"
magic-string "^0.27.0"
"@vitejs/plugin-legacy@2.3.0":
version "2.3.0"
resolved "https://registry.yarnpkg.com/@vitejs/plugin-legacy/-/plugin-legacy-2.3.0.tgz#43565bcaf0dba53c70b26a1f67797b7c09f9d04e"
integrity sha512-Bh62i0gzQvvT8AeAAb78nOnqSYXypkRmQmOTImdPZ39meHR9e2une3AIFmVo4s1SDmcmJ6qj18Sa/lRc/14KaA==
"@vitejs/plugin-legacy@3.0.1":
version "3.0.1"
resolved "https://registry.yarnpkg.com/@vitejs/plugin-legacy/-/plugin-legacy-3.0.1.tgz#bccc0eaf15a64e1854313acebec879854e413deb"
integrity sha512-XCtEjxoR3rmy000ujYRBp5kggWqzHz9+F20/yIMUWOzbvu0+KW1e14Fvb8h7SpNn+bfjGW1RiAs1Vrgb7Js+iQ==
dependencies:
"@babel/standalone" "^7.19.6"
core-js "^3.26.0"
magic-string "^0.26.7"
regenerator-runtime "^0.13.10"
"@babel/standalone" "^7.20.6"
core-js "^3.26.1"
magic-string "^0.27.0"
regenerator-runtime "^0.13.11"
systemjs "^6.13.0"
"@vitejs/plugin-vue@3.2.0":
version "3.2.0"
resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-3.2.0.tgz#a1484089dd85d6528f435743f84cdd0d215bbb54"
integrity sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==
"@vitejs/plugin-vue@4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.0.0.tgz#93815beffd23db46288c787352a8ea31a0c03e5e"
integrity sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==
"@vue/compiler-core@3.2.41":
version "3.2.41"
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.41.tgz#fb5b25f23817400f44377d878a0cdead808453ef"
integrity sha512-oA4mH6SA78DT+96/nsi4p9DX97PHcNROxs51lYk7gb9Z4BPKQ3Mh+BLn6CQZBw857Iuhu28BfMSRHAlPvD4vlw==
"@vue/compiler-core@3.2.45":
version "3.2.45"
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.45.tgz#d9311207d96f6ebd5f4660be129fb99f01ddb41b"
integrity sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==
dependencies:
"@babel/parser" "^7.16.4"
"@vue/shared" "3.2.41"
"@vue/shared" "3.2.45"
estree-walker "^2.0.2"
source-map "^0.6.1"
"@vue/compiler-dom@3.2.41":
version "3.2.41"
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.41.tgz#dc63dcd3ce8ca8a8721f14009d498a7a54380299"
integrity sha512-xe5TbbIsonjENxJsYRbDJvthzqxLNk+tb3d/c47zgREDa/PCp6/Y4gC/skM4H6PIuX5DAxm7fFJdbjjUH2QTMw==
"@vue/compiler-dom@3.2.45":
version "3.2.45"
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz#c43cc15e50da62ecc16a42f2622d25dc5fd97dce"
integrity sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==
dependencies:
"@vue/compiler-core" "3.2.41"
"@vue/shared" "3.2.41"
"@vue/compiler-core" "3.2.45"
"@vue/shared" "3.2.45"
"@vue/compiler-sfc@3.2.41":
version "3.2.41"
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.41.tgz#238fb8c48318408c856748f4116aff8cc1dc2a73"
integrity sha512-+1P2m5kxOeaxVmJNXnBskAn3BenbTmbxBxWOtBq3mQTCokIreuMULFantBUclP0+KnzNCMOvcnKinqQZmiOF8w==
"@vue/compiler-sfc@3.2.45":
version "3.2.45"
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz#7f7989cc04ec9e7c55acd406827a2c4e96872c70"
integrity sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==
dependencies:
"@babel/parser" "^7.16.4"
"@vue/compiler-core" "3.2.41"
"@vue/compiler-dom" "3.2.41"
"@vue/compiler-ssr" "3.2.41"
"@vue/reactivity-transform" "3.2.41"
"@vue/shared" "3.2.41"
"@vue/compiler-core" "3.2.45"
"@vue/compiler-dom" "3.2.45"
"@vue/compiler-ssr" "3.2.45"
"@vue/reactivity-transform" "3.2.45"
"@vue/shared" "3.2.45"
estree-walker "^2.0.2"
magic-string "^0.25.7"
postcss "^8.1.10"
source-map "^0.6.1"
"@vue/compiler-ssr@3.2.41":
version "3.2.41"
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.41.tgz#344f564d68584b33367731c04ffc949784611fcb"
integrity sha512-Y5wPiNIiaMz/sps8+DmhaKfDm1xgj6GrH99z4gq2LQenfVQcYXmHIOBcs5qPwl7jaW3SUQWjkAPKMfQemEQZwQ==
"@vue/compiler-ssr@3.2.45":
version "3.2.45"
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz#bd20604b6e64ea15344d5b6278c4141191c983b2"
integrity sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==
dependencies:
"@vue/compiler-dom" "3.2.41"
"@vue/shared" "3.2.41"
"@vue/compiler-dom" "3.2.45"
"@vue/shared" "3.2.45"
"@vue/devtools-api@^6.2.1":
version "6.2.1"
@ -1527,53 +1535,53 @@
resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.4.5.tgz#d54e844c1adbb1e677c81c665ecef1a2b4bb8380"
integrity sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ==
"@vue/reactivity-transform@3.2.41":
version "3.2.41"
resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.41.tgz#9ff938877600c97f646e09ac1959b5150fb11a0c"
integrity sha512-mK5+BNMsL4hHi+IR3Ft/ho6Za+L3FA5j8WvreJ7XzHrqkPq8jtF/SMo7tuc9gHjLDwKZX1nP1JQOKo9IEAn54A==
"@vue/reactivity-transform@3.2.45":
version "3.2.45"
resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz#07ac83b8138550c83dfb50db43cde1e0e5e8124d"
integrity sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==
dependencies:
"@babel/parser" "^7.16.4"
"@vue/compiler-core" "3.2.41"
"@vue/shared" "3.2.41"
"@vue/compiler-core" "3.2.45"
"@vue/shared" "3.2.45"
estree-walker "^2.0.2"
magic-string "^0.25.7"
"@vue/reactivity@3.2.41":
version "3.2.41"
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.41.tgz#0ad3bdf76d76822da1502dc9f394dafd02642963"
integrity sha512-9JvCnlj8uc5xRiQGZ28MKGjuCoPhhTwcoAdv3o31+cfGgonwdPNuvqAXLhlzu4zwqavFEG5tvaoINQEfxz+l6g==
"@vue/reactivity@3.2.45":
version "3.2.45"
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.45.tgz#412a45b574de601be5a4a5d9a8cbd4dee4662ff0"
integrity sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==
dependencies:
"@vue/shared" "3.2.41"
"@vue/shared" "3.2.45"
"@vue/runtime-core@3.2.41":
version "3.2.41"
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.41.tgz#775bfc00b3fadbaddab77138f23322aee3517a76"
integrity sha512-0LBBRwqnI0p4FgIkO9q2aJBBTKDSjzhnxrxHYengkAF6dMOjeAIZFDADAlcf2h3GDALWnblbeprYYpItiulSVQ==
"@vue/runtime-core@3.2.45":
version "3.2.45"
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.45.tgz#7ad7ef9b2519d41062a30c6fa001ec43ac549c7f"
integrity sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==
dependencies:
"@vue/reactivity" "3.2.41"
"@vue/shared" "3.2.41"
"@vue/reactivity" "3.2.45"
"@vue/shared" "3.2.45"
"@vue/runtime-dom@3.2.41":
version "3.2.41"
resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.41.tgz#cdf86be7410f7b15c29632a96ce879e5b4c9ab92"
integrity sha512-U7zYuR1NVIP8BL6jmOqmapRAHovEFp7CSw4pR2FacqewXNGqZaRfHoNLQsqQvVQ8yuZNZtxSZy0FFyC70YXPpA==
"@vue/runtime-dom@3.2.45":
version "3.2.45"
resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz#1a2ef6ee2ad876206fbbe2a884554bba2d0faf59"
integrity sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==
dependencies:
"@vue/runtime-core" "3.2.41"
"@vue/shared" "3.2.41"
"@vue/runtime-core" "3.2.45"
"@vue/shared" "3.2.45"
csstype "^2.6.8"
"@vue/server-renderer@3.2.41":
version "3.2.41"
resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.41.tgz#ca64552c05878f94e8d191ac439141c06c0fb2ad"
integrity sha512-7YHLkfJdTlsZTV0ae5sPwl9Gn/EGr2hrlbcS/8naXm2CDpnKUwC68i1wGlrYAfIgYWL7vUZwk2GkYLQH5CvFig==
"@vue/server-renderer@3.2.45":
version "3.2.45"
resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.45.tgz#ca9306a0c12b0530a1a250e44f4a0abac6b81f3f"
integrity sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==
dependencies:
"@vue/compiler-ssr" "3.2.41"
"@vue/shared" "3.2.41"
"@vue/compiler-ssr" "3.2.45"
"@vue/shared" "3.2.45"
"@vue/shared@3.2.41":
version "3.2.41"
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.41.tgz#fbc95422df654ea64e8428eced96ba6ad555d2bb"
integrity sha512-W9mfWLHmJhkfAmV+7gDjcHeAWALQtgGT3JErxULl0oz6R6+3ug91I7IErs93eCFhPCZPHBs4QJS7YWEV7A3sxw==
"@vue/shared@3.2.45":
version "3.2.45"
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.45.tgz#a3fffa7489eafff38d984e23d0236e230c818bc2"
integrity sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==
acorn-jsx@^5.2.0, acorn-jsx@^5.3.2:
version "5.3.2"
@ -1885,10 +1893,10 @@ core-js-compat@^3.20.2, core-js-compat@^3.21.0:
browserslist "^4.19.1"
semver "7.0.0"
core-js@^3.26.0:
version "3.26.0"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.26.0.tgz#a516db0ed0811be10eac5d94f3b8463d03faccfe"
integrity sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==
core-js@^3.26.1:
version "3.26.1"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.26.1.tgz#7a9816dabd9ee846c1c0fe0e8fcad68f3709134e"
integrity sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==
cross-spawn@^7.0.2, cross-spawn@^7.0.3:
version "7.0.3"
@ -1951,10 +1959,10 @@ defu@^6.1.0:
resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.0.tgz#7a5411655da73335c7d933256911f17c74443e2d"
integrity sha512-pOFYRTIhoKujrmbTRhcW5lYQLBXw/dlTwfI8IguF1QCDJOcJzNH1w+YFjxqy6BAuJrClTy6MUE8q+oKJ2FLsIw==
destr@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/destr/-/destr-1.1.1.tgz#910457d10a2f2f247add4ca4fdb4a03adcc49079"
integrity sha512-QqkneF8LrYmwATMdnuD2MLI3GHQIcBnG6qFC2q9bSH430VTCDAVjcspPmUaKhPGtAtPAftIUFqY1obQYQuwmbg==
destr@^1.2.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/destr/-/destr-1.2.1.tgz#03f2e7cbcd01f9190938d05718948de9d7dfb71a"
integrity sha512-ud8w0qMLlci6iFG7CNgeRr8OcbUWMsbfjtWft1eJ5Luqrz/M8Ebqk/KCzne8rKUlIQWWfLv0wD6QHrqOf4GshA==
doctrine@^3.0.0:
version "3.0.0"
@ -1968,10 +1976,10 @@ dom-walk@^0.1.0:
resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84"
integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==
dompurify@2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.4.0.tgz#c9c88390f024c2823332615c9e20a453cf3825dd"
integrity sha512-Be9tbQMZds4a3C6xTmz68NlMfeONA//4dOavl/1rNw50E+/QO0KVpbcU0PcaW0nsQxurXls9ZocqFxk8R2mWEA==
dompurify@2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.4.1.tgz#f9cb1a275fde9af6f2d0a2644ef648dd6847b631"
integrity sha512-ewwFzHzrrneRjxzmK6oVz/rZn9VWspGFRDb4/rRtIsM1n36t9AKma/ye8syCpcw+XJ25kOK/hOG7t1j2I2yBqA==
duplexer@^0.1.2:
version "0.1.2"
@ -2185,10 +2193,10 @@ eslint-plugin-prettier@4.2.1:
dependencies:
prettier-linter-helpers "^1.0.0"
eslint-plugin-vue@9.7.0:
version "9.7.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.7.0.tgz#d391b9864f128ea2d1ee4dabeafb5f7c0cea981f"
integrity sha512-DrOO3WZCZEwcLsnd3ohFwqCoipGRSTKTBTnLwdhqAbYZtzWl0o7D+D8ZhlmiZvABKTEl8AFsqH1GHGdybyoQmw==
eslint-plugin-vue@9.8.0:
version "9.8.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.8.0.tgz#91de2aabbee8cdbef078ccd4f650a9ecfa445f4f"
integrity sha512-E/AXwcTzunyzM83C2QqDHxepMzvI2y6x+mmeYHbVDQlKFqmKYvRrhaVixEeeG27uI44p9oKDFiyCRw4XxgtfHA==
dependencies:
eslint-utils "^3.0.0"
natural-compare "^1.4.0"
@ -2235,10 +2243,10 @@ eslint-visitor-keys@^3.3.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
eslint@8.26.0:
version "8.26.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.26.0.tgz#2bcc8836e6c424c4ac26a5674a70d44d84f2181d"
integrity sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==
eslint@8.29.0:
version "8.29.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.29.0.tgz#d74a88a20fb44d59c51851625bc4ee8d0ec43f87"
integrity sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==
dependencies:
"@eslint/eslintrc" "^1.3.3"
"@humanwhocodes/config-array" "^0.11.6"
@ -2366,7 +2374,7 @@ fast-diff@^1.1.2:
resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.5:
fast-glob@^3.2.12, fast-glob@^3.2.5:
version "3.2.12"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
@ -2590,10 +2598,10 @@ has@^1.0.3:
dependencies:
function-bind "^1.1.1"
hotkeys-js@3.10.0:
version "3.10.0"
resolved "https://registry.yarnpkg.com/hotkeys-js/-/hotkeys-js-3.10.0.tgz#2bbd13de4aa002fa916c34e3859239924311e35a"
integrity sha512-20xeVdOqcgTkMox0+BqFwADZP7+5dy/9CFPpAinSMh2d0s3b0Hs2V2D+lMh4Hphkf7VE9pwnOl58eP1te+REcg==
hotkeys-js@3.10.1:
version "3.10.1"
resolved "https://registry.yarnpkg.com/hotkeys-js/-/hotkeys-js-3.10.1.tgz#0c67e72298f235c9200e421ab112d156dc81356a"
integrity sha512-mshqjgTqx8ee0qryHvRgZaZDxTwxam/2yTQmQlqAWS3+twnq1jsY9Yng9zB7lWq6WRrjTbTOc7knNwccXQiAjQ==
human-signals@^2.1.0:
version "2.1.0"
@ -2963,13 +2971,20 @@ magic-string@^0.25.0, magic-string@^0.25.7:
dependencies:
sourcemap-codec "^1.4.8"
magic-string@^0.26.7:
magic-string@^0.26.4, magic-string@^0.26.7:
version "0.26.7"
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f"
integrity sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==
dependencies:
sourcemap-codec "^1.4.8"
magic-string@^0.27.0:
version "0.27.0"
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3"
integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==
dependencies:
"@jridgewell/sourcemap-codec" "^1.4.13"
mdn-data@2.0.28:
version "2.0.28"
resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba"
@ -3101,15 +3116,15 @@ object.assign@^4.1.0, object.assign@^4.1.2:
has-symbols "^1.0.1"
object-keys "^1.1.1"
ohmyfetch@^0.4.20:
version "0.4.20"
resolved "https://registry.yarnpkg.com/ohmyfetch/-/ohmyfetch-0.4.20.tgz#735895d396c6d2fbf5705625db1196bd3f29be16"
integrity sha512-+c3/l+X91owrT1reTos1R13rb2j8NGZpKi0bRWwrnxIHlr1FZ8NzghIsNBKpUvk9nsnFoNK4phw+nTnXrcALzA==
ohmyfetch@^0.4.21:
version "0.4.21"
resolved "https://registry.yarnpkg.com/ohmyfetch/-/ohmyfetch-0.4.21.tgz#6850db751fc7bbf08153aa8b11ff1ef45fcfd963"
integrity sha512-VG7f/JRvqvBOYvL0tHyEIEG7XHWm7OqIfAs6/HqwWwDfjiJ1g0huIpe5sFEmyb+7hpFa1EGNH2aERWR72tlClw==
dependencies:
destr "^1.1.1"
destr "^1.2.0"
node-fetch-native "^0.1.8"
ufo "^0.8.6"
undici "^5.11.0"
undici "^5.12.0"
once@^1.3.0:
version "1.4.0"
@ -3178,11 +3193,16 @@ path-parse@^1.0.7:
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
pathe@^0.3.0, pathe@^0.3.9:
pathe@^0.3.0:
version "0.3.9"
resolved "https://registry.yarnpkg.com/pathe/-/pathe-0.3.9.tgz#4baff768f37f03e3d9341502865fb93116f65191"
integrity sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==
pathe@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.0.0.tgz#135fc11464fc57c84ef93d5c5ed21247e24571df"
integrity sha512-nPdMG0Pd09HuSsr7QOKUXO2Jr9eqaDiZvDwdyIhNG5SHYujkQHYKDfGQkulBxvbDHz8oHLsTgKN86LSwYzSHAg==
perfect-debounce@^0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/perfect-debounce/-/perfect-debounce-0.1.3.tgz#ff6798ea543a3ba1f0efeeaf97c0340f5c8871ce"
@ -3236,10 +3256,10 @@ prettier-linter-helpers@^1.0.0:
dependencies:
fast-diff "^1.1.2"
prettier@2.7.1:
version "2.7.1"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64"
integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==
prettier@2.8.1:
version "2.8.1"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.1.tgz#4e1fd11c34e2421bc1da9aea9bd8127cd0a35efc"
integrity sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==
pretty-bytes@^5.3.0:
version "5.6.0"
@ -3301,10 +3321,10 @@ regenerate@^1.4.2:
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
regenerator-runtime@^0.13.10:
version "0.13.10"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee"
integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==
regenerator-runtime@^0.13.11:
version "0.13.11"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
regenerator-runtime@^0.13.4:
version "0.13.9"
@ -3417,13 +3437,20 @@ rollup@^2.43.1, rollup@^2.77.2:
optionalDependencies:
fsevents "~2.3.2"
rollup@^2.79.0, rollup@^2.79.1:
rollup@^2.79.1:
version "2.79.1"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7"
integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
optionalDependencies:
fsevents "~2.3.2"
rollup@^3.7.2:
version "3.7.3"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.7.3.tgz#d440adff5f89099fd1f552e4e4333045e3bc71d4"
integrity sha512-7e68MQbAWCX6mI4/0lG1WHd+NdNAlVamg0Zkd+8LZ/oXojligdGnCNyHlzXqXCZObyjs5FRc3AH0b17iJESGIQ==
optionalDependencies:
fsevents "~2.3.2"
run-parallel@^1.1.9:
version "1.2.0"
resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
@ -3470,10 +3497,10 @@ serialize-javascript@^4.0.0:
dependencies:
randombytes "^2.1.0"
shaka-player@4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/shaka-player/-/shaka-player-4.2.3.tgz#696eddb7e25b082b3a75d2452956bc4d8eaa9f76"
integrity sha512-R6JGpYfn/0yuYoFvqE+INFx9z4fgDaGJWQdHc6yDQ6GryCnkw6PmaIFHnInYqTgoufGgXuB392Xl9frB/s2f8w==
shaka-player@4.3.2:
version "4.3.2"
resolved "https://registry.yarnpkg.com/shaka-player/-/shaka-player-4.3.2.tgz#4c255f93ca6f0452231903a4f0fe068b89f43056"
integrity sha512-sHGDKhKJTPeTks5BiASqr+E+daPHrLYSznEasHR2b7VR34D1OcAcVJk3WQXQiV03tWFFydFGHrgxQDmj1hIA+Q==
dependencies:
eme-encryption-scheme-polyfill "^2.1.1"
@ -3747,10 +3774,10 @@ unconfig@^0.3.7:
defu "^6.1.0"
jiti "^1.16.0"
undici@^5.11.0:
version "5.11.0"
resolved "https://registry.yarnpkg.com/undici/-/undici-5.11.0.tgz#1db25f285821828fc09d3804b9e2e934ae86fc13"
integrity sha512-oWjWJHzFet0Ow4YZBkyiJwiK5vWqEYoH7BINzJAJOLedZ++JpAlCbUktW2GQ2DS2FpKmxD/JMtWUUWl1BtghGw==
undici@^5.12.0:
version "5.13.0"
resolved "https://registry.yarnpkg.com/undici/-/undici-5.13.0.tgz#56772fba89d8b25e39bddc8c26a438bd73ea69bb"
integrity sha512-UDZKtwb2k7KRsK4SdXWG7ErXiL7yTGgLWvk2AXO1JMjgjh404nFo6tWSCM2xMpJwMPx3J8i/vfqEh1zOqvj82Q==
dependencies:
busboy "^1.6.0"
@ -3789,28 +3816,28 @@ universalify@^2.0.0:
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
unocss@0.46.3:
version "0.46.3"
resolved "https://registry.yarnpkg.com/unocss/-/unocss-0.46.3.tgz#28a13638b5def55dfce3dd86d21c9eb16018d936"
integrity sha512-9ICDcmCkNH2jp6NVR7kMYe4rvfIc4INv7u5g4G2yQx00YYfGc8PCY7VqWlJsHoD7eUuqUOSwBbd9gsg3cvNn4A==
unocss@0.47.6:
version "0.47.6"
resolved "https://registry.yarnpkg.com/unocss/-/unocss-0.47.6.tgz#530e9e952b782e7d14638d69c622c397183ca910"
integrity sha512-cc+m2h/Iky24zwAKir9ElmIhkPYNjZEUTemInctWlVN8QX9qpzsRZahAl7ZmKsBorXPFtux/JYoUCCtXftyxOw==
dependencies:
"@unocss/astro" "0.46.3"
"@unocss/cli" "0.46.3"
"@unocss/core" "0.46.3"
"@unocss/preset-attributify" "0.46.3"
"@unocss/preset-icons" "0.46.3"
"@unocss/preset-mini" "0.46.3"
"@unocss/preset-tagify" "0.46.3"
"@unocss/preset-typography" "0.46.3"
"@unocss/preset-uno" "0.46.3"
"@unocss/preset-web-fonts" "0.46.3"
"@unocss/preset-wind" "0.46.3"
"@unocss/reset" "0.46.3"
"@unocss/transformer-attributify-jsx" "0.46.3"
"@unocss/transformer-compile-class" "0.46.3"
"@unocss/transformer-directives" "0.46.3"
"@unocss/transformer-variant-group" "0.46.3"
"@unocss/vite" "0.46.3"
"@unocss/astro" "0.47.6"
"@unocss/cli" "0.47.6"
"@unocss/core" "0.47.6"
"@unocss/preset-attributify" "0.47.6"
"@unocss/preset-icons" "0.47.6"
"@unocss/preset-mini" "0.47.6"
"@unocss/preset-tagify" "0.47.6"
"@unocss/preset-typography" "0.47.6"
"@unocss/preset-uno" "0.47.6"
"@unocss/preset-web-fonts" "0.47.6"
"@unocss/preset-wind" "0.47.6"
"@unocss/reset" "0.47.6"
"@unocss/transformer-attributify-jsx" "0.47.6"
"@unocss/transformer-compile-class" "0.47.6"
"@unocss/transformer-directives" "0.47.6"
"@unocss/transformer-variant-group" "0.47.6"
"@unocss/vite" "0.47.6"
upath@^1.2.0:
version "1.2.0"
@ -3838,22 +3865,23 @@ vite-plugin-eslint@1.8.1:
"@types/eslint" "^8.4.5"
rollup "^2.77.2"
vite-plugin-pwa@0.13.1:
version "0.13.1"
resolved "https://registry.yarnpkg.com/vite-plugin-pwa/-/vite-plugin-pwa-0.13.1.tgz#345133f947d4fc8252a1fd96f2fcb0e17c4201ae"
integrity sha512-NR3dIa+o2hzlzo4lF4Gu0cYvoMjSw2DdRc6Epw1yjmCqWaGuN86WK9JqZie4arNlE1ZuWT3CLiMdiX5wcmmUmg==
vite-plugin-pwa@0.14.0:
version "0.14.0"
resolved "https://registry.yarnpkg.com/vite-plugin-pwa/-/vite-plugin-pwa-0.14.0.tgz#6782874c397cbea4212681db752b43076b56cc99"
integrity sha512-3wZx47PLWTckOQhc8Y6YZjAbNZ89Ovh4TdCT97MGhgl7aFd2LUekVnAmIgFwgMqyxzJ93nmkPF/ALpEW/i2qCg==
dependencies:
"@rollup/plugin-replace" "^5.0.1"
debug "^4.3.4"
fast-glob "^3.2.11"
fast-glob "^3.2.12"
pretty-bytes "^6.0.0"
rollup "^2.79.0"
rollup "^3.7.2"
workbox-build "^6.5.4"
workbox-window "^6.5.4"
vite@3.2.2:
version "3.2.2"
resolved "https://registry.yarnpkg.com/vite/-/vite-3.2.2.tgz#280762bfaf47bcea1d12698427331c0009ac7c1f"
integrity sha512-pLrhatFFOWO9kS19bQ658CnRYzv0WLbsPih6R+iFeEEhDOuYgYCX2rztUViMz/uy/V8cLCJvLFeiOK7RJEzHcw==
vite@3.2.5:
version "3.2.5"
resolved "https://registry.yarnpkg.com/vite/-/vite-3.2.5.tgz#dee5678172a8a0ab3e547ad4148c3d547f90e86a"
integrity sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==
dependencies:
esbuild "^0.15.9"
postcss "^8.4.18"
@ -3892,16 +3920,16 @@ vue-router@4.1.6:
dependencies:
"@vue/devtools-api" "^6.4.5"
vue@3.2.41:
version "3.2.41"
resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.41.tgz#ed452b8a0f7f2b962f055c8955139c28b1c06806"
integrity sha512-uuuvnrDXEeZ9VUPljgHkqB5IaVO8SxhPpqF2eWOukVrBnRBx2THPSGQBnVRt0GrIG1gvCmFXMGbd7FqcT1ixNQ==
vue@3.2.45:
version "3.2.45"
resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.45.tgz#94a116784447eb7dbd892167784619fef379b3c8"
integrity sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==
dependencies:
"@vue/compiler-dom" "3.2.41"
"@vue/compiler-sfc" "3.2.41"
"@vue/runtime-dom" "3.2.41"
"@vue/server-renderer" "3.2.41"
"@vue/shared" "3.2.41"
"@vue/compiler-dom" "3.2.45"
"@vue/compiler-sfc" "3.2.45"
"@vue/runtime-dom" "3.2.45"
"@vue/server-renderer" "3.2.45"
"@vue/shared" "3.2.45"
webidl-conversions@^4.0.2:
version "4.0.2"