@@ -596,19 +723,58 @@ export function Row({
}}
onClickCapture={onClickCapture}
onDragStart={(e) => e.preventDefault()}
- className={`harbor-row-track grid grid-flow-col items-start gap-5 overflow-x-auto overflow-y-hidden ${trackPad} scroll-ps-5 scroll-pe-5 [scroll-snap-type:x_mandatory] [&>*]:[scroll-snap-align:start] [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none] [overflow-anchor:none] [overscroll-behavior-x:contain] [&_img]:select-none [&_img]:[-webkit-user-drag:none]`}
- style={{
- gridAutoColumns: cellWidth != null ? `${cellWidth}px` : `${effMin}px`,
- transform: "translateZ(0)",
- contain: "layout style",
- }}
+ className={`harbor-row-track items-start gap-5 overflow-x-auto overflow-y-hidden ${trackPad} [scroll-snap-type:x_mandatory] [&>*]:[scroll-snap-align:start] [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none] [overflow-anchor:none] [overscroll-behavior-x:contain] [&_img]:select-none [&_img]:[-webkit-user-drag:none] ${
+ expandingCards
+ ? "harbor-expanding-card-scope harbor-expanding-row flex flex-nowrap"
+ : "grid grid-flow-col"
+ }`}
+ style={
+ {
+ ...(expandingCards
+ ? { "--row-poster-height": `${(cellWidth ?? effMin) * 1.5}px` }
+ : { gridAutoColumns: cellWidth != null ? `${cellWidth}px` : `${effMin}px` }),
+ transform: "translateZ(0)",
+ contain: expandingCards ? "style" : "layout style",
+ } as React.CSSProperties
+ }
>
{Children.map(children, (child, i) => {
const span = isValidElement(child)
? (child.props as { style?: { gridColumn?: string } }).style?.gridColumn
: undefined;
+ const spanCount = columnSpan(span);
+ const baseWidth = (cellWidth ?? effMin) * spanCount + GAP * (spanCount - 1);
+ const expanded = expandedCard?.index === i;
+ const desiredExpandedWidth =
+ expanded && expandedCard
+ ? (cellWidth ?? effMin) * expandedCard.widthScale
+ : undefined;
+ const viewportLimit = Math.max(
+ baseWidth,
+ (trackEl?.clientWidth ?? desiredExpandedWidth ?? baseWidth) - GAP * 2,
+ );
+ const expandedWidth =
+ desiredExpandedWidth === undefined
+ ? undefined
+ : Math.max(baseWidth, Math.min(desiredExpandedWidth, viewportLimit));
return (
-
+
{child}
);
diff --git a/src/index.css b/src/index.css
index 597171170..493803281 100644
--- a/src/index.css
+++ b/src/index.css
@@ -710,6 +710,123 @@ main[data-kids="on"]::-webkit-scrollbar-thumb:hover {
animation: harbor-gear-spin 1.6s var(--ease-out) both;
}
+.download-pause-resume-icon {
+ display: inline-grid;
+ place-items: center;
+}
+
+.download-pause-resume-glyph {
+ grid-area: 1 / 1;
+ transform-box: fill-box;
+ transform-origin: center;
+ transition:
+ opacity 180ms var(--ease-out),
+ transform 180ms var(--ease-out);
+}
+
+.download-pause-resume-icon[data-state="downloading"] [data-icon="pause"],
+.download-pause-resume-icon[data-state="paused"] [data-icon="resume"] {
+ opacity: 1;
+ transform: scale(1) rotate(0deg);
+}
+
+.download-pause-resume-icon[data-state="downloading"] [data-icon="resume"] {
+ opacity: 0;
+ transform: scale(0.62) rotate(-18deg);
+}
+
+.download-pause-resume-icon[data-state="paused"] [data-icon="pause"] {
+ opacity: 0;
+ transform: scale(0.62) rotate(18deg);
+}
+
+.download-cancel-icon {
+ transform-box: fill-box;
+ transform-origin: center;
+ transition: transform 140ms var(--ease-out);
+}
+
+@media (hover: hover) and (pointer: fine) {
+ .download-cancel-trigger:hover .download-cancel-icon {
+ transform: rotate(8deg);
+ }
+}
+
+.download-cancel-trigger:active .download-cancel-icon {
+ transform: rotate(90deg) scale(0.78);
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .download-pause-resume-glyph,
+ .download-cancel-icon {
+ transition: none;
+ }
+}
+
+.source-download-morph-icon {
+ transition:
+ opacity 180ms var(--ease-out),
+ transform 180ms var(--ease-out);
+}
+
+.source-download-morph-icon-check {
+ opacity: 0;
+ transform: scale(0.5);
+}
+
+@media (hover: hover) and (pointer: fine) {
+ .source-download-button:hover .source-download-morph-icon-default {
+ opacity: 0;
+ transform: scale(0.5);
+ }
+
+ .source-download-button:hover .source-download-morph-icon-check {
+ opacity: 1;
+ transform: scale(1);
+ }
+}
+
+@keyframes harbor-source-download-trail {
+ from {
+ transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(360deg);
+ }
+}
+
+.source-download-trailing-dot {
+ animation: harbor-source-download-trail 1.5s var(--ease-in-out) infinite;
+ transform-origin: center;
+}
+
+@keyframes harbor-download-delete-shake {
+ 0%,
+ 100% {
+ transform: translateY(0) rotate(0deg);
+ }
+ 25% {
+ transform: translateY(-2px) rotate(-10deg);
+ }
+ 50% {
+ transform: translateY(0) rotate(10deg);
+ }
+ 75% {
+ transform: translateY(-2px) rotate(-10deg);
+ }
+}
+
+.download-delete-icon {
+ transform-box: fill-box;
+ transform-origin: center;
+}
+
+@media (hover: hover) and (pointer: fine) {
+ .download-delete-trigger:hover .download-delete-icon {
+ animation: harbor-download-delete-shake 400ms var(--ease-out);
+ }
+}
+
.harbor-key {
display: inline-flex;
transform-origin: 31% 65%;
@@ -1122,6 +1239,82 @@ html[data-theme-card="stremio"] button.group:not([data-no-card-ring]):hover > .r
transform: none;
}
+.harbor-expanding-card-scope [data-expanding-card] {
+ isolation: isolate;
+}
+
+.harbor-expanding-card-scope [data-poster-card-cell] > * {
+ width: 100%;
+ min-width: 0;
+}
+
+.harbor-expanding-card-scope .expanding-card-poster-frame {
+ height: var(--row-poster-height);
+}
+
+.harbor-expanding-card-scope .expanding-card-poster-frame > .harbor-poster {
+ height: 100%;
+}
+
+.harbor-expanding-card-scope
+ .expanding-card-poster-frame
+ > .harbor-poster
+ > div[aria-hidden]:first-child {
+ display: none;
+}
+
+.expanding-card-artwork {
+ opacity: 0;
+ transform: scale(1.025);
+ transition:
+ opacity 0ms linear 480ms,
+ transform 480ms cubic-bezier(0.16, 1, 0.3, 1);
+}
+
+[data-expanding-card][data-row-card-expanded="true"] .expanding-card-artwork {
+ opacity: 1;
+ transform: scale(1);
+ transition-delay: 0ms;
+}
+
+html:not([data-input-modality="pointer"])
+ [data-focused-card]:is(:focus-visible, [data-tv-focused="true"])
+ .harbor-poster {
+ box-shadow:
+ 0 24px 48px -14px rgb(0 0 0 / 0.65),
+ inset 0 0 0 2px var(--color-accent),
+ 0 0 0 1px color-mix(in srgb, var(--color-accent) 45%, transparent);
+}
+
+html:not([data-input-modality="pointer"]) #root [data-media-card] {
+ transition:
+ opacity 220ms ease,
+ filter 220ms ease;
+}
+
+html:not([data-input-modality="pointer"])
+ #root:has([data-focused-card]:is(:focus, [data-tv-focused="true"]))
+ [data-media-card]:not([data-focused-card]:is(:focus, [data-tv-focused="true"])) {
+ opacity: 0.34;
+ filter: brightness(0.68) saturate(0.78) blur(0.7px);
+}
+
+html:not([data-input-modality="pointer"])
+ #root:has([data-focused-card]:is(:focus, [data-tv-focused="true"]))
+ [data-media-card]:is([data-focused-card]:focus, [data-focused-card][data-tv-focused="true"]) {
+ opacity: 1;
+ filter: none;
+}
+
+html:not([data-input-modality="pointer"])
+ [data-focused-card]:is(:focus-visible, [data-tv-focused="true"]) {
+ outline: none;
+ z-index: 0;
+ box-shadow: none !important;
+ transform: none;
+}
+
+
.harbor-lazy-cull {
contain-intrinsic-size: auto var(--harbor-cull-min, 240px);
}
@@ -1996,13 +2189,31 @@ html[data-theme-layout="minui"] .anime-award-banner-logo {
button:focus-visible,
a:focus-visible,
+input:focus-visible,
select:focus-visible,
summary:focus-visible,
+textarea:focus-visible,
[tabindex]:focus-visible {
outline: 2px solid var(--color-accent) !important;
outline-offset: 2px;
}
+/* Search overlay: the editing indicator rings the whole search bar panel,
+ not the bare input. Keys/TV modality swaps this for the injected TV ring. */
+[data-search-overlay] [data-tv-search-editing-focused="true"] {
+ outline: 2px solid rgba(255, 255, 255, 0.55);
+ outline-offset: 3px;
+}
+
+[data-settings-search-field][data-tv-search-nav-focused="true"]
+ + [data-settings-search-mode]
+ [data-settings-search-nav-hint],
+[data-settings-search-field][data-tv-search-editing-focused="true"]
+ + [data-settings-search-mode]
+ [data-settings-search-edit-hint] {
+ display: inline-flex;
+}
+
/* Opaque-surface overrides for translucent "glass" facet (aurora + any user glass theme).
Derived from each theme's own --color-canvas via color-mix so they adapt per theme.
Canvas/bokeh page background is intentionally left untouched. Opaque themes
diff --git a/src/lib/account/client.ts b/src/lib/account/client.ts
index 8a16f9588..9f5e806fe 100644
--- a/src/lib/account/client.ts
+++ b/src/lib/account/client.ts
@@ -1,7 +1,6 @@
import { authToken, refreshToken } from "@/lib/theme-auth";
-import { HARBOR_API_BASE } from "@/lib/config/endpoints";
-const API = `${HARBOR_API_BASE}/themes/api`;
+const API = "https://harbor.site/themes/api";
function url(path: string): string {
return `${API}${path}`;
@@ -30,10 +29,7 @@ async function unwrap(r: Response): Promise {
return d as T;
}
-export async function getJson(
- path: string,
- opts?: { bearer?: boolean; signal?: AbortSignal },
-): Promise {
+export async function getJson(path: string, opts?: { bearer?: boolean; signal?: AbortSignal }): Promise {
const bearer = opts?.bearer ?? false;
let r = await fetch(url(path), { headers: headers(bearer, false), signal: opts?.signal });
if (r.status === 401 && bearer && (await refreshToken())) {
@@ -42,18 +38,10 @@ export async function getJson(
return unwrap(r);
}
-export async function postJson(
- path: string,
- body: Record,
- opts?: { bearer?: boolean },
-): Promise {
+export async function postJson(path: string, body: Record, opts?: { bearer?: boolean }): Promise {
const bearer = opts?.bearer ?? false;
const send = () =>
- fetch(url(path), {
- method: "POST",
- headers: headers(bearer, true),
- body: JSON.stringify(body),
- });
+ fetch(url(path), { method: "POST", headers: headers(bearer, true), body: JSON.stringify(body) });
let r = await send();
if (r.status === 401 && bearer && (await refreshToken())) r = await send();
return unwrap(r);
diff --git a/src/lib/account/name-sync.ts b/src/lib/account/name-sync.ts
index acc695a5a..a3b4368f8 100644
--- a/src/lib/account/name-sync.ts
+++ b/src/lib/account/name-sync.ts
@@ -1,8 +1,7 @@
import { safeFetch } from "@/lib/safe-fetch";
import { authToken } from "@/lib/theme-auth";
-import { HARBOR_API_BASE } from "@/lib/config/endpoints";
-const SOCIAL_BASE = `${HARBOR_API_BASE}/themes/api/social`;
+const SOCIAL_BASE = "https://harbor.site/themes/api/social";
const PROFILE_ENDPOINT = `${SOCIAL_BASE}/me/profile`;
export function nameEquals(a: string | null | undefined, b: string | null | undefined): boolean {
diff --git a/src/lib/ad-report/submit.ts b/src/lib/ad-report/submit.ts
index dde3b125b..95bf4f78c 100644
--- a/src/lib/ad-report/submit.ts
+++ b/src/lib/ad-report/submit.ts
@@ -1,9 +1,8 @@
import { safeFetch } from "@/lib/safe-fetch";
import { fingerprint } from "@/lib/skip-intro/fingerprint";
import type { PlayerStreamRef } from "@/lib/view";
-import { HARBOR_BUGS_BASE } from "@/lib/config/endpoints";
-const REPORT_URL = `${HARBOR_BUGS_BASE}/v1/adreport`;
+const REPORT_URL = "https://bugs.harbor.site/v1/adreport";
export type AdRange = { startSec: number; endSec: number };
diff --git a/src/lib/addons-store/elfhosted.ts b/src/lib/addons-store/elfhosted.ts
deleted file mode 100644
index 7b36481f7..000000000
--- a/src/lib/addons-store/elfhosted.ts
+++ /dev/null
@@ -1,102 +0,0 @@
-export type ElfProduct = {
- slug: string;
- label: string;
- monthlyUsd: number;
- match: string[];
-};
-
-const STORE = "https://store.elfhosted.com/product";
-
-const PRODUCTS: ElfProduct[] = [
- { slug: "comet", label: "Comet", monthlyUsd: 9, match: ["comet"] },
- { slug: "mediafusion", label: "MediaFusion", monthlyUsd: 9, match: ["mediafusion"] },
- { slug: "aiostreams", label: "AIOStreams", monthlyUsd: 9, match: ["aiostreams"] },
- { slug: "aiometadata", label: "AIOMetadata", monthlyUsd: 9, match: ["aiometadata"] },
- { slug: "stremthru", label: "StremThru", monthlyUsd: 9, match: ["stremthru"] },
- { slug: "jackettio", label: "Jackettio", monthlyUsd: 9, match: ["jackettio"] },
- {
- slug: "nuvio-streams",
- label: "Nuvio Streams",
- monthlyUsd: 9,
- match: ["nuviostreams", "nuvio"],
- },
- { slug: "streamvix", label: "StreamViX", monthlyUsd: 9, match: ["streamvix"] },
- { slug: "webstreamr", label: "WebStreamr", monthlyUsd: 9, match: ["webstreamr"] },
- { slug: "tvvoo", label: "TVVoo", monthlyUsd: 9, match: ["tvvoo"] },
- { slug: "plexio", label: "Plexio", monthlyUsd: 9, match: ["plexio"] },
- { slug: "usenet-streamer", label: "Usenet Streamer", monthlyUsd: 9, match: ["usenetstreamer"] },
- { slug: "chillibridge", label: "ChilliBridge", monthlyUsd: 9, match: ["chillibridge"] },
- { slug: "mediastorm-4k", label: "MediaStorm", monthlyUsd: 9, match: ["mediastorm"] },
- { slug: "rpdb", label: "RatingPosterDB", monthlyUsd: 9, match: ["rpdb", "ratingposterdb"] },
- { slug: "youriptv", label: "YourIPTV", monthlyUsd: 9, match: ["youriptv"] },
- { slug: "agregarr", label: "Agregarr", monthlyUsd: 9, match: ["agregarr"] },
-];
-
-function fold(s: string): string {
- return s.toLowerCase().replace(/[^a-z0-9]/g, "");
-}
-
-function tokens(s: string): string[] {
- return s
- .toLowerCase()
- .split(/[^a-z0-9]+/)
- .filter(Boolean);
-}
-
-function hostTokens(url: string | null | undefined): string[] {
- if (!url) return [];
- try {
- const u = new URL(url);
- return tokens(u.hostname + " " + u.pathname);
- } catch {
- return tokens(url);
- }
-}
-
-export function elfProductFor(input: {
- id?: string | null;
- name?: string | null;
- url?: string | null;
-}): ElfProduct | null {
- const id = fold(input.id ?? "");
- const name = fold(input.name ?? "");
- const parts = [
- ...tokens(input.id ?? ""),
- ...tokens(input.name ?? ""),
- ...hostTokens(input.url),
- ];
- if (!id && !name && parts.length === 0) return null;
- for (const p of PRODUCTS) {
- for (const key of p.match) {
- if (id === key || name === key) return p;
- for (const part of parts) {
- if (part === key) return p;
- if (key.length >= 5 && part.startsWith(key)) return p;
- }
- }
- }
- return null;
-}
-
-export function elfProductUrl(slug: string): string {
- return `${STORE}/${slug}/`;
-}
-
-export const ELF_BUNDLE = {
- url: `${STORE}/stremio-addons-bundle/`,
- monthlyUsd: 29,
- trialUsd: 1,
- trialDays: 7,
- addonCount: 15,
- singleUsd: 9,
-};
-
-export function isElfHostedInstance(transportUrl: string | null | undefined): boolean {
- if (!transportUrl) return false;
- try {
- const host = new URL(transportUrl).hostname.toLowerCase();
- return host === "elfhosted.com" || host.endsWith(".elfhosted.com");
- } catch {
- return false;
- }
-}
diff --git a/src/lib/addons-store/pending-detail.ts b/src/lib/addons-store/pending-detail.ts
deleted file mode 100644
index 6cf955835..000000000
--- a/src/lib/addons-store/pending-detail.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-type PendingAddon = { manifestUrl: string; manifest: unknown };
-
-const pending = new Map();
-
-export function rememberPendingAddon(id: string, manifestUrl: string, manifest: unknown): void {
- if (!id || !manifestUrl) return;
- pending.set(id, { manifestUrl, manifest });
- if (pending.size > 60) {
- const oldest = pending.keys().next().value;
- if (oldest) pending.delete(oldest);
- }
-}
-
-export function recallPendingAddon(id: string): PendingAddon | null {
- return pending.get(id) ?? null;
-}
diff --git a/src/lib/ai-episode-search.ts b/src/lib/ai-episode-search.ts
index 59c5d3101..8cf869a91 100644
--- a/src/lib/ai-episode-search.ts
+++ b/src/lib/ai-episode-search.ts
@@ -1,6 +1,5 @@
import { extractJsonArray, friendlyAiError } from "./ai-search";
import { DEFAULT_AI_MODEL, migrateModelId } from "./ai-models";
-import { HARBOR_API_BASE } from "@/lib/config/endpoints";
const OPENROUTER = "https://openrouter.ai/api/v1/chat/completions";
const GROQ = "https://api.groq.com/openai/v1/chat/completions";
@@ -9,7 +8,7 @@ export type EpisodeRef = { season: number; episode: number };
export type EpisodeCandidate = EpisodeRef & { name?: string; overview?: string };
const SYSTEM_PROMPT =
- 'You are an expert on television and anime. A viewer describes an episode from vague memory: a plot point, a scene, a quote, a character moment, or a meme. Identify which episode they mean. Lean on your own knowledge of the show first, then ground the answer in the provided list, which holds the exact seasons, episode numbers, and titles that are available (a short synopsis may follow the title, but it is often brief and omits subplots, so trust your own knowledge of the show when the synopsis does not mention the detail). Reply with ONLY a JSON array (no prose, no markdown) of up to 5 episodes, most likely first, each {"season": number, "episode": number}. Only return season/episode pairs that appear in the list. If nothing plausibly matches, reply with [].';
+ "You are an expert on television and anime. A viewer describes an episode from vague memory: a plot point, a scene, a quote, a character moment, or a meme. Identify which episode they mean. Lean on your own knowledge of the show first, then ground the answer in the provided list, which holds the exact seasons, episode numbers, and titles that are available (a short synopsis may follow the title, but it is often brief and omits subplots, so trust your own knowledge of the show when the synopsis does not mention the detail). Reply with ONLY a JSON array (no prose, no markdown) of up to 5 episodes, most likely first, each {\"season\": number, \"episode\": number}. Only return season/episode pairs that appear in the list. If nothing plausibly matches, reply with [].";
export async function aiFindEpisodes(
key: string,
@@ -25,13 +24,14 @@ export async function aiFindEpisodes(
.map((e) => `s${e.season}e${e.episode}: ${e.name ?? ""}${e.overview ? ` - ${e.overview}` : ""}`)
.join("\n");
const titlesOnly = episodes.map((e) => `s${e.season}e${e.episode}: ${e.name ?? ""}`).join("\n");
- const catalog = withOverview.length <= 24000 ? withOverview : titlesOnly.slice(0, 48000);
+ const catalog =
+ withOverview.length <= 24000 ? withOverview : titlesOnly.slice(0, 48000);
const headers: Record = {
Authorization: `Bearer ${key.trim()}`,
"Content-Type": "application/json",
};
if (!isGroq) {
- headers["HTTP-Referer"] = HARBOR_API_BASE;
+ headers["HTTP-Referer"] = "https://harbor.site";
headers["X-Title"] = "Harbor";
}
const res = await fetch(isGroq ? GROQ : OPENROUTER, {
diff --git a/src/lib/ai-search.ts b/src/lib/ai-search.ts
index 317ed8cc3..e57d79dd6 100644
--- a/src/lib/ai-search.ts
+++ b/src/lib/ai-search.ts
@@ -1,225 +1,221 @@
-import { searchCinemeta } from "./search";
-import { DEFAULT_AI_MODEL, migrateModelId } from "./ai-models";
-import type { Meta } from "./cinemeta";
-
+import { searchCinemeta } from "./search";
+import { DEFAULT_AI_MODEL, migrateModelId } from "./ai-models";
+import type { Meta } from "./cinemeta";
+
import { releaseText } from "@/lib/release-info";
-import { HARBOR_API_BASE } from "@/lib/config/endpoints";
-const OPENROUTER_URL = "https://openrouter.ai/api/v1/chat/completions";
-const GROQ_URL = "https://api.groq.com/openai/v1/chat/completions";
-const MAX_SUGGESTIONS = 12;
-
-export type AiSuggestion = {
- title: string;
- year?: number;
- type?: "movie" | "series";
- season?: number;
- episode?: number;
- episodeTitle?: string;
-};
-
-export type AiResult = {
- meta: Meta;
- season?: number;
- episode?: number;
- episodeTitle?: string;
-};
-
-const SYSTEM_PROMPT =
- 'You are a film and TV discovery engine for a media app. The user describes what they want to watch in natural language. Reply with ONLY a JSON array (no prose, no markdown code fences) of up to 12 specific, real movies or TV shows that best match, most relevant first. Each element is an object: {"title": string, "year": number, "type": "movie" or "series"}. If the user is clearly asking about a SPECIFIC EPISODE (by plot, scene, character, quote, or meme, for example \'the south park episode with kanye west\'), return that show as the first result and add its "season" and "episode" numbers plus "episodeTitle", like {"title": "South Park", "type": "series", "season": 13, "episode": 5, "episodeTitle": "Fishsticks"}. Use your own knowledge of the show to pick the exact episode. Use the original or most internationally recognized title. Never repeat a title. When live web context is provided below, treat it as authoritative ground truth for fact-grounded queries (people\'s filmographies, box office, recency, regional titles, memes, current seasons/episodes): use it as your primary source and cite the exact title/year it mentions rather than guessing from training data.';
-
-export async function aiSuggest(
- key: string,
- model: string,
- isGroq: boolean,
- query: string,
- webContext?: string,
-): Promise {
- const q = query.trim();
- if (!key.trim() || !q) return [];
- const url = isGroq ? GROQ_URL : OPENROUTER_URL;
- const headers: Record = {
- Authorization: `Bearer ${key.trim()}`,
- "Content-Type": "application/json",
- };
- if (!isGroq) {
- headers["HTTP-Referer"] = HARBOR_API_BASE;
- headers["X-Title"] = "Harbor";
- }
- const systemPrompt = webContext?.trim()
- ? `${SYSTEM_PROMPT}\n\nLive web context for this query (use it when relevant, fall back to your own knowledge otherwise):\n${webContext}`
- : SYSTEM_PROMPT;
- const res = await fetch(url, {
- method: "POST",
- headers,
- body: JSON.stringify({
- model: migrateModelId(model.trim()) || DEFAULT_AI_MODEL,
- temperature: 0.4,
- max_tokens: 2000,
- messages: [
- { role: "system", content: systemPrompt },
- { role: "user", content: q },
- ],
- }),
- });
- if (!res.ok) {
- const detail = await res.text().catch(() => "");
- throw new Error(friendlyAiError(res.status, detail));
- }
- const data = (await res.json()) as {
- choices?: Array<{ message?: { content?: string } }>;
- error?: { message?: string; code?: number };
- };
- if (data?.error) {
- const code = typeof data.error.code === "number" ? data.error.code : 0;
- throw new Error(friendlyAiError(code, data.error.message ?? ""));
- }
- const content = data?.choices?.[0]?.message?.content;
- if (typeof content !== "string" || content.trim() === "") {
- throw new Error(
- "The model replied with nothing usable. Try another model (hold the AI button) or rephrase.",
- );
- }
- return parseSuggestions(content);
-}
-
-export function friendlyAiError(status: number, detail = ""): string {
- const friendly =
- status === 401
- ? "Your API key was rejected. Check it in Settings, AI search."
- : status === 402
- ? "Your account is out of credits for this model. Pick a free model or top up."
- : status === 404
- ? "This model no longer exists at the provider. Pick another model (hold the AI button)."
- : status === 413
- ? "That request was too big for this model. Pick a model with a larger context."
- : status === 429
- ? "The model is rate-limited right now. Try again in a moment or switch models."
- : status
- ? `AI search failed (${status}).`
- : "AI search failed.";
- return `${friendly} ${detail.slice(0, 140)}`.trim();
-}
-
-export function extractJsonArray(raw: string): string | null {
- const s = raw.replace(/```(?:json)?/gi, "");
- const m = /\[\s*\{/.exec(s);
- if (!m) return null;
- const start = m.index;
- let depth = 0;
- let inStr = false;
- let esc = false;
- for (let i = start; i < s.length; i += 1) {
- const ch = s[i];
- if (inStr) {
- if (esc) esc = false;
- else if (ch === "\\") esc = true;
- else if (ch === '"') inStr = false;
- continue;
- }
- if (ch === '"') inStr = true;
- else if (ch === "[") depth += 1;
- else if (ch === "]") {
- depth -= 1;
- if (depth === 0) return s.slice(start, i + 1);
- }
- }
- return null;
-}
-
-function parseSuggestions(content: string): AiSuggestion[] {
- const span = extractJsonArray(content);
- if (!span) return [];
- let arr: unknown;
- try {
- arr = JSON.parse(span);
- } catch {
- return [];
- }
- if (!Array.isArray(arr)) return [];
- const out: AiSuggestion[] = [];
- const seen = new Set();
- for (const item of arr) {
- if (!item || typeof item !== "object") continue;
- const o = item as Record;
- const title = typeof o.title === "string" ? o.title.trim() : "";
- if (!title) continue;
- const dedup = title.toLowerCase();
- if (seen.has(dedup)) continue;
- seen.add(dedup);
- const year =
- typeof o.year === "number" && Number.isFinite(o.year) ? Math.round(o.year) : undefined;
- const type = o.type === "series" || o.type === "movie" ? o.type : undefined;
- const season =
- typeof o.season === "number" && Number.isFinite(o.season) ? Math.round(o.season) : undefined;
- const episode =
- typeof o.episode === "number" && Number.isFinite(o.episode)
- ? Math.round(o.episode)
- : undefined;
- const episodeTitle =
- typeof o.episodeTitle === "string" && o.episodeTitle.trim()
- ? o.episodeTitle.trim()
- : undefined;
- out.push({ title, year, type, season, episode, episodeTitle });
- if (out.length >= MAX_SUGGESTIONS) break;
- }
- return out;
-}
-
-function norm(s: string): string {
- return s.toLowerCase().replace(/[^a-z0-9]+/g, "");
-}
-
-function pickBest(pool: Meta[], suggestion: AiSuggestion): Meta | null {
- const target = norm(suggestion.title);
- if (!target) return null;
- let best: Meta | null = null;
- let bestScore = 0;
- for (const m of pool) {
- const name = norm(m.name ?? "");
- if (!name) continue;
- let nameScore = 0;
- if (name === target) nameScore = 5;
- else if (target.length >= 4 && name.includes(target)) nameScore = 3;
- if (nameScore === 0) continue;
- let score = nameScore;
- if (suggestion.type && m.type === suggestion.type) score += 1;
- if (suggestion.year && releaseText(m.releaseInfo).includes(String(suggestion.year))) score += 1;
- if (score > bestScore) {
- bestScore = score;
- best = m;
- }
- }
- return best;
-}
-
-export async function resolveAiSuggestions(suggestions: AiSuggestion[]): Promise {
- const resolved = await Promise.all(
- suggestions.map(async (s): Promise => {
- try {
- const c = await searchCinemeta(s.title);
- const meta = pickBest([...c.movies, ...c.series], s);
- if (!meta) return null;
- const isEpisode = meta.type === "series" && s.season != null && s.episode != null;
- return {
- meta,
- season: isEpisode ? s.season : undefined,
- episode: isEpisode ? s.episode : undefined,
- episodeTitle: isEpisode ? s.episodeTitle : undefined,
- };
- } catch {
- return null;
- }
- }),
- );
- const out: AiResult[] = [];
- const seen = new Set();
- for (const r of resolved) {
- if (!r) continue;
- const key =
- r.season != null && r.episode != null ? `${r.meta.id}:${r.season}:${r.episode}` : r.meta.id;
- if (seen.has(key)) continue;
- seen.add(key);
- out.push(r);
- }
- return out;
-}
+const OPENROUTER_URL = "https://openrouter.ai/api/v1/chat/completions";
+const GROQ_URL = "https://api.groq.com/openai/v1/chat/completions";
+const MAX_SUGGESTIONS = 12;
+
+export type AiSuggestion = {
+ title: string;
+ year?: number;
+ type?: "movie" | "series";
+ season?: number;
+ episode?: number;
+ episodeTitle?: string;
+};
+
+export type AiResult = {
+ meta: Meta;
+ season?: number;
+ episode?: number;
+ episodeTitle?: string;
+};
+
+const SYSTEM_PROMPT =
+ "You are a film and TV discovery engine for a media app. The user describes what they want to watch in natural language. Reply with ONLY a JSON array (no prose, no markdown code fences) of up to 12 specific, real movies or TV shows that best match, most relevant first. Each element is an object: {\"title\": string, \"year\": number, \"type\": \"movie\" or \"series\"}. If the user is clearly asking about a SPECIFIC EPISODE (by plot, scene, character, quote, or meme, for example 'the south park episode with kanye west'), return that show as the first result and add its \"season\" and \"episode\" numbers plus \"episodeTitle\", like {\"title\": \"South Park\", \"type\": \"series\", \"season\": 13, \"episode\": 5, \"episodeTitle\": \"Fishsticks\"}. Use your own knowledge of the show to pick the exact episode. Use the original or most internationally recognized title. Never repeat a title. When live web context is provided below, treat it as authoritative ground truth for fact-grounded queries (people's filmographies, box office, recency, regional titles, memes, current seasons/episodes): use it as your primary source and cite the exact title/year it mentions rather than guessing from training data.";
+
+export async function aiSuggest(
+ key: string,
+ model: string,
+ isGroq: boolean,
+ query: string,
+ webContext?: string,
+): Promise {
+ const q = query.trim();
+ if (!key.trim() || !q) return [];
+ const url = isGroq ? GROQ_URL : OPENROUTER_URL;
+ const headers: Record = {
+ Authorization: `Bearer ${key.trim()}`,
+ "Content-Type": "application/json",
+ };
+ if (!isGroq) {
+ headers["HTTP-Referer"] = "https://harbor.site";
+ headers["X-Title"] = "Harbor";
+ }
+ const systemPrompt = webContext?.trim()
+ ? `${SYSTEM_PROMPT}\n\nLive web context for this query (use it when relevant, fall back to your own knowledge otherwise):\n${webContext}`
+ : SYSTEM_PROMPT;
+ const res = await fetch(url, {
+ method: "POST",
+ headers,
+ body: JSON.stringify({
+ model: migrateModelId(model.trim()) || DEFAULT_AI_MODEL,
+ temperature: 0.4,
+ max_tokens: 2000,
+ messages: [
+ { role: "system", content: systemPrompt },
+ { role: "user", content: q },
+ ],
+ }),
+ });
+ if (!res.ok) {
+ const detail = await res.text().catch(() => "");
+ throw new Error(friendlyAiError(res.status, detail));
+ }
+ const data = (await res.json()) as {
+ choices?: Array<{ message?: { content?: string } }>;
+ error?: { message?: string; code?: number };
+ };
+ if (data?.error) {
+ const code = typeof data.error.code === "number" ? data.error.code : 0;
+ throw new Error(friendlyAiError(code, data.error.message ?? ""));
+ }
+ const content = data?.choices?.[0]?.message?.content;
+ if (typeof content !== "string" || content.trim() === "") {
+ throw new Error(
+ "The model replied with nothing usable. Try another model (hold the AI button) or rephrase.",
+ );
+ }
+ return parseSuggestions(content);
+}
+
+export function friendlyAiError(status: number, detail = ""): string {
+ const friendly =
+ status === 401
+ ? "Your API key was rejected. Check it in Settings, AI search."
+ : status === 402
+ ? "Your account is out of credits for this model. Pick a free model or top up."
+ : status === 404
+ ? "This model no longer exists at the provider. Pick another model (hold the AI button)."
+ : status === 413
+ ? "That request was too big for this model. Pick a model with a larger context."
+ : status === 429
+ ? "The model is rate-limited right now. Try again in a moment or switch models."
+ : status
+ ? `AI search failed (${status}).`
+ : "AI search failed.";
+ return `${friendly} ${detail.slice(0, 140)}`.trim();
+}
+
+export function extractJsonArray(raw: string): string | null {
+ const s = raw.replace(/```(?:json)?/gi, "");
+ const m = /\[\s*\{/.exec(s);
+ if (!m) return null;
+ const start = m.index;
+ let depth = 0;
+ let inStr = false;
+ let esc = false;
+ for (let i = start; i < s.length; i += 1) {
+ const ch = s[i];
+ if (inStr) {
+ if (esc) esc = false;
+ else if (ch === "\\") esc = true;
+ else if (ch === '"') inStr = false;
+ continue;
+ }
+ if (ch === '"') inStr = true;
+ else if (ch === "[") depth += 1;
+ else if (ch === "]") {
+ depth -= 1;
+ if (depth === 0) return s.slice(start, i + 1);
+ }
+ }
+ return null;
+}
+
+function parseSuggestions(content: string): AiSuggestion[] {
+ const span = extractJsonArray(content);
+ if (!span) return [];
+ let arr: unknown;
+ try {
+ arr = JSON.parse(span);
+ } catch {
+ return [];
+ }
+ if (!Array.isArray(arr)) return [];
+ const out: AiSuggestion[] = [];
+ const seen = new Set();
+ for (const item of arr) {
+ if (!item || typeof item !== "object") continue;
+ const o = item as Record;
+ const title = typeof o.title === "string" ? o.title.trim() : "";
+ if (!title) continue;
+ const dedup = title.toLowerCase();
+ if (seen.has(dedup)) continue;
+ seen.add(dedup);
+ const year =
+ typeof o.year === "number" && Number.isFinite(o.year) ? Math.round(o.year) : undefined;
+ const type = o.type === "series" || o.type === "movie" ? o.type : undefined;
+ const season =
+ typeof o.season === "number" && Number.isFinite(o.season) ? Math.round(o.season) : undefined;
+ const episode =
+ typeof o.episode === "number" && Number.isFinite(o.episode) ? Math.round(o.episode) : undefined;
+ const episodeTitle =
+ typeof o.episodeTitle === "string" && o.episodeTitle.trim() ? o.episodeTitle.trim() : undefined;
+ out.push({ title, year, type, season, episode, episodeTitle });
+ if (out.length >= MAX_SUGGESTIONS) break;
+ }
+ return out;
+}
+
+function norm(s: string): string {
+ return s.toLowerCase().replace(/[^a-z0-9]+/g, "");
+}
+
+function pickBest(pool: Meta[], suggestion: AiSuggestion): Meta | null {
+ const target = norm(suggestion.title);
+ if (!target) return null;
+ let best: Meta | null = null;
+ let bestScore = 0;
+ for (const m of pool) {
+ const name = norm(m.name ?? "");
+ if (!name) continue;
+ let nameScore = 0;
+ if (name === target) nameScore = 5;
+ else if (target.length >= 4 && name.includes(target)) nameScore = 3;
+ if (nameScore === 0) continue;
+ let score = nameScore;
+ if (suggestion.type && m.type === suggestion.type) score += 1;
+ if (suggestion.year && releaseText(m.releaseInfo).includes(String(suggestion.year)))
+ score += 1;
+ if (score > bestScore) {
+ bestScore = score;
+ best = m;
+ }
+ }
+ return best;
+}
+
+export async function resolveAiSuggestions(suggestions: AiSuggestion[]): Promise {
+ const resolved = await Promise.all(
+ suggestions.map(async (s): Promise => {
+ try {
+ const c = await searchCinemeta(s.title);
+ const meta = pickBest([...c.movies, ...c.series], s);
+ if (!meta) return null;
+ const isEpisode = meta.type === "series" && s.season != null && s.episode != null;
+ return {
+ meta,
+ season: isEpisode ? s.season : undefined,
+ episode: isEpisode ? s.episode : undefined,
+ episodeTitle: isEpisode ? s.episodeTitle : undefined,
+ };
+ } catch {
+ return null;
+ }
+ }),
+ );
+ const out: AiResult[] = [];
+ const seen = new Set();
+ for (const r of resolved) {
+ if (!r) continue;
+ const key =
+ r.season != null && r.episode != null ? `${r.meta.id}:${r.season}:${r.episode}` : r.meta.id;
+ if (seen.has(key)) continue;
+ seen.add(key);
+ out.push(r);
+ }
+ return out;
+}
diff --git a/src/lib/anilist/config.ts b/src/lib/anilist/config.ts
index 6d5bed048..c357d4f8b 100644
--- a/src/lib/anilist/config.ts
+++ b/src/lib/anilist/config.ts
@@ -1,8 +1,6 @@
-import { HARBOR_BUGS_BASE } from "@/lib/config/endpoints";
-
export const ANILIST_GRAPHQL_URL = "https://graphql.anilist.co";
export const ANILIST_AUTHORIZE_URL = "https://anilist.co/api/v2/oauth/authorize";
export const ANILIST_PIN_REDIRECT_URI = "https://anilist.co/api/v2/oauth/pin";
export const ANILIST_DEVELOPER_URL = "https://anilist.co/settings/developer";
export const ANILIST_CLIENT_ID = "42941";
-export const ANILIST_TOKEN_EXCHANGE_URL = `${HARBOR_BUGS_BASE}/v1/anilist/token`;
+export const ANILIST_TOKEN_EXCHANGE_URL = "https://bugs.harbor.site/v1/anilist/token";
diff --git a/src/lib/anime-awards-source.ts b/src/lib/anime-awards-source.ts
index 615646c84..8d259b25e 100644
--- a/src/lib/anime-awards-source.ts
+++ b/src/lib/anime-awards-source.ts
@@ -1,7 +1,6 @@
import { useSyncExternalStore } from "react";
import { safeFetch } from "@/lib/safe-fetch";
import type { AwardSourceId, AwardWin } from "@/lib/anime-awards";
-import { HARBOR_API_BASE } from "@/lib/config/endpoints";
type MasterIds = {
imdb?: string;
@@ -23,7 +22,7 @@ type MasterWin = {
type MasterEntry = { title: string; ids: MasterIds | null; wins: MasterWin[] };
type Master = { updatedAt?: string; entries?: MasterEntry[] };
-const URL = `${HARBOR_API_BASE}/anime-awards.json`;
+const URL = "https://harbor.site/anime-awards.json";
let idIndex: Map | null = null;
let loading: Promise | null = null;
diff --git a/src/lib/anime-hosted-hero.ts b/src/lib/anime-hosted-hero.ts
index e3ecd5562..23523e959 100644
--- a/src/lib/anime-hosted-hero.ts
+++ b/src/lib/anime-hosted-hero.ts
@@ -1,8 +1,7 @@
import type { Meta } from "@/lib/cinemeta";
import { safeFetch } from "@/lib/safe-fetch";
-import { HARBOR_API_BASE } from "@/lib/config/endpoints";
-const HOSTED_URL = `${HARBOR_API_BASE}/api/hero/anime.json`;
+const HOSTED_URL = "https://harbor.site/api/hero/anime.json";
const CACHE_KEY = "harbor.anime.hero.hosted.v5";
const TTL_MS = 3 * 60 * 60 * 1000;
diff --git a/src/lib/announcements.ts b/src/lib/announcements.ts
index bef450e4a..0f7fbe467 100644
--- a/src/lib/announcements.ts
+++ b/src/lib/announcements.ts
@@ -1,6 +1,5 @@
import { useCallback, useEffect, useState } from "react";
import { safeFetch } from "@/lib/safe-fetch";
-import { HARBOR_API_BASE } from "@/lib/config/endpoints";
export type AnnouncementSection = { heading?: string; items: string[] };
@@ -19,7 +18,7 @@ export type Announcement = {
export type AnnouncementScope = "anime" | "global";
-const URL = `${HARBOR_API_BASE}/announcements.json`;
+const URL = "https://harbor.site/announcements.json";
const SEEN_KEY = "harbor.announce.seen";
function isSeen(id: string): boolean {
diff --git a/src/lib/award-icons.ts b/src/lib/award-icons.ts
index 389acb904..47c4478ad 100644
--- a/src/lib/award-icons.ts
+++ b/src/lib/award-icons.ts
@@ -107,7 +107,7 @@ async function toIconDataUrl(name: string, bytes: Uint8Array): Promise], { type: mime }));
try {
const img = await new Promise((resolve, reject) => {
const im = new Image();
diff --git a/src/lib/bug-report.ts b/src/lib/bug-report.ts
index 8dd5faebd..a37867631 100644
--- a/src/lib/bug-report.ts
+++ b/src/lib/bug-report.ts
@@ -1,9 +1,8 @@
-import { HARBOR_BUGS_BASE } from "@/lib/config/endpoints";
-
declare const __APP_VERSION__: string;
const ENDPOINT =
- (import.meta.env.VITE_BUG_REPORT_ENDPOINT as string | undefined) || HARBOR_BUGS_BASE;
+ (import.meta.env.VITE_BUG_REPORT_ENDPOINT as string | undefined) ||
+ "https://bugs.harbor.site";
export type Severity = "low" | "normal" | "high" | "critical";
@@ -49,10 +48,7 @@ export function installBugReportErrorCapture() {
if (installed || typeof window === "undefined") return;
installed = true;
window.addEventListener("error", (e) => {
- push(
- `${e.message}${e.filename ? ` (${e.filename}:${e.lineno ?? "?"})` : ""}`,
- "window.onerror",
- );
+ push(`${e.message}${e.filename ? ` (${e.filename}:${e.lineno ?? "?"})` : ""}`, "window.onerror");
});
window.addEventListener("unhandledrejection", (e) => {
const r = e.reason as unknown;
@@ -163,7 +159,10 @@ export async function submitErrorReport(args: {
code: args.code,
title: args.title,
detail: args.detail || null,
- path: typeof window !== "undefined" ? window.location.pathname + window.location.hash : "",
+ path:
+ typeof window !== "undefined"
+ ? window.location.pathname + window.location.hash
+ : "",
recentErrors: getRecentErrors().slice(-20),
}),
);
diff --git a/src/lib/build-feedback-submit.ts b/src/lib/build-feedback-submit.ts
index 882733592..89bac1f75 100644
--- a/src/lib/build-feedback-submit.ts
+++ b/src/lib/build-feedback-submit.ts
@@ -1,8 +1,7 @@
import { safeFetch } from "@/lib/safe-fetch";
import { APP_VERSION, BUILD_ID, IS_BETA_BUILD } from "@/lib/build-info";
-import { HARBOR_BUGS_BASE } from "@/lib/config/endpoints";
-const URL = `${HARBOR_BUGS_BASE}/v1/feedback`;
+const URL = "https://bugs.harbor.site/v1/feedback";
export async function submitBuildFeedback(rating: number): Promise {
try {
diff --git a/src/lib/bundle-store.ts b/src/lib/bundle-store.ts
index 69fe1ed9b..a6385ecd2 100644
--- a/src/lib/bundle-store.ts
+++ b/src/lib/bundle-store.ts
@@ -2,9 +2,8 @@ import { authToken } from "./theme-auth";
import { clientId, type MyUpload } from "./theme-store";
import { installAwardPack, type AwardPack } from "./award-icons";
import { installStreamBadgePack } from "./community-badge-packs";
-import { HARBOR_API_BASE } from "@/lib/config/endpoints";
-const ORIGIN = HARBOR_API_BASE;
+const ORIGIN = "https://harbor.site";
const API = `${ORIGIN}/themes/api`;
const UPLOADS_KEY = "harbor.bundle-uploads.v1";
@@ -34,12 +33,7 @@ export type StoreBundle = {
export type BundleIconBlob = { key: string; blob: Blob };
-export type BundleUploadResult = {
- id: string;
- kind: BundleKind;
- ownerToken: string;
- share: string;
-};
+export type BundleUploadResult = { id: string; kind: BundleKind; ownerToken: string; share: string };
function abs(u: string | null | undefined): string | null {
if (!u) return null;
@@ -69,11 +63,7 @@ function normalize(b: Record): StoreBundle {
};
}
-export async function browseBundles(
- kind: BundleKind,
- sort = "top",
- q = "",
-): Promise {
+export async function browseBundles(kind: BundleKind, sort = "top", q = ""): Promise {
const params = new URLSearchParams({ kind, sort });
if (q) params.set("q", q);
const r = await fetch(`${API}/bundles?${params.toString()}`);
@@ -123,10 +113,8 @@ export function forgetBundleUpload(id: string): void {
saveMyBundleUploads(getMyBundleUploads().filter((x) => x.id !== id));
}
-const BUNDLE_TOO_LARGE =
- "This bundle is too large to publish. Use fewer badges or smaller art, then try again.";
-const BUNDLE_UNREACHABLE =
- "Couldn't reach the bundle library. Check your connection, or if the bundle is very large try fewer or smaller icons.";
+const BUNDLE_TOO_LARGE = "This bundle is too large to publish. Use fewer badges or smaller art, then try again.";
+const BUNDLE_UNREACHABLE = "Couldn't reach the bundle library. Check your connection, or if the bundle is very large try fewer or smaller icons.";
async function postBundleForm(url: string, fd: FormData): Promise> {
let r: Response;
@@ -164,8 +152,7 @@ export async function updateBundle(
changelog: string,
): Promise {
const fd = new FormData();
- if (manifestJson)
- fd.append("manifest", new Blob([manifestJson], { type: "application/json" }), "manifest.json");
+ if (manifestJson) fd.append("manifest", new Blob([manifestJson], { type: "application/json" }), "manifest.json");
if (cover) fd.append("cover", cover, "cover.png");
for (const icon of icons) fd.append("icons", icon.blob, `${icon.key}.png`);
if (changelog) fd.append("changelog", changelog);
diff --git a/src/lib/collections.ts b/src/lib/collections.ts
new file mode 100644
index 000000000..130777a83
--- /dev/null
+++ b/src/lib/collections.ts
@@ -0,0 +1,383 @@
+import { useEffect, useMemo, useState } from "react";
+import { setItemWithRecovery, freeStorageSpace } from "@/lib/storage-recovery";
+import { randomUuid } from "@/lib/uuid";
+
+const KEY = "harbor.collections.v1";
+const PROFILES_KEY = "harbor.profiles.v1";
+const subs = new Set<() => void>();
+
+function activeCollectionsKey(): string {
+ try {
+ const raw = localStorage.getItem(PROFILES_KEY);
+ if (!raw) return KEY;
+ const s = JSON.parse(raw) as {
+ profiles?: Array<{ id: string; settingsLinked?: boolean }>;
+ activeId?: string | null;
+ };
+ const id = s.activeId;
+ if (!id) return KEY;
+ const p = s.profiles?.find((x) => x.id === id);
+ if (!p || p.settingsLinked !== false) return KEY;
+ return `harbor.collections.${id}`;
+ } catch {
+ return KEY;
+ }
+}
+
+if (typeof window !== "undefined") {
+ window.addEventListener("harbor:profiles-updated", () => {
+ memoryFallback = null;
+ for (const s of subs) s();
+ });
+}
+
+export type CollectionItemType = "movie" | "series" | "manga";
+
+export type CollectionItem = {
+ id: string;
+ type: CollectionItemType;
+ name: string;
+ poster?: string;
+};
+
+export type CollectionItemInput = {
+ id: string;
+ type?: string;
+ name?: string;
+ poster?: string;
+};
+
+export type Collection = {
+ id: string;
+ name: string;
+ description?: string;
+ coverImage?: string;
+ bgImage?: string;
+ tags?: string[];
+ shared?: boolean;
+ items: CollectionItem[];
+ createdAt: number;
+ updatedAt: number;
+};
+
+export const MAX_COLLECTIONS = 24;
+export const MAX_COLLECTION_ITEMS = 100;
+export const MAX_COLLECTION_NAME = 80;
+export const MAX_COLLECTION_DESCRIPTION = 500;
+export const MAX_COLLECTION_TAGS = 8;
+export const MAX_TAG_LENGTH = 24;
+
+export function normalizeTag(raw: string): string {
+ return raw
+ .trim()
+ .replace(/\s+/g, " ")
+ .replace(/[<>]/g, "")
+ .slice(0, MAX_TAG_LENGTH);
+}
+
+let memoryFallback: Collection[] | null = null;
+
+function inferType(id: string): "movie" | "series" {
+ if (/^(kitsu|mal|anilist|anidb):/i.test(id)) return "series";
+ return id.includes(":tv:") || id.includes(":series:") ? "series" : "movie";
+}
+
+function normalizeType(type: string | undefined, id: string): CollectionItemType {
+ if (type === "series" || type === "tv" || type === "anime") return "series";
+ if (type === "movie") return "movie";
+ if (type === "manga") return "manga";
+ return inferType(id);
+}
+
+function toItem(input: CollectionItemInput): CollectionItem {
+ return {
+ id: input.id,
+ type: normalizeType(input.type, input.id),
+ name: input.name ?? "",
+ poster: input.poster,
+ };
+}
+
+function read(): Collection[] {
+ if (memoryFallback) return memoryFallback.map((c) => ({ ...c, items: [...c.items] }));
+ try {
+ const key = activeCollectionsKey();
+ const raw = localStorage.getItem(key) ?? (key !== KEY ? localStorage.getItem(KEY) : null);
+ if (!raw) return [];
+ const arr = JSON.parse(raw) as unknown;
+ if (!Array.isArray(arr)) return [];
+ const out: Collection[] = [];
+ for (const el of arr) {
+ if (!el || typeof el !== "object") continue;
+ const e = el as Record;
+ if (typeof e.id !== "string" || typeof e.name !== "string") continue;
+ const items: CollectionItem[] = [];
+ if (Array.isArray(e.items)) {
+ for (const rawItem of e.items) {
+ if (!rawItem || typeof rawItem !== "object") continue;
+ const it = rawItem as Record;
+ if (typeof it.id !== "string") continue;
+ items.push({
+ id: it.id,
+ type: it.type === "series" ? "series" : it.type === "manga" ? "manga" : "movie",
+ name: typeof it.name === "string" ? it.name : "",
+ poster: typeof it.poster === "string" ? it.poster : undefined,
+ });
+ }
+ }
+ const tags: string[] = [];
+ if (Array.isArray(e.tags)) {
+ for (const raw of e.tags) {
+ if (typeof raw !== "string") continue;
+ const tag = normalizeTag(raw);
+ if (tag && !tags.some((t) => t.toLowerCase() === tag.toLowerCase())) tags.push(tag);
+ if (tags.length >= MAX_COLLECTION_TAGS) break;
+ }
+ }
+ out.push({
+ id: e.id,
+ name: e.name,
+ description: typeof e.description === "string" ? e.description : undefined,
+ coverImage: typeof e.coverImage === "string" ? e.coverImage : undefined,
+ bgImage: typeof e.bgImage === "string" ? e.bgImage : undefined,
+ tags: tags.length ? tags : undefined,
+ shared: e.shared === true ? true : undefined,
+ items,
+ createdAt: typeof e.createdAt === "number" ? e.createdAt : 0,
+ updatedAt: typeof e.updatedAt === "number" ? e.updatedAt : 0,
+ });
+ }
+ return out;
+ } catch {
+ return [];
+ }
+}
+
+function write(collections: Collection[]): void {
+ const key = activeCollectionsKey();
+ const payload = JSON.stringify(collections);
+ const ok = setItemWithRecovery(key, payload);
+ if (!ok) {
+ freeStorageSpace();
+ const retry = setItemWithRecovery(key, payload);
+ if (!retry) {
+ memoryFallback = collections;
+ console.warn("[collections] localStorage exhausted, holding collections in memory only");
+ } else {
+ memoryFallback = null;
+ }
+ } else {
+ memoryFallback = null;
+ }
+ for (const s of subs) s();
+}
+
+export function readCollections(): Collection[] {
+ return read().sort((a, b) => b.updatedAt - a.updatedAt);
+}
+
+export function getCollection(id: string): Collection | null {
+ return read().find((c) => c.id === id) ?? null;
+}
+
+export function subscribeCollections(fn: () => void): () => void {
+ subs.add(fn);
+ return () => {
+ subs.delete(fn);
+ };
+}
+
+export function createCollection(name: string): string | null {
+ const trimmed = name.trim().slice(0, MAX_COLLECTION_NAME);
+ if (!trimmed) return null;
+ const collections = read();
+ if (collections.length >= MAX_COLLECTIONS) return null;
+ const id = randomUuid();
+ const now = Date.now();
+ collections.push({ id, name: trimmed, items: [], createdAt: now, updatedAt: now });
+ write(collections);
+ return id;
+}
+
+export function renameCollection(id: string, name: string): void {
+ const trimmed = name.trim().slice(0, MAX_COLLECTION_NAME);
+ if (!trimmed) return;
+ const collections = read();
+ const c = collections.find((x) => x.id === id);
+ if (!c) return;
+ c.name = trimmed;
+ c.updatedAt = Date.now();
+ write(collections);
+}
+
+export function setCollectionDescription(id: string, description: string): void {
+ const collections = read();
+ const c = collections.find((x) => x.id === id);
+ if (!c) return;
+ const trimmed = description.trim().slice(0, MAX_COLLECTION_DESCRIPTION);
+ c.description = trimmed || undefined;
+ c.updatedAt = Date.now();
+ write(collections);
+}
+
+export function deleteCollection(id: string): void {
+ const collections = read();
+ const next = collections.filter((c) => c.id !== id);
+ if (next.length === collections.length) return;
+ write(next);
+}
+
+export function addToCollection(collectionId: string, item: CollectionItemInput): void {
+ const collections = read();
+ const c = collections.find((x) => x.id === collectionId);
+ if (!c || c.items.length >= MAX_COLLECTION_ITEMS) return;
+ if (c.items.some((it) => it.id === item.id)) return;
+ c.items.push(toItem(item));
+ c.updatedAt = Date.now();
+ write(collections);
+}
+
+export function removeFromCollection(collectionId: string, itemId: string): void {
+ const collections = read();
+ const c = collections.find((x) => x.id === collectionId);
+ if (!c) return;
+ const next = c.items.filter((it) => it.id !== itemId);
+ if (next.length === c.items.length) return;
+ c.items = next;
+ c.updatedAt = Date.now();
+ write(collections);
+}
+
+export function toggleInCollection(collectionId: string, item: CollectionItemInput): boolean {
+ const collections = read();
+ const c = collections.find((x) => x.id === collectionId);
+ if (!c) return false;
+ const has = c.items.some((it) => it.id === item.id);
+ if (has) {
+ c.items = c.items.filter((it) => it.id !== item.id);
+ c.updatedAt = Date.now();
+ write(collections);
+ return false;
+ }
+ if (c.items.length >= MAX_COLLECTION_ITEMS) return false;
+ c.items.push(toItem(item));
+ c.updatedAt = Date.now();
+ write(collections);
+ return true;
+}
+
+export function reorderCollectionItems(collectionId: string, orderedIds: string[]): void {
+ const collections = read();
+ const c = collections.find((x) => x.id === collectionId);
+ if (!c) return;
+ const byId = new Map(c.items.map((it) => [it.id, it] as const));
+ const next: CollectionItem[] = [];
+ for (const id of orderedIds) {
+ const it = byId.get(id);
+ if (it) {
+ next.push(it);
+ byId.delete(id);
+ }
+ }
+ for (const it of c.items) if (byId.has(it.id)) next.push(it);
+ c.items = next;
+ c.updatedAt = Date.now();
+ write(collections);
+}
+
+export function clearCollectionItems(collectionId: string): void {
+ const collections = read();
+ const c = collections.find((x) => x.id === collectionId);
+ if (!c || c.items.length === 0) return;
+ c.items = [];
+ c.updatedAt = Date.now();
+ write(collections);
+}
+
+export function addCollectionTag(collectionId: string, raw: string): void {
+ const tag = normalizeTag(raw);
+ if (!tag) return;
+ const collections = read();
+ const c = collections.find((x) => x.id === collectionId);
+ if (!c) return;
+ const tags = c.tags ?? [];
+ if (tags.length >= MAX_COLLECTION_TAGS) return;
+ if (tags.some((t) => t.toLowerCase() === tag.toLowerCase())) return;
+ c.tags = [...tags, tag];
+ c.updatedAt = Date.now();
+ write(collections);
+}
+
+export function removeCollectionTag(collectionId: string, tag: string): void {
+ const collections = read();
+ const c = collections.find((x) => x.id === collectionId);
+ if (!c || !c.tags) return;
+ const next = c.tags.filter((t) => t.toLowerCase() !== tag.toLowerCase());
+ if (next.length === c.tags.length) return;
+ c.tags = next.length ? next : undefined;
+ c.updatedAt = Date.now();
+ write(collections);
+}
+
+export function setCollectionShared(collectionId: string, shared: boolean): void {
+ const collections = read();
+ const c = collections.find((x) => x.id === collectionId);
+ if (!c) return;
+ if (!!c.shared === shared) return;
+ c.shared = shared ? true : undefined;
+ c.updatedAt = Date.now();
+ write(collections);
+}
+
+export function setCollectionCover(id: string, coverImage: string | null): void {
+ const collections = read();
+ const c = collections.find((x) => x.id === id);
+ if (!c) return;
+ c.coverImage = coverImage || undefined;
+ c.updatedAt = Date.now();
+ write(collections);
+}
+
+export function setCollectionBackground(id: string, bgImage: string | null): void {
+ const collections = read();
+ const c = collections.find((x) => x.id === id);
+ if (!c) return;
+ c.bgImage = bgImage || undefined;
+ c.updatedAt = Date.now();
+ write(collections);
+}
+
+export function collectionContains(collectionId: string, itemId: string): boolean {
+ const c = read().find((x) => x.id === collectionId);
+ return !!c && c.items.some((it) => it.id === itemId);
+}
+
+export function useCollections(): Collection[] {
+ const [collections, setCollections] = useState(readCollections);
+ useEffect(() => {
+ const tick = () => setCollections(readCollections());
+ subs.add(tick);
+ return () => {
+ subs.delete(tick);
+ };
+ }, []);
+ return collections;
+}
+
+export function useCollection(id: string | null): Collection | null {
+ const collections = useCollections();
+ return useMemo(
+ () => (id ? collections.find((c) => c.id === id) ?? null : null),
+ [collections, id],
+ );
+}
+
+export function useCollectionsContaining(itemId: string | undefined): Set {
+ const collections = useCollections();
+ return useMemo(() => {
+ const set = new Set();
+ if (!itemId) return set;
+ for (const c of collections) if (c.items.some((it) => it.id === itemId)) set.add(c.id);
+ return set;
+ }, [collections, itemId]);
+}
diff --git a/src/lib/config/endpoints.ts b/src/lib/config/endpoints.ts
deleted file mode 100644
index 051756673..000000000
--- a/src/lib/config/endpoints.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-function resolveBase(raw: string | undefined, fallback: string): string {
- const value = typeof raw === "string" && raw.trim() ? raw.trim() : fallback;
- return value.replace(/\/+$/, "");
-}
-
-export const HARBOR_API_BASE = resolveBase(
- import.meta.env.VITE_HARBOR_API_BASE,
- "https://harbor.site",
-);
-
-export const HARBOR_TRAKT_BASE = resolveBase(
- import.meta.env.VITE_HARBOR_TRAKT_BASE,
- HARBOR_API_BASE,
-);
-
-export const HARBOR_MAL_BASE = resolveBase(import.meta.env.VITE_HARBOR_MAL_BASE, HARBOR_API_BASE);
-
-export const HARBOR_TVDB_BASE = resolveBase(import.meta.env.VITE_HARBOR_TVDB_BASE, HARBOR_API_BASE);
-
-export const HARBOR_BUGS_BASE = resolveBase(
- import.meta.env.VITE_HARBOR_BUGS_BASE,
- "https://bugs.harbor.site",
-);
-
-export const HARBOR_SYNC_BASE = resolveBase(
- import.meta.env.VITE_HARBOR_SYNC_BASE,
- "https://sync.harbor.site",
-);
-
-export const HARBOR_RELAY_BASE = resolveBase(
- import.meta.env.VITE_HARBOR_RELAY_BASE,
- "https://app.harbor.site",
-);
diff --git a/src/lib/curated-logos.ts b/src/lib/curated-logos.ts
index c41e90446..d1f8e2cdc 100644
--- a/src/lib/curated-logos.ts
+++ b/src/lib/curated-logos.ts
@@ -1,7 +1,6 @@
import { safeFetch } from "@/lib/safe-fetch";
-import { HARBOR_API_BASE } from "@/lib/config/endpoints";
-const URL = `${HARBOR_API_BASE}/curated-logos.json`;
+const URL = "https://harbor.site/curated-logos.json";
let map: Record | null = null;
let loading: Promise | null = null;
diff --git a/src/lib/custom-lists.ts b/src/lib/custom-lists.ts
index 5b809cec0..e86f1bb5f 100644
--- a/src/lib/custom-lists.ts
+++ b/src/lib/custom-lists.ts
@@ -41,12 +41,17 @@ export type ListItem = {
export type ListItemInput = { id: string; type?: string; name?: string; poster?: string };
+export type ListBgMode = "auto" | "custom";
+
export type CustomList = {
id: string;
name: string;
createdAt: number;
updatedAt: number;
order?: number;
+ coverImage?: string;
+ bgImage?: string;
+ bgMode?: ListBgMode;
items: ListItem[];
};
@@ -111,6 +116,9 @@ function read(): CustomList[] {
createdAt: typeof e.createdAt === "number" ? e.createdAt : 0,
updatedAt: typeof e.updatedAt === "number" ? e.updatedAt : 0,
order: typeof e.order === "number" ? e.order : undefined,
+ coverImage: typeof e.coverImage === "string" ? e.coverImage : undefined,
+ bgImage: typeof e.bgImage === "string" ? e.bgImage : undefined,
+ bgMode: e.bgMode === "custom" ? "custom" : e.bgMode === "auto" ? "auto" : undefined,
items,
});
}
diff --git a/src/lib/dates.ts b/src/lib/dates.ts
index 0b471bb93..a9ce29f5c 100644
--- a/src/lib/dates.ts
+++ b/src/lib/dates.ts
@@ -1,3 +1,5 @@
+import { t } from "@/lib/i18n";
+
export function formatAirDate(value: string | null | undefined): string {
if (!value) return "";
const trimmed = value.length === 10 ? `${value}T00:00:00Z` : value;
@@ -26,18 +28,18 @@ export function formatAirDateShort(value: string | null | undefined): string {
export function relativeTime(ts: number | null | undefined): string {
if (!ts) return "";
const sec = Math.round((Date.now() - ts) / 1000);
- if (sec < 45) return "just now";
+ if (sec < 45) return t("just now");
const min = Math.round(sec / 60);
- if (min < 60) return `${min}m ago`;
+ if (min < 60) return t("{n}m ago", { n: min });
const hr = Math.round(min / 60);
- if (hr < 24) return `${hr}h ago`;
+ if (hr < 24) return t("{n}h ago", { n: hr });
const day = Math.round(hr / 24);
- if (day < 7) return `${day}d ago`;
+ if (day < 7) return t("{n}d ago", { n: day });
const wk = Math.round(day / 7);
- if (wk < 5) return `${wk}w ago`;
+ if (wk < 5) return t("{n}w ago", { n: wk });
const mo = Math.round(day / 30);
- if (mo < 12) return `${mo}mo ago`;
- return `${Math.round(day / 365)}y ago`;
+ if (mo < 12) return t("{n}mo ago", { n: mo });
+ return t("{n}y ago", { n: Math.round(day / 365) });
}
const DAY_MS = 86400000;
diff --git a/src/lib/discord/presence.ts b/src/lib/discord/presence.ts
index 7cb068b06..a4d1816dc 100644
--- a/src/lib/discord/presence.ts
+++ b/src/lib/discord/presence.ts
@@ -1,8 +1,6 @@
-import { HARBOR_API_BASE } from "@/lib/config/endpoints";
-
const IS_TAURI = typeof window !== "undefined" && "__TAURI_INTERNALS__" in window;
-const HARBOR_LOGO = `${HARBOR_API_BASE}/discord/harbordiscord.png`;
+const HARBOR_LOGO = "https://harbor.site/discord/harbordiscord.png";
type DiscordConfig = {
enabled: boolean;
@@ -96,8 +94,7 @@ function computeBase(): Base {
posterUrl: (config.showPoster && playback.posterUrl) || HARBOR_LOGO,
smallImageUrl: (config.showPoster && playback.smallImageUrl) || undefined,
largeText: playback.year != null ? `${playback.title} (${playback.year})` : playback.title,
- startTs:
- live && config.showTimestamp ? nowSec - Math.floor(playback.positionSec) : undefined,
+ startTs: live && config.showTimestamp ? nowSec - Math.floor(playback.positionSec) : undefined,
endTs: live && config.showTimestamp ? nowSec + Math.floor(remaining) : undefined,
paused: playback.paused,
},
@@ -106,10 +103,7 @@ function computeBase(): Base {
}
if (browse && config.showWhenBrowsing) {
if (config.hideTitle)
- return {
- payload: { details: "Browsing Harbor", posterUrl: HARBOR_LOGO },
- key: "browse:hide",
- };
+ return { payload: { details: "Browsing Harbor", posterUrl: HARBOR_LOGO }, key: "browse:hide" };
return {
payload: {
details: browse.details ?? "Browsing Harbor",
diff --git a/src/lib/discord/use-discord-presence.ts b/src/lib/discord/use-discord-presence.ts
index 775092ec8..fddfd0291 100644
--- a/src/lib/discord/use-discord-presence.ts
+++ b/src/lib/discord/use-discord-presence.ts
@@ -8,23 +8,13 @@ import { awardTypeLabel } from "@/lib/providers/wikidata";
import { awardSourceMeta } from "@/lib/anime-awards";
import { tmdbPerson, tmdbPersonCached } from "@/lib/providers/tmdb/tmdb-people";
import type { Meta } from "@/lib/cinemeta";
-import {
- getMangaReading,
- subscribeMangaReading,
- type MangaReadingState,
-} from "@/lib/manga-reading-state";
-import {
- configureDiscord,
- setBrowsePresence,
- setPartyPresence,
- type BrowsePresence,
-} from "./presence";
+import { getMangaReading, subscribeMangaReading, type MangaReadingState } from "@/lib/manga-reading-state";
+import { configureDiscord, setBrowsePresence, setPartyPresence, type BrowsePresence } from "./presence";
import { useActivityHint } from "./activity-hint";
-import { HARBOR_API_BASE, HARBOR_RELAY_BASE } from "@/lib/config/endpoints";
-const JOIN_BASE = HARBOR_RELAY_BASE;
+const JOIN_BASE = "https://app.harbor.site";
-const AWARD_IMG = `${HARBOR_API_BASE}/discord/awards`;
+const AWARD_IMG = "https://harbor.site/discord/awards";
const NORMAL_AWARD_IMG: Record = {
oscar: "oscar.png",
emmy: "emmy.png",
@@ -76,8 +66,7 @@ function filterBrowse(f: MetaFilter): BrowsePresence {
const media = f.mediaType === "movie" ? "movies" : "shows";
if (f.kind === "year") return { details: `Browsing ${f.value} ${media}` };
if (f.kind === "runtime") return { details: `Browsing ${media} around ${f.value} min` };
- if (f.kind === "country")
- return { details: `Browsing ${media} from ${f.name}`, largeText: f.name };
+ if (f.kind === "country") return { details: `Browsing ${media} from ${f.name}`, largeText: f.name };
return { details: `Browsing ${f.name} ${media}`, largeText: f.name };
}
diff --git a/src/lib/download/downloads-store.ts b/src/lib/download/downloads-store.ts
index 5ddbab245..1764ed098 100644
--- a/src/lib/download/downloads-store.ts
+++ b/src/lib/download/downloads-store.ts
@@ -19,7 +19,7 @@ export type DownloadItem = {
streamLabel: string | null;
url: string;
path: string;
- status: "downloading" | "done" | "error" | "canceled" | "interrupted";
+ status: "downloading" | "paused" | "done" | "error" | "canceled" | "interrupted";
receivedBytes: number;
totalBytes: number | null;
ratio: number;
@@ -38,6 +38,8 @@ type EnqueueArgs = {
const items = new Map();
const handles = new Map();
+const completions = new Map>();
+const requestHeaders = new Map>();
const speed = new Map();
const listeners = new Set<() => void>();
@@ -68,7 +70,8 @@ function hydrate() {
if (!Array.isArray(arr)) return;
for (const d of arr) {
if (!d || typeof d.id !== "string" || typeof d.path !== "string") continue;
- const status = d.status === "downloading" ? "interrupted" : d.status;
+ const status =
+ d.status === "downloading" || d.status === "paused" ? "interrupted" : d.status;
items.set(d.id, { ...d, status, bytesPerSec: 0 });
}
snapshot = [...items.values()].sort((a, b) => b.startedAt - a.startedAt);
@@ -93,7 +96,9 @@ function sep(): string {
async function resolveDir(): Promise {
try {
const raw = localStorage.getItem("harbor.settings");
- const fromSettings = raw ? (JSON.parse(raw) as { downloadDir?: string }).downloadDir?.trim() : "";
+ const fromSettings = raw
+ ? (JSON.parse(raw) as { downloadDir?: string }).downloadDir?.trim()
+ : "";
if (fromSettings) return fromSettings;
} catch {
/* fall through to system default */
@@ -187,49 +192,92 @@ export async function enqueueDownload(args: EnqueueArgs): Promise {
startedAt: Date.now(),
};
items.set(id, item);
- speed.set(id, { bytes: 0, at: Date.now() });
+ if (headers && Object.keys(headers).length > 0) requestHeaders.set(id, headers);
rebuild();
- const handle = startDownload(id, url, path, (p) => {
- const now = Date.now();
- const s = speed.get(id);
- let bps = 0;
- if (s && now - s.at >= 500) {
- bps = ((p.receivedBytes - s.bytes) / (now - s.at)) * 1000;
- speed.set(id, { bytes: p.receivedBytes, at: now });
- }
- patch(id, {
- receivedBytes: p.receivedBytes,
- totalBytes: p.totalBytes,
- ratio: p.ratio,
- ...(bps > 0 ? { bytesPerSec: bps } : {}),
- });
- }, headers ?? undefined);
+ beginDownload(id);
+ return id;
+}
+
+function beginDownload(id: string): void {
+ const item = items.get(id);
+ if (!item || handles.has(id)) return;
+ speed.set(id, { bytes: item.receivedBytes, at: Date.now() });
+ const handle = startDownload(
+ id,
+ item.url,
+ item.path,
+ (p) => {
+ const now = Date.now();
+ const s = speed.get(id);
+ let bps = 0;
+ if (s && now - s.at >= 500) {
+ bps = ((p.receivedBytes - s.bytes) / (now - s.at)) * 1000;
+ speed.set(id, { bytes: p.receivedBytes, at: now });
+ }
+ patch(id, {
+ receivedBytes: p.receivedBytes,
+ totalBytes: p.totalBytes,
+ ratio: p.ratio,
+ ...(bps > 0 ? { bytesPerSec: bps } : {}),
+ });
+ },
+ requestHeaders.get(id),
+ );
handles.set(id, handle);
- handle.promise
+ const completion = handle.promise
.then(() => patch(id, { status: "done", ratio: 1, bytesPerSec: 0 }))
.catch((e: unknown) => {
if (e instanceof Error && e.name === "AbortError") {
+ if (items.get(id)?.status === "paused") return;
patch(id, { status: "canceled", bytesPerSec: 0 });
return;
}
- patch(id, { status: "error", error: e instanceof Error ? e.message : "Download failed", bytesPerSec: 0 });
+ patch(id, {
+ status: "error",
+ error: e instanceof Error ? e.message : "Download failed",
+ bytesPerSec: 0,
+ });
})
.finally(() => {
- handles.delete(id);
+ if (handles.get(id) === handle) handles.delete(id);
+ if (completions.get(id) === completion) completions.delete(id);
speed.delete(id);
+ if (items.get(id)?.status !== "paused") requestHeaders.delete(id);
});
- return id;
+ completions.set(id, completion);
}
export function cancelDownload(id: string): void {
+ const item = items.get(id);
+ if (!item || (item.status !== "downloading" && item.status !== "paused")) return;
+ patch(id, { status: "canceled", bytesPerSec: 0 });
+ requestHeaders.delete(id);
handles.get(id)?.abort();
}
+export function pauseDownload(id: string): void {
+ const item = items.get(id);
+ const handle = handles.get(id);
+ if (!item || item.status !== "downloading" || !handle) return;
+ patch(id, { status: "paused", bytesPerSec: 0 });
+ handle.abort();
+}
+
+export async function resumeDownload(id: string): Promise {
+ if (items.get(id)?.status !== "paused") return;
+ await completions.get(id);
+ if (items.get(id)?.status !== "paused" || handles.has(id)) return;
+ patch(id, { status: "downloading", error: null, bytesPerSec: 0 });
+ beginDownload(id);
+}
+
export function removeDownload(id: string): void {
const item = items.get(id);
handles.get(id)?.abort();
handles.delete(id);
+ completions.delete(id);
+ requestHeaders.delete(id);
speed.delete(id);
if (items.delete(id)) rebuild();
if (item) {
@@ -254,10 +302,14 @@ function subscribe(listener: () => void): () => void {
}
export function useDownloads(): DownloadItem[] {
- return useSyncExternalStore(subscribe, () => snapshot, () => snapshot);
+ return useSyncExternalStore(
+ subscribe,
+ () => snapshot,
+ () => snapshot,
+ );
}
export function useActiveDownloadCount(): number {
const all = useDownloads();
- return all.filter((d) => d.status === "downloading").length;
+ return all.filter((d) => d.status === "downloading" || d.status === "paused").length;
}
diff --git a/src/lib/expanding-card-artwork.ts b/src/lib/expanding-card-artwork.ts
new file mode 100644
index 000000000..bd8fc54a7
--- /dev/null
+++ b/src/lib/expanding-card-artwork.ts
@@ -0,0 +1,291 @@
+import { resolveHeroBackdrop } from "@/lib/anime-backdrop";
+import { narrowMediaType, type Meta } from "@/lib/cinemeta";
+import { externalToKitsu } from "@/lib/providers/anime-mapping";
+import { parseKitsuId } from "@/lib/providers/kitsu";
+import { tmdbAnimeMatch, tmdbIdFromImdb, tmdbMovieImages } from "@/lib/providers/tmdb";
+import { fetchTvdbArtwork } from "@/lib/providers/tvdb-proxy";
+import { getLocalCache } from "@/lib/simkl/activities";
+import { simklRequest } from "@/lib/simkl/client";
+import {
+ isSuitableWideArtworkSize,
+ pickAlternativeWideArtwork,
+ rewriteWideArtworkRung,
+} from "@/lib/poster-backdrop-expansion";
+
+const ARTWORK_CACHE_MAX = 300;
+const prepared = new Map();
+const inflight = new Map>();
+const decoded = new Set();
+const decoding = new Map }>();
+const failed = new Set();
+const urgent = new Set();
+const activeUrl = new Map();
+
+export type ExpandingCardArtworkPriority = "auto" | "high";
+
+type AnimeArtworkIds = {
+ kitsuId?: number;
+ imdb?: string;
+ tvdb?: number;
+ tmdbMetaId?: string;
+};
+
+type SimklAnimeDetail = {
+ ids?: {
+ kitsu?: number | string;
+ mal?: number;
+ anidb?: number;
+ imdb?: string;
+ tvdb?: number;
+ tmdb?: number;
+ };
+};
+
+function rememberPrepared(key: string, url: string): void {
+ prepared.delete(key);
+ prepared.set(key, url);
+ while (prepared.size > ARTWORK_CACHE_MAX) {
+ const oldest = prepared.keys().next().value;
+ if (typeof oldest !== "string") break;
+ prepared.delete(oldest);
+ }
+}
+
+function uniqueAlternatives(candidates: string[], current: Array): string[] {
+ const out: string[] = [];
+ const seen = new Set();
+ for (const candidate of candidates) {
+ const alternative = current.every(
+ (artwork) => pickAlternativeWideArtwork([candidate], artwork) === candidate,
+ );
+ const url = rewriteWideArtworkRung(candidate);
+ if (!alternative || failed.has(url) || seen.has(url)) continue;
+ seen.add(url);
+ out.push(url);
+ }
+ return out;
+}
+
+function reverseSimklKey(map: Record, simklId: number): string | undefined {
+ return Object.keys(map).find((key) => map[key] === simklId);
+}
+
+async function resolveAnimeArtworkIds(meta: Meta): Promise {
+ let kitsuId = parseKitsuId(meta.id) ?? undefined;
+ let imdb: string | undefined;
+ let tvdb: number | undefined;
+ let tmdbMetaId: string | undefined;
+ let malId = meta.malId;
+ let anidbId: number | undefined;
+
+ const external = meta.id.match(/^(mal|anilist|anidb):(\d+)/);
+ if (external) {
+ const source = external[1];
+ const id = Number(external[2]);
+ if (source === "mal") malId = id;
+ else if (source === "anidb") anidbId = id;
+ if (!kitsuId) {
+ kitsuId =
+ (await externalToKitsu(source === "mal" ? "myanimelist" : source, id).catch(() => null)) ??
+ undefined;
+ }
+ }
+
+ const simklMatch = meta.id.match(/^simkl:(\d+)/);
+ if (simklMatch) {
+ const simklId = Number(simklMatch[1]);
+ const cache = getLocalCache();
+ if (cache) {
+ const cachedKitsu = reverseSimklKey(cache.kitsuToSimkl, simklId);
+ const cachedMal = reverseSimklKey(cache.malToSimkl, simklId);
+ const cachedImdb = reverseSimklKey(cache.imdbToSimkl, simklId);
+ const cachedTmdb = reverseSimklKey(cache.tmdbToSimkl, simklId);
+ if (cachedKitsu) kitsuId = Number(cachedKitsu) || undefined;
+ if (cachedMal) malId = Number(cachedMal) || undefined;
+ if (cachedImdb) imdb = cachedImdb;
+ if (cachedTmdb && /^(movie|tv):\d+$/.test(cachedTmdb)) {
+ tmdbMetaId = `tmdb:${cachedTmdb}`;
+ }
+ }
+
+ if (!kitsuId && !imdb && !tvdb && !tmdbMetaId) {
+ const detail = await simklRequest(`/anime/${simklId}`, {
+ method: "GET",
+ authed: false,
+ }).catch(() => null);
+ const ids = detail?.ids;
+ const detailKitsu = Number(ids?.kitsu);
+ if (!kitsuId && Number.isFinite(detailKitsu) && detailKitsu > 0) kitsuId = detailKitsu;
+ if (!malId && typeof ids?.mal === "number") malId = ids.mal;
+ if (!anidbId && typeof ids?.anidb === "number") anidbId = ids.anidb;
+ if (!imdb && typeof ids?.imdb === "string") imdb = ids.imdb;
+ if (!tvdb && typeof ids?.tvdb === "number") tvdb = ids.tvdb;
+ if (!tmdbMetaId && typeof ids?.tmdb === "number") {
+ const kind = meta.type === "movie" ? "movie" : "tv";
+ tmdbMetaId = `tmdb:${kind}:${ids.tmdb}`;
+ }
+ }
+ }
+
+ if (!kitsuId && malId) {
+ kitsuId = (await externalToKitsu("myanimelist", malId).catch(() => null)) ?? undefined;
+ }
+ if (!kitsuId && anidbId) {
+ kitsuId = (await externalToKitsu("anidb", anidbId).catch(() => null)) ?? undefined;
+ }
+
+ return { kitsuId, imdb, tvdb, tmdbMetaId };
+}
+
+async function loadWideArtwork(
+ url: string,
+ priority: ExpandingCardArtworkPriority,
+): Promise {
+ if (decoded.has(url)) return true;
+ const pending = decoding.get(url);
+ if (pending) {
+ if (priority === "high") pending.image.fetchPriority = "high";
+ return pending.promise;
+ }
+ if (typeof Image === "undefined") return false;
+
+ const image = new Image();
+ const promise = new Promise((resolve) => {
+ image.decoding = "async";
+ image.fetchPriority = priority;
+ image.onload = () => {
+ const finish = () => {
+ const suitable = isSuitableWideArtworkSize(image.naturalWidth, image.naturalHeight);
+ if (suitable) decoded.add(url);
+ resolve(suitable);
+ };
+ if (typeof image.decode === "function") void image.decode().then(finish, finish);
+ else finish();
+ };
+ image.onerror = () => resolve(false);
+ image.src = url;
+ }).finally(() => decoding.delete(url));
+
+ decoding.set(url, { image, promise });
+ return promise;
+}
+
+async function artworkCandidates(meta: Meta, tmdbKey: string): Promise {
+ const current = [meta.poster];
+
+ if (/^(kitsu|mal|anilist|anidb|simkl):/.test(meta.id)) {
+ const ids = await resolveAnimeArtworkIds(meta);
+ const kind = meta.type === "movie" ? "movie" : "tv";
+ let tmdbMetaId = ids.tmdbMetaId;
+ if (!tmdbMetaId && tmdbKey) {
+ const match = await tmdbAnimeMatch(tmdbKey, meta.name, meta.releaseInfo, kind).catch(
+ () => null,
+ );
+ if (match) tmdbMetaId = `tmdb:${kind}:${match.id}`;
+ }
+ const [tmdbArtwork, tvdbArtwork] = await Promise.all([
+ tmdbMetaId && tmdbKey
+ ? tmdbMovieImages(tmdbKey, tmdbMetaId).catch(() => [])
+ : Promise.resolve([]),
+ fetchTvdbArtwork({
+ series: ids.tvdb,
+ kitsuId: ids.kitsuId,
+ imdb: ids.imdb,
+ }).catch(() => null),
+ ]);
+ const alternatives = uniqueAlternatives(
+ [
+ ...tmdbArtwork,
+ ...(tvdbArtwork?.backgrounds ?? []),
+ ...(meta.background ? [meta.background] : []),
+ ],
+ current,
+ );
+ if (alternatives.length > 0) return alternatives;
+ const resolved = await resolveHeroBackdrop(tmdbKey, meta).catch(() => undefined);
+ return uniqueAlternatives(resolved ? [resolved] : [], current);
+ }
+
+ const tmdbIdPromise = meta.id.startsWith("tmdb:")
+ ? Promise.resolve(meta.id)
+ : meta.id.startsWith("tt") && tmdbKey
+ ? tmdbIdFromImdb(tmdbKey, meta.id, narrowMediaType(meta.type)).catch(() => null)
+ : Promise.resolve(null);
+ const tvdbPromise = meta.id.startsWith("tt")
+ ? fetchTvdbArtwork({ imdb: meta.id }).catch(() => null)
+ : Promise.resolve(null);
+ const [tmdbId, tvdbArtwork] = await Promise.all([tmdbIdPromise, tvdbPromise]);
+ const tmdbArtwork = tmdbId ? await tmdbMovieImages(tmdbKey, tmdbId).catch(() => []) : [];
+
+ return uniqueAlternatives(
+ [
+ ...tmdbArtwork,
+ ...(tvdbArtwork?.backgrounds ?? []),
+ ...(meta.background ? [meta.background] : []),
+ ],
+ current,
+ );
+}
+
+export function expandingCardArtworkKey(meta: Meta, tmdbKey: string): string {
+ return `${meta.id}|${meta.type}|${tmdbKey}|${meta.background ?? ""}|${meta.poster ?? ""}`;
+}
+
+export function prepareExpandingCardArtwork(
+ meta: Meta,
+ tmdbKey: string,
+ priority: ExpandingCardArtworkPriority = "auto",
+): Promise {
+ const key = expandingCardArtworkKey(meta, tmdbKey);
+ const cached = prepared.get(key);
+ if (cached) return Promise.resolve(cached);
+ if (priority === "high") {
+ urgent.add(key);
+ const url = activeUrl.get(key);
+ const pending = url ? decoding.get(url) : undefined;
+ if (pending) pending.image.fetchPriority = "high";
+ }
+ const pending = inflight.get(key);
+ if (pending) return pending;
+
+ const promise = (async () => {
+ const tried = new Set();
+ const firstSuitable = async (candidates: string[]): Promise => {
+ for (const candidate of candidates) {
+ if (tried.has(candidate)) continue;
+ tried.add(candidate);
+ activeUrl.set(key, candidate);
+ if (await loadWideArtwork(candidate, urgent.has(key) ? "high" : "auto")) {
+ rememberPrepared(key, candidate);
+ return candidate;
+ }
+ }
+ return undefined;
+ };
+
+ const immediate = uniqueAlternatives(meta.background ? [meta.background] : [], [meta.poster]);
+ const preparedBackground = await firstSuitable(immediate);
+ if (preparedBackground) return preparedBackground;
+
+ const candidates = await artworkCandidates(meta, tmdbKey);
+ return firstSuitable(candidates.slice(0, 8));
+ })().finally(() => {
+ inflight.delete(key);
+ urgent.delete(key);
+ activeUrl.delete(key);
+ });
+
+ inflight.set(key, promise);
+ return promise;
+}
+
+export function invalidateExpandingCardArtwork(key: string, url: string): void {
+ if (prepared.get(key) === url) prepared.delete(key);
+ decoded.delete(url);
+ failed.add(url);
+ while (failed.size > ARTWORK_CACHE_MAX) {
+ const oldest = failed.values().next().value;
+ if (typeof oldest !== "string") break;
+ failed.delete(oldest);
+ }
+}
diff --git a/src/lib/feed/award-winners.ts b/src/lib/feed/award-winners.ts
index 510c56de5..0284bf564 100644
--- a/src/lib/feed/award-winners.ts
+++ b/src/lib/feed/award-winners.ts
@@ -3,7 +3,6 @@ import type { AwardCategory } from "@/lib/awards-catalog";
import { readAwardHistory } from "@/lib/awards-history";
import { tmdbSearchMovie } from "@/lib/providers/tmdb";
import type { AwardType } from "@/lib/providers/wikidata";
-import { HARBOR_API_BASE } from "@/lib/config/endpoints";
const CACHE_KEY = "harbor.discover.awards.v1";
const MAX_TITLES = 150;
@@ -25,10 +24,7 @@ const SOURCES: Array<[AwardType, AwardCategory]> = [
];
function normTitle(s: string): string {
- return s
- .toLowerCase()
- .replace(/[^a-z0-9]+/g, " ")
- .trim();
+ return s.toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
}
function winnerTitles(): Array<{ title: string; year: number }> {
@@ -101,7 +97,7 @@ async function resolveAll(tmdbKey: string): Promise {
}
}
-const HOSTED_URL = `${HARBOR_API_BASE}/feed/award-winners.json`;
+const HOSTED_URL = "https://harbor.site/feed/award-winners.json";
let hostedMemo: Meta[] | null = null;
let hostedTried = false;
diff --git a/src/lib/feed/hero-pool.ts b/src/lib/feed/hero-pool.ts
index d34931b50..c4dcdab37 100644
--- a/src/lib/feed/hero-pool.ts
+++ b/src/lib/feed/hero-pool.ts
@@ -1,10 +1,9 @@
import type { Meta } from "@/lib/cinemeta";
import { safeFetch } from "@/lib/safe-fetch";
-import { HARBOR_API_BASE } from "@/lib/config/endpoints";
export type HeroFeed = "trending" | "trakt" | "simkl" | "classic";
-const HOSTED_URL = `${HARBOR_API_BASE}/feed/hero-pool.json`;
+const HOSTED_URL = "https://harbor.site/feed/hero-pool.json";
const CACHE_KEY = "harbor.heroPool.v1";
const TTL = 3 * 60 * 60 * 1000;
diff --git a/src/lib/harbor-rank.ts b/src/lib/harbor-rank.ts
index b90f5cfee..bbcfeb892 100644
--- a/src/lib/harbor-rank.ts
+++ b/src/lib/harbor-rank.ts
@@ -1,15 +1,7 @@
import type { KnownForEntry } from "./rankings";
import { safeFetch } from "./safe-fetch";
-import { HARBOR_API_BASE } from "./config/endpoints";
-export type RankSource =
- | "harbor"
- | "trending"
- | "rising"
- | "contenders"
- | "tmdb"
- | "imdb"
- | "consensus";
+export type RankSource = "harbor" | "trending" | "rising" | "contenders" | "tmdb" | "imdb" | "consensus";
export type PeopleDept = "Acting" | "Directing" | "Production" | "Writing";
@@ -102,7 +94,7 @@ export const HARBOR_RANK_WEIGHTS: ScoreComponents = {
roles: 0.12,
};
-const FEED_BASE = `${HARBOR_API_BASE}/rank`;
+const FEED_BASE = "https://harbor.site/rank";
const STALE_MS = 6 * 60 * 60 * 1000;
const MANIFEST_KEY = "harbor.rank.manifest.v1";
@@ -213,10 +205,7 @@ export async function fetchRankList(
if (!result) return null;
listMem.set(key, { at: Date.now(), result });
try {
- localStorage.setItem(
- snapshotKey(source, dept, country),
- JSON.stringify({ at: Date.now(), result }),
- );
+ localStorage.setItem(snapshotKey(source, dept, country), JSON.stringify({ at: Date.now(), result }));
} catch {
// ignore
}
diff --git a/src/lib/i18n/index.ts b/src/lib/i18n/index.ts
index 4de759bb9..99c68043a 100644
--- a/src/lib/i18n/index.ts
+++ b/src/lib/i18n/index.ts
@@ -1,4 +1,10 @@
export { t, sourceTranslationKey, useT } from "./translate";
-export { getUiLanguage, setUiLanguage, useUiLanguage } from "./store";
+export {
+ getUiLanguage,
+ setUiLanguage,
+ useUiLanguage,
+ detectUiLanguage,
+ resolveUiLanguage,
+} from "./store";
export { isRtl, LANGUAGES, normalizeLanguage, DEFAULT_LANGUAGE } from "./languages";
export type { UiLanguage, LanguageOption } from "./languages";
diff --git a/src/lib/i18n/locales/ar.ts b/src/lib/i18n/locales/ar.ts
index 3a066fc05..403d78e70 100644
--- a/src/lib/i18n/locales/ar.ts
+++ b/src/lib/i18n/locales/ar.ts
@@ -22,6 +22,9 @@ import spotlights from "./ar/spotlights";
import sync from "./ar/sync";
import together from "./ar/together";
import controllers from "./ar/controllers";
+import people from "./ar/people";
+import profileCustomization from "./ar/profile-customization";
+import mobileManga from "./ar/mobile-manga";
import used from "./ar/used";
@@ -50,6 +53,9 @@ const ar: Record = {
...awards,
...addons,
...controllers,
+ ...people,
+ ...profileCustomization,
+ ...mobileManga,
...used,
};
diff --git a/src/lib/i18n/locales/ar/chrome.ts b/src/lib/i18n/locales/ar/chrome.ts
index 40d51318a..662ef283e 100644
--- a/src/lib/i18n/locales/ar/chrome.ts
+++ b/src/lib/i18n/locales/ar/chrome.ts
@@ -1,9 +1,12 @@
const chrome: Record = {
"nav.home": "الرئيسية",
"nav.discover": "اكتشف",
+ "nav.catalogs": "الفهارس",
"nav.movies": "أفلام",
"nav.shows": "مسلسلات",
+ "nav.kids": "أطفال",
"nav.anime": "أنمي",
+ "nav.manga": "مانغا",
"nav.live": "البث المباشر",
"nav.playlists": "قوائم التشغيل",
"nav.calendar": "التقويم",
@@ -38,7 +41,6 @@ const chrome: Record = {
"chrome.restore": "استعادة",
"chrome.watchTogether": "المشاهدة معًا",
"chrome.scrollForMore": "مرّر لرؤية المزيد",
- "chrome.backToTop": "العودة إلى الأعلى",
"chrome.locked": "مقفل",
"chrome.parentalOn": "الرقابة الأبوية مفعّلة",
"chrome.lockedRequiresPin": "{label} (مقفل، يتطلب رمز PIN)",
diff --git a/src/lib/i18n/locales/ar/downloads.ts b/src/lib/i18n/locales/ar/downloads.ts
index f8c38fe0f..5269854d3 100644
--- a/src/lib/i18n/locales/ar/downloads.ts
+++ b/src/lib/i18n/locales/ar/downloads.ts
@@ -11,6 +11,8 @@ const downloads: Record = {
Canceled: "أُلغي",
"Interrupted: re-download to finish": "قوطع: أعد التنزيل للإكمال",
"Cancel download": "إلغاء التنزيل",
+ "Pause download": "إيقاف مؤقت للتنزيل",
+ "Resume download": "استئناف التنزيل",
"Delete download and file": "حذف التنزيل والملف",
Download: "تنزيل",
"Download video": "تنزيل الفيديو",
diff --git a/src/lib/i18n/locales/ar/misc.ts b/src/lib/i18n/locales/ar/misc.ts
index 017acb09b..64383408c 100644
--- a/src/lib/i18n/locales/ar/misc.ts
+++ b/src/lib/i18n/locales/ar/misc.ts
@@ -897,6 +897,30 @@ const misc: Record = {
"Comedy": "كوميديا",
"Animation": "أنميشن",
"Music": "موسيقى",
+ "Share collection": "مشاركة المجموعة",
+ "Anyone with the link can open this collection once your Harbor server is live.": "يمكن لأي شخص لديه الرابط فتح هذه المجموعة بمجرد أن يصبح خادم Harbor الخاص بك نشطًا.",
+ "Paste this code into Harbor to open the collection.": "الصق هذا الرمز في Harbor لفتح المجموعة.",
+ "Shared to the community": "تمت المشاركة مع المجتمع",
+ "Share to the community": "المشاركة مع المجتمع",
+ "Listed collections will appear in community browse when that rolls out.": "ستظهر المجموعات المُدرَجة في تصفّح المجتمع عند إطلاق هذه الميزة.",
+ "Sign in to get a shareable link.": "سجّل الدخول للحصول على رابط قابل للمشاركة.",
+ "Link": "الرابط",
+ "Code": "الرمز",
+ "Removed from {page}": "تمت الإزالة من {page}",
+ "That page is full": "هذه الصفحة ممتلئة",
+ "Added to {page}": "تمت الإضافة إلى {page}",
+ "Show as a row on": "العرض كصف في",
+ "The collection shows up as its own row you can reorder or hide from that page.": "تظهر المجموعة كصف مستقل يمكنك إعادة ترتيبه أو إخفاؤه من تلك الصفحة.",
+ "This collection is no longer here.": "لم تعد هذه المجموعة موجودة هنا.",
+ "Back to collections": "العودة إلى المجموعات",
+ "Add to a page": "إضافة إلى صفحة",
+ "Open the editor to add the movies, shows, and manga that belong in this collection.": "افتح المحرّر لإضافة الأفلام والمسلسلات والمانغا التي تنتمي إلى هذه المجموعة.",
+ "Add titles": "إضافة عناوين",
+ "Tags": "الوسوم",
+ "Add up to {max} tags so people can find this in the community.": "أضِف حتى {max} وسوم حتى يتمكن الآخرون من العثور على هذا في المجتمع.",
+ "Remove tag": "إزالة الوسم",
+ "Tag limit reached": "تم بلوغ حدّ الوسوم",
+ "Add a tag": "أضِف وسمًا",
};
export default misc;
diff --git a/src/lib/i18n/locales/ar/mobile-manga.ts b/src/lib/i18n/locales/ar/mobile-manga.ts
new file mode 100644
index 000000000..8f4a4fb3d
--- /dev/null
+++ b/src/lib/i18n/locales/ar/mobile-manga.ts
@@ -0,0 +1,38 @@
+const mobileManga: Record = {
+ "Loading chapter": "جارٍ تحميل الفصل",
+ "Prev": "السابق",
+ "Back to remote": "العودة إلى جهاز التحكم",
+ "Webtoon strip": "شريط ويبتون",
+ "Single page": "صفحة واحدة",
+ "Two pages": "صفحتان",
+ "Book flip": "تقليب الكتاب",
+ "Bookmark which page": "أي صفحة تريد وضع إشارة عليها؟",
+ "No bookmarks yet. Save your spot with the button above.": "لا توجد إشارات مرجعية بعد. احفظ موضعك بالزر أعلاه.",
+ "Bookmark page {n}": "إضافة إشارة للصفحة {n}",
+ "Not in this source": "غير موجود في هذا المصدر",
+ "Remove bookmark": "إزالة الإشارة المرجعية",
+ "Search chapters": "ابحث في الفصول",
+ "Sorted newest first, tap for oldest": "مرتّب من الأحدث، اضغط للأقدم",
+ "Sorted oldest first, tap for newest": "مرتّب من الأقدم، اضغط للأحدث",
+ "Reconnecting to your computer": "جارٍ إعادة الاتصال بجهاز الكمبيوتر",
+ "Reader closed on your computer": "القارئ مغلق على جهاز الكمبيوتر",
+ "Open a manga on Harbor to control the reader from here.": "افتح مانغا على Harbor للتحكم في القارئ من هنا.",
+ "Your computer": "جهاز الكمبيوتر الخاص بك",
+ "Reconnecting": "جارٍ إعادة الاتصال",
+ "Read on this device": "القراءة على هذا الجهاز",
+ "Read here": "اقرأ هنا",
+ "Read on": "القراءة على",
+ "Reading {label}": "قراءة {label}",
+ "of {total}": "من {total}",
+ "Start of manga": "بداية المانغا",
+ "End of manga": "نهاية المانغا",
+ "Jump to spread": "الانتقال إلى الصفحتين",
+ "Jump to page": "الانتقال إلى الصفحة",
+ "Go to pages {range}": "الانتقال إلى الصفحات {range}",
+ "Go to page {n}": "الانتقال إلى الصفحة {n}",
+ "Zoom controls, {pct} percent": "عناصر تحكم التكبير، {pct} بالمئة",
+ "Close zoom controls": "إغلاق عناصر تحكم التكبير",
+ "Zoom and pan joystick": "عصا التحكم بالتكبير والتحريك",
+};
+
+export default mobileManga;
diff --git a/src/lib/i18n/locales/ar/people.ts b/src/lib/i18n/locales/ar/people.ts
new file mode 100644
index 000000000..61e750262
--- /dev/null
+++ b/src/lib/i18n/locales/ar/people.ts
@@ -0,0 +1,25 @@
+const people: Record = {
+ "Harbor Rank": "Harbor Rank",
+ "Rising Stars": "النجوم الصاعدة",
+ "Contenders": "المتنافسون",
+ "Top on TMDB": "الأعلى على TMDB",
+ "Top on IMDb": "الأعلى على IMDb",
+ "Consensus": "الإجماع",
+ "Hall of Fame": "قاعة المشاهير",
+ "Trending now": "رائج الآن",
+ "Rising star": "نجم صاعد",
+ "In contention": "في المنافسة",
+ "Most popular": "الأكثر شعبية",
+ "Consensus #1": "الأول بالإجماع",
+ "Actors": "الممثلون",
+ "Actor": "الممثل",
+ "Our all-time ranking of a body of work, fully explained.": "ترتيبنا الشامل لمجمل الأعمال، موضّح بالتفصيل.",
+ "People from the week's hottest titles, weighted by what is being talked about.": "أشخاص من أبرز عناوين الأسبوع، مرجّحون حسب ما يتم تداوله.",
+ "Breakout talent from this week's hottest titles, before they are household names.": "مواهب صاعدة من أبرز عناوين الأسبوع، قبل أن تصبح أسماء مألوفة.",
+ "In the running this awards season, from the latest nominations and wins.": "في المنافسة هذا الموسم الجوائزي، حسب آخر الترشيحات والفوز.",
+ "Steady popularity across TMDB right now.": "شعبية ثابتة على TMDB حالياً.",
+ "Built from IMDb's public datasets. Career ratings volume.": "مبني على بيانات IMDb العامة. حجم تقييمات المسيرة المهنية.",
+ "A blend of the sources above by percentile. Degrades gracefully when one is missing.": "مزيج من المصادر أعلاه حسب المئينيات. يتكيّف بسلاسة عند غياب أحدها.",
+};
+
+export default people;
diff --git a/src/lib/i18n/locales/ar/player.ts b/src/lib/i18n/locales/ar/player.ts
index a4e18bdf4..2a1ccbd54 100644
--- a/src/lib/i18n/locales/ar/player.ts
+++ b/src/lib/i18n/locales/ar/player.ts
@@ -130,7 +130,7 @@ const player: Record = {
"No Chromecast, DLNA, or Roku devices found. Make sure your TV is on, woken up, and on the same Wi-Fi.":
"لم يُعثر على أجهزة Chromecast أو DLNA أو Roku. تأكّد من أن التلفاز قيد التشغيل ونشط وعلى الشبكة اللاسلكية نفسها.",
"Scan again": "إعادة الفحص",
- Rescan: "إعادة الفحص",
+ "Rescan": "إعادة الفحص",
"DLNA TV": "تلفاز DLNA",
"About this title": "عن هذا العنوان",
@@ -149,7 +149,7 @@ const player: Record = {
"+{n} ep": "+{n} حلقة",
", then try again.": "، ثم حاول مجددًا.",
"Align {dir}": "محاذاة {dir}",
- All: "الكل",
+ "All": "الكل",
"All addons": "كل الإضافات",
"All languages": "كل اللغات",
"Always keep on this device": "الاحتفاظ دائمًا على هذا الجهاز",
@@ -157,25 +157,25 @@ const player: Record = {
"Audio bitrate": "معدل بِت الصوت",
"Audio codec": "ترميز الصوت",
"Audio track": "المسار الصوتي",
- Back: "رجوع",
+ "Back": "رجوع",
"Back to library": "العودة إلى المكتبة",
- Bold: "عريض",
- Browse: "تصفّح",
+ "Bold": "عريض",
+ "Browse": "تصفّح",
"Browse provider": "تصفّح المزوّد",
"Cache buffering": "تخزين مؤقت للذاكرة",
"Cached only": "المخزّن مؤقتًا فقط",
"Cached only ({n})": "المخزّن مؤقتًا فقط ({n})",
- Cancel: "إلغاء",
+ "Cancel": "إلغاء",
"Cancel autoplay": "إلغاء التشغيل التلقائي",
- Cast: "البثّ",
+ "Cast": "البثّ",
"Cast to a device": "البثّ إلى جهاز",
"Channel is taking a while": "تستغرق القناة وقتًا",
"Channel won't load": "تعذّر تحميل القناة",
"Choose a folder...": "اختر مجلدًا...",
- Clear: "مسح",
+ "Clear": "مسح",
"Click any source to swap in place": "انقر أي مصدر لاستبداله في مكانه",
"Click to apply · Right-click to delete": "انقر للتطبيق · انقر بالزر الأيمن للحذف",
- Close: "إغلاق",
+ "Close": "إغلاق",
"Close guide": "إغلاق الدليل",
"Close match": "تطابق قريب",
"Copied to clipboard": "نُسخ إلى الحافظة",
@@ -184,105 +184,97 @@ const player: Record = {
"Couldn't load {name}": "تعذّر تحميل {name}",
"Couldn't open this file": "تعذّر فتح هذا الملف",
"Custom length": "مدة مخصصة",
- DVR: "مسجّل",
+ "DVR": "مسجّل",
"DVR record": "تسجيل DVR",
- Default: "افتراضي",
- Director: "المخرج",
+ "Default": "افتراضي",
+ "Director": "المخرج",
"Discard recording": "تجاهل التسجيل",
- Dismiss: "تجاهل",
+ "Dismiss": "تجاهل",
"Dismiss episode panel": "إغلاق لوحة الحلقات",
"Does this stream look right?": "هل يبدو هذا البث صحيحًا؟",
- Done: "تمّ",
- Download: "تنزيل",
+ "Done": "تمّ",
+ "Download": "تنزيل",
"Download failed": "فشل التنزيل",
"Download to disk": "التنزيل إلى القرص",
"Download video": "تنزيل الفيديو",
"Downloading {pct}%, click to cancel": "جارٍ التنزيل {pct}%، انقر للإلغاء",
"Dropped (decode / vo)": "مُسقَطة (فك / إخراج)",
- Embedded: "مدمج",
- "Embedded subtitles keep their own styling. Click to force your style onto them.":
- "تحتفظ الترجمات المدمجة بتنسيقها الخاص. انقر لفرض تنسيقك عليها.",
+ "Embedded": "مدمج",
+ "Embedded subtitles keep their own styling. Click to force your style onto them.": "تحتفظ الترجمات المدمجة بتنسيقها الخاص. انقر لفرض تنسيقك عليها.",
"Embedded track": "مسار مدمج",
"End ep": "نهاية الحلقة",
- Engine: "المحرك",
+ "Engine": "المحرك",
"Episode {n}": "الحلقة {n}",
- "Everyone is loaded in. Press play to start watching.":
- "الجميع جاهزون. اضغط تشغيل لبدء المشاهدة.",
- External: "خارجي",
+ "Everyone is loaded in. Press play to start watching.": "الجميع جاهزون. اضغط تشغيل لبدء المشاهدة.",
+ "External": "خارجي",
"External subtitle": "ترجمة خارجية",
"Failed: {message}": "فشل: {message}",
- File: "الملف",
- Filename: "اسم الملف",
- Filtered: "مُرشَّح",
+ "File": "الملف",
+ "Filename": "اسم الملف",
+ "Filtered": "مُرشَّح",
"Find closer match": "البحث عن تطابق أقرب",
"Find more subtitles": "البحث عن مزيد من الترجمات",
"Flagged shown": "المُعلَّمة ظاهرة",
"Frame rate": "معدل الإطارات",
"Go to live": "الانتقال إلى البث المباشر",
"Got it": "حسنًا",
- Guide: "الدليل",
- HI: "صمّ",
+ "Guide": "الدليل",
+ "HI": "صمّ",
"HW decode": "فك ترميز عتادي",
- Hidden: "مخفي",
+ "Hidden": "مخفي",
"Hidden by filter: {reason}": "مخفي بواسطة المرشِّح: {reason}",
"Hide details": "إخفاء التفاصيل",
"Hide search": "إخفاء البحث",
- Host: "المضيف",
- Imported: "مستورد",
+ "Host": "المضيف",
+ "Imported": "مستورد",
"Imported and now playing": "تم الاستيراد ويُشغَّل الآن",
- "Instant Play: clicking Play queues the next stream automatically.":
- "التشغيل الفوري: النقر على تشغيل يُدرج البث التالي تلقائيًا.",
+ "Instant Play: clicking Play queues the next stream automatically.": "التشغيل الفوري: النقر على تشغيل يُدرج البث التالي تلقائيًا.",
"Is the channel playing right?": "هل تُعرض القناة بشكل صحيح؟",
"Jump to live edge": "القفز إلى حافة البث المباشر",
"Just the next show: {title}": "البرنامج التالي فقط: {title}",
- Languages: "اللغات",
- Larger: "أكبر",
- Leave: "مغادرة",
- List: "قائمة",
- Live: "مباشر",
+ "Languages": "اللغات",
+ "Larger": "أكبر",
+ "Leave": "مغادرة",
+ "List": "قائمة",
+ "Live": "مباشر",
"Load a .srt or .ass from your computer": "حمّل ملف .srt أو .ass من جهازك",
"Load file": "تحميل ملف",
"Load more": "تحميل المزيد",
"Loaded {name}": "تم تحميل {name}",
- Loading: "جارٍ التحميل",
+ "Loading": "جارٍ التحميل",
"Loading favorites from other providers…": "جارٍ تحميل المفضّلة من مزوّدين آخرين…",
"Loading favorites…": "جارٍ تحميل المفضّلة…",
"Local subtitle": "ترجمة محلية",
"Looking for subtitles…": "جارٍ البحث عن ترجمات…",
"Looks good": "تبدو جيدة",
"Manage recording": "إدارة التسجيل",
- "Manual mode: clicking Play opens the source picker here.":
- "الوضع اليدوي: النقر على تشغيل يفتح مُنتقي المصادر هنا.",
- Movie: "فيلم",
+ "Manual mode: clicking Play opens the source picker here.": "الوضع اليدوي: النقر على تشغيل يفتح مُنتقي المصادر هنا.",
+ "Movie": "فيلم",
"Movie's too new": "الفيلم جديد جدًا",
"Name your first template": "سمِّ قالبك الأول",
"New template name": "اسم القالب الجديد",
"Next Episode": "الحلقة التالية",
"Next episode": "الحلقة التالية",
- "No channels match. Try a different category or clear the search.":
- "لا توجد قنوات مطابقة. جرّب فئة مختلفة أو امسح البحث.",
+ "No channels match. Try a different category or clear the search.": "لا توجد قنوات مطابقة. جرّب فئة مختلفة أو امسح البحث.",
"No description available.": "لا يوجد وصف متاح.",
"No episodes found for this season.": "لم يُعثر على حلقات لهذا الموسم.",
- "No favorites yet. Star a channel to pin it here.":
- "لا توجد مفضّلة بعد. أضف قناة إلى المفضّلة لتثبيتها هنا.",
+ "No favorites yet. Star a channel to pin it here.": "لا توجد مفضّلة بعد. أضف قناة إلى المفضّلة لتثبيتها هنا.",
"No program info available": "لا تتوفّر معلومات عن البرنامج",
"No sources cached": "لا توجد مصادر مخزّنة مؤقتًا",
"No sources found for this episode.": "لم يُعثر على مصادر لهذه الحلقة.",
- "No subtitles found yet. Try the search at the bottom.":
- "لم يُعثر على ترجمات بعد. جرّب البحث في الأسفل.",
- "No tracks match these filters. Try toggling HI/SDH or Forced.":
- "لا توجد مسارات مطابقة لهذه المرشّحات. جرّب تبديل ترجمة الصمّ أو الإجبارية.",
+ "No subtitles found yet. Try the search at the bottom.": "لم يُعثر على ترجمات بعد. جرّب البحث في الأسفل.",
+ "No tracks match these filters. Try toggling HI/SDH or Forced.": "لا توجد مسارات مطابقة لهذه المرشّحات. جرّب تبديل ترجمة الصمّ أو الإجبارية.",
"No unsaved changes": "لا توجد تغييرات غير محفوظة",
- Normal: "عادي",
+ "Normal": "عادي",
"Now Playing": "قيد التشغيل الآن",
"Now playing: {label}": "قيد التشغيل الآن: {label}",
"Now watching": "تُشاهد الآن",
- Off: "إيقاف",
- On: "تشغيل",
+ "Off": "إيقاف",
+ "On": "تشغيل",
"On now": "يُعرض الآن",
"Open folder": "فتح المجلد",
"Other sources": "مصادر أخرى",
- Override: "تجاوز",
+ "Override": "تجاوز",
"Override {name}": "تجاوز {name}",
"Overwrite {name} with this look": "استبدال {name} بهذا المظهر",
"Pick another": "اختر آخر",
@@ -294,40 +286,39 @@ const player: Record = {
"Previous Episode": "الحلقة السابقة",
"Previous episode": "الحلقة السابقة",
"Probably not cached. Pick another?": "غالبًا غير مخزّن مؤقتًا. أتريد اختيار آخر؟",
- REC: "تسجيل",
+ "REC": "تسجيل",
"Ready when you are": "جاهز عندما تكون مستعدًا",
- Record: "تسجيل",
+ "Record": "تسجيل",
"Record from TV (DVR)": "التسجيل من التلفاز (DVR)",
"Record from live TV": "التسجيل من التلفاز المباشر",
"Recording finished": "انتهى التسجيل",
"Recording now": "يجري التسجيل الآن",
- "Recording · {pct}% · {remaining} · click to manage":
- "يجري التسجيل · {pct}% · {remaining} · انقر للإدارة",
+ "Recording · {pct}% · {remaining} · click to manage": "يجري التسجيل · {pct}% · {remaining} · انقر للإدارة",
"Refine search": "تنقيح البحث",
"Reset sync": "إعادة ضبط المزامنة",
- Resolution: "الدقة",
- Restart: "إعادة التشغيل",
+ "Resolution": "الدقة",
+ "Restart": "إعادة التشغيل",
"Resume from {time}": "استئناف من {time}",
"Same file": "الملف نفسه",
- Save: "حفظ",
+ "Save": "حفظ",
"Save as a new template": "حفظ كقالب جديد",
"Save look": "حفظ المظهر",
"Save this look as a template": "حفظ هذا المظهر كقالب",
"Save to": "حفظ في",
- Saved: "محفوظ",
+ "Saved": "محفوظ",
"Saved as .ts (works in mpv, VLC, ffmpeg)": "يُحفظ بصيغة .ts (يعمل في mpv وVLC وffmpeg)",
"Saved to disk": "حُفظت إلى القرص",
"Saved to {folder} · open folder": "حُفظ في {folder} · فتح المجلد",
"Saving GIF…": "جارٍ حفظ GIF…",
"Say something…": "قل شيئًا…",
- Search: "بحث",
+ "Search": "بحث",
"Search {n} channels": "ابحث في {n} قناة",
"Search {n} favorite": "ابحث في {n} مفضّلة",
"Search {n} favorites": "ابحث في {n} مفضّلة",
"Searching…": "جارٍ البحث…",
"Season {n}": "الموسم {n}",
- Send: "إرسال",
- Series: "مسلسل",
+ "Send": "إرسال",
+ "Series": "مسلسل",
"Set how many minutes to record": "حدّد عدد الدقائق المراد تسجيلها",
"Show details": "إظهار التفاصيل",
"Show downloaded file": "إظهار الملف المُنزَّل",
@@ -335,37 +326,33 @@ const player: Record = {
"Show in folder": "إظهار في المجلد",
"Show sources hidden by the trust filter": "إظهار المصادر المخفية بواسطة مرشِّح الثقة",
"Show {langs} only": "إظهار {langs} فقط",
- Shown: "ظاهر",
- Size: "الحجم",
- Smaller: "أصغر",
+ "Shown": "ظاهر",
+ "Size": "الحجم",
+ "Smaller": "أصغر",
"Something else": "شيء آخر",
- Source: "المصدر",
- "Sources are not cached for this title. Open the picker page to refresh.":
- "المصادر غير مخزّنة مؤقتًا لهذا العنوان. افتح صفحة المُنتقي للتحديث.",
+ "Source": "المصدر",
+ "Sources are not cached for this title. Open the picker page to refresh.": "المصادر غير مخزّنة مؤقتًا لهذا العنوان. افتح صفحة المُنتقي للتحديث.",
"Start anyway ({n} still loading)": "ابدأ على أي حال ({n} ما زالوا يُحمّلون)",
"Start recording": "بدء التسجيل",
- Stop: "إيقاف",
+ "Stop": "إيقاف",
"Stop recording": "إيقاف التسجيل",
"Subtitle track": "مسار الترجمة",
- "Subtitles haven't been published yet. Try search below or check back in a few days.":
- "لم تُنشر الترجمات بعد. جرّب البحث في الأسفل أو عُد بعد بضعة أيام.",
- Sync: "مزامنة",
+ "Subtitles haven't been published yet. Try search below or check back in a few days.": "لم تُنشر الترجمات بعد. جرّب البحث في الأسفل أو عُد بعد بضعة أيام.",
+ "Sync": "مزامنة",
"TV Guide": "دليل التلفاز",
"The host starts playback for the whole room.": "يبدأ المضيف التشغيل للغرفة بأكملها.",
"This and next: + {title}": "هذا والتالي: + {title}",
"This file has one audio track.": "هذا الملف يحتوي على مسار صوتي واحد.",
- 'This file is in OneDrive. If "Files On-Demand" is on, the file is a cloud placeholder until it\'s downloaded. Right-click it in Explorer and pick':
- 'هذا الملف في OneDrive. إذا كان خيار "الملفات عند الطلب" مُفعّلاً، فإن الملف مجرد عنصر نائب سحابي حتى يُنزَّل. انقر عليه بالزر الأيمن في مستكشف الملفات واختر',
+ "This file is in OneDrive. If \"Files On-Demand\" is on, the file is a cloud placeholder until it's downloaded. Right-click it in Explorer and pick": "هذا الملف في OneDrive. إذا كان خيار \"الملفات عند الطلب\" مُفعّلاً، فإن الملف مجرد عنصر نائب سحابي حتى يُنزَّل. انقر عليه بالزر الأيمن في مستكشف الملفات واختر",
"This show: {title}": "هذا البرنامج: {title}",
"Tighter spacing": "تباعد أضيق",
- Title: "العنوان",
+ "Title": "العنوان",
"Title info": "معلومات العنوان",
"Toggle guide layout": "تبديل تخطيط الدليل",
- Track: "المسار",
- "Track switching isn't supported on the current engine. The file's default audio is playing.":
- "تبديل المسارات غير مدعوم على المحرك الحالي. يُشغَّل الصوت الافتراضي للملف.",
+ "Track": "المسار",
+ "Track switching isn't supported on the current engine. The file's default audio is playing.": "تبديل المسارات غير مدعوم على المحرك الحالي. يُشغَّل الصوت الافتراضي للملف.",
"Try again": "حاول مجددًا",
- Unknown: "غير معروف",
+ "Unknown": "غير معروف",
"Until {time} · {dur}": "حتى {time} · {dur}",
"Up Next": "التالي",
"Up next": "التالي",
@@ -376,24 +363,21 @@ const player: Record = {
"Volume down": "خفض الصوت",
"Volume up": "رفع الصوت",
"Waiting for the host to start": "بانتظار أن يبدأ المضيف",
- Watched: "تمت المشاهدة",
+ "Watched": "تمت المشاهدة",
"What to record": "ماذا تسجّل",
"Wider spacing": "تباعد أوسع",
- Writer: "الكاتب",
+ "Writer": "الكاتب",
"Wrong channel or source?": "قناة أو مصدر خاطئ؟",
"Wrong episode or quality?": "حلقة أو جودة خاطئة؟",
- "Your copy runs {guest}, host's runs {host}. Sync may drift.":
- "نسختك مدتها {guest}، ونسخة المضيف {host}. قد تنحرف المزامنة.",
- "Your style is overriding the embedded subtitle's own styling":
- "تنسيقك يتجاوز التنسيق الخاص بالترجمة المدمجة",
- Yours: "خاصتك",
+ "Your copy runs {guest}, host's runs {host}. Sync may drift.": "نسختك مدتها {guest}، ونسخة المضيف {host}. قد تنحرف المزامنة.",
+ "Your style is overriding the embedded subtitle's own styling": "تنسيقك يتجاوز التنسيق الخاص بالترجمة المدمجة",
+ "Yours": "خاصتك",
"Zoom {pct}%": "تكبير {pct}%",
"click to cancel": "انقر للإلغاء",
- default: "افتراضي",
+ "default": "افتراضي",
"loading more…": "جارٍ تحميل المزيد…",
- min: "دقيقة",
- "mpv is required for recording. Install mpv and restart Harbor.":
- "محرك mpv مطلوب للتسجيل. ثبّت mpv وأعد تشغيل Harbor.",
+ "min": "دقيقة",
+ "mpv is required for recording. Install mpv and restart Harbor.": "محرك mpv مطلوب للتسجيل. ثبّت mpv وأعد تشغيل Harbor.",
"to close": "للإغلاق",
"unsaved changes": "تغييرات غير محفوظة",
"{count} dl": "{count} تنزيل",
@@ -422,9 +406,6 @@ const player: Record = {
"2nd": "الثانية",
"Show as second subtitle": "عرضها كترجمة ثانية",
"Stop showing as second subtitle": "إيقاف عرضها كترجمة ثانية",
- "Next and Previous behavior": "سلوك زرّي التالي والسابق",
- "Next and Previous follow your queue": "التالي والسابق يتبعان قائمة انتظارك",
- "Next and Previous follow this show": "التالي والسابق يتبعان هذا المسلسل",
};
export default player;
diff --git a/src/lib/i18n/locales/ar/profile-customization.ts b/src/lib/i18n/locales/ar/profile-customization.ts
new file mode 100644
index 000000000..900251ebf
--- /dev/null
+++ b/src/lib/i18n/locales/ar/profile-customization.ts
@@ -0,0 +1,48 @@
+const profileCustomization: Record = {
+ "Italic": "مائل",
+ "Underline": "تسطير",
+ "Strikethrough": "يتوسطه خط",
+ "Quote": "اقتباس",
+ "Image": "صورة",
+ "YouTube": "YouTube",
+ "Spotify": "Spotify",
+ "Show off. [b]bold[/b], [color=gold]color[/color], [youtube]link[/youtube], [img]https://...[/img] and more.":
+ "أظهر مهاراتك. [b]عريض[/b], [color=gold]لون[/color], [youtube]رابط[/youtube], [img]https://...[/img] والمزيد.",
+ "Custom profile": "ملف شخصي مخصص",
+ "Hidden from visitors": "مخفي عن الزوار",
+ "Any HTML layout: headings, paragraphs, lists, tables, sections, divs.":
+ "أي تخطيط HTML: عناوين، فقرات، قوائم، جداول، أقسام، وعناصر div.",
+ "Any CSS: colors, gradients, grid, flex, animations, web fonts via @import from https.":
+ "أي CSS: ألوان، تدرّجات، grid، flex، حركات، وخطوط ويب عبر @import من https.",
+ "Images and video from https or data URLs.": "صور وفيديوهات من روابط https أو data URLs.",
+ "Links open in a new tab automatically.": "تُفتح الروابط تلقائيًا في تبويب جديد.",
+ "No JavaScript. Scripts, inline handlers, and javascript: URLs are removed.":
+ "بلا JavaScript. تُزال السكربتات ومعالجات الأحداث المضمّنة وروابط javascript:.",
+ "No nested iframes, objects, or embeds.": "بلا إطارات iframe متداخلة، أو عناصر object، أو تضمينات.",
+ "No forms or popups. The canvas cannot navigate the page.": "بلا نماذج أو نوافذ منبثقة. لا يمكن للوحة تغيير الصفحة.",
+ "How the canvas works": "كيف تعمل اللوحة",
+ "Your HTML and CSS render inside a sandboxed frame, fully isolated from the rest of Harbor. Write it like a tiny self-contained page. Font and page background are separate controls above, applied to the whole profile.":
+ "يُعرض HTML وCSS الخاصان بك داخل إطار معزول تمامًا عن بقية Harbor. اكتبهما وكأنهما صفحة صغيرة قائمة بذاتها. الخط وخلفية الصفحة عنصرا تحكّم منفصلان أعلاه، يُطبَّقان على الملف الشخصي بأكمله.",
+ "Allowed": "مسموح",
+ "Not allowed": "غير مسموح",
+ "HTML and CSS are each capped at 16,384 characters.": "يُحدَّد كل من HTML وCSS بحد أقصى 16,384 حرفًا.",
+ "Show customization to visitors": "إظهار التخصيص للزوار",
+ "Profile font": "خط الملف الشخصي",
+ "Google Fonts family": "عائلة خطوط Google Fonts",
+ "Page background color": "لون خلفية الصفحة",
+ "hex or rgb/hsl": "hex أو rgb/hsl",
+ "Page background image": "صورة خلفية الصفحة",
+ "https URL, optional": "رابط https، اختياري",
+ "Hide top banner": "إخفاء الشريط العلوي",
+ "Let your full page background show without the top cover.": "اجعل خلفية صفحتك الكاملة تظهر دون الغطاء العلوي.",
+ "Hide card titles": "إخفاء عناوين البطاقات",
+ "Drop the About and Custom labels so an embed fills the card cleanly.":
+ 'أزل تسميتَي "نبذة" و"مخصص" ليملأ التضمين البطاقة بمظهر نظيف.',
+ "Customize profile": "تخصيص الملف الشخصي",
+ "Could not upload favicon.": "تعذّر رفع أيقونة الموقع.",
+ "Profile favicon": "أيقونة الملف الشخصي",
+ "Shows in the browser tab; defaults to your avatar": "تظهر في تبويب المتصفح، وتُستخدم صورتك الرمزية افتراضيًا",
+ "Back to editing": "العودة إلى التحرير",
+};
+
+export default profileCustomization;
diff --git a/src/lib/i18n/locales/ar/profile-fill.ts b/src/lib/i18n/locales/ar/profile-fill.ts
index 31251b87b..ee391ebb7 100644
--- a/src/lib/i18n/locales/ar/profile-fill.ts
+++ b/src/lib/i18n/locales/ar/profile-fill.ts
@@ -1,18 +1,6 @@
const profileFill: Record = {
- "Manage connection": "إدارة الاتصال",
- "Show your Simkl card": "إظهار بطاقة Simkl",
- "Off by default. Shows your Simkl avatar, name and watch stats on your profile for anyone who visits. Manage the connection itself in Settings, Simkl.":
- "معطل افتراضيا. يعرض صورة Simkl واسمك وإحصاءات المشاهدة في ملفك لأي زائر. أما الاتصال نفسه فيدار من الإعدادات، قسم Simkl.",
- "On Simkl": "على Simkl",
- "Open Simkl profile": "فتح ملف Simkl",
- "Last watched {when}": "آخر مشاهدة {when}",
- "Nothing tracked on Simkl yet": "لا يوجد شيء مسجل على Simkl بعد",
- "Link Simkl and everything you watch shows up right here.": "اربط Simkl وسيظهر هنا كل ما تشاهده.",
- "Could not reach Simkl.": "تعذر الوصول إلى Simkl.",
- Shows: "المسلسلات",
"Your rating": "تقييمك",
- "Tap the heart on any movie, show, manga, or character to save it here.":
- "اضغط على القلب في أي فيلم أو مسلسل أو مانغا أو شخصية لحفظه هنا.",
+ "Tap the heart on any movie, show, manga, or character to save it here.": "اضغط على القلب في أي فيلم أو مسلسل أو مانغا أو شخصية لحفظه هنا.",
"Your rating {n}/10": "تقييمك {n}/10",
"Tap a star to rate": "اضغط على نجمة للتقييم",
"Tap a star to change, then save": "اضغط على نجمة للتغيير، ثم احفظ",
@@ -20,8 +8,7 @@ const profileFill: Record = {
"Edit your review": "عدّل مراجعتك",
"Save changes": "حفظ التغييرات",
"Ratings need a Harbor account": "التقييمات تتطلب حساب Harbor",
- "Your Harbor account is separate from your Stremio sign in. Create one free or sign in from Settings.":
- "حساب Harbor منفصل عن تسجيل دخولك في Stremio. أنشئ حسابا مجانا أو سجل الدخول من الإعدادات.",
+ "Your Harbor account is separate from your Stremio sign in. Create one free or sign in from Settings.": "حساب Harbor منفصل عن تسجيل دخولك في Stremio. أنشئ حسابا مجانا أو سجل الدخول من الإعدادات.",
"Open account settings": "فتح إعدادات الحساب",
"Save rating": "حفظ التقييم",
"Rate this": "قيّم هذا",
@@ -42,38 +29,33 @@ const profileFill: Record = {
"Could not remove your rating": "تعذّر إزالة تقييمك",
"Couldn't reach Harbor, check your connection": "تعذّر الوصول إلى Harbor، تحقّق من اتصالك",
"Harbor is having trouble, try again in a moment": "يواجه Harbor مشكلة، حاول مرة أخرى بعد لحظة",
- Ratings: "التقييمات",
+ "Ratings": "التقييمات",
"Move or hide your cards": "حرّك بطاقاتك أو أخفِها",
"Watch time": "وقت المشاهدة",
- Showcase: "واجهة العرض",
- Lists: "القوائم",
+ "Showcase": "واجهة العرض",
+ "Lists": "القوائم",
"Hero stats": "إحصائيات الملف الشخصي",
- "Choose which stats show in the row at the top of your profile":
- "اختر الإحصائيات التي تظهر في الصف أعلى ملفك الشخصي",
- "Pick the stats that show in the row at the top of your public profile. At least one has to stay visible.":
- "اختر الإحصائيات التي تظهر في الصف أعلى ملفك الشخصي العام. يجب أن تبقى واحدة على الأقل ظاهرة.",
+ "Choose which stats show in the row at the top of your profile": "اختر الإحصائيات التي تظهر في الصف أعلى ملفك الشخصي",
+ "Pick the stats that show in the row at the top of your public profile. At least one has to stay visible.": "اختر الإحصائيات التي تظهر في الصف أعلى ملفك الشخصي العام. يجب أن تبقى واحدة على الأقل ظاهرة.",
"Profile cards": "بطاقات الملف الشخصي",
- "Pick which cards show on your profile, and the order they appear in":
- "اختر البطاقات التي تظهر في ملفك الشخصي وترتيب ظهورها",
- "These cards run down your public profile. Set the order they appear in, and hide any you would rather keep to yourself.":
- "تظهر هذه البطاقات واحدة تلو الأخرى في ملفك الشخصي العام. حدّد ترتيب ظهورها وأخفِ ما تفضّل الاحتفاظ به لنفسك.",
+ "Pick which cards show on your profile, and the order they appear in": "اختر البطاقات التي تظهر في ملفك الشخصي وترتيب ظهورها",
+ "These cards run down your public profile. Set the order they appear in, and hide any you would rather keep to yourself.": "تظهر هذه البطاقات واحدة تلو الأخرى في ملفك الشخصي العام. حدّد ترتيب ظهورها وأخفِ ما تفضّل الاحتفاظ به لنفسك.",
"{count} of {total} showing": "عرض {count} من {total}",
- "Rate movies, shows, anime, and manga to build your ratings":
- "قيّم الأفلام والمسلسلات والأنمي والمانغا لبناء تقييماتك",
- avg: "المتوسط",
- rating: "تقييم",
- ratings: "تقييمات",
+ "Rate movies, shows, anime, and manga to build your ratings": "قيّم الأفلام والمسلسلات والأنمي والمانغا لبناء تقييماتك",
+ "avg": "المتوسط",
+ "rating": "تقييم",
+ "ratings": "تقييمات",
"{name}'s ratings": "تقييمات {name}",
"No ratings yet": "لا توجد تقييمات بعد",
"Show spoiler": "إظهار الحرق",
"Add friends to see them here.": "أضف أصدقاء لرؤيتهم هنا.",
"No friends to show yet": "لا يوجد أصدقاء لعرضهم بعد",
"Online now": "متصل الآن",
- Offline: "غير متصل",
+ "Offline": "غير متصل",
"Show {count} more": "عرض {count} أخرى",
- member: "عضو",
- members: "أعضاء",
- Owner: "المالك",
+ "member": "عضو",
+ "members": "أعضاء",
+ "Owner": "المالك",
"Remove {alias}": "إزالة {alias}",
"Could not join.": "تعذّر الانضمام.",
"Could not leave.": "تعذّر المغادرة.",
@@ -83,22 +65,21 @@ const profileFill: Record = {
"Change group photo": "تغيير صورة المجموعة",
"Add group photo": "إضافة صورة المجموعة",
"This group could not be loaded.": "تعذّر تحميل هذه المجموعة.",
- Members: "الأعضاء",
+ "Members": "الأعضاء",
"Invite member": "دعوة عضو",
"Delete this group for everyone?": "حذف هذه المجموعة للجميع؟",
- Keep: "إبقاء",
+ "Keep": "إبقاء",
"Delete group": "حذف المجموعة",
"Leave group": "مغادرة المجموعة",
"Join group": "الانضمام إلى المجموعة",
- Groups: "المجموعات",
+ "Groups": "المجموعات",
"Loading groups": "جارٍ تحميل المجموعات",
"Could not load your groups.": "تعذّر تحميل مجموعاتك.",
"Create a group to watch and share together.": "أنشئ مجموعة للمشاهدة والمشاركة معًا.",
"Could not add member.": "تعذّرت إضافة العضو.",
- "Search by handle or name to add people to this group.":
- "ابحث بالمعرّف أو الاسم لإضافة أشخاص إلى هذه المجموعة.",
- Member: "عضو",
- Added: "تمت الإضافة",
+ "Search by handle or name to add people to this group.": "ابحث بالمعرّف أو الاسم لإضافة أشخاص إلى هذه المجموعة.",
+ "Member": "عضو",
+ "Added": "تمت الإضافة",
"Unlike list": "إلغاء الإعجاب بالقائمة",
"Like list": "الإعجاب بالقائمة",
"Harbor list": "قائمة Harbor",
@@ -106,36 +87,33 @@ const profileFill: Record = {
"List link": "رابط القائمة",
"{title} on Harbor": "{title} على Harbor",
"No location": "بدون موقع",
- title: "عنوان",
- titles: "عناوين",
+ "title": "عنوان",
+ "titles": "عناوين",
"Could not save. Try again.": "تعذّر الحفظ. حاول مرة أخرى.",
"Featured lists": "القوائم المميّزة",
- "Pick up to {max} lists to show on your public profile.":
- "اختر ما يصل إلى {max} قائمة لعرضها في ملفك الشخصي العام.",
+ "Pick up to {max} lists to show on your public profile.": "اختر ما يصل إلى {max} قائمة لعرضها في ملفك الشخصي العام.",
"You have no lists yet": "ليس لديك أي قوائم بعد",
"Create lists in your library to feature them here": "أنشئ قوائم في مكتبتك لتمييزها هنا",
"{selected}/{max} selected": "{selected}/{max} محدّدة",
- Favorited: "مُفضّل",
+ "Favorited": "مُفضّل",
"Recent activity": "النشاط الأخير",
"This user has chosen to keep activity private": "اختار هذا المستخدم إبقاء نشاطه خاصًا",
"No recent activity yet": "لا يوجد نشاط حديث بعد",
"Save to my lists": "حفظ في قوائمي",
"List full": "القائمة ممتلئة",
"Link and social": "الرابط ووسائل التواصل الاجتماعي",
- Embed: "تضمين",
+ "Embed": "تضمين",
"Copied for Discord": "تم النسخ لـ Discord",
"Copy for Discord": "نسخ لـ Discord",
"Shown badges": "الشارات المعروضة",
- "Pick up to {max} badges to show by your name. Tap in the order you want them to appear.":
- "اختر حتى {max} من الشارات لعرضها بجوار اسمك. انقر عليها بالترتيب الذي تريد أن تظهر به.",
+ "Pick up to {max} badges to show by your name. Tap in the order you want them to appear.": "اختر حتى {max} من الشارات لعرضها بجوار اسمك. انقر عليها بالترتيب الذي تريد أن تظهر به.",
"No badges to show yet": "لا توجد شارات لعرضها بعد",
"Earn badges and they will appear here to feature": "اكسب شارات وستظهر هنا لإبرازها",
"{count}/{max} selected": "{count}/{max} محددة",
"Remove {label}": "إزالة {label}",
"Could not save your links.": "تعذّر حفظ روابطك.",
"Social links": "روابط التواصل الاجتماعي",
- "Add up to {max} profiles. Enter your handle only, not the full link.":
- "أضف حتى {max} من الملفات الشخصية. أدخل اسم المستخدم فقط، وليس الرابط الكامل.",
+ "Add up to {max} profiles. Enter your handle only, not the full link.": "أضف حتى {max} من الملفات الشخصية. أدخل اسم المستخدم فقط، وليس الرابط الكامل.",
"You have reached the {max} link limit": "لقد وصلت إلى حد {max} من الروابط",
"{label} handle": "اسم مستخدم {label}",
"Write something about yourself": "اكتب شيئًا عن نفسك",
@@ -148,15 +126,15 @@ const profileFill: Record = {
"Searching...": "جارٍ البحث...",
"No one found by that name.": "لم يُعثر على أحد بهذا الاسم.",
"Open {alias} profile": "فتح ملف {alias} الشخصي",
- You: "أنت",
- Requested: "تم الطلب",
- Badges: "الشارات",
+ "You": "أنت",
+ "Requested": "تم الطلب",
+ "Badges": "الشارات",
"No badges earned yet": "لم تُكتسب أي شارة بعد",
"Sign in to leave a comment": "سجّل الدخول لترك تعليق",
"Leave a comment. No links.": "اترك تعليقًا. بدون روابط.",
"{count} left": "{count} متبقٍ",
- Posting: "جارٍ النشر",
- Post: "نشر",
+ "Posting": "جارٍ النشر",
+ "Post": "نشر",
"Say something first": "اكتب شيئًا أولًا",
"Links are not allowed in comments": "الروابط غير مسموح بها في التعليقات",
"That looks like spam, try rephrasing": "يبدو أن هذا محتوى مزعج، حاول إعادة الصياغة",
@@ -174,12 +152,12 @@ const profileFill: Record = {
"Change photo": "تغيير الصورة",
"Add photo": "إضافة صورة",
"Late-night sci-fi crew": "شلّة الخيال العلمي في آخر الليل",
- Description: "الوصف",
+ "Description": "الوصف",
"What this group is about (optional)": "عمّ تدور هذه المجموعة (اختياري)",
- Creating: "جارٍ الإنشاء",
+ "Creating": "جارٍ الإنشاء",
"Your links": "روابطك",
"No links added yet.": "لم تتم إضافة أي روابط بعد.",
- Socials: "الشبكات الاجتماعية",
+ "Socials": "الشبكات الاجتماعية",
"Add your social links": "أضف روابطك الاجتماعية",
"Copy {label} handle": "نسخ معرّف {label}",
"What's on your mind?": "بماذا تفكر؟",
@@ -189,7 +167,7 @@ const profileFill: Record = {
"No status": "لا توجد حالة",
"Add status": "إضافة حالة",
"Open @{handle} profile": "فتح ملف @{handle} الشخصي",
- Online: "متصل",
+ "Online": "متصل",
"Preview unavailable. Click to open profile.": "المعاينة غير متاحة. انقر لفتح الملف الشخصي.",
"My lists": "قوائمي",
"This user hasn't featured any lists": "لم يُبرز هذا المستخدم أي قائمة",
@@ -202,8 +180,8 @@ const profileFill: Record = {
"{count} aboard": "{count} على المتن",
"Paused on ": "متوقّف عند ",
"Watching ": "يشاهد ",
- something: "شيء ما",
- Share: "مشاركة",
+ "something": "شيء ما",
+ "Share": "مشاركة",
"Share profile": "مشاركة الملف الشخصي",
"Profile link": "رابط الملف الشخصي",
"{name} on Harbor": "{name} على Harbor",
@@ -225,68 +203,16 @@ const profileFill: Record = {
"Change banner": "تغيير اللافتة",
"Add banner": "إضافة لافتة",
"Could not load this profile": "تعذّر تحميل هذا الملف الشخصي",
- "Something went wrong reaching Harbor. Check your connection and try again.":
- "حدث خطأ أثناء الاتصال بـ Harbor. تحقّق من اتصالك وحاول مرة أخرى.",
+ "Something went wrong reaching Harbor. Check your connection and try again.": "حدث خطأ أثناء الاتصال بـ Harbor. تحقّق من اتصالك وحاول مرة أخرى.",
"No such captain": "قبطان غير موجود",
- "We could not find anyone at @{handle}. The handle may have changed or the profile was removed.":
- "لم نتمكّن من العثور على أحد في @{handle}. ربما تغيّر اسم المستخدم أو تمت إزالة الملف الشخصي.",
+ "We could not find anyone at @{handle}. The handle may have changed or the profile was removed.": "لم نتمكّن من العثور على أحد في @{handle}. ربما تغيّر اسم المستخدم أو تمت إزالة الملف الشخصي.",
"{alias} keeps this private": "{alias} يُبقي هذا خاصًّا",
- "This member has hidden their showcase, activity and friends from public view.":
- "أخفى هذا العضو معرضه ونشاطه وأصدقاءه عن العرض العام.",
- Finished: "مكتمل",
- Rated: "مُقيَّم",
+ "This member has hidden their showcase, activity and friends from public view.": "أخفى هذا العضو معرضه ونشاطه وأصدقاءه عن العرض العام.",
+ "Finished": "مكتمل",
+ "Rated": "مُقيَّم",
"not in your library": "ليست في مكتبتك",
"1 friend in common": "صديق واحد مشترك",
"{count} friends in common": "{count} أصدقاء مشتركون",
- "Favourite games": "الألعاب المفضّلة",
- "Favourite books": "الكتب المفضّلة",
- "Favourite music": "الموسيقى المفضّلة",
- "Pick up to {max} games to show on your profile.":
- "اختر ما يصل إلى {max} لعبة لعرضها في ملفك الشخصي.",
- "Pick up to {max} books to show on your profile.":
- "اختر ما يصل إلى {max} كتاب لعرضها في ملفك الشخصي.",
- "Pick up to {max} artists to show on your profile.":
- "اختر ما يصل إلى {max} فنان لعرضهم في ملفك الشخصي.",
- "Search games": "البحث عن الألعاب",
- "Search books": "البحث عن الكتب",
- "Search artists": "البحث عن الفنانين",
- "Search for a game": "ابحث عن لعبة",
- "Search for a book": "ابحث عن كتاب",
- "Search for an artist": "ابحث عن فنان",
- "Type a title to find its cover art.": "اكتب عنوانًا للعثور على صورة الغلاف.",
- "Type a title to find its cover.": "اكتب عنوانًا للعثور على الغلاف.",
- "Type a name to find their photo.": "اكتب اسمًا للعثور على الصورة.",
- "No games match that search": "لا توجد ألعاب تطابق هذا البحث",
- "No books match that search": "لا توجد كتب تطابق هذا البحث",
- "No artists match that search": "لا يوجد فنانون يطابقون هذا البحث",
- "Could not reach the game database": "تعذّر الوصول إلى قاعدة بيانات الألعاب",
- "Could not reach the book database": "تعذّر الوصول إلى قاعدة بيانات الكتب",
- "Could not reach the music database": "تعذّر الوصول إلى قاعدة بيانات الموسيقى",
- "Game search needs an API key before it can run.":
- "يحتاج البحث عن الألعاب إلى مفتاح API قبل أن يعمل.",
- "Book search needs an API key before it can run.":
- "يحتاج البحث عن الكتب إلى مفتاح API قبل أن يعمل.",
- "Music search needs an API key before it can run.":
- "يحتاج البحث عن الموسيقى إلى مفتاح API قبل أن يعمل.",
- "That's {max} games. Remove one to add another.": "هذه {max} من الألعاب. أزل واحدة لإضافة أخرى.",
- "That's {max} books. Remove one to add another.": "هذه {max} من الكتب. أزل واحدًا لإضافة آخر.",
- "That's {max} artists. Remove one to add another.":
- "هؤلاء {max} من الفنانين. أزل واحدًا لإضافة آخر.",
- "We couldn't load your saved favourites": "تعذّر تحميل مفضّلاتك المحفوظة",
- "Saving now could overwrite them. Try again in a moment.":
- "قد يؤدي الحفظ الآن إلى استبدالها. حاول مرة أخرى بعد لحظة.",
- "Shown order": "ترتيب العرض",
- "Check the spelling or try a shorter search.": "تحقّق من الإملاء أو جرّب بحثًا أقصر.",
- "Something went wrong on the way there.": "حدث خطأ ما في الطريق.",
- "An API key is needed": "مطلوب مفتاح API",
- Favourites: "المفضّلة",
- "Add favourite games": "إضافة ألعاب مفضّلة",
- "Add favourite books": "إضافة كتب مفضّلة",
- "Add favourite artists": "إضافة فنانين مفضّلين",
- Games: "الألعاب",
- Books: "الكتب",
- "Show your favourite games, books and music on your profile":
- "اعرض ألعابك وكتبك وموسيقاك المفضّلة في ملفك الشخصي",
};
export default profileFill;
diff --git a/src/lib/i18n/locales/ar/settings-fill.ts b/src/lib/i18n/locales/ar/settings-fill.ts
index 7ed98d69b..4b7605072 100644
--- a/src/lib/i18n/locales/ar/settings-fill.ts
+++ b/src/lib/i18n/locales/ar/settings-fill.ts
@@ -268,6 +268,30 @@ const settingsFill: Record = {
"Who keeps the lights on, what Harbor is built on, and where to put money if you want to.": "من يُبقي الخوادم تعمل، وعلى ماذا بُني Harbor، وأين تضع أموالك إن أردت.",
"If you were going to send something, send it to ElfHosted or Stremio above, or to one of the charities below. They all do more good with it.": "إن كنت تنوي إرسال شيء، فأرسله إلى ElfHosted أو Stremio أعلاه، أو إلى إحدى الجمعيات الخيرية أدناه. كلها تصنع خيراً أكبر به.",
"Support ElfHosted or Stremio, or give to any charity below, and the badge lands on your profile.": "ادعم ElfHosted أو Stremio، أو تبرّع لأي جمعية خيرية أدناه، وستظهر الشارة في ملفك الشخصي.",
+ "Fullscreen clock": "ساعة ملء الشاشة",
+ "Keep your local time visible during fullscreen playback and choose how it looks.": "أبقِ التوقيت المحلي ظاهرًا أثناء التشغيل بملء الشاشة واختر شكله.",
+ "Show fullscreen clock": "إظهار ساعة ملء الشاشة",
+ "The clock appears with the player controls.": "تظهر الساعة مع عناصر تحكم المشغل.",
+ "Clock format": "تنسيق الساعة",
+ "12-hour": "12 ساعة",
+ "24-hour": "24 ساعة",
+ "Show seconds": "إظهار الثواني",
+ "Update the clock every second.": "تحديث الساعة كل ثانية.",
+ "Show estimated finish time": "إظهار وقت الانتهاء المتوقع",
+ "Display the local time when the current video is expected to end.": "عرض التوقيت المحلي المتوقع لانتهاء الفيديو الحالي.",
+ "Clock size": "حجم الساعة",
+ "Clock style": "نمط الساعة",
+ "Minimal": "بسيط",
+ "Solid": "صلب",
+ "Accent": "لون مميز",
+ "Soft blur with a floating pill.": "ضبابية ناعمة داخل شارة عائمة.",
+ "Time only, with a subtle shadow.": "الوقت فقط، مع ظل خفيف.",
+ "High-contrast panel for busy scenes.": "لوحة عالية التباين للمشاهد المزدحمة.",
+ "Uses your theme's accent color.": "يستخدم اللون المميز من سمتك.",
+ "Focused Card": "البطاقة المركّزة",
+ "Expanding Cards": "البطاقات المتوسّعة",
+ "Emphasize the selected card across the page while gently darkening and blurring the other cards.": "إبراز البطاقة المحددة في الصفحة مع تعتيم البطاقات الأخرى وتشويشها برفق.",
+ "Expand poster cards during keyboard or remote navigation across poster rows, using preloaded wide artwork.": "توسيع بطاقات الملصقات أثناء التنقل بلوحة المفاتيح أو جهاز التحكم عبر صفوف الملصقات، باستخدام صور عريضة محمّلة مسبقًا.",
};
export default settingsFill;
diff --git a/src/lib/i18n/locales/ar/settings.ts b/src/lib/i18n/locales/ar/settings.ts
index bbb87d961..b3ad7c5d0 100644
--- a/src/lib/i18n/locales/ar/settings.ts
+++ b/src/lib/i18n/locales/ar/settings.ts
@@ -2177,6 +2177,91 @@ const settings: Record = {
"Next frame": "الإطار التالي",
"Step back one frame and pause. Frame-accurate on mpv.": "ارجع إطاراً واحداً مع الإيقاف المؤقت. دقة بمستوى الإطار على mpv.",
"Step forward one frame and pause. Frame-accurate on mpv.": "تقدّم إطاراً واحداً مع الإيقاف المؤقت. دقة بمستوى الإطار على mpv.",
+ "Always": "دائمًا",
+ "Apply {language} preferences?": "تطبيق تفضيلات {language}؟",
+ "BL": "حب بين الفتيان",
+ "Box": "صندوق",
+ "Boy": "أفضل فتى",
+ "Bromance": "صداقة",
+ "by the Harbor team": "بواسطة فريق Harbor",
+ "center": "وسط",
+ "CGI": "رسوميات حاسوبية",
+ "Character": "شخصية",
+ "Circle": "دائرة",
+ "Configure": "إعداد",
+ "Continuing": "مستمر",
+ "Couple": "ثنائي",
+ "debrid": "Debrid",
+ "Detecting": "جارٍ الكشف...",
+ "Documentaries": "أفلام وثائقية",
+ "Dreamlogic": "منطق الأحلام",
+ "Ending": "شارة النهاية",
+ "Excellence": "التميّز",
+ "Fight": "معركة",
+ "Film": "فيلم",
+ "Fri": "جمعة",
+ "Girl": "أفضل فتاة",
+ "GL": "حب بين الفتيات",
+ "Heartstrings": "أوتار القلب",
+ "Heartwarming": "مؤثّر",
+ "Hero": "البطل",
+ "Isekai": "إيسيكاي",
+ "left": "يسار",
+ "Loading video": "جارٍ تحميل المقطع",
+ "Selecting best source": "جارٍ اختيار أفضل مصدر",
+ "Mecha": "ميكا",
+ "Mon": "إثنين",
+ "Nerve": "أعصاب من فولاذ",
+ "No movies match \"{query}\".": "لا توجد أفلام تطابق \"{query}\".",
+ "No shows match \"{query}\".": "لا توجد مسلسلات تطابق \"{query}\".",
+ "Number 1 gets asked first for streams when you press Play.": "يُسأل رقم 1 أولًا عن البثوث عند الضغط على تشغيل.",
+ "Opening": "شارة البداية",
+ "Packaged": "أفضل إصدار",
+ "Paranoia": "جنون الارتياب",
+ "Pinstripe": "خطوط رفيعة",
+ "Press Enter or Space to type": "اضغط Enter أو Space للكتابة",
+ "Producer": "المنتج",
+ "Provocations": "استفزازات",
+ "Psychological": "نفسي",
+ "Rainbow": "قوس قزح",
+ "Restored": "تمت الاستعادة",
+ "Rewatching": "إعادة مشاهدة",
+ "right": "يمين",
+ "Sat": "سبت",
+ "Score": "الموسيقى التصويرية",
+ "service": "خدمة",
+ "services": "خدمات",
+ "Sets Harbor's interface language and automatically follows its text direction. This is separate from subtitle and metadata languages below.": "يضبط لغة واجهة Harbor ويتبع اتجاه نصها تلقائيًا. وهذا منفصل عن لغتي الترجمة والبيانات الوصفية أدناه.",
+ "Short": "فيلم قصير",
+ "Slice": "شريحة من الحياة",
+ "Social": "تأثير اجتماعي",
+ "Song": "أغنية",
+ "Spacefarer": "مسافر الفضاء",
+ "Square": "مربّع",
+ "Stopped": "متوقّف",
+ "Sun": "أحد",
+ "Supernatural": "خارق للطبيعة",
+ "Supporting": "شخصية مساندة",
+ "Suspense": "تشويق",
+ "Text mode — Esc to exit": "وضع الكتابة — Esc للخروج",
+ "The order decides who answers first when you press Play. Drag, use the arrows, or jump anything straight to the top.": "يحدّد الترتيب من يستجيب أولًا عند الضغط على تشغيل. اسحب، أو استخدم الأسهم، أو انقل أي عنصر مباشرة إلى الأعلى.",
+ "This sets metadata, subtitle, and audio languages to match.": "يضبط هذا لغات البيانات الوصفية والترجمة والصوت لتتطابق.",
+ "Thrillers": "أفلام الإثارة",
+ "Thu": "خميس",
+ "Timeless": "خالد",
+ "Toggle RTX Video HDR": "تبديل RTX Video HDR",
+ "Toggle RTX Video HDR during mpv playback. Unavailable while HDR-to-SDR tonemapping or SVP is active.": "تبديل RTX Video HDR أثناء التشغيل عبر mpv. غير متاح أثناء تفعيل تحويل HDR إلى SDR أو SVP.",
+ "Tue": "ثلاثاء",
+ "Unraveling": "تفكّك",
+ "Unreachable": "غير قابل للوصول",
+ "Used for streaming availability and the Now Playing release window. Pick a country and Harbor can match metadata and subtitle languages to it.": "يُستخدم لتوفّر البث ونافذة إصدار \"يُعرض الآن\". اختر دولة ليتمكّن Harbor من مطابقة لغات البيانات الوصفية والترجمة معها.",
+ "VA": "مؤدّي صوتي",
+ "Villain": "الشرير",
+ "Wed": "أربعاء",
+ "Westerns": "أفلام الويسترن",
+ "Whodunit": "من الفاعل",
+ "Whodunits": "ألغاز الجريمة",
+ "Wiseguys": "رجال العصابات",
};
export default settings;
diff --git a/src/lib/i18n/locales/ar/used.ts b/src/lib/i18n/locales/ar/used.ts
index e5b0c3518..c323b53fe 100644
--- a/src/lib/i18n/locales/ar/used.ts
+++ b/src/lib/i18n/locales/ar/used.ts
@@ -62,6 +62,7 @@ const used: Record = {
"French Films": "أفلام فرنسية",
"Frequent Collaborators": "أبرز المتعاونين",
"Friend requests": "طلبات الصداقة",
+ "From": "من",
"From the region": "من المنطقة",
"Genres are only recorded for files scanned after this feature was added — re-add a folder to pick them up.": "لا تُسجَّل الأنواع إلا للملفات التي فُحصت بعد إضافة هذه الميزة، أعد إضافة المجلد لالتقاطها.",
"Gently magnify nearby posters as you move across a poster row.": "يكبّر الملصقات المجاورة بلطف أثناء تنقّلك عبر صف الملصقات.",
@@ -178,6 +179,7 @@ const used: Record = {
"The all-time greats": "عظماء كل العصور",
"The server stopped responding, the rest stayed on this device.": "توقّف الخادم عن الاستجابة، وبقي الباقي على هذا الجهاز.",
"Timer": "مؤقّت",
+ "To": "إلى",
"Top 100": "أفضل 100",
"Top Manga": "أفضل المانغا",
"Top People": "أبرز الشخصيات",
@@ -190,6 +192,7 @@ const used: Record = {
"Vertical": "عمودي",
"View badges": "عرض الشارات",
"View {name}": "عرض {name}",
+ "Votes": "الأصوات",
"Watch now": "شاهد الآن",
"Watch party": "جلسة مشاهدة معًا",
"What it leaned on": "ما استند إليه",
@@ -243,6 +246,442 @@ const used: Record = {
"{wins} wins": "{wins} فوز",
"{w} wins, {n} nominations": "{w} فوز، {n} ترشيح",
"× breadth/recency {mod} = {score}": "× الاتساع/الحداثة {mod} = {score}",
+
+ "Activity": "النشاط",
+ "Adaptations": "اقتباسات",
+ "Add titles with the search above, or hit \"Add to list\" on any movie or show's page.":
+ "أضف عناوين عبر البحث أعلاه، أو اضغط \"أضف إلى القائمة\" في صفحة أي فيلم أو مسلسل.",
+ "Airing": "يُعرض",
+ "Align": "محاذاة",
+ "Anime4K": "Anime4K",
+ "Announcement": "إعلان",
+ "Anonymous": "مجهول",
+ "Arcs": "أقواس القصة",
+ "Ascending": "تصاعدي",
+ "Availability": "التوفر",
+ "Available": "متاح",
+ "Awards": "الجوائز",
+ "Backdrops": "خلفيات",
+ "Backups": "نسخ احتياطية",
+ "Beta": "تجريبي",
+ "Born": "الميلاد",
+ "Both": "كلاهما",
+ "Budget": "الميزانية",
+ "Buffering": "جارٍ التخزين المؤقت",
+ "Calendar": "التقويم",
+ "Canceled": "أُلغي",
+ "Catalog": "الفهرس",
+ "Channel": "القناة",
+ "Characters": "الشخصيات",
+ "Chime": "نغمة",
+ "Choose": "اختر",
+ "Cinematography": "التصوير السينمائي",
+ "Collapse": "طيّ",
+ "Completed": "مكتمل",
+ "Configurable": "قابل للتهيئة",
+ "Country": "البلد",
+ "Created": "أُنشئ",
+ "Creator": "المُنشئ",
+ "Crew": "الطاقم",
+ "Customize": "تخصيص",
+ "Descending": "تنازلي",
+ "Directing": "الإخراج",
+ "Directors": "المخرجون",
+ "Down": "لأسفل",
+ "Duration": "المدة",
+ "Edge": "الحافة",
+ "Editor": "المحرر",
+ "Editors": "المحررون",
+ "Ended": "انتهى",
+ "Ep": "ح",
+ "Exit": "خروج",
+ "Explore": "استكشاف",
+ "Favorite": "مفضّل",
+ "Filler": "حشو",
+ "Filter": "تصفية",
+ "Folders": "المجلدات",
+ "Forced": "إجباري",
+ "Franchise": "سلسلة الأفلام",
+ "Gallery": "المعرض",
+ "Gamma": "غاما",
+ "Genre": "النوع",
+ "Get": "احصل",
+ "Grand": "الكبرى",
+ "Grouped": "مجمّع",
+ "Heads-up: a few addons (like AIOStatus) don't pre-fill from the URL. If the form loads blank, paste the existing manifest URL into their \"Import from URL\" field to restore your settings.":
+ "تنبيه: بعض الإضافات (مثل AIOStatus) لا تُعبّئ تلقائيًا من الرابط. إذا ظهر النموذج فارغًا، الصق رابط manifest الحالي في حقل \"استيراد من رابط\" لاستعادة إعداداتك.",
+ "Highlights": "أبرز اللقطات",
+ "Horizontal": "أفقي",
+ "ID": "المعرّف",
+ "Information": "معلومات",
+ "Interrupted": "مُقاطَع",
+ "Invert": "عكس",
+ "Language": "اللغة",
+ "Latest": "الأحدث",
+ "Local": "محلي",
+ "Logos": "الشعارات",
+ "Manga": "مانغا",
+ "Matched": "مطابَق",
+ "Media": "الوسائط",
+ "Metascore": "Metascore",
+ "More": "المزيد",
+ "Mute": "كتم",
+ "Muted": "مكتوم",
+ "Name each image file after its award ID and put them in a .zip, then use \"Import a .zip pack\" above. No JSON, no hosting needed. Harbor matches each file to its award, stores it locally, resizes it, and skips anything it doesn't recognize.":
+ "سمِّ كل ملف صورة بمعرّف الجائزة الخاص به وضعها في ملف .zip، ثم استخدم \"استيراد حزمة .zip\" أعلاه. لا حاجة لـ JSON أو استضافة. يطابق Harbor كل ملف مع جائزته، ويخزّنه محليًا، ويُعيد ضبط حجمه، ويتجاوز أي شيء لا يتعرّف عليه.",
+ "Network": "الشبكة",
+ "Networks": "الشبكات",
+ "Nominee": "مرشّح",
+ "Now": "الآن",
+ "Ongoing": "مستمر",
+ "Paid": "مدفوع",
+ "Pattern (e.g. \\bremux\\b)": "نمط (مثال: \\bremux\\b)",
+ "Pause": "إيقاف مؤقت",
+ "PiP": "صورة داخل صورة",
+ "Picture": "الصورة",
+ "Pin": "تثبيت",
+ "Pinned": "مثبّت",
+ "PlayStation": "PlayStation",
+ "Playlist": "قائمة التشغيل",
+ "Popcornmeter": "Popcornmeter",
+ "Posters": "الملصقات",
+ "Posters, logos, and title art load in the first available language from this list, falling back down the order. \"Original\" uses the title's own language. Put your main language first. Needs a TMDB key.":
+ "تُحمَّل الملصقات والشعارات وفن العناوين من أول لغة متاحة في هذه القائمة، مع التراجع تنازليًا في الترتيب. \"الأصلية\" تستخدم لغة العمل نفسه. ضع لغتك الرئيسية أولًا. يتطلب مفتاح TMDB.",
+ "Posts": "المنشورات",
+ "Preferring": "تفضيل",
+ "Preparing": "جارٍ التحضير",
+ "Producers": "المنتجون",
+ "Producing": "الإنتاج",
+ "Pulse": "نبض",
+ "Queue": "قائمة الانتظار",
+ "Queued": "في قائمة الانتظار",
+ "Quiet": "هادئ",
+ "Ready": "جاهز",
+ "Rec": "تسجيل",
+ "Recent": "الأحدث",
+ "Recordings": "التسجيلات",
+ "Refine": "تنقيح",
+ "Refresh": "تحديث",
+ "Reload": "إعادة تحميل",
+ "Reminders": "التذكيرات",
+ "Rename": "إعادة تسمية",
+ "Renamed": "أُعيدت تسميته",
+ "Replay": "إعادة التشغيل",
+ "Rerun": "إعادة عرض",
+ "Results": "النتائج",
+ "Resume": "استئناف",
+ "Revenue": "الإيرادات",
+ "Review": "مراجعة",
+ "Right-click any title in Harbor or hit \"Add to Watchlist\" on its detail page to save it here.":
+ "انقر بزر الفأرة الأيمن على أي عنوان في Harbor أو اضغط \"أضف إلى قائمة المشاهدة\" في صفحته لحفظه هنا.",
+ "Runtime": "المدة",
+ "SIMKL": "SIMKL",
+ "SVP's files are here but its VapourSynth engine won't load ({err}). This usually means a stale VapourSynth entry or a missing Microsoft VC++ runtime. Reinstall SVP, or install the latest \"Visual C++ Redistributable (x64)\" from Microsoft, then reopen Harbor.":
+ "ملفات SVP موجودة هنا لكن محرك VapourSynth الخاص به لا يعمل ({err}). عادةً ما يعني هذا وجود إدخال VapourSynth قديم أو نقص في حزمة Microsoft VC++. أعد تثبيت SVP، أو ثبّت أحدث نسخة من \"Visual C++ Redistributable (x64)\" من مايكروسوفت، ثم أعد فتح Harbor.",
+ "Scanning": "جارٍ الفحص",
+ "Searching": "جارٍ البحث",
+ "Season": "الموسم",
+ "Seasons": "المواسم",
+ "Servers": "الخوادم",
+ "Shows": "المسلسلات",
+ "Silent": "صامت",
+ "Someone": "شخص ما",
+ "Sports": "الرياضة",
+ "Spotlight": "الأبرز",
+ "Statistics": "الإحصاءات",
+ "Stats": "الإحصاءات",
+ "Status": "الحالة",
+ "Stay": "البقاء",
+ "Streams": "البثوث",
+ "Studio": "الاستوديو",
+ "Submit": "إرسال",
+ "Subtitle": "الترجمة",
+ "Synopsis": "الملخص",
+ "TBD": "لم يُحدَّد",
+ "TMDB": "TMDB",
+ "Tags": "الوسوم",
+ "Thanks": "شكرًا",
+ "Thickness": "السماكة",
+ "This file is in OneDrive. If \"Files On-Demand\" is on, the file is a cloud placeholder until it's downloaded. Right-click it in Explorer and pick":
+ "هذا الملف موجود في OneDrive. إذا كانت خاصية \"الملفات عند الطلب\" مفعّلة، فالملف عبارة عن نائب سحابي حتى يُحمَّل. انقر بزر الفأرة الأيمن عليه في مستكشف الملفات واختر",
+ "Time": "الوقت",
+ "Titles": "العناوين",
+ "Today": "اليوم",
+ "Tomatometer": "Tomatometer",
+ "Tone": "النغمة اللونية",
+ "Tools": "الأدوات",
+ "Trailer": "الإعلان الدعائي",
+ "Try a different spelling, a person's name, a year like \"1972\", or a genre like \"Horror\".":
+ "جرّب تهجئة مختلفة، أو اسم شخص، أو سنة مثل \"1972\"، أو نوعًا مثل \"رعب\".",
+ "Tune": "ضبط",
+ "Undo": "تراجع",
+ "Unmute": "إلغاء الكتم",
+ "Unpin": "إلغاء التثبيت",
+ "Up": "لأعلى",
+ "Uploads": "الرفعات",
+ "Verify": "تحقّق",
+ "Verifying": "جارٍ التحقّق",
+ "Videos": "الفيديوهات",
+ "View": "عرض",
+ "WIN": "فوز",
+ "When Esc would close the player, show a quick confirm first. You can tick \"Don't ask me again\" in that prompt to always leave on Esc.":
+ "عند إغلاق المشغّل بمفتاح Esc، اعرض تأكيدًا سريعًا أولًا. يمكنك تحديد \"لا تسألني مجددًا\" في ذلك التأكيد لجعل Esc يُغلق دائمًا دون تأكيد.",
+ "Winner": "الفائز",
+ "Writers": "الكتّاب",
+ "Writing": "الكتابة",
+ "Xbox": "Xbox",
+ "Year": "السنة",
+ "active": "نشط",
+ "added": "أُضيف",
+ "authenticated": "مُوثَّق",
+ "categories": "فئات",
+ "category": "فئة",
+ "downloads": "التنزيلات",
+ "favorited": "أُضيف للمفضلة",
+ "finished": "منتهٍ",
+ "hr": "س",
+ "local": "محلي",
+ "movies": "أفلام",
+ "nomination": "ترشيح",
+ "nominations": "ترشيحات",
+ "obsolete": "قديم",
+ "peer": "نظير",
+ "peers": "أقران",
+ "plays": "مرات التشغيل",
+ "rated": "مقيَّم",
+ "result": "نتيجة",
+ "results": "نتائج",
+ "review": "مراجعة",
+ "speed": "السرعة",
+ "tomorrow": "غدًا",
+ "watched": "شوهد",
+
+ "What gets sent": "ما الذي يُرسَل",
+ "Loading environment details…": "جارٍ تحميل تفاصيل البيئة…",
+ "Auto-included. No keys, no library, no URLs. Just structural flags so reproductions go faster.":
+ "تُضمَّن تلقائيًا. لا مفاتيح، لا مكتبة، لا روابط. مجرد أعلام بنيوية تسرّع إعادة إنتاج المشكلة.",
+ "Report received": "استُلم التقرير",
+ "Tracked as": "تتبَّعه بالرقم",
+ "If you left a GitHub username, you'll be tagged in the release notes when this lands.":
+ "إذا تركت اسم مستخدم GitHub، ستُذكَر في ملاحظات الإصدار عند إدماج هذا.",
+ "File another": "أرسل تقريرًا آخر",
+ "Pitch a fix as a PR": "اقترح إصلاحًا عبر طلب سحب",
+
+ "{n} frames stored. Wiping rebuilds them next time you watch.":
+ "{n} إطار محفوظ. المسح يعيد بناءها في المرة القادمة التي تشاهد فيها.",
+ "No frames stored yet. They'll appear here as you watch things.":
+ "لا توجد إطارات محفوظة بعد. ستظهر هنا أثناء مشاهدتك.",
+ "Clear all saved frames": "مسح كل الإطارات المحفوظة",
+ "Logo": "الشعار",
+
+ "Switch quality": "تبديل الجودة",
+ "All sources": "كل المصادر",
+ "All": "الكل",
+
+ "Hidden": "مخفي",
+
+ "Icon locked": "الأيقونة مقفلة",
+ "Preset": "إعداد مسبق",
+
+ "No saved profiles yet.": "لا توجد ملفات تعريف محفوظة بعد.",
+
+ "No limit": "بلا حد",
+ "1 Gbps": "1 جيجابت/ث",
+ "Internet speed": "سرعة الإنترنت",
+ "Pick the cap your link can sustain. Run a real speed test if you need a number.":
+ "اختر الحد الذي يتحمّله اتصالك. أجرِ اختبار سرعة فعلي إن احتجت رقمًا دقيقًا.",
+ "No filter. All bitrates considered equally.": "بلا تصفية. تُعتبر كل معدلات البِت متساوية.",
+ "Streams over {cap} Mbps will rank lower, even when cached.":
+ "البثوث فوق {cap} ميجابت/ث ستُرتَّب أدنى، حتى لو كانت مخزَّنة مؤقتًا.",
+
+ "Variant": "المتغيّر",
+ "Enable": "تفعيل",
+ "Applies only to HDR sources when you play them.": "يُطبَّق فقط على مصادر HDR عند تشغيلها.",
+ "Applies to anime when you play it.": "يُطبَّق على الأنمي عند تشغيله.",
+ "Applies when you play something. Only visibly changes the picture when the video is being scaled.":
+ "يُطبَّق عند تشغيل أي شيء. يغيّر الصورة بشكل ملحوظ فقط عندما يُعاد قياس الفيديو.",
+ "Downloading…": "جارٍ التنزيل…",
+ "Download shader": "تنزيل المظلِّل",
+
+ "No background image": "لا توجد صورة خلفية",
+ "Tonight's picks": "مختارات الليلة",
+ "Both serif and body text should stay legible at this dim.":
+ "يجب أن يبقى نص العنوان والنص الأساسي واضحَين عند درجة التعتيم هذه.",
+ "Live preview": "معاينة مباشرة",
+ "Compressing…": "جارٍ الضغط…",
+ "Replace image": "استبدال الصورة",
+ "Choose image": "اختيار صورة",
+ "JPEG / PNG / WebP. Big files auto-compress to fit.":
+ "JPEG / PNG / WebP. تُضغط الملفات الكبيرة تلقائيًا لتناسب الحجم.",
+ "Dim overlay": "تعتيم الخلفية",
+ "Couldn't save that background. Your local storage is full. Try a smaller crop or clear cached data.":
+ "تعذّر حفظ تلك الخلفية. التخزين المحلي ممتلئ. جرّب اقتصاصًا أصغر أو امسح البيانات المخزَّنة مؤقتًا.",
+ "Couldn't compress this image small enough. Try a different photo or crop it down.":
+ "تعذّر ضغط هذه الصورة بما يكفي. جرّب صورة أخرى أو اقتصصها.",
+ "Couldn't read that image. Try a different file.": "تعذّر قراءة تلك الصورة. جرّب ملفًا آخر.",
+
+ "Get your free TheTVDB key": "احصل على مفتاح TheTVDB المجاني",
+ "About a minute. Free for personal use.": "دقيقة تقريبًا. مجاني للاستخدام الشخصي.",
+
+ "Only my favorited channels": "قنواتي المفضّلة فقط",
+ "Heads up": "تنبيه",
+
+ "No profile": "لا يوجد ملف",
+ "Could not read the file.": "تعذّرت قراءة الملف.",
+ "Save layout profile": "حفظ ملف التخطيط",
+ "Profile name": "اسم الملف",
+ "Rename profile": "إعادة تسمية الملف",
+ "Delete profile": "حذف الملف",
+ "Delete \"{name}\"? This can't be undone.": "حذف \"{name}\"؟ لا يمكن التراجع عن هذا.",
+ "Reset to defaults": "إعادة الضبط الافتراضي",
+ "Reset this profile to factory defaults? Your tweaks on it will be lost.":
+ "إعادة ضبط هذا الملف افتراضيًا؟ ستُفقد تعديلاتك عليه.",
+ "Layout profiles": "ملفات التخطيط",
+ "Save as new profile...": "حفظ كملف جديد...",
+ "Rename current": "إعادة تسمية الحالي",
+ "Delete current": "حذف الحالي",
+ "Export as file": "تصدير كملف",
+ "Import from file...": "استيراد من ملف...",
+
+ "shader.content.all": "كل الفيديو",
+ "shader.content.anime": "الأنمي",
+ "shader.content.hdr": "HDR فقط",
+ "shader.content.live": "أفلام حية",
+ "shader.tier.fast": "خفيف",
+ "shader.tier.quality": "الجودة",
+ "shader.tier.heavy": "ثقيل",
+ "Harbor's built-in HDR to SDR conversion is on. Turn it off in Video tuning to use this instead. Running both double-processes the picture.":
+ "تحويل HDR إلى SDR المدمج في Harbor مفعّل. عطّله من ضبط الفيديو لاستخدام هذا بدلًا منه. تشغيل كليهما يعالج الصورة مرتين.",
+ "Download failed. Check your connection and try again.": "فشل التنزيل. تحقّق من اتصالك وحاول مجددًا.",
+ "Updating…": "جارٍ التحديث…",
+ "Re-download": "إعادة التنزيل",
+
+ "Every launch": "كل مرة تشغيل",
+ "Every 15 min": "كل 15 دقيقة",
+ "Every 30 min": "كل 30 دقيقة",
+ "Never": "أبدًا",
+ "Share settings with all profiles": "مشاركة الإعدادات مع كل الملفات",
+ "One set of preferences everyone on this Harbor uses.": "مجموعة تفضيلات واحدة يستخدمها الجميع على Harbor هذا.",
+ "Use independent settings for this profile": "استخدام إعدادات مستقلة لهذا الملف",
+ "This profile keeps its own preferences, separate from everyone else.":
+ "يحتفظ هذا الملف بتفضيلاته الخاصة، منفصلة عن البقية.",
+ "Show {n} more addons": "عرض {n} إضافة أخرى",
+ "All addons ({n})": "كل الإضافات ({n})",
+ "Last synced {n}s ago.": "آخر مزامنة قبل {n} ثانية.",
+ "Edit {name}": "تعديل {name}",
+ "Switch to {name}": "التبديل إلى {name}",
+
+ "Create account": "إنشاء حساب",
+ "Create my account": "إنشاء حسابي",
+ "Join Harbor": "انضم إلى Harbor",
+ "Welcome back": "أهلًا بعودتك",
+ "One free account for your handle, themes, and sync.": "حساب مجاني واحد لمعرّفك وثيماتك ومزامنتك.",
+ "Sign in to pick up where you left off.": "سجّل الدخول لتكمل من حيث توقفت.",
+ "yourname": "اسمك",
+ "At least 8 characters": "8 أحرف على الأقل",
+ "Your password": "كلمة مرورك",
+ "Forgot password?": "نسيت كلمة المرور؟",
+ "We'll show a one-time recovery key right after you sign up. Save it: it's the only way back in if you forget your password.":
+ "سنعرض مفتاح استرداد لمرة واحدة فور تسجيلك. احفظه: إنه الطريقة الوحيدة للعودة إذا نسيت كلمة المرور.",
+ "3 to 24 letters, numbers, or underscores.": "3 إلى 24 حرفًا أو رقمًا أو شرطة سفلية.",
+
+ "Signed in as {username}": "مسجَّل الدخول باسم {username}",
+ "Signed in to your Harbor account": "مسجَّل الدخول إلى حساب Harbor الخاص بك",
+
+ "Handle": "المعرّف",
+ "How people find you across Harbor.": "الطريقة التي يجدك بها الناس عبر Harbor.",
+ "Claim one so people can find you across Harbor.": "احصل على واحد ليتمكّن الناس من إيجادك عبر Harbor.",
+ "yourhandle": "معرّفك",
+ "Claim": "احصل عليه",
+ "Locked until {date}. You can change your handle {cooldown}.": "مقفل حتى {date}. يمكنك تغيير معرّفك {cooldown}.",
+ "You can change your handle {cooldown}, so pick one you'll keep.": "يمكنك تغيير معرّفك {cooldown}، فاختر واحدًا تحتفظ به.",
+ "You can change your handle {cooldown} after you claim it.": "يمكنك تغيير معرّفك {cooldown} بعد الحصول عليه.",
+ "Checking availability": "جارٍ التحقّق من التوفر",
+ "That handle is yours to claim.": "هذا المعرّف متاح لك.",
+ "Sign in to Harbor to check availability.": "سجّل الدخول إلى Harbor للتحقّق من التوفر.",
+ "That handle is taken.": "هذا المعرّف مأخوذ.",
+ "That handle is reserved.": "هذا المعرّف محجوز.",
+ "That handle is not valid.": "هذا المعرّف غير صالح.",
+ "once every 14 days": "مرة كل 14 يومًا",
+ "soon": "قريبًا",
+
+ "Dropped": "متروك",
+ "Everything": "الكل",
+ "A to Z": "أ إلى ي",
+ "By year": "حسب السنة",
+
+ "Now Playing card": "بطاقة قيد التشغيل الآن",
+ "Adds an Identify-song button to the player that recognizes the current music via AudD and shows a Now Playing card. Off by default; needs an AudD key below.":
+ "يضيف زر تحديد الأغنية إلى المشغّل يتعرّف على الموسيقى الحالية عبر AudD ويعرض بطاقة قيد التشغيل الآن. معطّل افتراضيًا؛ يحتاج مفتاح AudD أدناه.",
+ "Identify the current song": "تحديد الأغنية الحالية",
+ "Show the in-player Identify-song button and Now Playing card.": "إظهار زر تحديد الأغنية وبطاقة قيد التشغيل الآن داخل المشغّل.",
+ "Spinning disc beside the title with a small control bar.": "قرص دوّار بجانب العنوان مع شريط تحكّم صغير.",
+ "Large centered cover on a dark card with the disc behind it.": "غلاف كبير في المنتصف على بطاقة داكنة مع القرص خلفه.",
+ "Show track details": "إظهار تفاصيل المقطع",
+ "Display the artist and album under the title on the card.": "عرض الفنان والألبوم تحت العنوان في البطاقة.",
+
+ "Saved movies and episodes for offline watching": "أفلام وحلقات محفوظة للمشاهدة دون اتصال",
+ "{n} items": "{n} عنصر",
+ "{n} downloading": "{n} قيد التنزيل",
+ "{n} paused": "{n} متوقف",
+ "{size} saved": "{size} محفوظ",
+ "Downloading": "قيد التنزيل",
+ "Issues": "مشاكل",
+ "No downloads yet": "لا توجد تنزيلات بعد",
+ "Open any movie or show, hover an episode, and click the download icon. Pick the exact source you want and it saves here for offline watching.":
+ "افتح أي فيلم أو مسلسل، مرّر فوق حلقة، وانقر أيقونة التنزيل. اختر المصدر الذي تريده بالضبط وسيُحفظ هنا للمشاهدة دون اتصال.",
+ "Or set a series to auto-download": "أو فعّل التنزيل التلقائي لمسلسل",
+ "{n} episodes": "{n} حلقة",
+
+ "Add a series to auto-download": "أضف مسلسلًا للتنزيل التلقائي",
+ "Searching...": "جارٍ البحث...",
+ "No series found": "لم يُعثر على مسلسلات",
+
+ "checks periodically": "يتحقق دوريًا",
+ "checks any moment": "يتحقق في أي لحظة",
+ "checks in {n}m": "يتحقق خلال {n}د",
+ "checks in {n}h": "يتحقق خلال {n}س",
+ "checks in {n}d": "يتحقق خلال {n}ي",
+ "next airs in {n}h": "الحلقة القادمة خلال {n}س",
+ "next airs in {n}d": "الحلقة القادمة خلال {n}ي",
+ "next airs in {n}w": "الحلقة القادمة خلال {n}أسبوع",
+ "any quality": "أي جودة",
+ "up to 4K": "حتى 4K",
+ "up to 1080p": "حتى 1080p",
+ "up to 720p": "حتى 720p",
+ "cached only": "المخزَّن مؤقتًا فقط",
+ "allow P2P downloads": "السماح بتنزيلات P2P",
+ "until I stop": "حتى أوقفه",
+ "until the season ends": "حتى نهاية الموسم",
+ "for {n} more episodes": "لـ{n} حلقة إضافية",
+ "for 1 more episode": "لحلقة واحدة إضافية",
+ "for 3 more episodes": "لـ3 حلقات إضافية",
+ "for 5 more episodes": "لـ5 حلقات إضافية",
+ "for 10 more episodes": "لـ10 حلقات إضافية",
+
+ "Auto-download": "التنزيل التلقائي",
+ "New episodes grab themselves in the background": "تُجلب الحلقات الجديدة تلقائيًا في الخلفية",
+ "Add a series above and Harbor will grab each new episode as it airs, on your terms.":
+ "أضف مسلسلًا أعلاه وسيجلب Harbor كل حلقة جديدة فور عرضها، بالشروط التي تحدّدها.",
+ "Check now": "تحقّق الآن",
+
+ "{n} grabbed": "تم جلب {n}",
+ "first check pending": "التحقق الأول لم يبدأ",
+ "up to date": "محدَّث",
+ "limit reached": "بلغ الحد",
+ "checking now": "يتحقق الآن",
+ "last {x}": "آخر {x}",
+ "Stop auto-downloading {name}": "إيقاف التنزيل التلقائي لـ{name}",
+ "Stop auto-downloading": "إيقاف التنزيل التلقائي",
+ "Grab": "جلب",
+ "episodes,": "حلقات،",
+
+ "Failed: {error}": "فشل: {error}",
+ "download error": "خطأ في التنزيل",
+ "Interrupted: re-download to finish": "مُقاطَع: أعد التنزيل للإنهاء",
+ "Cancel download": "إلغاء التنزيل",
+ "Show in folder": "إظهار في المجلد",
+ "Delete download and file": "حذف التنزيل والملف",
};
export default used;
diff --git a/src/lib/i18n/locales/en.json b/src/lib/i18n/locales/en.json
new file mode 100644
index 000000000..c030debb8
--- /dev/null
+++ b/src/lib/i18n/locales/en.json
@@ -0,0 +1,4640 @@
+{
+ " · {n} instant": " · {n} instant",
+ " · away": " · away",
+ " · host": " · host",
+ " · left the video": " · left the video",
+ " · muted": " · muted",
+ " · paused": " · paused",
+ " · Series": " · Series",
+ " · still loading": " · still loading",
+ " · Syncing Trakt…": " · Syncing Trakt…",
+ " · you": " · you",
+ " (you)": " (you)",
+ " Anything you save also syncs to your Trakt account.": " Anything you save also syncs to your Trakt account.",
+ " Connect Trakt in Settings to sync this list across devices.": " Connect Trakt in Settings to sync this list across devices.",
+ ", ": ", ",
+ ", {hiddenCount} hidden": ", {hiddenCount} hidden",
+ ", {n} unrepairable": ", {n} unrepairable",
+ ", and ": ", and ",
+ ", then try again.": ", then try again.",
+ ". Adds Letterboxd and Trakt community ratings to detail pages, covering what OMDb misses.": ". Adds Letterboxd and Trakt community ratings to detail pages, covering what OMDb misses.",
+ ". AllDebrid deprecated their cache-check endpoint, so streams may show as unknown until you actually hit Play.": ". AllDebrid deprecated their cache-check endpoint, so streams may show as unknown until you actually hit Play.",
+ ". EU-hosted, fast cache check. Same read-only usage as the others.": ". EU-hosted, fast cache check. Same read-only usage as the others.",
+ ". Leave empty for the default.": ". Leave empty for the default.",
+ ". Once saved, every poster gets re-rendered with IMDb, Rotten Tomatoes, and Metacritic stamped on it.": ". Once saved, every poster gets re-rendered with IMDb, Rotten Tomatoes, and Metacritic stamped on it.",
+ ". Patterns may also use ": ". Patterns may also use ",
+ ". Pick the \"Negotiated API key\" path.": ". Pick the \"Negotiated API key\" path.",
+ ". Same read-only usage as Real-Debrid. Also lets you queue uncached torrents from the play picker.": ". Same read-only usage as Real-Debrid. Also lets you queue uncached torrents from the play picker.",
+ ". They email an activation link the first time. Click it, then come back and save.": ". They email an activation link the first time. Click it, then come back and save.",
+ ". Use the \"personal\" key, not the project one.": ". Use the \"personal\" key, not the project one.",
+ ". Use the v3 key, not the read access token.": ". Use the v3 key, not the read access token.",
+ ". Used to check cache and unrestrict links. Harbor never adds or removes torrents on its own.": ". Used to check cache and unrestrict links. Harbor never adds or removes torrents on its own.",
+ ". Uses the directdl endpoint, which skips queueing for anything already cached.": ". Uses the directdl endpoint, which skips queueing for anything already cached.",
+ "· A debrid key (TorBox, Real-Debrid, etc.) is missing or expired.": "· A debrid key (TorBox, Real-Debrid, etc.) is missing or expired.",
+ "· Add a debrid key (TorBox, Real-Debrid, AllDebrid, Premiumize, Debrid-Link).": "· Add a debrid key (TorBox, Real-Debrid, AllDebrid, Premiumize, Debrid-Link).",
+ "· currently hidden": "· currently hidden",
+ "· Install a stream addon (Torrentio, Comet, MediaFusion).": "· Install a stream addon (Torrentio, Comet, MediaFusion).",
+ "· No stream addon is installed yet (Torrentio, MediaFusion, Comet).": "· No stream addon is installed yet (Torrentio, MediaFusion, Comet).",
+ "· This title is too new and no source has it cached yet.": "· This title is too new and no source has it cached yet.",
+ "'s setup page in Harbor's built-in browser. Pick your options. When you click Install on their page, Harbor catches the link automatically and updates the addon.": "'s setup page in Harbor's built-in browser. Pick your options. When you click Install on their page, Harbor catches the link automatically and updates the addon.",
+ "'s setup page. Pick your options, then copy the install link it gives you and paste it below to update the addon.": "'s setup page. Pick your options, then copy the install link it gives you and paste it below to update the addon.",
+ "{code} with a WebSocket upgrade: opens a Watch Together room. State is held in a Durable Object, no persistence beyond the active session.": "{code} with a WebSocket upgrade: opens a Watch Together room. State is held in a Durable Object, no persistence beyond the active session.",
+ "{code}: returns JSON with the worker version. Used by the test button.": "{code}: returns JSON with the worker version. Used by the test button.",
+ "{count} community ratings on stremio-addons.net": "{count} community ratings on stremio-addons.net",
+ "{count} days ago": "{count} days ago",
+ "{count} dl": "{count} dl",
+ "{count} downloading": "{count} downloading",
+ "{count} films": "{count} films",
+ "{count} frames stored. Wiping rebuilds them next time you watch.": "{count} frames stored. Wiping rebuilds them next time you watch.",
+ "{count} items": "{count} items",
+ "{count} months ago": "{count} months ago",
+ "{count} picks ready": "{count} picks ready",
+ "{count} selected": "{count} selected",
+ "{count} tracker request blocked this session. Harbor itself sends zero telemetry.": "{count} tracker request blocked this session. Harbor itself sends zero telemetry.",
+ "{d}d ago": "{d}d ago",
+ "{h}h {m}m left": "{h}h {m}m left",
+ "{h}h ago": "{h}h ago",
+ "{h}h left": "{h}h left",
+ "{label} · {n} collection": "{label} · {n} collection",
+ "{label} · {n} collections": "{label} · {n} collections",
+ "{langs} only": "{langs} only",
+ "{langs} only · {n} hidden": "{langs} only · {n} hidden",
+ "{m}m {s}s ago": "{m}m {s}s ago",
+ "{m}m ago": "{m}m ago",
+ "{m}m left": "{m}m left",
+ "{media} between {lo}-{hi} minutes. Pick a length, not a wall of options.": "{media} between {lo}-{hi} minutes. Pick a length, not a wall of options.",
+ "{media} from {name}: popular, acclaimed, and hidden alike.": "{media} from {name}: popular, acclaimed, and hidden alike.",
+ "{media} produced by {name}, ranked from biggest hits to overlooked gems.": "{media} produced by {name}, ranked from biggest hits to overlooked gems.",
+ "{n} active": "{n} active",
+ "{n} addon": "{n} addon",
+ "{n} addons": "{n} addons",
+ "{n} anime titles will be left out (Trakt has no IDs for them).": "{n} anime titles will be left out (Trakt has no IDs for them).",
+ "{n} avatars across film, TV, and anime.": "{n} avatars across film, TV, and anime.",
+ "{n} award": "{n} award",
+ "{n} awards": "{n} awards",
+ "{n} chars": "{n} chars",
+ "{n} connected": "{n} connected",
+ "{n} countries": "{n} countries",
+ "{n} country": "{n} country",
+ "{n} custom": "{n} custom",
+ "{n} day ago": "{n} day ago",
+ "{n} days ago": "{n} days ago",
+ "{n} ep": "{n} ep",
+ "{n} episode": "{n} episode",
+ "{n} episodes": "{n} episodes",
+ "{n} episodes · {file}": "{n} episodes · {file}",
+ "{n} episodes on disk": "{n} episodes on disk",
+ "{n} eps": "{n} eps",
+ "{n} film": "{n} film",
+ "{n} films": "{n} films",
+ "{n} frame stored. Wiping rebuilds them next time you watch.": "{n} frame stored. Wiping rebuilds them next time you watch.",
+ "{n} frames stored. Wiping rebuilds them next time you watch.": "{n} frames stored. Wiping rebuilds them next time you watch.",
+ "{n} genre": "{n} genre",
+ "{n} genres": "{n} genres",
+ "{n} hidden": "{n} hidden",
+ "{n} hr": "{n} hr",
+ "{n} in your Stremio library": "{n} in your Stremio library",
+ "{n} item": "{n} item",
+ "{n} items": "{n} items",
+ "{n} items need repair.": "{n} items need repair.",
+ "{n} languages": "{n} languages",
+ "{n} lines skipped (not valid)": "{n} lines skipped (not valid)",
+ "{n} LIVE": "{n} LIVE",
+ "{n} min": "{n} min",
+ "{n} min lead": "{n} min lead",
+ "{n} month ago": "{n} month ago",
+ "{n} months ago": "{n} months ago",
+ "{n} new episodes since you last watched": "{n} new episodes since you last watched",
+ "{n} not matched": "{n} not matched",
+ "{n} on Trakt": "{n} on Trakt",
+ "{n} option": "{n} option",
+ "{n} options": "{n} options",
+ "{n} options active": "{n} options active",
+ "{n} people": "{n} people",
+ "{n} provider": "{n} provider",
+ "{n} providers": "{n} providers",
+ "{n} saved on this device": "{n} saved on this device",
+ "{n} score badges enabled.": "{n} score badges enabled.",
+ "{n} seasons": "{n} seasons",
+ "{n} selected": "{n} selected",
+ "{n} service needs attention": "{n} service needs attention",
+ "{n} services need attention": "{n} services need attention",
+ "{n} source": "{n} source",
+ "{n} source across {count} addons": "{n} source across {count} addons",
+ "{n} sources": "{n} sources",
+ "{n} sources across {count} addons": "{n} sources across {count} addons",
+ "{n} sources available": "{n} sources available",
+ "{n} tab": "{n} tab",
+ "{n} tab locked": "{n} tab locked",
+ "{n} tab requires this profile's PIN.": "{n} tab requires this profile's PIN.",
+ "{n} tabs": "{n} tabs",
+ "{n} tabs locked": "{n} tabs locked",
+ "{n} tabs require this profile's PIN.": "{n} tabs require this profile's PIN.",
+ "{n} title": "{n} title",
+ "{n} titles": "{n} titles",
+ "{n} titles need review — help us identify them.": "{n} titles need review — help us identify them.",
+ "{n} tracker request blocked this session. Harbor itself sends zero telemetry.": "{n} tracker request blocked this session. Harbor itself sends zero telemetry.",
+ "{n} tracker requests blocked this session. Harbor itself sends zero telemetry.": "{n} tracker requests blocked this session. Harbor itself sends zero telemetry.",
+ "{n} votes": "{n} votes",
+ "{n} watching": "{n} watching",
+ "{n} winner": "{n} winner",
+ "{n} winners": "{n} winners",
+ "{n} wins": "{n} wins",
+ "{n} year": "{n} year",
+ "{n} years": "{n} years",
+ "{n}d left": "{n}d left",
+ "{n}m": "{n}m",
+ "{n}m left": "{n}m left",
+ "{name} (TV)": "{name} (TV)",
+ "{name} imported to your library": "{name} imported to your library",
+ "{name} started watching": "{name} started watching",
+ "{name} will be removed from Harbor. Anything you've set to use it will fall back to Inter.": "{name} will be removed from Harbor. Anything you've set to use it will fall back to Inter.",
+ "{name}'s {sub}": "{name}'s {sub}",
+ "{names} +{n} more": "{names} +{n} more",
+ "{path} (open folder)": "{path} (open folder)",
+ "{pct}% watched": "{pct}% watched",
+ "{repaired} fixed, {clean} already clean": "{repaired} fixed, {clean} already clean",
+ "{s}s ago": "{s}s ago",
+ "{s}s left": "{s}s left",
+ "{shown} of {total}": "{shown} of {total}",
+ "{shown} of {total} file from your computer": "{shown} of {total} file from your computer",
+ "{shown} of {total} files from your computer": "{shown} of {total} files from your computer",
+ "{size} saved": "{size} saved",
+ "{source} list detected": "{source} list detected",
+ "{start} to {end} · {dur}": "{start} to {end} · {dur}",
+ "{start}-{end} of {total}": "{start}-{end} of {total}",
+ "{subtitle} · ranked by current popularity": "{subtitle} · ranked by current popularity",
+ "{title} image viewer": "{title} image viewer",
+ "{title} overview": "{title} overview",
+ "{used} / {limit} requests today.": "{used} / {limit} requests today.",
+ "{watched} of {total} watched ({pct}%).": "{watched} of {total} watched ({pct}%).",
+ "{word} {n} seconds": "{word} {n} seconds",
+ "{word} {n} seconds. Hold for options": "{word} {n} seconds. Hold for options",
+ "{word} {n}s · hold for options": "{word} {n}s · hold for options",
+ "#{position} in {label} Today": "#{position} in {label} Today",
+ "+ Watchlist": "+ Watchlist",
+ "+{n} ep": "+{n} ep",
+ "+{n} more": "+{n} more",
+ "○ Mark watched": "○ Mark watched",
+ "★ {rating} — Change": "★ {rating} — Change",
+ "★ Rate": "★ Rate",
+ "♡ Like": "♡ Like",
+ "♥ Liked": "♥ Liked",
+ "✓ Watched": "✓ Watched",
+ "00:23 on the left, -1:12 on the right.": "00:23 on the left, -1:12 on the right.",
+ "0m left": "0m left",
+ "1\tSubtitle delay +0.1s": "1\tSubtitle delay +0.1s",
+ "1 day ago": "1 day ago",
+ "1 episode": "1 episode",
+ "1 episode on disk": "1 episode on disk",
+ "1 frame stored. Wiping rebuilds them next time you watch.": "1 frame stored. Wiping rebuilds them next time you watch.",
+ "1 item": "1 item",
+ "1 line skipped (not valid)": "1 line skipped (not valid)",
+ "1 min": "1 min",
+ "1 month ago": "1 month ago",
+ "1 new episode since you last watched": "1 new episode since you last watched",
+ "1 option active": "1 option active",
+ "1 selected": "1 selected",
+ "1 title needs review — help us identify it.": "1 title needs review — help us identify it.",
+ "1 week": "1 week",
+ "1 year": "1 year",
+ "1. Open Movies\n2. Click The Substance\n3. Press Play\n4. ...": "1. Open Movies\n2. Click The Substance\n3. Press Play\n4. ...",
+ "1.5 min": "1.5 min",
+ "1.85:1": "1.85:1",
+ "10\tSuspicious file": "10\tSuspicious file",
+ "100\tTonight's main event": "100\tTonight's main event",
+ "100,000 requests per day.": "100,000 requests per day.",
+ "10ms CPU time per request.": "10ms CPU time per request.",
+ "10s": "10s",
+ "11\tSwedish": "11\tSwedish",
+ "12\tSwitch stream / TV Guide": "12\tSwitch stream / TV Guide",
+ "13\tSwitch the menus and buttons to your language. Arabic flips the layout to right to left.": "13\tSwitch the menus and buttons to your language. Arabic flips the layout to right to left.",
+ "14\tSword & Sorcery": "14\tSword & Sorcery",
+ "15\tSyncing Trakt…": "15\tSyncing Trakt…",
+ "15s": "15s",
+ "16\tSystem": "16\tSystem",
+ "16:9": "16:9",
+ "17\tS{s} E{e}": "17\tS{s} E{e}",
+ "18\tTHEN notify on": "18\tTHEN notify on",
+ "19\tTMDB powers the firehose of every release this month. The free tier covers it. About 60 seconds to set up. Switch to My Library if you'd rather only see what you've saved.": "19\tTMDB powers the firehose of every release this month. The free tier covers it. About 60 seconds to set up. Switch to My Library if you'd rather only see what you've saved.",
+ "2\tSubtitle delay −0.1s": "2\tSubtitle delay −0.1s",
+ "2 min": "2 min",
+ "2.39:1": "2.39:1",
+ "20\tTRACKS": "20\tTRACKS",
+ "20+ and": "20+ and",
+ "2000s Era": "2000s Era",
+ "2010s Classics": "2010s Classics",
+ "2020s Hits": "2020s Hits",
+ "21\tTV guide": "21\tTV guide",
+ "21:9": "21:9",
+ "22\tTackle %": "22\tTackle %",
+ "23\tTackles": "23\tTackles",
+ "24\tTamil": "24\tTamil",
+ "24m": "24m",
+ "25\tTarantino Picks": "25\tTarantino Picks",
+ "26\tTeam Turnovers": "26\tTeam Turnovers",
+ "27\tTechnical Fouls": "27\tTechnical Fouls",
+ "28\tTechnical. IBM's open family.": "28\tTechnical. IBM's open family.",
+ "29\tTelevision's finest": "29\tTelevision's finest",
+ "3\tSubtitle font size": "3\tSubtitle font size",
+ "3 months": "3 months",
+ "30\tTense Performances": "30\tTense Performances",
+ "30 days": "30 days",
+ "30s": "30s",
+ "31\tTest": "31\tTest",
+ "32\tTest relay": "32\tTest relay",
+ "33\tText-based sync": "33\tText-based sync",
+ "34\tThai": "34\tThai",
+ "35\tThe Boogeyman": "35\tThe Boogeyman",
+ "36\tThe Boss": "36\tThe Boss",
+ "37\tThe British Academy": "37\tThe British Academy",
+ "38\tThe Home Front": "38\tThe Home Front",
+ "39\tThe King": "39\tThe King",
+ "3PT": "3PT",
+ "4\tSubtitle track": "4\tSubtitle track",
+ "4 digits": "4 digits",
+ "4-digit PIN is set.": "4-digit PIN is set.",
+ "4:3": "4:3",
+ "40\tThe Long Lunch": "40\tThe Long Lunch",
+ "40-character token": "40-character token",
+ "41\tThe Master": "41\tThe Master",
+ "42\tThe Trenches": "42\tThe Trenches",
+ "43\tThe URL hostname is wrong or no longer exists. Many providers rotate domains; ask your provider for an updated playlist URL.": "43\tThe URL hostname is wrong or no longer exists. Many providers rotate domains; ask your provider for an updated playlist URL.",
+ "44\tThe URL is valid but the playlist is empty. The provider may be in maintenance, or the URL is misconfigured.": "44\tThe URL is valid but the playlist is empty. The provider may be in maintenance, or the URL is misconfigured.",
+ "45\tThe best {genre} {media}, layered by mood. Browse trending, dive into a director's run, sort by decade, find quiet gems.": "45\tThe best {genre} {media}, layered by mood. Browse trending, dive into a director's run, sort by decade, find quiet gems.",
+ "45s": "45s",
+ "46\tThe credentials in the URL are wrong. Edit the playlist and double check the username and password against what your provider sent.": "46\tThe credentials in the URL are wrong. Edit the playlist and double check the username and password against what your provider sent.",
+ "47\tThe critics' cut": "47\tThe critics' cut",
+ "48\tThe default round dot.": "48\tThe default round dot.",
+ "49\tThe host did not respond. The URL may have expired (many providers rotate domains), the server is down, or your network is blocking it. Contact your provider for an updated URL.": "49\tThe host did not respond. The URL may have expired (many providers rotate domains), the server is down, or your network is blocking it. Contact your provider for an updated URL.",
+ "5\tSubtitles haven't been published yet. Try search below or check back in a few days.": "5\tSubtitles haven't been published yet. Try search below or check back in a few days.",
+ "50\tThe most anticipated upcoming releases on Trakt": "50\tThe most anticipated upcoming releases on Trakt",
+ "51\tThe most anticipated upcoming releases on Trakt. No login needed.": "51\tThe most anticipated upcoming releases on Trakt. No login needed.",
+ "52\tThe myth, reconsidered": "52\tThe myth, reconsidered",
+ "53\tThe playlist server actively refused the connection.": "53\tThe playlist server actively refused the connection.",
+ "54\tThe playlist server is down or your network is blocking it. Try again in a few minutes.": "54\tThe playlist server is down or your network is blocking it. Try again in a few minutes.",
+ "55\tThe quick brown fox jumps over the lazy dog": "55\tThe quick brown fox jumps over the lazy dog",
+ "56\tThe real footage": "56\tThe real footage",
+ "57\tThe series that make the rest of the night disappear.": "57\tThe series that make the rest of the night disappear.",
+ "58\tThe server URL, username, or password is wrong. Edit the playlist and re-check the credentials your provider sent.": "58\tThe server URL, username, or password is wrong. Edit the playlist and re-check the credentials your provider sent.",
+ "59\tThe server answered with status {status}. Is that a streaming server?": "59\tThe server answered with status {status}. Is that a streaming server?",
+ "5s": "5s",
+ "6\tSubtle Apple-like sheen on the filled portion.": "6\tSubtle Apple-like sheen on the filled portion.",
+ "6 months": "6 months",
+ "60\tThe server is reachable but is not sending any data. Check the URL or contact your provider.": "60\tThe server is reachable but is not sending any data. Check the URL or contact your provider.",
+ "61\tThe server rejected the request. Some providers block generic clients; verify the credentials work in their official app first.": "61\tThe server rejected the request. Some providers block generic clients; verify the credentials work in their official app first.",
+ "62\tThe server replied with a webpage instead of Xtream data. The account may be expired, or the server URL is not an Xtream panel.": "62\tThe server replied with a webpage instead of Xtream data. The account may be expired, or the server URL is not an Xtream panel.",
+ "63\tThe server responded but the playlist is not at that URL. Check for typos and verify with your provider.": "63\tThe server responded but the playlist is not at that URL. Check for typos and verify with your provider.",
+ "64\tThe test calls {code} and confirms the worker is reachable and running a current version. A passing test means Watch Together rooms will connect.": "64\tThe test calls {code} and confirms the worker is reachable and running a current version. A passing test means Watch Together rooms will connect.",
+ "65\tTheme Library": "65\tTheme Library",
+ "66\tTheme cheat sheet": "66\tTheme cheat sheet",
+ "67\tThemes you imported or built.": "67\tThemes you imported or built.",
+ "68\tThemes you keep returning to": "68\tThemes you keep returning to",
+ "69\tThicker outline": "69\tThicker outline",
+ "7\tSummer Blockbusters": "7\tSummer Blockbusters",
+ "70\tThinner outline": "70\tThinner outline",
+ "70s Auteurs": "70s Auteurs",
+ "71\tThis Afternoon": "71\tThis Afternoon",
+ "72\tThis Morning": "72\tThis Morning",
+ "73\tThis Xtream account is expired, banned, or disabled on the provider side. Renew or confirm with your provider.": "73\tThis Xtream account is expired, banned, or disabled on the provider side. Renew or confirm with your provider.",
+ "74\tThis file has one audio track.": "74\tThis file has one audio track.",
+ "75\tThis instance of Harbor is made for desktop. Our standalone iOS and Android apps are coming soon, each with a bespoke, mobile-first experience built for its native platform.": "75\tThis instance of Harbor is made for desktop. Our standalone iOS and Android apps are coming soon, each with a bespoke, mobile-first experience built for its native platform.",
+ "76\tThis month": "76\tThis month",
+ "77\tThis playlist has no movies. It may be live channels only, or an Xtream login that exposes movies separately.": "77\tThis playlist has no movies. It may be live channels only, or an Xtream login that exposes movies separately.",
+ "78\tThis playlist has no shows. It may be live channels only, or an Xtream login that exposes shows separately.": "78\tThis playlist has no shows. It may be live channels only, or an Xtream login that exposes shows separately.",
+ "79\tThis source": "79\tThis source",
+ "8\tSundown": "8\tSundown",
+ "8-character key": "8-character key",
+ "80\tThis week": "80\tThis week",
+ "80s Classics": "80s Classics",
+ "81\tThree Point %": "81\tThree Point %",
+ "82\tThree-Time Oscar": "82\tThree-Time Oscar",
+ "83\tThriller": "83\tThriller",
+ "84\tTicking Clocks": "84\tTicking Clocks",
+ "85\tTighter spacing": "85\tTighter spacing",
+ "86\tTime elapsed": "86\tTime elapsed",
+ "87\tTime remaining or duration": "87\tTime remaining or duration",
+ "88\tTitle & info": "88\tTitle & info",
+ "89\tTo run a public relay, post the {code} URL on r/Stremio or wherever your community lives. Other Harbor users paste it into Settings, Harbor Relay, {kbd}.": "89\tTo run a public relay, post the {code} URL on r/Stremio or wherever your community lives. Other Harbor users paste it into Settings, Harbor Relay, {kbd}.",
+ "9\tSuperheroes": "9\tSuperheroes",
+ "90\tToday's openers": "90\tToday's openers",
+ "91\tToggle a sleep timer that pauses when this episode ends.": "91\tToggle a sleep timer that pauses when this episode ends.",
+ "92\tToggle fullscreen": "92\tToggle fullscreen",
+ "93\tToggle mute": "93\tToggle mute",
+ "94\tToggle playback.": "94\tToggle playback.",
+ "95\tToggle stats overlay": "95\tToggle stats overlay",
+ "96\tTonight": "96\tTonight",
+ "97\tTonight's Slate": "97\tTonight's Slate",
+ "98\tTonight's binge bait": "98\tTonight's binge bait",
+ "99\tTonight's lineup": "99\tTonight's lineup",
+ "A browser tab opened on AniList. Approve Harbor there, then copy the text it shows and paste it below.": "A browser tab opened on AniList. Approve Harbor there, then copy the text it shows and paste it below.",
+ "A browser tab opened on MyAnimeList. Approve Harbor there, then copy the code or the page URL and paste it below.": "A browser tab opened on MyAnimeList. Approve Harbor there, then copy the code or the page URL and paste it below.",
+ "A client for the Stremio protocol. Two minutes to set up; most of it optional. You stay in control of every key.": "A client for the Stremio protocol. Two minutes to set up; most of it optional. You stay in control of every key.",
+ "A Cloudflare Worker on your own account that hosts your Watch Together rooms.": "A Cloudflare Worker on your own account that hosts your Watch Together rooms.",
+ "A country releases something": "A country releases something",
+ "A debrid service is connected. You'll get instant, high-quality streams.": "A debrid service is connected. You'll get instant, high-quality streams.",
+ "A free Cloudflare account.": "A free Cloudflare account.",
+ "A free TMDB key is highly recommended. It unlocks the full Harbor experience. The rest are optional, and Cinemeta works out of the box without any.": "A free TMDB key is highly recommended. It unlocks the full Harbor experience. The rest are optional, and Cinemeta works out of the box without any.",
+ "A grown-up can enter the parent PIN to keep watching.": "A grown-up can enter the parent PIN to keep watching.",
+ "A Live TV program is about to start": "A Live TV program is about to start",
+ "A name you keep watching": "A name you keep watching",
+ "A new anime comes out": "A new anime comes out",
+ "A new movie comes out": "A new movie comes out",
+ "A new series comes out": "A new series comes out",
+ "A new version is ready to download.": "A new version is ready to download.",
+ "A quick age check before adult add-ons unlock. Answer three everyday questions any adult would know, and you're in.": "A quick age check before adult add-ons unlock. Answer three everyday questions any adult would know, and you're in.",
+ "A relay is a tiny Cloudflare Worker that passes play/pause/seek messages between you and your friends. No video data ever touches it. Deploy your own in one click (free tier is plenty), or paste a friend's invite link to use theirs.": "A relay is a tiny Cloudflare Worker that passes play/pause/seek messages between you and your friends. No video data ever touches it. Deploy your own in one click (free tier is plenty), or paste a friend's invite link to use theirs.",
+ "A relay URL is shareable. Anyone with the URL can join Watch Together rooms hosted on your relay. The unique": "A relay URL is shareable. Anyone with the URL can join Watch Together rooms hosted on your relay. The unique",
+ "A relay URL is shareable. Anyone with the URL can join Watch Together rooms hosted on your relay. The unique {code} subdomain acts as the access token. There is no login.": "A relay URL is shareable. Anyone with the URL can join Watch Together rooms hosted on your relay. The unique {code} subdomain acts as the access token. There is no login.",
+ "A safe, simple space: kid-friendly titles, big art, one-tap play, and a watch-time limit.": "A safe, simple space: kid-friendly titles, big art, one-tap play, and a watch-time limit.",
+ "A safety copy of your addon order. One is saved automatically before Harbor writes any change, and you can save one yourself any time. The five most recent are kept.": "A safety copy of your addon order. One is saved automatically before Harbor writes any change, and you can save one yourself any time. The five most recent are kept.",
+ "A second binding for the same action so muscle memory survives.": "A second binding for the same action so muscle memory survives.",
+ "A small badge over the video (with live FPS) that only appears when Anime4K is actually running. Follows your anime-only setting.": "A small badge over the video (with live FPS) that only appears when Anime4K is actually running. Follows your anime-only setting.",
+ "A special thank you to the team at Stremio-Addons. Please consider supporting them.": "A special thank you to the team at Stremio-Addons. Please consider supporting them.",
+ "A specific genre releases": "A specific genre releases",
+ "A specific summary lands faster than a long paragraph. Steps to reproduce help most of all.": "A specific summary lands faster than a long paragraph. Steps to reproduce help most of all.",
+ "A streamer releases something": "A streamer releases something",
+ "A typical Watch Together session uses a few hundred messages per hour. Solo and small-group use stays well under free tier limits.": "A typical Watch Together session uses a few hundred messages per hour. Solo and small-group use stays well under free tier limits.",
+ "A-Z": "A-Z",
+ "About": "About",
+ "About 200 lines of JavaScript, no dependencies. Read it before deploying if you want to know what runs.": "About 200 lines of JavaScript, no dependencies. Read it before deploying if you want to know what runs.",
+ "About AniList": "About AniList",
+ "About MyAnimeList": "About MyAnimeList",
+ "About Simkl": "About Simkl",
+ "About Stremboxd": "About Stremboxd",
+ "About the same": "About the same",
+ "About this title": "About this title",
+ "About Trakt": "About Trakt",
+ "About two minutes for the auto-deploy path.": "About two minutes for the auto-deploy path.",
+ "Above bar · left": "Above bar · left",
+ "Absolute": "Absolute",
+ "Academy Awards": "Academy Awards",
+ "Accent glow": "Accent glow",
+ "Access denied": "Access denied",
+ "Accessibility": "Accessibility",
+ "Acclaimed directors": "Acclaimed directors",
+ "Account": "Account",
+ "Account is not active": "Account is not active",
+ "Accurate Crosses": "Accurate Crosses",
+ "Accurate Long Balls": "Accurate Long Balls",
+ "Accurate Passes": "Accurate Passes",
+ "Action": "Action",
+ "Action & Adventure": "Action & Adventure",
+ "Action Heroine": "Action Heroine",
+ "Action Hits": "Action Hits",
+ "Actions": "Actions",
+ "Active": "Active",
+ "Active torrents": "Active torrents",
+ "Ad {n}": "Ad {n}",
+ "Ad, analytics, and tracking requests pass through untouched.": "Ad, analytics, and tracking requests pass through untouched.",
+ "Add": "Add",
+ "Add {n} titles from your Harbor watchlist to Trakt? Trakt skips any it already has.": "Add {n} titles from your Harbor watchlist to Trakt? Trakt skips any it already has.",
+ "Add {n} titles from your Trakt watchlist to Harbor?": "Add {n} titles from your Trakt watchlist to Harbor?",
+ "Add {title} to AniList": "Add {title} to AniList",
+ "Add {title} to MyAnimeList": "Add {title} to MyAnimeList",
+ "Add {title} to Simkl": "Add {title} to Simkl",
+ "Add a Discord or Telegram URL above before creating rules.": "Add a Discord or Telegram URL above before creating rules.",
+ "Add a Join button with your room link while you're in a watch party.": "Add a Join button with your room link while you're in a watch party.",
+ "Add a list": "Add a list",
+ "Add a profile for someone else and everyone keeps their own Continue Watching, watch history, and progress.": "Add a profile for someone else and everyone keeps their own Continue Watching, watch history, and progress.",
+ "Add a TMDB key above to unlock this.": "Add a TMDB key above to unlock this.",
+ "Add a TMDB key for the full Harbor": "Add a TMDB key for the full Harbor",
+ "Add a TMDB key in Library settings.": "Add a TMDB key in Library settings.",
+ "Add a TMDB key in Settings → Library to power this view.": "Add a TMDB key in Settings → Library to power this view.",
+ "Add a TMDB key in Settings → Library to search.": "Add a TMDB key in Settings → Library to search.",
+ "Add a TMDB key in settings first": "Add a TMDB key in settings first",
+ "Add a TMDB key in Settings to browse collections.": "Add a TMDB key in Settings to browse collections.",
+ "Add a TMDB key in Settings to load Arabic content.": "Add a TMDB key in Settings to load Arabic content.",
+ "Add a TMDB key in Settings to see cast, related titles, and trailers here.": "Add a TMDB key in Settings to see cast, related titles, and trailers here.",
+ "Add a TMDB key in Settings to see the cast for every title.": "Add a TMDB key in Settings to see the cast for every title.",
+ "Add a TMDB key in Settings to unlock posters and the artists behind this award.": "Add a TMDB key in Settings to unlock posters and the artists behind this award.",
+ "Add a TMDB key in Settings to unlock the full discovery feed.": "Add a TMDB key in Settings to unlock the full discovery feed.",
+ "Add a TMDB key to browse by this filter.": "Add a TMDB key to browse by this filter.",
+ "Add a TMDB key to export metadata.": "Add a TMDB key to export metadata.",
+ "Add an ad starting at the current time": "Add an ad starting at the current time",
+ "Add an MDBList API key to unlock this.": "Add an MDBList API key to unlock this.",
+ "Add an OMDb key above to unlock this.": "Add an OMDb key above to unlock this.",
+ "Add anime to your AniList and they show up here, grouped by status and ready to edit.": "Add anime to your AniList and they show up here, grouped by status and ready to edit.",
+ "Add another playlist": "Add another playlist",
+ "Add Custom Source": "Add Custom Source",
+ "Add element": "Add element",
+ "Add files from your computer": "Add files from your computer",
+ "Add folder": "Add folder",
+ "Add from URL": "Add from URL",
+ "Add list": "Add list",
+ "add one in settings": "add one in settings",
+ "Add people in the Custom calendar manager first, then come back here.": "Add people in the Custom calendar manager first, then come back here.",
+ "Add profile": "Add profile",
+ "Add Source": "Add Source",
+ "Add to AniList": "Add to AniList",
+ "Add to favorites": "Add to favorites",
+ "Add to MAL": "Add to MAL",
+ "Add to Simkl": "Add to Simkl",
+ "Add to watchlist": "Add to watchlist",
+ "Add to Watchlist": "Add to Watchlist",
+ "added": "added",
+ "Added {n} to your Harbor watchlist": "Added {n} to your Harbor watchlist",
+ "Added to stremio-addons.net in the last 14 days": "Added to stremio-addons.net in the last 14 days",
+ "addon": "addon",
+ "Addon": "Addon",
+ "Addon not installed": "Addon not installed",
+ "Addon order": "Addon order",
+ "Addon order saved on this device": "Addon order saved on this device",
+ "Addon order synced to your Stremio account": "Addon order synced to your Stremio account",
+ "addon synced": "addon synced",
+ "Addons": "Addons",
+ "addons synced": "addons synced",
+ "Adds a blurred glass effect behind the stream picker panel.": "Adds a blurred glass effect behind the stream picker panel.",
+ "Adds a Playlists item to the navigation for browsing movies and shows from your M3U or Xtream playlists (the same ones you add for Live TV). Off by default to keep the nav tidy.": "Adds a Playlists item to the navigation for browsing movies and shows from your M3U or Xtream playlists (the same ones you add for Live TV). Off by default to keep the nav tidy.",
+ "Adds a Playlists tab to the nav for your M3U and Xtream libraries.": "Adds a Playlists tab to the nav for your M3U and Xtream libraries.",
+ "Adds a Seasons/Arcs switch on shows that have a story-arc grouping (like One Piece), so you can browse by saga instead of scrolling seasons. Needs a TMDB key. Off by default.": "Adds a Seasons/Arcs switch on shows that have a story-arc grouping (like One Piece), so you can browse by saga instead of scrolling seasons. Needs a TMDB key. Off by default.",
+ "Adjust interface scale with wheel": "Adjust interface scale with wheel",
+ "Adrenaline Rush": "Adrenaline Rush",
+ "Adult": "Adult",
+ "Advance Continue Watching to the next episode": "Advance Continue Watching to the next episode",
+ "Advanced": "Advanced",
+ "Advanced (mpv.conf)": "Advanced (mpv.conf)",
+ "Advanced. Target .harbor-custom-hover for the poster, .group:hover for the hover state. Shows live in the preview.": "Advanced. Target .harbor-custom-hover for the poster, .group:hover for the hover state. Shows live in the preview.",
+ "Adventure": "Adventure",
+ "Adventure Master": "Adventure Master",
+ "After Dark": "After Dark",
+ "After the news": "After the news",
+ "After you stop watching, a stream file stays cached for this long so reopening resumes instead of re-downloading. Older files are cleaned up automatically. Off deletes the file as soon as you leave the player.": "After you stop watching, a stream file stays cached for this long so reopening resumes instead of re-downloading. Older files are cleaned up automatically. Off deletes the file as soon as you leave the player.",
+ "After-hours picks": "After-hours picks",
+ "Afternoon Picks": "Afternoon Picks",
+ "Afternoon Roll": "Afternoon Roll",
+ "Age": "Age",
+ "Age level": "Age level",
+ "AI & The Future": "AI & The Future",
+ "AI didn't find anything for that. Try rephrasing.": "AI didn't find anything for that. Try rephrasing.",
+ "AI picks": "AI picks",
+ "AI search": "AI search",
+ "AI Search · natural-language search": "AI Search · natural-language search",
+ "AI search failed. Tap to retry.": "AI search failed. Tap to retry.",
+ "Air Date": "Air Date",
+ "Aired {date}": "Aired {date}",
+ "Airing Now": "Airing Now",
+ "Align": "Align",
+ "Align {dir}": "Align {dir}",
+ "Alignment": "Alignment",
+ "All": "All",
+ "All {n} channels loaded": "All {n} channels loaded",
+ "All {total} channels loaded": "All {total} channels loaded",
+ "All addons": "All addons",
+ "All addons ({n})": "All addons ({n})",
+ "All Ages": "All Ages",
+ "all channels": "all channels",
+ "All channels": "All channels",
+ "All complete": "All complete",
+ "All content": "All content",
+ "All Done": "All Done",
+ "All genres": "All genres",
+ "All languages": "All languages",
+ "All releases on GitHub": "All releases on GitHub",
+ "All reviews": "All reviews",
+ "All sources": "All sources",
+ "All upcoming": "All upcoming",
+ "All upcoming needs a TMDB key": "All upcoming needs a TMDB key",
+ "All years": "All years",
+ "All-Time Great Series": "All-Time Great Series",
+ "All-Time Greats": "All-Time Greats",
+ "AllDebrid API key": "AllDebrid API key",
+ "Allow rating movies, shows, and anime directly using the star picker.": "Allow rating movies, shows, and anime directly using the star picker.",
+ "Also won": "Also won",
+ "Alternate": "Alternate",
+ "Always": "Always",
+ "Always keep on this device": "Always keep on this device",
+ "Always on top": "Always on top",
+ "Always re-encode when casting (recommended)": "Always re-encode when casting (recommended)",
+ "Always show the report button": "Always show the report button",
+ "AM Picks": "AM Picks",
+ "Ambience": "Ambience",
+ "AMC": "AMC",
+ "American Epics": "American Epics",
+ "American History": "American History",
+ "An actor you keep watching": "An actor you keep watching",
+ "An error occurred": "An error occurred",
+ "An unexpected error occurred": "An unexpected error occurred",
+ "an unknown date": "an unknown date",
+ "Anchor Selection": "Anchor Selection",
+ "Ancient Civilizations": "Ancient Civilizations",
+ "and": "and",
+ "and confirms the worker is reachable and running a current version. A passing test means Watch Together rooms will connect.": "and confirms the worker is reachable and running a current version. A passing test means Watch Together rooms will connect.",
+ "And for the naughty ones: browsing or rating an adult addon never shows on Discord.": "And for the naughty ones: browsing or rating an adult addon never shows on Discord.",
+ "and your": "and your",
+ "AniList": "AniList",
+ "AniList Comments": "AniList Comments",
+ "AniList rows": "AniList rows",
+ "Animated Movies": "Animated Movies",
+ "Animated Worlds": "Animated Worlds",
+ "Animated, For Grown-Ups": "Animated, For Grown-Ups",
+ "Animation": "Animation",
+ "Animation Night": "Animation Night",
+ "anime": "anime",
+ "Anime": "Anime",
+ "Anime award": "Anime award",
+ "Anime card rating source": "Anime card rating source",
+ "Anime done right": "Anime done right",
+ "Anime is drawn on twos and threes, so fast pans can judder. Smoothing fills in the gaps so motion glides.": "Anime is drawn on twos and threes, so fast pans can judder. Smoothing fills in the gaps so motion glides.",
+ "Anime leaves Home Continue Watching and stays in the Anime tab's own row.": "Anime leaves Home Continue Watching and stays in the Anime tab's own row.",
+ "Anime of the Year": "Anime of the Year",
+ "Anime only": "Anime only",
+ "Anime sources are usually richer through Torrentio's anime config or AIOStreams. Make sure one is installed in Stremio.": "Anime sources are usually richer through Torrentio's anime config or AIOStreams. Make sure one is installed in Stremio.",
+ "Anime tab": "Anime tab",
+ "Anime Title Language": "Anime Title Language",
+ "Anime tweaks": "Anime tweaks",
+ "Anime4K": "Anime4K",
+ "Anime4K and smooth-motion run on the bundled mpv engine in the Harbor desktop app. They have no effect in the browser.": "Anime4K and smooth-motion run on the bundled mpv engine in the Harbor desktop app. They have no effect in the browser.",
+ "Anime4K isn't set up yet. Turn it on in Settings under Anime.": "Anime4K isn't set up yet. Turn it on in Settings under Anime.",
+ "Anime4K real-time upscaling, smooth motion, and where SVP fits in. All the anime-specific picture enhancements in one place.": "Anime4K real-time upscaling, smooth motion, and where SVP fits in. All the anime-specific picture enhancements in one place.",
+ "Anime4K shaders": "Anime4K shaders",
+ "Anime4K upscaling": "Anime4K upscaling",
+ "annoying": "annoying",
+ "Anonymous": "Anonymous",
+ "Anti-War": "Anti-War",
+ "Anticipated": "Anticipated",
+ "Any": "Any",
+ "Any country": "Any country",
+ "Any genre": "Any genre",
+ "Any new anime": "Any new anime",
+ "Any new movie": "Any new movie",
+ "Any new series": "Any new series",
+ "Any of your {n} tracked people": "Any of your {n} tracked people",
+ "Any quality": "Any quality",
+ "Any source": "Any source",
+ "Any streamer": "Any streamer",
+ "Anyone who opens this link gets the relay URL and room code set automatically. Works in the browser too: no install required for the joiner.": "Anyone who opens this link gets the relay URL and room code set automatically. Works in the browser too: no install required for the joiner.",
+ "Anything matching your Custom calendar: tracked people, genres, providers, countries.": "Anything matching your Custom calendar: tracked people, genres, providers, countries.",
+ "Anything you install in Harbor pushes back to your Stremio account so it shows up on mobile too. Sign in via the avatar in the bottom-left of the sidebar.": "Anything you install in Harbor pushes back to your Stremio account so it shows up on mobile too. Sign in via the avatar in the bottom-left of the sidebar.",
+ "Anywhere in Harbor.": "Anywhere in Harbor.",
+ "API budget": "API budget",
+ "API key": "API key",
+ "API token": "API token",
+ "app unusable": "app unusable",
+ "Appearance": "Appearance",
+ "Apple TV+": "Apple TV+",
+ "Apply {language}": "Apply {language}",
+ "Apply {language} preferences?": "Apply {language} preferences?",
+ "Apply custom theme": "Apply custom theme",
+ "Apply SVP to": "Apply SVP to",
+ "Arabic": "Arabic",
+ "arabic.row.classics": "Egyptian Cinema Classics",
+ "arabic.row.comedy": "Arabic Comedy",
+ "arabic.row.drama": "Arabic Drama",
+ "arabic.row.khaleeji": "Gulf / Khaleeji",
+ "arabic.row.movies": "Arabic Movies",
+ "arabic.row.ramadan": "Ramadan 2026 Series",
+ "arabic.row.trending": "Trending in Arabic",
+ "Archive Portraits": "Archive Portraits",
+ "Arcs": "Arcs",
+ "Around {min} min": "Around {min} min",
+ "Art Direction": "Art Direction",
+ "as the scheme instead of": "as the scheme instead of",
+ "Ascending": "Ascending",
+ "Ask": "Ask",
+ "Ask a grown-up before you close.": "Ask a grown-up before you close.",
+ "Ask a grown-up to enter the parent PIN.": "Ask a grown-up to enter the parent PIN.",
+ "Ask a grown-up to switch profiles.": "Ask a grown-up to switch profiles.",
+ "Ask AI to find titles for \\": "Ask AI to find titles for \\",
+ "Ask before leaving": "Ask before leaving",
+ "Ask each time": "Ask each time",
+ "Ask to resume or start over": "Ask to resume or start over",
+ "Asking AI…": "Asking AI…",
+ "Aspect ratio": "Aspect ratio",
+ "Assists": "Assists",
+ "at {n}": "at {n}",
+ "at {time}": "at {time}",
+ "At Bats": "At Bats",
+ "AudD · in-player song ID": "AudD · in-player song ID",
+ "AudD API token": "AudD API token",
+ "Audio": "Audio",
+ "Audio bitrate": "Audio bitrate",
+ "Audio codec": "Audio codec",
+ "Audio languages": "Audio languages",
+ "Audio track": "Audio track",
+ "Audio tracks": "Audio tracks",
+ "Australia": "Australia",
+ "Authorize Harbor on AniList": "Authorize Harbor on AniList",
+ "Authorize Harbor on MyAnimeList": "Authorize Harbor on MyAnimeList",
+ "Authorize Harbor on Simkl": "Authorize Harbor on Simkl",
+ "Authorize Harbor on Trakt": "Authorize Harbor on Trakt",
+ "Authorized": "Authorized",
+ "Authorized {when}": "Authorized {when}",
+ "Authorized on this device": "Authorized on this device",
+ "auto": "auto",
+ "Auto": "Auto",
+ "Auto (recommended)": "Auto (recommended)",
+ "Auto is best for most people. mpv handles the trickiest 4K, HDR, and audio formats.": "Auto is best for most people. mpv handles the trickiest 4K, HDR, and audio formats.",
+ "Auto next episode": "Auto next episode",
+ "Auto-confirm peer-to-peer streaming": "Auto-confirm peer-to-peer streaming",
+ "Auto-deploy from Harbor": "Auto-deploy from Harbor",
+ "Auto-hide the Skip button after": "Auto-hide the Skip button after",
+ "Auto-included. No keys, no library, no URLs. Just structural flags so reproductions go faster.": "Auto-included. No keys, no library, no URLs. Just structural flags so reproductions go faster.",
+ "Auto-loading the best stream": "Auto-loading the best stream",
+ "Auto-play next episode": "Auto-play next episode",
+ "Auto-skip credit outros": "Auto-skip credit outros",
+ "Auto-skip intros": "Auto-skip intros",
+ "Auto-skip recaps": "Auto-skip recaps",
+ "Automatically jump past recap segments.": "Automatically jump past recap segments.",
+ "Automatically play the next episode when the current one ends.": "Automatically play the next episode when the current one ends.",
+ "Automatically skip ending credits and trigger the next episode countdown immediately.": "Automatically skip ending credits and trigger the next episode countdown immediately.",
+ "Automatically track what you are playing and save watch progress in real-time.": "Automatically track what you are playing and save watch progress in real-time.",
+ "Automations": "Automations",
+ "AUTOMATIONS": "AUTOMATIONS",
+ "Autoplay trailer on detail pages": "Autoplay trailer on detail pages",
+ "Availability": "Availability",
+ "Average /10": "Average /10",
+ "Average /5": "Average /5",
+ "Average Letterboxd rating out of 5.": "Average Letterboxd rating out of 5.",
+ "Avg ★ {rating}": "Avg ★ {rating}",
+ "Award Nominee": "Award Nominee",
+ "Award Winner": "Award Winner",
+ "Award Winning Anime": "Award Winning Anime",
+ "Awards": "Awards",
+ "Awards & Recognition": "Awards & Recognition",
+ "Awards Contenders": "Awards Contenders",
+ "Awkward Hero": "Awkward Hero",
+ "Back": "Back",
+ "Back {n} seconds": "Back {n} seconds",
+ "Back {n}s": "Back {n}s",
+ "Back 10s": "Back 10s",
+ "Back 30 seconds": "Back 30 seconds",
+ "Back out mid-episode and the card keeps the exact frame you stopped on, with your progress, so it looks like a pause instead of a thumbnail.": "Back out mid-episode and the card keeps the exact frame you stopped on, with your progress, so it looks like a pause instead of a thumbnail.",
+ "Back to addons": "Back to addons",
+ "Back to library": "Back to library",
+ "Back to relay": "Back to relay",
+ "Back to threads": "Back to threads",
+ "Back to top": "Back to top",
+ "Back up current order": "Back up current order",
+ "Backdrop size": "Backdrop size",
+ "Backdrops": "Backdrops",
+ "Backed up. The current account order is saved in the Backups panel.": "Backed up. The current account order is saved in the Backups panel.",
+ "Background": "Background",
+ "Background image": "Background image",
+ "Background opacity": "Background opacity",
+ "Backup & restore": "Backup & restore",
+ "Backup credentials": "Backup credentials",
+ "Backup loaded into the editor. Addons added since stay at the end. Nothing changes until you press Save.": "Backup loaded into the editor. Addons added since stay at the end. Nothing changes until you press Save.",
+ "Backups": "Backups",
+ "Bad username or password": "Bad username or password",
+ "Badge position": "Badge position",
+ "BAFTA": "BAFTA",
+ "Balanced": "Balanced",
+ "Balanced (Mobius)": "Balanced (Mobius)",
+ "Bar color": "Bar color",
+ "Bar height": "Bar height",
+ "Bar image": "Bar image",
+ "Bar style": "Bar style",
+ "Bass boost": "Bass boost",
+ "Be My Valentine": "Be My Valentine",
+ "Be the first to start a discussion.": "Be the first to start a discussion.",
+ "Beautiful Monsters": "Beautiful Monsters",
+ "Before Trilogy": "Before Trilogy",
+ "Behavior": "Behavior",
+ "Behind the sound": "Behind the sound",
+ "Beloved, slightly forgotten": "Beloved, slightly forgotten",
+ "below. In Telegram, send him": "below. In Telegram, send him",
+ "below. Send it": "below. Send it",
+ "Berlinale": "Berlinale",
+ "Best": "Best",
+ "Best for debrid": "Best for debrid",
+ "Best known for": "Best known for",
+ "Best Picture and beyond": "Best Picture and beyond",
+ "Beta": "Beta",
+ "Better": "Better",
+ "Better posters, ratings, episode info.": "Better posters, ratings, episode info.",
+ "Between meetings": "Between meetings",
+ "Beyond the kids' shelf": "Beyond the kids' shelf",
+ "BG Art": "BG Art",
+ "Big Swings": "Big Swings",
+ "BL": "BL",
+ "Black bar": "Black bar",
+ "Block ads & trackers": "Block ads & trackers",
+ "Blockbuster Maker": "Blockbuster Maker",
+ "blocked": "blocked",
+ "Blocked Shots": "Blocked Shots",
+ "Blocks": "Blocks",
+ "Blur": "Blur",
+ "Blur comments by default": "Blur comments by default",
+ "Blur descriptions": "Blur descriptions",
+ "Blur episode artwork, titles, and descriptions for episodes you have not watched yet, on both shows and anime. Hover an episode to peek.": "Blur episode artwork, titles, and descriptions for episodes you have not watched yet, on both shows and anime. Hover an episode to peek.",
+ "Blur episode images on detail page": "Blur episode images on detail page",
+ "Blur reviews by default": "Blur reviews by default",
+ "Blur spoilers": "Blur spoilers",
+ "Blur stream backdrop": "Blur stream backdrop",
+ "Blur thumbnails": "Blur thumbnails",
+ "Blur titles": "Blur titles",
+ "Blur up": "Blur up",
+ "Blurs the hero image and stills on the episode detail page until you click reveal.": "Blurs the hero image and stills on the episode detail page until you click reveal.",
+ "Board": "Board",
+ "Bokeh": "Bokeh",
+ "Bokeh background": "Bokeh background",
+ "Bold": "Bold",
+ "Bold text": "Bold text",
+ "Boost SDR video toward HDR": "Boost SDR video toward HDR",
+ "Born {date}": "Born {date}",
+ "bot token": "bot token",
+ "Bot token": "Bot token",
+ "BotFather replies with a token like": "BotFather replies with a token like",
+ "Both Flags": "Both Flags",
+ "Both go in the boxes above. Harbor builds the URL for you.": "Both go in the boxes above. Harbor builds the URL for you.",
+ "Both Sides of the Law": "Both Sides of the Law",
+ "Bottom": "Bottom",
+ "Bottom · center": "Bottom · center",
+ "Bottom · left": "Bottom · left",
+ "Bottom · right": "Bottom · right",
+ "Bottom bar": "Bottom bar",
+ "Bottom left": "Bottom left",
+ "Bottom right": "Bottom right",
+ "Box": "Box",
+ "box above.": "box above.",
+ "Box color": "Box color",
+ "Boy": "Boy",
+ "Brazil": "Brazil",
+ "Bright-side series": "Bright-side series",
+ "Brighten dark movies": "Brighten dark movies",
+ "Brightness": "Brightness",
+ "Bring in your library": "Bring in your library",
+ "Bring the Tissues": "Bring the Tissues",
+ "Bring your Letterboxd watchlist, diary, liked films and lists into Harbor via the Stremboxd bridge.": "Bring your Letterboxd watchlist, diary, liked films and lists into Harbor via the Stremboxd bridge.",
+ "Bring your lists with you": "Bring your lists with you",
+ "Brings back the small in-app tips you've dismissed without redoing the welcome flow.": "Brings back the small in-app tips you've dismissed without redoing the welcome flow.",
+ "Brings in your library, watchlist, and installed addons.": "Brings in your library, watchlist, and installed addons.",
+ "Brit Comedy": "Brit Comedy",
+ "British Television": "British Television",
+ "Bromance": "Bromance",
+ "Browse": "Browse",
+ "Browse addons": "Browse addons",
+ "Browse all releases": "Browse all releases",
+ "Browse by Award": "Browse by Award",
+ "Browse by category": "Browse by category",
+ "Browse by country": "Browse by country",
+ "Browse by Genre": "Browse by Genre",
+ "Browse by Language": "Browse by Language",
+ "Browse channels": "Browse channels",
+ "Browse provider": "Browse provider",
+ "Browse pull requests": "Browse pull requests",
+ "Browse streams manually": "Browse streams manually",
+ "Browse your catalogs": "Browse your catalogs",
+ "Browsing": "Browsing",
+ "Browsing the TV guide": "Browsing the TV guide",
+ "Budget": "Budget",
+ "Budget exhausted, resets at midnight UTC.": "Budget exhausted, resets at midnight UTC.",
+ "Buffer fill": "Buffer fill",
+ "Buffer fill brightness": "Buffer fill brightness",
+ "Buffering": "Buffering",
+ "Bug reporters get listed in the release notes when their report leads to a shipped fix. Leave blank to stay anonymous.": "Bug reporters get listed in the release notes when their report leads to a shipped fix. Leave blank to stay anonymous.",
+ "Bug reports": "Bug reports",
+ "Build": "Build",
+ "Build a bigger buffer": "Build a bigger buffer",
+ "Build a named filter once, then apply it in the source picker to hide everything that doesn't match. Each filter ANDs its dimensions and ignores any you leave blank.": "Build a named filter once, then apply it in the source picker to hide everything that doesn't match. Each filter ANDs its dimensions and ignores any you leave blank.",
+ "Build a new theme": "Build a new theme",
+ "Build a Theme": "Build a Theme",
+ "Build from source": "Build from source",
+ "Build identity. Useful when filing a bug report at bugs@harbor.site.": "Build identity. Useful when filing a bug report at bugs@harbor.site.",
+ "Build your own feed from actors, directors, and Trakt lists": "Build your own feed from actors, directors, and Trakt lists",
+ "Build your own palette": "Build your own palette",
+ "Building tonight's queue…": "Building tonight's queue…",
+ "Built for desktop resolutions": "Built for desktop resolutions",
+ "Built-in peer-to-peer streaming, served from your own machine.": "Built-in peer-to-peer streaming, served from your own machine.",
+ "Bullet Ballet": "Bullet Ballet",
+ "Bundled with Harbor. Plays anything you throw at it.": "Bundled with Harbor. Plays anything you throw at it.",
+ "Burn in subtitles": "Burn in subtitles",
+ "By community stars": "By community stars",
+ "By default, addon rails that duplicate the built-in ones (Trending, Popular, Top Rated, etc.) are merged so you don't see the same row twice. Turn this on to show every one, duplicates and all.": "By default, addon rails that duplicate the built-in ones (Trending, Popular, Top Rated, etc.) are merged so you don't see the same row twice. Turn this on to show every one, duplicates and all.",
+ "by the Harbor team": "by the Harbor team",
+ "Cache buffering": "Cache buffering",
+ "Cache location": "Cache location",
+ "Cached on Real-Debrid, TorBox, AllDebrid. Instant play.": "Cached on Real-Debrid, TorBox, AllDebrid. Instant play.",
+ "Cached only": "Cached only",
+ "Cached only ({n})": "Cached only ({n})",
+ "Calendar": "Calendar",
+ "Can't decide?": "Can't decide?",
+ "Canada": "Canada",
+ "Cancel": "Cancel",
+ "Cancel autoplay": "Cancel autoplay",
+ "Cancel download": "Cancel download",
+ "Cancel timer": "Cancel timer",
+ "Canceled": "Canceled",
+ "Cannes": "Cannes",
+ "Cap how much disk the cache can use. When it goes over, Harbor deletes the oldest files first. Enforced on launch and as streams close.": "Cap how much disk the cache can use. When it goes over, Harbor deletes the oldest files first. Enforced on launch and as streams close.",
+ "Captions in your language": "Captions in your language",
+ "Card overlays": "Card overlays",
+ "Career Drama": "Career Drama",
+ "Carry it through the day": "Carry it through the day",
+ "Cast": "Cast",
+ "Cast · {n}": "Cast · {n}",
+ "Cast information isn't available for this title.": "Cast information isn't available for this title.",
+ "Cast to a device": "Cast to a device",
+ "Cast to TV or speaker": "Cast to TV or speaker",
+ "Casting comes with the mpv backend": "Casting comes with the mpv backend",
+ "Catalog": "Catalog",
+ "Catalogs": "Catalogs",
+ "Catalogs & metadata": "Catalogs & metadata",
+ "Catalogs to show": "Catalogs to show",
+ "Catch stremio:// install links inside Harbor": "Catch stremio:// install links inside Harbor",
+ "categories": "categories",
+ "category": "category",
+ "Cause": "Cause",
+ "Celebrated actors": "Celebrated actors",
+ "center": "center",
+ "Center": "Center",
+ "CGI": "CGI",
+ "Change": "Change",
+ "Change the order addons are tried in": "Change the order addons are tried in",
+ "Change…": "Change…",
+ "Changing the location restarts the engine. Clearing removes all cached stream files right away; anything you reopen will re-fetch.": "Changing the location restarts the engine. Clearing removes all cached stream files right away; anything you reopen will re-fetch.",
+ "Channel": "Channel",
+ "Channel categories": "Channel categories",
+ "Channel is taking a while": "Channel is taking a while",
+ "Channel won't load": "Channel won't load",
+ "Chaos Theory": "Chaos Theory",
+ "Char Design": "Char Design",
+ "Character": "Character",
+ "Character Work": "Character Work",
+ "Chat": "Chat",
+ "chat ID": "chat ID",
+ "Chat ID": "Chat ID",
+ "Check for updates": "Check for updates",
+ "Check logs in Cloudflare dashboard, then redeploy": "Check logs in Cloudflare dashboard, then redeploy",
+ "Check relay": "Check relay",
+ "Checking": "Checking",
+ "Checking {n} items…": "Checking {n} items…",
+ "Checking harbor.site for a newer build.": "Checking harbor.site for a newer build.",
+ "Checking with AniList...": "Checking with AniList...",
+ "Checking with MyAnimeList...": "Checking with MyAnimeList...",
+ "Checking…": "Checking…",
+ "China": "China",
+ "Chinese": "Chinese",
+ "Choose": "Choose",
+ "Choose a folder...": "Choose a folder...",
+ "Choose a model": "Choose a model",
+ "Choose a source to save offline. You can track progress on the Downloads page.": "Choose a source to save offline. You can track progress on the Downloads page.",
+ "Choose an avatar": "Choose an avatar",
+ "Choose file": "Choose file",
+ "Choose folder": "Choose folder",
+ "Choose how far the keyboard arrows and player seek buttons jump.": "Choose how far the keyboard arrows and player seek buttons jump.",
+ "Choose what happens when you hit Play on a title. Manual gives you full control over quality and source.": "Choose what happens when you hit Play on a title. Manual gives you full control over quality and source.",
+ "Choose which Simkl rails appear on your home screen.": "Choose which Simkl rails appear on your home screen.",
+ "Chosen by actors": "Chosen by actors",
+ "chrome.harborHome": "Harbor home",
+ "chrome.locked": "Locked",
+ "chrome.lockedRequiresPin": "{label} (locked, requires PIN)",
+ "chrome.lockedShort": "{label} · locked",
+ "chrome.maximize": "Maximize",
+ "chrome.minimize": "Minimize",
+ "chrome.parentalOn": "Parental controls on",
+ "chrome.restore": "Restore",
+ "chrome.scrollForMore": "Scroll for more",
+ "chrome.sectionLibrary": "Library",
+ "chrome.watchTogether": "Watch together",
+ "Cinematography": "Cinematography",
+ "Cinemeta didn't return anything for {genre}. Try a different genre or add a TMDB key.": "Cinemeta didn't return anything for {genre}. Try a different genre or add a TMDB key.",
+ "Circle": "Circle",
+ "Classic Mystery": "Classic Mystery",
+ "Classic Stremio": "Classic Stremio",
+ "Classic. Was Harbor's original pair.": "Classic. Was Harbor's original pair.",
+ "Clean modern. Sans across the board.": "Clean modern. Sans across the board.",
+ "Clean releases for this title are still scarce. Confirm the filename and size before playing.": "Clean releases for this title are still scarce. Confirm the filename and size before playing.",
+ "Clean releases for this title haven't surfaced yet. The result below may not match the title you're looking for, so confirm the filename and size before playing.": "Clean releases for this title haven't surfaced yet. The result below may not match the title you're looking for, so confirm the filename and size before playing.",
+ "Cleaner grid for when your poster service already prints the title onto the artwork.": "Cleaner grid for when your poster service already prints the title onto the artwork.",
+ "Cleaner grid when your poster service already prints the title on the artwork.": "Cleaner grid when your poster service already prints the title on the artwork.",
+ "Clear": "Clear",
+ "Clear & restart": "Clear & restart",
+ "Clear A-B loop": "Clear A-B loop",
+ "Clear all": "Clear all",
+ "Clear all saved frames": "Clear all saved frames",
+ "Clear cache now": "Clear cache now",
+ "Clear drawings": "Clear drawings",
+ "Clear filter": "Clear filter",
+ "Clear filters": "Clear filters",
+ "Clear history": "Clear history",
+ "Clear match": "Clear match",
+ "Clear search": "Clear search",
+ "Clear the search to see all {n} installed.": "Clear the search to see all {n} installed.",
+ "Clearances": "Clearances",
+ "Clearing": "Clearing",
+ "Clearing…": "Clearing…",
+ "CLI.": "CLI.",
+ "Click": "Click",
+ "Click {b1} in the top right. Pick the {b2} template (it's the default, should already be selected).": "Click {b1} in the top right. Pick the {b2} template (it's the default, should already be selected).",
+ "Click {kbd}.": "Click {kbd}.",
+ "Click a line": "Click a line",
+ "Click another": "Click another",
+ "Click any binding to rebind it. Press Esc while capturing to cancel. Letters ignore Shift (so K and Shift+K trigger the same action).": "Click any binding to rebind it. Press Esc while capturing to cancel. Letters ignore Shift (so K and Shift+K trigger the same action).",
+ "Click any control in the live preview to move, hide, or reorder it.": "Click any control in the live preview to move, hide, or reorder it.",
+ "Click any control to edit it.": "Click any control to edit it.",
+ "Click any source to swap in place": "Click any source to swap in place",
+ "Click below to open": "Click below to open",
+ "Click below to open ": "Click below to open ",
+ "Click below to open {name}'s setup page in Harbor's built-in browser. Pick your options. When you click Install on their page, Harbor catches the link automatically and updates the addon.": "Click below to open {name}'s setup page in Harbor's built-in browser. Pick your options. When you click Install on their page, Harbor catches the link automatically and updates the addon.",
+ "Click below to open {name}'s setup page. Pick your options, then copy the install link it gives you and paste it below to update the addon.": "Click below to open {name}'s setup page. Pick your options, then copy the install link it gives you and paste it below to update the addon.",
+ "Click the button below to open Cloudflare's Workers page.": "Click the button below to open Cloudflare's Workers page.",
+ "Click the button below. It opens Cloudflare's token page in your browser. Sign in (free, takes 30 seconds if you don't have an account).": "Click the button below. It opens Cloudflare's token page in your browser. Sign in (free, takes 30 seconds if you don't have an account).",
+ "Click to apply · Right-click to delete": "Click to apply · Right-click to delete",
+ "click to cancel": "click to cancel",
+ "Click to cycle 100 / 75 / 50 / 25 / 0.": "Click to cycle 100 / 75 / 50 / 25 / 0.",
+ "Click to open {name}'s setup page in Harbor's built-in browser. Pick your options. When you click Install on their page, Harbor catches the link automatically and updates the addon.": "Click to open {name}'s setup page in Harbor's built-in browser. Pick your options. When you click Install on their page, Harbor catches the link automatically and updates the addon.",
+ "Click to open {name}'s setup page. Pick your options, then copy the install link it gives you and paste it below to update the addon.": "Click to open {name}'s setup page. Pick your options, then copy the install link it gives you and paste it below to update the addon.",
+ "Click to turn off": "Click to turn off",
+ "Click to turn on": "Click to turn on",
+ "Click toggles mute. Wheel scrolls volume.": "Click toggles mute. Wheel scrolls volume.",
+ "Client ID": "Client ID",
+ "Client secret": "Client secret",
+ "Close": "Close",
+ "Close · Esc": "Close · Esc",
+ "Close guide": "Close guide",
+ "Close Harbor?": "Close Harbor?",
+ "Close image viewer": "Close image viewer",
+ "Close invite link panel": "Close invite link panel",
+ "Close match": "Close match",
+ "Close match to host": "Close match to host",
+ "Close overview": "Close overview",
+ "Close player": "Close player",
+ "Close search": "Close search",
+ "Close to the system tray": "Close to the system tray",
+ "Close trailer": "Close trailer",
+ "Closing the window tucks Harbor into the tray instead of quitting, so it reopens instantly. Right-click the tray icon for quick controls, or pick Quit to exit fully.": "Closing the window tucks Harbor into the tray instead of quitting, so it reopens instantly. Right-click the tray icon for quick controls, or pick Quit to exit fully.",
+ "Cloudflare asks you to pick a name (this becomes {code}). Type any name (your first name works). Then click {b1}.": "Cloudflare asks you to pick a name (this becomes {code}). Type any name (your first name works). Then click {b1}.",
+ "Cloudflare shows API tokens only once. Save a copy now or you'll lose the ability to stop or redeploy this relay from Harbor.": "Cloudflare shows API tokens only once. Save a copy now or you'll lose the ability to stop or redeploy this relay from Harbor.",
+ "Cloudflare token form filled with name 'Harbor Relay' and one permission row set to Account / Workers Scripts / Edit": "Cloudflare token form filled with name 'Harbor Relay' and one permission row set to Account / Workers Scripts / Edit",
+ "Cloudflare Workers free tier:": "Cloudflare Workers free tier:",
+ "Code expired": "Code expired",
+ "Coffee-and-couch": "Coffee-and-couch",
+ "Collapse": "Collapse",
+ "Collapse sidebar": "Collapse sidebar",
+ "Collection": "Collection",
+ "Collections": "Collections",
+ "Color & HDR": "Color & HDR",
+ "Color presets, custom backgrounds, and the font pair Harbor renders in.": "Color presets, custom backgrounds, and the font pair Harbor renders in.",
+ "Color tokens": "Color tokens",
+ "Colors": "Colors",
+ "Come back here and hit {b1}. The Hello World can stay where it is. It's free and harmless.": "Come back here and hit {b1}. The Hello World can stay where it is. It's free and harmless.",
+ "Comedy": "Comedy",
+ "Comedy Series": "Comedy Series",
+ "Comfort Watch": "Comfort Watch",
+ "Coming of Age": "Coming of Age",
+ "Coming to Theaters": "Coming to Theaters",
+ "Comma-separated words. Audio or subtitle tracks whose name matches any of these are skipped during automatic selection. You can still pick them by hand in the player.": "Comma-separated words. Audio or subtitle tracks whose name matches any of these are skipped during automatic selection. You can still pick them by hand in the player.",
+ "Commanding Range": "Commanding Range",
+ "commentary, descriptive": "commentary, descriptive",
+ "Comments": "Comments",
+ "Comments are blurred until you reveal them, even if they are not tagged as spoilers.": "Comments are blurred until you reveal them, even if they are not tagged as spoilers.",
+ "Comments are hidden": "Comments are hidden",
+ "Comments may take a moment to appear on Trakt": "Comments may take a moment to appear on Trakt",
+ "Comments on anime pages are blurred until you reveal them, even if they are not tagged as spoilers.": "Comments on anime pages are blurred until you reveal them, even if they are not tagged as spoilers.",
+ "Comments on episode/show pages are blurred until you reveal them, even if they are not tagged as spoilers.": "Comments on episode/show pages are blurred until you reveal them, even if they are not tagged as spoilers.",
+ "Common picks for a fresh setup.": "Common picks for a fresh setup.",
+ "common.back": "Back",
+ "common.cancel": "Cancel",
+ "common.close": "Close",
+ "common.confirm": "Confirm",
+ "common.delete": "Delete",
+ "common.done": "Done",
+ "common.edit": "Edit",
+ "common.loading": "Loading",
+ "common.more": "More",
+ "common.next": "Next",
+ "common.play": "Play",
+ "common.previous": "Previous",
+ "common.remove": "Remove",
+ "common.retry": "Retry",
+ "common.save": "Save",
+ "common.search": "Search",
+ "Community": "Community",
+ "community API. Star, browse, and contribute on their site.": "community API. Star, browse, and contribute on their site.",
+ "Community comments from Trakt that appear on movie and show pages.": "Community comments from Trakt that appear on movie and show pages.",
+ "Compact": "Compact",
+ "Companion series for whatever the afternoon throws at you.": "Companion series for whatever the afternoon throws at you.",
+ "Complete": "Complete",
+ "Completed": "Completed",
+ "Concert Films": "Concert Films",
+ "Condensed": "Condensed",
+ "Condensed shows a top pick, quality tiles, and a drawer. Stremio is a flat list grouped by addon, no scoring.": "Condensed shows a top pick, quality tiles, and a drawer. Stremio is a flat list grouped by addon, no scoring.",
+ "Configurable": "Configurable",
+ "Configure": "Configure",
+ "Configure & install": "Configure & install",
+ "Configure on the addon's setup page": "Configure on the addon's setup page",
+ "Confirm": "Confirm",
+ "Confirm clear": "Confirm clear",
+ "Confirm full reset": "Confirm full reset",
+ "Confirm remove": "Confirm remove",
+ "Confirm remove from library": "Confirm remove from library",
+ "Confirm your current PIN to remove the lock.": "Confirm your current PIN to remove the lock.",
+ "Confirm your current PIN, then pick a new one.": "Confirm your current PIN, then pick a new one.",
+ "Confirm your PIN": "Confirm your PIN",
+ "Conflict": "Conflict",
+ "Connect": "Connect",
+ "Connect / Verify": "Connect / Verify",
+ "Connect a debrid service (Real-Debrid, TorBox, AllDebrid) for instant HD without the wait.": "Connect a debrid service (Real-Debrid, TorBox, AllDebrid) for instant HD without the wait.",
+ "Connect a playlist to get started.": "Connect a playlist to get started.",
+ "Connect a provider": "Connect a provider",
+ "Connect AniList": "Connect AniList",
+ "Connect any IPTV provider. Channels are sorted by category, EPG is pulled automatically when your provider supplies it, and playback runs through native libmpv.": "Connect any IPTV provider. Channels are sorted by category, EPG is pulled automatically when your provider supplies it, and playback runs through native libmpv.",
+ "Connect Discord or Telegram and Harbor posts a message when something you follow is about to drop. Hit Test to send yourself a sample first.": "Connect Discord or Telegram and Harbor posts a message when something you follow is about to drop. Hit Test to send yourself a sample first.",
+ "Connect MyAnimeList": "Connect MyAnimeList",
+ "Connect Simkl": "Connect Simkl",
+ "Connect Trakt": "Connect Trakt",
+ "Connect Trakt first.": "Connect Trakt first.",
+ "Connect Trakt in settings first": "Connect Trakt in settings first",
+ "Connect Trakt in Settings to sync": "Connect Trakt in Settings to sync",
+ "Connect your AniList account": "Connect your AniList account",
+ "Connect your AniList account to see forum threads and comments.": "Connect your AniList account to see forum threads and comments.",
+ "Connect your AniList account to show your anime lists as rails on the Anime page.": "Connect your AniList account to show your anime lists as rails on the Anime page.",
+ "Connect your MyAnimeList account": "Connect your MyAnimeList account",
+ "Connect your provider.": "Connect your provider.",
+ "Connect your Simkl account": "Connect your Simkl account",
+ "Connect your Simkl account to mark what you finish as watched and sync your plan-to-watch list across apps.": "Connect your Simkl account to mark what you finish as watched and sync your plan-to-watch list across apps.",
+ "Connect your Trakt account": "Connect your Trakt account",
+ "Connect your Trakt account to scrobble playback, sync your watchlist, and pull personalized recommendations.": "Connect your Trakt account to scrobble playback, sync your watchlist, and pull personalized recommendations.",
+ "Connect your Trakt account to see comments and reviews.": "Connect your Trakt account to see comments and reviews.",
+ "Connected": "Connected",
+ "Connected — {n} catalogs available": "Connected — {n} catalogs available",
+ "Connected as {username}": "Connected as {username}",
+ "Connected as @{user}": "Connected as @{user}",
+ "Connected as @{username}": "Connected as @{username}",
+ "Connected to AniList": "Connected to AniList",
+ "Connected to MyAnimeList": "Connected to MyAnimeList",
+ "Connected to relay": "Connected to relay",
+ "Connected to Simkl": "Connected to Simkl",
+ "Connected to Trakt": "Connected to Trakt",
+ "Connecting": "Connecting",
+ "Connection": "Connection",
+ "Connection refused": "Connection refused",
+ "Connection refused / DNS does not resolve": "Connection refused / DNS does not resolve",
+ "Connection reset by server": "Connection reset by server",
+ "Contains spoiler": "Contains spoiler",
+ "Content advisory": "Content advisory",
+ "Content advisory on start": "Content advisory on start",
+ "Content filters": "Content filters",
+ "Continue": "Continue",
+ "Continue from last watched": "Continue from last watched",
+ "Continue in your browser...": "Continue in your browser...",
+ "Continue to summary": "Continue to summary",
+ "Continue Watching": "Continue Watching",
+ "Continue Watching screenshots": "Continue Watching screenshots",
+ "Continue Watching, then your addon catalogs in install order. No hero, no Harbor rails.": "Continue Watching, then your addon catalogs in install order. No hero, no Harbor rails.",
+ "Continue Watching, then your installed addons. Every catalog renders as its own row, install order, no dedup, no hero.": "Continue Watching, then your installed addons. Every catalog renders as its own row, install order, no dedup, no hero.",
+ "Continuing": "Continuing",
+ "Contrast": "Contrast",
+ "Contribute on GitHub": "Contribute on GitHub",
+ "Controls": "Controls",
+ "Cool Heists": "Cool Heists",
+ "copied": "copied",
+ "Copied": "Copied",
+ "Copied to clipboard": "Copied to clipboard",
+ "Copied. Paste it to your friend.": "Copied. Paste it to your friend.",
+ "Copy": "Copy",
+ "Copy diagnostics": "Copy diagnostics",
+ "Copy diagnostics grabs the engine status and your P2P settings as JSON, handy to paste into a bug report. The engine folder holds the DHT cache (dht.json) and active torrent data.": "Copy diagnostics grabs the engine status and your P2P settings as JSON, handy to paste into a bug report. The engine folder holds the DHT cache (dht.json) and active torrent data.",
+ "Copy error": "Copy error",
+ "Copy invite link": "Copy invite link",
+ "Copy link": "Copy link",
+ "Copy relay URL": "Copy relay URL",
+ "Copy room code": "Copy room code",
+ "Copy theme": "Copy theme",
+ "Copy URL": "Copy URL",
+ "Copy Webhook URL": "Copy Webhook URL",
+ "Copy your Harbor watchlist over to Trakt, or pull your Trakt watchlist into Harbor. Safe to run again, Trakt skips anything it already has.": "Copy your Harbor watchlist over to Trakt, or pull your Trakt watchlist into Harbor. Safe to run again, Trakt skips anything it already has.",
+ "Corner": "Corner",
+ "Corner Kicks": "Corner Kicks",
+ "Corner radius": "Corner radius",
+ "Corners": "Corners",
+ "cosmetic, minor": "cosmetic, minor",
+ "Costs": "Costs",
+ "Couch hours": "Couch hours",
+ "Could not build the backup file.": "Could not build the backup file.",
+ "Could not find this title on AniList.": "Could not find this title on AniList.",
+ "Could not identify this title on Trakt.": "Could not identify this title on Trakt.",
+ "Could not load this playlist": "Could not load this playlist",
+ "Could not reach playlist server": "Could not reach playlist server",
+ "Could not reach the server within 1.5 seconds. Check the address and that the server machine is online.": "Could not reach the server within 1.5 seconds. Check the address and that the server machine is online.",
+ "Could not read that file.": "Could not read that file.",
+ "Could not read the subtitle file": "Could not read the subtitle file",
+ "Could not resolve hostname": "Could not resolve hostname",
+ "Could not resolve that Letterboxd list URL.": "Could not resolve that Letterboxd list URL.",
+ "Could not send:": "Could not send:",
+ "Could not send: {error}": "Could not send: {error}",
+ "Could not send. Try again.": "Could not send. Try again.",
+ "Couldn't connect to AniList": "Couldn't connect to AniList",
+ "Couldn't connect to MyAnimeList": "Couldn't connect to MyAnimeList",
+ "Couldn't copy. Select the URL manually.": "Couldn't copy. Select the URL manually.",
+ "Couldn't create the profile. {error}": "Couldn't create the profile. {error}",
+ "Couldn't delete the profile. {error}": "Couldn't delete the profile. {error}",
+ "Couldn't find a Simkl avatar on your account.": "Couldn't find a Simkl avatar on your account.",
+ "Couldn't find a Trakt avatar on your account.": "Couldn't find a Trakt avatar on your account.",
+ "Couldn't find an AniList avatar on your account.": "Couldn't find an AniList avatar on your account.",
+ "Couldn't import that file. {error}": "Couldn't import that file. {error}",
+ "Couldn't install. Double-check the URL and try again.": "Couldn't install. Double-check the URL and try again.",
+ "Couldn't load {name}": "Couldn't load {name}",
+ "Couldn't load that subtitle file. Try another.": "Couldn't load that subtitle file. Try another.",
+ "Couldn't load the calendar": "Couldn't load the calendar",
+ "Couldn't load this list. Check the URL and try again.": "Couldn't load this list. Check the URL and try again.",
+ "Couldn't load your Stremio collection. Nothing can be reordered safely without it.": "Couldn't load your Stremio collection. Nothing can be reordered safely without it.",
+ "Couldn't open this file": "Couldn't open this file",
+ "Couldn't reach AniList.": "Couldn't reach AniList.",
+ "Couldn't reach AniList. Try refreshing.": "Couldn't reach AniList. Try refreshing.",
+ "Couldn't reach harbor.site to load earlier builds. Check your connection and try again.": "Couldn't reach harbor.site to load earlier builds. Check your connection and try again.",
+ "Couldn't reach Simkl": "Couldn't reach Simkl",
+ "Couldn't reach Simkl.": "Couldn't reach Simkl.",
+ "Couldn't reach Simkl. Try refreshing.": "Couldn't reach Simkl. Try refreshing.",
+ "Couldn't reach Stremio to confirm your collection. Nothing was written.": "Couldn't reach Stremio to confirm your collection. Nothing was written.",
+ "Couldn't reach the update server. Try again in a moment.": "Couldn't reach the update server. Try again in a moment.",
+ "Couldn't reach Trakt": "Couldn't reach Trakt",
+ "Couldn't reach Trakt.": "Couldn't reach Trakt.",
+ "Couldn't reach Trakt. Check your connection and try again.": "Couldn't reach Trakt. Check your connection and try again.",
+ "Couldn't reach Trakt. Try refreshing.": "Couldn't reach Trakt. Try refreshing.",
+ "Couldn't read that addon URL.": "Couldn't read that addon URL.",
+ "Couldn't read that font file.": "Couldn't read that font file.",
+ "Couldn't read your watchlist. Try again.": "Couldn't read your watchlist. Try again.",
+ "Couldn't remove. Try again.": "Couldn't remove. Try again.",
+ "Couldn't rename the profile. {error}": "Couldn't rename the profile. {error}",
+ "Couldn't save your layout. {error}": "Couldn't save your layout. {error}",
+ "Couldn't save: the reordered list failed safety validation. Nothing was written.": "Couldn't save: the reordered list failed safety validation. Nothing was written.",
+ "Couldn't scan that folder.": "Couldn't scan that folder.",
+ "Couldn't set up SVP: {err}": "Couldn't set up SVP: {err}",
+ "Couldn't start on port {WEB_PORT}. Another app may be using it; toggle off and on to retry.": "Couldn't start on port {WEB_PORT}. Another app may be using it; toggle off and on to retry.",
+ "Couldn't start SVP Manager: {err}": "Couldn't start SVP Manager: {err}",
+ "Couldn't switch profile. {error}": "Couldn't switch profile. {error}",
+ "Countries": "Countries",
+ "Country": "Country",
+ "Couple": "Couple",
+ "Cover Image URL": "Cover Image URL",
+ "Cozy Autumn Nights": "Cozy Autumn Nights",
+ "Create": "Create",
+ "Create account": "Create account",
+ "Create Custom Token": "Create Custom Token",
+ "Create one": "Create one",
+ "Create profile": "Create profile",
+ "Create thread": "Create thread",
+ "Create Token": "Create Token",
+ "Creator": "Creator",
+ "Creators": "Creators",
+ "Credentials are likely expired or the subscription is inactive. Edit the playlist URL above, or contact your provider.": "Credentials are likely expired or the subscription is inactive. Edit the playlist URL above, or contact your provider.",
+ "Credentials stored on this device. Nothing leaves your machine.": "Credentials stored on this device. Nothing leaves your machine.",
+ "Credit (optional)": "Credit (optional)",
+ "Credit me in the release notes if this report leads to a fix.": "Credit me in the release notes if this report leads to a fix.",
+ "Crew": "Crew",
+ "Crime": "Crime",
+ "Crime & Mystery": "Crime & Mystery",
+ "Crime Films": "Crime Films",
+ "Crime Series": "Crime Series",
+ "Crisp (anime & cartoons)": "Crisp (anime & cartoons)",
+ "Critical": "Critical",
+ "Critically Loved": "Critically Loved",
+ "Critics' Choice": "Critics' Choice",
+ "Critics' Picks": "Critics' Picks",
+ "Cross %": "Cross %",
+ "Crosses": "Crosses",
+ "Crowd-pleasers, prestige picks, and the kind of series people text about.": "Crowd-pleasers, prestige picks, and the kind of series people text about.",
+ "Crunch cards": "Crunch cards",
+ "Cult Classics": "Cult Classics",
+ "Curated for popularity and reliability. No paid placements. Install anything else by URL on the Browse tab.": "Curated for popularity and reliability. No paid placements. Install anything else by URL on the Browse tab.",
+ "Current": "Current",
+ "Custom": "Custom",
+ "Custom calendar": "Custom calendar",
+ "Custom cards": "Custom cards",
+ "Custom chrome": "Custom chrome",
+ "Custom code": "Custom code",
+ "Custom CSS": "Custom CSS",
+ "Custom HTML overlay": "Custom HTML overlay",
+ "Custom image": "Custom image",
+ "Custom JS": "Custom JS",
+ "Custom length": "Custom length",
+ "Custom lists": "Custom lists",
+ "Custom location": "Custom location",
+ "Custom MPV code": "Custom MPV code",
+ "Custom palette": "Custom palette",
+ "Custom poster service": "Custom poster service",
+ "Custom style": "Custom style",
+ "Customize": "Customize",
+ "Customize home": "Customize home",
+ "Customize layout": "Customize layout",
+ "Customize page": "Customize page",
+ "Customizing the player": "Customizing the player",
+ "Cycle aspect / crop": "Cycle aspect / crop",
+ "Cycle aspect and crop modes: Fit, Fill, Zoom, 16:9, 4:3, Original.": "Cycle aspect and crop modes: Fit, Fill, Zoom, 16:9, 4:3, Original.",
+ "Cycle subtitles": "Cycle subtitles",
+ "Cycle subtitles (alt)": "Cycle subtitles (alt)",
+ "Cycle through available subtitle tracks.": "Cycle through available subtitle tracks.",
+ "Czech": "Czech",
+ "Daily call counter for OMDb rating lookups. Reset if it stops returning fresh scores.": "Daily call counter for OMDb rating lookups. Reset if it stops returning fresh scores.",
+ "Daily watch time": "Daily watch time",
+ "Danish": "Danish",
+ "Dark Fantasy": "Dark Fantasy",
+ "Dark Thrillers": "Dark Thrillers",
+ "Dark, immersive, and binge-worthy when the house is quiet.": "Dark, immersive, and binge-worthy when the house is quiet.",
+ "Date added": "Date added",
+ "Date Night": "Date Night",
+ "Daybreak": "Daybreak",
+ "Daylight Watching": "Daylight Watching",
+ "Daytime watching": "Daytime watching",
+ "Deadpan King": "Deadpan King",
+ "debrid": "debrid",
+ "Debrid is down": "Debrid is down",
+ "Debrid required": "Debrid required",
+ "Debrid services": "Debrid services",
+ "Debrid-Link API key": "Debrid-Link API key",
+ "Decrease progress": "Decrease progress",
+ "default": "default",
+ "Default": "Default",
+ "Default (gold accent)": "Default (gold accent)",
+ "Default app cache folder": "Default app cache folder",
+ "Default picture shape on the mpv engine. Fit keeps the source as-is with any black bars; the rest stretch or crop to fill, handy for old 4:3 shows on a widescreen TV.": "Default picture shape on the mpv engine. Fit keeps the source as-is with any black bars; the rest stretch or crop to fill, handy for old 4:3 shows on a widescreen TV.",
+ "Default. Harbor parses and scores every source and surfaces the best quality first.": "Default. Harbor parses and scores every source and surfaces the best quality first.",
+ "Default. Humanist serif, warm sans.": "Default. Humanist serif, warm sans.",
+ "Default. Rejects size outliers, suspicious extensions, year/episode mismatches, season packs (for episode requests), trailers, and likely cams.": "Default. Rejects size outliers, suspicious extensions, year/episode mismatches, season packs (for episode requests), trailers, and likely cams.",
+ "Default. Top pick at the top, quality tiles, and an All-Sources drawer. Harbor scores and ranks results.": "Default. Top pick at the top, quality tiles, and an All-Sources drawer. Harbor scores and ranks results.",
+ "Defensive Rebounds": "Defensive Rebounds",
+ "Defining the 2010s": "Defining the 2010s",
+ "Delete": "Delete",
+ "Delete after I finish watching": "Delete after I finish watching",
+ "Delete current": "Delete current",
+ "Delete custom source": "Delete custom source",
+ "Delete download and file": "Delete download and file",
+ "Delete filter": "Delete filter",
+ "Delete layout": "Delete layout",
+ "Delete profile": "Delete profile",
+ "Delete this font?": "Delete this font?",
+ "Delete this profile permanently? This cannot be undone.": "Delete this profile permanently? This cannot be undone.",
+ "Delete this profile?": "Delete this profile?",
+ "Dense plots and rich worlds for when sleep is not happening.": "Dense plots and rich worlds for when sleep is not happening.",
+ "Deploy": "Deploy",
+ "Deploy a relay": "Deploy a relay",
+ "Deploy a relay (desktop only)": "Deploy a relay (desktop only)",
+ "Deploy mine instead": "Deploy mine instead",
+ "Deploy relay": "Deploy relay",
+ "Deploy your relay": "Deploy your relay",
+ "Deploy:": "Deploy:",
+ "Descending": "Descending",
+ "Deselect": "Deselect",
+ "Deselect all": "Deselect all",
+ "Designing the player layout": "Designing the player layout",
+ "Desktop (Tauri 2 / WebView2)": "Desktop (Tauri 2 / WebView2)",
+ "Desktop only": "Desktop only",
+ "Detail page trailers begin unmuted. Falls back to muted if the browser blocks sound until you interact.": "Detail page trailers begin unmuted. Falls back to muted if the browser blocks sound until you interact.",
+ "Detail pages show every available rating regardless of the card score toggles below. Turn this off to hide ratings on detail pages too.": "Detail pages show every available rating regardless of the card score toggles below. Turn this off to hide ratings on detail pages too.",
+ "Details": "Details",
+ "Detecting": "Detecting",
+ "Detecting devices...": "Detecting devices...",
+ "Detecting...": "Detecting...",
+ "DHT": "DHT",
+ "Diagnostics, manual overrides, things most users never need.": "Diagnostics, manual overrides, things most users never need.",
+ "Diagonal stripes across the fill, retro vibe.": "Diagonal stripes across the fill, retro vibe.",
+ "Diary": "Diary",
+ "Died {date}": "Died {date}",
+ "Dim": "Dim",
+ "Dim overlay": "Dim overlay",
+ "Direct .m3u link": "Direct .m3u link",
+ "Direct .m3u or get.php URL with credentials baked in.": "Direct .m3u or get.php URL with credentials baked in.",
+ "Direct torrent streaming": "Direct torrent streaming",
+ "Directing": "Directing",
+ "Director": "Director",
+ "Director's Cut": "Director's Cut",
+ "Directors": "Directors",
+ "Disabled": "Disabled",
+ "Disabled while strict remote streaming is on": "Disabled while strict remote streaming is on",
+ "Discard": "Discard",
+ "Discard changes": "Discard changes",
+ "Discard recording": "Discard recording",
+ "Discard sync?": "Discard sync?",
+ "Disconnect": "Disconnect",
+ "Disconnect AniList? Your lists will stop showing on the Anime page until you reconnect.": "Disconnect AniList? Your lists will stop showing on the Anime page until you reconnect.",
+ "Disconnect from AniList": "Disconnect from AniList",
+ "Disconnect from MyAnimeList": "Disconnect from MyAnimeList",
+ "Disconnect from Simkl": "Disconnect from Simkl",
+ "Disconnect from Trakt": "Disconnect from Trakt",
+ "Disconnect MyAnimeList? Your progress will stop syncing until you reconnect.": "Disconnect MyAnimeList? Your progress will stop syncing until you reconnect.",
+ "Disconnect Simkl? Syncing will stop until you reconnect.": "Disconnect Simkl? Syncing will stop until you reconnect.",
+ "Disconnect Trakt? Scrobbles and syncs will stop until you reconnect.": "Disconnect Trakt? Scrobbles and syncs will stop until you reconnect.",
+ "Discord posts a message to a channel whenever Harbor pings it. Takes about a minute to set up.": "Discord posts a message to a channel whenever Harbor pings it. Takes about a minute to set up.",
+ "Discord Rich Presence": "Discord Rich Presence",
+ "Discord webhook URL": "Discord webhook URL",
+ "Discover": "Discover",
+ "Discovery Queue": "Discovery Queue",
+ "Dismiss": "Dismiss",
+ "Dismiss episode panel": "Dismiss episode panel",
+ "Disney+ Originals": "Disney+ Originals",
+ "Display 'Browsing Harbor' when nothing is playing.": "Display 'Browsing Harbor' when nothing is playing.",
+ "Display language": "Display language",
+ "Display name": "Display name",
+ "Display panel": "Display panel",
+ "Display SIMKL Community Ratings": "Display SIMKL Community Ratings",
+ "Display SIMKL community score badge on details pages.": "Display SIMKL community score badge on details pages.",
+ "Display the live progress bar showing how far into the title you are.": "Display the live progress bar showing how far into the title you are.",
+ "Display the raw release filename under each source in the condensed picker. Off keeps rows compact.": "Display the raw release filename under each source in the condensed picker. Off keeps rows compact.",
+ "Display today's trending movies, TV shows, and anime from Simkl.": "Display today's trending movies, TV shows, and anime from Simkl.",
+ "Display upcoming episodes from your watching and plan-to-watch lists.": "Display upcoming episodes from your watching and plan-to-watch lists.",
+ "Display what you are watching on your Discord profile, with the show poster and a live progress bar. Requires the Discord desktop app to be running.": "Display what you are watching on your Discord profile, with the show poster and a live progress bar. Requires the Discord desktop app to be running.",
+ "Display your Watching, Plan to Watch, Up Next, and Trending rows on the home screen.": "Display your Watching, Plan to Watch, Up Next, and Trending rows on the home screen.",
+ "Displays the resolution, HDR format and audio (e.g. 4K · Dolby Vision · TrueHD 7.1) under the movie or episode title while playing. Off by default.": "Displays the resolution, HDR format and audio (e.g. 4K · Dolby Vision · TrueHD 7.1) under the movie or episode title while playing. Off by default.",
+ "Distance from bottom": "Distance from bottom",
+ "DLNA TV": "DLNA TV",
+ "Documentaries": "Documentaries",
+ "Documentary": "Documentary",
+ "Documentary Series": "Documentary Series",
+ "Documentary Spotlight": "Documentary Spotlight",
+ "Documentation": "Documentation",
+ "Documentation: run your own relay": "Documentation: run your own relay",
+ "Does Harbor {version} feel better or worse than the version you had before?": "Does Harbor {version} feel better or worse than the version you had before?",
+ "Does this stream look right?": "Does this stream look right?",
+ "Don't ask me again": "Don't ask me again",
+ "Don't have an account?": "Don't have an account?",
+ "Don't have an account? Create one →": "Don't have an account? Create one →",
+ "Done": "Done",
+ "Done editing": "Done editing",
+ "Done.": "Done.",
+ "Dot image": "Dot image",
+ "Dot size": "Dot size",
+ "Down": "Down",
+ "Download": "Download",
+ "Download anime diagnostics": "Download anime diagnostics",
+ "Download failed": "Download failed",
+ "Download failed · click to retry": "Download failed · click to retry",
+ "Download failed, click to retry": "Download failed, click to retry",
+ "Download for offline": "Download for offline",
+ "Download Subtitle": "Download Subtitle",
+ "Download subtitle to disk": "Download subtitle to disk",
+ "Download the desktop app to use anime enhancements.": "Download the desktop app to use anime enhancements.",
+ "Download the desktop app to use video tuning.": "Download the desktop app to use video tuning.",
+ "Download the whole file while streaming": "Download the whole file while streaming",
+ "Download this build": "Download this build",
+ "Download this build's installer, then run it over your current copy": "Download this build's installer, then run it over your current copy",
+ "Download to disk": "Download to disk",
+ "Download video": "Download video",
+ "Downloaded peer-to-peer stream files are kept on disk so reopening a title resumes instantly instead of starting over. Control how long they stay and where they live.": "Downloaded peer-to-peer stream files are kept on disk so reopening a title resumes instantly instead of starting over. Control how long they stay and where they live.",
+ "Downloaded subtitles can arrive a moment after playback starts. Leave this off to keep whatever subtitle is already showing; turn it on to switch to the best language match as soon as it loads.": "Downloaded subtitles can arrive a moment after playback starts. Leave this off to keep whatever subtitle is already showing; turn it on to switch to the best language match as soon as it loads.",
+ "Downloaded. Ready to install and restart.": "Downloaded. Ready to install and restart.",
+ "Downloading {pct} percent, click to cancel": "Downloading {pct} percent, click to cancel",
+ "Downloading {pct}%": "Downloading {pct}%",
+ "Downloading {pct}% · cancel": "Downloading {pct}% · cancel",
+ "Downloading {pct}% · click to cancel": "Downloading {pct}% · click to cancel",
+ "Downloading {pct}%, click to cancel": "Downloading {pct}%, click to cancel",
+ "Downloading to": "Downloading to",
+ "Downloading...": "Downloading...",
+ "Downloads": "Downloads",
+ "Downloads folder": "Downloads folder",
+ "Dracula sidebar": "Dracula sidebar",
+ "Drag to reorder": "Drag to reorder",
+ "Drag to resize the channel column": "Drag to resize the channel column",
+ "Drama": "Drama",
+ "Drama Series": "Drama Series",
+ "Draw": "Draw",
+ "Draw on screen": "Draw on screen",
+ "Draw on video": "Draw on video",
+ "Dread Incarnate": "Dread Incarnate",
+ "Dreamlogic": "Dreamlogic",
+ "Drop a clip of the bug if you can. A 5-second screen recording usually says more than five paragraphs.": "Drop a clip of the bug if you can. A 5-second screen recording usually says more than five paragraphs.",
+ "Drop a wallpaper behind the app. The dim slider keeps text readable.": "Drop a wallpaper behind the app. The dim slider keeps text readable.",
+ "Drop screenshots or screen recordings, or click to browse": "Drop screenshots or screen recordings, or click to browse",
+ "Drop shadow": "Drop shadow",
+ "Drop-in chapters and long arcs for the post-dinner stretch.": "Drop-in chapters and long arcs for the post-dinner stretch.",
+ "Dropped": "Dropped",
+ "Dropped (decode / vo)": "Dropped (decode / vo)",
+ "Durable Object idle eviction": "Durable Object idle eviction",
+ "Duration": "Duration",
+ "Dutch": "Dutch",
+ "DVD": "DVD",
+ "DVR": "DVR",
+ "DVR / record": "DVR / record",
+ "DVR record": "DVR record",
+ "DVR record (Live TV)": "DVR record (Live TV)",
+ "e.g. 1.35": "e.g. 1.35",
+ "e.g. 20": "e.g. 20",
+ "Each episode shows its IMDb rating, right on the still.": "Each episode shows its IMDb rating, right on the still.",
+ "Each rule fires independently. Define what triggers a ping and where it goes.": "Each rule fires independently. Define what triggers a ping and where it goes.",
+ "Easiest path. Harbor uploads the worker, creates the Durable Object namespace, and stores the resulting URL.": "Easiest path. Harbor uploads the worker, creates the Durable Object namespace, and stores the resulting URL.",
+ "Easing into series": "Easing into series",
+ "Easy": "Easy",
+ "Easy half-hours and lighter dramas to ride out the afternoon.": "Easy half-hours and lighter dramas to ride out the afternoon.",
+ "Easy on the eyes": "Easy on the eyes",
+ "Easynews+": "Easynews+",
+ "Edge": "Edge",
+ "Edit": "Edit",
+ "Edit {name}": "Edit {name}",
+ "Edit Channel": "Edit Channel",
+ "Edit colors": "Edit colors",
+ "Edit custom theme": "Edit custom theme",
+ "Edit filter": "Edit filter",
+ "Edit Folder Images": "Edit Folder Images",
+ "Edit hover style": "Edit hover style",
+ "Edit player layout": "Edit player layout",
+ "Edit profile": "Edit profile",
+ "Edit row": "Edit row",
+ "Edit rule": "Edit rule",
+ "editing": "editing",
+ "Editor": "Editor",
+ "Editorial. Headline-strong display.": "Editorial. Headline-strong display.",
+ "Editors": "Editors",
+ "Effective Clearances": "Effective Clearances",
+ "Effective Tackles": "Effective Tackles",
+ "Elapsed and remaining": "Elapsed and remaining",
+ "Elapsed only": "Elapsed only",
+ "Email": "Email",
+ "Email or Discord": "Email or Discord",
+ "Embed mpv inside Harbor window": "Embed mpv inside Harbor window",
+ "Embedded": "Embedded",
+ "Embedded subtitles keep their own styling. Click to force your style onto them.": "Embedded subtitles keep their own styling. Click to force your style onto them.",
+ "Embedded track": "Embedded track",
+ "Emmys": "Emmys",
+ "empty": "empty",
+ "Empty — click to add filters": "Empty — click to add filters",
+ "Empty. The dials above cover what most people ever need.": "Empty. The dials above cover what most people ever need.",
+ "Enable Anime4K": "Enable Anime4K",
+ "Enable injected ad skip": "Enable injected ad skip",
+ "Enable Letterboxd integration": "Enable Letterboxd integration",
+ "Enable SVP": "Enable SVP",
+ "Enable this to fetch Arabic descriptions for series and movies when available on TMDB.": "Enable this to fetch Arabic descriptions for series and movies when available on TMDB.",
+ "Enable User Ratings": "Enable User Ratings",
+ "Enabled": "Enabled",
+ "End ep": "End ep",
+ "Ended": "Ended",
+ "Ending": "Ending",
+ "Ends at": "Ends at",
+ "Engine": "Engine",
+ "English": "English",
+ "English (default)": "English (default)",
+ "Enter {name}'s PIN": "Enter {name}'s PIN",
+ "Enter an existing relay URL:": "Enter an existing relay URL:",
+ "Enter current PIN": "Enter current PIN",
+ "Enter Harbor": "Enter Harbor",
+ "Enter or exit fullscreen.": "Enter or exit fullscreen.",
+ "Enter your PIN": "Enter your PIN",
+ "Ep {n}": "Ep {n}",
+ "EPG": "EPG",
+ "EPG / XMLTV only": "EPG / XMLTV only",
+ "EPG / XMLTV URL": "EPG / XMLTV URL",
+ "EPG failed:": "EPG failed:",
+ "EPG fetch failed:": "EPG fetch failed:",
+ "EPG source": "EPG source",
+ "EPG URL": "EPG URL",
+ "EPG URL (optional)": "EPG URL (optional)",
+ "Ephron Romcoms": "Ephron Romcoms",
+ "Epic Adventures": "Epic Adventures",
+ "Epic Quests": "Epic Quests",
+ "Epics & Empires": "Epics & Empires",
+ "Episode": "Episode",
+ "Episode {n}": "Episode {n}",
+ "Episode cards": "Episode cards",
+ "Episode details": "Episode details",
+ "Episode information is not available": "Episode information is not available.",
+ "Episode Not Found": "Episode Not Found",
+ "Episode ordering": "Episode ordering",
+ "Episode titles, alternate names, and network info. Layered on TMDB so the better source wins per field. Free at ": "Episode titles, alternate names, and network info. Layered on TMDB so the better source wins per field. Free at ",
+ "Episodes": "Episodes",
+ "Episodes and movies from shows you've saved on Stremio.": "Episodes and movies from shows you've saved on Stremio.",
+ "Episodes worth the evening": "Episodes worth the evening",
+ "Episodes you can drop into without losing the thread.": "Episodes you can drop into without losing the thread.",
+ "Error": "Error",
+ "Errors": "Errors",
+ "Esc exits fullscreen first": "Esc exits fullscreen first",
+ "Esc or click outside to close": "Esc or click outside to close",
+ "Essential 90s": "Essential 90s",
+ "Essential addons": "Essential addons",
+ "Evening on the couch": "Evening on the couch",
+ "Evens out quiet dialogue and loud action scenes with a dynamic normalizer.": "Evens out quiet dialogue and loud action scenes with a dynamic normalizer.",
+ "Every collection": "Every collection",
+ "Every row": "Every row",
+ "Every saga in one place. Search anything: if it exists, it's here.": "Every saga in one place. Search anything: if it exists, it's here.",
+ "Every shortcut Harbor responds to. Click a binding to rebind it.": "Every shortcut Harbor responds to. Click a binding to rebind it.",
+ "Every variable, selector, hook, and recipe for building custom Harbor themes.": "Every variable, selector, hook, and recipe for building custom Harbor themes.",
+ "Everyone is loaded in. Press play to start watching.": "Everyone is loaded in. Press play to start watching.",
+ "Everyone who uses this Harbor gets their own watch history, avatar, color, and optional PIN. Switch anytime.": "Everyone who uses this Harbor gets their own watch history, avatar, color, and optional PIN. Switch anytime.",
+ "Everything": "Everything",
+ "Everything from {year}, sorted across trending, top rated, and hidden gems.": "Everything from {year}, sorted across trending, top rated, and hidden gems.",
+ "Everything originally in {name}: movies and series across every genre, era, and hidden gems.": "Everything originally in {name}: movies and series across every genre, era, and hidden gems.",
+ "Everything releasing in the current month from TMDB.": "Everything releasing in the current month from TMDB.",
+ "Everything releasing this month from TMDB": "Everything releasing this month from TMDB",
+ "Everything you save here stays in this browser. Your Stremio login, API keys, watch progress, picker cache, dismissed tips. Harbor servers never see any of it. Clearing your browser data wipes it.": "Everything you save here stays in this browser. Your Stremio login, API keys, watch progress, picker cache, dismissed tips. Harbor servers never see any of it. Clearing your browser data wipes it.",
+ "Excellence": "Excellence",
+ "Exit fullscreen": "Exit fullscreen",
+ "Exit Picture in Picture": "Exit Picture in Picture",
+ "Exit PiP": "Exit PiP",
+ "Exit playback and return to the previous view.": "Exit playback and return to the previous view.",
+ "Exit sync mode": "Exit sync mode",
+ "Expand sidebar": "Expand sidebar",
+ "Expected. Rooms recreate on next join.": "Expected. Rooms recreate on next join.",
+ "Experimental": "Experimental",
+ "Expired": "Expired",
+ "Expiring": "Expiring",
+ "Explore": "Explore",
+ "Explore your queue": "Explore your queue",
+ "Export": "Export",
+ "Export .nfo and artwork": "Export .nfo and artwork",
+ "Export as .m3u": "Export as .m3u",
+ "Export as file": "Export as file",
+ "Export everything": "Export everything",
+ "Export failed: {reason}": "Export failed: {reason}",
+ "Export player log": "Export player log",
+ "Export to Trakt": "Export to Trakt",
+ "Export your entire Harbor setup to a single file, then restore it on a new computer or keep it as a backup.": "Export your entire Harbor setup to a single file, then restore it on a new computer or keep it as a backup.",
+ "Export your entire Harbor setup to a single file, then restore it on a new computer or keep it as a backup. Everything is included except your Stremio sign-in.": "Export your entire Harbor setup to a single file, then restore it on a new computer or keep it as a backup. Everything is included except your Stremio sign-in.",
+ "Exported": "Exported",
+ "Exported {n} titles": "Exported {n} titles",
+ "Exported {ok}, {fail} failed": "Exported {ok}, {fail} failed",
+ "Exporting": "Exporting",
+ "Exporting {done}/{total}…": "Exporting {done}/{total}…",
+ "External": "External",
+ "External subtitle": "External subtitle",
+ "Eye Candy": "Eye Candy",
+ "Fade": "Fade",
+ "Fail": "Fail",
+ "Failed": "Failed",
+ "Failed to create thread": "Failed to create thread",
+ "Failed to fetch JSON": "Failed to fetch JSON",
+ "Failed to load": "Failed to load",
+ "Failed to load match details.": "Failed to load match details.",
+ "Failed to post comment": "Failed to post comment",
+ "Failed: {error}": "Failed: {error}",
+ "Failed: {message}": "Failed: {message}",
+ "Falls back to the TMDB rating only when a title has no IMDb score yet (mostly brand-new or unreleased). Off by default so cards prefer IMDb.": "Falls back to the TMDB rating only when a title has no IMDb score yet (mostly brand-new or unreleased). Off by default so cards prefer IMDb.",
+ "Familiar Stremio button order.": "Familiar Stremio button order.",
+ "Family": "Family",
+ "Family Favorites": "Family Favorites",
+ "Family Heart": "Family Heart",
+ "Fan-made avatars for personal use. Harbor claims no rights to these characters; they belong to their creators and studios, shown here under fair use. Every one is optimized down to a tiny WebP.": "Fan-made avatars for personal use. Harbor claims no rights to these characters; they belong to their creators and studios, shown here under fair use. Every one is optimized down to a tiny WebP.",
+ "Fanart.tv · logos and backdrops": "Fanart.tv · logos and backdrops",
+ "Fantasy": "Fantasy",
+ "Fast Break Points": "Fast Break Points",
+ "Fast Hands": "Fast Hands",
+ "Fast Mouth": "Fast Mouth",
+ "Faster and quieter than torrents if you already pay for Usenet. Configure on the addon page, paste the manifest URL it returns.": "Faster and quieter than torrents if you already pay for Usenet. Configure on the addon page, paste the manifest URL it returns.",
+ "Favorite": "Favorite",
+ "Favorited": "Favorited",
+ "favorites": "favorites",
+ "Favorites": "Favorites",
+ "feature broken": "feature broken",
+ "Feature this catalog in the hero carousel": "Feature this catalog in the hero carousel",
+ "Featured": "Featured",
+ "Featured {n}": "Featured {n}",
+ "Featured & Recommended": "Featured & Recommended",
+ "Featured film": "Featured film",
+ "Featured hero": "Featured hero",
+ "Featured tonight": "Featured tonight",
+ "Feel-Good Hits": "Feel-Good Hits",
+ "Fetching {n} items…": "Fetching {n} items…",
+ "Fetching library index…": "Fetching library index…",
+ "FG": "FG",
+ "Field Goal %": "Field Goal %",
+ "Field Reports": "Field Reports",
+ "Fight": "Fight",
+ "File": "File",
+ "Filename": "Filename",
+ "Fill": "Fill",
+ "Fill the top of the form to look exactly like this:": "Fill the top of the form to look exactly like this:",
+ "Filler": "Filler",
+ "Fills in where TMDB comes up empty (anime, older catalog). Free at ": "Fills in where TMDB comes up empty (anime, older catalog). Free at ",
+ "Film": "Film",
+ "Film and television": "Film and television",
+ "Filmic (Hable)": "Filmic (Hable)",
+ "Filmmakers leading the conversation": "Filmmakers leading the conversation",
+ "Films": "Films",
+ "Filter by media type after the sources merge. Leave them all on to send everything.": "Filter by media type after the sources merge. Leave them all on to send everything.",
+ "Filter by name or title": "Filter by name or title",
+ "Filter by type after the sources merge. Leave them all on to send everything.": "Filter by type after the sources merge. Leave them all on to send everything.",
+ "Filter categories": "Filter categories",
+ "Filtered": "Filtered",
+ "Filters": "Filters",
+ "Filters off · still empty": "Filters off · still empty",
+ "Filters out streams from adult catalogs and addons. On by default.": "Filters out streams from adult catalogs and addons. On by default.",
+ "Final": "Final",
+ "Find closer match": "Find closer match",
+ "Find more subtitles": "Find more subtitles",
+ "Finding peers": "Finding peers",
+ "Finds anime that got saved under a movie/series id by the 0.9.65 bug (breaks Continue Watching + Trakt), and removes just those so they re-add correctly.": "Finds anime that got saved under a movie/series id by the 0.9.65 bug (breaks Continue Watching + Trakt), and removes just those so they re-add correctly.",
+ "Finish an episode and the card jumps to the next one instead of sitting at 0m left.": "Finish an episode and the card jumps to the next one instead of sitting at 0m left.",
+ "Finish the install above first. Flipping this on now won't do anything until Harbor can find SVP's engine.": "Finish the install above first. Flipping this on now won't do anything until Harbor can find SVP's engine.",
+ "Finishing an anime episode updates your AniList progress. Forward only: it never lowers a count you already have.": "Finishing an anime episode updates your AniList progress. Forward only: it never lowers a count you already have.",
+ "Finishing an anime episode updates your MyAnimeList progress. Forward only: it never lowers a count you already have.": "Finishing an anime episode updates your MyAnimeList progress. Forward only: it never lowers a count you already have.",
+ "Finnish": "Finnish",
+ "First aired": "First aired",
+ "First anchor": "First anchor",
+ "First page": "First page",
+ "First-light picks": "First-light picks",
+ "Fit": "Fit",
+ "Fix": "Fix",
+ "Fix corrupted anime": "Fix corrupted anime",
+ "Fix match": "Fix match",
+ "Fixed shortcut": "Fixed shortcut",
+ "Flagged ({n})": "Flagged ({n})",
+ "Flagged shown": "Flagged shown",
+ "Flagrant Fouls": "Flagrant Fouls",
+ "Flat": "Flat",
+ "Flat cards": "Flat cards",
+ "Flat list of sources grouped by addon, with a filter dropdown. No re-ranking. Closest match to the Stremio app's stream picker.": "Flat list of sources grouped by addon, with a filter dropdown. No re-ranking. Closest match to the Stremio app's stream picker.",
+ "Flat_Style": "Flat_Style",
+ "Floating dock": "Floating dock",
+ "Floats over the artwork": "Floats over the artwork",
+ "Focus GIF URL": "Focus GIF URL",
+ "Focus PIN entry": "Focus PIN entry",
+ "Focus search": "Focus search",
+ "Font": "Font",
+ "For Everyone": "For Everyone",
+ "For laptop speakers and headphones. Movies mixed for 5.1 or 7.1 surround can sound hollow or have quiet dialogue on two speakers. This folds them down properly.": "For laptop speakers and headphones. Movies mixed for 5.1 or 7.1 surround can sound hollow or have quiet dialogue on two speakers. This folds them down properly.",
+ "For now, please open this site on a desktop, or build Harbor from source.": "For now, please open this site on a desktop, or build Harbor from source.",
+ "For the manual path:": "For the manual path:",
+ "For the manual path: {code} 20+ and {code} CLI.": "For the manual path: {code} 20+ and {code} CLI.",
+ "For users who want to deploy themselves or already have a wrangler workflow.": "For users who want to deploy themselves or already have a wrangler workflow.",
+ "For watching things": "For watching things",
+ "Force of Nature": "Force of Nature",
+ "Force on": "Force on",
+ "Force your font, size, and color onto styled subs. Use this for Arabic or any subs showing boxes. Can affect karaoke and signs.": "Force your font, size, and color onto styled subs. Use this for Arabic or any subs showing boxes. Can affect karaoke and signs.",
+ "Force your look onto subtitles that carry their own styling.": "Force your look onto subtitles that carry their own styling.",
+ "Forced": "Forced",
+ "Forced only": "Forced only",
+ "Forced subs with native audio": "Forced subs with native audio",
+ "Forces a compatibility present mode that removes a thin bright line some monitors show at the screen edge. Side effects: 4K playback can drop to a slideshow and HDR content looks dimmer (this mode bypasses the HDR display path). Leave OFF unless you see that line. Restart playback to apply.": "Forces a compatibility present mode that removes a thin bright line some monitors show at the screen edge. Side effects: 4K playback can drop to a slideshow and HDR content looks dimmer (this mode bypasses the HDR display path). Leave OFF unless you see that line. Restart playback to apply.",
+ "Forces the graphics card on. Smoothest and coolest, but a few old or unusual files may refuse to play. Switch back to Auto if something won't start.": "Forces the graphics card on. Smoothest and coolest, but a few old or unusual files may refuse to play. Switch back to Auto if something won't start.",
+ "Forest sidebar": "Forest sidebar",
+ "Forget": "Forget",
+ "Forget URL": "Forget URL",
+ "Forward": "Forward",
+ "Forward {n} seconds": "Forward {n} seconds",
+ "Forward {n}s": "Forward {n}s",
+ "Forward 10s": "Forward 10s",
+ "Forward 30 seconds": "Forward 30 seconds",
+ "Fouls": "Fouls",
+ "Found {n} .nfo file in this folder.": "Found {n} .nfo file in this folder.",
+ "Found {n}: {names}. Saved under the wrong id by the 0.9.65 bug, which breaks Continue Watching and Trakt marking.": "Found {n}: {names}. Saved under the wrong id by the 0.9.65 bug, which breaks Continue Watching and Trakt marking.",
+ "found by": "found by",
+ "Foundation Years (90s)": "Foundation Years (90s)",
+ "Founded {year}": "Founded {year}",
+ "Four channels at once, pre-spawned and swap-ready.": "Four channels at once, pre-spawned and swap-ready.",
+ "Frame interpolation shines on anime but can look off on live-action film. Limit it to the content you want, then restart playback.": "Frame interpolation shines on anime but can look off on live-action film. Limit it to the content you want, then restart playback.",
+ "Frame rate": "Frame rate",
+ "France": "France",
+ "Free": "Free",
+ "Free at ": "Free at ",
+ "Free key at ": "Free key at ",
+ "Free key unlocks Trending, In Theaters, and per-service catalogs. 60 seconds.": "Free key unlocks Trending, In Theaters, and per-service catalogs. 60 seconds.",
+ "Free Throw %": "Free Throw %",
+ "Free torrent + usenet": "Free torrent + usenet",
+ "Free, two-minute signup. Unlocks Trending, In Theaters Now, Top Rated, and per-streaming catalogs (Netflix, Disney+, Hulu, …). Your key stays on this machine.": "Free, two-minute signup. Unlocks Trending, In Theaters Now, Top Rated, and per-streaming catalogs (Netflix, Disney+, Hulu, …). Your key stays on this machine.",
+ "French": "French",
+ "French Cinema": "French Cinema",
+ "Fresh tomato for 60%+, splat for under.": "Fresh tomato for 60%+, splat for under.",
+ "Fresh tomatoes for 60% and up, splat for anything under.": "Fresh tomatoes for 60% and up, splat for anything under.",
+ "Freshest on stremio-addons.net": "Freshest on stremio-addons.net",
+ "Fri": "Fri",
+ "Friends": "Friends",
+ "From {source}": "From {source}",
+ "From any browser on your Wi-Fi": "From any browser on your Wi-Fi",
+ "From HBO": "From HBO",
+ "From other devices on your Wi-Fi": "From other devices on your Wi-Fi",
+ "From stremio-addons.net": "From stremio-addons.net",
+ "from the Harbor repo into a new directory as": "from the Harbor repo into a new directory as",
+ "Front row seat": "Front row seat",
+ "Frontier Classics": "Frontier Classics",
+ "Frontline Valor": "Frontline Valor",
+ "FT": "FT",
+ "Full": "Full",
+ "Full hero banner": "Full hero banner",
+ "Full list": "Full list",
+ "Full mode — diary, friends & ratings enabled": "Full mode — diary, friends & ratings enabled",
+ "Full mode signs in with your Letterboxd password to also unlock your diary, friends activity and your personal ratings. Your password is sent only to Stremboxd to obtain a token — Harbor never stores it.": "Full mode signs in with your Letterboxd password to also unlock your diary, friends activity and your personal ratings. Your password is sent only to Stremboxd to obtain a token — Harbor never stores it.",
+ "Full quality frames": "Full quality frames",
+ "Full quality hero image": "Full quality hero image",
+ "Full Roster": "Full Roster",
+ "Fullscreen": "Fullscreen",
+ "Fully downloaded": "Fully downloaded",
+ "Future Worlds": "Future Worlds",
+ "FX": "FX",
+ "Gallery": "Gallery",
+ "Gamma": "Gamma",
+ "Gamma (midtones)": "Gamma (midtones)",
+ "Gangster Opera": "Gangster Opera",
+ "Generate a Cloudflare API token with": "Generate a Cloudflare API token with",
+ "Generate a Cloudflare API token with {code1} and {code2} permissions at {code3}. Paste it into Harbor.": "Generate a Cloudflare API token with {code1} and {code2} permissions at {code3}. Paste it into Harbor.",
+ "Generates a frame on the fly as you scrub the seek bar. Works on debrid streams and local files.": "Generates a frame on the fly as you scrub the seek bar. Works on debrid streams and local files.",
+ "Genre": "Genre",
+ "Genre Icon": "Genre Icon",
+ "Genre Master": "Genre Master",
+ "Genres": "Genres",
+ "Genuine 48/60fps motion on anime, rendered right inside Harbor's player. SVP supplies the engine (VapourSynth + svpflow) and runs in your tray for licensing; Harbor's own player applies the interpolation, so it stays embedded and fully under your control. One-time install, then flip it on.": "Genuine 48/60fps motion on anime, rendered right inside Harbor's player. SVP supplies the engine (VapourSynth + svpflow) and runs in your tray for licensing; Harbor's own player applies the interpolation, so it stays embedded and fully under your control. One-time install, then flip it on.",
+ "German": "German",
+ "Germany": "Germany",
+ "Get": "Get",
+ "Get a free key at themoviedb.org": "Get a free key at themoviedb.org",
+ "Get beta updates": "Get beta updates",
+ "Get Harbor for desktop": "Get Harbor for desktop",
+ "Get started": "Get started",
+ "Get Started": "Get Started",
+ "Get SVP (free)": "Get SVP (free)",
+ "Get yours at ": "Get yours at ",
+ "Ghibli Magic": "Ghibli Magic",
+ "Girl": "Girl",
+ "GitHub username": "GitHub username",
+ "GL": "GL",
+ "Glass": "Glass",
+ "Glass cards": "Glass cards",
+ "Global": "Global",
+ "Global Impact": "Global Impact",
+ "Go back": "Go back",
+ "Go Back": "Go Back",
+ "Go to ep": "Go to ep",
+ "Go to episode": "Go to episode",
+ "Go to live": "Go to live",
+ "Go to show": "Go to show",
+ "Golden Bear": "Golden Bear",
+ "Golden Globes": "Golden Globes",
+ "Golden Lion": "Golden Lion",
+ "Good Morning": "Good Morning",
+ "Good to know": "Good to know",
+ "Good-looking video without working your machine hard. Leave it here unless you have a reason to change.": "Good-looking video without working your machine hard. Leave it here unless you have a reason to change.",
+ "Got a theme a friend shared? Drop it in.": "Got a theme a friend shared? Drop it in.",
+ "Got it": "Got it",
+ "Gothic Tales": "Gothic Tales",
+ "Gothic Whimsy": "Gothic Whimsy",
+ "Gradient": "Gradient",
+ "Grand": "Grand",
+ "Grand Canvases": "Grand Canvases",
+ "Grand Journeys": "Grand Journeys",
+ "Grand Prize": "Grand Prize",
+ "Grid": "Grid",
+ "Grid view": "Grid view",
+ "Group episodes by story arc": "Group episodes by story arc",
+ "Grouped": "Grouped",
+ "Grown-ups only": "Grown-ups only",
+ "Guest Stars": "Guest Stars",
+ "Guest Stars · {n}": "Guest Stars · {n}",
+ "Guests pick their own source": "Guests pick their own source",
+ "Guide": "Guide",
+ "Gun-Fu": "Gun-Fu",
+ "Hairline cards": "Hairline cards",
+ "Half-hours, anthologies, and a few epics for the morning routine.": "Half-hours, anthologies, and a few epics for the morning routine.",
+ "Hand-tuned colors. Edit them in the section above.": "Hand-tuned colors. Edit them in the section above.",
+ "Hang tight, won't be a sec.": "Hang tight, won't be a sec.",
+ "Hangout Comedy": "Hangout Comedy",
+ "Harbor {version} available": "Harbor {version} available",
+ "Harbor caps playlists at 80 MB to stay responsive. Most providers offer a filtered URL with fewer channels.": "Harbor caps playlists at 80 MB to stay responsive. Most providers offer a filtered URL with fewer channels.",
+ "Harbor catches stremio:// install links so the configure-and-install flow stays inside the app.": "Harbor catches stremio:// install links so the configure-and-install flow stays inside the app.",
+ "Harbor catches stremio:// install links so the configure-and-install flow stays inside the app. Every install also syncs to your Stremio account, so the official app remains the canonical home for your library.": "Harbor catches stremio:// install links so the configure-and-install flow stays inside the app. Every install also syncs to your Stremio account, so the official app remains the canonical home for your library.",
+ "Harbor checks automatically every few hours.": "Harbor checks automatically every few hours.",
+ "Harbor checks harbor.site for new versions and installs them in place.": "Harbor checks harbor.site for new versions and installs them in place.",
+ "Harbor checks harbor.site for new versions and installs them in place. Nothing installs until you choose to, and a dismissed update never nags you again.": "Harbor checks harbor.site for new versions and installs them in place. Nothing installs until you choose to, and a dismissed update never nags you again.",
+ "Harbor couldn't resolve a usable ID for this title. Add a TMDB key in Library settings or sign in to Stremio to broaden coverage.": "Harbor couldn't resolve a usable ID for this title. Add a TMDB key in Library settings or sign in to Stremio to broaden coverage.",
+ "Harbor curated": "Harbor curated",
+ "Harbor double-checks with Stremio after saving, so a half-written order can't slip through.": "Harbor double-checks with Stremio after saving, so a half-written order can't slip through.",
+ "Harbor finds intro and credits timing from AniSkip, TheIntroDB, and the file's own chapters, then shows a Skip button at the right moment.": "Harbor finds intro and credits timing from AniSkip, TheIntroDB, and the file's own chapters, then shows a Skip button at the right moment.",
+ "Harbor identity": "Harbor identity",
+ "Harbor in your browser": "Harbor in your browser",
+ "Harbor is open source. PRs that reference a bug get reviewed within 48h and ship with credit in the release notes.": "Harbor is open source. PRs that reference a bug get reviewed within 48h and ship with credit in the release notes.",
+ "Harbor keeps your MyAnimeList watch progress in sync.": "Harbor keeps your MyAnimeList watch progress in sync.",
+ "Harbor pulls the most popular titles each service has right now. Toggle off anything you don't subscribe to.": "Harbor pulls the most popular titles each service has right now. Toggle off anything you don't subscribe to.",
+ "Harbor pulls your addon collection from Stremio. Manage individual addons in Streaming sources.": "Harbor pulls your addon collection from Stremio. Manage individual addons in Streaming sources.",
+ "Harbor ranking": "Harbor ranking",
+ "Harbor ranking puts the best-scoring sources first. Addon order follows your addon priority (organize it in Addons, Installed tab, Reorder) and keeps each addon's results in the order it returned them, like the Stremio and Vidi apps.": "Harbor ranking puts the best-scoring sources first. Addon order follows your addon priority (organize it in Addons, Installed tab, Reorder) and keeps each addon's results in the order it returned them, like the Stremio and Vidi apps.",
+ "Harbor Relay": "Harbor Relay",
+ "Harbor runs a small streaming server right on this computer. This is where it lives. To stream from this machine on another device, copy the Wi-Fi address and paste it into Remote streaming server in Harbor over there.": "Harbor runs a small streaming server right on this computer. This is where it lives. To stream from this machine on another device, copy the Wi-Fi address and paste it into Remote streaming server in Harbor over there.",
+ "Harbor scans your IPTV playlists' EPG every 30 min for programs about to start.": "Harbor scans your IPTV playlists' EPG every 30 min for programs about to start.",
+ "Harbor sends no telemetry. This also drops outbound ad, analytics, and tracker requests that addons or metadata providers try to make, before they leave your machine.": "Harbor sends no telemetry. This also drops outbound ad, analytics, and tracker requests that addons or metadata providers try to make, before they leave your machine.",
+ "Harbor shows your AniList lists on the Anime page and keeps your progress in sync.": "Harbor shows your AniList lists on the Anime page and keeps your progress in sync.",
+ "Harbor still finds and loads subtitles so they're one click away in the player, it just won't turn them on automatically.": "Harbor still finds and loads subtitles so they're one click away in the player, it just won't turn them on automatically.",
+ "Harbor test message (Discord). If you can read this, your webhook is wired up.": "Harbor test message (Discord). If you can read this, your webhook is wired up.",
+ "Harbor test message (Telegram). If you can read this, your webhook is wired up.": "Harbor test message (Telegram). If you can read this, your webhook is wired up.",
+ "Harbor uses the graphics card when it's safe and falls back to the CPU when it isn't. The right call for almost everyone.": "Harbor uses the graphics card when it's safe and falls back to the CPU when it isn't. The right call for almost everyone.",
+ "Harbor will mark what you finish as watched on Simkl and sync your plan-to-watch list.": "Harbor will mark what you finish as watched on Simkl and sync your plan-to-watch list.",
+ "Harbor will scrobble your playback to Trakt and sync your watchlist.": "Harbor will scrobble your playback to Trakt and sync your watchlist.",
+ "Harbor's built-in frame interpolation. Smooths panning, best on anime. Needs a display refresh rate above the video's frame rate, and can stutter on weak GPUs. Lighter than SVP.": "Harbor's built-in frame interpolation. Smooths panning, best on anime. Needs a display refresh rate above the video's frame rate, and can stutter on weak GPUs. Lighter than SVP.",
+ "Harbor's in-app installer animates the manifest install and keeps you in context. Anything Harbor installs is also synced to your Stremio account, so the official app stays the canonical library. Turn this off and Stremio becomes the only handler for stremio:// links; Harbor still installs anything you trigger from inside the app (Configure & install, paste, drag-and-drop).": "Harbor's in-app installer animates the manifest install and keeps you in context. Anything Harbor installs is also synced to your Stremio account, so the official app stays the canonical library. Turn this off and Stremio becomes the only handler for stremio:// links; Harbor still installs anything you trigger from inside the app (Configure & install, paste, drag-and-drop).",
+ "Harbor's native player chrome.": "Harbor's native player chrome.",
+ "Harbor's player applies the interpolation itself, embedded like normal playback, and starts SVP Manager in the tray for licensing. Restart playback to apply. If video goes black or won't start, turn this off.": "Harbor's player applies the interpolation itself, embedded like normal playback, and starts SVP Manager in the tray for licensing. Restart playback to apply. If video goes black or won't start, turn this off.",
+ "Harbor's public relay has not rolled out the latest protocol yet.": "Harbor's public relay has not rolled out the latest protocol yet.",
+ "Harbor's public relay updates automatically; nothing to do.": "Harbor's public relay updates automatically; nothing to do.",
+ "Hard Boiled": "Hard Boiled",
+ "Hard stroke around each letter. High contrast.": "Hard stroke around each letter. High contrast.",
+ "Hardware acceleration": "Hardware acceleration",
+ "HDR": "HDR",
+ "HDR display mode": "HDR display mode",
+ "HDR in a separate window": "HDR in a separate window",
+ "HDR to SDR: Off": "HDR to SDR: Off",
+ "HDR to SDR: On": "HDR to SDR: On",
+ "HDR-to-SDR tonemapping": "HDR-to-SDR tonemapping",
+ "Head to Discover. Cinemeta and OpenSubtitles cover the basics; Torrentio + a debrid key cover almost everything else.": "Head to Discover. Cinemeta and OpenSubtitles cover the basics; Torrentio + a debrid key cover almost everything else.",
+ "Headphone series": "Headphone series",
+ "Heads up": "Heads up",
+ "Heads up: {keys} can load outside scripts or open your player to the network. Only keep these if you know exactly what they do.": "Heads up: {keys} can load outside scripts or open your player to the network. Only keep these if you know exactly what they do.",
+ "Heads up: Harbor was built in English. Multi-language support is partial, so your addons usually catch what Harbor's own filters miss. If you speak another language and want to help fill the gaps, the source is open.": "Heads up: Harbor was built in English. Multi-language support is partial, so your addons usually catch what Harbor's own filters miss. If you speak another language and want to help fill the gaps, the source is open.",
+ "Heads up: if Stremio is also installed, Windows may ask which app to use the first time a stremio:// link fires. Pick Harbor to make it stick.": "Heads up: if Stremio is also installed, Windows may ask which app to use the first time a stremio:// link fires. Pick Harbor to make it stick.",
+ "Heads up: this is a large file for peer-to-peer streaming, so it can take a while to start. A 1080p source or a debrid service will load faster.": "Heads up: this is a large file for peer-to-peer streaming, so it can take a while to start. A 1080p source or a debrid service will load faster.",
+ "Heads-up: a few addons (like AIOStatus) don't pre-fill from the URL. If the form loads blank, paste the existing manifest URL into their \"Import from URL\" field to restore your settings.": "Heads-up: a few addons (like AIOStatus) don't pre-fill from the URL. If the form loads blank, paste the existing manifest URL into their \"Import from URL\" field to restore your settings.",
+ "Heads-up: a few addons (like AIOStatus) don't pre-fill from the URL. If the form loads blank, paste the existing manifest URL into their \\": "Heads-up: a few addons (like AIOStatus) don't pre-fill from the URL. If the form loads blank, paste the existing manifest URL into their \\",
+ "Heads-up: a few addons don't pre-fill from the URL. If the form loads blank, paste the existing manifest URL into their \"Import from URL\" field to restore your settings.": "Heads-up: a few addons don't pre-fill from the URL. If the form loads blank, paste the existing manifest URL into their \"Import from URL\" field to restore your settings.",
+ "Health check returns 5xx": "Health check returns 5xx",
+ "Health for {n} service": "Health for {n} service",
+ "Health for {n} services": "Health for {n} services",
+ "Health for {n} services below": "Health for {n} services below",
+ "heard": "heard",
+ "Heartbreak Chronicles": "Heartbreak Chronicles",
+ "Heartstrings": "Heartstrings",
+ "Heartwarming": "Heartwarming",
+ "Heavy Hitters": "Heavy Hitters",
+ "Hebrew": "Hebrew",
+ "Height": "Height",
+ "Heists & Cons": "Heists & Cons",
+ "Hello World": "Hello World",
+ "Help": "Help",
+ "Hero": "Hero",
+ "Hero carousel, Top 10, Trending, In Theaters, per-service rails.": "Hero carousel, Top 10, Trending, In Theaters, per-service rails.",
+ "Hero carousel, Top 10, Trending, In Theaters, per-service rails. Addon catalogs append underneath, deduped.": "Hero carousel, Top 10, Trending, In Theaters, per-service rails. Addon catalogs append underneath, deduped.",
+ "Hero, Top 10, Trending, In Theaters, per-service rails. Your addons append underneath.": "Hero, Top 10, Trending, In Theaters, per-service rails. Your addons append underneath.",
+ "HEVC, HDR, TrueHD, plus real subtitle and audio menus.": "HEVC, HDR, TrueHD, plus real subtitle and audio menus.",
+ "HI": "HI",
+ "HI/SDH": "HI/SDH",
+ "hidden": "hidden",
+ "Hidden": "Hidden",
+ "Hidden by default. Manifest paths often carry API keys (debrid tokens, OMDB keys, etc.) you don't want over a shoulder.": "Hidden by default. Manifest paths often carry API keys (debrid tokens, OMDB keys, etc.) you don't want over a shoulder.",
+ "Hidden by filter: {reason}": "Hidden by filter: {reason}",
+ "Hidden catalogs": "Hidden catalogs",
+ "Hidden Gems": "Hidden Gems",
+ "Hidden Gems on MAL": "Hidden Gems on MAL",
+ "Hide": "Hide",
+ "Hide adult addons": "Hide adult addons",
+ "Hide adult content": "Hide adult content",
+ "Hide anime": "Hide anime",
+ "Hide category": "Hide category",
+ "Hide details": "Hide details",
+ "Hide email": "Hide email",
+ "Hide entire categories. Toggling these also removes the matching sidebar entries and rails.": "Hide entire categories. Toggling these also removes the matching sidebar entries and rails.",
+ "Hide from home": "Hide from home",
+ "Hide Live TV": "Hide Live TV",
+ "Hide others' drawings": "Hide others' drawings",
+ "Hide password": "Hide password",
+ "Hide row": "Hide row",
+ "Hide search": "Hide search",
+ "Hide section": "Hide section",
+ "Hide streams": "Hide streams",
+ "Hide subtitles when the player shrinks into the floating PiP window.": "Hide subtitles when the player shrinks into the floating PiP window.",
+ "Hide the full URL": "Hide the full URL",
+ "Hide the title": "Hide the title",
+ "Hide this control": "Hide this control",
+ "Hide this panel": "Hide this panel",
+ "Hide this Skip button": "Hide this Skip button",
+ "Hide titles under posters": "Hide titles under posters",
+ "Hide unreleased titles": "Hide unreleased titles",
+ "Hide watched titles in catalogs": "Hide watched titles in catalogs",
+ "Hides anime from the Home Continue Watching row. It still appears in the Anime tab's own Continue Watching.": "Hides anime from the Home Continue Watching row. It still appears in the Anime tab's own Continue Watching.",
+ "Hides spoiler-prone episode details in episode lists until you have watched them.": "Hides spoiler-prone episode details in episode lists until you have watched them.",
+ "Hides streams with no detected preferred language. Multi-audio releases count as a match.": "Hides streams with no detected preferred language. Multi-audio releases count as a match.",
+ "Hides the button on its own after a few seconds so a wrong one doesn't sit there the whole episode.": "Hides the button on its own after a few seconds so a wrong one doesn't sit there the whole episode.",
+ "High": "High",
+ "High score, low fanfare": "High score, low fanfare",
+ "High-quality episode images": "High-quality episode images",
+ "Highly Rated, Quietly Loved": "Highly Rated, Quietly Loved",
+ "Highly recommended. This is what gives you the full Harbor experience: Popular, Trending, In Theaters, and per-service rails. Free at ": "Highly recommended. This is what gives you the full Harbor experience: Popular, Trending, In Theaters, and per-service rails. Free at ",
+ "Hindi": "Hindi",
+ "His Best": "His Best",
+ "His Comedy": "His Comedy",
+ "Historical Drama": "Historical Drama",
+ "History": "History",
+ "History Buff": "History Buff",
+ "Hit": "Hit",
+ "Hit your daily quota? Use Harbor's public relay, or host your own.": "Hit your daily quota? Use Harbor's public relay, or host your own.",
+ "Hits": "Hits",
+ "Hitting Play jumps straight into playback with the best stream Harbor finds.": "Hitting Play jumps straight into playback with the best stream Harbor finds.",
+ "Hitting Play opens the source list so you can choose quality, debrid, and audio yourself.": "Hitting Play opens the source list so you can choose quality, debrid, and audio yourself.",
+ "Hold Ctrl or Cmd and scroll to resize Harbor's interface smoothly.": "Hold Ctrl or Cmd and scroll to resize Harbor's interface smoothly.",
+ "Holdover Picks": "Holdover Picks",
+ "Holdup Matey!": "Holdup Matey!",
+ "Holiday Classics": "Holiday Classics",
+ "Holiday Warmth": "Holiday Warmth",
+ "Home": "Home",
+ "Home · Continue Watching": "Home · Continue Watching",
+ "Home hero": "Home hero",
+ "Home hero shadow": "Home hero shadow",
+ "Home languages": "Home languages",
+ "Home layout": "Home layout",
+ "Home Rail Settings": "Home Rail Settings",
+ "Home Runs": "Home Runs",
+ "Honored writers": "Honored writers",
+ "Horizontal view": "Horizontal view",
+ "Horror": "Horror",
+ "Horror & Supernatural": "Horror & Supernatural",
+ "Host": "Host",
+ "Host is watching": "Host is watching",
+ "Hotkeys": "Hotkeys",
+ "Hover a poster to peek at its rating, runtime, and synopsis without opening it.": "Hover a poster to peek at its rating, runtime, and synopsis without opening it.",
+ "Hover preview": "Hover preview",
+ "Hover the speaker to reveal a horizontal slider.": "Hover the speaker to reveal a horizontal slider.",
+ "Hover to peek": "Hover to peek",
+ "How aggressively Harbor rejects shady or mismatched streams before showing them in the picker.": "How aggressively Harbor rejects shady or mismatched streams before showing them in the picker.",
+ "How dark the gradient behind the featured title on Home is. 100% is the classic look; lower it to let more of the artwork show through.": "How dark the gradient behind the featured title on Home is. 100% is the classic look; lower it to let more of the artwork show through.",
+ "How Harbor finds and resolves playable streams. Debrid keys and addon installs live here.": "How Harbor finds and resolves playable streams. Debrid keys and addon installs live here.",
+ "How Harbor squeezes HDR movies onto a normal screen. Auto is right for almost everyone; the curves below just change the look (punchy vs soft). Only matters on HDR sources.": "How Harbor squeezes HDR movies onto a normal screen. Auto is right for almost everyone; the curves below just change the look (punchy vs soft). Only matters on HDR sources.",
+ "How is this build treating you?": "How is this build treating you?",
+ "How keys behave during playback.": "How keys behave during playback.",
+ "How much of each source's description the Stremio picker layout shows. Full keeps everything the addon sends, which matters for AIOStreams and other custom formats.": "How much of each source's description the Stremio picker layout shows. Full keeps everything the addon sends, which matters for AIOStreams and other custom formats.",
+ "How often the profile screen appears when you have more than one profile.": "How often the profile screen appears when you have more than one profile.",
+ "How Play works": "How Play works",
+ "How posters appear as they load. Blur up looks smoothest; Fade is lighter on older or low-power devices; Instant turns it off.": "How posters appear as they load. Blur up looks smoothest; Fade is lighter on older or low-power devices; Instant turns it off.",
+ "How sharp the trailer is when you hit the preview button. Auto picks from your connection speed. 1080p and Best merge separate video and audio with the bundled ffmpeg, so they take a beat longer to start.": "How sharp the trailer is when you hit the preview button. Auto picks from your connection speed. 1080p and Best merge separate video and audio with the bundled ffmpeg, so they take a beat longer to start.",
+ "How should we import this folder?": "How should we import this folder?",
+ "How subtitles look during playback. Live preview below.": "How subtitles look during playback. Live preview below.",
+ "How the Home page assembles its rails.": "How the Home page assembles its rails.",
+ "How the volume widget behaves on click and hover.": "How the volume widget behaves on click and hover.",
+ "How to get this": "How to get this",
+ "How you appear in Watch Together, sessions, and chat. Sits on top of your Stremio account.": "How you appear in Watch Together, sessions, and chat. Sits on top of your Stremio account.",
+ "hr": "hr",
+ "HTML5": "HTML5",
+ "HTML5 (browser-based)": "HTML5 (browser-based)",
+ "HTML5 plays everything WebView2 supports. mpv handles TrueHD, DTS-HD, AV1, weird containers, and HDR. Auto picks based on the source.": "HTML5 plays everything WebView2 supports. mpv handles TrueHD, DTS-HD, AV1, weird containers, and HDR. Auto picks based on the source.",
+ "https://...manifest.json or stremio://...": "https://...manifest.json or stremio://...",
+ "https://posters.example.com or a pattern with {id}": "https://posters.example.com or a pattern with {id}",
+ "Huge": "Huge",
+ "Hungarian": "Hungarian",
+ "HW decode": "HW decode",
+ "I authorized it": "I authorized it",
+ "I have my token": "I have my token",
+ "Icon": "Icon",
+ "Icon only": "Icon only",
+ "Iconic Long-Runners": "Iconic Long-Runners",
+ "ID prefixes": "ID prefixes",
+ "Identify every file by its name and pull fresh titles and artwork from TMDB.": "Identify every file by its name and pull fresh titles and artwork from TMDB.",
+ "Identify this title before exporting.": "Identify this title before exporting.",
+ "Idle": "Idle",
+ "If a stream or the video player misbehaves, export the player log and attach it above. It saves to your Downloads folder.": "If a stream or the video player misbehaves, export the player log and attach it above. It saves to your Downloads folder.",
+ "If disabled, overviews and taglines remain in their original language. (Applies only inside the details page)": "If disabled, overviews and taglines remain in their original language. (Applies only inside the details page)",
+ "If disabled, posters remain in their original language. (Applies only inside the details page)": "If disabled, posters remain in their original language. (Applies only inside the details page)",
+ "If disabled, titles remain in their original language.": "If disabled, titles remain in their original language.",
+ "If enabled, posters will display the Arabic title. Disable this to keep the original English poster.": "If enabled, posters will display the Arabic title. Disable this to keep the original English poster.",
+ "If streams stop loading, hit Clear & restart below to wipe the engine and start it fresh on a new port.": "If streams stop loading, hit Clear & restart below to wipe the engine and start it fresh on a new port.",
+ "If the server is unreachable, playback fails instead of streaming locally. Use this when your VPN runs on the server machine and torrent traffic must never leave this one.": "If the server is unreachable, playback fails instead of streaming locally. Use this when your VPN runs on the server machine and torrent traffic must never leave this one.",
+ "If the Watch Together popover shows an outdated-relay banner, redeploying with the steps above is the fix. The banner clears automatically the next time you connect once the relay reports the current version.": "If the Watch Together popover shows an outdated-relay banner, redeploying with the steps above is the fix. The banner clears automatically the next time you connect once the relay reports the current version.",
+ "If video keeps pausing to buffer, or you're on spotty Wi-Fi or a far-away server, this gives Harbor a bigger head start so playback rides through the rough patches.": "If video keeps pausing to buffer, or you're on spotty Wi-Fi or a far-away server, this gives Harbor a bigger head start so playback rides through the rough patches.",
+ "If you exceed free tier, the Workers Paid plan is $5 per month and bumps the request allowance to 10 million per day.": "If you exceed free tier, the Workers Paid plan is $5 per month and bumps the request allowance to 10 million per day.",
+ "Image {n}": "Image {n}",
+ "Image bar active. Pick a style above to switch back, or clear the image below.": "Image bar active. Pick a style above to switch back, or clear the image below.",
+ "Image languages": "Image languages",
+ "Image size": "Image size",
+ "IMDb": "IMDb",
+ "Import a Theme": "Import a Theme",
+ "Import from .nfo files": "Import from .nfo files",
+ "Import from file...": "Import from file...",
+ "Import from Trakt": "Import from Trakt",
+ "Imported": "Imported",
+ "Imported and now playing": "Imported and now playing",
+ "Importing {done} / {total}": "Importing {done} / {total}",
+ "in {d} days": "in {d} days",
+ "in {n} weeks": "in {n} weeks",
+ "in {n}wks": "in {n}wks",
+ "in 24h": "in 24h",
+ "In Cinema": "In Cinema",
+ "in Harbor settings.": "in Harbor settings.",
+ "In Harbor: Settings, Harbor Relay, then": "In Harbor: Settings, Harbor Relay, then",
+ "In Harbor: Settings, Harbor Relay, then {kbd}. Paste the URL with {code1} as the scheme instead of {code2}.": "In Harbor: Settings, Harbor Relay, then {kbd}. Paste the URL with {code1} as the scheme instead of {code2}.",
+ "In Theaters": "In Theaters",
+ "In Theaters Now": "In Theaters Now",
+ "In watchlist": "In watchlist",
+ "In Watchlist": "In Watchlist",
+ "In your local library": "In your local library",
+ "In your watchlist": "In your watchlist",
+ "Inactive": "Inactive",
+ "Increase progress": "Increase progress",
+ "India": "India",
+ "Indy & Beyond": "Indy & Beyond",
+ "Info": "Info",
+ "Information": "Information",
+ "Injected ad skip (experimental)": "Injected ad skip (experimental)",
+ "Injected into a fixed-position layer above the app (pointer-events disabled by default). Wrap in a div with pointer-events:auto to make it interactive.": "Injected into a fixed-position layer above the app (pointer-events disabled by default). Wrap in a div with pointer-events:auto to make it interactive.",
+ "Inside the playback view.": "Inside the playback view.",
+ "Insomnia Lineup": "Insomnia Lineup",
+ "Inspector": "Inspector",
+ "Install": "Install",
+ "Install addon": "Install addon",
+ "Install default": "Install default",
+ "Install failed": "Install failed",
+ "Install failed.": "Install failed.",
+ "Install from URL: paste any manifest or stremio:// link": "Install from URL: paste any manifest or stremio:// link",
+ "Install SVP once (the free tier is enough). It bundles VapourSynth + svpflow; Harbor reuses them, no extra setup.": "Install SVP once (the free tier is enough). It bundles VapourSynth + svpflow; Harbor reuses them, no extra setup.",
+ "Install wrangler and authenticate:": "Install wrangler and authenticate:",
+ "Installed": "Installed",
+ "Installed and detected. Harbor found its interpolation engine and will drive it directly.": "Installed and detected. Harbor found its interpolation engine and will drive it directly.",
+ "Installed locally": "Installed locally",
+ "Installed via {label}": "Installed via {label}",
+ "Installing": "Installing",
+ "Installing {name}": "Installing {name}",
+ "Installing. Harbor will restart.": "Installing. Harbor will restart.",
+ "Installing…": "Installing…",
+ "Instant": "Instant",
+ "Instant Play: clicking Play queues the next stream automatically.": "Instant Play: clicking Play queues the next stream automatically.",
+ "Integrations": "Integrations",
+ "Inter": "Inter",
+ "Interceptions": "Interceptions",
+ "Interface language": "Interface language",
+ "Interface scale": "Interface scale",
+ "Internals": "Internals",
+ "Internet speed": "Internet speed",
+ "Interpolates frames for smoother panning, best on anime. Needs a display refresh rate above the video's frame rate, and can stutter on weak GPUs. mpv only.": "Interpolates frames for smoother panning, best on anime. Needs a display refresh rate above the video's frame rate, and can stutter on weak GPUs. mpv only.",
+ "Interrupted": "Interrupted",
+ "Interrupted: re-download to finish": "Interrupted: re-download to finish",
+ "Into the Stars": "Into the Stars",
+ "Into the Wild": "Into the Wild",
+ "Invalid SourceRow JSON format": "Invalid SourceRow JSON format",
+ "Invert": "Invert",
+ "Investigative Docs": "Investigative Docs",
+ "Invite": "Invite",
+ "Invite link": "Invite link",
+ "Invite via link": "Invite via link",
+ "is now using your new configuration.": "is now using your new configuration.",
+ "is ready. Open Discover or hit Play on a title to use it.": "is ready. Open Discover or hit Play on a title to use it.",
+ "Is the channel playing right?": "Is the channel playing right?",
+ "Isekai": "Isekai",
+ "It looks offline right now. Free playlists often include channels that have gone dark, so another one is usually a click away.": "It looks offline right now. Free playlists often include channels that have gone dark, so another one is usually a click away.",
+ "It replies with your numeric ID. Copy that number. Paste it into the": "It replies with your numeric ID. Copy that number. Paste it into the",
+ "It updates automatically; nothing to do.": "It updates automatically; nothing to do.",
+ "Italian": "Italian",
+ "Italy": "Italy",
+ "Japan": "Japan",
+ "Japanese": "Japanese",
+ "Japanese Cinema": "Japanese Cinema",
+ "Jazz & Showbiz": "Jazz & Showbiz",
+ "Join": "Join",
+ "JSON (.json)": "JSON (.json)",
+ "JSON cannot be empty": "JSON cannot be empty",
+ "JSON URL": "JSON URL",
+ "Jump back by the Back seek step set under Behavior.": "Jump back by the Back seek step set under Behavior.",
+ "Jump back thirty seconds.": "Jump back thirty seconds.",
+ "Jump back to the last live channel you watched (live TV only).": "Jump back to the last live channel you watched (live TV only).",
+ "Jump forward by the Forward seek step set under Behavior.": "Jump forward by the Forward seek step set under Behavior.",
+ "Jump forward thirty seconds.": "Jump forward thirty seconds.",
+ "Jump past a known injected ad on its own instead of showing the Skip button.": "Jump past a known injected ad on its own instead of showing the Skip button.",
+ "Jump past openings automatically the moment one starts. The Skip button still shows either way, and seeking back into an intro replays it without skipping again.": "Jump past openings automatically the moment one starts. The Skip button still shows either way, and seeking back into an intro replays it without skipping again.",
+ "Jump to": "Jump to",
+ "Jump to end": "Jump to end",
+ "Jump to live edge": "Jump to live edge",
+ "Jump to start": "Jump to start",
+ "Jump to the top-bar search from anywhere.": "Jump to the top-bar search from anywhere.",
+ "Just added": "Just added",
+ "Just change region": "Just change region",
+ "Just for kids": "Just for kids",
+ "just now": "just now",
+ "Just the next show: {title}": "Just the next show: {title}",
+ "K-Drama": "K-Drama",
+ "Keep anime in the Anime room only": "Keep anime in the Anime room only",
+ "Keep at most": "Keep at most",
+ "Keep cached files for": "Keep cached files for",
+ "Keep frames for": "Keep frames for",
+ "Keep Harbor a click away. Close it to the system tray instead of quitting, and control it from the tray menu. These also mirror into the tray menu live.": "Keep Harbor a click away. Close it to the system tray instead of quitting, and control it from the tray menu. These also mirror into the tray menu live.",
+ "Keep original": "Keep original",
+ "Keep same source on next episode": "Keep same source on next episode",
+ "Keep the Harbor window above other windows.": "Keep the Harbor window above other windows.",
+ "Keep the Library Watchlist tab limited to titles you added in Stremio. Turn this off to also include anything Stremio auto-added when you pressed play.": "Keep the Library Watchlist tab limited to titles you added in Stremio. Turn this off to also include anything Stremio auto-added when you pressed play.",
+ "Keep the next episode visible": "Keep the next episode visible",
+ "Keep the original look but apply your size and position.": "Keep the original look but apply your size and position.",
+ "Keep the presence visible when playback is paused.": "Keep the presence visible when playback is paused.",
+ "Keep typing, or paste the full list URL.": "Keep typing, or paste the full list URL.",
+ "Keep watching": "Keep watching",
+ "Keep Watching": "Keep Watching",
+ "Keeps fetching the full torrent in the background, even when paused, so you can pre-buffer big remuxes and scrub a finished file with no re-downloading. Uses more bandwidth and disk; cleaned up when you switch or close like normal.": "Keeps fetching the full torrent in the background, even when paused, so you can pre-buffer big remuxes and scrub a finished file with no re-downloading. Uses more bandwidth and disk; cleaned up when you switch or close like normal.",
+ "Keeps Harbor embedded but lifts the HDR video onto its own opaque plane with the controls floating above, so Windows shows true HDR without the brightness slider dimming it. Needs HDR-to-SDR tonemapping off.": "Keeps Harbor embedded but lifts the HDR video onto its own opaque plane with the controls floating above, so Windows shows true HDR without the brightness slider dimming it. Needs HDR-to-SDR tonemapping off.",
+ "Keeps HDR inside Harbor with the controls floating above the video. Subtitles render on the video. If the control bar does not appear, press Esc or use separate window.": "Keeps HDR inside Harbor with the controls floating above the video. Subtitles render on the video. If the control bar does not appear, press Esc or use separate window.",
+ "Keeps the malware/year/episode-mismatch checks but allows season packs and oversized files. Same as hitting Search wider in the picker.": "Keeps the malware/year/episode-mismatch checks but allows season packs and oversized files. Same as hitting Search wider in the picker.",
+ "Key rejected. Check it on Library & metadata.": "Key rejected. Check it on Library & metadata.",
+ "Kids profile": "Kids profile",
+ "Kinetic Style": "Kinetic Style",
+ "King Adaptations": "King Adaptations",
+ "Kitsu IDs, fansub-friendly, season-aware.": "Kitsu IDs, fansub-friendly, season-aware.",
+ "Kitsu, MAL, season-aware": "Kitsu, MAL, season-aware",
+ "Know more": "Know more",
+ "Known For": "Known For",
+ "Korean": "Korean",
+ "Korean Cinema": "Korean Cinema",
+ "Kung Fu & Chaos": "Kung Fu & Chaos",
+ "Language": "Language",
+ "language. Home filters to it.": "language. Home filters to it.",
+ "Languages": "Languages",
+ "languages. Home filters to these.": "languages. Home filters to these.",
+ "Large": "Large",
+ "Larger": "Larger",
+ "Largest Lead": "Largest Lead",
+ "Last aired": "Last aired",
+ "Last page": "Last page",
+ "Last source wasn't actually cached on your debrid yet. Pick another from the list.": "Last source wasn't actually cached on your debrid yet. Pick another from the list.",
+ "Last synced {n}s ago.": "Last synced {n}s ago.",
+ "Last updated {ago}": "Last updated {ago}",
+ "Late Night": "Late Night",
+ "Late Show": "Late Show",
+ "Late-night chapters": "Late-night chapters",
+ "Laugh Out Loud": "Laugh Out Loud",
+ "Layout editor": "Layout editor",
+ "Layout name": "Layout name",
+ "Layouts": "Layouts",
+ "Lead Changes": "Lead Changes",
+ "Lead Roles": "Lead Roles",
+ "Lead with the show name instead of the episode title at the top of the player.": "Lead with the show name instead of the episode title at the top of the player.",
+ "Leading Lady": "Leading Lady",
+ "Leave": "Leave",
+ "Leave everything below it alone. Scroll down, click {b1}, then {b2}. Copy the long string it shows you (you only see it once) and bring it back here.": "Leave everything below it alone. Scroll down, click {b1}, then {b2}. Copy the long string it shows you (you only see it once) and bring it back here.",
+ "Leave room": "Leave room",
+ "Leave the episode you are up to clear and only blur the ones after it.": "Leave the episode you are up to clear and only blur the ones after it.",
+ "Leave the show?": "Leave the show?",
+ "left": "left",
+ "Left": "Left",
+ "Left edge": "Left edge",
+ "Legal": "Legal",
+ "Leone, Corbucci, dust and dynamite": "Leone, Corbucci, dust and dynamite",
+ "Less bass": "Less bass",
+ "Let your Discord friends see what you are watching, with the show poster and a live progress bar.": "Let your Discord friends see what you are watching, with the show poster and a live progress bar.",
+ "Let your Discord friends see what you are watching, with the show poster and a live progress bar. Desktop only, and only your own Discord client is involved (nothing touches a Harbor server).": "Let your Discord friends see what you are watching, with the show poster and a live progress bar. Desktop only, and only your own Discord client is involved (nothing touches a Harbor server).",
+ "Let your graphics card do the heavy lifting of decoding video. It saves battery and keeps the CPU cool. Auto is right for almost everyone; only switch if playback looks wrong or won't start.": "Let your graphics card do the heavy lifting of decoding video. It saves battery and keeps the CPU cool. Auto is right for almost everyone; only switch if playback looks wrong or won't start.",
+ "Letter spacing": "Letter spacing",
+ "Letterboxd": "Letterboxd",
+ "Letterboxd password": "Letterboxd password",
+ "Letterboxd Reviews": "Letterboxd Reviews",
+ "Letterboxd unavailable right now.": "Letterboxd unavailable right now.",
+ "Letterboxd username": "Letterboxd username",
+ "letterboxd.com/username/list/slug": "letterboxd.com/username/list/slug",
+ "Library": "Library",
+ "Library & metadata": "Library & metadata",
+ "Library and addons will sync in once you're past setup.": "Library and addons will sync in once you're past setup.",
+ "Library is empty. Nothing to repair.": "Library is empty. Nothing to repair.",
+ "Library, watch progress, and addon collection sync from this account.": "Library, watch progress, and addon collection sync from this account.",
+ "Lifts shadows so the pitch-black scenes are actually watchable.": "Lifts shadows so the pitch-black scenes are actually watchable.",
+ "Lighter (w300)": "Lighter (w300)",
+ "Lights Out": "Lights Out",
+ "Liked Films": "Liked Films",
+ "Likely cam": "Likely cam",
+ "Likes": "Likes",
+ "Limited Series & Miniseries": "Limited Series & Miniseries",
+ "Line spacing": "Line spacing",
+ "Line-free video mode": "Line-free video mode",
+ "lineups": "lineups",
+ "Lineups not available yet.": "Lineups not available yet.",
+ "Link copied": "Link copied",
+ "List": "List",
+ "List URL or ID": "List URL or ID",
+ "List view": "List view",
+ "Live": "Live",
+ "Live & Upcoming": "Live & Upcoming",
+ "Live channel": "Live channel",
+ "Live EPG": "Live EPG",
+ "Live preview": "Live preview",
+ "Live preview is on. Done and Save both keep what you've picked as your Custom theme. Reset reverts the editor to the saved palette.": "Live preview is on. Done and Save both keep what you've picked as your Custom theme. Reset reverts the editor to the saved palette.",
+ "Live streams that actually work.": "Live streams that actually work.",
+ "Live TV": "Live TV",
+ "Live Wire": "Live Wire",
+ "Live-injected into the document. Use it to retheme buttons, change spacing, recolor anything.": "Live-injected into the document. Use it to retheme buttons, change spacing, recolor anything.",
+ "Load a .srt or .ass from your computer": "Load a .srt or .ass from your computer",
+ "Load effect": "Load effect",
+ "Load file": "Load file",
+ "Load more": "Load more",
+ "Load more comments": "Load more comments",
+ "Load more threads": "Load more threads",
+ "Load the highest-resolution artwork for the featured hero. Uses more bandwidth.": "Load the highest-resolution artwork for the featured hero. Uses more bandwidth.",
+ "Loaded {name}": "Loaded {name}",
+ "Loading": "Loading",
+ "Loading video": "Loading video",
+ "Loading {label}": "Loading {label}",
+ "Loading environment details…": "Loading environment details…",
+ "Loading episode details...": "Loading episode details...",
+ "Loading favorites from other providers…": "Loading favorites from other providers…",
+ "Loading favorites…": "Loading favorites…",
+ "Loading friends' reviews…": "Loading friends' reviews…",
+ "Loading Letterboxd…": "Loading Letterboxd…",
+ "Loading more": "Loading more",
+ "Loading more channels ({n1} of {n2})": "Loading more channels ({n1} of {n2})",
+ "Loading more channels ({shown} of {total})": "Loading more channels ({shown} of {total})",
+ "loading more…": "loading more…",
+ "Loading on {names}…": "Loading on {names}…",
+ "Loading playlist...": "Loading playlist...",
+ "Loading program listings… channels are ready to play in the meantime.": "Loading program listings… channels are ready to play in the meantime.",
+ "Loading subtitle addons…": "Loading subtitle addons…",
+ "Loading the catalog": "Loading the catalog",
+ "Loading trailer": "Loading trailer",
+ "Loading your AniList…": "Loading your AniList…",
+ "Loading...": "Loading...",
+ "Loading…": "Loading…",
+ "Loads a backup file and replaces your current setup with it. Perfect for a new computer. Your Stremio sign-in on this device stays as is.": "Loads a backup file and replaces your current setup with it. Perfect for a new computer. Your Stremio sign-in on this device stays as is.",
+ "Loads full-resolution artwork instead of the lighter, softer version.": "Loads full-resolution artwork instead of the lighter, softer version.",
+ "Loads full-resolution episode artwork (original) instead of lighter w300 images. Turn off for slow connections or low-end devices.": "Loads full-resolution episode artwork (original) instead of lighter w300 images. Turn off for slow connections or low-end devices.",
+ "Loads more of the video ahead of time before playing. Smoother on weak connections, uses a little more memory and takes a moment longer to start.": "Loads more of the video ahead of time before playing. Smoother on weak connections, uses a little more memory and takes a moment longer to start.",
+ "local": "local",
+ "Local": "Local",
+ "Local engine": "Local engine",
+ "Local engine address": "Local engine address",
+ "Local library": "Local library",
+ "Local only": "Local only",
+ "Local subtitle": "Local subtitle",
+ "Lock sidebar tabs": "Lock sidebar tabs",
+ "Lock to season server": "Lock to season server",
+ "Locks only activate once a PIN is set.": "Locks only activate once a PIN is set.",
+ "Login to Stremio": "Login to Stremio",
+ "Logo size": "Logo size",
+ "Logos": "Logos",
+ "Lone Stars": "Lone Stars",
+ "Long Balls": "Long Balls",
+ "Long Balls %": "Long Balls %",
+ "Long string with a colon in it. Copy it. Paste it into the": "Long string with a colon in it. Copy it. Paste it into the",
+ "Long-running comforts and new chapters worth pressing play on.": "Long-running comforts and new chapters worth pressing play on.",
+ "Looking for sources…": "Looking for sources…",
+ "Looking for subtitles…": "Looking for subtitles…",
+ "Looking…": "Looking…",
+ "Looks good": "Looks good",
+ "Looks like a re-configure of ": "Looks like a re-configure of ",
+ "Looks like a re-configure of {name}. We'll replace the existing entry so you don't end up with two copies.": "Looks like a re-configure of {name}. We'll replace the existing entry so you don't end up with two copies.",
+ "Lost worlds rediscovered": "Lost worlds rediscovered",
+ "Low": "Low",
+ "Low-level knobs for the peer-to-peer engine, plus quick ways to grab debug info when a stream misbehaves.": "Low-level knobs for the peer-to-peer engine, plus quick ways to grab debug info when a stream misbehaves.",
+ "Lower subtitles": "Lower subtitles",
+ "Lower volume (hold Shift for big steps).": "Lower volume (hold Shift for big steps).",
+ "Loyalties shatter as the survivors realize the enemy has been among them all along.": "Loyalties shatter as the survivors realize the enemy has been among them all along.",
+ "Lunch-break comedies and slow-cooker dramas, ready when you are.": "Lunch-break comedies and slow-cooker dramas, ready when you are.",
+ "M3U playlist": "M3U playlist",
+ "M3U URL": "M3U URL",
+ "Mad Visions": "Mad Visions",
+ "Made Men": "Made Men",
+ "Made with": "Made with",
+ "Main Char": "Main Char",
+ "Make everything bigger and easier to read: sidebar, menus, popups, every page. The whole interface scales live as you drag, so you can see the change right here. Great on 4K and ultrawide monitors, or whenever the text feels small.": "Make everything bigger and easier to read: sidebar, menus, popups, every page. The whole interface scales live as you drag, so you can see the change right here. Great on 4K and ultrawide monitors, or whenever the text feels small.",
+ "Make the featured banner on Home bigger and sharper.": "Make the featured banner on Home bigger and sharper.",
+ "Make your own in the Theme Studio, or import one a friend shared.": "Make your own in the Theme Studio, or import one a friend shared.",
+ "MAL": "MAL",
+ "MAL rows": "MAL rows",
+ "Manage": "Manage",
+ "Manage addon": "Manage addon",
+ "Manage recording": "Manage recording",
+ "Manic Heart": "Manic Heart",
+ "Manifest URL": "Manifest URL",
+ "Manifest URL copied": "Manifest URL copied",
+ "Manual deploy with wrangler": "Manual deploy with wrangler",
+ "Manual mode: clicking Play opens the source picker here.": "Manual mode: clicking Play opens the source picker here.",
+ "Manual picker": "Manual picker",
+ "Maps HDR down to SDR with bt.2446a. Works on any display. Pick this if HDR looks washed-out or grey.": "Maps HDR down to SDR with bt.2446a. Works on any display. Pick this if HDR looks washed-out or grey.",
+ "Maps HDR sources to SDR using bt.2446a. Recommended on SDR displays.": "Maps HDR sources to SDR using bt.2446a. Recommended on SDR displays.",
+ "Mark season as unwatched": "Mark season as unwatched",
+ "Mark season as watched": "Mark season as watched",
+ "Mark watched": "Mark watched",
+ "Mark watched button": "Mark watched button",
+ "Mark watched on Trakt": "Mark watched on Trakt",
+ "Marked watched": "Marked watched",
+ "Marks movies and shows across Home, the catalogs, and detail pages when a matching file already exists in your local library.": "Marks movies and shows across Home, the catalogs, and detail pages when a matching file already exists in your local library.",
+ "Martial Grace": "Martial Grace",
+ "Master Class": "Master Class",
+ "Match EPG": "Match EPG",
+ "Match EPG channel": "Match EPG channel",
+ "Match the picture quality to your computer, smooth out weak connections, and fine-tune the mpv engine with plain-language controls.": "Match the picture quality to your computer, smooth out weak connections, and fine-tune the mpv engine with plain-language controls.",
+ "Match with TMDB": "Match with TMDB",
+ "Matched": "Matched",
+ "Max badges per card": "Max badges per card",
+ "Maximalist Musicals": "Maximalist Musicals",
+ "Maximum quality": "Maximum quality",
+ "MDBList": "MDBList",
+ "MDBList · Letterboxd and Trakt scores": "MDBList · Letterboxd and Trakt scores",
+ "mdblist api key": "mdblist api key",
+ "MDBList's aggregate score across all sources.": "MDBList's aggregate score across all sources.",
+ "Mecha": "Mecha",
+ "Media": "Media",
+ "Media type": "Media type",
+ "Media types": "Media types",
+ "Men of History": "Men of History",
+ "Merged": "Merged",
+ "Message": "Message",
+ "Metacritic": "Metacritic",
+ "Metadata language": "Metadata language",
+ "Metadata providers": "Metadata providers",
+ "Metascore": "Metascore",
+ "Metascore (0-100), colored green / yellow / red.": "Metascore (0-100), colored green / yellow / red.",
+ "Mexico": "Mexico",
+ "Midday Lineup": "Midday Lineup",
+ "Middle-earth Maker": "Middle-earth Maker",
+ "min": "min",
+ "Mind Benders": "Mind Benders",
+ "Mind-benders": "Mind-benders",
+ "Mirror plays + ratings to Trakt.tv. Uses Trakt's device flow: enter a short code in your browser.": "Mirror plays + ratings to Trakt.tv. Uses Trakt's device flow: enter a short code in your browser.",
+ "Missing TMDB Key": "Missing TMDB Key",
+ "Mix surround sound down to stereo": "Mix surround sound down to stereo",
+ "Mob & Cops": "Mob & Cops",
+ "Mob Cinema": "Mob Cinema",
+ "Mode": "Mode",
+ "Model": "Model",
+ "Modern (Spline)": "Modern (Spline)",
+ "Modern Classics": "Modern Classics",
+ "Modern Explorer": "Modern Explorer",
+ "Modern Frights": "Modern Frights",
+ "Modern Horror": "Modern Horror",
+ "Modern Mysteries": "Modern Mysteries",
+ "Modern Romance": "Modern Romance",
+ "Modern Saddles": "Modern Saddles",
+ "Modern Sci-Fi": "Modern Sci-Fi",
+ "Modern Warfare": "Modern Warfare",
+ "Mon": "Mon",
+ "More": "More",
+ "More {category}": "More {category}",
+ "More actions": "More actions",
+ "More avatars coming soon": "More avatars coming soon",
+ "more events": "more events",
+ "More for {name}": "More for {name}",
+ "More from a Favorite Director": "More from a Favorite Director",
+ "More info": "More info",
+ "More like this": "More like this",
+ "More Like This": "More Like This",
+ "More Movies": "More Movies",
+ "More of what you love.": "More of what you love.",
+ "More Series": "More Series",
+ "More soon": "More soon",
+ "More stories like these": "More stories like these",
+ "More subtitle options": "More subtitle options",
+ "More to explore": "More to explore",
+ "Morning Lineup": "Morning Lineup",
+ "Most common cause: this account is at its max simultaneous connections. Close other devices and players using these credentials.": "Most common cause: this account is at its max simultaneous connections. Close other devices and players using these credentials.",
+ "Most computers · the default": "Most computers · the default",
+ "Most Popular on MAL": "Most Popular on MAL",
+ "Most popular performers right now": "Most popular performers right now",
+ "Most starred in 24 hours": "Most starred in 24 hours",
+ "Most-anticipated upcoming releases on Trakt": "Most-anticipated upcoming releases on Trakt",
+ "Motion smoothing": "Motion smoothing",
+ "Move down": "Move down",
+ "Move to next slot": "Move to next slot",
+ "Move to previous slot": "Move to previous slot",
+ "Move to top": "Move to top",
+ "Move up": "Move up",
+ "Move your watchlist": "Move your watchlist",
+ "Movie": "Movie",
+ "Movie Magic": "Movie Magic",
+ "Movie's too new": "Movie's too new",
+ "Movie's too new. Subtitles haven't been published yet.": "Movie's too new. Subtitles haven't been published yet.",
+ "movies": "movies",
+ "Movies": "Movies",
+ "Movies · {n}": "Movies · {n}",
+ "Movies & Specials": "Movies & Specials",
+ "Movies & TV": "Movies & TV",
+ "Movies and shows with a future release date stop appearing in the built-in home catalog rows, so Home only shows what you can watch right now.": "Movies and shows with a future release date stop appearing in the built-in home catalog rows, so Home only shows what you can watch right now.",
+ "Movies on {name}": "Movies on {name}",
+ "Movies you've finished and shows in progress leave the catalog rows. Continue Watching is never touched.": "Movies you've finished and shows in progress leave the catalog rows. Continue Watching is never touched.",
+ "Movies you've watched and shows you've made progress on stop appearing in the built-in catalog rows, using your local watch history (and Trakt if connected). Continue Watching is never touched.": "Movies you've watched and shows you've made progress on stop appearing in the built-in catalog rows, using your local watch history (and Trakt if connected). Continue Watching is never touched.",
+ "Movies you've watched and shows you've made progress on stop appearing in the built-in Discover rows, using your Trakt history. Needs Trakt connected. Continue Watching is never touched.": "Movies you've watched and shows you've made progress on stop appearing in the built-in Discover rows, using your Trakt history. Needs Trakt connected. Continue Watching is never touched.",
+ "mpv": "mpv",
+ "MPV (native, recommended)": "MPV (native, recommended)",
+ "mpv is required for recording. Install mpv and restart Harbor.": "mpv is required for recording. Install mpv and restart Harbor.",
+ "mpv on the desktop app, HTML5 in the browser. The right engine without thinking about it.": "mpv on the desktop app, HTML5 in the browser. The right engine without thinking about it.",
+ "Much better": "Much better",
+ "Much worse": "Much worse",
+ "Multi-view": "Multi-view",
+ "Multiview": "Multiview",
+ "Music": "Music",
+ "Music Documentaries": "Music Documentaries",
+ "Music Films": "Music Films",
+ "Music Roles": "Music Roles",
+ "Must Protect": "Must Protect",
+ "Mute": "Mute",
+ "Mute · M": "Mute · M",
+ "Mute or unmute audio.": "Mute or unmute audio.",
+ "Mute trailer": "Mute trailer",
+ "Muted": "Muted",
+ "My": "My",
+ "My library": "My library",
+ "My Library": "My Library",
+ "My Library shows upcoming episodes from the shows you've saved on Stremio. Sign in to wire it up.": "My Library shows upcoming episodes from the shows you've saved on Stremio. Sign in to wire it up.",
+ "My list": "My list",
+ "My playlist": "My playlist",
+ "My provider": "My provider",
+ "My Simkl": "My Simkl",
+ "My Trakt": "My Trakt",
+ "My Trakt watchlist": "My Trakt watchlist",
+ "My Trakt watchlist updates": "My Trakt watchlist updates",
+ "My Watchlist": "My Watchlist",
+ "MyAnimeList": "MyAnimeList",
+ "MyAnimeList scores for anime titles.": "MyAnimeList scores for anime titles.",
+ "MyAnimeList scores for anime titles. RPDB doesn't cover anime, so this stays an opt-in.": "MyAnimeList scores for anime titles. RPDB doesn't cover anime, so this stays an opt-in.",
+ "MyAnimeList scores for anime titles. RPDB doesn't cover anime, so this stays optional.": "MyAnimeList scores for anime titles. RPDB doesn't cover anime, so this stays optional.",
+ "Mystery": "Mystery",
+ "Name": "Name",
+ "Name (optional)": "Name (optional)",
+ "name it Harbor, hit": "name it Harbor, hit",
+ "Name your first template": "Name your first template",
+ "Name your look": "Name your look",
+ "Names behind the biggest productions": "Names behind the biggest productions",
+ "Native libmpv": "Native libmpv",
+ "Native webview playback. Smooth and integrated, but limited codec coverage.": "Native webview playback. Smooth and integrated, but limited codec coverage.",
+ "Native/Japanese": "Native/Japanese",
+ "Nature Films": "Nature Films",
+ "nav.addons": "Addons",
+ "nav.anime": "Anime",
+ "nav.calendar": "Calendar",
+ "nav.catalogs": "Catalogs",
+ "nav.collections": "Collections",
+ "nav.discover": "Discover",
+ "nav.downloads": "Downloads",
+ "nav.home": "Home",
+ "nav.kids": "Watch",
+ "nav.library": "My Library",
+ "nav.live": "Live TV",
+ "nav.movies": "Movies",
+ "nav.playlists": "Playlists",
+ "nav.settings": "Settings",
+ "nav.shows": "Shows",
+ "Navigation": "Navigation",
+ "NAVIGATION": "NAVIGATION",
+ "Needs artwork-rich titles to feed the hero": "Needs artwork-rich titles to feed the hero",
+ "Needs at least 10 titles for the Top 10 look": "Needs at least 10 titles for the Top 10 look",
+ "Neo-Noir": "Neo-Noir",
+ "Nerve": "Nerve",
+ "Netflix Originals": "Netflix Originals",
+ "Network": "Network",
+ "Networks": "Networks",
+ "Never auto-select tracks containing": "Never auto-select tracks containing",
+ "Nevermind": "Nevermind",
+ "New": "New",
+ "New Anime Releases": "New Anime Releases",
+ "New episode released since you last watched": "New episode released since you last watched",
+ "New Face": "New Face",
+ "New filter": "New filter",
+ "New hover style": "New hover style",
+ "New layout": "New layout",
+ "New look name": "New look name",
+ "New profile": "New profile",
+ "New rule": "New rule",
+ "New shows and anime premiering this month, from Simkl": "New shows and anime premiering this month, from Simkl",
+ "New template name": "New template name",
+ "New thread": "New thread",
+ "New Webhook": "New Webhook",
+ "New Year, New Stories": "New Year, New Stories",
+ "Newest": "Newest",
+ "Next": "Next",
+ "Next {time}": "Next {time}",
+ "Next episode": "Next episode",
+ "Next Episode": "Next Episode",
+ "Next episode prompt": "Next episode prompt",
+ "Next featured": "Next featured",
+ "Next frame": "Next frame",
+ "Next image": "Next image",
+ "Next month": "Next month",
+ "Next review": "Next review",
+ "next to it:": "next to it:",
+ "next week": "next week",
+ "Next-up episodes tab": "Next-up episodes tab",
+ "Next:": "Next:",
+ "Night mode": "Night mode",
+ "Night mode gently compresses loud moments for late-night watching. Profiles take effect when the next track loads and stack with the normalizer.": "Night mode gently compresses loud moments for late-night watching. Profiles take effect when the next track loads and stack with the normalizer.",
+ "Night Owl": "Night Owl",
+ "Nightmare Maker": "Nightmare Maker",
+ "No": "No",
+ "No .nfo files detected. TMDB matching is recommended.": "No .nfo files detected. TMDB matching is recommended.",
+ "No .nfo files here": "No .nfo files here",
+ "No {kind} releases this month. Try a different filter.": "No {kind} releases this month. Try a different filter.",
+ "No addons are synced to this account yet.": "No addons are synced to this account yet.",
+ "No addons installed yet": "No addons installed yet",
+ "No art": "No art",
+ "No audio: this stream's audio format (likely Dolby or DTS) is not supported by the HTML5 engine.": "No audio: this stream's audio format (likely Dolby or DTS) is not supported by the HTML5 engine.",
+ "No automations yet. Hit New rule to wire one up.": "No automations yet. Hit New rule to wire one up.",
+ "No background image": "No background image",
+ "No backups yet. Press the button above to save your first one.": "No backups yet. Press the button above to save your first one.",
+ "No categories match": "No categories match",
+ "no channel": "no channel",
+ "No channels match": "No channels match",
+ "No channels match. Try a different category or clear the search.": "No channels match. Try a different category or clear the search.",
+ "No Chromecast, DLNA, or Roku devices found. Make sure your TV is on, woken up, and on the same Wi-Fi.": "No Chromecast, DLNA, or Roku devices found. Make sure your TV is on, woken up, and on the same Wi-Fi.",
+ "No Cloudflare accounts found for this token.": "No Cloudflare accounts found for this token.",
+ "No comments yet": "No comments yet",
+ "No corrupted anime found. You're clean.": "No corrupted anime found. You're clean.",
+ "No credits available": "No credits available",
+ "No data shipped for this award yet.": "No data shipped for this award yet.",
+ "No data shipped for this award yet. Re-run": "No data shipped for this award yet. Re-run",
+ "No date": "No date",
+ "No debrid configured": "No debrid configured",
+ "No description available.": "No description available.",
+ "No dot, just the bar.": "No dot, just the bar.",
+ "No downloads yet": "No downloads yet",
+ "No EPG channels match. This playlist's EPG source may be empty.": "No EPG channels match. This playlist's EPG source may be empty.",
+ "No episodes available for this season.": "No episodes available for this season.",
+ "No episodes found for this season.": "No episodes found for this season.",
+ "No episodes match your search": "No episodes match your search",
+ "No events available yet.": "No events available yet.",
+ "No favorites yet. Star a channel to pin it here.": "No favorites yet. Star a channel to pin it here.",
+ "No filmography on record.": "No filmography on record.",
+ "No films found in this collection.": "No films found in this collection.",
+ "No filter. All bitrates considered equally.": "No filter. All bitrates considered equally.",
+ "No filter. Home shows every language.": "No filter. Home shows every language.",
+ "No filtering": "No filtering",
+ "No filtering. Every stream every addon returns shows up, including obvious junk. You'll be on your own.": "No filtering. Every stream every addon returns shows up, including obvious junk. You'll be on your own.",
+ "No frames stored yet. They'll appear here as you watch things.": "No frames stored yet. They'll appear here as you watch things.",
+ "No Frills": "No Frills",
+ "No history yet": "No history yet",
+ "No history yet.": "No history yet.",
+ "No installed addon matches that.": "No installed addon matches that.",
+ "No Integrations option? You need the Manage Webhooks permission. Ask whoever owns the server.": "No Integrations option? You need the Manage Webhooks permission. Ask whoever owns the server.",
+ "No limit": "No limit",
+ "No lists saved yet.": "No lists saved yet.",
+ "No lists yet": "No lists yet",
+ "No live or upcoming games right now.": "No live or upcoming games right now.",
+ "No local episodes in this season.": "No local episodes in this season.",
+ "No locks. All sidebar tabs open without a PIN.": "No locks. All sidebar tabs open without a PIN.",
+ "No matches": "No matches",
+ "No matches for \\": "No matches for \\",
+ "No matches for these filters.": "No matches for these filters.",
+ "No matches.": "No matches.",
+ "No matches. Try a different search.": "No matches. Try a different search.",
+ "No more found for this category.": "No more found for this category.",
+ "No movies here.": "No movies here.",
+ "No movies match \"{query}\".": "No movies match \"{query}\".",
+ "No notes were published for this build.": "No notes were published for this build.",
+ "No picks loaded. TMDB might be unreachable.": "No picks loaded. TMDB might be unreachable.",
+ "No PIN set.": "No PIN set.",
+ "No playable streams turned up, and no debrid is configured. Real-Debrid, TorBox, AllDebrid, Premiumize, or Debrid-Link will unlock raw torrent results. Some addons bake debrid in (Sootio, Comet/ElfHosted, MediaFusion/ElfHosted) and play without your own keys.": "No playable streams turned up, and no debrid is configured. Real-Debrid, TorBox, AllDebrid, Premiumize, or Debrid-Link will unlock raw torrent results. Some addons bake debrid in (Sootio, Comet/ElfHosted, MediaFusion/ElfHosted) and play without your own keys.",
+ "No playlist": "No playlist",
+ "No program info": "No program info",
+ "No program info available": "No program info available",
+ "No reviews from your friends for this film.": "No reviews from your friends for this film.",
+ "No reviews yet.": "No reviews yet.",
+ "No saved filters yet. Hit New filter to build one.": "No saved filters yet. Hit New filter to build one.",
+ "No services reported.": "No services reported.",
+ "No shows here.": "No shows here.",
+ "No shows match \"{query}\".": "No shows match \"{query}\".",
+ "No Simkl history yet.": "No Simkl history yet.",
+ "No Simkl premieres this month": "No Simkl premieres this month",
+ "No source returned a stream": "No source returned a stream",
+ "No sources": "No sources",
+ "No sources cached": "No sources cached",
+ "No sources found for this episode.": "No sources found for this episode.",
+ "No sources loaded for this title yet.": "No sources loaded for this title yet.",
+ "No streaming sources yet": "No streaming sources yet",
+ "No styling": "No styling",
+ "No subscription needed. Quality varies.": "No subscription needed. Quality varies.",
+ "No subtitle cues available": "No subtitle cues available",
+ "No subtitles found yet. Try the search at the bottom.": "No subtitles found yet. Try the search at the bottom.",
+ "No subtitles found.": "No subtitles found.",
+ "no tab locks": "no tab locks",
+ "No tabs selected": "No tabs selected",
+ "No telemetry, no servers, no bundled keys.": "No telemetry, no servers, no bundled keys.",
+ "No threads for this title yet.": "No threads for this title yet.",
+ "No titles found for {genre}": "No titles found for {genre}",
+ "No tracks match these filters. Try toggling HI/SDH or Forced.": "No tracks match these filters. Try toggling HI/SDH or Forced.",
+ "No unsaved changes": "No unsaved changes",
+ "No velocity data yet": "No velocity data yet",
+ "No video files found in that folder.": "No video files found in that folder.",
+ "No videos right now. Ask a grown-up!": "No videos right now. Ask a grown-up!",
+ "No Way Out": "No Way Out",
+ "No winners are catalogued for this award yet.": "No winners are catalogued for this award yet.",
+ "No winners match these filters.": "No winners match these filters.",
+ "nodes": "nodes",
+ "Noir cards": "Noir cards",
+ "nomination": "nomination",
+ "nominations": "nominations",
+ "Nominee": "Nominee",
+ "None": "None",
+ "None of Trakt's most-anticipated upcoming releases land in this month. Try a different month.": "None of Trakt's most-anticipated upcoming releases land in this month. Try a different month.",
+ "None yet": "None yet",
+ "Nord sidebar": "Nord sidebar",
+ "Normal": "Normal",
+ "Normalize loudness": "Normalize loudness",
+ "Norwegian": "Norwegian",
+ "not downloaded": "not downloaded",
+ "Not interested": "Not interested",
+ "Not officially released yet. Click to search anyway in case of an early release.": "Not officially released yet. Click to search anyway in case of an early release.",
+ "Not out yet": "Not out yet",
+ "Not rated": "Not rated",
+ "Not running": "Not running",
+ "Not signed in": "Not signed in",
+ "Note the URL Cloudflare returns. It looks like": "Note the URL Cloudflare returns. It looks like",
+ "Note the URL Cloudflare returns. It looks like {code}.": "Note the URL Cloudflare returns. It looks like {code}.",
+ "Nothing anticipated this month": "Nothing anticipated this month",
+ "Nothing changes until you press Save. Leaving this page discards edits.": "Nothing changes until you press Save. Leaving this page discards edits.",
+ "Nothing from your library lands this month. Toggle Watchlist off to see all releases.": "Nothing from your library lands this month. Toggle Watchlist off to see all releases.",
+ "Nothing from your library this month": "Nothing from your library this month",
+ "Nothing here yet": "Nothing here yet",
+ "Nothing here yet!": "Nothing here yet!",
+ "Nothing in progress yet. Press Play on something.": "Nothing in progress yet. Press Play on something.",
+ "Nothing matched this filter. Try another category or change your region in Settings.": "Nothing matched this filter. Try another category or change your region in Settings.",
+ "Nothing matched. Try the franchise's first film name.": "Nothing matched. Try the franchise's first film name.",
+ "Nothing on Simkl this month": "Nothing on Simkl this month",
+ "Nothing on Trakt this month": "Nothing on Trakt this month",
+ "Nothing on your Simkl plan-to-watch yet.": "Nothing on your Simkl plan-to-watch yet.",
+ "Nothing saved on Trakt yet.": "Nothing saved on Trakt yet.",
+ "Nothing this month": "Nothing this month",
+ "Nothing to send. All {n} watchlist items are anime, which Trakt can't track.": "Nothing to send. All {n} watchlist items are anime, which Trakt can't track.",
+ "Nothing watched yet": "Nothing watched yet",
+ "Notifications": "Notifications",
+ "Now": "Now",
+ "Now playing": "Now playing",
+ "Now Playing": "Now Playing",
+ "Now playing: {label}": "Now playing: {label}",
+ "Now using": "Now using",
+ "Now watching": "Now watching",
+ "Now-playing and a seven-day guide when your provider supplies it.": "Now-playing and a seven-day guide when your provider supplies it.",
+ "NSFW. Hidden until enabled.": "NSFW. Hidden until enabled.",
+ "Nudge the image to taste. Start with a one-tap look below, then fine-tune with the dials. Everything resets cleanly, so you can't break anything.": "Nudge the image to taste. Start with a one-tap look below, then fine-tune with the dials. Everything resets cleanly, so you can't break anything.",
+ "Number 1 gets asked first for streams when you press Play.": "Number 1 gets asked first for streams when you press Play.",
+ "Nvidia only": "Nvidia only",
+ "Off": "Off",
+ "Off · catalogs and streams hidden": "Off · catalogs and streams hidden",
+ "Off (use CPU)": "Off (use CPU)",
+ "Offensive Rebounds": "Offensive Rebounds",
+ "Official": "Official",
+ "Offsides": "Offsides",
+ "OK": "OK",
+ "Old-school Heat": "Old-school Heat",
+ "Older laptops · low-end · battery · anything that stutters": "Older laptops · low-end · battery · anything that stutters",
+ "Oldest": "Oldest",
+ "OMDb · Rotten Tomatoes scores": "OMDb · Rotten Tomatoes scores",
+ "OMDB daily budget": "OMDB daily budget",
+ "On": "On",
+ "On an HDR display, stretches normal (non-HDR) movies to use the extra brightness range. Leave off on a regular screen; it can look washed out.": "On an HDR display, stretches normal (non-HDR) movies to use the extra brightness range. Leave off on a regular screen; it can look washed out.",
+ "On by default. Pipes every cast through ffmpeg as H.264 + AAC + MPEG-TS so Samsung, LG, Sony, and other DLNA TVs accept the stream regardless of source codec. Turn off only if you have a beefy receiver that handles raw HEVC/DTS and want max quality. Requires ffmpeg in PATH.": "On by default. Pipes every cast through ffmpeg as H.264 + AAC + MPEG-TS so Samsung, LG, Sony, and other DLNA TVs accept the stream regardless of source codec. Turn off only if you have a beefy receiver that handles raw HEVC/DTS and want max quality. Requires ffmpeg in PATH.",
+ "On Cloudflare, click {b1}, then find {b2} and click {b3}.": "On Cloudflare, click {b1}, then find {b2} and click {b3}.",
+ "on disk": "on disk",
+ "On Edge": "On Edge",
+ "ON GOAL": "ON GOAL",
+ "On Hold": "On Hold",
+ "On now": "On now",
+ "On shows titles in your metadata language (English by default). Off keeps each title's original language, so anime and foreign films show their native names.": "On shows titles in your metadata language (English by default). Off keeps each title's original language, so anime and foreign films show their native names.",
+ "On Stremio-Addons": "On Stremio-Addons",
+ "On Target %": "On Target %",
+ "on the {themeName} theme.": "on the {themeName} theme.",
+ "On The Air": "On The Air",
+ "On the card": "On the card",
+ "on the left, then": "on the left, then",
+ "On the web, Harbor can only reach addons that allow browser access (Torrentio, TorBox, Cinemeta). For unreleased titles, no source typically exists yet.": "On the web, Harbor can only reach addons that allow browser access (Torrentio, TorBox, Cinemeta). For unreleased titles, no source typically exists yet.",
+ "On this computer": "On this computer",
+ "On this device": "On this device",
+ "On this device only": "On this device only",
+ "On this page": "On this page",
+ "On Tonight": "On Tonight",
+ "On: addon rails that duplicate the built-ins show too, instead of folding into one.": "On: addon rails that duplicate the built-ins show too, instead of folding into one.",
+ "On: only titles you bookmarked. Off: also keeps the ones Stremio added when you hit play.": "On: only titles you bookmarked. Off: also keeps the ones Stremio added when you hit play.",
+ "Onboarding": "Onboarding",
+ "Once you're in a room you can copy a link that joins anyone instantly: it sets the relay URL and the room code in one click.": "Once you're in a room you can copy a link that joins anyone instantly: it sets the relay URL and the room code in one click.",
+ "One choice that sets how hard your computer works to make video look its best. Pick the one that matches your machine. Takes effect on the next thing you play.": "One choice that sets how hard your computer works to make video look its best. Pick the one that matches your machine. Takes effect on the next thing you play.",
+ "One last thing on Cloudflare's side": "One last thing on Cloudflare's side",
+ "One list": "One list",
+ "One more episode": "One more episode",
+ "Only 1 source after filtering": "Only 1 source after filtering",
+ "Only 2 sources after filtering": "Only 2 sources after filtering",
+ "Only enter URLs for relays you operate or trust. A relay only carries Watch Together sync messages (play, pause, seek). Nothing else passes through it.": "Only enter URLs for relays you operate or trust. A relay only carries Watch Together sync messages (play, pause, seek). Nothing else passes through it.",
+ "Only my favorited channels": "Only my favorited channels",
+ "Only show streams in my languages": "Only show streams in my languages",
+ "Only show titles in these original languages on the Home catalogs. Leave all off to show everything.": "Only show titles in these original languages on the Home catalogs. Leave all off to show everything.",
+ "Only the primary profile can edit other profiles.": "Only the primary profile can edit other profiles.",
+ "Opacity": "Opacity",
+ "Open": "Open",
+ "Open {name}": "Open {name}",
+ "Open a quick issue": "Open a quick issue",
+ "Open AniList again": "Open AniList again",
+ "Open any movie or show, hover an episode, and click the download icon. Pick the exact source you want and it saves here for offline watching.": "Open any movie or show, hover an episode, and click the download icon. Pick the exact source you want and it saves here for offline watching.",
+ "Open BotFather": "Open BotFather",
+ "Open Cloudflare token page": "Open Cloudflare token page",
+ "Open Cloudflare Workers": "Open Cloudflare Workers",
+ "Open details": "Open details",
+ "Open Discord's webhook help": "Open Discord's webhook help",
+ "Open folder": "Open folder",
+ "Open in Anime": "Open in Anime",
+ "Open in Movies": "Open in Movies",
+ "Open in TV Shows": "Open in TV Shows",
+ "Open invite link panel": "Open invite link panel",
+ "Open library": "Open library",
+ "Open Library settings": "Open Library settings",
+ "Open MyAnimeList again": "Open MyAnimeList again",
+ "Open on AniList": "Open on AniList",
+ "Open on IMDb": "Open on IMDb",
+ "Open on Letterboxd": "Open on Letterboxd",
+ "Open on Trakt": "Open on Trakt",
+ "Open or close the episode panel.": "Open or close the episode panel.",
+ "Open or close the in-player stream switcher.": "Open or close the in-player stream switcher.",
+ "Open or close the live TV guide (live channels only).": "Open or close the live TV guide (live channels only).",
+ "Open or close the live TV recorder (live channels only).": "Open or close the live TV recorder (live channels only).",
+ "Open preview": "Open preview",
+ "Open profile": "Open profile",
+ "Open Range": "Open Range",
+ "Open relay settings": "Open relay settings",
+ "Open repo on GitHub": "Open repo on GitHub",
+ "Open review source": "Open review source",
+ "Open settings": "Open settings",
+ "Open Settings": "Open Settings",
+ "Open Settings, then Harbor Relay.": "Open Settings, then Harbor Relay.",
+ "Open setup page": "Open setup page",
+ "Open Stremio registration": "Open Stremio registration",
+ "Open studio": "Open studio",
+ "Open SVP": "Open SVP",
+ "Open the bot BotFather just made (he sends you a link). Send it any message so it's allowed to message you back.": "Open the bot BotFather just made (he sends you a link). Send it any message so it's allowed to message you back.",
+ "Open the Day": "Open the Day",
+ "Open the Discord server where you want notifications to land.": "Open the Discord server where you want notifications to land.",
+ "Open Top 100 {dept}": "Open Top 100 {dept}",
+ "Open userinfobot": "Open userinfobot",
+ "Opening": "Opening",
+ "Opening AniList...": "Opening AniList...",
+ "Opening MyAnimeList...": "Opening MyAnimeList...",
+ "Opening stremio-addons.net in your browser to sign in and rate": "Opening stremio-addons.net in your browser to sign in and rate",
+ "OpenRouter API key (sk-or-...)": "OpenRouter API key (sk-or-...)",
+ "Opens Stremio in your browser. Works with email, Facebook, and Apple accounts.": "Opens Stremio in your browser. Works with email, Facebook, and Apple accounts.",
+ "Optional": "Optional",
+ "Optional keys that unlock TMDB rails, baked-in poster ratings, fanart, and TVDB episode data.": "Optional keys that unlock TMDB rails, baked-in poster ratings, fanart, and TVDB episode data.",
+ "Options": "Options",
+ "Options for the Library → Local tab: folders you scan from your own drive. When you export metadata, Harbor writes a Kodi-style .nfo and downloads artwork next to each file at the sizes below.": "Options for the Library → Local tab: folders you scan from your own drive. When you export metadata, Harbor writes a Kodi-style .nfo and downloads artwork next to each file at the sizes below.",
+ "or join": "or join",
+ "or paste an invite link": "or paste an invite link",
+ "Or paste the install link manually": "Or paste the install link manually",
+ "or use email": "or use email",
+ "or use one of our avatars": "or use one of our avatars",
+ "Order": "Order",
+ "Organize addons": "Organize addons",
+ "orig": "orig",
+ "Origin country": "Origin country",
+ "Original": "Original",
+ "Original language": "Original language",
+ "Original title": "Original title",
+ "Orthodox": "Orthodox",
+ "OTA channels + IPTV": "OTA channels + IPTV",
+ "Other": "Other",
+ "Other sources": "Other sources",
+ "Other Work": "Other Work",
+ "out of 5": "out of 5",
+ "Outlaws & Bounty Hunters": "Outlaws & Bounty Hunters",
+ "Outline": "Outline",
+ "Outline color": "Outline color",
+ "Outline thickness": "Outline thickness",
+ "Output device": "Output device",
+ "OVA": "OVA",
+ "Overall Record": "Overall Record",
+ "Overlay": "Overlay",
+ "Overlays your Letterboxd rating on catalog posters (when available).": "Overlays your Letterboxd rating on catalog posters (when available).",
+ "Override": "Override",
+ "Override {name}": "Override {name}",
+ "Override embedded styles": "Override embedded styles",
+ "Overview": "Overview",
+ "Overwrite {name} with this look": "Overwrite {name} with this look",
+ "P2P": "P2P",
+ "P2P sources, debrid-ready": "P2P sources, debrid-ready",
+ "Packaged": "Packaged",
+ "Paid": "Paid",
+ "Paid plan at ": "Paid plan at ",
+ "Painted Skies": "Painted Skies",
+ "Palme d'Or": "Palme d'Or",
+ "Panel": "Panel",
+ "Panels": "Panels",
+ "PANELS": "PANELS",
+ "Paranoia": "Paranoia",
+ "Paranormal Cases": "Paranormal Cases",
+ "Parent PIN": "Parent PIN",
+ "Parental controls are on. Enter your PIN to access settings.": "Parental controls are on. Enter your PIN to access settings.",
+ "Parody Master": "Parody Master",
+ "Pass": "Pass",
+ "Pass Completion %": "Pass Completion %",
+ "Passes": "Passes",
+ "Password": "Password",
+ "Past Midnight": "Past Midnight",
+ "Paste a public list from Trakt, MDBList, TMDB, Letterboxd, IMDb, or MyAnimeList. Harbor pulls the titles in and keeps the artwork sharp.": "Paste a public list from Trakt, MDBList, TMDB, Letterboxd, IMDb, or MyAnimeList. Harbor pulls the titles in and keeps the artwork sharp.",
+ "Paste a Trakt, MDBList, TMDB, Letterboxd, IMDb, or MAL list URL": "Paste a Trakt, MDBList, TMDB, Letterboxd, IMDb, or MAL list URL",
+ "Paste invite link": "Paste invite link",
+ "Paste it into Harbor.": "Paste it into Harbor.",
+ "Paste JSON": "Paste JSON",
+ "Paste manifest URL or stremio:// link": "Paste manifest URL or stremio:// link",
+ "Paste the code or page URL": "Paste the code or page URL",
+ "Paste the manifest URL the configure page gave you": "Paste the manifest URL the configure page gave you",
+ "Paste the text from AniList": "Paste the text from AniList",
+ "Paste the URL into the box above and send a test.": "Paste the URL into the box above and send a test.",
+ "Paste the URL with": "Paste the URL with",
+ "Paste your API token first.": "Paste your API token first.",
+ "Pause": "Pause",
+ "Pause · Space": "Pause · Space",
+ "Pause when minimized": "Pause when minimized",
+ "Pause when unfocused": "Pause when unfocused",
+ "Paused": "Paused",
+ "Paused on Simkl": "Paused on Simkl",
+ "PDF (print)": "PDF (print)",
+ "peer": "peer",
+ "peers": "peers",
+ "Peers, speed and progress chip on the player during torrent playback. Turn off to keep the player clean.": "Peers, speed and progress chip on the player during torrent playback. Turn off to keep the player clean.",
+ "Peers, speed and progress while a torrent streams. Sits clear of the exit button, top left.": "Peers, speed and progress while a torrent streams. Sits clear of the exit button, top left.",
+ "Penalty Goals": "Penalty Goals",
+ "Penalty Kicks Taken": "Penalty Kicks Taken",
+ "Pens currently in demand": "Pens currently in demand",
+ "People": "People",
+ "People (empty = all tracked)": "People (empty = all tracked)",
+ "Percent Led": "Percent Led",
+ "Period Greats": "Period Greats",
+ "permissions at": "permissions at",
+ "personal key": "personal key",
+ "Pick a 4-digit PIN. You'll be asked for it before this profile opens.": "Pick a 4-digit PIN. You'll be asked for it before this profile opens.",
+ "Pick a display and body pairing, or upload your own font to use across Harbor.": "Pick a display and body pairing, or upload your own font to use across Harbor.",
+ "Pick a home layout": "Pick a home layout",
+ "Pick a layout, set colors and fonts, save it to your library. No code needed.": "Pick a layout, set colors and fonts, save it to your library. No code needed.",
+ "Pick a layout, set colors and fonts. No code needed.": "Pick a layout, set colors and fonts. No code needed.",
+ "Pick a line when you hear it (1/2)": "Pick a line when you hear it (1/2)",
+ "Pick a list to view it.": "Pick a list to view it.",
+ "Pick a look. Every color and surface updates instantly.": "Pick a look. Every color and surface updates instantly.",
+ "Pick a PIN and which sidebar tabs require it.": "Pick a PIN and which sidebar tabs require it.",
+ "Pick a profile to continue.": "Pick a profile to continue.",
+ "Pick a random title": "Pick a random title",
+ "Pick a source once and Harbor keeps playing the rest of that season from the same release, no re-picking. Works best with a debrid season pack. Skipped for anime.": "Pick a source once and Harbor keeps playing the rest of that season from the same release, no re-picking. Works best with a debrid season pack. Skipped for anime.",
+ "Pick a theme, then rearrange every button in the player chrome. Hide what you never use, promote what you do.": "Pick a theme, then rearrange every button in the player chrome. Hide what you never use, promote what you do.",
+ "Pick a video": "Pick a video",
+ "Pick a World": "Pick a World",
+ "Pick an avatar": "Pick an avatar",
+ "Pick another": "Pick another",
+ "Pick another line near the end (2/2)": "Pick another line near the end (2/2)",
+ "Pick any name. Pick a username ending in": "Pick any name. Pick a username ending in",
+ "Pick channels into the grid below. Audio follows the highlighted tile.": "Pick channels into the grid below. Audio follows the highlighted tile.",
+ "Pick how you authenticate. Everything is stored locally.": "Pick how you authenticate. Everything is stored locally.",
+ "Pick it from the home view to follow.": "Pick it from the home view to follow.",
+ "Pick OLED for perfect-black panels to unlock shadow detail in tonemapped HDR.": "Pick OLED for perfect-black panels to unlock shadow detail in tonemapped HDR.",
+ "Pick playlist": "Pick playlist",
+ "Pick the cap your link can sustain. Run a real speed test if you need a number.": "Pick the cap your link can sustain. Run a real speed test if you need a number.",
+ "Pick the Cloudflare account to deploy under.": "Pick the Cloudflare account to deploy under.",
+ "Pick the playback engine and which quality chips show up on cards.": "Pick the playback engine and which quality chips show up on cards.",
+ "Pick up an episode": "Pick up an episode",
+ "Pick up partly-watched episodes and movies at your saved spot. Anything watched past 80% always restarts. Turn this off to always start from the beginning, handy if you rewatch shows.": "Pick up partly-watched episodes and movies at your saved spot. Anything watched past 80% always restarts. Turn this off to always start from the beginning, handy if you rewatch shows.",
+ "Pick up where you left off": "Pick up where you left off",
+ "Pick what you actually use": "Pick what you actually use",
+ "Pick what you want in your calendar. Mix and match: tracked people, genres, streamers, countries, Trakt lists.": "Pick what you want in your calendar. Mix and match: tracked people, genres, streamers, countries, Trakt lists.",
+ "Pick which audio and subtitle languages Harbor reaches for first.": "Pick which audio and subtitle languages Harbor reaches for first.",
+ "Pick which calendars feed your alerts. Items are deduped across sources before sending.": "Pick which calendars feed your alerts. Items are deduped across sources before sending.",
+ "Pick which calendars feed your webhook. Items are deduped across sources before sending.": "Pick which calendars feed your webhook. Items are deduped across sources before sending.",
+ "Pick which score anime cards show. IMDb falls back to MAL when a title has no IMDb rating yet.": "Pick which score anime cards show. IMDb falls back to MAL when a title has no IMDb rating yet.",
+ "Pick your source": "Pick your source",
+ "Pick your subtitle languages": "Pick your subtitle languages",
+ "Picker layout": "Picker layout",
+ "Picking…": "Picking…",
+ "Picks up right where you left off": "Picks up right where you left off",
+ "Picture": "Picture",
+ "Picture adjustments": "Picture adjustments",
+ "Picture in Picture": "Picture in Picture",
+ "Picture quality": "Picture quality",
+ "Picture-in-picture": "Picture-in-picture",
+ "Pilots that pull you in and finales that earn the season.": "Pilots that pull you in and finales that earn the season.",
+ "PIN": "PIN",
+ "PIN & sidebar locks": "PIN & sidebar locks",
+ "Pin category to top": "Pin category to top",
+ "PIN off": "PIN off",
+ "PIN on": "PIN on",
+ "PIN set": "PIN set",
+ "Pin to top": "Pin to top",
+ "Pings your Worker at /health to confirm it's reachable from this device.": "Pings your Worker at /health to confirm it's reachable from this device.",
+ "Pinned": "Pinned",
+ "PINs didn't match. Start over.": "PINs didn't match. Start over.",
+ "Pinstripe": "Pinstripe",
+ "PiP": "PiP",
+ "Pitches Thrown": "Pitches Thrown",
+ "Pixar Greats": "Pixar Greats",
+ "Plain text (.txt)": "Plain text (.txt)",
+ "Plan to Watch": "Plan to Watch",
+ "Play": "Play",
+ "Play · Space": "Play · Space",
+ "Play {name}": "Play {name}",
+ "Play / pause": "Play / pause",
+ "Play / Pause": "Play / Pause",
+ "Play a random episode": "Play a random episode",
+ "Play button behavior": "Play button behavior",
+ "Play Episode": "Play Episode",
+ "Play local": "Play local",
+ "Play mode": "Play mode",
+ "Play movie": "Play movie",
+ "Play now": "Play now",
+ "Play to where the ad starts and add it, then play to the end and tap Now. You can also type the times. Add more than one if there are several.": "Play to where the ad starts and add it, then play to the end and tap Now. You can also type the times. Add more than one if there are several.",
+ "Play Together": "Play Together",
+ "Play tonight": "Play tonight",
+ "Play without sync": "Play without sync",
+ "Play, then tap the line you hear at two spots (one early, one late) to fix drift.": "Play, then tap the line you hear at two spots (one early, one late) to fix drift.",
+ "Playback": "Playback",
+ "PLAYBACK": "PLAYBACK",
+ "Playback speed": "Playback speed",
+ "Playback speed {label}": "Playback speed {label}",
+ "Playback stats · press I to hide": "Playback stats · press I to hide",
+ "Player": "Player",
+ "Player & quality": "Player & quality",
+ "Player engine": "Player engine",
+ "Player freezes after the second episode autoplays": "Player freezes after the second episode autoplays",
+ "Player layout": "Player layout",
+ "Player log": "Player log",
+ "Player not ready": "Player not ready",
+ "Player shell": "Player shell",
+ "Player title": "Player title",
+ "Playing": "Playing",
+ "Playing now": "Playing now",
+ "Playlist": "Playlist",
+ "Playlist contained no channels": "Playlist contained no channels",
+ "Playlist is too large": "Playlist is too large",
+ "Playlist URL": "Playlist URL",
+ "Playlist URL not found": "Playlist URL not found",
+ "Playlists": "Playlists",
+ "Plays + ratings sync from Harbor to Trakt.tv.": "Plays + ratings sync from Harbor to Trakt.tv.",
+ "Plays a muted trailer in the backdrop when you open a title. Click the speaker to unmute. Falls back to the image when no trailer is available.": "Plays a muted trailer in the backdrop when you open a title. Click the speaker to unmute. Falls back to the image when no trailer is available.",
+ "Plays HDR content in its own window so Windows treats it as true HDR (the SDR brightness slider stops dimming it). Turn off HDR-to-SDR tonemapping above to use this on an HDR display.": "Plays HDR content in its own window so Windows treats it as true HDR (the SDR brightness slider stops dimming it). Turn off HDR-to-SDR tonemapping above to use this on an HDR display.",
+ "Plays HDR in its own window so Windows shows real HDR and the SDR brightness slider stops dimming it. The most reliable way to get true HDR.": "Plays HDR in its own window so Windows shows real HDR and the SDR brightness slider stops dimming it. The most reliable way to get true HDR.",
+ "Please add your TMDB API key in the Library & Metadata settings to view this folder.": "Please add your TMDB API key in the Library & Metadata settings to view this folder.",
+ "PM Picks": "PM Picks",
+ "PNG, GIF, WebP, or SVG. Animated GIFs play.": "PNG, GIF, WebP, or SVG. Animated GIFs play.",
+ "PNG, JPEG, WebP, or SVG (auto-shrunk if huge). Animated GIFs up to 2 MB play live.": "PNG, JPEG, WebP, or SVG (auto-shrunk if huge). Animated GIFs up to 2 MB play live.",
+ "PNG, JPG, WebP, GIF, MP4, WebM, MOV. Up to 6 files, 100 MB each.": "PNG, JPG, WebP, GIF, MP4, WebM, MOV. Up to 6 files, 100 MB each.",
+ "Point Harbor at a folder. We scan it for movies and shows, parse titles from filenames, and enrich them with TMDB so they look the same as everything else here. We just remember the path; nothing is copied or moved.": "Point Harbor at a folder. We scan it for movies and shows, parse titles from filenames, and enrich them with TMDB so they look the same as everything else here. We just remember the path; nothing is copied or moved.",
+ "Point Harbor at a streaming server on another machine, like the Stremio service on a home server. Torrents download and stream from that machine instead of this one.": "Point Harbor at a streaming server on another machine, like the Stremio service on a home server. Torrents download and stream from that machine instead of this one.",
+ "Points Conceded Off Turnovers": "Points Conceded Off Turnovers",
+ "Points in Paint": "Points in Paint",
+ "Polish": "Polish",
+ "Pop-up position": "Pop-up position",
+ "Popcornmeter": "Popcornmeter",
+ "Popular": "Popular",
+ "Popular · AIO": "Popular · AIO",
+ "Popular Anime": "Popular Anime",
+ "Popular Movies": "Popular Movies",
+ "Popular on": "Popular on",
+ "Popular Series": "Popular Series",
+ "Popular This Week": "Popular This Week",
+ "Port": "Port",
+ "Portuguese": "Portuguese",
+ "Position": "Position",
+ "Position and size only": "Position and size only",
+ "Possession": "Possession",
+ "Possession %": "Possession %",
+ "Poster card style": "Poster card style",
+ "Poster size": "Poster size",
+ "Poster translation is disabled because a custom poster service is active.": "Poster translation is disabled because a custom poster service is active.",
+ "Posters": "Posters",
+ "Posters, logos, and title art load in the first available language from this list, falling back down the order. \\": "Posters, logos, and title art load in the first available language from this list, falling back down the order. \\",
+ "Posters, ratings, lists": "Posters, ratings, lists",
+ "Power tools": "Power tools",
+ "Power tools & diagnostics": "Power tools & diagnostics",
+ "Power-user knob. Inject your own CSS, JS, and HTML into Harbor. Lives in your local settings; nothing leaves your machine.": "Power-user knob. Inject your own CSS, JS, and HTML into Harbor. Lives in your local settings; nothing leaves your machine.",
+ "Prefer embedded subtitles": "Prefer embedded subtitles",
+ "Prefer my installed metadata addon": "Prefer my installed metadata addon",
+ "Preferred language for anime titles displayed on poster cards.": "Preferred language for anime titles displayed on poster cards.",
+ "Preferred languages": "Preferred languages",
+ "Premiered This Month": "Premiered This Month",
+ "Premiumize API key": "Premiumize API key",
+ "Preparing": "Preparing",
+ "Preparing download": "Preparing download",
+ "Preparing stream": "Preparing stream",
+ "Preparing…": "Preparing…",
+ "Press a key…": "Press a key…",
+ "Press Enter or Space to type": "Press Enter or Space to type",
+ "Press Play": "Press Play",
+ "Press play on something. It'll show up here once you start watching.": "Press play on something. It'll show up here once you start watching.",
+ "Press T": "Press T",
+ "Prestige Drama": "Prestige Drama",
+ "Prestige drama, weekly chapters, and series worth disappearing into.": "Prestige drama, weekly chapters, and series worth disappearing into.",
+ "Preview": "Preview",
+ "PREVIEW": "PREVIEW",
+ "Preview state": "Preview state",
+ "Previous": "Previous",
+ "Previous channel": "Previous channel",
+ "Previous episode": "Previous episode",
+ "Previous Episode": "Previous Episode",
+ "Previous featured": "Previous featured",
+ "Previous frame": "Previous frame",
+ "Previous image": "Previous image",
+ "Previous month": "Previous month",
+ "Previous review": "Previous review",
+ "Prime Time": "Prime Time",
+ "Prime Video": "Prime Video",
+ "Privacy": "Privacy",
+ "Probably not cached. Pick another?": "Probably not cached. Pick another?",
+ "Probes the server's settings endpoint from this device.": "Probes the server's settings endpoint from this device.",
+ "Producer": "Producer",
+ "Producers": "Producers",
+ "Producing": "Producing",
+ "profile": "profile",
+ "Profile": "Profile",
+ "Profile details not available.": "Profile details not available.",
+ "Profile is locked. Enter the 4-digit PIN to continue.": "Profile is locked. Enter the 4-digit PIN to continue.",
+ "Profile not found.": "Profile not found.",
+ "Profile PIN": "Profile PIN",
+ "Profile security": "Profile security",
+ "profile.editThis": "Edit this profile",
+ "profile.fallback": "Profile",
+ "profile.new": "New profile",
+ "profile.primary": "Primary",
+ "profile.signedIn": "Signed in to Stremio",
+ "profile.signIn": "Sign in to Stremio",
+ "profile.signOut": "Sign out of Stremio",
+ "profile.switch": "Switch profile",
+ "profile.whoWatching": "Who's watching",
+ "Profiles": "Profiles",
+ "Project information": "Project information",
+ "Prompts guests to choose instead of auto-matching": "Prompts guests to choose instead of auto-matching",
+ "Proper search across providers, foreign-language coverage.": "Proper search across providers, foreign-language coverage.",
+ "Provide a JSON link or paste it directly.": "Provide a JSON link or paste it directly.",
+ "Provider blocked the request": "Provider blocked the request",
+ "Provider did not return valid data": "Provider did not return valid data",
+ "Provider is rate limiting": "Provider is rate limiting",
+ "Provider refused service": "Provider refused service",
+ "Provider returned a webpage, not a playlist": "Provider returned a webpage, not a playlist",
+ "Provocations": "Provocations",
+ "Psychological": "Psychological",
+ "Public": "Public",
+ "Public mode uses just your username: watchlist, liked films, popular and Top 250. No password needed.": "Public mode uses just your username: watchlist, liked films, popular and Top 250. No password needed.",
+ "Pull-you-under stories for the quietest part of the day.": "Pull-you-under stories for the quietest part of the day.",
+ "Pulled from manifest": "Pulled from manifest",
+ "Punchier color": "Punchier color",
+ "Pure Action": "Pure Action",
+ "Push upcoming releases to Discord or Telegram. Pick which calendars feed the notifications.": "Push upcoming releases to Discord or Telegram. Pick which calendars feed the notifications.",
+ "Pushing {pushed} of {total}…": "Pushing {pushed} of {total}…",
+ "Quality-of-life upgrades. Sync, ratings, trailers.": "Quality-of-life upgrades. Sync, ratings, trailers.",
+ "Queens & Icons": "Queens & Icons",
+ "Queue": "Queue",
+ "Quick age check": "Quick age check",
+ "Quick Watches Under 90": "Quick Watches Under 90",
+ "Quiet": "Quiet",
+ "Quiet dramas, sharp thrillers, and series you save for yourself.": "Quiet dramas, sharp thrillers, and series you save for yourself.",
+ "Quiet Force": "Quiet Force",
+ "Quiet Hours": "Quiet Hours",
+ "Quiet Menace": "Quiet Menace",
+ "Rainbow": "Rainbow",
+ "Raise subtitles": "Raise subtitles",
+ "Raise volume (hold Shift for big steps).": "Raise volume (hold Shift for big steps).",
+ "Ramadan series, drama, films, Egyptian classics, and Gulf - all in one place.": "Ramadan series, drama, films, Egyptian classics, and Gulf - all in one place.",
+ "Random avatar": "Random avatar",
+ "Rate": "Rate",
+ "Rate on SIMKL": "Rate on SIMKL",
+ "Rate on stremio-addons.net": "Rate on stremio-addons.net",
+ "Rate this build": "Rate this build",
+ "Rate this film": "Rate this film",
+ "Rating": "Rating",
+ "Rating /10": "Rating /10",
+ "Raw Nerve": "Raw Nerve",
+ "Re-authenticate": "Re-authenticate",
+ "Re-configure this addon and apply the updated link": "Re-configure this addon and apply the updated link",
+ "Re-run deploy or paste the correct URL": "Re-run deploy or paste the correct URL",
+ "Re-runs the welcome flow and clears every dismissed tip.": "Re-runs the welcome flow and clears every dismissed tip.",
+ "Reach": "Reach",
+ "Read": "Read",
+ "Read full": "Read full",
+ "Read titles, ids, and any poster/logo/backdrop already saved next to your files. Missing images are filled from TMDB.": "Read titles, ids, and any poster/logo/backdrop already saved next to your files. Missing images are filled from TMDB.",
+ "Reader review": "Reader review",
+ "Reading": "Reading",
+ "Reading manifest": "Reading manifest",
+ "Reading new manifest": "Reading new manifest",
+ "Ready": "Ready",
+ "Ready to save": "Ready to save",
+ "Ready to send": "Ready to send",
+ "Ready when you are": "Ready when you are",
+ "Real cases, real consequences": "Real cases, real consequences",
+ "Real journeys beyond Earth": "Real journeys beyond Earth",
+ "Real-Debrid API token": "Real-Debrid API token",
+ "Real-Debrid, TorBox, AllDebrid, Premiumize, Debrid-Link. Cached streams play direct. Keys stay local.": "Real-Debrid, TorBox, AllDebrid, Premiumize, Debrid-Link. Cached streams play direct. Keys stay local.",
+ "Real-time anime upscaling. GPU-intensive.": "Real-time anime upscaling. GPU-intensive.",
+ "Real-time GPU upscaling that sharpens lines and cleans up gradients on anime, built right into Harbor's player. The one-tap setup below grabs the shaders; nothing else to install.": "Real-time GPU upscaling that sharpens lines and cleans up gradients on anime, built right into Harbor's player. The one-tap setup below grabs the shaders; nothing else to install.",
+ "Rebounds": "Rebounds",
+ "Rec": "Rec",
+ "REC": "REC",
+ "Receive early builds with the newest fixes before they reach the stable release. Betas can be rough around the edges; switch this off to return to stable at the next update.": "Receive early builds with the newest fixes before they reach the stable release. Betas can be rough around the edges; switch this off to return to stable at the next update.",
+ "Recent": "Recent",
+ "Recent searches": "Recent searches",
+ "Recolor everything, swap fonts, resize posters, set a wallpaper.": "Recolor everything, swap fonts, resize posters, set a wallpaper.",
+ "Recommended": "Recommended",
+ "Recommended for you": "Recommended for you",
+ "Recommended for You": "Recommended for You",
+ "Reconfigure": "Reconfigure",
+ "Record": "Record",
+ "Record from live TV": "Record from live TV",
+ "Record from TV (DVR)": "Record from TV (DVR)",
+ "Record GIF": "Record GIF",
+ "recorded winners": "recorded winners",
+ "Recording": "Recording",
+ "Recording · {pct}% · {remaining} · click to manage": "Recording · {pct}% · {remaining} · click to manage",
+ "Recording finished": "Recording finished",
+ "Recording now": "Recording now",
+ "Recordings": "Recordings",
+ "Red Cards": "Red Cards",
+ "Redeploy": "Redeploy",
+ "Redeploy instructions": "Redeploy instructions",
+ "Redeploy it to get the latest Watch Together fixes. Harbor's public relay updates on its own.": "Redeploy it to get the latest Watch Together fixes. Harbor's public relay updates on its own.",
+ "Redeploy relay": "Redeploy relay",
+ "Redeploy to pick up the latest Watch Together fixes. The in-app banner clears once the new version is live.": "Redeploy to pick up the latest Watch Together fixes. The in-app banner clears once the new version is live.",
+ "Reference (bt.2390)": "Reference (bt.2390)",
+ "Refine search": "Refine search",
+ "Refresh": "Refresh",
+ "Refresh list": "Refresh list",
+ "Refresh playlist": "Refresh playlist",
+ "Refresh sources": "Refresh sources",
+ "Refreshing…": "Refreshing…",
+ "Region": "Region",
+ "Region & language": "Region & language",
+ "Relay": "Relay",
+ "Relay deployment requires the Cloudflare API, which is unavailable to browser clients. Use the desktop build to deploy a Worker, then enter the resulting URL below.": "Relay deployment requires the Cloudflare API, which is unavailable to browser clients. Use the desktop build to deploy a Worker, then enter the resulting URL below.",
+ "Relay docs": "Relay docs",
+ "Relay is current (v{version}).": "Relay is current (v{version}).",
+ "Relay is live": "Relay is live",
+ "Relay is up to date": "Relay is up to date",
+ "Relay needs update": "Relay needs update",
+ "Relay not reachable": "Relay not reachable",
+ "Relay outdated. Your self-hosted relay is running an older version.": "Relay outdated. Your self-hosted relay is running an older version.",
+ "Relay panel": "Relay panel",
+ "Relay status": "Relay status",
+ "Relay test failed": "Relay test failed",
+ "Relay test passed": "Relay test passed",
+ "Relay URL": "Relay URL",
+ "Relay verified end-to-end": "Relay verified end-to-end",
+ "Relay version {version}. Update available.": "Relay version {version}. Update available.",
+ "Releases": "Releases",
+ "Reload list": "Reload list",
+ "Remaining only": "Remaining only",
+ "Remember last stream": "Remember last stream",
+ "Remember me": "Remember me",
+ "Remember my choice": "Remember my choice",
+ "Remote server": "Remote server",
+ "Remote streaming server": "Remote streaming server",
+ "Remove": "Remove",
+ "Remove {n}": "Remove {n}",
+ "Remove {n} items from your library? Files on your disk are not deleted.": "Remove {n} items from your library? Files on your disk are not deleted.",
+ "Remove {name}": "Remove {name}",
+ "Remove from AniList": "Remove from AniList",
+ "Remove from Continue Watching": "Remove from Continue Watching",
+ "Remove from favorites": "Remove from favorites",
+ "Remove from library": "Remove from library",
+ "Remove from list": "Remove from list",
+ "Remove from saved": "Remove from saved",
+ "Remove from watchlist": "Remove from watchlist",
+ "Remove list": "Remove list",
+ "Remove list \"{name}\"?": "Remove list \"{name}\"?",
+ "Remove rating": "Remove rating",
+ "Removed": "Removed",
+ "Removed {n}. Rewatch and they re-add correctly.": "Removed {n}. Rewatch and they re-add correctly.",
+ "Removes the Anime tab and any Trending/Popular/Upcoming/New anime rows from Home.": "Removes the Anime tab and any Trending/Popular/Upcoming/New anime rows from Home.",
+ "Removes the Live TV tab from the sidebar.": "Removes the Live TV tab from the sidebar.",
+ "Removing": "Removing",
+ "Removing…": "Removing…",
+ "Rename": "Rename",
+ "Rename current": "Rename current",
+ "Rename row": "Rename row",
+ "Renamed": "Renamed",
+ "Render subtitles in a heavier weight. Turn off to use your font's normal weight.": "Render subtitles in a heavier weight. Turn off to use your font's normal weight.",
+ "Renders mpv inline so playback lives in Harbor itself. Disable to open it in a separate window instead.": "Renders mpv inline so playback lives in Harbor itself. Disable to open it in a separate window instead.",
+ "Reorder": "Reorder",
+ "Repair library": "Repair library",
+ "Repair now": "Repair now",
+ "Replay": "Replay",
+ "Replay the walkthrough or unhide every dismissed tip in the app.": "Replay the walkthrough or unhide every dismissed tip in the app.",
+ "Replay walkthrough": "Replay walkthrough",
+ "Report a bug": "Report a bug",
+ "Report an injected ad": "Report an injected ad",
+ "Reportedly real": "Reportedly real",
+ "Requesting code from Simkl…": "Requesting code from Simkl…",
+ "Requesting code from Trakt…": "Requesting code from Trakt…",
+ "Requirements": "Requirements",
+ "Rerun": "Rerun",
+ "Rescan": "Rescan",
+ "Reset": "Reset",
+ "Reset all ({count})": "Reset all ({count})",
+ "Reset all ({n})": "Reset all ({n})",
+ "Reset all to default": "Reset all to default",
+ "Reset counter": "Reset counter",
+ "Reset filters": "Reset filters",
+ "Reset layout": "Reset layout",
+ "Reset offset": "Reset offset",
+ "Reset offset to 0": "Reset offset to 0",
+ "Reset picture": "Reset picture",
+ "Reset sync": "Reset sync",
+ "Reset this profile to factory defaults? Your tweaks on it will be lost.": "Reset this profile to factory defaults? Your tweaks on it will be lost.",
+ "Reset to 0": "Reset to 0",
+ "Reset to default": "Reset to default",
+ "Reset to default folder": "Reset to default folder",
+ "Reset to defaults": "Reset to defaults",
+ "Reset to original name": "Reset to original name",
+ "Reset to Stremio avatar": "Reset to Stremio avatar",
+ "Resize only": "Resize only",
+ "Resize the row titles on Home and the title shown in the player, without scaling the rest of the interface. You can also lead the player title with the series name instead of the episode.": "Resize the row titles on Home and the title shown in the player, without scaling the rest of the interface. You can also lead the player title with the series name instead of the episode.",
+ "Resolution": "Resolution",
+ "Resources": "Resources",
+ "Rest the cursor on a poster to peek at it without opening. Off by default.": "Rest the cursor on a poster to peek at it without opening. Off by default.",
+ "Rest the cursor on a poster to peek at the rating, runtime, and story without opening it.": "Rest the cursor on a poster to peek at the rating, runtime, and story without opening it.",
+ "Rest the cursor on a poster to peek at the rating, story, and quick actions without opening it.": "Rest the cursor on a poster to peek at the rating, story, and quick actions without opening it.",
+ "Restart": "Restart",
+ "Restart engine": "Restart engine",
+ "Restarting": "Restarting",
+ "Restore": "Restore",
+ "Restore and reload": "Restore and reload",
+ "Restore dismissed hints": "Restore dismissed hints",
+ "Restore from a backup": "Restore from a backup",
+ "Restore this backup?": "Restore this backup?",
+ "Restore window position after fullscreen": "Restore window position after fullscreen",
+ "Restored": "Restored",
+ "Restoring...": "Restoring...",
+ "Result order": "Result order",
+ "Results for \"{query}\"": "Results for \"{query}\"",
+ "Resume": "Resume",
+ "Resume from {time}": "Resume from {time}",
+ "Resume S{s}:E{e}": "Resume S{s}:E{e}",
+ "Resume where you left off": "Resume where you left off",
+ "Retry": "Retry",
+ "Retry download": "Retry download",
+ "Return to full window": "Return to full window",
+ "returns JSON with the worker version. Used by the test button.": "returns JSON with the worker version. Used by the test button.",
+ "Reveal": "Reveal",
+ "Reveal comments": "Reveal comments",
+ "Reveal engine folder": "Reveal engine folder",
+ "Reveal image": "Reveal image",
+ "Reveal reviews": "Reveal reviews",
+ "Reveal the show or movie artwork.": "Reveal the show or movie artwork.",
+ "Reveal the show or movie artwork. Off keeps the title but hides the poster.": "Reveal the show or movie artwork. Off keeps the title but hides the poster.",
+ "Revenue": "Revenue",
+ "review": "review",
+ "Review": "Review",
+ "Reviews are hidden": "Reviews are hidden",
+ "Reviews couldn't be loaded right now.": "Reviews couldn't be loaded right now.",
+ "Reviews on film pages are blurred until you reveal them.": "Reviews on film pages are blurred until you reveal them.",
+ "Revisionist Westerns": "Revisionist Westerns",
+ "Rewatching": "Rewatching",
+ "Rewrites every library item to match Stremio's exact schema. Run once if your Stremio app started crashing after Harbor synced playback.": "Rewrites every library item to match Stremio's exact schema. Run once if your Stremio app started crashing after Harbor synced playback.",
+ "Richer, more vivid picture with a touch more contrast.": "Richer, more vivid picture with a touch more contrast.",
+ "right": "right",
+ "Right": "Right",
+ "Right edge": "Right edge",
+ "Right-click a text channel, pick": "Right-click a text channel, pick",
+ "Right-click any title in Harbor or hit \"Add to Watchlist\" on its detail page to save it here.": "Right-click any title in Harbor or hit \"Add to Watchlist\" on its detail page to save it here.",
+ "Right-click any title in Harbor or hit \\": "Right-click any title in Harbor or hit \\",
+ "Rights and usage": "Rights and usage",
+ "Rising": "Rising",
+ "Rising · +{n} star in 24h": "Rising · +{n} star in 24h",
+ "Rising · +{n} stars in 24h": "Rising · +{n} stars in 24h",
+ "Roll back to an earlier build": "Roll back to an earlier build",
+ "Romaji": "Romaji",
+ "Romance": "Romance",
+ "Romanian": "Romanian",
+ "Romcom Royalty": "Romcom Royalty",
+ "Romcom Sweetheart": "Romcom Sweetheart",
+ "Room code": "Room code",
+ "Rotten Tomatoes Audience": "Rotten Tomatoes Audience",
+ "Rotten Tomatoes audience score": "Rotten Tomatoes audience score",
+ "Rotten Tomatoes Critics": "Rotten Tomatoes Critics",
+ "Rotten Tomatoes Popcornmeter, the audience score (%).": "Rotten Tomatoes Popcornmeter, the audience score (%).",
+ "Rounded": "Rounded",
+ "Rounded background panel behind the text. Most readable.": "Rounded background panel behind the text. Most readable.",
+ "Rounded square in the same color.": "Rounded square in the same color.",
+ "Row titles": "Row titles",
+ "Royal top bar": "Royal top bar",
+ "RPDB · scores baked into posters": "RPDB · scores baked into posters",
+ "RPDB already paints scores onto the poster. Toggle to override.": "RPDB already paints scores onto the poster. Toggle to override.",
+ "rpdb key": "rpdb key",
+ "RPDB key above, https://btttr.cc, or a {imdbId} template": "RPDB key above, https://btttr.cc, or a {imdbId} template",
+ "RTX Video HDR": "RTX Video HDR",
+ "Rubber-Faced Genius": "Rubber-Faced Genius",
+ "Run again": "Run again",
+ "Run self-test": "Run self-test",
+ "Run speed test": "Run speed test",
+ "Run test": "Run test",
+ "Run your own Harbor Relay": "Run your own Harbor Relay",
+ "Running": "Running",
+ "Running on Cinemeta for now. Add a TMDB key from Settings whenever you're ready.": "Running on Cinemeta for now. Add a TMDB key from Settings whenever you're ready.",
+ "Running self-test": "Running self-test",
+ "Running the latest Watch Together protocol.": "Running the latest Watch Together protocol.",
+ "Runs": "Runs",
+ "Runs in the app's WebView. You're modding your own client. No sandbox, no safety net. Errors land in the console.": "Runs in the app's WebView. You're modding your own client. No sandbox, no safety net. Errors land in the console.",
+ "Runtime": "Runtime",
+ "Russian": "Russian",
+ "S{s} E{e}": "S{s} E{e}",
+ "Saddle Up": "Saddle Up",
+ "SAG Awards": "SAG Awards",
+ "Sagas": "Sagas",
+ "Same file": "Same file",
+ "Same file as host": "Same file as host",
+ "Sandman Picks": "Sandman Picks",
+ "Sat": "Sat",
+ "Saturation": "Saturation",
+ "Save": "Save",
+ "Save .txt": "Save .txt",
+ "Save (single anchor)": "Save (single anchor)",
+ "Save a debrid key above (TorBox, Real-Debrid, AllDebrid, Premiumize, or Debrid-Link) to enable this.": "Save a debrid key above (TorBox, Real-Debrid, AllDebrid, Premiumize, or Debrid-Link) to enable this.",
+ "Save a TMDB key in Library & metadata to turn on streaming catalogs.": "Save a TMDB key in Library & metadata to turn on streaming catalogs.",
+ "Save an OMDB key in Library & metadata to enable rating fetches.": "Save an OMDB key in Library & metadata to enable rating fetches.",
+ "Save and continue": "Save and continue",
+ "Save as a new look": "Save as a new look",
+ "Save as a new template": "Save as a new template",
+ "Save as new profile...": "Save as new profile...",
+ "Save cancelled.": "Save cancelled.",
+ "Save changes": "Save changes",
+ "Save credentials": "Save credentials",
+ "Save for later": "Save for later",
+ "Save layout": "Save layout",
+ "Save look": "Save look",
+ "Save order": "Save order",
+ "Save rule": "Save rule",
+ "Save sharper frames instead of light thumbnails. They look crisper on the card but take more space, so fewer are kept before the oldest roll off.": "Save sharper frames instead of light thumbnails. They look crisper on the card but take more space, so fewer are kept before the oldest roll off.",
+ "Save sync": "Save sync",
+ "Save the current frame (video only, no subtitles) as a PNG to Pictures/Harbor.": "Save the current frame (video only, no subtitles) as a PNG to Pictures/Harbor.",
+ "Save the last 30 seconds": "Save the last 30 seconds",
+ "Save the worker source. Copy": "Save the worker source. Copy",
+ "Save the worker source. Copy {code1} from the Harbor repo into a new directory as {code2}.": "Save the worker source. Copy {code1} from the Harbor repo into a new directory as {code2}.",
+ "Save this": "Save this",
+ "Save this {code} next to it:": "Save this {code} next to it:",
+ "Save this look": "Save this look",
+ "Save this look as a template": "Save this look as a template",
+ "Save to": "Save to",
+ "Save with one anchor?": "Save with one anchor?",
+ "Saved": "Saved",
+ "Saved .nfo and artwork": "Saved .nfo and artwork",
+ "Saved {d} from Harbor {a}.": "Saved {d} from Harbor {a}.",
+ "Saved {n} entries to {path}. Send us that file.": "Saved {n} entries to {path}. Send us that file.",
+ "Saved {when} from Harbor {app}.": "Saved {when} from Harbor {app}.",
+ "Saved as .ts (works in mpv, VLC, ffmpeg)": "Saved as .ts (works in mpv, VLC, ffmpeg)",
+ "Saved for Now": "Saved for Now",
+ "Saved frame": "Saved frame",
+ "Saved harbor-anime-diagnostics.txt ({n} entries). Send us that file.": "Saved harbor-anime-diagnostics.txt ({n} entries). Send us that file.",
+ "Saved locally. Connect Trakt in Settings to sync.": "Saved locally. Connect Trakt in Settings to sync.",
+ "Saved movies and episodes for offline watching": "Saved movies and episodes for offline watching",
+ "Saved offline": "Saved offline",
+ "Saved stream filters": "Saved stream filters",
+ "Saved to {folder} · open folder": "Saved to {folder} · open folder",
+ "Saved to disk": "Saved to disk",
+ "Saved to Downloads as harbor-mpv-log.txt": "Saved to Downloads as harbor-mpv-log.txt",
+ "Saved, but Harbor couldn't confirm the new order. Retry to re-check.": "Saved, but Harbor couldn't confirm the new order. Retry to re-check.",
+ "Saves": "Saves",
+ "Saves a .txt of your watched anime + series entries so we can see the exact shape and finish the fix. Just titles, ids, and episode numbers.": "Saves a .txt of your watched anime + series entries so we can see the exact shape and finish the fix. Just titles, ids, and episode numbers.",
+ "Saves your whole Harbor setup to one file: theme, home layout, settings, addons, profiles, watchlist, player layouts, watch progress, and more. Your Stremio sign-in is left out on purpose.": "Saves your whole Harbor setup to one file: theme, home layout, settings, addons, profiles, watchlist, player layouts, watch progress, and more. Your Stremio sign-in is left out on purpose.",
+ "Saving": "Saving",
+ "Saving clip…": "Saving clip…",
+ "Saving GIF…": "Saving GIF…",
+ "Saving to": "Saving to",
+ "Saving to library": "Saving to library",
+ "Saving to system default": "Saving to system default",
+ "Saving…": "Saving…",
+ "Say hi.": "Say hi.",
+ "Say something…": "Say something…",
+ "Says “cached” but won’t play?": "Says “cached” but won’t play?",
+ "Scale every poster and card across Home, Discover, and your library. Bump it up on a 4K or large display where the defaults feel small, or shrink it for a denser grid.": "Scale every poster and card across Home, Discover, and your library. Bump it up on a 4K or large display where the defaults feel small, or shrink it for a denser grid.",
+ "Scan again": "Scan again",
+ "Scan for corruption": "Scan for corruption",
+ "Scanning": "Scanning",
+ "Scanning your library…": "Scanning your library…",
+ "Scanning your network…": "Scanning your network…",
+ "Scanning…": "Scanning…",
+ "Scans your Stremio library and rewrites any item whose shape doesn't match Stremio's exact schema.": "Scans your Stremio library and rewrites any item whose shape doesn't match Stremio's exact schema.",
+ "Scans your Stremio library and rewrites any item whose shape doesn't match Stremio's exact schema. Safe to run anytime; only items that need fixing get touched.": "Scans your Stremio library and rewrites any item whose shape doesn't match Stremio's exact schema. Safe to run anytime; only items that need fixing get touched.",
+ "Sci-Fi": "Sci-Fi",
+ "Sci-Fi & Fantasy": "Sci-Fi & Fantasy",
+ "Score": "Score",
+ "Score /10": "Score /10",
+ "Scream Queen": "Scream Queen",
+ "Screenshot": "Screenshot",
+ "Screenshots and recordings": "Screenshots and recordings",
+ "Scrobble to SIMKL": "Scrobble to SIMKL",
+ "Scroll cast left": "Scroll cast left",
+ "Scroll cast right": "Scroll cast right",
+ "Scroll down": "Scroll down",
+ "Scroll filters left": "Scroll filters left",
+ "Scroll filters right": "Scroll filters right",
+ "Scroll left": "Scroll left",
+ "Scroll right": "Scroll right",
+ "Search": "Search",
+ "Search {n} channels": "Search {n} channels",
+ "Search {n} EPG channels": "Search {n} EPG channels",
+ "Search {n} favorite": "Search {n} favorite",
+ "Search {n} favorites": "Search {n} favorites",
+ "Search actors, directors…": "Search actors, directors…",
+ "Search addons": "Search addons",
+ "Search by episode number or title": "Search by episode number or title",
+ "Search by recipient or title…": "Search by recipient or title…",
+ "Search countries...": "Search countries...",
+ "Search every collection on TMDB...": "Search every collection on TMDB...",
+ "Search languages": "Search languages",
+ "Search movies": "Search movies",
+ "Search movies, shows, people, genres, years...": "Search movies, shows, people, genres, years...",
+ "Search settings": "Search settings",
+ "Search shows": "Search shows",
+ "Search title…": "Search title…",
+ "Search TMDB…": "Search TMDB…",
+ "Search wider": "Search wider",
+ "Search winners or categories…": "Search winners or categories…",
+ "search.placeholder": "Search movies, shows, people…",
+ "Searches and streams directly off Easynews. No debrid needed. Just your Easynews login.": "Searches and streams directly off Easynews. No debrid needed. Just your Easynews login.",
+ "Searching": "Searching",
+ "Searching {count} sources…": "Searching {count} sources…",
+ "Searching sources…": "Searching sources…",
+ "Searching…": "Searching…",
+ "Season {n}": "Season {n}",
+ "Season {n} of {m}": "Season {n} of {m}",
+ "Seasons": "Seasons",
+ "Second anchor": "Second anchor",
+ "Security": "Security",
+ "See all": "See all",
+ "See all ({n})": "See all ({n})",
+ "See an injected ad? Report it": "See an injected ad? Report it",
+ "See details": "See details",
+ "See others born this day": "See others born this day",
+ "See others from this place": "See others from this place",
+ "See the mpv.conf your dials above generate": "See the mpv.conf your dials above generate",
+ "seeders": "seeders",
+ "Seeing empty boxes instead of letters? Choose Arabic under Font and switch to Use my style.": "Seeing empty boxes instead of letters? Choose Arabic under Font and switch to Use my style.",
+ "Seek back": "Seek back",
+ "Seek back 30s": "Seek back 30s",
+ "Seek bar": "Seek bar",
+ "Seek bar style": "Seek bar style",
+ "Seek dot shape": "Seek dot shape",
+ "Seek forward": "Seek forward",
+ "Seek forward 30s": "Seek forward 30s",
+ "Seek step": "Seek step",
+ "Seek to the beginning.": "Seek to the beginning.",
+ "Seek to the last half second.": "Seek to the last half second.",
+ "Seeking": "Seeking",
+ "Select": "Select",
+ "Selecting best source": "Selecting best source",
+ "Select all": "Select all",
+ "Select identified titles to export.": "Select identified titles to export.",
+ "Self-host": "Self-host",
+ "Self-test": "Self-test",
+ "Self-test is disabled while strict remote streaming is on. It downloads a test torrent over peer-to-peer on this machine.": "Self-test is disabled while strict remote streaming is on. It downloads a test torrent over peer-to-peer on this machine.",
+ "Send": "Send",
+ "Send a bug report": "Send a bug report",
+ "Send a bug report straight to the Harbor team. Screenshots and screen recordings welcome.": "Send a bug report straight to the Harbor team. Screenshots and screen recordings welcome.",
+ "Send audio to specific speakers, headphones or a receiver. System default follows Windows.": "Send audio to specific speakers, headphones or a receiver. System default follows Windows.",
+ "Send rating": "Send rating",
+ "Send test": "Send test",
+ "Send this to anyone you want to watch with. They paste it in their Settings → Harbor Relay. After that, share a 6-character room code from the people icon up top.": "Send this to anyone you want to watch with. They paste it in their Settings → Harbor Relay. After that, share a 6-character room code from the people icon up top.",
+ "Sending to Trakt…": "Sending to Trakt…",
+ "Sending...": "Sending...",
+ "Sending…": "Sending…",
+ "Sent {n} to Trakt": "Sent {n} to Trakt",
+ "Sent. Check your channel.": "Sent. Check your channel.",
+ "Series": "Series",
+ "Series · {n}": "Series · {n}",
+ "Series for the part of the day that runs on coffee and snacks.": "Series for the part of the day that runs on coffee and snacks.",
+ "Series for the part of the day you actually look forward to.": "Series for the part of the day you actually look forward to.",
+ "Series for the part of the night that won't let you sleep.": "Series for the part of the night that won't let you sleep.",
+ "Series from {name}: current hits, classics, and the deep cuts.": "Series from {name}: current hits, classics, and the deep cuts.",
+ "Series on {name}": "Series on {name}",
+ "Series tab": "Series tab",
+ "Series to disappear into": "Series to disappear into",
+ "Series to ease into while the day is still quiet.": "Series to ease into while the day is still quiet.",
+ "Series with mileage": "Series with mileage",
+ "Series with the patience to match your late-night hours.": "Series with the patience to match your late-night hours.",
+ "Series, Critically Acclaimed": "Series, Critically Acclaimed",
+ "Serif": "Serif",
+ "Server + login": "Server + login",
+ "Server address": "Server address",
+ "Server couldn't start:": "Server couldn't start:",
+ "Server did not respond": "Server did not respond",
+ "Server reachable": "Server reachable",
+ "Server reachable in {ms}ms. Harbor will use it for torrent streaming.": "Server reachable in {ms}ms. Harbor will use it for torrent streaming.",
+ "Server returned an empty response": "Server returned an empty response",
+ "Server URL": "Server URL",
+ "Server URL plus username and password.": "Server URL plus username and password.",
+ "Serves this exact install of Harbor as a web app on your network. Open it on a phone, laptop, or TV browser, sign in there, and it streams through this computer.": "Serves this exact install of Harbor as a web app on your network. Open it on a phone, laptop, or TV browser, sign in there, and it streams through this computer.",
+ "service": "service",
+ "Service status": "Service status",
+ "Service-specific browsing needs a TMDB key. Pick All / Movies / Shows to browse via Cinemeta.": "Service-specific browsing needs a TMDB key. Pick All / Movies / Shows to browse via Cinemeta.",
+ "services": "services",
+ "Set a 4-digit PIN": "Set a 4-digit PIN",
+ "Set a PIN": "Set a PIN",
+ "Set a PIN for {name}": "Set a PIN for {name}",
+ "Set as theme backdrop": "Set as theme backdrop",
+ "Set how many minutes to record": "Set how many minutes to record",
+ "Set PIN": "Set PIN",
+ "Set sail": "Set sail",
+ "Set to where the video is right now": "Set to where the video is right now",
+ "Set up": "Set up",
+ "Set up a Cloudflare relay for Watch Together": "Set up a Cloudflare relay for Watch Together",
+ "Set up a debrid": "Set up a debrid",
+ "Set your MyAnimeList profile picture as your Harbor avatar.": "Set your MyAnimeList profile picture as your Harbor avatar.",
+ "Sets Harbor's interface language and automatically follows its text direction. This is separate from subtitle and metadata languages below.": "Sets Harbor's interface language and automatically follows its text direction. This is separate from subtitle and metadata languages below.",
+ "Settings": "Settings",
+ "Settings, Harbor Relay, then": "Settings, Harbor Relay, then",
+ "Settings, Harbor Relay, then {kbd}.": "Settings, Harbor Relay, then {kbd}.",
+ "Severity": "Severity",
+ "Shadow": "Shadow",
+ "Shape the sound without touching your system EQ. Applies on the mpv engine; the HTML5 engine plays audio untouched.": "Shape the sound without touching your system EQ. Applies on the mpv engine; the HTML5 engine plays audio untouched.",
+ "Share with {name}": "Share with {name}",
+ "Sharing {name}'s Stremio": "Sharing {name}'s Stremio",
+ "Sharing your relay": "Sharing your relay",
+ "Sharp comedies, sunny worlds, and the occasional binge bait.": "Sharp comedies, sunny worlds, and the occasional binge bait.",
+ "Sharp Wit": "Sharp Wit",
+ "Sharpen": "Sharpen",
+ "Sharper lines and a little more pop.": "Sharper lines and a little more pop.",
+ "Sharper lines and cleaner gradients on anime, in real time. Heaviest on the graphics card of everything here.": "Sharper lines and cleaner gradients on anime, in real time. Heaviest on the graphics card of everything here.",
+ "Sharper lines and cleaner gradients on anime, in real time. One-tap setup below.": "Sharper lines and cleaner gradients on anime, in real time. One-tap setup below.",
+ "Sharper upscaling and smoother gradients in dark scenes, at the cost of more graphics-card load. Skip it on laptops and integrated graphics.": "Sharper upscaling and smoother gradients in dark scenes, at the cost of more graphics-card load. Skip it on laptops and integrated graphics.",
+ "Shift subtitle timing earlier (Shift for fine steps).": "Shift subtitle timing earlier (Shift for fine steps).",
+ "Shift subtitle timing later (Shift for fine steps).": "Shift subtitle timing later (Shift for fine steps).",
+ "Ships with Harbor. Always available.": "Ships with Harbor. Always available.",
+ "Short": "Short",
+ "Shots": "Shots",
+ "SHOTS": "SHOTS",
+ "Shots on Target": "Shots on Target",
+ "Show": "Show",
+ "Show 'Watching something' with no show name or poster.": "Show 'Watching something' with no show name or poster.",
+ "Show {langs} only": "Show {langs} only",
+ "Show {n} more addons": "Show {n} more addons",
+ "Show {n} more reviews": "Show {n} more reviews",
+ "Show a button on the detail page to mark a title or episode as watched. Syncs to Trakt and Simkl if connected.": "Show a button on the detail page to mark a title or episode as watched. Syncs to Trakt and Simkl if connected.",
+ "Show a quick volume overlay when you change volume with the player controls hidden, so keyboard and scroll wheel changes are always visible.": "Show a quick volume overlay when you change volume with the player controls hidden, so keyboard and scroll wheel changes are always visible.",
+ "Show a Skip button when a known injected ad plays, and a small report button on new releases so you can mark ads for review.": "Show a Skip button when a known injected ad plays, and a small report button on new releases so you can mark ads for review.",
+ "Show a Skip Intro / Skip Credits button when Harbor detects one. Turn this off to never show it. You can also tap the X on the button to dismiss a wrong one for the rest of the episode.": "Show a Skip Intro / Skip Credits button when Harbor detects one. Turn this off to never show it. You can also tap the X on the button to dismiss a wrong one for the rest of the episode.",
+ "Show adult addons": "Show adult addons",
+ "Show an “on disk” badge on cards": "Show an “on disk” badge on cards",
+ "Show AniList comments": "Show AniList comments",
+ "Show Anime4K indicator": "Show Anime4K indicator",
+ "Show as a normal row": "Show as a normal row",
+ "Show as a Top 10 with big numerals": "Show as a Top 10 with big numerals",
+ "Show audience score on cards": "Show audience score on cards",
+ "Show comments on detail pages": "Show comments on detail pages",
+ "Show cursors": "Show cursors",
+ "Show details": "Show details",
+ "Show downloaded file": "Show downloaded file",
+ "Show each addon's results in the order it returned them, grouped by your addon list. Matches the Stremio and Vidi apps.": "Show each addon's results in the order it returned them, grouped by your addon list. Matches the Stremio and Vidi apps.",
+ "Show each source's full release filename on the condensed layout. The Stremio layout already shows it.": "Show each source's full release filename on the condensed layout. The Stremio layout already shows it.",
+ "Show elapsed time": "Show elapsed time",
+ "Show email": "Show email",
+ "Show episode description": "Show episode description",
+ "Show every addon row": "Show every addon row",
+ "Show everything anyway": "Show everything anyway",
+ "Show flagged ({n})": "Show flagged ({n})",
+ "Show format chips on stream rows": "Show format chips on stream rows",
+ "Show forum threads and comments from AniList on anime detail pages.": "Show forum threads and comments from AniList on anime detail pages.",
+ "Show full descriptions": "Show full descriptions",
+ "Show full documentation": "Show full documentation",
+ "Show HI/SDH": "Show HI/SDH",
+ "Show IMDb rating on episodes": "Show IMDb rating on episodes",
+ "Show IMDb score on cards": "Show IMDb score on cards",
+ "Show in folder": "Show in folder",
+ "Show less": "Show less",
+ "Show Letterboxd score on cards": "Show Letterboxd score on cards",
+ "Show MAL score on cards": "Show MAL score on cards",
+ "Show MDBList score on cards": "Show MDBList score on cards",
+ "Show me less like this": "Show me less like this",
+ "Show me more like this": "Show me more like this",
+ "Show Metacritic score on cards": "Show Metacritic score on cards",
+ "Show more": "Show more",
+ "Show my rating on movie posters": "Show my rating on movie posters",
+ "Show on Discord": "Show on Discord",
+ "Show on home": "Show on home",
+ "Show or hide the playback stats overlay.": "Show or hide the playback stats overlay.",
+ "Show others' drawings": "Show others' drawings",
+ "Show P2P status chip": "Show P2P status chip",
+ "Show P2P status overlay": "Show P2P status overlay",
+ "Show password": "Show password",
+ "Show play button": "Show play button",
+ "Show Playlists tab": "Show Playlists tab",
+ "Show poster": "Show poster",
+ "Show rating": "Show rating",
+ "Show ratings on detail pages": "Show ratings on detail pages",
+ "Show remaining time": "Show remaining time",
+ "Show Rotten Tomatoes score on cards": "Show Rotten Tomatoes score on cards",
+ "Show row": "Show row",
+ "Show section": "Show section",
+ "Show series name first in the player": "Show series name first in the player",
+ "Show Simkl rails on Home": "Show Simkl rails on Home",
+ "Show SIMKL score on cards": "Show SIMKL score on cards",
+ "Show Simkl Trending Today rail": "Show Simkl Trending Today rail",
+ "Show sources hidden by the trust filter": "Show sources hidden by the trust filter",
+ "Show stream quality under the title": "Show stream quality under the title",
+ "Show streams": "Show streams",
+ "Show subtitles in Picture-in-Picture": "Show subtitles in Picture-in-Picture",
+ "Show tags on cards (New, In Cinema, Rerun, Awards)": "Show tags on cards (New, In Cinema, Rerun, Awards)",
+ "Show the addon's complete description instead of trimming it to a few lines. Turn off for shorter, tidier rows.": "Show the addon's complete description instead of trimming it to a few lines. Turn off for shorter, tidier rows.",
+ "Show the full notes for this build": "Show the full notes for this build",
+ "Show the IMDb rating and synopsis on episodes across the list, grid, and panel layouts.": "Show the IMDb rating and synopsis on episodes across the list, grid, and panel layouts.",
+ "Show the report button on every torrent stream, not just likely new releases.": "Show the report button on every torrent stream, not just likely new releases.",
+ "Show the Skip button": "Show the Skip button",
+ "Show this control": "Show this control",
+ "Show this panel": "Show this panel",
+ "Show thumbnail preview on hover": "Show thumbnail preview on hover",
+ "Show title": "Show title",
+ "Show TMDB score on cards": "Show TMDB score on cards",
+ "Show torrent name": "Show torrent name",
+ "Show Trakt score on cards": "Show Trakt score on cards",
+ "Show Up Next on Simkl rail": "Show Up Next on Simkl rail",
+ "Show what you're actually watching, under the title in the player.": "Show what you're actually watching, under the title in the player.",
+ "Show while browsing": "Show while browsing",
+ "Show while paused": "Show while paused",
+ "Show your AniList lists as rails on the Anime page, keep your watch progress in sync as you finish episodes, and use your AniList avatar as your Harbor photo. Free at anilist.co.": "Show your AniList lists as rails on the Anime page, keep your watch progress in sync as you finish episodes, and use your AniList avatar as your Harbor photo. Free at anilist.co.",
+ "Show your AniList profile picture as your Harbor avatar.": "Show your AniList profile picture as your Harbor avatar.",
+ "Show your operating system's own title bar with its minimize, maximize, and close buttons. They stay reachable everywhere, including while a video is playing. Turn this off to use Harbor's built-in window buttons.": "Show your operating system's own title bar with its minimize, maximize, and close buttons. They stay reachable everywhere, including while a video is playing. Turn this off to use Harbor's built-in window buttons.",
+ "Showing {shown} of {total} movies. Search to find the rest.": "Showing {shown} of {total} movies. Search to find the rest.",
+ "Showing {shown} of {total} shows. Search to find the rest.": "Showing {shown} of {total} shows. Search to find the rest.",
+ "Showing {shown} of {total}.": "Showing {shown} of {total}.",
+ "Showing first {n1} of {n2} channels. Use search or a category to narrow down.": "Showing first {n1} of {n2} channels. Use search or a category to narrow down.",
+ "Showing first {shown} of {total} channels. Use search or a category to narrow down.": "Showing first {shown} of {total} channels. Use search or a category to narrow down.",
+ "Showing now": "Showing now",
+ "shown": "shown",
+ "Shown": "Shown",
+ "Shows": "Shows",
+ "Shows each episode's rating. Add your free OMDb API key for real IMDb scores; without it, ratings fall back to TMDB.": "Shows each episode's rating. Add your free OMDb API key for real IMDb scores; without it, ratings fall back to TMDB.",
+ "Shows the episode synopsis on the cards. Turn it off to hide it.": "Shows the episode synopsis on the cards. Turn it off to hide it.",
+ "Shows titles suitable up to age {age}.": "Shows titles suitable up to age {age}.",
+ "Shows your Letterboxd catalogs on the home page and a Letterboxd panel on film pages.": "Shows your Letterboxd catalogs on the home page and a Letterboxd panel on film pages.",
+ "Showtime": "Showtime",
+ "Side": "Side",
+ "Side rail": "Side rail",
+ "Sidebar access": "Sidebar access",
+ "Sidebar layout": "Sidebar layout",
+ "Sightings, contact, the unknown": "Sightings, contact, the unknown",
+ "Sign in": "Sign in",
+ "Sign in from the sidebar after saving. Library and addons stay separate.": "Sign in from the sidebar after saving. Library and addons stay separate.",
+ "Sign in to": "Sign in to",
+ "Sign in to filter by your library": "Sign in to filter by your library",
+ "Sign in to mirror your Continue Watching, watchlist, and any addons you've already curated. Optional; Harbor works fully signed-out.": "Sign in to mirror your Continue Watching, watchlist, and any addons you've already curated. Optional; Harbor works fully signed-out.",
+ "Sign in to see your library calendar": "Sign in to see your library calendar",
+ "Sign in to Stremio": "Sign in to Stremio",
+ "Sign in to Stremio first so Harbor knows which watchlist to sync.": "Sign in to Stremio first so Harbor knows which watchlist to sync.",
+ "Sign in to Stremio first.": "Sign in to Stremio first.",
+ "Sign in to Stremio first. The repair scans only the active profile's library.": "Sign in to Stremio first. The repair scans only the active profile's library.",
+ "Sign in to Stremio first. This reads the active profile's library.": "Sign in to Stremio first. This reads the active profile's library.",
+ "Sign in to Stremio first. This scans the active profile's library.": "Sign in to Stremio first. This scans the active profile's library.",
+ "Sign in to Stremio first. Your installed addons sync from there.": "Sign in to Stremio first. Your installed addons sync from there.",
+ "Sign in to Stremio or connect Trakt to see what you've been watching here.": "Sign in to Stremio or connect Trakt to see what you've been watching here.",
+ "Sign in to Stremio to organize the addons synced to your account.": "Sign in to Stremio to organize the addons synced to your account.",
+ "Sign in to sync your addons across devices": "Sign in to sync your addons across devices",
+ "Sign in to sync your library, watch progress, and addons.": "Sign in to sync your library, watch progress, and addons.",
+ "Sign in with": "Sign in with",
+ "Sign in with email": "Sign in with email",
+ "Sign in with Stremio": "Sign in with Stremio",
+ "Sign out": "Sign out",
+ "Sign-in failed": "Sign-in failed",
+ "Signing in...": "Signing in...",
+ "Signing in…": "Signing in…",
+ "Simkl": "Simkl",
+ "SIMKL": "SIMKL",
+ "SIMKL community rating. Works independently, no API key required.": "SIMKL community rating. Works independently, no API key required.",
+ "Simkl error (HTTP {status})": "Simkl error (HTTP {status})",
+ "Simkl history": "Simkl history",
+ "Simkl lists no new shows or anime premiering this month. Try a different month.": "Simkl lists no new shows or anime premiering this month. Try a different month.",
+ "Simkl plan to watch": "Simkl plan to watch",
+ "Simkl premieres": "Simkl premieres",
+ "Simkl sign-in expired, reconnect it": "Simkl sign-in expired, reconnect it",
+ "Single -1:12 label, both ends collapse.": "Single -1:12 label, both ends collapse.",
+ "Single 00:23 label, both ends collapse.": "Single 00:23 label, both ends collapse.",
+ "Sits above the title strip": "Sits above the title strip",
+ "Six horizontal stripes. Pairs with nyan cat dot.": "Six horizontal stripes. Pairs with nyan cat dot.",
+ "Six places to start. Tap one and we'll filter the catalog for you.": "Six places to start. Tap one and we'll filter the catalog for you.",
+ "Size": "Size",
+ "Size outlier": "Size outlier",
+ "Sketch & Screen": "Sketch & Screen",
+ "Sketch Royalty": "Sketch Royalty",
+ "Skip": "Skip",
+ "Skip Credits": "Skip Credits",
+ "Skip for now": "Skip for now",
+ "Skip if you'd rather just use Cinemeta. Harbor still works, you'll just see fewer rails.": "Skip if you'd rather just use Cinemeta. Harbor still works, you'll just see fewer rails.",
+ "Skip injected ad?": "Skip injected ad?",
+ "Skip injected ads automatically": "Skip injected ads automatically",
+ "Skip Intro": "Skip Intro",
+ "Skip intros": "Skip intros",
+ "Skip intros & credits": "Skip intros & credits",
+ "Skip Recap": "Skip Recap",
+ "Skip setup": "Skip setup",
+ "Skip the 'stream over peer-to-peer?' prompt and start uncached torrents immediately. Harbor remembers your choice after the first confirmation anyway.": "Skip the 'stream over peer-to-peer?' prompt and start uncached torrents immediately. Harbor remembers your choice after the first confirmation anyway.",
+ "Skip to the next episode if available.": "Skip to the next episode if available.",
+ "Skip to the previous episode if available.": "Skip to the previous episode if available.",
+ "Skip Who's watching and always start as this profile. PIN-locked profiles can't be a default.": "Skip Who's watching and always start as this profile. PIN-locked profiles can't be a default.",
+ "skipped {n} anime": "skipped {n} anime",
+ "Sleep at end of episode": "Sleep at end of episode",
+ "Sleep timer": "Sleep timer",
+ "Slice": "Slice",
+ "Slice of Life": "Slice of Life",
+ "Slide {n}": "Slide {n}",
+ "Slider": "Slider",
+ "Slot": "Slot",
+ "Slot is getting crowded ({n}/{limit}). May overflow on narrow screens.": "Slot is getting crowded ({n}/{limit}). May overflow on narrow screens.",
+ "Slow Burns": "Slow Burns",
+ "Slow or unstable connection": "Slow or unstable connection",
+ "Slow playback by 0.25x.": "Slow playback by 0.25x.",
+ "Slow Reveal": "Slow Reveal",
+ "Slow-Burn Dramas": "Slow-Burn Dramas",
+ "Slow-burn starts": "Slow-burn starts",
+ "Slow-burn worlds and bright chapters worth opening with coffee.": "Slow-burn worlds and bright chapters worth opening with coffee.",
+ "Slow, strange, and absorbing. Best with the lights down low.": "Slow, strange, and absorbing. Best with the lights down low.",
+ "Smaller": "Smaller",
+ "Smooth motion": "Smooth motion",
+ "Smooth on weak PCs": "Smooth on weak PCs",
+ "Social": "Social",
+ "Soft (Reinhard)": "Soft (Reinhard)",
+ "Soft halo around the text. Cleanest on most content.": "Soft halo around the text. Cleanest on most content.",
+ "Softer and dimmer, kinder for late-night watching.": "Softer and dimmer, kinder for late-night watching.",
+ "Solid fill, no texture. Cleanest baseline.": "Solid fill, no texture. Cleanest baseline.",
+ "Some cam and new-release rips have ads spliced into the video itself. When the community has marked one, a Skip button appears. You can also report ads you spot for review. Off by default.": "Some cam and new-release rips have ads spliced into the video itself. When the community has marked one, a Skip button appears. You can also report ads you spot for review. Off by default.",
+ "Someone I track has a new release": "Someone I track has a new release",
+ "Something else": "Something else",
+ "Something unexpected went wrong. Nothing may have been written. Retry to re-check.": "Something unexpected went wrong. Nothing may have been written. Retry to re-check.",
+ "Something went wrong.": "Something went wrong.",
+ "Song": "Song",
+ "Sorry this one is not better. Tell us what went wrong and we will fix it for you.": "Sorry this one is not better. Tell us what went wrong and we will fix it for you.",
+ "Source": "Source",
+ "Source code": "Source code",
+ "Source:": "Source:",
+ "Source: {code}. About 200 lines of JavaScript, no dependencies. Read it before deploying if you want to know what runs.": "Source: {code}. About 200 lines of JavaScript, no dependencies. Read it before deploying if you want to know what runs.",
+ "Sources": "Sources",
+ "Sources are not cached for this title. Open the picker page to refresh.": "Sources are not cached for this title. Open the picker page to refresh.",
+ "South Korea": "South Korea",
+ "Southpaw": "Southpaw",
+ "Space Exploration": "Space Exploration",
+ "Spacefarer": "Spacefarer",
+ "Spaghetti Westerns": "Spaghetti Westerns",
+ "Spain": "Spain",
+ "Spanish": "Spanish",
+ "Spanish (Latin America)": "Spanish (Latin America)",
+ "Specials": "Specials",
+ "speed": "speed",
+ "Speed": "Speed",
+ "SPEED": "SPEED",
+ "Speed & sleep": "Speed & sleep",
+ "Speed and sleep timer": "Speed and sleep timer",
+ "Speed down": "Speed down",
+ "Speed playback up by 0.25x.": "Speed playback up by 0.25x.",
+ "Speed test": "Speed test",
+ "Speed up": "Speed up",
+ "Spinner stays forever and nothing in the player loads.": "Spinner stays forever and nothing in the player loads.",
+ "Spins up a tiny server on Cloudflare's free Workers tier. Stays online forever (or until you stop it). Friends connect by URL.": "Spins up a tiny server on Cloudflare's free Workers tier. Stays online forever (or until you stop it). Friends connect by URL.",
+ "Spoiler — Click": "Spoiler — Click",
+ "Spoiler — Click to reveal": "Spoiler — Click to reveal",
+ "Spoilers": "Spoilers",
+ "Spooky Season": "Spooky Season",
+ "Sports": "Sports",
+ "Sports & live TV": "Sports & live TV",
+ "sports.customize": "Customize",
+ "sports.customize.all": "All",
+ "sports.customize.cancel": "Cancel",
+ "sports.customize.clearAll": "Clear all",
+ "sports.customize.deselectGroupAll": "Deselect all",
+ "sports.customize.save": "Save",
+ "sports.customize.selectAll": "Select all",
+ "sports.customize.selected": "{n} selected",
+ "sports.customize.selectGroupAll": "Select all",
+ "sports.customize.title": "Customize Leagues",
+ "Spotlight": "Spotlight",
+ "Spotlight {n}": "Spotlight {n}",
+ "Spring Awakening": "Spring Awakening",
+ "Square": "Square",
+ "Stable": "Stable",
+ "Stable selectors": "Stable selectors",
+ "Stance": "Stance",
+ "Standalone guide source to attach to existing playlists.": "Standalone guide source to attach to existing playlists.",
+ "star": "star",
+ "Starring a Favorite": "Starring a Favorite",
+ "stars": "stars",
+ "Start a new room": "Start a new room",
+ "Start a room first.": "Start a room first.",
+ "Start anyway ({n} still loading)": "Start anyway ({n} still loading)",
+ "Start here. The ones almost everyone has.": "Start here. The ones almost everyone has.",
+ "Start or stop recording a GIF of the video (no subtitles). Saves to Pictures/Harbor.": "Start or stop recording a GIF of the video (no subtitles). Saves to Pictures/Harbor.",
+ "Start Over": "Start Over",
+ "Start recording": "Start recording",
+ "Start server": "Start server",
+ "Start trailers with audio": "Start trailers with audio",
+ "Start watching": "Start watching",
+ "Start Watching": "Start Watching",
+ "Start week on Monday": "Start week on Monday",
+ "Start with subtitles off": "Start with subtitles off",
+ "Starters": "Starters",
+ "Starting": "Starting",
+ "Starting…": "Starting…",
+ "Starts at": "Starts at",
+ "Startup & default": "Startup & default",
+ "Statistics not available yet.": "Statistics not available yet.",
+ "stats": "stats",
+ "Status": "Status",
+ "Stay": "Stay",
+ "Stay in fullscreen after closing the player": "Stay in fullscreen after closing the player",
+ "Stays signed in on this device only.": "Stays signed in on this device only.",
+ "Steals": "Steals",
+ "Step 1 · Metadata": "Step 1 · Metadata",
+ "Step 1 · Open Simkl": "Step 1 · Open Simkl",
+ "Step 1 · Open Trakt": "Step 1 · Open Trakt",
+ "Step 2 · Enter this code": "Step 2 · Enter this code",
+ "Step 2 · Stremio": "Step 2 · Stremio",
+ "Step 3 · Streaming": "Step 3 · Streaming",
+ "Step 4 · Subtitles": "Step 4 · Subtitles",
+ "Step back one frame and pause. Frame-accurate on mpv.": "Step back one frame and pause. Frame-accurate on mpv.",
+ "Step forward one frame and pause. Frame-accurate on mpv.": "Step forward one frame and pause. Frame-accurate on mpv.",
+ "Step zoom in to crop baked-in black bars (Zoom mode).": "Step zoom in to crop baked-in black bars (Zoom mode).",
+ "Step zoom out to restore baked-in black bars (Zoom mode).": "Step zoom out to restore baked-in black bars (Zoom mode).",
+ "Stepper": "Stepper",
+ "Steps to reproduce": "Steps to reproduce",
+ "Still {n}": "Still {n}",
+ "Stills": "Stills",
+ "Stoner Auteur": "Stoner Auteur",
+ "Stop": "Stop",
+ "Stop drawing": "Stop drawing",
+ "Stop feeding the hero carousel (back to automatic)": "Stop feeding the hero carousel (back to automatic)",
+ "Stop playback when you minimize Harbor or send it to the tray.": "Stop playback when you minimize Harbor or send it to the tray.",
+ "Stop playback whenever another window takes focus.": "Stop playback whenever another window takes focus.",
+ "Stop recording": "Stop recording",
+ "Stop relay": "Stop relay",
+ "Stop-Motion": "Stop-Motion",
+ "Stopped": "Stopped",
+ "Stopping…": "Stopping…",
+ "Stored as a standalone EPG source. No channels are loaded for EPG-only entries; they're kept here for future attachment to existing playlists.": "Stored as a standalone EPG source. No channels are loaded for EPG-only entries; they're kept here for future attachment to existing playlists.",
+ "Stored locally on this device. Credentials never leave your machine. If a channel fails to play, your provider may rate-limit shared accounts: refresh the playlist or check with them.": "Stored locally on this device. Credentials never leave your machine. If a channel fails to play, your provider may rate-limit shared accounts: refresh the playlist or check with them.",
+ "Stories that reward your attention before the day gets loud.": "Stories that reward your attention before the day gets loud.",
+ "Stream": "Stream",
+ "Stream / addons": "Stream / addons",
+ "Stream / addons instead": "Stream / addons instead",
+ "Stream cache": "Stream cache",
+ "Stream descriptions": "Stream descriptions",
+ "Stream failed to load": "Stream failed to load",
+ "Stream format chips": "Stream format chips",
+ "Stream is taking a while": "Stream is taking a while",
+ "Stream quality in player": "Stream quality in player",
+ "Stream safety filter": "Stream safety filter",
+ "Stream should start playing within a few seconds.": "Stream should start playing within a few seconds.",
+ "Stream switcher": "Stream switcher",
+ "Stream torrents straight from Harbor's built-in engine when you have no debrid set up, or a torrent isn't cached. This connects to peers over your own connection. Turn off to only ever play debrid and direct links.": "Stream torrents straight from Harbor's built-in engine when you have no debrid set up, or a torrent isn't cached. This connects to peers over your own connection. Turn off to only ever play debrid and direct links.",
+ "Stream torrents through Harbor's own Rust peer-to-peer engine instead of the bundled Stremio Server. Falls back automatically if it can't connect. Status and a self-test live in the Local engine card below.": "Stream torrents through Harbor's own Rust peer-to-peer engine instead of the bundled Stremio Server. Falls back automatically if it can't connect. Status and a self-test live in the Local engine card below.",
+ "Streamers": "Streamers",
+ "Streaming": "Streaming",
+ "Streaming catalogs": "Streaming catalogs",
+ "Streaming quality": "Streaming quality",
+ "Streaming sources": "Streaming sources",
+ "Streams": "Streams",
+ "Streams from peers": "Streams from peers",
+ "Streams in these languages rank first. Toggle below to drop everything else.": "Streams in these languages rank first. Toggle below to drop everything else.",
+ "Streams over {cap} Mbps will rank lower, even when cached.": "Streams over {cap} Mbps will rank lower, even when cached.",
+ "Stremio": "Stremio",
+ "Stremio account": "Stremio account",
+ "Stremio addon, packaged into Harbor's catalog.": "Stremio addon, packaged into Harbor's catalog.",
+ "Stremio cards": "Stremio cards",
+ "Stremio didn't confirm the save. Your collection may be unchanged. Retry will re-check before writing again.": "Stremio didn't confirm the save. Your collection may be unchanged. Retry will re-check before writing again.",
+ "Stremio ID": "Stremio ID",
+ "Stremio install links": "Stremio install links",
+ "Stremio library repair": "Stremio library repair",
+ "Stremio link": "Stremio link",
+ "Stremio link copied": "Stremio link copied",
+ "Stremio rail": "Stremio rail",
+ "Stremio reports a different order than was saved.": "Stremio reports a different order than was saved.",
+ "stremio:// link": "stremio:// link",
+ "stremio:// links now open in the Stremio app. Harbor will only install when you trigger it from inside Harbor.": "stremio:// links now open in the Stremio app. Harbor will only install when you trigger it from inside Harbor.",
+ "Stremio's typeface. Geometric humanist sans.": "Stremio's typeface. Geometric humanist sans.",
+ "Stretch the featured hero edge to edge and taller, across every layout.": "Stretch the featured hero edge to edge and taller, across every layout.",
+ "Strict": "Strict",
+ "Strict filters dropped everything": "Strict filters dropped everything",
+ "Strikeouts": "Strikeouts",
+ "Strikes": "Strikes",
+ "Strong desktops with a dedicated graphics card": "Strong desktops with a dedicated graphics card",
+ "Studio": "Studio",
+ "Stunts & Spies": "Stunts & Spies",
+ "Style name": "Style name",
+ "Style the timeline at the bottom of the player. Swap the dot for a sticker, change the bar height, recolor it. Settings live-preview right here.": "Style the timeline at the bottom of the player. Swap the dot for a sticker, change the bar height, recolor it. Settings live-preview right here.",
+ "Styled (ASS) subs keep their own fonts, colors, and effects. Truest to the release.": "Styled (ASS) subs keep their own fonts, colors, and effects. Truest to the release.",
+ "Styled (ASS) subtitles": "Styled (ASS) subtitles",
+ "subdomain acts as the access token. There is no login.": "subdomain acts as the access token. There is no login.",
+ "Submit": "Submit",
+ "Submit bug report": "Submit bug report",
+ "Submit report": "Submit report",
+ "subscriber API key": "subscriber API key",
+ "Subtitle": "Subtitle",
+ "Subtitle appearance": "Subtitle appearance",
+ "Subtitle background": "Subtitle background",
+ "Subtitle color {color}": "Subtitle color {color}",
+ "Subtitle delay +0.1s": "Subtitle delay +0.1s",
+ "Subtitle delay −0.1s": "Subtitle delay −0.1s",
+ "Subtitle font size": "Subtitle font size",
+ "Subtitle languages": "Subtitle languages",
+ "Subtitle style": "Subtitle style",
+ "Subtitle sync": "Subtitle sync",
+ "Subtitle track": "Subtitle track",
+ "Subtitles": "Subtitles",
+ "Subtitles are baked into the picture so they always show. Re-encodes the video.": "Subtitles are baked into the picture so they always show. Re-encodes the video.",
+ "Subtitles haven't been published yet. Try search below or check back in a few days.": "Subtitles haven't been published yet. Try search below or check back in a few days.",
+ "Subtitles may not appear on the TV.": "Subtitles may not appear on the TV.",
+ "Subtle Apple-like sheen on the filled portion.": "Subtle Apple-like sheen on the filled portion.",
+ "summary": "summary",
+ "Summary": "Summary",
+ "Summary needs at least 6 characters": "Summary needs at least 6 characters",
+ "Summer Blockbusters": "Summer Blockbusters",
+ "Sun": "Sun",
+ "Sundown": "Sundown",
+ "Superheroes": "Superheroes",
+ "Supernatural": "Supernatural",
+ "Supporting": "Supporting",
+ "Surprise me": "Surprise me",
+ "Suspense": "Suspense",
+ "Suspicious file": "Suspicious file",
+ "SVP (free)": "SVP (free)",
+ "SVP couldn't start, playing without smoothing": "SVP couldn't start, playing without smoothing",
+ "SVP frame interpolation": "SVP frame interpolation",
+ "SVP is already handling frame interpolation. Turn off SVP below to use this instead. Running both delays the audio.": "SVP is already handling frame interpolation. Turn off SVP below to use this instead. Running both delays the audio.",
+ "SVP is installed but Harbor couldn't find its engine files (svpflow + VapourSynth). Try repairing the SVP install, or reopen SVP once.": "SVP is installed but Harbor couldn't find its engine files (svpflow + VapourSynth). Try repairing the SVP install, or reopen SVP once.",
+ "SVP's files are here but its VapourSynth engine won't load ({err}). This usually means a stale VapourSynth entry or a missing Microsoft VC++ runtime. Reinstall SVP, or install the latest \\": "SVP's files are here but its VapourSynth engine won't load ({err}). This usually means a stale VapourSynth entry or a missing Microsoft VC++ runtime. Reinstall SVP, or install the latest \\",
+ "Swapping configuration": "Swapping configuration",
+ "Swedish": "Swedish",
+ "Switch": "Switch",
+ "Switch profile": "Switch profile",
+ "Switch stream": "Switch stream",
+ "Switch stream / TV Guide": "Switch stream / TV Guide",
+ "Switch the menus and buttons to your language. Arabic flips the layout to right to left.": "Switch the menus and buttons to your language. Arabic flips the layout to right to left.",
+ "Switch to {name}": "Switch to {name}",
+ "Switch to channel list (hide program guide)": "Switch to channel list (hide program guide)",
+ "Switch to Manual in settings if you'd rather pick the source yourself.": "Switch to Manual in settings if you'd rather pick the source yourself.",
+ "Switch to program guide": "Switch to program guide",
+ "Switch to this playlist first": "Switch to this playlist first",
+ "Sword & Sorcery": "Sword & Sorcery",
+ "Symptom": "Symptom",
+ "Sync": "Sync",
+ "Sync and track movies, shows, and anime across everything you use. Harbor marks what you finish as watched on Simkl and keeps your plan-to-watch list in step. Free at simkl.com.": "Sync and track movies, shows, and anime across everything you use. Harbor marks what you finish as watched on Simkl and keeps your plan-to-watch list in step. Free at simkl.com.",
+ "Sync now": "Sync now",
+ "Sync Offset": "Sync Offset",
+ "Sync subtitles via text": "Sync subtitles via text",
+ "Sync unavailable": "Sync unavailable",
+ "Sync via text": "Sync via text",
+ "Sync watch progress": "Sync watch progress",
+ "Sync your library, watch progress, and installed addons across every device.": "Sync your library, watch progress, and installed addons across every device.",
+ "Sync your MyAnimeList watch progress and list as you finish episodes.": "Sync your MyAnimeList watch progress and list as you finish episodes.",
+ "Synced addons": "Synced addons",
+ "Synced to Trakt": "Synced to Trakt",
+ "Synchronizes playback state between participants in the same room.": "Synchronizes playback state between participants in the same room.",
+ "Syncing to Stremio": "Syncing to Stremio",
+ "Syncing Trakt…": "Syncing Trakt…",
+ "Syncing…": "Syncing…",
+ "Synopsis": "Synopsis",
+ "System": "System",
+ "System default": "System default",
+ "System tray": "System tray",
+ "Tackle %": "Tackle %",
+ "Tackles": "Tackles",
+ "Takes about 10 seconds.": "Takes about 10 seconds.",
+ "Tamil": "Tamil",
+ "Tap": "Tap",
+ "Tap a line to jump there, then nudge until the subtitles match what you hear.": "Tap a line to jump there, then nudge until the subtitles match what you hear.",
+ "Tap a line, then nudge": "Tap a line, then nudge",
+ "Tap one until your show plays nice and clear!": "Tap one until your show plays nice and clear!",
+ "Tap the genres you want more of. They steer the Top Picks row at the top of this page.": "Tap the genres you want more of. They steer the Top Picks row at the top of this page.",
+ "Tarantino Picks": "Tarantino Picks",
+ "TBD": "TBD",
+ "Team Turnovers": "Team Turnovers",
+ "Technical details": "Technical details",
+ "Technical Fouls": "Technical Fouls",
+ "Technical. IBM's open family.": "Technical. IBM's open family.",
+ "Telegram bot": "Telegram bot",
+ "Telegram sends through a bot you create. You need two things: a": "Telegram sends through a bot you create. You need two things: a",
+ "Television's finest": "Television's finest",
+ "Tense Performances": "Tense Performances",
+ "Test": "Test",
+ "Test connection": "Test connection",
+ "Test failed": "Test failed",
+ "Test relay": "Test relay",
+ "Testing": "Testing",
+ "Testing…": "Testing…",
+ "Text color": "Text color",
+ "Text mode — Esc to exit": "Text mode — Esc to exit",
+ "Text Sync": "Text Sync",
+ "Text sync unavailable for embedded tracks": "Text sync unavailable for embedded tracks",
+ "Text-based sync": "Text-based sync",
+ "Thai": "Thai",
+ "Thanks! This helps us know the betas are heading the right way.": "Thanks! This helps us know the betas are heading the right way.",
+ "Thanks. Sent for review.": "Thanks. Sent for review.",
+ "That is a large correction ({n}%). One of the two points may be off, double-check them.": "That is a large correction ({n}%). One of the two points may be off, double-check them.",
+ "That list is private or doesn't exist. Public lists only.": "That list is private or doesn't exist. Public lists only.",
+ "That's every {category} collection we could find.": "That's every {category} collection we could find.",
+ "That's every collection TMDB knows about.": "That's every collection TMDB knows about.",
+ "That's everything Cinemeta has for {genre}. Add a TMDB key for deeper rails.": "That's everything Cinemeta has for {genre}. Add a TMDB key for deeper rails.",
+ "That's not it. Try a fresh round in a moment.": "That's not it. Try a fresh round in a moment.",
+ "The authorization code timed out before you finished. Try again.": "The authorization code timed out before you finished. Try again.",
+ "The Backups button at the top keeps your last five orders. One click restores any of them.": "The Backups button at the top keeps your last five orders. One click restores any of them.",
+ "The best {genre} {media}, layered by mood. Browse trending, dive into a director's run, sort by decade, find quiet gems.": "The best {genre} {media}, layered by mood. Browse trending, dive into a director's run, sort by decade, find quiet gems.",
+ "The Boogeyman": "The Boogeyman",
+ "The Boss": "The Boss",
+ "The British Academy": "The British Academy",
+ "The CPU decodes everything. Most compatible, but it runs hot and can stutter on 4K. Use this only if the picture glitches with hardware decoding on.": "The CPU decodes everything. Most compatible, but it runs hot and can stutter on 4K. Use this only if the picture glitches with hardware decoding on.",
+ "The credentials in the URL are wrong. Edit the playlist and double check the username and password against what your provider sent.": "The credentials in the URL are wrong. Edit the playlist and double check the username and password against what your provider sent.",
+ "The critics' cut": "The critics' cut",
+ "The default round dot.": "The default round dot.",
+ "The end time has to be after the start.": "The end time has to be after the start.",
+ "The escape hatch for power users. One mpv option per line as key=value, exactly like mpv.conf. These apply last, so they override every dial above. Anything Harbor can't read is skipped, so a typo won't break playback. Restart playback to apply.": "The escape hatch for power users. One mpv option per line as key=value, exactly like mpv.conf. These apply last, so they override every dial above. Anything Harbor can't read is skipped, so a typo won't break playback. Restart playback to apply.",
+ "The Harbor relay is a Cloudflare Worker that hosts WebSocket rooms for Watch Together. Each user runs their own. There is no central Harbor server.": "The Harbor relay is a Cloudflare Worker that hosts WebSocket rooms for Watch Together. Each user runs their own. There is no central Harbor server.",
+ "The Home Front": "The Home Front",
+ "The host did not respond. The URL may have expired (many providers rotate domains), the server is down, or your network is blocking it. Contact your provider for an updated URL.": "The host did not respond. The URL may have expired (many providers rotate domains), the server is down, or your network is blocking it. Contact your provider for an updated URL.",
+ "The host starts playback for the whole room.": "The host starts playback for the whole room.",
+ "The King": "The King",
+ "The Last Stand": "The Last Stand",
+ "The lighter fill showing how much is buffered or downloaded ahead. It hides automatically once a stream is fully cached (green dot).": "The lighter fill showing how much is buffered or downloaded ahead. It hides automatically once a stream is fully cached (green dot).",
+ "The little 4K · HDR · codec · audio chips that ride along each stream in the play picker.": "The little 4K · HDR · codec · audio chips that ride along each stream in the play picker.",
+ "The Long Lunch": "The Long Lunch",
+ "The Master": "The Master",
+ "The most anticipated upcoming releases on Trakt": "The most anticipated upcoming releases on Trakt",
+ "The most anticipated upcoming releases on Trakt. No login needed.": "The most anticipated upcoming releases on Trakt. No login needed.",
+ "The most-watched movies and series on {name} right now in {region}.": "The most-watched movies and series on {name} right now in {region}.",
+ "The myth, reconsidered": "The myth, reconsidered",
+ "The order also decides which addon's rows win on your Home screen.": "The order also decides which addon's rows win on your Home screen.",
+ "The order decides who answers first when you press Play. Drag, use the arrows, or jump anything straight to the top.": "The order decides who answers first when you press Play. Drag, use the arrows, or jump anything straight to the top.",
+ "The picker tags each stream with resolution, HDR flavor, codec, and audio format. Off hides them all.": "The picker tags each stream with resolution, HDR flavor, codec, and audio format. Off hides them all.",
+ "The playlist server actively refused the connection.": "The playlist server actively refused the connection.",
+ "The playlist server is down or your network is blocking it. Try again in a few minutes.": "The playlist server is down or your network is blocking it. Try again in a few minutes.",
+ "The quick brown fox jumps over the lazy dog": "The quick brown fox jumps over the lazy dog",
+ "The real footage": "The real footage",
+ "The series that make the rest of the night disappear.": "The series that make the rest of the night disappear.",
+ "The server answered with status {status}. Is that a streaming server?": "The server answered with status {status}. Is that a streaming server?",
+ "The server is reachable but is not sending any data. Check the URL or contact your provider.": "The server is reachable but is not sending any data. Check the URL or contact your provider.",
+ "The server rejected the request. Some providers block generic clients; verify the credentials work in their official app first.": "The server rejected the request. Some providers block generic clients; verify the credentials work in their official app first.",
+ "The server replied with a webpage instead of Xtream data. The account may be expired, or the server URL is not an Xtream panel.": "The server replied with a webpage instead of Xtream data. The account may be expired, or the server URL is not an Xtream panel.",
+ "The server responded but the playlist is not at that URL. Check for typos and verify with your provider.": "The server responded but the playlist is not at that URL. Check for typos and verify with your provider.",
+ "The server URL, username, or password is wrong. Edit the playlist and re-check the credentials your provider sent.": "The server URL, username, or password is wrong. Edit the playlist and re-check the credentials your provider sent.",
+ "The test calls": "The test calls",
+ "The test calls {code} and confirms the worker is reachable and running a current version. A passing test means Watch Together rooms will connect.": "The test calls {code} and confirms the worker is reachable and running a current version. A passing test means Watch Together rooms will connect.",
+ "The Trenches": "The Trenches",
+ "The URL hostname is wrong or no longer exists. Many providers rotate domains; ask your provider for an updated playlist URL.": "The URL hostname is wrong or no longer exists. Many providers rotate domains; ask your provider for an updated playlist URL.",
+ "The URL is valid but the playlist is empty. The provider may be in maintenance, or the URL is misconfigured.": "The URL is valid but the playlist is empty. The provider may be in maintenance, or the URL is misconfigured.",
+ "The web build can't run mpv, the trickplay generator, the local bandwidth probe, or your own Cloudflare relay. If you want HDR passthrough, TrueHD or DTS-HD audio, and smoother seeking, grab the desktop app.": "The web build can't run mpv, the trickplay generator, the local bandwidth probe, or your own Cloudflare relay. If you want HDR passthrough, TrueHD or DTS-HD audio, and smoother seeking, grab the desktop app.",
+ "The yellow chip in the poster corner.": "The yellow chip in the poster corner.",
+ "Theme": "Theme",
+ "Theme & appearance": "Theme & appearance",
+ "Theme cheat sheet": "Theme cheat sheet",
+ "Theme Library": "Theme Library",
+ "Themes you imported or built.": "Themes you imported or built.",
+ "Themes you keep returning to": "Themes you keep returning to",
+ "THEN notify on": "THEN notify on",
+ "These live in Harbor on this computer and never touch your account.": "These live in Harbor on this computer and never touch your account.",
+ "These rails activate once a TMDB key is set. You can come back to this anytime in Settings.": "These rails activate once a TMDB key is set. You can come back to this anytime in Settings.",
+ "These tune the bundled mpv engine, which runs in the Harbor desktop app. They have no effect in the browser.": "These tune the bundled mpv engine, which runs in the Harbor desktop app. They have no effect in the browser.",
+ "These two points are very close ({n}s apart). Pick one near the start and one near the end, or the timing can drift at the edges.": "These two points are very close ({n}s apart). Pick one near the start and one near the end, or the timing can drift at the edges.",
+ "TheTVDB · episode data": "TheTVDB · episode data",
+ "Thicker outline": "Thicker outline",
+ "Thickness": "Thickness",
+ "Thinner outline": "Thinner outline",
+ "This Afternoon": "This Afternoon",
+ "This and next: + {title}": "This and next: + {title}",
+ "This channel isn't responding": "This channel isn't responding",
+ "This file has one audio track.": "This file has one audio track.",
+ "This file is flagged as not web-playable. Try the mpv backend in Settings or pick another stream.": "This file is flagged as not web-playable. Try the mpv backend in Settings or pick another stream.",
+ "This file is in OneDrive. If \"Files On-Demand\" is on, the file is a cloud placeholder until it's downloaded. Right-click it in Explorer and pick": "This file is in OneDrive. If \"Files On-Demand\" is on, the file is a cloud placeholder until it's downloaded. Right-click it in Explorer and pick",
+ "This file is in OneDrive. If \\": "This file is in OneDrive. If \\",
+ "This instance of Harbor is made for desktop. Our standalone iOS and Android apps are coming soon, each with a bespoke, mobile-first experience built for its native platform.": "This instance of Harbor is made for desktop. Our standalone iOS and Android apps are coming soon, each with a bespoke, mobile-first experience built for its native platform.",
+ "This is in your local library": "This is in your local library",
+ "This list is empty, or its items couldn't be matched.": "This list is empty, or its items couldn't be matched.",
+ "This list needs your {key} API key. Add it in Settings, then refresh.": "This list needs your {key} API key. Add it in Settings, then refresh.",
+ "This month": "This month",
+ "This Morning": "This Morning",
+ "This order syncs to every Stremio app signed into this account.": "This order syncs to every Stremio app signed into this account.",
+ "This playlist has no movies. It may be live channels only, or an Xtream login that exposes movies separately.": "This playlist has no movies. It may be live channels only, or an Xtream login that exposes movies separately.",
+ "This playlist has no shows. It may be live channels only, or an Xtream login that exposes shows separately.": "This playlist has no shows. It may be live channels only, or an Xtream login that exposes shows separately.",
+ "This replaces your current Harbor setup (theme, home layout, settings, addons, profiles, and more) with the {n} saved entries in this file. Your Stremio sign-in stays as is. Harbor reloads when it finishes.": "This replaces your current Harbor setup (theme, home layout, settings, addons, profiles, and more) with the {n} saved entries in this file. Your Stremio sign-in stays as is. Harbor reloads when it finishes.",
+ "This section depends on the addon": "This section depends on the addon",
+ "This section relies on TMDB discovery features.": "This section relies on TMDB discovery features.",
+ "This sets metadata, subtitle, and audio languages to match.": "This sets metadata, subtitle, and audio languages to match.",
+ "This show: {title}": "This show: {title}",
+ "This source": "This source",
+ "This source is slow. Try another.": "This source is slow. Try another.",
+ "This thread is locked.": "This thread is locked.",
+ "this title": "this title",
+ "This trailer plays on YouTube.": "This trailer plays on YouTube.",
+ "This usually means antivirus removed the server file (stremio-server.exe). Add Harbor's install folder to your antivirus exclusions, then reinstall.": "This usually means antivirus removed the server file (stremio-server.exe). Add Harbor's install folder to your antivirus exclusions, then reinstall.",
+ "This week": "This week",
+ "This Xtream account is expired, banned, or disabled on the provider side. Renew or confirm with your provider.": "This Xtream account is expired, banned, or disabled on the provider side. Renew or confirm with your provider.",
+ "Thread body (optional)": "Thread body (optional)",
+ "Thread title": "Thread title",
+ "Three Point %": "Three Point %",
+ "Three-Time Oscar": "Three-Time Oscar",
+ "Thriller": "Thriller",
+ "Thrillers": "Thrillers",
+ "Thu": "Thu",
+ "Thumbs down hides this title from Featured. Thumbs up helps surface similar picks.": "Thumbs down hides this title from Featured. Thumbs up helps surface similar picks.",
+ "Ticking Clocks": "Ticking Clocks",
+ "Tighter spacing": "Tighter spacing",
+ "Tiles horizontally; the bar's height crops it vertically. Animated GIFs up to 2 MB play.": "Tiles horizontally; the bar's height crops it vertically. Animated GIFs up to 2 MB play.",
+ "Time elapsed": "Time elapsed",
+ "Time format": "Time format",
+ "Time remaining or duration": "Time remaining or duration",
+ "Time's up!": "Time's up!",
+ "Timeless": "Timeless",
+ "title": "title",
+ "Title": "Title",
+ "Title & info": "Title & info",
+ "Title info": "Title info",
+ "Title text": "Title text",
+ "titles": "titles",
+ "Titles, overviews, and taglines from TMDB display in this language when a translation exists. Needs a TMDB key.": "Titles, overviews, and taglines from TMDB display in this language when a translation exists. Needs a TMDB key.",
+ "TMDB": "TMDB",
+ "TMDB · catalogs and rails": "TMDB · catalogs and rails",
+ "TMDB asks for an app URL when you create the key. Put any URL at all, like https://harbor.app. The only thing you need back is the API key.": "TMDB asks for an app URL when you create the key. Put any URL at all, like https://harbor.app. The only thing you need back is the API key.",
+ "TMDB connected. {n} streaming {services} on. Welcome aboard.": "TMDB connected. {n} streaming {services} on. Welcome aboard.",
+ "TMDB has no notable releases for this month and region.": "TMDB has no notable releases for this month and region.",
+ "TMDB powers the firehose of every release this month. The free tier covers it. About 60 seconds to set up. Switch to My Library if you'd rather only see what you've saved.": "TMDB powers the firehose of every release this month. The free tier covers it. About 60 seconds to set up. Switch to My Library if you'd rather only see what you've saved.",
+ "TMDB Rating": "TMDB Rating",
+ "to bring in your library.": "to bring in your library.",
+ "to close": "to close",
+ "to refresh the bundled dataset.": "to refresh the bundled dataset.",
+ "To run a public relay, post the": "To run a public relay, post the",
+ "To run a public relay, post the {code} URL on r/Stremio or wherever your community lives. Other Harbor users paste it into Settings, Harbor Relay, {kbd}.": "To run a public relay, post the {code} URL on r/Stremio or wherever your community lives. Other Harbor users paste it into Settings, Harbor Relay, {kbd}.",
+ "To the side": "To the side",
+ "today": "today",
+ "Today": "Today",
+ "Today's openers": "Today's openers",
+ "Toggle a sleep timer that pauses when this episode ends.": "Toggle a sleep timer that pauses when this episode ends.",
+ "Toggle fullscreen": "Toggle fullscreen",
+ "Toggle guide layout": "Toggle guide layout",
+ "Toggle HDR to SDR": "Toggle HDR to SDR",
+ "Toggle mute": "Toggle mute",
+ "Toggle playback.": "Toggle playback.",
+ "Toggle RTX Video HDR": "Toggle RTX Video HDR",
+ "Toggle RTX Video HDR during mpv playback. Unavailable while HDR-to-SDR tonemapping or SVP is active.": "Toggle RTX Video HDR during mpv playback. Unavailable while HDR-to-SDR tonemapping or SVP is active.",
+ "Toggle stats overlay": "Toggle stats overlay",
+ "Token name can be anything. The permission row must be exactly {b1} + {b2} + {b3}.": "Token name can be anything. The permission row must be exactly {b1} + {b2} + {b3}.",
+ "Token works, but no accounts came back. Check the token's permissions.": "Token works, but no accounts came back. Check the token's permissions.",
+ "Tomatometer": "Tomatometer",
+ "tomorrow": "tomorrow",
+ "Tone-mapping curve": "Tone-mapping curve",
+ "Tonemap to SDR": "Tonemap to SDR",
+ "Tonight": "Tonight",
+ "Tonight's binge bait": "Tonight's binge bait",
+ "Tonight's lineup": "Tonight's lineup",
+ "Tonight's main event": "Tonight's main event",
+ "Tonight's marquee": "Tonight's marquee",
+ "Tonight's Slate": "Tonight's Slate",
+ "Too many requests from your IP. Wait a minute and try again.": "Too many requests from your IP. Wait a minute and try again.",
+ "Tools": "Tools",
+ "Top": "Top",
+ "Top · left": "Top · left",
+ "Top · right": "Top · right",
+ "Top {n}": "Top {n}",
+ "Top 10": "Top 10",
+ "Top 10 {name}": "Top 10 {name}",
+ "Top 10 Comedy": "Top 10 Comedy",
+ "Top 10 Drama": "Top 10 Drama",
+ "Top 10 Movies on {name}": "Top 10 Movies on {name}",
+ "Top 10 Movies Today": "Top 10 Movies Today",
+ "Top 10 on Stremio": "Top 10 on Stremio",
+ "Top 10 Series on {name}": "Top 10 Series on {name}",
+ "Top 10 Series Today": "Top 10 Series Today",
+ "Top 10 Trending This Week": "Top 10 Trending This Week",
+ "Top 100 Actors": "Top 100 Actors",
+ "Top 100 Directors": "Top 100 Directors",
+ "Top 100 on AniList": "Top 100 on AniList",
+ "Top 100 Producers": "Top 100 Producers",
+ "Top 100 Writers": "Top 100 Writers",
+ "Top 250": "Top 250",
+ "Top Action": "Top Action",
+ "Top Adventure": "Top Adventure",
+ "Top Airing on MAL": "Top Airing on MAL",
+ "Top Animation": "Top Animation",
+ "Top bar": "Top bar",
+ "Top Comedy": "Top Comedy",
+ "Top Crime": "Top Crime",
+ "Top dock": "Top dock",
+ "Top Documentary": "Top Documentary",
+ "Top Drama": "Top Drama",
+ "Top Fantasy": "Top Fantasy",
+ "Top Horror": "Top Horror",
+ "Top left": "Top left",
+ "Top Movies": "Top Movies",
+ "Top Movies on MAL": "Top Movies on MAL",
+ "Top Mystery": "Top Mystery",
+ "Top pick": "Top pick",
+ "Top Picks for You": "Top Picks for You",
+ "Top rated": "Top rated",
+ "Top Rated": "Top Rated",
+ "Top rated abroad": "Top rated abroad",
+ "Top Rated Movies": "Top Rated Movies",
+ "Top Rated on MAL": "Top Rated on MAL",
+ "Top Rated Series": "Top Rated Series",
+ "Top rated television": "Top rated television",
+ "Top right": "Top right",
+ "Top rising": "Top rising",
+ "Top Romance": "Top Romance",
+ "Top Sci-Fi": "Top Sci-Fi",
+ "Top Series": "Top Series",
+ "Top Series on MAL": "Top Series on MAL",
+ "Top Thriller": "Top Thriller",
+ "Top titles per service. Toggle off the ones you don't pay for.": "Top titles per service. Toggle off the ones you don't pay for.",
+ "TorBox API key": "TorBox API key",
+ "Torrent name": "Torrent name",
+ "Torrents": "Torrents",
+ "Total Shots": "Total Shots",
+ "Total Technical Fouls": "Total Technical Fouls",
+ "Total Turnovers": "Total Turnovers",
+ "Towering Roles": "Towering Roles",
+ "Track": "Track",
+ "Track everything you watch, see your watchlist, and get personalized recommendations on Harbor's home page. Free at trakt.tv.": "Track everything you watch, see your watchlist, and get personalized recommendations on Harbor's home page. Free at trakt.tv.",
+ "Track people": "Track people",
+ "Track people ({n})": "Track people ({n})",
+ "Track switching isn't supported on the current engine. The file's default audio is playing.": "Track switching isn't supported on the current engine. The file's default audio is playing.",
+ "Tracked people": "Tracked people",
+ "Tracks": "Tracks",
+ "TRACKS": "TRACKS",
+ "Trailer quality": "Trailer quality",
+ "Trakt": "Trakt",
+ "Trakt account limit reached. Upgrade to Trakt VIP or trim your watchlist.": "Trakt account limit reached. Upgrade to Trakt VIP or trim your watchlist.",
+ "Trakt anticipated": "Trakt anticipated",
+ "Trakt anticipated picks up something": "Trakt anticipated picks up something",
+ "Trakt Comments": "Trakt Comments",
+ "Trakt comments are not available for anime titles.": "Trakt comments are not available for anime titles.",
+ "Trakt community rating as a percentage.": "Trakt community rating as a percentage.",
+ "Trakt has no upcoming releases for your watchlist this month. Past months and dates more than six months out aren't covered by Trakt's calendar feed.": "Trakt has no upcoming releases for your watchlist this month. Past months and dates more than six months out aren't covered by Trakt's calendar feed.",
+ "Trakt history": "Trakt history",
+ "Trakt is having server trouble (HTTP {n}). Try again shortly.": "Trakt is having server trouble (HTTP {n}). Try again shortly.",
+ "Trakt is rate-limiting. Wait a minute and try again.": "Trakt is rate-limiting. Wait a minute and try again.",
+ "Trakt rejected the request (account locked or permission denied).": "Trakt rejected the request (account locked or permission denied).",
+ "Trakt rejected the request (HTTP {n}).": "Trakt rejected the request (HTTP {n}).",
+ "Trakt reported that authorization was denied. Try again if this was unintentional.": "Trakt reported that authorization was denied. Try again if this was unintentional.",
+ "Trakt sign-in expired. Reconnect Trakt in settings and try again.": "Trakt sign-in expired. Reconnect Trakt in settings and try again.",
+ "Trakt sources": "Trakt sources",
+ "Trakt watchlist": "Trakt watchlist",
+ "Translate descriptions": "Translate descriptions",
+ "Translate descriptions and synopsis to Arabic": "Translate descriptions and synopsis to Arabic",
+ "Translate overviews": "Translate overviews",
+ "Translate plot descriptions and taglines into the language above. Turn off to keep English overviews.": "Translate plot descriptions and taglines into the language above. Turn off to keep English overviews.",
+ "Translate posters": "Translate posters",
+ "Translate series and movie posters to Arabic if available on TMDB": "Translate series and movie posters to Arabic if available on TMDB",
+ "Translate titles": "Translate titles",
+ "Transport": "Transport",
+ "Trending": "Trending",
+ "Trending · Cinemeta": "Trending · Cinemeta",
+ "Trending Anime": "Trending Anime",
+ "Trending on AniList": "Trending on AniList",
+ "Trending Series": "Trending Series",
+ "Trending This Week": "Trending This Week",
+ "Trending tracks star growth across your Harbor visits. Open the addons page again tomorrow and the top risers will appear here.": "Trending tracks star growth across your Harbor visits. Open the addons page again tomorrow and the top risers will appear here.",
+ "Trending, in theaters, what's on every streamer.": "Trending, in theaters, what's on every streamer.",
+ "Tried IDs: ": "Tried IDs: ",
+ "Troubleshooting": "Troubleshooting",
+ "True Crime": "True Crime",
+ "True Crime Files": "True Crime Files",
+ "True HDR, embedded": "True HDR, embedded",
+ "True HDR, separate window": "True HDR, separate window",
+ "True Stories": "True Stories",
+ "Try a different category or clear your filters.": "Try a different category or clear your filters.",
+ "Try a different source.": "Try a different source.",
+ "Try a different spelling, a person's name, a year like \\": "Try a different spelling, a person's name, a year like \\",
+ "Try a genre": "Try a genre",
+ "Try again": "Try again",
+ "Try another source.": "Try another source.",
+ "Try deploy again": "Try deploy again",
+ "Try signing in to Stremio so Harbor can use your addon collection. Older or foreign titles often need Torrentio + a debrid addon to find anything.": "Try signing in to Stremio so Harbor can use your addon collection. Older or foreign titles often need Torrentio + a debrid addon to find anything.",
+ "Tue": "Tue",
+ "Tune picks": "Tune picks",
+ "Tune the size and corner radius of every poster across Home, Discover, and your library. The preview updates live.": "Tune the size and corner radius of every poster across Home, Discover, and your library. The preview updates live.",
+ "Tune your picks": "Tune your picks",
+ "Tune your recommendations": "Tune your recommendations",
+ "Tune your Top Picks": "Tune your Top Picks",
+ "Turkish": "Turkish",
+ "Turn {name} off": "Turn {name} off",
+ "Turn {name} on": "Turn {name} on",
+ "Turn it on in Player layout": "Turn it on in Player layout",
+ "Turn It Up": "Turn It Up",
+ "Turn off": "Turn off",
+ "Turn off for a cleaner grid. Score chips are controlled separately below.": "Turn off for a cleaner grid. Score chips are controlled separately below.",
+ "Turn on": "Turn on",
+ "Turn on if you watch on a laptop or headphones and dialogue feels too quiet next to the effects. Leave off if you have a real surround setup or a soundbar.": "Turn on if you watch on a laptop or headphones and dialogue feels too quiet next to the effects. Leave off if you have a real surround setup or a soundbar.",
+ "Turn on to show each episode's synopsis under the still.": "Turn on to show each episode's synopsis under the still.",
+ "Turn on to show the Trakt comments section on movies, shows, and episodes.": "Turn on to show the Trakt comments section on movies, shows, and episodes.",
+ "Turnovers": "Turnovers",
+ "Turns off the fancy scaling and effects so video just plays. The lightest on your machine. Pick this if anything ever stutters or your fan screams.": "Turns off the fancy scaling and effects so video just plays. The lightest on your machine. Pick this if anything ever stutters or your fan screams.",
+ "TV": "TV",
+ "TV Genre": "TV Genre",
+ "TV guide": "TV guide",
+ "TV Guide": "TV Guide",
+ "TV Shows": "TV Shows",
+ "TV Shows · {n}": "TV Shows · {n}",
+ "TVDB": "TVDB",
+ "TVDB order": "TVDB order",
+ "Twist Endings": "Twist Endings",
+ "Two formats work: a bare RPDB-compatible server URL (your RPDB key above is still sent), or a full URL pattern from services like BetterPosters containing ": "Two formats work: a bare RPDB-compatible server URL (your RPDB key above is still sent), or a full URL pattern from services like BetterPosters containing ",
+ "Two paths: Harbor handles the deploy for you, or you do it yourself with wrangler.": "Two paths: Harbor handles the deploy for you, or you do it yourself with wrangler.",
+ "Two-factor authentication code": "Two-factor authentication code",
+ "Type": "Type",
+ "Type on your keyboard or tap the digits above.": "Type on your keyboard or tap the digits above.",
+ "Type the same 4-digit PIN again.": "Type the same 4-digit PIN again.",
+ "Type the same PIN one more time.": "Type the same PIN one more time.",
+ "Type what you want in plain language and let a model find it. Bring your own OpenRouter key.": "Type what you want in plain language and let a model find it. Bring your own OpenRouter key.",
+ "Types": "Types",
+ "Typography": "Typography",
+ "UFOs & Disclosure": "UFOs & Disclosure",
+ "Ukrainian": "Ukrainian",
+ "Unable to connect": "Unable to connect",
+ "Unable to load series information": "Unable to load series information",
+ "Unavailable for embedded tracks": "Unavailable for embedded tracks",
+ "uncached on debrid": "uncached on debrid",
+ "Uncharted Worlds": "Uncharted Worlds",
+ "Undo": "Undo",
+ "Undo All": "Undo All",
+ "Undo last anchor": "Undo last anchor",
+ "Unhide {name}": "Unhide {name}",
+ "Uninstalling": "Uninstalling",
+ "United Kingdom": "United Kingdom",
+ "United States": "United States",
+ "unknown": "unknown",
+ "Unknown": "Unknown",
+ "unknown error": "unknown error",
+ "Unknown release": "Unknown release",
+ "Unlimited Durable Object storage at $0.20 per million reads.": "Unlimited Durable Object storage at $0.20 per million reads.",
+ "Unmute": "Unmute",
+ "Unmute · M": "Unmute · M",
+ "Unmute trailer": "Unmute trailer",
+ "Unpin category": "Unpin category",
+ "Unpin channel": "Unpin channel",
+ "Unpin from top": "Unpin from top",
+ "Unraveling": "Unraveling",
+ "Unreachable": "Unreachable",
+ "unsaved changes": "unsaved changes",
+ "Until {time} · {dur}": "Until {time} · {dur}",
+ "Untitled": "Untitled",
+ "Untitled addon": "Untitled addon",
+ "Untitled filter": "Untitled filter",
+ "Up": "Up",
+ "Up next": "Up next",
+ "Up Next": "Up Next",
+ "Up next / episodes": "Up next / episodes",
+ "Up next in {s}s": "Up next in {s}s",
+ "Upcoming": "Upcoming",
+ "Upcoming Anime": "Upcoming Anime",
+ "Upcoming episodes and movies from your saved shows": "Upcoming episodes and movies from your saved shows",
+ "Upcoming episodes and movies from your Simkl plan-to-watch list": "Upcoming episodes and movies from your Simkl plan-to-watch list",
+ "Upcoming episodes and movies from your Trakt watchlist": "Upcoming episodes and movies from your Trakt watchlist",
+ "Upcoming episodes and movies from your Trakt watchlist.": "Upcoming episodes and movies from your Trakt watchlist.",
+ "Upcoming items from your watchlist": "Upcoming items from your watchlist",
+ "Upcoming Season": "Upcoming Season",
+ "Upconverts SDR video to HDR on an Nvidia RTX GPU (turn on RTX Video HDR in the Nvidia app; needs GPU decode). Experimental. Unavailable while SVP is active for the current video.": "Upconverts SDR video to HDR on an Nvidia RTX GPU (turn on RTX Video HDR in the Nvidia app; needs GPU decode). Experimental. Unavailable while SVP is active for the current video.",
+ "Update": "Update",
+ "Update now": "Update now",
+ "update.available": "update.available",
+ "update.download": "update.download",
+ "update.downloadComplete": "update.downloadComplete",
+ "update.downloading": "update.downloading",
+ "update.errorServer": "update.errorServer",
+ "update.failed": "update.failed",
+ "update.fetching": "update.fetching",
+ "update.harborVersion": "Harbor {version}",
+ "update.installing": "update.installing",
+ "update.installRestart": "update.installRestart",
+ "update.keepUsing": "update.keepUsing",
+ "update.later": "update.later",
+ "update.of": "{downloaded} of {total}",
+ "update.ready": "update.ready",
+ "update.restartAuto": "update.restartAuto",
+ "update.tryAgain": "update.tryAgain",
+ "Updated": "Updated",
+ "Updates": "Updates",
+ "Updating": "Updating",
+ "Updating {name}": "Updating {name}",
+ "Upgrade subtitles when better ones load": "Upgrade subtitles when better ones load",
+ "Upload a pattern to tile across the bar": "Upload a pattern to tile across the bar",
+ "Upload font": "Upload font",
+ "Upload icon": "Upload icon",
+ "Upload nyan cat, a sticker, anything": "Upload nyan cat, a sticker, anything",
+ "Upload photo": "Upload photo",
+ "Uploading worker, wiring durable object…": "Uploading worker, wiring durable object…",
+ "URL + EPG saved": "URL + EPG saved",
+ "URL cannot be empty": "URL cannot be empty",
+ "URL is saved and ready to share.": "URL is saved and ready to share.",
+ "URL on r/Stremio or wherever your community lives. Other Harbor users paste it into Settings, Harbor Relay,": "URL on r/Stremio or wherever your community lives. Other Harbor users paste it into Settings, Harbor Relay,",
+ "URL saved": "URL saved",
+ "URLs can carry debrid keys or tokens; reveal when you need to copy": "URLs can carry debrid keys or tokens; reveal when you need to copy",
+ "Use a custom meta addon you installed (e.g. a localized Cinemeta) for titles and descriptions instead of the built-in Cinemeta. Falls back to Cinemeta if yours has no data.": "Use a custom meta addon you installed (e.g. a localized Cinemeta) for titles and descriptions instead of the built-in Cinemeta. Falls back to Cinemeta if yours has no data.",
+ "Use a different URL": "Use a different URL",
+ "Use a separate Stremio account": "Use a separate Stremio account",
+ "Use AniList avatar": "Use AniList avatar",
+ "Use exclusively (never fall back to local)": "Use exclusively (never fall back to local)",
+ "Use free IMDb data without a TMDB key": "Use free IMDb data without a TMDB key",
+ "Use Harbor's built-in engine (beta)": "Use Harbor's built-in engine (beta)",
+ "Use Harbor's public relay": "Use Harbor's public relay",
+ "Use mpv engine": "Use mpv engine",
+ "Use my AniList avatar as my Harbor avatar": "Use my AniList avatar as my Harbor avatar",
+ "Use my Simkl avatar as my Harbor avatar": "Use my Simkl avatar as my Harbor avatar",
+ "Use my style": "Use my style",
+ "Use my Trakt avatar as my Harbor avatar": "Use my Trakt avatar as my Harbor avatar",
+ "Use MyAnimeList avatar": "Use MyAnimeList avatar",
+ "Use Simkl avatar": "Use Simkl avatar",
+ "Use the native window title bar": "Use the native window title bar",
+ "Use the primary profile's Stremio library, watchlist, and addons.": "Use the primary profile's Stremio library, watchlist, and addons.",
+ "Use Trakt avatar": "Use Trakt avatar",
+ "Use your operating system's native title bar and window buttons instead of Harbor's built-in ones. Handy if the in-app buttons ever feel out of reach, like during playback.": "Use your operating system's native title bar and window buttons instead of Harbor's built-in ones. Handy if the in-app buttons ever feel out of reach, like during playback.",
+ "Used for streaming availability and the Now Playing release window.": "Used for streaming availability and the Now Playing release window.",
+ "Used for streaming availability and the Now Playing release window. Pick a country and Harbor can match metadata and subtitle languages to it.": "Used for streaming availability and the Now Playing release window. Pick a country and Harbor can match metadata and subtitle languages to it.",
+ "Used for your cursor in Watch Together, your draw color, and your name pill in chat.": "Used for your cursor in Watch Together, your draw color, and your name pill in chat.",
+ "Used to lift Time's Up and to leave the kids space.": "Used to lift Time's Up and to leave the kids space.",
+ "Usenet": "Usenet",
+ "Username": "Username",
+ "Using AIOStreams or another aggregator addon? Its own sorting and filtering happen inside the addon before Harbor ever sees the results, then Harbor applies the stream filter and result order above on top. If results look thinner than expected, keep one side permissive: either relax the addon's internal filters or set Harbor's stream filter to Balanced or Off.": "Using AIOStreams or another aggregator addon? Its own sorting and filtering happen inside the addon before Harbor ever sees the results, then Harbor applies the stream filter and result order above on top. If results look thinner than expected, keep one side permissive: either relax the addon's internal filters or set Harbor's stream filter to Balanced or Off.",
+ "v3 API key": "v3 API key",
+ "VA": "VA",
+ "Venice": "Venice",
+ "Verify": "Verify",
+ "Verify & connect": "Verify & connect",
+ "Verify it works": "Verify it works",
+ "Verifying": "Verifying",
+ "Version": "Version",
+ "Version and capabilities come straight from the addon's manifest. Ratings and categories come from the": "Version and capabilities come straight from the addon's manifest. Ratings and categories come from the",
+ "via": "via",
+ "Video {n}": "Video {n}",
+ "Video bitrate": "Video bitrate",
+ "Video codec": "Video codec",
+ "Videos": "Videos",
+ "Vietnam & After": "Vietnam & After",
+ "Vietnamese": "Vietnamese",
+ "View all": "View all",
+ "View all {n} winners": "View all {n} winners",
+ "View details": "View details",
+ "View more": "View more",
+ "View on Letterboxd": "View on Letterboxd",
+ "View profile": "View profile",
+ "View Series": "View Series",
+ "Viewer avatars": "Viewer avatars",
+ "Villain": "Villain",
+ "visible": "visible",
+ "Visible": "Visible",
+ "Vocal clarity": "Vocal clarity",
+ "Volume": "Volume",
+ "VOLUME": "VOLUME",
+ "Volume control": "Volume control",
+ "Volume down": "Volume down",
+ "Volume pop-up while watching": "Volume pop-up while watching",
+ "Volume up": "Volume up",
+ "Vote average ≥ 8.0": "Vote average ≥ 8.0",
+ "Votes": "Votes",
+ "Wait for the upload to finish. The relay URL gets written to": "Wait for the upload to finish. The relay URL gets written to",
+ "Wait for the upload to finish. The relay URL gets written to {code} in Harbor settings.": "Wait for the upload to finish. The relay URL gets written to {code} in Harbor settings.",
+ "Waiting for the host to start": "Waiting for the host to start",
+ "Waiting for Trakt…": "Waiting for Trakt…",
+ "Waiting for you to authorize on simkl.com…": "Waiting for you to authorize on simkl.com…",
+ "Waiting for you to authorize on trakt.tv…": "Waiting for you to authorize on trakt.tv…",
+ "Walks": "Walks",
+ "Want to change the ratio mid-playback? The live aspect button is hidden by default to keep the player tidy.": "Want to change the ratio mid-playback? The live aspect button is hidden by default to keep the player tidy.",
+ "Want to fix it yourself?": "Want to fix it yourself?",
+ "Wanted dead or alive": "Wanted dead or alive",
+ "War": "War",
+ "War Films": "War Films",
+ "War Stories": "War Stories",
+ "Wars of our time": "Wars of our time",
+ "Watch again": "Watch again",
+ "Watch from the beginning": "Watch from the beginning",
+ "Watch my local copy": "Watch my local copy",
+ "Watch on": "Watch on",
+ "Watch on YouTube": "Watch on YouTube",
+ "Watch party join button": "Watch party join button",
+ "Watch together": "Watch together",
+ "Watch Together": "Watch Together",
+ "Watch Together needs a relay.": "Watch Together needs a relay.",
+ "Watch Together panel": "Watch Together panel",
+ "Watch Together rooms are routed through Harbor's hosted relay.": "Watch Together rooms are routed through Harbor's hosted relay.",
+ "Watch Together rooms drop after 6 hours": "Watch Together rooms drop after 6 hours",
+ "Watch trailer": "Watch trailer",
+ "Watched": "Watched",
+ "Watched {ago}": "Watched {ago}",
+ "Watched by {name}": "Watched by {name}",
+ "Watched on Trakt": "Watched on Trakt",
+ "Watching": "Watching",
+ "Watching for ad, analytics, and tracking requests. Harbor itself sends zero telemetry.": "Watching for ad, analytics, and tracking requests. Harbor itself sends zero telemetry.",
+ "Watchlist": "Watchlist",
+ "Watchlist badge": "Watchlist badge",
+ "Watchlist is what you've saved for later. History is everything you've watched. Local is files on your computer.": "Watchlist is what you've saved for later. History is everything you've watched. Local is files on your computer.",
+ "Watchlist only": "Watchlist only",
+ "Watchlist shows only saved titles": "Watchlist shows only saved titles",
+ "We could not find a working stream": "We could not find a working stream",
+ "We need to check your age before you sail ahead. Three quick questions a working adult would know in their sleep. Get them all right and the adult shelf opens.": "We need to check your age before you sail ahead. Three quick questions a working adult would know in their sleep. Get them all right and the adult shelf opens.",
+ "We opened {url} in your browser. Enter the code below.": "We opened {url} in your browser. Enter the code below.",
+ "We'll name it from the URL.": "We'll name it from the URL.",
+ "We'll save your spot so you can pick up right where you left off.": "We'll save your spot so you can pick up right where you left off.",
+ "Wear your Simkl profile picture across Harbor instead of the default.": "Wear your Simkl profile picture across Harbor instead of the default.",
+ "Wear your Trakt profile picture across Harbor instead of the default.": "Wear your Trakt profile picture across Harbor instead of the default.",
+ "Web": "Web",
+ "Web build": "Web build",
+ "Webhooks": "Webhooks",
+ "Wed": "Wed",
+ "Weight": "Weight",
+ "Welcome aboard": "Welcome aboard",
+ "Werner's World": "Werner's World",
+ "Western": "Western",
+ "Westerns": "Westerns",
+ "What actually happened": "What actually happened",
+ "What broke?": "What broke?",
+ "What everyone has been quietly binging this week.": "What everyone has been quietly binging this week.",
+ "What gets sent": "What gets sent",
+ "What gets through": "What gets through",
+ "What happens when you hit Play on a title. Instant just starts; Manual lets you pick the source.": "What happens when you hit Play on a title. Instant just starts; Manual lets you pick the source.",
+ "What is this title?": "What is this title?",
+ "What is this?": "What is this?",
+ "What people are watching": "What people are watching",
+ "What Play does when a movie or episode also exists on your disk. Autoplay always prefers the local copy unless set to Stream.": "What Play does when a movie or episode also exists on your disk. Autoplay always prefers the local copy unless set to Stream.",
+ "What should we watch?": "What should we watch?",
+ "What the clock labels show on the seek bar.": "What the clock labels show on the seek bar.",
+ "What the worker does": "What the worker does",
+ "What to include": "What to include",
+ "What to record": "What to record",
+ "What to send": "What to send",
+ "What to watch tonight": "What to watch tonight",
+ "What you expected": "What you expected",
+ "What's hot this week, what's prestige forever, what's worth the hours.": "What's hot this week, what's prestige forever, what's worth the hours.",
+ "Whatever your OS uses.": "Whatever your OS uses.",
+ "WHEN": "WHEN",
+ "When a flagged ad plays, a Skip button slides in so you jump straight past it.": "When a flagged ad plays, a Skip button slides in so you jump straight past it.",
+ "When a movie or episode starts, briefly show its IMDb parental guide (violence, profanity, substances, frightening scenes and more) with severity. Fades on its own.": "When a movie or episode starts, briefly show its IMDb parental guide (violence, profanity, substances, frightening scenes and more) with severity. Fades on its own.",
+ "When a release ships multiple audio tracks, Harbor selects the first match from this list.": "When a release ships multiple audio tracks, Harbor selects the first match from this list.",
+ "When a title is in your local library": "When a title is in your local library",
+ "When an episode ends, automatically start the next one. Off lets the episode finish and stop.": "When an episode ends, automatically start the next one. Off lets the episode finish and stop.",
+ "When auto-playing the next episode, keep the same release/source you were just watching instead of Harbor's top-ranked stream. Falls back to the best stream if that source isn't available.": "When auto-playing the next episode, keep the same release/source you were just watching instead of Harbor's top-ranked stream. Falls back to the best stream if that source isn't available.",
+ "When Esc would close the player, show a quick confirm first. You can tick \\": "When Esc would close the player, show a quick confirm first. You can tick \\",
+ "When in fullscreen, Esc leaves fullscreen instead of closing the player. Press Esc again to close. Turn off to make Esc always close.": "When in fullscreen, Esc leaves fullscreen instead of closing the player. Press Esc again to close. Turn off to make Esc always close.",
+ "When playback starts, Harbor automatically finds and loads a subtitle in one of these languages, so you never have to search by hand. The first available match wins, so put your main language first.": "When playback starts, Harbor automatically finds and loads a subtitle in one of these languages, so you never have to search by hand. The first available match wins, so put your main language first.",
+ "When playback starts, Harbor finds and loads a subtitle in one of these languages automatically. The first available match wins, so put your main language first.": "When playback starts, Harbor finds and loads a subtitle in one of these languages automatically. The first available match wins, so put your main language first.",
+ "When the audio already matches your subtitle language, pick a forced track (foreign dialogue and signs only) instead of full subtitles. If the file has no forced track, subtitles stay off.": "When the audio already matches your subtitle language, pick a forced track (foreign dialogue and signs only) instead of full subtitles. If the file has no forced track, subtitles stay off.",
+ "When the file ships its own subtitle track, keep it selected instead of switching to a downloaded one. Embedded tracks are usually the best synced.": "When the file ships its own subtitle track, keep it selected instead of switching to a downloaded one. Embedded tracks are usually the best synced.",
+ "When the Up Next pill appears before an episode ends. Auto scales to the episode length, so short episodes stop prompting so early. Off hides it.": "When the Up Next pill appears before an episode ends. Auto scales to the episode length, so short episodes stop prompting so early. Off hides it.",
+ "When time's up, the ship sails away until a parent unlocks it.": "When time's up, the ship sails away until a parent unlocks it.",
+ "When you back out of a title, Harbor saves a frame so the Continue Watching card looks like the spot you left.": "When you back out of a title, Harbor saves a frame so the Continue Watching card looks like the spot you left.",
+ "When you back out of a title, Harbor saves a frame so the Continue Watching card looks like the spot you left. Tune how long they stick around, or wipe them all.": "When you back out of a title, Harbor saves a frame so the Continue Watching card looks like the spot you left. Tune how long they stick around, or wipe them all.",
+ "When you exit fullscreen, return the window to exactly where it was. Turn off to center it on screen instead.": "When you exit fullscreen, return the window to exactly where it was. Turn off to center it on screen instead.",
+ "When you exit playback, keep the window fullscreen instead of dropping back to a window. Turn off to leave fullscreen automatically whenever the player closes.": "When you exit playback, keep the window fullscreen instead of dropping back to a window. Turn off to leave fullscreen automatically whenever the player closes.",
+ "When you finish an episode or movie, remove its downloaded file right away. Something you stop partway through is kept so you can resume.": "When you finish an episode or movie, remove its downloaded file right away. Something you stop partway through is kept so you can resume.",
+ "When you finish an episode, the Home Continue Watching card moves on to the next episode instead of sitting at 0 minutes left.": "When you finish an episode, the Home Continue Watching card moves on to the next episode instead of sitting at 0 minutes left.",
+ "When you have no debrid set up, or a torrent isn't cached, stream it straight from the bundled engine on localhost:11470. This connects to peers over your own connection, the same way Stremio's built-in streaming does.": "When you have no debrid set up, or a torrent isn't cached, stream it straight from the bundled engine on localhost:11470. This connects to peers over your own connection, the same way Stremio's built-in streaming does.",
+ "When you hit Play on something you've partly watched, show a prompt to resume from where you left off or start over. Also covers items synced from Stremio or Trakt.": "When you hit Play on something you've partly watched, show a prompt to resume from where you left off or start over. Also covers items synced from Stremio or Trakt.",
+ "When you resume something you were watching, replay the exact stream you last used (same addon and source) instead of opening the picker again. Turn off to always choose fresh.": "When you resume something you were watching, replay the exact stream you last used (same addon and source) instead of opening the picker again. Turn off to always choose fresh.",
+ "Where alerts go": "Where alerts go",
+ "Where do you want to start?": "Where do you want to start?",
+ "Where Harbor saves videos when you hit Download in the player. Pick any folder, including one on a different drive.": "Where Harbor saves videos when you hit Download in the player. Pick any folder, including one on a different drive.",
+ "Where machines are taking us": "Where machines are taking us",
+ "Where the volume overlay appears on the video.": "Where the volume overlay appears on the video.",
+ "Where to watch": "Where to watch",
+ "Where your data lives": "Where your data lives",
+ "Where your video comes from": "Where your video comes from",
+ "Which account should the relay live in?": "Which account should the relay live in?",
+ "Which audio and subtitle languages rank first in stream lists.": "Which audio and subtitle languages rank first in stream lists.",
+ "While the world's asleep": "While the world's asleep",
+ "Who's watching: {a} · Default: {b}": "Who's watching: {a} · Default: {b}",
+ "Who's watching?": "Who's watching?",
+ "Whodunit": "Whodunit",
+ "Whodunits": "Whodunits",
+ "Wide search · still empty": "Wide search · still empty",
+ "Wider spacing": "Wider spacing",
+ "Width": "Width",
+ "Wild Bunch Era": "Wild Bunch Era",
+ "will be removed from Harbor. Anything you've set to use it will fall back to Inter.": "will be removed from Harbor. Anything you've set to use it will fall back to Inter.",
+ "WIN": "WIN",
+ "Window title bar": "Window title bar",
+ "Windowed": "Windowed",
+ "Winner": "Winner",
+ "Winning films & shows": "Winning films & shows",
+ "Wiseguys": "Wiseguys",
+ "Witching Hour": "Witching Hour",
+ "with a WebSocket upgrade: opens a Watch Together room. State is held in a Durable Object, no persistence beyond the active session.": "with a WebSocket upgrade: opens a Watch Together room. State is held in a Durable Object, no persistence beyond the active session.",
+ "With no TMDB key, the About panel pulls cast, crew, and title info from a free IMDb source. TMDB is still used whenever a key is set.": "With no TMDB key, the About panel pulls cast, crew, and title info from a free IMDb source. TMDB is still used whenever a key is set.",
+ "With subtitles": "With subtitles",
+ "With the city surrounded, an unlikely alliance forms as a long-buried secret finally comes to light.": "With the city surrounded, an unlikely alliance forms as a long-buried secret finally comes to light.",
+ "Without subtitles": "Without subtitles",
+ "Wizards & Kings": "Wizards & Kings",
+ "Wonder & Dread": "Wonder & Dread",
+ "Worker crashed or hit memory limits": "Worker crashed or hit memory limits",
+ "Worker deleted or URL wrong": "Worker deleted or URL wrong",
+ "Workers Scripts": "Workers Scripts",
+ "Working…": "Working…",
+ "Worlds Apart": "Worlds Apart",
+ "Worlds of Wonder": "Worlds of Wonder",
+ "Worlds to step into before the inbox catches up.": "Worlds to step into before the inbox catches up.",
+ "Worlds wide enough for an hour or a whole free afternoon.": "Worlds wide enough for an hour or a whole free afternoon.",
+ "Worse": "Worse",
+ "Worth catching up on": "Worth catching up on",
+ "Worth knowing": "Worth knowing",
+ "Worth the lost hour": "Worth the lost hour",
+ "Write a comment...": "Write a comment...",
+ "Writer": "Writer",
+ "Writers": "Writers",
+ "Writing": "Writing",
+ "Wrong channel or source?": "Wrong channel or source?",
+ "Wrong episode or quality?": "Wrong episode or quality?",
+ "Wrong PIN": "Wrong PIN",
+ "Wrong year": "Wrong year",
+ "WWII on Film": "WWII on Film",
+ "XMLTV only": "XMLTV only",
+ "Xtream": "Xtream",
+ "Xtream codes": "Xtream codes",
+ "Xtream login was rejected": "Xtream login was rejected",
+ "Xtream provider": "Xtream provider",
+ "Year": "Year",
+ "Year, runtime, language, and country filters need TMDB. Genre browsing falls back to Cinemeta automatically.": "Year, runtime, language, and country filters need TMDB. Genre browsing falls back to Cinemeta automatically.",
+ "Yellow Cards": "Yellow Cards",
+ "Yes": "Yes",
+ "You ★ {rating}": "You ★ {rating}",
+ "You can switch later in Settings under Library & metadata.": "You can switch later in Settings under Library & metadata.",
+ "You have unsaved anchors. They will be lost.": "You have unsaved anchors. They will be lost.",
+ "You have unsaved changes that will be lost when switching profiles. Continue?": "You have unsaved changes that will be lost when switching profiles. Continue?",
+ "You have unsaved changes. Close the editor and discard them?": "You have unsaved changes. Close the editor and discard them?",
+ "You haven't commented yet": "You haven't commented yet",
+ "You Might Also Like": "You Might Also Like",
+ "You must install this addon in your Stremio account first so Harbor can fetch its works.": "You must install this addon in your Stremio account first so Harbor can fetch its works.",
+ "You picked only one anchor. This applies a constant shift (no FPS-drift correction). Continue?": "You picked only one anchor. This applies a constant shift (no FPS-drift correction). Continue?",
+ "You rated this build {label}.": "You rated this build {label}.",
+ "You should get a message from your new bot.": "You should get a message from your new bot.",
+ "You'll need this to access settings while controls are on.": "You'll need this to access settings while controls are on.",
+ "You're in": "You're in",
+ "You're modding your own client. Custom JS has full access to your Harbor session. Only paste code you wrote or fully trust.": "You're modding your own client. Custom JS has full access to your Harbor session. Only paste code you wrote or fully trust.",
+ "You're offline": "You're offline",
+ "You're offline. Your downloads still play.": "You're offline. Your downloads still play.",
+ "You're on the latest build. Earlier builds show up here as new versions ship.": "You're on the latest build. Earlier builds show up here as new versions ship.",
+ "You're on the latest version.": "You're on the latest version.",
+ "You're set.": "You're set.",
+ "You're verified": "You're verified",
+ "You've reached the end · {count} titles": "You've reached the end · {count} titles",
+ "You've reached the end · {n} addons": "You've reached the end · {n} addons",
+ "Your account hasn't picked its free {code} address yet. Cloudflare only asks the first time. Quick to set up.": "Your account hasn't picked its free {code} address yet. Cloudflare only asks the first time. Quick to set up.",
+ "Your addon collection changed on another device. Nothing was written.": "Your addon collection changed on another device. Nothing was written.",
+ "Your AniList is empty": "Your AniList is empty",
+ "Your AniList: {name}": "Your AniList: {name}",
+ "Your collection.": "Your collection.",
+ "Your color": "Your color",
+ "Your copy runs {guest}, host's runs {host}. Sync may drift.": "Your copy runs {guest}, host's runs {host}. Sync may drift.",
+ "Your Discovery Queue": "Your Discovery Queue",
+ "Your face in Watch Together rooms, sessions, and chat. Sits on top of your Stremio account.": "Your face in Watch Together rooms, sessions, and chat. Sits on top of your Stremio account.",
+ "YOUR FILTERS": "YOUR FILTERS",
+ "Your IP or device is blocked. Some providers geo restrict or limit how many devices can connect at once.": "Your IP or device is blocked. Some providers geo restrict or limit how many devices can connect at once.",
+ "Your Letterboxd password": "Your Letterboxd password",
+ "Your library and watch progress sync here.": "Your library and watch progress sync here.",
+ "Your MAL: {name}": "Your MAL: {name}",
+ "Your name": "Your name",
+ "Your network blocks UDP, so DHT is offline, but HTTPS trackers are reachable over TCP. Streams can still find peers, they may just take a little longer to start.": "Your network blocks UDP, so DHT is offline, but HTTPS trackers are reachable over TCP. Streams can still find peers, they may just take a little longer to start.",
+ "Your rating": "Your rating",
+ "Your relay": "Your relay",
+ "Your relay is live": "Your relay is live",
+ "Your relay URL": "Your relay URL",
+ "Your saved shows have no episodes scheduled for this month. Switch to All upcoming to browse the full release calendar.": "Your saved shows have no episodes scheduled for this month. Switch to All upcoming to browse the full release calendar.",
+ "Your Simkl plan-to-watch list has no episodes airing this month. Switch to All upcoming to browse everything.": "Your Simkl plan-to-watch list has no episodes airing this month. Switch to All upcoming to browse everything.",
+ "Your Streaming": "Your Streaming",
+ "Your streaming server address": "Your streaming server address",
+ "Your Stremio account": "Your Stremio account",
+ "Your Stremio library + addons sync in untouched.": "Your Stremio library + addons sync in untouched.",
+ "Your Stremio sign-in. Library, watch progress, and addons sync from here.": "Your Stremio sign-in. Library, watch progress, and addons sync from here.",
+ "Your style is overriding the embedded subtitle's own styling": "Your style is overriding the embedded subtitle's own styling",
+ "Your themes": "Your themes",
+ "Your Trakt watchlist": "Your Trakt watchlist",
+ "Your Trakt watchlist is empty, nothing to import.": "Your Trakt watchlist is empty, nothing to import.",
+ "Your TV": "Your TV",
+ "Your watchlist is empty": "Your watchlist is empty",
+ "Your watchlist is empty, nothing to send.": "Your watchlist is empty, nothing to send.",
+ "Yours": "Yours",
+ "Zoom": "Zoom",
+ "Zoom {pct}%": "Zoom {pct}%",
+ "Zoom in": "Zoom in",
+ "Zoom out": "Zoom out",
+ "العربية": "العربية"
+}
diff --git a/src/lib/i18n/locales/en.ts b/src/lib/i18n/locales/en.ts
index bbdf5df38..dcd68f5da 100644
--- a/src/lib/i18n/locales/en.ts
+++ b/src/lib/i18n/locales/en.ts
@@ -42,7 +42,6 @@ const en: Record = {
"chrome.restore": "Restore",
"chrome.watchTogether": "Watch together",
"chrome.scrollForMore": "Scroll for more",
- "chrome.backToTop": "Back to top",
"chrome.locked": "Locked",
"chrome.parentalOn": "Parental controls on",
"chrome.lockedRequiresPin": "{label} (locked, requires PIN)",
diff --git a/src/lib/i18n/locales/pt.json b/src/lib/i18n/locales/pt.json
new file mode 100644
index 000000000..572d0b5eb
--- /dev/null
+++ b/src/lib/i18n/locales/pt.json
@@ -0,0 +1,4559 @@
+{
+ " · {n} instant": " · {n} instantâneo",
+ " · away": " · ausente",
+ " · host": " · anfitrião",
+ " · left the video": " · saiu do vídeo",
+ " · muted": " · mudo",
+ " · paused": " · pausado",
+ " · Series": " · Séries",
+ " · still loading": " · ainda carregando",
+ " · Syncing Trakt…": " · Sincronizando Trakt…",
+ " · you": " · você",
+ " (you)": " (você)",
+ " Anything you save also syncs to your Trakt account.": " Tudo que você salvar também é sincronizado com sua conta Trakt.",
+ " Connect Trakt in Settings to sync this list across devices.": " Conecte o Trakt em Configurações para sincronizar esta lista entre dispositivos.",
+ ", ": ", ",
+ ", {hiddenCount} hidden": ", {hiddenCount} ocultos",
+ ", {n} unrepairable": ", {n} irreparável",
+ ", and ": ", e ",
+ ", then try again.": ", depois tente novamente.",
+ ". Adds Letterboxd and Trakt community ratings to detail pages, covering what OMDb misses.": ". Adiciona avaliações da comunidade do Letterboxd e do Trakt às páginas de detalhes, cobrindo o que o OMDb deixa de fora.",
+ ". AllDebrid deprecated their cache-check endpoint, so streams may show as unknown until you actually hit Play.": ". O AllDebrid descontinuou o endpoint de verificação de cache, então os streams podem aparecer como desconhecidos até que você realmente clique em Play.",
+ ". EU-hosted, fast cache check. Same read-only usage as the others.": ". Hospedado na UE, verificação de cache rápida. Mesmo uso somente leitura que os outros.",
+ ". Leave empty for the default.": ". Deixe em branco para usar o padrão.",
+ ". Once saved, every poster gets re-rendered with IMDb, Rotten Tomatoes, and Metacritic stamped on it.": ". Depois de salvo, todos os pôsteres são renderizados novamente com as notas do IMDb, Rotten Tomatoes e Metacritic marcadas neles.",
+ ". Patterns may also use ": ". Os padrões também podem usar ",
+ ". Pick the \"Negotiated API key\" path.": ". Escolha o caminho \"Negotiated API key\".",
+ ". Same read-only usage as Real-Debrid. Also lets you queue uncached torrents from the play picker.": ". Mesmo uso somente leitura que o Real-Debrid. Também permite enfileirar torrents não armazenados em cache pelo seletor de reprodução.",
+ ". They email an activation link the first time. Click it, then come back and save.": ". Eles enviam um link de ativação por e-mail na primeira vez. Clique nele, depois volte e salve.",
+ ". Use the \"personal\" key, not the project one.": ". Use a chave \"pessoal\", não a do projeto.",
+ ". Use the v3 key, not the read access token.": ". Use a chave v3, não o token de acesso de leitura.",
+ ". Used to check cache and unrestrict links. Harbor never adds or removes torrents on its own.": ". Usado para verificar o cache e liberar links. O Harbor nunca adiciona ou remove torrents por conta própria.",
+ ". Uses the directdl endpoint, which skips queueing for anything already cached.": ". Usa o endpoint directdl, que pula a fila para qualquer coisa já em cache.",
+ "· A debrid key (TorBox, Real-Debrid, etc.) is missing or expired.": "· Uma chave debrid (TorBox, Real-Debrid, etc.) está ausente ou expirada.",
+ "· Add a debrid key (TorBox, Real-Debrid, AllDebrid, Premiumize, Debrid-Link).": "· Adicione uma chave debrid (TorBox, Real-Debrid, AllDebrid, Premiumize, Debrid-Link).",
+ "· currently hidden": "· atualmente oculto",
+ "· Install a stream addon (Torrentio, Comet, MediaFusion).": "· Instale um addon de streaming (Torrentio, Comet, MediaFusion).",
+ "· No stream addon is installed yet (Torrentio, MediaFusion, Comet).": "· Nenhum addon de streaming foi instalado ainda (Torrentio, MediaFusion, Comet).",
+ "· This title is too new and no source has it cached yet.": "· Este título é muito novo e nenhuma fonte o tem em cache ainda.",
+ "'s setup page in Harbor's built-in browser. Pick your options. When you click Install on their page, Harbor catches the link automatically and updates the addon.": "a página de configuração deles no navegador integrado do Harbor. Escolha suas opções. Quando você clicar em Install na página deles, o Harbor captura o link automaticamente e atualiza o addon.",
+ "'s setup page. Pick your options, then copy the install link it gives you and paste it below to update the addon.": "a página de configuração deles. Escolha suas opções, depois copie o link de instalação fornecido e cole abaixo para atualizar o addon.",
+ "{code} with a WebSocket upgrade: opens a Watch Together room. State is held in a Durable Object, no persistence beyond the active session.": "{code} com upgrade de WebSocket: abre uma sala do Watch Together. O estado é mantido em um Durable Object, sem persistência além da sessão ativa.",
+ "{code}: returns JSON with the worker version. Used by the test button.": "{code}: retorna JSON com a versão do worker. Usado pelo botão de teste.",
+ "{count} community ratings on stremio-addons.net": "{count} avaliações da comunidade no stremio-addons.net",
+ "{count} days ago": "há {count} dias",
+ "{count} dl": "{count} dl",
+ "{count} downloading": "{count} baixando",
+ "{count} films": "{count} filmes",
+ "{count} frames stored. Wiping rebuilds them next time you watch.": "{count} quadros armazenados. Apagar irá reconstruí-los na próxima vez que você assistir.",
+ "{count} items": "{count} itens",
+ "{count} months ago": "há {count} meses",
+ "{count} picks ready": "{count} escolhas prontas",
+ "{count} selected": "{count} selecionados",
+ "{count} tracker request blocked this session. Harbor itself sends zero telemetry.": "{count} solicitação de rastreador bloqueada nesta sessão. O próprio Harbor não envia nenhuma telemetria.",
+ "{d}d ago": "há {d}d",
+ "{h}h {m}m left": "faltam {h}h {m}m",
+ "{h}h ago": "há {h}h",
+ "{h}h left": "faltam {h}h",
+ "{label} · {n} collection": "{label} · {n} coleção",
+ "{label} · {n} collections": "{label} · {n} coleções",
+ "{langs} only": "apenas {langs}",
+ "{langs} only · {n} hidden": "apenas {langs} · {n} ocultos",
+ "{m}m {s}s ago": "há {m}m {s}s",
+ "{m}m ago": "há {m}m",
+ "{m}m left": "faltam {m}m",
+ "{media} between {lo}-{hi} minutes. Pick a length, not a wall of options.": "{media} entre {lo}-{hi} minutos. Escolha uma duração, não um mar de opções.",
+ "{media} from {name}: popular, acclaimed, and hidden alike.": "{media} de {name}: populares, aclamados e pouco conhecidos.",
+ "{media} produced by {name}, ranked from biggest hits to overlooked gems.": "{media} produzidos por {name}, classificados dos maiores sucessos às joias esquecidas.",
+ "{n} active": "{n} ativo",
+ "{n} addon": "{n} addon",
+ "{n} addons": "{n} addons",
+ "{n} anime titles will be left out (Trakt has no IDs for them).": "{n} títulos de anime ficarão de fora (o Trakt não tem IDs para eles).",
+ "{n} avatars across film, TV, and anime.": "{n} avatares entre filmes, TV e anime.",
+ "{n} award": "{n} prêmio",
+ "{n} awards": "{n} prêmios",
+ "{n} chars": "{n} caracteres",
+ "{n} connected": "{n} conectado",
+ "{n} countries": "{n} países",
+ "{n} country": "{n} país",
+ "{n} custom": "{n} personalizado",
+ "{n} day ago": "há {n} dia",
+ "{n} days ago": "há {n} dias",
+ "{n} ep": "{n} ep",
+ "{n} episode": "{n} episódio",
+ "{n} episodes": "{n} episódios",
+ "{n} episodes · {file}": "{n} episódios · {file}",
+ "{n} episodes on disk": "{n} episódios no disco",
+ "{n} eps": "{n} eps",
+ "{n} film": "{n} filme",
+ "{n} films": "{n} filmes",
+ "{n} frame stored. Wiping rebuilds them next time you watch.": "{n} quadro armazenado. Apagar fará com que sejam reconstruídos na próxima vez que você assistir.",
+ "{n} frames stored. Wiping rebuilds them next time you watch.": "{n} quadros armazenados. Apagar fará com que sejam reconstruídos na próxima vez que você assistir.",
+ "{n} genre": "{n} gênero",
+ "{n} genres": "{n} gêneros",
+ "{n} hidden": "{n} ocultos",
+ "{n} hr": "{n} h",
+ "{n} in your Stremio library": "{n} na sua biblioteca do Stremio",
+ "{n} item": "{n} item",
+ "{n} items": "{n} itens",
+ "{n} items need repair.": "{n} itens precisam de reparo.",
+ "{n} languages": "{n} idiomas",
+ "{n} lines skipped (not valid)": "{n} linhas ignoradas (inválidas)",
+ "{n} LIVE": "{n} AO VIVO",
+ "{n} min": "{n} min",
+ "{n} min lead": "{n} min de antecedência",
+ "{n} month ago": "há {n} mês",
+ "{n} months ago": "há {n} meses",
+ "{n} new episodes since you last watched": "{n} novos episódios desde a última vez que você assistiu",
+ "{n} not matched": "{n} não correspondidos",
+ "{n} on Trakt": "{n} no Trakt",
+ "{n} option": "{n} opção",
+ "{n} options": "{n} opções",
+ "{n} options active": "{n} opções ativas",
+ "{n} people": "{n} pessoas",
+ "{n} provider": "{n} provedor",
+ "{n} providers": "{n} provedores",
+ "{n} saved on this device": "{n} salvo(s) neste dispositivo",
+ "{n} score badges enabled.": "{n} selos de pontuação ativados.",
+ "{n} seasons": "{n} temporadas",
+ "{n} selected": "{n} selecionados",
+ "{n} service needs attention": "{n} serviço precisa de atenção",
+ "{n} services need attention": "{n} serviços precisam de atenção",
+ "{n} source": "{n} fonte",
+ "{n} source across {count} addons": "{n} fonte em {count} addons",
+ "{n} sources": "{n} fontes",
+ "{n} sources across {count} addons": "{n} fontes em {count} addons",
+ "{n} sources available": "{n} fontes disponíveis",
+ "{n} tab": "{n} aba",
+ "{n} tab locked": "{n} aba bloqueada",
+ "{n} tab requires this profile's PIN.": "{n} aba requer o PIN deste perfil.",
+ "{n} tabs": "{n} abas",
+ "{n} tabs locked": "{n} abas bloqueadas",
+ "{n} tabs require this profile's PIN.": "{n} abas exigem o PIN deste perfil.",
+ "{n} title": "{n} título",
+ "{n} titles": "{n} títulos",
+ "{n} titles need review — help us identify them.": "{n} títulos precisam de revisão — ajude-nos a identificá-los.",
+ "{n} tracker request blocked this session. Harbor itself sends zero telemetry.": "{n} solicitação de rastreador bloqueada nesta sessão. O próprio Harbor não envia nenhuma telemetria.",
+ "{n} tracker requests blocked this session. Harbor itself sends zero telemetry.": "{n} solicitações de rastreador bloqueadas nesta sessão. O próprio Harbor não envia nenhuma telemetria.",
+ "{n} votes": "{n} votos",
+ "{n} watching": "{n} assistindo",
+ "{n} winner": "{n} vencedor",
+ "{n} winners": "{n} vencedores",
+ "{n} wins": "{n} vitórias",
+ "{n} year": "{n} ano",
+ "{n} years": "{n} anos",
+ "{n}d left": "{n}d restantes",
+ "{n}m": "{n}m",
+ "{n}m left": "{n}m restantes",
+ "{name} (TV)": "{name} (TV)",
+ "{name} imported to your library": "{name} importado para sua biblioteca",
+ "{name} started watching": "{name} começou a assistir",
+ "{name} will be removed from Harbor. Anything you've set to use it will fall back to Inter.": "{name} será removido do Harbor. Tudo que você configurou para usá-lo voltará a usar o Inter.",
+ "{name}'s {sub}": "{sub} de {name}",
+ "{names} +{n} more": "{names} +{n} mais",
+ "{path} (open folder)": "{path} (abrir pasta)",
+ "{pct}% watched": "{pct}% assistido",
+ "{repaired} fixed, {clean} already clean": "{repaired} corrigidos, {clean} já limpos",
+ "{s}s ago": "há {s}s",
+ "{s}s left": "{s}s restantes",
+ "{shown} of {total}": "{shown} de {total}",
+ "{shown} of {total} file from your computer": "{shown} de {total} arquivo do seu computador",
+ "{shown} of {total} files from your computer": "{shown} de {total} arquivos do seu computador",
+ "{size} saved": "{size} salvos",
+ "{source} list detected": "Lista de {source} detectada",
+ "{start} to {end} · {dur}": "{start} a {end} · {dur}",
+ "{start}-{end} of {total}": "{start}-{end} de {total}",
+ "{subtitle} · ranked by current popularity": "{subtitle} · classificado pela popularidade atual",
+ "{title} image viewer": "Visualizador de imagens de {title}",
+ "{title} overview": "Visão geral de {title}",
+ "{used} / {limit} requests today.": "{used} / {limit} solicitações hoje.",
+ "{watched} of {total} watched ({pct}%).": "{watched} de {total} assistidos ({pct}%).",
+ "{word} {n} seconds": "{word} {n} segundos",
+ "{word} {n} seconds. Hold for options": "{word} {n} segundos. Segure para opções",
+ "{word} {n}s · hold for options": "{word} {n}s · segure para opções",
+ "#{position} in {label} Today": "#{position} em {label} hoje",
+ "+ Watchlist": "+ Watchlist",
+ "+{n} ep": "+{n} ep",
+ "+{n} more": "+{n} a mais",
+ "○ Mark watched": "○ Marcar como assistido",
+ "★ {rating} — Change": "★ {rating} — Alterar",
+ "★ Rate": "★ Avaliar",
+ "♡ Like": "♡ Curtir",
+ "♥ Liked": "♥ Curtido",
+ "✓ Watched": "✓ Assistido",
+ "00:23 on the left, -1:12 on the right.": "00:23 à esquerda, -1:12 à direita.",
+ "0m left": "0min restantes",
+ "1\tSubtitle delay +0.1s": "1\tAtraso da legenda +0.1s",
+ "1 day ago": "1 dia atrás",
+ "1 episode": "1 episódio",
+ "1 episode on disk": "1 episódio no disco",
+ "1 frame stored. Wiping rebuilds them next time you watch.": "1 quadro armazenado. Ao apagar, eles são reconstruídos na próxima vez que você assistir.",
+ "1 item": "1 item",
+ "1 line skipped (not valid)": "1 linha ignorada (inválida)",
+ "1 min": "1 min",
+ "1 month ago": "1 mês atrás",
+ "1 new episode since you last watched": "1 episódio novo desde a última vez que você assistiu",
+ "1 option active": "1 opção ativa",
+ "1 selected": "1 selecionado",
+ "1 title needs review — help us identify it.": "1 título precisa de revisão — ajude-nos a identificá-lo.",
+ "1 week": "1 semana",
+ "1 year": "1 ano",
+ "1. Open Movies\n2. Click The Substance\n3. Press Play\n4. ...": "1. Abra Filmes\n2. Clique em The Substance\n3. Pressione Play\n4. ...",
+ "1.5 min": "1,5 min",
+ "1.85:1": "1.85:1",
+ "10\tSuspicious file": "10\tArquivo suspeito",
+ "100\tTonight's main event": "100\tO evento principal de hoje à noite",
+ "100,000 requests per day.": "100.000 solicitações por dia.",
+ "10ms CPU time per request.": "10ms de tempo de CPU por solicitação.",
+ "10s": "10s",
+ "11\tSwedish": "11\tSueco",
+ "12\tSwitch stream / TV Guide": "12\tAlternar stream / guia de TV",
+ "13\tSwitch the menus and buttons to your language. Arabic flips the layout to right to left.": "13\tAlterne os menus e botões para o seu idioma. O árabe inverte o layout para direita a esquerda.",
+ "14\tSword & Sorcery": "14\tEspada e Feitiçaria",
+ "15\tSyncing Trakt…": "15\tSincronizando com o Trakt…",
+ "15s": "15s",
+ "16\tSystem": "16\tSistema",
+ "16:9": "16:9",
+ "17\tS{s} E{e}": "17\tT{s} E{e}",
+ "18\tTHEN notify on": "18\tENTÃO notificar em",
+ "19\tTMDB powers the firehose of every release this month. The free tier covers it. About 60 seconds to set up. Switch to My Library if you'd rather only see what you've saved.": "19\tO TMDB alimenta o fluxo de todos os lançamentos deste mês. O plano gratuito já é suficiente. Leva cerca de 60 segundos para configurar. Mude para Minha Biblioteca se preferir ver só o que você salvou.",
+ "2\tSubtitle delay −0.1s": "2\tAtraso da legenda −0.1s",
+ "2 min": "2 min",
+ "2.39:1": "2.39:1",
+ "20\tTRACKS": "20\tFAIXAS",
+ "20+ and": "20+ e",
+ "2000s Era": "Era dos Anos 2000",
+ "2010s Classics": "Clássicos dos Anos 2010",
+ "2020s Hits": "Sucessos dos Anos 2020",
+ "21\tTV guide": "21\tGuia de TV",
+ "21:9": "21:9",
+ "22\tTackle %": "22\t% de Tackles",
+ "23\tTackles": "23\tDesarmes",
+ "24\tTamil": "24\tTâmil",
+ "24m": "24min",
+ "25\tTarantino Picks": "25\tEscolhas de Tarantino",
+ "26\tTeam Turnovers": "26\tPerdas de Posse do Time",
+ "27\tTechnical Fouls": "27\tFaltas Técnicas",
+ "28\tTechnical. IBM's open family.": "28\tTécnica. A família aberta da IBM.",
+ "29\tTelevision's finest": "29\tO melhor da televisão",
+ "3\tSubtitle font size": "3\tTamanho da fonte da legenda",
+ "3 months": "3 meses",
+ "30\tTense Performances": "30\tAtuações Tensas",
+ "30 days": "30 dias",
+ "30s": "30s",
+ "31\tTest": "31\tTeste",
+ "32\tTest relay": "32\tTestar relay",
+ "33\tText-based sync": "33\tSincronização baseada em texto",
+ "34\tThai": "34\tTailandês",
+ "35\tThe Boogeyman": "35\tO Bicho-Papão",
+ "36\tThe Boss": "36\tO Chefe",
+ "37\tThe British Academy": "37\tA Academia Britânica",
+ "38\tThe Home Front": "38\tA Frente Interna",
+ "39\tThe King": "39\tO Rei",
+ "3PT": "3PT",
+ "4\tSubtitle track": "4\tFaixa de legenda",
+ "4 digits": "4 dígitos",
+ "4-digit PIN is set.": "PIN de 4 dígitos definido.",
+ "4:3": "4:3",
+ "40\tThe Long Lunch": "40\tO Almoço Longo",
+ "40-character token": "token de 40 caracteres",
+ "41\tThe Master": "41\tO Mestre",
+ "42\tThe Trenches": "42\tAs Trincheiras",
+ "43\tThe URL hostname is wrong or no longer exists. Many providers rotate domains; ask your provider for an updated playlist URL.": "43\tO host da URL está errado ou não existe mais. Muitos provedores trocam de domínio; peça ao seu provedor uma URL de playlist atualizada.",
+ "44\tThe URL is valid but the playlist is empty. The provider may be in maintenance, or the URL is misconfigured.": "44\tA URL é válida, mas a playlist está vazia. O provedor pode estar em manutenção, ou a URL está mal configurada.",
+ "45\tThe best {genre} {media}, layered by mood. Browse trending, dive into a director's run, sort by decade, find quiet gems.": "45\tOs melhores {media} de {genre}, organizados por clima. Explore em alta, mergulhe na filmografia de um diretor, ordene por década, encontre joias escondidas.",
+ "45s": "45s",
+ "46\tThe credentials in the URL are wrong. Edit the playlist and double check the username and password against what your provider sent.": "46\tAs credenciais na URL estão erradas. Edite a playlist e confira novamente o usuário e a senha enviados pelo seu provedor.",
+ "47\tThe critics' cut": "47\tA escolha da crítica",
+ "48\tThe default round dot.": "48\tO ponto redondo padrão.",
+ "49\tThe host did not respond. The URL may have expired (many providers rotate domains), the server is down, or your network is blocking it. Contact your provider for an updated URL.": "49\tO host não respondeu. A URL pode ter expirado (muitos provedores trocam de domínio), o servidor pode estar fora do ar, ou sua rede está bloqueando o acesso. Entre em contato com seu provedor para uma URL atualizada.",
+ "5\tSubtitles haven't been published yet. Try search below or check back in a few days.": "5\tAs legendas ainda não foram publicadas. Tente a busca abaixo ou volte a checar em alguns dias.",
+ "50\tThe most anticipated upcoming releases on Trakt": "50\tOs lançamentos mais aguardados no Trakt",
+ "51\tThe most anticipated upcoming releases on Trakt. No login needed.": "51\tOs lançamentos mais aguardados no Trakt. Sem necessidade de login.",
+ "52\tThe myth, reconsidered": "52\tO mito, reconsiderado",
+ "53\tThe playlist server actively refused the connection.": "53\tO servidor da playlist recusou ativamente a conexão.",
+ "54\tThe playlist server is down or your network is blocking it. Try again in a few minutes.": "54\tO servidor da playlist está fora do ar ou sua rede está bloqueando o acesso. Tente novamente em alguns minutos.",
+ "55\tThe quick brown fox jumps over the lazy dog": "55\tO rato roeu a roupa do rei de Roma",
+ "56\tThe real footage": "56\tAs imagens reais",
+ "57\tThe series that make the rest of the night disappear.": "57\tAs séries que fazem o resto da noite desaparecer.",
+ "58\tThe server URL, username, or password is wrong. Edit the playlist and re-check the credentials your provider sent.": "58\tA URL do servidor, usuário ou senha está errado. Edite a playlist e verifique novamente as credenciais enviadas pelo seu provedor.",
+ "59\tThe server answered with status {status}. Is that a streaming server?": "59\tO servidor respondeu com status {status}. Isso é mesmo um servidor de streaming?",
+ "5s": "5s",
+ "6\tSubtle Apple-like sheen on the filled portion.": "6\tBrilho sutil ao estilo Apple na parte preenchida.",
+ "6 months": "6 meses",
+ "60\tThe server is reachable but is not sending any data. Check the URL or contact your provider.": "60\tO servidor está acessível, mas não está enviando dados. Verifique a URL ou entre em contato com seu provedor.",
+ "61\tThe server rejected the request. Some providers block generic clients; verify the credentials work in their official app first.": "61\tO servidor rejeitou a solicitação. Alguns provedores bloqueiam clientes genéricos; verifique se as credenciais funcionam no aplicativo oficial deles primeiro.",
+ "62\tThe server replied with a webpage instead of Xtream data. The account may be expired, or the server URL is not an Xtream panel.": "62\tO servidor respondeu com uma página da web em vez de dados Xtream. A conta pode estar expirada, ou a URL do servidor não é um painel Xtream.",
+ "63\tThe server responded but the playlist is not at that URL. Check for typos and verify with your provider.": "63\tO servidor respondeu, mas a playlist não está nessa URL. Verifique se há erros de digitação e confirme com seu provedor.",
+ "64\tThe test calls {code} and confirms the worker is reachable and running a current version. A passing test means Watch Together rooms will connect.": "64\tO teste chama {code} e confirma que o worker está acessível e rodando uma versão atual. Um teste aprovado significa que as salas do Assistir Juntos vão conectar.",
+ "65\tTheme Library": "65\tBiblioteca de Temas",
+ "66\tTheme cheat sheet": "66\tGuia rápido de temas",
+ "67\tThemes you imported or built.": "67\tTemas que você importou ou criou.",
+ "68\tThemes you keep returning to": "68\tTemas aos quais você sempre volta",
+ "69\tThicker outline": "69\tContorno mais grosso",
+ "7\tSummer Blockbusters": "7\tSucessos de Verão",
+ "70\tThinner outline": "70\tContorno mais fino",
+ "70s Auteurs": "Autores dos Anos 70",
+ "71\tThis Afternoon": "71\tEsta Tarde",
+ "72\tThis Morning": "72\tEsta Manhã",
+ "73\tThis Xtream account is expired, banned, or disabled on the provider side. Renew or confirm with your provider.": "73\tEsta conta Xtream está expirada, banida ou desativada do lado do provedor. Renove ou confirme com seu provedor.",
+ "74\tThis file has one audio track.": "74\tEste arquivo tem apenas uma faixa de áudio.",
+ "75\tThis instance of Harbor is made for desktop. Our standalone iOS and Android apps are coming soon, each with a bespoke, mobile-first experience built for its native platform.": "75\tEsta instância do Harbor é feita para desktop. Nossos aplicativos independentes para iOS e Android estão chegando em breve, cada um com uma experiência própria e feita para dispositivos móveis, construída para sua plataforma nativa.",
+ "76\tThis month": "76\tEste mês",
+ "77\tThis playlist has no movies. It may be live channels only, or an Xtream login that exposes movies separately.": "77\tEsta playlist não tem filmes. Pode ser apenas canais ao vivo, ou um login Xtream que expõe os filmes separadamente.",
+ "78\tThis playlist has no shows. It may be live channels only, or an Xtream login that exposes shows separately.": "78\tEsta playlist não tem séries. Pode ser apenas canais ao vivo, ou um login Xtream que expõe as séries separadamente.",
+ "79\tThis source": "79\tEsta fonte",
+ "8\tSundown": "8\tEntardecer",
+ "8-character key": "chave de 8 caracteres",
+ "80\tThis week": "80\tEsta semana",
+ "80s Classics": "Clássicos dos Anos 80",
+ "81\tThree Point %": "81\t% de Três Pontos",
+ "82\tThree-Time Oscar": "82\tTrês Vezes Oscar",
+ "83\tThriller": "83\tSuspense",
+ "84\tTicking Clocks": "84\tContra o Relógio",
+ "85\tTighter spacing": "85\tEspaçamento mais compacto",
+ "86\tTime elapsed": "86\tTempo decorrido",
+ "87\tTime remaining or duration": "87\tTempo restante ou duração",
+ "88\tTitle & info": "88\tTítulo e informações",
+ "89\tTo run a public relay, post the {code} URL on r/Stremio or wherever your community lives. Other Harbor users paste it into Settings, Harbor Relay, {kbd}.": "89\tPara rodar um relay público, publique a URL de {code} no r/Stremio ou onde quer que sua comunidade esteja. Outros usuários do Harbor podem colá-la em Configurações, Harbor Relay, {kbd}.",
+ "9\tSuperheroes": "9\tSuper-heróis",
+ "90\tToday's openers": "90\tOs abridores de hoje",
+ "91\tToggle a sleep timer that pauses when this episode ends.": "91\tAtive um temporizador de suspensão que pausa quando este episódio terminar.",
+ "92\tToggle fullscreen": "92\tAlternar tela cheia",
+ "93\tToggle mute": "93\tAlternar mudo",
+ "94\tToggle playback.": "94\tAlternar reprodução.",
+ "95\tToggle stats overlay": "95\tAlternar sobreposição de estatísticas",
+ "96\tTonight": "96\tEsta Noite",
+ "97\tTonight's Slate": "97\tProgramação de Hoje à Noite",
+ "98\tTonight's binge bait": "98\tPara maratonar hoje à noite",
+ "99\tTonight's lineup": "99\tA seleção de hoje à noite",
+ "A browser tab opened on AniList. Approve Harbor there, then copy the text it shows and paste it below.": "Uma aba do navegador foi aberta no AniList. Aprove o Harbor lá, depois copie o texto exibido e cole abaixo.",
+ "A browser tab opened on MyAnimeList. Approve Harbor there, then copy the code or the page URL and paste it below.": "Uma aba do navegador foi aberta no MyAnimeList. Aprove o Harbor lá, depois copie o código ou a URL da página e cole abaixo.",
+ "A client for the Stremio protocol. Two minutes to set up; most of it optional. You stay in control of every key.": "Um cliente para o protocolo Stremio. Dois minutos para configurar; a maior parte é opcional. Você mantém o controle total de cada chave.",
+ "A Cloudflare Worker on your own account that hosts your Watch Together rooms.": "Um Cloudflare Worker na sua própria conta que hospeda suas salas do Watch Together.",
+ "A country releases something": "Um país lança algo",
+ "A debrid service is connected. You'll get instant, high-quality streams.": "Um serviço debrid está conectado. Você terá streams instantâneos e de alta qualidade.",
+ "A free Cloudflare account.": "Uma conta gratuita do Cloudflare.",
+ "A free TMDB key is highly recommended. It unlocks the full Harbor experience. The rest are optional, and Cinemeta works out of the box without any.": "Uma chave gratuita do TMDB é altamente recomendada. Ela desbloqueia toda a experiência do Harbor. As demais são opcionais, e o Cinemeta funciona de imediato sem nenhuma delas.",
+ "A grown-up can enter the parent PIN to keep watching.": "Um adulto pode inserir o PIN dos pais para continuar assistindo.",
+ "A Live TV program is about to start": "Um programa de TV ao vivo está prestes a começar",
+ "A name you keep watching": "Um nome que você continua assistindo",
+ "A new anime comes out": "Um novo anime é lançado",
+ "A new movie comes out": "Um novo filme é lançado",
+ "A new series comes out": "Uma nova série é lançada",
+ "A new version is ready to download.": "Uma nova versão está pronta para download.",
+ "A quick age check before adult add-ons unlock. Answer three everyday questions any adult would know, and you're in.": "Uma verificação rápida de idade antes de desbloquear os complementos adultos. Responda três perguntas do dia a dia que qualquer adulto saberia, e pronto.",
+ "A relay is a tiny Cloudflare Worker that passes play/pause/seek messages between you and your friends. No video data ever touches it. Deploy your own in one click (free tier is plenty), or paste a friend's invite link to use theirs.": "Um relay é um pequeno Cloudflare Worker que repassa mensagens de play/pause/seek entre você e seus amigos. Nenhum dado de vídeo passa por ele. Implante o seu em um clique (o nível gratuito é suficiente), ou cole o link de convite de um amigo para usar o dele.",
+ "A relay URL is shareable. Anyone with the URL can join Watch Together rooms hosted on your relay. The unique": "Uma URL de relay é compartilhável. Qualquer pessoa com a URL pode entrar nas salas do Assistir Juntos hospedadas no seu relay. O",
+ "A relay URL is shareable. Anyone with the URL can join Watch Together rooms hosted on your relay. The unique {code} subdomain acts as the access token. There is no login.": "Uma URL de relay é compartilhável. Qualquer pessoa com a URL pode entrar nas salas do Watch Together hospedadas no seu relay. O subdomínio exclusivo {code} funciona como o token de acesso. Não há login.",
+ "A safe, simple space: kid-friendly titles, big art, one-tap play, and a watch-time limit.": "Um espaço seguro e simples: títulos para crianças, arte grande, reprodução com um toque e limite de tempo de tela.",
+ "A safety copy of your addon order. One is saved automatically before Harbor writes any change, and you can save one yourself any time. The five most recent are kept.": "Uma cópia de segurança da sua ordem de complementos. Uma é salva automaticamente antes que o Harbor grave qualquer alteração, e você também pode salvar uma a qualquer momento. As cinco mais recentes são mantidas.",
+ "A second binding for the same action so muscle memory survives.": "Um segundo atalho para a mesma ação, para preservar a memória muscular.",
+ "A small badge over the video (with live FPS) that only appears when Anime4K is actually running. Follows your anime-only setting.": "Um pequeno selo sobre o vídeo (com FPS ao vivo) que só aparece quando o Anime4K está realmente em execução. Segue sua configuração de somente anime.",
+ "A special thank you to the team at Stremio-Addons. Please consider supporting them.": "Um agradecimento especial à equipe do Stremio-Addons. Considere apoiá-los.",
+ "A specific genre releases": "Um gênero específico é lançado",
+ "A specific summary lands faster than a long paragraph. Steps to reproduce help most of all.": "Um resumo específico é resolvido mais rápido do que um parágrafo longo. Passos para reproduzir ajudam mais do que tudo.",
+ "A streamer releases something": "Um streamer lança algo",
+ "A typical Watch Together session uses a few hundred messages per hour. Solo and small-group use stays well under free tier limits.": "Uma sessão típica do Assistir Juntos usa algumas centenas de mensagens por hora. O uso individual e em pequenos grupos fica bem abaixo dos limites do plano gratuito.",
+ "A-Z": "A-Z",
+ "About": "Sobre",
+ "About 200 lines of JavaScript, no dependencies. Read it before deploying if you want to know what runs.": "Cerca de 200 linhas de JavaScript, sem dependências. Leia antes de publicar se quiser saber o que é executado.",
+ "About AniList": "Sobre o AniList",
+ "About MyAnimeList": "Sobre o MyAnimeList",
+ "About Simkl": "Sobre o Simkl",
+ "About Stremboxd": "Sobre o Stremboxd",
+ "About the same": "Mais ou menos igual",
+ "About this title": "Sobre este título",
+ "About Trakt": "Sobre o Trakt",
+ "About two minutes for the auto-deploy path.": "Cerca de dois minutos pelo caminho de implantação automática.",
+ "Above bar · left": "Acima da barra · esquerda",
+ "Absolute": "Absoluto",
+ "Academy Awards": "Oscar",
+ "Accent glow": "Brilho de destaque",
+ "Access denied": "Acesso negado",
+ "Accessibility": "Acessibilidade",
+ "Acclaimed directors": "Diretores aclamados",
+ "Account": "Conta",
+ "Account is not active": "A conta não está ativa",
+ "Accurate Crosses": "Cruzamentos Precisos",
+ "Accurate Long Balls": "Lançamentos Longos Precisos",
+ "Accurate Passes": "Passes Precisos",
+ "Action": "Ação",
+ "Action & Adventure": "Ação e Aventura",
+ "Action Heroine": "Heroína de Ação",
+ "Action Hits": "Sucessos de Ação",
+ "Actions": "Ações",
+ "Active": "Ativo",
+ "Active torrents": "Torrents ativos",
+ "Ad {n}": "Anúncio {n}",
+ "Ad, analytics, and tracking requests pass through untouched.": "Solicitações de anúncios, análises e rastreamento passam intactas.",
+ "Add": "Adicionar",
+ "Add {n} titles from your Harbor watchlist to Trakt? Trakt skips any it already has.": "Adicionar {n} títulos da sua watchlist do Harbor ao Trakt? O Trakt ignora os que já tiver.",
+ "Add {n} titles from your Trakt watchlist to Harbor?": "Adicionar {n} títulos da sua watchlist do Trakt ao Harbor?",
+ "Add {title} to AniList": "Adicionar {title} à AniList",
+ "Add {title} to MyAnimeList": "Adicionar {title} ao MyAnimeList",
+ "Add {title} to Simkl": "Adicionar {title} ao Simkl",
+ "Add a Discord or Telegram URL above before creating rules.": "Adicione uma URL do Discord ou Telegram acima antes de criar regras.",
+ "Add a Join button with your room link while you're in a watch party.": "Adicione um botão de Entrar com o link da sua sala enquanto estiver em uma sessão do Assistir Juntos.",
+ "Add a list": "Adicionar uma lista",
+ "Add a profile for someone else and everyone keeps their own Continue Watching, watch history, and progress.": "Adicione um perfil para outra pessoa e cada um mantém seu próprio Continuar Assistindo, histórico e progresso.",
+ "Add a TMDB key above to unlock this.": "Adicione uma chave do TMDB acima para desbloquear isso.",
+ "Add a TMDB key for the full Harbor": "Adicione uma chave do TMDB para o Harbor completo",
+ "Add a TMDB key in Library settings.": "Adicione uma chave do TMDB nas configurações da Biblioteca.",
+ "Add a TMDB key in Settings → Library to power this view.": "Adicione uma chave do TMDB em Configurações → Biblioteca para habilitar esta visualização.",
+ "Add a TMDB key in Settings → Library to search.": "Adicione uma chave do TMDB em Configurações → Biblioteca para pesquisar.",
+ "Add a TMDB key in settings first": "Primeiro, adicione uma chave do TMDB nas configurações",
+ "Add a TMDB key in Settings to browse collections.": "Adicione uma chave do TMDB em Configurações para navegar pelas coleções.",
+ "Add a TMDB key in Settings to load Arabic content.": "Adicione uma chave do TMDB em Configurações para carregar conteúdo em árabe.",
+ "Add a TMDB key in Settings to see cast, related titles, and trailers here.": "Adicione uma chave do TMDB em Configurações para ver elenco, títulos relacionados e trailers aqui.",
+ "Add a TMDB key in Settings to see the cast for every title.": "Adicione uma chave do TMDB em Configurações para ver o elenco de cada título.",
+ "Add a TMDB key in Settings to unlock posters and the artists behind this award.": "Adicione uma chave do TMDB em Configurações para desbloquear pôsteres e os artistas por trás deste prêmio.",
+ "Add a TMDB key in Settings to unlock the full discovery feed.": "Adicione uma chave do TMDB em Configurações para desbloquear o feed completo de descoberta.",
+ "Add a TMDB key to browse by this filter.": "Adicione uma chave do TMDB para navegar por este filtro.",
+ "Add a TMDB key to export metadata.": "Adicione uma chave do TMDB para exportar metadados.",
+ "Add an ad starting at the current time": "Adicionar um anúncio a partir do momento atual",
+ "Add an MDBList API key to unlock this.": "Adicione uma chave de API do MDBList para desbloquear isso.",
+ "Add an OMDb key above to unlock this.": "Adicione uma chave do OMDb acima para desbloquear isso.",
+ "Add anime to your AniList and they show up here, grouped by status and ready to edit.": "Adicione animes à sua AniList e eles aparecem aqui, agrupados por status e prontos para editar.",
+ "Add another playlist": "Adicionar outra playlist",
+ "Add Custom Source": "Adicionar Fonte Personalizada",
+ "Add element": "Adicionar elemento",
+ "Add files from your computer": "Adicionar arquivos do seu computador",
+ "Add folder": "Adicionar pasta",
+ "Add from URL": "Adicionar por URL",
+ "Add list": "Adicionar lista",
+ "add one in settings": "adicione um nas configurações",
+ "Add people in the Custom calendar manager first, then come back here.": "Adicione pessoas no gerenciador de calendário personalizado primeiro, depois volte aqui.",
+ "Add profile": "Adicionar perfil",
+ "Add Source": "Adicionar Fonte",
+ "Add to AniList": "Adicionar à AniList",
+ "Add to favorites": "Adicionar aos favoritos",
+ "Add to MAL": "Adicionar ao MAL",
+ "Add to Simkl": "Adicionar ao Simkl",
+ "Add to watchlist": "Adicionar à watchlist",
+ "Add to Watchlist": "Adicionar à Watchlist",
+ "added": "adicionado",
+ "Added {n} to your Harbor watchlist": "Adicionado {n} à sua watchlist do Harbor",
+ "Added to stremio-addons.net in the last 14 days": "Adicionado ao stremio-addons.net nos últimos 14 dias",
+ "addon": "addon",
+ "Addon": "Addon",
+ "Addon not installed": "Extensão não instalada",
+ "Addon order": "Ordem dos addons",
+ "Addon order saved on this device": "Ordem dos addons salva neste dispositivo",
+ "Addon order synced to your Stremio account": "Ordem dos addons sincronizada com sua conta Stremio",
+ "addon synced": "addon sincronizado",
+ "Addons": "Addons",
+ "addons synced": "addons sincronizados",
+ "Adds a blurred glass effect behind the stream picker panel.": "Adiciona um efeito de vidro desfocado atrás do painel de seleção de stream.",
+ "Adds a Playlists item to the navigation for browsing movies and shows from your M3U or Xtream playlists (the same ones you add for Live TV). Off by default to keep the nav tidy.": "Adiciona um item Playlists à navegação para explorar filmes e séries das suas playlists M3U ou Xtream (as mesmas que você adiciona para TV ao Vivo). Desativado por padrão para manter a navegação limpa.",
+ "Adds a Playlists tab to the nav for your M3U and Xtream libraries.": "Adiciona uma aba Playlists à navegação para suas bibliotecas M3U e Xtream.",
+ "Adds a Seasons/Arcs switch on shows that have a story-arc grouping (like One Piece), so you can browse by saga instead of scrolling seasons. Needs a TMDB key. Off by default.": "Adiciona uma alternância Temporadas/Arcos em séries com agrupamento por arco narrativo (como One Piece), permitindo navegar por saga em vez de rolar temporadas. Precisa de uma chave do TMDB. Desativado por padrão.",
+ "Adjust interface scale with wheel": "Ajustar a escala da interface com a roda do mouse",
+ "Adrenaline Rush": "Dose de Adrenalina",
+ "Adult": "Adulto",
+ "Advance Continue Watching to the next episode": "Avançar Continuar Assistindo para o próximo episódio",
+ "Advanced": "Avançado",
+ "Advanced (mpv.conf)": "Avançado (mpv.conf)",
+ "Advanced. Target .harbor-custom-hover for the poster, .group:hover for the hover state. Shows live in the preview.": "Avançado. Use .harbor-custom-hover para o pôster e .group:hover para o estado de hover. Aparece em tempo real na prévia.",
+ "Adventure": "Aventura",
+ "Adventure Master": "Mestre da Aventura",
+ "After Dark": "Depois do Anoitecer",
+ "After the news": "Depois do noticiário",
+ "After you stop watching, a stream file stays cached for this long so reopening resumes instead of re-downloading. Older files are cleaned up automatically. Off deletes the file as soon as you leave the player.": "Depois que você para de assistir, um arquivo de stream fica em cache por esse período, para que reabrir retome em vez de baixar de novo. Arquivos antigos são limpos automaticamente. Desativado exclui o arquivo assim que você sai do player.",
+ "After-hours picks": "Seleção de fim de expediente",
+ "Afternoon Picks": "Seleção da Tarde",
+ "Afternoon Roll": "Maratona da Tarde",
+ "Age": "Idade",
+ "Age level": "Faixa etária",
+ "AI & The Future": "IA e o Futuro",
+ "AI didn't find anything for that. Try rephrasing.": "A IA não encontrou nada para isso. Tente reformular.",
+ "AI picks": "Escolhas da IA",
+ "AI search": "Busca por IA",
+ "AI Search · natural-language search": "Busca por IA · busca em linguagem natural",
+ "AI search failed. Tap to retry.": "A busca por IA falhou. Toque para tentar novamente.",
+ "Air Date": "Data de Exibição",
+ "Aired {date}": "Exibido em {date}",
+ "Airing Now": "No Ar Agora",
+ "Align": "Alinhar",
+ "Align {dir}": "Alinhar {dir}",
+ "Alignment": "Alinhamento",
+ "All": "Todos",
+ "All {n} channels loaded": "Todos os {n} canais carregados",
+ "All {total} channels loaded": "Todos os {total} canais carregados",
+ "All addons": "Todos os addons",
+ "All addons ({n})": "Todos os addons ({n})",
+ "All Ages": "Todas as Idades",
+ "all channels": "todos os canais",
+ "All channels": "Todos os canais",
+ "All complete": "Tudo completo",
+ "All content": "Todo o conteúdo",
+ "All Done": "Tudo pronto",
+ "All genres": "Todos os gêneros",
+ "All languages": "Todos os idiomas",
+ "All releases on GitHub": "Todos os lançamentos no GitHub",
+ "All reviews": "Todas as avaliações",
+ "All sources": "Todas as fontes",
+ "All upcoming": "Todos os próximos",
+ "All upcoming needs a TMDB key": "Todos os próximos lançamentos requer uma chave do TMDB",
+ "All years": "Todos os anos",
+ "All-Time Great Series": "Melhores Séries de Todos os Tempos",
+ "All-Time Greats": "Os Melhores de Todos os Tempos",
+ "AllDebrid API key": "Chave de API do AllDebrid",
+ "Allow rating movies, shows, and anime directly using the star picker.": "Permitir avaliar filmes, séries e animes diretamente usando o seletor de estrelas.",
+ "Also won": "Também venceu",
+ "Alternate": "Alternar",
+ "Always keep on this device": "Sempre manter neste dispositivo",
+ "Always on top": "Sempre no topo",
+ "Always re-encode when casting (recommended)": "Sempre recodificar ao transmitir (recomendado)",
+ "Always show the report button": "Sempre mostrar o botão de denúncia",
+ "AM Picks": "Seleção da Manhã",
+ "Ambience": "Ambientação",
+ "AMC": "AMC",
+ "American Epics": "Épicos Americanos",
+ "American History": "História Americana",
+ "An actor you keep watching": "Um ator que você continua assistindo",
+ "An error occurred": "Ocorreu um erro",
+ "An unexpected error occurred": "Ocorreu um erro inesperado",
+ "an unknown date": "uma data desconhecida",
+ "Anchor Selection": "Ancorar seleção",
+ "Ancient Civilizations": "Civilizações Antigas",
+ "and": "e",
+ "and confirms the worker is reachable and running a current version. A passing test means Watch Together rooms will connect.": "e confirma que o worker está acessível e executando uma versão atual. Um teste aprovado significa que as salas do Watch Together vão conectar.",
+ "And for the naughty ones: browsing or rating an adult addon never shows on Discord.": "E para os mais safados: navegar ou avaliar um addon adulto nunca aparece no Discord.",
+ "and your": "e o seu",
+ "AniList": "AniList",
+ "AniList Comments": "Comentários do AniList",
+ "AniList rows": "Linhas da AniList",
+ "Animated Movies": "Filmes de Animação",
+ "Animated Worlds": "Mundos Animados",
+ "Animated, For Grown-Ups": "Animados, Para Adultos",
+ "Animation": "Animação",
+ "Animation Night": "Noite de Animação",
+ "anime": "anime",
+ "Anime": "Anime",
+ "Anime award": "Prêmio de anime",
+ "Anime card rating source": "Fonte de avaliação do card de anime",
+ "Anime done right": "Anime feito do jeito certo",
+ "Anime is drawn on twos and threes, so fast pans can judder. Smoothing fills in the gaps so motion glides.": "Anime é desenhado em twos e threes, então panorâmicas rápidas podem tremer. A suavização preenche as lacunas para que o movimento flua.",
+ "Anime leaves Home Continue Watching and stays in the Anime tab's own row.": "Anime sai do Continuar Assistindo da Home e fica apenas na própria linha da aba Anime.",
+ "Anime of the Year": "Anime do Ano",
+ "Anime only": "Somente anime",
+ "Anime sources are usually richer through Torrentio's anime config or AIOStreams. Make sure one is installed in Stremio.": "Fontes de anime costumam ser mais ricas pela configuração de anime do Torrentio ou pelo AIOStreams. Certifique-se de que um deles esteja instalado no Stremio.",
+ "Anime tab": "Aba Anime",
+ "Anime Title Language": "Idioma do título do anime",
+ "Anime tweaks": "Ajustes para anime",
+ "Anime4K": "Anime4K",
+ "Anime4K and smooth-motion run on the bundled mpv engine in the Harbor desktop app. They have no effect in the browser.": "Anime4K e suavização de movimento rodam no engine mpv incluso no app desktop do Harbor. Não têm efeito no navegador.",
+ "Anime4K isn't set up yet. Turn it on in Settings under Anime.": "O Anime4K ainda não foi configurado. Ative-o em Configurações, na seção Anime.",
+ "Anime4K real-time upscaling, smooth motion, and where SVP fits in. All the anime-specific picture enhancements in one place.": "Upscaling em tempo real com Anime4K, movimento suave e onde o SVP se encaixa. Todas as melhorias de imagem específicas para anime em um só lugar.",
+ "Anime4K shaders": "Shaders Anime4K",
+ "Anime4K upscaling": "Upscaling Anime4K",
+ "annoying": "irritante",
+ "Anonymous": "Anônimo",
+ "Anti-War": "Antiguerra",
+ "Anticipated": "Mais aguardados",
+ "Any": "Qualquer",
+ "Any country": "Qualquer país",
+ "Any genre": "Qualquer gênero",
+ "Any new anime": "Qualquer anime novo",
+ "Any new movie": "Qualquer filme novo",
+ "Any new series": "Qualquer série nova",
+ "Any of your {n} tracked people": "Qualquer uma das {n} pessoas que você acompanha",
+ "Any quality": "Qualquer qualidade",
+ "Any source": "Qualquer fonte",
+ "Any streamer": "Qualquer streamer",
+ "Anyone who opens this link gets the relay URL and room code set automatically. Works in the browser too: no install required for the joiner.": "Qualquer pessoa que abrir este link recebe a URL do relay e o código da sala configurados automaticamente. Funciona no navegador também: nenhuma instalação é necessária para quem entra.",
+ "Anything matching your Custom calendar: tracked people, genres, providers, countries.": "Qualquer coisa que corresponda ao seu calendário personalizado: pessoas rastreadas, gêneros, provedores, países.",
+ "Anything you install in Harbor pushes back to your Stremio account so it shows up on mobile too. Sign in via the avatar in the bottom-left of the sidebar.": "Tudo que você instala no Harbor é enviado de volta para sua conta Stremio, para aparecer no celular também. Entre pelo avatar no canto inferior esquerdo da barra lateral.",
+ "Anywhere in Harbor.": "Em qualquer lugar do Harbor.",
+ "API budget": "Orçamento de API",
+ "API key": "Chave de API",
+ "API token": "Token de API",
+ "app unusable": "app inutilizável",
+ "Appearance": "Aparência",
+ "Apple TV+": "Apple TV+",
+ "Apply {language}": "Aplicar {language}",
+ "Apply {language} preferences?": "Aplicar preferências de {language}?",
+ "Apply custom theme": "Aplicar tema personalizado",
+ "Apply SVP to": "Aplicar SVP a",
+ "Arabic": "Árabe",
+ "arabic.row.classics": "Clássicos do Cinema Egípcio",
+ "arabic.row.comedy": "Comédia Árabe",
+ "arabic.row.drama": "Drama Árabe",
+ "arabic.row.khaleeji": "Golfo / Khaleeji",
+ "arabic.row.movies": "Filmes Árabes",
+ "arabic.row.ramadan": "Séries do Ramadã 2026",
+ "arabic.row.trending": "Em Alta em Árabe",
+ "Archive Portraits": "Retratos de Arquivo",
+ "Arcs": "Arcos",
+ "Around {min} min": "Cerca de {min} min",
+ "Art Direction": "Direção de Arte",
+ "as the scheme instead of": "como o esquema em vez de",
+ "Ascending": "Crescente",
+ "Ask": "Perguntar",
+ "Ask a grown-up before you close.": "Peça a um adulto antes de fechar.",
+ "Ask a grown-up to enter the parent PIN.": "Peça a um adulto para digitar o PIN dos pais.",
+ "Ask a grown-up to switch profiles.": "Peça a um adulto para trocar de perfil.",
+ "Ask AI to find titles for \\": "Pedir à IA para encontrar títulos para \\",
+ "Ask before leaving": "Perguntar antes de sair",
+ "Ask each time": "Perguntar sempre",
+ "Ask to resume or start over": "Perguntar se deseja continuar ou começar de novo",
+ "Asking AI…": "Perguntando à IA…",
+ "Aspect ratio": "Proporção de tela",
+ "Assists": "Assistências",
+ "at {n}": "às {n}",
+ "at {time}": "às {time}",
+ "At Bats": "Turnos no Bastão",
+ "AudD · in-player song ID": "AudD · identificação de música no player",
+ "AudD API token": "Token de API do AudD",
+ "Audio": "Áudio",
+ "Audio bitrate": "Taxa de bits do áudio",
+ "Audio codec": "Codec de áudio",
+ "Audio languages": "Idiomas de áudio",
+ "Audio track": "Faixa de áudio",
+ "Audio tracks": "Faixas de áudio",
+ "Australia": "Austrália",
+ "Authorize Harbor on AniList": "Autorizar o Harbor no AniList",
+ "Authorize Harbor on MyAnimeList": "Autorizar o Harbor no MyAnimeList",
+ "Authorize Harbor on Simkl": "Autorizar o Harbor no Simkl",
+ "Authorize Harbor on Trakt": "Autorizar o Harbor no Trakt",
+ "Authorized": "Autorizado",
+ "Authorized {when}": "Autorizado {when}",
+ "Authorized on this device": "Autorizado neste dispositivo",
+ "auto": "automático",
+ "Auto": "Automático",
+ "Auto (recommended)": "Automático (recomendado)",
+ "Auto is best for most people. mpv handles the trickiest 4K, HDR, and audio formats.": "Automático é o ideal para a maioria das pessoas. O mpv lida bem com os formatos mais complicados de 4K, HDR e áudio.",
+ "Auto next episode": "Próximo episódio automático",
+ "Auto-confirm peer-to-peer streaming": "Confirmar automaticamente streaming peer-to-peer",
+ "Auto-deploy from Harbor": "Implantar automaticamente pelo Harbor",
+ "Auto-hide the Skip button after": "Ocultar automaticamente o botão Pular após",
+ "Auto-included. No keys, no library, no URLs. Just structural flags so reproductions go faster.": "Incluído automaticamente. Sem chaves, sem biblioteca, sem URLs. Apenas flags estruturais para agilizar reproduções.",
+ "Auto-loading the best stream": "Carregando automaticamente o melhor stream",
+ "Auto-play next episode": "Reproduzir o próximo episódio automaticamente",
+ "Auto-skip credit outros": "Pular automaticamente os créditos finais",
+ "Auto-skip intros": "Pular automaticamente as aberturas",
+ "Auto-skip recaps": "Pular automaticamente os recaps",
+ "Automatically jump past recap segments.": "Pula automaticamente os trechos de recap.",
+ "Automatically play the next episode when the current one ends.": "Reproduz automaticamente o próximo episódio quando o atual terminar.",
+ "Automatically skip ending credits and trigger the next episode countdown immediately.": "Pula automaticamente os créditos finais e inicia imediatamente a contagem regressiva do próximo episódio.",
+ "Automatically track what you are playing and save watch progress in real-time.": "Acompanha automaticamente o que você está assistindo e salva o progresso em tempo real.",
+ "Automations": "Automações",
+ "AUTOMATIONS": "AUTOMAÇÕES",
+ "Autoplay trailer on detail pages": "Reproduzir trailer automaticamente nas páginas de detalhes",
+ "Availability": "Disponibilidade",
+ "Average /10": "Média /10",
+ "Average /5": "Média /5",
+ "Average Letterboxd rating out of 5.": "Avaliação média do Letterboxd de 5.",
+ "Avg ★ {rating}": "Média ★ {rating}",
+ "Award Nominee": "Indicado a prêmio",
+ "Award Winner": "Vencedor de prêmio",
+ "Award Winning Anime": "Anime premiado",
+ "Awards": "Prêmios",
+ "Awards & Recognition": "Prêmios e reconhecimento",
+ "Awards Contenders": "Candidatos a Prêmios",
+ "Awkward Hero": "Herói Desajeitado",
+ "Back": "Voltar",
+ "Back {n} seconds": "Voltar {n} segundos",
+ "Back {n}s": "Voltar {n}s",
+ "Back 10s": "Voltar 10s",
+ "Back 30 seconds": "Voltar 30 segundos",
+ "Back out mid-episode and the card keeps the exact frame you stopped on, with your progress, so it looks like a pause instead of a thumbnail.": "Saia no meio do episódio e o card mantém exatamente o quadro em que você parou, com seu progresso, parecendo uma pausa em vez de uma miniatura.",
+ "Back to addons": "Voltar aos addons",
+ "Back to library": "Voltar à biblioteca",
+ "Back to relay": "Voltar ao relay",
+ "Back to threads": "Voltar para os tópicos",
+ "Back to top": "Voltar ao topo",
+ "Back up current order": "Fazer backup da ordem atual",
+ "Backdrop size": "Tamanho do plano de fundo",
+ "Backdrops": "Planos de fundo",
+ "Backed up. The current account order is saved in the Backups panel.": "Backup feito. A ordem atual da conta foi salva no painel de Backups.",
+ "Background": "Plano de fundo",
+ "Background image": "Imagem de fundo",
+ "Background opacity": "Opacidade do plano de fundo",
+ "Backup & restore": "Backup e restauração",
+ "Backup credentials": "Credenciais de backup",
+ "Backup loaded into the editor. Addons added since stay at the end. Nothing changes until you press Save.": "Backup carregado no editor. Addons adicionados desde então permanecem no final. Nada muda até você clicar em Salvar.",
+ "Backups": "Backups",
+ "Bad username or password": "Usuário ou senha incorretos",
+ "Badge position": "Posição do selo",
+ "BAFTA": "BAFTA",
+ "Balanced": "Equilibrado",
+ "Balanced (Mobius)": "Balanceado (Mobius)",
+ "Bar color": "Cor da barra",
+ "Bar height": "Altura da barra",
+ "Bar image": "Imagem da barra",
+ "Bar style": "Estilo da barra",
+ "Bass boost": "Reforço de graves",
+ "Be My Valentine": "Seja Meu Valentine",
+ "Be the first to start a discussion.": "Seja o primeiro a iniciar uma discussão.",
+ "Beautiful Monsters": "Belos Monstros",
+ "Before Trilogy": "Trilogia Before",
+ "Behavior": "Comportamento",
+ "Behind the sound": "Por trás do som",
+ "Beloved, slightly forgotten": "Queridos, um pouco esquecidos",
+ "below. In Telegram, send him": "abaixo. No Telegram, envie a ele",
+ "below. Send it": "abaixo. Envie",
+ "Berlinale": "Berlinale",
+ "Best": "Melhor",
+ "Best for debrid": "Melhor para debrid",
+ "Best known for": "Mais conhecido por",
+ "Best Picture and beyond": "Melhor Filme e muito mais",
+ "Beta": "Beta",
+ "Better": "Melhor",
+ "Better posters, ratings, episode info.": "Pôsteres, avaliações e informações de episódios melhores.",
+ "Between meetings": "Entre reuniões",
+ "Beyond the kids' shelf": "Além da prateleira infantil",
+ "BG Art": "BG Art",
+ "Big Swings": "Grandes Apostas",
+ "Black bar": "Barra preta",
+ "Block ads & trackers": "Bloquear anúncios e rastreadores",
+ "Blockbuster Maker": "Fazedor de Blockbusters",
+ "blocked": "bloqueado",
+ "Blocked Shots": "Chutes Bloqueados",
+ "Blocks": "Tocos",
+ "Blur": "Desfoque",
+ "Blur comments by default": "Borrar comentários por padrão",
+ "Blur descriptions": "Desfocar descrições",
+ "Blur episode artwork, titles, and descriptions for episodes you have not watched yet, on both shows and anime. Hover an episode to peek.": "Desfoca a arte, os títulos e as descrições de episódios que você ainda não assistiu, tanto em séries quanto em animes. Passe o mouse sobre um episódio para dar uma espiada.",
+ "Blur episode images on detail page": "Borrar imagens dos episódios na página de detalhes",
+ "Blur reviews by default": "Desfocar críticas por padrão",
+ "Blur spoilers": "Desfocar spoilers",
+ "Blur stream backdrop": "Desfocar plano de fundo do stream",
+ "Blur thumbnails": "Desfocar miniaturas",
+ "Blur titles": "Desfocar títulos",
+ "Blur up": "Desfoque progressivo",
+ "Blurs the hero image and stills on the episode detail page until you click reveal.": "Borra o banner principal e as capturas de tela na página de detalhes do episódio até que você clique para revelar.",
+ "Board": "Painel",
+ "Bokeh": "Bokeh",
+ "Bokeh background": "Fundo bokeh",
+ "Bold": "Negrito",
+ "Bold text": "Texto em negrito",
+ "Boost SDR video toward HDR": "Aprimorar vídeo SDR para HDR",
+ "Born {date}": "Nascimento em {date}",
+ "bot token": "token do bot",
+ "Bot token": "Token do bot",
+ "BotFather replies with a token like": "O BotFather responde com um token como",
+ "Both Flags": "Ambas as Bandeiras",
+ "Both go in the boxes above. Harbor builds the URL for you.": "Ambos vão nos campos acima. O Harbor monta a URL para você.",
+ "Both Sides of the Law": "Dos Dois Lados da Lei",
+ "Bottom · center": "Inferior · centro",
+ "Bottom · left": "Inferior · esquerda",
+ "Bottom · right": "Inferior · direita",
+ "Bottom bar": "Barra inferior",
+ "Bottom left": "Inferior esquerdo",
+ "Bottom right": "Inferior direito",
+ "box above.": "campo acima.",
+ "Box color": "Cor da caixa",
+ "Brazil": "Brasil",
+ "Bright-side series": "Séries do lado bom",
+ "Brighten dark movies": "Clarear filmes escuros",
+ "Brightness": "Brilho",
+ "Bring in your library": "Traga sua biblioteca",
+ "Bring the Tissues": "Traga os Lenços",
+ "Bring your Letterboxd watchlist, diary, liked films and lists into Harbor via the Stremboxd bridge.": "Traga sua watchlist, diário, filmes curtidos e listas do Letterboxd para o Harbor via a ponte Stremboxd.",
+ "Bring your lists with you": "Leve suas listas com você",
+ "Brings back the small in-app tips you've dismissed without redoing the welcome flow.": "Traz de volta as pequenas dicas do app que você dispensou, sem refazer o fluxo de boas-vindas.",
+ "Brings in your library, watchlist, and installed addons.": "Traz sua biblioteca, watchlist e addons instalados.",
+ "Brit Comedy": "Comédia Britânica",
+ "British Television": "Televisão Britânica",
+ "Browse": "Explorar",
+ "Browse addons": "Navegar pelos addons",
+ "Browse all releases": "Ver todos os lançamentos",
+ "Browse by Award": "Explorar por prêmio",
+ "Browse by category": "Navegar por categoria",
+ "Browse by country": "Navegar por país",
+ "Browse by Genre": "Explorar por gênero",
+ "Browse by Language": "Navegar por idioma",
+ "Browse channels": "Navegar por canais",
+ "Browse provider": "Navegar por provedor",
+ "Browse pull requests": "Ver pull requests",
+ "Browse streams manually": "Navegar pelos streams manualmente",
+ "Browse your catalogs": "Navegar pelos seus catálogos",
+ "Browsing": "Navegando",
+ "Browsing the TV guide": "Navegando no guia de TV",
+ "Budget": "Orçamento",
+ "Budget exhausted, resets at midnight UTC.": "Orçamento esgotado, reinicia à meia-noite UTC.",
+ "Buffer fill": "Preenchimento do buffer",
+ "Buffer fill brightness": "Brilho do preenchimento do buffer",
+ "Buffering": "Armazenando em buffer",
+ "Bug reporters get listed in the release notes when their report leads to a shipped fix. Leave blank to stay anonymous.": "Quem reporta bugs é listado nas notas de versão quando o relato leva a uma correção lançada. Deixe em branco para ficar anônimo.",
+ "Bug reports": "Relatórios de bugs",
+ "Build": "Build",
+ "Build a bigger buffer": "Criar um buffer maior",
+ "Build a named filter once, then apply it in the source picker to hide everything that doesn't match. Each filter ANDs its dimensions and ignores any you leave blank.": "Crie um filtro nomeado uma vez e aplique-o no seletor de fontes para ocultar tudo que não corresponder. Cada filtro combina (E) suas dimensões e ignora as que você deixar em branco.",
+ "Build a new theme": "Criar um novo tema",
+ "Build a Theme": "Criar um tema",
+ "Build from source": "Compilar a partir do código-fonte",
+ "Build identity. Useful when filing a bug report at bugs@harbor.site.": "Identidade da build. Útil ao registrar um relatório de bug em bugs@harbor.site.",
+ "Build your own feed from actors, directors, and Trakt lists": "Crie seu próprio feed a partir de atores, diretores e listas do Trakt",
+ "Build your own palette": "Crie sua própria paleta",
+ "Building tonight's queue…": "Montando a fila de hoje à noite…",
+ "Built for desktop resolutions": "Feito para resoluções de desktop",
+ "Built-in peer-to-peer streaming, served from your own machine.": "Streaming peer-to-peer integrado, servido a partir da sua própria máquina.",
+ "Bullet Ballet": "Balé de Balas",
+ "Bundled with Harbor. Plays anything you throw at it.": "Incluído no Harbor. Reproduz qualquer coisa que você jogar nele.",
+ "Burn in subtitles": "Gravar legendas no vídeo",
+ "By community stars": "Por estrelas da comunidade",
+ "By default, addon rails that duplicate the built-in ones (Trending, Popular, Top Rated, etc.) are merged so you don't see the same row twice. Turn this on to show every one, duplicates and all.": "Por padrão, as fileiras de complementos que duplicam as integradas (Em alta, Populares, Mais bem avaliados, etc.) são mescladas para você não ver a mesma linha duas vezes. Ative isto para mostrar todas, duplicatas incluídas.",
+ "by the Harbor team": "pela equipe do Harbor",
+ "Cache buffering": "Buffer de cache",
+ "Cache location": "Local do cache",
+ "Cached on Real-Debrid, TorBox, AllDebrid. Instant play.": "Em cache no Real-Debrid, TorBox, AllDebrid. Reprodução instantânea.",
+ "Cached only": "Somente em cache",
+ "Cached only ({n})": "Somente em cache ({n})",
+ "Calendar": "Calendário",
+ "Can't decide?": "Não consegue decidir?",
+ "Canada": "Canadá",
+ "Cancel": "Cancelar",
+ "Cancel autoplay": "Cancelar reprodução automática",
+ "Cancel download": "Cancelar download",
+ "Cancel timer": "Cancelar temporizador",
+ "Canceled": "Cancelado",
+ "Cannes": "Cannes",
+ "Cap how much disk the cache can use. When it goes over, Harbor deletes the oldest files first. Enforced on launch and as streams close.": "Limite quanto disco o cache pode usar. Quando ultrapassar, o Harbor apaga primeiro os arquivos mais antigos. Aplicado na inicialização e quando os streams são encerrados.",
+ "Captions in your language": "Legendas no seu idioma",
+ "Card overlays": "Sobreposições de cartão",
+ "Career Drama": "Drama de Carreira",
+ "Carry it through the day": "Leve pelo resto do dia",
+ "Cast": "Transmitir",
+ "Cast · {n}": "Elenco · {n}",
+ "Cast information isn't available for this title.": "As informações do elenco não estão disponíveis para este título.",
+ "Cast to a device": "Transmitir para um dispositivo",
+ "Cast to TV or speaker": "Transmitir para TV ou alto-falante",
+ "Casting comes with the mpv backend": "A transmissão vem com o backend mpv",
+ "Catalog": "Catálogo",
+ "Catalogs": "Catálogos",
+ "Catalogs & metadata": "Catálogos e metadados",
+ "Catalogs to show": "Catálogos a exibir",
+ "Catch stremio:// install links inside Harbor": "Capturar links de instalação stremio:// dentro do Harbor",
+ "categories": "categorias",
+ "category": "categoria",
+ "Cause": "Causa",
+ "Celebrated actors": "Atores aclamados",
+ "Center": "Centralizar",
+ "Change": "Alterar",
+ "Change the order addons are tried in": "Alterar a ordem em que os complementos são testados",
+ "Change…": "Alterar…",
+ "Changing the location restarts the engine. Clearing removes all cached stream files right away; anything you reopen will re-fetch.": "Alterar o local reinicia o mecanismo. Limpar remove imediatamente todos os arquivos de stream em cache; qualquer coisa que você reabrir será buscada novamente.",
+ "Channel": "Canal",
+ "Channel categories": "Categorias de canais",
+ "Channel is taking a while": "O canal está demorando",
+ "Channel won't load": "O canal não carrega",
+ "Chaos Theory": "Teoria do Caos",
+ "Char Design": "Design de Personagens",
+ "Character Work": "Trabalho de Personagem",
+ "Chat": "Chat",
+ "chat ID": "ID do chat",
+ "Chat ID": "ID do chat",
+ "Check for updates": "Verificar atualizações",
+ "Check logs in Cloudflare dashboard, then redeploy": "Verifique os logs no painel da Cloudflare e depois reimplante",
+ "Check relay": "Verificar relay",
+ "Checking": "Verificando",
+ "Checking {n} items…": "Verificando {n} itens…",
+ "Checking harbor.site for a newer build.": "Verificando harbor.site em busca de uma build mais recente.",
+ "Checking with AniList...": "Verificando com AniList...",
+ "Checking with MyAnimeList...": "Verificando com MyAnimeList...",
+ "Checking…": "Verificando…",
+ "China": "China",
+ "Chinese": "Chinês",
+ "Choose": "Escolher",
+ "Choose a folder...": "Escolha uma pasta...",
+ "Choose a model": "Escolha um modelo",
+ "Choose a source to save offline. You can track progress on the Downloads page.": "Escolha uma fonte para salvar offline. Você pode acompanhar o progresso na página de Downloads.",
+ "Choose an avatar": "Escolha um avatar",
+ "Choose file": "Escolher arquivo",
+ "Choose folder": "Escolher pasta",
+ "Choose how far the keyboard arrows and player seek buttons jump.": "Escolha o quanto as setas do teclado e os botões de avanço do player pulam.",
+ "Choose what happens when you hit Play on a title. Manual gives you full control over quality and source.": "Escolha o que acontece ao clicar em Reproduzir num título. Manual dá a você controle total sobre qualidade e fonte.",
+ "Choose which Simkl rails appear on your home screen.": "Escolha quais fileiras do Simkl aparecem na sua tela inicial.",
+ "Chosen by actors": "Escolhido por atores",
+ "chrome.harborHome": "Início do Harbor",
+ "chrome.locked": "Bloqueado",
+ "chrome.lockedRequiresPin": "{label} (bloqueado, requer PIN)",
+ "chrome.lockedShort": "{label} · bloqueado",
+ "chrome.maximize": "Maximizar",
+ "chrome.minimize": "Minimizar",
+ "chrome.parentalOn": "Controle parental ativado",
+ "chrome.restore": "Restaurar",
+ "chrome.scrollForMore": "Role para ver mais",
+ "chrome.sectionLibrary": "Biblioteca",
+ "chrome.watchTogether": "Assistir junto",
+ "Cinematography": "Cinematografia",
+ "Cinemeta didn't return anything for {genre}. Try a different genre or add a TMDB key.": "O Cinemeta não retornou nada para {genre}. Tente outro gênero ou adicione uma chave do TMDB.",
+ "Classic Mystery": "Mistério Clássico",
+ "Classic Stremio": "Stremio clássico",
+ "Classic. Was Harbor's original pair.": "Clássico. Era o par original do Harbor.",
+ "Clean modern. Sans across the board.": "Moderno e limpo. Sans em toda parte.",
+ "Clean releases for this title are still scarce. Confirm the filename and size before playing.": "Versões limpas para este título ainda são escassas. Confirme o nome do arquivo e o tamanho antes de reproduzir.",
+ "Clean releases for this title haven't surfaced yet. The result below may not match the title you're looking for, so confirm the filename and size before playing.": "Ainda não surgiram versões limpas para este título. O resultado abaixo pode não corresponder ao título que você procura, então confirme o nome do arquivo e o tamanho antes de reproduzir.",
+ "Cleaner grid for when your poster service already prints the title onto the artwork.": "Grade mais limpa para quando seu serviço de pôsteres já imprime o título na arte.",
+ "Cleaner grid when your poster service already prints the title on the artwork.": "Grade mais limpa quando o seu serviço de pôsteres já imprime o título na arte.",
+ "Clear": "Limpar",
+ "Clear & restart": "Limpar e reiniciar",
+ "Clear A-B loop": "Limpar repetição A-B",
+ "Clear all": "Limpar tudo",
+ "Clear all saved frames": "Limpar todos os quadros salvos",
+ "Clear cache now": "Limpar cache agora",
+ "Clear drawings": "Limpar desenhos",
+ "Clear filter": "Limpar filtro",
+ "Clear filters": "Limpar filtros",
+ "Clear history": "Limpar histórico",
+ "Clear match": "Limpar correspondência",
+ "Clear search": "Limpar busca",
+ "Clear the search to see all {n} installed.": "Limpe a busca para ver todos os {n} instalados.",
+ "Clearances": "Cortes",
+ "Clearing": "Limpando",
+ "Clearing…": "Limpando…",
+ "CLI.": "CLI.",
+ "Click": "Clicar",
+ "Click {b1} in the top right. Pick the {b2} template (it's the default, should already be selected).": "Clique em {b1} no canto superior direito. Escolha o modelo {b2} (é o padrão, já deve estar selecionado).",
+ "Click {kbd}.": "Clique em {kbd}.",
+ "Click a line": "Clique em uma linha",
+ "Click another": "Clique em outro",
+ "Click any binding to rebind it. Press Esc while capturing to cancel. Letters ignore Shift (so K and Shift+K trigger the same action).": "Clique em qualquer atalho para reatribuí-lo. Pressione Esc durante a captura para cancelar. Letras ignoram Shift (então K e Shift+K acionam a mesma ação).",
+ "Click any control in the live preview to move, hide, or reorder it.": "Clique em qualquer controle na pré-visualização ao vivo para movê-lo, ocultá-lo ou reordená-lo.",
+ "Click any control to edit it.": "Clique em qualquer controle para editá-lo.",
+ "Click any source to swap in place": "Clique em qualquer fonte para trocar no lugar",
+ "Click below to open": "Clique abaixo para abrir",
+ "Click below to open ": "Clique abaixo para abrir ",
+ "Click below to open {name}'s setup page in Harbor's built-in browser. Pick your options. When you click Install on their page, Harbor catches the link automatically and updates the addon.": "Clique abaixo para abrir a página de configuração de {name} no navegador integrado do Harbor. Escolha suas opções. Ao clicar em Instalar na página deles, o Harbor captura o link automaticamente e atualiza o addon.",
+ "Click below to open {name}'s setup page. Pick your options, then copy the install link it gives you and paste it below to update the addon.": "Clique abaixo para abrir a página de configuração de {name}. Escolha suas opções, copie o link de instalação fornecido e cole abaixo para atualizar o addon.",
+ "Click the button below to open Cloudflare's Workers page.": "Clique no botão abaixo para abrir a página de Workers do Cloudflare.",
+ "Click the button below. It opens Cloudflare's token page in your browser. Sign in (free, takes 30 seconds if you don't have an account).": "Clique no botão abaixo. Ele abre a página de tokens do Cloudflare no seu navegador. Faça login (gratuito, leva 30 segundos se você não tiver uma conta).",
+ "Click to apply · Right-click to delete": "Clique para aplicar · Clique com o botão direito para excluir",
+ "click to cancel": "clique para cancelar",
+ "Click to cycle 100 / 75 / 50 / 25 / 0.": "Clique para alternar entre 100 / 75 / 50 / 25 / 0.",
+ "Click to open {name}'s setup page in Harbor's built-in browser. Pick your options. When you click Install on their page, Harbor catches the link automatically and updates the addon.": "Clique para abrir a página de configuração do {name} no navegador integrado do Harbor. Escolha suas opções. Quando você clicar em Instalar na página deles, o Harbor captura o link automaticamente e atualiza o addon.",
+ "Click to open {name}'s setup page. Pick your options, then copy the install link it gives you and paste it below to update the addon.": "Clique para abrir a página de configuração do {name}. Escolha suas opções, depois copie o link de instalação fornecido e cole abaixo para atualizar o addon.",
+ "Click to turn off": "Clique para desativar",
+ "Click to turn on": "Clique para ativar",
+ "Click toggles mute. Wheel scrolls volume.": "Clique alterna o mudo. A roda do mouse ajusta o volume.",
+ "Client ID": "ID do cliente",
+ "Client secret": "Segredo do cliente",
+ "Close": "Fechar",
+ "Close · Esc": "Fechar · Esc",
+ "Close guide": "Fechar guia",
+ "Close Harbor?": "Fechar o Harbor?",
+ "Close image viewer": "Fechar visualizador de imagens",
+ "Close invite link panel": "Fechar painel de link de convite",
+ "Close match": "Fechar correspondência",
+ "Close match to host": "Fechar correspondência para o anfitrião",
+ "Close overview": "Fechar visão geral",
+ "Close player": "Fechar player",
+ "Close search": "Fechar busca",
+ "Close to the system tray": "Fechar para a bandeja do sistema",
+ "Close trailer": "Fechar trailer",
+ "Closing the window tucks Harbor into the tray instead of quitting, so it reopens instantly. Right-click the tray icon for quick controls, or pick Quit to exit fully.": "Fechar a janela envia o Harbor para a bandeja em vez de sair, para que reabra instantaneamente. Clique com o botão direito no ícone da bandeja para controles rápidos, ou escolha Sair para encerrar completamente.",
+ "Cloudflare asks you to pick a name (this becomes {code}). Type any name (your first name works). Then click {b1}.": "O Cloudflare pede que você escolha um nome (ele se torna {code}). Digite qualquer nome (seu primeiro nome serve). Depois clique em {b1}.",
+ "Cloudflare shows API tokens only once. Save a copy now or you'll lose the ability to stop or redeploy this relay from Harbor.": "O Cloudflare exibe os tokens de API apenas uma vez. Salve uma cópia agora ou você perderá a capacidade de parar ou reimplantar este relay pelo Harbor.",
+ "Cloudflare token form filled with name 'Harbor Relay' and one permission row set to Account / Workers Scripts / Edit": "Formulário de token do Cloudflare preenchido com o nome 'Harbor Relay' e uma linha de permissão definida como Account / Workers Scripts / Edit",
+ "Cloudflare Workers free tier:": "Nível gratuito do Cloudflare Workers:",
+ "Code expired": "Código expirado",
+ "Coffee-and-couch": "Café e sofá",
+ "Collapse": "Recolher",
+ "Collapse sidebar": "Recolher barra lateral",
+ "Collection": "Coleção",
+ "Collections": "Coleções",
+ "Color & HDR": "Cor e HDR",
+ "Color presets, custom backgrounds, and the font pair Harbor renders in.": "Predefinições de cores, planos de fundo personalizados e o par de fontes com o qual o Harbor é renderizado.",
+ "Color tokens": "Tokens de cor",
+ "Colors": "Cores",
+ "Come back here and hit {b1}. The Hello World can stay where it is. It's free and harmless.": "Volte aqui e clique em {b1}. O Hello World pode ficar onde está. É gratuito e inofensivo.",
+ "Comedy": "Comédia",
+ "Comedy Series": "Séries de Comédia",
+ "Comfort Watch": "Para Relaxar",
+ "Coming of Age": "Amadurecimento",
+ "Coming to Theaters": "Em Breve nos Cinemas",
+ "Comma-separated words. Audio or subtitle tracks whose name matches any of these are skipped during automatic selection. You can still pick them by hand in the player.": "Palavras separadas por vírgula. Faixas de áudio ou legenda cujo nome corresponda a qualquer uma delas são ignoradas na seleção automática. Você ainda pode escolhê-las manualmente no player.",
+ "Commanding Range": "Amplitude Marcante",
+ "commentary, descriptive": "comentário, descritivo",
+ "Comments": "Comentários",
+ "Comments are blurred until you reveal them, even if they are not tagged as spoilers.": "Os comentários ficam borrados até que você os revele, mesmo que não estejam marcados como spoiler.",
+ "Comments are hidden": "Os comentários estão ocultos",
+ "Comments may take a moment to appear on Trakt": "Os comentários podem levar um momento para aparecer no Trakt",
+ "Comments on anime pages are blurred until you reveal them, even if they are not tagged as spoilers.": "Os comentários nas páginas de animes ficam borrados até você revelá-los, mesmo que não estejam marcados como spoilers.",
+ "Comments on episode/show pages are blurred until you reveal them, even if they are not tagged as spoilers.": "Os comentários nas páginas de episódios/séries ficam borrados até você revelá-los, mesmo que não estejam marcados como spoilers.",
+ "Common picks for a fresh setup.": "Escolhas comuns para uma configuração nova.",
+ "common.back": "Voltar",
+ "common.cancel": "Cancelar",
+ "common.close": "Fechar",
+ "common.confirm": "Confirmar",
+ "common.delete": "Excluir",
+ "common.done": "Concluído",
+ "common.edit": "Editar",
+ "common.loading": "Carregando",
+ "common.more": "Mais",
+ "common.next": "Próximo",
+ "common.play": "Reproduzir",
+ "common.previous": "Anterior",
+ "common.remove": "Remover",
+ "common.retry": "Tentar novamente",
+ "common.save": "Salvar",
+ "common.search": "Buscar",
+ "Community": "Comunidade",
+ "community API. Star, browse, and contribute on their site.": "API da comunidade. Dê estrela, explore e contribua no site deles.",
+ "Community comments from Trakt that appear on movie and show pages.": "Comentários da comunidade do Trakt que aparecem nas páginas de filmes e séries.",
+ "Compact": "Compacto",
+ "Companion series for whatever the afternoon throws at you.": "Séries companheiras para o que quer que a tarde traga.",
+ "Complete": "Concluído",
+ "Completed": "Concluído",
+ "Concert Films": "Filmes de Show",
+ "Condensed": "Condensado",
+ "Condensed shows a top pick, quality tiles, and a drawer. Stremio is a flat list grouped by addon, no scoring.": "O modo Condensado mostra uma escolha principal, blocos de qualidade e uma gaveta. O Stremio é uma lista simples agrupada por addon, sem pontuação.",
+ "Configurable": "Configurável",
+ "Configure & install": "Configurar e instalar",
+ "Configure on the addon's setup page": "Configurar na página de configuração do addon",
+ "Confirm": "Confirmar",
+ "Confirm clear": "Confirmar limpeza",
+ "Confirm full reset": "Confirmar redefinição completa",
+ "Confirm remove": "Confirmar remoção",
+ "Confirm remove from library": "Confirmar remoção da biblioteca",
+ "Confirm your current PIN to remove the lock.": "Confirme seu PIN atual para remover o bloqueio.",
+ "Confirm your current PIN, then pick a new one.": "Confirme seu PIN atual e escolha um novo.",
+ "Confirm your PIN": "Confirme seu PIN",
+ "Conflict": "Conflito",
+ "Connect": "Conectar",
+ "Connect / Verify": "Conectar / Verificar",
+ "Connect a debrid service (Real-Debrid, TorBox, AllDebrid) for instant HD without the wait.": "Conecte um serviço debrid (Real-Debrid, TorBox, AllDebrid) para HD instantâneo sem espera.",
+ "Connect a playlist to get started.": "Conecte uma playlist para começar.",
+ "Connect a provider": "Conectar um provedor",
+ "Connect AniList": "Conectar AniList",
+ "Connect any IPTV provider. Channels are sorted by category, EPG is pulled automatically when your provider supplies it, and playback runs through native libmpv.": "Conecte qualquer provedor de IPTV. Os canais são organizados por categoria, o EPG é obtido automaticamente quando seu provedor o fornece, e a reprodução ocorre através do libmpv nativo.",
+ "Connect Discord or Telegram and Harbor posts a message when something you follow is about to drop. Hit Test to send yourself a sample first.": "Conecte o Discord ou o Telegram e o Harbor publica uma mensagem quando algo que você segue está prestes a ser lançado. Clique em Testar para enviar uma amostra para você mesmo primeiro.",
+ "Connect MyAnimeList": "Conectar MyAnimeList",
+ "Connect Simkl": "Conectar Simkl",
+ "Connect Trakt": "Conectar Trakt",
+ "Connect Trakt first.": "Conecte o Trakt primeiro.",
+ "Connect Trakt in settings first": "Conecte o Trakt nas configurações primeiro",
+ "Connect Trakt in Settings to sync": "Conecte o Trakt em Configurações para sincronizar",
+ "Connect your AniList account": "Conecte sua conta do AniList",
+ "Connect your AniList account to see forum threads and comments.": "Conecte sua conta do AniList para ver tópicos do fórum e comentários.",
+ "Connect your AniList account to show your anime lists as rails on the Anime page.": "Conecte sua conta do AniList para exibir suas listas de anime como faixas na página de Anime.",
+ "Connect your MyAnimeList account": "Conecte sua conta do MyAnimeList",
+ "Connect your provider.": "Conecte seu provedor.",
+ "Connect your Simkl account": "Conecte sua conta do Simkl",
+ "Connect your Simkl account to mark what you finish as watched and sync your plan-to-watch list across apps.": "Conecte sua conta do Simkl para marcar o que você terminou como assistido e sincronizar sua lista de planejamento entre aplicativos.",
+ "Connect your Trakt account": "Conecte sua conta do Trakt",
+ "Connect your Trakt account to scrobble playback, sync your watchlist, and pull personalized recommendations.": "Conecte sua conta do Trakt para registrar reproduções, sincronizar sua watchlist e obter recomendações personalizadas.",
+ "Connect your Trakt account to see comments and reviews.": "Conecte sua conta do Trakt para ver comentários e avaliações.",
+ "Connected": "Conectado",
+ "Connected — {n} catalogs available": "Conectado — {n} catálogos disponíveis",
+ "Connected as {username}": "Conectado como {username}",
+ "Connected as @{user}": "Conectado como @{user}",
+ "Connected as @{username}": "Conectado como @{username}",
+ "Connected to AniList": "Conectado ao AniList",
+ "Connected to MyAnimeList": "Conectado ao MyAnimeList",
+ "Connected to relay": "Conectado ao relay",
+ "Connected to Simkl": "Conectado ao Simkl",
+ "Connected to Trakt": "Conectado ao Trakt",
+ "Connecting": "Conectando",
+ "Connection": "Conexão",
+ "Connection refused": "Conexão recusada",
+ "Connection refused / DNS does not resolve": "Conexão recusada / DNS não resolve",
+ "Connection reset by server": "Conexão reiniciada pelo servidor",
+ "Contains spoiler": "Contém spoiler",
+ "Content advisory": "Aviso de conteúdo",
+ "Content advisory on start": "Aviso de conteúdo ao iniciar",
+ "Content filters": "Filtros de conteúdo",
+ "Continue": "Continuar",
+ "Continue from last watched": "Continuar de onde parou",
+ "Continue in your browser...": "Continue no seu navegador...",
+ "Continue to summary": "Continuar para o resumo",
+ "Continue Watching": "Continuar Assistindo",
+ "Continue Watching screenshots": "Capturas de tela de Continuar Assistindo",
+ "Continue Watching, then your addon catalogs in install order. No hero, no Harbor rails.": "Continuar Assistindo, depois os catálogos dos seus addons na ordem de instalação. Sem destaque, sem faixas do Harbor.",
+ "Continue Watching, then your installed addons. Every catalog renders as its own row, install order, no dedup, no hero.": "Continuar assistindo, depois seus addons instalados. Cada catálogo é exibido em sua própria linha, na ordem de instalação, sem deduplicação e sem destaque.",
+ "Contrast": "Contraste",
+ "Contribute on GitHub": "Contribuir no GitHub",
+ "Controls": "Controles",
+ "Cool Heists": "Assaltos Estilosos",
+ "copied": "copiado",
+ "Copied": "Copiado",
+ "Copied to clipboard": "Copiado para a área de transferência",
+ "Copied. Paste it to your friend.": "Copiado. Cole para o seu amigo.",
+ "Copy": "Copiar",
+ "Copy diagnostics": "Copiar diagnóstico",
+ "Copy diagnostics grabs the engine status and your P2P settings as JSON, handy to paste into a bug report. The engine folder holds the DHT cache (dht.json) and active torrent data.": "Copiar diagnóstico captura o status do mecanismo e suas configurações de P2P como JSON, útil para colar em um relatório de bug. A pasta do mecanismo guarda o cache do DHT (dht.json) e os dados de torrents ativos.",
+ "Copy error": "Copiar erro",
+ "Copy invite link": "Copiar link de convite",
+ "Copy link": "Copiar link",
+ "Copy relay URL": "Copiar URL do relay",
+ "Copy room code": "Copiar código da sala",
+ "Copy theme": "Copiar tema",
+ "Copy URL": "Copiar URL",
+ "Copy Webhook URL": "Copiar URL do webhook",
+ "Copy your Harbor watchlist over to Trakt, or pull your Trakt watchlist into Harbor. Safe to run again, Trakt skips anything it already has.": "Copie sua watchlist do Harbor para o Trakt, ou importe sua watchlist do Trakt para o Harbor. Pode executar novamente com segurança, o Trakt ignora o que já existe.",
+ "Corner": "Canto",
+ "Corner Kicks": "Escanteios",
+ "Corner radius": "Raio das bordas",
+ "Corners": "Escanteios",
+ "cosmetic, minor": "cosmético, pequeno",
+ "Costs": "Custos",
+ "Couch hours": "Horas de sofá",
+ "Could not build the backup file.": "Não foi possível criar o arquivo de backup.",
+ "Could not find this title on AniList.": "Não foi possível encontrar este título no AniList.",
+ "Could not identify this title on Trakt.": "Não foi possível identificar este título no Trakt.",
+ "Could not load this playlist": "Não foi possível carregar esta playlist",
+ "Could not reach playlist server": "Não foi possível conectar ao servidor da playlist",
+ "Could not reach the server within 1.5 seconds. Check the address and that the server machine is online.": "Não foi possível alcançar o servidor em 1,5 segundo. Verifique o endereço e se a máquina do servidor está online.",
+ "Could not read that file.": "Não foi possível ler esse arquivo.",
+ "Could not read the subtitle file": "Não foi possível ler o arquivo de legenda",
+ "Could not resolve hostname": "Não foi possível resolver o nome do host",
+ "Could not resolve that Letterboxd list URL.": "Não foi possível resolver essa URL de lista do Letterboxd.",
+ "Could not send:": "Não foi possível enviar:",
+ "Could not send: {error}": "Não foi possível enviar: {error}",
+ "Could not send. Try again.": "Não foi possível enviar. Tente novamente.",
+ "Couldn't connect to AniList": "Não foi possível conectar ao AniList",
+ "Couldn't connect to MyAnimeList": "Não foi possível conectar ao MyAnimeList",
+ "Couldn't copy. Select the URL manually.": "Não foi possível copiar. Selecione a URL manualmente.",
+ "Couldn't create the profile. {error}": "Não foi possível criar o perfil. {error}",
+ "Couldn't delete the profile. {error}": "Não foi possível excluir o perfil. {error}",
+ "Couldn't find a Simkl avatar on your account.": "Não foi possível encontrar um avatar do Simkl na sua conta.",
+ "Couldn't find a Trakt avatar on your account.": "Não foi possível encontrar um avatar do Trakt na sua conta.",
+ "Couldn't find an AniList avatar on your account.": "Não foi possível encontrar um avatar do AniList na sua conta.",
+ "Couldn't import that file. {error}": "Não foi possível importar esse arquivo. {error}",
+ "Couldn't install. Double-check the URL and try again.": "Não foi possível instalar. Verifique a URL novamente e tente de novo.",
+ "Couldn't load {name}": "Não foi possível carregar {name}",
+ "Couldn't load that subtitle file. Try another.": "Não foi possível carregar esse arquivo de legenda. Tente outro.",
+ "Couldn't load the calendar": "Não foi possível carregar o calendário",
+ "Couldn't load this list. Check the URL and try again.": "Não foi possível carregar esta lista. Verifique a URL e tente novamente.",
+ "Couldn't load your Stremio collection. Nothing can be reordered safely without it.": "Não foi possível carregar sua coleção do Stremio. Nada pode ser reordenado com segurança sem ela.",
+ "Couldn't open this file": "Não foi possível abrir este arquivo",
+ "Couldn't reach AniList.": "Não foi possível conectar ao AniList.",
+ "Couldn't reach AniList. Try refreshing.": "Não foi possível conectar ao AniList. Tente atualizar.",
+ "Couldn't reach harbor.site to load earlier builds. Check your connection and try again.": "Não foi possível conectar ao harbor.site para carregar builds anteriores. Verifique sua conexão e tente novamente.",
+ "Couldn't reach Simkl": "Não foi possível conectar ao Simkl",
+ "Couldn't reach Simkl.": "Não foi possível conectar ao Simkl.",
+ "Couldn't reach Simkl. Try refreshing.": "Não foi possível conectar ao Simkl. Tente atualizar.",
+ "Couldn't reach Stremio to confirm your collection. Nothing was written.": "Não foi possível conectar ao Stremio para confirmar sua coleção. Nada foi gravado.",
+ "Couldn't reach the update server. Try again in a moment.": "Não foi possível conectar ao servidor de atualização. Tente novamente em instantes.",
+ "Couldn't reach Trakt": "Não foi possível conectar ao Trakt",
+ "Couldn't reach Trakt.": "Não foi possível conectar ao Trakt.",
+ "Couldn't reach Trakt. Check your connection and try again.": "Não foi possível conectar ao Trakt. Verifique sua conexão e tente novamente.",
+ "Couldn't reach Trakt. Try refreshing.": "Não foi possível conectar ao Trakt. Tente atualizar.",
+ "Couldn't read that addon URL.": "Não foi possível ler essa URL de addon.",
+ "Couldn't read that font file.": "Não foi possível ler esse arquivo de fonte.",
+ "Couldn't read your watchlist. Try again.": "Não foi possível ler sua watchlist. Tente novamente.",
+ "Couldn't remove. Try again.": "Não foi possível remover. Tente novamente.",
+ "Couldn't rename the profile. {error}": "Não foi possível renomear o perfil. {error}",
+ "Couldn't save your layout. {error}": "Não foi possível salvar seu layout. {error}",
+ "Couldn't save: the reordered list failed safety validation. Nothing was written.": "Não foi possível salvar: a lista reordenada falhou na validação de segurança. Nada foi gravado.",
+ "Couldn't scan that folder.": "Não foi possível escanear essa pasta.",
+ "Couldn't set up SVP: {err}": "Não foi possível configurar o SVP: {err}",
+ "Couldn't start on port {WEB_PORT}. Another app may be using it; toggle off and on to retry.": "Não foi possível iniciar na porta {WEB_PORT}. Outro app pode estar usando-a; desative e ative novamente para tentar de novo.",
+ "Couldn't start SVP Manager: {err}": "Não foi possível iniciar o SVP Manager: {err}",
+ "Couldn't switch profile. {error}": "Não foi possível trocar de perfil. {error}",
+ "Countries": "Países",
+ "Country": "País",
+ "Cover Image URL": "URL da Imagem de Capa",
+ "Cozy Autumn Nights": "Noites Aconchegantes de Outono",
+ "Create": "Criar",
+ "Create account": "Criar conta",
+ "Create Custom Token": "Criar token personalizado",
+ "Create one": "Criar um",
+ "Create profile": "Criar perfil",
+ "Create thread": "Criar tópico",
+ "Create Token": "Criar token",
+ "Creator": "Criador",
+ "Creators": "Criadores",
+ "Credentials are likely expired or the subscription is inactive. Edit the playlist URL above, or contact your provider.": "As credenciais provavelmente expiraram ou a assinatura está inativa. Edite a URL da playlist acima ou entre em contato com seu provedor.",
+ "Credentials stored on this device. Nothing leaves your machine.": "Credenciais armazenadas neste dispositivo. Nada sai da sua máquina.",
+ "Credit (optional)": "Crédito (opcional)",
+ "Credit me in the release notes if this report leads to a fix.": "Me dê crédito nas notas de lançamento se este relatório levar a uma correção.",
+ "Crew": "Equipe técnica",
+ "Crime": "Crime",
+ "Crime & Mystery": "Crime e Mistério",
+ "Crime Films": "Filmes de Crime",
+ "Crime Series": "Séries de Crime",
+ "Crisp (anime & cartoons)": "Nítido (anime e desenhos)",
+ "Critical": "Crítico",
+ "Critically Loved": "Aclamados pela Crítica",
+ "Critics' Choice": "Critics' Choice",
+ "Critics' Picks": "Escolhas dos Críticos",
+ "Cross %": "% de Cruzamentos",
+ "Crosses": "Cruzamentos",
+ "Crowd-pleasers, prestige picks, and the kind of series people text about.": "Sucessos garantidos, escolhas de prestígio e o tipo de série sobre o qual as pessoas mandam mensagem.",
+ "Crunch cards": "Cards Crunch",
+ "Cult Classics": "Clássicos Cult",
+ "Curated for popularity and reliability. No paid placements. Install anything else by URL on the Browse tab.": "Selecionados por popularidade e confiabilidade. Sem posicionamentos pagos. Instale qualquer outro por URL na aba Explorar.",
+ "Current": "Atual",
+ "Custom": "Personalizado",
+ "Custom calendar": "Calendário personalizado",
+ "Custom cards": "Cards personalizados",
+ "Custom chrome": "Interface personalizada",
+ "Custom code": "Código personalizado",
+ "Custom CSS": "CSS personalizado",
+ "Custom HTML overlay": "Sobreposição HTML personalizada",
+ "Custom image": "Imagem personalizada",
+ "Custom JS": "JS Personalizado",
+ "Custom length": "Duração personalizada",
+ "Custom lists": "Listas personalizadas",
+ "Custom location": "Local personalizado",
+ "Custom MPV code": "Código MPV personalizado",
+ "Custom palette": "Paleta personalizada",
+ "Custom poster service": "Serviço de pôster personalizado",
+ "Custom style": "Estilo personalizado",
+ "Customize": "Personalizar",
+ "Customize home": "Personalizar início",
+ "Customize layout": "Personalizar layout",
+ "Customize page": "Personalizar página",
+ "Customizing the player": "Personalizando o player",
+ "Cycle aspect / crop": "Alternar proporção / corte",
+ "Cycle aspect and crop modes: Fit, Fill, Zoom, 16:9, 4:3, Original.": "Alternar entre os modos de proporção e corte: Ajustar, Preencher, Zoom, 16:9, 4:3, Original.",
+ "Cycle subtitles": "Alternar legendas",
+ "Cycle subtitles (alt)": "Alternar legendas (alt)",
+ "Cycle through available subtitle tracks.": "Percorrer as faixas de legenda disponíveis.",
+ "Czech": "Tcheco",
+ "Daily call counter for OMDb rating lookups. Reset if it stops returning fresh scores.": "Contador diário de chamadas para consultas de nota no OMDb. Redefina se parar de retornar notas atualizadas.",
+ "Daily watch time": "Tempo de exibição diário",
+ "Danish": "Dinamarquês",
+ "Dark Fantasy": "Fantasia Sombria",
+ "Dark Thrillers": "Suspenses Sombrios",
+ "Dark, immersive, and binge-worthy when the house is quiet.": "Sombrio, imersivo e perfeito para maratonar quando a casa está silenciosa.",
+ "Date added": "Data de adição",
+ "Date Night": "Noite a Dois",
+ "Daybreak": "Amanhecer",
+ "Daylight Watching": "Assistindo de dia",
+ "Daytime watching": "Assistindo durante o dia",
+ "Deadpan King": "Rei do Humor Impassível",
+ "Debrid is down": "O Debrid está fora do ar",
+ "Debrid required": "Debrid necessário",
+ "Debrid services": "Serviços debrid",
+ "Debrid-Link API key": "Chave de API do Debrid-Link",
+ "Decrease progress": "Diminuir progresso",
+ "default": "padrão",
+ "Default": "Padrão",
+ "Default (gold accent)": "Padrão (destaque dourado)",
+ "Default app cache folder": "Pasta de cache padrão do app",
+ "Default picture shape on the mpv engine. Fit keeps the source as-is with any black bars; the rest stretch or crop to fill, handy for old 4:3 shows on a widescreen TV.": "Formato de imagem padrão no mecanismo mpv. Ajustar mantém a fonte como está com as tarjas pretas; as demais opções esticam ou cortam para preencher, útil para programas antigos em 4:3 numa TV widescreen.",
+ "Default. Harbor parses and scores every source and surfaces the best quality first.": "Padrão. O Harbor analisa e pontua cada fonte e mostra primeiro a melhor qualidade.",
+ "Default. Humanist serif, warm sans.": "Padrão. Serifada humanista, sans-serif quente.",
+ "Default. Rejects size outliers, suspicious extensions, year/episode mismatches, season packs (for episode requests), trailers, and likely cams.": "Padrão. Rejeita tamanhos fora do padrão, extensões suspeitas, incompatibilidades de ano/episódio, pacotes de temporada (para pedidos de episódio), trailers e prováveis cams.",
+ "Default. Top pick at the top, quality tiles, and an All-Sources drawer. Harbor scores and ranks results.": "Padrão. Melhor opção no topo, blocos de qualidade e uma gaveta com todas as fontes. O Harbor pontua e classifica os resultados.",
+ "Defensive Rebounds": "Rebotes Defensivos",
+ "Defining the 2010s": "Definindo os anos 2010",
+ "Delete": "Excluir",
+ "Delete after I finish watching": "Excluir depois que eu terminar de assistir",
+ "Delete current": "Excluir atual",
+ "Delete custom source": "Excluir fonte personalizada",
+ "Delete download and file": "Excluir download e arquivo",
+ "Delete filter": "Excluir filtro",
+ "Delete layout": "Excluir layout",
+ "Delete profile": "Excluir perfil",
+ "Delete this font?": "Excluir esta fonte?",
+ "Delete this profile permanently? This cannot be undone.": "Excluir este perfil permanentemente? Isso não pode ser desfeito.",
+ "Delete this profile?": "Excluir este perfil?",
+ "Dense plots and rich worlds for when sleep is not happening.": "Tramas densas e mundos ricos para quando o sono não vem.",
+ "Deploy": "Implantar",
+ "Deploy a relay": "Implantar um relay",
+ "Deploy a relay (desktop only)": "Implantar um relay (somente desktop)",
+ "Deploy mine instead": "Implantar o meu em vez disso",
+ "Deploy relay": "Implantar relay",
+ "Deploy your relay": "Implante seu relay",
+ "Deploy:": "Implantar:",
+ "Descending": "Decrescente",
+ "Deselect": "Desmarcar",
+ "Deselect all": "Desmarcar tudo",
+ "Designing the player layout": "Projetando o layout do player",
+ "Desktop (Tauri 2 / WebView2)": "Desktop (Tauri 2 / WebView2)",
+ "Desktop only": "Somente desktop",
+ "Detail page trailers begin unmuted. Falls back to muted if the browser blocks sound until you interact.": "Os trailers na página de detalhes começam com som ativado. Voltam a ficar mudos se o navegador bloquear o som até você interagir.",
+ "Detail pages show every available rating regardless of the card score toggles below. Turn this off to hide ratings on detail pages too.": "As páginas de detalhes mostram todas as avaliações disponíveis, independente das opções de pontuação do cartão abaixo. Desative para ocultar avaliações também nas páginas de detalhes.",
+ "Details": "Detalhes",
+ "Detecting devices...": "Detectando dispositivos...",
+ "Detecting...": "Detectando...",
+ "DHT": "DHT",
+ "Diagnostics, manual overrides, things most users never need.": "Diagnósticos, substituições manuais, coisas que a maioria dos usuários nunca precisa.",
+ "Diagonal stripes across the fill, retro vibe.": "Listras diagonais no preenchimento, clima retrô.",
+ "Diary": "Diário",
+ "Died {date}": "Faleceu em {date}",
+ "Dim": "Escurecer",
+ "Dim overlay": "Sobreposição escurecida",
+ "Direct .m3u link": "Link .m3u direto",
+ "Direct .m3u or get.php URL with credentials baked in.": "URL .m3u ou get.php direta com credenciais embutidas.",
+ "Direct torrent streaming": "Streaming direto de torrent",
+ "Directing": "Direção",
+ "Director": "Diretor",
+ "Director's Cut": "Corte do Diretor",
+ "Directors": "Diretores",
+ "Disabled": "Desativado",
+ "Disabled while strict remote streaming is on": "Desativado enquanto o streaming remoto restrito estiver ativado",
+ "Discard": "Descartar",
+ "Discard changes": "Descartar alterações",
+ "Discard recording": "Descartar gravação",
+ "Discard sync?": "Descartar sincronização?",
+ "Disconnect": "Desconectar",
+ "Disconnect AniList? Your lists will stop showing on the Anime page until you reconnect.": "Desconectar do AniList? Suas listas deixarão de aparecer na página de Anime até você reconectar.",
+ "Disconnect from AniList": "Desconectar do AniList",
+ "Disconnect from MyAnimeList": "Desconectar do MyAnimeList",
+ "Disconnect from Simkl": "Desconectar do Simkl",
+ "Disconnect from Trakt": "Desconectar do Trakt",
+ "Disconnect MyAnimeList? Your progress will stop syncing until you reconnect.": "Desconectar do MyAnimeList? Seu progresso deixará de sincronizar até você reconectar.",
+ "Disconnect Simkl? Syncing will stop until you reconnect.": "Desconectar do Simkl? A sincronização será interrompida até você reconectar.",
+ "Disconnect Trakt? Scrobbles and syncs will stop until you reconnect.": "Desconectar do Trakt? Os scrobbles e sincronizações serão interrompidos até você reconectar.",
+ "Discord posts a message to a channel whenever Harbor pings it. Takes about a minute to set up.": "O Discord posta uma mensagem em um canal sempre que o Harbor o notifica. Leva cerca de um minuto para configurar.",
+ "Discord Rich Presence": "Discord Rich Presence",
+ "Discord webhook URL": "URL do webhook do Discord",
+ "Discover": "Descobrir",
+ "Discovery Queue": "Fila de Descoberta",
+ "Dismiss": "Dispensar",
+ "Dismiss episode panel": "Dispensar painel de episódios",
+ "Disney+ Originals": "Originais Disney+",
+ "Display 'Browsing Harbor' when nothing is playing.": "Exibir 'Navegando no Harbor' quando nada estiver em reprodução.",
+ "Display language": "Idioma de exibição",
+ "Display name": "Nome de exibição",
+ "Display panel": "Painel de exibição",
+ "Display SIMKL Community Ratings": "Exibir Avaliações da Comunidade SIMKL",
+ "Display SIMKL community score badge on details pages.": "Exibir o selo de pontuação da comunidade SIMKL nas páginas de detalhes.",
+ "Display the live progress bar showing how far into the title you are.": "Exibir a barra de progresso ao vivo mostrando o quanto você já assistiu do título.",
+ "Display the raw release filename under each source in the condensed picker. Off keeps rows compact.": "Exibir o nome de arquivo bruto do lançamento sob cada fonte no seletor condensado. Desativado mantém as linhas compactas.",
+ "Display today's trending movies, TV shows, and anime from Simkl.": "Exibir os filmes, séries e animes em alta hoje no Simkl.",
+ "Display upcoming episodes from your watching and plan-to-watch lists.": "Exibir os próximos episódios das suas listas de assistindo e pretendo assistir.",
+ "Display what you are watching on your Discord profile, with the show poster and a live progress bar. Requires the Discord desktop app to be running.": "Exibir o que você está assistindo no seu perfil do Discord, com o pôster do título e uma barra de progresso ao vivo. Requer que o aplicativo desktop do Discord esteja em execução.",
+ "Display your Watching, Plan to Watch, Up Next, and Trending rows on the home screen.": "Exibir suas linhas de Assistindo, Pretendo Assistir, A Seguir e Em Alta na tela inicial.",
+ "Displays the resolution, HDR format and audio (e.g. 4K · Dolby Vision · TrueHD 7.1) under the movie or episode title while playing. Off by default.": "Exibe a resolução, formato HDR e áudio (ex.: 4K · Dolby Vision · TrueHD 7.1) abaixo do título do filme ou episódio durante a reprodução. Desativado por padrão.",
+ "Distance from bottom": "Distância da parte inferior",
+ "DLNA TV": "TV DLNA",
+ "Documentary": "Documentário",
+ "Documentary Series": "Série Documental",
+ "Documentary Spotlight": "Destaque em Documentários",
+ "Documentation": "Documentação",
+ "Documentation: run your own relay": "Documentação: execute seu próprio relay",
+ "Does Harbor {version} feel better or worse than the version you had before?": "O Harbor {version} parece melhor ou pior do que a versão que você tinha antes?",
+ "Does this stream look right?": "Este stream parece correto?",
+ "Don't ask me again": "Não perguntar novamente",
+ "Don't have an account?": "Não tem uma conta?",
+ "Don't have an account? Create one →": "Não tem uma conta? Crie uma →",
+ "Done": "Concluído",
+ "Done editing": "Edição concluída",
+ "Done.": "Concluído.",
+ "Dot image": "Imagem do ponto",
+ "Dot size": "Tamanho do ponto",
+ "Down": "Baixo",
+ "Download": "Baixar",
+ "Download anime diagnostics": "Baixar diagnóstico de anime",
+ "Download failed": "Falha no download",
+ "Download failed · click to retry": "Falha no download · clique para tentar novamente",
+ "Download failed, click to retry": "Falha no download, clique para tentar novamente",
+ "Download for offline": "Baixar para uso offline",
+ "Download Subtitle": "Baixar legenda",
+ "Download subtitle to disk": "Baixar legenda para o disco",
+ "Download the desktop app to use anime enhancements.": "Baixe o aplicativo desktop para usar os aprimoramentos de anime.",
+ "Download the desktop app to use video tuning.": "Baixe o aplicativo desktop para usar o ajuste de vídeo.",
+ "Download the whole file while streaming": "Baixar o arquivo inteiro durante o streaming",
+ "Download this build": "Baixar esta versão",
+ "Download this build's installer, then run it over your current copy": "Baixe o instalador desta versão e execute-o sobre a sua cópia atual",
+ "Download to disk": "Baixar para o disco",
+ "Download video": "Baixar vídeo",
+ "Downloaded peer-to-peer stream files are kept on disk so reopening a title resumes instantly instead of starting over. Control how long they stay and where they live.": "Os arquivos de stream ponto a ponto baixados ficam salvos no disco para que reabrir um título retome instantaneamente em vez de começar do zero. Controle por quanto tempo eles ficam salvos e onde ficam armazenados.",
+ "Downloaded subtitles can arrive a moment after playback starts. Leave this off to keep whatever subtitle is already showing; turn it on to switch to the best language match as soon as it loads.": "As legendas baixadas podem chegar um instante depois de a reprodução começar. Deixe desativado para manter a legenda que já está sendo exibida; ative para trocar para a melhor correspondência de idioma assim que ela carregar.",
+ "Downloaded. Ready to install and restart.": "Baixado. Pronto para instalar e reiniciar.",
+ "Downloading {pct} percent, click to cancel": "Baixando {pct} por cento, clique para cancelar",
+ "Downloading {pct}%": "Baixando {pct}%",
+ "Downloading {pct}% · cancel": "Baixando {pct}% · cancelar",
+ "Downloading {pct}% · click to cancel": "Baixando {pct}% · clique para cancelar",
+ "Downloading {pct}%, click to cancel": "Baixando {pct}%, clique para cancelar",
+ "Downloading to": "Baixando para",
+ "Downloading...": "Baixando...",
+ "Downloads": "Downloads",
+ "Downloads folder": "Pasta de downloads",
+ "Dracula sidebar": "Barra lateral Dracula",
+ "Drag to reorder": "Arraste para reordenar",
+ "Drag to resize the channel column": "Arraste para redimensionar a coluna de canais",
+ "Drama": "Drama",
+ "Drama Series": "Série Dramática",
+ "Draw": "Desenhar",
+ "Draw on screen": "Desenhar na tela",
+ "Draw on video": "Desenhar no vídeo",
+ "Dread Incarnate": "Pavor Encarnado",
+ "Drop a clip of the bug if you can. A 5-second screen recording usually says more than five paragraphs.": "Anexe um clipe do bug, se possível. Uma gravação de tela de 5 segundos costuma dizer mais que cinco parágrafos.",
+ "Drop a wallpaper behind the app. The dim slider keeps text readable.": "Coloque um papel de parede atrás do app. O controle de escurecimento mantém o texto legível.",
+ "Drop screenshots or screen recordings, or click to browse": "Arraste capturas de tela ou gravações de tela, ou clique para procurar",
+ "Drop shadow": "Sombra projetada",
+ "Drop-in chapters and long arcs for the post-dinner stretch.": "Capítulos avulsos e arcos longos para depois do jantar.",
+ "Dropped (decode / vo)": "Descartados (decodificação / vo)",
+ "Durable Object idle eviction": "Remoção por inatividade do Durable Object",
+ "Duration": "Duração",
+ "Dutch": "Holandês",
+ "DVD": "DVD",
+ "DVR": "DVR",
+ "DVR / record": "DVR / gravar",
+ "DVR record": "Gravar DVR",
+ "DVR record (Live TV)": "Gravação DVR (TV ao vivo)",
+ "e.g. 1.35": "ex.: 1.35",
+ "e.g. 20": "ex.: 20",
+ "Each episode shows its IMDb rating, right on the still.": "Cada episódio mostra sua nota do IMDb, direto na imagem.",
+ "Each rule fires independently. Define what triggers a ping and where it goes.": "Cada regra é disparada de forma independente. Defina o que aciona um aviso e para onde ele vai.",
+ "Easiest path. Harbor uploads the worker, creates the Durable Object namespace, and stores the resulting URL.": "Caminho mais fácil. O Harbor envia o worker, cria o namespace do Durable Object e armazena a URL resultante.",
+ "Easing into series": "Entrando aos poucos em séries",
+ "Easy": "Fácil",
+ "Easy half-hours and lighter dramas to ride out the afternoon.": "Meias-horas leves e dramas mais suaves para passar a tarde.",
+ "Easy on the eyes": "Suave para os olhos",
+ "Easynews+": "Easynews+",
+ "Edge": "Edge",
+ "Edit": "Editar",
+ "Edit {name}": "Editar {name}",
+ "Edit Channel": "Editar Canal",
+ "Edit colors": "Editar cores",
+ "Edit custom theme": "Editar tema personalizado",
+ "Edit filter": "Editar filtro",
+ "Edit Folder Images": "Editar Imagens da Pasta",
+ "Edit hover style": "Editar estilo de foco",
+ "Edit player layout": "Editar layout do player",
+ "Edit profile": "Editar perfil",
+ "Edit row": "Editar linha",
+ "Edit rule": "Editar regra",
+ "editing": "editando",
+ "Editor": "Editor",
+ "Editorial. Headline-strong display.": "Editorial. Display forte para títulos.",
+ "Editors": "Editores",
+ "Effective Clearances": "Desarmes Eficazes",
+ "Effective Tackles": "Desarmes Eficientes",
+ "Elapsed and remaining": "Decorrido e restante",
+ "Elapsed only": "Apenas decorrido",
+ "Email": "E-mail",
+ "Email or Discord": "E-mail ou Discord",
+ "Embed mpv inside Harbor window": "Incorporar o mpv na janela do Harbor",
+ "Embedded": "Incorporado",
+ "Embedded subtitles keep their own styling. Click to force your style onto them.": "As legendas incorporadas mantêm seu próprio estilo. Clique para forçar seu estilo nelas.",
+ "Embedded track": "Faixa incorporada",
+ "Emmys": "Emmys",
+ "empty": "vazio",
+ "Empty — click to add filters": "Vazio — clique para adicionar filtros",
+ "Empty. The dials above cover what most people ever need.": "Vazio. Os controles acima cobrem o que a maioria das pessoas precisa.",
+ "Enable Anime4K": "Ativar Anime4K",
+ "Enable injected ad skip": "Ativar pular anúncios injetados",
+ "Enable Letterboxd integration": "Ativar integração com Letterboxd",
+ "Enable SVP": "Ativar SVP",
+ "Enable this to fetch Arabic descriptions for series and movies when available on TMDB.": "Ative isso para buscar descrições em árabe de séries e filmes quando disponíveis no TMDB.",
+ "Enable User Ratings": "Ativar Avaliações de Usuários",
+ "Enabled": "Ativado",
+ "End ep": "Ep. final",
+ "Ended": "Encerrado",
+ "Ends at": "Termina às",
+ "Engine": "Mecanismo",
+ "English": "Inglês",
+ "English (default)": "Inglês (padrão)",
+ "Enter {name}'s PIN": "Insira o PIN de {name}",
+ "Enter an existing relay URL:": "Insira uma URL de relay existente:",
+ "Enter current PIN": "Insira o PIN atual",
+ "Enter Harbor": "Entrar no Harbor",
+ "Enter or exit fullscreen.": "Entrar ou sair da tela cheia.",
+ "Enter your PIN": "Insira seu PIN",
+ "Ep {n}": "Ep. {n}",
+ "EPG": "EPG",
+ "EPG / XMLTV only": "Somente EPG / XMLTV",
+ "EPG / XMLTV URL": "URL do EPG / XMLTV",
+ "EPG failed:": "Falha no EPG:",
+ "EPG fetch failed:": "Falha ao buscar EPG:",
+ "EPG source": "Fonte de EPG",
+ "EPG URL": "URL do EPG",
+ "EPG URL (optional)": "URL do EPG (opcional)",
+ "Ephron Romcoms": "Comédias Românticas de Ephron",
+ "Epic Adventures": "Aventuras Épicas",
+ "Epic Quests": "Jornadas Épicas",
+ "Epics & Empires": "Épicos e Impérios",
+ "Episode": "Episódio",
+ "Episode {n}": "Episódio {n}",
+ "Episode cards": "Cartões de episódio",
+ "Episode details": "Detalhes do episódio",
+ "Episode information is not available": "As informações do episódio não estão disponíveis.",
+ "Episode Not Found": "Episódio Não Encontrado",
+ "Episode ordering": "Ordenação de episódios",
+ "Episode titles, alternate names, and network info. Layered on TMDB so the better source wins per field. Free at ": "Títulos de episódios, nomes alternativos e informações de emissora. Combinado com o TMDB para que a melhor fonte prevaleça em cada campo. Gratuito em ",
+ "Episodes": "Episódios",
+ "Episodes and movies from shows you've saved on Stremio.": "Episódios e filmes das séries que você salvou no Stremio.",
+ "Episodes worth the evening": "Episódios que valem a noite",
+ "Episodes you can drop into without losing the thread.": "Episódios em que você entra sem perder o fio da história.",
+ "Error": "Erro",
+ "Errors": "Erros",
+ "Esc exits fullscreen first": "Esc sai da tela cheia primeiro",
+ "Esc or click outside to close": "Esc ou clique fora para fechar",
+ "Essential 90s": "Essenciais dos anos 90",
+ "Essential addons": "Complementos essenciais",
+ "Evening on the couch": "Noite no sofá",
+ "Evens out quiet dialogue and loud action scenes with a dynamic normalizer.": "Equilibra diálogos baixos e cenas de ação altas com um normalizador dinâmico.",
+ "Every collection": "Toda coleção",
+ "Every row": "Toda linha",
+ "Every saga in one place. Search anything: if it exists, it's here.": "Toda saga em um só lugar. Busque qualquer coisa: se existir, está aqui.",
+ "Every shortcut Harbor responds to. Click a binding to rebind it.": "Todos os atalhos que o Harbor reconhece. Clique em uma combinação para reatribuí-la.",
+ "Every variable, selector, hook, and recipe for building custom Harbor themes.": "Todas as variáveis, seletores, hooks e receitas para criar temas personalizados do Harbor.",
+ "Everyone is loaded in. Press play to start watching.": "Todo mundo está carregado. Aperte play para começar a assistir.",
+ "Everyone who uses this Harbor gets their own watch history, avatar, color, and optional PIN. Switch anytime.": "Cada pessoa que usa este Harbor tem seu próprio histórico de exibição, avatar, cor e PIN opcional. Troque quando quiser.",
+ "Everything from {year}, sorted across trending, top rated, and hidden gems.": "Tudo de {year}, organizado entre em alta, mais bem avaliados e pérolas escondidas.",
+ "Everything originally in {name}: movies and series across every genre, era, and hidden gems.": "Tudo que estava originalmente em {name}: filmes e séries de todos os gêneros, épocas e pérolas escondidas.",
+ "Everything releasing in the current month from TMDB.": "Tudo que estreia no mês atual, segundo o TMDB.",
+ "Everything releasing this month from TMDB": "Tudo que estreia este mês, segundo o TMDB",
+ "Everything you save here stays in this browser. Your Stremio login, API keys, watch progress, picker cache, dismissed tips. Harbor servers never see any of it. Clearing your browser data wipes it.": "Tudo o que você salva aqui fica neste navegador. Seu login do Stremio, chaves de API, progresso de exibição, cache do seletor, dicas dispensadas. Os servidores do Harbor nunca veem nada disso. Limpar os dados do navegador apaga tudo.",
+ "Exit fullscreen": "Sair da tela cheia",
+ "Exit Picture in Picture": "Sair do Picture in Picture",
+ "Exit PiP": "Sair do PiP",
+ "Exit playback and return to the previous view.": "Sair da reprodução e voltar à visualização anterior.",
+ "Exit sync mode": "Sair do modo de sincronização",
+ "Expand sidebar": "Expandir barra lateral",
+ "Expected. Rooms recreate on next join.": "Esperado. As salas são recriadas na próxima entrada.",
+ "Experimental": "Experimental",
+ "Expired": "Expirado",
+ "Expiring": "Expirando",
+ "Explore": "Explorar",
+ "Explore your queue": "Explore sua fila",
+ "Export": "Exportar",
+ "Export .nfo and artwork": "Exportar .nfo e artes",
+ "Export as .m3u": "Exportar como .m3u",
+ "Export as file": "Exportar como arquivo",
+ "Export everything": "Exportar tudo",
+ "Export failed: {reason}": "Falha na exportação: {reason}",
+ "Export player log": "Exportar log do player",
+ "Export to Trakt": "Exportar para o Trakt",
+ "Export your entire Harbor setup to a single file, then restore it on a new computer or keep it as a backup.": "Exporte toda a sua configuração do Harbor para um único arquivo, depois restaure em outro computador ou guarde como backup.",
+ "Export your entire Harbor setup to a single file, then restore it on a new computer or keep it as a backup. Everything is included except your Stremio sign-in.": "Exporte toda a configuração do seu Harbor para um único arquivo e restaure em outro computador ou mantenha como backup. Tudo é incluído, exceto seu login do Stremio.",
+ "Exported": "Exportado",
+ "Exported {n} titles": "{n} títulos exportados",
+ "Exported {ok}, {fail} failed": "{ok} exportados, {fail} falharam",
+ "Exporting": "Exportando",
+ "Exporting {done}/{total}…": "Exportando {done}/{total}…",
+ "External": "Externo",
+ "External subtitle": "Legenda externa",
+ "Eye Candy": "Deleite Visual",
+ "Fade": "Fade",
+ "Fail": "Falha",
+ "Failed": "Falhou",
+ "Failed to create thread": "Falha ao criar tópico",
+ "Failed to fetch JSON": "Falha ao buscar o JSON",
+ "Failed to load": "Falha ao carregar",
+ "Failed to load match details.": "Falha ao carregar detalhes da correspondência.",
+ "Failed to post comment": "Falha ao postar comentário",
+ "Failed: {error}": "Falhou: {error}",
+ "Failed: {message}": "Falha: {message}",
+ "Falls back to the TMDB rating only when a title has no IMDb score yet (mostly brand-new or unreleased). Off by default so cards prefer IMDb.": "Recorre à nota do TMDB somente quando um título ainda não tem nota do IMDb (geralmente lançamentos recentes ou inéditos). Desativado por padrão para que os cards prefiram o IMDb.",
+ "Familiar Stremio button order.": "Ordem de botões familiar do Stremio.",
+ "Family": "Família",
+ "Family Favorites": "Favoritos da Família",
+ "Family Heart": "Coração da Família",
+ "Fan-made avatars for personal use. Harbor claims no rights to these characters; they belong to their creators and studios, shown here under fair use. Every one is optimized down to a tiny WebP.": "Avatares feitos por fãs para uso pessoal. O Harbor não reivindica direitos sobre esses personagens; eles pertencem a seus criadores e estúdios, exibidos aqui sob uso justo. Cada um foi otimizado para um WebP pequeno.",
+ "Fanart.tv · logos and backdrops": "Fanart.tv · logos e fundos",
+ "Fantasy": "Fantasia",
+ "Fast Break Points": "Pontos em Contra-Ataque",
+ "Fast Hands": "Mãos Rápidas",
+ "Fast Mouth": "Língua Afiada",
+ "Faster and quieter than torrents if you already pay for Usenet. Configure on the addon page, paste the manifest URL it returns.": "Mais rápido e discreto que torrents se você já paga por Usenet. Configure na página do addon, cole a URL do manifesto que ele retornar.",
+ "Favorite": "Favorito",
+ "Favorited": "Favoritado",
+ "favorites": "favoritos",
+ "Favorites": "Favoritos",
+ "feature broken": "recurso quebrado",
+ "Feature this catalog in the hero carousel": "Destacar este catálogo no carrossel principal",
+ "Featured": "Em destaque",
+ "Featured {n}": "Destaque {n}",
+ "Featured & Recommended": "Destaques e recomendados",
+ "Featured film": "Filme em destaque",
+ "Featured hero": "Destaque principal",
+ "Featured tonight": "Destaque de hoje",
+ "Feel-Good Hits": "Sucessos Reconfortantes",
+ "Fetching {n} items…": "Buscando {n} itens…",
+ "Fetching library index…": "Buscando índice da biblioteca…",
+ "FG": "FG",
+ "Field Goal %": "% de Arremessos",
+ "Field Reports": "Reportagens de Campo",
+ "File": "Arquivo",
+ "Filename": "Nome do arquivo",
+ "Fill": "Preenchimento",
+ "Fill the top of the form to look exactly like this:": "Preencha o topo do formulário para ficar exatamente assim:",
+ "Filler": "Recheio",
+ "Fills in where TMDB comes up empty (anime, older catalog). Free at ": "Preenche onde o TMDB fica vazio (anime, catálogo antigo). Gratuito em ",
+ "Film and television": "Cinema e televisão",
+ "Filmic (Hable)": "Filmic (Hable)",
+ "Filmmakers leading the conversation": "Cineastas em destaque no momento",
+ "Films": "Filmes",
+ "Filter by media type after the sources merge. Leave them all on to send everything.": "Filtre por tipo de mídia após a mesclagem das fontes. Deixe todos ativados para enviar tudo.",
+ "Filter by name or title": "Filtrar por nome ou título",
+ "Filter by type after the sources merge. Leave them all on to send everything.": "Filtrar por tipo após a mesclagem das fontes. Deixe todos ativados para enviar tudo.",
+ "Filter categories": "Filtrar categorias",
+ "Filtered": "Filtrado",
+ "Filters": "Filtros",
+ "Filters off · still empty": "Filtros desativados · ainda vazio",
+ "Filters out streams from adult catalogs and addons. On by default.": "Filtra streams de catálogos e addons adultos. Ativado por padrão.",
+ "Final": "Final",
+ "Find closer match": "Encontrar correspondência mais próxima",
+ "Find more subtitles": "Encontrar mais legendas",
+ "Finding peers": "Procurando peers",
+ "Finds anime that got saved under a movie/series id by the 0.9.65 bug (breaks Continue Watching + Trakt), and removes just those so they re-add correctly.": "Encontra animes que foram salvos com o id errado de filme/série pelo bug da 0.9.65 (que quebra o Continuar Assistindo + Trakt) e remove apenas esses para que sejam adicionados novamente de forma correta.",
+ "Finish an episode and the card jumps to the next one instead of sitting at 0m left.": "Termine um episódio e o card pula para o próximo em vez de ficar parado com 0m restantes.",
+ "Finish the install above first. Flipping this on now won't do anything until Harbor can find SVP's engine.": "Termine a instalação acima primeiro. Ativar isso agora não vai fazer nada até o Harbor conseguir encontrar o motor do SVP.",
+ "Finishing an anime episode updates your AniList progress. Forward only: it never lowers a count you already have.": "Terminar um episódio de anime atualiza seu progresso no AniList. Só avança: nunca reduz uma contagem que você já tem.",
+ "Finishing an anime episode updates your MyAnimeList progress. Forward only: it never lowers a count you already have.": "Terminar um episódio de anime atualiza seu progresso no MyAnimeList. Só avança: nunca reduz uma contagem que você já tem.",
+ "Finnish": "Finlandês",
+ "First aired": "Exibido pela primeira vez",
+ "First anchor": "Primeira âncora",
+ "First page": "Primeira página",
+ "First-light picks": "Seleções de primeira hora",
+ "Fit": "Ajustar",
+ "Fix": "Corrigir",
+ "Fix corrupted anime": "Corrigir animes corrompidos",
+ "Fix match": "Corrigir correspondência",
+ "Fixed shortcut": "Atalho fixo",
+ "Flagged ({n})": "Sinalizados ({n})",
+ "Flagged shown": "Sinalizados exibidos",
+ "Flagrant Fouls": "Faltas Flagrantes",
+ "Flat": "Plano",
+ "Flat cards": "Cartões planos",
+ "Flat list of sources grouped by addon, with a filter dropdown. No re-ranking. Closest match to the Stremio app's stream picker.": "Lista simples de fontes agrupadas por addon, com um menu de filtro. Sem reordenação. É o mais parecido com o seletor de streams do app Stremio.",
+ "Flat_Style": "Flat_Style",
+ "Floating dock": "Dock flutuante",
+ "Floats over the artwork": "Flutua sobre a arte",
+ "Focus GIF URL": "URL do GIF de Destaque",
+ "Focus PIN entry": "Focar no campo do PIN",
+ "Focus search": "Focar busca",
+ "Font": "Fonte",
+ "For Everyone": "Para Todos",
+ "For laptop speakers and headphones. Movies mixed for 5.1 or 7.1 surround can sound hollow or have quiet dialogue on two speakers. This folds them down properly.": "Para caixas de som de notebook e fones de ouvido. Filmes mixados para surround 5.1 ou 7.1 podem soar vazios ou ter diálogos baixos em apenas dois alto-falantes. Isso faz o downmix corretamente.",
+ "For now, please open this site on a desktop, or build Harbor from source.": "Por enquanto, abra este site em um computador ou compile o Harbor a partir do código-fonte.",
+ "For the manual path:": "Para o caminho manual:",
+ "For the manual path: {code} 20+ and {code} CLI.": "Para o caminho manual: {code} 20+ e {code} CLI.",
+ "For users who want to deploy themselves or already have a wrangler workflow.": "Para usuários que querem fazer o próprio deploy ou já têm um fluxo com wrangler.",
+ "For watching things": "Para assistir coisas",
+ "Force of Nature": "Força da Natureza",
+ "Force on": "Forçar ativação",
+ "Force your font, size, and color onto styled subs. Use this for Arabic or any subs showing boxes. Can affect karaoke and signs.": "Forçar sua fonte, tamanho e cor em legendas estilizadas. Use isso para árabe ou qualquer legenda mostrando caixas. Pode afetar karaokê e letreiros.",
+ "Force your look onto subtitles that carry their own styling.": "Forçar sua aparência em legendas que têm estilo próprio.",
+ "Forced": "Forçado",
+ "Forced only": "Somente forçadas",
+ "Forced subs with native audio": "Legendas forçadas com áudio original",
+ "Forces a compatibility present mode that removes a thin bright line some monitors show at the screen edge. Side effects: 4K playback can drop to a slideshow and HDR content looks dimmer (this mode bypasses the HDR display path). Leave OFF unless you see that line. Restart playback to apply.": "Força um modo de compatibilidade de apresentação que remove uma linha fina e clara que alguns monitores mostram na borda da tela. Efeitos colaterais: a reprodução em 4K pode virar uma apresentação de slides e o conteúdo HDR fica mais escuro (esse modo ignora o caminho de exibição HDR). Deixe DESATIVADO a menos que você veja essa linha. Reinicie a reprodução para aplicar.",
+ "Forces the graphics card on. Smoothest and coolest, but a few old or unusual files may refuse to play. Switch back to Auto if something won't start.": "Força o uso da placa de vídeo. Mais suave e mais fresco, mas alguns arquivos antigos ou incomuns podem se recusar a reproduzir. Volte para Automático se algo não iniciar.",
+ "Forest sidebar": "Barra lateral floresta",
+ "Forget": "Esquecer",
+ "Forget URL": "Esquecer URL",
+ "Forward": "Avançar",
+ "Forward {n} seconds": "Avançar {n} segundos",
+ "Forward {n}s": "Avançar {n}s",
+ "Forward 10s": "Avançar 10s",
+ "Forward 30 seconds": "Avançar 30 segundos",
+ "Fouls": "Faltas",
+ "Found {n} .nfo file in this folder.": "Encontrado {n} arquivo .nfo nesta pasta.",
+ "Found {n}: {names}. Saved under the wrong id by the 0.9.65 bug, which breaks Continue Watching and Trakt marking.": "Encontrado {n}: {names}. Salvos com o id errado pelo bug da 0.9.65, que quebra o Continuar Assistindo e a marcação no Trakt.",
+ "found by": "encontrado por",
+ "Foundation Years (90s)": "Anos de Fundação (anos 90)",
+ "Founded {year}": "Fundado em {year}",
+ "Four channels at once, pre-spawned and swap-ready.": "Quatro canais ao mesmo tempo, pré-carregados e prontos para trocar.",
+ "Frame interpolation shines on anime but can look off on live-action film. Limit it to the content you want, then restart playback.": "A interpolação de quadros se destaca em animes, mas pode ficar estranha em filmes com atores reais. Limite-a ao conteúdo que você quiser e reinicie a reprodução.",
+ "Frame rate": "Taxa de quadros",
+ "France": "França",
+ "Free": "Grátis",
+ "Free at ": "Grátis em ",
+ "Free key at ": "Chave grátis em ",
+ "Free key unlocks Trending, In Theaters, and per-service catalogs. 60 seconds.": "A chave gratuita desbloqueia Em Alta, Nos Cinemas e catálogos por serviço. 60 segundos.",
+ "Free Throw %": "% de Lances Livres",
+ "Free torrent + usenet": "Torrent + usenet grátis",
+ "Free, two-minute signup. Unlocks Trending, In Theaters Now, Top Rated, and per-streaming catalogs (Netflix, Disney+, Hulu, …). Your key stays on this machine.": "Cadastro gratuito de dois minutos. Libera Em Alta, Nos Cinemas Agora, Mais Bem Avaliados e catálogos por serviço de streaming (Netflix, Disney+, Hulu, …). Sua chave fica somente nesta máquina.",
+ "French": "Francês",
+ "French Cinema": "Cinema Francês",
+ "Fresh tomato for 60%+, splat for under.": "Tomate fresco para 60%+, tomate podre para menos.",
+ "Fresh tomatoes for 60% and up, splat for anything under.": "Tomate fresco para 60% ou mais, tomate podre para qualquer coisa abaixo disso.",
+ "Freshest on stremio-addons.net": "Mais recentes no stremio-addons.net",
+ "Friends": "Amigos",
+ "From {source}": "De {source}",
+ "From any browser on your Wi-Fi": "De qualquer navegador na sua rede Wi-Fi",
+ "From HBO": "Da HBO",
+ "From other devices on your Wi-Fi": "De outros dispositivos na sua rede Wi-Fi",
+ "From stremio-addons.net": "Do stremio-addons.net",
+ "from the Harbor repo into a new directory as": "do repositório do Harbor para um novo diretório como",
+ "Front row seat": "Assento na primeira fila",
+ "Frontier Classics": "Clássicos de Fronteira",
+ "Frontline Valor": "Bravura na Linha de Frente",
+ "FT": "FT",
+ "Full": "Completo",
+ "Full hero banner": "Banner principal completo",
+ "Full list": "Lista completa",
+ "Full mode — diary, friends & ratings enabled": "Modo completo — diário, amigos e avaliações ativados",
+ "Full mode signs in with your Letterboxd password to also unlock your diary, friends activity and your personal ratings. Your password is sent only to Stremboxd to obtain a token — Harbor never stores it.": "O modo completo faz login com sua senha do Letterboxd para também desbloquear seu diário, atividade de amigos e suas avaliações pessoais. Sua senha é enviada apenas ao Stremboxd para obter um token — o Harbor nunca a armazena.",
+ "Full quality frames": "Quadros em qualidade total",
+ "Full quality hero image": "Imagem principal em qualidade total",
+ "Full Roster": "Elenco completo",
+ "Fullscreen": "Tela cheia",
+ "Fully downloaded": "Totalmente baixado",
+ "Future Worlds": "Mundos Futuros",
+ "FX": "FX",
+ "Gallery": "Galeria",
+ "Gamma": "Gama",
+ "Gamma (midtones)": "Gama (meios-tons)",
+ "Gangster Opera": "Ópera de Gângsteres",
+ "Generate a Cloudflare API token with": "Gere um token de API do Cloudflare com",
+ "Generate a Cloudflare API token with {code1} and {code2} permissions at {code3}. Paste it into Harbor.": "Gere um token de API do Cloudflare com as permissões {code1} e {code2} em {code3}. Cole-o no Harbor.",
+ "Generates a frame on the fly as you scrub the seek bar. Works on debrid streams and local files.": "Gera um quadro na hora enquanto você arrasta a barra de busca. Funciona em streams debrid e arquivos locais.",
+ "Genre": "Gênero",
+ "Genre Icon": "Ícone do Gênero",
+ "Genre Master": "Mestre do Gênero",
+ "Genres": "Gêneros",
+ "Genuine 48/60fps motion on anime, rendered right inside Harbor's player. SVP supplies the engine (VapourSynth + svpflow) and runs in your tray for licensing; Harbor's own player applies the interpolation, so it stays embedded and fully under your control. One-time install, then flip it on.": "Movimento genuíno de 48/60fps em animes, renderizado diretamente dentro do player do Harbor. O SVP fornece o motor (VapourSynth + svpflow) e roda na bandeja do sistema para licenciamento; o próprio player do Harbor aplica a interpolação, então tudo fica embutido e sob seu controle total. Instalação única, depois é só ativar.",
+ "German": "Alemão",
+ "Germany": "Alemanha",
+ "Get": "Obter",
+ "Get a free key at themoviedb.org": "Obtenha uma chave gratuita em themoviedb.org",
+ "Get beta updates": "Receber atualizações beta",
+ "Get Harbor for desktop": "Obtenha o Harbor para computador",
+ "Get started": "Começar",
+ "Get Started": "Começar",
+ "Get SVP (free)": "Obtenha o SVP (grátis)",
+ "Get yours at ": "Obtenha o seu em ",
+ "Ghibli Magic": "Magia Ghibli",
+ "GitHub username": "Nome de usuário do GitHub",
+ "Glass cards": "Cartões de vidro",
+ "Global": "Global",
+ "Global Impact": "Impacto Global",
+ "Go back": "Voltar",
+ "Go Back": "Voltar",
+ "Go to ep": "Ir para o ep.",
+ "Go to episode": "Ir para o episódio",
+ "Go to live": "Ir para o ao vivo",
+ "Go to show": "Ir para a série",
+ "Golden Bear": "Urso de Ouro",
+ "Golden Globes": "Globo de Ouro",
+ "Golden Lion": "Leão de Ouro",
+ "Good Morning": "Bom Dia",
+ "Good to know": "Bom saber",
+ "Good-looking video without working your machine hard. Leave it here unless you have a reason to change.": "Vídeo com boa qualidade sem sobrecarregar sua máquina. Deixe aqui, a menos que tenha um motivo para mudar.",
+ "Got a theme a friend shared? Drop it in.": "Ganhou um tema que um amigo compartilhou? Adicione aqui.",
+ "Got it": "Entendi",
+ "Gothic Tales": "Contos Góticos",
+ "Gothic Whimsy": "Fantasia Gótica",
+ "Gradient": "Gradiente",
+ "Grand": "Grande",
+ "Grand Canvases": "Grandes Telas",
+ "Grand Journeys": "Grandes Jornadas",
+ "Grand Prize": "Grande Prêmio",
+ "Grid": "Grade",
+ "Grid view": "Visualização em grade",
+ "Group episodes by story arc": "Agrupar episódios por arco narrativo",
+ "Grouped": "Agrupado",
+ "Grown-ups only": "Somente para adultos",
+ "Guest Stars": "Atores Convidados",
+ "Guest Stars · {n}": "Atores Convidados · {n}",
+ "Guests pick their own source": "Convidados escolhem sua própria fonte",
+ "Guide": "Guia",
+ "Gun-Fu": "Gun-Fu",
+ "Hairline cards": "Cartões com borda fina",
+ "Half-hours, anthologies, and a few epics for the morning routine.": "Episódios de meia hora, antologias e algumas épicas para a rotina matinal.",
+ "Hand-tuned colors. Edit them in the section above.": "Cores ajustadas manualmente. Edite-as na seção acima.",
+ "Hang tight, won't be a sec.": "Só um momento, já já termina.",
+ "Hangout Comedy": "Comédia de Amigos",
+ "Harbor {version} available": "Harbor {version} disponível",
+ "Harbor caps playlists at 80 MB to stay responsive. Most providers offer a filtered URL with fewer channels.": "O Harbor limita playlists a 80 MB para manter a fluidez. A maioria dos provedores oferece uma URL filtrada com menos canais.",
+ "Harbor catches stremio:// install links so the configure-and-install flow stays inside the app.": "O Harbor captura links de instalação stremio:// para que o fluxo de configurar e instalar permaneça dentro do app.",
+ "Harbor catches stremio:// install links so the configure-and-install flow stays inside the app. Every install also syncs to your Stremio account, so the official app remains the canonical home for your library.": "O Harbor intercepta links de instalação stremio:// para que o fluxo de configurar e instalar permaneça dentro do app. Toda instalação também sincroniza com sua conta Stremio, então o app oficial continua sendo a fonte principal da sua biblioteca.",
+ "Harbor checks automatically every few hours.": "O Harbor verifica automaticamente a cada algumas horas.",
+ "Harbor checks harbor.site for new versions and installs them in place.": "O Harbor verifica harbor.site em busca de novas versões e as instala no local.",
+ "Harbor checks harbor.site for new versions and installs them in place. Nothing installs until you choose to, and a dismissed update never nags you again.": "O Harbor verifica o harbor.site em busca de novas versões e as instala no local. Nada é instalado até você decidir, e uma atualização dispensada nunca mais incomoda.",
+ "Harbor couldn't resolve a usable ID for this title. Add a TMDB key in Library settings or sign in to Stremio to broaden coverage.": "O Harbor não conseguiu resolver um ID utilizável para este título. Adicione uma chave TMDB nas configurações da Biblioteca ou entre no Stremio para ampliar a cobertura.",
+ "Harbor curated": "Curadoria do Harbor",
+ "Harbor double-checks with Stremio after saving, so a half-written order can't slip through.": "O Harbor confere novamente com o Stremio após salvar, para que uma ordem incompleta não passe despercebida.",
+ "Harbor finds intro and credits timing from AniSkip, TheIntroDB, and the file's own chapters, then shows a Skip button at the right moment.": "O Harbor encontra os horários de abertura e créditos usando AniSkip, TheIntroDB e os próprios capítulos do arquivo, e então mostra um botão Pular no momento certo.",
+ "Harbor identity": "Identidade do Harbor",
+ "Harbor in your browser": "Harbor no seu navegador",
+ "Harbor is open source. PRs that reference a bug get reviewed within 48h and ship with credit in the release notes.": "O Harbor é open source. PRs que referenciam um bug são revisados em até 48h e publicados com crédito nas notas de versão.",
+ "Harbor keeps your MyAnimeList watch progress in sync.": "O Harbor mantém seu progresso de visualização do MyAnimeList sincronizado.",
+ "Harbor pulls the most popular titles each service has right now. Toggle off anything you don't subscribe to.": "O Harbor busca os títulos mais populares que cada serviço tem no momento. Desative qualquer serviço ao qual você não seja assinante.",
+ "Harbor pulls your addon collection from Stremio. Manage individual addons in Streaming sources.": "O Harbor importa sua coleção de addons do Stremio. Gerencie addons individuais em Fontes de streaming.",
+ "Harbor ranking": "Classificação do Harbor",
+ "Harbor ranking puts the best-scoring sources first. Addon order follows your addon priority (organize it in Addons, Installed tab, Reorder) and keeps each addon's results in the order it returned them, like the Stremio and Vidi apps.": "A classificação do Harbor coloca as fontes com melhor pontuação primeiro. A ordem dos addons segue sua prioridade de addons (organize em Addons, aba Instalados, Reordenar) e mantém os resultados de cada addon na ordem em que foram retornados, como nos apps Stremio e Vidi.",
+ "Harbor Relay": "Harbor Relay",
+ "Harbor runs a small streaming server right on this computer. This is where it lives. To stream from this machine on another device, copy the Wi-Fi address and paste it into Remote streaming server in Harbor over there.": "O Harbor executa um pequeno servidor de streaming neste computador. É aqui que ele fica. Para transmitir desta máquina em outro dispositivo, copie o endereço Wi-Fi e cole em Servidor de streaming remoto no Harbor de lá.",
+ "Harbor scans your IPTV playlists' EPG every 30 min for programs about to start.": "O Harbor verifica o EPG das suas playlists IPTV a cada 30 min em busca de programas prestes a começar.",
+ "Harbor sends no telemetry. This also drops outbound ad, analytics, and tracker requests that addons or metadata providers try to make, before they leave your machine.": "O Harbor não envia telemetria. Isso também bloqueia requisições de anúncios, análises e rastreadores que addons ou provedores de metadados tentam fazer, antes que saiam da sua máquina.",
+ "Harbor shows your AniList lists on the Anime page and keeps your progress in sync.": "O Harbor exibe suas listas do AniList na página de Anime e mantém seu progresso sincronizado.",
+ "Harbor still finds and loads subtitles so they're one click away in the player, it just won't turn them on automatically.": "O Harbor continua encontrando e carregando legendas para que fiquem a um clique no player, só não as ativa automaticamente.",
+ "Harbor test message (Discord). If you can read this, your webhook is wired up.": "Mensagem de teste do Harbor (Discord). Se você consegue ler isto, seu webhook está configurado corretamente.",
+ "Harbor test message (Telegram). If you can read this, your webhook is wired up.": "Mensagem de teste do Harbor (Telegram). Se você consegue ler isto, seu webhook está configurado corretamente.",
+ "Harbor uses the graphics card when it's safe and falls back to the CPU when it isn't. The right call for almost everyone.": "O Harbor usa a placa de vídeo quando é seguro e recorre à CPU quando não é. A escolha certa para quase todo mundo.",
+ "Harbor will mark what you finish as watched on Simkl and sync your plan-to-watch list.": "O Harbor marcará o que você concluir como assistido no Simkl e sincronizará sua lista de planejo para assistir.",
+ "Harbor will scrobble your playback to Trakt and sync your watchlist.": "O Harbor fará o scrobble da sua reprodução para o Trakt e sincronizará sua watchlist.",
+ "Harbor's built-in frame interpolation. Smooths panning, best on anime. Needs a display refresh rate above the video's frame rate, and can stutter on weak GPUs. Lighter than SVP.": "A interpolação de quadros integrada do Harbor. Suaviza panorâmicas, funciona melhor em animes. Precisa de uma taxa de atualização da tela acima da taxa de quadros do vídeo, e pode engasgar em GPUs fracas. Mais leve que o SVP.",
+ "Harbor's in-app installer animates the manifest install and keeps you in context. Anything Harbor installs is also synced to your Stremio account, so the official app stays the canonical library. Turn this off and Stremio becomes the only handler for stremio:// links; Harbor still installs anything you trigger from inside the app (Configure & install, paste, drag-and-drop).": "O instalador integrado do Harbor anima a instalação do manifesto e mantém você no contexto. Tudo que o Harbor instala também é sincronizado com sua conta Stremio, então o app oficial continua sendo a biblioteca principal. Desative isso e o Stremio se torna o único responsável pelos links stremio://; o Harbor ainda instala tudo que você acionar dentro do app (Configurar e instalar, colar, arrastar e soltar).",
+ "Harbor's native player chrome.": "A interface nativa do player do Harbor.",
+ "Harbor's player applies the interpolation itself, embedded like normal playback, and starts SVP Manager in the tray for licensing. Restart playback to apply. If video goes black or won't start, turn this off.": "O player do Harbor aplica a interpolação diretamente, incorporada como uma reprodução normal, e inicia o SVP Manager na bandeja para licenciamento. Reinicie a reprodução para aplicar. Se o vídeo ficar preto ou não iniciar, desative isso.",
+ "Harbor's public relay has not rolled out the latest protocol yet.": "O relay público do Harbor ainda não implantou o protocolo mais recente.",
+ "Harbor's public relay updates automatically; nothing to do.": "O relay público do Harbor atualiza automaticamente; nada a fazer.",
+ "Hard Boiled": "Hard Boiled",
+ "Hard stroke around each letter. High contrast.": "Contorno forte ao redor de cada letra. Alto contraste.",
+ "Hardware acceleration": "Aceleração por hardware",
+ "HDR": "HDR",
+ "HDR display mode": "Modo de exibição HDR",
+ "HDR in a separate window": "HDR em uma janela separada",
+ "HDR to SDR: Off": "HDR para SDR: Desativado",
+ "HDR to SDR: On": "HDR para SDR: Ativado",
+ "HDR-to-SDR tonemapping": "Tonemapping de HDR para SDR",
+ "Head to Discover. Cinemeta and OpenSubtitles cover the basics; Torrentio + a debrid key cover almost everything else.": "Vá até Descobrir. Cinemeta e OpenSubtitles cobrem o básico; Torrentio + uma chave debrid cobrem quase todo o resto.",
+ "Headphone series": "Série de fones de ouvido",
+ "Heads up": "Aviso",
+ "Heads up: {keys} can load outside scripts or open your player to the network. Only keep these if you know exactly what they do.": "Atenção: {keys} podem carregar scripts externos ou expor seu player à rede. Mantenha-os apenas se souber exatamente o que fazem.",
+ "Heads up: Harbor was built in English. Multi-language support is partial, so your addons usually catch what Harbor's own filters miss. If you speak another language and want to help fill the gaps, the source is open.": "Atenção: o Harbor foi criado em inglês. O suporte a múltiplos idiomas é parcial, então seus addons geralmente cobrem o que os filtros do próprio Harbor deixam passar. Se você fala outro idioma e quer ajudar a preencher as lacunas, o código-fonte é aberto.",
+ "Heads up: if Stremio is also installed, Windows may ask which app to use the first time a stremio:// link fires. Pick Harbor to make it stick.": "Atenção: se o Stremio também estiver instalado, o Windows pode perguntar qual app usar na primeira vez que um link stremio:// for acionado. Escolha o Harbor para fixar a escolha.",
+ "Heads up: this is a large file for peer-to-peer streaming, so it can take a while to start. A 1080p source or a debrid service will load faster.": "Atenção: este é um arquivo grande para streaming ponto a ponto, então pode demorar um pouco para começar. Uma fonte 1080p ou um serviço debrid carregará mais rápido.",
+ "Heads-up: a few addons (like AIOStatus) don't pre-fill from the URL. If the form loads blank, paste the existing manifest URL into their \"Import from URL\" field to restore your settings.": "Aviso: alguns addons (como o AIOStatus) não preenchem automaticamente a partir da URL. Se o formulário carregar em branco, cole a URL do manifesto existente no campo \"Import from URL\" deles para restaurar suas configurações.",
+ "Heads-up: a few addons (like AIOStatus) don't pre-fill from the URL. If the form loads blank, paste the existing manifest URL into their \\": "Atenção: alguns addons (como o AIOStatus) não preenchem automaticamente a partir da URL. Se o formulário carregar em branco, cole a URL do manifesto existente no campo deles \\",
+ "Heads-up: a few addons don't pre-fill from the URL. If the form loads blank, paste the existing manifest URL into their \"Import from URL\" field to restore your settings.": "Aviso: alguns addons não preenchem automaticamente a partir da URL. Se o formulário carregar em branco, cole a URL do manifesto existente no campo \"Importar da URL\" para restaurar suas configurações.",
+ "Health check returns 5xx": "A verificação de integridade retorna 5xx",
+ "Health for {n} service": "Integridade de {n} serviço",
+ "Health for {n} services": "Integridade de {n} serviços",
+ "Health for {n} services below": "Status de {n} serviços abaixo",
+ "heard": "ouvido",
+ "Heartbreak Chronicles": "Crônicas do Coração Partido",
+ "Heavy Hitters": "Peso-Pesados",
+ "Hebrew": "Hebraico",
+ "Height": "Altura",
+ "Heists & Cons": "Assaltos & Golpes",
+ "Hello World": "Hello World",
+ "Help": "Ajuda",
+ "Hero carousel, Top 10, Trending, In Theaters, per-service rails.": "Carrossel principal, Top 10, Em Alta, Nos Cinemas, faixas por serviço.",
+ "Hero carousel, Top 10, Trending, In Theaters, per-service rails. Addon catalogs append underneath, deduped.": "Carrossel principal, Top 10, Em Alta, Nos Cinemas, faixas por serviço. Catálogos de addons são adicionados abaixo, sem duplicatas.",
+ "Hero, Top 10, Trending, In Theaters, per-service rails. Your addons append underneath.": "Destaque, Top 10, Em alta, Nos cinemas, faixas por serviço. Seus addons aparecem abaixo.",
+ "HEVC, HDR, TrueHD, plus real subtitle and audio menus.": "HEVC, HDR, TrueHD, além de menus reais de legenda e áudio.",
+ "HI": "HI",
+ "HI/SDH": "HI/SDH",
+ "hidden": "oculto",
+ "Hidden": "Oculto",
+ "Hidden by default. Manifest paths often carry API keys (debrid tokens, OMDB keys, etc.) you don't want over a shoulder.": "Oculto por padrão. Os caminhos do manifesto costumam carregar chaves de API (tokens debrid, chaves OMDB, etc.) que você não quer que sejam vistas por cima do ombro.",
+ "Hidden by filter: {reason}": "Ocultado pelo filtro: {reason}",
+ "Hidden catalogs": "Catálogos ocultos",
+ "Hidden Gems": "Joias Escondidas",
+ "Hidden Gems on MAL": "Joias Escondidas no MAL",
+ "Hide": "Ocultar",
+ "Hide adult addons": "Ocultar addons adultos",
+ "Hide adult content": "Ocultar conteúdo adulto",
+ "Hide anime": "Ocultar anime",
+ "Hide category": "Ocultar categoria",
+ "Hide details": "Ocultar detalhes",
+ "Hide email": "Ocultar e-mail",
+ "Hide entire categories. Toggling these also removes the matching sidebar entries and rails.": "Oculte categorias inteiras. Alternar essas opções também remove as entradas correspondentes da barra lateral e as faixas.",
+ "Hide from home": "Ocultar da home",
+ "Hide Live TV": "Ocultar TV ao vivo",
+ "Hide others' drawings": "Ocultar desenhos de outros",
+ "Hide password": "Ocultar senha",
+ "Hide row": "Ocultar linha",
+ "Hide search": "Ocultar busca",
+ "Hide section": "Ocultar seção",
+ "Hide streams": "Ocultar streams",
+ "Hide subtitles when the player shrinks into the floating PiP window.": "Ocultar legendas quando o player encolhe na janela flutuante PiP.",
+ "Hide the full URL": "Ocultar a URL completa",
+ "Hide the title": "Ocultar o título",
+ "Hide this control": "Ocultar este controle",
+ "Hide this panel": "Ocultar este painel",
+ "Hide this Skip button": "Ocultar este botão Pular",
+ "Hide titles under posters": "Ocultar títulos sob os pôsteres",
+ "Hide unreleased titles": "Ocultar títulos não lançados",
+ "Hide watched titles in catalogs": "Ocultar títulos assistidos nos catálogos",
+ "Hides anime from the Home Continue Watching row. It still appears in the Anime tab's own Continue Watching.": "Oculta animes da linha Continuar assistindo da Início. Ele ainda aparece no próprio Continuar assistindo da aba Anime.",
+ "Hides spoiler-prone episode details in episode lists until you have watched them.": "Oculta detalhes de episódios propensos a spoilers nas listas de episódios até que você os assista.",
+ "Hides streams with no detected preferred language. Multi-audio releases count as a match.": "Oculta streams sem idioma preferido detectado. Lançamentos com múltiplos áudios contam como correspondência.",
+ "Hides the button on its own after a few seconds so a wrong one doesn't sit there the whole episode.": "Oculta o botão automaticamente após alguns segundos para que um botão errado não fique ali o episódio inteiro.",
+ "High": "Alto",
+ "High score, low fanfare": "Nota alta, pouco alarde",
+ "High-quality episode images": "Imagens de episódio em alta qualidade",
+ "Highly Rated, Quietly Loved": "Bem Avaliados, Amados em Silêncio",
+ "Highly recommended. This is what gives you the full Harbor experience: Popular, Trending, In Theaters, and per-service rails. Free at ": "Altamente recomendado. É isso que dá a você a experiência completa do Harbor: Populares, Em Alta, Nos Cinemas e faixas por serviço. Grátis em ",
+ "Hindi": "Híndi",
+ "His Best": "O Melhor Dele",
+ "His Comedy": "A Comédia Dele",
+ "Historical Drama": "Drama Histórico",
+ "History": "Histórico",
+ "History Buff": "Fã de História",
+ "Hit": "Acerto",
+ "Hit your daily quota? Use Harbor's public relay, or host your own.": "Atingiu sua cota diária? Use o relay público do Harbor ou hospede o seu próprio.",
+ "Hits": "Sucessos",
+ "Hitting Play jumps straight into playback with the best stream Harbor finds.": "Ao pressionar Reproduzir, você entra direto na reprodução com o melhor stream que o Harbor encontrar.",
+ "Hitting Play opens the source list so you can choose quality, debrid, and audio yourself.": "Clicar em Reproduzir abre a lista de fontes para você escolher qualidade, debrid e áudio manualmente.",
+ "Hold Ctrl or Cmd and scroll to resize Harbor's interface smoothly.": "Segure Ctrl ou Cmd e role para redimensionar a interface do Harbor suavemente.",
+ "Holdover Picks": "Escolhas que Ficaram",
+ "Holdup Matey!": "Espera aí, parceiro!",
+ "Holiday Classics": "Clássicos de Feriado",
+ "Holiday Warmth": "Aconchego de Feriado",
+ "Home": "Início",
+ "Home · Continue Watching": "Início · Continuar Assistindo",
+ "Home hero": "Destaque da Início",
+ "Home hero shadow": "Sombra do destaque da Início",
+ "Home languages": "Idiomas da Início",
+ "Home layout": "Layout da Início",
+ "Home Rail Settings": "Configurações das Faixas da Início",
+ "Home Runs": "Sucessos Absolutos",
+ "Honored writers": "Roteiristas homenageados",
+ "Horizontal view": "Visualização horizontal",
+ "Horror": "Terror",
+ "Horror & Supernatural": "Terror e Sobrenatural",
+ "Host": "Anfitrião",
+ "Host is watching": "O anfitrião está assistindo",
+ "Hotkeys": "Atalhos de teclado",
+ "Hover a poster to peek at its rating, runtime, and synopsis without opening it.": "Passe o mouse sobre um pôster para ver a nota, a duração e a sinopse sem abri-lo.",
+ "Hover preview": "Pré-visualização ao passar o mouse",
+ "Hover the speaker to reveal a horizontal slider.": "Passe o mouse sobre o alto-falante para revelar um controle deslizante horizontal.",
+ "Hover to peek": "Passe o mouse para espiar",
+ "How aggressively Harbor rejects shady or mismatched streams before showing them in the picker.": "O quão agressivamente o Harbor rejeita streams suspeitos ou incompatíveis antes de mostrá-los no seletor.",
+ "How dark the gradient behind the featured title on Home is. 100% is the classic look; lower it to let more of the artwork show through.": "O quão escuro é o gradiente atrás do título em destaque na Início. 100% é o visual clássico; diminua para deixar mais da arte aparecer.",
+ "How Harbor finds and resolves playable streams. Debrid keys and addon installs live here.": "Como o Harbor encontra e resolve streams reproduzíveis. As chaves de debrid e as instalações de addons ficam aqui.",
+ "How Harbor squeezes HDR movies onto a normal screen. Auto is right for almost everyone; the curves below just change the look (punchy vs soft). Only matters on HDR sources.": "Como o Harbor comprime filmes HDR para caber numa tela comum. Automático é ideal para quase todo mundo; as curvas abaixo só mudam a aparência (mais vibrante vs. mais suave). Só importa em fontes HDR.",
+ "How is this build treating you?": "Como esta versão está se saindo para você?",
+ "How keys behave during playback.": "Como as teclas se comportam durante a reprodução.",
+ "How much of each source's description the Stremio picker layout shows. Full keeps everything the addon sends, which matters for AIOStreams and other custom formats.": "Quanto da descrição de cada fonte o layout do seletor do Stremio mostra. Completa mantém tudo o que o addon envia, o que importa para AIOStreams e outros formatos personalizados.",
+ "How often the profile screen appears when you have more than one profile.": "Com que frequência a tela de perfis aparece quando você tem mais de um perfil.",
+ "How Play works": "Como o Reproduzir funciona",
+ "How posters appear as they load. Blur up looks smoothest; Fade is lighter on older or low-power devices; Instant turns it off.": "Como os pôsteres aparecem ao carregar. Desfoque progressivo é o mais suave; Esmaecer é mais leve em dispositivos antigos ou fracos; Instantâneo desativa o efeito.",
+ "How sharp the trailer is when you hit the preview button. Auto picks from your connection speed. 1080p and Best merge separate video and audio with the bundled ffmpeg, so they take a beat longer to start.": "O quão nítido é o trailer ao clicar no botão de prévia. Automático escolhe com base na sua velocidade de conexão. 1080p e Melhor mesclam vídeo e áudio separados com o ffmpeg incluso, então demoram um pouco mais para começar.",
+ "How should we import this folder?": "Como devemos importar esta pasta?",
+ "How subtitles look during playback. Live preview below.": "Como as legendas aparecem durante a reprodução. Pré-visualização ao vivo abaixo.",
+ "How the Home page assembles its rails.": "Como a página Início monta suas faixas.",
+ "How the volume widget behaves on click and hover.": "Como o widget de volume se comporta ao clicar e passar o mouse.",
+ "How to get this": "Como obter isso",
+ "How you appear in Watch Together, sessions, and chat. Sits on top of your Stremio account.": "Como você aparece no Assistir Juntos, sessões e chat. Fica por cima da sua conta Stremio.",
+ "hr": "h",
+ "HTML5": "HTML5",
+ "HTML5 (browser-based)": "HTML5 (baseado em navegador)",
+ "HTML5 plays everything WebView2 supports. mpv handles TrueHD, DTS-HD, AV1, weird containers, and HDR. Auto picks based on the source.": "O HTML5 reproduz tudo o que o WebView2 suporta. O mpv lida com TrueHD, DTS-HD, AV1, contêineres incomuns e HDR. O modo automático escolhe com base na fonte.",
+ "https://...manifest.json or stremio://...": "https://...manifest.json ou stremio://...",
+ "https://posters.example.com or a pattern with {id}": "https://posters.example.com ou um padrão com {id}",
+ "Huge": "Enorme",
+ "Hungarian": "Húngaro",
+ "HW decode": "Decodificação por hardware",
+ "I authorized it": "Eu autorizei",
+ "I have my token": "Eu tenho meu token",
+ "Icon": "Ícone",
+ "Icon only": "Somente ícone",
+ "Iconic Long-Runners": "Clássicos de Longa Duração",
+ "ID prefixes": "Prefixos de ID",
+ "Identify every file by its name and pull fresh titles and artwork from TMDB.": "Identifique cada arquivo pelo nome e busque títulos e artes atualizados do TMDB.",
+ "Identify this title before exporting.": "Identifique este título antes de exportar.",
+ "Idle": "Ocioso",
+ "If a stream or the video player misbehaves, export the player log and attach it above. It saves to your Downloads folder.": "Se um stream ou o reprodutor de vídeo apresentar problemas, exporte o registro do player e anexe-o acima. Ele é salvo na sua pasta de Downloads.",
+ "If disabled, overviews and taglines remain in their original language. (Applies only inside the details page)": "Se desativado, sinopses e slogans permanecem no idioma original. (Aplica-se apenas dentro da página de detalhes)",
+ "If disabled, posters remain in their original language. (Applies only inside the details page)": "Se desativado, os pôsteres permanecem no idioma original. (Aplica-se apenas dentro da página de detalhes)",
+ "If disabled, titles remain in their original language.": "Se desativado, os títulos permanecem no idioma original.",
+ "If enabled, posters will display the Arabic title. Disable this to keep the original English poster.": "Se ativado, os pôsteres exibirão o título em árabe. Desative para manter o pôster original em inglês.",
+ "If streams stop loading, hit Clear & restart below to wipe the engine and start it fresh on a new port.": "Se os streams pararem de carregar, clique em Limpar e reiniciar abaixo para apagar o mecanismo e iniciá-lo do zero em uma nova porta.",
+ "If the server is unreachable, playback fails instead of streaming locally. Use this when your VPN runs on the server machine and torrent traffic must never leave this one.": "Se o servidor estiver inacessível, a reprodução falha em vez de transmitir localmente. Use isso quando sua VPN roda na máquina do servidor e o tráfego de torrent nunca deve sair dela.",
+ "If the Watch Together popover shows an outdated-relay banner, redeploying with the steps above is the fix. The banner clears automatically the next time you connect once the relay reports the current version.": "Se o pop-up do Assistir Juntos mostrar um banner de relay desatualizado, reimplantar com os passos acima resolve. O banner some automaticamente na próxima vez que você conectar, assim que o relay reportar a versão atual.",
+ "If video keeps pausing to buffer, or you're on spotty Wi-Fi or a far-away server, this gives Harbor a bigger head start so playback rides through the rough patches.": "Se o vídeo continuar pausando para carregar, ou você estiver em um Wi-Fi instável ou servidor distante, isso dá ao Harbor uma folga maior para a reprodução aguentar os trechos difíceis.",
+ "If you exceed free tier, the Workers Paid plan is $5 per month and bumps the request allowance to 10 million per day.": "Se você exceder o nível gratuito, o plano pago do Workers custa $5 por mês e aumenta o limite de requisições para 10 milhões por dia.",
+ "Image {n}": "Imagem {n}",
+ "Image bar active. Pick a style above to switch back, or clear the image below.": "Barra de imagem ativa. Escolha um estilo acima para voltar, ou limpe a imagem abaixo.",
+ "Image languages": "Idiomas da imagem",
+ "Image size": "Tamanho da imagem",
+ "IMDb": "IMDb",
+ "Import a Theme": "Importar um Tema",
+ "Import from .nfo files": "Importar de arquivos .nfo",
+ "Import from file...": "Importar de arquivo...",
+ "Import from Trakt": "Importar do Trakt",
+ "Imported": "Importado",
+ "Imported and now playing": "Importado e reproduzindo agora",
+ "Importing {done} / {total}": "Importando {done} / {total}",
+ "in {d} days": "em {d} dias",
+ "in {n} weeks": "em {n} semanas",
+ "in {n}wks": "em {n}sem",
+ "in 24h": "em 24h",
+ "In Cinema": "Nos Cinemas",
+ "in Harbor settings.": "nas configurações do Harbor.",
+ "In Harbor: Settings, Harbor Relay, then": "No Harbor: Configurações, Harbor Relay, depois",
+ "In Harbor: Settings, Harbor Relay, then {kbd}. Paste the URL with {code1} as the scheme instead of {code2}.": "No Harbor: Configurações, Harbor Relay, depois {kbd}. Cole a URL com {code1} como esquema em vez de {code2}.",
+ "In Theaters": "Nos Cinemas",
+ "In Theaters Now": "Nos Cinemas Agora",
+ "In watchlist": "Na watchlist",
+ "In Watchlist": "Na Watchlist",
+ "In your local library": "Na sua biblioteca local",
+ "In your watchlist": "Na sua watchlist",
+ "Inactive": "Inativo",
+ "Increase progress": "Aumentar progresso",
+ "India": "Índia",
+ "Indy & Beyond": "Indy e Além",
+ "Info": "Informações",
+ "Information": "Informação",
+ "Injected ad skip (experimental)": "Pular anúncio injetado (experimental)",
+ "Injected into a fixed-position layer above the app (pointer-events disabled by default). Wrap in a div with pointer-events:auto to make it interactive.": "Injetado em uma camada de posição fixa acima do app (pointer-events desativado por padrão). Envolva em uma div com pointer-events:auto para torná-lo interativo.",
+ "Inside the playback view.": "Dentro da tela de reprodução.",
+ "Insomnia Lineup": "Seleção para Noites sem Sono",
+ "Inspector": "Inspetor",
+ "Install": "Instalar",
+ "Install addon": "Instalar addon",
+ "Install default": "Instalar padrão",
+ "Install failed": "Falha na instalação",
+ "Install failed.": "Falha na instalação.",
+ "Install from URL: paste any manifest or stremio:// link": "Instalar por URL: cole qualquer link de manifesto ou stremio://",
+ "Install SVP once (the free tier is enough). It bundles VapourSynth + svpflow; Harbor reuses them, no extra setup.": "Instale o SVP uma vez (o nível gratuito é suficiente). Ele inclui VapourSynth + svpflow; o Harbor os reutiliza, sem configuração extra.",
+ "Install wrangler and authenticate:": "Instale o wrangler e autentique-se:",
+ "Installed": "Instalado",
+ "Installed and detected. Harbor found its interpolation engine and will drive it directly.": "Instalado e detectado. O Harbor encontrou seu mecanismo de interpolação e o controlará diretamente.",
+ "Installed locally": "Instalado localmente",
+ "Installed via {label}": "Instalado via {label}",
+ "Installing": "Instalando",
+ "Installing {name}": "Instalando {name}",
+ "Installing. Harbor will restart.": "Instalando. O Harbor será reiniciado.",
+ "Installing…": "Instalando…",
+ "Instant": "Instantâneo",
+ "Instant Play: clicking Play queues the next stream automatically.": "Reprodução Instantânea: clicar em Reproduzir enfileira o próximo stream automaticamente.",
+ "Integrations": "Integrações",
+ "Inter": "Inter",
+ "Interceptions": "Interceptações",
+ "Interface language": "Idioma da interface",
+ "Interface scale": "Escala da interface",
+ "Internals": "Internos",
+ "Internet speed": "Velocidade da internet",
+ "Interpolates frames for smoother panning, best on anime. Needs a display refresh rate above the video's frame rate, and can stutter on weak GPUs. mpv only.": "Interpola quadros para uma panorâmica mais suave, ideal para animes. Requer uma taxa de atualização da tela acima da taxa de quadros do vídeo e pode engasgar em GPUs fracas. Somente mpv.",
+ "Interrupted": "Interrompido",
+ "Interrupted: re-download to finish": "Interrompido: baixe novamente para concluir",
+ "Into the Stars": "Rumo às Estrelas",
+ "Into the Wild": "Na Natureza Selvagem",
+ "Invalid SourceRow JSON format": "Formato JSON de SourceRow inválido",
+ "Invert": "Inverter",
+ "Investigative Docs": "Documentários Investigativos",
+ "Invite": "Convidar",
+ "Invite link": "Link de convite",
+ "Invite via link": "Convidar por link",
+ "is now using your new configuration.": "agora está usando sua nova configuração.",
+ "is ready. Open Discover or hit Play on a title to use it.": "está pronto. Abra o Descobrir ou toque em Play em um título para usá-lo.",
+ "Is the channel playing right?": "O canal está tocando corretamente?",
+ "It looks offline right now. Free playlists often include channels that have gone dark, so another one is usually a click away.": "Parece estar offline agora. Playlists gratuitas costumam incluir canais que saíram do ar, então outro geralmente está a um clique de distância.",
+ "It replies with your numeric ID. Copy that number. Paste it into the": "Ele responde com seu ID numérico. Copie esse número. Cole-o em",
+ "It updates automatically; nothing to do.": "Ele atualiza automaticamente; nada a fazer.",
+ "Italian": "Italiano",
+ "Italy": "Itália",
+ "Japan": "Japão",
+ "Japanese": "Japonês",
+ "Japanese Cinema": "Cinema Japonês",
+ "Jazz & Showbiz": "Jazz e Showbiz",
+ "Join": "Entrar",
+ "JSON (.json)": "JSON (.json)",
+ "JSON cannot be empty": "O JSON não pode estar vazio",
+ "JSON URL": "URL do JSON",
+ "Jump back by the Back seek step set under Behavior.": "Volta pelo intervalo de retrocesso definido em Comportamento.",
+ "Jump back thirty seconds.": "Volta trinta segundos.",
+ "Jump back to the last live channel you watched (live TV only).": "Volta para o último canal ao vivo que você assistiu (somente TV ao vivo).",
+ "Jump forward by the Forward seek step set under Behavior.": "Avança pelo intervalo de avanço definido em Comportamento.",
+ "Jump forward thirty seconds.": "Avança trinta segundos.",
+ "Jump past a known injected ad on its own instead of showing the Skip button.": "Pular automaticamente um anúncio injetado conhecido em vez de mostrar o botão Pular.",
+ "Jump past openings automatically the moment one starts. The Skip button still shows either way, and seeking back into an intro replays it without skipping again.": "Pular automaticamente as aberturas assim que começarem. O botão Pular continua aparecendo de qualquer forma, e voltar para dentro de uma abertura a reproduz novamente sem pular de novo.",
+ "Jump to": "Ir para",
+ "Jump to end": "Ir para o fim",
+ "Jump to live edge": "Ir para o ponto ao vivo",
+ "Jump to start": "Ir para o início",
+ "Jump to the top-bar search from anywhere.": "Vá para a busca da barra superior de qualquer lugar.",
+ "Just added": "Recém-adicionado",
+ "Just change region": "Apenas mudar a região",
+ "Just for kids": "Só para crianças",
+ "just now": "agora mesmo",
+ "Just the next show: {title}": "Apenas o próximo episódio: {title}",
+ "K-Drama": "K-Drama",
+ "Keep anime in the Anime room only": "Manter anime apenas na sala de Anime",
+ "Keep at most": "Manter no máximo",
+ "Keep cached files for": "Manter arquivos em cache por",
+ "Keep frames for": "Manter quadros por",
+ "Keep Harbor a click away. Close it to the system tray instead of quitting, and control it from the tray menu. These also mirror into the tray menu live.": "Mantenha o Harbor a um clique de distância. Feche-o na bandeja do sistema em vez de encerrá-lo, e controle-o pelo menu da bandeja. Isso também reflete no menu da bandeja em tempo real.",
+ "Keep original": "Manter original",
+ "Keep same source on next episode": "Manter a mesma fonte no próximo episódio",
+ "Keep the Harbor window above other windows.": "Manter a janela do Harbor acima de outras janelas.",
+ "Keep the Library Watchlist tab limited to titles you added in Stremio. Turn this off to also include anything Stremio auto-added when you pressed play.": "Manter a aba Watchlist da Biblioteca limitada aos títulos que você adicionou no Stremio. Desative isso para incluir também o que o Stremio adicionou automaticamente quando você deu play.",
+ "Keep the next episode visible": "Manter o próximo episódio visível",
+ "Keep the original look but apply your size and position.": "Manter a aparência original, mas aplicar seu tamanho e posição.",
+ "Keep the presence visible when playback is paused.": "Manter a presença visível quando a reprodução estiver pausada.",
+ "Keep typing, or paste the full list URL.": "Continue digitando ou cole a URL completa da lista.",
+ "Keep watching": "Continuar assistindo",
+ "Keep Watching": "Continuar Assistindo",
+ "Keeps fetching the full torrent in the background, even when paused, so you can pre-buffer big remuxes and scrub a finished file with no re-downloading. Uses more bandwidth and disk; cleaned up when you switch or close like normal.": "Continua baixando o torrent completo em segundo plano, mesmo pausado, para você pré-carregar remuxes grandes e navegar em um arquivo finalizado sem precisar baixar de novo. Usa mais banda e disco; é limpo normalmente ao trocar ou fechar.",
+ "Keeps Harbor embedded but lifts the HDR video onto its own opaque plane with the controls floating above, so Windows shows true HDR without the brightness slider dimming it. Needs HDR-to-SDR tonemapping off.": "Mantém o Harbor incorporado, mas eleva o vídeo HDR para seu próprio plano opaco com os controles flutuando acima, para que o Windows exiba HDR verdadeiro sem que o controle de brilho o escureça. Requer o mapeamento de tons HDR para SDR desativado.",
+ "Keeps HDR inside Harbor with the controls floating above the video. Subtitles render on the video. If the control bar does not appear, press Esc or use separate window.": "Mantém o HDR dentro do Harbor com os controles flutuando sobre o vídeo. As legendas são renderizadas sobre o vídeo. Se a barra de controles não aparecer, pressione Esc ou use janela separada.",
+ "Keeps the malware/year/episode-mismatch checks but allows season packs and oversized files. Same as hitting Search wider in the picker.": "Mantém as verificações de malware/ano/episódio incompatível, mas permite pacotes de temporada e arquivos grandes demais. O mesmo que clicar em Ampliar busca no seletor.",
+ "Key rejected. Check it on Library & metadata.": "Chave rejeitada. Verifique em Biblioteca e metadados.",
+ "Kids profile": "Perfil infantil",
+ "Kinetic Style": "Estilo Cinético",
+ "King Adaptations": "Adaptações de Stephen King",
+ "Kitsu IDs, fansub-friendly, season-aware.": "IDs do Kitsu, compatível com fansubs, reconhece temporadas.",
+ "Kitsu, MAL, season-aware": "Kitsu, MAL, reconhece temporadas",
+ "Know more": "Saiba mais",
+ "Known For": "Conhecido por",
+ "Korean": "Coreano",
+ "Korean Cinema": "Cinema Coreano",
+ "Kung Fu & Chaos": "Kung Fu e Caos",
+ "Language": "Idioma",
+ "language. Home filters to it.": "idioma. A Home filtra por ele.",
+ "Languages": "Idiomas",
+ "languages. Home filters to these.": "idiomas. A Home filtra por eles.",
+ "Large": "Grande",
+ "Larger": "Maior",
+ "Largest Lead": "Maior Vantagem",
+ "Last aired": "Última exibição",
+ "Last page": "Última página",
+ "Last source wasn't actually cached on your debrid yet. Pick another from the list.": "A última fonte ainda não estava realmente em cache no seu debrid. Escolha outra na lista.",
+ "Last synced {n}s ago.": "Última sincronização há {n}s.",
+ "Last updated {ago}": "Atualizado pela última vez {ago}",
+ "Late Night": "Madrugada",
+ "Late Show": "Programa da Madrugada",
+ "Late-night chapters": "Capítulos de madrugada",
+ "Laugh Out Loud": "Gargalhadas Garantidas",
+ "Layout editor": "Editor de layout",
+ "Layout name": "Nome do layout",
+ "Layouts": "Layouts",
+ "Lead Changes": "Trocas de Liderança",
+ "Lead Roles": "Papéis Principais",
+ "Lead with the show name instead of the episode title at the top of the player.": "Exibir o nome da série em vez do título do episódio no topo do player.",
+ "Leading Lady": "Protagonista Feminina",
+ "Leave": "Sair",
+ "Leave everything below it alone. Scroll down, click {b1}, then {b2}. Copy the long string it shows you (you only see it once) and bring it back here.": "Deixe tudo abaixo disso como está. Role para baixo, clique em {b1} e depois em {b2}. Copie a string longa exibida (você só a vê uma vez) e traga-a de volta aqui.",
+ "Leave room": "Sair da sala",
+ "Leave the episode you are up to clear and only blur the ones after it.": "Deixar visível o episódio em que você está e desfocar só os seguintes.",
+ "Leave the show?": "Sair da série?",
+ "Left": "Esquerda",
+ "Left edge": "Borda esquerda",
+ "Legal": "Legal",
+ "Leone, Corbucci, dust and dynamite": "Leone, Corbucci, poeira e dinamite",
+ "Less bass": "Menos grave",
+ "Let your Discord friends see what you are watching, with the show poster and a live progress bar.": "Deixe seus amigos do Discord verem o que você está assistindo, com o pôster do título e uma barra de progresso ao vivo.",
+ "Let your Discord friends see what you are watching, with the show poster and a live progress bar. Desktop only, and only your own Discord client is involved (nothing touches a Harbor server).": "Deixe seus amigos do Discord verem o que você está assistindo, com o pôster da série e uma barra de progresso ao vivo. Apenas no desktop, e só o seu próprio cliente do Discord é envolvido (nada passa por um servidor do Harbor).",
+ "Let your graphics card do the heavy lifting of decoding video. It saves battery and keeps the CPU cool. Auto is right for almost everyone; only switch if playback looks wrong or won't start.": "Deixe sua placa de vídeo fazer o trabalho pesado de decodificar o vídeo. Isso economiza bateria e mantém a CPU mais fria. Automático é ideal para quase todo mundo; só mude se a reprodução parecer errada ou não iniciar.",
+ "Letter spacing": "Espaçamento entre letras",
+ "Letterboxd": "Letterboxd",
+ "Letterboxd password": "Senha do Letterboxd",
+ "Letterboxd Reviews": "Avaliações do Letterboxd",
+ "Letterboxd unavailable right now.": "Letterboxd indisponível no momento.",
+ "Letterboxd username": "Nome de usuário do Letterboxd",
+ "letterboxd.com/username/list/slug": "letterboxd.com/username/list/slug",
+ "Library": "Biblioteca",
+ "Library & metadata": "Biblioteca e metadados",
+ "Library and addons will sync in once you're past setup.": "A biblioteca e os addons serão sincronizados assim que a configuração terminar.",
+ "Library is empty. Nothing to repair.": "A biblioteca está vazia. Nada para reparar.",
+ "Library, watch progress, and addon collection sync from this account.": "Biblioteca, progresso de reprodução e coleção de addons são sincronizados a partir desta conta.",
+ "Lifts shadows so the pitch-black scenes are actually watchable.": "Realça as sombras para que as cenas bem escuras fiquem realmente visíveis.",
+ "Lighter (w300)": "Mais leve (w300)",
+ "Lights Out": "Luzes Apagadas",
+ "Liked Films": "Filmes Curtidos",
+ "Likely cam": "Provavelmente cam",
+ "Likes": "Curtidas",
+ "Limited Series & Miniseries": "Séries Limitadas e Minisséries",
+ "Line spacing": "Espaçamento entre linhas",
+ "Line-free video mode": "Modo de vídeo sem linhas",
+ "lineups": "grades",
+ "Lineups not available yet.": "Grades de programação ainda não disponíveis.",
+ "Link copied": "Link copiado",
+ "List": "Lista",
+ "List URL or ID": "URL ou ID da lista",
+ "List view": "Visualização em lista",
+ "Live": "Ao vivo",
+ "Live & Upcoming": "Ao vivo e em breve",
+ "Live channel": "Canal ao vivo",
+ "Live EPG": "EPG ao vivo",
+ "Live preview": "Pré-visualização ao vivo",
+ "Live preview is on. Done and Save both keep what you've picked as your Custom theme. Reset reverts the editor to the saved palette.": "A pré-visualização ao vivo está ativada. Concluir e Salvar mantêm o que você escolheu como seu tema personalizado. Redefinir reverte o editor para a paleta salva.",
+ "Live streams that actually work.": "Transmissões ao vivo que realmente funcionam.",
+ "Live TV": "TV ao vivo",
+ "Live Wire": "Alta Tensão",
+ "Live-injected into the document. Use it to retheme buttons, change spacing, recolor anything.": "Injetado ao vivo no documento. Use para retemática botões, mudar espaçamentos, recolorir qualquer coisa.",
+ "Load a .srt or .ass from your computer": "Carregar um .srt ou .ass do seu computador",
+ "Load effect": "Carregar efeito",
+ "Load file": "Carregar arquivo",
+ "Load more": "Carregar mais",
+ "Load more comments": "Carregar mais comentários",
+ "Load more threads": "Carregar mais tópicos",
+ "Load the highest-resolution artwork for the featured hero. Uses more bandwidth.": "Carregar a arte na maior resolução para o destaque principal. Usa mais banda.",
+ "Loaded {name}": "{name} carregado",
+ "Loading": "Carregando",
+ "Loading {label}": "Carregando {label}",
+ "Loading environment details…": "Carregando detalhes do ambiente…",
+ "Loading episode details...": "Carregando detalhes do episódio...",
+ "Loading favorites from other providers…": "Carregando favoritos de outros provedores…",
+ "Loading favorites…": "Carregando favoritos…",
+ "Loading friends' reviews…": "Carregando avaliações de amigos…",
+ "Loading Letterboxd…": "Carregando Letterboxd…",
+ "Loading more": "Carregando mais",
+ "Loading more channels ({n1} of {n2})": "Carregando mais canais ({n1} de {n2})",
+ "Loading more channels ({shown} of {total})": "Carregando mais canais ({shown} de {total})",
+ "loading more…": "carregando mais…",
+ "Loading on {names}…": "Carregando em {names}…",
+ "Loading playlist...": "Carregando playlist...",
+ "Loading program listings… channels are ready to play in the meantime.": "Carregando a programação… os canais já estão prontos para reproduzir enquanto isso.",
+ "Loading subtitle addons…": "Carregando addons de legenda…",
+ "Loading the catalog": "Carregando o catálogo",
+ "Loading trailer": "Carregando trailer",
+ "Loading your AniList…": "Carregando seu AniList…",
+ "Loading...": "Carregando...",
+ "Loading…": "Carregando…",
+ "Loads a backup file and replaces your current setup with it. Perfect for a new computer. Your Stremio sign-in on this device stays as is.": "Carrega um arquivo de backup e substitui sua configuração atual por ele. Perfeito para um computador novo. Seu login do Stremio neste dispositivo permanece como está.",
+ "Loads full-resolution artwork instead of the lighter, softer version.": "Carrega a arte em resolução completa em vez da versão mais leve e suave.",
+ "Loads full-resolution episode artwork (original) instead of lighter w300 images. Turn off for slow connections or low-end devices.": "Carrega a arte dos episódios em resolução completa (original) em vez das imagens w300 mais leves. Desative para conexões lentas ou dispositivos mais fracos.",
+ "Loads more of the video ahead of time before playing. Smoother on weak connections, uses a little more memory and takes a moment longer to start.": "Carrega mais vídeo com antecedência antes de reproduzir. Mais fluido em conexões fracas, usa um pouco mais de memória e demora um pouco mais para iniciar.",
+ "local": "local",
+ "Local": "Local",
+ "Local engine": "Mecanismo local",
+ "Local engine address": "Endereço do mecanismo local",
+ "Local library": "Biblioteca local",
+ "Local only": "Apenas local",
+ "Local subtitle": "Legenda local",
+ "Lock sidebar tabs": "Bloquear abas da barra lateral",
+ "Lock to season server": "Fixar no servidor da temporada",
+ "Locks only activate once a PIN is set.": "Os bloqueios só ficam ativos depois que um PIN é definido.",
+ "Login to Stremio": "Entrar no Stremio",
+ "Logo size": "Tamanho do logo",
+ "Logos": "Logos",
+ "Lone Stars": "Estrelas Solitárias",
+ "Long Balls": "Bolas Longas",
+ "Long Balls %": "Bolas Longas %",
+ "Long string with a colon in it. Copy it. Paste it into the": "String longa com dois-pontos nela. Copie-a. Cole-a no",
+ "Long-running comforts and new chapters worth pressing play on.": "Clássicos reconfortantes de longa duração e novos capítulos que valem o play.",
+ "Looking for sources…": "Procurando fontes…",
+ "Looking for subtitles…": "Procurando legendas…",
+ "Looking…": "Procurando…",
+ "Looks good": "Está tudo certo",
+ "Looks like a re-configure of ": "Parece uma reconfiguração de ",
+ "Looks like a re-configure of {name}. We'll replace the existing entry so you don't end up with two copies.": "Parece uma reconfiguração de {name}. Vamos substituir a entrada existente para você não acabar com duas cópias.",
+ "Lost worlds rediscovered": "Mundos perdidos redescobertos",
+ "Low": "Baixo",
+ "Low-level knobs for the peer-to-peer engine, plus quick ways to grab debug info when a stream misbehaves.": "Ajustes de baixo nível para o mecanismo peer-to-peer, além de formas rápidas de obter informações de depuração quando um stream se comporta mal.",
+ "Lower subtitles": "Baixar legendas",
+ "Lower volume (hold Shift for big steps).": "Diminuir volume (segure Shift para passos maiores).",
+ "Loyalties shatter as the survivors realize the enemy has been among them all along.": "Lealdades se rompem quando os sobreviventes percebem que o inimigo sempre esteve entre eles.",
+ "Lunch-break comedies and slow-cooker dramas, ready when you are.": "Comédias de pausa para o almoço e dramas de cozimento lento, prontos quando você estiver.",
+ "M3U playlist": "Playlist M3U",
+ "M3U URL": "URL M3U",
+ "Mad Visions": "Visões Loucas",
+ "Made Men": "Homens Feitos",
+ "Made with": "Feito com",
+ "Main Char": "Personagem Principal",
+ "Make everything bigger and easier to read: sidebar, menus, popups, every page. The whole interface scales live as you drag, so you can see the change right here. Great on 4K and ultrawide monitors, or whenever the text feels small.": "Deixe tudo maior e mais fácil de ler: barra lateral, menus, pop-ups, todas as páginas. A interface inteira se ajusta em tempo real enquanto você arrasta, então dá para ver a mudança na hora. Ótimo em monitores 4K e ultrawide, ou sempre que o texto parecer pequeno.",
+ "Make the featured banner on Home bigger and sharper.": "Deixe o banner em destaque da Início maior e mais nítido.",
+ "Make your own in the Theme Studio, or import one a friend shared.": "Crie o seu no Estúdio de Temas, ou importe um que um amigo compartilhou.",
+ "MAL": "MAL",
+ "MAL rows": "Linhas do MAL",
+ "Manage": "Gerenciar",
+ "Manage addon": "Gerenciar addon",
+ "Manage recording": "Gerenciar gravação",
+ "Manic Heart": "Coração Maníaco",
+ "Manifest URL": "URL do manifesto",
+ "Manifest URL copied": "URL do manifesto copiada",
+ "Manual deploy with wrangler": "Deploy manual com wrangler",
+ "Manual mode: clicking Play opens the source picker here.": "Modo manual: clicar em Reproduzir abre o seletor de fontes aqui.",
+ "Manual picker": "Seletor manual",
+ "Maps HDR down to SDR with bt.2446a. Works on any display. Pick this if HDR looks washed-out or grey.": "Converte HDR para SDR com bt.2446a. Funciona em qualquer tela. Escolha esta opção se o HDR parecer lavado ou acinzentado.",
+ "Maps HDR sources to SDR using bt.2446a. Recommended on SDR displays.": "Converte fontes HDR para SDR usando bt.2446a. Recomendado para telas SDR.",
+ "Mark season as unwatched": "Marcar temporada como não assistida",
+ "Mark season as watched": "Marcar temporada como assistida",
+ "Mark watched": "Marcar como assistido",
+ "Mark watched button": "Botão marcar como assistido",
+ "Mark watched on Trakt": "Marcar como assistido no Trakt",
+ "Marked watched": "Marcado como assistido",
+ "Marks movies and shows across Home, the catalogs, and detail pages when a matching file already exists in your local library.": "Marca filmes e séries na Início, nos catálogos e nas páginas de detalhes quando já existe um arquivo correspondente na sua biblioteca local.",
+ "Martial Grace": "Graça Marcial",
+ "Master Class": "Aula Magistral",
+ "Match EPG": "Corresponder EPG",
+ "Match EPG channel": "Corresponder canal do EPG",
+ "Match the picture quality to your computer, smooth out weak connections, and fine-tune the mpv engine with plain-language controls.": "Ajuste a qualidade da imagem ao seu computador, suavize conexões fracas e refine o mecanismo mpv com controles em linguagem simples.",
+ "Match with TMDB": "Corresponder com o TMDB",
+ "Matched": "Correspondido",
+ "Max badges per card": "Máximo de selos por card",
+ "Maximalist Musicals": "Musicais Maximalistas",
+ "Maximum quality": "Qualidade máxima",
+ "MDBList": "MDBList",
+ "MDBList · Letterboxd and Trakt scores": "MDBList · Notas do Letterboxd e do Trakt",
+ "mdblist api key": "chave de API do mdblist",
+ "MDBList's aggregate score across all sources.": "Pontuação agregada do MDBList entre todas as fontes.",
+ "Media": "Mídia",
+ "Media type": "Tipo de mídia",
+ "Media types": "Tipos de mídia",
+ "Men of History": "Homens da História",
+ "Merged": "Mesclado",
+ "Message": "Mensagem",
+ "Metacritic": "Metacritic",
+ "Metadata language": "Idioma dos metadados",
+ "Metadata providers": "Provedores de metadados",
+ "Metascore": "Metascore",
+ "Metascore (0-100), colored green / yellow / red.": "Metascore (0-100), colorido em verde / amarelo / vermelho.",
+ "Mexico": "México",
+ "Midday Lineup": "Programação do Meio-dia",
+ "Middle-earth Maker": "Criador da Terra Média",
+ "min": "min",
+ "Mind Benders": "Filmes de Torcer a Mente",
+ "Mind-benders": "Filmes de torcer a mente",
+ "Mirror plays + ratings to Trakt.tv. Uses Trakt's device flow: enter a short code in your browser.": "Espelhe reproduções e avaliações no Trakt.tv. Usa o fluxo de dispositivo do Trakt: digite um código curto no seu navegador.",
+ "Missing TMDB Key": "Chave do TMDB Ausente",
+ "Mix surround sound down to stereo": "Converter som surround para estéreo",
+ "Mob & Cops": "Máfia e Policiais",
+ "Mob Cinema": "Cinema de Máfia",
+ "Mode": "Modo",
+ "Model": "Modelo",
+ "Modern (Spline)": "Moderno (Spline)",
+ "Modern Classics": "Clássicos Modernos",
+ "Modern Explorer": "Explorador Moderno",
+ "Modern Frights": "Terrores Modernos",
+ "Modern Horror": "Terror Moderno",
+ "Modern Mysteries": "Mistérios Modernos",
+ "Modern Romance": "Romance Moderno",
+ "Modern Saddles": "Faroeste Moderno",
+ "Modern Sci-Fi": "Ficção Científica Moderna",
+ "Modern Warfare": "Guerra Moderna",
+ "More": "Mais",
+ "More {category}": "Mais {category}",
+ "More actions": "Mais ações",
+ "More avatars coming soon": "Mais avatares em breve",
+ "more events": "mais eventos",
+ "More for {name}": "Mais de {name}",
+ "More from a Favorite Director": "Mais de um Diretor Favorito",
+ "More info": "Mais informações",
+ "More like this": "Mais como este",
+ "More Like This": "Mais como este",
+ "More Movies": "Mais filmes",
+ "More of what you love.": "Mais do que você ama.",
+ "More Series": "Mais séries",
+ "More soon": "Mais em breve",
+ "More stories like these": "Mais histórias como essas",
+ "More subtitle options": "Mais opções de legenda",
+ "More to explore": "Mais para explorar",
+ "Morning Lineup": "Programação da Manhã",
+ "Most common cause: this account is at its max simultaneous connections. Close other devices and players using these credentials.": "Causa mais comum: esta conta atingiu o limite de conexões simultâneas. Feche outros dispositivos e players usando essas credenciais.",
+ "Most computers · the default": "A maioria dos computadores · o padrão",
+ "Most Popular on MAL": "Mais Populares no MAL",
+ "Most popular performers right now": "Artistas mais populares no momento",
+ "Most starred in 24 hours": "Mais estrelados em 24 horas",
+ "Most-anticipated upcoming releases on Trakt": "Lançamentos mais aguardados no Trakt",
+ "Motion smoothing": "Suavização de movimento",
+ "Move down": "Mover para baixo",
+ "Move to next slot": "Mover para o próximo slot",
+ "Move to previous slot": "Mover para o slot anterior",
+ "Move to top": "Mover para o topo",
+ "Move up": "Mover para cima",
+ "Move your watchlist": "Mova sua lista de interesse",
+ "Movie": "Filme",
+ "Movie Magic": "Magia do Cinema",
+ "Movie's too new": "O filme é muito recente",
+ "Movie's too new. Subtitles haven't been published yet.": "O filme é muito recente. As legendas ainda não foram publicadas.",
+ "movies": "filmes",
+ "Movies": "Filmes",
+ "Movies · {n}": "Filmes · {n}",
+ "Movies & Specials": "Filmes e especiais",
+ "Movies & TV": "Filmes e séries",
+ "Movies and shows with a future release date stop appearing in the built-in home catalog rows, so Home only shows what you can watch right now.": "Filmes e séries com data de lançamento futura deixam de aparecer nas linhas de catálogo padrão da Início, então a Início mostra apenas o que você pode assistir agora.",
+ "Movies on {name}": "Filmes em {name}",
+ "Movies you've finished and shows in progress leave the catalog rows. Continue Watching is never touched.": "Filmes que você terminou e séries em andamento saem das linhas de catálogo. Continuar Assistindo nunca é alterado.",
+ "Movies you've watched and shows you've made progress on stop appearing in the built-in catalog rows, using your local watch history (and Trakt if connected). Continue Watching is never touched.": "Filmes que você já assistiu e séries com progresso deixam de aparecer nas linhas de catálogo padrão, usando seu histórico local (e o Trakt, se conectado). Continuar Assistindo nunca é alterado.",
+ "Movies you've watched and shows you've made progress on stop appearing in the built-in Discover rows, using your Trakt history. Needs Trakt connected. Continue Watching is never touched.": "Filmes que você assistiu e séries com progresso deixam de aparecer nas fileiras de Descobrir integradas, usando seu histórico do Trakt. Requer o Trakt conectado. Continuar Assistindo nunca é alterado.",
+ "mpv": "mpv",
+ "MPV (native, recommended)": "MPV (nativo, recomendado)",
+ "mpv is required for recording. Install mpv and restart Harbor.": "o mpv é necessário para gravação. Instale o mpv e reinicie o Harbor.",
+ "mpv on the desktop app, HTML5 in the browser. The right engine without thinking about it.": "mpv no app desktop, HTML5 no navegador. O motor certo sem você precisar pensar nisso.",
+ "Much better": "Muito melhor",
+ "Much worse": "Muito pior",
+ "Multi-view": "Multivisualização",
+ "Multiview": "Multivisualização",
+ "Music": "Música",
+ "Music Documentaries": "Documentários Musicais",
+ "Music Films": "Filmes Musicais",
+ "Music Roles": "Papéis Musicais",
+ "Must Protect": "Deve Proteger",
+ "Mute": "Silenciar",
+ "Mute · M": "Silenciar · M",
+ "Mute or unmute audio.": "Ativar ou desativar o áudio.",
+ "Mute trailer": "Silenciar trailer",
+ "Muted": "Silenciado",
+ "My": "Meu",
+ "My library": "Minha biblioteca",
+ "My Library": "Minha Biblioteca",
+ "My Library shows upcoming episodes from the shows you've saved on Stremio. Sign in to wire it up.": "Minha Biblioteca mostra os próximos episódios das séries que você salvou no Stremio. Faça login para configurar.",
+ "My list": "Minha lista",
+ "My playlist": "Minha playlist",
+ "My provider": "Meu provedor",
+ "My Simkl": "Meu Simkl",
+ "My Trakt": "Meu Trakt",
+ "My Trakt watchlist": "Minha lista de interesse do Trakt",
+ "My Trakt watchlist updates": "Atualizações da minha watchlist do Trakt",
+ "My Watchlist": "Minha Watchlist",
+ "MyAnimeList": "MyAnimeList",
+ "MyAnimeList scores for anime titles.": "Notas do MyAnimeList para títulos de anime.",
+ "MyAnimeList scores for anime titles. RPDB doesn't cover anime, so this stays an opt-in.": "Notas do MyAnimeList para títulos de anime. O RPDB não cobre anime, então isso continua opcional.",
+ "MyAnimeList scores for anime titles. RPDB doesn't cover anime, so this stays optional.": "Notas do MyAnimeList para títulos de anime. O RPDB não cobre anime, então isso permanece opcional.",
+ "Mystery": "Mistério",
+ "Name": "Nome",
+ "Name (optional)": "Nome (opcional)",
+ "name it Harbor, hit": "nomeie-o como Harbor, clique em",
+ "Name your first template": "Dê um nome ao seu primeiro modelo",
+ "Name your look": "Dê um nome ao seu visual",
+ "Names behind the biggest productions": "Nomes por trás das maiores produções",
+ "Native libmpv": "libmpv nativo",
+ "Native webview playback. Smooth and integrated, but limited codec coverage.": "Reprodução nativa via webview. Suave e integrada, mas com cobertura limitada de codecs.",
+ "Native/Japanese": "Nativo/Japonês",
+ "Nature Films": "Filmes de Natureza",
+ "nav.addons": "Extensões",
+ "nav.anime": "Animes",
+ "nav.calendar": "Calendário",
+ "nav.collections": "Coleções",
+ "nav.discover": "Descobrir",
+ "nav.downloads": "Downloads",
+ "nav.home": "Início",
+ "nav.kids": "Infantil",
+ "nav.library": "Minha Biblioteca",
+ "nav.live": "TV ao Vivo",
+ "nav.movies": "Filmes",
+ "nav.playlists": "Playlists",
+ "nav.settings": "Configurações",
+ "nav.shows": "Séries",
+ "Navigation": "Navegação",
+ "NAVIGATION": "NAVEGAÇÃO",
+ "Needs artwork-rich titles to feed the hero": "Precisa de títulos com bastante arte para alimentar o destaque",
+ "Needs at least 10 titles for the Top 10 look": "Precisa de pelo menos 10 títulos para o visual Top 10",
+ "Neo-Noir": "Neo-Noir",
+ "Netflix Originals": "Originais Netflix",
+ "Network": "Rede",
+ "Networks": "Redes",
+ "Never auto-select tracks containing": "Nunca selecionar automaticamente faixas contendo",
+ "Nevermind": "Deixa pra lá",
+ "New": "Novo",
+ "New Anime Releases": "Novos Lançamentos de Anime",
+ "New episode released since you last watched": "Novo episódio lançado desde a última vez que você assistiu",
+ "New Face": "Novo Rosto",
+ "New filter": "Novo filtro",
+ "New hover style": "Novo estilo de hover",
+ "New layout": "Novo layout",
+ "New look name": "Novo nome do visual",
+ "New profile": "Novo perfil",
+ "New rule": "Nova regra",
+ "New shows and anime premiering this month, from Simkl": "Novas séries e animes estreando este mês, via Simkl",
+ "New template name": "Novo nome do modelo",
+ "New thread": "Novo tópico",
+ "New Webhook": "Novo webhook",
+ "New Year, New Stories": "Ano Novo, Novas Histórias",
+ "Newest": "Mais recentes",
+ "Next": "Próximo",
+ "Next {time}": "Próximo {time}",
+ "Next episode": "Próximo episódio",
+ "Next Episode": "Próximo episódio",
+ "Next episode prompt": "Aviso de próximo episódio",
+ "Next featured": "Próximo destaque",
+ "Next frame": "Próximo quadro",
+ "Next image": "Próxima imagem",
+ "Next month": "Próximo mês",
+ "Next review": "Próxima avaliação",
+ "next to it:": "ao lado dele:",
+ "next week": "na próxima semana",
+ "Next-up episodes tab": "Aba de próximos episódios",
+ "Next:": "Próximo:",
+ "Night mode": "Modo noturno",
+ "Night mode gently compresses loud moments for late-night watching. Profiles take effect when the next track loads and stack with the normalizer.": "O modo noturno comprime suavemente momentos altos para assistir tarde da noite. Os perfis entram em vigor quando a próxima faixa carrega e se combinam com o normalizador.",
+ "Night Owl": "Coruja Noturna",
+ "Nightmare Maker": "Criador de Pesadelos",
+ "No": "Não",
+ "No .nfo files detected. TMDB matching is recommended.": "Nenhum arquivo .nfo detectado. Recomenda-se a correspondência via TMDB.",
+ "No .nfo files here": "Nenhum arquivo .nfo aqui",
+ "No {kind} releases this month. Try a different filter.": "Nenhum lançamento de {kind} este mês. Tente outro filtro.",
+ "No addons are synced to this account yet.": "Nenhum addon sincronizado com esta conta ainda.",
+ "No addons installed yet": "Nenhum addon instalado ainda",
+ "No art": "Sem arte",
+ "No audio: this stream's audio format (likely Dolby or DTS) is not supported by the HTML5 engine.": "Sem áudio: o formato de áudio deste stream (provavelmente Dolby ou DTS) não é suportado pelo mecanismo HTML5.",
+ "No automations yet. Hit New rule to wire one up.": "Nenhuma automação ainda. Toque em Nova regra para criar uma.",
+ "No background image": "Nenhuma imagem de fundo",
+ "No backups yet. Press the button above to save your first one.": "Nenhum backup ainda. Pressione o botão acima para salvar o primeiro.",
+ "No categories match": "Nenhuma categoria corresponde",
+ "no channel": "sem canal",
+ "No channels match": "Nenhum canal corresponde",
+ "No channels match. Try a different category or clear the search.": "Nenhum canal corresponde. Tente outra categoria ou limpe a busca.",
+ "No Chromecast, DLNA, or Roku devices found. Make sure your TV is on, woken up, and on the same Wi-Fi.": "Nenhum dispositivo Chromecast, DLNA ou Roku encontrado. Certifique-se de que sua TV está ligada, ativa e na mesma rede Wi-Fi.",
+ "No Cloudflare accounts found for this token.": "Nenhuma conta Cloudflare encontrada para este token.",
+ "No comments yet": "Nenhum comentário ainda",
+ "No corrupted anime found. You're clean.": "Nenhum anime corrompido encontrado. Está tudo certo.",
+ "No credits available": "Nenhum crédito disponível",
+ "No data shipped for this award yet.": "Nenhum dado disponível para este prêmio ainda.",
+ "No data shipped for this award yet. Re-run": "Nenhum dado disponível para este prêmio ainda. Execute novamente",
+ "No date": "Sem data",
+ "No debrid configured": "Nenhum debrid configurado",
+ "No description available.": "Nenhuma descrição disponível.",
+ "No dot, just the bar.": "Sem ponto, só a barra.",
+ "No downloads yet": "Ainda sem downloads",
+ "No EPG channels match. This playlist's EPG source may be empty.": "Nenhum canal do EPG corresponde. A fonte de EPG desta playlist pode estar vazia.",
+ "No episodes available for this season.": "Nenhum episódio disponível para esta temporada.",
+ "No episodes found for this season.": "Nenhum episódio encontrado para esta temporada.",
+ "No episodes match your search": "Nenhum episódio corresponde à sua busca",
+ "No events available yet.": "Nenhum evento disponível ainda.",
+ "No favorites yet. Star a channel to pin it here.": "Nenhum favorito ainda. Marque um canal com estrela para fixá-lo aqui.",
+ "No filmography on record.": "Nenhuma filmografia registrada.",
+ "No films found in this collection.": "Nenhum filme encontrado nesta coleção.",
+ "No filter. All bitrates considered equally.": "Sem filtro. Todas as taxas de bits são consideradas igualmente.",
+ "No filter. Home shows every language.": "Sem filtro. A Início mostra todos os idiomas.",
+ "No filtering": "Sem filtragem",
+ "No filtering. Every stream every addon returns shows up, including obvious junk. You'll be on your own.": "Sem filtragem. Todos os streams retornados por qualquer addon aparecem, inclusive lixo óbvio. Você estará por sua conta.",
+ "No frames stored yet. They'll appear here as you watch things.": "Ainda nenhum quadro armazenado. Eles aparecerão aqui conforme você assiste.",
+ "No Frills": "Sem Frescura",
+ "No history yet": "Nenhum histórico ainda",
+ "No history yet.": "Ainda sem histórico.",
+ "No installed addon matches that.": "Nenhum addon instalado corresponde a isso.",
+ "No Integrations option? You need the Manage Webhooks permission. Ask whoever owns the server.": "Sem a opção Integrações? Você precisa da permissão Gerenciar Webhooks. Peça a quem for dono do servidor.",
+ "No limit": "Sem limite",
+ "No lists saved yet.": "Nenhuma lista salva ainda.",
+ "No lists yet": "Nenhuma lista ainda",
+ "No live or upcoming games right now.": "Nenhum jogo ao vivo ou próximo no momento.",
+ "No local episodes in this season.": "Nenhum episódio local nesta temporada.",
+ "No locks. All sidebar tabs open without a PIN.": "Sem bloqueios. Todas as abas da barra lateral abrem sem PIN.",
+ "No matches": "Nenhum resultado",
+ "No matches for \\": "Nenhum resultado para \\",
+ "No matches for these filters.": "Nenhum resultado para estes filtros.",
+ "No matches.": "Nenhum resultado.",
+ "No matches. Try a different search.": "Nenhum resultado. Tente outra busca.",
+ "No more found for this category.": "Nenhum outro encontrado para esta categoria.",
+ "No movies here.": "Nenhum filme aqui.",
+ "No notes were published for this build.": "Nenhuma nota foi publicada para esta versão.",
+ "No picks loaded. TMDB might be unreachable.": "Nenhuma seleção carregada. O TMDB pode estar inacessível.",
+ "No PIN set.": "Nenhum PIN definido.",
+ "No playable streams turned up, and no debrid is configured. Real-Debrid, TorBox, AllDebrid, Premiumize, or Debrid-Link will unlock raw torrent results. Some addons bake debrid in (Sootio, Comet/ElfHosted, MediaFusion/ElfHosted) and play without your own keys.": "Nenhum stream reproduzível apareceu, e nenhum debrid está configurado. Real-Debrid, TorBox, AllDebrid, Premiumize ou Debrid-Link desbloqueiam os resultados brutos de torrent. Alguns addons já vêm com debrid embutido (Sootio, Comet/ElfHosted, MediaFusion/ElfHosted) e funcionam sem suas próprias chaves.",
+ "No playlist": "Nenhuma playlist",
+ "No program info": "Nenhuma informação de programa",
+ "No program info available": "Nenhuma informação de programa disponível",
+ "No reviews from your friends for this film.": "Nenhuma avaliação de seus amigos para este filme.",
+ "No reviews yet.": "Nenhuma avaliação ainda.",
+ "No saved filters yet. Hit New filter to build one.": "Nenhum filtro salvo ainda. Toque em Novo filtro para criar um.",
+ "No services reported.": "Nenhum serviço reportado.",
+ "No shows here.": "Nenhuma série aqui.",
+ "No Simkl history yet.": "Ainda sem histórico no Simkl.",
+ "No Simkl premieres this month": "Nenhuma estreia no Simkl este mês",
+ "No source returned a stream": "Nenhuma fonte retornou um stream",
+ "No sources": "Nenhuma fonte",
+ "No sources cached": "Nenhuma fonte em cache",
+ "No sources found for this episode.": "Nenhuma fonte encontrada para este episódio.",
+ "No sources loaded for this title yet.": "Nenhuma fonte carregada para este título ainda.",
+ "No streaming sources yet": "Ainda sem fontes de streaming",
+ "No styling": "Sem estilo",
+ "No subscription needed. Quality varies.": "Não é necessária assinatura. A qualidade varia.",
+ "No subtitle cues available": "Nenhuma legenda disponível",
+ "No subtitles found yet. Try the search at the bottom.": "Ainda nenhuma legenda encontrada. Tente a busca abaixo.",
+ "No subtitles found.": "Nenhuma legenda encontrada.",
+ "no tab locks": "sem bloqueios de aba",
+ "No tabs selected": "Nenhuma aba selecionada",
+ "No telemetry, no servers, no bundled keys.": "Sem telemetria, sem servidores, sem chaves embutidas.",
+ "No threads for this title yet.": "Nenhum tópico para este título ainda.",
+ "No titles found for {genre}": "Nenhum título encontrado para {genre}",
+ "No tracks match these filters. Try toggling HI/SDH or Forced.": "Nenhuma faixa corresponde a esses filtros. Tente alternar HI/SDH ou Forçada.",
+ "No unsaved changes": "Nenhuma alteração não salva",
+ "No velocity data yet": "Nenhum dado de velocidade ainda",
+ "No video files found in that folder.": "Nenhum arquivo de vídeo encontrado nessa pasta.",
+ "No videos right now. Ask a grown-up!": "Nenhum vídeo no momento. Peça a um adulto!",
+ "No Way Out": "Sem Saída",
+ "No winners are catalogued for this award yet.": "Nenhum vencedor catalogado para este prêmio ainda.",
+ "No winners match these filters.": "Nenhum vencedor corresponde a estes filtros.",
+ "nodes": "nós",
+ "Noir cards": "Cartões noir",
+ "nomination": "indicação",
+ "nominations": "indicações",
+ "Nominee": "Indicado",
+ "None": "Nenhum",
+ "None of Trakt's most-anticipated upcoming releases land in this month. Try a different month.": "Nenhum dos lançamentos mais aguardados do Trakt cai neste mês. Tente outro mês.",
+ "None yet": "Nenhum ainda",
+ "Nord sidebar": "Barra lateral Nord",
+ "Normal": "Normal",
+ "Normalize loudness": "Normalizar volume",
+ "Norwegian": "Norueguês",
+ "not downloaded": "não baixado",
+ "Not interested": "Não tenho interesse",
+ "Not officially released yet. Click to search anyway in case of an early release.": "Ainda não lançado oficialmente. Clique para buscar mesmo assim, caso haja um lançamento antecipado.",
+ "Not out yet": "Ainda não lançado",
+ "Not rated": "Sem classificação",
+ "Not running": "Não está em execução",
+ "Not signed in": "Não conectado",
+ "Note the URL Cloudflare returns. It looks like": "Anote a URL que o Cloudflare retorna. Ela se parece com",
+ "Note the URL Cloudflare returns. It looks like {code}.": "Anote a URL que o Cloudflare retorna. Ela se parece com {code}.",
+ "Nothing anticipated this month": "Nada aguardado este mês",
+ "Nothing changes until you press Save. Leaving this page discards edits.": "Nada muda até você pressionar Salvar. Sair desta página descarta as edições.",
+ "Nothing from your library lands this month. Toggle Watchlist off to see all releases.": "Nada da sua biblioteca cai neste mês. Desative a Watchlist para ver todos os lançamentos.",
+ "Nothing from your library this month": "Nada da sua biblioteca este mês",
+ "Nothing here yet": "Ainda nada por aqui",
+ "Nothing here yet!": "Nada por aqui ainda!",
+ "Nothing in progress yet. Press Play on something.": "Nada em andamento ainda. Aperte Play em algo.",
+ "Nothing matched this filter. Try another category or change your region in Settings.": "Nada corresponde a este filtro. Tente outra categoria ou mude sua região nas Configurações.",
+ "Nothing matched. Try the franchise's first film name.": "Nada correspondeu. Tente o nome do primeiro filme da franquia.",
+ "Nothing on Simkl this month": "Nada no Simkl este mês",
+ "Nothing on Trakt this month": "Nada no Trakt este mês",
+ "Nothing on your Simkl plan-to-watch yet.": "Ainda nada na sua lista de planejados do Simkl.",
+ "Nothing saved on Trakt yet.": "Ainda nada salvo no Trakt.",
+ "Nothing this month": "Nada este mês",
+ "Nothing to send. All {n} watchlist items are anime, which Trakt can't track.": "Nada para enviar. Todos os {n} itens da watchlist são animes, que o Trakt não consegue rastrear.",
+ "Nothing watched yet": "Nada assistido ainda",
+ "Notifications": "Notificações",
+ "Now": "Agora",
+ "Now playing": "Tocando agora",
+ "Now Playing": "Tocando Agora",
+ "Now playing: {label}": "Tocando agora: {label}",
+ "Now using": "Usando agora",
+ "Now watching": "Assistindo agora",
+ "Now-playing and a seven-day guide when your provider supplies it.": "Programação atual e um guia de sete dias quando seu provedor fornece.",
+ "NSFW. Hidden until enabled.": "Conteúdo adulto. Oculto até ser ativado.",
+ "Nudge the image to taste. Start with a one-tap look below, then fine-tune with the dials. Everything resets cleanly, so you can't break anything.": "Ajuste a imagem ao seu gosto. Comece com um visual pronto abaixo e depois refine com os controles. Tudo pode ser redefinido sem problemas, então você não vai estragar nada.",
+ "Number 1 gets asked first for streams when you press Play.": "O número 1 é consultado primeiro por streams quando você aperta Play.",
+ "Nvidia only": "Somente Nvidia",
+ "Off": "Desativado",
+ "Off · catalogs and streams hidden": "Desativado · catálogos e streams ocultos",
+ "Off (use CPU)": "Desativado (usar CPU)",
+ "Offensive Rebounds": "Rebotes Ofensivos",
+ "Official": "Oficial",
+ "Offsides": "Impedimentos",
+ "OK": "OK",
+ "Old-school Heat": "Calor à Moda Antiga",
+ "Older laptops · low-end · battery · anything that stutters": "Laptops mais antigos · básicos · bateria · qualquer coisa que trava",
+ "Oldest": "Mais antigos",
+ "OMDb · Rotten Tomatoes scores": "OMDb · Notas do Rotten Tomatoes",
+ "OMDB daily budget": "Orçamento diário do OMDB",
+ "On": "Ativado",
+ "On an HDR display, stretches normal (non-HDR) movies to use the extra brightness range. Leave off on a regular screen; it can look washed out.": "Em uma tela HDR, expande filmes normais (não-HDR) para usar a faixa extra de brilho. Deixe desativado em uma tela comum; pode ficar com aparência lavada.",
+ "On by default. Pipes every cast through ffmpeg as H.264 + AAC + MPEG-TS so Samsung, LG, Sony, and other DLNA TVs accept the stream regardless of source codec. Turn off only if you have a beefy receiver that handles raw HEVC/DTS and want max quality. Requires ffmpeg in PATH.": "Ativado por padrão. Envia toda transmissão pelo ffmpeg como H.264 + AAC + MPEG-TS para que TVs Samsung, LG, Sony e outras DLNA aceitem o stream independentemente do codec de origem. Desative apenas se você tiver um receiver potente que lida com HEVC/DTS bruto e quiser qualidade máxima. Requer ffmpeg no PATH.",
+ "On Cloudflare, click {b1}, then find {b2} and click {b3}.": "No Cloudflare, clique em {b1}, depois encontre {b2} e clique em {b3}.",
+ "on disk": "no disco",
+ "On Edge": "No Limite",
+ "ON GOAL": "NO GOL",
+ "On Hold": "Em Espera",
+ "On now": "No ar agora",
+ "On shows titles in your metadata language (English by default). Off keeps each title's original language, so anime and foreign films show their native names.": "Ativado mostra títulos no idioma dos seus metadados (inglês por padrão). Desativado mantém o idioma original de cada título, então animes e filmes estrangeiros mostram seus nomes nativos.",
+ "On Stremio-Addons": "No Stremio-Addons",
+ "On Target %": "% no Alvo",
+ "on the {themeName} theme.": "no tema {themeName}.",
+ "On The Air": "No Ar",
+ "On the card": "No card",
+ "on the left, then": "à esquerda, depois",
+ "On the web, Harbor can only reach addons that allow browser access (Torrentio, TorBox, Cinemeta). For unreleased titles, no source typically exists yet.": "Na web, o Harbor só consegue acessar addons que permitem acesso pelo navegador (Torrentio, TorBox, Cinemeta). Para títulos ainda não lançados, geralmente nenhuma fonte existe ainda.",
+ "On this computer": "Neste computador",
+ "On this device": "Neste dispositivo",
+ "On this device only": "Somente neste dispositivo",
+ "On this page": "Nesta página",
+ "On Tonight": "Hoje à Noite",
+ "On: addon rails that duplicate the built-ins show too, instead of folding into one.": "Ativado: fileiras de addons que duplicam as integradas também aparecem, em vez de se fundirem em uma só.",
+ "On: only titles you bookmarked. Off: also keeps the ones Stremio added when you hit play.": "Ativado: apenas títulos que você salvou. Desativado: também mantém os que o Stremio adicionou quando você deu play.",
+ "Onboarding": "Integração",
+ "Once you're in a room you can copy a link that joins anyone instantly: it sets the relay URL and the room code in one click.": "Depois de entrar em uma sala, você pode copiar um link que junta qualquer pessoa instantaneamente: ele define a URL do relay e o código da sala em um clique.",
+ "One choice that sets how hard your computer works to make video look its best. Pick the one that matches your machine. Takes effect on the next thing you play.": "Uma escolha que define o quanto seu computador trabalha para deixar o vídeo com a melhor aparência. Escolha a que combina com sua máquina. Terá efeito na próxima reprodução.",
+ "One last thing on Cloudflare's side": "Mais uma coisa do lado do Cloudflare",
+ "One list": "Uma lista",
+ "One more episode": "Mais um episódio",
+ "Only 1 source after filtering": "Apenas 1 fonte após a filtragem",
+ "Only 2 sources after filtering": "Apenas 2 fontes após a filtragem",
+ "Only enter URLs for relays you operate or trust. A relay only carries Watch Together sync messages (play, pause, seek). Nothing else passes through it.": "Insira apenas URLs de relays que você opera ou confia. Um relay só transporta mensagens de sincronização do Watch Together (play, pause, avançar). Nada mais passa por ele.",
+ "Only my favorited channels": "Somente meus canais favoritos",
+ "Only show streams in my languages": "Mostrar apenas streams nos meus idiomas",
+ "Only show titles in these original languages on the Home catalogs. Leave all off to show everything.": "Mostrar apenas títulos nesses idiomas originais nos catálogos da Início. Deixe tudo desativado para mostrar todos.",
+ "Only the primary profile can edit other profiles.": "Somente o perfil principal pode editar outros perfis.",
+ "Opacity": "Opacidade",
+ "Open": "Abrir",
+ "Open {name}": "Abrir {name}",
+ "Open a quick issue": "Abrir uma issue rápida",
+ "Open AniList again": "Abrir AniList novamente",
+ "Open any movie or show, hover an episode, and click the download icon. Pick the exact source you want and it saves here for offline watching.": "Abra qualquer filme ou série, passe o mouse sobre um episódio e clique no ícone de download. Escolha a fonte exata que quiser e ela será salva aqui para assistir offline.",
+ "Open BotFather": "Abrir BotFather",
+ "Open Cloudflare token page": "Abrir página de token do Cloudflare",
+ "Open Cloudflare Workers": "Abrir Cloudflare Workers",
+ "Open details": "Abrir detalhes",
+ "Open Discord's webhook help": "Abrir ajuda de webhook do Discord",
+ "Open folder": "Abrir pasta",
+ "Open in Anime": "Abrir em Animes",
+ "Open in Movies": "Abrir em Filmes",
+ "Open in TV Shows": "Abrir em Séries",
+ "Open invite link panel": "Abrir painel do link de convite",
+ "Open library": "Abrir biblioteca",
+ "Open Library settings": "Abrir configurações da Biblioteca",
+ "Open MyAnimeList again": "Abrir MyAnimeList novamente",
+ "Open on AniList": "Abrir no AniList",
+ "Open on IMDb": "Abrir no IMDb",
+ "Open on Letterboxd": "Abrir no Letterboxd",
+ "Open on Trakt": "Abrir no Trakt",
+ "Open or close the episode panel.": "Abrir ou fechar o painel de episódios.",
+ "Open or close the in-player stream switcher.": "Abrir ou fechar o seletor de streams no player.",
+ "Open or close the live TV guide (live channels only).": "Abrir ou fechar o guia de TV ao vivo (somente canais ao vivo).",
+ "Open or close the live TV recorder (live channels only).": "Abrir ou fechar o gravador de TV ao vivo (somente canais ao vivo).",
+ "Open preview": "Abrir pré-visualização",
+ "Open profile": "Abrir perfil",
+ "Open Range": "Faixa Aberta",
+ "Open relay settings": "Abrir configurações do relay",
+ "Open repo on GitHub": "Abrir repositório no GitHub",
+ "Open review source": "Abrir fonte da avaliação",
+ "Open settings": "Abrir configurações",
+ "Open Settings": "Abrir Configurações",
+ "Open Settings, then Harbor Relay.": "Abra Configurações e depois Harbor Relay.",
+ "Open setup page": "Abrir página de configuração",
+ "Open Stremio registration": "Abrir cadastro do Stremio",
+ "Open studio": "Abrir estúdio",
+ "Open SVP": "Abrir SVP",
+ "Open the bot BotFather just made (he sends you a link). Send it any message so it's allowed to message you back.": "Abra o bot que o BotFather acabou de criar (ele te envia um link). Mande qualquer mensagem para ele poder responder.",
+ "Open the Day": "Abrir o Dia",
+ "Open the Discord server where you want notifications to land.": "Abra o servidor do Discord onde você quer que as notificações cheguem.",
+ "Open Top 100 {dept}": "Abrir Top 100 {dept}",
+ "Open userinfobot": "Abrir userinfobot",
+ "Opening AniList...": "Abrindo AniList...",
+ "Opening MyAnimeList...": "Abrindo MyAnimeList...",
+ "Opening stremio-addons.net in your browser to sign in and rate": "Abrindo stremio-addons.net no seu navegador para entrar e avaliar",
+ "OpenRouter API key (sk-or-...)": "Chave de API do OpenRouter (sk-or-...)",
+ "Opens Stremio in your browser. Works with email, Facebook, and Apple accounts.": "Abre o Stremio no seu navegador. Funciona com contas de e-mail, Facebook e Apple.",
+ "Optional": "Opcional",
+ "Optional keys that unlock TMDB rails, baked-in poster ratings, fanart, and TVDB episode data.": "Chaves opcionais que desbloqueiam trilhas do TMDB, avaliações de pôster embutidas, fanart e dados de episódios do TVDB.",
+ "Options": "Opções",
+ "Options for the Library → Local tab: folders you scan from your own drive. When you export metadata, Harbor writes a Kodi-style .nfo and downloads artwork next to each file at the sizes below.": "Opções para a aba Biblioteca → Local: pastas que você escaneia do seu próprio disco. Ao exportar metadados, o Harbor grava um .nfo estilo Kodi e baixa artes ao lado de cada arquivo nos tamanhos abaixo.",
+ "or join": "ou entrar em",
+ "or paste an invite link": "ou cole um link de convite",
+ "Or paste the install link manually": "Ou cole o link de instalação manualmente",
+ "or use email": "ou use e-mail",
+ "or use one of our avatars": "ou use um dos nossos avatares",
+ "Order": "Ordem",
+ "Organize addons": "Organizar addons",
+ "orig": "orig",
+ "Origin country": "País de origem",
+ "Original": "Original",
+ "Original language": "Idioma original",
+ "Original title": "Título original",
+ "Orthodox": "Ortodoxo",
+ "OTA channels + IPTV": "Canais OTA + IPTV",
+ "Other": "Outro",
+ "Other sources": "Outras fontes",
+ "Other Work": "Outros Trabalhos",
+ "out of 5": "de 5",
+ "Outlaws & Bounty Hunters": "Fora da Lei e Caçadores de Recompensas",
+ "Outline": "Contorno",
+ "Outline color": "Cor do contorno",
+ "Outline thickness": "Espessura do contorno",
+ "Output device": "Dispositivo de saída",
+ "Overall Record": "Retrospecto Geral",
+ "Overlay": "Sobreposição",
+ "Overlays your Letterboxd rating on catalog posters (when available).": "Sobrepõe sua nota do Letterboxd nos pôsteres do catálogo (quando disponível).",
+ "Override": "Substituir",
+ "Override {name}": "Substituir {name}",
+ "Override embedded styles": "Substituir estilos incorporados",
+ "Overview": "Sinopse",
+ "Overwrite {name} with this look": "Substituir {name} por este visual",
+ "P2P": "P2P",
+ "P2P sources, debrid-ready": "Fontes P2P, prontas para debrid",
+ "Paid": "Pago",
+ "Paid plan at ": "Plano pago em ",
+ "Painted Skies": "Céus Pintados",
+ "Palme d'Or": "Palma de Ouro",
+ "Panel": "Painel",
+ "Panels": "Painéis",
+ "PANELS": "PAINÉIS",
+ "Paranormal Cases": "Casos Paranormais",
+ "Parent PIN": "PIN dos pais",
+ "Parental controls are on. Enter your PIN to access settings.": "O controle parental está ativado. Digite seu PIN para acessar as configurações.",
+ "Parody Master": "Mestre da Paródia",
+ "Pass": "Senha",
+ "Pass Completion %": "% de Passes Completos",
+ "Passes": "Passes",
+ "Password": "Senha",
+ "Past Midnight": "Depois da Meia-Noite",
+ "Paste a public list from Trakt, MDBList, TMDB, Letterboxd, IMDb, or MyAnimeList. Harbor pulls the titles in and keeps the artwork sharp.": "Cole uma lista pública do Trakt, MDBList, TMDB, Letterboxd, IMDb ou MyAnimeList. O Harbor importa os títulos e mantém as artes em alta qualidade.",
+ "Paste a Trakt, MDBList, TMDB, Letterboxd, IMDb, or MAL list URL": "Cole a URL de uma lista do Trakt, MDBList, TMDB, Letterboxd, IMDb ou MAL",
+ "Paste invite link": "Cole o link de convite",
+ "Paste it into Harbor.": "Cole no Harbor.",
+ "Paste JSON": "Colar JSON",
+ "Paste manifest URL or stremio:// link": "Cole a URL do manifesto ou o link stremio://",
+ "Paste the code or page URL": "Cole o código ou a URL da página",
+ "Paste the manifest URL the configure page gave you": "Cole a URL do manifesto fornecida pela página de configuração",
+ "Paste the text from AniList": "Cole o texto do AniList",
+ "Paste the URL into the box above and send a test.": "Cole a URL na caixa acima e envie um teste.",
+ "Paste the URL with": "Cole a URL com",
+ "Paste your API token first.": "Cole seu token de API primeiro.",
+ "Pause": "Pausar",
+ "Pause · Space": "Pausar · Espaço",
+ "Pause when minimized": "Pausar ao minimizar",
+ "Pause when unfocused": "Pausar quando perder o foco",
+ "Paused": "Pausado",
+ "Paused on Simkl": "Pausado no Simkl",
+ "PDF (print)": "PDF (impressão)",
+ "peer": "peer",
+ "peers": "peers",
+ "Peers, speed and progress chip on the player during torrent playback. Turn off to keep the player clean.": "Chip com peers, velocidade e progresso no player durante a reprodução por torrent. Desative para deixar o player mais limpo.",
+ "Peers, speed and progress while a torrent streams. Sits clear of the exit button, top left.": "Peers, velocidade e progresso enquanto um torrent transmite. Fica afastado do botão de saída, no canto superior esquerdo.",
+ "Penalty Goals": "Gols de Pênalti",
+ "Penalty Kicks Taken": "Pênaltis Cobrados",
+ "Pens currently in demand": "Canetas atualmente em demanda",
+ "People": "Pessoas",
+ "People (empty = all tracked)": "Pessoas (vazio = todas rastreadas)",
+ "Percent Led": "Percentual Liderado",
+ "Period Greats": "Grandes Clássicos da Época",
+ "permissions at": "permissões em",
+ "personal key": "chave pessoal",
+ "Pick a 4-digit PIN. You'll be asked for it before this profile opens.": "Escolha um PIN de 4 dígitos. Ele será pedido antes que este perfil seja aberto.",
+ "Pick a display and body pairing, or upload your own font to use across Harbor.": "Escolha uma combinação de fonte de título e corpo de texto, ou envie sua própria fonte para usar em todo o Harbor.",
+ "Pick a home layout": "Escolha um layout para a tela inicial",
+ "Pick a layout, set colors and fonts, save it to your library. No code needed.": "Escolha um layout, defina cores e fontes, salve na sua biblioteca. Sem necessidade de código.",
+ "Pick a layout, set colors and fonts. No code needed.": "Escolha um layout, defina cores e fontes. Sem necessidade de código.",
+ "Pick a line when you hear it (1/2)": "Escolha uma fala quando ouvi-la (1/2)",
+ "Pick a list to view it.": "Escolha uma lista para visualizá-la.",
+ "Pick a look. Every color and surface updates instantly.": "Escolha uma aparência. Todas as cores e superfícies são atualizadas na hora.",
+ "Pick a PIN and which sidebar tabs require it.": "Escolha um PIN e quais abas da barra lateral vão exigi-lo.",
+ "Pick a profile to continue.": "Escolha um perfil para continuar.",
+ "Pick a random title": "Escolher um título aleatório",
+ "Pick a source once and Harbor keeps playing the rest of that season from the same release, no re-picking. Works best with a debrid season pack. Skipped for anime.": "Escolha uma fonte uma vez e o Harbor continua reproduzindo o restante da temporada a partir do mesmo lançamento, sem precisar escolher de novo. Funciona melhor com um pacote de temporada via debrid. Ignorado para animes.",
+ "Pick a theme, then rearrange every button in the player chrome. Hide what you never use, promote what you do.": "Escolha um tema e reorganize todos os botões da interface do player. Oculte o que você nunca usa, destaque o que usa.",
+ "Pick a video": "Escolha um vídeo",
+ "Pick a World": "Escolha um Mundo",
+ "Pick an avatar": "Escolha um avatar",
+ "Pick another": "Escolher outro",
+ "Pick another line near the end (2/2)": "Escolha outra fala perto do final (2/2)",
+ "Pick any name. Pick a username ending in": "Escolha qualquer nome. Escolha um nome de usuário terminando em",
+ "Pick channels into the grid below. Audio follows the highlighted tile.": "Escolha os canais na grade abaixo. O áudio segue o bloco destacado.",
+ "Pick how you authenticate. Everything is stored locally.": "Escolha como você se autentica. Tudo é armazenado localmente.",
+ "Pick it from the home view to follow.": "Escolha-o na tela inicial para acompanhar.",
+ "Pick OLED for perfect-black panels to unlock shadow detail in tonemapped HDR.": "Escolha OLED para painéis com preto perfeito e revelar detalhes de sombra no HDR com tonemapping.",
+ "Pick playlist": "Escolher playlist",
+ "Pick the cap your link can sustain. Run a real speed test if you need a number.": "Escolha o limite que sua conexão suporta. Faça um teste de velocidade real se precisar de um número.",
+ "Pick the Cloudflare account to deploy under.": "Escolha a conta do Cloudflare para fazer o deploy.",
+ "Pick the playback engine and which quality chips show up on cards.": "Escolha o mecanismo de reprodução e quais indicadores de qualidade aparecem nos cards.",
+ "Pick up an episode": "Continuar um episódio",
+ "Pick up partly-watched episodes and movies at your saved spot. Anything watched past 80% always restarts. Turn this off to always start from the beginning, handy if you rewatch shows.": "Retome episódios e filmes assistidos parcialmente do ponto salvo. Qualquer item assistido além de 80% sempre reinicia. Desative para sempre começar do início, útil se você reassiste séries.",
+ "Pick up where you left off": "Continue de onde parou",
+ "Pick what you actually use": "Escolha o que você realmente usa",
+ "Pick what you want in your calendar. Mix and match: tracked people, genres, streamers, countries, Trakt lists.": "Escolha o que aparece no seu calendário. Combine: pessoas rastreadas, gêneros, streamers, países, listas do Trakt.",
+ "Pick which audio and subtitle languages Harbor reaches for first.": "Escolha quais idiomas de áudio e legenda o Harbor prioriza primeiro.",
+ "Pick which calendars feed your alerts. Items are deduped across sources before sending.": "Escolha quais calendários alimentam seus alertas. Itens duplicados entre fontes são removidos antes do envio.",
+ "Pick which calendars feed your webhook. Items are deduped across sources before sending.": "Escolha quais calendários alimentam seu webhook. Os itens são deduplicados entre as fontes antes do envio.",
+ "Pick which score anime cards show. IMDb falls back to MAL when a title has no IMDb rating yet.": "Escolha qual nota os cards de anime mostram. O IMDb recorre ao MAL quando um título ainda não tem avaliação no IMDb.",
+ "Pick your source": "Escolha sua fonte",
+ "Pick your subtitle languages": "Escolha seus idiomas de legenda",
+ "Picker layout": "Layout do seletor",
+ "Picking…": "Escolhendo…",
+ "Picks up right where you left off": "Continua exatamente de onde você parou",
+ "Picture": "Imagem",
+ "Picture adjustments": "Ajustes de imagem",
+ "Picture in Picture": "Picture in Picture",
+ "Picture quality": "Qualidade de imagem",
+ "Picture-in-picture": "Picture-in-picture",
+ "Pilots that pull you in and finales that earn the season.": "Pilotos que prendem sua atenção e finais que fazem jus à temporada.",
+ "PIN": "PIN",
+ "PIN & sidebar locks": "PIN e bloqueios da barra lateral",
+ "Pin category to top": "Fixar categoria no topo",
+ "PIN off": "PIN desativado",
+ "PIN on": "PIN ativado",
+ "PIN set": "PIN definido",
+ "Pin to top": "Fixar no topo",
+ "Pings your Worker at /health to confirm it's reachable from this device.": "Envia um ping ao seu Worker em /health para confirmar que ele está acessível a partir deste dispositivo.",
+ "Pinned": "Fixado",
+ "PINs didn't match. Start over.": "Os PINs não coincidem. Comece de novo.",
+ "PiP": "PiP",
+ "Pitches Thrown": "Arremessos Lançados",
+ "Pixar Greats": "Grandes Clássicos da Pixar",
+ "Plain text (.txt)": "Texto simples (.txt)",
+ "Plan to Watch": "Pretendo assistir",
+ "Play": "Reproduzir",
+ "Play · Space": "Reproduzir · Espaço",
+ "Play {name}": "Reproduzir {name}",
+ "Play / pause": "Reproduzir / pausar",
+ "Play / Pause": "Reproduzir / Pausar",
+ "Play a random episode": "Reproduzir um episódio aleatório",
+ "Play button behavior": "Comportamento do botão de reprodução",
+ "Play Episode": "Reproduzir Episódio",
+ "Play local": "Reproduzir local",
+ "Play mode": "Modo de reprodução",
+ "Play movie": "Reproduzir filme",
+ "Play now": "Reproduzir agora",
+ "Play to where the ad starts and add it, then play to the end and tap Now. You can also type the times. Add more than one if there are several.": "Reproduza até onde o anúncio começa e adicione, depois reproduza até o fim e toque em Agora. Você também pode digitar os tempos. Adicione mais de um se houver vários.",
+ "Play Together": "Assistir juntos",
+ "Play tonight": "Reproduzir hoje à noite",
+ "Play without sync": "Reproduzir sem sincronização",
+ "Play, then tap the line you hear at two spots (one early, one late) to fix drift.": "Reproduza e toque na fala que você ouve em dois pontos (um cedo, um tarde) para corrigir o atraso.",
+ "Playback": "Reprodução",
+ "PLAYBACK": "REPRODUÇÃO",
+ "Playback speed": "Velocidade de reprodução",
+ "Playback speed {label}": "Velocidade de reprodução {label}",
+ "Playback stats · press I to hide": "Estatísticas de reprodução · pressione I para ocultar",
+ "Player": "Player",
+ "Player & quality": "Player e qualidade",
+ "Player engine": "Motor do player",
+ "Player freezes after the second episode autoplays": "O player congela depois que o segundo episódio inicia automaticamente",
+ "Player layout": "Layout do player",
+ "Player log": "Registro do player",
+ "Player not ready": "Player não está pronto",
+ "Player shell": "Interface do player",
+ "Player title": "Título do player",
+ "Playing": "Reproduzindo",
+ "Playing now": "Reproduzindo agora",
+ "Playlist": "Playlist",
+ "Playlist contained no channels": "A playlist não continha canais",
+ "Playlist is too large": "A playlist é muito grande",
+ "Playlist URL": "URL da playlist",
+ "Playlist URL not found": "URL da playlist não encontrada",
+ "Playlists": "Playlists",
+ "Plays + ratings sync from Harbor to Trakt.tv.": "Reproduções e avaliações são sincronizadas do Harbor para o Trakt.tv.",
+ "Plays a muted trailer in the backdrop when you open a title. Click the speaker to unmute. Falls back to the image when no trailer is available.": "Reproduz um trailer sem som no fundo quando você abre um título. Clique no alto-falante para ativar o som. Volta para a imagem quando não há trailer disponível.",
+ "Plays HDR content in its own window so Windows treats it as true HDR (the SDR brightness slider stops dimming it). Turn off HDR-to-SDR tonemapping above to use this on an HDR display.": "Reproduz conteúdo HDR em sua própria janela para que o Windows o trate como HDR verdadeiro (o controle de brilho SDR para de escurecê-lo). Desative o tonemapping de HDR para SDR acima para usar isso em uma tela HDR.",
+ "Plays HDR in its own window so Windows shows real HDR and the SDR brightness slider stops dimming it. The most reliable way to get true HDR.": "Reproduz HDR em sua própria janela para que o Windows mostre HDR real e o controle de brilho SDR pare de escurecê-lo. A forma mais confiável de obter HDR verdadeiro.",
+ "Please add your TMDB API key in the Library & Metadata settings to view this folder.": "Por favor, adicione sua chave de API do TMDB nas configurações de Biblioteca e Metadados para visualizar esta pasta.",
+ "PM Picks": "Escolhas da Tarde",
+ "PNG, GIF, WebP, or SVG. Animated GIFs play.": "PNG, GIF, WebP ou SVG. GIFs animados são reproduzidos.",
+ "PNG, JPEG, WebP, or SVG (auto-shrunk if huge). Animated GIFs up to 2 MB play live.": "PNG, JPEG, WebP ou SVG (reduzido automaticamente se for muito grande). GIFs animados de até 2 MB tocam ao vivo.",
+ "PNG, JPG, WebP, GIF, MP4, WebM, MOV. Up to 6 files, 100 MB each.": "PNG, JPG, WebP, GIF, MP4, WebM, MOV. Até 6 arquivos, 100 MB cada.",
+ "Point Harbor at a folder. We scan it for movies and shows, parse titles from filenames, and enrich them with TMDB so they look the same as everything else here. We just remember the path; nothing is copied or moved.": "Aponte o Harbor para uma pasta. Nós a escaneamos em busca de filmes e séries, extraímos os títulos dos nomes dos arquivos e os enriquecemos com o TMDB para que fiquem iguais a tudo o mais aqui. Só guardamos o caminho; nada é copiado ou movido.",
+ "Point Harbor at a streaming server on another machine, like the Stremio service on a home server. Torrents download and stream from that machine instead of this one.": "Aponte o Harbor para um servidor de streaming em outra máquina, como o serviço Stremio em um servidor doméstico. Os torrents baixam e transmitem daquela máquina em vez desta.",
+ "Points Conceded Off Turnovers": "Pontos Sofridos em Bolas Perdidas",
+ "Points in Paint": "Pontos no Garrafão",
+ "Polish": "Polonês",
+ "Pop-up position": "Posição do pop-up",
+ "Popcornmeter": "Popcornmeter",
+ "Popular": "Populares",
+ "Popular · AIO": "Populares · AIO",
+ "Popular Anime": "Animes Populares",
+ "Popular Movies": "Filmes Populares",
+ "Popular on": "Popular em",
+ "Popular Series": "Séries Populares",
+ "Popular This Week": "Populares Esta Semana",
+ "Port": "Porta",
+ "Portuguese": "Português",
+ "Position": "Posição",
+ "Position and size only": "Apenas posição e tamanho",
+ "Possession": "Posse de Bola",
+ "Possession %": "Posse de Bola %",
+ "Poster card style": "Estilo do cartão de pôster",
+ "Poster size": "Tamanho do pôster",
+ "Poster translation is disabled because a custom poster service is active.": "A tradução de pôsteres está desativada porque um serviço de pôsteres personalizado está ativo.",
+ "Posters": "Pôsteres",
+ "Posters, logos, and title art load in the first available language from this list, falling back down the order. \\": "Pôsteres, logos e arte de título carregam no primeiro idioma disponível desta lista, seguindo a ordem em caso de indisponibilidade. \\",
+ "Posters, ratings, lists": "Pôsteres, avaliações, listas",
+ "Power tools": "Ferramentas avançadas",
+ "Power tools & diagnostics": "Ferramentas avançadas e diagnósticos",
+ "Power-user knob. Inject your own CSS, JS, and HTML into Harbor. Lives in your local settings; nothing leaves your machine.": "Ajuste avançado. Injete seu próprio CSS, JS e HTML no Harbor. Fica nas suas configurações locais; nada sai da sua máquina.",
+ "Prefer embedded subtitles": "Preferir legendas incorporadas",
+ "Prefer my installed metadata addon": "Preferir meu addon de metadados instalado",
+ "Preferred language for anime titles displayed on poster cards.": "Idioma preferido para títulos de anime exibidos nos cartões de pôster.",
+ "Preferred languages": "Idiomas preferidos",
+ "Premiered This Month": "Estreou Este Mês",
+ "Premiumize API key": "Chave de API do Premiumize",
+ "Preparing": "Preparando",
+ "Preparing download": "Preparando download",
+ "Preparing stream": "Preparando stream",
+ "Preparing…": "Preparando…",
+ "Press a key…": "Pressione uma tecla…",
+ "Press Enter or Space to type": "Pressione Enter ou Espaço para digitar",
+ "Press Play": "Aperte Play",
+ "Press play on something. It'll show up here once you start watching.": "Dê play em algo. Vai aparecer aqui assim que você começar a assistir.",
+ "Press T": "Pressione T",
+ "Prestige Drama": "Drama de Prestígio",
+ "Prestige drama, weekly chapters, and series worth disappearing into.": "Drama de prestígio, capítulos semanais e séries que valem a pena se perder de vista.",
+ "Preview": "Prévia",
+ "PREVIEW": "PRÉVIA",
+ "Preview state": "Estado de pré-visualização",
+ "Previous": "Anterior",
+ "Previous channel": "Canal anterior",
+ "Previous episode": "Episódio anterior",
+ "Previous Episode": "Episódio anterior",
+ "Previous featured": "Destaque anterior",
+ "Previous frame": "Quadro anterior",
+ "Previous image": "Imagem anterior",
+ "Previous month": "Mês anterior",
+ "Previous review": "Avaliação anterior",
+ "Prime Time": "Horário Nobre",
+ "Prime Video": "Prime Video",
+ "Privacy": "Privacidade",
+ "Probably not cached. Pick another?": "Provavelmente não está em cache. Escolher outro?",
+ "Probes the server's settings endpoint from this device.": "Testa o endpoint de configurações do servidor a partir deste dispositivo.",
+ "Producers": "Produtores",
+ "Producing": "Produzindo",
+ "profile": "perfil",
+ "Profile": "Perfil",
+ "Profile details not available.": "Detalhes do perfil não disponíveis.",
+ "Profile is locked. Enter the 4-digit PIN to continue.": "O perfil está bloqueado. Digite o PIN de 4 dígitos para continuar.",
+ "Profile not found.": "Perfil não encontrado.",
+ "Profile PIN": "PIN do perfil",
+ "Profile security": "Segurança do perfil",
+ "profile.editThis": "Editar este perfil",
+ "profile.fallback": "Perfil",
+ "profile.new": "Novo perfil",
+ "profile.primary": "Principal",
+ "profile.signedIn": "Conectado ao Stremio",
+ "profile.signIn": "Entrar no Stremio",
+ "profile.signOut": "Sair do Stremio",
+ "profile.switch": "Alternar perfil",
+ "profile.whoWatching": "Quem está assistindo?",
+ "Profiles": "Perfis",
+ "Project information": "Informações do projeto",
+ "Prompts guests to choose instead of auto-matching": "Pede que os convidados escolham em vez de corresponder automaticamente",
+ "Proper search across providers, foreign-language coverage.": "Busca completa entre provedores, com cobertura de idiomas estrangeiros.",
+ "Provide a JSON link or paste it directly.": "Forneça um link JSON ou cole-o diretamente.",
+ "Provider blocked the request": "O provedor bloqueou a solicitação",
+ "Provider did not return valid data": "O provedor não retornou dados válidos",
+ "Provider is rate limiting": "O provedor está limitando a taxa de requisições",
+ "Provider refused service": "O provedor recusou o serviço",
+ "Provider returned a webpage, not a playlist": "O provedor retornou uma página web, não uma playlist",
+ "Public": "Público",
+ "Public mode uses just your username: watchlist, liked films, popular and Top 250. No password needed.": "O modo público usa apenas seu nome de usuário: watchlist, filmes curtidos, populares e Top 250. Não é preciso senha.",
+ "Pull-you-under stories for the quietest part of the day.": "Histórias que te envolvem por completo para a parte mais tranquila do dia.",
+ "Pulled from manifest": "Obtido do manifesto",
+ "Punchier color": "Cor mais vibrante",
+ "Pure Action": "Ação Pura",
+ "Push upcoming releases to Discord or Telegram. Pick which calendars feed the notifications.": "Envie os próximos lançamentos para o Discord ou Telegram. Escolha quais calendários alimentam as notificações.",
+ "Pushing {pushed} of {total}…": "Enviando {pushed} de {total}…",
+ "Quality-of-life upgrades. Sync, ratings, trailers.": "Melhorias de qualidade de vida. Sincronização, avaliações, trailers.",
+ "Queens & Icons": "Rainhas e Ícones",
+ "Queue": "Fila",
+ "Quick age check": "Verificação rápida de idade",
+ "Quick Watches Under 90": "Sessões Rápidas Abaixo de 90 Minutos",
+ "Quiet": "Silencioso",
+ "Quiet dramas, sharp thrillers, and series you save for yourself.": "Dramas tranquilos, thrillers afiados e séries que você guarda só para você.",
+ "Quiet Force": "Força Silenciosa",
+ "Quiet Hours": "Horário Silencioso",
+ "Quiet Menace": "Ameaça Silenciosa",
+ "Raise subtitles": "Elevar legendas",
+ "Raise volume (hold Shift for big steps).": "Aumentar volume (segure Shift para passos maiores).",
+ "Ramadan series, drama, films, Egyptian classics, and Gulf - all in one place.": "Séries do Ramadã, dramas, filmes, clássicos egípcios e do Golfo - tudo em um só lugar.",
+ "Random avatar": "Avatar aleatório",
+ "Rate": "Avaliar",
+ "Rate on SIMKL": "Avaliar no SIMKL",
+ "Rate on stremio-addons.net": "Avaliar em stremio-addons.net",
+ "Rate this build": "Avalie esta versão",
+ "Rate this film": "Avaliar este filme",
+ "Rating": "Avaliação",
+ "Rating /10": "Avaliação /10",
+ "Raw Nerve": "Nervos à Flor da Pele",
+ "Re-authenticate": "Reautenticar",
+ "Re-configure this addon and apply the updated link": "Reconfigure este addon e aplique o link atualizado",
+ "Re-run deploy or paste the correct URL": "Execute o deploy novamente ou cole a URL correta",
+ "Re-runs the welcome flow and clears every dismissed tip.": "Executa novamente o fluxo de boas-vindas e limpa todas as dicas dispensadas.",
+ "Reach": "Alcance",
+ "Read": "Ler",
+ "Read full": "Ler completo",
+ "Read titles, ids, and any poster/logo/backdrop already saved next to your files. Missing images are filled from TMDB.": "Lê títulos, ids e qualquer pôster/logo/backdrop já salvo junto aos seus arquivos. Imagens ausentes são preenchidas a partir do TMDB.",
+ "Reader review": "Avaliação de leitor",
+ "Reading": "Lendo",
+ "Reading manifest": "Lendo manifesto",
+ "Reading new manifest": "Lendo novo manifesto",
+ "Ready": "Pronto",
+ "Ready to save": "Pronto para salvar",
+ "Ready to send": "Pronto para enviar",
+ "Ready when you are": "Pronto quando você estiver",
+ "Real cases, real consequences": "Casos reais, consequências reais",
+ "Real journeys beyond Earth": "Jornadas reais além da Terra",
+ "Real-Debrid API token": "Token de API do Real-Debrid",
+ "Real-Debrid, TorBox, AllDebrid, Premiumize, Debrid-Link. Cached streams play direct. Keys stay local.": "Real-Debrid, TorBox, AllDebrid, Premiumize, Debrid-Link. Streams em cache tocam direto. As chaves ficam locais.",
+ "Real-time anime upscaling. GPU-intensive.": "Upscaling de anime em tempo real. Exige bastante da GPU.",
+ "Real-time GPU upscaling that sharpens lines and cleans up gradients on anime, built right into Harbor's player. The one-tap setup below grabs the shaders; nothing else to install.": "Upscaling por GPU em tempo real que aprimora linhas e limpa gradientes em animes, integrado diretamente ao player do Harbor. A configuração de um toque abaixo baixa os shaders; nada mais para instalar.",
+ "Rebounds": "Rebotes",
+ "Rec": "Rec",
+ "REC": "REC",
+ "Receive early builds with the newest fixes before they reach the stable release. Betas can be rough around the edges; switch this off to return to stable at the next update.": "Receba builds antecipadas com as correções mais recentes antes de chegarem à versão estável. Betas podem ter arestas; desative para voltar ao estável na próxima atualização.",
+ "Recent": "Recente",
+ "Recent searches": "Buscas recentes",
+ "Recolor everything, swap fonts, resize posters, set a wallpaper.": "Recolora tudo, troque fontes, redimensione pôsteres, defina um papel de parede.",
+ "Recommended": "Recomendado",
+ "Recommended for you": "Recomendado para você",
+ "Recommended for You": "Recomendado para Você",
+ "Reconfigure": "Reconfigurar",
+ "Record": "Gravar",
+ "Record from live TV": "Gravar da TV ao vivo",
+ "Record from TV (DVR)": "Gravar da TV (DVR)",
+ "Record GIF": "Gravar GIF",
+ "recorded winners": "vencedores registrados",
+ "Recording": "Gravando",
+ "Recording · {pct}% · {remaining} · click to manage": "Gravando · {pct}% · {remaining} · clique para gerenciar",
+ "Recording finished": "Gravação concluída",
+ "Recording now": "Gravando agora",
+ "Recordings": "Gravações",
+ "Red Cards": "Cartões Vermelhos",
+ "Redeploy": "Reimplantar",
+ "Redeploy instructions": "Instruções de reimplantação",
+ "Redeploy it to get the latest Watch Together fixes. Harbor's public relay updates on its own.": "Reimplante para obter as últimas correções do Watch Together. O relay público do Harbor se atualiza sozinho.",
+ "Redeploy relay": "Reimplantar relay",
+ "Redeploy to pick up the latest Watch Together fixes. The in-app banner clears once the new version is live.": "Reimplante para aplicar as últimas correções do Watch Together. O aviso no app desaparece assim que a nova versão estiver ativa.",
+ "Reference (bt.2390)": "Referência (bt.2390)",
+ "Refine search": "Refinar busca",
+ "Refresh": "Atualizar",
+ "Refresh list": "Atualizar lista",
+ "Refresh playlist": "Atualizar playlist",
+ "Refresh sources": "Atualizar fontes",
+ "Refreshing…": "Atualizando…",
+ "Region": "Região",
+ "Region & language": "Região e idioma",
+ "Relay": "Relay",
+ "Relay deployment requires the Cloudflare API, which is unavailable to browser clients. Use the desktop build to deploy a Worker, then enter the resulting URL below.": "A implantação do relay requer a API da Cloudflare, indisponível para clientes de navegador. Use a versão desktop para implantar um Worker e insira a URL resultante abaixo.",
+ "Relay docs": "Documentação do Relay",
+ "Relay is current (v{version}).": "O relay está atualizado (v{version}).",
+ "Relay is live": "O relay está ativo",
+ "Relay is up to date": "O Relay está atualizado",
+ "Relay needs update": "O Relay precisa de atualização",
+ "Relay not reachable": "Relay inacessível",
+ "Relay outdated. Your self-hosted relay is running an older version.": "Relay desatualizado. Seu relay autogerenciado está rodando uma versão mais antiga.",
+ "Relay panel": "Painel do Relay",
+ "Relay status": "Status do Relay",
+ "Relay test failed": "Falha no teste do relay",
+ "Relay test passed": "Teste do Relay aprovado",
+ "Relay URL": "URL do Relay",
+ "Relay verified end-to-end": "Relay verificado de ponta a ponta",
+ "Relay version {version}. Update available.": "Versão do relay {version}. Atualização disponível.",
+ "Releases": "Lançamentos",
+ "Reload list": "Recarregar lista",
+ "Remaining only": "Somente restantes",
+ "Remember last stream": "Lembrar do último stream",
+ "Remember me": "Lembrar de mim",
+ "Remember my choice": "Lembrar minha escolha",
+ "Remote server": "Servidor remoto",
+ "Remote streaming server": "Servidor de streaming remoto",
+ "Remove": "Remover",
+ "Remove {n}": "Remover {n}",
+ "Remove {n} items from your library? Files on your disk are not deleted.": "Remover {n} itens da sua biblioteca? Os arquivos no seu disco não serão excluídos.",
+ "Remove {name}": "Remover {name}",
+ "Remove from AniList": "Remover da AniList",
+ "Remove from Continue Watching": "Remover de Continuar Assistindo",
+ "Remove from favorites": "Remover dos favoritos",
+ "Remove from library": "Remover da biblioteca",
+ "Remove from list": "Remover da lista",
+ "Remove from saved": "Remover dos salvos",
+ "Remove from watchlist": "Remover da watchlist",
+ "Remove list": "Remover lista",
+ "Remove list \"{name}\"?": "Remover a lista \"{name}\"?",
+ "Remove rating": "Remover avaliação",
+ "Removed": "Removido",
+ "Removed {n}. Rewatch and they re-add correctly.": "{n} removido(s). Assista novamente e eles serão readicionados corretamente.",
+ "Removes the Anime tab and any Trending/Popular/Upcoming/New anime rows from Home.": "Remove a aba Anime e as linhas de Em Alta/Populares/Em Breve/Novos animes da Início.",
+ "Removes the Live TV tab from the sidebar.": "Remove a aba TV ao Vivo da barra lateral.",
+ "Removing": "Removendo",
+ "Removing…": "Removendo…",
+ "Rename": "Renomear",
+ "Rename current": "Renomear atual",
+ "Rename row": "Renomear linha",
+ "Renamed": "Renomeado",
+ "Render subtitles in a heavier weight. Turn off to use your font's normal weight.": "Renderiza as legendas com um peso mais forte. Desative para usar o peso normal da fonte.",
+ "Renders mpv inline so playback lives in Harbor itself. Disable to open it in a separate window instead.": "Renderiza o mpv de forma integrada para que a reprodução aconteça dentro do próprio Harbor. Desative para abri-lo em uma janela separada.",
+ "Reorder": "Reordenar",
+ "Repair library": "Reparar biblioteca",
+ "Repair now": "Reparar agora",
+ "Replay": "Reproduzir novamente",
+ "Replay the walkthrough or unhide every dismissed tip in the app.": "Reproduza o tutorial novamente ou reexiba todas as dicas dispensadas no app.",
+ "Replay walkthrough": "Repetir tour guiado",
+ "Report a bug": "Reportar um bug",
+ "Report an injected ad": "Denunciar um anúncio injetado",
+ "Reportedly real": "Supostamente real",
+ "Requesting code from Simkl…": "Solicitando código do Simkl…",
+ "Requesting code from Trakt…": "Solicitando código do Trakt…",
+ "Requirements": "Requisitos",
+ "Rerun": "Executar novamente",
+ "Rescan": "Reescanear",
+ "Reset": "Redefinir",
+ "Reset all ({count})": "Redefinir tudo ({count})",
+ "Reset all ({n})": "Redefinir tudo ({n})",
+ "Reset all to default": "Redefinir tudo para o padrão",
+ "Reset counter": "Redefinir contador",
+ "Reset filters": "Redefinir filtros",
+ "Reset layout": "Redefinir layout",
+ "Reset offset": "Redefinir deslocamento",
+ "Reset offset to 0": "Redefinir deslocamento para 0",
+ "Reset picture": "Redefinir imagem",
+ "Reset sync": "Redefinir sincronização",
+ "Reset this profile to factory defaults? Your tweaks on it will be lost.": "Redefinir este perfil para os padrões de fábrica? Seus ajustes nele serão perdidos.",
+ "Reset to 0": "Redefinir para 0",
+ "Reset to default": "Redefinir para o padrão",
+ "Reset to default folder": "Redefinir para a pasta padrão",
+ "Reset to defaults": "Redefinir para os padrões",
+ "Reset to original name": "Redefinir para o nome original",
+ "Reset to Stremio avatar": "Redefinir para o avatar do Stremio",
+ "Resize only": "Somente redimensionar",
+ "Resize the row titles on Home and the title shown in the player, without scaling the rest of the interface. You can also lead the player title with the series name instead of the episode.": "Redimensiona os títulos das linhas na Início e o título exibido no player, sem alterar a escala do restante da interface. Você também pode iniciar o título do player com o nome da série em vez do episódio.",
+ "Resolution": "Resolução",
+ "Resources": "Recursos",
+ "Rest the cursor on a poster to peek at it without opening. Off by default.": "Pare o cursor sobre um pôster para dar uma olhada sem abrir. Desativado por padrão.",
+ "Rest the cursor on a poster to peek at the rating, runtime, and story without opening it.": "Pouse o cursor sobre um pôster para espiar a avaliação, duração e sinopse sem abri-lo.",
+ "Rest the cursor on a poster to peek at the rating, story, and quick actions without opening it.": "Pare o cursor sobre um pôster para ver a avaliação, a sinopse e ações rápidas sem abri-lo.",
+ "Restart": "Reiniciar",
+ "Restart engine": "Reiniciar mecanismo",
+ "Restarting": "Reiniciando",
+ "Restore": "Restaurar",
+ "Restore and reload": "Restaurar e recarregar",
+ "Restore dismissed hints": "Restaurar dicas dispensadas",
+ "Restore from a backup": "Restaurar de um backup",
+ "Restore this backup?": "Restaurar este backup?",
+ "Restore window position after fullscreen": "Restaurar posição da janela após tela cheia",
+ "Restoring...": "Restaurando...",
+ "Result order": "Ordem dos resultados",
+ "Results for \"{query}\"": "Resultados para \"{query}\"",
+ "Resume": "Retomar",
+ "Resume from {time}": "Retomar de {time}",
+ "Resume S{s}:E{e}": "Retomar T{s}:E{e}",
+ "Resume where you left off": "Retomar de onde parou",
+ "Retry": "Tentar novamente",
+ "Retry download": "Tentar download novamente",
+ "Return to full window": "Voltar para a janela cheia",
+ "returns JSON with the worker version. Used by the test button.": "retorna um JSON com a versão do worker. Usado pelo botão de teste.",
+ "Reveal": "Mostrar",
+ "Reveal comments": "Mostrar comentários",
+ "Reveal engine folder": "Mostrar pasta do mecanismo",
+ "Reveal image": "Mostrar imagem",
+ "Reveal reviews": "Mostrar avaliações",
+ "Reveal the show or movie artwork.": "Revelar a arte da série ou filme.",
+ "Reveal the show or movie artwork. Off keeps the title but hides the poster.": "Mostra a arte da série ou do filme. Desativado mantém o título, mas oculta o pôster.",
+ "Revenue": "Receita",
+ "review": "avaliação",
+ "Review": "Avaliação",
+ "Reviews are hidden": "Avaliações estão ocultas",
+ "Reviews couldn't be loaded right now.": "Não foi possível carregar as avaliações agora.",
+ "Reviews on film pages are blurred until you reveal them.": "As avaliações nas páginas de filmes ficam desfocadas até você revelá-las.",
+ "Revisionist Westerns": "Faroestes Revisionistas",
+ "Rewrites every library item to match Stremio's exact schema. Run once if your Stremio app started crashing after Harbor synced playback.": "Reescreve cada item da biblioteca para corresponder exatamente ao esquema do Stremio. Execute uma vez se o seu app Stremio começou a travar depois que o Harbor sincronizou a reprodução.",
+ "Richer, more vivid picture with a touch more contrast.": "Imagem mais rica e vívida com um toque a mais de contraste.",
+ "Right": "Direita",
+ "Right edge": "Borda direita",
+ "Right-click a text channel, pick": "Clique com o botão direito em um canal de texto, escolha",
+ "Right-click any title in Harbor or hit \"Add to Watchlist\" on its detail page to save it here.": "Clique com o botão direito em qualquer título no Harbor ou clique em \"Add to Watchlist\" na página de detalhes para salvá-lo aqui.",
+ "Right-click any title in Harbor or hit \\": "Clique com o botão direito em qualquer título no Harbor ou pressione \\",
+ "Rights and usage": "Direitos e uso",
+ "Rising": "Em ascensão",
+ "Rising · +{n} star in 24h": "Em alta · +{n} estrela em 24h",
+ "Rising · +{n} stars in 24h": "Em alta · +{n} estrelas em 24h",
+ "Roll back to an earlier build": "Reverter para uma versão anterior",
+ "Romaji": "Romaji",
+ "Romance": "Romance",
+ "Romanian": "Romeno",
+ "Romcom Royalty": "Realeza das Comédias Românticas",
+ "Romcom Sweetheart": "Queridinha das Comédias Românticas",
+ "Room code": "Código da sala",
+ "Rotten Tomatoes Audience": "Rotten Tomatoes Audiência",
+ "Rotten Tomatoes audience score": "Nota do público no Rotten Tomatoes",
+ "Rotten Tomatoes Critics": "Rotten Tomatoes Crítica",
+ "Rotten Tomatoes Popcornmeter, the audience score (%).": "Popcornmeter do Rotten Tomatoes, a nota da audiência (%).",
+ "Rounded": "Arredondado",
+ "Rounded background panel behind the text. Most readable.": "Painel de fundo arredondado atrás do texto. Mais legível.",
+ "Rounded square in the same color.": "Quadrado arredondado na mesma cor.",
+ "Row titles": "Títulos das linhas",
+ "Royal top bar": "Barra superior real",
+ "RPDB · scores baked into posters": "RPDB · notas embutidas nos pôsteres",
+ "RPDB already paints scores onto the poster. Toggle to override.": "O RPDB já pinta as notas no pôster. Ative para sobrescrever.",
+ "rpdb key": "chave do RPDB",
+ "RPDB key above, https://btttr.cc, or a {imdbId} template": "Chave do RPDB acima, https://btttr.cc, ou um modelo {imdbId}",
+ "RTX Video HDR": "RTX Video HDR",
+ "Rubber-Faced Genius": "Gênio de Rosto de Borracha",
+ "Run again": "Executar novamente",
+ "Run self-test": "Executar autoteste",
+ "Run speed test": "Executar teste de velocidade",
+ "Run test": "Executar teste",
+ "Run your own Harbor Relay": "Execute seu próprio Harbor Relay",
+ "Running": "Em execução",
+ "Running on Cinemeta for now. Add a TMDB key from Settings whenever you're ready.": "Usando o Cinemeta por enquanto. Adicione uma chave do TMDB nas Configurações quando quiser.",
+ "Running self-test": "Executando autoteste",
+ "Running the latest Watch Together protocol.": "Usando o protocolo mais recente do Watch Together.",
+ "Runs": "Execuções",
+ "Runs in the app's WebView. You're modding your own client. No sandbox, no safety net. Errors land in the console.": "Executa na WebView do app. Você está modificando seu próprio cliente. Sem sandbox, sem rede de segurança. Erros aparecem no console.",
+ "Runtime": "Duração",
+ "Russian": "Russo",
+ "S{s} E{e}": "S{s} E{e}",
+ "Saddle Up": "Prepare-se",
+ "SAG Awards": "SAG Awards",
+ "Sagas": "Sagas",
+ "Same file": "Mesmo arquivo",
+ "Same file as host": "Mesmo arquivo do anfitrião",
+ "Sandman Picks": "Escolhas do Sandman",
+ "Saturation": "Saturação",
+ "Save": "Salvar",
+ "Save .txt": "Salvar .txt",
+ "Save (single anchor)": "Salvar (âncora única)",
+ "Save a debrid key above (TorBox, Real-Debrid, AllDebrid, Premiumize, or Debrid-Link) to enable this.": "Salve uma chave debrid acima (TorBox, Real-Debrid, AllDebrid, Premiumize ou Debrid-Link) para ativar isso.",
+ "Save a TMDB key in Library & metadata to turn on streaming catalogs.": "Salve uma chave do TMDB em Biblioteca e metadados para ativar os catálogos de streaming.",
+ "Save an OMDB key in Library & metadata to enable rating fetches.": "Salve uma chave OMDB em Biblioteca e metadados para ativar a busca de avaliações.",
+ "Save and continue": "Salvar e continuar",
+ "Save as a new look": "Salvar como novo visual",
+ "Save as a new template": "Salvar como novo modelo",
+ "Save as new profile...": "Salvar como novo perfil...",
+ "Save cancelled.": "Salvamento cancelado.",
+ "Save changes": "Salvar alterações",
+ "Save credentials": "Salvar credenciais",
+ "Save for later": "Salvar para depois",
+ "Save layout": "Salvar layout",
+ "Save look": "Salvar visual",
+ "Save order": "Salvar ordem",
+ "Save rule": "Salvar regra",
+ "Save sharper frames instead of light thumbnails. They look crisper on the card but take more space, so fewer are kept before the oldest roll off.": "Salvar quadros mais nítidos em vez de miniaturas leves. Ficam mais nítidos no card, mas ocupam mais espaço, então menos são mantidos antes que os mais antigos sejam descartados.",
+ "Save sync": "Salvar sincronização",
+ "Save the current frame (video only, no subtitles) as a PNG to Pictures/Harbor.": "Salvar o quadro atual (somente vídeo, sem legendas) como PNG em Pictures/Harbor.",
+ "Save the last 30 seconds": "Salvar os últimos 30 segundos",
+ "Save the worker source. Copy": "Salvar o código-fonte do worker. Copiar",
+ "Save the worker source. Copy {code1} from the Harbor repo into a new directory as {code2}.": "Salve o código-fonte do worker. Copie {code1} do repositório do Harbor para um novo diretório como {code2}.",
+ "Save this": "Salvar isso",
+ "Save this {code} next to it:": "Salve este {code} ao lado dele:",
+ "Save this look": "Salvar este visual",
+ "Save this look as a template": "Salvar esta aparência como modelo",
+ "Save to": "Salvar em",
+ "Save with one anchor?": "Salvar com uma âncora?",
+ "Saved": "Salvo",
+ "Saved .nfo and artwork": "Arquivo .nfo e arte salvos",
+ "Saved {d} from Harbor {a}.": "Salvo {d} do Harbor {a}.",
+ "Saved {n} entries to {path}. Send us that file.": "{n} entradas salvas em {path}. Envie esse arquivo para nós.",
+ "Saved {when} from Harbor {app}.": "Salvo {when} pelo Harbor {app}.",
+ "Saved as .ts (works in mpv, VLC, ffmpeg)": "Salvo como .ts (funciona no mpv, VLC, ffmpeg)",
+ "Saved for Now": "Salvo por Enquanto",
+ "Saved frame": "Quadro salvo",
+ "Saved harbor-anime-diagnostics.txt ({n} entries). Send us that file.": "harbor-anime-diagnostics.txt salvo ({n} entradas). Envie esse arquivo para nós.",
+ "Saved locally. Connect Trakt in Settings to sync.": "Salvo localmente. Conecte o Trakt nas Configurações para sincronizar.",
+ "Saved movies and episodes for offline watching": "Filmes e episódios salvos para assistir offline",
+ "Saved offline": "Salvo offline",
+ "Saved stream filters": "Filtros de stream salvos",
+ "Saved to {folder} · open folder": "Salvo em {folder} · abrir pasta",
+ "Saved to disk": "Salvo no disco",
+ "Saved to Downloads as harbor-mpv-log.txt": "Salvo em Downloads como harbor-mpv-log.txt",
+ "Saved, but Harbor couldn't confirm the new order. Retry to re-check.": "Salvo, mas o Harbor não conseguiu confirmar a nova ordem. Tente novamente para verificar.",
+ "Saves": "Salvamentos",
+ "Saves a .txt of your watched anime + series entries so we can see the exact shape and finish the fix. Just titles, ids, and episode numbers.": "Salva um .txt dos seus animes e séries assistidos para vermos o formato exato e finalizarmos a correção. Apenas títulos, ids e números de episódios.",
+ "Saves your whole Harbor setup to one file: theme, home layout, settings, addons, profiles, watchlist, player layouts, watch progress, and more. Your Stremio sign-in is left out on purpose.": "Salva toda a sua configuração do Harbor em um único arquivo: tema, layout da tela inicial, configurações, addons, perfis, lista de interesse, layouts do player, progresso de reprodução e mais. Seu login do Stremio é deixado de fora propositalmente.",
+ "Saving": "Salvando",
+ "Saving clip…": "Salvando clipe…",
+ "Saving GIF…": "Salvando GIF…",
+ "Saving to": "Salvando em",
+ "Saving to library": "Salvando na biblioteca",
+ "Saving to system default": "Salvando no padrão do sistema",
+ "Saving…": "Salvando…",
+ "Say hi.": "Diga oi.",
+ "Say something…": "Diga algo…",
+ "Says “cached” but won’t play?": "Diz “em cache” mas não reproduz?",
+ "Scale every poster and card across Home, Discover, and your library. Bump it up on a 4K or large display where the defaults feel small, or shrink it for a denser grid.": "Redimensiona todos os pôsteres e cards em Início, Descobrir e sua biblioteca. Aumente em uma tela 4K ou grande, onde os padrões parecem pequenos, ou diminua para uma grade mais densa.",
+ "Scan again": "Verificar novamente",
+ "Scan for corruption": "Verificar corrupção",
+ "Scanning": "Verificando",
+ "Scanning your library…": "Verificando sua biblioteca…",
+ "Scanning your network…": "Verificando sua rede…",
+ "Scanning…": "Verificando…",
+ "Scans your Stremio library and rewrites any item whose shape doesn't match Stremio's exact schema.": "Verifica sua biblioteca do Stremio e reescreve qualquer item cujo formato não corresponda exatamente ao esquema do Stremio.",
+ "Scans your Stremio library and rewrites any item whose shape doesn't match Stremio's exact schema. Safe to run anytime; only items that need fixing get touched.": "Verifica sua biblioteca do Stremio e reescreve qualquer item cujo formato não corresponda exatamente ao esquema do Stremio. Seguro para executar a qualquer momento; apenas os itens que precisam de correção são alterados.",
+ "Sci-Fi": "Ficção Científica",
+ "Sci-Fi & Fantasy": "Ficção Científica e Fantasia",
+ "Score /10": "Nota /10",
+ "Scream Queen": "Rainha do Grito",
+ "Screenshot": "Captura de tela",
+ "Screenshots and recordings": "Capturas de tela e gravações",
+ "Scrobble to SIMKL": "Fazer scrobble para o SIMKL",
+ "Scroll cast left": "Rolar elenco para a esquerda",
+ "Scroll cast right": "Rolar elenco para a direita",
+ "Scroll down": "Rolar para baixo",
+ "Scroll filters left": "Rolar filtros para a esquerda",
+ "Scroll filters right": "Rolar filtros para a direita",
+ "Scroll left": "Rolar para a esquerda",
+ "Scroll right": "Rolar para a direita",
+ "Search": "Pesquisar",
+ "Search {n} channels": "Pesquisar {n} canais",
+ "Search {n} EPG channels": "Pesquisar {n} canais de EPG",
+ "Search {n} favorite": "Pesquisar {n} favorito",
+ "Search {n} favorites": "Pesquisar {n} favoritos",
+ "Search actors, directors…": "Pesquisar atores, diretores…",
+ "Search addons": "Pesquisar addons",
+ "Search by episode number or title": "Pesquisar por número do episódio ou título",
+ "Search by recipient or title…": "Pesquisar por destinatário ou título…",
+ "Search countries...": "Pesquisar países...",
+ "Search every collection on TMDB...": "Pesquisar todas as coleções no TMDB...",
+ "Search languages": "Pesquisar idiomas",
+ "Search movies": "Pesquisar filmes",
+ "Search movies, shows, people, genres, years...": "Pesquisar filmes, séries, pessoas, gêneros, anos...",
+ "Search settings": "Pesquisar configurações",
+ "Search shows": "Pesquisar séries",
+ "Search title…": "Pesquisar título…",
+ "Search TMDB…": "Pesquisar no TMDB…",
+ "Search wider": "Ampliar busca",
+ "Search winners or categories…": "Pesquisar vencedores ou categorias…",
+ "search.placeholder": "Buscar filmes, séries, pessoas…",
+ "Searches and streams directly off Easynews. No debrid needed. Just your Easynews login.": "Pesquisa e transmite diretamente do Easynews. Não precisa de debrid. Só o seu login do Easynews.",
+ "Searching {count} sources…": "Buscando {count} fontes…",
+ "Searching sources…": "Buscando fontes…",
+ "Searching…": "Buscando…",
+ "Season {n}": "Temporada {n}",
+ "Season {n} of {m}": "Temporada {n} de {m}",
+ "Seasons": "Temporadas",
+ "Second anchor": "Segunda âncora",
+ "Security": "Segurança",
+ "See all": "Ver tudo",
+ "See all ({n})": "Ver tudo ({n})",
+ "See an injected ad? Report it": "Viu um anúncio injetado? Denuncie",
+ "See details": "Ver detalhes",
+ "See others born this day": "Ver outros nascidos neste dia",
+ "See others from this place": "Ver outros deste lugar",
+ "See the mpv.conf your dials above generate": "Ver o mpv.conf que os controles acima geram",
+ "seeders": "seeders",
+ "Seeing empty boxes instead of letters? Choose Arabic under Font and switch to Use my style.": "Vendo caixas vazias em vez de letras? Escolha Árabe em Fonte e mude para Usar meu estilo.",
+ "Seek back": "Retroceder",
+ "Seek back 30s": "Retroceder 30s",
+ "Seek bar": "Barra de progresso",
+ "Seek bar style": "Estilo da barra de progresso",
+ "Seek dot shape": "Formato do indicador de progresso",
+ "Seek forward": "Avançar",
+ "Seek forward 30s": "Avançar 30s",
+ "Seek step": "Intervalo de avanço",
+ "Seek to the beginning.": "Ir para o início.",
+ "Seek to the last half second.": "Ir para o último meio segundo.",
+ "Seeking": "Buscando",
+ "Select": "Selecionar",
+ "Select all": "Selecionar tudo",
+ "Select identified titles to export.": "Selecione os títulos identificados para exportar.",
+ "Self-host": "Auto-hospedar",
+ "Self-test": "Autoteste",
+ "Self-test is disabled while strict remote streaming is on. It downloads a test torrent over peer-to-peer on this machine.": "O autoteste fica desativado enquanto a transmissão remota estrita está ativa. Ele baixa um torrent de teste via peer-to-peer nesta máquina.",
+ "Send": "Enviar",
+ "Send a bug report": "Enviar um relatório de bug",
+ "Send a bug report straight to the Harbor team. Screenshots and screen recordings welcome.": "Envie um relatório de bug diretamente para a equipe do Harbor. Capturas de tela e gravações de tela são bem-vindas.",
+ "Send audio to specific speakers, headphones or a receiver. System default follows Windows.": "Envie o áudio para alto-falantes, fones ou um receptor específicos. O padrão do sistema segue o Windows.",
+ "Send rating": "Enviar avaliação",
+ "Send test": "Enviar teste",
+ "Send this to anyone you want to watch with. They paste it in their Settings → Harbor Relay. After that, share a 6-character room code from the people icon up top.": "Envie isso para quem você quiser assistir junto. A pessoa cola em Configurações → Harbor Relay. Depois, compartilhe um código de sala de 6 caracteres pelo ícone de pessoas no topo.",
+ "Sending to Trakt…": "Enviando para o Trakt…",
+ "Sending...": "Enviando...",
+ "Sending…": "Enviando…",
+ "Sent {n} to Trakt": "{n} enviado(s) para o Trakt",
+ "Sent. Check your channel.": "Enviado. Confira seu canal.",
+ "Series": "Séries",
+ "Series · {n}": "Séries · {n}",
+ "Series for the part of the day that runs on coffee and snacks.": "Séries para a parte do dia que roda a café e petiscos.",
+ "Series for the part of the day you actually look forward to.": "Séries para a parte do dia que você realmente espera com ansiedade.",
+ "Series for the part of the night that won't let you sleep.": "Séries para a parte da noite que não te deixa dormir.",
+ "Series from {name}: current hits, classics, and the deep cuts.": "Séries de {name}: sucessos atuais, clássicos e raridades.",
+ "Series on {name}": "Séries em {name}",
+ "Series tab": "Aba de séries",
+ "Series to disappear into": "Séries para se perder",
+ "Series to ease into while the day is still quiet.": "Séries para começar devagar enquanto o dia ainda está calmo.",
+ "Series with mileage": "Séries com estrada percorrida",
+ "Series with the patience to match your late-night hours.": "Séries com a paciência à altura das suas madrugadas.",
+ "Series, Critically Acclaimed": "Séries Aclamadas pela Crítica",
+ "Serif": "Serifada",
+ "Server + login": "Servidor + login",
+ "Server address": "Endereço do servidor",
+ "Server couldn't start:": "O servidor não conseguiu iniciar:",
+ "Server did not respond": "O servidor não respondeu",
+ "Server reachable": "Servidor acessível",
+ "Server reachable in {ms}ms. Harbor will use it for torrent streaming.": "Servidor acessível em {ms}ms. O Harbor vai usá-lo para streaming de torrent.",
+ "Server returned an empty response": "O servidor retornou uma resposta vazia",
+ "Server URL": "URL do servidor",
+ "Server URL plus username and password.": "URL do servidor mais usuário e senha.",
+ "Serves this exact install of Harbor as a web app on your network. Open it on a phone, laptop, or TV browser, sign in there, and it streams through this computer.": "Disponibiliza esta instalação exata do Harbor como um app web na sua rede. Abra no navegador de um celular, notebook ou TV, entre na conta e a transmissão passa por este computador.",
+ "Service status": "Status do serviço",
+ "Service-specific browsing needs a TMDB key. Pick All / Movies / Shows to browse via Cinemeta.": "A navegação específica do serviço precisa de uma chave TMDB. Escolha Tudo / Filmes / Séries para navegar via Cinemeta.",
+ "Set a 4-digit PIN": "Defina um PIN de 4 dígitos",
+ "Set a PIN": "Defina um PIN",
+ "Set a PIN for {name}": "Defina um PIN para {name}",
+ "Set as theme backdrop": "Definir como plano de fundo do tema",
+ "Set how many minutes to record": "Defina quantos minutos gravar",
+ "Set PIN": "Definir PIN",
+ "Set sail": "Zarpar",
+ "Set to where the video is right now": "Definir para onde o vídeo está agora",
+ "Set up": "Configurar",
+ "Set up a Cloudflare relay for Watch Together": "Configure um relay do Cloudflare para o Assistir Juntos",
+ "Set up a debrid": "Configurar um debrid",
+ "Set your MyAnimeList profile picture as your Harbor avatar.": "Use a foto de perfil do seu MyAnimeList como seu avatar do Harbor.",
+ "Sets Harbor's interface language and automatically follows its text direction. This is separate from subtitle and metadata languages below.": "Define o idioma da interface do Harbor e segue automaticamente a direção do texto. Isso é separado dos idiomas de legendas e metadados abaixo.",
+ "Settings": "Configurações",
+ "Settings, Harbor Relay, then": "Configurações, Harbor Relay, depois",
+ "Settings, Harbor Relay, then {kbd}.": "Configurações, Harbor Relay, depois {kbd}.",
+ "Severity": "Gravidade",
+ "Shadow": "Sombra",
+ "Shape the sound without touching your system EQ. Applies on the mpv engine; the HTML5 engine plays audio untouched.": "Molde o som sem mexer no equalizador do sistema. Aplica-se ao mecanismo mpv; o mecanismo HTML5 reproduz o áudio sem alterações.",
+ "Share with {name}": "Compartilhar com {name}",
+ "Sharing {name}'s Stremio": "Compartilhando o Stremio de {name}",
+ "Sharing your relay": "Compartilhando seu relay",
+ "Sharp comedies, sunny worlds, and the occasional binge bait.": "Comédias afiadas, mundos ensolarados e uma isca de maratona ocasional.",
+ "Sharp Wit": "Sagacidade Afiada",
+ "Sharpen": "Nitidez",
+ "Sharper lines and a little more pop.": "Linhas mais nítidas e um pouco mais de destaque.",
+ "Sharper lines and cleaner gradients on anime, in real time. Heaviest on the graphics card of everything here.": "Linhas mais nítidas e gradientes mais limpos em animes, em tempo real. É o que mais pesa na placa de vídeo entre tudo aqui.",
+ "Sharper lines and cleaner gradients on anime, in real time. One-tap setup below.": "Linhas mais nítidas e gradientes mais limpos em animes, em tempo real. Configuração com um toque abaixo.",
+ "Sharper upscaling and smoother gradients in dark scenes, at the cost of more graphics-card load. Skip it on laptops and integrated graphics.": "Upscaling mais nítido e gradientes mais suaves em cenas escuras, à custa de mais carga na placa de vídeo. Evite em notebooks e gráficos integrados.",
+ "Shift subtitle timing earlier (Shift for fine steps).": "Adiantar o tempo da legenda (Shift para ajustes finos).",
+ "Shift subtitle timing later (Shift for fine steps).": "Atrasar o tempo da legenda (Shift para ajustes finos).",
+ "Ships with Harbor. Always available.": "Vem incluído com o Harbor. Sempre disponível.",
+ "Shots": "Chutes",
+ "SHOTS": "CENAS",
+ "Shots on Target": "Chutes a Gol",
+ "Show": "Mostrar",
+ "Show 'Watching something' with no show name or poster.": "Mostrar 'Assistindo algo' sem nome ou pôster da série.",
+ "Show {langs} only": "Mostrar apenas {langs}",
+ "Show {n} more addons": "Mostrar mais {n} addons",
+ "Show {n} more reviews": "Mostrar mais {n} avaliações",
+ "Show a button on the detail page to mark a title or episode as watched. Syncs to Trakt and Simkl if connected.": "Mostra um botão na página de detalhes para marcar um título ou episódio como assistido. Sincroniza com Trakt e Simkl se conectado.",
+ "Show a quick volume overlay when you change volume with the player controls hidden, so keyboard and scroll wheel changes are always visible.": "Mostra uma sobreposição rápida de volume quando você muda o volume com os controles do player ocultos, para que mudanças pelo teclado e pela roda do mouse fiquem sempre visíveis.",
+ "Show a Skip button when a known injected ad plays, and a small report button on new releases so you can mark ads for review.": "Mostra um botão Pular quando um anúncio injetado conhecido é reproduzido, e um pequeno botão de denúncia em lançamentos novos para você marcar anúncios para revisão.",
+ "Show a Skip Intro / Skip Credits button when Harbor detects one. Turn this off to never show it. You can also tap the X on the button to dismiss a wrong one for the rest of the episode.": "Mostra um botão Pular Abertura / Pular Créditos quando o Harbor detecta um. Desative para nunca mostrar. Você também pode tocar no X do botão para dispensar um errado pelo resto do episódio.",
+ "Show adult addons": "Mostrar addons adultos",
+ "Show an “on disk” badge on cards": "Mostrar um selo de “no disco” nos cartões",
+ "Show AniList comments": "Mostrar comentários do AniList",
+ "Show Anime4K indicator": "Mostrar indicador do Anime4K",
+ "Show as a normal row": "Mostrar como uma fileira normal",
+ "Show as a Top 10 with big numerals": "Mostrar como um Top 10 com números grandes",
+ "Show audience score on cards": "Mostrar nota do público nos cartões",
+ "Show comments on detail pages": "Mostrar comentários nas páginas de detalhes",
+ "Show cursors": "Mostrar cursores",
+ "Show details": "Mostrar detalhes",
+ "Show downloaded file": "Mostrar arquivo baixado",
+ "Show each addon's results in the order it returned them, grouped by your addon list. Matches the Stremio and Vidi apps.": "Mostra os resultados de cada addon na ordem em que foram retornados, agrupados pela sua lista de addons. Igual aos apps Stremio e Vidi.",
+ "Show each source's full release filename on the condensed layout. The Stremio layout already shows it.": "Mostra o nome completo do arquivo de lançamento de cada fonte no layout condensado. O layout Stremio já mostra isso.",
+ "Show elapsed time": "Mostrar tempo decorrido",
+ "Show email": "Mostrar e-mail",
+ "Show episode description": "Mostrar descrição do episódio",
+ "Show every addon row": "Mostrar todas as fileiras de addons",
+ "Show everything anyway": "Mostrar tudo mesmo assim",
+ "Show flagged ({n})": "Mostrar sinalizados ({n})",
+ "Show format chips on stream rows": "Mostrar chips de formato nas fileiras de streams",
+ "Show forum threads and comments from AniList on anime detail pages.": "Mostra os tópicos do fórum e comentários do AniList nas páginas de detalhes de animes.",
+ "Show full descriptions": "Mostrar descrições completas",
+ "Show full documentation": "Mostrar documentação completa",
+ "Show HI/SDH": "Mostrar HI/SDH",
+ "Show IMDb rating on episodes": "Mostrar avaliação do IMDb nos episódios",
+ "Show IMDb score on cards": "Mostrar nota do IMDb nos cards",
+ "Show in folder": "Mostrar na pasta",
+ "Show less": "Mostrar menos",
+ "Show Letterboxd score on cards": "Mostrar nota do Letterboxd nos cards",
+ "Show MAL score on cards": "Mostrar nota do MAL nos cards",
+ "Show MDBList score on cards": "Mostrar nota do MDBList nos cards",
+ "Show me less like this": "Mostrar menos como este",
+ "Show me more like this": "Mostrar mais como este",
+ "Show Metacritic score on cards": "Mostrar nota do Metacritic nos cards",
+ "Show more": "Mostrar mais",
+ "Show my rating on movie posters": "Mostrar minha nota nos pôsteres de filmes",
+ "Show on Discord": "Mostrar no Discord",
+ "Show on home": "Mostrar na tela inicial",
+ "Show or hide the playback stats overlay.": "Mostrar ou ocultar a sobreposição de estatísticas de reprodução.",
+ "Show others' drawings": "Mostrar desenhos de outros",
+ "Show P2P status chip": "Mostrar indicador de status P2P",
+ "Show P2P status overlay": "Mostrar sobreposição de status P2P",
+ "Show password": "Mostrar senha",
+ "Show play button": "Mostrar botão de reprodução",
+ "Show Playlists tab": "Mostrar aba Playlists",
+ "Show poster": "Mostrar pôster",
+ "Show rating": "Mostrar nota",
+ "Show ratings on detail pages": "Mostrar notas nas páginas de detalhes",
+ "Show remaining time": "Mostrar tempo restante",
+ "Show Rotten Tomatoes score on cards": "Mostrar nota do Rotten Tomatoes nos cards",
+ "Show row": "Mostrar fileira",
+ "Show section": "Mostrar seção",
+ "Show series name first in the player": "Mostrar o nome da série primeiro no player",
+ "Show Simkl rails on Home": "Mostrar carrosséis do Simkl na Home",
+ "Show SIMKL score on cards": "Mostrar nota do SIMKL nos cards",
+ "Show Simkl Trending Today rail": "Mostrar carrossel de Em Alta Hoje do Simkl",
+ "Show sources hidden by the trust filter": "Mostrar fontes ocultadas pelo filtro de confiança",
+ "Show stream quality under the title": "Mostrar qualidade do stream abaixo do título",
+ "Show streams": "Mostrar streams",
+ "Show subtitles in Picture-in-Picture": "Mostrar legendas no Picture-in-Picture",
+ "Show tags on cards (New, In Cinema, Rerun, Awards)": "Mostrar etiquetas nos cartões (Novo, Nos Cinemas, Reprise, Premiações)",
+ "Show the addon's complete description instead of trimming it to a few lines. Turn off for shorter, tidier rows.": "Mostra a descrição completa do addon em vez de resumi-la a poucas linhas. Desative para fileiras mais curtas e organizadas.",
+ "Show the full notes for this build": "Mostrar as notas completas desta versão",
+ "Show the IMDb rating and synopsis on episodes across the list, grid, and panel layouts.": "Mostra a nota do IMDb e a sinopse dos episódios nos layouts de lista, grade e painel.",
+ "Show the report button on every torrent stream, not just likely new releases.": "Mostra o botão de denúncia em todo stream de torrent, não só em prováveis lançamentos novos.",
+ "Show the Skip button": "Mostrar o botão Pular",
+ "Show this control": "Mostrar este controle",
+ "Show this panel": "Mostrar este painel",
+ "Show thumbnail preview on hover": "Mostrar prévia da miniatura ao passar o mouse",
+ "Show title": "Mostrar título",
+ "Show TMDB score on cards": "Mostrar nota do TMDB nos cards",
+ "Show torrent name": "Mostrar nome do torrent",
+ "Show Trakt score on cards": "Mostrar nota do Trakt nos cards",
+ "Show Up Next on Simkl rail": "Mostrar carrossel A Seguir do Simkl",
+ "Show what you're actually watching, under the title in the player.": "Mostra o que você está realmente assistindo, abaixo do título no player.",
+ "Show while browsing": "Mostrar enquanto navega",
+ "Show while paused": "Mostrar enquanto pausado",
+ "Show your AniList lists as rails on the Anime page, keep your watch progress in sync as you finish episodes, and use your AniList avatar as your Harbor photo. Free at anilist.co.": "Mostra suas listas do AniList como trilhas na página de Anime, mantém seu progresso de exibição sincronizado ao terminar episódios, e usa seu avatar do AniList como sua foto no Harbor. Gratuito em anilist.co.",
+ "Show your AniList profile picture as your Harbor avatar.": "Mostra sua foto de perfil do AniList como seu avatar no Harbor.",
+ "Show your operating system's own title bar with its minimize, maximize, and close buttons. They stay reachable everywhere, including while a video is playing. Turn this off to use Harbor's built-in window buttons.": "Mostra a barra de título nativa do seu sistema operacional, com os botões de minimizar, maximizar e fechar. Eles ficam acessíveis em qualquer lugar, inclusive durante a reprodução de um vídeo. Desative para usar os botões de janela integrados do Harbor.",
+ "Showing {shown} of {total} movies. Search to find the rest.": "Mostrando {shown} de {total} filmes. Busque para encontrar o restante.",
+ "Showing {shown} of {total} shows. Search to find the rest.": "Mostrando {shown} de {total} séries. Busque para encontrar o restante.",
+ "Showing {shown} of {total}.": "Mostrando {shown} de {total}.",
+ "Showing first {n1} of {n2} channels. Use search or a category to narrow down.": "Mostrando os primeiros {n1} de {n2} canais. Use a busca ou uma categoria para refinar.",
+ "Showing first {shown} of {total} channels. Use search or a category to narrow down.": "Mostrando os primeiros {shown} de {total} canais. Use a busca ou uma categoria para refinar.",
+ "Showing now": "Em exibição agora",
+ "shown": "exibido",
+ "Shown": "Exibido",
+ "Shows": "Séries",
+ "Shows each episode's rating. Add your free OMDb API key for real IMDb scores; without it, ratings fall back to TMDB.": "Mostra a nota de cada episódio. Adicione sua chave de API gratuita do OMDb para notas reais do IMDb; sem ela, as notas usam o TMDB.",
+ "Shows the episode synopsis on the cards. Turn it off to hide it.": "Mostra a sinopse do episódio nos cartões. Desative para ocultá-la.",
+ "Shows titles suitable up to age {age}.": "Mostra títulos adequados até {age} anos.",
+ "Shows your Letterboxd catalogs on the home page and a Letterboxd panel on film pages.": "Mostra seus catálogos do Letterboxd na página inicial e um painel do Letterboxd nas páginas de filmes.",
+ "Showtime": "Showtime",
+ "Side": "Lateral",
+ "Side rail": "Barra lateral",
+ "Sidebar access": "Acesso à barra lateral",
+ "Sidebar layout": "Layout de barra lateral",
+ "Sightings, contact, the unknown": "Avistamentos, contato, o desconhecido",
+ "Sign in": "Entrar",
+ "Sign in from the sidebar after saving. Library and addons stay separate.": "Entre pela barra lateral após salvar. Biblioteca e addons permanecem separados.",
+ "Sign in to": "Entrar em",
+ "Sign in to filter by your library": "Entre para filtrar pela sua biblioteca",
+ "Sign in to mirror your Continue Watching, watchlist, and any addons you've already curated. Optional; Harbor works fully signed-out.": "Entre para espelhar seu Continuar Assistindo, sua watchlist e quaisquer addons que você já tenha organizado. Opcional; o Harbor funciona totalmente sem login.",
+ "Sign in to see your library calendar": "Entre para ver o calendário da sua biblioteca",
+ "Sign in to Stremio": "Entrar no Stremio",
+ "Sign in to Stremio first so Harbor knows which watchlist to sync.": "Entre no Stremio primeiro para o Harbor saber qual lista de interesse sincronizar.",
+ "Sign in to Stremio first.": "Entre no Stremio primeiro.",
+ "Sign in to Stremio first. The repair scans only the active profile's library.": "Entre no Stremio primeiro. O reparo verifica apenas a biblioteca do perfil ativo.",
+ "Sign in to Stremio first. This reads the active profile's library.": "Entre no Stremio primeiro. Isso lê a biblioteca do perfil ativo.",
+ "Sign in to Stremio first. This scans the active profile's library.": "Entre no Stremio primeiro. Isso verifica a biblioteca do perfil ativo.",
+ "Sign in to Stremio first. Your installed addons sync from there.": "Entre no Stremio primeiro. Seus addons instalados sincronizam a partir de lá.",
+ "Sign in to Stremio or connect Trakt to see what you've been watching here.": "Entre no Stremio ou conecte o Trakt para ver aqui o que você tem assistido.",
+ "Sign in to Stremio to organize the addons synced to your account.": "Entre no Stremio para organizar os addons sincronizados com sua conta.",
+ "Sign in to sync your addons across devices": "Entre para sincronizar seus addons entre dispositivos",
+ "Sign in to sync your library, watch progress, and addons.": "Entre para sincronizar sua biblioteca, progresso de exibição e addons.",
+ "Sign in with": "Entrar com",
+ "Sign in with email": "Entrar com e-mail",
+ "Sign in with Stremio": "Entrar com o Stremio",
+ "Sign out": "Sair",
+ "Sign-in failed": "Falha ao entrar",
+ "Signing in...": "Entrando...",
+ "Signing in…": "Entrando…",
+ "Simkl": "Simkl",
+ "SIMKL": "SIMKL",
+ "SIMKL community rating. Works independently, no API key required.": "Nota da comunidade SIMKL. Funciona de forma independente, sem necessidade de chave de API.",
+ "Simkl error (HTTP {status})": "Erro do Simkl (HTTP {status})",
+ "Simkl history": "Histórico do Simkl",
+ "Simkl lists no new shows or anime premiering this month. Try a different month.": "O Simkl não lista nenhuma nova série ou anime estreando este mês. Tente um mês diferente.",
+ "Simkl plan to watch": "Lista de planejados para assistir do Simkl",
+ "Simkl premieres": "Estreias do Simkl",
+ "Simkl sign-in expired, reconnect it": "O login do Simkl expirou, reconecte",
+ "Single -1:12 label, both ends collapse.": "Etiqueta única -1:12, ambas as extremidades recolhem.",
+ "Single 00:23 label, both ends collapse.": "Etiqueta única 00:23, ambas as extremidades recolhem.",
+ "Sits above the title strip": "Fica acima da faixa de título",
+ "Six horizontal stripes. Pairs with nyan cat dot.": "Seis listras horizontais. Combina com o ponto nyan cat.",
+ "Six places to start. Tap one and we'll filter the catalog for you.": "Seis pontos de partida. Toque em um e filtraremos o catálogo para você.",
+ "Size": "Tamanho",
+ "Size outlier": "Tamanho fora do padrão",
+ "Sketch & Screen": "Esquete e Tela",
+ "Sketch Royalty": "Realeza do Esquete",
+ "Skip": "Pular",
+ "Skip Credits": "Pular Créditos",
+ "Skip for now": "Pular por enquanto",
+ "Skip if you'd rather just use Cinemeta. Harbor still works, you'll just see fewer rails.": "Pule se preferir usar só o Cinemeta. O Harbor continua funcionando, você só verá menos categorias.",
+ "Skip injected ad?": "Pular anúncio inserido?",
+ "Skip injected ads automatically": "Pular anúncios inseridos automaticamente",
+ "Skip Intro": "Pular Abertura",
+ "Skip intros": "Pular introduções",
+ "Skip intros & credits": "Pular introduções e créditos",
+ "Skip Recap": "Pular Recapitulação",
+ "Skip setup": "Pular configuração",
+ "Skip the 'stream over peer-to-peer?' prompt and start uncached torrents immediately. Harbor remembers your choice after the first confirmation anyway.": "Pular o aviso \"transmitir via peer-to-peer?\" e iniciar torrents não armazenados em cache imediatamente. De qualquer forma, o Harbor lembra sua escolha após a primeira confirmação.",
+ "Skip to the next episode if available.": "Pular para o próximo episódio, se disponível.",
+ "Skip to the previous episode if available.": "Pular para o episódio anterior, se disponível.",
+ "Skip Who's watching and always start as this profile. PIN-locked profiles can't be a default.": "Pular \"Quem está assistindo\" e sempre iniciar com este perfil. Perfis bloqueados por PIN não podem ser padrão.",
+ "skipped {n} anime": "{n} anime ignorado",
+ "Sleep at end of episode": "Suspender ao final do episódio",
+ "Sleep timer": "Temporizador de suspensão",
+ "Slice of Life": "Slice of Life",
+ "Slide {n}": "Slide {n}",
+ "Slider": "Controle deslizante",
+ "Slot": "Slot",
+ "Slot is getting crowded ({n}/{limit}). May overflow on narrow screens.": "O slot está ficando cheio ({n}/{limit}). Pode transbordar em telas estreitas.",
+ "Slow Burns": "Ritmo Lento",
+ "Slow or unstable connection": "Conexão lenta ou instável",
+ "Slow playback by 0.25x.": "Reduzir a velocidade de reprodução em 0.25x.",
+ "Slow Reveal": "Revelação Gradual",
+ "Slow-Burn Dramas": "Dramas de Ritmo Lento",
+ "Slow-burn starts": "Começos de ritmo lento",
+ "Slow-burn worlds and bright chapters worth opening with coffee.": "Mundos de ritmo lento e capítulos animados, ideais para abrir com um café.",
+ "Slow, strange, and absorbing. Best with the lights down low.": "Lento, estranho e envolvente. Melhor com as luzes baixas.",
+ "Smaller": "Menor",
+ "Smooth motion": "Movimento suave",
+ "Smooth on weak PCs": "Suave em PCs fracos",
+ "Soft (Reinhard)": "Suave (Reinhard)",
+ "Soft halo around the text. Cleanest on most content.": "Halo suave ao redor do texto. Mais limpo na maioria dos conteúdos.",
+ "Softer and dimmer, kinder for late-night watching.": "Mais suave e mais escuro, mais agradável para assistir tarde da noite.",
+ "Solid fill, no texture. Cleanest baseline.": "Preenchimento sólido, sem textura. A base mais limpa.",
+ "Some cam and new-release rips have ads spliced into the video itself. When the community has marked one, a Skip button appears. You can also report ads you spot for review. Off by default.": "Alguns rips de cam e lançamentos recentes têm anúncios inseridos diretamente no vídeo. Quando a comunidade marca um, aparece um botão Pular. Você também pode reportar anúncios encontrados para revisão. Desativado por padrão.",
+ "Someone I track has a new release": "Alguém que eu acompanho tem um novo lançamento",
+ "Something else": "Outra coisa",
+ "Something unexpected went wrong. Nothing may have been written. Retry to re-check.": "Algo inesperado deu errado. Talvez nada tenha sido gravado. Tente novamente para verificar.",
+ "Something went wrong.": "Algo deu errado.",
+ "Sorry this one is not better. Tell us what went wrong and we will fix it for you.": "Desculpe, este não ficou melhor. Conte o que deu errado e vamos corrigir para você.",
+ "Source": "Fonte",
+ "Source code": "Código-fonte",
+ "Source:": "Fonte:",
+ "Source: {code}. About 200 lines of JavaScript, no dependencies. Read it before deploying if you want to know what runs.": "Fonte: {code}. Cerca de 200 linhas de JavaScript, sem dependências. Leia antes de implantar se quiser saber o que é executado.",
+ "Sources": "Fontes",
+ "Sources are not cached for this title. Open the picker page to refresh.": "As fontes não estão em cache para este título. Abra a página de seleção para atualizar.",
+ "South Korea": "Coreia do Sul",
+ "Southpaw": "Canhoto",
+ "Space Exploration": "Exploração Espacial",
+ "Spaghetti Westerns": "Bang-bangs Italianos",
+ "Spain": "Espanha",
+ "Spanish": "Espanhol",
+ "Spanish (Latin America)": "Espanhol (América Latina)",
+ "Specials": "Especiais",
+ "speed": "velocidade",
+ "Speed": "Velocidade",
+ "SPEED": "VELOCIDADE",
+ "Speed & sleep": "Velocidade e suspensão",
+ "Speed and sleep timer": "Velocidade e temporizador de suspensão",
+ "Speed down": "Diminuir velocidade",
+ "Speed playback up by 0.25x.": "Aumentar a velocidade de reprodução em 0.25x.",
+ "Speed test": "Teste de velocidade",
+ "Speed up": "Aumentar velocidade",
+ "Spinner stays forever and nothing in the player loads.": "O carregamento fica girando para sempre e nada carrega no player.",
+ "Spins up a tiny server on Cloudflare's free Workers tier. Stays online forever (or until you stop it). Friends connect by URL.": "Cria um pequeno servidor no plano gratuito Workers da Cloudflare. Fica online para sempre (ou até você parar). Os amigos se conectam por URL.",
+ "Spoiler — Click": "Spoiler — Clique",
+ "Spoiler — Click to reveal": "Spoiler — Clique para revelar",
+ "Spoilers": "Spoilers",
+ "Spooky Season": "Temporada Assombrada",
+ "Sports": "Esportes",
+ "Sports & live TV": "Esportes e TV ao vivo",
+ "sports.customize": "Personalizar",
+ "sports.customize.all": "Todas",
+ "sports.customize.cancel": "Cancelar",
+ "sports.customize.clearAll": "Limpar tudo",
+ "sports.customize.deselectGroupAll": "Desmarcar todos",
+ "sports.customize.save": "Salvar",
+ "sports.customize.selectAll": "Selecionar todos",
+ "sports.customize.selected": "{n} selecionadas",
+ "sports.customize.selectGroupAll": "Selecionar todos",
+ "sports.customize.title": "Personalizar Ligas",
+ "Spotlight": "Destaque",
+ "Spotlight {n}": "Destaque {n}",
+ "Spring Awakening": "Despertar da Primavera",
+ "Stable": "Estável",
+ "Stable selectors": "Seletores estáveis",
+ "Stance": "Postura",
+ "Standalone guide source to attach to existing playlists.": "Fonte de guia independente para anexar a playlists existentes.",
+ "star": "estrela",
+ "Starring a Favorite": "Com Seu Ator Favorito",
+ "stars": "estrelas",
+ "Start a new room": "Iniciar uma nova sala",
+ "Start a room first.": "Inicie uma sala primeiro.",
+ "Start anyway ({n} still loading)": "Iniciar mesmo assim ({n} ainda carregando)",
+ "Start here. The ones almost everyone has.": "Comece por aqui. Os que quase todo mundo tem.",
+ "Start or stop recording a GIF of the video (no subtitles). Saves to Pictures/Harbor.": "Iniciar ou parar a gravação de um GIF do vídeo (sem legendas). Salva em Imagens/Harbor.",
+ "Start Over": "Começar de Novo",
+ "Start recording": "Iniciar gravação",
+ "Start server": "Iniciar servidor",
+ "Start trailers with audio": "Iniciar trailers com áudio",
+ "Start watching": "Começar a assistir",
+ "Start Watching": "Começar a Assistir",
+ "Start week on Monday": "Iniciar a semana na segunda-feira",
+ "Start with subtitles off": "Iniciar com legendas desativadas",
+ "Starters": "Iniciais",
+ "Starting": "Iniciando",
+ "Starting…": "Iniciando…",
+ "Starts at": "Começa em",
+ "Startup & default": "Inicialização e padrão",
+ "Statistics not available yet.": "Estatísticas ainda não disponíveis.",
+ "stats": "estatísticas",
+ "Status": "Status",
+ "Stay": "Ficar",
+ "Stay in fullscreen after closing the player": "Permanecer em tela cheia após fechar o player",
+ "Stays signed in on this device only.": "Permanece conectado somente neste dispositivo.",
+ "Steals": "Roubos de Bola",
+ "Step 1 · Metadata": "Etapa 1 · Metadados",
+ "Step 1 · Open Simkl": "Etapa 1 · Abrir Simkl",
+ "Step 1 · Open Trakt": "Etapa 1 · Abrir Trakt",
+ "Step 2 · Enter this code": "Etapa 2 · Digite este código",
+ "Step 2 · Stremio": "Etapa 2 · Stremio",
+ "Step 3 · Streaming": "Etapa 3 · Streaming",
+ "Step 4 · Subtitles": "Etapa 4 · Legendas",
+ "Step back one frame and pause. Frame-accurate on mpv.": "Volta um quadro e pausa. Preciso por quadro no mpv.",
+ "Step forward one frame and pause. Frame-accurate on mpv.": "Avança um quadro e pausa. Preciso por quadro no mpv.",
+ "Step zoom in to crop baked-in black bars (Zoom mode).": "Aumentar o zoom para cortar as barras pretas embutidas (modo Zoom).",
+ "Step zoom out to restore baked-in black bars (Zoom mode).": "Diminuir o zoom para restaurar as barras pretas embutidas (modo Zoom).",
+ "Stepper": "Seletor numérico",
+ "Steps to reproduce": "Passos para reproduzir",
+ "Still {n}": "Imagem {n}",
+ "Stills": "Capturas",
+ "Stoner Auteur": "Autor Maconheiro",
+ "Stop": "Parar",
+ "Stop drawing": "Parar de desenhar",
+ "Stop feeding the hero carousel (back to automatic)": "Parar de alimentar o carrossel principal (voltar ao automático)",
+ "Stop playback when you minimize Harbor or send it to the tray.": "Parar a reprodução ao minimizar o Harbor ou enviá-lo para a bandeja.",
+ "Stop playback whenever another window takes focus.": "Parar a reprodução sempre que outra janela ganhar foco.",
+ "Stop recording": "Parar gravação",
+ "Stop relay": "Parar retransmissão",
+ "Stop-Motion": "Stop-Motion",
+ "Stopping…": "Parando…",
+ "Stored as a standalone EPG source. No channels are loaded for EPG-only entries; they're kept here for future attachment to existing playlists.": "Armazenado como uma fonte de EPG independente. Nenhum canal é carregado para entradas somente de EPG; elas são mantidas aqui para anexação futura a playlists existentes.",
+ "Stored locally on this device. Credentials never leave your machine. If a channel fails to play, your provider may rate-limit shared accounts: refresh the playlist or check with them.": "Armazenado localmente neste dispositivo. As credenciais nunca saem da sua máquina. Se um canal falhar ao reproduzir, seu provedor pode estar limitando contas compartilhadas: atualize a playlist ou consulte-o.",
+ "Stories that reward your attention before the day gets loud.": "Histórias que recompensam sua atenção antes que o dia fique agitado.",
+ "Stream": "Stream",
+ "Stream / addons": "Stream / addons",
+ "Stream / addons instead": "Stream / addons em vez disso",
+ "Stream cache": "Cache de stream",
+ "Stream descriptions": "Descrições de stream",
+ "Stream failed to load": "Falha ao carregar o stream",
+ "Stream format chips": "Chips de formato do stream",
+ "Stream is taking a while": "O stream está demorando",
+ "Stream quality in player": "Qualidade do stream no player",
+ "Stream safety filter": "Filtro de segurança de stream",
+ "Stream should start playing within a few seconds.": "O stream deve começar a tocar em poucos segundos.",
+ "Stream switcher": "Seletor de stream",
+ "Stream torrents straight from Harbor's built-in engine when you have no debrid set up, or a torrent isn't cached. This connects to peers over your own connection. Turn off to only ever play debrid and direct links.": "Transmita torrents diretamente pelo mecanismo integrado do Harbor quando você não tiver debrid configurado, ou quando um torrent não estiver em cache. Isso conecta a peers pela sua própria conexão. Desative para reproduzir apenas debrid e links diretos.",
+ "Stream torrents through Harbor's own Rust peer-to-peer engine instead of the bundled Stremio Server. Falls back automatically if it can't connect. Status and a self-test live in the Local engine card below.": "Transmita torrents pelo próprio mecanismo peer-to-peer em Rust do Harbor, em vez do Stremio Server incluso. Retorna automaticamente ao padrão se não conseguir conectar. O status e um autoteste estão no card do Mecanismo local abaixo.",
+ "Streamers": "Streamers",
+ "Streaming": "Streaming",
+ "Streaming catalogs": "Catálogos de streaming",
+ "Streaming quality": "Qualidade de streaming",
+ "Streaming sources": "Fontes de streaming",
+ "Streams": "Streams",
+ "Streams from peers": "Streams de peers",
+ "Streams in these languages rank first. Toggle below to drop everything else.": "Streams nesses idiomas aparecem primeiro. Ative abaixo para descartar todo o resto.",
+ "Streams over {cap} Mbps will rank lower, even when cached.": "Streams acima de {cap} Mbps terão classificação mais baixa, mesmo em cache.",
+ "Stremio": "Stremio",
+ "Stremio account": "Conta Stremio",
+ "Stremio addon, packaged into Harbor's catalog.": "Addon do Stremio, incorporado ao catálogo do Harbor.",
+ "Stremio cards": "Cards do Stremio",
+ "Stremio didn't confirm the save. Your collection may be unchanged. Retry will re-check before writing again.": "O Stremio não confirmou o salvamento. Sua coleção pode não ter sido alterada. Tentar novamente verificará antes de gravar de novo.",
+ "Stremio ID": "ID do Stremio",
+ "Stremio install links": "Links de instalação do Stremio",
+ "Stremio library repair": "Reparo da biblioteca do Stremio",
+ "Stremio link": "Link do Stremio",
+ "Stremio link copied": "Link do Stremio copiado",
+ "Stremio rail": "Barra do Stremio",
+ "Stremio reports a different order than was saved.": "O Stremio reporta uma ordem diferente da que foi salva.",
+ "stremio:// link": "link stremio://",
+ "stremio:// links now open in the Stremio app. Harbor will only install when you trigger it from inside Harbor.": "links stremio:// agora abrem no app Stremio. O Harbor só instalará quando você acioná-lo de dentro do Harbor.",
+ "Stremio's typeface. Geometric humanist sans.": "A fonte do Stremio. Sans humanista geométrica.",
+ "Stretch the featured hero edge to edge and taller, across every layout.": "Esticar o destaque principal de ponta a ponta e mais alto, em todos os layouts.",
+ "Strict": "Estrito",
+ "Strict filters dropped everything": "Filtros rígidos eliminaram tudo",
+ "Strikeouts": "Eliminações",
+ "Strikes": "Strikes",
+ "Strong desktops with a dedicated graphics card": "Desktops potentes com placa de vídeo dedicada",
+ "Studio": "Estúdio",
+ "Stunts & Spies": "Dublês & Espiões",
+ "Style name": "Nome do estilo",
+ "Style the timeline at the bottom of the player. Swap the dot for a sticker, change the bar height, recolor it. Settings live-preview right here.": "Estilize a linha do tempo na parte inferior do player. Troque o ponto por um adesivo, mude a altura da barra, recolora-a. As configurações mostram pré-visualização ao vivo aqui mesmo.",
+ "Styled (ASS) subs keep their own fonts, colors, and effects. Truest to the release.": "Legendas estilizadas (ASS) mantêm suas próprias fontes, cores e efeitos. O mais fiel ao lançamento original.",
+ "Styled (ASS) subtitles": "Legendas estilizadas (ASS)",
+ "subdomain acts as the access token. There is no login.": "o subdomínio funciona como token de acesso. Não há login.",
+ "Submit": "Enviar",
+ "Submit bug report": "Enviar relatório de bug",
+ "Submit report": "Enviar relatório",
+ "subscriber API key": "chave de API de assinante",
+ "Subtitle": "Legenda",
+ "Subtitle appearance": "Aparência da legenda",
+ "Subtitle background": "Fundo da legenda",
+ "Subtitle color {color}": "Cor da legenda {color}",
+ "Subtitle delay +0.1s": "Atraso de legenda +0.1s",
+ "Subtitle delay −0.1s": "Atraso de legenda −0.1s",
+ "Subtitle font size": "Tamanho da fonte da legenda",
+ "Subtitle languages": "Idiomas de legenda",
+ "Subtitle style": "Estilo da legenda",
+ "Subtitle sync": "Sincronia de legenda",
+ "Subtitle track": "Faixa de legenda",
+ "Subtitles": "Legendas",
+ "Subtitles are baked into the picture so they always show. Re-encodes the video.": "As legendas são incorporadas à imagem, então sempre aparecem. Recodifica o vídeo.",
+ "Subtitles haven't been published yet. Try search below or check back in a few days.": "As legendas ainda não foram publicadas. Tente pesquisar abaixo ou volte em alguns dias.",
+ "Subtitles may not appear on the TV.": "As legendas podem não aparecer na TV.",
+ "Subtle Apple-like sheen on the filled portion.": "Brilho sutil, estilo Apple, na parte preenchida.",
+ "summary": "resumo",
+ "Summary": "Resumo",
+ "Summary needs at least 6 characters": "O resumo precisa ter pelo menos 6 caracteres",
+ "Summer Blockbusters": "Blockbusters de Verão",
+ "Sundown": "Pôr do sol",
+ "Superheroes": "Super-heróis",
+ "Surprise me": "Me surpreenda",
+ "Suspicious file": "Arquivo suspeito",
+ "SVP (free)": "SVP (grátis)",
+ "SVP couldn't start, playing without smoothing": "O SVP não conseguiu iniciar, reproduzindo sem suavização",
+ "SVP frame interpolation": "Interpolação de quadros do SVP",
+ "SVP is already handling frame interpolation. Turn off SVP below to use this instead. Running both delays the audio.": "O SVP já está cuidando da interpolação de quadros. Desative o SVP abaixo para usar isso no lugar. Executar os dois ao mesmo tempo atrasa o áudio.",
+ "SVP is installed but Harbor couldn't find its engine files (svpflow + VapourSynth). Try repairing the SVP install, or reopen SVP once.": "O SVP está instalado, mas o Harbor não encontrou os arquivos do mecanismo (svpflow + VapourSynth). Tente reparar a instalação do SVP ou reabra o SVP uma vez.",
+ "SVP's files are here but its VapourSynth engine won't load ({err}). This usually means a stale VapourSynth entry or a missing Microsoft VC++ runtime. Reinstall SVP, or install the latest \\": "Os arquivos do SVP estão aqui, mas o mecanismo VapourSynth não carrega ({err}). Isso geralmente indica uma entrada desatualizada do VapourSynth ou a falta do runtime Microsoft VC++. Reinstale o SVP ou instale a versão mais recente \\",
+ "Swapping configuration": "Trocando configuração",
+ "Swedish": "Sueco",
+ "Switch": "Alternar",
+ "Switch profile": "Trocar de perfil",
+ "Switch stream": "Trocar stream",
+ "Switch stream / TV Guide": "Trocar stream / Guia de TV",
+ "Switch the menus and buttons to your language. Arabic flips the layout to right to left.": "Mude os menus e botões para o seu idioma. O árabe inverte o layout de direita para a esquerda.",
+ "Switch to {name}": "Mudar para {name}",
+ "Switch to channel list (hide program guide)": "Mudar para lista de canais (ocultar guia de programação)",
+ "Switch to Manual in settings if you'd rather pick the source yourself.": "Mude para Manual nas configurações se preferir escolher a fonte você mesmo.",
+ "Switch to program guide": "Mudar para guia de programação",
+ "Switch to this playlist first": "Mude para esta playlist primeiro",
+ "Sword & Sorcery": "Espada & Feitiçaria",
+ "Symptom": "Sintoma",
+ "Sync": "Sincronizar",
+ "Sync and track movies, shows, and anime across everything you use. Harbor marks what you finish as watched on Simkl and keeps your plan-to-watch list in step. Free at simkl.com.": "Sincronize e acompanhe filmes, séries e animes em tudo o que você usa. O Harbor marca o que você termina como assistido no Simkl e mantém sua lista de planos para assistir em dia. Gratuito em simkl.com.",
+ "Sync now": "Sincronizar agora",
+ "Sync Offset": "Deslocamento de sincronia",
+ "Sync subtitles via text": "Sincronizar legendas via texto",
+ "Sync unavailable": "Sincronia indisponível",
+ "Sync via text": "Sincronizar via texto",
+ "Sync watch progress": "Sincronizar progresso de exibição",
+ "Sync your library, watch progress, and installed addons across every device.": "Sincronize sua biblioteca, progresso de exibição e addons instalados em todos os dispositivos.",
+ "Sync your MyAnimeList watch progress and list as you finish episodes.": "Sincronize seu progresso de exibição e lista do MyAnimeList conforme você termina episódios.",
+ "Synced addons": "Addons sincronizados",
+ "Synced to Trakt": "Sincronizado com o Trakt",
+ "Synchronizes playback state between participants in the same room.": "Sincroniza o estado de reprodução entre os participantes da mesma sala.",
+ "Syncing to Stremio": "Sincronizando com o Stremio",
+ "Syncing Trakt…": "Sincronizando Trakt…",
+ "Syncing…": "Sincronizando…",
+ "Synopsis": "Sinopse",
+ "System": "Sistema",
+ "System default": "Padrão do sistema",
+ "System tray": "Bandeja do sistema",
+ "Tackle %": "% de Desarmes",
+ "Tackles": "Desarmes",
+ "Takes about 10 seconds.": "Leva cerca de 10 segundos.",
+ "Tamil": "Tâmil",
+ "Tap": "Toque",
+ "Tap a line to jump there, then nudge until the subtitles match what you hear.": "Toque em uma linha para pular até ela, depois ajuste até as legendas coincidirem com o que você ouve.",
+ "Tap a line, then nudge": "Toque em uma linha, depois ajuste",
+ "Tap one until your show plays nice and clear!": "Toque em uma até seu programa ficar nítido e claro!",
+ "Tap the genres you want more of. They steer the Top Picks row at the top of this page.": "Toque nos gêneros que você quer ver mais. Eles influenciam a faixa Destaques no topo desta página.",
+ "Tarantino Picks": "Escolhas de Tarantino",
+ "TBD": "A definir",
+ "Team Turnovers": "Perdas de Posse da Equipe",
+ "Technical details": "Detalhes técnicos",
+ "Technical Fouls": "Faltas Técnicas",
+ "Technical. IBM's open family.": "Técnico. Família aberta da IBM.",
+ "Telegram bot": "Bot do Telegram",
+ "Telegram sends through a bot you create. You need two things: a": "O Telegram envia através de um bot que você cria. Você precisa de duas coisas: um",
+ "Television's finest": "O melhor da televisão",
+ "Tense Performances": "Atuações Tensas",
+ "Test": "Testar",
+ "Test connection": "Testar conexão",
+ "Test failed": "Teste falhou",
+ "Test relay": "Testar relay",
+ "Testing": "Testando",
+ "Testing…": "Testando…",
+ "Text color": "Cor do texto",
+ "Text mode — Esc to exit": "Modo de texto — Esc para sair",
+ "Text Sync": "Sincronia de texto",
+ "Text sync unavailable for embedded tracks": "Sincronia de texto indisponível para faixas incorporadas",
+ "Text-based sync": "Sincronização baseada em texto",
+ "Thai": "Tailandês",
+ "Thanks! This helps us know the betas are heading the right way.": "Obrigado! Isso nos ajuda a saber que os betas estão indo na direção certa.",
+ "Thanks. Sent for review.": "Obrigado. Enviado para revisão.",
+ "That is a large correction ({n}%). One of the two points may be off, double-check them.": "Essa é uma correção grande ({n}%). Um dos dois pontos pode estar errado, verifique-os novamente.",
+ "That list is private or doesn't exist. Public lists only.": "Essa lista é privada ou não existe. Apenas listas públicas.",
+ "That's every {category} collection we could find.": "Essas são todas as coleções de {category} que conseguimos encontrar.",
+ "That's every collection TMDB knows about.": "Essas são todas as coleções que o TMDB conhece.",
+ "That's everything Cinemeta has for {genre}. Add a TMDB key for deeper rails.": "Isso é tudo que o Cinemeta tem para {genre}. Adicione uma chave do TMDB para faixas mais completas.",
+ "That's not it. Try a fresh round in a moment.": "Não é isso. Tente uma nova rodada em instantes.",
+ "The authorization code timed out before you finished. Try again.": "O código de autorização expirou antes de você terminar. Tente novamente.",
+ "The Backups button at the top keeps your last five orders. One click restores any of them.": "O botão Backups no topo guarda suas últimas cinco ordens. Um clique restaura qualquer uma delas.",
+ "The best {genre} {media}, layered by mood. Browse trending, dive into a director's run, sort by decade, find quiet gems.": "Os melhores {media} de {genre}, organizados por clima. Navegue pelos populares, explore a filmografia de um diretor, ordene por década, encontre pérolas escondidas.",
+ "The Boogeyman": "O Bicho-Papão",
+ "The Boss": "O Chefe",
+ "The British Academy": "A Academia Britânica",
+ "The CPU decodes everything. Most compatible, but it runs hot and can stutter on 4K. Use this only if the picture glitches with hardware decoding on.": "A CPU decodifica tudo. Mais compatível, mas esquenta e pode travar em 4K. Use isso apenas se a imagem falhar com a decodificação por hardware ativada.",
+ "The credentials in the URL are wrong. Edit the playlist and double check the username and password against what your provider sent.": "As credenciais na URL estão incorretas. Edite a playlist e confira o usuário e a senha com o que seu provedor enviou.",
+ "The critics' cut": "O corte dos críticos",
+ "The default round dot.": "O ponto redondo padrão.",
+ "The end time has to be after the start.": "O horário de término precisa ser depois do início.",
+ "The escape hatch for power users. One mpv option per line as key=value, exactly like mpv.conf. These apply last, so they override every dial above. Anything Harbor can't read is skipped, so a typo won't break playback. Restart playback to apply.": "A válvula de escape para usuários avançados. Uma opção do mpv por linha no formato key=value, exatamente como no mpv.conf. Essas são aplicadas por último, então substituem todos os ajustes acima. Tudo que o Harbor não conseguir ler é ignorado, então um erro de digitação não vai quebrar a reprodução. Reinicie a reprodução para aplicar.",
+ "The Harbor relay is a Cloudflare Worker that hosts WebSocket rooms for Watch Together. Each user runs their own. There is no central Harbor server.": "O relay do Harbor é um Cloudflare Worker que hospeda salas WebSocket para o Assistir Juntos. Cada usuário executa o seu próprio. Não há um servidor central do Harbor.",
+ "The Home Front": "A Frente Interna",
+ "The host did not respond. The URL may have expired (many providers rotate domains), the server is down, or your network is blocking it. Contact your provider for an updated URL.": "O host não respondeu. A URL pode ter expirado (muitos provedores trocam de domínio), o servidor pode estar fora do ar, ou sua rede está bloqueando-o. Entre em contato com seu provedor para obter uma URL atualizada.",
+ "The host starts playback for the whole room.": "O anfitrião inicia a reprodução para toda a sala.",
+ "The King": "O Rei",
+ "The Last Stand": "The Last Stand",
+ "The lighter fill showing how much is buffered or downloaded ahead. It hides automatically once a stream is fully cached (green dot).": "O preenchimento mais claro mostra quanto foi armazenado no buffer ou baixado à frente. Ele se oculta automaticamente quando um stream fica totalmente em cache (ponto verde).",
+ "The little 4K · HDR · codec · audio chips that ride along each stream in the play picker.": "Os pequenos indicadores 4K · HDR · codec · áudio que acompanham cada stream no seletor de reprodução.",
+ "The Long Lunch": "O Almoço Longo",
+ "The Master": "O Mestre",
+ "The most anticipated upcoming releases on Trakt": "Os lançamentos mais aguardados no Trakt",
+ "The most anticipated upcoming releases on Trakt. No login needed.": "Os lançamentos mais aguardados no Trakt. Não é necessário login.",
+ "The most-watched movies and series on {name} right now in {region}.": "Os filmes e séries mais assistidos no {name} agora em {region}.",
+ "The myth, reconsidered": "O mito, reconsiderado",
+ "The order also decides which addon's rows win on your Home screen.": "A ordem também decide quais faixas de addon prevalecem na sua tela Início.",
+ "The order decides who answers first when you press Play. Drag, use the arrows, or jump anything straight to the top.": "A ordem decide quem responde primeiro quando você aperta Reproduzir. Arraste, use as setas ou mande qualquer item direto para o topo.",
+ "The picker tags each stream with resolution, HDR flavor, codec, and audio format. Off hides them all.": "O seletor marca cada stream com resolução, tipo de HDR, codec e formato de áudio. Desativado oculta todos eles.",
+ "The playlist server actively refused the connection.": "O servidor da playlist recusou ativamente a conexão.",
+ "The playlist server is down or your network is blocking it. Try again in a few minutes.": "O servidor da playlist está fora do ar ou sua rede está bloqueando-o. Tente novamente em alguns minutos.",
+ "The quick brown fox jumps over the lazy dog": "The quick brown fox jumps over the lazy dog",
+ "The real footage": "As imagens reais",
+ "The series that make the rest of the night disappear.": "As séries que fazem o resto da noite desaparecer.",
+ "The server answered with status {status}. Is that a streaming server?": "O servidor respondeu com o status {status}. Isso é mesmo um servidor de streaming?",
+ "The server is reachable but is not sending any data. Check the URL or contact your provider.": "O servidor está acessível, mas não está enviando nenhum dado. Verifique a URL ou entre em contato com seu provedor.",
+ "The server rejected the request. Some providers block generic clients; verify the credentials work in their official app first.": "O servidor rejeitou a solicitação. Alguns provedores bloqueiam clientes genéricos; verifique primeiro se as credenciais funcionam no aplicativo oficial deles.",
+ "The server replied with a webpage instead of Xtream data. The account may be expired, or the server URL is not an Xtream panel.": "O servidor respondeu com uma página web em vez de dados do Xtream. A conta pode estar expirada, ou a URL do servidor não é um painel Xtream.",
+ "The server responded but the playlist is not at that URL. Check for typos and verify with your provider.": "O servidor respondeu, mas a playlist não está nessa URL. Verifique se há erros de digitação e confirme com seu provedor.",
+ "The server URL, username, or password is wrong. Edit the playlist and re-check the credentials your provider sent.": "A URL do servidor, o usuário ou a senha estão incorretos. Edite a playlist e verifique novamente as credenciais enviadas pelo seu provedor.",
+ "The test calls": "As chamadas de teste",
+ "The test calls {code} and confirms the worker is reachable and running a current version. A passing test means Watch Together rooms will connect.": "O teste chama {code} e confirma que o worker está acessível e executando uma versão atual. Um teste aprovado significa que as salas do Watch Together vão conectar.",
+ "The Trenches": "As Trincheiras",
+ "The URL hostname is wrong or no longer exists. Many providers rotate domains; ask your provider for an updated playlist URL.": "O nome do host da URL está errado ou não existe mais. Muitos provedores trocam de domínio; peça ao seu provedor uma URL de playlist atualizada.",
+ "The URL is valid but the playlist is empty. The provider may be in maintenance, or the URL is misconfigured.": "A URL é válida, mas a playlist está vazia. O provedor pode estar em manutenção, ou a URL está mal configurada.",
+ "The web build can't run mpv, the trickplay generator, the local bandwidth probe, or your own Cloudflare relay. If you want HDR passthrough, TrueHD or DTS-HD audio, and smoother seeking, grab the desktop app.": "A versão web não roda o mpv, o gerador de trickplay, o medidor de banda local nem seu próprio relay Cloudflare. Se você quer passthrough de HDR, áudio TrueHD ou DTS-HD e uma busca mais suave, baixe o app desktop.",
+ "The yellow chip in the poster corner.": "O chip amarelo no canto do pôster.",
+ "Theme": "Tema",
+ "Theme & appearance": "Tema e aparência",
+ "Theme cheat sheet": "Guia rápido de temas",
+ "Theme Library": "Biblioteca de Temas",
+ "Themes you imported or built.": "Temas que você importou ou criou.",
+ "Themes you keep returning to": "Temas aos quais você sempre volta",
+ "THEN notify on": "ENTÃO notificar em",
+ "These live in Harbor on this computer and never touch your account.": "Isso fica salvo no Harbor deste computador e nunca toca na sua conta.",
+ "These rails activate once a TMDB key is set. You can come back to this anytime in Settings.": "Essas fileiras são ativadas assim que uma chave do TMDB é definida. Você pode voltar aqui quando quiser em Configurações.",
+ "These tune the bundled mpv engine, which runs in the Harbor desktop app. They have no effect in the browser.": "Isso ajusta o mecanismo mpv incluído, que roda no app desktop do Harbor. Não tem efeito no navegador.",
+ "These two points are very close ({n}s apart). Pick one near the start and one near the end, or the timing can drift at the edges.": "Esses dois pontos estão muito próximos ({n}s de diferença). Escolha um perto do início e outro perto do fim, ou o tempo pode desviar nas bordas.",
+ "TheTVDB · episode data": "TheTVDB · dados de episódios",
+ "Thicker outline": "Contorno mais grosso",
+ "Thickness": "Espessura",
+ "Thinner outline": "Contorno mais fino",
+ "This Afternoon": "Esta Tarde",
+ "This and next: + {title}": "Este e o próximo: + {title}",
+ "This channel isn't responding": "Este canal não está respondendo",
+ "This file has one audio track.": "Este arquivo tem uma faixa de áudio.",
+ "This file is flagged as not web-playable. Try the mpv backend in Settings or pick another stream.": "Este arquivo está marcado como não reproduzível na web. Tente o backend mpv em Configurações ou escolha outra fonte.",
+ "This file is in OneDrive. If \"Files On-Demand\" is on, the file is a cloud placeholder until it's downloaded. Right-click it in Explorer and pick": "Este arquivo está no OneDrive. Se \"Files On-Demand\" estiver ativado, o arquivo é apenas um espaço reservado na nuvem até ser baixado. Clique com o botão direito nele no Explorer e escolha",
+ "This file is in OneDrive. If \\": "Este arquivo está no OneDrive. Se \\",
+ "This instance of Harbor is made for desktop. Our standalone iOS and Android apps are coming soon, each with a bespoke, mobile-first experience built for its native platform.": "Esta instância do Harbor foi feita para desktop. Nossos aplicativos independentes para iOS e Android estão chegando em breve, cada um com uma experiência sob medida, pensada primeiro para dispositivos móveis e construída para sua plataforma nativa.",
+ "This is in your local library": "Isto está na sua biblioteca local",
+ "This list is empty, or its items couldn't be matched.": "Esta lista está vazia, ou os itens não puderam ser correspondidos.",
+ "This list needs your {key} API key. Add it in Settings, then refresh.": "Esta lista precisa da sua chave de API do {key}. Adicione em Configurações e atualize.",
+ "This month": "Este mês",
+ "This Morning": "Esta Manhã",
+ "This order syncs to every Stremio app signed into this account.": "Esta ordem sincroniza com todos os apps Stremio conectados a esta conta.",
+ "This playlist has no movies. It may be live channels only, or an Xtream login that exposes movies separately.": "Esta playlist não tem filmes. Pode ser apenas canais ao vivo, ou um login Xtream que expõe filmes separadamente.",
+ "This playlist has no shows. It may be live channels only, or an Xtream login that exposes shows separately.": "Esta playlist não tem séries. Pode ser apenas canais ao vivo, ou um login Xtream que expõe séries separadamente.",
+ "This replaces your current Harbor setup (theme, home layout, settings, addons, profiles, and more) with the {n} saved entries in this file. Your Stremio sign-in stays as is. Harbor reloads when it finishes.": "Isso substitui sua configuração atual do Harbor (tema, layout da home, configurações, addons, perfis e mais) pelas {n} entradas salvas neste arquivo. Seu login do Stremio permanece o mesmo. O Harbor recarrega ao terminar.",
+ "This section depends on the addon": "Esta seção depende da extensão",
+ "This section relies on TMDB discovery features.": "Esta seção depende dos recursos de descoberta do TMDB.",
+ "This sets metadata, subtitle, and audio languages to match.": "Isso define os idiomas de metadados, legenda e áudio para corresponder.",
+ "This show: {title}": "Esta série: {title}",
+ "This source": "Esta fonte",
+ "This source is slow. Try another.": "Esta fonte está lenta. Tente outra.",
+ "This thread is locked.": "Este tópico está fechado.",
+ "this title": "este título",
+ "This trailer plays on YouTube.": "Este trailer é reproduzido no YouTube.",
+ "This usually means antivirus removed the server file (stremio-server.exe). Add Harbor's install folder to your antivirus exclusions, then reinstall.": "Isso geralmente significa que o antivírus removeu o arquivo do servidor (stremio-server.exe). Adicione a pasta de instalação do Harbor às exclusões do seu antivírus e reinstale.",
+ "This week": "Esta semana",
+ "This Xtream account is expired, banned, or disabled on the provider side. Renew or confirm with your provider.": "Esta conta Xtream está expirada, banida ou desativada pelo provedor. Renove ou confirme com seu provedor.",
+ "Thread body (optional)": "Corpo do tópico (opcional)",
+ "Thread title": "Título do tópico",
+ "Three Point %": "% de Três Pontos",
+ "Three-Time Oscar": "Três Vezes Vencedor do Oscar",
+ "Thriller": "Suspense",
+ "Thumbs down hides this title from Featured. Thumbs up helps surface similar picks.": "Não curtir oculta este título dos Destaques. Curtir ajuda a mostrar escolhas parecidas.",
+ "Ticking Clocks": "Relógios Correndo Contra o Tempo",
+ "Tighter spacing": "Espaçamento reduzido",
+ "Tiles horizontally; the bar's height crops it vertically. Animated GIFs up to 2 MB play.": "Encaixa horizontalmente; a altura da barra recorta verticalmente. GIFs animados de até 2 MB são reproduzidos.",
+ "Time elapsed": "Tempo decorrido",
+ "Time format": "Formato de hora",
+ "Time remaining or duration": "Tempo restante ou duração",
+ "Time's up!": "O tempo acabou!",
+ "title": "título",
+ "Title": "Título",
+ "Title & info": "Título e informações",
+ "Title info": "Informações do título",
+ "Title text": "Texto do título",
+ "titles": "títulos",
+ "Titles, overviews, and taglines from TMDB display in this language when a translation exists. Needs a TMDB key.": "Títulos, sinopses e slogans do TMDB são exibidos neste idioma quando existe uma tradução. Precisa de uma chave do TMDB.",
+ "TMDB": "TMDB",
+ "TMDB · catalogs and rails": "TMDB · catálogos e faixas",
+ "TMDB asks for an app URL when you create the key. Put any URL at all, like https://harbor.app. The only thing you need back is the API key.": "O TMDB pede uma URL de app ao criar a chave. Coloque qualquer URL, como https://harbor.app. A única coisa que você precisa de volta é a chave de API.",
+ "TMDB connected. {n} streaming {services} on. Welcome aboard.": "TMDB conectado. {n} {services} de streaming ativados. Bem-vindo a bordo.",
+ "TMDB has no notable releases for this month and region.": "O TMDB não tem lançamentos notáveis para este mês e região.",
+ "TMDB powers the firehose of every release this month. The free tier covers it. About 60 seconds to set up. Switch to My Library if you'd rather only see what you've saved.": "O TMDB alimenta o fluxo intenso de todos os lançamentos deste mês. O plano gratuito já é suficiente. Cerca de 60 segundos para configurar. Mude para Minha Biblioteca se preferir ver apenas o que você salvou.",
+ "TMDB Rating": "Avaliação do TMDB",
+ "to bring in your library.": "para importar sua biblioteca.",
+ "to close": "para fechar",
+ "to refresh the bundled dataset.": "para atualizar o conjunto de dados incluído.",
+ "To run a public relay, post the": "Para rodar um relay público, publique o",
+ "To run a public relay, post the {code} URL on r/Stremio or wherever your community lives. Other Harbor users paste it into Settings, Harbor Relay, {kbd}.": "Para executar um relay público, publique a URL do {code} no r/Stremio ou onde sua comunidade estiver. Outros usuários do Harbor colam em Configurações, Harbor Relay, {kbd}.",
+ "To the side": "Ao lado",
+ "today": "hoje",
+ "Today": "Hoje",
+ "Today's openers": "Abertura do dia",
+ "Toggle a sleep timer that pauses when this episode ends.": "Alternar um temporizador de suspensão que pausa quando este episódio terminar.",
+ "Toggle fullscreen": "Alternar tela cheia",
+ "Toggle guide layout": "Alternar layout do guia",
+ "Toggle HDR to SDR": "Alternar HDR para SDR",
+ "Toggle mute": "Alternar mudo",
+ "Toggle playback.": "Alternar reprodução.",
+ "Toggle RTX Video HDR": "Alternar RTX Video HDR",
+ "Toggle RTX Video HDR during mpv playback. Unavailable while HDR-to-SDR tonemapping or SVP is active.": "Alterna o RTX Video HDR durante a reprodução no mpv. Indisponível enquanto o mapeamento de tons HDR para SDR ou o SVP estiver ativo.",
+ "Toggle stats overlay": "Alternar sobreposição de estatísticas",
+ "Token name can be anything. The permission row must be exactly {b1} + {b2} + {b3}.": "O nome do token pode ser qualquer um. A linha de permissões deve ser exatamente {b1} + {b2} + {b3}.",
+ "Token works, but no accounts came back. Check the token's permissions.": "O token funciona, mas nenhuma conta retornou. Verifique as permissões do token.",
+ "Tomatometer": "Tomatometer",
+ "tomorrow": "amanhã",
+ "Tone-mapping curve": "Curva de mapeamento de tons",
+ "Tonemap to SDR": "Mapear tons para SDR",
+ "Tonight": "Hoje à noite",
+ "Tonight's binge bait": "A isca de maratona da noite",
+ "Tonight's lineup": "A programação de hoje à noite",
+ "Tonight's main event": "O evento principal da noite",
+ "Tonight's marquee": "Destaque de hoje à noite",
+ "Tonight's Slate": "A Seleção de Hoje à Noite",
+ "Too many requests from your IP. Wait a minute and try again.": "Muitas solicitações do seu IP. Aguarde um minuto e tente novamente.",
+ "Tools": "Ferramentas",
+ "Top": "Topo",
+ "Top · left": "Superior · esquerda",
+ "Top · right": "Superior · direita",
+ "Top {n}": "Top {n}",
+ "Top 10": "Top 10",
+ "Top 10 {name}": "Top 10 {name}",
+ "Top 10 Comedy": "Top 10 Comédia",
+ "Top 10 Drama": "Top 10 Drama",
+ "Top 10 Movies on {name}": "Top 10 Filmes na {name}",
+ "Top 10 Movies Today": "Top 10 Filmes Hoje",
+ "Top 10 on Stremio": "Top 10 no Stremio",
+ "Top 10 Series on {name}": "Top 10 Séries na {name}",
+ "Top 10 Series Today": "Top 10 Séries Hoje",
+ "Top 10 Trending This Week": "Top 10 em Alta Esta Semana",
+ "Top 100 Actors": "Top 100 Atores",
+ "Top 100 Directors": "Top 100 Diretores",
+ "Top 100 on AniList": "Top 100 no AniList",
+ "Top 100 Producers": "Top 100 Produtores",
+ "Top 100 Writers": "Top 100 Roteiristas",
+ "Top 250": "Top 250",
+ "Top Action": "Top Ação",
+ "Top Adventure": "Top Aventura",
+ "Top Airing on MAL": "Top em Exibição no MAL",
+ "Top Animation": "Top Animação",
+ "Top bar": "Barra superior",
+ "Top Comedy": "Top Comédia",
+ "Top Crime": "Top Crime",
+ "Top dock": "Dock superior",
+ "Top Documentary": "Top Documentário",
+ "Top Drama": "Top Drama",
+ "Top Fantasy": "Top Fantasia",
+ "Top Horror": "Top Terror",
+ "Top left": "Superior esquerdo",
+ "Top Movies": "Top Filmes",
+ "Top Movies on MAL": "Top Filmes no MAL",
+ "Top Mystery": "Top Mistério",
+ "Top pick": "Escolha principal",
+ "Top Picks for You": "Escolhas Para Você",
+ "Top rated": "Mais bem avaliados",
+ "Top Rated": "Mais Bem Avaliados",
+ "Top rated abroad": "Mais bem avaliados no exterior",
+ "Top Rated Movies": "Filmes Mais Bem Avaliados",
+ "Top Rated on MAL": "Mais Bem Avaliados no MAL",
+ "Top Rated Series": "Séries Mais Bem Avaliadas",
+ "Top rated television": "Televisão mais bem avaliada",
+ "Top right": "Superior direito",
+ "Top rising": "Em ascensão",
+ "Top Romance": "Top Romance",
+ "Top Sci-Fi": "Top Ficção Científica",
+ "Top Series": "Top Séries",
+ "Top Series on MAL": "Top Séries no MAL",
+ "Top Thriller": "Top Suspense",
+ "Top titles per service. Toggle off the ones you don't pay for.": "Principais títulos por serviço. Desative os que você não assina.",
+ "TorBox API key": "Chave de API do TorBox",
+ "Torrent name": "Nome do torrent",
+ "Torrents": "Torrents",
+ "Total Shots": "Total de Arremessos",
+ "Total Technical Fouls": "Total de Faltas Técnicas",
+ "Total Turnovers": "Total de Perdas de Bola",
+ "Towering Roles": "Papéis Marcantes",
+ "Track": "Faixa",
+ "Track everything you watch, see your watchlist, and get personalized recommendations on Harbor's home page. Free at trakt.tv.": "Acompanhe tudo o que você assiste, veja sua watchlist e receba recomendações personalizadas na home do Harbor. Gratuito em trakt.tv.",
+ "Track people": "Acompanhar pessoas",
+ "Track people ({n})": "Acompanhar pessoas ({n})",
+ "Track switching isn't supported on the current engine. The file's default audio is playing.": "A troca de faixa não é suportada no mecanismo atual. O áudio padrão do arquivo está sendo reproduzido.",
+ "Tracked people": "Pessoas acompanhadas",
+ "Tracks": "Faixas",
+ "TRACKS": "FAIXAS",
+ "Trailer quality": "Qualidade do trailer",
+ "Trakt": "Trakt",
+ "Trakt account limit reached. Upgrade to Trakt VIP or trim your watchlist.": "Limite da conta Trakt atingido. Faça upgrade para Trakt VIP ou reduza sua watchlist.",
+ "Trakt anticipated": "Mais aguardados no Trakt",
+ "Trakt anticipated picks up something": "Trakt encontrou algo esperado",
+ "Trakt Comments": "Comentários do Trakt",
+ "Trakt comments are not available for anime titles.": "Comentários do Trakt não estão disponíveis para títulos de anime.",
+ "Trakt community rating as a percentage.": "Avaliação da comunidade do Trakt em porcentagem.",
+ "Trakt has no upcoming releases for your watchlist this month. Past months and dates more than six months out aren't covered by Trakt's calendar feed.": "O Trakt não tem lançamentos futuros para sua watchlist neste mês. Meses passados e datas com mais de seis meses de antecedência não são cobertos pelo feed de calendário do Trakt.",
+ "Trakt history": "Histórico do Trakt",
+ "Trakt is having server trouble (HTTP {n}). Try again shortly.": "O Trakt está com problemas no servidor (HTTP {n}). Tente novamente em breve.",
+ "Trakt is rate-limiting. Wait a minute and try again.": "O Trakt está limitando as requisições. Aguarde um minuto e tente novamente.",
+ "Trakt rejected the request (account locked or permission denied).": "O Trakt rejeitou a requisição (conta bloqueada ou permissão negada).",
+ "Trakt rejected the request (HTTP {n}).": "O Trakt rejeitou a requisição (HTTP {n}).",
+ "Trakt reported that authorization was denied. Try again if this was unintentional.": "O Trakt informou que a autorização foi negada. Tente novamente se isso não foi intencional.",
+ "Trakt sign-in expired. Reconnect Trakt in settings and try again.": "O login do Trakt expirou. Reconecte o Trakt nas configurações e tente novamente.",
+ "Trakt sources": "Fontes do Trakt",
+ "Trakt watchlist": "Watchlist do Trakt",
+ "Translate descriptions": "Traduzir descrições",
+ "Translate descriptions and synopsis to Arabic": "Traduzir descrições e sinopses para o árabe",
+ "Translate overviews": "Traduzir sinopses",
+ "Translate plot descriptions and taglines into the language above. Turn off to keep English overviews.": "Traduz descrições de enredo e slogans para o idioma acima. Desative para manter as sinopses em inglês.",
+ "Translate posters": "Traduzir pôsteres",
+ "Translate series and movie posters to Arabic if available on TMDB": "Traduzir pôsteres de séries e filmes para o árabe, se disponível no TMDB",
+ "Translate titles": "Traduzir títulos",
+ "Transport": "Transporte",
+ "Trending": "Em alta",
+ "Trending · Cinemeta": "Em alta · Cinemeta",
+ "Trending Anime": "Animes em Alta",
+ "Trending on AniList": "Em alta no AniList",
+ "Trending Series": "Séries em Alta",
+ "Trending This Week": "Em Alta Esta Semana",
+ "Trending tracks star growth across your Harbor visits. Open the addons page again tomorrow and the top risers will appear here.": "O Em Alta acompanha o crescimento de popularidade nas suas visitas ao Harbor. Abra a página de addons novamente amanhã e os que mais subiram aparecerão aqui.",
+ "Trending, in theaters, what's on every streamer.": "Em alta, nos cinemas, o que está em cada streaming.",
+ "Tried IDs: ": "IDs tentados: ",
+ "Troubleshooting": "Solução de problemas",
+ "True Crime": "Crimes Reais",
+ "True Crime Files": "Arquivos de Crimes Reais",
+ "True HDR, embedded": "HDR verdadeiro, incorporado",
+ "True HDR, separate window": "HDR verdadeiro, janela separada",
+ "True Stories": "Histórias Reais",
+ "Try a different category or clear your filters.": "Tente outra categoria ou limpe seus filtros.",
+ "Try a different source.": "Tente outra fonte.",
+ "Try a different spelling, a person's name, a year like \\": "Tente outra grafia, o nome de uma pessoa, um ano como \\",
+ "Try a genre": "Tente um gênero",
+ "Try again": "Tentar novamente",
+ "Try another source.": "Tente outra fonte.",
+ "Try deploy again": "Tentar implantar novamente",
+ "Try signing in to Stremio so Harbor can use your addon collection. Older or foreign titles often need Torrentio + a debrid addon to find anything.": "Tente entrar no Stremio para que o Harbor possa usar sua coleção de addons. Títulos antigos ou estrangeiros geralmente precisam do Torrentio + um addon debrid para encontrar algo.",
+ "Tune picks": "Ajustar escolhas",
+ "Tune the size and corner radius of every poster across Home, Discover, and your library. The preview updates live.": "Ajuste o tamanho e o raio das bordas de todos os pôsteres em Home, Descobrir e sua biblioteca. A prévia atualiza em tempo real.",
+ "Tune your picks": "Ajuste suas escolhas",
+ "Tune your recommendations": "Ajuste suas recomendações",
+ "Tune your Top Picks": "Ajuste suas Escolhas Principais",
+ "Turkish": "Turco",
+ "Turn {name} off": "Desativar {name}",
+ "Turn {name} on": "Ativar {name}",
+ "Turn it on in Player layout": "Ative em Layout do player",
+ "Turn It Up": "Aumentar o Volume",
+ "Turn off": "Desativar",
+ "Turn off for a cleaner grid. Score chips are controlled separately below.": "Desative para uma grade mais limpa. Os chips de nota são controlados separadamente abaixo.",
+ "Turn on": "Ativar",
+ "Turn on if you watch on a laptop or headphones and dialogue feels too quiet next to the effects. Leave off if you have a real surround setup or a soundbar.": "Ative se você assiste no notebook ou com fones e os diálogos ficam baixos demais perto dos efeitos. Deixe desativado se você tem um sistema surround de verdade ou uma soundbar.",
+ "Turn on to show each episode's synopsis under the still.": "Ative para mostrar a sinopse de cada episódio abaixo da imagem.",
+ "Turn on to show the Trakt comments section on movies, shows, and episodes.": "Ative para mostrar a seção de comentários do Trakt em filmes, séries e episódios.",
+ "Turnovers": "Perdas de Bola",
+ "Turns off the fancy scaling and effects so video just plays. The lightest on your machine. Pick this if anything ever stutters or your fan screams.": "Desativa o escalonamento sofisticado e os efeitos para que o vídeo apenas reproduza. O mais leve para sua máquina. Escolha essa opção se algo travar ou a ventoinha disparar.",
+ "TV": "TV",
+ "TV Genre": "Gênero de TV",
+ "TV guide": "Guia de TV",
+ "TV Guide": "Guia de TV",
+ "TV Shows": "Séries",
+ "TV Shows · {n}": "Séries · {n}",
+ "TVDB": "TVDB",
+ "TVDB order": "Ordem do TVDB",
+ "Twist Endings": "Finais Surpreendentes",
+ "Two formats work: a bare RPDB-compatible server URL (your RPDB key above is still sent), or a full URL pattern from services like BetterPosters containing ": "Dois formatos funcionam: uma URL de servidor compatível com RPDB simples (sua chave RPDB acima ainda é enviada), ou um padrão de URL completo de serviços como BetterPosters contendo ",
+ "Two paths: Harbor handles the deploy for you, or you do it yourself with wrangler.": "Dois caminhos: o Harbor cuida do deploy para você, ou você faz sozinho com o wrangler.",
+ "Two-factor authentication code": "Código de autenticação de dois fatores",
+ "Type": "Tipo",
+ "Type on your keyboard or tap the digits above.": "Digite no teclado ou toque nos números acima.",
+ "Type the same 4-digit PIN again.": "Digite o mesmo PIN de 4 dígitos novamente.",
+ "Type the same PIN one more time.": "Digite o mesmo PIN mais uma vez.",
+ "Type what you want in plain language and let a model find it. Bring your own OpenRouter key.": "Digite o que você quer em linguagem natural e deixe um modelo encontrar. Use sua própria chave do OpenRouter.",
+ "Types": "Tipos",
+ "Typography": "Tipografia",
+ "UFOs & Disclosure": "OVNIs e Revelações",
+ "Ukrainian": "Ucraniano",
+ "Unable to connect": "Não foi possível conectar",
+ "Unable to load series information": "Não foi possível carregar as informações da série",
+ "Unavailable for embedded tracks": "Indisponível para faixas incorporadas",
+ "uncached on debrid": "não armazenado em cache no debrid",
+ "Uncharted Worlds": "Mundos Inexplorados",
+ "Undo": "Desfazer",
+ "Undo All": "Desfazer tudo",
+ "Undo last anchor": "Desfazer última âncora",
+ "Unhide {name}": "Reexibir {name}",
+ "Uninstalling": "Desinstalando",
+ "United Kingdom": "Reino Unido",
+ "United States": "Estados Unidos",
+ "unknown": "desconhecido",
+ "Unknown": "Desconhecido",
+ "unknown error": "erro desconhecido",
+ "Unknown release": "Lançamento desconhecido",
+ "Unlimited Durable Object storage at $0.20 per million reads.": "Armazenamento ilimitado de Durable Object a US$ 0,20 por milhão de leituras.",
+ "Unmute": "Ativar som",
+ "Unmute · M": "Ativar som · M",
+ "Unmute trailer": "Ativar som do trailer",
+ "Unpin category": "Desafixar categoria",
+ "Unpin channel": "Desafixar canal",
+ "Unpin from top": "Desafixar do topo",
+ "unsaved changes": "alterações não salvas",
+ "Until {time} · {dur}": "Até {time} · {dur}",
+ "Untitled": "Sem título",
+ "Untitled addon": "Addon sem título",
+ "Untitled filter": "Filtro sem título",
+ "Up": "Cima",
+ "Up next": "A seguir",
+ "Up Next": "A seguir",
+ "Up next / episodes": "A seguir / episódios",
+ "Up next in {s}s": "A seguir em {s}s",
+ "Upcoming": "Próximos",
+ "Upcoming Anime": "Animes Futuros",
+ "Upcoming episodes and movies from your saved shows": "Episódios e filmes futuros das suas séries salvas",
+ "Upcoming episodes and movies from your Simkl plan-to-watch list": "Episódios e filmes futuros da sua lista de planos de assistir do Simkl",
+ "Upcoming episodes and movies from your Trakt watchlist": "Episódios e filmes futuros da sua watchlist do Trakt",
+ "Upcoming episodes and movies from your Trakt watchlist.": "Episódios e filmes futuros da sua watchlist do Trakt.",
+ "Upcoming items from your watchlist": "Próximos itens da sua watchlist",
+ "Upcoming Season": "Próxima Temporada",
+ "Upconverts SDR video to HDR on an Nvidia RTX GPU (turn on RTX Video HDR in the Nvidia app; needs GPU decode). Experimental. Unavailable while SVP is active for the current video.": "Converte vídeo SDR para HDR em uma GPU Nvidia RTX (ative o RTX Video HDR no app da Nvidia; precisa de decodificação por GPU). Experimental. Indisponível enquanto o SVP estiver ativo para o vídeo atual.",
+ "Update": "Atualizar",
+ "Update now": "Atualizar agora",
+ "update.available": "Atualização disponível",
+ "update.download": "Baixar",
+ "update.downloadComplete": "Download concluído",
+ "update.downloading": "Baixando atualização",
+ "update.errorServer": "Ocorreu um erro ao conectar ao servidor de atualização.",
+ "update.failed": "Falha na atualização",
+ "update.fetching": "Buscando a versão mais recente",
+ "update.harborVersion": "Harbor {version}",
+ "update.installing": "Instalando atualização",
+ "update.installRestart": "Instalar e reiniciar",
+ "update.keepUsing": "Continue usando o Harbor durante o download",
+ "update.later": "Depois",
+ "update.of": "{downloaded} de {total}",
+ "update.ready": "Atualização pronta para instalar",
+ "update.restartAuto": "O Harbor será reiniciado automaticamente.",
+ "update.tryAgain": "Tentar novamente",
+ "Updated": "Atualizado",
+ "Updates": "Atualizações",
+ "Updating": "Atualizando",
+ "Updating {name}": "Atualizando {name}",
+ "Upgrade subtitles when better ones load": "Atualizar legendas quando opções melhores carregarem",
+ "Upload a pattern to tile across the bar": "Envie um padrão para preencher a barra em mosaico",
+ "Upload font": "Enviar fonte",
+ "Upload icon": "Enviar ícone",
+ "Upload nyan cat, a sticker, anything": "Envie um nyan cat, um adesivo, qualquer coisa",
+ "Upload photo": "Enviar foto",
+ "Uploading worker, wiring durable object…": "Enviando worker, conectando durable object…",
+ "URL + EPG saved": "URL + EPG salvos",
+ "URL cannot be empty": "A URL não pode estar vazia",
+ "URL is saved and ready to share.": "A URL está salva e pronta para compartilhar.",
+ "URL on r/Stremio or wherever your community lives. Other Harbor users paste it into Settings, Harbor Relay,": "URL no r/Stremio ou onde quer que sua comunidade esteja. Outros usuários do Harbor colam em Configurações, Harbor Relay,",
+ "URL saved": "URL salva",
+ "URLs can carry debrid keys or tokens; reveal when you need to copy": "URLs podem conter chaves ou tokens de debrid; revele quando precisar copiar",
+ "Use a custom meta addon you installed (e.g. a localized Cinemeta) for titles and descriptions instead of the built-in Cinemeta. Falls back to Cinemeta if yours has no data.": "Use um addon de metadados personalizado que você instalou (ex.: um Cinemeta localizado) para títulos e descrições em vez do Cinemeta integrado. Volta a usar o Cinemeta se o seu não tiver dados.",
+ "Use a different URL": "Usar uma URL diferente",
+ "Use a separate Stremio account": "Usar uma conta Stremio separada",
+ "Use AniList avatar": "Usar avatar do AniList",
+ "Use exclusively (never fall back to local)": "Usar exclusivamente (nunca recorrer ao local)",
+ "Use free IMDb data without a TMDB key": "Usar dados gratuitos do IMDb sem uma chave do TMDB",
+ "Use Harbor's built-in engine (beta)": "Usar o mecanismo integrado do Harbor (beta)",
+ "Use Harbor's public relay": "Usar o relay público do Harbor",
+ "Use mpv engine": "Usar mecanismo mpv",
+ "Use my AniList avatar as my Harbor avatar": "Usar meu avatar do AniList como avatar do Harbor",
+ "Use my Simkl avatar as my Harbor avatar": "Usar meu avatar do Simkl como avatar do Harbor",
+ "Use my style": "Usar meu estilo",
+ "Use my Trakt avatar as my Harbor avatar": "Usar meu avatar do Trakt como avatar do Harbor",
+ "Use MyAnimeList avatar": "Usar avatar do MyAnimeList",
+ "Use Simkl avatar": "Usar avatar do Simkl",
+ "Use the native window title bar": "Usar a barra de título nativa da janela",
+ "Use the primary profile's Stremio library, watchlist, and addons.": "Usar a biblioteca, a watchlist e os addons do Stremio do perfil principal.",
+ "Use Trakt avatar": "Usar avatar do Trakt",
+ "Use your operating system's native title bar and window buttons instead of Harbor's built-in ones. Handy if the in-app buttons ever feel out of reach, like during playback.": "Use a barra de título e os botões de janela nativos do seu sistema operacional em vez dos integrados do Harbor. Útil se os botões do app ficarem difíceis de alcançar, como durante a reprodução.",
+ "Used for streaming availability and the Now Playing release window.": "Usado para disponibilidade de streaming e a janela de lançamento do Em Reprodução.",
+ "Used for streaming availability and the Now Playing release window. Pick a country and Harbor can match metadata and subtitle languages to it.": "Usado para disponibilidade de streaming e a janela de lançamento do Em Reprodução. Escolha um país e o Harbor pode ajustar os metadados e os idiomas de legenda de acordo.",
+ "Used for your cursor in Watch Together, your draw color, and your name pill in chat.": "Usado para o seu cursor no Assistir Juntos, sua cor de desenho e o selo com seu nome no chat.",
+ "Used to lift Time's Up and to leave the kids space.": "Usado para liberar o Time's Up e sair do espaço infantil.",
+ "Usenet": "Usenet",
+ "Username": "Nome de usuário",
+ "Using AIOStreams or another aggregator addon? Its own sorting and filtering happen inside the addon before Harbor ever sees the results, then Harbor applies the stream filter and result order above on top. If results look thinner than expected, keep one side permissive: either relax the addon's internal filters or set Harbor's stream filter to Balanced or Off.": "Está usando o AIOStreams ou outro addon agregador? A ordenação e a filtragem dele acontecem dentro do addon antes de o Harbor ver os resultados, e depois o Harbor aplica o filtro de streams e a ordem de resultados acima em cima disso. Se os resultados parecerem mais escassos que o esperado, mantenha um dos lados permissivo: relaxe os filtros internos do addon ou defina o filtro de streams do Harbor como Equilibrado ou Desativado.",
+ "v3 API key": "chave de API v3",
+ "Venice": "Veneza",
+ "Verify": "Verificar",
+ "Verify & connect": "Verificar e conectar",
+ "Verify it works": "Verificar se funciona",
+ "Verifying": "Verificando",
+ "Version": "Versão",
+ "Version and capabilities come straight from the addon's manifest. Ratings and categories come from the": "A versão e os recursos vêm diretamente do manifesto do addon. As avaliações e categorias vêm do",
+ "via": "via",
+ "Video {n}": "Vídeo {n}",
+ "Video bitrate": "Taxa de bits do vídeo",
+ "Video codec": "Codec de vídeo",
+ "Videos": "Vídeos",
+ "Vietnam & After": "Vietnã e Depois",
+ "Vietnamese": "Vietnamita",
+ "View all": "Ver tudo",
+ "View all {n} winners": "Ver todos os {n} vencedores",
+ "View details": "Ver detalhes",
+ "View more": "Ver mais",
+ "View on Letterboxd": "Ver no Letterboxd",
+ "View profile": "Ver perfil",
+ "View Series": "Ver Série",
+ "Viewer avatars": "Avatares dos espectadores",
+ "visible": "visível",
+ "Visible": "Visível",
+ "Vocal clarity": "Clareza vocal",
+ "Volume": "Volume",
+ "VOLUME": "VOLUME",
+ "Volume control": "Controle de volume",
+ "Volume down": "Diminuir volume",
+ "Volume pop-up while watching": "Pop-up de volume durante a exibição",
+ "Volume up": "Aumentar volume",
+ "Vote average ≥ 8.0": "Média de votos ≥ 8.0",
+ "Votes": "Votos",
+ "Wait for the upload to finish. The relay URL gets written to": "Aguarde o envio terminar. A URL do relay é gravada em",
+ "Wait for the upload to finish. The relay URL gets written to {code} in Harbor settings.": "Aguarde o envio terminar. A URL do relay é gravada em {code} nas configurações do Harbor.",
+ "Waiting for the host to start": "Aguardando o host iniciar",
+ "Waiting for Trakt…": "Aguardando o Trakt…",
+ "Waiting for you to authorize on simkl.com…": "Aguardando sua autorização em simkl.com…",
+ "Waiting for you to authorize on trakt.tv…": "Aguardando sua autorização em trakt.tv…",
+ "Walks": "Caminhadas",
+ "Want to change the ratio mid-playback? The live aspect button is hidden by default to keep the player tidy.": "Quer mudar a proporção durante a reprodução? O botão de proporção ao vivo fica oculto por padrão para manter o player limpo.",
+ "Want to fix it yourself?": "Quer consertar você mesmo?",
+ "Wanted dead or alive": "Procurado, vivo ou morto",
+ "War": "Guerra",
+ "War Films": "Filmes de Guerra",
+ "War Stories": "Histórias de Guerra",
+ "Wars of our time": "Guerras do nosso tempo",
+ "Watch again": "Assistir novamente",
+ "Watch from the beginning": "Assistir desde o início",
+ "Watch my local copy": "Assistir minha cópia local",
+ "Watch on": "Assistir em",
+ "Watch on YouTube": "Assistir no YouTube",
+ "Watch party join button": "Botão para entrar na watch party",
+ "Watch together": "Assistir juntos",
+ "Watch Together": "Assistir Juntos",
+ "Watch Together needs a relay.": "Assistir Juntos precisa de um relay.",
+ "Watch Together panel": "Painel do Assistir Juntos",
+ "Watch Together rooms are routed through Harbor's hosted relay.": "As salas do Assistir Juntos passam pelo relay hospedado do Harbor.",
+ "Watch Together rooms drop after 6 hours": "As salas do Assistir Juntos são encerradas após 6 horas",
+ "Watch trailer": "Assistir trailer",
+ "Watched": "Assistido",
+ "Watched {ago}": "Assistido {ago}",
+ "Watched by {name}": "Assistido por {name}",
+ "Watched on Trakt": "Assistido no Trakt",
+ "Watching": "Assistindo",
+ "Watching for ad, analytics, and tracking requests. Harbor itself sends zero telemetry.": "Monitorando requisições de anúncios, análise e rastreamento. O próprio Harbor não envia nenhuma telemetria.",
+ "Watchlist": "Lista de interesse",
+ "Watchlist badge": "Selo da lista de interesse",
+ "Watchlist is what you've saved for later. History is everything you've watched. Local is files on your computer.": "Lista de interesse é o que você salvou para depois. Histórico é tudo o que você já assistiu. Local são arquivos no seu computador.",
+ "Watchlist only": "Somente lista de interesse",
+ "Watchlist shows only saved titles": "A lista de interesse mostra apenas títulos salvos",
+ "We could not find a working stream": "Não encontramos um stream funcionando",
+ "We need to check your age before you sail ahead. Three quick questions a working adult would know in their sleep. Get them all right and the adult shelf opens.": "Precisamos confirmar sua idade antes de você seguir em frente. Três perguntas rápidas que qualquer adulto responderia dormindo. Acerte todas e a prateleira adulta é liberada.",
+ "We opened {url} in your browser. Enter the code below.": "Abrimos {url} no seu navegador. Digite o código abaixo.",
+ "We'll name it from the URL.": "Vamos nomeá-lo com base na URL.",
+ "We'll save your spot so you can pick up right where you left off.": "Vamos salvar seu progresso para você continuar de onde parou.",
+ "Wear your Simkl profile picture across Harbor instead of the default.": "Use sua foto de perfil do Simkl em todo o Harbor em vez da padrão.",
+ "Wear your Trakt profile picture across Harbor instead of the default.": "Use sua foto de perfil do Trakt em todo o Harbor em vez da padrão.",
+ "Web": "Web",
+ "Web build": "Build web",
+ "Webhooks": "Webhooks",
+ "Weight": "Peso",
+ "Welcome aboard": "Bem-vindo a bordo",
+ "Werner's World": "O Mundo de Werner",
+ "Western": "Faroeste",
+ "What actually happened": "O que realmente aconteceu",
+ "What broke?": "O que quebrou?",
+ "What everyone has been quietly binging this week.": "O que todo mundo tem maratonado discretamente esta semana.",
+ "What gets sent": "O que é enviado",
+ "What gets through": "O que passa",
+ "What happens when you hit Play on a title. Instant just starts; Manual lets you pick the source.": "O que acontece quando você aperta Reproduzir em um título. Instantâneo apenas inicia; Manual permite escolher a fonte.",
+ "What is this title?": "O que é este título?",
+ "What is this?": "O que é isso?",
+ "What people are watching": "O que as pessoas estão assistindo",
+ "What Play does when a movie or episode also exists on your disk. Autoplay always prefers the local copy unless set to Stream.": "O que o botão Reproduzir faz quando um filme ou episódio também existe no seu disco. A reprodução automática sempre prefere a cópia local, a menos que esteja definida como Transmitir.",
+ "What should we watch?": "O que vamos assistir?",
+ "What the clock labels show on the seek bar.": "O que os rótulos de tempo mostram na barra de busca.",
+ "What the worker does": "O que o worker faz",
+ "What to include": "O que incluir",
+ "What to record": "O que gravar",
+ "What to send": "O que enviar",
+ "What to watch tonight": "O que assistir hoje à noite",
+ "What you expected": "O que você esperava",
+ "What's hot this week, what's prestige forever, what's worth the hours.": "O que está bombando esta semana, o que é prestígio eterno, o que vale a pena investir horas.",
+ "Whatever your OS uses.": "O que quer que seu sistema operacional use.",
+ "WHEN": "QUANDO",
+ "When a flagged ad plays, a Skip button slides in so you jump straight past it.": "Quando um anúncio marcado é reproduzido, um botão Pular desliza para você passar direto por ele.",
+ "When a movie or episode starts, briefly show its IMDb parental guide (violence, profanity, substances, frightening scenes and more) with severity. Fades on its own.": "Quando um filme ou episódio começa, exibir brevemente seu guia parental do IMDb (violência, palavrões, substâncias, cenas assustadoras e mais) com o nível de gravidade. Desaparece sozinho.",
+ "When a release ships multiple audio tracks, Harbor selects the first match from this list.": "Quando um release traz várias faixas de áudio, o Harbor seleciona a primeira correspondência desta lista.",
+ "When a title is in your local library": "Quando um título está na sua biblioteca local",
+ "When an episode ends, automatically start the next one. Off lets the episode finish and stop.": "Quando um episódio termina, iniciar automaticamente o próximo. Desativado deixa o episódio terminar e parar.",
+ "When auto-playing the next episode, keep the same release/source you were just watching instead of Harbor's top-ranked stream. Falls back to the best stream if that source isn't available.": "Ao reproduzir automaticamente o próximo episódio, manter o mesmo release/fonte que você estava assistindo em vez do stream mais bem classificado pelo Harbor. Recorre ao melhor stream se essa fonte não estiver disponível.",
+ "When Esc would close the player, show a quick confirm first. You can tick \\": "Quando Esc fosse fechar o player, mostrar uma confirmação rápida antes. Você pode marcar \\",
+ "When in fullscreen, Esc leaves fullscreen instead of closing the player. Press Esc again to close. Turn off to make Esc always close.": "Em tela cheia, Esc sai da tela cheia em vez de fechar o player. Pressione Esc novamente para fechar. Desative para que Esc sempre feche.",
+ "When playback starts, Harbor automatically finds and loads a subtitle in one of these languages, so you never have to search by hand. The first available match wins, so put your main language first.": "Quando a reprodução começa, o Harbor encontra e carrega automaticamente uma legenda em um desses idiomas, para você nunca precisar buscar manualmente. A primeira correspondência disponível prevalece, então coloque seu idioma principal primeiro.",
+ "When playback starts, Harbor finds and loads a subtitle in one of these languages automatically. The first available match wins, so put your main language first.": "Quando a reprodução começa, o Harbor encontra e carrega automaticamente uma legenda em um desses idiomas. A primeira correspondência disponível vence, então coloque seu idioma principal primeiro.",
+ "When the audio already matches your subtitle language, pick a forced track (foreign dialogue and signs only) instead of full subtitles. If the file has no forced track, subtitles stay off.": "Quando o áudio já corresponde ao idioma da sua legenda, escolher uma faixa forçada (apenas diálogos estrangeiros e letreiros) em vez de legendas completas. Se o arquivo não tiver faixa forçada, as legendas permanecem desativadas.",
+ "When the file ships its own subtitle track, keep it selected instead of switching to a downloaded one. Embedded tracks are usually the best synced.": "Quando o arquivo traz sua própria faixa de legenda, mantê-la selecionada em vez de trocar para uma baixada. Faixas incorporadas costumam ter a melhor sincronização.",
+ "When the Up Next pill appears before an episode ends. Auto scales to the episode length, so short episodes stop prompting so early. Off hides it.": "Quando o indicador Próximo aparece antes do episódio terminar. Automático se ajusta à duração do episódio, então episódios curtos param de avisar tão cedo. Desativado o oculta.",
+ "When time's up, the ship sails away until a parent unlocks it.": "Quando o tempo acabar, o navio zarpa até um responsável desbloqueá-lo.",
+ "When you back out of a title, Harbor saves a frame so the Continue Watching card looks like the spot you left.": "Quando você sai de um título, o Harbor salva um quadro para que o card de Continuar Assistindo mostre o ponto onde você parou.",
+ "When you back out of a title, Harbor saves a frame so the Continue Watching card looks like the spot you left. Tune how long they stick around, or wipe them all.": "Quando você sai de um título, o Harbor salva um quadro para que o card Continuar Assistindo mostre o ponto onde você parou. Ajuste por quanto tempo eles ficam ou apague todos.",
+ "When you exit fullscreen, return the window to exactly where it was. Turn off to center it on screen instead.": "Ao sair da tela cheia, retornar a janela exatamente para onde estava. Desative para centralizá-la na tela.",
+ "When you exit playback, keep the window fullscreen instead of dropping back to a window. Turn off to leave fullscreen automatically whenever the player closes.": "Ao sair da reprodução, manter a janela em tela cheia em vez de voltar para uma janela. Desative para sair da tela cheia automaticamente sempre que o player fechar.",
+ "When you finish an episode or movie, remove its downloaded file right away. Something you stop partway through is kept so you can resume.": "Ao terminar um episódio ou filme, remover o arquivo baixado imediatamente. Algo que você interrompe no meio é mantido para você continuar depois.",
+ "When you finish an episode, the Home Continue Watching card moves on to the next episode instead of sitting at 0 minutes left.": "Ao terminar um episódio, o card Continuar Assistindo na Início avança para o próximo episódio em vez de ficar parado com 0 minutos restantes.",
+ "When you have no debrid set up, or a torrent isn't cached, stream it straight from the bundled engine on localhost:11470. This connects to peers over your own connection, the same way Stremio's built-in streaming does.": "Quando você não tem um debrid configurado, ou um torrent não está em cache, transmita direto do mecanismo integrado em localhost:11470. Isso conecta a peers pela sua própria conexão, do mesmo jeito que o streaming nativo do Stremio faz.",
+ "When you hit Play on something you've partly watched, show a prompt to resume from where you left off or start over. Also covers items synced from Stremio or Trakt.": "Ao apertar Reproduzir em algo que você assistiu parcialmente, mostrar um aviso para continuar de onde parou ou começar de novo. Também cobre itens sincronizados do Stremio ou Trakt.",
+ "When you resume something you were watching, replay the exact stream you last used (same addon and source) instead of opening the picker again. Turn off to always choose fresh.": "Ao continuar algo que você estava assistindo, reproduzir exatamente o mesmo stream usado da última vez (mesmo addon e fonte) em vez de abrir o seletor novamente. Desative para sempre escolher do zero.",
+ "Where alerts go": "Para onde os alertas vão",
+ "Where do you want to start?": "Por onde você quer começar?",
+ "Where Harbor saves videos when you hit Download in the player. Pick any folder, including one on a different drive.": "Onde o Harbor salva os vídeos quando você aperta Baixar no player. Escolha qualquer pasta, inclusive em outra unidade.",
+ "Where machines are taking us": "Para onde as máquinas estão nos levando",
+ "Where the volume overlay appears on the video.": "Onde a sobreposição de volume aparece no vídeo.",
+ "Where to watch": "Onde assistir",
+ "Where your data lives": "Onde seus dados ficam",
+ "Where your video comes from": "De onde vem o seu vídeo",
+ "Which account should the relay live in?": "Em qual conta o relay deve ficar?",
+ "Which audio and subtitle languages rank first in stream lists.": "Quais idiomas de áudio e legenda ficam em primeiro nas listas de streams.",
+ "While the world's asleep": "Enquanto o mundo dorme",
+ "Who's watching: {a} · Default: {b}": "Quem está assistindo: {a} · Padrão: {b}",
+ "Who's watching?": "Quem está assistindo?",
+ "Wide search · still empty": "Busca ampla · ainda vazia",
+ "Wider spacing": "Espaçamento mais amplo",
+ "Width": "Largura",
+ "Wild Bunch Era": "Era do Bando Selvagem",
+ "will be removed from Harbor. Anything you've set to use it will fall back to Inter.": "será removido do Harbor. Tudo que você configurou para usá-la voltará a usar Inter.",
+ "WIN": "VITÓRIA",
+ "Window title bar": "Barra de título da janela",
+ "Windowed": "Em janela",
+ "Winner": "Vencedor",
+ "Winning films & shows": "Filmes e séries vencedores",
+ "Witching Hour": "Hora das Bruxas",
+ "with a WebSocket upgrade: opens a Watch Together room. State is held in a Durable Object, no persistence beyond the active session.": "com upgrade de WebSocket: abre uma sala do Watch Together. O estado é mantido em um Durable Object, sem persistência além da sessão ativa.",
+ "With no TMDB key, the About panel pulls cast, crew, and title info from a free IMDb source. TMDB is still used whenever a key is set.": "Sem uma chave do TMDB, o painel Sobre busca elenco, equipe e informações do título de uma fonte gratuita do IMDb. O TMDB continua sendo usado sempre que uma chave estiver configurada.",
+ "With subtitles": "Com legendas",
+ "With the city surrounded, an unlikely alliance forms as a long-buried secret finally comes to light.": "Com a cidade cercada, uma aliança improvável se forma enquanto um segredo há muito enterrado finalmente vem à tona.",
+ "Without subtitles": "Sem legendas",
+ "Wizards & Kings": "Magos & Reis",
+ "Wonder & Dread": "Maravilha & Pavor",
+ "Worker crashed or hit memory limits": "O worker travou ou atingiu o limite de memória",
+ "Worker deleted or URL wrong": "Worker excluído ou URL incorreta",
+ "Workers Scripts": "Workers Scripts",
+ "Working…": "Trabalhando…",
+ "Worlds Apart": "Mundos Distantes",
+ "Worlds of Wonder": "Mundos de Maravilhas",
+ "Worlds to step into before the inbox catches up.": "Mundos para explorar antes que a caixa de entrada te alcance.",
+ "Worlds wide enough for an hour or a whole free afternoon.": "Mundos grandes o bastante para uma hora ou uma tarde livre inteira.",
+ "Worse": "Pior",
+ "Worth catching up on": "Vale a pena colocar em dia",
+ "Worth knowing": "Vale saber",
+ "Worth the lost hour": "Vale a hora perdida",
+ "Write a comment...": "Escreva um comentário...",
+ "Writer": "Roteirista",
+ "Writers": "Roteiristas",
+ "Writing": "Escrevendo",
+ "Wrong channel or source?": "Canal ou fonte errada?",
+ "Wrong episode or quality?": "Episódio ou qualidade errada?",
+ "Wrong PIN": "PIN incorreto",
+ "Wrong year": "Ano errado",
+ "WWII on Film": "Segunda Guerra no Cinema",
+ "XMLTV only": "Somente XMLTV",
+ "Xtream": "Xtream",
+ "Xtream codes": "Códigos Xtream",
+ "Xtream login was rejected": "O login do Xtream foi rejeitado",
+ "Xtream provider": "Provedor Xtream",
+ "Year": "Ano",
+ "Year, runtime, language, and country filters need TMDB. Genre browsing falls back to Cinemeta automatically.": "Filtros de ano, duração, idioma e país precisam do TMDB. A navegação por gênero recorre ao Cinemeta automaticamente.",
+ "Yellow Cards": "Cartões Amarelos",
+ "Yes": "Sim",
+ "You ★ {rating}": "Você ★ {rating}",
+ "You can switch later in Settings under Library & metadata.": "Você pode mudar isso depois em Configurações, em Biblioteca e metadados.",
+ "You have unsaved anchors. They will be lost.": "Você tem âncoras não salvas. Elas serão perdidas.",
+ "You have unsaved changes that will be lost when switching profiles. Continue?": "Você tem alterações não salvas que serão perdidas ao trocar de perfil. Continuar?",
+ "You have unsaved changes. Close the editor and discard them?": "Você tem alterações não salvas. Fechar o editor e descartá-las?",
+ "You haven't commented yet": "Você ainda não comentou",
+ "You Might Also Like": "Você Também Pode Gostar",
+ "You must install this addon in your Stremio account first so Harbor can fetch its works.": "Você deve instalar esta extensão na sua conta do Stremio primeiro para que o Harbor possa buscar seus conteúdos.",
+ "You picked only one anchor. This applies a constant shift (no FPS-drift correction). Continue?": "Você escolheu apenas uma âncora. Isso aplica um deslocamento constante (sem correção de drift de FPS). Continuar?",
+ "You rated this build {label}.": "Você avaliou esta versão como {label}.",
+ "You should get a message from your new bot.": "Você deve receber uma mensagem do seu novo bot.",
+ "You'll need this to access settings while controls are on.": "Você precisará disso para acessar as configurações enquanto os controles estiverem ativos.",
+ "You're in": "Você está dentro",
+ "You're modding your own client. Custom JS has full access to your Harbor session. Only paste code you wrote or fully trust.": "Você está modificando seu próprio cliente. O JS personalizado tem acesso total à sua sessão do Harbor. Cole apenas código que você mesmo escreveu ou em que confia totalmente.",
+ "You're offline": "Você está offline",
+ "You're offline. Your downloads still play.": "Você está offline. Seus downloads ainda tocam.",
+ "You're on the latest build. Earlier builds show up here as new versions ship.": "Você está na versão mais recente. Versões anteriores aparecem aqui conforme novas versões são lançadas.",
+ "You're on the latest version.": "Você está na versão mais recente.",
+ "You're set.": "Tudo pronto.",
+ "You're verified": "Você está verificado",
+ "You've reached the end · {count} titles": "Você chegou ao fim · {count} títulos",
+ "You've reached the end · {n} addons": "Você chegou ao fim · {n} addons",
+ "Your account hasn't picked its free {code} address yet. Cloudflare only asks the first time. Quick to set up.": "Sua conta ainda não escolheu seu endereço {code} gratuito. O Cloudflare pergunta apenas na primeira vez. Rápido de configurar.",
+ "Your addon collection changed on another device. Nothing was written.": "Sua coleção de addons mudou em outro dispositivo. Nada foi gravado.",
+ "Your AniList is empty": "Seu AniList está vazio",
+ "Your AniList: {name}": "Seu AniList: {name}",
+ "Your collection.": "Sua coleção.",
+ "Your color": "Sua cor",
+ "Your copy runs {guest}, host's runs {host}. Sync may drift.": "Sua cópia está na {guest}, a do host está na {host}. A sincronização pode desalinhar.",
+ "Your Discovery Queue": "Sua Fila de Descoberta",
+ "Your face in Watch Together rooms, sessions, and chat. Sits on top of your Stremio account.": "Seu rosto nas salas, sessões e chat do Assistir Juntos. Fica em cima da sua conta Stremio.",
+ "YOUR FILTERS": "SEUS FILTROS",
+ "Your IP or device is blocked. Some providers geo restrict or limit how many devices can connect at once.": "Seu IP ou dispositivo está bloqueado. Alguns provedores restringem por região ou limitam quantos dispositivos podem se conectar ao mesmo tempo.",
+ "Your Letterboxd password": "Sua senha do Letterboxd",
+ "Your library and watch progress sync here.": "Sua biblioteca e progresso de exibição sincronizam aqui.",
+ "Your MAL: {name}": "Seu MAL: {name}",
+ "Your name": "Seu nome",
+ "Your network blocks UDP, so DHT is offline, but HTTPS trackers are reachable over TCP. Streams can still find peers, they may just take a little longer to start.": "Sua rede bloqueia UDP, então o DHT está offline, mas os trackers HTTPS são alcançáveis via TCP. Os streams ainda podem encontrar peers, só podem demorar um pouco mais para iniciar.",
+ "Your rating": "Sua avaliação",
+ "Your relay": "Seu relay",
+ "Your relay is live": "Seu relay está no ar",
+ "Your relay URL": "Sua URL de relay",
+ "Your saved shows have no episodes scheduled for this month. Switch to All upcoming to browse the full release calendar.": "Suas séries salvas não têm episódios programados para este mês. Mude para Todos os próximos para navegar pelo calendário completo de lançamentos.",
+ "Your Simkl plan-to-watch list has no episodes airing this month. Switch to All upcoming to browse everything.": "Sua lista de planos-para-assistir do Simkl não tem episódios exibindo neste mês. Mude para Todos os próximos para navegar por tudo.",
+ "Your Streaming": "Seu Streaming",
+ "Your streaming server address": "Endereço do seu servidor de streaming",
+ "Your Stremio account": "Sua conta Stremio",
+ "Your Stremio library + addons sync in untouched.": "Sua biblioteca do Stremio + addons sincronizam sem alterações.",
+ "Your Stremio sign-in. Library, watch progress, and addons sync from here.": "Seu login do Stremio. Biblioteca, progresso de visualização e complementos sincronizam a partir daqui.",
+ "Your style is overriding the embedded subtitle's own styling": "Seu estilo está sobrepondo o estilo próprio da legenda incorporada",
+ "Your themes": "Seus temas",
+ "Your Trakt watchlist": "Sua watchlist do Trakt",
+ "Your Trakt watchlist is empty, nothing to import.": "Sua watchlist do Trakt está vazia, nada para importar.",
+ "Your TV": "Sua TV",
+ "Your watchlist is empty": "Sua watchlist está vazia",
+ "Your watchlist is empty, nothing to send.": "Sua watchlist está vazia, nada para enviar.",
+ "Yours": "Sua",
+ "Zoom": "Zoom",
+ "Zoom {pct}%": "Zoom {pct}%",
+ "Zoom in": "Aumentar zoom",
+ "Zoom out": "Diminuir zoom",
+ "العربية": "العربية"
+}
diff --git a/src/lib/i18n/locales/pt.ts b/src/lib/i18n/locales/pt.ts
index cbfe89a16..0e2cde4cb 100644
--- a/src/lib/i18n/locales/pt.ts
+++ b/src/lib/i18n/locales/pt.ts
@@ -23,6 +23,9 @@ import addons from "./pt/addons";
import extra from "./pt/extra";
import manga from "./pt/manga";
import controllers from "./pt/controllers";
+import people from "./pt/people";
+import profileCustomization from "./pt/profile-customization";
+import mobileManga from "./pt/mobile-manga";
import used from "./pt/used";
const pt: Record = {
@@ -51,6 +54,9 @@ const pt: Record = {
...extra,
...manga,
...controllers,
+ ...people,
+ ...profileCustomization,
+ ...mobileManga,
...used,
};
diff --git a/src/lib/i18n/locales/pt/chrome.ts b/src/lib/i18n/locales/pt/chrome.ts
index e0fac47dc..cbaf18d63 100644
--- a/src/lib/i18n/locales/pt/chrome.ts
+++ b/src/lib/i18n/locales/pt/chrome.ts
@@ -1,9 +1,11 @@
const chrome: Record = {
"nav.home": "Início",
"nav.discover": "Descobrir",
+ "nav.catalogs": "Catálogos",
"nav.movies": "Filmes",
"nav.shows": "Séries",
"nav.anime": "Animes",
+ "nav.manga": "Mangá",
"nav.live": "TV ao Vivo",
"nav.playlists": "Playlists",
"nav.calendar": "Calendário",
@@ -35,7 +37,6 @@ const chrome: Record = {
"chrome.restore": "Restaurar",
"chrome.watchTogether": "Assistir junto",
"chrome.scrollForMore": "Role para ver mais",
- "chrome.backToTop": "Voltar ao topo",
"chrome.locked": "Bloqueado",
"chrome.parentalOn": "Controle parental ativado",
"chrome.lockedRequiresPin": "{label} (bloqueado, requer PIN)",
diff --git a/src/lib/i18n/locales/pt/downloads.ts b/src/lib/i18n/locales/pt/downloads.ts
index 8e69fcd6b..f8f778d5c 100644
--- a/src/lib/i18n/locales/pt/downloads.ts
+++ b/src/lib/i18n/locales/pt/downloads.ts
@@ -9,6 +9,8 @@ const downloads: Record = {
"Failed: {error}": "Falhou: {error}",
"Interrupted: re-download to finish": "Interrompido: baixe novamente para concluir",
"Cancel download": "Cancelar download",
+ "Pause download": "Pausar download",
+ "Resume download": "Retomar download",
"Delete download and file": "Excluir download e arquivo",
"Download video": "Baixar vídeo",
"Download to disk": "Baixar para o disco",
diff --git a/src/lib/i18n/locales/pt/misc.ts b/src/lib/i18n/locales/pt/misc.ts
index 805afcab6..e8ae2da9c 100644
--- a/src/lib/i18n/locales/pt/misc.ts
+++ b/src/lib/i18n/locales/pt/misc.ts
@@ -815,6 +815,30 @@ const misc: Record = {
"Comedy": "Comédia",
"Animation": "Animação",
"Music": "Música",
+ "Share collection": "Compartilhar coleção",
+ "Anyone with the link can open this collection once your Harbor server is live.": "Qualquer pessoa com o link pode abrir esta coleção assim que o seu servidor Harbor estiver ativo.",
+ "Paste this code into Harbor to open the collection.": "Cole este código no Harbor para abrir a coleção.",
+ "Shared to the community": "Compartilhada com a comunidade",
+ "Share to the community": "Compartilhar com a comunidade",
+ "Listed collections will appear in community browse when that rolls out.": "As coleções listadas aparecerão na navegação da comunidade quando esse recurso for lançado.",
+ "Sign in to get a shareable link.": "Entre para obter um link compartilhável.",
+ "Link": "Link",
+ "Code": "Código",
+ "Removed from {page}": "Removido de {page}",
+ "That page is full": "Essa página está cheia",
+ "Added to {page}": "Adicionado a {page}",
+ "Show as a row on": "Mostrar como fileira em",
+ "The collection shows up as its own row you can reorder or hide from that page.": "A coleção aparece como uma fileira própria que você pode reordenar ou ocultar dessa página.",
+ "This collection is no longer here.": "Esta coleção não está mais aqui.",
+ "Back to collections": "Voltar às coleções",
+ "Add to a page": "Adicionar a uma página",
+ "Open the editor to add the movies, shows, and manga that belong in this collection.": "Abra o editor para adicionar os filmes, séries e mangás que fazem parte desta coleção.",
+ "Add titles": "Adicionar títulos",
+ "Tags": "Tags",
+ "Add up to {max} tags so people can find this in the community.": "Adicione até {max} tags para que as pessoas encontrem isto na comunidade.",
+ "Remove tag": "Remover tag",
+ "Tag limit reached": "Limite de tags atingido",
+ "Add a tag": "Adicionar uma tag",
};
export default misc;
diff --git a/src/lib/i18n/locales/pt/mobile-manga.ts b/src/lib/i18n/locales/pt/mobile-manga.ts
new file mode 100644
index 000000000..54f3a68f9
--- /dev/null
+++ b/src/lib/i18n/locales/pt/mobile-manga.ts
@@ -0,0 +1,38 @@
+const mobileManga: Record = {
+ "Loading chapter": "Carregando capítulo",
+ "Prev": "Anterior",
+ "Back to remote": "Voltar ao controle",
+ "Webtoon strip": "Tira webtoon",
+ "Single page": "Página única",
+ "Two pages": "Duas páginas",
+ "Book flip": "Livro (folhear)",
+ "Bookmark which page": "Marcar qual página?",
+ "No bookmarks yet. Save your spot with the button above.": "Nenhum marcador ainda. Salve seu lugar com o botão acima.",
+ "Bookmark page {n}": "Marcar página {n}",
+ "Not in this source": "Não está nesta fonte",
+ "Remove bookmark": "Remover marcador",
+ "Search chapters": "Buscar capítulos",
+ "Sorted newest first, tap for oldest": "Ordenado do mais recente, toque para o mais antigo",
+ "Sorted oldest first, tap for newest": "Ordenado do mais antigo, toque para o mais recente",
+ "Reconnecting to your computer": "Reconectando ao seu computador",
+ "Reader closed on your computer": "Leitor fechado no seu computador",
+ "Open a manga on Harbor to control the reader from here.": "Abra um mangá no Harbor para controlar o leitor por aqui.",
+ "Your computer": "Seu computador",
+ "Reconnecting": "Reconectando",
+ "Read on this device": "Ler neste dispositivo",
+ "Read here": "Ler aqui",
+ "Read on": "Ler no",
+ "Reading {label}": "Lendo {label}",
+ "of {total}": "de {total}",
+ "Start of manga": "Início do mangá",
+ "End of manga": "Fim do mangá",
+ "Jump to spread": "Ir para a dupla de páginas",
+ "Jump to page": "Ir para a página",
+ "Go to pages {range}": "Ir para as páginas {range}",
+ "Go to page {n}": "Ir para a página {n}",
+ "Zoom controls, {pct} percent": "Controles de zoom, {pct} por cento",
+ "Close zoom controls": "Fechar controles de zoom",
+ "Zoom and pan joystick": "Controle de zoom e movimento",
+};
+
+export default mobileManga;
diff --git a/src/lib/i18n/locales/pt/people.ts b/src/lib/i18n/locales/pt/people.ts
new file mode 100644
index 000000000..a3c510455
--- /dev/null
+++ b/src/lib/i18n/locales/pt/people.ts
@@ -0,0 +1,26 @@
+const people: Record = {
+ "Harbor Rank": "Harbor Rank",
+ "Rising Stars": "Estrelas em Ascensão",
+ "Contenders": "Concorrentes",
+ "Top on TMDB": "Top no TMDB",
+ "Top on IMDb": "Top no IMDb",
+ "Consensus": "Consenso",
+ "Hall of Fame": "Hall da Fama",
+ "Trending now": "Em alta agora",
+ "Rising star": "Estrela em ascensão",
+ "In contention": "Na disputa",
+ "Most popular": "Mais populares",
+ "Consensus #1": "Consenso Nº1",
+ "Actors": "Atores",
+ "Actor": "Ator",
+ "Producer": "Produtor",
+ "Our all-time ranking of a body of work, fully explained.": "Nosso ranking geral de toda a carreira, totalmente explicado.",
+ "People from the week's hottest titles, weighted by what is being talked about.": "Pessoas dos títulos mais comentados da semana, ponderadas pelo que está sendo falado.",
+ "Breakout talent from this week's hottest titles, before they are household names.": "Talentos em ascensão dos títulos mais comentados da semana, antes de se tornarem nomes conhecidos.",
+ "In the running this awards season, from the latest nominations and wins.": "Na disputa nesta temporada de premiações, com base nas últimas indicações e vitórias.",
+ "Steady popularity across TMDB right now.": "Popularidade estável no TMDB agora.",
+ "Built from IMDb's public datasets. Career ratings volume.": "Construído a partir dos dados públicos do IMDb. Volume de avaliações da carreira.",
+ "A blend of the sources above by percentile. Degrades gracefully when one is missing.": "Uma combinação das fontes acima por percentil. Se ajusta bem quando uma delas está ausente.",
+};
+
+export default people;
diff --git a/src/lib/i18n/locales/pt/player.ts b/src/lib/i18n/locales/pt/player.ts
index f98335303..de1b02961 100644
--- a/src/lib/i18n/locales/pt/player.ts
+++ b/src/lib/i18n/locales/pt/player.ts
@@ -33,8 +33,7 @@ const player: Record = {
"Try a different source.": "Tente outra fonte.",
"Try another source.": "Tente outra fonte.",
"Switch stream": "Trocar stream",
- "Switch to channel list (hide program guide)":
- "Mudar para lista de canais (ocultar guia de programação)",
+ "Switch to channel list (hide program guide)": "Mudar para lista de canais (ocultar guia de programação)",
"Switch to program guide": "Mudar para guia de programação",
"Audio tracks": "Faixas de áudio",
"Audio languages": "Idiomas de áudio",
@@ -49,16 +48,14 @@ const player: Record = {
"Thinner outline": "Contorno mais fino",
"More subtitle options": "Mais opções de legenda",
"Override embedded styles": "Substituir estilos incorporados",
- "Force your look onto subtitles that carry their own styling.":
- "Forçar sua aparência em legendas que têm estilo próprio.",
+ "Force your look onto subtitles that carry their own styling.": "Forçar sua aparência em legendas que têm estilo próprio.",
"New look name": "Novo nome do visual",
"Name your look": "Dê um nome ao seu visual",
"Save this look": "Salvar este visual",
"Save as a new look": "Salvar como novo visual",
"No subtitles found.": "Nenhuma legenda encontrada.",
"Download subtitle to disk": "Baixar legenda para o disco",
- "Movie's too new. Subtitles haven't been published yet.":
- "O filme é muito recente. As legendas ainda não foram publicadas.",
+ "Movie's too new. Subtitles haven't been published yet.": "O filme é muito recente. As legendas ainda não foram publicadas.",
"Forced only": "Somente forçadas",
"Forced subs with native audio": "Legendas forçadas com áudio original",
"HI/SDH": "HI/SDH",
@@ -84,27 +81,21 @@ const player: Record = {
"Clear A-B loop": "Limpar repetição A-B",
"Watch trailer": "Assistir trailer",
"Close trailer": "Fechar trailer",
- "No audio: this stream's audio format (likely Dolby or DTS) is not supported by the HTML5 engine.":
- "Sem áudio: o formato de áudio deste stream (provavelmente Dolby ou DTS) não é suportado pelo mecanismo HTML5.",
- "This file is flagged as not web-playable. Try the mpv backend in Settings or pick another stream.":
- "Este arquivo está marcado como não reproduzível na web. Tente o backend mpv em Configurações ou escolha outra fonte.",
+ "No audio: this stream's audio format (likely Dolby or DTS) is not supported by the HTML5 engine.": "Sem áudio: o formato de áudio deste stream (provavelmente Dolby ou DTS) não é suportado pelo mecanismo HTML5.",
+ "This file is flagged as not web-playable. Try the mpv backend in Settings or pick another stream.": "Este arquivo está marcado como não reproduzível na web. Tente o backend mpv em Configurações ou escolha outra fonte.",
"Casting comes with the mpv backend": "A transmissão vem com o backend mpv",
"Cast to TV or speaker": "Transmitir para TV ou alto-falante",
"Burn in subtitles": "Gravar legendas no vídeo",
- "Subtitles are baked into the picture so they always show. Re-encodes the video.":
- "As legendas são incorporadas à imagem, então sempre aparecem. Recodifica o vídeo.",
+ "Subtitles are baked into the picture so they always show. Re-encodes the video.": "As legendas são incorporadas à imagem, então sempre aparecem. Recodifica o vídeo.",
"Subtitles may not appear on the TV.": "As legendas podem não aparecer na TV.",
"Scanning your network…": "Verificando sua rede…",
- "No Chromecast, DLNA, or Roku devices found. Make sure your TV is on, woken up, and on the same Wi-Fi.":
- "Nenhum dispositivo Chromecast, DLNA ou Roku encontrado. Certifique-se de que sua TV está ligada, ativa e na mesma rede Wi-Fi.",
+ "No Chromecast, DLNA, or Roku devices found. Make sure your TV is on, woken up, and on the same Wi-Fi.": "Nenhum dispositivo Chromecast, DLNA ou Roku encontrado. Certifique-se de que sua TV está ligada, ativa e na mesma rede Wi-Fi.",
"Scan again": "Verificar novamente",
- Rescan: "Reescanear",
+ "Rescan": "Reescanear",
"DLNA TV": "TV DLNA",
"About this title": "Sobre este título",
- "Add a TMDB key in Settings to see the cast for every title.":
- "Adicione uma chave do TMDB em Configurações para ver o elenco de cada título.",
- "Cast information isn't available for this title.":
- "As informações do elenco não estão disponíveis para este título.",
+ "Add a TMDB key in Settings to see the cast for every title.": "Adicione uma chave do TMDB em Configurações para ver o elenco de cada título.",
+ "Cast information isn't available for this title.": "As informações do elenco não estão disponíveis para este título.",
" (you)": " (você)",
" · away": " · ausente",
" · host": " · anfitrião",
@@ -117,7 +108,7 @@ const player: Record = {
"+{n} ep": "+{n} ep",
", then try again.": ", depois tente novamente.",
"Align {dir}": "Alinhar {dir}",
- All: "Todos",
+ "All": "Todos",
"All addons": "Todos os addons",
"All languages": "Todos os idiomas",
"Always keep on this device": "Sempre manter neste dispositivo",
@@ -125,134 +116,124 @@ const player: Record = {
"Audio bitrate": "Taxa de bits do áudio",
"Audio codec": "Codec de áudio",
"Audio track": "Faixa de áudio",
- Back: "Voltar",
+ "Back": "Voltar",
"Back to library": "Voltar à biblioteca",
- Bold: "Negrito",
- Browse: "Explorar",
+ "Bold": "Negrito",
+ "Browse": "Explorar",
"Browse provider": "Navegar por provedor",
"Cache buffering": "Buffer de cache",
"Cached only": "Somente em cache",
"Cached only ({n})": "Somente em cache ({n})",
- Cancel: "Cancelar",
+ "Cancel": "Cancelar",
"Cancel autoplay": "Cancelar reprodução automática",
- Cast: "Transmitir",
+ "Cast": "Transmitir",
"Cast to a device": "Transmitir para um dispositivo",
"Channel is taking a while": "O canal está demorando",
"Channel won't load": "O canal não carrega",
"Choose a folder...": "Escolha uma pasta...",
- Clear: "Limpar",
+ "Clear": "Limpar",
"Click any source to swap in place": "Clique em qualquer fonte para trocar no lugar",
- "Click to apply · Right-click to delete":
- "Clique para aplicar · Clique com o botão direito para excluir",
- Close: "Fechar",
+ "Click to apply · Right-click to delete": "Clique para aplicar · Clique com o botão direito para excluir",
+ "Close": "Fechar",
"Close guide": "Fechar guia",
"Close match": "Fechar correspondência",
"Copied to clipboard": "Copiado para a área de transferência",
"Copy link": "Copiar link",
- "Couldn't load that subtitle file. Try another.":
- "Não foi possível carregar esse arquivo de legenda. Tente outro.",
+ "Couldn't load that subtitle file. Try another.": "Não foi possível carregar esse arquivo de legenda. Tente outro.",
"Couldn't load {name}": "Não foi possível carregar {name}",
"Couldn't open this file": "Não foi possível abrir este arquivo",
"Custom length": "Duração personalizada",
- DVR: "DVR",
+ "DVR": "DVR",
"DVR record": "Gravar DVR",
- Default: "Padrão",
- Director: "Diretor",
+ "Default": "Padrão",
+ "Director": "Diretor",
"Discard recording": "Descartar gravação",
- Dismiss: "Dispensar",
+ "Dismiss": "Dispensar",
"Dismiss episode panel": "Dispensar painel de episódios",
"Does this stream look right?": "Este stream parece correto?",
- Done: "Concluído",
- Download: "Baixar",
+ "Done": "Concluído",
+ "Download": "Baixar",
"Download failed": "Falha no download",
"Download to disk": "Baixar para o disco",
"Download video": "Baixar vídeo",
"Downloading {pct}%, click to cancel": "Baixando {pct}%, clique para cancelar",
"Dropped (decode / vo)": "Descartados (decodificação / vo)",
- Embedded: "Incorporado",
- "Embedded subtitles keep their own styling. Click to force your style onto them.":
- "As legendas incorporadas mantêm seu próprio estilo. Clique para forçar seu estilo nelas.",
+ "Embedded": "Incorporado",
+ "Embedded subtitles keep their own styling. Click to force your style onto them.": "As legendas incorporadas mantêm seu próprio estilo. Clique para forçar seu estilo nelas.",
"Embedded track": "Faixa incorporada",
"End ep": "Ep. final",
- Engine: "Mecanismo",
+ "Engine": "Mecanismo",
"Episode {n}": "Episódio {n}",
- "Everyone is loaded in. Press play to start watching.":
- "Todo mundo está carregado. Aperte play para começar a assistir.",
- External: "Externo",
+ "Everyone is loaded in. Press play to start watching.": "Todo mundo está carregado. Aperte play para começar a assistir.",
+ "External": "Externo",
"External subtitle": "Legenda externa",
"Failed: {message}": "Falha: {message}",
- File: "Arquivo",
- Filename: "Nome do arquivo",
- Filtered: "Filtrado",
+ "File": "Arquivo",
+ "Filename": "Nome do arquivo",
+ "Filtered": "Filtrado",
"Find closer match": "Encontrar correspondência mais próxima",
"Find more subtitles": "Encontrar mais legendas",
"Flagged shown": "Sinalizados exibidos",
"Frame rate": "Taxa de quadros",
"Go to live": "Ir para o ao vivo",
"Got it": "Entendi",
- Guide: "Guia",
- HI: "HI",
+ "Guide": "Guia",
+ "HI": "HI",
"HW decode": "Decodificação por hardware",
- Hidden: "Oculto",
+ "Hidden": "Oculto",
"Hidden by filter: {reason}": "Ocultado pelo filtro: {reason}",
"Hide details": "Ocultar detalhes",
"Hide search": "Ocultar busca",
- Host: "Anfitrião",
- Imported: "Importado",
+ "Host": "Anfitrião",
+ "Imported": "Importado",
"Imported and now playing": "Importado e reproduzindo agora",
- "Instant Play: clicking Play queues the next stream automatically.":
- "Reprodução Instantânea: clicar em Reproduzir enfileira o próximo stream automaticamente.",
+ "Instant Play: clicking Play queues the next stream automatically.": "Reprodução Instantânea: clicar em Reproduzir enfileira o próximo stream automaticamente.",
"Is the channel playing right?": "O canal está tocando corretamente?",
"Jump to live edge": "Ir para o ponto ao vivo",
"Just the next show: {title}": "Apenas o próximo episódio: {title}",
- Languages: "Idiomas",
- Larger: "Maior",
- Leave: "Sair",
- List: "Lista",
- Live: "Ao vivo",
+ "Languages": "Idiomas",
+ "Larger": "Maior",
+ "Leave": "Sair",
+ "List": "Lista",
+ "Live": "Ao vivo",
"Load a .srt or .ass from your computer": "Carregar um .srt ou .ass do seu computador",
"Load file": "Carregar arquivo",
"Load more": "Carregar mais",
"Loaded {name}": "{name} carregado",
- Loading: "Carregando",
+ "Loading": "Carregando",
"Loading favorites from other providers…": "Carregando favoritos de outros provedores…",
"Loading favorites…": "Carregando favoritos…",
"Local subtitle": "Legenda local",
"Looking for subtitles…": "Procurando legendas…",
"Looks good": "Está tudo certo",
"Manage recording": "Gerenciar gravação",
- "Manual mode: clicking Play opens the source picker here.":
- "Modo manual: clicar em Reproduzir abre o seletor de fontes aqui.",
- Movie: "Filme",
+ "Manual mode: clicking Play opens the source picker here.": "Modo manual: clicar em Reproduzir abre o seletor de fontes aqui.",
+ "Movie": "Filme",
"Movie's too new": "O filme é muito recente",
"Name your first template": "Dê um nome ao seu primeiro modelo",
"New template name": "Novo nome do modelo",
"Next Episode": "Próximo episódio",
"Next episode": "Próximo episódio",
- "No channels match. Try a different category or clear the search.":
- "Nenhum canal corresponde. Tente outra categoria ou limpe a busca.",
+ "No channels match. Try a different category or clear the search.": "Nenhum canal corresponde. Tente outra categoria ou limpe a busca.",
"No description available.": "Nenhuma descrição disponível.",
"No episodes found for this season.": "Nenhum episódio encontrado para esta temporada.",
- "No favorites yet. Star a channel to pin it here.":
- "Nenhum favorito ainda. Marque um canal com estrela para fixá-lo aqui.",
+ "No favorites yet. Star a channel to pin it here.": "Nenhum favorito ainda. Marque um canal com estrela para fixá-lo aqui.",
"No program info available": "Nenhuma informação de programa disponível",
"No sources cached": "Nenhuma fonte em cache",
"No sources found for this episode.": "Nenhuma fonte encontrada para este episódio.",
- "No subtitles found yet. Try the search at the bottom.":
- "Ainda nenhuma legenda encontrada. Tente a busca abaixo.",
- "No tracks match these filters. Try toggling HI/SDH or Forced.":
- "Nenhuma faixa corresponde a esses filtros. Tente alternar HI/SDH ou Forçada.",
+ "No subtitles found yet. Try the search at the bottom.": "Ainda nenhuma legenda encontrada. Tente a busca abaixo.",
+ "No tracks match these filters. Try toggling HI/SDH or Forced.": "Nenhuma faixa corresponde a esses filtros. Tente alternar HI/SDH ou Forçada.",
"No unsaved changes": "Nenhuma alteração não salva",
- Normal: "Normal",
+ "Normal": "Normal",
"Now Playing": "Tocando Agora",
"Now playing: {label}": "Tocando agora: {label}",
"Now watching": "Assistindo agora",
- Off: "Desativado",
- On: "Ativado",
+ "Off": "Desativado",
+ "On": "Ativado",
"On now": "No ar agora",
"Open folder": "Abrir pasta",
"Other sources": "Outras fontes",
- Override: "Substituir",
+ "Override": "Substituir",
"Override {name}": "Substituir {name}",
"Overwrite {name} with this look": "Substituir {name} por este visual",
"Pick another": "Escolher outro",
@@ -264,40 +245,39 @@ const player: Record = {
"Previous Episode": "Episódio anterior",
"Previous episode": "Episódio anterior",
"Probably not cached. Pick another?": "Provavelmente não está em cache. Escolher outro?",
- REC: "REC",
+ "REC": "REC",
"Ready when you are": "Pronto quando você estiver",
- Record: "Gravar",
+ "Record": "Gravar",
"Record from TV (DVR)": "Gravar da TV (DVR)",
"Record from live TV": "Gravar da TV ao vivo",
"Recording finished": "Gravação concluída",
"Recording now": "Gravando agora",
- "Recording · {pct}% · {remaining} · click to manage":
- "Gravando · {pct}% · {remaining} · clique para gerenciar",
+ "Recording · {pct}% · {remaining} · click to manage": "Gravando · {pct}% · {remaining} · clique para gerenciar",
"Refine search": "Refinar busca",
"Reset sync": "Redefinir sincronização",
- Resolution: "Resolução",
- Restart: "Reiniciar",
+ "Resolution": "Resolução",
+ "Restart": "Reiniciar",
"Resume from {time}": "Retomar de {time}",
"Same file": "Mesmo arquivo",
- Save: "Salvar",
+ "Save": "Salvar",
"Save as a new template": "Salvar como novo modelo",
"Save look": "Salvar visual",
"Save this look as a template": "Salvar esta aparência como modelo",
"Save to": "Salvar em",
- Saved: "Salvo",
+ "Saved": "Salvo",
"Saved as .ts (works in mpv, VLC, ffmpeg)": "Salvo como .ts (funciona no mpv, VLC, ffmpeg)",
"Saved to disk": "Salvo no disco",
"Saved to {folder} · open folder": "Salvo em {folder} · abrir pasta",
"Saving GIF…": "Salvando GIF…",
"Say something…": "Diga algo…",
- Search: "Pesquisar",
+ "Search": "Pesquisar",
"Search {n} channels": "Pesquisar {n} canais",
"Search {n} favorite": "Pesquisar {n} favorito",
"Search {n} favorites": "Pesquisar {n} favoritos",
"Searching…": "Buscando…",
"Season {n}": "Temporada {n}",
- Send: "Enviar",
- Series: "Séries",
+ "Send": "Enviar",
+ "Series": "Séries",
"Set how many minutes to record": "Defina quantos minutos gravar",
"Show details": "Mostrar detalhes",
"Show downloaded file": "Mostrar arquivo baixado",
@@ -305,38 +285,33 @@ const player: Record = {
"Show in folder": "Mostrar na pasta",
"Show sources hidden by the trust filter": "Mostrar fontes ocultadas pelo filtro de confiança",
"Show {langs} only": "Mostrar apenas {langs}",
- Shown: "Exibido",
- Size: "Tamanho",
- Smaller: "Menor",
+ "Shown": "Exibido",
+ "Size": "Tamanho",
+ "Smaller": "Menor",
"Something else": "Outra coisa",
- Source: "Fonte",
- "Sources are not cached for this title. Open the picker page to refresh.":
- "As fontes não estão em cache para este título. Abra a página de seleção para atualizar.",
+ "Source": "Fonte",
+ "Sources are not cached for this title. Open the picker page to refresh.": "As fontes não estão em cache para este título. Abra a página de seleção para atualizar.",
"Start anyway ({n} still loading)": "Iniciar mesmo assim ({n} ainda carregando)",
"Start recording": "Iniciar gravação",
- Stop: "Parar",
+ "Stop": "Parar",
"Stop recording": "Parar gravação",
"Subtitle track": "Faixa de legenda",
- "Subtitles haven't been published yet. Try search below or check back in a few days.":
- "As legendas ainda não foram publicadas. Tente pesquisar abaixo ou volte em alguns dias.",
- Sync: "Sincronizar",
+ "Subtitles haven't been published yet. Try search below or check back in a few days.": "As legendas ainda não foram publicadas. Tente pesquisar abaixo ou volte em alguns dias.",
+ "Sync": "Sincronizar",
"TV Guide": "Guia de TV",
- "The host starts playback for the whole room.":
- "O anfitrião inicia a reprodução para toda a sala.",
+ "The host starts playback for the whole room.": "O anfitrião inicia a reprodução para toda a sala.",
"This and next: + {title}": "Este e o próximo: + {title}",
"This file has one audio track.": "Este arquivo tem uma faixa de áudio.",
- 'This file is in OneDrive. If "Files On-Demand" is on, the file is a cloud placeholder until it\'s downloaded. Right-click it in Explorer and pick':
- 'Este arquivo está no OneDrive. Se "Files On-Demand" estiver ativado, o arquivo é apenas um espaço reservado na nuvem até ser baixado. Clique com o botão direito nele no Explorer e escolha',
+ "This file is in OneDrive. If \"Files On-Demand\" is on, the file is a cloud placeholder until it's downloaded. Right-click it in Explorer and pick": "Este arquivo está no OneDrive. Se \"Files On-Demand\" estiver ativado, o arquivo é apenas um espaço reservado na nuvem até ser baixado. Clique com o botão direito nele no Explorer e escolha",
"This show: {title}": "Esta série: {title}",
"Tighter spacing": "Espaçamento reduzido",
- Title: "Título",
+ "Title": "Título",
"Title info": "Informações do título",
"Toggle guide layout": "Alternar layout do guia",
- Track: "Faixa",
- "Track switching isn't supported on the current engine. The file's default audio is playing.":
- "A troca de faixa não é suportada no mecanismo atual. O áudio padrão do arquivo está sendo reproduzido.",
+ "Track": "Faixa",
+ "Track switching isn't supported on the current engine. The file's default audio is playing.": "A troca de faixa não é suportada no mecanismo atual. O áudio padrão do arquivo está sendo reproduzido.",
"Try again": "Tentar novamente",
- Unknown: "Desconhecido",
+ "Unknown": "Desconhecido",
"Until {time} · {dur}": "Até {time} · {dur}",
"Up Next": "A seguir",
"Up next": "A seguir",
@@ -347,24 +322,21 @@ const player: Record = {
"Volume down": "Diminuir volume",
"Volume up": "Aumentar volume",
"Waiting for the host to start": "Aguardando o host iniciar",
- Watched: "Assistido",
+ "Watched": "Assistido",
"What to record": "O que gravar",
"Wider spacing": "Espaçamento mais amplo",
- Writer: "Roteirista",
+ "Writer": "Roteirista",
"Wrong channel or source?": "Canal ou fonte errada?",
"Wrong episode or quality?": "Episódio ou qualidade errada?",
- "Your copy runs {guest}, host's runs {host}. Sync may drift.":
- "Sua cópia está na {guest}, a do host está na {host}. A sincronização pode desalinhar.",
- "Your style is overriding the embedded subtitle's own styling":
- "Seu estilo está sobrepondo o estilo próprio da legenda incorporada",
- Yours: "Sua",
+ "Your copy runs {guest}, host's runs {host}. Sync may drift.": "Sua cópia está na {guest}, a do host está na {host}. A sincronização pode desalinhar.",
+ "Your style is overriding the embedded subtitle's own styling": "Seu estilo está sobrepondo o estilo próprio da legenda incorporada",
+ "Yours": "Sua",
"Zoom {pct}%": "Zoom {pct}%",
"click to cancel": "clique para cancelar",
- default: "padrão",
+ "default": "padrão",
"loading more…": "carregando mais…",
- min: "min",
- "mpv is required for recording. Install mpv and restart Harbor.":
- "o mpv é necessário para gravação. Instale o mpv e reinicie o Harbor.",
+ "min": "min",
+ "mpv is required for recording. Install mpv and restart Harbor.": "o mpv é necessário para gravação. Instale o mpv e reinicie o Harbor.",
"to close": "para fechar",
"unsaved changes": "alterações não salvas",
"{count} dl": "{count} dl",
@@ -393,9 +365,6 @@ const player: Record = {
"2nd": "2.ª",
"Show as second subtitle": "Mostrar como segunda legenda",
"Stop showing as second subtitle": "Deixar de mostrar como segunda legenda",
- "Next and Previous behavior": "Comportamento de Próximo e Anterior",
- "Next and Previous follow your queue": "Próximo e Anterior seguem sua fila",
- "Next and Previous follow this show": "Próximo e Anterior seguem esta série",
};
export default player;
diff --git a/src/lib/i18n/locales/pt/profile-customization.ts b/src/lib/i18n/locales/pt/profile-customization.ts
new file mode 100644
index 000000000..a99c3b1c5
--- /dev/null
+++ b/src/lib/i18n/locales/pt/profile-customization.ts
@@ -0,0 +1,48 @@
+const profileCustomization: Record = {
+ "Italic": "Itálico",
+ "Underline": "Sublinhado",
+ "Strikethrough": "Tachado",
+ "Quote": "Citação",
+ "Image": "Imagem",
+ "YouTube": "YouTube",
+ "Spotify": "Spotify",
+ "Show off. [b]bold[/b], [color=gold]color[/color], [youtube]link[/youtube], [img]https://...[/img] and more.":
+ "Mostre seu talento. [b]negrito[/b], [color=gold]cor[/color], [youtube]link[/youtube], [img]https://...[/img] e mais.",
+ "Custom profile": "Perfil personalizado",
+ "Hidden from visitors": "Oculto para visitantes",
+ "Any HTML layout: headings, paragraphs, lists, tables, sections, divs.":
+ "Qualquer layout HTML: títulos, parágrafos, listas, tabelas, seções, divs.",
+ "Any CSS: colors, gradients, grid, flex, animations, web fonts via @import from https.":
+ "Qualquer CSS: cores, gradientes, grid, flex, animações, fontes web via @import de https.",
+ "Images and video from https or data URLs.": "Imagens e vídeos de URLs https ou data.",
+ "Links open in a new tab automatically.": "Os links abrem automaticamente em uma nova aba.",
+ "No JavaScript. Scripts, inline handlers, and javascript: URLs are removed.":
+ "Sem JavaScript. Scripts, manipuladores inline e URLs javascript: são removidos.",
+ "No nested iframes, objects, or embeds.": "Sem iframes aninhados, objetos ou embeds.",
+ "No forms or popups. The canvas cannot navigate the page.": "Sem formulários ou pop-ups. O canvas não pode navegar pela página.",
+ "How the canvas works": "Como o canvas funciona",
+ "Your HTML and CSS render inside a sandboxed frame, fully isolated from the rest of Harbor. Write it like a tiny self-contained page. Font and page background are separate controls above, applied to the whole profile.":
+ "Seu HTML e CSS são renderizados dentro de um quadro isolado, totalmente separado do resto do Harbor. Escreva-os como uma pequena página autocontida. A fonte e o plano de fundo da página são controles separados acima, aplicados a todo o perfil.",
+ "Allowed": "Permitido",
+ "Not allowed": "Não permitido",
+ "HTML and CSS are each capped at 16,384 characters.": "HTML e CSS têm um limite de 16.384 caracteres cada.",
+ "Show customization to visitors": "Mostrar personalização aos visitantes",
+ "Profile font": "Fonte do perfil",
+ "Google Fonts family": "Família de fontes do Google Fonts",
+ "Page background color": "Cor de fundo da página",
+ "hex or rgb/hsl": "hex ou rgb/hsl",
+ "Page background image": "Imagem de fundo da página",
+ "https URL, optional": "URL https, opcional",
+ "Hide top banner": "Ocultar banner superior",
+ "Let your full page background show without the top cover.": "Deixe o plano de fundo completo da página aparecer sem a capa superior.",
+ "Hide card titles": "Ocultar títulos dos cartões",
+ "Drop the About and Custom labels so an embed fills the card cleanly.":
+ "Remova os rótulos Sobre e Personalizado para que um embed preencha o cartão de forma limpa.",
+ "Customize profile": "Personalizar perfil",
+ "Could not upload favicon.": "Não foi possível enviar o favicon.",
+ "Profile favicon": "Favicon do perfil",
+ "Shows in the browser tab; defaults to your avatar": "Aparece na aba do navegador; usa seu avatar por padrão",
+ "Back to editing": "Voltar a editar",
+};
+
+export default profileCustomization;
diff --git a/src/lib/i18n/locales/pt/profile-fill.ts b/src/lib/i18n/locales/pt/profile-fill.ts
index ee52eff48..41b9c6a9a 100644
--- a/src/lib/i18n/locales/pt/profile-fill.ts
+++ b/src/lib/i18n/locales/pt/profile-fill.ts
@@ -1,18 +1,6 @@
const profileFill: Record = {
- "Manage connection": "Gerir ligação",
- "Show your Simkl card": "Mostrar o seu cartão Simkl",
- "Off by default. Shows your Simkl avatar, name and watch stats on your profile for anyone who visits. Manage the connection itself in Settings, Simkl.":
- "Desativado por predefinição. Mostra o seu avatar, nome e estatísticas do Simkl no perfil a quem o visitar. A ligação em si é gerida nas Definições, secção Simkl.",
- "On Simkl": "No Simkl",
- "Open Simkl profile": "Abrir perfil Simkl",
- "Last watched {when}": "Visto pela última vez {when}",
- "Nothing tracked on Simkl yet": "Ainda não há nada registado no Simkl",
- "Link Simkl and everything you watch shows up right here.":
- "Associe o Simkl e tudo o que vir aparece aqui.",
- "Could not reach Simkl.": "Não foi possível contactar o Simkl.",
"Your rating": "Sua avaliação",
- "Tap the heart on any movie, show, manga, or character to save it here.":
- "Toque no coração de qualquer filme, série, mangá ou personagem para salvá-lo aqui.",
+ "Tap the heart on any movie, show, manga, or character to save it here.": "Toque no coração de qualquer filme, série, mangá ou personagem para salvá-lo aqui.",
"Your rating {n}/10": "Sua nota {n}/10",
"Tap a star to rate": "Toque em uma estrela para avaliar",
"Tap a star to change, then save": "Toque em uma estrela para alterar, depois salve",
@@ -20,8 +8,7 @@ const profileFill: Record = {
"Edit your review": "Editar sua crítica",
"Save changes": "Salvar alterações",
"Ratings need a Harbor account": "As avaliações exigem uma conta Harbor",
- "Your Harbor account is separate from your Stremio sign in. Create one free or sign in from Settings.":
- "A sua conta Harbor é separada do seu início de sessão no Stremio. Crie uma gratuitamente ou inicie sessão nas Definições.",
+ "Your Harbor account is separate from your Stremio sign in. Create one free or sign in from Settings.": "A sua conta Harbor é separada do seu início de sessão no Stremio. Crie uma gratuitamente ou inicie sessão nas Definições.",
"Open account settings": "Abrir definições da conta",
"Save rating": "Salvar avaliação",
"Rate this": "Avaliar",
@@ -37,46 +24,38 @@ const profileFill: Record = {
"Pick a star rating first": "Escolha uma nota primeiro",
"Sign in to rate": "Entre para avaliar",
"Your review contains language that is not allowed": "Sua crítica contém linguagem não permitida",
- "You are rating too fast, try again in a moment":
- "Você está avaliando rápido demais, tente novamente em um momento",
+ "You are rating too fast, try again in a moment": "Você está avaliando rápido demais, tente novamente em um momento",
"Could not save your rating": "Não foi possível salvar sua avaliação",
"Could not remove your rating": "Não foi possível remover sua avaliação",
- "Couldn't reach Harbor, check your connection":
- "Não foi possível conectar ao Harbor, verifique sua conexão",
- "Harbor is having trouble, try again in a moment":
- "O Harbor está com problemas, tente novamente em um momento",
- Ratings: "Avaliações",
+ "Couldn't reach Harbor, check your connection": "Não foi possível conectar ao Harbor, verifique sua conexão",
+ "Harbor is having trouble, try again in a moment": "O Harbor está com problemas, tente novamente em um momento",
+ "Ratings": "Avaliações",
"Move or hide your cards": "Mova ou oculte seus cartões",
"Watch time": "Tempo assistido",
- Showcase: "Vitrine",
- Lists: "Listas",
+ "Showcase": "Vitrine",
+ "Lists": "Listas",
"Hero stats": "Estatísticas do perfil",
- "Choose which stats show in the row at the top of your profile":
- "Escolha quais estatísticas aparecem na linha no topo do seu perfil",
- "Pick the stats that show in the row at the top of your public profile. At least one has to stay visible.":
- "Escolha as estatísticas que aparecem na linha no topo do seu perfil público. Pelo menos uma precisa continuar visível.",
+ "Choose which stats show in the row at the top of your profile": "Escolha quais estatísticas aparecem na linha no topo do seu perfil",
+ "Pick the stats that show in the row at the top of your public profile. At least one has to stay visible.": "Escolha as estatísticas que aparecem na linha no topo do seu perfil público. Pelo menos uma precisa continuar visível.",
"Profile cards": "Cartões do perfil",
- "Pick which cards show on your profile, and the order they appear in":
- "Escolha quais cartões aparecem no seu perfil e em que ordem",
- "These cards run down your public profile. Set the order they appear in, and hide any you would rather keep to yourself.":
- "Estes cartões ficam um abaixo do outro no seu perfil público. Defina a ordem em que aparecem e oculte os que preferir guardar só para você.",
+ "Pick which cards show on your profile, and the order they appear in": "Escolha quais cartões aparecem no seu perfil e em que ordem",
+ "These cards run down your public profile. Set the order they appear in, and hide any you would rather keep to yourself.": "Estes cartões ficam um abaixo do outro no seu perfil público. Defina a ordem em que aparecem e oculte os que preferir guardar só para você.",
"{count} of {total} showing": "Exibindo {count} de {total}",
- "Rate movies, shows, anime, and manga to build your ratings":
- "Avalie filmes, séries, animes e mangás para montar suas avaliações",
- avg: "média",
- rating: "avaliação",
- ratings: "avaliações",
+ "Rate movies, shows, anime, and manga to build your ratings": "Avalie filmes, séries, animes e mangás para montar suas avaliações",
+ "avg": "média",
+ "rating": "avaliação",
+ "ratings": "avaliações",
"{name}'s ratings": "Avaliações de {name}",
"No ratings yet": "Nenhuma avaliação ainda",
"Show spoiler": "Mostrar spoiler",
"Add friends to see them here.": "Adicione amigos para vê-los aqui.",
"No friends to show yet": "Nenhum amigo para mostrar ainda",
"Online now": "Online agora",
- Offline: "Offline",
+ "Offline": "Offline",
"Show {count} more": "Mostrar mais {count}",
- member: "membro",
- members: "membros",
- Owner: "Proprietário",
+ "member": "membro",
+ "members": "membros",
+ "Owner": "Proprietário",
"Remove {alias}": "Remover {alias}",
"Could not join.": "Não foi possível entrar.",
"Could not leave.": "Não foi possível sair.",
@@ -86,23 +65,21 @@ const profileFill: Record = {
"Change group photo": "Alterar foto do grupo",
"Add group photo": "Adicionar foto do grupo",
"This group could not be loaded.": "Não foi possível carregar este grupo.",
- Members: "Membros",
+ "Members": "Membros",
"Invite member": "Convidar membro",
"Delete this group for everyone?": "Excluir este grupo para todos?",
- Keep: "Manter",
+ "Keep": "Manter",
"Delete group": "Excluir grupo",
"Leave group": "Sair do grupo",
"Join group": "Entrar no grupo",
- Groups: "Grupos",
+ "Groups": "Grupos",
"Loading groups": "Carregando grupos",
"Could not load your groups.": "Não foi possível carregar seus grupos.",
- "Create a group to watch and share together.":
- "Crie um grupo para assistir e compartilhar juntos.",
+ "Create a group to watch and share together.": "Crie um grupo para assistir e compartilhar juntos.",
"Could not add member.": "Não foi possível adicionar o membro.",
- "Search by handle or name to add people to this group.":
- "Pesquise por nome de usuário ou nome para adicionar pessoas a este grupo.",
- Member: "Membro",
- Added: "Adicionado",
+ "Search by handle or name to add people to this group.": "Pesquise por nome de usuário ou nome para adicionar pessoas a este grupo.",
+ "Member": "Membro",
+ "Added": "Adicionado",
"Unlike list": "Descurtir lista",
"Like list": "Curtir lista",
"Harbor list": "Lista do Harbor",
@@ -112,56 +89,49 @@ const profileFill: Record = {
"No location": "Sem localização",
"Could not save. Try again.": "Não foi possível salvar. Tente novamente.",
"Featured lists": "Listas em destaque",
- "Pick up to {max} lists to show on your public profile.":
- "Escolha até {max} listas para exibir no seu perfil público.",
+ "Pick up to {max} lists to show on your public profile.": "Escolha até {max} listas para exibir no seu perfil público.",
"You have no lists yet": "Você ainda não tem listas",
- "Create lists in your library to feature them here":
- "Crie listas na sua biblioteca para destacá-las aqui",
+ "Create lists in your library to feature them here": "Crie listas na sua biblioteca para destacá-las aqui",
"{selected}/{max} selected": "{selected}/{max} selecionadas",
"Recent activity": "Atividade recente",
- "This user has chosen to keep activity private":
- "Este usuário optou por manter a atividade privada",
+ "This user has chosen to keep activity private": "Este usuário optou por manter a atividade privada",
"No recent activity yet": "Ainda não há atividade recente",
"Save to my lists": "Salvar nas minhas listas",
"List full": "Lista cheia",
"Link and social": "Link e redes sociais",
- Embed: "Incorporar",
+ "Embed": "Incorporar",
"Copied for Discord": "Copiado para o Discord",
"Copy for Discord": "Copiar para o Discord",
"Shown badges": "Emblemas exibidos",
- "Pick up to {max} badges to show by your name. Tap in the order you want them to appear.":
- "Escolha até {max} emblemas para exibir ao lado do seu nome. Toque na ordem em que deseja que apareçam.",
+ "Pick up to {max} badges to show by your name. Tap in the order you want them to appear.": "Escolha até {max} emblemas para exibir ao lado do seu nome. Toque na ordem em que deseja que apareçam.",
"No badges to show yet": "Ainda não há emblemas para exibir",
- "Earn badges and they will appear here to feature":
- "Conquiste emblemas e eles aparecerão aqui em destaque",
+ "Earn badges and they will appear here to feature": "Conquiste emblemas e eles aparecerão aqui em destaque",
"{count}/{max} selected": "{count}/{max} selecionados",
"Remove {label}": "Remover {label}",
"Could not save your links.": "Não foi possível salvar seus links.",
"Social links": "Links de redes sociais",
- "Add up to {max} profiles. Enter your handle only, not the full link.":
- "Adicione até {max} perfis. Insira apenas seu nome de usuário, não o link completo.",
+ "Add up to {max} profiles. Enter your handle only, not the full link.": "Adicione até {max} perfis. Insira apenas seu nome de usuário, não o link completo.",
"You have reached the {max} link limit": "Você atingiu o limite de {max} links",
"{label} handle": "Nome de usuário de {label}",
"Write something about yourself": "Escreva algo sobre você",
"This user hasn't written anything yet": "Este usuário ainda não escreveu nada",
"Could not send request.": "Não foi possível enviar a solicitação.",
"Add friend": "Adicionar amigo",
- "Search by handle or name to send a request.":
- "Pesquise por identificador ou nome para enviar uma solicitação.",
+ "Search by handle or name to send a request.": "Pesquise por identificador ou nome para enviar uma solicitação.",
"@handle or name": "@identificador ou nome",
"Start typing to find people.": "Comece a digitar para encontrar pessoas.",
"Searching...": "Pesquisando...",
"No one found by that name.": "Ninguém encontrado com esse nome.",
"Open {alias} profile": "Abrir perfil de {alias}",
- You: "Você",
- Requested: "Solicitado",
- Badges: "Emblemas",
+ "You": "Você",
+ "Requested": "Solicitado",
+ "Badges": "Emblemas",
"No badges earned yet": "Nenhum emblema conquistado ainda",
"Sign in to leave a comment": "Faça login para deixar um comentário",
"Leave a comment. No links.": "Deixe um comentário. Sem links.",
"{count} left": "{count} restantes",
- Posting: "Publicando",
- Post: "Publicar",
+ "Posting": "Publicando",
+ "Post": "Publicar",
"Say something first": "Escreva algo primeiro",
"Links are not allowed in comments": "Links não são permitidos nos comentários",
"That looks like spam, try rephrasing": "Isso parece spam, tente reformular",
@@ -172,20 +142,19 @@ const profileFill: Record = {
"Like comment": "Curtir comentário",
"Delete comment": "Excluir comentário",
"Could not load comments": "Não foi possível carregar os comentários",
- "No comments yet. Be the first to say hello.":
- "Ainda não há comentários. Seja o primeiro a dizer olá.",
+ "No comments yet. Be the first to say hello.": "Ainda não há comentários. Seja o primeiro a dizer olá.",
"Could not read image.": "Não foi possível ler a imagem.",
"Could not create group.": "Não foi possível criar o grupo.",
"Create group": "Criar grupo",
"Change photo": "Alterar foto",
"Add photo": "Adicionar foto",
"Late-night sci-fi crew": "Galera da ficção científica da madrugada",
- Description: "Descrição",
+ "Description": "Descrição",
"What this group is about (optional)": "Sobre o que é este grupo (opcional)",
- Creating: "Criando",
+ "Creating": "Criando",
"Your links": "Seus links",
"No links added yet.": "Nenhum link adicionado ainda.",
- Socials: "Redes sociais",
+ "Socials": "Redes sociais",
"Add your social links": "Adicione seus links sociais",
"Copy {label} handle": "Copiar identificador de {label}",
"What's on your mind?": "No que você está pensando?",
@@ -195,23 +164,21 @@ const profileFill: Record = {
"No status": "Sem status",
"Add status": "Adicionar status",
"Open @{handle} profile": "Abrir perfil de @{handle}",
- Online: "Online",
- "Preview unavailable. Click to open profile.":
- "Pré-visualização indisponível. Clique para abrir o perfil.",
+ "Online": "Online",
+ "Preview unavailable. Click to open profile.": "Pré-visualização indisponível. Clique para abrir o perfil.",
"My lists": "Minhas listas",
"This user hasn't featured any lists": "Este usuário não destacou nenhuma lista",
"Untitled list": "Lista sem título",
"Choose lists": "Escolher listas",
"No lists featured yet": "Nenhuma lista destacada ainda",
- "Pick lists from your library to show them here":
- "Escolha listas da sua biblioteca para mostrá-las aqui",
+ "Pick lists from your library to show them here": "Escolha listas da sua biblioteca para mostrá-las aqui",
"Add background": "Adicionar plano de fundo",
"In a watch party": "Em uma sessão do Assistir Juntos",
"{count} aboard": "{count} a bordo",
"Paused on ": "Pausado em ",
"Watching ": "Assistindo ",
- something: "algo",
- Share: "Compartilhar",
+ "something": "algo",
+ "Share": "Compartilhar",
"Share profile": "Compartilhar perfil",
"Profile link": "Link do perfil",
"{name} on Harbor": "{name} no Harbor",
@@ -233,71 +200,16 @@ const profileFill: Record = {
"Change banner": "Alterar banner",
"Add banner": "Adicionar banner",
"Could not load this profile": "Não foi possível carregar este perfil",
- "Something went wrong reaching Harbor. Check your connection and try again.":
- "Algo deu errado ao conectar ao Harbor. Verifique sua conexão e tente novamente.",
+ "Something went wrong reaching Harbor. Check your connection and try again.": "Algo deu errado ao conectar ao Harbor. Verifique sua conexão e tente novamente.",
"No such captain": "Capitão não encontrado",
- "We could not find anyone at @{handle}. The handle may have changed or the profile was removed.":
- "Não encontramos ninguém em @{handle}. O nome de usuário pode ter mudado ou o perfil foi removido.",
+ "We could not find anyone at @{handle}. The handle may have changed or the profile was removed.": "Não encontramos ninguém em @{handle}. O nome de usuário pode ter mudado ou o perfil foi removido.",
"{alias} keeps this private": "{alias} mantém isto privado",
- "This member has hidden their showcase, activity and friends from public view.":
- "Este membro ocultou sua vitrine, atividade e amigos da visualização pública.",
- Finished: "Concluído",
- Rated: "Avaliado",
+ "This member has hidden their showcase, activity and friends from public view.": "Este membro ocultou sua vitrine, atividade e amigos da visualização pública.",
+ "Finished": "Concluído",
+ "Rated": "Avaliado",
"not in your library": "não está na sua biblioteca",
"1 friend in common": "1 amigo em comum",
"{count} friends in common": "{count} amigos em comum",
- "Favourite games": "Jogos favoritos",
- "Favourite books": "Livros favoritos",
- "Favourite music": "Música favorita",
- "Pick up to {max} games to show on your profile.":
- "Escolha até {max} jogos para exibir no seu perfil.",
- "Pick up to {max} books to show on your profile.":
- "Escolha até {max} livros para exibir no seu perfil.",
- "Pick up to {max} artists to show on your profile.":
- "Escolha até {max} artistas para exibir no seu perfil.",
- "Search games": "Pesquisar jogos",
- "Search books": "Pesquisar livros",
- "Search artists": "Pesquisar artistas",
- "Search for a game": "Pesquise um jogo",
- "Search for a book": "Pesquise um livro",
- "Search for an artist": "Pesquise um artista",
- "Type a title to find its cover art.": "Digite um título para encontrar a arte de capa.",
- "Type a title to find its cover.": "Digite um título para encontrar a capa.",
- "Type a name to find their photo.": "Digite um nome para encontrar a foto.",
- "No games match that search": "Nenhum jogo corresponde a essa pesquisa",
- "No books match that search": "Nenhum livro corresponde a essa pesquisa",
- "No artists match that search": "Nenhum artista corresponde a essa pesquisa",
- "Could not reach the game database": "Não foi possível acessar a base de dados de jogos",
- "Could not reach the book database": "Não foi possível acessar a base de dados de livros",
- "Could not reach the music database": "Não foi possível acessar a base de dados de música",
- "Game search needs an API key before it can run.":
- "A busca de jogos precisa de uma chave de API para funcionar.",
- "Book search needs an API key before it can run.":
- "A busca de livros precisa de uma chave de API para funcionar.",
- "Music search needs an API key before it can run.":
- "A busca de música precisa de uma chave de API para funcionar.",
- "That's {max} games. Remove one to add another.":
- "São {max} jogos. Remova um para adicionar outro.",
- "That's {max} books. Remove one to add another.":
- "São {max} livros. Remova um para adicionar outro.",
- "That's {max} artists. Remove one to add another.":
- "São {max} artistas. Remova um para adicionar outro.",
- "We couldn't load your saved favourites": "Não foi possível carregar seus favoritos salvos",
- "Saving now could overwrite them. Try again in a moment.":
- "Salvar agora pode sobrescrevê-los. Tente novamente em um momento.",
- "Shown order": "Ordem de exibição",
- "Check the spelling or try a shorter search.":
- "Verifique a ortografia ou tente uma pesquisa mais curta.",
- "Something went wrong on the way there.": "Algo deu errado no caminho.",
- "An API key is needed": "É necessária uma chave de API",
- Favourites: "Favoritos",
- "Add favourite games": "Adicionar jogos favoritos",
- "Add favourite books": "Adicionar livros favoritos",
- "Add favourite artists": "Adicionar artistas favoritos",
- Games: "Jogos",
- Books: "Livros",
- "Show your favourite games, books and music on your profile":
- "Mostre seus jogos, livros e música favoritos no seu perfil",
};
export default profileFill;
diff --git a/src/lib/i18n/locales/pt/settings-fill.ts b/src/lib/i18n/locales/pt/settings-fill.ts
index 192cc6992..cd5c709ec 100644
--- a/src/lib/i18n/locales/pt/settings-fill.ts
+++ b/src/lib/i18n/locales/pt/settings-fill.ts
@@ -263,6 +263,30 @@ const settingsFill: Record = {
"Who keeps the lights on, what Harbor is built on, and where to put money if you want to.": "Quem mantém tudo funcionando, sobre o que o Harbor é construído, e onde colocar dinheiro se você quiser.",
"If you were going to send something, send it to ElfHosted or Stremio above, or to one of the charities below. They all do more good with it.": "Se você ia enviar algo, envie para a ElfHosted ou o Stremio acima, ou para uma das instituições abaixo. Todos fazem mais bem com isso.",
"Support ElfHosted or Stremio, or give to any charity below, and the badge lands on your profile.": "Apoie a ElfHosted ou o Stremio, ou doe para qualquer instituição abaixo, e o emblema aparece no seu perfil.",
+ "Fullscreen clock": "Relógio em tela cheia",
+ "Keep your local time visible during fullscreen playback and choose how it looks.": "Mantenha o horário local visível durante a reprodução em tela cheia e escolha como ele aparece.",
+ "Show fullscreen clock": "Mostrar relógio em tela cheia",
+ "The clock appears with the player controls.": "O relógio aparece junto com os controles do player.",
+ "Clock format": "Formato do relógio",
+ "12-hour": "12 horas",
+ "24-hour": "24 horas",
+ "Show seconds": "Mostrar segundos",
+ "Update the clock every second.": "Atualiza o relógio a cada segundo.",
+ "Show estimated finish time": "Mostrar horário estimado de término",
+ "Display the local time when the current video is expected to end.": "Exibe o horário local em que o vídeo atual deve terminar.",
+ "Clock size": "Tamanho do relógio",
+ "Clock style": "Estilo do relógio",
+ "Minimal": "Minimalista",
+ "Solid": "Sólido",
+ "Accent": "Destaque",
+ "Soft blur with a floating pill.": "Desfoque suave em uma pílula flutuante.",
+ "Time only, with a subtle shadow.": "Apenas o horário, com uma sombra sutil.",
+ "High-contrast panel for busy scenes.": "Painel de alto contraste para cenas movimentadas.",
+ "Uses your theme's accent color.": "Usa a cor de destaque do seu tema.",
+ "Focused Card": "Cartão em foco",
+ "Expanding Cards": "Cartões expansíveis",
+ "Emphasize the selected card across the page while gently darkening and blurring the other cards.": "Destaca o cartão selecionado na página, escurecendo e desfocando suavemente os outros cartões.",
+ "Expand poster cards during keyboard or remote navigation across poster rows, using preloaded wide artwork.": "Expande os cartões de pôster durante a navegação por teclado ou controle nas fileiras de pôsteres, usando arte larga pré-carregada.",
};
export default settingsFill;
diff --git a/src/lib/i18n/locales/pt/used.ts b/src/lib/i18n/locales/pt/used.ts
index 6ed11b586..308a561d6 100644
--- a/src/lib/i18n/locales/pt/used.ts
+++ b/src/lib/i18n/locales/pt/used.ts
@@ -62,6 +62,7 @@ const used: Record = {
"French Films": "Filmes Franceses",
"Frequent Collaborators": "Colaboradores Frequentes",
"Friend requests": "Solicitações de amizade",
+ "From": "De",
"From the region": "Da região",
"Genres are only recorded for files scanned after this feature was added — re-add a folder to pick them up.": "Os gêneros só são registrados para arquivos escaneados depois que este recurso foi adicionado — adicione a pasta novamente para detectá-los.",
"Gently magnify nearby posters as you move across a poster row.": "Amplia suavemente os pôsteres próximos conforme você percorre uma linha de pôsteres.",
@@ -178,6 +179,7 @@ const used: Record = {
"The all-time greats": "Os maiores de todos os tempos",
"The server stopped responding, the rest stayed on this device.": "O servidor parou de responder, o resto ficou neste dispositivo.",
"Timer": "Cronômetro",
+ "To": "Até",
"Top 100": "Top 100",
"Top Manga": "Top Mangás",
"Top People": "Top Pessoas",
@@ -231,7 +233,9 @@ const used: Record = {
"{name} invited you to {group}": "{name} convidou você para {group}",
"{noms} noms": "{noms} indicações",
"{n} could not be matched so far": "{n} não puderam ser correspondidos até agora",
+ "{n} downloading": "{n} baixando",
"{n} of {total}": "{n} de {total}",
+ "{n} paused": "{n} pausados",
"{n} ratings were saved before you stopped.": "{n} avaliações foram salvas antes de você parar.",
"{n} titles together": "{n} títulos juntos",
"{n} versions": "{n} versões",
diff --git a/src/lib/i18n/locales/ru.json b/src/lib/i18n/locales/ru.json
new file mode 100644
index 000000000..c6bf332a8
--- /dev/null
+++ b/src/lib/i18n/locales/ru.json
@@ -0,0 +1,4640 @@
+{
+ " · {n} instant": " · {n} мгновенно",
+ " · away": " · нет на месте",
+ " · host": " · хост",
+ " · left the video": " · вышел из видео",
+ " · muted": " · звук выключен",
+ " · paused": " · на паузе",
+ " · Series": " · Сериал",
+ " · still loading": " · всё ещё загружается",
+ " · Syncing Trakt…": " · Синхронизация с Trakt…",
+ " · you": " · вы",
+ " (you)": " (вы)",
+ " Anything you save also syncs to your Trakt account.": " Всё сохранённое также синхронизируется с вашим аккаунтом Trakt.",
+ " Connect Trakt in Settings to sync this list across devices.": " Подключите Trakt в настройках, чтобы синхронизировать этот список между устройствами.",
+ ", ": ", ",
+ ", {hiddenCount} hidden": ", {hiddenCount} скрыто",
+ ", {n} unrepairable": ", {n} не подлежит восстановлению",
+ ", and ": ", и ",
+ ", then try again.": ", затем попробуйте снова.",
+ ". Adds Letterboxd and Trakt community ratings to detail pages, covering what OMDb misses.": ". Добавляет на страницы с подробностями пользовательские рейтинги Letterboxd и Trakt — то, чего не хватает OMDb.",
+ ". AllDebrid deprecated their cache-check endpoint, so streams may show as unknown until you actually hit Play.": ". AllDebrid отказался от эндпоинта проверки кеша, поэтому потоки могут отображаться как «неизвестно», пока вы не нажмёте «Play».",
+ ". EU-hosted, fast cache check. Same read-only usage as the others.": ". Размещён в ЕС, быстрая проверка кеша. Используется только для чтения, как и остальные.",
+ ". Leave empty for the default.": ". Оставьте пустым для значения по умолчанию.",
+ ". Once saved, every poster gets re-rendered with IMDb, Rotten Tomatoes, and Metacritic stamped on it.": ". После сохранения каждый постер перерисовывается с рейтингами IMDb, Rotten Tomatoes и Metacritic.",
+ ". Patterns may also use ": ". В шаблонах также можно использовать ",
+ ". Pick the \"Negotiated API key\" path.": ". Выберите вариант «Negotiated API key».",
+ ". Same read-only usage as Real-Debrid. Also lets you queue uncached torrents from the play picker.": ". Используется только для чтения, как и Real-Debrid. Также позволяет добавлять в очередь некешированные торренты прямо из выбора потоков.",
+ ". They email an activation link the first time. Click it, then come back and save.": ". При первом входе они пришлют ссылку для активации на почту. Перейдите по ней, затем вернитесь и сохраните.",
+ ". Use the \"personal\" key, not the project one.": ". Используйте «личный» ключ, а не ключ проекта.",
+ ". Use the v3 key, not the read access token.": ". Используйте ключ v3, а не токен доступа на чтение.",
+ ". Used to check cache and unrestrict links. Harbor never adds or removes torrents on its own.": ". Используется для проверки кеша и снятия ограничений со ссылок. Harbor никогда не добавляет и не удаляет торренты самостоятельно.",
+ ". Uses the directdl endpoint, which skips queueing for anything already cached.": ". Использует эндпоинт directdl, который пропускает очередь для всего, что уже закешировано.",
+ "· A debrid key (TorBox, Real-Debrid, etc.) is missing or expired.": "· Ключ debrid-сервиса (TorBox, Real-Debrid и т. д.) отсутствует или истёк.",
+ "· Add a debrid key (TorBox, Real-Debrid, AllDebrid, Premiumize, Debrid-Link).": "· Добавьте ключ debrid-сервиса (TorBox, Real-Debrid, AllDebrid, Premiumize, Debrid-Link).",
+ "· currently hidden": "· сейчас скрыто",
+ "· Install a stream addon (Torrentio, Comet, MediaFusion).": "· Установите аддон потоков (Torrentio, Comet, MediaFusion).",
+ "· No stream addon is installed yet (Torrentio, MediaFusion, Comet).": "· Аддон потоков пока не установлен (Torrentio, MediaFusion, Comet).",
+ "· This title is too new and no source has it cached yet.": "· Этот тайтл слишком новый, ни один источник ещё не закешировал его.",
+ "'s setup page in Harbor's built-in browser. Pick your options. When you click Install on their page, Harbor catches the link automatically and updates the addon.": " — страница настройки во встроенном браузере Harbor. Выберите нужные параметры. Когда вы нажмёте «Install» на их странице, Harbor автоматически перехватит ссылку и обновит аддон.",
+ "'s setup page. Pick your options, then copy the install link it gives you and paste it below to update the addon.": " — страница настройки. Выберите нужные параметры, затем скопируйте выданную ссылку установки и вставьте её ниже, чтобы обновить аддон.",
+ "{code} with a WebSocket upgrade: opens a Watch Together room. State is held in a Durable Object, no persistence beyond the active session.": "{code} с апгрейдом до WebSocket: открывает комнату «Смотреть вместе». Состояние хранится в Durable Object, без сохранения за пределами активной сессии.",
+ "{code}: returns JSON with the worker version. Used by the test button.": "{code}: возвращает JSON с версией воркера. Используется кнопкой проверки.",
+ "{count} community ratings on stremio-addons.net": "{count} пользовательских оценок на stremio-addons.net",
+ "{count} days ago": "{count} дней назад",
+ "{count} dl": "{count} загр.",
+ "{count} downloading": "{count} загружается",
+ "{count} films": "{count} фильмов",
+ "{count} frames stored. Wiping rebuilds them next time you watch.": "{count} кадров сохранено. Очистка приведёт к их пересборке при следующем просмотре.",
+ "{count} items": "{count} элементов",
+ "{count} months ago": "{count} месяцев назад",
+ "{count} picks ready": "{count} подборок готово",
+ "{count} selected": "{count} выбрано",
+ "{count} tracker request blocked this session. Harbor itself sends zero telemetry.": "{count} запрос трекера заблокирован за эту сессию. Сам Harbor не отправляет телеметрию.",
+ "{d}d ago": "{d} дн. назад",
+ "{h}h {m}m left": "Осталось {h} ч {m} мин",
+ "{h}h ago": "{h} ч назад",
+ "{h}h left": "Осталось {h} ч",
+ "{label} · {n} collection": "{label} · {n} коллекция",
+ "{label} · {n} collections": "{label} · {n} коллекций",
+ "{langs} only": "Только {langs}",
+ "{langs} only · {n} hidden": "Только {langs} · {n} скрыто",
+ "{m}m {s}s ago": "{m} мин {s} с назад",
+ "{m}m ago": "{m} мин назад",
+ "{m}m left": "Осталось {m} мин",
+ "{media} between {lo}-{hi} minutes. Pick a length, not a wall of options.": "{media} длительностью от {lo} до {hi} минут. Выберите длину, а не стену вариантов.",
+ "{media} from {name}: popular, acclaimed, and hidden alike.": "{media} от {name}: популярное, признанное критиками и скрытые находки.",
+ "{media} produced by {name}, ranked from biggest hits to overlooked gems.": "{media} с продюсером {name}, от главных хитов до незаслуженно забытых жемчужин.",
+ "{n} active": "{n} активно",
+ "{n} addon": "{n} аддон",
+ "{n} addons": "{n} аддонов",
+ "{n} anime titles will be left out (Trakt has no IDs for them).": "{n} аниме-тайтлов будет пропущено (у Trakt нет ID для них).",
+ "{n} avatars across film, TV, and anime.": "{n} аватаров из фильмов, сериалов и аниме.",
+ "{n} award": "{n} награда",
+ "{n} awards": "{n} наград",
+ "{n} chars": "{n} симв.",
+ "{n} connected": "{n} подключено",
+ "{n} countries": "{n} стран",
+ "{n} country": "{n} страна",
+ "{n} custom": "{n} пользовательских",
+ "{n} day ago": "{n} день назад",
+ "{n} days ago": "{n} дней назад",
+ "{n} ep": "{n} эп.",
+ "{n} episode": "{n} эпизод",
+ "{n} episodes": "{n} эпизодов",
+ "{n} episodes · {file}": "{n} эпизодов · {file}",
+ "{n} episodes on disk": "{n} эпизодов на диске",
+ "{n} eps": "{n} эп.",
+ "{n} film": "{n} фильм",
+ "{n} films": "{n} фильмов",
+ "{n} frame stored. Wiping rebuilds them next time you watch.": "{n} кадр сохранён. Очистка приведёт к его пересборке при следующем просмотре.",
+ "{n} frames stored. Wiping rebuilds them next time you watch.": "{n} кадров сохранено. Очистка приведёт к их пересборке при следующем просмотре.",
+ "{n} genre": "{n} жанр",
+ "{n} genres": "{n} жанров",
+ "{n} hidden": "{n} скрыто",
+ "{n} hr": "{n} ч",
+ "{n} in your Stremio library": "{n} в вашей библиотеке Stremio",
+ "{n} item": "{n} элемент",
+ "{n} items": "{n} элементов",
+ "{n} items need repair.": "{n} элементов требуют восстановления.",
+ "{n} languages": "{n} языков",
+ "{n} lines skipped (not valid)": "{n} строк пропущено (неверные)",
+ "{n} LIVE": "{n} В ЭФИРЕ",
+ "{n} min": "{n} мин",
+ "{n} min lead": "{n} мин заранее",
+ "{n} month ago": "{n} месяц назад",
+ "{n} months ago": "{n} месяцев назад",
+ "{n} new episodes since you last watched": "{n} новых эпизодов с момента последнего просмотра",
+ "{n} not matched": "{n} не сопоставлено",
+ "{n} on Trakt": "{n} на Trakt",
+ "{n} option": "{n} опция",
+ "{n} options": "{n} опций",
+ "{n} options active": "{n} опций активно",
+ "{n} people": "{n} человек",
+ "{n} provider": "{n} провайдер",
+ "{n} providers": "{n} провайдеров",
+ "{n} saved on this device": "{n} сохранено на этом устройстве",
+ "{n} score badges enabled.": "{n} значков рейтинга включено.",
+ "{n} seasons": "{n} сезонов",
+ "{n} selected": "{n} выбрано",
+ "{n} service needs attention": "{n} сервис требует внимания",
+ "{n} services need attention": "{n} сервисов требуют внимания",
+ "{n} source": "{n} источник",
+ "{n} source across {count} addons": "{n} источник в {count} аддонах",
+ "{n} sources": "{n} источников",
+ "{n} sources across {count} addons": "{n} источников в {count} аддонах",
+ "{n} sources available": "{n} источников доступно",
+ "{n} tab": "{n} вкладка",
+ "{n} tab locked": "{n} вкладка заблокирована",
+ "{n} tab requires this profile's PIN.": "{n} вкладка требует PIN-код этого профиля.",
+ "{n} tabs": "{n} вкладок",
+ "{n} tabs locked": "{n} вкладок заблокировано",
+ "{n} tabs require this profile's PIN.": "{n} вкладок требуют PIN-код этого профиля.",
+ "{n} title": "{n} тайтл",
+ "{n} titles": "{n} тайтлов",
+ "{n} titles need review — help us identify them.": "{n} тайтлов требуют проверки — помогите нам их опознать.",
+ "{n} tracker request blocked this session. Harbor itself sends zero telemetry.": "{n} запрос трекера заблокирован за эту сессию. Сам Harbor не отправляет телеметрию.",
+ "{n} tracker requests blocked this session. Harbor itself sends zero telemetry.": "{n} запросов трекеров заблокировано за эту сессию. Сам Harbor не отправляет телеметрию.",
+ "{n} votes": "{n} голосов",
+ "{n} watching": "{n} смотрят",
+ "{n} winner": "{n} победитель",
+ "{n} winners": "{n} победителей",
+ "{n} wins": "{n} побед",
+ "{n} year": "{n} год",
+ "{n} years": "{n} лет",
+ "{n}d left": "Осталось {n} дн.",
+ "{n}m": "{n} мин",
+ "{n}m left": "Осталось {n} мин",
+ "{name} (TV)": "{name} (ТВ)",
+ "{name} imported to your library": "{name} импортирован в вашу библиотеку",
+ "{name} started watching": "{name} начал(а) смотреть",
+ "{name} will be removed from Harbor. Anything you've set to use it will fall back to Inter.": "{name} будет удалён из Harbor. Всё, что использовало этот шрифт, вернётся к Inter.",
+ "{name}'s {sub}": "{name}: {sub}",
+ "{names} +{n} more": "{names} +{n}",
+ "{path} (open folder)": "{path} (открыть папку)",
+ "{pct}% watched": "Просмотрено {pct}%",
+ "{repaired} fixed, {clean} already clean": "{repaired} исправлено, {clean} уже в порядке",
+ "{s}s ago": "{s} с назад",
+ "{s}s left": "Осталось {s} с",
+ "{shown} of {total}": "{shown} из {total}",
+ "{shown} of {total} file from your computer": "{shown} из {total} файла с вашего компьютера",
+ "{shown} of {total} files from your computer": "{shown} из {total} файлов с вашего компьютера",
+ "{size} saved": "Сэкономлено {size}",
+ "{source} list detected": "Обнаружен список {source}",
+ "{start} to {end} · {dur}": "{start} — {end} · {dur}",
+ "{start}-{end} of {total}": "{start}-{end} из {total}",
+ "{subtitle} · ranked by current popularity": "{subtitle} · по текущей популярности",
+ "{title} image viewer": "Просмотр изображений — {title}",
+ "{title} overview": "Обзор — {title}",
+ "{used} / {limit} requests today.": "{used} / {limit} запросов сегодня.",
+ "{watched} of {total} watched ({pct}%).": "Просмотрено {watched} из {total} ({pct}%).",
+ "{word} {n} seconds": "{word} {n} секунд",
+ "{word} {n} seconds. Hold for options": "{word} {n} секунд. Удерживайте для параметров",
+ "{word} {n}s · hold for options": "{word} {n} с · удерживайте для параметров",
+ "#{position} in {label} Today": "#{position} в {label} сегодня",
+ "+ Watchlist": "+ Список",
+ "+{n} ep": "+{n} эп.",
+ "+{n} more": "+{n}",
+ "○ Mark watched": "○ Отметить просмотренным",
+ "★ {rating} — Change": "★ {rating} — Изменить",
+ "★ Rate": "★ Оценить",
+ "♡ Like": "♡ Нравится",
+ "♥ Liked": "♥ Понравилось",
+ "✓ Watched": "✓ Просмотрено",
+ "00:23 on the left, -1:12 on the right.": "00:23 слева, -1:12 справа.",
+ "0m left": "Осталось 0 мин",
+ "1\tSubtitle delay +0.1s": "1\tЗадержка субтитров +0.1с",
+ "1 day ago": "1 день назад",
+ "1 episode": "1 эпизод",
+ "1 episode on disk": "1 эпизод на диске",
+ "1 frame stored. Wiping rebuilds them next time you watch.": "1 кадр сохранён. Очистка приведёт к его пересборке при следующем просмотре.",
+ "1 item": "1 элемент",
+ "1 line skipped (not valid)": "1 строка пропущена (неверная)",
+ "1 min": "1 мин",
+ "1 month ago": "1 месяц назад",
+ "1 new episode since you last watched": "1 новый эпизод с момента последнего просмотра",
+ "1 option active": "1 опция активна",
+ "1 selected": "1 выбрано",
+ "1 title needs review — help us identify it.": "1 тайтл требует проверки — помогите нам его опознать.",
+ "1 week": "1 неделя",
+ "1 year": "1 год",
+ "1. Open Movies\n2. Click The Substance\n3. Press Play\n4. ...": "1. Откройте «Фильмы»\n2. Нажмите «The Substance»\n3. Нажмите «Воспроизвести»\n4. ...",
+ "1.5 min": "1,5 мин",
+ "1.85:1": "1.85:1",
+ "10\tSuspicious file": "10\tПодозрительный файл",
+ "100\tTonight's main event": "100\tГлавное событие вечера",
+ "100,000 requests per day.": "100 000 запросов в день.",
+ "10ms CPU time per request.": "10 мс процессорного времени на запрос.",
+ "10s": "10 с",
+ "11\tSwedish": "11\tШведский",
+ "12\tSwitch stream / TV Guide": "12\tПереключить поток / ТВ-программу",
+ "13\tSwitch the menus and buttons to your language. Arabic flips the layout to right to left.": "13\tПереключите меню и кнопки на ваш язык. Арабский переключает раскладку справа налево.",
+ "14\tSword & Sorcery": "14\tМеч и магия",
+ "15\tSyncing Trakt…": "15\tСинхронизация с Trakt…",
+ "15s": "15 с",
+ "16\tSystem": "16\tСистема",
+ "16:9": "16:9",
+ "17\tS{s} E{e}": "17\tС{s} Э{e}",
+ "18\tTHEN notify on": "18\tЗАТЕМ уведомлять на",
+ "19\tTMDB powers the firehose of every release this month. The free tier covers it. About 60 seconds to set up. Switch to My Library if you'd rather only see what you've saved.": "19\tTMDB обеспечивает полный поток всех релизов этого месяца. Бесплатного тарифа достаточно. Настройка займёт около 60 секунд. Переключитесь на «Моя библиотека», если хотите видеть только сохранённое.",
+ "2\tSubtitle delay −0.1s": "2\tЗадержка субтитров −0.1с",
+ "2 min": "2 мин",
+ "2.39:1": "2.39:1",
+ "20\tTRACKS": "20\tДОРОЖКИ",
+ "20+ and": "20+ и",
+ "2000s Era": "Эпоха 2000-х",
+ "2010s Classics": "Классика 2010-х",
+ "2020s Hits": "Хиты 2020-х",
+ "21\tTV guide": "21\tТВ-программа",
+ "21:9": "21:9",
+ "22\tTackle %": "22\tТекл, %",
+ "23\tTackles": "23\tТеклы",
+ "24\tTamil": "24\tТамильский",
+ "24m": "24 мин",
+ "25\tTarantino Picks": "25\tПодборка Тарантино",
+ "26\tTeam Turnovers": "26\tПотери команды",
+ "27\tTechnical Fouls": "27\tТехнические фолы",
+ "28\tTechnical. IBM's open family.": "28\tТехнический. Открытое семейство от IBM.",
+ "29\tTelevision's finest": "29\tЛучшее на ТВ",
+ "3\tSubtitle font size": "3\tРазмер шрифта субтитров",
+ "3 months": "3 месяца",
+ "30\tTense Performances": "30\tНапряжённые роли",
+ "30 days": "30 дней",
+ "30s": "30 с",
+ "31\tTest": "31\tПроверка",
+ "32\tTest relay": "32\tПроверить relay",
+ "33\tText-based sync": "33\tТекстовая синхронизация",
+ "34\tThai": "34\tТайский",
+ "35\tThe Boogeyman": "35\tБугимен",
+ "36\tThe Boss": "36\tБосс",
+ "37\tThe British Academy": "37\tБританская академия",
+ "38\tThe Home Front": "38\tТыл",
+ "39\tThe King": "39\tКороль",
+ "3PT": "3-очковые",
+ "4\tSubtitle track": "4\tДорожка субтитров",
+ "4 digits": "4 цифры",
+ "4-digit PIN is set.": "Установлен 4-значный PIN-код.",
+ "4:3": "4:3",
+ "40\tThe Long Lunch": "40\tДолгий обед",
+ "40-character token": "Токен из 40 символов",
+ "41\tThe Master": "41\tМастер",
+ "42\tThe Trenches": "42\tОкопы",
+ "43\tThe URL hostname is wrong or no longer exists. Many providers rotate domains; ask your provider for an updated playlist URL.": "43\tИмя хоста в URL неверно или больше не существует. Многие провайдеры меняют домены; запросите у провайдера обновлённую ссылку на плейлист.",
+ "44\tThe URL is valid but the playlist is empty. The provider may be in maintenance, or the URL is misconfigured.": "44\tURL действителен, но плейлист пуст. Возможно, провайдер на техобслуживании, либо URL настроен неверно.",
+ "45\tThe best {genre} {media}, layered by mood. Browse trending, dive into a director's run, sort by decade, find quiet gems.": "45\tЛучшее {genre} {media} по настроению. Смотрите тренды, погружайтесь в фильмографию режиссёра, сортируйте по десятилетиям, находите скрытые жемчужины.",
+ "45s": "45 с",
+ "46\tThe credentials in the URL are wrong. Edit the playlist and double check the username and password against what your provider sent.": "46\tДанные для входа в URL неверны. Отредактируйте плейлист и сверьте имя пользователя и пароль с тем, что прислал провайдер.",
+ "47\tThe critics' cut": "47\tВыбор критиков",
+ "48\tThe default round dot.": "48\tОбычная круглая точка по умолчанию.",
+ "49\tThe host did not respond. The URL may have expired (many providers rotate domains), the server is down, or your network is blocking it. Contact your provider for an updated URL.": "49\tХост не ответил. Возможно, срок действия URL истёк (провайдеры часто меняют домены), сервер недоступен, либо сеть блокирует соединение. Свяжитесь с провайдером за обновлённым URL.",
+ "5\tSubtitles haven't been published yet. Try search below or check back in a few days.": "5\tСубтитры ещё не опубликованы. Попробуйте поиск ниже или зайдите через несколько дней.",
+ "50\tThe most anticipated upcoming releases on Trakt": "50\tСамые ожидаемые предстоящие релизы на Trakt",
+ "51\tThe most anticipated upcoming releases on Trakt. No login needed.": "51\tСамые ожидаемые предстоящие релизы на Trakt. Вход не требуется.",
+ "52\tThe myth, reconsidered": "52\tМиф, переосмысленный",
+ "53\tThe playlist server actively refused the connection.": "53\tСервер плейлиста активно отклонил соединение.",
+ "54\tThe playlist server is down or your network is blocking it. Try again in a few minutes.": "54\tСервер плейлиста недоступен, либо сеть блокирует его. Повторите попытку через несколько минут.",
+ "55\tThe quick brown fox jumps over the lazy dog": "55\tВ чащах юга жил бы цитрус? Да, но фальшивый экземпляр!",
+ "56\tThe real footage": "56\tРеальные кадры",
+ "57\tThe series that make the rest of the night disappear.": "57\tСериалы, из-за которых пролетает весь вечер.",
+ "58\tThe server URL, username, or password is wrong. Edit the playlist and re-check the credentials your provider sent.": "58\tURL сервера, имя пользователя или пароль неверны. Отредактируйте плейлист и перепроверьте данные, присланные провайдером.",
+ "59\tThe server answered with status {status}. Is that a streaming server?": "59\tСервер ответил со статусом {status}. Это точно стриминговый сервер?",
+ "5s": "5 с",
+ "6\tSubtle Apple-like sheen on the filled portion.": "6\tЛёгкий блеск в стиле Apple на заполненной части.",
+ "6 months": "6 месяцев",
+ "60\tThe server is reachable but is not sending any data. Check the URL or contact your provider.": "60\tСервер доступен, но не отправляет данные. Проверьте URL или свяжитесь с провайдером.",
+ "61\tThe server rejected the request. Some providers block generic clients; verify the credentials work in their official app first.": "61\tСервер отклонил запрос. Некоторые провайдеры блокируют неофициальные клиенты; сначала проверьте, работают ли данные для входа в их официальном приложении.",
+ "62\tThe server replied with a webpage instead of Xtream data. The account may be expired, or the server URL is not an Xtream panel.": "62\tСервер ответил веб-страницей вместо данных Xtream. Возможно, срок действия аккаунта истёк, либо URL сервера не является панелью Xtream.",
+ "63\tThe server responded but the playlist is not at that URL. Check for typos and verify with your provider.": "63\tСервер ответил, но плейлиста по этому URL нет. Проверьте на опечатки и сверьтесь с провайдером.",
+ "64\tThe test calls {code} and confirms the worker is reachable and running a current version. A passing test means Watch Together rooms will connect.": "64\tПроверка вызывает {code} и подтверждает, что воркер доступен и работает на актуальной версии. Успешная проверка означает, что комнаты «Смотреть вместе» будут подключаться.",
+ "65\tTheme Library": "65\tБиблиотека тем",
+ "66\tTheme cheat sheet": "66\tШпаргалка по темам",
+ "67\tThemes you imported or built.": "67\tТемы, которые вы импортировали или создали.",
+ "68\tThemes you keep returning to": "68\tТемы, к которым вы всё время возвращаетесь",
+ "69\tThicker outline": "69\tТолще контур",
+ "7\tSummer Blockbusters": "7\tЛетние блокбастеры",
+ "70\tThinner outline": "70\tТоньше контур",
+ "70s Auteurs": "Авторы 70-х",
+ "71\tThis Afternoon": "71\tСегодня днём",
+ "72\tThis Morning": "72\tСегодня утром",
+ "73\tThis Xtream account is expired, banned, or disabled on the provider side. Renew or confirm with your provider.": "73\tЭтот аккаунт Xtream истёк, заблокирован или отключён на стороне провайдера. Продлите или уточните у провайдера.",
+ "74\tThis file has one audio track.": "74\tВ этом файле одна аудиодорожка.",
+ "75\tThis instance of Harbor is made for desktop. Our standalone iOS and Android apps are coming soon, each with a bespoke, mobile-first experience built for its native platform.": "75\tЭта версия Harbor создана для настольных систем. Наши отдельные приложения для iOS и Android скоро появятся — каждое со своим интерфейсом, созданным специально для мобильной платформы.",
+ "76\tThis month": "76\tВ этом месяце",
+ "77\tThis playlist has no movies. It may be live channels only, or an Xtream login that exposes movies separately.": "77\tВ этом плейлисте нет фильмов. Возможно, это только живые каналы, либо в аккаунте Xtream фильмы вынесены отдельно.",
+ "78\tThis playlist has no shows. It may be live channels only, or an Xtream login that exposes shows separately.": "78\tВ этом плейлисте нет сериалов. Возможно, это только живые каналы, либо в аккаунте Xtream сериалы вынесены отдельно.",
+ "79\tThis source": "79\tЭтот источник",
+ "8\tSundown": "8\tЗакат",
+ "8-character key": "Ключ из 8 символов",
+ "80\tThis week": "80\tНа этой неделе",
+ "80s Classics": "Классика 80-х",
+ "81\tThree Point %": "81\t3-очковые, %",
+ "82\tThree-Time Oscar": "82\tТрёхкратный «Оскар»",
+ "83\tThriller": "83\tТриллер",
+ "84\tTicking Clocks": "84\tГонка со временем",
+ "85\tTighter spacing": "85\tМеньше интервал",
+ "86\tTime elapsed": "86\tПрошло времени",
+ "87\tTime remaining or duration": "87\tОсталось времени или длительность",
+ "88\tTitle & info": "88\tНазвание и инфо",
+ "89\tTo run a public relay, post the {code} URL on r/Stremio or wherever your community lives. Other Harbor users paste it into Settings, Harbor Relay, {kbd}.": "89\tЧтобы запустить публичный relay, разместите URL {code} на r/Stremio или там, где обитает ваше сообщество. Другие пользователи Harbor вставят его в Настройки → Harbor Relay, {kbd}.",
+ "9\tSuperheroes": "9\tСупергерои",
+ "90\tToday's openers": "90\tОткрытия дня",
+ "91\tToggle a sleep timer that pauses when this episode ends.": "91\tВключить таймер сна, который поставит на паузу по окончании этого эпизода.",
+ "92\tToggle fullscreen": "92\tПереключить полноэкранный режим",
+ "93\tToggle mute": "93\tПереключить звук",
+ "94\tToggle playback.": "94\tПереключить воспроизведение.",
+ "95\tToggle stats overlay": "95\tПереключить оверлей статистики",
+ "96\tTonight": "96\tСегодня вечером",
+ "97\tTonight's Slate": "97\tПрограмма вечера",
+ "98\tTonight's binge bait": "98\tЧто посмотреть залпом сегодня",
+ "99\tTonight's lineup": "99\tЛайнап вечера",
+ "A browser tab opened on AniList. Approve Harbor there, then copy the text it shows and paste it below.": "Открылась вкладка браузера на AniList. Подтвердите доступ Harbor там, затем скопируйте показанный текст и вставьте его ниже.",
+ "A browser tab opened on MyAnimeList. Approve Harbor there, then copy the code or the page URL and paste it below.": "Открылась вкладка браузера на MyAnimeList. Подтвердите доступ Harbor там, затем скопируйте код или URL страницы и вставьте его ниже.",
+ "A client for the Stremio protocol. Two minutes to set up; most of it optional. You stay in control of every key.": "Клиент для протокола Stremio. Настройка занимает две минуты, большая часть — по желанию. Вы полностью контролируете каждый ключ.",
+ "A Cloudflare Worker on your own account that hosts your Watch Together rooms.": "Cloudflare Worker на вашем собственном аккаунте, который размещает ваши комнаты «Смотреть вместе».",
+ "A country releases something": "Страна выпускает что-то новое",
+ "A debrid service is connected. You'll get instant, high-quality streams.": "Debrid-сервис подключён. Вы получите мгновенные потоки высокого качества.",
+ "A free Cloudflare account.": "Бесплатный аккаунт Cloudflare.",
+ "A free TMDB key is highly recommended. It unlocks the full Harbor experience. The rest are optional, and Cinemeta works out of the box without any.": "Настоятельно рекомендуем бесплатный ключ TMDB — он раскрывает Harbor по полной. Остальное необязательно, а Cinemeta работает из коробки без каких-либо ключей.",
+ "A grown-up can enter the parent PIN to keep watching.": "Взрослый может ввести родительский PIN-код, чтобы продолжить просмотр.",
+ "A Live TV program is about to start": "Скоро начнётся программа прямого эфира",
+ "A name you keep watching": "Имя, за которым вы следите",
+ "A new anime comes out": "Выходит новое аниме",
+ "A new movie comes out": "Выходит новый фильм",
+ "A new series comes out": "Выходит новый сериал",
+ "A new version is ready to download.": "Готова к загрузке новая версия.",
+ "A quick age check before adult add-ons unlock. Answer three everyday questions any adult would know, and you're in.": "Быстрая проверка возраста перед разблокировкой взрослых аддонов. Ответьте на три простых вопроса, которые знает любой взрослый, — и готово.",
+ "A relay is a tiny Cloudflare Worker that passes play/pause/seek messages between you and your friends. No video data ever touches it. Deploy your own in one click (free tier is plenty), or paste a friend's invite link to use theirs.": "Relay — это небольшой Cloudflare Worker, который передаёт сообщения play/pause/seek между вами и друзьями. Видеоданные через него никогда не проходят. Разверните свой в один клик (бесплатного тарифа более чем достаточно) или вставьте ссылку-приглашение друга, чтобы использовать его relay.",
+ "A relay URL is shareable. Anyone with the URL can join Watch Together rooms hosted on your relay. The unique": "URL relay можно передавать. Любой, у кого есть URL, может присоединиться к комнатам «Смотреть вместе» на вашем relay. Уникальный",
+ "A relay URL is shareable. Anyone with the URL can join Watch Together rooms hosted on your relay. The unique {code} subdomain acts as the access token. There is no login.": "URL relay можно передавать. Любой, у кого есть URL, может присоединиться к комнатам «Смотреть вместе» на вашем relay. Уникальный поддомен {code} служит токеном доступа. Входа не требуется.",
+ "A safe, simple space: kid-friendly titles, big art, one-tap play, and a watch-time limit.": "Безопасное и простое пространство: тайтлы для детей, крупные постеры, воспроизведение в один тап и лимит времени просмотра.",
+ "A safety copy of your addon order. One is saved automatically before Harbor writes any change, and you can save one yourself any time. The five most recent are kept.": "Резервная копия порядка ваших аддонов. Одна создаётся автоматически перед каждым изменением Harbor, и вы можете сохранить копию вручную в любой момент. Хранятся последние пять.",
+ "A second binding for the same action so muscle memory survives.": "Дополнительная привязка для того же действия, чтобы моторная память не подводила.",
+ "A small badge over the video (with live FPS) that only appears when Anime4K is actually running. Follows your anime-only setting.": "Небольшой значок поверх видео (с FPS в реальном времени), который появляется только когда Anime4K действительно работает. Учитывает настройку «только для аниме».",
+ "A special thank you to the team at Stremio-Addons. Please consider supporting them.": "Особая благодарность команде Stremio-Addons. Пожалуйста, поддержите их.",
+ "A specific genre releases": "Выходит релиз в определённом жанре",
+ "A specific summary lands faster than a long paragraph. Steps to reproduce help most of all.": "Конкретное описание помогает быстрее, чем длинный абзац. Шаги воспроизведения проблемы полезны больше всего.",
+ "A streamer releases something": "Стриминг-сервис выпускает что-то новое",
+ "A typical Watch Together session uses a few hundred messages per hour. Solo and small-group use stays well under free tier limits.": "Типичная сессия «Смотреть вместе» использует несколько сотен сообщений в час. Одиночное и небольшое групповое использование остаётся далеко в пределах бесплатного тарифа.",
+ "A-Z": "А-Я",
+ "About": "О программе",
+ "About 200 lines of JavaScript, no dependencies. Read it before deploying if you want to know what runs.": "Около 200 строк JavaScript, без зависимостей. Прочитайте перед развёртыванием, если хотите знать, что именно выполняется.",
+ "About AniList": "Об AniList",
+ "About MyAnimeList": "О MyAnimeList",
+ "About Simkl": "О Simkl",
+ "About Stremboxd": "О Stremboxd",
+ "About the same": "Примерно так же",
+ "About this title": "Об этом тайтле",
+ "About Trakt": "О Trakt",
+ "About two minutes for the auto-deploy path.": "Около двух минут для автоматического развёртывания.",
+ "Above bar · left": "Над панелью · слева",
+ "Absolute": "Абсолютный",
+ "Academy Awards": "Премия «Оскар»",
+ "Accent glow": "Акцентное свечение",
+ "Access denied": "Доступ запрещён",
+ "Accessibility": "Специальные возможности",
+ "Acclaimed directors": "Признанные критиками режиссёры",
+ "Account": "Аккаунт",
+ "Account is not active": "Аккаунт не активен",
+ "Accurate Crosses": "Точные навесы",
+ "Accurate Long Balls": "Точные длинные передачи",
+ "Accurate Passes": "Точные передачи",
+ "Action": "Боевик",
+ "Action & Adventure": "Боевик и приключения",
+ "Action Heroine": "Героиня боевика",
+ "Action Hits": "Хиты боевиков",
+ "Actions": "Действия",
+ "Active": "Активно",
+ "Active torrents": "Активные торренты",
+ "Ad {n}": "Реклама {n}",
+ "Ad, analytics, and tracking requests pass through untouched.": "Запросы рекламы, аналитики и трекинга проходят без изменений.",
+ "Add": "Добавить",
+ "Add {n} titles from your Harbor watchlist to Trakt? Trakt skips any it already has.": "Добавить {n} тайтлов из вашего списка «к просмотру» Harbor в Trakt? Trakt пропустит те, что уже есть.",
+ "Add {n} titles from your Trakt watchlist to Harbor?": "Добавить {n} тайтлов из вашего списка «к просмотру» Trakt в Harbor?",
+ "Add {title} to AniList": "Добавить «{title}» в AniList",
+ "Add {title} to MyAnimeList": "Добавить «{title}» в MyAnimeList",
+ "Add {title} to Simkl": "Добавить «{title}» в Simkl",
+ "Add a Discord or Telegram URL above before creating rules.": "Добавьте URL Discord или Telegram выше, прежде чем создавать правила.",
+ "Add a Join button with your room link while you're in a watch party.": "Добавляет кнопку «Присоединиться» со ссылкой на комнату, пока идёт совместный просмотр.",
+ "Add a list": "Добавить список",
+ "Add a profile for someone else and everyone keeps their own Continue Watching, watch history, and progress.": "Добавьте профиль для другого человека, и у каждого будет свой раздел «Продолжить просмотр», история просмотров и прогресс.",
+ "Add a TMDB key above to unlock this.": "Добавьте ключ TMDB выше, чтобы разблокировать это.",
+ "Add a TMDB key for the full Harbor": "Добавьте ключ TMDB для полноценного Harbor",
+ "Add a TMDB key in Library settings.": "Добавьте ключ TMDB в настройках библиотеки.",
+ "Add a TMDB key in Settings → Library to power this view.": "Добавьте ключ TMDB в Настройки → Библиотека, чтобы включить этот раздел.",
+ "Add a TMDB key in Settings → Library to search.": "Добавьте ключ TMDB в Настройки → Библиотека для поиска.",
+ "Add a TMDB key in settings first": "Сначала добавьте ключ TMDB в настройках",
+ "Add a TMDB key in Settings to browse collections.": "Добавьте ключ TMDB в настройках, чтобы просматривать коллекции.",
+ "Add a TMDB key in Settings to load Arabic content.": "Добавьте ключ TMDB в настройках, чтобы загрузить арабский контент.",
+ "Add a TMDB key in Settings to see cast, related titles, and trailers here.": "Добавьте ключ TMDB в настройках, чтобы видеть здесь актёров, похожие тайтлы и трейлеры.",
+ "Add a TMDB key in Settings to see the cast for every title.": "Добавьте ключ TMDB в настройках, чтобы видеть актёров для каждого тайтла.",
+ "Add a TMDB key in Settings to unlock posters and the artists behind this award.": "Добавьте ключ TMDB в настройках, чтобы открыть постеры и авторов этой награды.",
+ "Add a TMDB key in Settings to unlock the full discovery feed.": "Добавьте ключ TMDB в настройках, чтобы открыть полную ленту рекомендаций.",
+ "Add a TMDB key to browse by this filter.": "Добавьте ключ TMDB, чтобы просматривать по этому фильтру.",
+ "Add a TMDB key to export metadata.": "Добавьте ключ TMDB для экспорта метаданных.",
+ "Add an ad starting at the current time": "Добавить рекламу с текущего момента",
+ "Add an MDBList API key to unlock this.": "Добавьте API-ключ MDBList, чтобы разблокировать это.",
+ "Add an OMDb key above to unlock this.": "Добавьте ключ OMDb выше, чтобы разблокировать это.",
+ "Add anime to your AniList and they show up here, grouped by status and ready to edit.": "Добавляйте аниме в свой AniList — они появятся здесь, сгруппированные по статусу и готовые к редактированию.",
+ "Add another playlist": "Добавить ещё один плейлист",
+ "Add Custom Source": "Добавить свой источник",
+ "Add element": "Добавить элемент",
+ "Add files from your computer": "Добавить файлы с компьютера",
+ "Add folder": "Добавить папку",
+ "Add from URL": "Добавить по URL",
+ "Add list": "Добавить список",
+ "add one in settings": "добавьте один в настройках",
+ "Add people in the Custom calendar manager first, then come back here.": "Сначала добавьте людей в менеджере календаря «Свой», затем вернитесь сюда.",
+ "Add profile": "Добавить профиль",
+ "Add Source": "Добавить источник",
+ "Add to AniList": "Добавить в AniList",
+ "Add to favorites": "Добавить в избранное",
+ "Add to MAL": "Добавить в MAL",
+ "Add to Simkl": "Добавить в Simkl",
+ "Add to watchlist": "Добавить в список «к просмотру»",
+ "Add to Watchlist": "Добавить в список «к просмотру»",
+ "added": "добавлено",
+ "Added {n} to your Harbor watchlist": "Добавлено {n} в ваш список «к просмотру» Harbor",
+ "Added to stremio-addons.net in the last 14 days": "Добавлено на stremio-addons.net за последние 14 дней",
+ "addon": "аддон",
+ "Addon": "Аддон",
+ "Addon not installed": "Аддон не установлен",
+ "Addon order": "Порядок аддонов",
+ "Addon order saved on this device": "Порядок аддонов сохранён на этом устройстве",
+ "Addon order synced to your Stremio account": "Порядок аддонов синхронизирован с вашим аккаунтом Stremio",
+ "addon synced": "аддон синхронизирован",
+ "Addons": "Аддоны",
+ "addons synced": "аддонов синхронизировано",
+ "Adds a blurred glass effect behind the stream picker panel.": "Добавляет размытый стеклянный эффект за панелью выбора потока.",
+ "Adds a Playlists item to the navigation for browsing movies and shows from your M3U or Xtream playlists (the same ones you add for Live TV). Off by default to keep the nav tidy.": "Добавляет пункт «Плейлисты» в навигацию для просмотра фильмов и сериалов из ваших плейлистов M3U или Xtream (тех же, что вы добавляете для прямого эфира). По умолчанию выключено, чтобы навигация оставалась компактной.",
+ "Adds a Playlists tab to the nav for your M3U and Xtream libraries.": "Добавляет вкладку «Плейлисты» в навигацию для ваших библиотек M3U и Xtream.",
+ "Adds a Seasons/Arcs switch on shows that have a story-arc grouping (like One Piece), so you can browse by saga instead of scrolling seasons. Needs a TMDB key. Off by default.": "Добавляет переключатель «Сезоны/Арки» для сериалов с группировкой по сюжетным аркам (как One Piece), чтобы просматривать по саге, а не листать сезоны. Требует ключ TMDB. По умолчанию выключено.",
+ "Adjust interface scale with wheel": "Изменение масштаба интерфейса колесом мыши",
+ "Adrenaline Rush": "Всплеск адреналина",
+ "Adult": "Для взрослых",
+ "Advance Continue Watching to the next episode": "Переключить «Продолжить просмотр» на следующий эпизод",
+ "Advanced": "Дополнительно",
+ "Advanced (mpv.conf)": "Дополнительно (mpv.conf)",
+ "Advanced. Target .harbor-custom-hover for the poster, .group:hover for the hover state. Shows live in the preview.": "Для опытных. Используйте .harbor-custom-hover для постера, .group:hover для состояния наведения. Отображается вживую в предпросмотре.",
+ "Adventure": "Приключения",
+ "Adventure Master": "Мастер приключений",
+ "After Dark": "После темноты",
+ "After the news": "После новостей",
+ "After you stop watching, a stream file stays cached for this long so reopening resumes instead of re-downloading. Older files are cleaned up automatically. Off deletes the file as soon as you leave the player.": "После остановки просмотра файл потока остаётся в кеше на этот срок, чтобы повторное открытие возобновляло просмотр, а не скачивало заново. Старые файлы удаляются автоматически. При «Выкл.» файл удаляется сразу после выхода из плеера.",
+ "After-hours picks": "Подборка на после работы",
+ "Afternoon Picks": "Дневная подборка",
+ "Afternoon Roll": "Дневная лента",
+ "Age": "Возраст",
+ "Age level": "Возрастной уровень",
+ "AI & The Future": "ИИ и будущее",
+ "AI didn't find anything for that. Try rephrasing.": "ИИ ничего не нашёл по этому запросу. Попробуйте переформулировать.",
+ "AI picks": "Подборка ИИ",
+ "AI search": "Поиск с ИИ",
+ "AI Search · natural-language search": "Поиск с ИИ · поиск на естественном языке",
+ "AI search failed. Tap to retry.": "Поиск с ИИ не удался. Нажмите, чтобы повторить.",
+ "Air Date": "Дата эфира",
+ "Aired {date}": "Вышел {date}",
+ "Airing Now": "Сейчас в эфире",
+ "Align": "Выравнивание",
+ "Align {dir}": "Выровнять {dir}",
+ "Alignment": "Выравнивание",
+ "All": "Все",
+ "All {n} channels loaded": "Все {n} каналов загружены",
+ "All {total} channels loaded": "Все {total} каналов загружены",
+ "All addons": "Все аддоны",
+ "All addons ({n})": "Все аддоны ({n})",
+ "All Ages": "Для всех возрастов",
+ "all channels": "все каналы",
+ "All channels": "Все каналы",
+ "All complete": "Всё завершено",
+ "All content": "Весь контент",
+ "All Done": "Всё готово",
+ "All genres": "Все жанры",
+ "All languages": "Все языки",
+ "All releases on GitHub": "Все релизы на GitHub",
+ "All reviews": "Все обзоры",
+ "All sources": "Все источники",
+ "All upcoming": "Все предстоящие",
+ "All upcoming needs a TMDB key": "Для «Все предстоящие» нужен ключ TMDB",
+ "All years": "Все годы",
+ "All-Time Great Series": "Лучшие сериалы всех времён",
+ "All-Time Greats": "Лучшее за все времена",
+ "AllDebrid API key": "API-ключ AllDebrid",
+ "Allow rating movies, shows, and anime directly using the star picker.": "Разрешить оценивать фильмы, сериалы и аниме прямо через выбор звёзд.",
+ "Also won": "Также получил(а)",
+ "Alternate": "Альтернативный",
+ "Always": "Всегда",
+ "Always keep on this device": "Всегда хранить на этом устройстве",
+ "Always on top": "Поверх всех окон",
+ "Always re-encode when casting (recommended)": "Всегда перекодировать при трансляции (рекомендуется)",
+ "Always show the report button": "Всегда показывать кнопку жалобы",
+ "AM Picks": "Утренняя подборка",
+ "Ambience": "Атмосфера",
+ "AMC": "AMC",
+ "American Epics": "Американские эпики",
+ "American History": "История Америки",
+ "An actor you keep watching": "Актёр, за которым вы следите",
+ "An error occurred": "Произошла ошибка",
+ "An unexpected error occurred": "Произошла непредвиденная ошибка",
+ "an unknown date": "неизвестная дата",
+ "Anchor Selection": "Точка привязки выделения",
+ "Ancient Civilizations": "Древние цивилизации",
+ "and": "и",
+ "and confirms the worker is reachable and running a current version. A passing test means Watch Together rooms will connect.": "и подтверждает, что воркер доступен и работает на актуальной версии. Успешная проверка означает, что комнаты «Смотреть вместе» будут подключаться.",
+ "And for the naughty ones: browsing or rating an adult addon never shows on Discord.": "И для любителей острого: просмотр или оценка взрослого аддона никогда не отображается в Discord.",
+ "and your": "и ваш",
+ "AniList": "AniList",
+ "AniList Comments": "Комментарии AniList",
+ "AniList rows": "Строки AniList",
+ "Animated Movies": "Мультфильмы",
+ "Animated Worlds": "Анимационные миры",
+ "Animated, For Grown-Ups": "Анимация для взрослых",
+ "Animation": "Анимация",
+ "Animation Night": "Вечер анимации",
+ "anime": "аниме",
+ "Anime": "Аниме",
+ "Anime award": "Награда за аниме",
+ "Anime card rating source": "Источник рейтинга карточек аниме",
+ "Anime done right": "Аниме, каким оно должно быть",
+ "Anime is drawn on twos and threes, so fast pans can judder. Smoothing fills in the gaps so motion glides.": "Аниме рисуется «по двойкам и тройкам», из-за чего быстрые панорамы могут дёргаться. Сглаживание заполняет промежутки, чтобы движение было плавным.",
+ "Anime leaves Home Continue Watching and stays in the Anime tab's own row.": "Аниме уходит из «Продолжить просмотр» на главной и остаётся только в собственной строке вкладки «Аниме».",
+ "Anime of the Year": "Аниме года",
+ "Anime only": "Только аниме",
+ "Anime sources are usually richer through Torrentio's anime config or AIOStreams. Make sure one is installed in Stremio.": "Источники аниме обычно богаче через конфигурацию аниме в Torrentio или через AIOStreams. Убедитесь, что один из них установлен в Stremio.",
+ "Anime tab": "Вкладка «Аниме»",
+ "Anime Title Language": "Язык названий аниме",
+ "Anime tweaks": "Настройки аниме",
+ "Anime4K": "Anime4K",
+ "Anime4K and smooth-motion run on the bundled mpv engine in the Harbor desktop app. They have no effect in the browser.": "Anime4K и плавное движение работают на встроенном движке mpv в десктопном приложении Harbor. В браузере эффекта не дают.",
+ "Anime4K isn't set up yet. Turn it on in Settings under Anime.": "Anime4K ещё не настроен. Включите его в Настройках, в разделе «Аниме».",
+ "Anime4K real-time upscaling, smooth motion, and where SVP fits in. All the anime-specific picture enhancements in one place.": "Апскейлинг Anime4K в реальном времени, плавное движение и место SVP в этой связке. Все улучшения картинки для аниме в одном месте.",
+ "Anime4K shaders": "Шейдеры Anime4K",
+ "Anime4K upscaling": "Апскейлинг Anime4K",
+ "annoying": "раздражает",
+ "Anonymous": "Анонимно",
+ "Anti-War": "Антивоенное",
+ "Anticipated": "Ожидаемое",
+ "Any": "Любой",
+ "Any country": "Любая страна",
+ "Any genre": "Любой жанр",
+ "Any new anime": "Любое новое аниме",
+ "Any new movie": "Любой новый фильм",
+ "Any new series": "Любой новый сериал",
+ "Any of your {n} tracked people": "Любой из ваших {n} отслеживаемых людей",
+ "Any quality": "Любое качество",
+ "Any source": "Любой источник",
+ "Any streamer": "Любой стриминг-сервис",
+ "Anyone who opens this link gets the relay URL and room code set automatically. Works in the browser too: no install required for the joiner.": "У каждого, кто откроет эту ссылку, URL relay и код комнаты установятся автоматически. Работает и в браузере: присоединяющемуся не нужно ничего устанавливать.",
+ "Anything matching your Custom calendar: tracked people, genres, providers, countries.": "Всё, что соответствует вашему календарю «Свой»: отслеживаемые люди, жанры, провайдеры, страны.",
+ "Anything you install in Harbor pushes back to your Stremio account so it shows up on mobile too. Sign in via the avatar in the bottom-left of the sidebar.": "Всё, что вы устанавливаете в Harbor, отправляется обратно в ваш аккаунт Stremio, поэтому появляется и на мобильном. Войдите через аватар в левом нижнем углу боковой панели.",
+ "Anywhere in Harbor.": "Где угодно в Harbor.",
+ "API budget": "Бюджет API",
+ "API key": "API-ключ",
+ "API token": "Токен API",
+ "app unusable": "приложение непригодно для использования",
+ "Appearance": "Внешний вид",
+ "Apple TV+": "Apple TV+",
+ "Apply {language}": "Применить {language}",
+ "Apply {language} preferences?": "Применить настройки для {language}?",
+ "Apply custom theme": "Применить свою тему",
+ "Apply SVP to": "Применить SVP к",
+ "Arabic": "Арабский",
+ "arabic.row.classics": "Классика египетского кино",
+ "arabic.row.comedy": "Арабские комедии",
+ "arabic.row.drama": "Арабские драмы",
+ "arabic.row.khaleeji": "Заливные / Халиджи",
+ "arabic.row.movies": "Арабские фильмы",
+ "arabic.row.ramadan": "Сериалы Рамадана 2026",
+ "arabic.row.trending": "В тренде на арабском",
+ "Archive Portraits": "Архивные портреты",
+ "Arcs": "Сюжетные арки",
+ "Around {min} min": "Около {min} мин",
+ "Art Direction": "Художественная постановка",
+ "as the scheme instead of": "как схему вместо",
+ "Ascending": "По возрастанию",
+ "Ask": "Спросить",
+ "Ask a grown-up before you close.": "Спроси взрослого, прежде чем закрывать.",
+ "Ask a grown-up to enter the parent PIN.": "Попроси взрослого ввести родительский PIN.",
+ "Ask a grown-up to switch profiles.": "Попроси взрослого переключить профиль.",
+ "Ask AI to find titles for \\": "Попросить ИИ найти тайтлы для \\",
+ "Ask before leaving": "Спрашивать перед выходом",
+ "Ask each time": "Спрашивать каждый раз",
+ "Ask to resume or start over": "Спрашивать: продолжить или начать заново",
+ "Asking AI…": "Спрашиваем у ИИ…",
+ "Aspect ratio": "Соотношение сторон",
+ "Assists": "Передачи",
+ "at {n}": "в {n}",
+ "at {time}": "в {time}",
+ "At Bats": "Выходы на биту",
+ "AudD · in-player song ID": "AudD · распознавание песен в плеере",
+ "AudD API token": "Токен API AudD",
+ "Audio": "Аудио",
+ "Audio bitrate": "Битрейт аудио",
+ "Audio codec": "Аудиокодек",
+ "Audio languages": "Языки аудио",
+ "Audio track": "Аудиодорожка",
+ "Audio tracks": "Аудиодорожки",
+ "Australia": "Австралия",
+ "Authorize Harbor on AniList": "Авторизовать Harbor в AniList",
+ "Authorize Harbor on MyAnimeList": "Авторизовать Harbor в MyAnimeList",
+ "Authorize Harbor on Simkl": "Авторизовать Harbor в Simkl",
+ "Authorize Harbor on Trakt": "Авторизовать Harbor в Trakt",
+ "Authorized": "Авторизовано",
+ "Authorized {when}": "Авторизовано {when}",
+ "Authorized on this device": "Авторизовано на этом устройстве",
+ "auto": "авто",
+ "Auto": "Авто",
+ "Auto (recommended)": "Авто (рекомендуется)",
+ "Auto is best for most people. mpv handles the trickiest 4K, HDR, and audio formats.": "«Авто» подходит большинству. mpv справляется даже со сложным 4K, HDR и аудиоформатами.",
+ "Auto next episode": "Автопереход к следующей серии",
+ "Auto-confirm peer-to-peer streaming": "Автоподтверждение P2P-трансляции",
+ "Auto-deploy from Harbor": "Авторазвёртывание из Harbor",
+ "Auto-hide the Skip button after": "Автоскрывать кнопку «Пропустить» через",
+ "Auto-included. No keys, no library, no URLs. Just structural flags so reproductions go faster.": "Добавляется автоматически. Никаких ключей, библиотеки или URL — только служебные флаги для более быстрой диагностики.",
+ "Auto-loading the best stream": "Автозагрузка лучшего источника",
+ "Auto-play next episode": "Автовоспроизведение следующей серии",
+ "Auto-skip credit outros": "Автопропуск финальных титров",
+ "Auto-skip intros": "Автопропуск заставок",
+ "Auto-skip recaps": "Автопропуск кратких содержаний",
+ "Automatically jump past recap segments.": "Автоматически пропускать сегменты с кратким содержанием.",
+ "Automatically play the next episode when the current one ends.": "Автоматически включать следующую серию по окончании текущей.",
+ "Automatically skip ending credits and trigger the next episode countdown immediately.": "Автоматически пропускать финальные титры и сразу запускать обратный отсчёт до следующей серии.",
+ "Automatically track what you are playing and save watch progress in real-time.": "Автоматически отслеживать, что вы смотрите, и сохранять прогресс просмотра в реальном времени.",
+ "Automations": "Автоматизация",
+ "AUTOMATIONS": "АВТОМАТИЗАЦИЯ",
+ "Autoplay trailer on detail pages": "Автовоспроизведение трейлера на странице тайтла",
+ "Availability": "Доступность",
+ "Average /10": "Средняя /10",
+ "Average /5": "Средняя /5",
+ "Average Letterboxd rating out of 5.": "Средний рейтинг Letterboxd из 5.",
+ "Avg ★ {rating}": "Средняя ★ {rating}",
+ "Award Nominee": "Номинант на награду",
+ "Award Winner": "Обладатель награды",
+ "Award Winning Anime": "Отмеченное наградами аниме",
+ "Awards": "Награды",
+ "Awards & Recognition": "Награды и признание",
+ "Awards Contenders": "Претенденты на награды",
+ "Awkward Hero": "Неловкий герой",
+ "Back": "Назад",
+ "Back {n} seconds": "Назад на {n} секунд",
+ "Back {n}s": "Назад на {n} с",
+ "Back 10s": "Назад на 10 с",
+ "Back 30 seconds": "Назад на 30 секунд",
+ "Back out mid-episode and the card keeps the exact frame you stopped on, with your progress, so it looks like a pause instead of a thumbnail.": "Выйдите посреди серии — карточка сохранит точный кадр остановки вместе с прогрессом, так что это будет выглядеть как пауза, а не просто миниатюра.",
+ "Back to addons": "Назад к аддонам",
+ "Back to library": "Назад в библиотеку",
+ "Back to relay": "Назад к ретранслятору",
+ "Back to threads": "Назад к темам",
+ "Back to top": "Наверх",
+ "Back up current order": "Сделать резервную копию текущего порядка",
+ "Backdrop size": "Размер фона",
+ "Backdrops": "Фоны",
+ "Backed up. The current account order is saved in the Backups panel.": "Резервная копия создана. Текущий порядок аккаунта сохранён на панели резервных копий.",
+ "Background": "Фон",
+ "Background image": "Фоновое изображение",
+ "Background opacity": "Прозрачность фона",
+ "Backup & restore": "Резервное копирование и восстановление",
+ "Backup credentials": "Резервные учётные данные",
+ "Backup loaded into the editor. Addons added since stay at the end. Nothing changes until you press Save.": "Резервная копия загружена в редактор. Аддоны, добавленные позже, остаются в конце. Ничего не изменится, пока вы не нажмёте «Сохранить».",
+ "Backups": "Резервные копии",
+ "Bad username or password": "Неверное имя пользователя или пароль",
+ "Badge position": "Положение значка",
+ "BAFTA": "BAFTA",
+ "Balanced": "Сбалансированный",
+ "Balanced (Mobius)": "Сбалансированный (Mobius)",
+ "Bar color": "Цвет полосы",
+ "Bar height": "Высота полосы",
+ "Bar image": "Изображение полосы",
+ "Bar style": "Стиль полосы",
+ "Bass boost": "Усиление баса",
+ "Be My Valentine": "Будь моим Валентином",
+ "Be the first to start a discussion.": "Станьте первым, кто начнёт обсуждение.",
+ "Beautiful Monsters": "Прекрасные монстры",
+ "Before Trilogy": "Трилогия «Перед»",
+ "Behavior": "Поведение",
+ "Behind the sound": "За кадром звука",
+ "Beloved, slightly forgotten": "Любимое, но немного забытое",
+ "below. In Telegram, send him": "ниже. В Telegram отправьте ему",
+ "below. Send it": "ниже. Отправьте его",
+ "Berlinale": "Берлинале",
+ "Best": "Лучшее",
+ "Best for debrid": "Лучшее для дебрида",
+ "Best known for": "Известен благодаря",
+ "Best Picture and beyond": "Лучший фильм и не только",
+ "Beta": "Бета",
+ "Better": "Лучше",
+ "Better posters, ratings, episode info.": "Постеры лучше, есть рейтинги и информация о сериях.",
+ "Between meetings": "Между встречами",
+ "Beyond the kids' shelf": "За пределами детской полки",
+ "BG Art": "Фоновая графика",
+ "Big Swings": "Смелые эксперименты",
+ "BL": "BL",
+ "Black bar": "Чёрная полоса",
+ "Block ads & trackers": "Блокировать рекламу и трекеры",
+ "Blockbuster Maker": "Создатель блокбастеров",
+ "blocked": "заблокировано",
+ "Blocked Shots": "Заблокированные броски",
+ "Blocks": "Блоки",
+ "Blur": "Размытие",
+ "Blur comments by default": "Размывать комментарии по умолчанию",
+ "Blur descriptions": "Размывать описания",
+ "Blur episode artwork, titles, and descriptions for episodes you have not watched yet, on both shows and anime. Hover an episode to peek.": "Размывать обложки, названия и описания непросмотренных серий — как в сериалах, так и в аниме. Наведите на серию, чтобы подглядеть.",
+ "Blur episode images on detail page": "Размывать изображения серий на странице тайтла",
+ "Blur reviews by default": "Размывать отзывы по умолчанию",
+ "Blur spoilers": "Размывать спойлеры",
+ "Blur stream backdrop": "Размывать фон источника",
+ "Blur thumbnails": "Размывать миниатюры",
+ "Blur titles": "Размывать названия",
+ "Blur up": "Постепенное проявление",
+ "Blurs the hero image and stills on the episode detail page until you click reveal.": "Размывает главное изображение и кадры на странице серии, пока вы не нажмёте «Показать».",
+ "Board": "Доска",
+ "Bokeh": "Боке",
+ "Bokeh background": "Фон с эффектом боке",
+ "Bold": "Полужирный",
+ "Bold text": "Полужирный текст",
+ "Boost SDR video toward HDR": "Улучшать SDR-видео до уровня HDR",
+ "Born {date}": "Дата рождения: {date}",
+ "bot token": "токен бота",
+ "Bot token": "Токен бота",
+ "BotFather replies with a token like": "BotFather пришлёт токен вида",
+ "Both Flags": "Оба флага",
+ "Both go in the boxes above. Harbor builds the URL for you.": "Оба значения вводятся в поля выше. Harbor сам соберёт URL.",
+ "Both Sides of the Law": "По обе стороны закона",
+ "Bottom": "Снизу",
+ "Bottom · center": "Снизу · по центру",
+ "Bottom · left": "Снизу · слева",
+ "Bottom · right": "Снизу · справа",
+ "Bottom bar": "Нижняя панель",
+ "Bottom left": "Снизу слева",
+ "Bottom right": "Снизу справа",
+ "Box": "Рамка",
+ "box above.": "поле выше.",
+ "Box color": "Цвет рамки",
+ "Boy": "Мальчик",
+ "Brazil": "Бразилия",
+ "Bright-side series": "Сериалы со светлой стороны",
+ "Brighten dark movies": "Осветлять тёмные фильмы",
+ "Brightness": "Яркость",
+ "Bring in your library": "Импортировать вашу библиотеку",
+ "Bring the Tissues": "Запаситесь салфетками",
+ "Bring your Letterboxd watchlist, diary, liked films and lists into Harbor via the Stremboxd bridge.": "Перенесите список желаемого, дневник, понравившиеся фильмы и списки из Letterboxd в Harbor через мост Stremboxd.",
+ "Bring your lists with you": "Возьмите свои списки с собой",
+ "Brings back the small in-app tips you've dismissed without redoing the welcome flow.": "Возвращает мелкие подсказки в приложении, которые вы скрыли, без повторного запуска приветственного сценария.",
+ "Brings in your library, watchlist, and installed addons.": "Импортирует библиотеку, список желаемого и установленные аддоны.",
+ "Brit Comedy": "Британская комедия",
+ "British Television": "Британское телевидение",
+ "Bromance": "Мужская дружба",
+ "Browse": "Обзор",
+ "Browse addons": "Обзор аддонов",
+ "Browse all releases": "Все релизы",
+ "Browse by Award": "По наградам",
+ "Browse by category": "По категориям",
+ "Browse by country": "По странам",
+ "Browse by Genre": "По жанрам",
+ "Browse by Language": "По языкам",
+ "Browse channels": "Обзор каналов",
+ "Browse provider": "Обзор провайдера",
+ "Browse pull requests": "Обзор pull request'ов",
+ "Browse streams manually": "Выбрать источник вручную",
+ "Browse your catalogs": "Обзор ваших каталогов",
+ "Browsing": "Просмотр каталога",
+ "Browsing the TV guide": "Просмотр телепрограммы",
+ "Budget": "Бюджет",
+ "Budget exhausted, resets at midnight UTC.": "Бюджет исчерпан, сброс в полночь по UTC.",
+ "Buffer fill": "Заполнение буфера",
+ "Buffer fill brightness": "Яркость индикатора заполнения буфера",
+ "Buffering": "Буферизация",
+ "Bug reporters get listed in the release notes when their report leads to a shipped fix. Leave blank to stay anonymous.": "Авторы отчётов об ошибках указываются в примечаниях к выпуску, если их отчёт приводит к исправлению. Оставьте поле пустым, чтобы остаться анонимным.",
+ "Bug reports": "Отчёты об ошибках",
+ "Build": "Сборка",
+ "Build a bigger buffer": "Увеличить буфер",
+ "Build a named filter once, then apply it in the source picker to hide everything that doesn't match. Each filter ANDs its dimensions and ignores any you leave blank.": "Создайте именованный фильтр один раз, затем применяйте его в выборе источника, чтобы скрыть всё несовпадающее. Все условия фильтра объединяются через «И», а пустые условия игнорируются.",
+ "Build a new theme": "Создать новую тему",
+ "Build a Theme": "Создать тему",
+ "Build from source": "Собрать из исходного кода",
+ "Build identity. Useful when filing a bug report at bugs@harbor.site.": "Идентификатор сборки. Пригодится при отправке отчёта об ошибке на bugs@harbor.site.",
+ "Build your own feed from actors, directors, and Trakt lists": "Создайте свою ленту из актёров, режиссёров и списков Trakt",
+ "Build your own palette": "Создать свою палитру",
+ "Building tonight's queue…": "Формируем очередь на сегодня…",
+ "Built for desktop resolutions": "Оптимизировано для разрешений экрана ПК",
+ "Built-in peer-to-peer streaming, served from your own machine.": "Встроенная P2P-трансляция, обслуживается вашим же компьютером.",
+ "Bullet Ballet": "Балет пуль",
+ "Bundled with Harbor. Plays anything you throw at it.": "Поставляется вместе с Harbor. Воспроизводит практически любой формат.",
+ "Burn in subtitles": "Вшивать субтитры",
+ "By community stars": "По оценке сообщества",
+ "By default, addon rails that duplicate the built-in ones (Trending, Popular, Top Rated, etc.) are merged so you don't see the same row twice. Turn this on to show every one, duplicates and all.": "По умолчанию строки аддонов, дублирующие встроенные (В тренде, Популярное, С высоким рейтингом и т.д.), объединяются, чтобы не показывать одно и то же дважды. Включите, чтобы показывать все строки, включая дубликаты.",
+ "by the Harbor team": "от команды Harbor",
+ "Cache buffering": "Буферизация кэша",
+ "Cache location": "Расположение кэша",
+ "Cached on Real-Debrid, TorBox, AllDebrid. Instant play.": "Есть в кэше Real-Debrid, TorBox, AllDebrid. Мгновенный запуск.",
+ "Cached only": "Только из кэша",
+ "Cached only ({n})": "Только из кэша ({n})",
+ "Calendar": "Календарь",
+ "Can't decide?": "Не можете определиться?",
+ "Canada": "Канада",
+ "Cancel": "Отмена",
+ "Cancel autoplay": "Отменить автовоспроизведение",
+ "Cancel download": "Отменить загрузку",
+ "Cancel timer": "Отменить таймер",
+ "Canceled": "Отменено",
+ "Cannes": "Канны",
+ "Cap how much disk the cache can use. When it goes over, Harbor deletes the oldest files first. Enforced on launch and as streams close.": "Ограничивает объём диска для кэша. При превышении Harbor сначала удаляет самые старые файлы. Проверяется при запуске и при закрытии источников.",
+ "Captions in your language": "Субтитры на вашем языке",
+ "Card overlays": "Оверлеи карточек",
+ "Career Drama": "Карьерная драма",
+ "Carry it through the day": "Пронесите это через весь день",
+ "Cast": "Актёрский состав",
+ "Cast · {n}": "Актёрский состав · {n}",
+ "Cast information isn't available for this title.": "Информация об актёрском составе для этого тайтла недоступна.",
+ "Cast to a device": "Транслировать на устройство",
+ "Cast to TV or speaker": "Транслировать на телевизор или колонку",
+ "Casting comes with the mpv backend": "Трансляция доступна с движком mpv",
+ "Catalog": "Каталог",
+ "Catalogs": "Каталоги",
+ "Catalogs & metadata": "Каталоги и метаданные",
+ "Catalogs to show": "Каталоги для отображения",
+ "Catch stremio:// install links inside Harbor": "Перехватывать ссылки установки stremio:// в Harbor",
+ "categories": "категории",
+ "category": "категория",
+ "Cause": "Причина",
+ "Celebrated actors": "Прославленные актёры",
+ "center": "по центру",
+ "Center": "По центру",
+ "CGI": "Компьютерная графика",
+ "Change": "Изменить",
+ "Change the order addons are tried in": "Изменить порядок обращения к аддонам",
+ "Change…": "Изменить…",
+ "Changing the location restarts the engine. Clearing removes all cached stream files right away; anything you reopen will re-fetch.": "Изменение расположения перезапускает движок. Очистка сразу удаляет все закэшированные файлы; при повторном открытии они будут загружены заново.",
+ "Channel": "Канал",
+ "Channel categories": "Категории каналов",
+ "Channel is taking a while": "Канал долго загружается",
+ "Channel won't load": "Канал не загружается",
+ "Chaos Theory": "Теория хаоса",
+ "Char Design": "Дизайн персонажей",
+ "Character": "Персонаж",
+ "Character Work": "Работа над персонажами",
+ "Chat": "Чат",
+ "chat ID": "ID чата",
+ "Chat ID": "ID чата",
+ "Check for updates": "Проверить обновления",
+ "Check logs in Cloudflare dashboard, then redeploy": "Проверьте логи в панели Cloudflare, затем разверните заново",
+ "Check relay": "Проверить ретранслятор",
+ "Checking": "Проверка",
+ "Checking {n} items…": "Проверка {n} элементов…",
+ "Checking harbor.site for a newer build.": "Проверяем harbor.site на наличие новой сборки.",
+ "Checking with AniList...": "Проверка через AniList...",
+ "Checking with MyAnimeList...": "Проверка через MyAnimeList...",
+ "Checking…": "Проверка…",
+ "China": "Китай",
+ "Chinese": "Китайский",
+ "Choose": "Выбрать",
+ "Choose a folder...": "Выберите папку...",
+ "Choose a model": "Выберите модель",
+ "Choose a source to save offline. You can track progress on the Downloads page.": "Выберите источник для сохранения офлайн. Следить за прогрессом можно на странице загрузок.",
+ "Choose an avatar": "Выберите аватар",
+ "Choose file": "Выбрать файл",
+ "Choose folder": "Выбрать папку",
+ "Choose how far the keyboard arrows and player seek buttons jump.": "Выберите шаг перемотки для стрелок клавиатуры и кнопок перемотки плеера.",
+ "Choose what happens when you hit Play on a title. Manual gives you full control over quality and source.": "Выберите, что происходит при нажатии «Play» на тайтле. Ручной режим даёт полный контроль над качеством и источником.",
+ "Choose which Simkl rails appear on your home screen.": "Выберите, какие строки Simkl появятся на главном экране.",
+ "Chosen by actors": "Выбор актёров",
+ "chrome.harborHome": "Главная Harbor",
+ "chrome.locked": "Заблокировано",
+ "chrome.lockedRequiresPin": "{label} (заблокировано, требуется PIN)",
+ "chrome.lockedShort": "{label} · заблокировано",
+ "chrome.maximize": "Развернуть",
+ "chrome.minimize": "Свернуть",
+ "chrome.parentalOn": "Родительский контроль включён",
+ "chrome.restore": "Восстановить",
+ "chrome.scrollForMore": "Прокрутите для продолжения",
+ "chrome.sectionLibrary": "Библиотека",
+ "chrome.watchTogether": "Смотреть вместе",
+ "Cinematography": "Операторская работа",
+ "Cinemeta didn't return anything for {genre}. Try a different genre or add a TMDB key.": "Cinemeta не вернул результатов для жанра {genre}. Попробуйте другой жанр или добавьте ключ TMDB.",
+ "Circle": "Круг",
+ "Classic Mystery": "Классический детектив",
+ "Classic Stremio": "Классический Stremio",
+ "Classic. Was Harbor's original pair.": "Классика. Была изначальной парой шрифтов Harbor.",
+ "Clean modern. Sans across the board.": "Чисто и современно. Везде рубленый шрифт.",
+ "Clean releases for this title are still scarce. Confirm the filename and size before playing.": "Качественных релизов для этого тайтла пока мало. Проверьте имя файла и размер перед воспроизведением.",
+ "Clean releases for this title haven't surfaced yet. The result below may not match the title you're looking for, so confirm the filename and size before playing.": "Качественные релизы для этого тайтла пока не появились. Результат ниже может не соответствовать искомому тайтлу, поэтому проверьте имя файла и размер перед воспроизведением.",
+ "Cleaner grid for when your poster service already prints the title onto the artwork.": "Более чистая сетка на случай, если сервис постеров уже печатает название на обложке.",
+ "Cleaner grid when your poster service already prints the title on the artwork.": "Более чистая сетка, когда сервис постеров уже печатает название на обложке.",
+ "Clear": "Очистить",
+ "Clear & restart": "Очистить и перезапустить",
+ "Clear A-B loop": "Сбросить цикл A-B",
+ "Clear all": "Очистить всё",
+ "Clear all saved frames": "Удалить все сохранённые кадры",
+ "Clear cache now": "Очистить кэш сейчас",
+ "Clear drawings": "Очистить рисунки",
+ "Clear filter": "Сбросить фильтр",
+ "Clear filters": "Сбросить фильтры",
+ "Clear history": "Очистить историю",
+ "Clear match": "Сбросить совпадение",
+ "Clear search": "Очистить поиск",
+ "Clear the search to see all {n} installed.": "Очистите поиск, чтобы увидеть все установленные ({n}).",
+ "Clearances": "Разрешения",
+ "Clearing": "Очистка",
+ "Clearing…": "Очистка…",
+ "CLI.": "Командная строка.",
+ "Click": "Нажмите",
+ "Click {b1} in the top right. Pick the {b2} template (it's the default, should already be selected).": "Нажмите {b1} в правом верхнем углу. Выберите шаблон {b2} (он используется по умолчанию и, скорее всего, уже выбран).",
+ "Click {kbd}.": "Нажмите {kbd}.",
+ "Click a line": "Нажмите на строку",
+ "Click another": "Выберите другую",
+ "Click any binding to rebind it. Press Esc while capturing to cancel. Letters ignore Shift (so K and Shift+K trigger the same action).": "Нажмите на любую привязку, чтобы переназначить её. Нажмите Esc во время захвата, чтобы отменить. Буквы не учитывают Shift (K и Shift+K запускают одно и то же действие).",
+ "Click any control in the live preview to move, hide, or reorder it.": "Нажмите на любой элемент в живом предпросмотре, чтобы переместить, скрыть или изменить его порядок.",
+ "Click any control to edit it.": "Нажмите на любой элемент, чтобы изменить его.",
+ "Click any source to swap in place": "Нажмите на любой источник, чтобы заменить его на месте",
+ "Click below to open": "Нажмите ниже, чтобы открыть",
+ "Click below to open ": "Нажмите ниже, чтобы открыть ",
+ "Click below to open {name}'s setup page in Harbor's built-in browser. Pick your options. When you click Install on their page, Harbor catches the link automatically and updates the addon.": "Нажмите ниже, чтобы открыть страницу настройки {name} во встроенном браузере Harbor. Выберите нужные параметры. Когда вы нажмёте «Install» на их странице, Harbor автоматически перехватит ссылку и обновит аддон.",
+ "Click below to open {name}'s setup page. Pick your options, then copy the install link it gives you and paste it below to update the addon.": "Нажмите ниже, чтобы открыть страницу настройки {name}. Выберите нужные параметры, затем скопируйте выданную ссылку установки и вставьте её ниже, чтобы обновить аддон.",
+ "Click the button below to open Cloudflare's Workers page.": "Нажмите кнопку ниже, чтобы открыть страницу Cloudflare Workers.",
+ "Click the button below. It opens Cloudflare's token page in your browser. Sign in (free, takes 30 seconds if you don't have an account).": "Нажмите кнопку ниже. Она откроет страницу токенов Cloudflare в браузере. Войдите в аккаунт (бесплатно, займёт 30 секунд, если у вас его ещё нет).",
+ "Click to apply · Right-click to delete": "Нажмите, чтобы применить · Правая кнопка мыши — удалить",
+ "click to cancel": "нажмите для отмены",
+ "Click to cycle 100 / 75 / 50 / 25 / 0.": "Нажимайте для переключения между 100 / 75 / 50 / 25 / 0.",
+ "Click to open {name}'s setup page in Harbor's built-in browser. Pick your options. When you click Install on their page, Harbor catches the link automatically and updates the addon.": "Нажмите, чтобы открыть страницу настройки {name} во встроенном браузере Harbor. Выберите нужные параметры. Когда вы нажмёте «Install» на их странице, Harbor автоматически перехватит ссылку и обновит аддон.",
+ "Click to open {name}'s setup page. Pick your options, then copy the install link it gives you and paste it below to update the addon.": "Нажмите, чтобы открыть страницу настройки {name}. Выберите нужные параметры, затем скопируйте выданную ссылку установки и вставьте её ниже, чтобы обновить аддон.",
+ "Click to turn off": "Нажмите, чтобы выключить",
+ "Click to turn on": "Нажмите, чтобы включить",
+ "Click toggles mute. Wheel scrolls volume.": "Клик переключает без звука. Колёсико меняет громкость.",
+ "Client ID": "ID клиента",
+ "Client secret": "Секрет клиента",
+ "Close": "Закрыть",
+ "Close · Esc": "Закрыть · Esc",
+ "Close guide": "Закрыть телепрограмму",
+ "Close Harbor?": "Закрыть Harbor?",
+ "Close image viewer": "Закрыть просмотр изображений",
+ "Close invite link panel": "Закрыть панель ссылки-приглашения",
+ "Close match": "Близкое совпадение",
+ "Close match to host": "Близкое совпадение с хостом",
+ "Close overview": "Закрыть обзор",
+ "Close player": "Закрыть плеер",
+ "Close search": "Закрыть поиск",
+ "Close to the system tray": "Сворачивать в системный трей при закрытии",
+ "Close trailer": "Закрыть трейлер",
+ "Closing the window tucks Harbor into the tray instead of quitting, so it reopens instantly. Right-click the tray icon for quick controls, or pick Quit to exit fully.": "Закрытие окна сворачивает Harbor в трей вместо выхода из приложения, поэтому оно открывается мгновенно. Щёлкните правой кнопкой по значку в трее для быстрых действий или выберите «Выход», чтобы закрыть приложение полностью.",
+ "Cloudflare asks you to pick a name (this becomes {code}). Type any name (your first name works). Then click {b1}.": "Cloudflare попросит выбрать имя (оно станет {code}). Введите любое имя (подойдёт и просто ваше имя). Затем нажмите {b1}.",
+ "Cloudflare shows API tokens only once. Save a copy now or you'll lose the ability to stop or redeploy this relay from Harbor.": "Cloudflare показывает токены API только один раз. Сохраните копию сейчас, иначе вы потеряете возможность останавливать или повторно разворачивать этот ретранслятор из Harbor.",
+ "Cloudflare token form filled with name 'Harbor Relay' and one permission row set to Account / Workers Scripts / Edit": "Форма токена Cloudflare с именем «Harbor Relay» и одной строкой разрешений: Account / Workers Scripts / Edit",
+ "Cloudflare Workers free tier:": "Бесплатный тариф Cloudflare Workers:",
+ "Code expired": "Код истёк",
+ "Coffee-and-couch": "Кофе и диван",
+ "Collapse": "Свернуть",
+ "Collapse sidebar": "Свернуть боковую панель",
+ "Collection": "Коллекция",
+ "Collections": "Коллекции",
+ "Color & HDR": "Цвет и HDR",
+ "Color presets, custom backgrounds, and the font pair Harbor renders in.": "Цветовые пресеты, свои фоны и пара шрифтов, которыми отрисовывается Harbor.",
+ "Color tokens": "Цветовые токены",
+ "Colors": "Цвета",
+ "Come back here and hit {b1}. The Hello World can stay where it is. It's free and harmless.": "Вернитесь сюда и нажмите {b1}. «Hello World» можно оставить как есть — это бесплатно и безвредно.",
+ "Comedy": "Комедия",
+ "Comedy Series": "Комедийные сериалы",
+ "Comfort Watch": "Уютный просмотр",
+ "Coming of Age": "Взросление",
+ "Coming to Theaters": "Скоро в кино",
+ "Comma-separated words. Audio or subtitle tracks whose name matches any of these are skipped during automatic selection. You can still pick them by hand in the player.": "Слова через запятую. Аудио- и субтитровые дорожки, чьё название совпадает с любым из них, пропускаются при автовыборе. Вы всё равно сможете выбрать их вручную в плеере.",
+ "Commanding Range": "Впечатляющий диапазон",
+ "commentary, descriptive": "комментарии, тифлокомментарий",
+ "Comments": "Комментарии",
+ "Comments are blurred until you reveal them, even if they are not tagged as spoilers.": "Комментарии размыты, пока вы их не откроете, даже если они не помечены как спойлеры.",
+ "Comments are hidden": "Комментарии скрыты",
+ "Comments may take a moment to appear on Trakt": "Комментариям может потребоваться время, чтобы появиться в Trakt",
+ "Comments on anime pages are blurred until you reveal them, even if they are not tagged as spoilers.": "Комментарии на страницах аниме размыты, пока вы их не откроете, даже если они не помечены как спойлеры.",
+ "Comments on episode/show pages are blurred until you reveal them, even if they are not tagged as spoilers.": "Комментарии на страницах серий и сериалов размыты, пока вы их не откроете, даже если они не помечены как спойлеры.",
+ "Common picks for a fresh setup.": "Частые варианты для новой настройки.",
+ "common.back": "Назад",
+ "common.cancel": "Отмена",
+ "common.close": "Закрыть",
+ "common.confirm": "Подтвердить",
+ "common.delete": "Удалить",
+ "common.done": "Готово",
+ "common.edit": "Изменить",
+ "common.loading": "Загрузка",
+ "common.more": "Ещё",
+ "common.next": "Далее",
+ "common.play": "Воспроизвести",
+ "common.previous": "Назад",
+ "common.remove": "Удалить",
+ "common.retry": "Повторить",
+ "common.save": "Сохранить",
+ "common.search": "Поиск",
+ "Community": "Сообщество",
+ "community API. Star, browse, and contribute on their site.": "API сообщества. Поставьте звезду, изучите и внесите вклад на их сайте.",
+ "Community comments from Trakt that appear on movie and show pages.": "Комментарии сообщества из Trakt, отображаемые на страницах фильмов и сериалов.",
+ "Compact": "Компактный",
+ "Companion series for whatever the afternoon throws at you.": "Сериал-компаньон на любой случай во второй половине дня.",
+ "Complete": "Завершено",
+ "Completed": "Завершено",
+ "Concert Films": "Концертные фильмы",
+ "Condensed": "Сжатый",
+ "Condensed shows a top pick, quality tiles, and a drawer. Stremio is a flat list grouped by addon, no scoring.": "Сжатый режим показывает лучший вариант, плитки качества и выдвижную панель. Режим Stremio — плоский список, сгруппированный по аддонам, без оценки.",
+ "Configurable": "Настраиваемый",
+ "Configure": "Настроить",
+ "Configure & install": "Настроить и установить",
+ "Configure on the addon's setup page": "Настроить на странице настройки аддона",
+ "Confirm": "Подтвердить",
+ "Confirm clear": "Подтвердить очистку",
+ "Confirm full reset": "Подтвердить полный сброс",
+ "Confirm remove": "Подтвердить удаление",
+ "Confirm remove from library": "Подтвердить удаление из библиотеки",
+ "Confirm your current PIN to remove the lock.": "Подтвердите текущий PIN, чтобы снять блокировку.",
+ "Confirm your current PIN, then pick a new one.": "Подтвердите текущий PIN, затем задайте новый.",
+ "Confirm your PIN": "Подтвердите PIN",
+ "Conflict": "Конфликт",
+ "Connect": "Подключить",
+ "Connect / Verify": "Подключить / Проверить",
+ "Connect a debrid service (Real-Debrid, TorBox, AllDebrid) for instant HD without the wait.": "Подключите дебрид-сервис (Real-Debrid, TorBox, AllDebrid) для мгновенного HD без ожидания.",
+ "Connect a playlist to get started.": "Подключите плейлист, чтобы начать.",
+ "Connect a provider": "Подключить провайдера",
+ "Connect AniList": "Подключить AniList",
+ "Connect any IPTV provider. Channels are sorted by category, EPG is pulled automatically when your provider supplies it, and playback runs through native libmpv.": "Подключите любого IPTV-провайдера. Каналы сортируются по категориям, программа передач (EPG) загружается автоматически, если провайдер её предоставляет, а воспроизведение идёт через нативный libmpv.",
+ "Connect Discord or Telegram and Harbor posts a message when something you follow is about to drop. Hit Test to send yourself a sample first.": "Подключите Discord или Telegram, и Harbor будет присылать сообщение, когда скоро выйдет что-то отслеживаемое вами. Нажмите «Тест», чтобы сначала отправить себе пробное сообщение.",
+ "Connect MyAnimeList": "Подключить MyAnimeList",
+ "Connect Simkl": "Подключить Simkl",
+ "Connect Trakt": "Подключить Trakt",
+ "Connect Trakt first.": "Сначала подключите Trakt.",
+ "Connect Trakt in settings first": "Сначала подключите Trakt в настройках",
+ "Connect Trakt in Settings to sync": "Подключите Trakt в настройках для синхронизации",
+ "Connect your AniList account": "Подключите аккаунт AniList",
+ "Connect your AniList account to see forum threads and comments.": "Подключите аккаунт AniList, чтобы видеть темы форума и комментарии.",
+ "Connect your AniList account to show your anime lists as rails on the Anime page.": "Подключите аккаунт AniList, чтобы ваши списки аниме отображались строками на странице аниме.",
+ "Connect your MyAnimeList account": "Подключите аккаунт MyAnimeList",
+ "Connect your provider.": "Подключите своего провайдера.",
+ "Connect your Simkl account": "Подключите аккаунт Simkl",
+ "Connect your Simkl account to mark what you finish as watched and sync your plan-to-watch list across apps.": "Подключите аккаунт Simkl, чтобы отмечать просмотренное и синхронизировать список «Буду смотреть» между приложениями.",
+ "Connect your Trakt account": "Подключите аккаунт Trakt",
+ "Connect your Trakt account to scrobble playback, sync your watchlist, and pull personalized recommendations.": "Подключите аккаунт Trakt, чтобы отслеживать просмотры, синхронизировать список желаемого и получать персональные рекомендации.",
+ "Connect your Trakt account to see comments and reviews.": "Подключите аккаунт Trakt, чтобы видеть комментарии и отзывы.",
+ "Connected": "Подключено",
+ "Connected — {n} catalogs available": "Подключено — доступно каталогов: {n}",
+ "Connected as {username}": "Подключено как {username}",
+ "Connected as @{user}": "Подключено как @{user}",
+ "Connected as @{username}": "Подключено как @{username}",
+ "Connected to AniList": "Подключено к AniList",
+ "Connected to MyAnimeList": "Подключено к MyAnimeList",
+ "Connected to relay": "Подключено к ретранслятору",
+ "Connected to Simkl": "Подключено к Simkl",
+ "Connected to Trakt": "Подключено к Trakt",
+ "Connecting": "Подключение",
+ "Connection": "Соединение",
+ "Connection refused": "Соединение отклонено",
+ "Connection refused / DNS does not resolve": "Соединение отклонено / DNS не разрешается",
+ "Connection reset by server": "Соединение сброшено сервером",
+ "Contains spoiler": "Содержит спойлер",
+ "Content advisory": "Предупреждение о содержании",
+ "Content advisory on start": "Предупреждение о содержании при запуске",
+ "Content filters": "Фильтры контента",
+ "Continue": "Продолжить",
+ "Continue from last watched": "Продолжить с последнего просмотра",
+ "Continue in your browser...": "Продолжите в браузере...",
+ "Continue to summary": "Перейти к сводке",
+ "Continue Watching": "Продолжить просмотр",
+ "Continue Watching screenshots": "Скриншоты «Продолжить просмотр»",
+ "Continue Watching, then your addon catalogs in install order. No hero, no Harbor rails.": "«Продолжить просмотр», затем каталоги аддонов в порядке установки. Без баннера и без строк Harbor.",
+ "Continue Watching, then your installed addons. Every catalog renders as its own row, install order, no dedup, no hero.": "«Продолжить просмотр», затем установленные аддоны. Каждый каталог отображается отдельной строкой в порядке установки, без объединения дубликатов и без баннера.",
+ "Continuing": "Продолжение",
+ "Contrast": "Контраст",
+ "Contribute on GitHub": "Внести вклад на GitHub",
+ "Controls": "Управление",
+ "Cool Heists": "Крутые ограбления",
+ "copied": "скопировано",
+ "Copied": "Скопировано",
+ "Copied to clipboard": "Скопировано в буфер обмена",
+ "Copied. Paste it to your friend.": "Скопировано. Отправьте другу.",
+ "Copy": "Копировать",
+ "Copy diagnostics": "Копировать диагностику",
+ "Copy diagnostics grabs the engine status and your P2P settings as JSON, handy to paste into a bug report. The engine folder holds the DHT cache (dht.json) and active torrent data.": "«Копировать диагностику» собирает состояние движка и ваши настройки P2P в формате JSON — удобно вставить в отчёт об ошибке. Папка движка содержит кэш DHT (dht.json) и данные активных торрентов.",
+ "Copy error": "Копировать ошибку",
+ "Copy invite link": "Копировать ссылку-приглашение",
+ "Copy link": "Копировать ссылку",
+ "Copy relay URL": "Копировать URL ретранслятора",
+ "Copy room code": "Копировать код комнаты",
+ "Copy theme": "Копировать тему",
+ "Copy URL": "Копировать URL",
+ "Copy Webhook URL": "Копировать URL вебхука",
+ "Copy your Harbor watchlist over to Trakt, or pull your Trakt watchlist into Harbor. Safe to run again, Trakt skips anything it already has.": "Скопируйте список желаемого из Harbor в Trakt или импортируйте список Trakt в Harbor. Можно запускать повторно — Trakt пропускает то, что уже есть.",
+ "Corner": "Угол",
+ "Corner Kicks": "Угловые",
+ "Corner radius": "Радиус скругления",
+ "Corners": "Углы",
+ "cosmetic, minor": "косметическое, незначительное",
+ "Costs": "Затраты",
+ "Couch hours": "Часы на диване",
+ "Could not build the backup file.": "Не удалось создать файл резервной копии.",
+ "Could not find this title on AniList.": "Не удалось найти этот тайтл на AniList.",
+ "Could not identify this title on Trakt.": "Не удалось определить этот тайтл на Trakt.",
+ "Could not load this playlist": "Не удалось загрузить этот плейлист",
+ "Could not reach playlist server": "Не удалось подключиться к серверу плейлиста",
+ "Could not reach the server within 1.5 seconds. Check the address and that the server machine is online.": "Не удалось подключиться к серверу за 1,5 секунды. Проверьте адрес и убедитесь, что сервер в сети.",
+ "Could not read that file.": "Не удалось прочитать этот файл.",
+ "Could not read the subtitle file": "Не удалось прочитать файл субтитров",
+ "Could not resolve hostname": "Не удалось разрешить имя хоста",
+ "Could not resolve that Letterboxd list URL.": "Не удалось распознать этот URL списка Letterboxd.",
+ "Could not send:": "Не удалось отправить:",
+ "Could not send: {error}": "Не удалось отправить: {error}",
+ "Could not send. Try again.": "Не удалось отправить. Попробуйте снова.",
+ "Couldn't connect to AniList": "Не удалось подключиться к AniList",
+ "Couldn't connect to MyAnimeList": "Не удалось подключиться к MyAnimeList",
+ "Couldn't copy. Select the URL manually.": "Не удалось скопировать. Выделите URL вручную.",
+ "Couldn't create the profile. {error}": "Не удалось создать профиль. {error}",
+ "Couldn't delete the profile. {error}": "Не удалось удалить профиль. {error}",
+ "Couldn't find a Simkl avatar on your account.": "Не удалось найти аватар Simkl в вашем аккаунте.",
+ "Couldn't find a Trakt avatar on your account.": "Не удалось найти аватар Trakt в вашем аккаунте.",
+ "Couldn't find an AniList avatar on your account.": "Не удалось найти аватар AniList в вашем аккаунте.",
+ "Couldn't import that file. {error}": "Не удалось импортировать этот файл. {error}",
+ "Couldn't install. Double-check the URL and try again.": "Не удалось установить. Проверьте URL и попробуйте снова.",
+ "Couldn't load {name}": "Не удалось загрузить {name}",
+ "Couldn't load that subtitle file. Try another.": "Не удалось загрузить этот файл субтитров. Попробуйте другой.",
+ "Couldn't load the calendar": "Не удалось загрузить календарь",
+ "Couldn't load this list. Check the URL and try again.": "Не удалось загрузить этот список. Проверьте URL и попробуйте снова.",
+ "Couldn't load your Stremio collection. Nothing can be reordered safely without it.": "Не удалось загрузить вашу коллекцию Stremio. Без неё безопасно изменить порядок невозможно.",
+ "Couldn't open this file": "Не удалось открыть этот файл",
+ "Couldn't reach AniList.": "Не удалось подключиться к AniList.",
+ "Couldn't reach AniList. Try refreshing.": "Не удалось подключиться к AniList. Попробуйте обновить.",
+ "Couldn't reach harbor.site to load earlier builds. Check your connection and try again.": "Не удалось подключиться к harbor.site для загрузки предыдущих сборок. Проверьте подключение и попробуйте снова.",
+ "Couldn't reach Simkl": "Не удалось подключиться к Simkl",
+ "Couldn't reach Simkl.": "Не удалось подключиться к Simkl.",
+ "Couldn't reach Simkl. Try refreshing.": "Не удалось подключиться к Simkl. Попробуйте обновить.",
+ "Couldn't reach Stremio to confirm your collection. Nothing was written.": "Не удалось подключиться к Stremio для подтверждения коллекции. Изменения не сохранены.",
+ "Couldn't reach the update server. Try again in a moment.": "Не удалось подключиться к серверу обновлений. Попробуйте чуть позже.",
+ "Couldn't reach Trakt": "Не удалось подключиться к Trakt",
+ "Couldn't reach Trakt.": "Не удалось подключиться к Trakt.",
+ "Couldn't reach Trakt. Check your connection and try again.": "Не удалось подключиться к Trakt. Проверьте подключение и попробуйте снова.",
+ "Couldn't reach Trakt. Try refreshing.": "Не удалось подключиться к Trakt. Попробуйте обновить.",
+ "Couldn't read that addon URL.": "Не удалось прочитать этот URL аддона.",
+ "Couldn't read that font file.": "Не удалось прочитать этот файл шрифта.",
+ "Couldn't read your watchlist. Try again.": "Не удалось прочитать ваш список желаемого. Попробуйте снова.",
+ "Couldn't remove. Try again.": "Не удалось удалить. Попробуйте снова.",
+ "Couldn't rename the profile. {error}": "Не удалось переименовать профиль. {error}",
+ "Couldn't save your layout. {error}": "Не удалось сохранить макет. {error}",
+ "Couldn't save: the reordered list failed safety validation. Nothing was written.": "Не удалось сохранить: изменённый список не прошёл проверку безопасности. Изменения не сохранены.",
+ "Couldn't scan that folder.": "Не удалось просканировать эту папку.",
+ "Couldn't set up SVP: {err}": "Не удалось настроить SVP: {err}",
+ "Couldn't start on port {WEB_PORT}. Another app may be using it; toggle off and on to retry.": "Не удалось запуститься на порту {WEB_PORT}. Возможно, он занят другим приложением; выключите и включите снова, чтобы повторить попытку.",
+ "Couldn't start SVP Manager: {err}": "Не удалось запустить SVP Manager: {err}",
+ "Couldn't switch profile. {error}": "Не удалось переключить профиль. {error}",
+ "Countries": "Страны",
+ "Country": "Страна",
+ "Couple": "Пара",
+ "Cover Image URL": "URL обложки",
+ "Cozy Autumn Nights": "Уютные осенние вечера",
+ "Create": "Создать",
+ "Create account": "Создать аккаунт",
+ "Create Custom Token": "Создать собственный токен",
+ "Create one": "Создать",
+ "Create profile": "Создать профиль",
+ "Create thread": "Создать тред",
+ "Create Token": "Создать токен",
+ "Creator": "Автор",
+ "Creators": "Авторы",
+ "Credentials are likely expired or the subscription is inactive. Edit the playlist URL above, or contact your provider.": "Похоже, учётные данные устарели или подписка неактивна. Измените URL плейлиста выше или обратитесь к своему провайдеру.",
+ "Credentials stored on this device. Nothing leaves your machine.": "Учётные данные хранятся на этом устройстве. Ничего не покидает ваш компьютер.",
+ "Credit (optional)": "Автор (необязательно)",
+ "Credit me in the release notes if this report leads to a fix.": "Укажите меня в примечаниях к выпуску, если это сообщение приведёт к исправлению.",
+ "Crew": "Команда",
+ "Crime": "Криминал",
+ "Crime & Mystery": "Криминал и детектив",
+ "Crime Films": "Криминальные фильмы",
+ "Crime Series": "Криминальные сериалы",
+ "Crisp (anime & cartoons)": "Чёткая (аниме и мультфильмы)",
+ "Critical": "Критично",
+ "Critically Loved": "Любимо критиками",
+ "Critics' Choice": "Выбор критиков",
+ "Critics' Picks": "Подборка критиков",
+ "Cross %": "% пересечения",
+ "Crosses": "Пересечения",
+ "Crowd-pleasers, prestige picks, and the kind of series people text about.": "Хиты для всех, престижные проекты и сериалы, о которых пишут друзьям.",
+ "Crunch cards": "Компактные карточки",
+ "Cult Classics": "Культовая классика",
+ "Curated for popularity and reliability. No paid placements. Install anything else by URL on the Browse tab.": "Подобрано по популярности и надёжности. Без платного размещения. Всё остальное можно установить по URL на вкладке «Обзор».",
+ "Current": "Текущий",
+ "Custom": "Свой вариант",
+ "Custom calendar": "Свой календарь",
+ "Custom cards": "Свои карточки",
+ "Custom chrome": "Свой интерфейс",
+ "Custom code": "Свой код",
+ "Custom CSS": "Свой CSS",
+ "Custom HTML overlay": "Свой HTML-оверлей",
+ "Custom image": "Своё изображение",
+ "Custom JS": "Свой JS",
+ "Custom length": "Своя длительность",
+ "Custom lists": "Свои списки",
+ "Custom location": "Своё расположение",
+ "Custom MPV code": "Свой код MPV",
+ "Custom palette": "Своя палитра",
+ "Custom poster service": "Свой сервис постеров",
+ "Custom style": "Свой стиль",
+ "Customize": "Настроить",
+ "Customize home": "Настроить главную",
+ "Customize layout": "Настроить макет",
+ "Customize page": "Настроить страницу",
+ "Customizing the player": "Настройка плеера",
+ "Cycle aspect / crop": "Переключить пропорции / кадрирование",
+ "Cycle aspect and crop modes: Fit, Fill, Zoom, 16:9, 4:3, Original.": "Переключение режимов пропорций и кадрирования: По размеру, Заполнить, Увеличить, 16:9, 4:3, Оригинал.",
+ "Cycle subtitles": "Переключить субтитры",
+ "Cycle subtitles (alt)": "Переключить субтитры (альт.)",
+ "Cycle through available subtitle tracks.": "Переключение доступных дорожек субтитров.",
+ "Czech": "Чешский",
+ "Daily call counter for OMDb rating lookups. Reset if it stops returning fresh scores.": "Счётчик дневных запросов рейтингов OMDb. Сбросьте, если перестанут приходить свежие оценки.",
+ "Daily watch time": "Время просмотра за день",
+ "Danish": "Датский",
+ "Dark Fantasy": "Тёмное фэнтези",
+ "Dark Thrillers": "Мрачные триллеры",
+ "Dark, immersive, and binge-worthy when the house is quiet.": "Мрачное, затягивающее и то, что смотрят запоем в тишине дома.",
+ "Date added": "Дата добавления",
+ "Date Night": "Свидание",
+ "Daybreak": "Рассвет",
+ "Daylight Watching": "Дневной просмотр",
+ "Daytime watching": "Просмотр днём",
+ "Deadpan King": "Король невозмутимости",
+ "debrid": "debrid",
+ "Debrid is down": "Debrid недоступен",
+ "Debrid required": "Требуется Debrid",
+ "Debrid services": "Debrid-сервисы",
+ "Debrid-Link API key": "API-ключ Debrid-Link",
+ "Decrease progress": "Уменьшить прогресс",
+ "default": "по умолчанию",
+ "Default": "По умолчанию",
+ "Default (gold accent)": "По умолчанию (золотой акцент)",
+ "Default app cache folder": "Папка кэша приложения по умолчанию",
+ "Default picture shape on the mpv engine. Fit keeps the source as-is with any black bars; the rest stretch or crop to fill, handy for old 4:3 shows on a widescreen TV.": "Форма изображения по умолчанию в движке mpv. «По размеру» сохраняет исходник как есть, с чёрными полосами при необходимости; остальные растягивают или обрезают для заполнения — удобно для старых шоу 4:3 на широкоформатном телевизоре.",
+ "Default. Harbor parses and scores every source and surfaces the best quality first.": "По умолчанию. Harbor анализирует и оценивает каждый источник, показывая лучшее качество первым.",
+ "Default. Humanist serif, warm sans.": "По умолчанию. Гуманистическая антиква и тёплый гротеск.",
+ "Default. Rejects size outliers, suspicious extensions, year/episode mismatches, season packs (for episode requests), trailers, and likely cams.": "По умолчанию. Отклоняет источники с аномальным размером, подозрительными расширениями, несовпадением года/эпизода, сезонными сборками (при запросе эпизода), трейлерами и вероятными экранными копиями.",
+ "Default. Top pick at the top, quality tiles, and an All-Sources drawer. Harbor scores and ranks results.": "По умолчанию. Лучший вариант сверху, плитки качества и панель «Все источники». Harbor оценивает и ранжирует результаты.",
+ "Defensive Rebounds": "Подборы в защите",
+ "Defining the 2010s": "Определяющие 2010-е",
+ "Delete": "Удалить",
+ "Delete after I finish watching": "Удалить после просмотра",
+ "Delete current": "Удалить текущий",
+ "Delete custom source": "Удалить свой источник",
+ "Delete download and file": "Удалить загрузку и файл",
+ "Delete filter": "Удалить фильтр",
+ "Delete layout": "Удалить макет",
+ "Delete profile": "Удалить профиль",
+ "Delete this font?": "Удалить этот шрифт?",
+ "Delete this profile permanently? This cannot be undone.": "Удалить этот профиль навсегда? Это действие нельзя отменить.",
+ "Delete this profile?": "Удалить этот профиль?",
+ "Dense plots and rich worlds for when sleep is not happening.": "Плотные сюжеты и богатые миры для тех ночей, когда не спится.",
+ "Deploy": "Развернуть",
+ "Deploy a relay": "Развернуть ретранслятор",
+ "Deploy a relay (desktop only)": "Развернуть ретранслятор (только на ПК)",
+ "Deploy mine instead": "Развернуть свой вместо этого",
+ "Deploy relay": "Развернуть ретранслятор",
+ "Deploy your relay": "Разверните свой ретранслятор",
+ "Deploy:": "Развернуть:",
+ "Descending": "По убыванию",
+ "Deselect": "Снять выделение",
+ "Deselect all": "Снять выделение со всех",
+ "Designing the player layout": "Оформление макета плеера",
+ "Desktop (Tauri 2 / WebView2)": "Десктоп (Tauri 2 / WebView2)",
+ "Desktop only": "Только на ПК",
+ "Detail page trailers begin unmuted. Falls back to muted if the browser blocks sound until you interact.": "Трейлеры на странице деталей начинают воспроизводиться со звуком. Если браузер блокирует звук до взаимодействия, переключается на беззвучный режим.",
+ "Detail pages show every available rating regardless of the card score toggles below. Turn this off to hide ratings on detail pages too.": "На страницах деталей показываются все доступные рейтинги независимо от переключателей оценок карточек ниже. Отключите, чтобы скрыть рейтинги и там.",
+ "Details": "Детали",
+ "Detecting": "Определение",
+ "Detecting devices...": "Поиск устройств...",
+ "Detecting...": "Определение...",
+ "DHT": "DHT",
+ "Diagnostics, manual overrides, things most users never need.": "Диагностика, ручные переопределения — то, что большинству пользователей никогда не понадобится.",
+ "Diagonal stripes across the fill, retro vibe.": "Диагональные полосы по заливке, ретро-стиль.",
+ "Diary": "Дневник",
+ "Died {date}": "Умер(ла) {date}",
+ "Dim": "Затемнение",
+ "Dim overlay": "Затемняющий оверлей",
+ "Direct .m3u link": "Прямая ссылка .m3u",
+ "Direct .m3u or get.php URL with credentials baked in.": "Прямой URL .m3u или get.php со встроенными учётными данными.",
+ "Direct torrent streaming": "Прямая потоковая передача торрентов",
+ "Directing": "Режиссура",
+ "Director": "Режиссёр",
+ "Director's Cut": "Режиссёрская версия",
+ "Directors": "Режиссёры",
+ "Disabled": "Отключено",
+ "Disabled while strict remote streaming is on": "Отключено при включённом строгом удалённом стриминге",
+ "Discard": "Отменить",
+ "Discard changes": "Отменить изменения",
+ "Discard recording": "Удалить запись",
+ "Discard sync?": "Отменить синхронизацию?",
+ "Disconnect": "Отключить",
+ "Disconnect AniList? Your lists will stop showing on the Anime page until you reconnect.": "Отключить AniList? Ваши списки перестанут отображаться на странице аниме, пока вы не подключитесь снова.",
+ "Disconnect from AniList": "Отключить AniList",
+ "Disconnect from MyAnimeList": "Отключить MyAnimeList",
+ "Disconnect from Simkl": "Отключить Simkl",
+ "Disconnect from Trakt": "Отключить Trakt",
+ "Disconnect MyAnimeList? Your progress will stop syncing until you reconnect.": "Отключить MyAnimeList? Синхронизация прогресса остановится, пока вы не подключитесь снова.",
+ "Disconnect Simkl? Syncing will stop until you reconnect.": "Отключить Simkl? Синхронизация остановится, пока вы не подключитесь снова.",
+ "Disconnect Trakt? Scrobbles and syncs will stop until you reconnect.": "Отключить Trakt? Скробблинг и синхронизация остановятся, пока вы не подключитесь снова.",
+ "Discord posts a message to a channel whenever Harbor pings it. Takes about a minute to set up.": "Discord публикует сообщение в канал каждый раз, когда Harbor отправляет ему пинг. Настройка занимает около минуты.",
+ "Discord Rich Presence": "Discord Rich Presence",
+ "Discord webhook URL": "URL вебхука Discord",
+ "Discover": "Обзор",
+ "Discovery Queue": "Очередь открытий",
+ "Dismiss": "Закрыть",
+ "Dismiss episode panel": "Закрыть панель эпизодов",
+ "Disney+ Originals": "Оригиналы Disney+",
+ "Display 'Browsing Harbor' when nothing is playing.": "Показывать «Просматривает Harbor», когда ничего не воспроизводится.",
+ "Display language": "Язык интерфейса",
+ "Display name": "Отображаемое имя",
+ "Display panel": "Панель отображения",
+ "Display SIMKL Community Ratings": "Показывать общественные рейтинги SIMKL",
+ "Display SIMKL community score badge on details pages.": "Показывать значок общественной оценки SIMKL на страницах деталей.",
+ "Display the live progress bar showing how far into the title you are.": "Показывать полосу прогресса в реальном времени о том, насколько далеко вы продвинулись в просмотре.",
+ "Display the raw release filename under each source in the condensed picker. Off keeps rows compact.": "Показывать исходное имя файла релиза под каждым источником в компактном выборе. Выключено — строки остаются компактными.",
+ "Display today's trending movies, TV shows, and anime from Simkl.": "Показывать сегодняшние популярные фильмы, сериалы и аниме от Simkl.",
+ "Display upcoming episodes from your watching and plan-to-watch lists.": "Показывать ближайшие эпизоды из списков «Смотрю» и «Буду смотреть».",
+ "Display what you are watching on your Discord profile, with the show poster and a live progress bar. Requires the Discord desktop app to be running.": "Показывать, что вы смотрите, в профиле Discord — с постером шоу и полосой прогресса в реальном времени. Требуется запущенное настольное приложение Discord.",
+ "Display your Watching, Plan to Watch, Up Next, and Trending rows on the home screen.": "Показывать на главном экране ряды «Смотрю», «Буду смотреть», «Далее» и «В тренде».",
+ "Displays the resolution, HDR format and audio (e.g. 4K · Dolby Vision · TrueHD 7.1) under the movie or episode title while playing. Off by default.": "Показывает разрешение, формат HDR и аудио (например, 4K · Dolby Vision · TrueHD 7.1) под названием фильма или эпизода во время воспроизведения. По умолчанию выключено.",
+ "Distance from bottom": "Расстояние от низа",
+ "DLNA TV": "DLNA ТВ",
+ "Documentaries": "Документальные фильмы",
+ "Documentary": "Документальный",
+ "Documentary Series": "Документальные сериалы",
+ "Documentary Spotlight": "В центре внимания: документалистика",
+ "Documentation": "Документация",
+ "Documentation: run your own relay": "Документация: запуск своего ретранслятора",
+ "Does Harbor {version} feel better or worse than the version you had before?": "Harbor {version} ощущается лучше или хуже предыдущей версии?",
+ "Does this stream look right?": "Этот поток выглядит корректно?",
+ "Don't ask me again": "Больше не спрашивать",
+ "Don't have an account?": "Нет аккаунта?",
+ "Don't have an account? Create one →": "Нет аккаунта? Создать →",
+ "Done": "Готово",
+ "Done editing": "Редактирование завершено",
+ "Done.": "Готово.",
+ "Dot image": "Изображение точки",
+ "Dot size": "Размер точки",
+ "Down": "Вниз",
+ "Download": "Скачать",
+ "Download anime diagnostics": "Скачать диагностику аниме",
+ "Download failed": "Ошибка загрузки",
+ "Download failed · click to retry": "Ошибка загрузки · нажмите для повтора",
+ "Download failed, click to retry": "Ошибка загрузки, нажмите для повтора",
+ "Download for offline": "Скачать для офлайн-просмотра",
+ "Download Subtitle": "Скачать субтитры",
+ "Download subtitle to disk": "Сохранить субтитры на диск",
+ "Download the desktop app to use anime enhancements.": "Скачайте настольное приложение, чтобы использовать улучшения для аниме.",
+ "Download the desktop app to use video tuning.": "Скачайте настольное приложение, чтобы использовать настройку видео.",
+ "Download the whole file while streaming": "Скачивать весь файл во время воспроизведения",
+ "Download this build": "Скачать эту сборку",
+ "Download this build's installer, then run it over your current copy": "Скачайте установщик этой сборки и запустите его поверх текущей копии",
+ "Download to disk": "Сохранить на диск",
+ "Download video": "Скачать видео",
+ "Downloaded peer-to-peer stream files are kept on disk so reopening a title resumes instantly instead of starting over. Control how long they stay and where they live.": "Загруженные P2P-файлы потока хранятся на диске, чтобы повторное открытие тайтла продолжалось мгновенно, а не с начала. Управляйте тем, как долго они хранятся и где именно.",
+ "Downloaded subtitles can arrive a moment after playback starts. Leave this off to keep whatever subtitle is already showing; turn it on to switch to the best language match as soon as it loads.": "Скачанные субтитры могут появиться через мгновение после начала воспроизведения. Оставьте выключенным, чтобы сохранить уже показанные субтитры; включите, чтобы переключаться на наиболее подходящий язык сразу после загрузки.",
+ "Downloaded. Ready to install and restart.": "Загружено. Готово к установке и перезапуску.",
+ "Downloading {pct} percent, click to cancel": "Загрузка {pct} процентов, нажмите для отмены",
+ "Downloading {pct}%": "Загрузка {pct}%",
+ "Downloading {pct}% · cancel": "Загрузка {pct}% · отменить",
+ "Downloading {pct}% · click to cancel": "Загрузка {pct}% · нажмите для отмены",
+ "Downloading {pct}%, click to cancel": "Загрузка {pct}%, нажмите для отмены",
+ "Downloading to": "Загрузка в",
+ "Downloading...": "Загрузка...",
+ "Downloads": "Загрузки",
+ "Downloads folder": "Папка загрузок",
+ "Dracula sidebar": "Боковая панель Dracula",
+ "Drag to reorder": "Перетащите для изменения порядка",
+ "Drag to resize the channel column": "Перетащите, чтобы изменить размер столбца каналов",
+ "Drama": "Драма",
+ "Drama Series": "Драматические сериалы",
+ "Draw": "Рисовать",
+ "Draw on screen": "Рисовать на экране",
+ "Draw on video": "Рисовать на видео",
+ "Dread Incarnate": "Воплощённый ужас",
+ "Dreamlogic": "Логика сна",
+ "Drop a clip of the bug if you can. A 5-second screen recording usually says more than five paragraphs.": "Приложите видео с багом, если можете. 5-секундная запись экрана обычно говорит больше, чем пять абзацев текста.",
+ "Drop a wallpaper behind the app. The dim slider keeps text readable.": "Добавьте обои на фон приложения. Ползунок затемнения сохраняет читаемость текста.",
+ "Drop screenshots or screen recordings, or click to browse": "Перетащите скриншоты или записи экрана, либо нажмите для выбора",
+ "Drop shadow": "Тень",
+ "Drop-in chapters and long arcs for the post-dinner stretch.": "Отдельные главы и длинные арки для вечера после ужина.",
+ "Dropped": "Пропущено",
+ "Dropped (decode / vo)": "Пропущено (декод / vo)",
+ "Durable Object idle eviction": "Вытеснение неактивных Durable Object",
+ "Duration": "Длительность",
+ "Dutch": "Нидерландский",
+ "DVD": "DVD",
+ "DVR": "DVR",
+ "DVR / record": "DVR / запись",
+ "DVR record": "Запись DVR",
+ "DVR record (Live TV)": "Запись DVR (Прямой эфир)",
+ "e.g. 1.35": "например, 1.35",
+ "e.g. 20": "например, 20",
+ "Each episode shows its IMDb rating, right on the still.": "Каждый эпизод показывает свой рейтинг IMDb прямо на кадре.",
+ "Each rule fires independently. Define what triggers a ping and where it goes.": "Каждое правило срабатывает независимо. Задайте, что вызывает уведомление и куда оно отправляется.",
+ "Easiest path. Harbor uploads the worker, creates the Durable Object namespace, and stores the resulting URL.": "Самый простой путь. Harbor загружает воркер, создаёт пространство имён Durable Object и сохраняет полученный URL.",
+ "Easing into series": "Плавное погружение в сериалы",
+ "Easy": "Легко",
+ "Easy half-hours and lighter dramas to ride out the afternoon.": "Лёгкие получасовки и нетяжёлые драмы, чтобы скоротать день.",
+ "Easy on the eyes": "Приятно для глаз",
+ "Easynews+": "Easynews+",
+ "Edge": "Edge",
+ "Edit": "Изменить",
+ "Edit {name}": "Изменить {name}",
+ "Edit Channel": "Изменить канал",
+ "Edit colors": "Изменить цвета",
+ "Edit custom theme": "Изменить свою тему",
+ "Edit filter": "Изменить фильтр",
+ "Edit Folder Images": "Изменить изображения папки",
+ "Edit hover style": "Изменить стиль наведения",
+ "Edit player layout": "Изменить макет плеера",
+ "Edit profile": "Изменить профиль",
+ "Edit row": "Изменить ряд",
+ "Edit rule": "Изменить правило",
+ "editing": "редактирование",
+ "Editor": "Редактор",
+ "Editorial. Headline-strong display.": "Редакционный. Мощные заголовки.",
+ "Editors": "Редакторы",
+ "Effective Clearances": "Эффективные выносы",
+ "Effective Tackles": "Эффективные подкаты",
+ "Elapsed and remaining": "Прошло и осталось",
+ "Elapsed only": "Только прошедшее время",
+ "Email": "Email",
+ "Email or Discord": "Email или Discord",
+ "Embed mpv inside Harbor window": "Встраивать mpv в окно Harbor",
+ "Embedded": "Встроенные",
+ "Embedded subtitles keep their own styling. Click to force your style onto them.": "Встроенные субтитры сохраняют собственное оформление. Нажмите, чтобы применить к ним свой стиль.",
+ "Embedded track": "Встроенная дорожка",
+ "Emmys": "Эмми",
+ "empty": "пусто",
+ "Empty — click to add filters": "Пусто — нажмите, чтобы добавить фильтры",
+ "Empty. The dials above cover what most people ever need.": "Пусто. Настроек выше достаточно для большинства пользователей.",
+ "Enable Anime4K": "Включить Anime4K",
+ "Enable injected ad skip": "Включить пропуск встроенной рекламы",
+ "Enable Letterboxd integration": "Включить интеграцию с Letterboxd",
+ "Enable SVP": "Включить SVP",
+ "Enable this to fetch Arabic descriptions for series and movies when available on TMDB.": "Включите, чтобы получать описания на арабском языке для сериалов и фильмов, если они доступны на TMDB.",
+ "Enable User Ratings": "Включить пользовательские рейтинги",
+ "Enabled": "Включено",
+ "End ep": "Конечный эпизод",
+ "Ended": "Завершён",
+ "Ending": "Финал",
+ "Ends at": "Заканчивается в",
+ "Engine": "Движок",
+ "English": "Английский",
+ "English (default)": "Английский (по умолчанию)",
+ "Enter {name}'s PIN": "Введите PIN-код {name}",
+ "Enter an existing relay URL:": "Введите URL существующего ретранслятора:",
+ "Enter current PIN": "Введите текущий PIN-код",
+ "Enter Harbor": "Войти в Harbor",
+ "Enter or exit fullscreen.": "Вход и выход из полноэкранного режима.",
+ "Enter your PIN": "Введите ваш PIN-код",
+ "Ep {n}": "Эп. {n}",
+ "EPG": "EPG",
+ "EPG / XMLTV only": "Только EPG / XMLTV",
+ "EPG / XMLTV URL": "URL EPG / XMLTV",
+ "EPG failed:": "Ошибка EPG:",
+ "EPG fetch failed:": "Не удалось загрузить EPG:",
+ "EPG source": "Источник EPG",
+ "EPG URL": "URL EPG",
+ "EPG URL (optional)": "URL EPG (необязательно)",
+ "Ephron Romcoms": "Ромкомы в духе Эфрон",
+ "Epic Adventures": "Эпические приключения",
+ "Epic Quests": "Эпические квесты",
+ "Epics & Empires": "Эпосы и империи",
+ "Episode": "Эпизод",
+ "Episode {n}": "Эпизод {n}",
+ "Episode cards": "Карточки эпизодов",
+ "Episode details": "Детали эпизода",
+ "Episode information is not available": "Информация об эпизоде недоступна.",
+ "Episode Not Found": "Эпизод не найден",
+ "Episode ordering": "Порядок эпизодов",
+ "Episode titles, alternate names, and network info. Layered on TMDB so the better source wins per field. Free at ": "Названия эпизодов, альтернативные названия и информация о канале. Дополняет TMDB, выбирая лучший источник для каждого поля. Бесплатно на ",
+ "Episodes": "Эпизоды",
+ "Episodes and movies from shows you've saved on Stremio.": "Эпизоды и фильмы из шоу, сохранённых в Stremio.",
+ "Episodes worth the evening": "Эпизоды, достойные вечера",
+ "Episodes you can drop into without losing the thread.": "Эпизоды, в которые можно окунуться, не потеряв нить повествования.",
+ "Error": "Ошибка",
+ "Errors": "Ошибки",
+ "Esc exits fullscreen first": "Esc сначала выходит из полноэкранного режима",
+ "Esc or click outside to close": "Esc или клик снаружи, чтобы закрыть",
+ "Essential 90s": "Классика 90-х",
+ "Essential addons": "Необходимые аддоны",
+ "Evening on the couch": "Вечер на диване",
+ "Evens out quiet dialogue and loud action scenes with a dynamic normalizer.": "Выравнивает тихие диалоги и громкие экшен-сцены с помощью динамического нормализатора.",
+ "Every collection": "Все подборки",
+ "Every row": "Каждый ряд",
+ "Every saga in one place. Search anything: if it exists, it's here.": "Все саги в одном месте. Ищите что угодно: если это существует, оно здесь.",
+ "Every shortcut Harbor responds to. Click a binding to rebind it.": "Все сочетания клавиш, на которые реагирует Harbor. Нажмите на привязку, чтобы переназначить её.",
+ "Every variable, selector, hook, and recipe for building custom Harbor themes.": "Все переменные, селекторы, хуки и рецепты для создания собственных тем Harbor.",
+ "Everyone is loaded in. Press play to start watching.": "Все загружены. Нажмите «Воспроизвести», чтобы начать просмотр.",
+ "Everyone who uses this Harbor gets their own watch history, avatar, color, and optional PIN. Switch anytime.": "У каждого, кто пользуется этим Harbor, своя история просмотра, аватар, цвет и необязательный PIN-код. Переключайтесь в любой момент.",
+ "Everything": "Всё",
+ "Everything from {year}, sorted across trending, top rated, and hidden gems.": "Всё из {year} года: тренды, лучшие по рейтингу и скрытые жемчужины.",
+ "Everything originally in {name}: movies and series across every genre, era, and hidden gems.": "Всё, что изначально входило в {name}: фильмы и сериалы всех жанров и эпох, включая скрытые жемчужины.",
+ "Everything releasing in the current month from TMDB.": "Все релизы текущего месяца по данным TMDB.",
+ "Everything releasing this month from TMDB": "Все релизы этого месяца по данным TMDB",
+ "Everything you save here stays in this browser. Your Stremio login, API keys, watch progress, picker cache, dismissed tips. Harbor servers never see any of it. Clearing your browser data wipes it.": "Всё, что вы сохраняете здесь, остаётся в этом браузере. Данные входа в Stremio, API-ключи, прогресс просмотра, кэш выбора источников, отклонённые подсказки. Серверы Harbor этого никогда не видят. Очистка данных браузера удалит всё это.",
+ "Excellence": "Совершенство",
+ "Exit fullscreen": "Выйти из полноэкранного режима",
+ "Exit Picture in Picture": "Выйти из режима «картинка в картинке»",
+ "Exit PiP": "Выйти из PiP",
+ "Exit playback and return to the previous view.": "Остановить воспроизведение и вернуться к предыдущему экрану.",
+ "Exit sync mode": "Выйти из режима синхронизации",
+ "Expand sidebar": "Развернуть боковую панель",
+ "Expected. Rooms recreate on next join.": "Ожидаемо. Комнаты пересоздаются при следующем подключении.",
+ "Experimental": "Экспериментально",
+ "Expired": "Истёк",
+ "Expiring": "Истекает",
+ "Explore": "Обзор",
+ "Explore your queue": "Просмотреть очередь",
+ "Export": "Экспорт",
+ "Export .nfo and artwork": "Экспортировать .nfo и обложки",
+ "Export as .m3u": "Экспортировать как .m3u",
+ "Export as file": "Экспортировать как файл",
+ "Export everything": "Экспортировать всё",
+ "Export failed: {reason}": "Ошибка экспорта: {reason}",
+ "Export player log": "Экспортировать журнал плеера",
+ "Export to Trakt": "Экспортировать в Trakt",
+ "Export your entire Harbor setup to a single file, then restore it on a new computer or keep it as a backup.": "Экспортируйте всю конфигурацию Harbor в один файл, затем восстановите её на новом компьютере или сохраните как резервную копию.",
+ "Export your entire Harbor setup to a single file, then restore it on a new computer or keep it as a backup. Everything is included except your Stremio sign-in.": "Экспортируйте всю конфигурацию Harbor в один файл, затем восстановите её на новом компьютере или сохраните как резервную копию. Включено всё, кроме входа в Stremio.",
+ "Exported": "Экспортировано",
+ "Exported {n} titles": "Экспортировано тайтлов: {n}",
+ "Exported {ok}, {fail} failed": "Экспортировано: {ok}, ошибок: {fail}",
+ "Exporting": "Экспорт",
+ "Exporting {done}/{total}…": "Экспорт {done}/{total}…",
+ "External": "Внешние",
+ "External subtitle": "Внешние субтитры",
+ "Eye Candy": "Услада для глаз",
+ "Fade": "Затухание",
+ "Fail": "Провал",
+ "Failed": "Ошибка",
+ "Failed to create thread": "Не удалось создать тред",
+ "Failed to fetch JSON": "Не удалось загрузить JSON",
+ "Failed to load": "Не удалось загрузить",
+ "Failed to load match details.": "Не удалось загрузить детали матча.",
+ "Failed to post comment": "Не удалось опубликовать комментарий",
+ "Failed: {error}": "Ошибка: {error}",
+ "Failed: {message}": "Ошибка: {message}",
+ "Falls back to the TMDB rating only when a title has no IMDb score yet (mostly brand-new or unreleased). Off by default so cards prefer IMDb.": "Переходит на рейтинг TMDB только когда у тайтла ещё нет оценки IMDb (обычно совсем новые или невышедшие тайтлы). По умолчанию выключено — карточки предпочитают IMDb.",
+ "Familiar Stremio button order.": "Привычный порядок кнопок из Stremio.",
+ "Family": "Семейный",
+ "Family Favorites": "Семейные фавориты",
+ "Family Heart": "Семейное сердце",
+ "Fan-made avatars for personal use. Harbor claims no rights to these characters; they belong to their creators and studios, shown here under fair use. Every one is optimized down to a tiny WebP.": "Аватары от фанатов для личного использования. Harbor не претендует на права на этих персонажей; они принадлежат своим создателям и студиям и показаны здесь в рамках добросовестного использования. Каждый оптимизирован до крошечного WebP.",
+ "Fanart.tv · logos and backdrops": "Fanart.tv · логотипы и фоны",
+ "Fantasy": "Фэнтези",
+ "Fast Break Points": "Очки в быстрых атаках",
+ "Fast Hands": "Быстрые руки",
+ "Fast Mouth": "Быстрый язык",
+ "Faster and quieter than torrents if you already pay for Usenet. Configure on the addon page, paste the manifest URL it returns.": "Быстрее и тише торрентов, если вы уже платите за Usenet. Настройте на странице аддона, вставьте URL манифеста, который он вернёт.",
+ "Favorite": "В избранное",
+ "Favorited": "В избранном",
+ "favorites": "избранное",
+ "Favorites": "Избранное",
+ "feature broken": "функция не работает",
+ "Feature this catalog in the hero carousel": "Показывать этот каталог в главной карусели",
+ "Featured": "Рекомендуем",
+ "Featured {n}": "Рекомендуем {n}",
+ "Featured & Recommended": "Рекомендуем",
+ "Featured film": "Рекомендуемый фильм",
+ "Featured hero": "Главная карусель",
+ "Featured tonight": "Рекомендуем на вечер",
+ "Feel-Good Hits": "Хиты для хорошего настроения",
+ "Fetching {n} items…": "Загрузка объектов: {n}…",
+ "Fetching library index…": "Загрузка индекса библиотеки…",
+ "FG": "FG",
+ "Field Goal %": "% реализации бросков",
+ "Field Reports": "Отчёты с полей",
+ "Fight": "Бой",
+ "File": "Файл",
+ "Filename": "Имя файла",
+ "Fill": "Заполнить",
+ "Fill the top of the form to look exactly like this:": "Заполните верхнюю часть формы так, чтобы она выглядела точно так:",
+ "Filler": "Филлер",
+ "Fills in where TMDB comes up empty (anime, older catalog). Free at ": "Дополняет там, где TMDB не находит данных (аниме, старый каталог). Бесплатно на ",
+ "Film": "Фильм",
+ "Film and television": "Кино и телевидение",
+ "Filmic (Hable)": "Кинематографичный (Hable)",
+ "Filmmakers leading the conversation": "Режиссёры, о которых говорят",
+ "Films": "Фильмы",
+ "Filter by media type after the sources merge. Leave them all on to send everything.": "Фильтр по типу медиа после объединения источников. Оставьте все включёнными, чтобы отправлять всё.",
+ "Filter by name or title": "Фильтр по имени или названию",
+ "Filter by type after the sources merge. Leave them all on to send everything.": "Фильтр по типу после объединения источников. Оставьте все включёнными, чтобы отправлять всё.",
+ "Filter categories": "Категории фильтров",
+ "Filtered": "Отфильтровано",
+ "Filters": "Фильтры",
+ "Filters off · still empty": "Фильтры выключены · всё равно пусто",
+ "Filters out streams from adult catalogs and addons. On by default.": "Отфильтровывает потоки из каталогов и аддонов для взрослых. По умолчанию включено.",
+ "Final": "Финал",
+ "Find closer match": "Найти более точное совпадение",
+ "Find more subtitles": "Найти ещё субтитры",
+ "Finding peers": "Поиск пиров",
+ "Finds anime that got saved under a movie/series id by the 0.9.65 bug (breaks Continue Watching + Trakt), and removes just those so they re-add correctly.": "Находит аниме, сохранённое под неверным id фильма/сериала из-за бага в версии 0.9.65 (ломает «Продолжить просмотр» и Trakt), и удаляет только эти записи, чтобы они добавились заново правильно.",
+ "Finish an episode and the card jumps to the next one instead of sitting at 0m left.": "Закончите эпизод, и карточка переключится на следующий вместо того, чтобы застыть на «осталось 0 мин».",
+ "Finish the install above first. Flipping this on now won't do anything until Harbor can find SVP's engine.": "Сначала завершите установку выше. Включение этой опции сейчас ничего не даст, пока Harbor не найдёт движок SVP.",
+ "Finishing an anime episode updates your AniList progress. Forward only: it never lowers a count you already have.": "Завершение аниме-эпизода обновляет ваш прогресс в AniList. Только вперёд: значение никогда не уменьшается.",
+ "Finishing an anime episode updates your MyAnimeList progress. Forward only: it never lowers a count you already have.": "Завершение аниме-эпизода обновляет ваш прогресс в MyAnimeList. Только вперёд: значение никогда не уменьшается.",
+ "Finnish": "Финский",
+ "First aired": "Дата выхода",
+ "First anchor": "Первая привязка",
+ "First page": "Первая страница",
+ "First-light picks": "Подборка для раннего утра",
+ "Fit": "По размеру",
+ "Fix": "Исправить",
+ "Fix corrupted anime": "Исправить повреждённое аниме",
+ "Fix match": "Исправить совпадение",
+ "Fixed shortcut": "Фиксированное сочетание",
+ "Flagged ({n})": "Отмечено ({n})",
+ "Flagged shown": "Показаны отмеченные",
+ "Flagrant Fouls": "Неспортивные фолы",
+ "Flat": "Плоский",
+ "Flat cards": "Плоские карточки",
+ "Flat list of sources grouped by addon, with a filter dropdown. No re-ranking. Closest match to the Stremio app's stream picker.": "Плоский список источников, сгруппированных по аддонам, с выпадающим фильтром. Без переранжирования. Максимально похоже на выбор потоков в приложении Stremio.",
+ "Flat_Style": "Плоский стиль",
+ "Floating dock": "Плавающая панель",
+ "Floats over the artwork": "Парит над обложкой",
+ "Focus GIF URL": "URL GIF для фокуса",
+ "Focus PIN entry": "Фокус на вводе PIN-кода",
+ "Focus search": "Фокус на поиске",
+ "Font": "Шрифт",
+ "For Everyone": "Для всех",
+ "For laptop speakers and headphones. Movies mixed for 5.1 or 7.1 surround can sound hollow or have quiet dialogue on two speakers. This folds them down properly.": "Для колонок ноутбука и наушников. Фильмы, сведённые под 5.1 или 7.1, могут звучать пусто или с тихими диалогами на двух колонках. Это правильно сводит их в стерео.",
+ "For now, please open this site on a desktop, or build Harbor from source.": "Пока что откройте этот сайт на компьютере или соберите Harbor из исходников.",
+ "For the manual path:": "Для ручного пути:",
+ "For the manual path: {code} 20+ and {code} CLI.": "Для ручного пути: {code} 20+ и {code} CLI.",
+ "For users who want to deploy themselves or already have a wrangler workflow.": "Для тех, кто хочет развернуть самостоятельно или уже пользуется wrangler.",
+ "For watching things": "Для просмотра",
+ "Force of Nature": "Сила природы",
+ "Force on": "Принудительно включить",
+ "Force your font, size, and color onto styled subs. Use this for Arabic or any subs showing boxes. Can affect karaoke and signs.": "Принудительно применить свой шрифт, размер и цвет к стилизованным субтитрам. Используйте для арабского языка или любых субтитров, отображающихся как прямоугольники. Может повлиять на караоке и надписи.",
+ "Force your look onto subtitles that carry their own styling.": "Принудительно применить свой стиль к субтитрам с собственным оформлением.",
+ "Forced": "Принудительно",
+ "Forced only": "Только принудительные",
+ "Forced subs with native audio": "Принудительные субтитры при родной озвучке",
+ "Forces a compatibility present mode that removes a thin bright line some monitors show at the screen edge. Side effects: 4K playback can drop to a slideshow and HDR content looks dimmer (this mode bypasses the HDR display path). Leave OFF unless you see that line. Restart playback to apply.": "Включает режим совместимости, убирающий тонкую яркую линию, которую некоторые мониторы показывают у края экрана. Побочные эффекты: воспроизведение 4K может превратиться в слайд-шоу, а HDR-контент станет тусклее (этот режим обходит путь вывода HDR). Оставьте ВЫКЛ., если у вас нет этой линии. Для применения перезапустите воспроизведение.",
+ "Forces the graphics card on. Smoothest and coolest, but a few old or unusual files may refuse to play. Switch back to Auto if something won't start.": "Принудительно включает видеокарту. Самый плавный и холодный вариант, но некоторые старые или необычные файлы могут отказаться воспроизводиться. Переключитесь обратно на «Авто», если что-то не запускается.",
+ "Forest sidebar": "Боковая панель «Лес»",
+ "Forget": "Забыть",
+ "Forget URL": "Забыть URL",
+ "Forward": "Вперёд",
+ "Forward {n} seconds": "Вперёд на {n} сек.",
+ "Forward {n}s": "Вперёд на {n} с",
+ "Forward 10s": "Вперёд на 10 с",
+ "Forward 30 seconds": "Вперёд на 30 секунд",
+ "Fouls": "Фолы",
+ "Found {n} .nfo file in this folder.": "Найден файл .nfo в этой папке: {n}.",
+ "Found {n}: {names}. Saved under the wrong id by the 0.9.65 bug, which breaks Continue Watching and Trakt marking.": "Найдено {n}: {names}. Сохранено под неверным id из-за бага в версии 0.9.65, который ломает «Продолжить просмотр» и отметки в Trakt.",
+ "found by": "найдено",
+ "Foundation Years (90s)": "Годы становления (90-е)",
+ "Founded {year}": "Основано в {year}",
+ "Four channels at once, pre-spawned and swap-ready.": "Четыре канала одновременно, заранее запущенные и готовые к переключению.",
+ "Frame interpolation shines on anime but can look off on live-action film. Limit it to the content you want, then restart playback.": "Интерполяция кадров отлично смотрится на аниме, но может выглядеть неестественно на игровом кино. Ограничьте её нужным типом контента и перезапустите воспроизведение.",
+ "Frame rate": "Частота кадров",
+ "France": "Франция",
+ "Free": "Бесплатно",
+ "Free at ": "Бесплатно на ",
+ "Free key at ": "Бесплатный ключ на ",
+ "Free key unlocks Trending, In Theaters, and per-service catalogs. 60 seconds.": "Бесплатный ключ открывает «В тренде», «В кинотеатрах» и каталоги отдельных сервисов. 60 секунд.",
+ "Free Throw %": "% штрафных бросков",
+ "Free torrent + usenet": "Бесплатные торренты + usenet",
+ "Free, two-minute signup. Unlocks Trending, In Theaters Now, Top Rated, and per-streaming catalogs (Netflix, Disney+, Hulu, …). Your key stays on this machine.": "Бесплатная регистрация за две минуты. Открывает «В тренде», «Сейчас в кино», «Лучшие по рейтингу» и каталоги отдельных стриминговых сервисов (Netflix, Disney+, Hulu…). Ваш ключ остаётся на этом компьютере.",
+ "French": "Французский",
+ "French Cinema": "Французское кино",
+ "Fresh tomato for 60%+, splat for under.": "Свежий помидор для 60%+, гнилой — для меньшего.",
+ "Fresh tomatoes for 60% and up, splat for anything under.": "Свежие помидоры для 60% и выше, гнилые — для всего остального.",
+ "Freshest on stremio-addons.net": "Самое свежее на stremio-addons.net",
+ "Fri": "Пт",
+ "Friends": "Друзья",
+ "From {source}": "Из {source}",
+ "From any browser on your Wi-Fi": "Из любого браузера в вашей Wi-Fi сети",
+ "From HBO": "От HBO",
+ "From other devices on your Wi-Fi": "С других устройств в вашей Wi-Fi сети",
+ "From stremio-addons.net": "С stremio-addons.net",
+ "from the Harbor repo into a new directory as": "из репозитория Harbor в новый каталог как",
+ "Front row seat": "Место в первом ряду",
+ "Frontier Classics": "Классика вестерна",
+ "Frontline Valor": "Доблесть на передовой",
+ "FT": "FT",
+ "Full": "Полный",
+ "Full hero banner": "Полный главный баннер",
+ "Full list": "Полный список",
+ "Full mode — diary, friends & ratings enabled": "Полный режим — дневник, друзья и рейтинги включены",
+ "Full mode signs in with your Letterboxd password to also unlock your diary, friends activity and your personal ratings. Your password is sent only to Stremboxd to obtain a token — Harbor never stores it.": "Полный режим выполняет вход с вашим паролем Letterboxd, чтобы также открыть дневник, активность друзей и личные рейтинги. Пароль отправляется только в Stremboxd для получения токена — Harbor его никогда не хранит.",
+ "Full quality frames": "Кадры в полном качестве",
+ "Full quality hero image": "Изображение баннера в полном качестве",
+ "Full Roster": "Полный состав",
+ "Fullscreen": "Полноэкранный режим",
+ "Fully downloaded": "Полностью загружено",
+ "Future Worlds": "Миры будущего",
+ "FX": "FX",
+ "Gallery": "Галерея",
+ "Gamma": "Гамма",
+ "Gamma (midtones)": "Гамма (средние тона)",
+ "Gangster Opera": "Гангстерская опера",
+ "Generate a Cloudflare API token with": "Создайте API-токен Cloudflare с",
+ "Generate a Cloudflare API token with {code1} and {code2} permissions at {code3}. Paste it into Harbor.": "Создайте API-токен Cloudflare с разрешениями {code1} и {code2} на {code3}. Вставьте его в Harbor.",
+ "Generates a frame on the fly as you scrub the seek bar. Works on debrid streams and local files.": "Генерирует кадр на лету при перемотке по шкале времени. Работает с debrid-потоками и локальными файлами.",
+ "Genre": "Жанр",
+ "Genre Icon": "Значок жанра",
+ "Genre Master": "Мастер жанра",
+ "Genres": "Жанры",
+ "Genuine 48/60fps motion on anime, rendered right inside Harbor's player. SVP supplies the engine (VapourSynth + svpflow) and runs in your tray for licensing; Harbor's own player applies the interpolation, so it stays embedded and fully under your control. One-time install, then flip it on.": "Настоящая плавность 48/60 fps для аниме, отрисовываемая прямо внутри плеера Harbor. SVP предоставляет движок (VapourSynth + svpflow) и работает в трее ради лицензирования; саму интерполяцию применяет плеер Harbor, так что всё остаётся встроенным и полностью под вашим контролем. Разовая установка, затем просто включите.",
+ "German": "Немецкий",
+ "Germany": "Германия",
+ "Get": "Получить",
+ "Get a free key at themoviedb.org": "Получите бесплатный ключ на themoviedb.org",
+ "Get beta updates": "Получать бета-обновления",
+ "Get Harbor for desktop": "Получить Harbor для компьютера",
+ "Get started": "Начать",
+ "Get Started": "Начать",
+ "Get SVP (free)": "Получить SVP (бесплатно)",
+ "Get yours at ": "Получите свой на ",
+ "Ghibli Magic": "Магия Ghibli",
+ "Girl": "Девушка",
+ "GitHub username": "Имя пользователя GitHub",
+ "GL": "GL",
+ "Glass": "Стекло",
+ "Glass cards": "Стеклянные карточки",
+ "Global": "Глобально",
+ "Global Impact": "Мировое влияние",
+ "Go back": "Назад",
+ "Go Back": "Назад",
+ "Go to ep": "К эпизоду",
+ "Go to episode": "Перейти к эпизоду",
+ "Go to live": "Перейти к прямому эфиру",
+ "Go to show": "Перейти к шоу",
+ "Golden Bear": "Золотой медведь",
+ "Golden Globes": "Золотой глобус",
+ "Golden Lion": "Золотой лев",
+ "Good Morning": "Доброе утро",
+ "Good to know": "Хорошо знать",
+ "Good-looking video without working your machine hard. Leave it here unless you have a reason to change.": "Хорошее качество видео без чрезмерной нагрузки на компьютер. Оставьте этот вариант, если нет причин его менять.",
+ "Got a theme a friend shared? Drop it in.": "Друг поделился темой? Перетащите её сюда.",
+ "Got it": "Понятно",
+ "Gothic Tales": "Готические истории",
+ "Gothic Whimsy": "Готическая причудливость",
+ "Gradient": "Градиент",
+ "Grand": "Грандиозный",
+ "Grand Canvases": "Грандиозные полотна",
+ "Grand Journeys": "Грандиозные путешествия",
+ "Grand Prize": "Гран-при",
+ "Grid": "Сетка",
+ "Grid view": "Вид сеткой",
+ "Group episodes by story arc": "Группировать эпизоды по сюжетным аркам",
+ "Grouped": "Сгруппировано",
+ "Grown-ups only": "Только для взрослых",
+ "Guest Stars": "Приглашённые звёзды",
+ "Guest Stars · {n}": "Приглашённые звёзды · {n}",
+ "Guests pick their own source": "Гости выбирают источник самостоятельно",
+ "Guide": "Гид",
+ "Gun-Fu": "Ган-фу",
+ "Hairline cards": "Карточки с тонкой обводкой",
+ "Half-hours, anthologies, and a few epics for the morning routine.": "Получасовые серии, антологии и несколько эпичных историй для утренней рутины.",
+ "Hand-tuned colors. Edit them in the section above.": "Цвета настроены вручную. Измените их в разделе выше.",
+ "Hang tight, won't be a sec.": "Секундочку, почти готово.",
+ "Hangout Comedy": "Комедии о дружеских посиделках",
+ "Harbor {version} available": "Доступна версия Harbor {version}",
+ "Harbor caps playlists at 80 MB to stay responsive. Most providers offer a filtered URL with fewer channels.": "Harbor ограничивает плейлисты 80 МБ для стабильной работы. Большинство провайдеров предлагают отфильтрованный URL с меньшим числом каналов.",
+ "Harbor catches stremio:// install links so the configure-and-install flow stays inside the app.": "Harbor перехватывает ссылки установки stremio://, чтобы процесс настройки и установки оставался внутри приложения.",
+ "Harbor catches stremio:// install links so the configure-and-install flow stays inside the app. Every install also syncs to your Stremio account, so the official app remains the canonical home for your library.": "Harbor перехватывает ссылки установки stremio://, чтобы процесс настройки и установки оставался внутри приложения. Каждая установка также синхронизируется с вашим аккаунтом Stremio, поэтому официальное приложение остаётся основным хранилищем вашей библиотеки.",
+ "Harbor checks automatically every few hours.": "Harbor проверяет автоматически каждые несколько часов.",
+ "Harbor checks harbor.site for new versions and installs them in place.": "Harbor проверяет harbor.site на наличие новых версий и устанавливает их на месте.",
+ "Harbor checks harbor.site for new versions and installs them in place. Nothing installs until you choose to, and a dismissed update never nags you again.": "Harbor проверяет harbor.site на наличие новых версий и устанавливает их на месте. Ничего не устанавливается без вашего согласия, а отклонённое обновление больше не будет напоминать о себе.",
+ "Harbor couldn't resolve a usable ID for this title. Add a TMDB key in Library settings or sign in to Stremio to broaden coverage.": "Harbor не удалось определить подходящий ID для этого тайтла. Добавьте ключ TMDB в настройках библиотеки или войдите в Stremio, чтобы расширить охват.",
+ "Harbor curated": "Подборка Harbor",
+ "Harbor double-checks with Stremio after saving, so a half-written order can't slip through.": "Harbor перепроверяет данные со Stremio после сохранения, чтобы недописанный порядок не прошёл незамеченным.",
+ "Harbor finds intro and credits timing from AniSkip, TheIntroDB, and the file's own chapters, then shows a Skip button at the right moment.": "Harbor определяет тайминг заставки и титров с помощью AniSkip, TheIntroDB и глав самого файла, а затем показывает кнопку «Пропустить» в нужный момент.",
+ "Harbor identity": "Профиль Harbor",
+ "Harbor in your browser": "Harbor в браузере",
+ "Harbor is open source. PRs that reference a bug get reviewed within 48h and ship with credit in the release notes.": "Harbor — проект с открытым исходным кодом. Pull request'ы, ссылающиеся на баг, рассматриваются в течение 48 часов и указываются в примечаниях к релизу.",
+ "Harbor keeps your MyAnimeList watch progress in sync.": "Harbor синхронизирует ваш прогресс просмотра с MyAnimeList.",
+ "Harbor pulls the most popular titles each service has right now. Toggle off anything you don't subscribe to.": "Harbor подтягивает самые популярные тайтлы каждого сервиса на данный момент. Отключите те, на которые вы не подписаны.",
+ "Harbor pulls your addon collection from Stremio. Manage individual addons in Streaming sources.": "Harbor подтягивает вашу коллекцию аддонов из Stremio. Управляйте отдельными аддонами в разделе «Источники трансляции».",
+ "Harbor ranking": "Ранжирование Harbor",
+ "Harbor ranking puts the best-scoring sources first. Addon order follows your addon priority (organize it in Addons, Installed tab, Reorder) and keeps each addon's results in the order it returned them, like the Stremio and Vidi apps.": "Ранжирование Harbor ставит источники с лучшей оценкой первыми. Порядок по аддонам следует приоритету аддонов (настраивается в разделе «Аддоны», вкладка «Установленные», «Изменить порядок») и сохраняет результаты каждого аддона в том порядке, в котором он их вернул, как в приложениях Stremio и Vidi.",
+ "Harbor Relay": "Harbor Relay",
+ "Harbor runs a small streaming server right on this computer. This is where it lives. To stream from this machine on another device, copy the Wi-Fi address and paste it into Remote streaming server in Harbor over there.": "Harbor запускает небольшой стриминговый сервер прямо на этом компьютере. Вот его адрес. Чтобы транслировать с этого компьютера на другое устройство, скопируйте адрес Wi-Fi и вставьте его в поле «Удалённый сервер трансляции» в Harbor на том устройстве.",
+ "Harbor scans your IPTV playlists' EPG every 30 min for programs about to start.": "Harbor сканирует EPG ваших IPTV-плейлистов каждые 30 минут в поисках программ, которые вот-вот начнутся.",
+ "Harbor sends no telemetry. This also drops outbound ad, analytics, and tracker requests that addons or metadata providers try to make, before they leave your machine.": "Harbor не отправляет телеметрию. Это также блокирует исходящие запросы к рекламе, аналитике и трекерам, которые пытаются сделать аддоны или поставщики метаданных, ещё до того как они покинут ваш компьютер.",
+ "Harbor shows your AniList lists on the Anime page and keeps your progress in sync.": "Harbor показывает ваши списки AniList на странице аниме и синхронизирует прогресс просмотра.",
+ "Harbor still finds and loads subtitles so they're one click away in the player, it just won't turn them on automatically.": "Harbor по-прежнему находит и загружает субтитры, так что они всегда в одном клике в плеере, просто не включает их автоматически.",
+ "Harbor test message (Discord). If you can read this, your webhook is wired up.": "Тестовое сообщение Harbor (Discord). Если вы это читаете, вебхук настроен верно.",
+ "Harbor test message (Telegram). If you can read this, your webhook is wired up.": "Тестовое сообщение Harbor (Telegram). Если вы это читаете, вебхук настроен верно.",
+ "Harbor uses the graphics card when it's safe and falls back to the CPU when it isn't. The right call for almost everyone.": "Harbor использует видеокарту, когда это безопасно, и переключается на процессор, когда нет. Правильный выбор почти для всех.",
+ "Harbor will mark what you finish as watched on Simkl and sync your plan-to-watch list.": "Harbor будет отмечать завершённые тайтлы как просмотренные на Simkl и синхронизировать список «Буду смотреть».",
+ "Harbor will scrobble your playback to Trakt and sync your watchlist.": "Harbor будет отправлять данные о воспроизведении в Trakt и синхронизировать список отслеживания.",
+ "Harbor's built-in frame interpolation. Smooths panning, best on anime. Needs a display refresh rate above the video's frame rate, and can stutter on weak GPUs. Lighter than SVP.": "Встроенная интерполяция кадров Harbor. Сглаживает панорамирование, лучше всего подходит для аниме. Требует частоту обновления экрана выше частоты кадров видео и может подтормаживать на слабых видеокартах. Легче, чем SVP.",
+ "Harbor's in-app installer animates the manifest install and keeps you in context. Anything Harbor installs is also synced to your Stremio account, so the official app stays the canonical library. Turn this off and Stremio becomes the only handler for stremio:// links; Harbor still installs anything you trigger from inside the app (Configure & install, paste, drag-and-drop).": "Встроенный установщик Harbor анимирует установку манифеста и не выбивает вас из контекста. Всё, что устанавливает Harbor, также синхронизируется с вашим аккаунтом Stremio, поэтому официальное приложение остаётся основной библиотекой. Отключите это, и Stremio станет единственным обработчиком ссылок stremio://; Harbor по-прежнему будет устанавливать всё, что вы запускаете внутри приложения («Настроить и установить», вставка, перетаскивание).",
+ "Harbor's native player chrome.": "Собственный интерфейс плеера Harbor.",
+ "Harbor's player applies the interpolation itself, embedded like normal playback, and starts SVP Manager in the tray for licensing. Restart playback to apply. If video goes black or won't start, turn this off.": "Плеер Harbor применяет интерполяцию самостоятельно, встроенно, как при обычном воспроизведении, и запускает SVP Manager в трее для лицензирования. Перезапустите воспроизведение, чтобы применить изменения. Если видео становится чёрным или не запускается, отключите эту функцию.",
+ "Harbor's public relay has not rolled out the latest protocol yet.": "Публичный relay Harbor ещё не обновился до последней версии протокола.",
+ "Harbor's public relay updates automatically; nothing to do.": "Публичный relay Harbor обновляется автоматически, ничего делать не нужно.",
+ "Hard Boiled": "Крутой детектив",
+ "Hard stroke around each letter. High contrast.": "Жёсткая обводка вокруг каждой буквы. Высокая контрастность.",
+ "Hardware acceleration": "Аппаратное ускорение",
+ "HDR": "HDR",
+ "HDR display mode": "Режим отображения HDR",
+ "HDR in a separate window": "HDR в отдельном окне",
+ "HDR to SDR: Off": "HDR в SDR: выкл",
+ "HDR to SDR: On": "HDR в SDR: вкл",
+ "HDR-to-SDR tonemapping": "Тональная компрессия HDR в SDR",
+ "Head to Discover. Cinemeta and OpenSubtitles cover the basics; Torrentio + a debrid key cover almost everything else.": "Перейдите в «Обзор». Cinemeta и OpenSubtitles покрывают базовые потребности; Torrentio с ключом debrid-сервиса покрывает почти всё остальное.",
+ "Headphone series": "Серия наушников",
+ "Heads up": "Обратите внимание",
+ "Heads up: {keys} can load outside scripts or open your player to the network. Only keep these if you know exactly what they do.": "Обратите внимание: {keys} могут загружать внешние скрипты или открывать доступ к плееру из сети. Оставляйте их включёнными, только если точно знаете, что они делают.",
+ "Heads up: Harbor was built in English. Multi-language support is partial, so your addons usually catch what Harbor's own filters miss. If you speak another language and want to help fill the gaps, the source is open.": "Обратите внимание: Harbor разрабатывался на английском языке. Поддержка других языков пока частичная, поэтому обычно то, что упускают собственные фильтры Harbor, подхватывают ваши аддоны. Если вы владеете другим языком и хотите помочь восполнить пробелы, исходный код открыт.",
+ "Heads up: if Stremio is also installed, Windows may ask which app to use the first time a stremio:// link fires. Pick Harbor to make it stick.": "Обратите внимание: если Stremio тоже установлен, Windows может спросить, каким приложением открывать ссылку stremio:// при первом переходе. Выберите Harbor, чтобы закрепить выбор.",
+ "Heads up: this is a large file for peer-to-peer streaming, so it can take a while to start. A 1080p source or a debrid service will load faster.": "Обратите внимание: это большой файл для одноранговой трансляции, поэтому запуск может занять некоторое время. Источник в 1080p или debrid-сервис загрузятся быстрее.",
+ "Heads-up: a few addons (like AIOStatus) don't pre-fill from the URL. If the form loads blank, paste the existing manifest URL into their \"Import from URL\" field to restore your settings.": "Обратите внимание: некоторые аддоны (например, AIOStatus) не подставляют данные из URL автоматически. Если форма загружается пустой, вставьте существующий URL манифеста в их поле \"Импорт из URL\", чтобы восстановить настройки.",
+ "Heads-up: a few addons (like AIOStatus) don't pre-fill from the URL. If the form loads blank, paste the existing manifest URL into their \\": "Обратите внимание: некоторые аддоны (например, AIOStatus) не подставляют данные из URL автоматически. Если форма загружается пустой, вставьте существующий URL манифеста в их \\",
+ "Heads-up: a few addons don't pre-fill from the URL. If the form loads blank, paste the existing manifest URL into their \"Import from URL\" field to restore your settings.": "Обратите внимание: некоторые аддоны не подставляют данные из URL автоматически. Если форма загружается пустой, вставьте существующий URL манифеста в их поле \"Импорт из URL\", чтобы восстановить настройки.",
+ "Health check returns 5xx": "Проверка работоспособности возвращает 5xx",
+ "Health for {n} service": "Статус для {n} сервиса",
+ "Health for {n} services": "Статус для {n} сервисов",
+ "Health for {n} services below": "Статус для {n} сервисов ниже",
+ "heard": "услышано",
+ "Heartbreak Chronicles": "Хроники разбитых сердец",
+ "Heartstrings": "Струны души",
+ "Heartwarming": "Трогательное",
+ "Heavy Hitters": "Тяжеловесы",
+ "Hebrew": "Иврит",
+ "Height": "Высота",
+ "Heists & Cons": "Ограбления и афёры",
+ "Hello World": "Привет, мир",
+ "Help": "Справка",
+ "Hero": "Баннер",
+ "Hero carousel, Top 10, Trending, In Theaters, per-service rails.": "Карусель баннера, Топ-10, В тренде, В кинотеатрах, подборки по сервисам.",
+ "Hero carousel, Top 10, Trending, In Theaters, per-service rails. Addon catalogs append underneath, deduped.": "Карусель баннера, Топ-10, В тренде, В кинотеатрах, подборки по сервисам. Каталоги аддонов добавляются ниже, без дублей.",
+ "Hero, Top 10, Trending, In Theaters, per-service rails. Your addons append underneath.": "Баннер, Топ-10, В тренде, В кинотеатрах, подборки по сервисам. Ваши аддоны добавляются ниже.",
+ "HEVC, HDR, TrueHD, plus real subtitle and audio menus.": "HEVC, HDR, TrueHD, а также полноценные меню субтитров и звуковых дорожек.",
+ "HI": "HI",
+ "HI/SDH": "HI/SDH",
+ "hidden": "скрыто",
+ "Hidden": "Скрыто",
+ "Hidden by default. Manifest paths often carry API keys (debrid tokens, OMDB keys, etc.) you don't want over a shoulder.": "Скрыто по умолчанию. Пути манифестов часто содержат API-ключи (токены debrid-сервисов, ключи OMDB и т.д.), которые не стоит показывать посторонним.",
+ "Hidden by filter: {reason}": "Скрыто фильтром: {reason}",
+ "Hidden catalogs": "Скрытые каталоги",
+ "Hidden Gems": "Скрытые жемчужины",
+ "Hidden Gems on MAL": "Скрытые жемчужины на MAL",
+ "Hide": "Скрыть",
+ "Hide adult addons": "Скрывать аддоны для взрослых",
+ "Hide adult content": "Скрывать контент для взрослых",
+ "Hide anime": "Скрывать аниме",
+ "Hide category": "Скрыть категорию",
+ "Hide details": "Скрыть подробности",
+ "Hide email": "Скрыть email",
+ "Hide entire categories. Toggling these also removes the matching sidebar entries and rails.": "Скрывайте целые категории. Переключение также убирает соответствующие пункты боковой панели и подборки.",
+ "Hide from home": "Скрыть с главной",
+ "Hide Live TV": "Скрыть эфирное ТВ",
+ "Hide others' drawings": "Скрыть рисунки других",
+ "Hide password": "Скрыть пароль",
+ "Hide row": "Скрыть ряд",
+ "Hide search": "Скрыть поиск",
+ "Hide section": "Скрыть раздел",
+ "Hide streams": "Скрыть источники",
+ "Hide subtitles when the player shrinks into the floating PiP window.": "Скрывать субтитры, когда плеер сворачивается в плавающее окно PiP.",
+ "Hide the full URL": "Скрыть полный URL",
+ "Hide the title": "Скрыть название",
+ "Hide this control": "Скрыть этот элемент управления",
+ "Hide this panel": "Скрыть эту панель",
+ "Hide this Skip button": "Скрыть эту кнопку пропуска",
+ "Hide titles under posters": "Скрыть названия под постерами",
+ "Hide unreleased titles": "Скрыть невышедшие тайтлы",
+ "Hide watched titles in catalogs": "Скрывать просмотренные тайтлы в каталогах",
+ "Hides anime from the Home Continue Watching row. It still appears in the Anime tab's own Continue Watching.": "Скрывает аниме из ряда «Продолжить просмотр» на главной. Оно по-прежнему отображается в собственном ряду «Продолжить просмотр» на вкладке «Аниме».",
+ "Hides spoiler-prone episode details in episode lists until you have watched them.": "Скрывает потенциально спойлерные детали эпизодов в списках, пока вы их не посмотрели.",
+ "Hides streams with no detected preferred language. Multi-audio releases count as a match.": "Скрывает источники без определённого предпочитаемого языка. Релизы с несколькими дорожками считаются совпадением.",
+ "Hides the button on its own after a few seconds so a wrong one doesn't sit there the whole episode.": "Кнопка исчезает сама через несколько секунд, чтобы ошибочная не висела весь эпизод.",
+ "High": "Высокое",
+ "High score, low fanfare": "Высокая оценка без лишнего шума",
+ "High-quality episode images": "Изображения эпизодов высокого качества",
+ "Highly Rated, Quietly Loved": "Высоко оценённые, тихо любимые",
+ "Highly recommended. This is what gives you the full Harbor experience: Popular, Trending, In Theaters, and per-service rails. Free at ": "Настоятельно рекомендуется. Именно это даёт полноценный опыт использования Harbor: «Популярное», «В тренде», «В кинотеатрах» и подборки по сервисам. Бесплатно на ",
+ "Hindi": "Хинди",
+ "His Best": "Его лучшее",
+ "His Comedy": "Его комедии",
+ "Historical Drama": "Историческая драма",
+ "History": "История",
+ "History Buff": "Любитель истории",
+ "Hit": "Хит",
+ "Hit your daily quota? Use Harbor's public relay, or host your own.": "Исчерпали дневную квоту? Используйте публичный relay Harbor или разверните свой.",
+ "Hits": "Хиты",
+ "Hitting Play jumps straight into playback with the best stream Harbor finds.": "Нажатие «Play» сразу запускает воспроизведение с лучшим источником, который найдёт Harbor.",
+ "Hitting Play opens the source list so you can choose quality, debrid, and audio yourself.": "Нажатие «Play» открывает список источников, чтобы вы сами выбрали качество, debrid-сервис и звуковую дорожку.",
+ "Hold Ctrl or Cmd and scroll to resize Harbor's interface smoothly.": "Удерживайте Ctrl или Cmd и прокручивайте колесо, чтобы плавно изменить масштаб интерфейса Harbor.",
+ "Holdover Picks": "Продолжающие показ",
+ "Holdup Matey!": "Держись, приятель!",
+ "Holiday Classics": "Праздничная классика",
+ "Holiday Warmth": "Праздничное тепло",
+ "Home": "Главная",
+ "Home · Continue Watching": "Главная · Продолжить просмотр",
+ "Home hero": "Баннер на главной",
+ "Home hero shadow": "Тень баннера на главной",
+ "Home languages": "Языки на главной",
+ "Home layout": "Макет главной",
+ "Home Rail Settings": "Настройки подборок на главной",
+ "Home Runs": "Хоум-раны",
+ "Honored writers": "Признанные сценаристы",
+ "Horizontal view": "Горизонтальный вид",
+ "Horror": "Ужасы",
+ "Horror & Supernatural": "Ужасы и сверхъестественное",
+ "Host": "Хост",
+ "Host is watching": "Хост смотрит",
+ "Hotkeys": "Горячие клавиши",
+ "Hover a poster to peek at its rating, runtime, and synopsis without opening it.": "Наведите курсор на постер, чтобы увидеть рейтинг, длительность и описание, не открывая его.",
+ "Hover preview": "Предпросмотр при наведении",
+ "Hover the speaker to reveal a horizontal slider.": "Наведите курсор на значок динамика, чтобы открыть горизонтальный ползунок.",
+ "Hover to peek": "Наведите, чтобы посмотреть",
+ "How aggressively Harbor rejects shady or mismatched streams before showing them in the picker.": "Насколько агрессивно Harbor отсеивает подозрительные или несоответствующие источники перед показом в списке.",
+ "How dark the gradient behind the featured title on Home is. 100% is the classic look; lower it to let more of the artwork show through.": "Насколько тёмным будет градиент за избранным тайтлом на главной. 100% — классический вид; уменьшите значение, чтобы было больше видно постер.",
+ "How Harbor finds and resolves playable streams. Debrid keys and addon installs live here.": "Как Harbor находит и получает воспроизводимые источники. Здесь же находятся ключи debrid-сервисов и установка аддонов.",
+ "How Harbor squeezes HDR movies onto a normal screen. Auto is right for almost everyone; the curves below just change the look (punchy vs soft). Only matters on HDR sources.": "Как Harbor умещает HDR-фильмы на обычный экран. «Авто» подходит почти всем; кривые ниже лишь меняют внешний вид (яркий или мягкий). Имеет значение только для HDR-источников.",
+ "How is this build treating you?": "Как вам эта сборка?",
+ "How keys behave during playback.": "Как клавиши ведут себя во время воспроизведения.",
+ "How much of each source's description the Stremio picker layout shows. Full keeps everything the addon sends, which matters for AIOStreams and other custom formats.": "Сколько текста из описания источника показывает раскладка списка в стиле Stremio. «Полностью» сохраняет всё, что отправляет аддон, что важно для AIOStreams и других нестандартных форматов.",
+ "How often the profile screen appears when you have more than one profile.": "Как часто появляется экран выбора профиля, если у вас больше одного профиля.",
+ "How Play works": "Как работает «Play»",
+ "How posters appear as they load. Blur up looks smoothest; Fade is lighter on older or low-power devices; Instant turns it off.": "Как постеры появляются при загрузке. «Размытие» выглядит наиболее плавно; «Затухание» легче для старых или слабых устройств; «Мгновенно» отключает эффект.",
+ "How sharp the trailer is when you hit the preview button. Auto picks from your connection speed. 1080p and Best merge separate video and audio with the bundled ffmpeg, so they take a beat longer to start.": "Насколько чётким будет трейлер при нажатии кнопки предпросмотра. «Авто» выбирает исходя из скорости соединения. «1080p» и «Лучшее» объединяют отдельные видео- и аудиодорожки с помощью встроенного ffmpeg, поэтому запускаются чуть дольше.",
+ "How should we import this folder?": "Как импортировать эту папку?",
+ "How subtitles look during playback. Live preview below.": "Как выглядят субтитры во время воспроизведения. Предпросмотр в реальном времени ниже.",
+ "How the Home page assembles its rails.": "Как главная страница собирает свои подборки.",
+ "How the volume widget behaves on click and hover.": "Как виджет громкости реагирует на клик и наведение.",
+ "How to get this": "Как это получить",
+ "How you appear in Watch Together, sessions, and chat. Sits on top of your Stremio account.": "Как вы отображаетесь в «Смотреть вместе», сессиях и чате. Дополняет ваш аккаунт Stremio.",
+ "hr": "ч",
+ "HTML5": "HTML5",
+ "HTML5 (browser-based)": "HTML5 (на основе браузера)",
+ "HTML5 plays everything WebView2 supports. mpv handles TrueHD, DTS-HD, AV1, weird containers, and HDR. Auto picks based on the source.": "HTML5 воспроизводит всё, что поддерживает WebView2. mpv справляется с TrueHD, DTS-HD, AV1, нестандартными контейнерами и HDR. «Авто» выбирает исходя из источника.",
+ "https://...manifest.json or stremio://...": "https://...manifest.json или stremio://...",
+ "https://posters.example.com or a pattern with {id}": "https://posters.example.com или шаблон с {id}",
+ "Huge": "Огромный",
+ "Hungarian": "Венгерский",
+ "HW decode": "Аппаратное декодирование",
+ "I authorized it": "Я разрешил доступ",
+ "I have my token": "У меня есть токен",
+ "Icon": "Значок",
+ "Icon only": "Только значок",
+ "Iconic Long-Runners": "Легендарные долгожители",
+ "ID prefixes": "Префиксы ID",
+ "Identify every file by its name and pull fresh titles and artwork from TMDB.": "Определять каждый файл по имени и подтягивать актуальные названия и постеры из TMDB.",
+ "Identify this title before exporting.": "Определите этот тайтл перед экспортом.",
+ "Idle": "Простой",
+ "If a stream or the video player misbehaves, export the player log and attach it above. It saves to your Downloads folder.": "Если источник или видеоплеер работает некорректно, экспортируйте журнал плеера и приложите его выше. Файл сохранится в папку «Загрузки».",
+ "If disabled, overviews and taglines remain in their original language. (Applies only inside the details page)": "Если отключено, описания и слоганы останутся на языке оригинала. (Действует только на странице сведений)",
+ "If disabled, posters remain in their original language. (Applies only inside the details page)": "Если отключено, постеры останутся на языке оригинала. (Действует только на странице сведений)",
+ "If disabled, titles remain in their original language.": "Если отключено, названия останутся на языке оригинала.",
+ "If enabled, posters will display the Arabic title. Disable this to keep the original English poster.": "Если включено, на постерах будет отображаться название на арабском. Отключите, чтобы сохранить оригинальный английский постер.",
+ "If streams stop loading, hit Clear & restart below to wipe the engine and start it fresh on a new port.": "Если источники перестали загружаться, нажмите «Очистить и перезапустить» ниже, чтобы сбросить движок и запустить его заново на новом порту.",
+ "If the server is unreachable, playback fails instead of streaming locally. Use this when your VPN runs on the server machine and torrent traffic must never leave this one.": "Если сервер недоступен, воспроизведение завершится ошибкой вместо перехода на локальную трансляцию. Используйте это, если VPN работает на серверной машине и торрент-трафик никогда не должен покидать её.",
+ "If the Watch Together popover shows an outdated-relay banner, redeploying with the steps above is the fix. The banner clears automatically the next time you connect once the relay reports the current version.": "Если всплывающее окно «Смотреть вместе» показывает баннер об устаревшем relay, решение — повторно развернуть его по шагам выше. Баннер исчезнет автоматически при следующем подключении, как только relay сообщит текущую версию.",
+ "If video keeps pausing to buffer, or you're on spotty Wi-Fi or a far-away server, this gives Harbor a bigger head start so playback rides through the rough patches.": "Если видео постоянно останавливается для буферизации, или у вас нестабильный Wi-Fi, или сервер далеко, это даёт Harbor больший запас, чтобы воспроизведение пережило проблемные участки.",
+ "If you exceed free tier, the Workers Paid plan is $5 per month and bumps the request allowance to 10 million per day.": "Если вы превысите бесплатный тариф, платный план Workers стоит $5 в месяц и увеличивает лимит запросов до 10 миллионов в день.",
+ "Image {n}": "Изображение {n}",
+ "Image bar active. Pick a style above to switch back, or clear the image below.": "Панель изображения активна. Выберите стиль выше, чтобы вернуться, или очистите изображение ниже.",
+ "Image languages": "Языки изображений",
+ "Image size": "Размер изображения",
+ "IMDb": "IMDb",
+ "Import a Theme": "Импортировать тему",
+ "Import from .nfo files": "Импорт из файлов .nfo",
+ "Import from file...": "Импорт из файла...",
+ "Import from Trakt": "Импорт из Trakt",
+ "Imported": "Импортировано",
+ "Imported and now playing": "Импортировано и воспроизводится",
+ "Importing {done} / {total}": "Импорт {done} / {total}",
+ "in {d} days": "через {d} дн.",
+ "in {n} weeks": "через {n} нед.",
+ "in {n}wks": "через {n}нед.",
+ "in 24h": "через 24ч",
+ "In Cinema": "В кино",
+ "in Harbor settings.": "в настройках Harbor.",
+ "In Harbor: Settings, Harbor Relay, then": "В Harbor: Настройки, Harbor Relay, затем",
+ "In Harbor: Settings, Harbor Relay, then {kbd}. Paste the URL with {code1} as the scheme instead of {code2}.": "В Harbor: Настройки, Harbor Relay, затем {kbd}. Вставьте URL со схемой {code1} вместо {code2}.",
+ "In Theaters": "В кинотеатрах",
+ "In Theaters Now": "Сейчас в кинотеатрах",
+ "In watchlist": "В списке отслеживания",
+ "In Watchlist": "В списке отслеживания",
+ "In your local library": "В вашей локальной библиотеке",
+ "In your watchlist": "В вашем списке отслеживания",
+ "Inactive": "Неактивно",
+ "Increase progress": "Увеличить прогресс",
+ "India": "Индия",
+ "Indy & Beyond": "Инди и не только",
+ "Info": "Инфо",
+ "Information": "Информация",
+ "Injected ad skip (experimental)": "Пропуск встроенной рекламы (экспериментально)",
+ "Injected into a fixed-position layer above the app (pointer-events disabled by default). Wrap in a div with pointer-events:auto to make it interactive.": "Внедряется в слой с фиксированным позиционированием поверх приложения (pointer-events отключены по умолчанию). Оберните в div с pointer-events:auto, чтобы сделать его интерактивным.",
+ "Inside the playback view.": "Внутри окна воспроизведения.",
+ "Insomnia Lineup": "Подборка для бессонницы",
+ "Inspector": "Инспектор",
+ "Install": "Установить",
+ "Install addon": "Установить аддон",
+ "Install default": "Установить по умолчанию",
+ "Install failed": "Ошибка установки",
+ "Install failed.": "Ошибка установки.",
+ "Install from URL: paste any manifest or stremio:// link": "Установка по URL: вставьте ссылку на манифест или stremio://",
+ "Install SVP once (the free tier is enough). It bundles VapourSynth + svpflow; Harbor reuses them, no extra setup.": "Установите SVP один раз (бесплатной версии достаточно). В комплекте идут VapourSynth и svpflow; Harbor использует их без дополнительной настройки.",
+ "Install wrangler and authenticate:": "Установите wrangler и авторизуйтесь:",
+ "Installed": "Установлено",
+ "Installed and detected. Harbor found its interpolation engine and will drive it directly.": "Установлено и обнаружено. Harbor нашёл движок интерполяции и будет управлять им напрямую.",
+ "Installed locally": "Установлено локально",
+ "Installed via {label}": "Установлено через {label}",
+ "Installing": "Установка",
+ "Installing {name}": "Установка {name}",
+ "Installing. Harbor will restart.": "Установка. Harbor перезапустится.",
+ "Installing…": "Установка…",
+ "Instant": "Мгновенно",
+ "Instant Play: clicking Play queues the next stream automatically.": "Мгновенный запуск: нажатие «Play» автоматически ставит в очередь следующий источник.",
+ "Integrations": "Интеграции",
+ "Inter": "Inter",
+ "Interceptions": "Перехваты",
+ "Interface language": "Язык интерфейса",
+ "Interface scale": "Масштаб интерфейса",
+ "Internals": "Внутренние настройки",
+ "Internet speed": "Скорость интернета",
+ "Interpolates frames for smoother panning, best on anime. Needs a display refresh rate above the video's frame rate, and can stutter on weak GPUs. mpv only.": "Интерполирует кадры для более плавного панорамирования, лучше всего подходит для аниме. Требует частоту обновления экрана выше частоты кадров видео и может подтормаживать на слабых видеокартах. Только для mpv.",
+ "Interrupted": "Прервано",
+ "Interrupted: re-download to finish": "Прервано: перезагрузите, чтобы завершить",
+ "Into the Stars": "К звёздам",
+ "Into the Wild": "В дикую природу",
+ "Invalid SourceRow JSON format": "Неверный формат JSON для SourceRow",
+ "Invert": "Инвертировать",
+ "Investigative Docs": "Документальные расследования",
+ "Invite": "Пригласить",
+ "Invite link": "Ссылка-приглашение",
+ "Invite via link": "Пригласить по ссылке",
+ "is now using your new configuration.": "теперь использует новую конфигурацию.",
+ "is ready. Open Discover or hit Play on a title to use it.": "готов к использованию. Откройте «Обзор» или нажмите «Play» на тайтле, чтобы им воспользоваться.",
+ "Is the channel playing right?": "Канал воспроизводится корректно?",
+ "Isekai": "Исекай",
+ "It looks offline right now. Free playlists often include channels that have gone dark, so another one is usually a click away.": "Похоже, сейчас канал не в сети. Бесплатные плейлисты часто содержат каналы, переставшие вещать, так что другой обычно находится в одном клике.",
+ "It replies with your numeric ID. Copy that number. Paste it into the": "В ответ придёт ваш числовой ID. Скопируйте это число. Вставьте его в",
+ "It updates automatically; nothing to do.": "Обновляется автоматически, ничего делать не нужно.",
+ "Italian": "Итальянский",
+ "Italy": "Италия",
+ "Japan": "Япония",
+ "Japanese": "Японский",
+ "Japanese Cinema": "Японское кино",
+ "Jazz & Showbiz": "Джаз и шоу-бизнес",
+ "Join": "Присоединиться",
+ "JSON (.json)": "JSON (.json)",
+ "JSON cannot be empty": "JSON не может быть пустым",
+ "JSON URL": "URL JSON",
+ "Jump back by the Back seek step set under Behavior.": "Перемотка назад на шаг, заданный в разделе «Поведение».",
+ "Jump back thirty seconds.": "Перемотать назад на тридцать секунд.",
+ "Jump back to the last live channel you watched (live TV only).": "Вернуться к последнему просмотренному эфирному каналу (только для эфирного ТВ).",
+ "Jump forward by the Forward seek step set under Behavior.": "Перемотка вперёд на шаг, заданный в разделе «Поведение».",
+ "Jump forward thirty seconds.": "Перемотать вперёд на тридцать секунд.",
+ "Jump past a known injected ad on its own instead of showing the Skip button.": "Автоматически пропускать известную встроенную рекламу вместо показа кнопки пропуска.",
+ "Jump past openings automatically the moment one starts. The Skip button still shows either way, and seeking back into an intro replays it without skipping again.": "Автоматически пропускать заставку в момент её начала. Кнопка пропуска всё равно показывается, а перемотка назад в заставку воспроизведёт её снова без повторного пропуска.",
+ "Jump to": "Перейти к",
+ "Jump to end": "Перейти в конец",
+ "Jump to live edge": "Перейти к текущему моменту эфира",
+ "Jump to start": "Перейти в начало",
+ "Jump to the top-bar search from anywhere.": "Перейти к поиску в верхней панели из любого места.",
+ "Just added": "Только что добавлено",
+ "Just change region": "Просто сменить регион",
+ "Just for kids": "Только для детей",
+ "just now": "только что",
+ "Just the next show: {title}": "Только следующий эпизод: {title}",
+ "K-Drama": "К-драма",
+ "Keep anime in the Anime room only": "Держать аниме только в комнате «Аниме»",
+ "Keep at most": "Хранить не более",
+ "Keep cached files for": "Хранить кэшированные файлы",
+ "Keep frames for": "Хранить кадры",
+ "Keep Harbor a click away. Close it to the system tray instead of quitting, and control it from the tray menu. These also mirror into the tray menu live.": "Держите Harbor в одном клике. Сворачивайте его в системный трей вместо закрытия и управляйте через меню трея. Эти настройки также отражаются в меню трея в реальном времени.",
+ "Keep original": "Сохранить оригинал",
+ "Keep same source on next episode": "Использовать тот же источник для следующего эпизода",
+ "Keep the Harbor window above other windows.": "Держать окно Harbor поверх остальных окон.",
+ "Keep the Library Watchlist tab limited to titles you added in Stremio. Turn this off to also include anything Stremio auto-added when you pressed play.": "Ограничить вкладку «Список отслеживания» в библиотеке только тайтлами, добавленными вручную в Stremio. Отключите, чтобы включить и то, что Stremio добавил автоматически при нажатии Play.",
+ "Keep the next episode visible": "Оставить следующий эпизод видимым",
+ "Keep the original look but apply your size and position.": "Сохранить исходный вид, но применить ваш размер и позицию.",
+ "Keep the presence visible when playback is paused.": "Оставлять статус видимым, когда воспроизведение на паузе.",
+ "Keep typing, or paste the full list URL.": "Продолжайте вводить или вставьте полный URL списка.",
+ "Keep watching": "Продолжить просмотр",
+ "Keep Watching": "Продолжить просмотр",
+ "Keeps fetching the full torrent in the background, even when paused, so you can pre-buffer big remuxes and scrub a finished file with no re-downloading. Uses more bandwidth and disk; cleaned up when you switch or close like normal.": "Продолжает загружать торрент целиком в фоне, даже на паузе, чтобы можно было заранее буферизовать крупные ремуксы и перематывать готовый файл без повторной загрузки. Расходует больше трафика и места на диске; очищается при переключении или закрытии как обычно.",
+ "Keeps Harbor embedded but lifts the HDR video onto its own opaque plane with the controls floating above, so Windows shows true HDR without the brightness slider dimming it. Needs HDR-to-SDR tonemapping off.": "Оставляет Harbor встроенным, но поднимает HDR-видео на отдельный непрозрачный слой с элементами управления поверх него, чтобы Windows отображал настоящий HDR без затемнения ползунком яркости. Требует отключения тональной компрессии HDR в SDR.",
+ "Keeps HDR inside Harbor with the controls floating above the video. Subtitles render on the video. If the control bar does not appear, press Esc or use separate window.": "Оставляет HDR внутри Harbor с элементами управления поверх видео. Субтитры отображаются поверх видео. Если панель управления не появляется, нажмите Esc или используйте отдельное окно.",
+ "Keeps the malware/year/episode-mismatch checks but allows season packs and oversized files. Same as hitting Search wider in the picker.": "Сохраняет проверки на вредоносное ПО, год и несоответствие эпизода, но допускает пакеты сезонов и файлы большого размера. То же самое, что нажать «Расширить поиск» в списке источников.",
+ "Key rejected. Check it on Library & metadata.": "Ключ отклонён. Проверьте его в разделе «Библиотека и метаданные».",
+ "Kids profile": "Детский профиль",
+ "Kinetic Style": "Кинетический стиль",
+ "King Adaptations": "Экранизации Кинга",
+ "Kitsu IDs, fansub-friendly, season-aware.": "ID Kitsu, дружелюбно к фансабу, с учётом сезонов.",
+ "Kitsu, MAL, season-aware": "Kitsu, MAL, с учётом сезонов",
+ "Know more": "Узнать больше",
+ "Known For": "Известен(на) по",
+ "Korean": "Корейский",
+ "Korean Cinema": "Корейское кино",
+ "Kung Fu & Chaos": "Кунг-фу и хаос",
+ "Language": "Язык",
+ "language. Home filters to it.": "языку. Главная фильтрует по нему.",
+ "Languages": "Языки",
+ "languages. Home filters to these.": "языкам. Главная фильтрует по ним.",
+ "Large": "Крупный",
+ "Larger": "Крупнее",
+ "Largest Lead": "Самый большой отрыв",
+ "Last aired": "Последний эфир",
+ "Last page": "Последняя страница",
+ "Last source wasn't actually cached on your debrid yet. Pick another from the list.": "Последний источник на самом деле ещё не был закэширован на вашем debrid-сервисе. Выберите другой из списка.",
+ "Last synced {n}s ago.": "Последняя синхронизация {n} с назад.",
+ "Last updated {ago}": "Последнее обновление {ago}",
+ "Late Night": "Поздний вечер",
+ "Late Show": "Ночное шоу",
+ "Late-night chapters": "Ночные главы",
+ "Laugh Out Loud": "Смех до слёз",
+ "Layout editor": "Редактор макета",
+ "Layout name": "Название макета",
+ "Layouts": "Макеты",
+ "Lead Changes": "Смены лидера",
+ "Lead Roles": "Главные роли",
+ "Lead with the show name instead of the episode title at the top of the player.": "Показывать название сериала вместо названия эпизода в верхней части плеера.",
+ "Leading Lady": "Главная героиня",
+ "Leave": "Покинуть",
+ "Leave everything below it alone. Scroll down, click {b1}, then {b2}. Copy the long string it shows you (you only see it once) and bring it back here.": "Остальное не трогайте. Прокрутите вниз, нажмите {b1}, затем {b2}. Скопируйте длинную строку, которую вам покажут (она отображается только один раз), и вернитесь с ней сюда.",
+ "Leave room": "Покинуть комнату",
+ "Leave the episode you are up to clear and only blur the ones after it.": "Оставить текущий эпизод чётким и размыть только последующие.",
+ "Leave the show?": "Покинуть сериал?",
+ "left": "осталось",
+ "Left": "Слева",
+ "Left edge": "Левый край",
+ "Legal": "Правовая информация",
+ "Leone, Corbucci, dust and dynamite": "Леоне, Корбуччи, пыль и динамит",
+ "Less bass": "Меньше баса",
+ "Let your Discord friends see what you are watching, with the show poster and a live progress bar.": "Позвольте друзьям в Discord видеть, что вы смотрите, вместе с постером сериала и живым индикатором прогресса.",
+ "Let your Discord friends see what you are watching, with the show poster and a live progress bar. Desktop only, and only your own Discord client is involved (nothing touches a Harbor server).": "Позвольте друзьям в Discord видеть, что вы смотрите, вместе с постером сериала и живым индикатором прогресса. Только для настольной версии, задействован только ваш собственный клиент Discord (сервер Harbor не участвует).",
+ "Let your graphics card do the heavy lifting of decoding video. It saves battery and keeps the CPU cool. Auto is right for almost everyone; only switch if playback looks wrong or won't start.": "Позвольте видеокарте взять на себя основную нагрузку по декодированию видео. Это экономит заряд батареи и снижает нагрев процессора. «Авто» подходит почти всем; переключайтесь, только если воспроизведение выглядит неправильно или не запускается.",
+ "Letter spacing": "Межбуквенный интервал",
+ "Letterboxd": "Letterboxd",
+ "Letterboxd password": "Пароль Letterboxd",
+ "Letterboxd Reviews": "Обзоры Letterboxd",
+ "Letterboxd unavailable right now.": "Letterboxd сейчас недоступен.",
+ "Letterboxd username": "Имя пользователя Letterboxd",
+ "letterboxd.com/username/list/slug": "letterboxd.com/username/list/slug",
+ "Library": "Библиотека",
+ "Library & metadata": "Библиотека и метаданные",
+ "Library and addons will sync in once you're past setup.": "Библиотека и аддоны синхронизируются после завершения настройки.",
+ "Library is empty. Nothing to repair.": "Библиотека пуста. Нечего восстанавливать.",
+ "Library, watch progress, and addon collection sync from this account.": "Библиотека, прогресс просмотра и коллекция аддонов синхронизируются с этим аккаунтом.",
+ "Lifts shadows so the pitch-black scenes are actually watchable.": "Осветляет тени, чтобы совсем тёмные сцены были действительно различимы.",
+ "Lighter (w300)": "Легче (w300)",
+ "Lights Out": "Гаснет свет",
+ "Liked Films": "Понравившиеся фильмы",
+ "Likely cam": "Вероятно, экранка",
+ "Likes": "Нравится",
+ "Limited Series & Miniseries": "Лимитированные сериалы и мини-сериалы",
+ "Line spacing": "Межстрочный интервал",
+ "Line-free video mode": "Режим видео без линий",
+ "lineups": "подборки",
+ "Lineups not available yet.": "Подборки пока недоступны.",
+ "Link copied": "Ссылка скопирована",
+ "List": "Список",
+ "List URL or ID": "URL или ID списка",
+ "List view": "Вид списком",
+ "Live": "В эфире",
+ "Live & Upcoming": "В эфире и скоро",
+ "Live channel": "Эфирный канал",
+ "Live EPG": "Эфирная EPG",
+ "Live preview": "Предпросмотр в реальном времени",
+ "Live preview is on. Done and Save both keep what you've picked as your Custom theme. Reset reverts the editor to the saved palette.": "Предпросмотр в реальном времени включён. И «Готово», и «Сохранить» сохранят выбранное как вашу собственную тему. «Сбросить» вернёт редактор к сохранённой палитре.",
+ "Live streams that actually work.": "Эфирные трансляции, которые действительно работают.",
+ "Live TV": "Эфирное ТВ",
+ "Live Wire": "На нерве",
+ "Live-injected into the document. Use it to retheme buttons, change spacing, recolor anything.": "Внедряется в документ в реальном времени. Используйте, чтобы изменить тему кнопок, отступы, перекрасить что угодно.",
+ "Load a .srt or .ass from your computer": "Загрузить .srt или .ass с компьютера",
+ "Load effect": "Эффект загрузки",
+ "Load file": "Загрузить файл",
+ "Load more": "Загрузить ещё",
+ "Load more comments": "Загрузить больше комментариев",
+ "Load more threads": "Загрузить больше обсуждений",
+ "Load the highest-resolution artwork for the featured hero. Uses more bandwidth.": "Загружать изображение самого высокого разрешения для заглавного баннера. Расходует больше трафика.",
+ "Loaded {name}": "Загружено: {name}",
+ "Loading": "Загрузка",
+ "Loading video": "Загрузка видео",
+ "Loading {label}": "Загрузка: {label}",
+ "Loading environment details…": "Загрузка сведений об окружении…",
+ "Loading episode details...": "Загрузка сведений об эпизоде...",
+ "Loading favorites from other providers…": "Загрузка избранного от других провайдеров…",
+ "Loading favorites…": "Загрузка избранного…",
+ "Loading friends' reviews…": "Загрузка обзоров друзей…",
+ "Loading Letterboxd…": "Загрузка Letterboxd…",
+ "Loading more": "Загрузка ещё",
+ "Loading more channels ({n1} of {n2})": "Загрузка каналов ({n1} из {n2})",
+ "Loading more channels ({shown} of {total})": "Загрузка каналов ({shown} из {total})",
+ "loading more…": "загрузка ещё…",
+ "Loading on {names}…": "Загрузка на {names}…",
+ "Loading playlist...": "Загрузка плейлиста...",
+ "Loading program listings… channels are ready to play in the meantime.": "Загрузка программы передач… каналы уже готовы к просмотру.",
+ "Loading subtitle addons…": "Загрузка аддонов субтитров…",
+ "Loading the catalog": "Загрузка каталога",
+ "Loading trailer": "Загрузка трейлера",
+ "Loading your AniList…": "Загрузка вашего AniList…",
+ "Loading...": "Загрузка...",
+ "Loading…": "Загрузка…",
+ "Loads a backup file and replaces your current setup with it. Perfect for a new computer. Your Stremio sign-in on this device stays as is.": "Загружает файл резервной копии и заменяет им текущие настройки. Отлично подходит для нового компьютера. Вход в Stremio на этом устройстве останется прежним.",
+ "Loads full-resolution artwork instead of the lighter, softer version.": "Загружает изображения в полном разрешении вместо облегчённой версии.",
+ "Loads full-resolution episode artwork (original) instead of lighter w300 images. Turn off for slow connections or low-end devices.": "Загружает изображения эпизодов в полном разрешении (оригинал) вместо облегчённых w300. Отключите при медленном соединении или на слабых устройствах.",
+ "Loads more of the video ahead of time before playing. Smoother on weak connections, uses a little more memory and takes a moment longer to start.": "Заранее загружает больше видео перед воспроизведением. Плавнее на слабых соединениях, использует немного больше памяти и запускается чуть дольше.",
+ "local": "локально",
+ "Local": "Локально",
+ "Local engine": "Локальный движок",
+ "Local engine address": "Адрес локального движка",
+ "Local library": "Локальная библиотека",
+ "Local only": "Только локально",
+ "Local subtitle": "Локальные субтитры",
+ "Lock sidebar tabs": "Закрепить вкладки боковой панели",
+ "Lock to season server": "Закрепить сервер за сезоном",
+ "Locks only activate once a PIN is set.": "Блокировки активируются только после установки PIN-кода.",
+ "Login to Stremio": "Войти в Stremio",
+ "Logo size": "Размер логотипа",
+ "Logos": "Логотипы",
+ "Lone Stars": "Одинокие звёзды",
+ "Long Balls": "Дальние удары",
+ "Long Balls %": "% дальних ударов",
+ "Long string with a colon in it. Copy it. Paste it into the": "Длинная строка с двоеточием. Скопируйте её. Вставьте в",
+ "Long-running comforts and new chapters worth pressing play on.": "Проверенные временем сериалы и новые главы, которые стоит начать смотреть.",
+ "Looking for sources…": "Поиск источников…",
+ "Looking for subtitles…": "Поиск субтитров…",
+ "Looking…": "Поиск…",
+ "Looks good": "Выглядит хорошо",
+ "Looks like a re-configure of ": "Похоже на переконфигурацию ",
+ "Looks like a re-configure of {name}. We'll replace the existing entry so you don't end up with two copies.": "Похоже, это переконфигурация {name}. Мы заменим существующую запись, чтобы не создавать дубликат.",
+ "Lost worlds rediscovered": "Заново открытые потерянные миры",
+ "Low": "Низкое",
+ "Low-level knobs for the peer-to-peer engine, plus quick ways to grab debug info when a stream misbehaves.": "Низкоуровневые настройки для однорангового движка, а также быстрые способы собрать отладочную информацию, если источник ведёт себя некорректно.",
+ "Lower subtitles": "Опустить субтитры",
+ "Lower volume (hold Shift for big steps).": "Уменьшить громкость (удерживайте Shift для больших шагов).",
+ "Loyalties shatter as the survivors realize the enemy has been among them all along.": "Верность рушится, когда выжившие понимают, что враг был среди них всё это время.",
+ "Lunch-break comedies and slow-cooker dramas, ready when you are.": "Комедии на обеденный перерыв и неспешные драмы — готовы, когда готовы вы.",
+ "M3U playlist": "Плейлист M3U",
+ "M3U URL": "URL M3U",
+ "Mad Visions": "Безумные видения",
+ "Made Men": "Посвящённые",
+ "Made with": "Создано с помощью",
+ "Main Char": "Главный герой",
+ "Make everything bigger and easier to read: sidebar, menus, popups, every page. The whole interface scales live as you drag, so you can see the change right here. Great on 4K and ultrawide monitors, or whenever the text feels small.": "Сделайте всё крупнее и удобнее для чтения: боковую панель, меню, всплывающие окна, каждую страницу. Весь интерфейс масштабируется в реальном времени по мере перетаскивания, так что изменения видны сразу. Отлично подходит для 4K и ultrawide мониторов или когда текст кажется мелким.",
+ "Make the featured banner on Home bigger and sharper.": "Сделать избранный баннер на главной крупнее и чётче.",
+ "Make your own in the Theme Studio, or import one a friend shared.": "Создайте свою в редакторе тем или импортируйте ту, которой поделился друг.",
+ "MAL": "MAL",
+ "MAL rows": "Ряды MAL",
+ "Manage": "Управление",
+ "Manage addon": "Управление аддоном",
+ "Manage recording": "Управление записью",
+ "Manic Heart": "Безумное сердце",
+ "Manifest URL": "URL манифеста",
+ "Manifest URL copied": "URL манифеста скопирован",
+ "Manual deploy with wrangler": "Ручное развёртывание через wrangler",
+ "Manual mode: clicking Play opens the source picker here.": "Ручной режим: нажатие «Play» открывает список источников здесь.",
+ "Manual picker": "Ручной выбор",
+ "Maps HDR down to SDR with bt.2446a. Works on any display. Pick this if HDR looks washed-out or grey.": "Преобразует HDR в SDR по стандарту bt.2446a. Работает на любом экране. Выберите, если HDR выглядит блёклым или серым.",
+ "Maps HDR sources to SDR using bt.2446a. Recommended on SDR displays.": "Преобразует HDR-источники в SDR по стандарту bt.2446a. Рекомендуется для SDR-экранов.",
+ "Mark season as unwatched": "Отметить сезон как непросмотренный",
+ "Mark season as watched": "Отметить сезон как просмотренный",
+ "Mark watched": "Отметить как просмотренное",
+ "Mark watched button": "Кнопка «Отметить как просмотренное»",
+ "Mark watched on Trakt": "Отмечать как просмотренное в Trakt",
+ "Marked watched": "Отмечено как просмотренное",
+ "Marks movies and shows across Home, the catalogs, and detail pages when a matching file already exists in your local library.": "Отмечает фильмы и сериалы на главной, в каталогах и на страницах сведений, если в вашей локальной библиотеке уже есть подходящий файл.",
+ "Martial Grace": "Боевая грация",
+ "Master Class": "Мастер-класс",
+ "Match EPG": "Сопоставить EPG",
+ "Match EPG channel": "Сопоставить канал EPG",
+ "Match the picture quality to your computer, smooth out weak connections, and fine-tune the mpv engine with plain-language controls.": "Подберите качество картинки под ваш компьютер, сгладьте слабое соединение и настройте движок mpv простыми и понятными элементами управления.",
+ "Match with TMDB": "Сопоставить с TMDB",
+ "Matched": "Сопоставлено",
+ "Max badges per card": "Макс. значков на карточке",
+ "Maximalist Musicals": "Максималистские мюзиклы",
+ "Maximum quality": "Максимальное качество",
+ "MDBList": "MDBList",
+ "MDBList · Letterboxd and Trakt scores": "MDBList · оценки Letterboxd и Trakt",
+ "mdblist api key": "API-ключ mdblist",
+ "MDBList's aggregate score across all sources.": "Совокупная оценка MDBList по всем источникам.",
+ "Mecha": "Меха",
+ "Media": "Медиа",
+ "Media type": "Тип медиа",
+ "Media types": "Типы медиа",
+ "Men of History": "Люди истории",
+ "Merged": "Объединено",
+ "Message": "Сообщение",
+ "Metacritic": "Metacritic",
+ "Metadata language": "Язык метаданных",
+ "Metadata providers": "Поставщики метаданных",
+ "Metascore": "Metascore",
+ "Metascore (0-100), colored green / yellow / red.": "Metascore (0–100), окрашивается в зелёный / жёлтый / красный.",
+ "Mexico": "Мексика",
+ "Midday Lineup": "Дневная подборка",
+ "Middle-earth Maker": "Создатель Средиземья",
+ "min": "мин",
+ "Mind Benders": "Головоломки",
+ "Mind-benders": "Головоломки",
+ "Mirror plays + ratings to Trakt.tv. Uses Trakt's device flow: enter a short code in your browser.": "Отправлять просмотры и оценки в Trakt.tv. Использует device flow Trakt: введите короткий код в браузере.",
+ "Missing TMDB Key": "Отсутствует ключ TMDB",
+ "Mix surround sound down to stereo": "Сводить объёмный звук в стерео",
+ "Mob & Cops": "Мафия и копы",
+ "Mob Cinema": "Кино о мафии",
+ "Mode": "Режим",
+ "Model": "Модель",
+ "Modern (Spline)": "Современный (Spline)",
+ "Modern Classics": "Современная классика",
+ "Modern Explorer": "Современный исследователь",
+ "Modern Frights": "Современные ужасы",
+ "Modern Horror": "Современный хоррор",
+ "Modern Mysteries": "Современные детективы",
+ "Modern Romance": "Современная романтика",
+ "Modern Saddles": "Современные вестерны",
+ "Modern Sci-Fi": "Современная фантастика",
+ "Modern Warfare": "Современные боевые действия",
+ "Mon": "Пн",
+ "More": "Ещё",
+ "More {category}": "Больше {category}",
+ "More actions": "Другие действия",
+ "More avatars coming soon": "Скоро появятся новые аватары",
+ "more events": "ещё события",
+ "More for {name}": "Ещё для {name}",
+ "More from a Favorite Director": "Ещё от любимого режиссёра",
+ "More info": "Подробнее",
+ "More like this": "Похожее",
+ "More Like This": "Похожее",
+ "More Movies": "Больше фильмов",
+ "More of what you love.": "Больше того, что нравится.",
+ "More Series": "Больше сериалов",
+ "More soon": "Скоро больше",
+ "More stories like these": "Похожие истории",
+ "More subtitle options": "Больше настроек субтитров",
+ "More to explore": "Что ещё посмотреть",
+ "Morning Lineup": "Утренняя подборка",
+ "Most common cause: this account is at its max simultaneous connections. Close other devices and players using these credentials.": "Самая частая причина: у аккаунта достигнут лимит одновременных подключений. Закройте другие устройства и плееры, использующие эти учётные данные.",
+ "Most computers · the default": "Большинство компьютеров · по умолчанию",
+ "Most Popular on MAL": "Самое популярное на MAL",
+ "Most popular performers right now": "Самые популярные исполнители сейчас",
+ "Most starred in 24 hours": "Больше всего звёзд за 24 часа",
+ "Most-anticipated upcoming releases on Trakt": "Самые ожидаемые премьеры по версии Trakt",
+ "Motion smoothing": "Сглаживание движения",
+ "Move down": "Переместить вниз",
+ "Move to next slot": "Переместить в следующий слот",
+ "Move to previous slot": "Переместить в предыдущий слот",
+ "Move to top": "Переместить наверх",
+ "Move up": "Переместить вверх",
+ "Move your watchlist": "Перенести список просмотра",
+ "Movie": "Фильм",
+ "Movie Magic": "Магия кино",
+ "Movie's too new": "Фильм слишком новый",
+ "Movie's too new. Subtitles haven't been published yet.": "Фильм слишком новый. Субтитры ещё не опубликованы.",
+ "movies": "фильмы",
+ "Movies": "Фильмы",
+ "Movies · {n}": "Фильмы · {n}",
+ "Movies & Specials": "Фильмы и спецвыпуски",
+ "Movies & TV": "Фильмы и сериалы",
+ "Movies and shows with a future release date stop appearing in the built-in home catalog rows, so Home only shows what you can watch right now.": "Фильмы и сериалы с датой выхода в будущем перестают отображаться во встроенных подборках на главной, поэтому на главной остаётся только то, что можно посмотреть прямо сейчас.",
+ "Movies on {name}": "Фильмы на {name}",
+ "Movies you've finished and shows in progress leave the catalog rows. Continue Watching is never touched.": "Просмотренные фильмы и сериалы в процессе просмотра исчезают из подборок каталога. «Продолжить просмотр» это не затрагивает.",
+ "Movies you've watched and shows you've made progress on stop appearing in the built-in catalog rows, using your local watch history (and Trakt if connected). Continue Watching is never touched.": "Просмотренные фильмы и сериалы с прогрессом просмотра перестают отображаться во встроенных подборках каталога — на основе локальной истории просмотра (и Trakt, если подключён). «Продолжить просмотр» это не затрагивает.",
+ "Movies you've watched and shows you've made progress on stop appearing in the built-in Discover rows, using your Trakt history. Needs Trakt connected. Continue Watching is never touched.": "Просмотренные фильмы и сериалы с прогрессом просмотра перестают отображаться во встроенных подборках «Обзор» — на основе истории Trakt. Требуется подключённый Trakt. «Продолжить просмотр» это не затрагивает.",
+ "mpv": "mpv",
+ "MPV (native, recommended)": "MPV (нативный, рекомендуется)",
+ "mpv is required for recording. Install mpv and restart Harbor.": "Для записи требуется mpv. Установите mpv и перезапустите Harbor.",
+ "mpv on the desktop app, HTML5 in the browser. The right engine without thinking about it.": "mpv в десктоп-приложении, HTML5 в браузере. Нужный движок без лишних раздумий.",
+ "Much better": "Гораздо лучше",
+ "Much worse": "Гораздо хуже",
+ "Multi-view": "Мультиэкран",
+ "Multiview": "Мультиэкран",
+ "Music": "Музыка",
+ "Music Documentaries": "Музыкальные документальные фильмы",
+ "Music Films": "Музыкальные фильмы",
+ "Music Roles": "Музыкальные роли",
+ "Must Protect": "Нуждается в защите",
+ "Mute": "Без звука",
+ "Mute · M": "Без звука · M",
+ "Mute or unmute audio.": "Включить или выключить звук.",
+ "Mute trailer": "Выключить звук трейлера",
+ "Muted": "Звук выключен",
+ "My": "Мои",
+ "My library": "Моя библиотека",
+ "My Library": "Моя библиотека",
+ "My Library shows upcoming episodes from the shows you've saved on Stremio. Sign in to wire it up.": "«Моя библиотека» показывает ближайшие эпизоды сериалов, сохранённых в Stremio. Войдите, чтобы подключить.",
+ "My list": "Мой список",
+ "My playlist": "Мой плейлист",
+ "My provider": "Мой провайдер",
+ "My Simkl": "Мой Simkl",
+ "My Trakt": "Мой Trakt",
+ "My Trakt watchlist": "Мой список просмотра Trakt",
+ "My Trakt watchlist updates": "Обновления списка просмотра Trakt",
+ "My Watchlist": "Мой список просмотра",
+ "MyAnimeList": "MyAnimeList",
+ "MyAnimeList scores for anime titles.": "Оценки MyAnimeList для аниме-тайтлов.",
+ "MyAnimeList scores for anime titles. RPDB doesn't cover anime, so this stays an opt-in.": "Оценки MyAnimeList для аниме-тайтлов. RPDB не охватывает аниме, поэтому это остаётся опцией по желанию.",
+ "MyAnimeList scores for anime titles. RPDB doesn't cover anime, so this stays optional.": "Оценки MyAnimeList для аниме-тайтлов. RPDB не охватывает аниме, поэтому это остаётся необязательным.",
+ "Mystery": "Детектив",
+ "Name": "Имя",
+ "Name (optional)": "Имя (необязательно)",
+ "name it Harbor, hit": "назовите его Harbor, нажмите",
+ "Name your first template": "Назовите свой первый шаблон",
+ "Name your look": "Назовите свой стиль",
+ "Names behind the biggest productions": "Имена за крупнейшими проектами",
+ "Native libmpv": "Нативный libmpv",
+ "Native webview playback. Smooth and integrated, but limited codec coverage.": "Воспроизведение через нативный webview. Плавно и интегрировано, но ограниченная поддержка кодеков.",
+ "Native/Japanese": "Родной/японский",
+ "Nature Films": "Фильмы о природе",
+ "nav.addons": "Аддоны",
+ "nav.anime": "Аниме",
+ "nav.calendar": "Календарь",
+ "nav.catalogs": "Каталоги",
+ "nav.collections": "Коллекции",
+ "nav.discover": "Обзор",
+ "nav.downloads": "Загрузки",
+ "nav.home": "Главная",
+ "nav.kids": "Смотреть",
+ "nav.library": "Моя библиотека",
+ "nav.live": "Прямой эфир",
+ "nav.movies": "Фильмы",
+ "nav.playlists": "Плейлисты",
+ "nav.settings": "Настройки",
+ "nav.shows": "Сериалы",
+ "Navigation": "Навигация",
+ "NAVIGATION": "НАВИГАЦИЯ",
+ "Needs artwork-rich titles to feed the hero": "Нужны тайтлы с богатой графикой для главного баннера",
+ "Needs at least 10 titles for the Top 10 look": "Нужно минимум 10 тайтлов для стиля «Топ-10»",
+ "Neo-Noir": "Нео-нуар",
+ "Nerve": "Нервы",
+ "Netflix Originals": "Оригиналы Netflix",
+ "Network": "Сеть",
+ "Networks": "Сети",
+ "Never auto-select tracks containing": "Никогда не выбирать автоматически дорожки, содержащие",
+ "Nevermind": "Отмена",
+ "New": "Новое",
+ "New Anime Releases": "Новые аниме-релизы",
+ "New episode released since you last watched": "Вышел новый эпизод с момента последнего просмотра",
+ "New Face": "Новое лицо",
+ "New filter": "Новый фильтр",
+ "New hover style": "Новый стиль наведения",
+ "New layout": "Новый макет",
+ "New look name": "Название нового стиля",
+ "New profile": "Новый профиль",
+ "New rule": "Новое правило",
+ "New shows and anime premiering this month, from Simkl": "Новые сериалы и аниме, премьера в этом месяце, от Simkl",
+ "New template name": "Название нового шаблона",
+ "New thread": "Новая тема",
+ "New Webhook": "Новый вебхук",
+ "New Year, New Stories": "Новый год, новые истории",
+ "Newest": "Сначала новые",
+ "Next": "Далее",
+ "Next {time}": "Следующий {time}",
+ "Next episode": "Следующий эпизод",
+ "Next Episode": "Следующий эпизод",
+ "Next episode prompt": "Подсказка следующего эпизода",
+ "Next featured": "Следующее избранное",
+ "Next frame": "Следующий кадр",
+ "Next image": "Следующее изображение",
+ "Next month": "Следующий месяц",
+ "Next review": "Следующий отзыв",
+ "next to it:": "рядом с ним:",
+ "next week": "на следующей неделе",
+ "Next-up episodes tab": "Вкладка следующих эпизодов",
+ "Next:": "Далее:",
+ "Night mode": "Ночной режим",
+ "Night mode gently compresses loud moments for late-night watching. Profiles take effect when the next track loads and stack with the normalizer.": "Ночной режим мягко сжимает громкие моменты для просмотра поздно ночью. Профили вступают в силу при загрузке следующей дорожки и суммируются с нормализатором.",
+ "Night Owl": "Полуночник",
+ "Nightmare Maker": "Создатель кошмаров",
+ "No": "Нет",
+ "No .nfo files detected. TMDB matching is recommended.": "Файлы .nfo не найдены. Рекомендуется сопоставление с TMDB.",
+ "No .nfo files here": "Здесь нет файлов .nfo",
+ "No {kind} releases this month. Try a different filter.": "В этом месяце нет релизов «{kind}». Попробуйте другой фильтр.",
+ "No addons are synced to this account yet.": "К этому аккаунту пока не привязаны аддоны.",
+ "No addons installed yet": "Аддоны пока не установлены",
+ "No art": "Нет обложки",
+ "No audio: this stream's audio format (likely Dolby or DTS) is not supported by the HTML5 engine.": "Нет звука: формат аудио этого потока (вероятно, Dolby или DTS) не поддерживается движком HTML5.",
+ "No automations yet. Hit New rule to wire one up.": "Автоматизаций пока нет. Нажмите «Новое правило», чтобы создать.",
+ "No background image": "Нет фонового изображения",
+ "No backups yet. Press the button above to save your first one.": "Резервных копий пока нет. Нажмите кнопку выше, чтобы создать первую.",
+ "No categories match": "Нет подходящих категорий",
+ "no channel": "нет канала",
+ "No channels match": "Нет подходящих каналов",
+ "No channels match. Try a different category or clear the search.": "Нет подходящих каналов. Попробуйте другую категорию или очистите поиск.",
+ "No Chromecast, DLNA, or Roku devices found. Make sure your TV is on, woken up, and on the same Wi-Fi.": "Устройства Chromecast, DLNA или Roku не найдены. Убедитесь, что телевизор включён, разбужен и в той же Wi-Fi сети.",
+ "No Cloudflare accounts found for this token.": "Для этого токена не найдено ни одного аккаунта Cloudflare.",
+ "No comments yet": "Комментариев пока нет",
+ "No corrupted anime found. You're clean.": "Повреждённого аниме не найдено. Всё чисто.",
+ "No credits available": "Титры недоступны",
+ "No data shipped for this award yet.": "Данные по этой награде пока не добавлены.",
+ "No data shipped for this award yet. Re-run": "Данные по этой награде пока не добавлены. Перезапустите",
+ "No date": "Без даты",
+ "No debrid configured": "Debrid не настроен",
+ "No description available.": "Описание недоступно.",
+ "No dot, just the bar.": "Без точки, только полоса.",
+ "No downloads yet": "Загрузок пока нет",
+ "No EPG channels match. This playlist's EPG source may be empty.": "Нет подходящих каналов EPG. Возможно, источник EPG этого плейлиста пуст.",
+ "No episodes available for this season.": "Для этого сезона нет доступных эпизодов.",
+ "No episodes found for this season.": "Для этого сезона эпизоды не найдены.",
+ "No episodes match your search": "Нет эпизодов, соответствующих поиску",
+ "No events available yet.": "Событий пока нет.",
+ "No favorites yet. Star a channel to pin it here.": "Избранного пока нет. Отметьте канал звездой, чтобы закрепить его здесь.",
+ "No filmography on record.": "Фильмография не указана.",
+ "No films found in this collection.": "В этой коллекции фильмы не найдены.",
+ "No filter. All bitrates considered equally.": "Без фильтра. Все битрейты учитываются одинаково.",
+ "No filter. Home shows every language.": "Без фильтра. На главной показаны все языки.",
+ "No filtering": "Без фильтрации",
+ "No filtering. Every stream every addon returns shows up, including obvious junk. You'll be on your own.": "Без фильтрации. Показываются все потоки от всех аддонов, включая явный мусор. Разбираться придётся самостоятельно.",
+ "No frames stored yet. They'll appear here as you watch things.": "Кадров пока не сохранено. Они будут появляться здесь по мере просмотра.",
+ "No Frills": "Без изысков",
+ "No history yet": "Истории пока нет",
+ "No history yet.": "Истории пока нет.",
+ "No installed addon matches that.": "Ни один установленный аддон не подходит.",
+ "No Integrations option? You need the Manage Webhooks permission. Ask whoever owns the server.": "Нет пункта «Интеграции»? Нужно разрешение «Управление вебхуками». Обратитесь к владельцу сервера.",
+ "No limit": "Без ограничений",
+ "No lists saved yet.": "Списков пока не сохранено.",
+ "No lists yet": "Списков пока нет",
+ "No live or upcoming games right now.": "Сейчас нет ни идущих, ни предстоящих матчей.",
+ "No local episodes in this season.": "В этом сезоне нет локальных эпизодов.",
+ "No locks. All sidebar tabs open without a PIN.": "Без блокировок. Все вкладки боковой панели открываются без PIN-кода.",
+ "No matches": "Совпадений нет",
+ "No matches for \\": "Нет совпадений для \\",
+ "No matches for these filters.": "Нет совпадений для этих фильтров.",
+ "No matches.": "Нет совпадений.",
+ "No matches. Try a different search.": "Нет совпадений. Попробуйте другой запрос.",
+ "No more found for this category.": "Больше ничего не найдено в этой категории.",
+ "No movies here.": "Здесь нет фильмов.",
+ "No movies match \"{query}\".": "Нет фильмов, соответствующих \"{query}\".",
+ "No notes were published for this build.": "Для этой сборки не опубликованы заметки.",
+ "No picks loaded. TMDB might be unreachable.": "Подборка не загружена. Возможно, TMDB недоступен.",
+ "No PIN set.": "PIN-код не задан.",
+ "No playable streams turned up, and no debrid is configured. Real-Debrid, TorBox, AllDebrid, Premiumize, or Debrid-Link will unlock raw torrent results. Some addons bake debrid in (Sootio, Comet/ElfHosted, MediaFusion/ElfHosted) and play without your own keys.": "Воспроизводимых потоков не найдено, а debrid не настроен. Real-Debrid, TorBox, AllDebrid, Premiumize или Debrid-Link откроют доступ к необработанным торрент-результатам. Некоторые аддоны уже включают debrid (Sootio, Comet/ElfHosted, MediaFusion/ElfHosted) и работают без собственных ключей.",
+ "No playlist": "Нет плейлиста",
+ "No program info": "Нет информации о программе",
+ "No program info available": "Информация о программе недоступна",
+ "No reviews from your friends for this film.": "У друзей нет отзывов об этом фильме.",
+ "No reviews yet.": "Отзывов пока нет.",
+ "No saved filters yet. Hit New filter to build one.": "Сохранённых фильтров пока нет. Нажмите «Новый фильтр», чтобы создать.",
+ "No services reported.": "Сервисы не сообщили данных.",
+ "No shows here.": "Здесь нет сериалов.",
+ "No shows match \"{query}\".": "Нет сериалов, соответствующих \"{query}\".",
+ "No Simkl history yet.": "Истории Simkl пока нет.",
+ "No Simkl premieres this month": "В этом месяце нет премьер Simkl",
+ "No source returned a stream": "Ни один источник не вернул поток",
+ "No sources": "Нет источников",
+ "No sources cached": "Нет источников в кэше",
+ "No sources found for this episode.": "Источники для этого эпизода не найдены.",
+ "No sources loaded for this title yet.": "Источники для этого тайтла ещё не загружены.",
+ "No streaming sources yet": "Потоковых источников пока нет",
+ "No styling": "Без оформления",
+ "No subscription needed. Quality varies.": "Подписка не нужна. Качество разное.",
+ "No subtitle cues available": "Реплики субтитров недоступны",
+ "No subtitles found yet. Try the search at the bottom.": "Субтитры пока не найдены. Попробуйте поиск внизу.",
+ "No subtitles found.": "Субтитры не найдены.",
+ "no tab locks": "нет блокировок вкладок",
+ "No tabs selected": "Вкладки не выбраны",
+ "No telemetry, no servers, no bundled keys.": "Без телеметрии, без серверов, без встроенных ключей.",
+ "No threads for this title yet.": "Тем для этого тайтла пока нет.",
+ "No titles found for {genre}": "Тайтлы для жанра {genre} не найдены",
+ "No tracks match these filters. Try toggling HI/SDH or Forced.": "Нет дорожек, соответствующих этим фильтрам. Попробуйте переключить HI/SDH или Forced.",
+ "No unsaved changes": "Нет несохранённых изменений",
+ "No velocity data yet": "Данных о скорости пока нет",
+ "No video files found in that folder.": "В этой папке не найдено видеофайлов.",
+ "No videos right now. Ask a grown-up!": "Сейчас нет видео. Спросите взрослых!",
+ "No Way Out": "Без выхода",
+ "No winners are catalogued for this award yet.": "Победители для этой награды пока не занесены в каталог.",
+ "No winners match these filters.": "Нет победителей, соответствующих этим фильтрам.",
+ "nodes": "узлы",
+ "Noir cards": "Карточки в стиле нуар",
+ "nomination": "номинация",
+ "nominations": "номинации",
+ "Nominee": "Номинант",
+ "None": "Нет",
+ "None of Trakt's most-anticipated upcoming releases land in this month. Try a different month.": "Ни один из самых ожидаемых релизов Trakt не выходит в этом месяце. Попробуйте другой месяц.",
+ "None yet": "Пока нет",
+ "Nord sidebar": "Боковая панель Nord",
+ "Normal": "Обычный",
+ "Normalize loudness": "Нормализация громкости",
+ "Norwegian": "Норвежский",
+ "not downloaded": "не загружено",
+ "Not interested": "Не интересует",
+ "Not officially released yet. Click to search anyway in case of an early release.": "Официально ещё не вышло. Нажмите, чтобы всё же поискать — вдруг вышло досрочно.",
+ "Not out yet": "Ещё не вышло",
+ "Not rated": "Без рейтинга",
+ "Not running": "Не запущено",
+ "Not signed in": "Вход не выполнен",
+ "Note the URL Cloudflare returns. It looks like": "Запишите URL, который вернёт Cloudflare. Он выглядит так",
+ "Note the URL Cloudflare returns. It looks like {code}.": "Запишите URL, который вернёт Cloudflare. Он выглядит так: {code}.",
+ "Nothing anticipated this month": "В этом месяце ожидаемых релизов нет",
+ "Nothing changes until you press Save. Leaving this page discards edits.": "Ничего не изменится, пока вы не нажмёте «Сохранить». При выходе со страницы правки будут отменены.",
+ "Nothing from your library lands this month. Toggle Watchlist off to see all releases.": "В этом месяце ничего из вашей библиотеки не выходит. Отключите «Список просмотра», чтобы увидеть все релизы.",
+ "Nothing from your library this month": "В этом месяце ничего из вашей библиотеки",
+ "Nothing here yet": "Здесь пока пусто",
+ "Nothing here yet!": "Здесь пока пусто!",
+ "Nothing in progress yet. Press Play on something.": "Пока ничего не начато. Нажмите «Воспроизвести» на чём-нибудь.",
+ "Nothing matched this filter. Try another category or change your region in Settings.": "Ничего не подошло под этот фильтр. Попробуйте другую категорию или смените регион в настройках.",
+ "Nothing matched. Try the franchise's first film name.": "Совпадений нет. Попробуйте название первого фильма франшизы.",
+ "Nothing on Simkl this month": "В этом месяце ничего на Simkl",
+ "Nothing on Trakt this month": "В этом месяце ничего на Trakt",
+ "Nothing on your Simkl plan-to-watch yet.": "В вашем списке «Запланировано» на Simkl пока пусто.",
+ "Nothing saved on Trakt yet.": "На Trakt пока ничего не сохранено.",
+ "Nothing this month": "В этом месяце ничего нет",
+ "Nothing to send. All {n} watchlist items are anime, which Trakt can't track.": "Отправлять нечего. Все {n} элементов списка просмотра — аниме, которое Trakt не отслеживает.",
+ "Nothing watched yet": "Пока ничего не просмотрено",
+ "Notifications": "Уведомления",
+ "Now": "Сейчас",
+ "Now playing": "Сейчас играет",
+ "Now Playing": "Сейчас играет",
+ "Now playing: {label}": "Сейчас играет: {label}",
+ "Now using": "Сейчас используется",
+ "Now watching": "Сейчас смотрите",
+ "Now-playing and a seven-day guide when your provider supplies it.": "Текущий эфир и семидневная программа, если провайдер их предоставляет.",
+ "NSFW. Hidden until enabled.": "18+. Скрыто, пока не включено.",
+ "Nudge the image to taste. Start with a one-tap look below, then fine-tune with the dials. Everything resets cleanly, so you can't break anything.": "Настройте изображение по вкусу. Начните с готового стиля ниже, затем доработайте регуляторами. Всё сбрасывается без следа, так что сломать ничего нельзя.",
+ "Number 1 gets asked first for streams when you press Play.": "Первым при нажатии «Воспроизвести» будет опрошен №1.",
+ "Nvidia only": "Только Nvidia",
+ "Off": "Выкл",
+ "Off · catalogs and streams hidden": "Выкл · каталоги и потоки скрыты",
+ "Off (use CPU)": "Выкл (использовать CPU)",
+ "Offensive Rebounds": "Подборы в атаке",
+ "Official": "Официальный",
+ "Offsides": "Офсайды",
+ "OK": "ОК",
+ "Old-school Heat": "Олдскульный жар",
+ "Older laptops · low-end · battery · anything that stutters": "Старые ноутбуки · слабые ПК · экономия батареи · всё, что тормозит",
+ "Oldest": "Сначала старые",
+ "OMDb · Rotten Tomatoes scores": "OMDb · оценки Rotten Tomatoes",
+ "OMDB daily budget": "Дневной лимит OMDB",
+ "On": "Вкл",
+ "On an HDR display, stretches normal (non-HDR) movies to use the extra brightness range. Leave off on a regular screen; it can look washed out.": "На HDR-дисплее растягивает обычные (не HDR) фильмы для использования расширенного диапазона яркости. На обычном экране оставьте выключенным — изображение может выглядеть блёклым.",
+ "On by default. Pipes every cast through ffmpeg as H.264 + AAC + MPEG-TS so Samsung, LG, Sony, and other DLNA TVs accept the stream regardless of source codec. Turn off only if you have a beefy receiver that handles raw HEVC/DTS and want max quality. Requires ffmpeg in PATH.": "Включено по умолчанию. Пропускает каждую трансляцию через ffmpeg в формате H.264 + AAC + MPEG-TS, чтобы Samsung, LG, Sony и другие DLNA-телевизоры принимали поток независимо от исходного кодека. Отключайте только если у вас мощный ресивер, поддерживающий необработанные HEVC/DTS, и нужно максимальное качество. Требует ffmpeg в PATH.",
+ "On Cloudflare, click {b1}, then find {b2} and click {b3}.": "В Cloudflare нажмите {b1}, затем найдите {b2} и нажмите {b3}.",
+ "on disk": "на диске",
+ "On Edge": "На грани",
+ "ON GOAL": "В СТВОР",
+ "On Hold": "Приостановлено",
+ "On now": "Сейчас в эфире",
+ "On shows titles in your metadata language (English by default). Off keeps each title's original language, so anime and foreign films show their native names.": "«Вкл» показывает названия на языке метаданных (по умолчанию английский). «Выкл» сохраняет оригинальный язык каждого тайтла, поэтому аниме и зарубежные фильмы отображаются под родными названиями.",
+ "On Stremio-Addons": "На Stremio-Addons",
+ "On Target %": "Точность, %",
+ "on the {themeName} theme.": "в теме {themeName}.",
+ "On The Air": "В эфире",
+ "On the card": "На карточке",
+ "on the left, then": "слева, затем",
+ "On the web, Harbor can only reach addons that allow browser access (Torrentio, TorBox, Cinemeta). For unreleased titles, no source typically exists yet.": "В веб-версии Harbor может обращаться только к аддонам, разрешающим доступ из браузера (Torrentio, TorBox, Cinemeta). Для ещё не вышедших тайтлов источников обычно пока нет.",
+ "On this computer": "На этом компьютере",
+ "On this device": "На этом устройстве",
+ "On this device only": "Только на этом устройстве",
+ "On this page": "На этой странице",
+ "On Tonight": "Сегодня вечером",
+ "On: addon rails that duplicate the built-ins show too, instead of folding into one.": "«Вкл»: строки аддонов, дублирующие встроенные, показываются отдельно, а не объединяются в одну.",
+ "On: only titles you bookmarked. Off: also keeps the ones Stremio added when you hit play.": "«Вкл»: только тайтлы, добавленные в закладки. «Выкл»: также сохраняются те, что Stremio добавил при нажатии «Воспроизвести».",
+ "Onboarding": "Введение",
+ "Once you're in a room you can copy a link that joins anyone instantly: it sets the relay URL and the room code in one click.": "Находясь в комнате, вы можете скопировать ссылку, которая мгновенно подключает любого: она задаёт URL ретранслятора и код комнаты в один клик.",
+ "One choice that sets how hard your computer works to make video look its best. Pick the one that matches your machine. Takes effect on the next thing you play.": "Один параметр, определяющий, насколько сильно компьютер старается сделать картинку лучше. Выберите вариант под свою машину. Вступает в силу при следующем воспроизведении.",
+ "One last thing on Cloudflare's side": "Ещё один шаг на стороне Cloudflare",
+ "One list": "Один список",
+ "One more episode": "Ещё один эпизод",
+ "Only 1 source after filtering": "После фильтрации остался только 1 источник",
+ "Only 2 sources after filtering": "После фильтрации осталось только 2 источника",
+ "Only enter URLs for relays you operate or trust. A relay only carries Watch Together sync messages (play, pause, seek). Nothing else passes through it.": "Указывайте URL только тех ретрансляторов, которыми управляете или которым доверяете. Ретранслятор передаёт только сообщения синхронизации «Совместный просмотр» (воспроизведение, пауза, перемотка). Больше ничего через него не проходит.",
+ "Only my favorited channels": "Только избранные каналы",
+ "Only show streams in my languages": "Показывать только потоки на моих языках",
+ "Only show titles in these original languages on the Home catalogs. Leave all off to show everything.": "Показывать на главной только тайтлы с этими оригинальными языками. Оставьте всё выключенным, чтобы показывать всё.",
+ "Only the primary profile can edit other profiles.": "Редактировать другие профили может только основной профиль.",
+ "Opacity": "Непрозрачность",
+ "Open": "Открыть",
+ "Open {name}": "Открыть {name}",
+ "Open a quick issue": "Создать быстрый issue",
+ "Open AniList again": "Снова открыть AniList",
+ "Open any movie or show, hover an episode, and click the download icon. Pick the exact source you want and it saves here for offline watching.": "Откройте любой фильм или сериал, наведите на эпизод и нажмите значок загрузки. Выберите нужный источник — и он сохранится здесь для просмотра без сети.",
+ "Open BotFather": "Открыть BotFather",
+ "Open Cloudflare token page": "Открыть страницу токенов Cloudflare",
+ "Open Cloudflare Workers": "Открыть Cloudflare Workers",
+ "Open details": "Открыть подробности",
+ "Open Discord's webhook help": "Открыть справку Discord по вебхукам",
+ "Open folder": "Открыть папку",
+ "Open in Anime": "Открыть в разделе «Аниме»",
+ "Open in Movies": "Открыть в разделе «Фильмы»",
+ "Open in TV Shows": "Открыть в разделе «Сериалы»",
+ "Open invite link panel": "Открыть панель ссылки-приглашения",
+ "Open library": "Открыть библиотеку",
+ "Open Library settings": "Открыть настройки библиотеки",
+ "Open MyAnimeList again": "Снова открыть MyAnimeList",
+ "Open on AniList": "Открыть на AniList",
+ "Open on IMDb": "Открыть на IMDb",
+ "Open on Letterboxd": "Открыть на Letterboxd",
+ "Open on Trakt": "Открыть на Trakt",
+ "Open or close the episode panel.": "Открыть или закрыть панель эпизодов.",
+ "Open or close the in-player stream switcher.": "Открыть или закрыть переключатель потоков в плеере.",
+ "Open or close the live TV guide (live channels only).": "Открыть или закрыть программу передач (только для эфирных каналов).",
+ "Open or close the live TV recorder (live channels only).": "Открыть или закрыть запись эфира (только для эфирных каналов).",
+ "Open preview": "Открыть предпросмотр",
+ "Open profile": "Открыть профиль",
+ "Open Range": "Открытые просторы",
+ "Open relay settings": "Открыть настройки ретранслятора",
+ "Open repo on GitHub": "Открыть репозиторий на GitHub",
+ "Open review source": "Открыть источник отзыва",
+ "Open settings": "Открыть настройки",
+ "Open Settings": "Открыть настройки",
+ "Open Settings, then Harbor Relay.": "Откройте «Настройки», затем «Harbor Relay».",
+ "Open setup page": "Открыть страницу настройки",
+ "Open Stremio registration": "Открыть регистрацию Stremio",
+ "Open studio": "Открыть студию",
+ "Open SVP": "Открыть SVP",
+ "Open the bot BotFather just made (he sends you a link). Send it any message so it's allowed to message you back.": "Откройте бота, которого только что создал BotFather (он пришлёт вам ссылку). Отправьте ему любое сообщение, чтобы он мог отвечать вам.",
+ "Open the Day": "Открытие дня",
+ "Open the Discord server where you want notifications to land.": "Откройте сервер Discord, куда должны приходить уведомления.",
+ "Open Top 100 {dept}": "Открыть топ-100 {dept}",
+ "Open userinfobot": "Открыть userinfobot",
+ "Opening": "Открытие",
+ "Opening AniList...": "Открывается AniList…",
+ "Opening MyAnimeList...": "Открывается MyAnimeList…",
+ "Opening stremio-addons.net in your browser to sign in and rate": "Открывается stremio-addons.net в браузере для входа и оценки",
+ "OpenRouter API key (sk-or-...)": "API-ключ OpenRouter (sk-or-...)",
+ "Opens Stremio in your browser. Works with email, Facebook, and Apple accounts.": "Открывает Stremio в браузере. Работает с аккаунтами email, Facebook и Apple.",
+ "Optional": "Необязательно",
+ "Optional keys that unlock TMDB rails, baked-in poster ratings, fanart, and TVDB episode data.": "Необязательные ключи, открывающие подборки TMDB, встроенные рейтинги на постерах, фан-арт и данные об эпизодах TVDB.",
+ "Options": "Параметры",
+ "Options for the Library → Local tab: folders you scan from your own drive. When you export metadata, Harbor writes a Kodi-style .nfo and downloads artwork next to each file at the sizes below.": "Параметры для вкладки «Библиотека → Локальные»: папки, которые вы сканируете со своего диска. При экспорте метаданных Harbor создаёт .nfo в стиле Kodi и загружает обложки рядом с каждым файлом в указанных ниже размерах.",
+ "or join": "или присоединиться",
+ "or paste an invite link": "или вставьте ссылку-приглашение",
+ "Or paste the install link manually": "Или вставьте ссылку установки вручную",
+ "or use email": "или используйте email",
+ "or use one of our avatars": "или используйте один из наших аватаров",
+ "Order": "Порядок",
+ "Organize addons": "Упорядочить аддоны",
+ "orig": "ориг",
+ "Origin country": "Страна происхождения",
+ "Original": "Оригинал",
+ "Original language": "Язык оригинала",
+ "Original title": "Оригинальное название",
+ "Orthodox": "Православный",
+ "OTA channels + IPTV": "Эфирные каналы + IPTV",
+ "Other": "Другое",
+ "Other sources": "Другие источники",
+ "Other Work": "Другие работы",
+ "out of 5": "из 5",
+ "Outlaws & Bounty Hunters": "Изгои и охотники за головами",
+ "Outline": "Обводка",
+ "Outline color": "Цвет обводки",
+ "Outline thickness": "Толщина обводки",
+ "Output device": "Устройство вывода",
+ "OVA": "OVA",
+ "Overall Record": "Общий счёт",
+ "Overlay": "Наложение",
+ "Overlays your Letterboxd rating on catalog posters (when available).": "Накладывает ваш рейтинг Letterboxd на постеры в каталоге (если доступен).",
+ "Override": "Переопределить",
+ "Override {name}": "Переопределить {name}",
+ "Override embedded styles": "Переопределить встроенные стили",
+ "Overview": "Обзор",
+ "Overwrite {name} with this look": "Заменить {name} этим стилем",
+ "P2P": "P2P",
+ "P2P sources, debrid-ready": "P2P-источники, готовы к debrid",
+ "Packaged": "В комплекте",
+ "Paid": "Платно",
+ "Paid plan at ": "Платный тариф на ",
+ "Painted Skies": "Расписные небеса",
+ "Palme d'Or": "Золотая пальмовая ветвь",
+ "Panel": "Панель",
+ "Panels": "Панели",
+ "PANELS": "ПАНЕЛИ",
+ "Paranoia": "Паранойя",
+ "Paranormal Cases": "Паранормальные дела",
+ "Parent PIN": "Родительский PIN-код",
+ "Parental controls are on. Enter your PIN to access settings.": "Родительский контроль включён. Введите PIN-код для доступа к настройкам.",
+ "Parody Master": "Мастер пародии",
+ "Pass": "Пропустить",
+ "Pass Completion %": "Точность передач, %",
+ "Passes": "Передачи",
+ "Password": "Пароль",
+ "Past Midnight": "После полуночи",
+ "Paste a public list from Trakt, MDBList, TMDB, Letterboxd, IMDb, or MyAnimeList. Harbor pulls the titles in and keeps the artwork sharp.": "Вставьте ссылку на публичный список из Trakt, MDBList, TMDB, Letterboxd, IMDb или MyAnimeList. Harbor подтянет тайтлы и сохранит чёткую графику.",
+ "Paste a Trakt, MDBList, TMDB, Letterboxd, IMDb, or MAL list URL": "Вставьте URL списка Trakt, MDBList, TMDB, Letterboxd, IMDb или MAL",
+ "Paste invite link": "Вставить ссылку-приглашение",
+ "Paste it into Harbor.": "Вставьте это в Harbor.",
+ "Paste JSON": "Вставить JSON",
+ "Paste manifest URL or stremio:// link": "Вставьте URL манифеста или ссылку stremio://",
+ "Paste the code or page URL": "Вставьте код или URL страницы",
+ "Paste the manifest URL the configure page gave you": "Вставьте URL манифеста, который дала страница настройки",
+ "Paste the text from AniList": "Вставьте текст с AniList",
+ "Paste the URL into the box above and send a test.": "Вставьте URL в поле выше и отправьте тест.",
+ "Paste the URL with": "Вставьте URL с",
+ "Paste your API token first.": "Сначала вставьте свой API-токен.",
+ "Pause": "Пауза",
+ "Pause · Space": "Пауза · Space",
+ "Pause when minimized": "Пауза при сворачивании",
+ "Pause when unfocused": "Пауза при потере фокуса",
+ "Paused": "На паузе",
+ "Paused on Simkl": "Приостановлено на Simkl",
+ "PDF (print)": "PDF (для печати)",
+ "peer": "пир",
+ "peers": "пиры",
+ "Peers, speed and progress chip on the player during torrent playback. Turn off to keep the player clean.": "Индикатор пиров, скорости и прогресса в плеере при воспроизведении торрента. Отключите, чтобы плеер оставался чистым.",
+ "Peers, speed and progress while a torrent streams. Sits clear of the exit button, top left.": "Пиры, скорость и прогресс во время торрент-потока. Расположен в стороне от кнопки выхода, вверху слева.",
+ "Penalty Goals": "Голы с пенальти",
+ "Penalty Kicks Taken": "Пробито пенальти",
+ "Pens currently in demand": "Сейчас в спросе",
+ "People": "Люди",
+ "People (empty = all tracked)": "Люди (пусто = все отслеживаемые)",
+ "Percent Led": "Процент лидерства",
+ "Period Greats": "Легенды эпохи",
+ "permissions at": "разрешения на",
+ "personal key": "личный ключ",
+ "Pick a 4-digit PIN. You'll be asked for it before this profile opens.": "Придумайте 4-значный PIN-код. Его будут спрашивать перед открытием этого профиля.",
+ "Pick a display and body pairing, or upload your own font to use across Harbor.": "Выберите пару шрифтов для заголовков и текста или загрузите свой шрифт для использования во всём Harbor.",
+ "Pick a home layout": "Выберите макет главной",
+ "Pick a layout, set colors and fonts, save it to your library. No code needed.": "Выберите макет, настройте цвета и шрифты, сохраните в библиотеку. Код не нужен.",
+ "Pick a layout, set colors and fonts. No code needed.": "Выберите макет, настройте цвета и шрифты. Код не нужен.",
+ "Pick a line when you hear it (1/2)": "Отметьте реплику, когда услышите её (1/2)",
+ "Pick a list to view it.": "Выберите список, чтобы просмотреть его.",
+ "Pick a look. Every color and surface updates instantly.": "Выберите стиль. Все цвета и поверхности обновятся мгновенно.",
+ "Pick a PIN and which sidebar tabs require it.": "Задайте PIN-код и выберите, каким вкладкам боковой панели он нужен.",
+ "Pick a profile to continue.": "Выберите профиль, чтобы продолжить.",
+ "Pick a random title": "Выбрать случайный тайтл",
+ "Pick a source once and Harbor keeps playing the rest of that season from the same release, no re-picking. Works best with a debrid season pack. Skipped for anime.": "Выберите источник один раз — и Harbor продолжит воспроизводить остаток сезона из того же релиза без повторного выбора. Лучше всего работает с сезонным пакетом debrid. Для аниме пропускается.",
+ "Pick a theme, then rearrange every button in the player chrome. Hide what you never use, promote what you do.": "Выберите тему, затем расставьте все кнопки в интерфейсе плеера. Скройте то, чем никогда не пользуетесь, выдвиньте вперёд то, чем пользуетесь.",
+ "Pick a video": "Выберите видео",
+ "Pick a World": "Выберите мир",
+ "Pick an avatar": "Выберите аватар",
+ "Pick another": "Выбрать другой",
+ "Pick another line near the end (2/2)": "Отметьте ещё одну реплику ближе к концу (2/2)",
+ "Pick any name. Pick a username ending in": "Придумайте любое имя. Придумайте имя пользователя, оканчивающееся на",
+ "Pick channels into the grid below. Audio follows the highlighted tile.": "Расставьте каналы в сетке ниже. Звук идёт от выделенной плитки.",
+ "Pick how you authenticate. Everything is stored locally.": "Выберите способ входа. Всё хранится локально.",
+ "Pick it from the home view to follow.": "Выберите его на главной, чтобы отслеживать.",
+ "Pick OLED for perfect-black panels to unlock shadow detail in tonemapped HDR.": "Выберите OLED для панелей с идеальным чёрным, чтобы раскрыть детали в тенях при тонмаппинге HDR.",
+ "Pick playlist": "Выбрать плейлист",
+ "Pick the cap your link can sustain. Run a real speed test if you need a number.": "Выберите предел, который выдерживает ваш канал. Проведите реальный тест скорости, если нужна точная цифра.",
+ "Pick the Cloudflare account to deploy under.": "Выберите аккаунт Cloudflare для развёртывания.",
+ "Pick the playback engine and which quality chips show up on cards.": "Выберите движок воспроизведения и какие значки качества показывать на карточках.",
+ "Pick up an episode": "Продолжить эпизод",
+ "Pick up partly-watched episodes and movies at your saved spot. Anything watched past 80% always restarts. Turn this off to always start from the beginning, handy if you rewatch shows.": "Продолжать частично просмотренные эпизоды и фильмы с сохранённого места. Всё, просмотренное более чем на 80%, всегда начинается заново. Отключите, чтобы всегда начинать сначала — удобно при пересмотре.",
+ "Pick up where you left off": "Продолжить с того места, где остановились",
+ "Pick what you actually use": "Выберите то, чем действительно пользуетесь",
+ "Pick what you want in your calendar. Mix and match: tracked people, genres, streamers, countries, Trakt lists.": "Выберите, что должно быть в вашем календаре. Комбинируйте: отслеживаемые персоны, жанры, стриминг-сервисы, страны, списки Trakt.",
+ "Pick which audio and subtitle languages Harbor reaches for first.": "Выберите, какие языки аудио и субтитров Harbor выбирает в первую очередь.",
+ "Pick which calendars feed your alerts. Items are deduped across sources before sending.": "Выберите, какие календари питают ваши оповещения. Перед отправкой элементы из разных источников объединяются без дублей.",
+ "Pick which calendars feed your webhook. Items are deduped across sources before sending.": "Выберите, какие календари питают ваш вебхук. Перед отправкой элементы из разных источников объединяются без дублей.",
+ "Pick which score anime cards show. IMDb falls back to MAL when a title has no IMDb rating yet.": "Выберите, какой рейтинг показывать на карточках аниме. Если у тайтла ещё нет рейтинга IMDb, используется MAL.",
+ "Pick your source": "Выберите источник",
+ "Pick your subtitle languages": "Выберите языки субтитров",
+ "Picker layout": "Макет выбора",
+ "Picking…": "Выбор…",
+ "Picks up right where you left off": "Продолжает точно с того места, где вы остановились",
+ "Picture": "Изображение",
+ "Picture adjustments": "Настройки изображения",
+ "Picture in Picture": "Картинка в картинке",
+ "Picture quality": "Качество изображения",
+ "Picture-in-picture": "Картинка в картинке",
+ "Pilots that pull you in and finales that earn the season.": "Пилоты, которые затягивают, и финалы, которые оправдывают сезон.",
+ "PIN": "PIN-код",
+ "PIN & sidebar locks": "PIN-код и блокировки боковой панели",
+ "Pin category to top": "Закрепить категорию наверху",
+ "PIN off": "PIN-код выключен",
+ "PIN on": "PIN-код включён",
+ "PIN set": "PIN-код задан",
+ "Pin to top": "Закрепить наверху",
+ "Pings your Worker at /health to confirm it's reachable from this device.": "Пингует ваш Worker по адресу /health, чтобы убедиться, что он доступен с этого устройства.",
+ "Pinned": "Закреплено",
+ "PINs didn't match. Start over.": "PIN-коды не совпадают. Начните заново.",
+ "Pinstripe": "В полоску",
+ "PiP": "PiP",
+ "Pitches Thrown": "Броски питчера",
+ "Pixar Greats": "Шедевры Pixar",
+ "Plain text (.txt)": "Обычный текст (.txt)",
+ "Plan to Watch": "Запланировано",
+ "Play": "Воспроизвести",
+ "Play · Space": "Воспроизвести · Space",
+ "Play {name}": "Воспроизвести {name}",
+ "Play / pause": "Воспроизведение / пауза",
+ "Play / Pause": "Воспроизведение / Пауза",
+ "Play a random episode": "Воспроизвести случайный эпизод",
+ "Play button behavior": "Поведение кнопки «Воспроизвести»",
+ "Play Episode": "Воспроизвести эпизод",
+ "Play local": "Воспроизвести локально",
+ "Play mode": "Режим воспроизведения",
+ "Play movie": "Воспроизвести фильм",
+ "Play now": "Воспроизвести сейчас",
+ "Play to where the ad starts and add it, then play to the end and tap Now. You can also type the times. Add more than one if there are several.": "Доиграйте до начала рекламы и добавьте метку, затем доиграйте до конца и нажмите «Сейчас». Время можно также ввести вручную. Добавьте несколько меток, если реклам несколько.",
+ "Play Together": "Совместный просмотр",
+ "Play tonight": "Воспроизвести сегодня вечером",
+ "Play without sync": "Воспроизвести без синхронизации",
+ "Play, then tap the line you hear at two spots (one early, one late) to fix drift.": "Запустите воспроизведение, затем отметьте реплику в двух местах (в начале и в конце), чтобы исправить рассинхронизацию.",
+ "Playback": "Воспроизведение",
+ "PLAYBACK": "ВОСПРОИЗВЕДЕНИЕ",
+ "Playback speed": "Скорость воспроизведения",
+ "Playback speed {label}": "Скорость воспроизведения {label}",
+ "Playback stats · press I to hide": "Статистика воспроизведения · нажмите I, чтобы скрыть",
+ "Player": "Плеер",
+ "Player & quality": "Плеер и качество",
+ "Player engine": "Движок плеера",
+ "Player freezes after the second episode autoplays": "Плеер зависает после автовоспроизведения второго эпизода",
+ "Player layout": "Макет плеера",
+ "Player log": "Лог плеера",
+ "Player not ready": "Плеер не готов",
+ "Player shell": "Оболочка плеера",
+ "Player title": "Заголовок плеера",
+ "Playing": "Воспроизведение",
+ "Playing now": "Играет сейчас",
+ "Playlist": "Плейлист",
+ "Playlist contained no channels": "В плейлисте нет каналов",
+ "Playlist is too large": "Плейлист слишком большой",
+ "Playlist URL": "URL плейлиста",
+ "Playlist URL not found": "URL плейлиста не найден",
+ "Playlists": "Плейлисты",
+ "Plays + ratings sync from Harbor to Trakt.tv.": "Просмотры и оценки синхронизируются из Harbor в Trakt.tv.",
+ "Plays a muted trailer in the backdrop when you open a title. Click the speaker to unmute. Falls back to the image when no trailer is available.": "Проигрывает трейлер без звука на фоне при открытии тайтла. Нажмите на значок динамика, чтобы включить звук. Если трейлер недоступен, показывается изображение.",
+ "Plays HDR content in its own window so Windows treats it as true HDR (the SDR brightness slider stops dimming it). Turn off HDR-to-SDR tonemapping above to use this on an HDR display.": "Воспроизводит HDR-контент в отдельном окне, чтобы Windows распознавала его как настоящий HDR (ползунок яркости SDR перестаёт его затемнять). Чтобы использовать это на HDR-дисплее, отключите тонмаппинг HDR в SDR выше.",
+ "Plays HDR in its own window so Windows shows real HDR and the SDR brightness slider stops dimming it. The most reliable way to get true HDR.": "Воспроизводит HDR в отдельном окне, чтобы Windows показывала настоящий HDR, а ползунок яркости SDR не затемнял его. Самый надёжный способ получить настоящий HDR.",
+ "Please add your TMDB API key in the Library & Metadata settings to view this folder.": "Добавьте свой API-ключ TMDB в настройках «Библиотека и метаданные», чтобы открыть эту папку.",
+ "PM Picks": "Выбор PM",
+ "PNG, GIF, WebP, or SVG. Animated GIFs play.": "PNG, GIF, WebP или SVG. Анимированные GIF воспроизводятся.",
+ "PNG, JPEG, WebP, or SVG (auto-shrunk if huge). Animated GIFs up to 2 MB play live.": "PNG, JPEG, WebP или SVG (автоматически сжимается, если слишком большой). Анимированные GIF до 2 МБ воспроизводятся вживую.",
+ "PNG, JPG, WebP, GIF, MP4, WebM, MOV. Up to 6 files, 100 MB each.": "PNG, JPG, WebP, GIF, MP4, WebM, MOV. До 6 файлов, по 100 МБ каждый.",
+ "Point Harbor at a folder. We scan it for movies and shows, parse titles from filenames, and enrich them with TMDB so they look the same as everything else here. We just remember the path; nothing is copied or moved.": "Укажите Harbor на папку. Мы просканируем её на фильмы и сериалы, распознаем названия по именам файлов и дополним данными TMDB, чтобы они выглядели так же, как всё остальное здесь. Мы просто запоминаем путь — ничего не копируется и не перемещается.",
+ "Point Harbor at a streaming server on another machine, like the Stremio service on a home server. Torrents download and stream from that machine instead of this one.": "Укажите Harbor на потоковый сервер на другом устройстве, например сервис Stremio на домашнем сервере. Торренты будут скачиваться и транслироваться с того устройства, а не с этого.",
+ "Points Conceded Off Turnovers": "Очки, пропущенные после потерь",
+ "Points in Paint": "Очки из-под кольца",
+ "Polish": "Польский",
+ "Pop-up position": "Положение всплывающего окна",
+ "Popcornmeter": "Индекс зрительских оценок",
+ "Popular": "Популярное",
+ "Popular · AIO": "Популярное · AIO",
+ "Popular Anime": "Популярное аниме",
+ "Popular Movies": "Популярные фильмы",
+ "Popular on": "Популярно на",
+ "Popular Series": "Популярные сериалы",
+ "Popular This Week": "Популярное на этой неделе",
+ "Port": "Порт",
+ "Portuguese": "Португальский",
+ "Position": "Положение",
+ "Position and size only": "Только положение и размер",
+ "Possession": "Владение",
+ "Possession %": "Владение, %",
+ "Poster card style": "Стиль карточки постера",
+ "Poster size": "Размер постера",
+ "Poster translation is disabled because a custom poster service is active.": "Перевод постеров отключён, так как активен сторонний сервис постеров.",
+ "Posters": "Постеры",
+ "Posters, logos, and title art load in the first available language from this list, falling back down the order. \\": "Постеры, логотипы и оформление тайтла загружаются на первом доступном языке из этого списка, с переходом дальше по порядку. \\",
+ "Posters, ratings, lists": "Постеры, оценки, списки",
+ "Power tools": "Инструменты для опытных",
+ "Power tools & diagnostics": "Инструменты для опытных и диагностика",
+ "Power-user knob. Inject your own CSS, JS, and HTML into Harbor. Lives in your local settings; nothing leaves your machine.": "Настройка для опытных пользователей. Внедряйте собственные CSS, JS и HTML в Harbor. Хранится в локальных настройках — ничего не покидает ваше устройство.",
+ "Prefer embedded subtitles": "Предпочитать встроенные субтитры",
+ "Prefer my installed metadata addon": "Предпочитать установленный аддон метаданных",
+ "Preferred language for anime titles displayed on poster cards.": "Предпочитаемый язык названий аниме на карточках постеров.",
+ "Preferred languages": "Предпочитаемые языки",
+ "Premiered This Month": "Премьеры этого месяца",
+ "Premiumize API key": "API-ключ Premiumize",
+ "Preparing": "Подготовка",
+ "Preparing download": "Подготовка загрузки",
+ "Preparing stream": "Подготовка потока",
+ "Preparing…": "Подготовка…",
+ "Press a key…": "Нажмите клавишу…",
+ "Press Enter or Space to type": "Нажмите Enter или пробел, чтобы ввести",
+ "Press Play": "Нажмите «Воспроизвести»",
+ "Press play on something. It'll show up here once you start watching.": "Начните что-нибудь смотреть — это появится здесь.",
+ "Press T": "Нажмите T",
+ "Prestige Drama": "Престижная драма",
+ "Prestige drama, weekly chapters, and series worth disappearing into.": "Престижная драма, еженедельные главы и сериалы, в которых стоит раствориться.",
+ "Preview": "Предпросмотр",
+ "PREVIEW": "ПРЕДПРОСМОТР",
+ "Preview state": "Состояние предпросмотра",
+ "Previous": "Назад",
+ "Previous channel": "Предыдущий канал",
+ "Previous episode": "Предыдущий эпизод",
+ "Previous Episode": "Предыдущий эпизод",
+ "Previous featured": "Предыдущее избранное",
+ "Previous frame": "Предыдущий кадр",
+ "Previous image": "Предыдущее изображение",
+ "Previous month": "Предыдущий месяц",
+ "Previous review": "Предыдущий отзыв",
+ "Prime Time": "Прайм-тайм",
+ "Prime Video": "Prime Video",
+ "Privacy": "Конфиденциальность",
+ "Probably not cached. Pick another?": "Скорее всего не в кэше. Выбрать другой?",
+ "Probes the server's settings endpoint from this device.": "Проверяет конечную точку настроек сервера с этого устройства.",
+ "Producer": "Продюсер",
+ "Producers": "Продюсеры",
+ "Producing": "В производстве",
+ "profile": "профиль",
+ "Profile": "Профиль",
+ "Profile details not available.": "Данные профиля недоступны.",
+ "Profile is locked. Enter the 4-digit PIN to continue.": "Профиль заблокирован. Введите 4-значный PIN-код, чтобы продолжить.",
+ "Profile not found.": "Профиль не найден.",
+ "Profile PIN": "PIN-код профиля",
+ "Profile security": "Безопасность профиля",
+ "profile.editThis": "Изменить этот профиль",
+ "profile.fallback": "Профиль",
+ "profile.new": "Новый профиль",
+ "profile.primary": "Основной",
+ "profile.signedIn": "Вход в Stremio выполнен",
+ "profile.signIn": "Войти в Stremio",
+ "profile.signOut": "Выйти из Stremio",
+ "profile.switch": "Сменить профиль",
+ "profile.whoWatching": "Кто смотрит",
+ "Profiles": "Профили",
+ "Project information": "Информация о проекте",
+ "Prompts guests to choose instead of auto-matching": "Предлагает гостям выбрать вместо автоматического сопоставления",
+ "Proper search across providers, foreign-language coverage.": "Полноценный поиск по провайдерам, охват иноязычного контента.",
+ "Provide a JSON link or paste it directly.": "Укажите ссылку на JSON или вставьте его напрямую.",
+ "Provider blocked the request": "Провайдер заблокировал запрос",
+ "Provider did not return valid data": "Провайдер не вернул корректные данные",
+ "Provider is rate limiting": "Провайдер ограничивает частоту запросов",
+ "Provider refused service": "Провайдер отказал в обслуживании",
+ "Provider returned a webpage, not a playlist": "Провайдер вернул веб-страницу, а не плейлист",
+ "Provocations": "Провокации",
+ "Psychological": "Психологическое",
+ "Public": "Публичный",
+ "Public mode uses just your username: watchlist, liked films, popular and Top 250. No password needed.": "Публичный режим использует только имя пользователя: список «Хочу посмотреть», понравившиеся фильмы, популярное и топ-250. Пароль не нужен.",
+ "Pull-you-under stories for the quietest part of the day.": "Истории, затягивающие с головой, для самой тихой части дня.",
+ "Pulled from manifest": "Получено из манифеста",
+ "Punchier color": "Более яркий цвет",
+ "Pure Action": "Чистый экшн",
+ "Push upcoming releases to Discord or Telegram. Pick which calendars feed the notifications.": "Отправляйте уведомления о предстоящих релизах в Discord или Telegram. Выберите, какие календари будут источником уведомлений.",
+ "Pushing {pushed} of {total}…": "Отправка {pushed} из {total}…",
+ "Quality-of-life upgrades. Sync, ratings, trailers.": "Улучшения удобства. Синхронизация, оценки, трейлеры.",
+ "Queens & Icons": "Королевы и иконы",
+ "Queue": "Очередь",
+ "Quick age check": "Быстрая проверка возраста",
+ "Quick Watches Under 90": "Быстрый просмотр до 90 минут",
+ "Quiet": "Тихо",
+ "Quiet dramas, sharp thrillers, and series you save for yourself.": "Тихие драмы, острые триллеры и сериалы, которые вы бережёте для себя.",
+ "Quiet Force": "Тихая сила",
+ "Quiet Hours": "Тихие часы",
+ "Quiet Menace": "Тихая угроза",
+ "Rainbow": "Радуга",
+ "Raise subtitles": "Поднять субтитры",
+ "Raise volume (hold Shift for big steps).": "Увеличить громкость (удерживайте Shift для больших шагов).",
+ "Ramadan series, drama, films, Egyptian classics, and Gulf - all in one place.": "Сериалы Рамадана, драмы, фильмы, египетская классика и контент стран Залива — всё в одном месте.",
+ "Random avatar": "Случайный аватар",
+ "Rate": "Оценить",
+ "Rate on SIMKL": "Оценить на SIMKL",
+ "Rate on stremio-addons.net": "Оценить на stremio-addons.net",
+ "Rate this build": "Оценить эту сборку",
+ "Rate this film": "Оценить этот фильм",
+ "Rating": "Оценка",
+ "Rating /10": "Оценка /10",
+ "Raw Nerve": "Оголённый нерв",
+ "Re-authenticate": "Повторная аутентификация",
+ "Re-configure this addon and apply the updated link": "Перенастройте этот аддон и примените обновлённую ссылку",
+ "Re-run deploy or paste the correct URL": "Повторите развёртывание или вставьте правильный URL",
+ "Re-runs the welcome flow and clears every dismissed tip.": "Повторно запускает приветственный процесс и очищает все скрытые подсказки.",
+ "Reach": "Охват",
+ "Read": "Прочитано",
+ "Read full": "Читать полностью",
+ "Read titles, ids, and any poster/logo/backdrop already saved next to your files. Missing images are filled from TMDB.": "Считывает названия, идентификаторы и любые постеры/логотипы/фоны, уже сохранённые рядом с вашими файлами. Недостающие изображения заполняются из TMDB.",
+ "Reader review": "Отзыв читателя",
+ "Reading": "Чтение",
+ "Reading manifest": "Чтение манифеста",
+ "Reading new manifest": "Чтение нового манифеста",
+ "Ready": "Готово",
+ "Ready to save": "Готово к сохранению",
+ "Ready to send": "Готово к отправке",
+ "Ready when you are": "Готово, когда будете готовы вы",
+ "Real cases, real consequences": "Реальные дела, реальные последствия",
+ "Real journeys beyond Earth": "Настоящие путешествия за пределы Земли",
+ "Real-Debrid API token": "API-токен Real-Debrid",
+ "Real-Debrid, TorBox, AllDebrid, Premiumize, Debrid-Link. Cached streams play direct. Keys stay local.": "Real-Debrid, TorBox, AllDebrid, Premiumize, Debrid-Link. Кэшированные потоки воспроизводятся напрямую. Ключи остаются локально.",
+ "Real-time anime upscaling. GPU-intensive.": "Апскейлинг аниме в реальном времени. Требователен к GPU.",
+ "Real-time GPU upscaling that sharpens lines and cleans up gradients on anime, built right into Harbor's player. The one-tap setup below grabs the shaders; nothing else to install.": "Апскейлинг на GPU в реальном времени, который делает линии чётче и убирает шумы градиентов в аниме, встроен прямо в плеер Harbor. Настройка в один клик ниже загрузит шейдеры — больше ничего устанавливать не нужно.",
+ "Rebounds": "Подборы",
+ "Rec": "Зап.",
+ "REC": "ЗАПИСЬ",
+ "Receive early builds with the newest fixes before they reach the stable release. Betas can be rough around the edges; switch this off to return to stable at the next update.": "Получайте ранние сборки с новейшими исправлениями до выхода стабильного релиза. Бета-версии могут быть немного сырыми — отключите это, чтобы вернуться на стабильную версию при следующем обновлении.",
+ "Recent": "Недавнее",
+ "Recent searches": "Недавние запросы",
+ "Recolor everything, swap fonts, resize posters, set a wallpaper.": "Перекрасьте всё, смените шрифты, измените размер постеров, задайте фон.",
+ "Recommended": "Рекомендуется",
+ "Recommended for you": "Рекомендовано для вас",
+ "Recommended for You": "Рекомендовано для вас",
+ "Reconfigure": "Перенастроить",
+ "Record": "Запись",
+ "Record from live TV": "Запись с эфирного ТВ",
+ "Record from TV (DVR)": "Запись с ТВ (DVR)",
+ "Record GIF": "Записать GIF",
+ "recorded winners": "зафиксированные победители",
+ "Recording": "Запись",
+ "Recording · {pct}% · {remaining} · click to manage": "Запись · {pct}% · {remaining} · нажмите для управления",
+ "Recording finished": "Запись завершена",
+ "Recording now": "Идёт запись",
+ "Recordings": "Записи",
+ "Red Cards": "Красные карточки",
+ "Redeploy": "Развернуть заново",
+ "Redeploy instructions": "Инструкции по повторному развёртыванию",
+ "Redeploy it to get the latest Watch Together fixes. Harbor's public relay updates on its own.": "Разверните заново, чтобы получить последние исправления «Смотреть вместе». Публичный релей Harbor обновляется автоматически.",
+ "Redeploy relay": "Развернуть релей заново",
+ "Redeploy to pick up the latest Watch Together fixes. The in-app banner clears once the new version is live.": "Разверните заново, чтобы получить последние исправления «Смотреть вместе». Баннер в приложении исчезнет, как только новая версия заработает.",
+ "Reference (bt.2390)": "Эталон (bt.2390)",
+ "Refine search": "Уточнить поиск",
+ "Refresh": "Обновить",
+ "Refresh list": "Обновить список",
+ "Refresh playlist": "Обновить плейлист",
+ "Refresh sources": "Обновить источники",
+ "Refreshing…": "Обновление…",
+ "Region": "Регион",
+ "Region & language": "Регион и язык",
+ "Relay": "Релей",
+ "Relay deployment requires the Cloudflare API, which is unavailable to browser clients. Use the desktop build to deploy a Worker, then enter the resulting URL below.": "Развёртывание релея требует Cloudflare API, который недоступен для браузерных клиентов. Используйте настольную версию, чтобы развернуть Worker, затем введите полученный URL ниже.",
+ "Relay docs": "Документация по релею",
+ "Relay is current (v{version}).": "Релей актуален (v{version}).",
+ "Relay is live": "Релей работает",
+ "Relay is up to date": "Релей обновлён",
+ "Relay needs update": "Релею требуется обновление",
+ "Relay not reachable": "Релей недоступен",
+ "Relay outdated. Your self-hosted relay is running an older version.": "Релей устарел. На вашем самостоятельно размещённом релее работает более старая версия.",
+ "Relay panel": "Панель релея",
+ "Relay status": "Статус релея",
+ "Relay test failed": "Проверка релея не пройдена",
+ "Relay test passed": "Проверка релея пройдена",
+ "Relay URL": "URL релея",
+ "Relay verified end-to-end": "Релей проверен полностью",
+ "Relay version {version}. Update available.": "Версия релея {version}. Доступно обновление.",
+ "Releases": "Релизы",
+ "Reload list": "Перезагрузить список",
+ "Remaining only": "Только оставшееся",
+ "Remember last stream": "Запоминать последний поток",
+ "Remember me": "Запомнить меня",
+ "Remember my choice": "Запомнить мой выбор",
+ "Remote server": "Удалённый сервер",
+ "Remote streaming server": "Удалённый потоковый сервер",
+ "Remove": "Удалить",
+ "Remove {n}": "Удалить {n}",
+ "Remove {n} items from your library? Files on your disk are not deleted.": "Удалить {n} элементов из библиотеки? Файлы на диске удалены не будут.",
+ "Remove {name}": "Удалить {name}",
+ "Remove from AniList": "Удалить из AniList",
+ "Remove from Continue Watching": "Убрать из «Продолжить просмотр»",
+ "Remove from favorites": "Удалить из избранного",
+ "Remove from library": "Удалить из библиотеки",
+ "Remove from list": "Удалить из списка",
+ "Remove from saved": "Удалить из сохранённого",
+ "Remove from watchlist": "Удалить из списка «Хочу посмотреть»",
+ "Remove list": "Удалить список",
+ "Remove list \"{name}\"?": "Удалить список «{name}»?",
+ "Remove rating": "Удалить оценку",
+ "Removed": "Удалено",
+ "Removed {n}. Rewatch and they re-add correctly.": "Удалено {n}. Пересмотрите — они добавятся заново корректно.",
+ "Removes the Anime tab and any Trending/Popular/Upcoming/New anime rows from Home.": "Убирает вкладку «Аниме» и все ряды «В тренде / Популярное / Скоро / Новое» с главной.",
+ "Removes the Live TV tab from the sidebar.": "Убирает вкладку «Эфирное ТВ» из боковой панели.",
+ "Removing": "Удаление",
+ "Removing…": "Удаление…",
+ "Rename": "Переименовать",
+ "Rename current": "Переименовать текущий",
+ "Rename row": "Переименовать ряд",
+ "Renamed": "Переименовано",
+ "Render subtitles in a heavier weight. Turn off to use your font's normal weight.": "Отображать субтитры более жирным начертанием. Отключите, чтобы использовать обычное начертание шрифта.",
+ "Renders mpv inline so playback lives in Harbor itself. Disable to open it in a separate window instead.": "Встраивает mpv, чтобы воспроизведение происходило прямо в Harbor. Отключите, чтобы открывать его в отдельном окне.",
+ "Reorder": "Изменить порядок",
+ "Repair library": "Восстановить библиотеку",
+ "Repair now": "Восстановить сейчас",
+ "Replay": "Повтор",
+ "Replay the walkthrough or unhide every dismissed tip in the app.": "Повторите обучение или снова покажите все скрытые подсказки в приложении.",
+ "Replay walkthrough": "Повторить обучение",
+ "Report a bug": "Сообщить об ошибке",
+ "Report an injected ad": "Сообщить о встроенной рекламе",
+ "Reportedly real": "По сообщениям, реально",
+ "Requesting code from Simkl…": "Запрос кода у Simkl…",
+ "Requesting code from Trakt…": "Запрос кода у Trakt…",
+ "Requirements": "Требования",
+ "Rerun": "Запустить снова",
+ "Rescan": "Пересканировать",
+ "Reset": "Сбросить",
+ "Reset all ({count})": "Сбросить все ({count})",
+ "Reset all ({n})": "Сбросить все ({n})",
+ "Reset all to default": "Сбросить всё до значений по умолчанию",
+ "Reset counter": "Сбросить счётчик",
+ "Reset filters": "Сбросить фильтры",
+ "Reset layout": "Сбросить макет",
+ "Reset offset": "Сбросить смещение",
+ "Reset offset to 0": "Сбросить смещение до 0",
+ "Reset picture": "Сбросить изображение",
+ "Reset sync": "Сбросить синхронизацию",
+ "Reset this profile to factory defaults? Your tweaks on it will be lost.": "Сбросить этот профиль до заводских настроек? Все ваши изменения будут потеряны.",
+ "Reset to 0": "Сбросить до 0",
+ "Reset to default": "Сбросить по умолчанию",
+ "Reset to default folder": "Сбросить папку по умолчанию",
+ "Reset to defaults": "Сбросить настройки по умолчанию",
+ "Reset to original name": "Вернуть исходное имя",
+ "Reset to Stremio avatar": "Вернуть аватар Stremio",
+ "Resize only": "Только изменение размера",
+ "Resize the row titles on Home and the title shown in the player, without scaling the rest of the interface. You can also lead the player title with the series name instead of the episode.": "Изменяет размер заголовков рядов на главной и названия в плеере, не масштабируя остальной интерфейс. Также можно начинать заголовок в плеере с названия сериала вместо эпизода.",
+ "Resolution": "Разрешение",
+ "Resources": "Ресурсы",
+ "Rest the cursor on a poster to peek at it without opening. Off by default.": "Наведите курсор на постер, чтобы взглянуть на него, не открывая. По умолчанию отключено.",
+ "Rest the cursor on a poster to peek at the rating, runtime, and story without opening it.": "Наведите курсор на постер, чтобы увидеть оценку, длительность и описание, не открывая его.",
+ "Rest the cursor on a poster to peek at the rating, story, and quick actions without opening it.": "Наведите курсор на постер, чтобы увидеть оценку, описание и быстрые действия, не открывая его.",
+ "Restart": "Перезапустить",
+ "Restart engine": "Перезапустить движок",
+ "Restarting": "Перезапуск",
+ "Restore": "Восстановить",
+ "Restore and reload": "Восстановить и перезагрузить",
+ "Restore dismissed hints": "Восстановить скрытые подсказки",
+ "Restore from a backup": "Восстановить из резервной копии",
+ "Restore this backup?": "Восстановить эту резервную копию?",
+ "Restore window position after fullscreen": "Восстанавливать положение окна после полноэкранного режима",
+ "Restored": "Восстановлено",
+ "Restoring...": "Восстановление...",
+ "Result order": "Порядок результатов",
+ "Results for \"{query}\"": "Результаты для «{query}»",
+ "Resume": "Продолжить",
+ "Resume from {time}": "Продолжить с {time}",
+ "Resume S{s}:E{e}": "Продолжить S{s}:E{e}",
+ "Resume where you left off": "Продолжить с того места, где остановились",
+ "Retry": "Повторить",
+ "Retry download": "Повторить загрузку",
+ "Return to full window": "Вернуться в полное окно",
+ "returns JSON with the worker version. Used by the test button.": "возвращает JSON с версией воркера. Используется кнопкой проверки.",
+ "Reveal": "Показать",
+ "Reveal comments": "Показать комментарии",
+ "Reveal engine folder": "Показать папку движка",
+ "Reveal image": "Показать изображение",
+ "Reveal reviews": "Показать отзывы",
+ "Reveal the show or movie artwork.": "Показывает изображение сериала или фильма.",
+ "Reveal the show or movie artwork. Off keeps the title but hides the poster.": "Показывает изображение сериала или фильма. При отключении название остаётся, а постер скрывается.",
+ "Revenue": "Сборы",
+ "review": "отзыв",
+ "Review": "Отзыв",
+ "Reviews are hidden": "Отзывы скрыты",
+ "Reviews couldn't be loaded right now.": "Не удалось загрузить отзывы прямо сейчас.",
+ "Reviews on film pages are blurred until you reveal them.": "Отзывы на страницах фильмов размыты, пока вы их не покажете.",
+ "Revisionist Westerns": "Ревизионистские вестерны",
+ "Rewatching": "Пересматриваю",
+ "Rewrites every library item to match Stremio's exact schema. Run once if your Stremio app started crashing after Harbor synced playback.": "Переписывает каждый элемент библиотеки в точном соответствии со схемой Stremio. Запустите один раз, если приложение Stremio начало вылетать после синхронизации воспроизведения с Harbor.",
+ "Richer, more vivid picture with a touch more contrast.": "Более насыщенное и яркое изображение с чуть большей контрастностью.",
+ "right": "справа",
+ "Right": "Справа",
+ "Right edge": "Правый край",
+ "Right-click a text channel, pick": "Щёлкните правой кнопкой по текстовому каналу, выберите",
+ "Right-click any title in Harbor or hit \"Add to Watchlist\" on its detail page to save it here.": "Щёлкните правой кнопкой по любому тайтлу в Harbor или нажмите «Добавить в список „Хочу посмотреть“» на его странице, чтобы сохранить сюда.",
+ "Right-click any title in Harbor or hit \\": "Щёлкните правой кнопкой по любому тайтлу в Harbor или нажмите \\",
+ "Rights and usage": "Права и использование",
+ "Rising": "В росте",
+ "Rising · +{n} star in 24h": "В росте · +{n} звезда за 24ч",
+ "Rising · +{n} stars in 24h": "В росте · +{n} звёзд за 24ч",
+ "Roll back to an earlier build": "Откатиться до более ранней сборки",
+ "Romaji": "Ромадзи",
+ "Romance": "Романтика",
+ "Romanian": "Румынский",
+ "Romcom Royalty": "Короли ромкомов",
+ "Romcom Sweetheart": "Душка ромкомов",
+ "Room code": "Код комнаты",
+ "Rotten Tomatoes Audience": "Зрители Rotten Tomatoes",
+ "Rotten Tomatoes audience score": "Зрительская оценка Rotten Tomatoes",
+ "Rotten Tomatoes Critics": "Критики Rotten Tomatoes",
+ "Rotten Tomatoes Popcornmeter, the audience score (%).": "Индекс зрительских оценок Rotten Tomatoes (%).",
+ "Rounded": "Скруглённый",
+ "Rounded background panel behind the text. Most readable.": "Скруглённая панель фона за текстом. Наиболее читаемо.",
+ "Rounded square in the same color.": "Скруглённый квадрат того же цвета.",
+ "Row titles": "Заголовки рядов",
+ "Royal top bar": "Королевская верхняя панель",
+ "RPDB · scores baked into posters": "RPDB · оценки встроены в постеры",
+ "RPDB already paints scores onto the poster. Toggle to override.": "RPDB уже наносит оценки на постер. Включите, чтобы переопределить.",
+ "rpdb key": "ключ rpdb",
+ "RPDB key above, https://btttr.cc, or a {imdbId} template": "Ключ RPDB выше, https://btttr.cc или шаблон {imdbId}",
+ "RTX Video HDR": "RTX Video HDR",
+ "Rubber-Faced Genius": "Гений с резиновым лицом",
+ "Run again": "Запустить снова",
+ "Run self-test": "Запустить самопроверку",
+ "Run speed test": "Запустить тест скорости",
+ "Run test": "Запустить проверку",
+ "Run your own Harbor Relay": "Разверните собственный Harbor Relay",
+ "Running": "Выполняется",
+ "Running on Cinemeta for now. Add a TMDB key from Settings whenever you're ready.": "Пока используется Cinemeta. Добавьте ключ TMDB в настройках, когда будете готовы.",
+ "Running self-test": "Выполняется самопроверка",
+ "Running the latest Watch Together protocol.": "Используется последняя версия протокола «Смотреть вместе».",
+ "Runs": "Запуски",
+ "Runs in the app's WebView. You're modding your own client. No sandbox, no safety net. Errors land in the console.": "Выполняется в WebView приложения. Вы модифицируете собственный клиент. Без песочницы и подстраховки. Ошибки выводятся в консоль.",
+ "Runtime": "Длительность",
+ "Russian": "Русский",
+ "S{s} E{e}": "S{s} E{e}",
+ "Saddle Up": "По коням",
+ "SAG Awards": "SAG Awards",
+ "Sagas": "Саги",
+ "Same file": "Тот же файл",
+ "Same file as host": "Тот же файл, что у хоста",
+ "Sandman Picks": "Выбор Sandman",
+ "Sat": "Сб",
+ "Saturation": "Насыщенность",
+ "Save": "Сохранить",
+ "Save .txt": "Сохранить .txt",
+ "Save (single anchor)": "Сохранить (одна точка привязки)",
+ "Save a debrid key above (TorBox, Real-Debrid, AllDebrid, Premiumize, or Debrid-Link) to enable this.": "Сохраните ключ debrid-сервиса выше (TorBox, Real-Debrid, AllDebrid, Premiumize или Debrid-Link), чтобы включить это.",
+ "Save a TMDB key in Library & metadata to turn on streaming catalogs.": "Сохраните ключ TMDB в разделе «Библиотека и метаданные», чтобы включить каталоги стриминга.",
+ "Save an OMDB key in Library & metadata to enable rating fetches.": "Сохраните ключ OMDB в разделе «Библиотека и метаданные», чтобы включить получение оценок.",
+ "Save and continue": "Сохранить и продолжить",
+ "Save as a new look": "Сохранить как новый внешний вид",
+ "Save as a new template": "Сохранить как новый шаблон",
+ "Save as new profile...": "Сохранить как новый профиль...",
+ "Save cancelled.": "Сохранение отменено.",
+ "Save changes": "Сохранить изменения",
+ "Save credentials": "Сохранить учётные данные",
+ "Save for later": "Сохранить на потом",
+ "Save layout": "Сохранить макет",
+ "Save look": "Сохранить внешний вид",
+ "Save order": "Сохранить порядок",
+ "Save rule": "Сохранить правило",
+ "Save sharper frames instead of light thumbnails. They look crisper on the card but take more space, so fewer are kept before the oldest roll off.": "Сохраняйте более чёткие кадры вместо лёгких миниатюр. Они выглядят резче на карточке, но занимают больше места, поэтому хранится меньше кадров, прежде чем старые начнут удаляться.",
+ "Save sync": "Сохранить синхронизацию",
+ "Save the current frame (video only, no subtitles) as a PNG to Pictures/Harbor.": "Сохранить текущий кадр (только видео, без субтитров) как PNG в Изображения/Harbor.",
+ "Save the last 30 seconds": "Сохранить последние 30 секунд",
+ "Save the worker source. Copy": "Сохраните исходный код воркера. Скопируйте",
+ "Save the worker source. Copy {code1} from the Harbor repo into a new directory as {code2}.": "Сохраните исходный код воркера. Скопируйте {code1} из репозитория Harbor в новую директорию как {code2}.",
+ "Save this": "Сохранить это",
+ "Save this {code} next to it:": "Сохраните этот {code} рядом:",
+ "Save this look": "Сохранить этот внешний вид",
+ "Save this look as a template": "Сохранить этот внешний вид как шаблон",
+ "Save to": "Сохранить в",
+ "Save with one anchor?": "Сохранить с одной точкой привязки?",
+ "Saved": "Сохранено",
+ "Saved .nfo and artwork": "Сохранены .nfo и изображения",
+ "Saved {d} from Harbor {a}.": "Сохранено {d} из Harbor {a}.",
+ "Saved {n} entries to {path}. Send us that file.": "Сохранено {n} записей в {path}. Отправьте нам этот файл.",
+ "Saved {when} from Harbor {app}.": "Сохранено {when} из Harbor {app}.",
+ "Saved as .ts (works in mpv, VLC, ffmpeg)": "Сохранено как .ts (работает в mpv, VLC, ffmpeg)",
+ "Saved for Now": "Сохранено на потом",
+ "Saved frame": "Кадр сохранён",
+ "Saved harbor-anime-diagnostics.txt ({n} entries). Send us that file.": "Сохранён harbor-anime-diagnostics.txt ({n} записей). Отправьте нам этот файл.",
+ "Saved locally. Connect Trakt in Settings to sync.": "Сохранено локально. Подключите Trakt в настройках для синхронизации.",
+ "Saved movies and episodes for offline watching": "Сохранённые фильмы и эпизоды для просмотра офлайн",
+ "Saved offline": "Сохранено офлайн",
+ "Saved stream filters": "Сохранённые фильтры потоков",
+ "Saved to {folder} · open folder": "Сохранено в {folder} · открыть папку",
+ "Saved to disk": "Сохранено на диск",
+ "Saved to Downloads as harbor-mpv-log.txt": "Сохранено в Загрузки как harbor-mpv-log.txt",
+ "Saved, but Harbor couldn't confirm the new order. Retry to re-check.": "Сохранено, но Harbor не смог подтвердить новый порядок. Повторите, чтобы проверить снова.",
+ "Saves": "Сэйвы",
+ "Saves a .txt of your watched anime + series entries so we can see the exact shape and finish the fix. Just titles, ids, and episode numbers.": "Сохраняет .txt с вашими просмотренными аниме и сериалами, чтобы мы могли увидеть точную структуру и завершить исправление. Только названия, идентификаторы и номера эпизодов.",
+ "Saves your whole Harbor setup to one file: theme, home layout, settings, addons, profiles, watchlist, player layouts, watch progress, and more. Your Stremio sign-in is left out on purpose.": "Сохраняет всю настройку Harbor в один файл: тему, макет главной, настройки, аддоны, профили, список «Хочу посмотреть», макеты плеера, прогресс просмотра и многое другое. Вход в Stremio намеренно не сохраняется.",
+ "Saving": "Сохранение",
+ "Saving clip…": "Сохранение клипа…",
+ "Saving GIF…": "Сохранение GIF…",
+ "Saving to": "Сохранение в",
+ "Saving to library": "Сохранение в библиотеку",
+ "Saving to system default": "Сохранение в системную папку по умолчанию",
+ "Saving…": "Сохранение…",
+ "Say hi.": "Поздоровайтесь.",
+ "Say something…": "Напишите что-нибудь…",
+ "Says “cached” but won’t play?": "Показывает «в кэше», но не воспроизводится?",
+ "Scale every poster and card across Home, Discover, and your library. Bump it up on a 4K or large display where the defaults feel small, or shrink it for a denser grid.": "Изменяет масштаб всех постеров и карточек на главной, в разделе «Обзор» и в библиотеке. Увеличьте на 4K или большом экране, где значения по умолчанию кажутся мелкими, или уменьшите для более плотной сетки.",
+ "Scan again": "Сканировать снова",
+ "Scan for corruption": "Проверить на повреждения",
+ "Scanning": "Сканирование",
+ "Scanning your library…": "Сканирование вашей библиотеки…",
+ "Scanning your network…": "Сканирование вашей сети…",
+ "Scanning…": "Сканирование…",
+ "Scans your Stremio library and rewrites any item whose shape doesn't match Stremio's exact schema.": "Сканирует вашу библиотеку Stremio и переписывает любой элемент, структура которого не соответствует точной схеме Stremio.",
+ "Scans your Stremio library and rewrites any item whose shape doesn't match Stremio's exact schema. Safe to run anytime; only items that need fixing get touched.": "Сканирует вашу библиотеку Stremio и переписывает любой элемент, структура которого не соответствует точной схеме Stremio. Безопасно запускать в любой момент — изменяются только элементы, требующие исправления.",
+ "Sci-Fi": "Фантастика",
+ "Sci-Fi & Fantasy": "Фантастика и фэнтези",
+ "Score": "Оценка",
+ "Score /10": "Оценка /10",
+ "Scream Queen": "Королева криков",
+ "Screenshot": "Снимок экрана",
+ "Screenshots and recordings": "Снимки экрана и записи",
+ "Scrobble to SIMKL": "Скробблинг в SIMKL",
+ "Scroll cast left": "Прокрутить актёров влево",
+ "Scroll cast right": "Прокрутить актёров вправо",
+ "Scroll down": "Прокрутить вниз",
+ "Scroll filters left": "Прокрутить фильтры влево",
+ "Scroll filters right": "Прокрутить фильтры вправо",
+ "Scroll left": "Прокрутить влево",
+ "Scroll right": "Прокрутить вправо",
+ "Search": "Поиск",
+ "Search {n} channels": "Поиск среди {n} каналов",
+ "Search {n} EPG channels": "Поиск среди {n} каналов EPG",
+ "Search {n} favorite": "Поиск среди {n} избранного",
+ "Search {n} favorites": "Поиск среди {n} избранных",
+ "Search actors, directors…": "Поиск актёров, режиссёров…",
+ "Search addons": "Поиск аддонов",
+ "Search by episode number or title": "Поиск по номеру эпизода или названию",
+ "Search by recipient or title…": "Поиск по получателю или названию…",
+ "Search countries...": "Поиск стран...",
+ "Search every collection on TMDB...": "Поиск по всем коллекциям TMDB...",
+ "Search languages": "Поиск языков",
+ "Search movies": "Поиск фильмов",
+ "Search movies, shows, people, genres, years...": "Поиск фильмов, сериалов, людей, жанров, годов...",
+ "Search settings": "Поиск в настройках",
+ "Search shows": "Поиск сериалов",
+ "Search title…": "Поиск по названию…",
+ "Search TMDB…": "Поиск в TMDB…",
+ "Search wider": "Расширить поиск",
+ "Search winners or categories…": "Поиск победителей или категорий…",
+ "search.placeholder": "Поиск фильмов, сериалов, людей…",
+ "Searches and streams directly off Easynews. No debrid needed. Just your Easynews login.": "Ищет и транслирует напрямую с Easynews. Debrid-сервис не нужен. Только ваш логин Easynews.",
+ "Searching": "Поиск",
+ "Searching {count} sources…": "Поиск среди {count} источников…",
+ "Searching sources…": "Поиск источников…",
+ "Searching…": "Поиск…",
+ "Season {n}": "Сезон {n}",
+ "Season {n} of {m}": "Сезон {n} из {m}",
+ "Seasons": "Сезоны",
+ "Second anchor": "Вторая точка привязки",
+ "Security": "Безопасность",
+ "See all": "Показать все",
+ "See all ({n})": "Показать все ({n})",
+ "See an injected ad? Report it": "Видите встроенную рекламу? Сообщите об этом",
+ "See details": "Подробнее",
+ "See others born this day": "Другие рождённые в этот день",
+ "See others from this place": "Другие из этого места",
+ "See the mpv.conf your dials above generate": "Посмотреть mpv.conf, создаваемый настройками выше",
+ "seeders": "сидеров",
+ "Seeing empty boxes instead of letters? Choose Arabic under Font and switch to Use my style.": "Видите пустые квадраты вместо букв? Выберите арабский в разделе «Шрифт» и переключитесь на «Использовать мой стиль».",
+ "Seek back": "Перемотать назад",
+ "Seek back 30s": "Перемотать назад на 30с",
+ "Seek bar": "Полоса перемотки",
+ "Seek bar style": "Стиль полосы перемотки",
+ "Seek dot shape": "Форма точки перемотки",
+ "Seek forward": "Перемотать вперёд",
+ "Seek forward 30s": "Перемотать вперёд на 30с",
+ "Seek step": "Шаг перемотки",
+ "Seek to the beginning.": "Перемотать в начало.",
+ "Seek to the last half second.": "Перемотать на последние полсекунды.",
+ "Seeking": "Перемотка",
+ "Select": "Выбрать",
+ "Selecting best source": "Выбор лучшего источника",
+ "Select all": "Выбрать все",
+ "Select identified titles to export.": "Выберите распознанные тайтлы для экспорта.",
+ "Self-host": "Собственный хостинг",
+ "Self-test": "Самопроверка",
+ "Self-test is disabled while strict remote streaming is on. It downloads a test torrent over peer-to-peer on this machine.": "Самопроверка отключена, пока включён строгий режим удалённого стриминга. Она скачивает тестовый торрент через peer-to-peer на этом устройстве.",
+ "Send": "Отправить",
+ "Send a bug report": "Отправить отчёт об ошибке",
+ "Send a bug report straight to the Harbor team. Screenshots and screen recordings welcome.": "Отправьте отчёт об ошибке прямо команде Harbor. Приветствуются снимки экрана и записи экрана.",
+ "Send audio to specific speakers, headphones or a receiver. System default follows Windows.": "Отправляйте звук на определённые колонки, наушники или ресивер. Системное значение по умолчанию следует настройкам Windows.",
+ "Send rating": "Отправить оценку",
+ "Send test": "Отправить тест",
+ "Send this to anyone you want to watch with. They paste it in their Settings → Harbor Relay. After that, share a 6-character room code from the people icon up top.": "Отправьте это тому, с кем хотите смотреть вместе. Они вставят это в свои Настройки → Harbor Relay. После этого поделитесь 6-значным кодом комнаты со значка людей вверху.",
+ "Sending to Trakt…": "Отправка в Trakt…",
+ "Sending...": "Отправка...",
+ "Sending…": "Отправка…",
+ "Sent {n} to Trakt": "Отправлено {n} в Trakt",
+ "Sent. Check your channel.": "Отправлено. Проверьте свой канал.",
+ "Series": "Сериалы",
+ "Series · {n}": "Сериалы · {n}",
+ "Series for the part of the day that runs on coffee and snacks.": "Сериалы для той части дня, что держится на кофе и перекусах.",
+ "Series for the part of the day you actually look forward to.": "Сериалы для той части дня, которую вы действительно ждёте.",
+ "Series for the part of the night that won't let you sleep.": "Сериалы для той части ночи, что не даёт уснуть.",
+ "Series from {name}: current hits, classics, and the deep cuts.": "Сериалы от {name}: актуальные хиты, классика и редкие находки.",
+ "Series on {name}": "Сериалы на {name}",
+ "Series tab": "Вкладка «Сериалы»",
+ "Series to disappear into": "Сериалы, в которых можно раствориться",
+ "Series to ease into while the day is still quiet.": "Сериалы, чтобы плавно втянуться, пока день ещё тихий.",
+ "Series with mileage": "Проверенные временем сериалы",
+ "Series with the patience to match your late-night hours.": "Сериалы с терпением под стать вашим поздним часам.",
+ "Series, Critically Acclaimed": "Сериалы, признанные критиками",
+ "Serif": "С засечками",
+ "Server + login": "Сервер и логин",
+ "Server address": "Адрес сервера",
+ "Server couldn't start:": "Не удалось запустить сервер:",
+ "Server did not respond": "Сервер не ответил",
+ "Server reachable": "Сервер доступен",
+ "Server reachable in {ms}ms. Harbor will use it for torrent streaming.": "Сервер доступен, {ms}мс. Harbor будет использовать его для торрент-стриминга.",
+ "Server returned an empty response": "Сервер вернул пустой ответ",
+ "Server URL": "URL сервера",
+ "Server URL plus username and password.": "URL сервера плюс имя пользователя и пароль.",
+ "Serves this exact install of Harbor as a web app on your network. Open it on a phone, laptop, or TV browser, sign in there, and it streams through this computer.": "Предоставляет эту установку Harbor как веб-приложение в вашей сети. Откройте её в браузере на телефоне, ноутбуке или ТВ, войдите там, и трансляция будет идти через этот компьютер.",
+ "service": "сервис",
+ "Service status": "Статус сервиса",
+ "Service-specific browsing needs a TMDB key. Pick All / Movies / Shows to browse via Cinemeta.": "Просмотр по конкретному сервису требует ключ TMDB. Выберите «Все / Фильмы / Сериалы», чтобы просматривать через Cinemeta.",
+ "services": "сервисы",
+ "Set a 4-digit PIN": "Установить 4-значный PIN-код",
+ "Set a PIN": "Установить PIN-код",
+ "Set a PIN for {name}": "Установить PIN-код для {name}",
+ "Set as theme backdrop": "Установить как фон темы",
+ "Set how many minutes to record": "Задайте, сколько минут записывать",
+ "Set PIN": "Установить PIN-код",
+ "Set sail": "Отправиться в путь",
+ "Set to where the video is right now": "Установить на текущую позицию видео",
+ "Set up": "Настроить",
+ "Set up a Cloudflare relay for Watch Together": "Настройте релей Cloudflare для «Смотреть вместе»",
+ "Set up a debrid": "Настройте debrid-сервис",
+ "Set your MyAnimeList profile picture as your Harbor avatar.": "Установите изображение профиля MyAnimeList как аватар Harbor.",
+ "Sets Harbor's interface language and automatically follows its text direction. This is separate from subtitle and metadata languages below.": "Задаёт язык интерфейса Harbor и автоматически следует его направлению текста. Это отдельно от языков субтитров и метаданных ниже.",
+ "Settings": "Настройки",
+ "Settings, Harbor Relay, then": "Настройки, Harbor Relay, затем",
+ "Settings, Harbor Relay, then {kbd}.": "Настройки, Harbor Relay, затем {kbd}.",
+ "Severity": "Серьёзность",
+ "Shadow": "Тень",
+ "Shape the sound without touching your system EQ. Applies on the mpv engine; the HTML5 engine plays audio untouched.": "Формирует звук, не затрагивая системный эквалайзер. Применяется в движке mpv; движок HTML5 воспроизводит звук без изменений.",
+ "Share with {name}": "Поделиться с {name}",
+ "Sharing {name}'s Stremio": "Совместный доступ к Stremio пользователя {name}",
+ "Sharing your relay": "Доступ к вашему релею",
+ "Sharp comedies, sunny worlds, and the occasional binge bait.": "Острые комедии, солнечные миры и то, что затянет на весь вечер.",
+ "Sharp Wit": "Острый ум",
+ "Sharpen": "Резкость",
+ "Sharper lines and a little more pop.": "Более чёткие линии и чуть больше сочности.",
+ "Sharper lines and cleaner gradients on anime, in real time. Heaviest on the graphics card of everything here.": "Более чёткие линии и чистые градиенты на аниме в реальном времени. Самый требовательный к видеокарте вариант из всех.",
+ "Sharper lines and cleaner gradients on anime, in real time. One-tap setup below.": "Более чёткие линии и чистые градиенты на аниме в реальном времени. Настройка в один клик ниже.",
+ "Sharper upscaling and smoother gradients in dark scenes, at the cost of more graphics-card load. Skip it on laptops and integrated graphics.": "Более чёткое масштабирование и плавные градиенты в тёмных сценах ценой большей нагрузки на видеокарту. Не стоит включать на ноутбуках и встроенной графике.",
+ "Shift subtitle timing earlier (Shift for fine steps).": "Сдвинуть субтитры раньше (Shift — точная настройка).",
+ "Shift subtitle timing later (Shift for fine steps).": "Сдвинуть субтитры позже (Shift — точная настройка).",
+ "Ships with Harbor. Always available.": "Встроено в Harbor. Всегда доступно.",
+ "Short": "Короткий",
+ "Shots": "Броски",
+ "SHOTS": "БРОСКИ",
+ "Shots on Target": "Броски в створ",
+ "Show": "Показать",
+ "Show 'Watching something' with no show name or poster.": "Показывать «Смотрит что-то» без названия и постера.",
+ "Show {langs} only": "Показывать только {langs}",
+ "Show {n} more addons": "Показать ещё {n} аддонов",
+ "Show {n} more reviews": "Показать ещё {n} отзывов",
+ "Show a button on the detail page to mark a title or episode as watched. Syncs to Trakt and Simkl if connected.": "Показывать на странице тайтла кнопку отметки просмотра эпизода. Синхронизируется с Trakt и Simkl при подключении.",
+ "Show a quick volume overlay when you change volume with the player controls hidden, so keyboard and scroll wheel changes are always visible.": "Показывать быстрый индикатор громкости при её изменении со скрытыми элементами управления, чтобы изменения с клавиатуры и колёсика мыши были всегда видны.",
+ "Show a Skip button when a known injected ad plays, and a small report button on new releases so you can mark ads for review.": "Показывать кнопку пропуска при воспроизведении известной встроенной рекламы и небольшую кнопку жалобы на новых релизах, чтобы отмечать рекламу для проверки.",
+ "Show a Skip Intro / Skip Credits button when Harbor detects one. Turn this off to never show it. You can also tap the X on the button to dismiss a wrong one for the rest of the episode.": "Показывать кнопку «Пропустить заставку» / «Пропустить титры», когда Harbor её обнаруживает. Отключите, чтобы никогда её не показывать. Также можно нажать X на кнопке, чтобы скрыть неверную кнопку до конца эпизода.",
+ "Show adult addons": "Показывать аддоны для взрослых",
+ "Show an “on disk” badge on cards": "Показывать значок «на диске» на карточках",
+ "Show AniList comments": "Показывать комментарии AniList",
+ "Show Anime4K indicator": "Показывать индикатор Anime4K",
+ "Show as a normal row": "Показывать как обычный ряд",
+ "Show as a Top 10 with big numerals": "Показывать как топ-10 с крупными цифрами",
+ "Show audience score on cards": "Показывать зрительский рейтинг на карточках",
+ "Show comments on detail pages": "Показывать комментарии на страницах тайтлов",
+ "Show cursors": "Показывать курсоры",
+ "Show details": "Показать подробности",
+ "Show downloaded file": "Показать скачанный файл",
+ "Show each addon's results in the order it returned them, grouped by your addon list. Matches the Stremio and Vidi apps.": "Показывать результаты каждого аддона в порядке их получения, сгруппированные по списку аддонов. Как в приложениях Stremio и Vidi.",
+ "Show each source's full release filename on the condensed layout. The Stremio layout already shows it.": "Показывать полное имя файла релиза для каждого источника в компактном виде. В виде Stremio оно уже отображается.",
+ "Show elapsed time": "Показывать прошедшее время",
+ "Show email": "Показать email",
+ "Show episode description": "Показывать описание эпизода",
+ "Show every addon row": "Показывать все ряды аддонов",
+ "Show everything anyway": "Показать всё равно",
+ "Show flagged ({n})": "Показать отмеченные ({n})",
+ "Show format chips on stream rows": "Показывать метки формата в строках источников",
+ "Show forum threads and comments from AniList on anime detail pages.": "Показывать темы форума и комментарии AniList на страницах аниме.",
+ "Show full descriptions": "Показывать полные описания",
+ "Show full documentation": "Показать полную документацию",
+ "Show HI/SDH": "Показывать HI/SDH",
+ "Show IMDb rating on episodes": "Показывать рейтинг IMDb на эпизодах",
+ "Show IMDb score on cards": "Показывать рейтинг IMDb на карточках",
+ "Show in folder": "Показать в папке",
+ "Show less": "Свернуть",
+ "Show Letterboxd score on cards": "Показывать рейтинг Letterboxd на карточках",
+ "Show MAL score on cards": "Показывать рейтинг MAL на карточках",
+ "Show MDBList score on cards": "Показывать рейтинг MDBList на карточках",
+ "Show me less like this": "Показывать меньше такого",
+ "Show me more like this": "Показывать больше такого",
+ "Show Metacritic score on cards": "Показывать рейтинг Metacritic на карточках",
+ "Show more": "Показать больше",
+ "Show my rating on movie posters": "Показывать мою оценку на постерах фильмов",
+ "Show on Discord": "Показывать в Discord",
+ "Show on home": "Показывать на главной",
+ "Show or hide the playback stats overlay.": "Показать или скрыть оверлей статистики воспроизведения.",
+ "Show others' drawings": "Показывать рисунки других",
+ "Show P2P status chip": "Показывать метку статуса P2P",
+ "Show P2P status overlay": "Показывать оверлей статуса P2P",
+ "Show password": "Показать пароль",
+ "Show play button": "Показывать кнопку воспроизведения",
+ "Show Playlists tab": "Показывать вкладку «Плейлисты»",
+ "Show poster": "Показывать постер",
+ "Show rating": "Показывать рейтинг",
+ "Show ratings on detail pages": "Показывать рейтинги на страницах тайтлов",
+ "Show remaining time": "Показывать оставшееся время",
+ "Show Rotten Tomatoes score on cards": "Показывать рейтинг Rotten Tomatoes на карточках",
+ "Show row": "Показать ряд",
+ "Show section": "Показать раздел",
+ "Show series name first in the player": "Показывать название сериала первым в плеере",
+ "Show Simkl rails on Home": "Показывать подборки Simkl на главной",
+ "Show SIMKL score on cards": "Показывать рейтинг SIMKL на карточках",
+ "Show Simkl Trending Today rail": "Показывать подборку «В тренде сегодня» от Simkl",
+ "Show sources hidden by the trust filter": "Показывать источники, скрытые фильтром доверия",
+ "Show stream quality under the title": "Показывать качество потока под названием",
+ "Show streams": "Показать источники",
+ "Show subtitles in Picture-in-Picture": "Показывать субтитры в режиме «картинка в картинке»",
+ "Show tags on cards (New, In Cinema, Rerun, Awards)": "Показывать теги на карточках (Новинка, В кино, Повтор, Награды)",
+ "Show the addon's complete description instead of trimming it to a few lines. Turn off for shorter, tidier rows.": "Показывать полное описание аддона вместо сокращения до нескольких строк. Отключите для более компактных и аккуратных рядов.",
+ "Show the full notes for this build": "Показать полные заметки об этой сборке",
+ "Show the IMDb rating and synopsis on episodes across the list, grid, and panel layouts.": "Показывать рейтинг IMDb и синопсис на эпизодах в видах списка, сетки и панели.",
+ "Show the report button on every torrent stream, not just likely new releases.": "Показывать кнопку жалобы у каждого торрент-источника, а не только у вероятных новых релизов.",
+ "Show the Skip button": "Показывать кнопку пропуска",
+ "Show this control": "Показывать этот элемент управления",
+ "Show this panel": "Показывать эту панель",
+ "Show thumbnail preview on hover": "Показывать превью при наведении",
+ "Show title": "Показывать название",
+ "Show TMDB score on cards": "Показывать рейтинг TMDB на карточках",
+ "Show torrent name": "Показывать имя торрента",
+ "Show Trakt score on cards": "Показывать рейтинг Trakt на карточках",
+ "Show Up Next on Simkl rail": "Показывать подборку «Далее» от Simkl",
+ "Show what you're actually watching, under the title in the player.": "Показывать, что вы на самом деле смотрите, под названием в плеере.",
+ "Show while browsing": "Показывать при просмотре",
+ "Show while paused": "Показывать на паузе",
+ "Show your AniList lists as rails on the Anime page, keep your watch progress in sync as you finish episodes, and use your AniList avatar as your Harbor photo. Free at anilist.co.": "Показывайте свои списки AniList как подборки на странице аниме, синхронизируйте прогресс просмотра по мере завершения эпизодов и используйте аватар AniList как фото профиля Harbor. Бесплатно на anilist.co.",
+ "Show your AniList profile picture as your Harbor avatar.": "Использовать фото профиля AniList как аватар Harbor.",
+ "Show your operating system's own title bar with its minimize, maximize, and close buttons. They stay reachable everywhere, including while a video is playing. Turn this off to use Harbor's built-in window buttons.": "Показывать системную панель заголовка со своими кнопками свернуть, развернуть и закрыть. Они остаются доступны везде, включая во время воспроизведения видео. Отключите, чтобы использовать встроенные кнопки окна Harbor.",
+ "Showing {shown} of {total} movies. Search to find the rest.": "Показано {shown} из {total} фильмов. Используйте поиск, чтобы найти остальные.",
+ "Showing {shown} of {total} shows. Search to find the rest.": "Показано {shown} из {total} сериалов. Используйте поиск, чтобы найти остальные.",
+ "Showing {shown} of {total}.": "Показано {shown} из {total}.",
+ "Showing first {n1} of {n2} channels. Use search or a category to narrow down.": "Показаны первые {n1} из {n2} каналов. Используйте поиск или категорию для уточнения.",
+ "Showing first {shown} of {total} channels. Use search or a category to narrow down.": "Показаны первые {shown} из {total} каналов. Используйте поиск или категорию для уточнения.",
+ "Showing now": "Сейчас показывают",
+ "shown": "показано",
+ "Shown": "Показано",
+ "Shows": "Сериалы",
+ "Shows each episode's rating. Add your free OMDb API key for real IMDb scores; without it, ratings fall back to TMDB.": "Показывает рейтинг каждого эпизода. Добавьте бесплатный API-ключ OMDb для настоящих оценок IMDb; без него используются оценки TMDB.",
+ "Shows the episode synopsis on the cards. Turn it off to hide it.": "Показывает синопсис эпизода на карточках. Отключите, чтобы скрыть.",
+ "Shows titles suitable up to age {age}.": "Показывает тайтлы, подходящие до {age} лет.",
+ "Shows your Letterboxd catalogs on the home page and a Letterboxd panel on film pages.": "Показывает ваши каталоги Letterboxd на главной странице и панель Letterboxd на страницах фильмов.",
+ "Showtime": "Время показа",
+ "Side": "Сторона",
+ "Side rail": "Боковая панель",
+ "Sidebar access": "Доступ к боковой панели",
+ "Sidebar layout": "Макет боковой панели",
+ "Sightings, contact, the unknown": "Наблюдения, контакт, неизвестное",
+ "Sign in": "Войти",
+ "Sign in from the sidebar after saving. Library and addons stay separate.": "Войдите через боковую панель после сохранения. Библиотека и аддоны остаются раздельными.",
+ "Sign in to": "Войти в",
+ "Sign in to filter by your library": "Войдите, чтобы фильтровать по своей библиотеке",
+ "Sign in to mirror your Continue Watching, watchlist, and any addons you've already curated. Optional; Harbor works fully signed-out.": "Войдите, чтобы синхронизировать «Продолжить просмотр», список желаемого и уже подобранные аддоны. Необязательно — Harbor полностью работает и без входа.",
+ "Sign in to see your library calendar": "Войдите, чтобы увидеть календарь своей библиотеки",
+ "Sign in to Stremio": "Войти в Stremio",
+ "Sign in to Stremio first so Harbor knows which watchlist to sync.": "Сначала войдите в Stremio, чтобы Harbor знал, какой список желаемого синхронизировать.",
+ "Sign in to Stremio first.": "Сначала войдите в Stremio.",
+ "Sign in to Stremio first. The repair scans only the active profile's library.": "Сначала войдите в Stremio. Восстановление сканирует только библиотеку активного профиля.",
+ "Sign in to Stremio first. This reads the active profile's library.": "Сначала войдите в Stremio. Это читает библиотеку активного профиля.",
+ "Sign in to Stremio first. This scans the active profile's library.": "Сначала войдите в Stremio. Это сканирует библиотеку активного профиля.",
+ "Sign in to Stremio first. Your installed addons sync from there.": "Сначала войдите в Stremio. Установленные аддоны синхронизируются оттуда.",
+ "Sign in to Stremio or connect Trakt to see what you've been watching here.": "Войдите в Stremio или подключите Trakt, чтобы видеть здесь, что вы смотрели.",
+ "Sign in to Stremio to organize the addons synced to your account.": "Войдите в Stremio, чтобы упорядочить аддоны, синхронизированные с вашим аккаунтом.",
+ "Sign in to sync your addons across devices": "Войдите, чтобы синхронизировать аддоны между устройствами",
+ "Sign in to sync your library, watch progress, and addons.": "Войдите, чтобы синхронизировать библиотеку, прогресс просмотра и аддоны.",
+ "Sign in with": "Войти через",
+ "Sign in with email": "Войти по email",
+ "Sign in with Stremio": "Войти через Stremio",
+ "Sign out": "Выйти",
+ "Sign-in failed": "Не удалось войти",
+ "Signing in...": "Вход...",
+ "Signing in…": "Вход…",
+ "Simkl": "Simkl",
+ "SIMKL": "SIMKL",
+ "SIMKL community rating. Works independently, no API key required.": "Рейтинг сообщества SIMKL. Работает независимо, API-ключ не нужен.",
+ "Simkl error (HTTP {status})": "Ошибка Simkl (HTTP {status})",
+ "Simkl history": "История Simkl",
+ "Simkl lists no new shows or anime premiering this month. Try a different month.": "Simkl не показывает премьер сериалов или аниме в этом месяце. Попробуйте другой месяц.",
+ "Simkl plan to watch": "Планирую посмотреть (Simkl)",
+ "Simkl premieres": "Премьеры Simkl",
+ "Simkl sign-in expired, reconnect it": "Срок входа в Simkl истёк, подключите заново",
+ "Single -1:12 label, both ends collapse.": "Единая метка -1:12, оба конца сворачиваются.",
+ "Single 00:23 label, both ends collapse.": "Единая метка 00:23, оба конца сворачиваются.",
+ "Sits above the title strip": "Располагается над строкой заголовка",
+ "Six horizontal stripes. Pairs with nyan cat dot.": "Шесть горизонтальных полос. Сочетается с точкой nyan cat.",
+ "Six places to start. Tap one and we'll filter the catalog for you.": "Шесть отправных точек. Нажмите одну — и мы отфильтруем каталог за вас.",
+ "Size": "Размер",
+ "Size outlier": "Аномальный размер",
+ "Sketch & Screen": "Скетч и экран",
+ "Sketch Royalty": "Скетч-элита",
+ "Skip": "Пропустить",
+ "Skip Credits": "Пропустить титры",
+ "Skip for now": "Пропустить пока",
+ "Skip if you'd rather just use Cinemeta. Harbor still works, you'll just see fewer rails.": "Пропустите, если хотите использовать только Cinemeta. Harbor всё равно будет работать, просто подборок будет меньше.",
+ "Skip injected ad?": "Пропустить встроенную рекламу?",
+ "Skip injected ads automatically": "Автоматически пропускать встроенную рекламу",
+ "Skip Intro": "Пропустить заставку",
+ "Skip intros": "Пропускать заставки",
+ "Skip intros & credits": "Пропускать заставки и титры",
+ "Skip Recap": "Пропустить дайджест",
+ "Skip setup": "Пропустить настройку",
+ "Skip the 'stream over peer-to-peer?' prompt and start uncached torrents immediately. Harbor remembers your choice after the first confirmation anyway.": "Пропускать запрос «транслировать через P2P?» и сразу запускать некэшированные торренты. Harbor всё равно запомнит ваш выбор после первого подтверждения.",
+ "Skip to the next episode if available.": "Перейти к следующему эпизоду, если доступен.",
+ "Skip to the previous episode if available.": "Перейти к предыдущему эпизоду, если доступен.",
+ "Skip Who's watching and always start as this profile. PIN-locked profiles can't be a default.": "Пропускать экран «Кто смотрит» и всегда запускаться с этим профилем. Профили с PIN-кодом не могут быть профилем по умолчанию.",
+ "skipped {n} anime": "пропущено {n} аниме",
+ "Sleep at end of episode": "Засыпание в конце эпизода",
+ "Sleep timer": "Таймер сна",
+ "Slice": "Срез",
+ "Slice of Life": "Повседневность",
+ "Slide {n}": "Слайд {n}",
+ "Slider": "Ползунок",
+ "Slot": "Слот",
+ "Slot is getting crowded ({n}/{limit}). May overflow on narrow screens.": "Слот заполняется ({n}/{limit}). Может переполниться на узких экранах.",
+ "Slow Burns": "Медленное развитие",
+ "Slow or unstable connection": "Медленное или нестабильное соединение",
+ "Slow playback by 0.25x.": "Замедлить воспроизведение на 0.25x.",
+ "Slow Reveal": "Медленное раскрытие",
+ "Slow-Burn Dramas": "Драмы с медленным развитием",
+ "Slow-burn starts": "Медленное начало",
+ "Slow-burn worlds and bright chapters worth opening with coffee.": "Неспешные миры и яркие главы, которые стоит открыть с чашкой кофе.",
+ "Slow, strange, and absorbing. Best with the lights down low.": "Медленно, странно и затягивающе. Лучше при приглушённом свете.",
+ "Smaller": "Меньше",
+ "Smooth motion": "Плавное движение",
+ "Smooth on weak PCs": "Плавно на слабых ПК",
+ "Social": "Социальное",
+ "Soft (Reinhard)": "Мягкий (Reinhard)",
+ "Soft halo around the text. Cleanest on most content.": "Мягкое свечение вокруг текста. Чище всего смотрится на большинстве контента.",
+ "Softer and dimmer, kinder for late-night watching.": "Мягче и темнее, комфортнее для позднего просмотра.",
+ "Solid fill, no texture. Cleanest baseline.": "Сплошная заливка без текстуры. Самый чистый базовый вариант.",
+ "Some cam and new-release rips have ads spliced into the video itself. When the community has marked one, a Skip button appears. You can also report ads you spot for review. Off by default.": "В некоторых экранках и рипах новых релизов реклама вклеена прямо в видео. Когда сообщество отметило такой случай, появляется кнопка пропуска. Вы также можете сообщить о замеченной рекламе для проверки. По умолчанию отключено.",
+ "Someone I track has a new release": "У отслеживаемого автора новый релиз",
+ "Something else": "Что-то другое",
+ "Something unexpected went wrong. Nothing may have been written. Retry to re-check.": "Произошла непредвиденная ошибка. Возможно, ничего не было записано. Повторите попытку для проверки.",
+ "Something went wrong.": "Что-то пошло не так.",
+ "Song": "Песня",
+ "Sorry this one is not better. Tell us what went wrong and we will fix it for you.": "Жаль, что этот вариант не лучше. Расскажите, что не так, и мы это исправим.",
+ "Source": "Источник",
+ "Source code": "Исходный код",
+ "Source:": "Источник:",
+ "Source: {code}. About 200 lines of JavaScript, no dependencies. Read it before deploying if you want to know what runs.": "Источник: {code}. Около 200 строк JavaScript без зависимостей. Прочитайте перед развёртыванием, если хотите знать, что будет выполняться.",
+ "Sources": "Источники",
+ "Sources are not cached for this title. Open the picker page to refresh.": "Источники для этого тайтла не кэшированы. Откройте страницу выбора, чтобы обновить.",
+ "South Korea": "Южная Корея",
+ "Southpaw": "Левша",
+ "Space Exploration": "Освоение космоса",
+ "Spacefarer": "Космопроходец",
+ "Spaghetti Westerns": "Спагетти-вестерны",
+ "Spain": "Испания",
+ "Spanish": "Испанский",
+ "Spanish (Latin America)": "Испанский (Латинская Америка)",
+ "Specials": "Спецвыпуски",
+ "speed": "скорость",
+ "Speed": "Скорость",
+ "SPEED": "СКОРОСТЬ",
+ "Speed & sleep": "Скорость и сон",
+ "Speed and sleep timer": "Скорость и таймер сна",
+ "Speed down": "Замедлить",
+ "Speed playback up by 0.25x.": "Ускорить воспроизведение на 0.25x.",
+ "Speed test": "Тест скорости",
+ "Speed up": "Ускорить",
+ "Spinner stays forever and nothing in the player loads.": "Индикатор загрузки крутится бесконечно, и ничего в плеере не загружается.",
+ "Spins up a tiny server on Cloudflare's free Workers tier. Stays online forever (or until you stop it). Friends connect by URL.": "Запускает крошечный сервер на бесплатном тарифе Cloudflare Workers. Остаётся онлайн всегда (или пока вы его не остановите). Друзья подключаются по URL.",
+ "Spoiler — Click": "Спойлер — нажмите",
+ "Spoiler — Click to reveal": "Спойлер — нажмите, чтобы раскрыть",
+ "Spoilers": "Спойлеры",
+ "Spooky Season": "Жуткий сезон",
+ "Sports": "Спорт",
+ "Sports & live TV": "Спорт и прямые эфиры",
+ "sports.customize": "Настроить",
+ "sports.customize.all": "Все",
+ "sports.customize.cancel": "Отмена",
+ "sports.customize.clearAll": "Очистить всё",
+ "sports.customize.deselectGroupAll": "Снять всё",
+ "sports.customize.save": "Сохранить",
+ "sports.customize.selectAll": "Выбрать всё",
+ "sports.customize.selected": "Выбрано: {n}",
+ "sports.customize.selectGroupAll": "Выбрать всё",
+ "sports.customize.title": "Настройка лиг",
+ "Spotlight": "В центре внимания",
+ "Spotlight {n}": "В центре внимания {n}",
+ "Spring Awakening": "Весеннее пробуждение",
+ "Square": "Квадрат",
+ "Stable": "Стабильно",
+ "Stable selectors": "Стабильные селекторы",
+ "Stance": "Стойка",
+ "Standalone guide source to attach to existing playlists.": "Отдельный источник телепрограммы для привязки к существующим плейлистам.",
+ "star": "звезда",
+ "Starring a Favorite": "С любимым актёром в главной роли",
+ "stars": "звёзд",
+ "Start a new room": "Создать новую комнату",
+ "Start a room first.": "Сначала создайте комнату.",
+ "Start anyway ({n} still loading)": "Всё равно начать ({n} ещё загружается)",
+ "Start here. The ones almost everyone has.": "Начните отсюда. То, что есть почти у всех.",
+ "Start or stop recording a GIF of the video (no subtitles). Saves to Pictures/Harbor.": "Начать или остановить запись GIF из видео (без субтитров). Сохраняется в Pictures/Harbor.",
+ "Start Over": "Начать заново",
+ "Start recording": "Начать запись",
+ "Start server": "Запустить сервер",
+ "Start trailers with audio": "Запускать трейлеры со звуком",
+ "Start watching": "Начать просмотр",
+ "Start Watching": "Начать просмотр",
+ "Start week on Monday": "Начинать неделю с понедельника",
+ "Start with subtitles off": "Начинать без субтитров",
+ "Starters": "Стартовый состав",
+ "Starting": "Запуск",
+ "Starting…": "Запуск…",
+ "Starts at": "Начинается в",
+ "Startup & default": "Запуск и профиль по умолчанию",
+ "Statistics not available yet.": "Статистика пока недоступна.",
+ "stats": "статистика",
+ "Status": "Статус",
+ "Stay": "Остаться",
+ "Stay in fullscreen after closing the player": "Оставаться в полноэкранном режиме после закрытия плеера",
+ "Stays signed in on this device only.": "Вход сохраняется только на этом устройстве.",
+ "Steals": "Перехваты",
+ "Step 1 · Metadata": "Шаг 1 · Метаданные",
+ "Step 1 · Open Simkl": "Шаг 1 · Откройте Simkl",
+ "Step 1 · Open Trakt": "Шаг 1 · Откройте Trakt",
+ "Step 2 · Enter this code": "Шаг 2 · Введите этот код",
+ "Step 2 · Stremio": "Шаг 2 · Stremio",
+ "Step 3 · Streaming": "Шаг 3 · Потоковое вещание",
+ "Step 4 · Subtitles": "Шаг 4 · Субтитры",
+ "Step back one frame and pause. Frame-accurate on mpv.": "Шаг назад на один кадр и пауза. Точный покадровый переход в mpv.",
+ "Step forward one frame and pause. Frame-accurate on mpv.": "Шаг вперёд на один кадр и пауза. Точный покадровый переход в mpv.",
+ "Step zoom in to crop baked-in black bars (Zoom mode).": "Увеличивать масштаб для обрезки впечатанных чёрных полос (режим масштабирования).",
+ "Step zoom out to restore baked-in black bars (Zoom mode).": "Уменьшать масштаб для восстановления впечатанных чёрных полос (режим масштабирования).",
+ "Stepper": "Шаговый регулятор",
+ "Steps to reproduce": "Шаги для воспроизведения",
+ "Still {n}": "Кадр {n}",
+ "Stills": "Кадры",
+ "Stoner Auteur": "Обкуренный автор",
+ "Stop": "Стоп",
+ "Stop drawing": "Остановить рисование",
+ "Stop feeding the hero carousel (back to automatic)": "Прекратить наполнять карусель вручную (вернуться к автоматике)",
+ "Stop playback when you minimize Harbor or send it to the tray.": "Останавливать воспроизведение при сворачивании Harbor или отправке в трей.",
+ "Stop playback whenever another window takes focus.": "Останавливать воспроизведение, когда фокус переходит на другое окно.",
+ "Stop recording": "Остановить запись",
+ "Stop relay": "Остановить релей",
+ "Stop-Motion": "Стоп-моушн",
+ "Stopped": "Остановлено",
+ "Stopping…": "Остановка…",
+ "Stored as a standalone EPG source. No channels are loaded for EPG-only entries; they're kept here for future attachment to existing playlists.": "Хранится как отдельный источник EPG. Для записей только с EPG каналы не загружаются; они хранятся здесь для будущей привязки к существующим плейлистам.",
+ "Stored locally on this device. Credentials never leave your machine. If a channel fails to play, your provider may rate-limit shared accounts: refresh the playlist or check with them.": "Хранится локально на этом устройстве. Учётные данные никогда не покидают ваш компьютер. Если канал не воспроизводится, провайдер может ограничивать общие аккаунты: обновите плейлист или уточните у провайдера.",
+ "Stories that reward your attention before the day gets loud.": "Истории, которые вознаграждают внимание, пока день ещё не начался.",
+ "Stream": "Поток",
+ "Stream / addons": "Поток / аддоны",
+ "Stream / addons instead": "Вместо этого поток / аддоны",
+ "Stream cache": "Кэш потока",
+ "Stream descriptions": "Описания источников",
+ "Stream failed to load": "Не удалось загрузить источник",
+ "Stream format chips": "Метки формата источника",
+ "Stream is taking a while": "Источник загружается дольше обычного",
+ "Stream quality in player": "Качество потока в плеере",
+ "Stream safety filter": "Фильтр безопасности источников",
+ "Stream should start playing within a few seconds.": "Поток должен начать воспроизводиться через несколько секунд.",
+ "Stream switcher": "Переключатель источников",
+ "Stream torrents straight from Harbor's built-in engine when you have no debrid set up, or a torrent isn't cached. This connects to peers over your own connection. Turn off to only ever play debrid and direct links.": "Транслировать торренты напрямую через встроенный движок Harbor, если дебрид не настроен или торрент не кэширован. Подключается к пирам через ваше собственное соединение. Отключите, чтобы воспроизводить только дебрид и прямые ссылки.",
+ "Stream torrents through Harbor's own Rust peer-to-peer engine instead of the bundled Stremio Server. Falls back automatically if it can't connect. Status and a self-test live in the Local engine card below.": "Транслировать торренты через собственный P2P-движок Harbor на Rust вместо встроенного Stremio Server. Автоматически переключается обратно, если не удаётся подключиться. Статус и самопроверка — в карточке «Локальный движок» ниже.",
+ "Streamers": "Стримеры",
+ "Streaming": "Потоковое вещание",
+ "Streaming catalogs": "Каталоги потокового вещания",
+ "Streaming quality": "Качество потока",
+ "Streaming sources": "Источники потокового вещания",
+ "Streams": "Источники",
+ "Streams from peers": "Потоки от пиров",
+ "Streams in these languages rank first. Toggle below to drop everything else.": "Источники на этих языках ранжируются первыми. Переключатель ниже отбрасывает всё остальное.",
+ "Streams over {cap} Mbps will rank lower, even when cached.": "Источники быстрее {cap} Мбит/с ранжируются ниже, даже если кэшированы.",
+ "Stremio": "Stremio",
+ "Stremio account": "Аккаунт Stremio",
+ "Stremio addon, packaged into Harbor's catalog.": "Аддон Stremio, встроенный в каталог Harbor.",
+ "Stremio cards": "Карточки Stremio",
+ "Stremio didn't confirm the save. Your collection may be unchanged. Retry will re-check before writing again.": "Stremio не подтвердил сохранение. Возможно, коллекция не изменилась. Повтор сначала проверит перед повторной записью.",
+ "Stremio ID": "ID Stremio",
+ "Stremio install links": "Ссылки установки Stremio",
+ "Stremio library repair": "Восстановление библиотеки Stremio",
+ "Stremio link": "Ссылка Stremio",
+ "Stremio link copied": "Ссылка Stremio скопирована",
+ "Stremio rail": "Подборка Stremio",
+ "Stremio reports a different order than was saved.": "Stremio сообщает порядок, отличный от сохранённого.",
+ "stremio:// link": "Ссылка stremio://",
+ "stremio:// links now open in the Stremio app. Harbor will only install when you trigger it from inside Harbor.": "Ссылки stremio:// теперь открываются в приложении Stremio. Harbor устанавливает только по вашему запросу изнутри Harbor.",
+ "Stremio's typeface. Geometric humanist sans.": "Шрифт Stremio. Геометрический гуманистический гротеск.",
+ "Stretch the featured hero edge to edge and taller, across every layout.": "Растягивать главный баннер от края до края и делать выше во всех макетах.",
+ "Strict": "Строгий",
+ "Strict filters dropped everything": "Строгие фильтры отсеяли всё",
+ "Strikeouts": "Страйкауты",
+ "Strikes": "Страйки",
+ "Strong desktops with a dedicated graphics card": "Мощные ПК с дискретной видеокартой",
+ "Studio": "Студия",
+ "Stunts & Spies": "Трюки и шпионы",
+ "Style name": "Название стиля",
+ "Style the timeline at the bottom of the player. Swap the dot for a sticker, change the bar height, recolor it. Settings live-preview right here.": "Настройте оформление шкалы внизу плеера. Замените точку на стикер, измените высоту полосы, перекрасьте её. Настройки отображаются здесь же в реальном времени.",
+ "Styled (ASS) subs keep their own fonts, colors, and effects. Truest to the release.": "Стилизованные субтитры (ASS) сохраняют собственные шрифты, цвета и эффекты. Максимально близко к релизу.",
+ "Styled (ASS) subtitles": "Стилизованные субтитры (ASS)",
+ "subdomain acts as the access token. There is no login.": "поддомен служит токеном доступа. Входа не требуется.",
+ "Submit": "Отправить",
+ "Submit bug report": "Отправить отчёт об ошибке",
+ "Submit report": "Отправить отчёт",
+ "subscriber API key": "API-ключ подписчика",
+ "Subtitle": "Субтитры",
+ "Subtitle appearance": "Оформление субтитров",
+ "Subtitle background": "Фон субтитров",
+ "Subtitle color {color}": "Цвет субтитров {color}",
+ "Subtitle delay +0.1s": "Задержка субтитров +0.1с",
+ "Subtitle delay −0.1s": "Задержка субтитров −0.1с",
+ "Subtitle font size": "Размер шрифта субтитров",
+ "Subtitle languages": "Языки субтитров",
+ "Subtitle style": "Стиль субтитров",
+ "Subtitle sync": "Синхронизация субтитров",
+ "Subtitle track": "Дорожка субтитров",
+ "Subtitles": "Субтитры",
+ "Subtitles are baked into the picture so they always show. Re-encodes the video.": "Субтитры вшиваются в изображение, поэтому отображаются всегда. Видео перекодируется.",
+ "Subtitles haven't been published yet. Try search below or check back in a few days.": "Субтитры ещё не опубликованы. Попробуйте поиск ниже или загляните через несколько дней.",
+ "Subtitles may not appear on the TV.": "Субтитры могут не отображаться на телевизоре.",
+ "Subtle Apple-like sheen on the filled portion.": "Тонкий блеск в стиле Apple на заполненной части.",
+ "summary": "сводка",
+ "Summary": "Сводка",
+ "Summary needs at least 6 characters": "Сводка должна содержать не менее 6 символов",
+ "Summer Blockbusters": "Летние блокбастеры",
+ "Sun": "Вс",
+ "Sundown": "Закат",
+ "Superheroes": "Супергерои",
+ "Supernatural": "Сверхъестественное",
+ "Supporting": "Второй план",
+ "Surprise me": "Удиви меня",
+ "Suspense": "Саспенс",
+ "Suspicious file": "Подозрительный файл",
+ "SVP (free)": "SVP (бесплатно)",
+ "SVP couldn't start, playing without smoothing": "Не удалось запустить SVP, воспроизведение без сглаживания",
+ "SVP frame interpolation": "Интерполяция кадров SVP",
+ "SVP is already handling frame interpolation. Turn off SVP below to use this instead. Running both delays the audio.": "SVP уже выполняет интерполяцию кадров. Отключите SVP ниже, чтобы использовать вместо него это. Одновременная работа обоих вызывает задержку звука.",
+ "SVP is installed but Harbor couldn't find its engine files (svpflow + VapourSynth). Try repairing the SVP install, or reopen SVP once.": "SVP установлен, но Harbor не удалось найти файлы его движка (svpflow + VapourSynth). Попробуйте восстановить установку SVP или один раз заново открыть SVP.",
+ "SVP's files are here but its VapourSynth engine won't load ({err}). This usually means a stale VapourSynth entry or a missing Microsoft VC++ runtime. Reinstall SVP, or install the latest \\": "Файлы SVP на месте, но его движок VapourSynth не загружается ({err}). Обычно это означает устаревшую запись VapourSynth или отсутствующую библиотеку Microsoft VC++. Переустановите SVP или установите последнюю \\",
+ "Swapping configuration": "Замена конфигурации",
+ "Swedish": "Шведский",
+ "Switch": "Переключить",
+ "Switch profile": "Сменить профиль",
+ "Switch stream": "Сменить источник",
+ "Switch stream / TV Guide": "Сменить источник / Телепрограмма",
+ "Switch the menus and buttons to your language. Arabic flips the layout to right to left.": "Переключить меню и кнопки на ваш язык. Арабский переключает раскладку в направление справа налево.",
+ "Switch to {name}": "Переключиться на {name}",
+ "Switch to channel list (hide program guide)": "Переключиться на список каналов (скрыть программу передач)",
+ "Switch to Manual in settings if you'd rather pick the source yourself.": "Переключитесь на «Вручную» в настройках, если хотите выбирать источник самостоятельно.",
+ "Switch to program guide": "Переключиться на программу передач",
+ "Switch to this playlist first": "Сначала переключитесь на этот плейлист",
+ "Sword & Sorcery": "Меч и магия",
+ "Symptom": "Симптом",
+ "Sync": "Синхронизация",
+ "Sync and track movies, shows, and anime across everything you use. Harbor marks what you finish as watched on Simkl and keeps your plan-to-watch list in step. Free at simkl.com.": "Синхронизируйте и отслеживайте фильмы, сериалы и аниме везде, где вы смотрите. Harbor отмечает просмотренное на Simkl и держит ваш список «посмотреть позже» в актуальном состоянии. Бесплатно на simkl.com.",
+ "Sync now": "Синхронизировать сейчас",
+ "Sync Offset": "Смещение синхронизации",
+ "Sync subtitles via text": "Синхронизировать субтитры по тексту",
+ "Sync unavailable": "Синхронизация недоступна",
+ "Sync via text": "Синхронизация по тексту",
+ "Sync watch progress": "Синхронизировать прогресс просмотра",
+ "Sync your library, watch progress, and installed addons across every device.": "Синхронизируйте библиотеку, прогресс просмотра и установленные аддоны на всех устройствах.",
+ "Sync your MyAnimeList watch progress and list as you finish episodes.": "Синхронизируйте прогресс просмотра и список MyAnimeList по мере завершения эпизодов.",
+ "Synced addons": "Синхронизированные аддоны",
+ "Synced to Trakt": "Синхронизировано с Trakt",
+ "Synchronizes playback state between participants in the same room.": "Синхронизирует состояние воспроизведения между участниками одной комнаты.",
+ "Syncing to Stremio": "Синхронизация со Stremio",
+ "Syncing Trakt…": "Синхронизация Trakt…",
+ "Syncing…": "Синхронизация…",
+ "Synopsis": "Синопсис",
+ "System": "Система",
+ "System default": "Системный по умолчанию",
+ "System tray": "Системный трей",
+ "Tackle %": "% захватов",
+ "Tackles": "Захваты",
+ "Takes about 10 seconds.": "Занимает около 10 секунд.",
+ "Tamil": "Тамильский",
+ "Tap": "Нажать",
+ "Tap a line to jump there, then nudge until the subtitles match what you hear.": "Нажмите на строку, чтобы перейти к ней, затем подстройте, пока субтитры не совпадут с тем, что вы слышите.",
+ "Tap a line, then nudge": "Нажмите строку, затем подстройте",
+ "Tap one until your show plays nice and clear!": "Нажимайте, пока сериал не будет воспроизводиться чисто и чётко!",
+ "Tap the genres you want more of. They steer the Top Picks row at the top of this page.": "Нажмите жанры, которых хотите видеть больше. Они влияют на ряд «Лучший выбор» вверху этой страницы.",
+ "Tarantino Picks": "Выбор Тарантино",
+ "TBD": "Уточняется",
+ "Team Turnovers": "Потери команды",
+ "Technical details": "Технические подробности",
+ "Technical Fouls": "Технические фолы",
+ "Technical. IBM's open family.": "Технический. Открытое семейство от IBM.",
+ "Telegram bot": "Бот Telegram",
+ "Telegram sends through a bot you create. You need two things: a": "Telegram отправляет сообщения через созданного вами бота. Нужны две вещи: ",
+ "Television's finest": "Лучшее на телевидении",
+ "Tense Performances": "Напряжённые роли",
+ "Test": "Тест",
+ "Test connection": "Проверить соединение",
+ "Test failed": "Тест не пройден",
+ "Test relay": "Проверить релей",
+ "Testing": "Проверка",
+ "Testing…": "Проверка…",
+ "Text color": "Цвет текста",
+ "Text mode — Esc to exit": "Текстовый режим — Esc для выхода",
+ "Text Sync": "Синхронизация по тексту",
+ "Text sync unavailable for embedded tracks": "Синхронизация по тексту недоступна для встроенных дорожек",
+ "Text-based sync": "Синхронизация по тексту",
+ "Thai": "Тайский",
+ "Thanks! This helps us know the betas are heading the right way.": "Спасибо! Это помогает понять, что бета-версии развиваются в верном направлении.",
+ "Thanks. Sent for review.": "Спасибо. Отправлено на проверку.",
+ "That is a large correction ({n}%). One of the two points may be off, double-check them.": "Это большая поправка ({n}%). Одна из двух точек может быть неверной, перепроверьте их.",
+ "That list is private or doesn't exist. Public lists only.": "Этот список приватный или не существует. Доступны только публичные списки.",
+ "That's every {category} collection we could find.": "Это все подборки «{category}», которые удалось найти.",
+ "That's every collection TMDB knows about.": "Это все подборки, известные TMDB.",
+ "That's everything Cinemeta has for {genre}. Add a TMDB key for deeper rails.": "Это всё, что Cinemeta знает про «{genre}». Добавьте ключ TMDB для более полных подборок.",
+ "That's not it. Try a fresh round in a moment.": "Это не то. Попробуйте заново через мгновение.",
+ "The authorization code timed out before you finished. Try again.": "Время действия кода авторизации истекло раньше, чем вы завершили процесс. Попробуйте снова.",
+ "The Backups button at the top keeps your last five orders. One click restores any of them.": "Кнопка «Резервные копии» вверху хранит последние пять порядков сортировки. Один клик восстанавливает любой из них.",
+ "The best {genre} {media}, layered by mood. Browse trending, dive into a director's run, sort by decade, find quiet gems.": "Лучшее в жанре «{genre}» ({media}), по настроению. Смотрите тренды, погружайтесь в фильмографию режиссёра, сортируйте по десятилетиям, находите тихие жемчужины.",
+ "The Boogeyman": "Бугимен",
+ "The Boss": "Босс",
+ "The British Academy": "Британская академия",
+ "The CPU decodes everything. Most compatible, but it runs hot and can stutter on 4K. Use this only if the picture glitches with hardware decoding on.": "Процессор декодирует всё. Самая широкая совместимость, но греется и может подтормаживать на 4K. Используйте только если изображение искажается при аппаратном декодировании.",
+ "The credentials in the URL are wrong. Edit the playlist and double check the username and password against what your provider sent.": "Учётные данные в URL неверны. Отредактируйте плейлист и сверьте имя пользователя и пароль с тем, что прислал провайдер.",
+ "The critics' cut": "Выбор критиков",
+ "The default round dot.": "Стандартная круглая точка.",
+ "The end time has to be after the start.": "Время окончания должно быть позже времени начала.",
+ "The escape hatch for power users. One mpv option per line as key=value, exactly like mpv.conf. These apply last, so they override every dial above. Anything Harbor can't read is skipped, so a typo won't break playback. Restart playback to apply.": "Лазейка для опытных пользователей. Одна опция mpv на строку в формате ключ=значение, точно как в mpv.conf. Применяются последними и перекрывают все настройки выше. Всё, что Harbor не может прочитать, пропускается, поэтому опечатка не сломает воспроизведение. Перезапустите воспроизведение, чтобы применить.",
+ "The Harbor relay is a Cloudflare Worker that hosts WebSocket rooms for Watch Together. Each user runs their own. There is no central Harbor server.": "Релей Harbor — это Cloudflare Worker, который размещает WebSocket-комнаты для совместного просмотра. Каждый пользователь запускает свой собственный. Единого центрального сервера Harbor нет.",
+ "The Home Front": "Тыл",
+ "The host did not respond. The URL may have expired (many providers rotate domains), the server is down, or your network is blocking it. Contact your provider for an updated URL.": "Хост не ответил. Возможно, срок действия URL истёк (многие провайдеры меняют домены), сервер недоступен или ваша сеть его блокирует. Обратитесь к провайдеру за новым URL.",
+ "The host starts playback for the whole room.": "Хост запускает воспроизведение для всей комнаты.",
+ "The King": "Король",
+ "The Last Stand": "Последний рубеж",
+ "The lighter fill showing how much is buffered or downloaded ahead. It hides automatically once a stream is fully cached (green dot).": "Более светлая заливка показывает объём буферизации или загрузки вперёд. Скрывается автоматически, когда источник полностью кэширован (зелёная точка).",
+ "The little 4K · HDR · codec · audio chips that ride along each stream in the play picker.": "Небольшие метки 4K · HDR · кодек · аудио рядом с каждым источником в списке выбора.",
+ "The Long Lunch": "Долгий обед",
+ "The Master": "Мастер",
+ "The most anticipated upcoming releases on Trakt": "Самые ожидаемые предстоящие релизы на Trakt",
+ "The most anticipated upcoming releases on Trakt. No login needed.": "Самые ожидаемые предстоящие релизы на Trakt. Вход не требуется.",
+ "The most-watched movies and series on {name} right now in {region}.": "Самые популярные фильмы и сериалы на {name} прямо сейчас в регионе {region}.",
+ "The myth, reconsidered": "Миф, переосмысленный",
+ "The order also decides which addon's rows win on your Home screen.": "Порядок также определяет, чьи ряды аддонов побеждают на главном экране.",
+ "The order decides who answers first when you press Play. Drag, use the arrows, or jump anything straight to the top.": "Порядок определяет, кто отвечает первым при нажатии «Воспроизвести». Перетаскивайте, используйте стрелки или переместите что угодно сразу наверх.",
+ "The picker tags each stream with resolution, HDR flavor, codec, and audio format. Off hides them all.": "Список выбора помечает каждый источник разрешением, типом HDR, кодеком и форматом аудио. Отключение скрывает все метки.",
+ "The playlist server actively refused the connection.": "Сервер плейлиста активно отклонил соединение.",
+ "The playlist server is down or your network is blocking it. Try again in a few minutes.": "Сервер плейлиста недоступен или ваша сеть его блокирует. Попробуйте снова через несколько минут.",
+ "The quick brown fox jumps over the lazy dog": "В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!",
+ "The real footage": "Реальные кадры",
+ "The series that make the rest of the night disappear.": "Сериалы, из-за которых остаток вечера пролетает незаметно.",
+ "The server answered with status {status}. Is that a streaming server?": "Сервер ответил со статусом {status}. Это точно сервер потокового вещания?",
+ "The server is reachable but is not sending any data. Check the URL or contact your provider.": "Сервер доступен, но не отправляет данные. Проверьте URL или обратитесь к провайдеру.",
+ "The server rejected the request. Some providers block generic clients; verify the credentials work in their official app first.": "Сервер отклонил запрос. Некоторые провайдеры блокируют универсальные клиенты; сначала проверьте учётные данные в официальном приложении.",
+ "The server replied with a webpage instead of Xtream data. The account may be expired, or the server URL is not an Xtream panel.": "Сервер ответил веб-страницей вместо данных Xtream. Возможно, срок действия аккаунта истёк, или URL сервера — не панель Xtream.",
+ "The server responded but the playlist is not at that URL. Check for typos and verify with your provider.": "Сервер ответил, но плейлиста по этому URL нет. Проверьте на опечатки и уточните у провайдера.",
+ "The server URL, username, or password is wrong. Edit the playlist and re-check the credentials your provider sent.": "URL сервера, имя пользователя или пароль неверны. Отредактируйте плейлист и перепроверьте учётные данные, присланные провайдером.",
+ "The test calls": "Тест обращается к",
+ "The test calls {code} and confirms the worker is reachable and running a current version. A passing test means Watch Together rooms will connect.": "Тест обращается к {code} и подтверждает, что worker доступен и работает на актуальной версии. Успешный тест означает, что комнаты совместного просмотра будут подключаться.",
+ "The Trenches": "Окопы",
+ "The URL hostname is wrong or no longer exists. Many providers rotate domains; ask your provider for an updated playlist URL.": "Имя хоста в URL неверно или больше не существует. Многие провайдеры меняют домены; запросите у провайдера обновлённый URL плейлиста.",
+ "The URL is valid but the playlist is empty. The provider may be in maintenance, or the URL is misconfigured.": "URL корректен, но плейлист пуст. Возможно, у провайдера технические работы, или URL настроен неверно.",
+ "The web build can't run mpv, the trickplay generator, the local bandwidth probe, or your own Cloudflare relay. If you want HDR passthrough, TrueHD or DTS-HD audio, and smoother seeking, grab the desktop app.": "Веб-версия не может запускать mpv, генератор трикплея, локальную проверку пропускной способности или собственный релей Cloudflare. Если нужны сквозная передача HDR, звук TrueHD или DTS-HD и более плавная перемотка, используйте настольное приложение.",
+ "The yellow chip in the poster corner.": "Жёлтая метка в углу постера.",
+ "Theme": "Тема",
+ "Theme & appearance": "Тема и внешний вид",
+ "Theme cheat sheet": "Шпаргалка по теме",
+ "Theme Library": "Библиотека тем",
+ "Themes you imported or built.": "Темы, которые вы импортировали или создали.",
+ "Themes you keep returning to": "Темы, к которым вы возвращаетесь",
+ "THEN notify on": "ЗАТЕМ уведомлять при",
+ "These live in Harbor on this computer and never touch your account.": "Они хранятся в Harbor на этом компьютере и никогда не затрагивают ваш аккаунт.",
+ "These rails activate once a TMDB key is set. You can come back to this anytime in Settings.": "Эти подборки активируются после указания ключа TMDB. Вы можете вернуться к этому в любой момент в настройках.",
+ "These tune the bundled mpv engine, which runs in the Harbor desktop app. They have no effect in the browser.": "Это настраивает встроенный движок mpv, который работает в настольном приложении Harbor. В браузере они не действуют.",
+ "These two points are very close ({n}s apart). Pick one near the start and one near the end, or the timing can drift at the edges.": "Эти две точки расположены очень близко (разница {n} с). Выберите одну ближе к началу, а другую ближе к концу, иначе синхронизация может сбиваться по краям.",
+ "TheTVDB · episode data": "TheTVDB · данные об эпизодах",
+ "Thicker outline": "Толще контур",
+ "Thickness": "Толщина",
+ "Thinner outline": "Тоньше контур",
+ "This Afternoon": "Сегодня днём",
+ "This and next: + {title}": "Этот и следующий: + {title}",
+ "This channel isn't responding": "Этот канал не отвечает",
+ "This file has one audio track.": "У этого файла одна аудиодорожка.",
+ "This file is flagged as not web-playable. Try the mpv backend in Settings or pick another stream.": "Этот файл отмечен как невоспроизводимый в браузере. Попробуйте движок mpv в настройках или выберите другой источник.",
+ "This file is in OneDrive. If \"Files On-Demand\" is on, the file is a cloud placeholder until it's downloaded. Right-click it in Explorer and pick": "Этот файл находится в OneDrive. Если включена функция \"Файлы по запросу\", файл является облачной заглушкой до момента загрузки. Щёлкните по нему правой кнопкой мыши в проводнике и выберите",
+ "This file is in OneDrive. If \\": "Этот файл находится в OneDrive. Если \\",
+ "This instance of Harbor is made for desktop. Our standalone iOS and Android apps are coming soon, each with a bespoke, mobile-first experience built for its native platform.": "Эта версия Harbor создана для настольных систем. Наши отдельные приложения для iOS и Android скоро появятся — каждое с уникальным mobile-first интерфейсом, созданным для своей платформы.",
+ "This is in your local library": "Это есть в вашей локальной библиотеке",
+ "This list is empty, or its items couldn't be matched.": "Этот список пуст, либо его элементы не удалось сопоставить.",
+ "This list needs your {key} API key. Add it in Settings, then refresh.": "Для этого списка нужен ваш API-ключ {key}. Добавьте его в настройках, затем обновите.",
+ "This month": "В этом месяце",
+ "This Morning": "Сегодня утром",
+ "This order syncs to every Stremio app signed into this account.": "Этот порядок синхронизируется со всеми приложениями Stremio, вошедшими в этот аккаунт.",
+ "This playlist has no movies. It may be live channels only, or an Xtream login that exposes movies separately.": "В этом плейлисте нет фильмов. Возможно, это только прямые эфиры, либо вход Xtream, где фильмы предоставляются отдельно.",
+ "This playlist has no shows. It may be live channels only, or an Xtream login that exposes shows separately.": "В этом плейлисте нет сериалов. Возможно, это только прямые эфиры, либо вход Xtream, где сериалы предоставляются отдельно.",
+ "This replaces your current Harbor setup (theme, home layout, settings, addons, profiles, and more) with the {n} saved entries in this file. Your Stremio sign-in stays as is. Harbor reloads when it finishes.": "Это заменит вашу текущую настройку Harbor (тема, макет главной, настройки, аддоны, профили и другое) на {n} сохранённых записей из этого файла. Вход в Stremio останется без изменений. Harbor перезагрузится по завершении.",
+ "This section depends on the addon": "Этот раздел зависит от аддона",
+ "This section relies on TMDB discovery features.": "Этот раздел использует функции поиска TMDB.",
+ "This sets metadata, subtitle, and audio languages to match.": "Это устанавливает соответствующие языки метаданных, субтитров и аудио.",
+ "This show: {title}": "Этот сериал: {title}",
+ "This source": "Этот источник",
+ "This source is slow. Try another.": "Этот источник медленный. Попробуйте другой.",
+ "This thread is locked.": "Эта тема закрыта.",
+ "this title": "этот тайтл",
+ "This trailer plays on YouTube.": "Этот трейлер воспроизводится на YouTube.",
+ "This usually means antivirus removed the server file (stremio-server.exe). Add Harbor's install folder to your antivirus exclusions, then reinstall.": "Обычно это значит, что антивирус удалил файл сервера (stremio-server.exe). Добавьте папку установки Harbor в исключения антивируса, затем переустановите.",
+ "This week": "На этой неделе",
+ "This Xtream account is expired, banned, or disabled on the provider side. Renew or confirm with your provider.": "Срок действия этого аккаунта Xtream истёк, он заблокирован или отключён на стороне провайдера. Продлите или уточните у провайдера.",
+ "Thread body (optional)": "Текст темы (необязательно)",
+ "Thread title": "Заголовок темы",
+ "Three Point %": "% трёхочковых",
+ "Three-Time Oscar": "Трёхкратный обладатель «Оскара»",
+ "Thriller": "Триллер",
+ "Thrillers": "Триллеры",
+ "Thu": "Чт",
+ "Thumbs down hides this title from Featured. Thumbs up helps surface similar picks.": "Дизлайк скрывает этот тайтл из подборки «Рекомендуем». Лайк помогает находить похожие варианты.",
+ "Ticking Clocks": "На часах",
+ "Tighter spacing": "Плотнее интервалы",
+ "Tiles horizontally; the bar's height crops it vertically. Animated GIFs up to 2 MB play.": "Заполняет по горизонтали; высота панели обрезает по вертикали. Анимированные GIF до 2 МБ воспроизводятся.",
+ "Time elapsed": "Прошло времени",
+ "Time format": "Формат времени",
+ "Time remaining or duration": "Осталось времени или длительность",
+ "Time's up!": "Время вышло!",
+ "Timeless": "Вне времени",
+ "title": "название",
+ "Title": "Название",
+ "Title & info": "Название и информация",
+ "Title info": "Информация о тайтле",
+ "Title text": "Текст названия",
+ "titles": "тайтлы",
+ "Titles, overviews, and taglines from TMDB display in this language when a translation exists. Needs a TMDB key.": "Названия, описания и слоганы из TMDB отображаются на этом языке, если есть перевод. Требуется ключ TMDB.",
+ "TMDB": "TMDB",
+ "TMDB · catalogs and rails": "TMDB · каталоги и подборки",
+ "TMDB asks for an app URL when you create the key. Put any URL at all, like https://harbor.app. The only thing you need back is the API key.": "TMDB просит указать URL приложения при создании ключа. Подойдёт любой URL, например https://harbor.app. Важен только полученный API-ключ.",
+ "TMDB connected. {n} streaming {services} on. Welcome aboard.": "TMDB подключён. {n} стриминговых {services} включено. Добро пожаловать.",
+ "TMDB has no notable releases for this month and region.": "У TMDB нет заметных релизов за этот месяц в этом регионе.",
+ "TMDB powers the firehose of every release this month. The free tier covers it. About 60 seconds to set up. Switch to My Library if you'd rather only see what you've saved.": "TMDB обеспечивает полный поток релизов этого месяца. Бесплатного тарифа достаточно. Настройка займёт около 60 секунд. Переключитесь на «Моя библиотека», если хотите видеть только сохранённое.",
+ "TMDB Rating": "Рейтинг TMDB",
+ "to bring in your library.": "чтобы подключить вашу библиотеку.",
+ "to close": "чтобы закрыть",
+ "to refresh the bundled dataset.": "чтобы обновить встроенный набор данных.",
+ "To run a public relay, post the": "Чтобы запустить публичный ретранслятор, опубликуйте",
+ "To run a public relay, post the {code} URL on r/Stremio or wherever your community lives. Other Harbor users paste it into Settings, Harbor Relay, {kbd}.": "Чтобы запустить публичный ретранслятор, опубликуйте URL {code} на r/Stremio или там, где обитает ваше сообщество. Другие пользователи Harbor вставят его в Настройки, Ретранслятор Harbor, {kbd}.",
+ "To the side": "Сбоку",
+ "today": "сегодня",
+ "Today": "Сегодня",
+ "Today's openers": "Премьеры дня",
+ "Toggle a sleep timer that pauses when this episode ends.": "Включить таймер сна, который поставит на паузу по окончании этого эпизода.",
+ "Toggle fullscreen": "Переключить полноэкранный режим",
+ "Toggle guide layout": "Переключить макет программы передач",
+ "Toggle HDR to SDR": "Переключить HDR в SDR",
+ "Toggle mute": "Переключить звук",
+ "Toggle playback.": "Переключить воспроизведение.",
+ "Toggle RTX Video HDR": "Переключить RTX Video HDR",
+ "Toggle RTX Video HDR during mpv playback. Unavailable while HDR-to-SDR tonemapping or SVP is active.": "Переключить RTX Video HDR во время воспроизведения в mpv. Недоступно, пока активны тонмаппинг HDR-в-SDR или SVP.",
+ "Toggle stats overlay": "Переключить оверлей статистики",
+ "Token name can be anything. The permission row must be exactly {b1} + {b2} + {b3}.": "Имя токена может быть любым. Строка прав должна точно соответствовать {b1} + {b2} + {b3}.",
+ "Token works, but no accounts came back. Check the token's permissions.": "Токен работает, но аккаунты не получены. Проверьте права токена.",
+ "Tomatometer": "Индекс свежести",
+ "tomorrow": "завтра",
+ "Tone-mapping curve": "Кривая тонмаппинга",
+ "Tonemap to SDR": "Тонмаппинг в SDR",
+ "Tonight": "Сегодня вечером",
+ "Tonight's binge bait": "Приманка для вечернего марафона",
+ "Tonight's lineup": "Программа на вечер",
+ "Tonight's main event": "Главное событие вечера",
+ "Tonight's marquee": "Афиша вечера",
+ "Tonight's Slate": "Список на вечер",
+ "Too many requests from your IP. Wait a minute and try again.": "Слишком много запросов с вашего IP. Подождите минуту и попробуйте снова.",
+ "Tools": "Инструменты",
+ "Top": "Сверху",
+ "Top · left": "Сверху слева",
+ "Top · right": "Сверху справа",
+ "Top {n}": "Топ {n}",
+ "Top 10": "Топ-10",
+ "Top 10 {name}": "Топ-10 {name}",
+ "Top 10 Comedy": "Топ-10 комедий",
+ "Top 10 Drama": "Топ-10 драм",
+ "Top 10 Movies on {name}": "Топ-10 фильмов на {name}",
+ "Top 10 Movies Today": "Топ-10 фильмов сегодня",
+ "Top 10 on Stremio": "Топ-10 на Stremio",
+ "Top 10 Series on {name}": "Топ-10 сериалов на {name}",
+ "Top 10 Series Today": "Топ-10 сериалов сегодня",
+ "Top 10 Trending This Week": "Топ-10 популярного за неделю",
+ "Top 100 Actors": "Топ-100 актёров",
+ "Top 100 Directors": "Топ-100 режиссёров",
+ "Top 100 on AniList": "Топ-100 на AniList",
+ "Top 100 Producers": "Топ-100 продюсеров",
+ "Top 100 Writers": "Топ-100 сценаристов",
+ "Top 250": "Топ-250",
+ "Top Action": "Топ боевиков",
+ "Top Adventure": "Топ приключений",
+ "Top Airing on MAL": "Топ выходящих на MAL",
+ "Top Animation": "Топ анимации",
+ "Top bar": "Верхняя панель",
+ "Top Comedy": "Топ комедий",
+ "Top Crime": "Топ криминала",
+ "Top dock": "Верхняя панель",
+ "Top Documentary": "Топ документалистики",
+ "Top Drama": "Топ драм",
+ "Top Fantasy": "Топ фэнтези",
+ "Top Horror": "Топ ужасов",
+ "Top left": "Сверху слева",
+ "Top Movies": "Топ фильмов",
+ "Top Movies on MAL": "Топ фильмов на MAL",
+ "Top Mystery": "Топ детективов",
+ "Top pick": "Лучший выбор",
+ "Top Picks for You": "Лучший выбор для вас",
+ "Top rated": "Высокий рейтинг",
+ "Top Rated": "Высокий рейтинг",
+ "Top rated abroad": "Высокий рейтинг за рубежом",
+ "Top Rated Movies": "Фильмы с высоким рейтингом",
+ "Top Rated on MAL": "Высокий рейтинг на MAL",
+ "Top Rated Series": "Сериалы с высоким рейтингом",
+ "Top rated television": "Высокий рейтинг на ТВ",
+ "Top right": "Сверху справа",
+ "Top rising": "Быстро растущие",
+ "Top Romance": "Топ мелодрам",
+ "Top Sci-Fi": "Топ фантастики",
+ "Top Series": "Топ сериалов",
+ "Top Series on MAL": "Топ сериалов на MAL",
+ "Top Thriller": "Топ триллеров",
+ "Top titles per service. Toggle off the ones you don't pay for.": "Лучшие тайтлы по каждому сервису. Отключите те, за которые не платите.",
+ "TorBox API key": "API-ключ TorBox",
+ "Torrent name": "Название торрента",
+ "Torrents": "Торренты",
+ "Total Shots": "Всего бросков",
+ "Total Technical Fouls": "Всего технических фолов",
+ "Total Turnovers": "Всего потерь",
+ "Towering Roles": "Величайшие роли",
+ "Track": "Дорожка",
+ "Track everything you watch, see your watchlist, and get personalized recommendations on Harbor's home page. Free at trakt.tv.": "Отслеживайте всё, что смотрите, ведите список желаемого и получайте персональные рекомендации на главной странице Harbor. Бесплатно на trakt.tv.",
+ "Track people": "Отслеживать людей",
+ "Track people ({n})": "Отслеживать людей ({n})",
+ "Track switching isn't supported on the current engine. The file's default audio is playing.": "Переключение дорожек не поддерживается текущим движком. Воспроизводится аудио по умолчанию из файла.",
+ "Tracked people": "Отслеживаемые люди",
+ "Tracks": "Дорожки",
+ "TRACKS": "ДОРОЖКИ",
+ "Trailer quality": "Качество трейлера",
+ "Trakt": "Trakt",
+ "Trakt account limit reached. Upgrade to Trakt VIP or trim your watchlist.": "Достигнут лимит аккаунта Trakt. Оформите Trakt VIP или сократите список желаемого.",
+ "Trakt anticipated": "Ожидаемое на Trakt",
+ "Trakt anticipated picks up something": "Ожидаемое на Trakt подхватывает кое-что",
+ "Trakt Comments": "Комментарии Trakt",
+ "Trakt comments are not available for anime titles.": "Комментарии Trakt недоступны для аниме-тайтлов.",
+ "Trakt community rating as a percentage.": "Рейтинг сообщества Trakt в процентах.",
+ "Trakt has no upcoming releases for your watchlist this month. Past months and dates more than six months out aren't covered by Trakt's calendar feed.": "У Trakt нет предстоящих релизов из вашего списка желаемого на этот месяц. Прошедшие месяцы и даты далее шести месяцев не входят в календарь Trakt.",
+ "Trakt history": "История Trakt",
+ "Trakt is having server trouble (HTTP {n}). Try again shortly.": "У Trakt проблемы на сервере (HTTP {n}). Повторите попытку позже.",
+ "Trakt is rate-limiting. Wait a minute and try again.": "Trakt ограничивает частоту запросов. Подождите минуту и попробуйте снова.",
+ "Trakt rejected the request (account locked or permission denied).": "Trakt отклонил запрос (аккаунт заблокирован или нет прав).",
+ "Trakt rejected the request (HTTP {n}).": "Trakt отклонил запрос (HTTP {n}).",
+ "Trakt reported that authorization was denied. Try again if this was unintentional.": "Trakt сообщил об отказе в авторизации. Попробуйте снова, если это произошло случайно.",
+ "Trakt sign-in expired. Reconnect Trakt in settings and try again.": "Сессия входа Trakt истекла. Переподключите Trakt в настройках и попробуйте снова.",
+ "Trakt sources": "Источники Trakt",
+ "Trakt watchlist": "Список желаемого Trakt",
+ "Translate descriptions": "Переводить описания",
+ "Translate descriptions and synopsis to Arabic": "Переводить описания и синопсисы на арабский",
+ "Translate overviews": "Переводить описания",
+ "Translate plot descriptions and taglines into the language above. Turn off to keep English overviews.": "Переводить описания сюжета и слоганы на язык, указанный выше. Отключите, чтобы оставить описания на английском.",
+ "Translate posters": "Переводить постеры",
+ "Translate series and movie posters to Arabic if available on TMDB": "Переводить постеры сериалов и фильмов на арабский, если доступно в TMDB",
+ "Translate titles": "Переводить названия",
+ "Transport": "Транспорт",
+ "Trending": "В тренде",
+ "Trending · Cinemeta": "В тренде · Cinemeta",
+ "Trending Anime": "Аниме в тренде",
+ "Trending on AniList": "В тренде на AniList",
+ "Trending Series": "Сериалы в тренде",
+ "Trending This Week": "В тренде на этой неделе",
+ "Trending tracks star growth across your Harbor visits. Open the addons page again tomorrow and the top risers will appear here.": "«В тренде» отслеживает рост звёзд по вашим визитам в Harbor. Откройте страницу аддонов завтра снова, и здесь появятся лидеры роста.",
+ "Trending, in theaters, what's on every streamer.": "В тренде, в кино, что есть на каждом стриминге.",
+ "Tried IDs: ": "Проверены ID: ",
+ "Troubleshooting": "Устранение неполадок",
+ "True Crime": "Реальные преступления",
+ "True Crime Files": "Досье реальных преступлений",
+ "True HDR, embedded": "Настоящий HDR, встроенный",
+ "True HDR, separate window": "Настоящий HDR, отдельное окно",
+ "True Stories": "Реальные истории",
+ "Try a different category or clear your filters.": "Попробуйте другую категорию или сбросьте фильтры.",
+ "Try a different source.": "Попробуйте другой источник.",
+ "Try a different spelling, a person's name, a year like \\": "Попробуйте другое написание, имя человека, год вроде \\",
+ "Try a genre": "Попробуйте жанр",
+ "Try again": "Повторить попытку",
+ "Try another source.": "Попробуйте другой источник.",
+ "Try deploy again": "Повторить развёртывание",
+ "Try signing in to Stremio so Harbor can use your addon collection. Older or foreign titles often need Torrentio + a debrid addon to find anything.": "Попробуйте войти в Stremio, чтобы Harbor мог использовать вашу коллекцию аддонов. Для старых или зарубежных тайтлов часто нужны Torrentio и дебрид-аддон, чтобы хоть что-то найти.",
+ "Tue": "Вт",
+ "Tune picks": "Настроить подборку",
+ "Tune the size and corner radius of every poster across Home, Discover, and your library. The preview updates live.": "Настройте размер и скругление углов всех постеров на Главной, в Обзоре и в библиотеке. Предпросмотр обновляется в реальном времени.",
+ "Tune your picks": "Настройте свою подборку",
+ "Tune your recommendations": "Настройте рекомендации",
+ "Tune your Top Picks": "Настройте «Лучший выбор»",
+ "Turkish": "Турецкий",
+ "Turn {name} off": "Выключить {name}",
+ "Turn {name} on": "Включить {name}",
+ "Turn it on in Player layout": "Включите в макете плеера",
+ "Turn It Up": "Сделай громче",
+ "Turn off": "Выключить",
+ "Turn off for a cleaner grid. Score chips are controlled separately below.": "Отключите для более чистой сетки. Значки с оценками настраиваются отдельно ниже.",
+ "Turn on": "Включить",
+ "Turn on if you watch on a laptop or headphones and dialogue feels too quiet next to the effects. Leave off if you have a real surround setup or a soundbar.": "Включите, если смотрите на ноутбуке или в наушниках и диалоги теряются на фоне эффектов. Оставьте выключенным при настоящей акустике объёмного звука или саундбаре.",
+ "Turn on to show each episode's synopsis under the still.": "Включите, чтобы показывать синопсис каждого эпизода под кадром.",
+ "Turn on to show the Trakt comments section on movies, shows, and episodes.": "Включите, чтобы показывать раздел комментариев Trakt для фильмов, сериалов и эпизодов.",
+ "Turnovers": "Потери",
+ "Turns off the fancy scaling and effects so video just plays. The lightest on your machine. Pick this if anything ever stutters or your fan screams.": "Отключает продвинутое масштабирование и эффекты — видео просто воспроизводится. Наименьшая нагрузка на систему. Выбирайте, если что-то тормозит или кулер ревёт.",
+ "TV": "ТВ",
+ "TV Genre": "Жанр ТВ",
+ "TV guide": "Программа передач",
+ "TV Guide": "Программа передач",
+ "TV Shows": "Сериалы",
+ "TV Shows · {n}": "Сериалы · {n}",
+ "TVDB": "TVDB",
+ "TVDB order": "Порядок TVDB",
+ "Twist Endings": "Неожиданные концовки",
+ "Two formats work: a bare RPDB-compatible server URL (your RPDB key above is still sent), or a full URL pattern from services like BetterPosters containing ": "Подходят два формата: обычный URL сервера, совместимого с RPDB (ваш ключ RPDB выше по-прежнему отправляется), или полный шаблон URL от сервисов вроде BetterPosters, содержащий ",
+ "Two paths: Harbor handles the deploy for you, or you do it yourself with wrangler.": "Два пути: Harbor разворачивает всё за вас, либо вы делаете это сами через wrangler.",
+ "Two-factor authentication code": "Код двухфакторной аутентификации",
+ "Type": "Тип",
+ "Type on your keyboard or tap the digits above.": "Печатайте на клавиатуре или нажимайте цифры выше.",
+ "Type the same 4-digit PIN again.": "Введите тот же 4-значный PIN ещё раз.",
+ "Type the same PIN one more time.": "Введите тот же PIN ещё раз.",
+ "Type what you want in plain language and let a model find it. Bring your own OpenRouter key.": "Опишите, что хотите, обычным языком — модель найдёт это. Нужен собственный ключ OpenRouter.",
+ "Types": "Типы",
+ "Typography": "Типографика",
+ "UFOs & Disclosure": "НЛО и разоблачения",
+ "Ukrainian": "Украинский",
+ "Unable to connect": "Не удалось подключиться",
+ "Unable to load series information": "Не удалось загрузить информацию о сериале",
+ "Unavailable for embedded tracks": "Недоступно для встроенных дорожек",
+ "uncached on debrid": "не кешировано на дебриде",
+ "Uncharted Worlds": "Неизведанные миры",
+ "Undo": "Отменить",
+ "Undo All": "Отменить всё",
+ "Undo last anchor": "Отменить последний якорь",
+ "Unhide {name}": "Показать {name}",
+ "Uninstalling": "Удаление",
+ "United Kingdom": "Великобритания",
+ "United States": "США",
+ "unknown": "неизвестно",
+ "Unknown": "Неизвестно",
+ "unknown error": "неизвестная ошибка",
+ "Unknown release": "Неизвестный релиз",
+ "Unlimited Durable Object storage at $0.20 per million reads.": "Неограниченное хранилище Durable Object по $0,20 за миллион чтений.",
+ "Unmute": "Включить звук",
+ "Unmute · M": "Включить звук · M",
+ "Unmute trailer": "Включить звук трейлера",
+ "Unpin category": "Открепить категорию",
+ "Unpin channel": "Открепить канал",
+ "Unpin from top": "Открепить сверху",
+ "Unraveling": "Разгадка",
+ "Unreachable": "Недоступно",
+ "unsaved changes": "несохранённые изменения",
+ "Until {time} · {dur}": "До {time} · {dur}",
+ "Untitled": "Без названия",
+ "Untitled addon": "Аддон без названия",
+ "Untitled filter": "Фильтр без названия",
+ "Up": "Вверх",
+ "Up next": "Далее",
+ "Up Next": "Далее",
+ "Up next / episodes": "Далее / эпизоды",
+ "Up next in {s}s": "Далее через {s} с",
+ "Upcoming": "Скоро",
+ "Upcoming Anime": "Скоро выйдет аниме",
+ "Upcoming episodes and movies from your saved shows": "Предстоящие эпизоды и фильмы из ваших сохранённых сериалов",
+ "Upcoming episodes and movies from your Simkl plan-to-watch list": "Предстоящие эпизоды и фильмы из списка «Буду смотреть» Simkl",
+ "Upcoming episodes and movies from your Trakt watchlist": "Предстоящие эпизоды и фильмы из списка желаемого Trakt",
+ "Upcoming episodes and movies from your Trakt watchlist.": "Предстоящие эпизоды и фильмы из списка желаемого Trakt.",
+ "Upcoming items from your watchlist": "Предстоящие элементы из вашего списка желаемого",
+ "Upcoming Season": "Предстоящий сезон",
+ "Upconverts SDR video to HDR on an Nvidia RTX GPU (turn on RTX Video HDR in the Nvidia app; needs GPU decode). Experimental. Unavailable while SVP is active for the current video.": "Преобразует SDR-видео в HDR на GPU Nvidia RTX (включите RTX Video HDR в приложении Nvidia; нужно аппаратное декодирование). Экспериментально. Недоступно, пока для текущего видео активен SVP.",
+ "Update": "Обновить",
+ "Update now": "Обновить сейчас",
+ "update.available": "update.available",
+ "update.download": "update.download",
+ "update.downloadComplete": "update.downloadComplete",
+ "update.downloading": "update.downloading",
+ "update.errorServer": "update.errorServer",
+ "update.failed": "update.failed",
+ "update.fetching": "update.fetching",
+ "update.harborVersion": "Harbor {version}",
+ "update.installing": "update.installing",
+ "update.installRestart": "update.installRestart",
+ "update.keepUsing": "update.keepUsing",
+ "update.later": "update.later",
+ "update.of": "{downloaded} из {total}",
+ "update.ready": "update.ready",
+ "update.restartAuto": "update.restartAuto",
+ "update.tryAgain": "update.tryAgain",
+ "Updated": "Обновлено",
+ "Updates": "Обновления",
+ "Updating": "Обновление",
+ "Updating {name}": "Обновление {name}",
+ "Upgrade subtitles when better ones load": "Заменять субтитры при загрузке более качественных",
+ "Upload a pattern to tile across the bar": "Загрузите узор для заполнения панели",
+ "Upload font": "Загрузить шрифт",
+ "Upload icon": "Загрузить значок",
+ "Upload nyan cat, a sticker, anything": "Загрузите nyan cat, стикер, что угодно",
+ "Upload photo": "Загрузить фото",
+ "Uploading worker, wiring durable object…": "Загрузка воркера, настройка durable object…",
+ "URL + EPG saved": "URL + EPG сохранены",
+ "URL cannot be empty": "URL не может быть пустым",
+ "URL is saved and ready to share.": "URL сохранён и готов к передаче.",
+ "URL on r/Stremio or wherever your community lives. Other Harbor users paste it into Settings, Harbor Relay,": "URL на r/Stremio или там, где обитает ваше сообщество. Другие пользователи Harbor вставят его в Настройки, Ретранслятор Harbor,",
+ "URL saved": "URL сохранён",
+ "URLs can carry debrid keys or tokens; reveal when you need to copy": "URL могут содержать ключи или токены дебрида; открывайте, когда нужно скопировать",
+ "Use a custom meta addon you installed (e.g. a localized Cinemeta) for titles and descriptions instead of the built-in Cinemeta. Falls back to Cinemeta if yours has no data.": "Использовать установленный вами мета-аддон (например, локализованный Cinemeta) для названий и описаний вместо встроенного Cinemeta. При отсутствии данных используется резервный Cinemeta.",
+ "Use a different URL": "Использовать другой URL",
+ "Use a separate Stremio account": "Использовать отдельный аккаунт Stremio",
+ "Use AniList avatar": "Использовать аватар AniList",
+ "Use exclusively (never fall back to local)": "Использовать исключительно (никогда не переключаться на локальные)",
+ "Use free IMDb data without a TMDB key": "Использовать бесплатные данные IMDb без ключа TMDB",
+ "Use Harbor's built-in engine (beta)": "Использовать встроенный движок Harbor (бета)",
+ "Use Harbor's public relay": "Использовать публичный ретранслятор Harbor",
+ "Use mpv engine": "Использовать движок mpv",
+ "Use my AniList avatar as my Harbor avatar": "Использовать мой аватар AniList как аватар Harbor",
+ "Use my Simkl avatar as my Harbor avatar": "Использовать мой аватар Simkl как аватар Harbor",
+ "Use my style": "Использовать мой стиль",
+ "Use my Trakt avatar as my Harbor avatar": "Использовать мой аватар Trakt как аватар Harbor",
+ "Use MyAnimeList avatar": "Использовать аватар MyAnimeList",
+ "Use Simkl avatar": "Использовать аватар Simkl",
+ "Use the native window title bar": "Использовать системную строку заголовка окна",
+ "Use the primary profile's Stremio library, watchlist, and addons.": "Использовать библиотеку, список желаемого и аддоны Stremio основного профиля.",
+ "Use Trakt avatar": "Использовать аватар Trakt",
+ "Use your operating system's native title bar and window buttons instead of Harbor's built-in ones. Handy if the in-app buttons ever feel out of reach, like during playback.": "Использовать системную строку заголовка и кнопки окна вместо встроенных в Harbor. Удобно, если кнопки приложения кажутся труднодоступными, например при воспроизведении.",
+ "Used for streaming availability and the Now Playing release window.": "Используется для доступности стриминга и окна релиза «Сейчас идёт».",
+ "Used for streaming availability and the Now Playing release window. Pick a country and Harbor can match metadata and subtitle languages to it.": "Используется для доступности стриминга и окна релиза «Сейчас идёт». Выберите страну, и Harbor сможет подобрать под неё метаданные и языки субтитров.",
+ "Used for your cursor in Watch Together, your draw color, and your name pill in chat.": "Используется для вашего курсора в «Смотрим вместе», цвета рисования и плашки с именем в чате.",
+ "Used to lift Time's Up and to leave the kids space.": "Используется, чтобы снять ограничение «Время вышло» и выйти из детского пространства.",
+ "Usenet": "Usenet",
+ "Username": "Имя пользователя",
+ "Using AIOStreams or another aggregator addon? Its own sorting and filtering happen inside the addon before Harbor ever sees the results, then Harbor applies the stream filter and result order above on top. If results look thinner than expected, keep one side permissive: either relax the addon's internal filters or set Harbor's stream filter to Balanced or Off.": "Используете AIOStreams или другой аддон-агрегатор? Его собственная сортировка и фильтрация происходят внутри аддона ещё до того, как Harbor увидит результаты, а затем Harbor поверх этого применяет фильтр потоков и порядок результатов выше. Если результатов меньше, чем ожидалось, оставьте одну из сторон менее строгой: либо ослабьте внутренние фильтры аддона, либо установите фильтр потоков Harbor на «Сбалансированный» или «Выкл».",
+ "v3 API key": "API-ключ v3",
+ "VA": "VA",
+ "Venice": "Венеция",
+ "Verify": "Подтвердить",
+ "Verify & connect": "Подтвердить и подключить",
+ "Verify it works": "Проверить работоспособность",
+ "Verifying": "Проверка",
+ "Version": "Версия",
+ "Version and capabilities come straight from the addon's manifest. Ratings and categories come from the": "Версия и возможности берутся прямо из манифеста аддона. Рейтинги и категории — из",
+ "via": "через",
+ "Video {n}": "Видео {n}",
+ "Video bitrate": "Битрейт видео",
+ "Video codec": "Видеокодек",
+ "Videos": "Видео",
+ "Vietnam & After": "Вьетнам и после",
+ "Vietnamese": "Вьетнамский",
+ "View all": "Смотреть все",
+ "View all {n} winners": "Смотреть всех победителей ({n})",
+ "View details": "Подробности",
+ "View more": "Показать ещё",
+ "View on Letterboxd": "Смотреть на Letterboxd",
+ "View profile": "Профиль",
+ "View Series": "К сериалу",
+ "Viewer avatars": "Аватары зрителей",
+ "Villain": "Злодей",
+ "visible": "видимо",
+ "Visible": "Видимо",
+ "Vocal clarity": "Чёткость голоса",
+ "Volume": "Громкость",
+ "VOLUME": "ГРОМКОСТЬ",
+ "Volume control": "Управление громкостью",
+ "Volume down": "Тише",
+ "Volume pop-up while watching": "Всплывающая громкость во время просмотра",
+ "Volume up": "Громче",
+ "Vote average ≥ 8.0": "Средняя оценка ≥ 8.0",
+ "Votes": "Голоса",
+ "Wait for the upload to finish. The relay URL gets written to": "Дождитесь окончания загрузки. URL ретранслятора будет записан в",
+ "Wait for the upload to finish. The relay URL gets written to {code} in Harbor settings.": "Дождитесь окончания загрузки. URL ретранслятора будет записан в {code} в настройках Harbor.",
+ "Waiting for the host to start": "Ожидание запуска хостом",
+ "Waiting for Trakt…": "Ожидание Trakt…",
+ "Waiting for you to authorize on simkl.com…": "Ожидание авторизации на simkl.com…",
+ "Waiting for you to authorize on trakt.tv…": "Ожидание авторизации на trakt.tv…",
+ "Walks": "Уокеры",
+ "Want to change the ratio mid-playback? The live aspect button is hidden by default to keep the player tidy.": "Хотите менять соотношение сторон прямо во время просмотра? Кнопка соотношения сторон скрыта по умолчанию, чтобы не загромождать плеер.",
+ "Want to fix it yourself?": "Хотите исправить это самостоятельно?",
+ "Wanted dead or alive": "Разыскивается живым или мёртвым",
+ "War": "Военный",
+ "War Films": "Военные фильмы",
+ "War Stories": "Военные истории",
+ "Wars of our time": "Войны нашего времени",
+ "Watch again": "Смотреть снова",
+ "Watch from the beginning": "Смотреть с начала",
+ "Watch my local copy": "Смотреть мою локальную копию",
+ "Watch on": "Смотреть на",
+ "Watch on YouTube": "Смотреть на YouTube",
+ "Watch party join button": "Кнопка присоединения к совместному просмотру",
+ "Watch together": "Смотрим вместе",
+ "Watch Together": "Смотрим вместе",
+ "Watch Together needs a relay.": "Для «Смотрим вместе» нужен ретранслятор.",
+ "Watch Together panel": "Панель «Смотрим вместе»",
+ "Watch Together rooms are routed through Harbor's hosted relay.": "Комнаты «Смотрим вместе» проходят через размещённый ретранслятор Harbor.",
+ "Watch Together rooms drop after 6 hours": "Комнаты «Смотрим вместе» закрываются через 6 часов",
+ "Watch trailer": "Смотреть трейлер",
+ "Watched": "Просмотрено",
+ "Watched {ago}": "Просмотрено {ago}",
+ "Watched by {name}": "Просмотрено: {name}",
+ "Watched on Trakt": "Просмотрено на Trakt",
+ "Watching": "Смотрю",
+ "Watching for ad, analytics, and tracking requests. Harbor itself sends zero telemetry.": "Отслеживание запросов рекламы, аналитики и трекеров. Сам Harbor не отправляет телеметрию.",
+ "Watchlist": "Список желаемого",
+ "Watchlist badge": "Значок списка желаемого",
+ "Watchlist is what you've saved for later. History is everything you've watched. Local is files on your computer.": "Список желаемого — это то, что вы сохранили на потом. История — всё, что вы посмотрели. Локальное — файлы на вашем компьютере.",
+ "Watchlist only": "Только список желаемого",
+ "Watchlist shows only saved titles": "Список желаемого показывает только сохранённые тайтлы",
+ "We could not find a working stream": "Не удалось найти рабочий поток",
+ "We need to check your age before you sail ahead. Three quick questions a working adult would know in their sleep. Get them all right and the adult shelf opens.": "Прежде чем продолжить, нужно проверить ваш возраст. Три коротких вопроса, на которые взрослый ответит не задумываясь. Ответите верно на все — откроется взрослый раздел.",
+ "We opened {url} in your browser. Enter the code below.": "Мы открыли {url} в вашем браузере. Введите код ниже.",
+ "We'll name it from the URL.": "Мы назовём его по URL.",
+ "We'll save your spot so you can pick up right where you left off.": "Мы сохраним место, чтобы вы могли продолжить с того же момента.",
+ "Wear your Simkl profile picture across Harbor instead of the default.": "Использовать фото профиля Simkl в Harbor вместо стандартного.",
+ "Wear your Trakt profile picture across Harbor instead of the default.": "Использовать фото профиля Trakt в Harbor вместо стандартного.",
+ "Web": "Веб",
+ "Web build": "Веб-сборка",
+ "Webhooks": "Вебхуки",
+ "Wed": "Ср",
+ "Weight": "Насыщенность",
+ "Welcome aboard": "Добро пожаловать",
+ "Werner's World": "Мир Вернера",
+ "Western": "Вестерн",
+ "Westerns": "Вестерны",
+ "What actually happened": "Что произошло на самом деле",
+ "What broke?": "Что сломалось?",
+ "What everyone has been quietly binging this week.": "Что все тихонько запоем смотрели на этой неделе.",
+ "What gets sent": "Что отправляется",
+ "What gets through": "Что проходит",
+ "What happens when you hit Play on a title. Instant just starts; Manual lets you pick the source.": "Что происходит при нажатии «Воспроизвести» на тайтле. «Мгновенно» сразу запускает; «Вручную» позволяет выбрать источник.",
+ "What is this title?": "Что это за тайтл?",
+ "What is this?": "Что это?",
+ "What people are watching": "Что смотрят люди",
+ "What Play does when a movie or episode also exists on your disk. Autoplay always prefers the local copy unless set to Stream.": "Что делает «Воспроизвести», если фильм или эпизод также есть на вашем диске. Автовоспроизведение всегда предпочитает локальную копию, если не выбран режим «Поток».",
+ "What should we watch?": "Что бы посмотреть?",
+ "What the clock labels show on the seek bar.": "Что показывают подписи времени на полосе перемотки.",
+ "What the worker does": "Что делает воркер",
+ "What to include": "Что включить",
+ "What to record": "Что записывать",
+ "What to send": "Что отправлять",
+ "What to watch tonight": "Что посмотреть сегодня вечером",
+ "What you expected": "Что вы ожидали",
+ "What's hot this week, what's prestige forever, what's worth the hours.": "Что горячо на этой неделе, что вечная классика, что стоит потраченных часов.",
+ "Whatever your OS uses.": "То, что использует ваша система.",
+ "WHEN": "КОГДА",
+ "When a flagged ad plays, a Skip button slides in so you jump straight past it.": "Когда начинается помеченная реклама, появляется кнопка «Пропустить», чтобы сразу её проскочить.",
+ "When a movie or episode starts, briefly show its IMDb parental guide (violence, profanity, substances, frightening scenes and more) with severity. Fades on its own.": "При старте фильма или эпизода ненадолго показать родительское руководство IMDb (насилие, ненормативная лексика, вещества, пугающие сцены и др.) с уровнем серьёзности. Исчезает автоматически.",
+ "When a release ships multiple audio tracks, Harbor selects the first match from this list.": "Если в релизе несколько аудиодорожек, Harbor выбирает первое совпадение из этого списка.",
+ "When a title is in your local library": "Когда тайтл есть в вашей локальной библиотеке",
+ "When an episode ends, automatically start the next one. Off lets the episode finish and stop.": "По окончании эпизода автоматически запускать следующий. При выключении эпизод просто завершится и остановится.",
+ "When auto-playing the next episode, keep the same release/source you were just watching instead of Harbor's top-ranked stream. Falls back to the best stream if that source isn't available.": "При автовоспроизведении следующего эпизода сохранять тот же релиз/источник, что вы только что смотрели, вместо лучшего по рейтингу потока Harbor. Если источник недоступен, используется лучший поток.",
+ "When Esc would close the player, show a quick confirm first. You can tick \\": "Если Esc должен закрыть плеер, сначала показать быстрое подтверждение. Можно отметить \\",
+ "When in fullscreen, Esc leaves fullscreen instead of closing the player. Press Esc again to close. Turn off to make Esc always close.": "В полноэкранном режиме Esc выходит из него вместо закрытия плеера. Нажмите Esc ещё раз, чтобы закрыть. Отключите, чтобы Esc всегда закрывал плеер.",
+ "When playback starts, Harbor automatically finds and loads a subtitle in one of these languages, so you never have to search by hand. The first available match wins, so put your main language first.": "При старте воспроизведения Harbor автоматически находит и загружает субтитры на одном из этих языков, так что искать вручную не придётся. Побеждает первое доступное совпадение, поэтому поставьте основной язык первым.",
+ "When playback starts, Harbor finds and loads a subtitle in one of these languages automatically. The first available match wins, so put your main language first.": "При старте воспроизведения Harbor автоматически находит и загружает субтитры на одном из этих языков. Побеждает первое доступное совпадение, поэтому поставьте основной язык первым.",
+ "When the audio already matches your subtitle language, pick a forced track (foreign dialogue and signs only) instead of full subtitles. If the file has no forced track, subtitles stay off.": "Когда аудио уже совпадает с языком субтитров, выбирать принудительную дорожку (только иноязычные диалоги и надписи) вместо полных субтитров. Если в файле нет принудительной дорожки, субтитры остаются выключенными.",
+ "When the file ships its own subtitle track, keep it selected instead of switching to a downloaded one. Embedded tracks are usually the best synced.": "Если в файле есть собственная дорожка субтитров, оставлять её выбранной вместо переключения на загруженную. Встроенные дорожки обычно лучше синхронизированы.",
+ "When the Up Next pill appears before an episode ends. Auto scales to the episode length, so short episodes stop prompting so early. Off hides it.": "Когда плашка «Далее» появляется перед окончанием эпизода. «Авто» подстраивается под длину эпизода, поэтому короткие эпизоды не подсказывают так рано. «Выкл» скрывает плашку.",
+ "When time's up, the ship sails away until a parent unlocks it.": "Когда время выходит, корабль уплывает, пока родитель не разблокирует его.",
+ "When you back out of a title, Harbor saves a frame so the Continue Watching card looks like the spot you left.": "Когда вы выходите из тайтла, Harbor сохраняет кадр, чтобы карточка «Продолжить просмотр» отражала место, где вы остановились.",
+ "When you back out of a title, Harbor saves a frame so the Continue Watching card looks like the spot you left. Tune how long they stick around, or wipe them all.": "Когда вы выходите из тайтла, Harbor сохраняет кадр, чтобы карточка «Продолжить просмотр» отражала место, где вы остановились. Настройте, как долго они хранятся, или удалите все сразу.",
+ "When you exit fullscreen, return the window to exactly where it was. Turn off to center it on screen instead.": "При выходе из полноэкранного режима возвращать окно точно на прежнее место. Отключите, чтобы вместо этого окно центрировалось на экране.",
+ "When you exit playback, keep the window fullscreen instead of dropping back to a window. Turn off to leave fullscreen automatically whenever the player closes.": "При выходе из воспроизведения оставлять окно полноэкранным вместо возврата к обычному окну. Отключите, чтобы полноэкранный режим автоматически снимался при закрытии плеера.",
+ "When you finish an episode or movie, remove its downloaded file right away. Something you stop partway through is kept so you can resume.": "По завершении просмотра эпизода или фильма сразу удалять его загруженный файл. То, что остановлено на середине, сохраняется для продолжения.",
+ "When you finish an episode, the Home Continue Watching card moves on to the next episode instead of sitting at 0 minutes left.": "По завершении эпизода карточка «Продолжить просмотр» на Главной переходит к следующему эпизоду вместо отображения «0 минут осталось».",
+ "When you have no debrid set up, or a torrent isn't cached, stream it straight from the bundled engine on localhost:11470. This connects to peers over your own connection, the same way Stremio's built-in streaming does.": "Если дебрид не настроен или торрент не кеширован, транслировать напрямую через встроенный движок на localhost:11470. Это подключается к пирам через ваше собственное соединение, так же как встроенный стриминг Stremio.",
+ "When you hit Play on something you've partly watched, show a prompt to resume from where you left off or start over. Also covers items synced from Stremio or Trakt.": "При нажатии «Воспроизвести» на частично просмотренном показывать запрос: продолжить с места остановки или начать заново. Также применяется к элементам, синхронизированным из Stremio или Trakt.",
+ "When you resume something you were watching, replay the exact stream you last used (same addon and source) instead of opening the picker again. Turn off to always choose fresh.": "При продолжении просмотра воспроизводить именно тот поток, что использовался в прошлый раз (тот же аддон и источник), вместо повторного открытия выбора. Отключите, чтобы всегда выбирать заново.",
+ "Where alerts go": "Куда идут уведомления",
+ "Where do you want to start?": "С чего хотите начать?",
+ "Where Harbor saves videos when you hit Download in the player. Pick any folder, including one on a different drive.": "Куда Harbor сохраняет видео при нажатии «Скачать» в плеере. Выберите любую папку, в том числе на другом диске.",
+ "Where machines are taking us": "Куда нас ведут машины",
+ "Where the volume overlay appears on the video.": "Где на видео появляется оверлей громкости.",
+ "Where to watch": "Где смотреть",
+ "Where your data lives": "Где хранятся ваши данные",
+ "Where your video comes from": "Откуда берётся ваше видео",
+ "Which account should the relay live in?": "В каком аккаунте должен жить ретранслятор?",
+ "Which audio and subtitle languages rank first in stream lists.": "Какие языки аудио и субтитров стоят первыми в списках потоков.",
+ "While the world's asleep": "Пока мир спит",
+ "Who's watching: {a} · Default: {b}": "Кто смотрит: {a} · По умолчанию: {b}",
+ "Who's watching?": "Кто смотрит?",
+ "Whodunit": "Детектив",
+ "Whodunits": "Детективы",
+ "Wide search · still empty": "Широкий поиск · всё ещё пусто",
+ "Wider spacing": "Шире интервалы",
+ "Width": "Ширина",
+ "Wild Bunch Era": "Эпоха «Дикой банды»",
+ "will be removed from Harbor. Anything you've set to use it will fall back to Inter.": "будет удалён из Harbor. Всё, что использовало его, переключится на Inter.",
+ "WIN": "ПОБЕДА",
+ "Window title bar": "Строка заголовка окна",
+ "Windowed": "Оконный режим",
+ "Winner": "Победитель",
+ "Winning films & shows": "Фильмы и сериалы-победители",
+ "Wiseguys": "Мафиози",
+ "Witching Hour": "Час ведьм",
+ "with a WebSocket upgrade: opens a Watch Together room. State is held in a Durable Object, no persistence beyond the active session.": "с повышением до WebSocket: открывает комнату «Смотрим вместе». Состояние хранится в Durable Object, без сохранения после окончания сессии.",
+ "With no TMDB key, the About panel pulls cast, crew, and title info from a free IMDb source. TMDB is still used whenever a key is set.": "Без ключа TMDB панель «О тайтле» берёт актёров, съёмочную группу и информацию из бесплатного источника IMDb. При наличии ключа по-прежнему используется TMDB.",
+ "With subtitles": "С субтитрами",
+ "With the city surrounded, an unlikely alliance forms as a long-buried secret finally comes to light.": "Пока город в кольце осады, складывается неожиданный союз, а давно похороненная тайна наконец выходит наружу.",
+ "Without subtitles": "Без субтитров",
+ "Wizards & Kings": "Волшебники и короли",
+ "Wonder & Dread": "Чудо и ужас",
+ "Worker crashed or hit memory limits": "Воркер упал или достиг лимита памяти",
+ "Worker deleted or URL wrong": "Воркер удалён или неверный URL",
+ "Workers Scripts": "Скрипты Workers",
+ "Working…": "Выполняется…",
+ "Worlds Apart": "Разные миры",
+ "Worlds of Wonder": "Миры чудес",
+ "Worlds to step into before the inbox catches up.": "Миры, в которые стоит окунуться, пока не накопились письма.",
+ "Worlds wide enough for an hour or a whole free afternoon.": "Миры, которых хватит и на час, и на весь свободный день.",
+ "Worse": "Хуже",
+ "Worth catching up on": "Стоит наверстать",
+ "Worth knowing": "Стоит знать",
+ "Worth the lost hour": "Стоит потраченного часа",
+ "Write a comment...": "Написать комментарий...",
+ "Writer": "Сценарист",
+ "Writers": "Сценаристы",
+ "Writing": "Сценарий",
+ "Wrong channel or source?": "Неверный канал или источник?",
+ "Wrong episode or quality?": "Неверный эпизод или качество?",
+ "Wrong PIN": "Неверный PIN",
+ "Wrong year": "Неверный год",
+ "WWII on Film": "Вторая мировая на экране",
+ "XMLTV only": "Только XMLTV",
+ "Xtream": "Xtream",
+ "Xtream codes": "Коды Xtream",
+ "Xtream login was rejected": "Вход Xtream отклонён",
+ "Xtream provider": "Провайдер Xtream",
+ "Year": "Год",
+ "Year, runtime, language, and country filters need TMDB. Genre browsing falls back to Cinemeta automatically.": "Фильтры по году, длительности, языку и стране требуют TMDB. Просмотр по жанрам автоматически переключается на Cinemeta.",
+ "Yellow Cards": "Жёлтые карточки",
+ "Yes": "Да",
+ "You ★ {rating}": "Вы ★ {rating}",
+ "You can switch later in Settings under Library & metadata.": "Позже можно переключить в Настройках, в разделе «Библиотека и метаданные».",
+ "You have unsaved anchors. They will be lost.": "У вас есть несохранённые якоря. Они будут потеряны.",
+ "You have unsaved changes that will be lost when switching profiles. Continue?": "У вас есть несохранённые изменения, которые будут потеряны при смене профиля. Продолжить?",
+ "You have unsaved changes. Close the editor and discard them?": "У вас есть несохранённые изменения. Закрыть редактор и отменить их?",
+ "You haven't commented yet": "Вы ещё не оставляли комментариев",
+ "You Might Also Like": "Вам может понравиться",
+ "You must install this addon in your Stremio account first so Harbor can fetch its works.": "Сначала установите этот аддон в своём аккаунте Stremio, чтобы Harbor мог получать его данные.",
+ "You picked only one anchor. This applies a constant shift (no FPS-drift correction). Continue?": "Вы выбрали только один якорь. Будет применён постоянный сдвиг (без коррекции дрейфа FPS). Продолжить?",
+ "You rated this build {label}.": "Вы оценили эту сборку как {label}.",
+ "You should get a message from your new bot.": "Вы должны получить сообщение от вашего нового бота.",
+ "You'll need this to access settings while controls are on.": "Это понадобится для доступа к настройкам, пока элементы управления включены.",
+ "You're in": "Вы внутри",
+ "You're modding your own client. Custom JS has full access to your Harbor session. Only paste code you wrote or fully trust.": "Вы модифицируете собственный клиент. Пользовательский JS имеет полный доступ к вашей сессии Harbor. Вставляйте только код, который написали сами или которому полностью доверяете.",
+ "You're offline": "Вы не в сети",
+ "You're offline. Your downloads still play.": "Вы не в сети. Загруженное по-прежнему воспроизводится.",
+ "You're on the latest build. Earlier builds show up here as new versions ship.": "У вас последняя сборка. Более ранние сборки будут появляться здесь по мере выхода новых версий.",
+ "You're on the latest version.": "У вас последняя версия.",
+ "You're set.": "Всё готово.",
+ "You're verified": "Вы подтверждены",
+ "You've reached the end · {count} titles": "Вы дошли до конца · тайтлов: {count}",
+ "You've reached the end · {n} addons": "Вы дошли до конца · аддонов: {n}",
+ "Your account hasn't picked its free {code} address yet. Cloudflare only asks the first time. Quick to set up.": "Ваш аккаунт ещё не выбрал бесплатный адрес {code}. Cloudflare спрашивает об этом только один раз. Настройка займёт немного времени.",
+ "Your addon collection changed on another device. Nothing was written.": "Ваша коллекция аддонов изменилась на другом устройстве. Ничего не записано.",
+ "Your AniList is empty": "Ваш AniList пуст",
+ "Your AniList: {name}": "Ваш AniList: {name}",
+ "Your collection.": "Ваша коллекция.",
+ "Your color": "Ваш цвет",
+ "Your copy runs {guest}, host's runs {host}. Sync may drift.": "Ваша копия работает на {guest}, у хоста — на {host}. Синхронизация может сбиваться.",
+ "Your Discovery Queue": "Ваша очередь открытий",
+ "Your face in Watch Together rooms, sessions, and chat. Sits on top of your Stremio account.": "Ваше лицо в комнатах «Смотрим вместе», сессиях и чате. Накладывается поверх вашего аккаунта Stremio.",
+ "YOUR FILTERS": "ВАШИ ФИЛЬТРЫ",
+ "Your IP or device is blocked. Some providers geo restrict or limit how many devices can connect at once.": "Ваш IP или устройство заблокированы. Некоторые провайдеры ограничивают по геолокации или числу одновременных подключений.",
+ "Your Letterboxd password": "Ваш пароль от Letterboxd",
+ "Your library and watch progress sync here.": "Здесь синхронизируется ваша библиотека и прогресс просмотра.",
+ "Your MAL: {name}": "Ваш MAL: {name}",
+ "Your name": "Ваше имя",
+ "Your network blocks UDP, so DHT is offline, but HTTPS trackers are reachable over TCP. Streams can still find peers, they may just take a little longer to start.": "Ваша сеть блокирует UDP, поэтому DHT недоступен, но HTTPS-трекеры доступны через TCP. Потоки всё ещё могут находить пиров, просто запуск может занять чуть больше времени.",
+ "Your rating": "Ваша оценка",
+ "Your relay": "Ваш ретранслятор",
+ "Your relay is live": "Ваш ретранслятор запущен",
+ "Your relay URL": "URL вашего ретранслятора",
+ "Your saved shows have no episodes scheduled for this month. Switch to All upcoming to browse the full release calendar.": "У ваших сохранённых сериалов нет запланированных эпизодов на этот месяц. Переключитесь на «Все предстоящие», чтобы просмотреть полный календарь релизов.",
+ "Your Simkl plan-to-watch list has no episodes airing this month. Switch to All upcoming to browse everything.": "В вашем списке «Буду смотреть» Simkl нет эпизодов, выходящих в этом месяце. Переключитесь на «Все предстоящие», чтобы просмотреть всё.",
+ "Your Streaming": "Ваш стриминг",
+ "Your streaming server address": "Адрес вашего стримингового сервера",
+ "Your Stremio account": "Ваш аккаунт Stremio",
+ "Your Stremio library + addons sync in untouched.": "Ваша библиотека и аддоны Stremio синхронизируются без изменений.",
+ "Your Stremio sign-in. Library, watch progress, and addons sync from here.": "Ваш вход в Stremio. Отсюда синхронизируются библиотека, прогресс просмотра и аддоны.",
+ "Your style is overriding the embedded subtitle's own styling": "Ваш стиль переопределяет собственное оформление встроенных субтитров",
+ "Your themes": "Ваши темы",
+ "Your Trakt watchlist": "Ваш список желаемого Trakt",
+ "Your Trakt watchlist is empty, nothing to import.": "Ваш список желаемого Trakt пуст, импортировать нечего.",
+ "Your TV": "Ваш телевизор",
+ "Your watchlist is empty": "Ваш список желаемого пуст",
+ "Your watchlist is empty, nothing to send.": "Ваш список желаемого пуст, отправлять нечего.",
+ "Yours": "Ваше",
+ "Zoom": "Масштаб",
+ "Zoom {pct}%": "Масштаб {pct}%",
+ "Zoom in": "Увеличить",
+ "Zoom out": "Уменьшить",
+ "العربية": "العربية"
+}
diff --git a/src/lib/i18n/locales/ru.ts b/src/lib/i18n/locales/ru.ts
index 6296324c7..bab34bacb 100644
--- a/src/lib/i18n/locales/ru.ts
+++ b/src/lib/i18n/locales/ru.ts
@@ -25,6 +25,9 @@ import extra from "./ru/extra";
import manga from "./ru/manga";
import controllers from "./ru/controllers";
import plurals from "./ru/plurals";
+import people from "./ru/people";
+import profileCustomization from "./ru/profile-customization";
+import mobileManga from "./ru/mobile-manga";
import used from "./ru/used";
@@ -56,6 +59,9 @@ const ru: Record = {
...manga,
...controllers,
...plurals,
+ ...people,
+ ...profileCustomization,
+ ...mobileManga,
...used,
};
diff --git a/src/lib/i18n/locales/ru/chrome.ts b/src/lib/i18n/locales/ru/chrome.ts
index 2f2ca098c..55c702281 100644
--- a/src/lib/i18n/locales/ru/chrome.ts
+++ b/src/lib/i18n/locales/ru/chrome.ts
@@ -35,7 +35,6 @@ const chrome: Record = {
"chrome.restore": "Восстановить",
"chrome.watchTogether": "Смотреть вместе",
"chrome.scrollForMore": "Прокрутите вниз",
- "chrome.backToTop": "Наверх",
"chrome.locked": "Заблокировано",
"chrome.parentalOn": "Родительский контроль включён",
"chrome.lockedRequiresPin": "{label} (заблокировано, нужен PIN)",
diff --git a/src/lib/i18n/locales/ru/downloads.ts b/src/lib/i18n/locales/ru/downloads.ts
index fd0d79b9c..991cd3a97 100644
--- a/src/lib/i18n/locales/ru/downloads.ts
+++ b/src/lib/i18n/locales/ru/downloads.ts
@@ -9,6 +9,8 @@ const downloads: Record = {
"Failed: {error}": "Ошибка: {error}",
"Interrupted: re-download to finish": "Прервано: загрузите заново, чтобы завершить",
"Cancel download": "Отменить загрузку",
+ "Pause download": "Приостановить загрузку",
+ "Resume download": "Продолжить загрузку",
"Delete download and file": "Удалить загрузку и файл",
"Download video": "Скачать видео",
"Download to disk": "Скачать на диск",
diff --git a/src/lib/i18n/locales/ru/misc.ts b/src/lib/i18n/locales/ru/misc.ts
index 5912191e1..9eb71696a 100644
--- a/src/lib/i18n/locales/ru/misc.ts
+++ b/src/lib/i18n/locales/ru/misc.ts
@@ -815,6 +815,30 @@ const misc: Record = {
"Comedy": "Комедия",
"Animation": "Мультфильм",
"Music": "Музыка",
+ "Share collection": "Поделиться коллекцией",
+ "Anyone with the link can open this collection once your Harbor server is live.": "Любой, у кого есть ссылка, сможет открыть эту коллекцию, как только ваш сервер Harbor заработает.",
+ "Paste this code into Harbor to open the collection.": "Вставьте этот код в Harbor, чтобы открыть коллекцию.",
+ "Shared to the community": "Доступно сообществу",
+ "Share to the community": "Поделиться с сообществом",
+ "Listed collections will appear in community browse when that rolls out.": "Коллекции из списка появятся в обзоре сообщества, когда он станет доступен.",
+ "Sign in to get a shareable link.": "Войдите, чтобы получить ссылку, которой можно поделиться.",
+ "Link": "Ссылка",
+ "Code": "Код",
+ "Removed from {page}": "Удалено из {page}",
+ "That page is full": "Эта страница заполнена",
+ "Added to {page}": "Добавлено в {page}",
+ "Show as a row on": "Показывать как ряд на",
+ "The collection shows up as its own row you can reorder or hide from that page.": "Коллекция появляется как отдельный ряд, который можно переставлять или скрывать на этой странице.",
+ "This collection is no longer here.": "Этой коллекции больше здесь нет.",
+ "Back to collections": "Назад к коллекциям",
+ "Add to a page": "Добавить на страницу",
+ "Open the editor to add the movies, shows, and manga that belong in this collection.": "Откройте редактор, чтобы добавить фильмы, сериалы и мангу, которые входят в эту коллекцию.",
+ "Add titles": "Добавить названия",
+ "Tags": "Теги",
+ "Add up to {max} tags so people can find this in the community.": "Добавьте до {max} тегов, чтобы люди могли найти это в сообществе.",
+ "Remove tag": "Удалить тег",
+ "Tag limit reached": "Достигнут лимит тегов",
+ "Add a tag": "Добавить тег",
};
export default misc;
diff --git a/src/lib/i18n/locales/ru/mobile-manga.ts b/src/lib/i18n/locales/ru/mobile-manga.ts
new file mode 100644
index 000000000..46a8617aa
--- /dev/null
+++ b/src/lib/i18n/locales/ru/mobile-manga.ts
@@ -0,0 +1,38 @@
+const mobileManga: Record = {
+ "Loading chapter": "Загрузка главы",
+ "Prev": "Назад",
+ "Back to remote": "Назад к пульту",
+ "Webtoon strip": "Вебтун-лента",
+ "Single page": "Одна страница",
+ "Two pages": "Две страницы",
+ "Book flip": "Разворот книги",
+ "Bookmark which page": "Какую страницу добавить в закладки?",
+ "No bookmarks yet. Save your spot with the button above.": "Пока нет закладок. Сохраните место кнопкой выше.",
+ "Bookmark page {n}": "Добавить страницу {n} в закладки",
+ "Not in this source": "Нет в этом источнике",
+ "Remove bookmark": "Удалить закладку",
+ "Search chapters": "Поиск по главам",
+ "Sorted newest first, tap for oldest": "Сначала новые, нажмите для старых",
+ "Sorted oldest first, tap for newest": "Сначала старые, нажмите для новых",
+ "Reconnecting to your computer": "Переподключение к компьютеру",
+ "Reader closed on your computer": "Читалка закрыта на компьютере",
+ "Open a manga on Harbor to control the reader from here.": "Откройте мангу в Harbor, чтобы управлять читалкой отсюда.",
+ "Your computer": "Ваш компьютер",
+ "Reconnecting": "Переподключение",
+ "Read on this device": "Читать на этом устройстве",
+ "Read here": "Читать здесь",
+ "Read on": "Читать на",
+ "Reading {label}": "Чтение {label}",
+ "of {total}": "из {total}",
+ "Start of manga": "Начало манги",
+ "End of manga": "Конец манги",
+ "Jump to spread": "Перейти к развороту",
+ "Jump to page": "Перейти к странице",
+ "Go to pages {range}": "Перейти к страницам {range}",
+ "Go to page {n}": "Перейти к странице {n}",
+ "Zoom controls, {pct} percent": "Управление масштабом, {pct} процентов",
+ "Close zoom controls": "Закрыть управление масштабом",
+ "Zoom and pan joystick": "Джойстик масштаба и панорамирования",
+};
+
+export default mobileManga;
diff --git a/src/lib/i18n/locales/ru/people.ts b/src/lib/i18n/locales/ru/people.ts
new file mode 100644
index 000000000..be5cf57d8
--- /dev/null
+++ b/src/lib/i18n/locales/ru/people.ts
@@ -0,0 +1,11 @@
+const people: Record = {
+ "Rising Stars": "Восходящие звёзды",
+ "Contenders": "Претенденты",
+ "Rising star": "На подъёме",
+ "In contention": "В борьбе",
+ "People from the week's hottest titles, weighted by what is being talked about.": "Люди из самых обсуждаемых тайтлов недели, с учётом того, что сейчас на слуху.",
+ "Breakout talent from this week's hottest titles, before they are household names.": "Восходящие таланты из самых обсуждаемых тайтлов недели, ещё до того, как их имена станут известны всем.",
+ "In the running this awards season, from the latest nominations and wins.": "В борьбе в этом премиальном сезоне, судя по последним номинациям и победам.",
+};
+
+export default people;
diff --git a/src/lib/i18n/locales/ru/player.ts b/src/lib/i18n/locales/ru/player.ts
index c1fd08d4a..31316f01e 100644
--- a/src/lib/i18n/locales/ru/player.ts
+++ b/src/lib/i18n/locales/ru/player.ts
@@ -48,16 +48,14 @@ const player: Record = {
"Thinner outline": "Уменьшить обводку",
"More subtitle options": "Больше настроек субтитров",
"Override embedded styles": "Переопределять встроенные стили",
- "Force your look onto subtitles that carry their own styling.":
- "Применять ваш стиль к субтитрам с собственным оформлением.",
+ "Force your look onto subtitles that carry their own styling.": "Применять ваш стиль к субтитрам с собственным оформлением.",
"New look name": "Название нового стиля",
"Name your look": "Назовите стиль",
"Save this look": "Сохранить стиль",
"Save as a new look": "Сохранить как новый стиль",
"No subtitles found.": "Субтитры не найдены.",
"Download subtitle to disk": "Скачать субтитры на диск",
- "Movie's too new. Subtitles haven't been published yet.":
- "Фильм слишком новый. Субтитры ещё не опубликованы.",
+ "Movie's too new. Subtitles haven't been published yet.": "Фильм слишком новый. Субтитры ещё не опубликованы.",
"Forced only": "Только форсированные",
"Forced subs with native audio": "Форсированные субтитры с родным аудио",
"HI/SDH": "HI/SDH",
@@ -83,27 +81,21 @@ const player: Record = {
"Clear A-B loop": "Сбросить повтор A-B",
"Watch trailer": "Смотреть трейлер",
"Close trailer": "Закрыть трейлер",
- "No audio: this stream's audio format (likely Dolby or DTS) is not supported by the HTML5 engine.":
- "Нет звука: формат аудио этого потока (вероятно, Dolby или DTS) не поддерживается движком HTML5.",
- "This file is flagged as not web-playable. Try the mpv backend in Settings or pick another stream.":
- "Файл помечен как непригодный для веб-воспроизведения. Попробуйте бэкенд mpv в разделе Настройки или выберите другой поток.",
+ "No audio: this stream's audio format (likely Dolby or DTS) is not supported by the HTML5 engine.": "Нет звука: формат аудио этого потока (вероятно, Dolby или DTS) не поддерживается движком HTML5.",
+ "This file is flagged as not web-playable. Try the mpv backend in Settings or pick another stream.": "Файл помечен как непригодный для веб-воспроизведения. Попробуйте бэкенд mpv в разделе Настройки или выберите другой поток.",
"Casting comes with the mpv backend": "Трансляция доступна с бэкендом mpv",
"Cast to TV or speaker": "Транслировать на ТВ или колонку",
"Burn in subtitles": "Вшить субтитры",
- "Subtitles are baked into the picture so they always show. Re-encodes the video.":
- "Субтитры вшиваются в изображение и видны всегда. Видео перекодируется.",
+ "Subtitles are baked into the picture so they always show. Re-encodes the video.": "Субтитры вшиваются в изображение и видны всегда. Видео перекодируется.",
"Subtitles may not appear on the TV.": "Субтитры могут не отображаться на ТВ.",
"Scanning your network…": "Сканирование сети…",
- "No Chromecast, DLNA, or Roku devices found. Make sure your TV is on, woken up, and on the same Wi-Fi.":
- "Устройства Chromecast, DLNA или Roku не найдены. Убедитесь, что телевизор включён, вышел из сна и подключён к той же сети Wi-Fi.",
+ "No Chromecast, DLNA, or Roku devices found. Make sure your TV is on, woken up, and on the same Wi-Fi.": "Устройства Chromecast, DLNA или Roku не найдены. Убедитесь, что телевизор включён, вышел из сна и подключён к той же сети Wi-Fi.",
"Scan again": "Сканировать снова",
- Rescan: "Пересканировать",
+ "Rescan": "Пересканировать",
"DLNA TV": "DLNA ТВ",
"About this title": "Об этом названии",
- "Add a TMDB key in Settings to see the cast for every title.":
- "Добавьте ключ TMDB в Настройках, чтобы видеть актёров для каждого названия.",
- "Cast information isn't available for this title.":
- "Информация об актёрах для этого названия недоступна.",
+ "Add a TMDB key in Settings to see the cast for every title.": "Добавьте ключ TMDB в Настройках, чтобы видеть актёров для каждого названия.",
+ "Cast information isn't available for this title.": "Информация об актёрах для этого названия недоступна.",
" (you)": " (вы)",
" · away": " · отсутствует",
" · host": " · ведущий",
@@ -116,7 +108,7 @@ const player: Record = {
"+{n} ep": "+{n} сер.",
", then try again.": ", затем повторите.",
"Align {dir}": "Выравнивание {dir}",
- All: "Все",
+ "All": "Все",
"All addons": "Все дополнения",
"All languages": "Все языки",
"Always keep on this device": "Всегда хранить на этом устройстве",
@@ -124,133 +116,124 @@ const player: Record = {
"Audio bitrate": "Битрейт аудио",
"Audio codec": "Аудиокодек",
"Audio track": "Аудиодорожка",
- Back: "Назад",
+ "Back": "Назад",
"Back to library": "В библиотеку",
- Bold: "Полужирный",
- Browse: "Обзор",
+ "Bold": "Полужирный",
+ "Browse": "Обзор",
"Browse provider": "Обзор провайдера",
"Cache buffering": "Буферизация кэша",
"Cached only": "Только из кэша",
"Cached only ({n})": "Только из кэша ({n})",
- Cancel: "Отмена",
+ "Cancel": "Отмена",
"Cancel autoplay": "Отменить автовоспроизведение",
- Cast: "Трансляция",
+ "Cast": "Трансляция",
"Cast to a device": "Транслировать на устройство",
"Channel is taking a while": "Канал загружается долго",
"Channel won't load": "Канал не загружается",
"Choose a folder...": "Выбрать папку...",
- Clear: "Очистить",
+ "Clear": "Очистить",
"Click any source to swap in place": "Нажмите источник, чтобы заменить на лету",
"Click to apply · Right-click to delete": "Нажмите, чтобы применить · правый клик — удалить",
- Close: "Закрыть",
+ "Close": "Закрыть",
"Close guide": "Закрыть телепрограмму",
"Close match": "Близкое совпадение",
"Copied to clipboard": "Скопировано в буфер обмена",
"Copy link": "Копировать ссылку",
- "Couldn't load that subtitle file. Try another.":
- "Не удалось загрузить этот файл субтитров. Попробуйте другой.",
+ "Couldn't load that subtitle file. Try another.": "Не удалось загрузить этот файл субтитров. Попробуйте другой.",
"Couldn't load {name}": "Не удалось загрузить {name}",
"Couldn't open this file": "Не удалось открыть файл",
"Custom length": "Своя длительность",
- DVR: "DVR",
+ "DVR": "DVR",
"DVR record": "Запись DVR",
- Default: "По умолчанию",
- Director: "Режиссёр",
+ "Default": "По умолчанию",
+ "Director": "Режиссёр",
"Discard recording": "Удалить запись",
- Dismiss: "Скрыть",
+ "Dismiss": "Скрыть",
"Dismiss episode panel": "Скрыть панель серий",
"Does this stream look right?": "Этот поток подходит?",
- Done: "Готово",
- Download: "Скачать",
+ "Done": "Готово",
+ "Download": "Скачать",
"Download failed": "Не удалось скачать",
"Download to disk": "Скачать на диск",
"Download video": "Скачать видео",
"Downloading {pct}%, click to cancel": "Загрузка {pct}%, нажмите для отмены",
"Dropped (decode / vo)": "Пропущено (декод / vo)",
- Embedded: "Встроенные",
- "Embedded subtitles keep their own styling. Click to force your style onto them.":
- "Встроенные субтитры сохраняют собственное оформление. Нажмите, чтобы применить к ним ваш стиль.",
+ "Embedded": "Встроенные",
+ "Embedded subtitles keep their own styling. Click to force your style onto them.": "Встроенные субтитры сохраняют собственное оформление. Нажмите, чтобы применить к ним ваш стиль.",
"Embedded track": "Встроенная дорожка",
"End ep": "Конец серии",
- Engine: "Движок",
+ "Engine": "Движок",
"Episode {n}": "Серия {n}",
- "Everyone is loaded in. Press play to start watching.":
- "Все готовы. Нажмите «Воспроизвести», чтобы начать просмотр.",
- External: "Внешние",
+ "Everyone is loaded in. Press play to start watching.": "Все готовы. Нажмите «Воспроизвести», чтобы начать просмотр.",
+ "External": "Внешние",
"External subtitle": "Внешние субтитры",
"Failed: {message}": "Ошибка: {message}",
- File: "Файл",
- Filename: "Имя файла",
- Filtered: "Отфильтровано",
+ "File": "Файл",
+ "Filename": "Имя файла",
+ "Filtered": "Отфильтровано",
"Find closer match": "Найти точнее",
"Find more subtitles": "Найти ещё субтитры",
"Flagged shown": "Отмеченные показаны",
"Frame rate": "Частота кадров",
"Go to live": "К эфиру",
"Got it": "Понятно",
- Guide: "Программа",
- HI: "HI",
+ "Guide": "Программа",
+ "HI": "HI",
"HW decode": "Аппаратное декодирование",
- Hidden: "Скрыто",
+ "Hidden": "Скрыто",
"Hidden by filter: {reason}": "Скрыто фильтром: {reason}",
"Hide details": "Скрыть подробности",
"Hide search": "Скрыть поиск",
- Host: "Ведущий",
- Imported: "Импортировано",
+ "Host": "Ведущий",
+ "Imported": "Импортировано",
"Imported and now playing": "Импортировано и воспроизводится",
- "Instant Play: clicking Play queues the next stream automatically.":
- "Мгновенный запуск: нажатие «Воспроизвести» автоматически ставит в очередь следующий поток.",
+ "Instant Play: clicking Play queues the next stream automatically.": "Мгновенный запуск: нажатие «Воспроизвести» автоматически ставит в очередь следующий поток.",
"Is the channel playing right?": "Канал воспроизводится нормально?",
"Jump to live edge": "Перейти к прямому эфиру",
"Just the next show: {title}": "Только следующая передача: {title}",
- Languages: "Языки",
- Larger: "Крупнее",
- Leave: "Выйти",
- List: "Список",
- Live: "В эфире",
+ "Languages": "Языки",
+ "Larger": "Крупнее",
+ "Leave": "Выйти",
+ "List": "Список",
+ "Live": "В эфире",
"Load a .srt or .ass from your computer": "Загрузить .srt или .ass с компьютера",
"Load file": "Загрузить файл",
"Load more": "Показать ещё",
"Loaded {name}": "Загружено: {name}",
- Loading: "Загрузка",
+ "Loading": "Загрузка",
"Loading favorites from other providers…": "Загрузка избранного от других провайдеров…",
"Loading favorites…": "Загрузка избранного…",
"Local subtitle": "Локальные субтитры",
"Looking for subtitles…": "Поиск субтитров…",
"Looks good": "Всё хорошо",
"Manage recording": "Управление записью",
- "Manual mode: clicking Play opens the source picker here.":
- "Ручной режим: нажатие «Воспроизвести» открывает выбор источника здесь.",
- Movie: "Фильм",
+ "Manual mode: clicking Play opens the source picker here.": "Ручной режим: нажатие «Воспроизвести» открывает выбор источника здесь.",
+ "Movie": "Фильм",
"Movie's too new": "Фильм слишком новый",
"Name your first template": "Назовите первый шаблон",
"New template name": "Название нового шаблона",
"Next Episode": "Следующая серия",
"Next episode": "Следующая серия",
- "No channels match. Try a different category or clear the search.":
- "Нет подходящих каналов. Выберите другую категорию или очистите поиск.",
+ "No channels match. Try a different category or clear the search.": "Нет подходящих каналов. Выберите другую категорию или очистите поиск.",
"No description available.": "Описание недоступно.",
"No episodes found for this season.": "Для этого сезона серии не найдены.",
- "No favorites yet. Star a channel to pin it here.":
- "Избранного пока нет. Отметьте канал звёздочкой, чтобы закрепить его здесь.",
+ "No favorites yet. Star a channel to pin it here.": "Избранного пока нет. Отметьте канал звёздочкой, чтобы закрепить его здесь.",
"No program info available": "Нет информации о передаче",
"No sources cached": "Нет источников в кэше",
"No sources found for this episode.": "Для этой серии источники не найдены.",
- "No subtitles found yet. Try the search at the bottom.":
- "Субтитры пока не найдены. Попробуйте поиск ниже.",
- "No tracks match these filters. Try toggling HI/SDH or Forced.":
- "Нет дорожек по этим фильтрам. Попробуйте переключить HI/SDH или «Форсированные».",
+ "No subtitles found yet. Try the search at the bottom.": "Субтитры пока не найдены. Попробуйте поиск ниже.",
+ "No tracks match these filters. Try toggling HI/SDH or Forced.": "Нет дорожек по этим фильтрам. Попробуйте переключить HI/SDH или «Форсированные».",
"No unsaved changes": "Нет несохранённых изменений",
- Normal: "Обычный",
+ "Normal": "Обычный",
"Now Playing": "Сейчас воспроизводится",
"Now playing: {label}": "Сейчас воспроизводится: {label}",
"Now watching": "Сейчас смотрите",
- Off: "Выкл.",
- On: "Вкл.",
+ "Off": "Выкл.",
+ "On": "Вкл.",
"On now": "Сейчас в эфире",
"Open folder": "Открыть папку",
"Other sources": "Другие источники",
- Override: "Переопределить",
+ "Override": "Переопределить",
"Override {name}": "Переопределить {name}",
"Overwrite {name} with this look": "Перезаписать {name} этим оформлением",
"Pick another": "Выбрать другой",
@@ -262,40 +245,39 @@ const player: Record = {
"Previous Episode": "Предыдущая серия",
"Previous episode": "Предыдущая серия",
"Probably not cached. Pick another?": "Скорее всего, не в кэше. Выбрать другой?",
- REC: "REC",
+ "REC": "REC",
"Ready when you are": "Готово, можно начинать",
- Record: "Записать",
+ "Record": "Записать",
"Record from TV (DVR)": "Запись с ТВ (DVR)",
"Record from live TV": "Запись с прямого эфира",
"Recording finished": "Запись завершена",
"Recording now": "Идёт запись",
- "Recording · {pct}% · {remaining} · click to manage":
- "Запись · {pct}% · {remaining} · нажмите для управления",
+ "Recording · {pct}% · {remaining} · click to manage": "Запись · {pct}% · {remaining} · нажмите для управления",
"Refine search": "Уточнить поиск",
"Reset sync": "Сбросить синхронизацию",
- Resolution: "Разрешение",
- Restart: "Начать сначала",
+ "Resolution": "Разрешение",
+ "Restart": "Начать сначала",
"Resume from {time}": "Продолжить с {time}",
"Same file": "Тот же файл",
- Save: "Сохранить",
+ "Save": "Сохранить",
"Save as a new template": "Сохранить как новый шаблон",
"Save look": "Сохранить оформление",
"Save this look as a template": "Сохранить это оформление как шаблон",
"Save to": "Сохранить в",
- Saved: "Сохранено",
+ "Saved": "Сохранено",
"Saved as .ts (works in mpv, VLC, ffmpeg)": "Сохранено как .ts (работает в mpv, VLC, ffmpeg)",
"Saved to disk": "Сохранено на диск",
"Saved to {folder} · open folder": "Сохранено в {folder} · открыть папку",
"Saving GIF…": "Сохранение GIF…",
"Say something…": "Напишите что-нибудь…",
- Search: "Поиск",
+ "Search": "Поиск",
"Search {n} channels": "Поиск по каналам ({n})",
"Search {n} favorite": "Поиск по избранному ({n})",
"Search {n} favorites": "Поиск по избранному ({n})",
"Searching…": "Поиск…",
"Season {n}": "Сезон {n}",
- Send: "Отправить",
- Series: "Сериалы",
+ "Send": "Отправить",
+ "Series": "Сериалы",
"Set how many minutes to record": "Укажите, сколько минут записывать",
"Show details": "Показать подробности",
"Show downloaded file": "Показать скачанный файл",
@@ -303,38 +285,33 @@ const player: Record = {
"Show in folder": "Показать в папке",
"Show sources hidden by the trust filter": "Показать источники, скрытые фильтром доверия",
"Show {langs} only": "Показывать только {langs}",
- Shown: "Показано",
- Size: "Размер",
- Smaller: "Мельче",
+ "Shown": "Показано",
+ "Size": "Размер",
+ "Smaller": "Мельче",
"Something else": "Что-то другое",
- Source: "Источник",
- "Sources are not cached for this title. Open the picker page to refresh.":
- "Источники для этого названия не в кэше. Откройте страницу выбора, чтобы обновить.",
+ "Source": "Источник",
+ "Sources are not cached for this title. Open the picker page to refresh.": "Источники для этого названия не в кэше. Откройте страницу выбора, чтобы обновить.",
"Start anyway ({n} still loading)": "Всё равно начать ({n} ещё загружается)",
"Start recording": "Начать запись",
- Stop: "Стоп",
+ "Stop": "Стоп",
"Stop recording": "Остановить запись",
"Subtitle track": "Дорожка субтитров",
- "Subtitles haven't been published yet. Try search below or check back in a few days.":
- "Субтитры ещё не опубликованы. Попробуйте поиск ниже или зайдите через несколько дней.",
- Sync: "Синхронизация",
+ "Subtitles haven't been published yet. Try search below or check back in a few days.": "Субтитры ещё не опубликованы. Попробуйте поиск ниже или зайдите через несколько дней.",
+ "Sync": "Синхронизация",
"TV Guide": "Телепрограмма",
- "The host starts playback for the whole room.":
- "Ведущий запускает воспроизведение для всей комнаты.",
+ "The host starts playback for the whole room.": "Ведущий запускает воспроизведение для всей комнаты.",
"This and next: + {title}": "Эта и следующая: + {title}",
"This file has one audio track.": "В этом файле одна аудиодорожка.",
- 'This file is in OneDrive. If "Files On-Demand" is on, the file is a cloud placeholder until it\'s downloaded. Right-click it in Explorer and pick':
- "Этот файл находится в OneDrive. Если включены «Файлы по запросу», файл остаётся облачным заполнителем, пока не будет скачан. Нажмите на него правой кнопкой в проводнике и выберите",
+ "This file is in OneDrive. If \"Files On-Demand\" is on, the file is a cloud placeholder until it's downloaded. Right-click it in Explorer and pick": "Этот файл находится в OneDrive. Если включены «Файлы по запросу», файл остаётся облачным заполнителем, пока не будет скачан. Нажмите на него правой кнопкой в проводнике и выберите",
"This show: {title}": "Эта передача: {title}",
"Tighter spacing": "Плотный интервал",
- Title: "Название",
+ "Title": "Название",
"Title info": "Информация о названии",
"Toggle guide layout": "Переключить вид программы",
- Track: "Дорожка",
- "Track switching isn't supported on the current engine. The file's default audio is playing.":
- "Текущий движок не поддерживает переключение дорожек. Воспроизводится аудио по умолчанию.",
+ "Track": "Дорожка",
+ "Track switching isn't supported on the current engine. The file's default audio is playing.": "Текущий движок не поддерживает переключение дорожек. Воспроизводится аудио по умолчанию.",
"Try again": "Повторить",
- Unknown: "Неизвестно",
+ "Unknown": "Неизвестно",
"Until {time} · {dur}": "До {time} · {dur}",
"Up Next": "Далее",
"Up next": "Далее",
@@ -345,24 +322,21 @@ const player: Record = {
"Volume down": "Уменьшить громкость",
"Volume up": "Увеличить громкость",
"Waiting for the host to start": "Ожидание запуска хостом",
- Watched: "Просмотрено",
+ "Watched": "Просмотрено",
"What to record": "Что записать",
"Wider spacing": "Увеличенный интервал",
- Writer: "Сценарист",
+ "Writer": "Сценарист",
"Wrong channel or source?": "Не тот канал или источник?",
"Wrong episode or quality?": "Не та серия или качество?",
- "Your copy runs {guest}, host's runs {host}. Sync may drift.":
- "Ваша копия — {guest}, у хоста — {host}. Возможен рассинхрон.",
- "Your style is overriding the embedded subtitle's own styling":
- "Ваш стиль переопределяет собственное оформление встроенных субтитров",
- Yours: "У вас",
+ "Your copy runs {guest}, host's runs {host}. Sync may drift.": "Ваша копия — {guest}, у хоста — {host}. Возможен рассинхрон.",
+ "Your style is overriding the embedded subtitle's own styling": "Ваш стиль переопределяет собственное оформление встроенных субтитров",
+ "Yours": "У вас",
"Zoom {pct}%": "Масштаб {pct}%",
"click to cancel": "нажмите для отмены",
- default: "по умолчанию",
+ "default": "по умолчанию",
"loading more…": "загрузка ещё…",
- min: "мин",
- "mpv is required for recording. Install mpv and restart Harbor.":
- "Для записи требуется mpv. Установите mpv и перезапустите Harbor.",
+ "min": "мин",
+ "mpv is required for recording. Install mpv and restart Harbor.": "Для записи требуется mpv. Установите mpv и перезапустите Harbor.",
"to close": "чтобы закрыть",
"unsaved changes": "несохранённые изменения",
"{count} dl": "{count} загр.",
@@ -391,9 +365,6 @@ const player: Record = {
"2nd": "2-е",
"Show as second subtitle": "Показать как вторые субтитры",
"Stop showing as second subtitle": "Не показывать как вторые субтитры",
- "Next and Previous behavior": "Поведение кнопок «Следующее» и «Предыдущее»",
- "Next and Previous follow your queue": "«Следующее» и «Предыдущее» следуют вашей очереди",
- "Next and Previous follow this show": "«Следующее» и «Предыдущее» следуют этому шоу",
};
export default player;
diff --git a/src/lib/i18n/locales/ru/profile-customization.ts b/src/lib/i18n/locales/ru/profile-customization.ts
new file mode 100644
index 000000000..03a6a45f0
--- /dev/null
+++ b/src/lib/i18n/locales/ru/profile-customization.ts
@@ -0,0 +1,48 @@
+const profileCustomization: Record = {
+ "Italic": "Курсив",
+ "Underline": "Подчёркнутый",
+ "Strikethrough": "Зачёркнутый",
+ "Quote": "Цитата",
+ "Image": "Изображение",
+ "YouTube": "YouTube",
+ "Spotify": "Spotify",
+ "Show off. [b]bold[/b], [color=gold]color[/color], [youtube]link[/youtube], [img]https://...[/img] and more.":
+ "Покажите себя. [b]жирный[/b], [color=gold]цвет[/color], [youtube]ссылка[/youtube], [img]https://...[/img] и другое.",
+ "Custom profile": "Свой профиль",
+ "Hidden from visitors": "Скрыто от посетителей",
+ "Any HTML layout: headings, paragraphs, lists, tables, sections, divs.":
+ "Любая HTML-разметка: заголовки, абзацы, списки, таблицы, секции, div.",
+ "Any CSS: colors, gradients, grid, flex, animations, web fonts via @import from https.":
+ "Любой CSS: цвета, градиенты, grid, flex, анимации, веб-шрифты через @import из https.",
+ "Images and video from https or data URLs.": "Изображения и видео по ссылкам https или data URL.",
+ "Links open in a new tab automatically.": "Ссылки автоматически открываются в новой вкладке.",
+ "No JavaScript. Scripts, inline handlers, and javascript: URLs are removed.":
+ "Без JavaScript. Скрипты, встроенные обработчики и ссылки javascript: удаляются.",
+ "No nested iframes, objects, or embeds.": "Без вложенных iframe, object или embed.",
+ "No forms or popups. The canvas cannot navigate the page.": "Без форм и всплывающих окон. Холст не может перенаправлять страницу.",
+ "How the canvas works": "Как работает холст",
+ "Your HTML and CSS render inside a sandboxed frame, fully isolated from the rest of Harbor. Write it like a tiny self-contained page. Font and page background are separate controls above, applied to the whole profile.":
+ "Ваши HTML и CSS отображаются в изолированном фрейме, полностью отделённом от остального Harbor. Пишите их как маленькую самодостаточную страницу. Шрифт и фон страницы — отдельные настройки выше, они применяются ко всему профилю.",
+ "Allowed": "Разрешено",
+ "Not allowed": "Запрещено",
+ "HTML and CSS are each capped at 16,384 characters.": "HTML и CSS ограничены 16 384 символами каждый.",
+ "Show customization to visitors": "Показывать оформление посетителям",
+ "Profile font": "Шрифт профиля",
+ "Google Fonts family": "Семейство шрифтов Google Fonts",
+ "Page background color": "Цвет фона страницы",
+ "hex or rgb/hsl": "hex или rgb/hsl",
+ "Page background image": "Фоновое изображение страницы",
+ "https URL, optional": "Ссылка https, необязательно",
+ "Hide top banner": "Скрыть верхний баннер",
+ "Let your full page background show without the top cover.": "Покажите фон страницы полностью, без верхней перекрывающей части.",
+ "Hide card titles": "Скрыть заголовки карточек",
+ "Drop the About and Custom labels so an embed fills the card cleanly.":
+ "Уберите подписи «О себе» и «Своё», чтобы вставка заполняла карточку целиком.",
+ "Customize profile": "Оформление профиля",
+ "Could not upload favicon.": "Не удалось загрузить favicon.",
+ "Profile favicon": "Favicon профиля",
+ "Shows in the browser tab; defaults to your avatar": "Отображается во вкладке браузера; по умолчанию — ваш аватар",
+ "Back to editing": "Вернуться к редактированию",
+};
+
+export default profileCustomization;
diff --git a/src/lib/i18n/locales/ru/profile-fill.ts b/src/lib/i18n/locales/ru/profile-fill.ts
index d80d80aec..213b5a58a 100644
--- a/src/lib/i18n/locales/ru/profile-fill.ts
+++ b/src/lib/i18n/locales/ru/profile-fill.ts
@@ -1,18 +1,6 @@
const profileFill: Record = {
- "Manage connection": "Управление подключением",
- "Show your Simkl card": "Показывать карточку Simkl",
- "Off by default. Shows your Simkl avatar, name and watch stats on your profile for anyone who visits. Manage the connection itself in Settings, Simkl.":
- "По умолчанию выключено. Показывает ваш аватар, имя и статистику Simkl в профиле всем посетителям. Само подключение настраивается в Настройках, раздел Simkl.",
- "On Simkl": "В Simkl",
- "Open Simkl profile": "Открыть профиль Simkl",
- "Last watched {when}": "Последний просмотр {when}",
- "Nothing tracked on Simkl yet": "В Simkl пока ничего не отмечено",
- "Link Simkl and everything you watch shows up right here.":
- "Подключите Simkl, и всё, что вы смотрите, появится здесь.",
- "Could not reach Simkl.": "Не удалось связаться с Simkl.",
"Your rating": "Ваша оценка",
- "Tap the heart on any movie, show, manga, or character to save it here.":
- "Нажмите на сердечко у фильма, сериала, манги или персонажа, чтобы сохранить его здесь.",
+ "Tap the heart on any movie, show, manga, or character to save it here.": "Нажмите на сердечко у фильма, сериала, манги или персонажа, чтобы сохранить его здесь.",
"Your rating {n}/10": "Ваша оценка {n}/10",
"Tap a star to rate": "Нажмите на звезду, чтобы оценить",
"Tap a star to change, then save": "Нажмите на звезду, чтобы изменить, затем сохраните",
@@ -20,8 +8,7 @@ const profileFill: Record = {
"Edit your review": "Изменить ваш отзыв",
"Save changes": "Сохранить изменения",
"Ratings need a Harbor account": "Для оценок нужен аккаунт Harbor",
- "Your Harbor account is separate from your Stremio sign in. Create one free or sign in from Settings.":
- "Аккаунт Harbor не связан с входом в Stremio. Создайте его бесплатно или войдите в настройках.",
+ "Your Harbor account is separate from your Stremio sign in. Create one free or sign in from Settings.": "Аккаунт Harbor не связан с входом в Stremio. Создайте его бесплатно или войдите в настройках.",
"Open account settings": "Открыть настройки аккаунта",
"Save rating": "Сохранить оценку",
"Rate this": "Оценить",
@@ -40,41 +27,35 @@ const profileFill: Record = {
"You are rating too fast, try again in a moment": "Слишком частые оценки, повторите чуть позже",
"Could not save your rating": "Не удалось сохранить оценку",
"Could not remove your rating": "Не удалось удалить оценку",
- "Couldn't reach Harbor, check your connection":
- "Не удалось связаться с Harbor, проверьте подключение",
+ "Couldn't reach Harbor, check your connection": "Не удалось связаться с Harbor, проверьте подключение",
"Harbor is having trouble, try again in a moment": "У Harbor неполадки, повторите чуть позже",
- Ratings: "Оценки",
+ "Ratings": "Оценки",
"Move or hide your cards": "Переместить или скрыть карточки",
"Watch time": "Время просмотра",
- Showcase: "Витрина",
- Lists: "Списки",
+ "Showcase": "Витрина",
+ "Lists": "Списки",
"Hero stats": "Статистика профиля",
- "Choose which stats show in the row at the top of your profile":
- "Выберите, какие показатели видны в строке вверху профиля",
- "Pick the stats that show in the row at the top of your public profile. At least one has to stay visible.":
- "Выберите показатели для строки вверху вашего публичного профиля. Хотя бы один должен остаться видимым.",
+ "Choose which stats show in the row at the top of your profile": "Выберите, какие показатели видны в строке вверху профиля",
+ "Pick the stats that show in the row at the top of your public profile. At least one has to stay visible.": "Выберите показатели для строки вверху вашего публичного профиля. Хотя бы один должен остаться видимым.",
"Profile cards": "Карточки профиля",
- "Pick which cards show on your profile, and the order they appear in":
- "Выберите, какие карточки показывать в профиле и в каком порядке",
- "These cards run down your public profile. Set the order they appear in, and hide any you would rather keep to yourself.":
- "Эти карточки идут друг за другом в вашем публичном профиле. Задайте порядок и скройте те, что хотите оставить только для себя.",
+ "Pick which cards show on your profile, and the order they appear in": "Выберите, какие карточки показывать в профиле и в каком порядке",
+ "These cards run down your public profile. Set the order they appear in, and hide any you would rather keep to yourself.": "Эти карточки идут друг за другом в вашем публичном профиле. Задайте порядок и скройте те, что хотите оставить только для себя.",
"{count} of {total} showing": "Показано {count} из {total}",
- "Rate movies, shows, anime, and manga to build your ratings":
- "Оценивайте фильмы, сериалы, аниме и мангу, чтобы собрать свои оценки",
- avg: "сред.",
- rating: "оценка",
- ratings: "оценок",
+ "Rate movies, shows, anime, and manga to build your ratings": "Оценивайте фильмы, сериалы, аниме и мангу, чтобы собрать свои оценки",
+ "avg": "сред.",
+ "rating": "оценка",
+ "ratings": "оценок",
"{name}'s ratings": "Оценки {name}",
"No ratings yet": "Пока нет оценок",
"Show spoiler": "Показать спойлер",
"Add friends to see them here.": "Добавьте друзей, чтобы они появились здесь.",
"No friends to show yet": "Пока нет друзей",
"Online now": "Сейчас в сети",
- Offline: "Не в сети",
+ "Offline": "Не в сети",
"Show {count} more": "Показать ещё {count}",
- member: "участник",
- members: "участников",
- Owner: "Владелец",
+ "member": "участник",
+ "members": "участников",
+ "Owner": "Владелец",
"Remove {alias}": "Удалить {alias}",
"Could not join.": "Не удалось присоединиться.",
"Could not leave.": "Не удалось выйти.",
@@ -84,23 +65,21 @@ const profileFill: Record = {
"Change group photo": "Изменить фото группы",
"Add group photo": "Добавить фото группы",
"This group could not be loaded.": "Не удалось загрузить эту группу.",
- Members: "Участники",
+ "Members": "Участники",
"Invite member": "Пригласить участника",
"Delete this group for everyone?": "Удалить эту группу для всех?",
- Keep: "Оставить",
+ "Keep": "Оставить",
"Delete group": "Удалить группу",
"Leave group": "Покинуть группу",
"Join group": "Вступить в группу",
- Groups: "Группы",
+ "Groups": "Группы",
"Loading groups": "Загрузка групп",
"Could not load your groups.": "Не удалось загрузить ваши группы.",
- "Create a group to watch and share together.":
- "Создайте группу, чтобы смотреть и делиться вместе.",
+ "Create a group to watch and share together.": "Создайте группу, чтобы смотреть и делиться вместе.",
"Could not add member.": "Не удалось добавить участника.",
- "Search by handle or name to add people to this group.":
- "Найдите по нику или имени, чтобы добавить людей в группу.",
- Member: "Участник",
- Added: "Добавлен",
+ "Search by handle or name to add people to this group.": "Найдите по нику или имени, чтобы добавить людей в группу.",
+ "Member": "Участник",
+ "Added": "Добавлен",
"Unlike list": "Убрать лайк со списка",
"Like list": "Поставить лайк списку",
"Harbor list": "Список Harbor",
@@ -110,11 +89,9 @@ const profileFill: Record = {
"No location": "Без местоположения",
"Could not save. Try again.": "Не удалось сохранить. Повторите.",
"Featured lists": "Избранные списки",
- "Pick up to {max} lists to show on your public profile.":
- "Выберите до {max} списков для показа в публичном профиле.",
+ "Pick up to {max} lists to show on your public profile.": "Выберите до {max} списков для показа в публичном профиле.",
"You have no lists yet": "У вас пока нет списков",
- "Create lists in your library to feature them here":
- "Создайте списки в библиотеке, чтобы показать их здесь",
+ "Create lists in your library to feature them here": "Создайте списки в библиотеке, чтобы показать их здесь",
"{selected}/{max} selected": "Выбрано {selected}/{max}",
"Recent activity": "Недавняя активность",
"This user has chosen to keep activity private": "Пользователь скрыл свою активность",
@@ -122,42 +99,39 @@ const profileFill: Record = {
"Save to my lists": "Сохранить в мои списки",
"List full": "Список заполнен",
"Link and social": "Ссылка и соцсети",
- Embed: "Встроить",
+ "Embed": "Встроить",
"Copied for Discord": "Скопировано для Discord",
"Copy for Discord": "Копировать для Discord",
"Shown badges": "Показанные значки",
- "Pick up to {max} badges to show by your name. Tap in the order you want them to appear.":
- "Выберите до {max} значков для показа рядом с именем. Нажимайте в том порядке, в каком они должны отображаться.",
+ "Pick up to {max} badges to show by your name. Tap in the order you want them to appear.": "Выберите до {max} значков для показа рядом с именем. Нажимайте в том порядке, в каком они должны отображаться.",
"No badges to show yet": "Пока нет значков для показа",
"Earn badges and they will appear here to feature": "Получайте значки, и они появятся здесь",
"{count}/{max} selected": "Выбрано {count}/{max}",
"Remove {label}": "Удалить {label}",
"Could not save your links.": "Не удалось сохранить ссылки.",
"Social links": "Ссылки на соцсети",
- "Add up to {max} profiles. Enter your handle only, not the full link.":
- "Добавьте до {max} профилей. Укажите только ник, а не полную ссылку.",
+ "Add up to {max} profiles. Enter your handle only, not the full link.": "Добавьте до {max} профилей. Укажите только ник, а не полную ссылку.",
"You have reached the {max} link limit": "Достигнут лимит в {max} ссылок",
"{label} handle": "Ник в {label}",
"Write something about yourself": "Напишите о себе",
"This user hasn't written anything yet": "Пользователь пока ничего не написал",
"Could not send request.": "Не удалось отправить запрос.",
"Add friend": "Добавить в друзья",
- "Search by handle or name to send a request.":
- "Найдите по нику или имени, чтобы отправить запрос.",
+ "Search by handle or name to send a request.": "Найдите по нику или имени, чтобы отправить запрос.",
"@handle or name": "@ник или имя",
"Start typing to find people.": "Начните вводить, чтобы найти людей.",
"Searching...": "Поиск...",
"No one found by that name.": "Никого не найдено.",
"Open {alias} profile": "Открыть профиль {alias}",
- You: "Вы",
- Requested: "Запрос отправлен",
- Badges: "Значки",
+ "You": "Вы",
+ "Requested": "Запрос отправлен",
+ "Badges": "Значки",
"No badges earned yet": "Пока нет полученных значков",
"Sign in to leave a comment": "Войдите, чтобы оставить комментарий",
"Leave a comment. No links.": "Оставьте комментарий. Без ссылок.",
"{count} left": "Осталось {count}",
- Posting: "Публикация",
- Post: "Опубликовать",
+ "Posting": "Публикация",
+ "Post": "Опубликовать",
"Say something first": "Сначала напишите что-нибудь",
"Links are not allowed in comments": "Ссылки в комментариях запрещены",
"That looks like spam, try rephrasing": "Похоже на спам, попробуйте перефразировать",
@@ -175,12 +149,12 @@ const profileFill: Record = {
"Change photo": "Изменить фото",
"Add photo": "Добавить фото",
"Late-night sci-fi crew": "Ночные фанаты фантастики",
- Description: "Описание",
+ "Description": "Описание",
"What this group is about (optional)": "О чём эта группа (необязательно)",
- Creating: "Создание",
+ "Creating": "Создание",
"Your links": "Ваши ссылки",
"No links added yet.": "Ссылки пока не добавлены.",
- Socials: "Соцсети",
+ "Socials": "Соцсети",
"Add your social links": "Добавьте ссылки на соцсети",
"Copy {label} handle": "Копировать ник в {label}",
"What's on your mind?": "Что нового?",
@@ -190,23 +164,21 @@ const profileFill: Record = {
"No status": "Без статуса",
"Add status": "Добавить статус",
"Open @{handle} profile": "Открыть профиль @{handle}",
- Online: "В сети",
- "Preview unavailable. Click to open profile.":
- "Предпросмотр недоступен. Нажмите, чтобы открыть профиль.",
+ "Online": "В сети",
+ "Preview unavailable. Click to open profile.": "Предпросмотр недоступен. Нажмите, чтобы открыть профиль.",
"My lists": "Мои списки",
"This user hasn't featured any lists": "Пользователь не выбрал избранные списки",
"Untitled list": "Список без названия",
"Choose lists": "Выбрать списки",
"No lists featured yet": "Избранных списков пока нет",
- "Pick lists from your library to show them here":
- "Выберите списки из библиотеки, чтобы показать их здесь",
+ "Pick lists from your library to show them here": "Выберите списки из библиотеки, чтобы показать их здесь",
"Add background": "Добавить фон",
"In a watch party": "На совместном просмотре",
"{count} aboard": "{count} на борту",
"Paused on ": "На паузе ",
"Watching ": "Смотрит ",
- something: "что-то",
- Share: "Поделиться",
+ "something": "что-то",
+ "Share": "Поделиться",
"Share profile": "Поделиться профилем",
"Profile link": "Ссылка на профиль",
"{name} on Harbor": "{name} в Harbor",
@@ -228,66 +200,16 @@ const profileFill: Record = {
"Change banner": "Изменить баннер",
"Add banner": "Добавить баннер",
"Could not load this profile": "Не удалось загрузить профиль",
- "Something went wrong reaching Harbor. Check your connection and try again.":
- "Не удалось связаться с Harbor. Проверьте подключение и повторите попытку.",
+ "Something went wrong reaching Harbor. Check your connection and try again.": "Не удалось связаться с Harbor. Проверьте подключение и повторите попытку.",
"No such captain": "Капитан не найден",
- "We could not find anyone at @{handle}. The handle may have changed or the profile was removed.":
- "Не удалось никого найти по @{handle}. Возможно, никнейм изменился или профиль удалён.",
+ "We could not find anyone at @{handle}. The handle may have changed or the profile was removed.": "Не удалось никого найти по @{handle}. Возможно, никнейм изменился или профиль удалён.",
"{alias} keeps this private": "{alias} скрывает эти данные",
- "This member has hidden their showcase, activity and friends from public view.":
- "Витрина, активность и друзья этого участника скрыты от посторонних.",
- Finished: "Просмотрено",
- Rated: "Оценено",
+ "This member has hidden their showcase, activity and friends from public view.": "Витрина, активность и друзья этого участника скрыты от посторонних.",
+ "Finished": "Просмотрено",
+ "Rated": "Оценено",
"not in your library": "нет в вашей библиотеке",
"1 friend in common": "1 общий друг",
"{count} friends in common": "{count} общих друзей",
- "Favourite games": "Любимые игры",
- "Favourite books": "Любимые книги",
- "Favourite music": "Любимая музыка",
- "Pick up to {max} games to show on your profile.": "Выберите до {max} игр для показа в профиле.",
- "Pick up to {max} books to show on your profile.": "Выберите до {max} книг для показа в профиле.",
- "Pick up to {max} artists to show on your profile.":
- "Выберите до {max} исполнителей для показа в профиле.",
- "Search games": "Поиск игр",
- "Search books": "Поиск книг",
- "Search artists": "Поиск исполнителей",
- "Search for a game": "Найдите игру",
- "Search for a book": "Найдите книгу",
- "Search for an artist": "Найдите исполнителя",
- "Type a title to find its cover art.": "Введите название, чтобы найти обложку.",
- "Type a title to find its cover.": "Введите название, чтобы найти обложку.",
- "Type a name to find their photo.": "Введите имя, чтобы найти фото.",
- "No games match that search": "Нет игр по этому запросу",
- "No books match that search": "Нет книг по этому запросу",
- "No artists match that search": "Нет исполнителей по этому запросу",
- "Could not reach the game database": "Не удалось связаться с базой данных игр",
- "Could not reach the book database": "Не удалось связаться с базой данных книг",
- "Could not reach the music database": "Не удалось связаться с базой данных музыки",
- "Game search needs an API key before it can run.": "Для поиска игр нужен ключ API.",
- "Book search needs an API key before it can run.": "Для поиска книг нужен ключ API.",
- "Music search needs an API key before it can run.": "Для поиска музыки нужен ключ API.",
- "That's {max} games. Remove one to add another.":
- "Уже {max} игр. Удалите одну, чтобы добавить другую.",
- "That's {max} books. Remove one to add another.":
- "Уже {max} книг. Удалите одну, чтобы добавить другую.",
- "That's {max} artists. Remove one to add another.":
- "Уже {max} исполнителей. Удалите одного, чтобы добавить другого.",
- "We couldn't load your saved favourites": "Не удалось загрузить ваше сохранённое избранное",
- "Saving now could overwrite them. Try again in a moment.":
- "Сохранение сейчас может их перезаписать. Повторите чуть позже.",
- "Shown order": "Порядок показа",
- "Check the spelling or try a shorter search.":
- "Проверьте написание или попробуйте более короткий запрос.",
- "Something went wrong on the way there.": "Что-то пошло не так по пути.",
- "An API key is needed": "Нужен ключ API",
- Favourites: "Любимое",
- "Add favourite games": "Добавить любимые игры",
- "Add favourite books": "Добавить любимые книги",
- "Add favourite artists": "Добавить любимых исполнителей",
- Games: "Игры",
- Books: "Книги",
- "Show your favourite games, books and music on your profile":
- "Показывайте любимые игры, книги и музыку в своём профиле",
};
export default profileFill;
diff --git a/src/lib/i18n/locales/ru/settings-fill.ts b/src/lib/i18n/locales/ru/settings-fill.ts
index a064d556d..4e6156fe4 100644
--- a/src/lib/i18n/locales/ru/settings-fill.ts
+++ b/src/lib/i18n/locales/ru/settings-fill.ts
@@ -263,6 +263,30 @@ const settingsFill: Record = {
"Who keeps the lights on, what Harbor is built on, and where to put money if you want to.": "Кто поддерживает серверы, на чём построен Harbor, и куда вложить деньги, если хотите.",
"If you were going to send something, send it to ElfHosted or Stremio above, or to one of the charities below. They all do more good with it.": "Если вы собирались что-то отправить, отправьте это ElfHosted или Stremio выше, или одной из благотворительных организаций ниже. Все они принесут больше пользы.",
"Support ElfHosted or Stremio, or give to any charity below, and the badge lands on your profile.": "Поддержите ElfHosted или Stremio, или пожертвуйте любой организации ниже — и значок появится в вашем профиле.",
+ "Fullscreen clock": "Часы в полноэкранном режиме",
+ "Keep your local time visible during fullscreen playback and choose how it looks.": "Держите местное время на виду во время полноэкранного просмотра и выберите его вид.",
+ "Show fullscreen clock": "Показывать часы в полноэкранном режиме",
+ "The clock appears with the player controls.": "Часы появляются вместе с элементами управления плеера.",
+ "Clock format": "Формат часов",
+ "12-hour": "12-часовой",
+ "24-hour": "24-часовой",
+ "Show seconds": "Показывать секунды",
+ "Update the clock every second.": "Обновлять часы каждую секунду.",
+ "Show estimated finish time": "Показывать примерное время окончания",
+ "Display the local time when the current video is expected to end.": "Показывает местное время, когда текущее видео должно закончиться.",
+ "Clock size": "Размер часов",
+ "Clock style": "Стиль часов",
+ "Minimal": "Минимальный",
+ "Solid": "Сплошной",
+ "Accent": "Акцент",
+ "Soft blur with a floating pill.": "Мягкое размытие в плавающей плашке.",
+ "Time only, with a subtle shadow.": "Только время, с лёгкой тенью.",
+ "High-contrast panel for busy scenes.": "Контрастная панель для насыщенных сцен.",
+ "Uses your theme's accent color.": "Использует акцентный цвет вашей темы.",
+ "Focused Card": "Выделенная карточка",
+ "Expanding Cards": "Расширяющиеся карточки",
+ "Emphasize the selected card across the page while gently darkening and blurring the other cards.": "Выделяет выбранную карточку на странице, слегка затемняя и размывая остальные.",
+ "Expand poster cards during keyboard or remote navigation across poster rows, using preloaded wide artwork.": "Расширяет карточки постеров при навигации с клавиатуры или пульта по рядам постеров, используя предзагруженные широкие изображения.",
};
export default settingsFill;
diff --git a/src/lib/i18n/locales/ru/used.ts b/src/lib/i18n/locales/ru/used.ts
index cd133eea9..1bcd3542a 100644
--- a/src/lib/i18n/locales/ru/used.ts
+++ b/src/lib/i18n/locales/ru/used.ts
@@ -54,6 +54,7 @@ const used: Record = {
"French Films": "Французские фильмы",
"Frequent Collaborators": "Часто работает с",
"Friend requests": "Запросы в друзья",
+ "From": "От",
"From the region": "Из региона",
"Genres are only recorded for files scanned after this feature was added — re-add a folder to pick them up.": "Жанры записываются только для файлов, просканированных после появления этой функции — добавьте папку заново, чтобы их подтянуть.",
"Gently magnify nearby posters as you move across a poster row.": "Плавно увеличивать соседние постеры при движении по ряду.",
@@ -157,6 +158,7 @@ const used: Record = {
"The all-time greats": "Величайшие за все времена",
"The server stopped responding, the rest stayed on this device.": "Сервер перестал отвечать, остальное осталось на этом устройстве.",
"Timer": "Таймер",
+ "To": "До",
"Top 100": "Топ-100",
"Top Manga": "Топ манги",
"IMDb Top": "Топ IMDb",
@@ -199,6 +201,8 @@ const used: Record = {
"{name} Minecraft skin": "Скин {name} в Minecraft",
"{name} invited you to {group}": "{name} приглашает вас в {group}",
"{n} could not be matched so far": "Пока не удалось сопоставить: {n}",
+ "{n} downloading": "{n} загружается",
+ "{n} paused": "{n} на паузе",
"{n} ratings were saved before you stopped.": "До остановки сохранено {n} оценок.",
"{n} titles together": "{n} проектов вместе",
"{n} versions": "{n} версий",
diff --git a/src/lib/i18n/store.ts b/src/lib/i18n/store.ts
index 7b4996804..f973f04d7 100644
--- a/src/lib/i18n/store.ts
+++ b/src/lib/i18n/store.ts
@@ -1,5 +1,28 @@
import { useSyncExternalStore } from "react";
-import { isRtl, normalizeLanguage, type UiLanguage } from "./languages";
+import { DEFAULT_LANGUAGE, LANGUAGES, isRtl, normalizeLanguage, type UiLanguage } from "./languages";
+
+function systemLanguages(): readonly string[] {
+ if (typeof navigator === "undefined") return [];
+ return navigator.languages?.length ? navigator.languages : [navigator.language];
+}
+
+export function detectUiLanguage(preferred: readonly string[] = systemLanguages()): UiLanguage {
+ for (const lang of preferred) {
+ const base = lang.trim().toLowerCase().split(/[-_]/)[0];
+ if (LANGUAGES.some((l) => l.code === base)) return base as UiLanguage;
+ }
+ return DEFAULT_LANGUAGE;
+}
+
+export function resolveUiLanguage(
+ stored: unknown,
+ preferred: readonly string[] = systemLanguages(),
+): UiLanguage {
+ if (typeof stored === "string" && LANGUAGES.some((l) => l.code === stored)) {
+ return stored as UiLanguage;
+ }
+ return detectUiLanguage(preferred);
+}
function applyDocument(lang: UiLanguage) {
if (typeof document === "undefined") return;
@@ -9,7 +32,7 @@ function applyDocument(lang: UiLanguage) {
}
function storedUiLanguage(): UiLanguage {
- if (typeof localStorage === "undefined") return "en";
+ if (typeof localStorage === "undefined") return detectUiLanguage();
try {
const profileState = JSON.parse(localStorage.getItem("harbor.profiles.v1") ?? "null") as {
activeId?: string | null;
@@ -30,7 +53,7 @@ function storedUiLanguage(): UiLanguage {
} catch {
/* ignore */
}
- return "en";
+ return detectUiLanguage();
}
let current: UiLanguage = storedUiLanguage();
diff --git a/src/lib/iptv/rtl.ts b/src/lib/iptv/rtl.ts
index ebf66361d..3f7bb0f8d 100644
--- a/src/lib/iptv/rtl.ts
+++ b/src/lib/iptv/rtl.ts
@@ -1,6 +1,8 @@
const RTL_RANGE = /[--ۿݐ-ݿࢠ-ࣿיִ-﷿ﹰ-]/;
const ARABIC_RANGE = /[-ۿݐ-ݿࢠ-ࣿﭐ-﷿ﹰ-]/;
const HARAKAT = /[ً-ْٰـ]/g;
+const INVISIBLE = /[\u200B-\u200F\u202A-\u202E\u2066-\u2069\uFEFF]/g;
+const ARABIC_DIGITS = /[٠-٩۰-۹]/g;
export function isRtl(s: string): boolean {
return RTL_RANGE.test(s);
@@ -16,12 +18,16 @@ export function hasArabic(s: string): boolean {
export function normalizeArabic(s: string): string {
return s
+ .normalize("NFKC")
+ .replace(INVISIBLE, "")
.replace(HARAKAT, "")
.replace(/[أإآٱ]/g, "ا")
.replace(/ة/g, "ه")
.replace(/ى/g, "ي")
.replace(/ؤ/g, "و")
.replace(/ئ/g, "ي")
+ .replace(ARABIC_DIGITS, (d) => String(d.charCodeAt(0) & 0xf))
+ .replace(/\s+/g, " ")
.toLowerCase()
.trim();
}
diff --git a/src/lib/keyboard-navigation/geometry.ts b/src/lib/keyboard-navigation/geometry.ts
index cad4fb448..541aba4bc 100644
--- a/src/lib/keyboard-navigation/geometry.ts
+++ b/src/lib/keyboard-navigation/geometry.ts
@@ -1,3 +1,5 @@
+import { stableCardNavigationRect } from "@/lib/poster-backdrop-expansion";
+
export type Dir = "up" | "down" | "left" | "right";
const SELECTOR = [
@@ -76,36 +78,6 @@ export function isVisible(el: HTMLElement) {
return true;
}
-const ONSCREEN_MARGIN = 320;
-
-export function isOnScreen(el: HTMLElement, margin = ONSCREEN_MARGIN): boolean {
- const r = el.getBoundingClientRect();
- if (r.width <= 0 || r.height <= 0) return false;
- const vw = window.innerWidth || document.documentElement.clientWidth;
- const vh = window.innerHeight || document.documentElement.clientHeight;
- if (r.right <= -margin || r.bottom <= -margin || r.left >= vw + margin || r.top >= vh + margin) {
- return false;
- }
- let node = el.parentElement;
- const clips = /(auto|scroll|hidden|clip)/;
- while (node && node !== document.body) {
- const s = window.getComputedStyle(node);
- if (clips.test(s.overflowX) || clips.test(s.overflowY)) {
- const cr = node.getBoundingClientRect();
- if (
- r.right <= cr.left - margin ||
- r.left >= cr.right + margin ||
- r.bottom <= cr.top - margin ||
- r.top >= cr.bottom + margin
- ) {
- return false;
- }
- }
- node = node.parentElement;
- }
- return true;
-}
-
export function isInNav(el: HTMLElement): boolean {
return !!el.closest("[data-harbor-nav]");
}
@@ -130,7 +102,7 @@ export function getSoundType(el: HTMLElement): "light" | "movie" {
export function getFocusable(root: ParentNode = document): HTMLElement[] {
const all = Array.from(root.querySelectorAll(SELECTOR)).filter(
- (el) => isVisible(el) && !el.closest("[data-tv-skip]") && (zoneOf(el) === "nav" || isOnScreen(el)),
+ (el) => isVisible(el) && !el.closest("[data-tv-skip]"),
);
return all.filter((el) => !all.some((other) => other !== el && other.contains(el)));
}
@@ -214,12 +186,11 @@ export function isLocallyManaged(target: HTMLElement | null): boolean {
}
function getRect(el: HTMLElement) {
- const r = el.getBoundingClientRect();
- return {
- left: r.left, right: r.right, top: r.top, bottom: r.bottom,
- width: r.width, height: r.height,
- cx: r.left + r.width / 2, cy: r.top + r.height / 2,
- };
+ const cell = el.closest("[data-tv-nav-base-width]");
+ const r = cell?.getBoundingClientRect() ?? el.getBoundingClientRect();
+ const baseWidth = cell ? Number(cell.dataset.tvNavBaseWidth) : undefined;
+ const rtl = cell ? window.getComputedStyle(cell).direction === "rtl" : false;
+ return stableCardNavigationRect(r, baseWidth, rtl);
}
function overlap(aStart: number, aEnd: number, bStart: number, bEnd: number) {
diff --git a/src/lib/local-time.ts b/src/lib/local-time.ts
new file mode 100644
index 000000000..e103d3a98
--- /dev/null
+++ b/src/lib/local-time.ts
@@ -0,0 +1,79 @@
+export type FullscreenClockFormat = "system" | "12h" | "24h";
+export type FullscreenClockStyle = "glass" | "minimal" | "solid" | "accent";
+
+export const FULLSCREEN_CLOCK_SIZE_MIN_PX = 11;
+export const FULLSCREEN_CLOCK_SIZE_MAX_PX = 24;
+export const DEFAULT_FULLSCREEN_CLOCK_SIZE_PX = 13;
+
+const FORMATTERS = new Map();
+
+function formatterFor(format: FullscreenClockFormat, showSeconds: boolean): Intl.DateTimeFormat {
+ const key = `${format}:${showSeconds}`;
+ const cached = FORMATTERS.get(key);
+ if (cached) return cached;
+
+ const hourCycle = format === "12h" ? "h12" : format === "24h" ? "h23" : undefined;
+ const formatter = new Intl.DateTimeFormat(undefined, {
+ hour: "numeric",
+ minute: "2-digit",
+ ...(showSeconds ? { second: "2-digit" as const } : {}),
+ ...(hourCycle ? { hourCycle } : {}),
+ });
+ FORMATTERS.set(key, formatter);
+ return formatter;
+}
+
+export function formatLocalTime(
+ date: Date,
+ format: FullscreenClockFormat = "system",
+ showSeconds = false,
+): string {
+ return formatterFor(format, showSeconds).format(date);
+}
+
+export function msUntilNextClockTick(nowMs: number, showSeconds: boolean): number {
+ const interval = showSeconds ? 1_000 : 60_000;
+ const elapsed = ((nowMs % interval) + interval) % interval;
+ return interval - elapsed;
+}
+
+export function estimatePlaybackEndTime(
+ now: Date,
+ durationSec: number,
+ positionSec: number,
+ playbackRate = 1,
+): Date | null {
+ if (
+ !Number.isFinite(now.getTime()) ||
+ !Number.isFinite(durationSec) ||
+ !Number.isFinite(positionSec) ||
+ !Number.isFinite(playbackRate) ||
+ durationSec <= 0 ||
+ positionSec < 0 ||
+ playbackRate <= 0
+ ) {
+ return null;
+ }
+
+ const remainingSec = (durationSec - positionSec) / playbackRate;
+ return remainingSec > 0 ? new Date(now.getTime() + remainingSec * 1_000) : null;
+}
+
+export function sanitizeFullscreenClockFormat(value: unknown): FullscreenClockFormat {
+ return value === "12h" || value === "24h" ? value : "system";
+}
+
+export function sanitizeFullscreenClockStyle(value: unknown): FullscreenClockStyle {
+ return value === "minimal" || value === "solid" || value === "accent" ? value : "glass";
+}
+
+export function sanitizeFullscreenClockSize(value: unknown): number {
+ if (typeof value !== "number" || !Number.isFinite(value)) {
+ return DEFAULT_FULLSCREEN_CLOCK_SIZE_PX;
+ }
+
+ return Math.min(
+ FULLSCREEN_CLOCK_SIZE_MAX_PX,
+ Math.max(FULLSCREEN_CLOCK_SIZE_MIN_PX, Math.round(value)),
+ );
+}
diff --git a/src/lib/mal/config.ts b/src/lib/mal/config.ts
index 554a6b789..4ec3c0b51 100644
--- a/src/lib/mal/config.ts
+++ b/src/lib/mal/config.ts
@@ -1,8 +1,6 @@
-import { HARBOR_MAL_BASE } from "@/lib/config/endpoints";
-
export const MAL_AUTHORIZE_URL = "https://myanimelist.net/v1/oauth2/authorize";
export const MAL_API_BASE = "https://api.myanimelist.net/v2";
-export const MAL_REDIRECT_URI = `${HARBOR_MAL_BASE}/mal/`;
+export const MAL_REDIRECT_URI = "https://harbor.site/mal/";
export const MAL_DEVELOPER_URL = "https://myanimelist.net/apiconfig";
export const MAL_CLIENT_ID = "879be1ac300dc70611e5c828fec7bc18";
-export const MAL_TOKEN_PROXY = `${HARBOR_MAL_BASE}/api/mal/token`;
+export const MAL_TOKEN_PROXY = "https://harbor.site/api/mal/token";
diff --git a/src/lib/manga/community.ts b/src/lib/manga/community.ts
index 8ae7a3296..80e0af4ae 100644
--- a/src/lib/manga/community.ts
+++ b/src/lib/manga/community.ts
@@ -1,5 +1,4 @@
import { safeFetch } from "@/lib/safe-fetch";
-import { HARBOR_API_BASE } from "@/lib/config/endpoints";
export type CommunitySource = {
id: string;
@@ -13,7 +12,7 @@ export type CommunitySource = {
order?: number;
};
-const ENDPOINT = `${HARBOR_API_BASE}/api/manga-sources`;
+const ENDPOINT = "https://harbor.site/api/manga-sources";
const CACHE_KEY = "harbor.manga.catalog.v1";
const SEED: CommunitySource[] = [];
diff --git a/src/lib/mark-watched.ts b/src/lib/mark-watched.ts
index 0b1127ed1..eabdbeb11 100644
--- a/src/lib/mark-watched.ts
+++ b/src/lib/mark-watched.ts
@@ -5,6 +5,7 @@ import { addToHistory as simklAddToHistory } from "@/lib/simkl/history";
import { setMovieWatchedLocal } from "@/lib/movie-watched";
import { recordManualWatchedMeta, setManualWatchedMany } from "@/lib/manual-watched";
import { setWatchedFlag } from "@/lib/watched-flag";
+import { recordWatchEvent } from "@/lib/watch-events";
import { readActiveStremioAuthKey } from "@/lib/auth";
import { cloudWriteId } from "@/lib/stremio";
import { markMovieWatchedStremio } from "@/lib/stremio-watched-sync";
@@ -18,6 +19,7 @@ export async function markMovieWatched(
): Promise {
setMovieWatchedLocal(meta.id, true);
savePlayback(meta.id, { title: meta.name, parsedTitle: meta.name });
+ recordWatchEvent({ id: meta.id, type: "movie", name: meta.name, poster: meta.poster, at: Date.now() });
const imdb = imdbId ?? (meta.id.startsWith("tt") ? meta.id : undefined);
const tmdb = typeof tmdbId === "string" ? Number(tmdbId) || undefined : tmdbId ?? undefined;
const authKey = readActiveStremioAuthKey();
@@ -86,6 +88,7 @@ export async function markMetaWatched(
background: meta.background,
markedAt: new Date().toISOString(),
});
+ recordWatchEvent({ id: meta.id, type: "series", name: meta.name, poster: meta.poster, at: Date.now() });
const resolvedImdb = resolveSeriesImdb(meta, imdbId);
const eps = await releasedEpisodes(meta, resolvedImdb);
if (eps.length > 0) setManualWatchedMany(meta.id, eps, true);
diff --git a/src/lib/page-collection-rows.ts b/src/lib/page-collection-rows.ts
new file mode 100644
index 000000000..9a4fa0bfc
--- /dev/null
+++ b/src/lib/page-collection-rows.ts
@@ -0,0 +1,162 @@
+import { useMemo, useSyncExternalStore } from "react";
+import { useCollections, type Collection } from "@/lib/collections";
+
+const KEY = "harbor.pagecollrows.v1";
+const CAP_PER_PAGE = 6;
+const subs = new Set<() => void>();
+
+export type CollectionRowPage = "home" | "movies" | "shows" | "anime";
+
+export const COLLECTION_ROW_PAGES: { id: CollectionRowPage; label: string }[] = [
+ { id: "home", label: "Home" },
+ { id: "movies", label: "Movies" },
+ { id: "shows", label: "Series" },
+ { id: "anime", label: "Anime" },
+];
+
+const PAGE_IDS: CollectionRowPage[] = ["home", "movies", "shows", "anime"];
+
+type Store = Record;
+
+function empty(): Store {
+ return { home: [], movies: [], shows: [], anime: [] };
+}
+
+let cache: Store = load();
+
+function load(): Store {
+ const out = empty();
+ try {
+ const raw = localStorage.getItem(KEY);
+ if (!raw) return out;
+ const parsed = JSON.parse(raw) as unknown;
+ if (!parsed || typeof parsed !== "object") return out;
+ const p = parsed as Record;
+ for (const page of PAGE_IDS) {
+ const list = p[page];
+ if (!Array.isArray(list)) continue;
+ const seen = new Set();
+ for (const id of list) {
+ if (typeof id !== "string" || seen.has(id)) continue;
+ seen.add(id);
+ out[page].push(id);
+ if (out[page].length >= CAP_PER_PAGE) break;
+ }
+ }
+ return out;
+ } catch {
+ return out;
+ }
+}
+
+function commit(next: Store): void {
+ cache = next;
+ try {
+ localStorage.setItem(KEY, JSON.stringify(cache));
+ } catch {}
+ for (const s of subs) s();
+}
+
+function clone(): Store {
+ return {
+ home: [...cache.home],
+ movies: [...cache.movies],
+ shows: [...cache.shows],
+ anime: [...cache.anime],
+ };
+}
+
+export function collectionPageIds(page: CollectionRowPage): string[] {
+ return cache[page];
+}
+
+export function isCollectionOnPage(page: CollectionRowPage, collectionId: string): boolean {
+ return cache[page].includes(collectionId);
+}
+
+export function collectionPageCap(page: CollectionRowPage): boolean {
+ return cache[page].length >= CAP_PER_PAGE;
+}
+
+export function addCollectionToPage(page: CollectionRowPage, collectionId: string): boolean {
+ if (cache[page].includes(collectionId)) return true;
+ if (cache[page].length >= CAP_PER_PAGE) return false;
+ const next = clone();
+ next[page].push(collectionId);
+ commit(next);
+ return true;
+}
+
+export function removeCollectionFromPage(page: CollectionRowPage, collectionId: string): void {
+ if (!cache[page].includes(collectionId)) return;
+ const next = clone();
+ next[page] = next[page].filter((id) => id !== collectionId);
+ commit(next);
+}
+
+export function toggleCollectionOnPage(page: CollectionRowPage, collectionId: string): boolean {
+ if (isCollectionOnPage(page, collectionId)) {
+ removeCollectionFromPage(page, collectionId);
+ return false;
+ }
+ return addCollectionToPage(page, collectionId);
+}
+
+export function purgeCollectionFromPages(collectionId: string): void {
+ let touched = false;
+ const next = clone();
+ for (const page of PAGE_IDS) {
+ const filtered = next[page].filter((id) => id !== collectionId);
+ if (filtered.length !== next[page].length) {
+ next[page] = filtered;
+ touched = true;
+ }
+ }
+ if (touched) commit(next);
+}
+
+function subscribe(fn: () => void): () => void {
+ subs.add(fn);
+ return () => {
+ subs.delete(fn);
+ };
+}
+
+function usePageIds(page: CollectionRowPage): string[] {
+ return useSyncExternalStore(
+ subscribe,
+ () => cache[page],
+ () => cache[page],
+ );
+}
+
+export function useCollectionRowsForPage(page: CollectionRowPage): Collection[] {
+ const ids = usePageIds(page);
+ const collections = useCollections();
+ return useMemo(() => {
+ const byId = new Map(collections.map((c) => [c.id, c] as const));
+ const out: Collection[] = [];
+ for (const id of ids) {
+ const c = byId.get(id);
+ if (c) out.push(c);
+ }
+ return out;
+ }, [ids, collections]);
+}
+
+export function usePagesForCollection(collectionId: string): Set {
+ const home = usePageIds("home");
+ const movies = usePageIds("movies");
+ const shows = usePageIds("shows");
+ const anime = usePageIds("anime");
+ return useMemo(() => {
+ const set = new Set();
+ if (home.includes(collectionId)) set.add("home");
+ if (movies.includes(collectionId)) set.add("movies");
+ if (shows.includes(collectionId)) set.add("shows");
+ if (anime.includes(collectionId)) set.add("anime");
+ return set;
+ }, [home, movies, shows, anime, collectionId]);
+}
+
+export const COLLECTION_ROW_CAP = CAP_PER_PAGE;
diff --git a/src/lib/playback-history.ts b/src/lib/playback-history.ts
index b63e1bc0c..69a68aa01 100644
--- a/src/lib/playback-history.ts
+++ b/src/lib/playback-history.ts
@@ -200,7 +200,6 @@ export function readLastSeriesPlayback(metaId: string): PlaybackEntry | null {
export function streamMatchesSource(
s: {
- infoHash?: string | null;
addonId?: string | null;
resolution?: string | null;
source?: string | null;
@@ -208,12 +207,12 @@ export function streamMatchesSource(
},
e: PlaybackEntry,
): boolean {
- if (e.infoHash && s.infoHash) {
- return s.infoHash.toLowerCase() === e.infoHash.toLowerCase();
- }
const sBinge = s.behaviorHints?.bingeGroup ?? null;
- if (e.bingeGroup && sBinge) return sBinge === e.bingeGroup;
- return (
- !!e.addonId && s.addonId === e.addonId && e.resolution === s.resolution && e.source === s.source
+ if (e.bingeGroup && sBinge) return sBinge === e.bingeGroup;
+ return (
+ !!e.addonId &&
+ s.addonId === e.addonId &&
+ e.resolution === s.resolution &&
+ e.source === s.source
);
}
\ No newline at end of file
diff --git a/src/lib/player-chrome.ts b/src/lib/player-chrome.ts
index 786853108..eb338e103 100644
--- a/src/lib/player-chrome.ts
+++ b/src/lib/player-chrome.ts
@@ -12,6 +12,7 @@ export type PlayerSlot =
export type PlayerControlId =
| "back"
| "title-info"
+ | "local-time"
| "time-start"
| "time-end"
| "volume"
@@ -173,6 +174,7 @@ export const DEFAULT_DEFAULT_CONFIG: PlayerChromeConfig = {
controls: [
{ id: "back", slot: "top-left", order: 0 },
{ id: "title-info", slot: "top-left", order: 10 },
+ { id: "local-time", slot: "top-right", order: 90 },
{ id: "window-controls", slot: "top-right", order: 100 },
{ id: "time-start", slot: "seek-leading", order: 0 },
{ id: "time-end", slot: "seek-trailing", order: 0 },
@@ -212,6 +214,7 @@ export const DEFAULT_STREMIO_CONFIG: PlayerChromeConfig = {
{ id: "back", slot: "top-left", order: 0 },
{ id: "title-info", slot: "top-left", order: 10 },
{ id: "fullscreen", slot: "top-right", order: 0 },
+ { id: "local-time", slot: "top-right", order: 90 },
{ id: "window-controls", slot: "top-right", order: 100 },
{ id: "play-pause", slot: "bottom-left", order: 0 },
{ id: "volume", slot: "bottom-left", order: 10 },
@@ -250,6 +253,7 @@ export const CONTROL_META: Record<
> = {
back: { label: "Back", group: "actions", defaultSlot: "top-left" },
"title-info": { label: "Title & info", group: "info", defaultSlot: "top-left" },
+ "local-time": { label: "Local time", group: "info", defaultSlot: "top-right" },
"time-start": { label: "Time elapsed", group: "info", defaultSlot: "seek-leading" },
"time-end": { label: "Time remaining or duration", group: "info", defaultSlot: "seek-trailing" },
volume: { label: "Volume", group: "transport", defaultSlot: "bottom-left" },
diff --git a/src/lib/player/shader-catalog.ts b/src/lib/player/shader-catalog.ts
index 4e0ba0adb..83a43d6e6 100644
--- a/src/lib/player/shader-catalog.ts
+++ b/src/lib/player/shader-catalog.ts
@@ -1,5 +1,3 @@
-import { HARBOR_API_BASE } from "@/lib/config/endpoints";
-
export type ShaderStage = "prescale" | "restore" | "chroma" | "sharpen" | "tonemap";
export type ShaderContent = "all" | "anime" | "hdr" | "live";
@@ -24,8 +22,8 @@ export type ShaderCatalogEntry = {
function demoFor(id: string, credit: string) {
return {
- before: `${HARBOR_API_BASE}/shaders/${id}/before.webp`,
- after: `${HARBOR_API_BASE}/shaders/${id}/after.webp`,
+ before: `https://harbor.site/shaders/${id}/before.webp`,
+ after: `https://harbor.site/shaders/${id}/after.webp`,
credit,
};
}
@@ -51,18 +49,8 @@ export const SHADER_CATALOG: ShaderCatalogEntry[] = [
source: { label: "igv/FSRCNN-TensorFlow", url: "https://github.com/igv/FSRCNN-TensorFlow" },
files: ["FSRCNNX_x2_16-0-4-1.glsl"],
variants: [
- {
- id: "hq",
- label: "High quality",
- sub: "16-0-4-1. The reference variant, heaviest on the GPU.",
- files: ["FSRCNNX_x2_16-0-4-1.glsl"],
- },
- {
- id: "light",
- label: "Light",
- sub: "8-0-4-1. Half the passes, kinder to weaker cards.",
- files: ["FSRCNNX_x2_8-0-4-1.glsl"],
- },
+ { id: "hq", label: "High quality", sub: "16-0-4-1. The reference variant, heaviest on the GPU.", files: ["FSRCNNX_x2_16-0-4-1.glsl"] },
+ { id: "light", label: "Light", sub: "8-0-4-1. Half the passes, kinder to weaker cards.", files: ["FSRCNNX_x2_8-0-4-1.glsl"] },
],
},
{
@@ -74,10 +62,7 @@ export const SHADER_CATALOG: ShaderCatalogEntry[] = [
description:
"AMD FidelityFX Super Resolution. A fast spatial upscaler that fires when the video is smaller than the window. A great default for live action where Anime4K is the wrong tool.",
stage: "prescale",
- source: {
- label: "agyild (gist)",
- url: "https://gist.github.com/agyild/82219c545228d70c5604f865ce0b0ce5",
- },
+ source: { label: "agyild (gist)", url: "https://gist.github.com/agyild/82219c545228d70c5604f865ce0b0ce5" },
files: ["FSR.glsl"],
},
{
@@ -89,10 +74,7 @@ export const SHADER_CATALOG: ShaderCatalogEntry[] = [
description:
"NVIDIA Image Scaling. A light spatial upscaler and sharpener, an alternative to FSR that runs well on any GPU.",
stage: "prescale",
- source: {
- label: "agyild (gist)",
- url: "https://gist.github.com/agyild/7e8951915b2bf24526a9343d951db214",
- },
+ source: { label: "agyild (gist)", url: "https://gist.github.com/agyild/7e8951915b2bf24526a9343d951db214" },
files: ["NVScaler.glsl"],
},
{
@@ -104,10 +86,7 @@ export const SHADER_CATALOG: ShaderCatalogEntry[] = [
description:
"Qualcomm Snapdragon Game Super Resolution. A very cheap single-pass spatial upscaler, a lighter alternative to FSR on low-power hardware.",
stage: "prescale",
- source: {
- label: "agyild (gist)",
- url: "https://gist.github.com/agyild/7715b6b1f38427839d58f80884902cab",
- },
+ source: { label: "agyild (gist)", url: "https://gist.github.com/agyild/7715b6b1f38427839d58f80884902cab" },
files: ["SGSR.glsl"],
},
{
@@ -124,12 +103,7 @@ export const SHADER_CATALOG: ShaderCatalogEntry[] = [
variants: [
{ id: "r3", label: "Radius 3", sub: "The balanced default.", files: ["ravu-lite-r3.hook"] },
{ id: "r4", label: "Radius 4", sub: "Sharpest, heaviest.", files: ["ravu-lite-r4.hook"] },
- {
- id: "r2",
- label: "Radius 2",
- sub: "Lightest, for weaker cards.",
- files: ["ravu-lite-r2.hook"],
- },
+ { id: "r2", label: "Radius 2", sub: "Lightest, for weaker cards.", files: ["ravu-lite-r2.hook"] },
],
},
{
@@ -144,24 +118,9 @@ export const SHADER_CATALOG: ShaderCatalogEntry[] = [
source: { label: "bjin/mpv-prescalers", url: "https://github.com/bjin/mpv-prescalers" },
files: ["nnedi3-nns32-win8x4.hook"],
variants: [
- {
- id: "nns32",
- label: "32 neurons",
- sub: "The practical default.",
- files: ["nnedi3-nns32-win8x4.hook"],
- },
- {
- id: "nns64",
- label: "64 neurons",
- sub: "Sharper, heavier.",
- files: ["nnedi3-nns64-win8x4.hook"],
- },
- {
- id: "nns128",
- label: "128 neurons",
- sub: "Reference quality, very heavy.",
- files: ["nnedi3-nns128-win8x4.hook"],
- },
+ { id: "nns32", label: "32 neurons", sub: "The practical default.", files: ["nnedi3-nns32-win8x4.hook"] },
+ { id: "nns64", label: "64 neurons", sub: "Sharper, heavier.", files: ["nnedi3-nns64-win8x4.hook"] },
+ { id: "nns128", label: "128 neurons", sub: "Reference quality, very heavy.", files: ["nnedi3-nns128-win8x4.hook"] },
],
},
{
@@ -173,10 +132,7 @@ export const SHADER_CATALOG: ShaderCatalogEntry[] = [
description:
"Runs after an upscaler to recover the detail and sharpness a doubler softens. Best paired with FSRCNNX or RAVU, not used alone.",
stage: "restore",
- source: {
- label: "igv (gist)",
- url: "https://gist.github.com/igv/2364ffa6e81540f29cb7ab4c9bc05b6b",
- },
+ source: { label: "igv (gist)", url: "https://gist.github.com/igv/2364ffa6e81540f29cb7ab4c9bc05b6b" },
files: ["SSimSuperRes.glsl"],
},
{
@@ -188,10 +144,7 @@ export const SHADER_CATALOG: ShaderCatalogEntry[] = [
description:
"A high quality chroma upscaler. Fixes the color blur and bleeding of default chroma scaling, most visible on saturated edges and subtitles.",
stage: "chroma",
- source: {
- label: "igv (gist)",
- url: "https://gist.github.com/igv/a015fc885d5c22e6891820ad89555637",
- },
+ source: { label: "igv (gist)", url: "https://gist.github.com/igv/a015fc885d5c22e6891820ad89555637" },
files: ["KrigBilateral.glsl"],
},
{
@@ -203,10 +156,7 @@ export const SHADER_CATALOG: ShaderCatalogEntry[] = [
description:
"Edge-aware sharpening that lifts soft detail without the halos of a naive sharpen. An alternative to CAS, run one or the other, not both.",
stage: "sharpen",
- source: {
- label: "igv (gist)",
- url: "https://gist.github.com/igv/8a77e4eb8276753b54bb94c1c50c317e",
- },
+ source: { label: "igv (gist)", url: "https://gist.github.com/igv/8a77e4eb8276753b54bb94c1c50c317e" },
files: ["adaptive-sharpen.glsl"],
},
{
@@ -218,10 +168,7 @@ export const SHADER_CATALOG: ShaderCatalogEntry[] = [
description:
"AMD's cheap, natural sharpener. Runs last in the chain and lifts detail on soft sources without the halos of a naive sharpen.",
stage: "sharpen",
- source: {
- label: "agyild (gist)",
- url: "https://gist.github.com/agyild/bbb4e58298b2f86aa24da3032a0d2ee6",
- },
+ source: { label: "agyild (gist)", url: "https://gist.github.com/agyild/bbb4e58298b2f86aa24da3032a0d2ee6" },
files: ["CAS.glsl"],
},
{
@@ -233,10 +180,7 @@ export const SHADER_CATALOG: ShaderCatalogEntry[] = [
description:
"High quality HDR to SDR tone and gamut mapping as a shader pipeline, for PQ (HDR10) sources. Use this instead of Harbor's built-in tone-mapping. Turn off the built-in HDR to SDR conversion first, it cannot run alongside this. Needs the gpu-next renderer, so it is reliable on Windows and unverified on macOS.",
stage: "tonemap",
- source: {
- label: "natural-harmonia-gropius/hdr-toys",
- url: "https://github.com/natural-harmonia-gropius/hdr-toys",
- },
+ source: { label: "natural-harmonia-gropius/hdr-toys", url: "https://github.com/natural-harmonia-gropius/hdr-toys" },
files: ["clip_both.glsl", "pq_inv.glsl", "astra.glsl", "bottosson.glsl", "bt1886.glsl"],
companionProps: {
"tone-mapping": "clip",
diff --git a/src/lib/poster-backdrop-expansion.ts b/src/lib/poster-backdrop-expansion.ts
new file mode 100644
index 000000000..958a79790
--- /dev/null
+++ b/src/lib/poster-backdrop-expansion.ts
@@ -0,0 +1,112 @@
+const WIDE_ASPECT_RATIO = 16 / 9;
+const MIN_WIDE_ARTWORK_WIDTH = 640;
+const MIN_WIDE_ARTWORK_HEIGHT = 360;
+const MIN_WIDE_ARTWORK_RATIO = 1.45;
+const MAX_WIDE_ARTWORK_RATIO = 2.2;
+
+export type CardNavigationRect = {
+ left: number;
+ right: number;
+ top: number;
+ bottom: number;
+ width: number;
+ height: number;
+};
+
+type HorizontalBounds = Pick;
+
+function artworkIdentity(url?: string): string | undefined {
+ const value = url?.trim();
+ if (!value) return undefined;
+
+ try {
+ const parsed = new URL(value);
+ const host = parsed.host.toLowerCase();
+ const path = parsed.pathname.replace(/\\/g, "/");
+ const normalizedPath =
+ parsed.hostname.toLowerCase() === "image.tmdb.org"
+ ? path.replace(/^\/t\/p\/[^/]+\//i, "/t/p/{size}/")
+ : path;
+ return `${parsed.protocol.toLowerCase()}//${host}${normalizedPath}`;
+ } catch {
+ return value.split(/[?#]/, 1)[0]?.replace(/\\/g, "/") || undefined;
+ }
+}
+
+export function pickAlternativeWideArtwork(
+ candidates: string[],
+ current?: string,
+): string | undefined {
+ const currentIdentity = artworkIdentity(current);
+ return candidates.find((candidate) => artworkIdentity(candidate) !== currentIdentity);
+}
+
+export function rewriteWideArtworkRung(url: string): string {
+ return url.replace(/\/t\/p\/[^/]+\//, "/t/p/w1280/");
+}
+
+export function expandedCardWidth(posterHeight: number): number {
+ return posterHeight * WIDE_ASPECT_RATIO;
+}
+
+export function scrollDeltaToRevealCard(
+ card: HorizontalBounds,
+ viewport: HorizontalBounds,
+ gutter = 0,
+): number {
+ const left = viewport.left + Math.max(0, gutter);
+ const right = viewport.right - Math.max(0, gutter);
+ if (card.left < left && card.right > right) return 0;
+ if (card.right > right) return card.right - right;
+ if (card.left < left) return card.left - left;
+ return 0;
+}
+
+export function isSuitableWideArtworkSize(width: number, height: number): boolean {
+ const ratio = height > 0 ? width / height : 0;
+ return (
+ width >= MIN_WIDE_ARTWORK_WIDTH &&
+ height >= MIN_WIDE_ARTWORK_HEIGHT &&
+ ratio >= MIN_WIDE_ARTWORK_RATIO &&
+ ratio <= MAX_WIDE_ARTWORK_RATIO
+ );
+}
+
+export function stableCardNavigationRect(
+ rect: CardNavigationRect,
+ baseWidth?: number,
+ rtl = false,
+) {
+ const width =
+ typeof baseWidth === "number" && Number.isFinite(baseWidth) && baseWidth > 0
+ ? baseWidth
+ : rect.width;
+ const left = rtl ? rect.right - width : rect.left;
+ const right = rtl ? rect.right : rect.left + width;
+ return {
+ left,
+ right,
+ top: rect.top,
+ bottom: rect.bottom,
+ width,
+ height: rect.height,
+ cx: left + width / 2,
+ cy: rect.top + rect.height / 2,
+ };
+}
+
+export function normalizePosterCardSettings(settings: {
+ posterBackdropExpansion?: unknown;
+ posterFocusedCard?: unknown;
+ posterDockMagnification?: unknown;
+}): {
+ posterBackdropExpansion: boolean;
+ posterFocusedCard: boolean;
+ posterDockMagnification: boolean;
+} {
+ return {
+ posterBackdropExpansion: settings.posterBackdropExpansion === true,
+ posterFocusedCard: settings.posterFocusedCard === true,
+ posterDockMagnification: settings.posterDockMagnification === true,
+ };
+}
diff --git a/src/lib/profile-card-layout.ts b/src/lib/profile-card-layout.ts
index 10bef6ddd..094830092 100644
--- a/src/lib/profile-card-layout.ts
+++ b/src/lib/profile-card-layout.ts
@@ -4,9 +4,6 @@ export type CardKey =
| "canvas"
| "showcase"
| "lists"
- | "favgames"
- | "favbooks"
- | "favmusic"
| "badges"
| "activity"
| "comments";
@@ -17,9 +14,6 @@ export const CARD_ORDER_DEFAULT: CardKey[] = [
"canvas",
"showcase",
"lists",
- "favgames",
- "favbooks",
- "favmusic",
"badges",
"activity",
"comments",
@@ -31,9 +25,6 @@ export const CARD_LABELS: Record = {
canvas: "Custom",
showcase: "Showcase",
lists: "Lists",
- favgames: "Games",
- favbooks: "Books",
- favmusic: "Music",
badges: "Badges",
activity: "Recent activity",
comments: "Comments",
@@ -45,12 +36,8 @@ const KNOWN = new Set(CARD_ORDER_DEFAULT);
export function sanitizeLayout(raw: unknown): CardLayout {
const l = (raw ?? {}) as { order?: unknown; hidden?: unknown };
- const order = Array.isArray(l.order)
- ? l.order.filter((k): k is string => typeof k === "string" && KNOWN.has(k))
- : [];
- const hidden = Array.isArray(l.hidden)
- ? l.hidden.filter((k): k is string => typeof k === "string" && KNOWN.has(k))
- : [];
+ const order = Array.isArray(l.order) ? l.order.filter((k): k is string => typeof k === "string" && KNOWN.has(k)) : [];
+ const hidden = Array.isArray(l.hidden) ? l.hidden.filter((k): k is string => typeof k === "string" && KNOWN.has(k)) : [];
return { order: [...new Set(order)], hidden: [...new Set(hidden)] };
}
@@ -65,18 +52,6 @@ export function effectiveOrder(layout: CardLayout | undefined, present: CardKey[
}
}
for (const k of present) if (!seen.has(k)) out.push(k);
- return pinCommentsLast(out);
-}
-
-const ABOVE_COMMENTS: CardKey[] = ["favgames", "favbooks", "favmusic"];
-
-function pinCommentsLast(order: CardKey[]): CardKey[] {
- const ci = order.indexOf("comments");
- if (ci < 0) return order;
- const lastFav = ABOVE_COMMENTS.reduce((acc, k) => Math.max(acc, order.indexOf(k)), -1);
- if (lastFav < 0 || ci > lastFav) return order;
- const out: CardKey[] = order.filter((k) => k !== "comments");
- out.splice(lastFav, 0, "comments");
return out;
}
@@ -89,7 +64,13 @@ export function moveCard(order: CardKey[], key: CardKey, dir: -1 | 1): CardKey[]
return next;
}
-export type StatKey = "watchTime" | "episodes" | "movies" | "read" | "friends" | "badges";
+export type StatKey =
+ | "watchTime"
+ | "episodes"
+ | "movies"
+ | "read"
+ | "friends"
+ | "badges";
export const STAT_ORDER: StatKey[] = [
"watchTime",
diff --git a/src/lib/providers/anime-hero-art-static.ts b/src/lib/providers/anime-hero-art-static.ts
index 4207c9aef..525532b04 100644
--- a/src/lib/providers/anime-hero-art-static.ts
+++ b/src/lib/providers/anime-hero-art-static.ts
@@ -1,6 +1,5 @@
import type { Meta } from "@/lib/cinemeta";
import { safeFetch } from "@/lib/safe-fetch";
-import { HARBOR_API_BASE } from "@/lib/config/endpoints";
export type StaticHeroArt = {
bg?: string;
@@ -13,7 +12,7 @@ export type StaticHeroArt = {
format?: string;
};
-const URL = `${HARBOR_API_BASE}/anime-hero-art.json`;
+const URL = "https://harbor.site/anime-hero-art.json";
let map: Record | null = null;
let loading: Promise | null = null;
diff --git a/src/lib/providers/artists.ts b/src/lib/providers/artists.ts
deleted file mode 100644
index c847fe89e..000000000
--- a/src/lib/providers/artists.ts
+++ /dev/null
@@ -1,231 +0,0 @@
-import { registerEvictable } from "@/lib/maintenance";
-import { safeFetch } from "@/lib/safe-fetch";
-import type { FavoriteMedia, FavoriteSearchResult } from "./favorites-types";
-
-export type ArtistSource = "deezer";
-
-export type ShowcaseArtist = {
- id: string;
- name: string;
- image: string | null;
- images: string[];
- url: string | null;
- followers: number | null;
- albumCount: number | null;
- source: ArtistSource;
-};
-
-export type ArtistSearchResult =
- | { kind: "ok"; items: ShowcaseArtist[]; source: ArtistSource; degraded: boolean }
- | { kind: "empty"; query: string }
- | { kind: "needs-key"; message: string }
- | { kind: "failed"; message: string };
-
-export type ArtistSearchOptions = {
- signal?: AbortSignal;
- limit?: number;
-};
-
-const DEEZER_SEARCH = "https://api.deezer.com/search/artist";
-
-const TTL_MS = 30 * 60 * 1000;
-const MAX_ENTRIES = 80;
-const DEFAULT_LIMIT = 24;
-const REQUEST_TIMEOUT_MS = 12000;
-
-const BLANK_PICTURE = "d41d8cd98f00b204e9800998ecf8427e";
-
-const cache = new Map();
-const inflight = new Map>();
-
-registerEvictable("artists-search", (aggressive) => {
- if (aggressive) return cache.clear();
- const now = Date.now();
- for (const [k, e] of cache) if (now - e.t > TTL_MS) cache.delete(k);
-});
-
-function trim() {
- if (cache.size <= MAX_ENTRIES) return;
- const oldest = [...cache.entries()].sort((a, b) => a[1].t - b[1].t);
- for (const [k] of oldest.slice(0, cache.size - MAX_ENTRIES)) cache.delete(k);
-}
-
-function withTimeout(signal?: AbortSignal): { signal: AbortSignal; done: () => void } {
- const ac = new AbortController();
- const timer = setTimeout(() => ac.abort(), REQUEST_TIMEOUT_MS);
- const onAbort = () => ac.abort();
- if (signal?.aborted) ac.abort();
- signal?.addEventListener("abort", onAbort);
- return {
- signal: ac.signal,
- done: () => {
- clearTimeout(timer);
- signal?.removeEventListener("abort", onAbort);
- },
- };
-}
-
-type DeezerArtist = {
- id?: number;
- name?: string;
- link?: string;
- picture_medium?: string;
- picture_big?: string;
- picture_xl?: string;
- nb_album?: number;
- nb_fan?: number;
-};
-
-type DeezerResponse = {
- data?: DeezerArtist[];
- error?: { type?: string; message?: string; code?: number };
-};
-
-function count(v: number | undefined): number | null {
- return typeof v === "number" && Number.isFinite(v) && v >= 0 ? v : null;
-}
-
-function pictures(a: DeezerArtist): string[] {
- const urls = [a.picture_big, a.picture_medium, a.picture_xl];
- return urls.filter((u): u is string => typeof u === "string" && !u.includes(BLANK_PICTURE));
-}
-
-function fold(s: string): string {
- return s
- .normalize("NFD")
- .replace(/[\u0300-\u036f]/g, "")
- .toLowerCase()
- .trim();
-}
-
-function relevance(name: string, query: string): number {
- const n = fold(name);
- const q = fold(query);
- if (n === q) return 3;
- if (n.startsWith(q)) return 2;
- if (n.includes(q)) return 1;
- return 0;
-}
-
-function rank(items: ShowcaseArtist[], query: string): ShowcaseArtist[] {
- return [...items].sort((a, b) => {
- const diff = relevance(b.name, query) - relevance(a.name, query);
- if (diff !== 0) return diff;
- return (b.followers ?? 0) - (a.followers ?? 0);
- });
-}
-
-function normalise(a: DeezerArtist): ShowcaseArtist | null {
- if (!a.id || !a.name) return null;
- const images = pictures(a);
- if (!images.length) return null;
- const albumCount = count(a.nb_album);
- return {
- id: `deezer:${a.id}`,
- name: a.name,
- image: images[0] ?? null,
- images,
- url: a.link ?? `https://www.deezer.com/artist/${a.id}`,
- followers: count(a.nb_fan),
- albumCount,
- source: "deezer",
- };
-}
-
-async function run(
- query: string,
- opts: ArtistSearchOptions,
- limit: number,
-): Promise {
- const { signal, done } = withTimeout(opts.signal);
- try {
- const url = `${DEEZER_SEARCH}?q=${encodeURIComponent(query)}&limit=${limit}`;
- const res = await safeFetch(url, { signal });
- if (!res.ok) return { kind: "failed", message: `Deezer returned ${res.status}.` };
-
- const json = (await res.json()) as DeezerResponse;
- if (json.error) {
- const detail = json.error.message ?? json.error.type ?? "unknown error";
- if (json.error.code === 4 || /quota/i.test(detail)) {
- return { kind: "failed", message: "Deezer is rate limiting Harbor. Try again shortly." };
- }
- return { kind: "failed", message: `Deezer refused the search: ${detail}` };
- }
- if (!Array.isArray(json.data)) {
- return { kind: "failed", message: "Deezer sent an unexpected response." };
- }
-
- const items = json.data.map(normalise).filter((a): a is ShowcaseArtist => a !== null);
- if (!items.length) return { kind: "empty", query };
- return { kind: "ok", items: rank(items, query), source: "deezer", degraded: false };
- } catch (e) {
- if ((e as { name?: string })?.name === "AbortError") throw e;
- return { kind: "failed", message: "Couldn't reach Deezer." };
- } finally {
- done();
- }
-}
-
-function toFavorite(a: ShowcaseArtist): FavoriteMedia {
- return {
- kind: "music",
- id: a.id,
- name: a.name,
- image: a.image,
- sub: null,
- url: a.url,
- source: a.source,
- };
-}
-
-function toFavoriteResult(r: ArtistSearchResult): FavoriteSearchResult {
- if (r.kind === "ok") return { status: "ok", items: r.items.map(toFavorite) };
- if (r.kind === "empty") return { status: "empty" };
- if (r.kind === "needs-key") return { status: "needs-key" };
- return { status: "failed", reason: r.message };
-}
-
-async function searchArtistsRaw(
- query: string,
- opts: ArtistSearchOptions = {},
-): Promise {
- const q = query.trim();
- if (q.length < 2) return { kind: "empty", query: q };
- const limit = opts.limit ?? DEFAULT_LIMIT;
- const key = `${limit}:${q.toLowerCase()}`;
-
- const hit = cache.get(key);
- if (hit && Date.now() - hit.t < TTL_MS) return hit.v;
-
- const existing = inflight.get(key);
- if (existing) return existing;
-
- const p = run(q, opts, limit)
- .then((r) => {
- if (r.kind === "ok" || r.kind === "empty") {
- cache.set(key, { v: r, t: Date.now() });
- trim();
- }
- return r;
- })
- .finally(() => inflight.delete(key));
-
- inflight.set(key, p);
- return p;
-}
-
-export async function searchArtists(
- query: string,
- opts: ArtistSearchOptions = {},
-): Promise {
- return toFavoriteResult(await searchArtistsRaw(query, opts));
-}
-
-export function artistImageAtSize(artist: ShowcaseArtist, size: 250 | 500 | 1000): string | null {
- if (!artist.image) return null;
- return artist.image.replace(/\/\d+x\d+-/, `/${size}x${size}-`);
-}
-
-export function clearArtistSearchCache(): void {
- cache.clear();
-}
diff --git a/src/lib/providers/books.ts b/src/lib/providers/books.ts
deleted file mode 100644
index cba1b4cf2..000000000
--- a/src/lib/providers/books.ts
+++ /dev/null
@@ -1,146 +0,0 @@
-import { registerEvictable } from "@/lib/maintenance";
-import { safeFetch } from "@/lib/safe-fetch";
-import type { FavoriteMedia, FavoriteSearchResult } from "./favorites-types";
-
-export type BookSearchOptions = {
- signal?: AbortSignal;
- limit?: number;
-};
-
-const OPENLIBRARY_SEARCH = "https://openlibrary.org/search.json";
-const COVER_BASE = "https://covers.openlibrary.org/b";
-const FIELDS = "key,title,author_name,first_publish_year,cover_i,cover_edition_key";
-
-const TTL_MS = 30 * 60 * 1000;
-const MAX_ENTRIES = 80;
-const DEFAULT_LIMIT = 24;
-const REQUEST_TIMEOUT_MS = 12000;
-
-const cache = new Map();
-const inflight = new Map>();
-
-registerEvictable("books-search", (aggressive) => {
- if (aggressive) return cache.clear();
- const now = Date.now();
- for (const [k, e] of cache) if (now - e.t > TTL_MS) cache.delete(k);
-});
-
-function trim() {
- if (cache.size <= MAX_ENTRIES) return;
- const oldest = [...cache.entries()].sort((a, b) => a[1].t - b[1].t);
- for (const [k] of oldest.slice(0, cache.size - MAX_ENTRIES)) cache.delete(k);
-}
-
-function withTimeout(signal?: AbortSignal): { signal: AbortSignal; done: () => void } {
- const ac = new AbortController();
- const timer = setTimeout(() => ac.abort(), REQUEST_TIMEOUT_MS);
- const onAbort = () => ac.abort();
- if (signal?.aborted) ac.abort();
- signal?.addEventListener("abort", onAbort);
- return {
- signal: ac.signal,
- done: () => {
- clearTimeout(timer);
- signal?.removeEventListener("abort", onAbort);
- },
- };
-}
-
-type OpenLibraryDoc = {
- key?: string;
- title?: string;
- author_name?: string[];
- first_publish_year?: number;
- cover_i?: number;
- cover_edition_key?: string;
-};
-
-type OpenLibraryResponse = {
- docs?: OpenLibraryDoc[];
-};
-
-function coverUrl(doc: OpenLibraryDoc): string | null {
- if (typeof doc.cover_i === "number" && Number.isFinite(doc.cover_i)) {
- return `${COVER_BASE}/id/${doc.cover_i}-L.jpg?default=false`;
- }
- if (typeof doc.cover_edition_key === "string" && doc.cover_edition_key) {
- return `${COVER_BASE}/olid/${doc.cover_edition_key}-L.jpg?default=false`;
- }
- return null;
-}
-
-function normalise(doc: OpenLibraryDoc): FavoriteMedia | null {
- const key = typeof doc.key === "string" ? doc.key : "";
- const workId = key.replace(/^\/works\//, "");
- if (!workId || !doc.title) return null;
- const image = coverUrl(doc);
- if (!image) return null;
- const author = Array.isArray(doc.author_name) ? doc.author_name[0] : undefined;
- return {
- kind: "book",
- id: `openlibrary:${workId}`,
- name: doc.title,
- image,
- sub: author ?? null,
- url: `https://openlibrary.org${key}`,
- source: "openlibrary",
- };
-}
-
-async function run(
- query: string,
- opts: BookSearchOptions,
- limit: number,
-): Promise {
- const { signal, done } = withTimeout(opts.signal);
- try {
- const url = `${OPENLIBRARY_SEARCH}?q=${encodeURIComponent(query)}&fields=${FIELDS}&limit=${limit}`;
- const res = await safeFetch(url, { signal });
- if (!res.ok) return { status: "failed", reason: `Open Library returned ${res.status}.` };
- const json = (await res.json()) as OpenLibraryResponse;
- if (!Array.isArray(json.docs)) {
- return { status: "failed", reason: "Open Library sent an unexpected response." };
- }
- const items = json.docs.map(normalise).filter((b): b is FavoriteMedia => b !== null);
- if (!items.length) return { status: "empty" };
- return { status: "ok", items };
- } catch (e) {
- if ((e as { name?: string })?.name === "AbortError") throw e;
- return { status: "failed", reason: "Couldn't reach Open Library." };
- } finally {
- done();
- }
-}
-
-export async function searchBooks(
- query: string,
- opts: BookSearchOptions = {},
-): Promise {
- const q = query.trim();
- if (q.length < 2) return { status: "empty" };
- const limit = opts.limit ?? DEFAULT_LIMIT;
- const key = `${limit}:${q.toLowerCase()}`;
-
- const hit = cache.get(key);
- if (hit && Date.now() - hit.t < TTL_MS) return hit.v;
-
- const existing = inflight.get(key);
- if (existing) return existing;
-
- const p = run(q, opts, limit)
- .then((r) => {
- if (r.status === "ok" || r.status === "empty") {
- cache.set(key, { v: r, t: Date.now() });
- trim();
- }
- return r;
- })
- .finally(() => inflight.delete(key));
-
- inflight.set(key, p);
- return p;
-}
-
-export function clearBookSearchCache(): void {
- cache.clear();
-}
diff --git a/src/lib/providers/favorites-types.ts b/src/lib/providers/favorites-types.ts
deleted file mode 100644
index dacb5559c..000000000
--- a/src/lib/providers/favorites-types.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import { searchArtists } from "./artists";
-import { searchBooks } from "./books";
-import { searchGames } from "./games";
-
-export type FavoriteKind = "game" | "book" | "music";
-
-export type FavoriteMedia = {
- kind: FavoriteKind;
- id: string;
- name: string;
- image: string | null;
- imageFallback?: string | null;
- sub: string | null;
- url: string | null;
- source: string;
-};
-
-export type FavoriteSearchResult =
- | { status: "ok"; items: FavoriteMedia[] }
- | { status: "empty" }
- | { status: "failed"; reason: string }
- | { status: "needs-key" };
-
-export type FavoriteSearchOptions = { signal?: AbortSignal; limit?: number };
-
-export function searchFavorites(
- kind: FavoriteKind,
- query: string,
- opts: FavoriteSearchOptions = {},
-): Promise {
- if (kind === "game") return searchGames(query, opts);
- if (kind === "book") return searchBooks(query, opts);
- return searchArtists(query, opts);
-}
diff --git a/src/lib/providers/games.ts b/src/lib/providers/games.ts
deleted file mode 100644
index 59346a461..000000000
--- a/src/lib/providers/games.ts
+++ /dev/null
@@ -1,324 +0,0 @@
-import { registerEvictable } from "@/lib/maintenance";
-import { safeFetch } from "@/lib/safe-fetch";
-import { HARBOR_API_BASE } from "@/lib/config/endpoints";
-import type { FavoriteMedia, FavoriteSearchResult } from "./favorites-types";
-
-export type GameSource = "igdb" | "steam";
-
-export type ShowcaseGame = {
- id: string;
- name: string;
- image: string | null;
- images: string[];
- url: string | null;
- releaseYear: number | null;
- platforms: string[];
- genres: string[];
- source: GameSource;
-};
-
-export type GameSearchResult =
- | { kind: "ok"; items: ShowcaseGame[]; source: GameSource; degraded: boolean }
- | { kind: "empty"; query: string }
- | { kind: "needs-key"; message: string }
- | { kind: "failed"; message: string };
-
-export type GameSearchOptions = {
- clientId?: string;
- token?: string;
- signal?: AbortSignal;
- limit?: number;
-};
-
-const IGDB_API = "https://api.igdb.com/v4/games";
-const IGDB_PROXY = `${HARBOR_API_BASE}/api/igdb/games`;
-const IGDB_IMAGE = "https://images.igdb.com/igdb/image/upload";
-const STEAM_SEARCH = "https://store.steampowered.com/api/storesearch/";
-const STEAM_CDN = "https://cdn.cloudflare.steamstatic.com/steam/apps";
-const STEAM_STORE = "https://store.steampowered.com/app";
-
-const TTL_MS = 30 * 60 * 1000;
-const MAX_ENTRIES = 80;
-const DEFAULT_LIMIT = 24;
-const IGDB_COOLDOWN_MS = 5 * 60 * 1000;
-const REQUEST_TIMEOUT_MS = 12000;
-
-const EXCLUDED =
- /\b(soundtrack|ost|original score|demo|art\s?book|wallpaper|dedicated server|trailer)\b/i;
-
-const cache = new Map();
-const inflight = new Map>();
-
-let igdbDownUntil = 0;
-
-registerEvictable("games-search", (aggressive) => {
- if (aggressive) return cache.clear();
- const now = Date.now();
- for (const [k, e] of cache) if (now - e.t > TTL_MS) cache.delete(k);
-});
-
-function trim() {
- if (cache.size <= MAX_ENTRIES) return;
- const oldest = [...cache.entries()].sort((a, b) => a[1].t - b[1].t);
- for (const [k] of oldest.slice(0, cache.size - MAX_ENTRIES)) cache.delete(k);
-}
-
-function withTimeout(signal?: AbortSignal): { signal: AbortSignal; done: () => void } {
- const ac = new AbortController();
- const timer = setTimeout(() => ac.abort(), REQUEST_TIMEOUT_MS);
- const onAbort = () => ac.abort();
- if (signal?.aborted) ac.abort();
- signal?.addEventListener("abort", onAbort);
- return {
- signal: ac.signal,
- done: () => {
- clearTimeout(timer);
- signal?.removeEventListener("abort", onAbort);
- },
- };
-}
-
-type IgdbNamed = { name?: string; abbreviation?: string };
-type IgdbExternal = { category?: number; uid?: string };
-
-type IgdbGame = {
- id: number;
- name?: string;
- slug?: string;
- first_release_date?: number;
- cover?: { image_id?: string };
- platforms?: IgdbNamed[];
- genres?: IgdbNamed[];
- external_games?: IgdbExternal[];
-};
-
-function igdbBody(query: string, limit: number): string {
- const escaped = query.replace(/["\\]/g, " ").trim();
- const fields = [
- "name",
- "slug",
- "first_release_date",
- "cover.image_id",
- "platforms.abbreviation",
- "platforms.name",
- "genres.name",
- "external_games.category",
- "external_games.uid",
- ].join(",");
- return `search "${escaped}"; fields ${fields}; where version_parent = null; limit ${limit};`;
-}
-
-function steamAppId(g: IgdbGame): string | null {
- const hit = g.external_games?.find((e) => e.category === 1 && /^\d+$/.test(e.uid ?? ""));
- return hit?.uid ?? null;
-}
-
-function steamCapsule(appId: string): string {
- return `${STEAM_CDN}/${appId}/library_600x900_2x.jpg`;
-}
-
-function normaliseIgdb(g: IgdbGame): ShowcaseGame | null {
- if (!g.name || EXCLUDED.test(g.name)) return null;
- const appId = steamAppId(g);
- const cover = g.cover?.image_id ? `${IGDB_IMAGE}/t_cover_big_2x/${g.cover.image_id}.jpg` : null;
- const images = [appId ? steamCapsule(appId) : null, cover].filter((u): u is string => u !== null);
- const platforms = (g.platforms ?? [])
- .map((p) => p.abbreviation || p.name || "")
- .filter(Boolean)
- .slice(0, 4);
- return {
- id: `igdb:${g.id}`,
- name: g.name,
- image: images[0] ?? null,
- images,
- url: g.slug ? `https://www.igdb.com/games/${g.slug}` : null,
- releaseYear: g.first_release_date
- ? new Date(g.first_release_date * 1000).getUTCFullYear()
- : null,
- platforms,
- genres: (g.genres ?? [])
- .map((x) => x.name ?? "")
- .filter(Boolean)
- .slice(0, 3),
- source: "igdb",
- };
-}
-
-async function searchIgdb(
- query: string,
- opts: GameSearchOptions,
- limit: number,
-): Promise {
- const { clientId, token } = opts;
- const direct = Boolean(clientId && token);
- if (!direct && Date.now() < igdbDownUntil) {
- return { kind: "needs-key", message: "IGDB is not configured." };
- }
- const headers: Record