mirror of
https://github.com/jakejarvis/sofa.git
synced 2026-07-14 18:15:56 -04:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bd8ae4ccf9 | ||
|
|
553fe98013 | ||
|
|
0c747a9275 |
@@ -12,6 +12,7 @@ import {
|
||||
IconStarFilled,
|
||||
IconThumbUp,
|
||||
IconUsers,
|
||||
IconX,
|
||||
} from "@tabler/icons-react-native";
|
||||
import { useQuery } from "@tanstack/react-query";
|
||||
import { GlassView, isLiquidGlassAvailable } from "expo-glass-effect";
|
||||
@@ -98,22 +99,27 @@ export default function TitleDetailScreen() {
|
||||
const { back } = useRouter();
|
||||
const useAutomaticInsets = process.env.EXPO_OS === "ios";
|
||||
|
||||
const [titleAccent, mutedForeground, titleAccentForeground] = useCSSVariable([
|
||||
const [titleAccent, mutedForeground, titleAccentForeground, destructiveColor] = useCSSVariable([
|
||||
"--color-title-accent",
|
||||
"--color-muted-foreground",
|
||||
"--color-title-accent-foreground",
|
||||
]) as [string, string, string];
|
||||
"--color-destructive",
|
||||
]) as [string, string, string, string];
|
||||
|
||||
const detail = useQuery(orpc.titles.get.queryOptions({ input: { id } }));
|
||||
const userInfo = useQuery(orpc.tracking.userInfo.queryOptions({ input: { id } }));
|
||||
const recommendations = useQuery(orpc.titles.similar.queryOptions({ input: { id } }));
|
||||
|
||||
const { updateStatus, updateRating, watchMovie } = useTitleActions({
|
||||
const { updateStatus, updateRating, watchMovie, unwatchMovie } = useTitleActions({
|
||||
toasts: {
|
||||
watchMovie: () => {
|
||||
const name = title?.title;
|
||||
return name ? t`Marked "${name}" as watched` : t`Marked as watched`;
|
||||
},
|
||||
unwatchMovie: () => {
|
||||
const name = title?.title;
|
||||
return name ? t`Marked "${name}" as unwatched` : t`Marked as unwatched`;
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
@@ -147,6 +153,7 @@ export default function TitleDetailScreen() {
|
||||
() => new Set(userInfo.data?.episodeWatches ?? []),
|
||||
[userInfo.data?.episodeWatches],
|
||||
);
|
||||
const isMovieWatched = userInfo.data?.status === "completed";
|
||||
|
||||
const recItems = useMemo<PosterRowItem[]>(
|
||||
() =>
|
||||
@@ -413,17 +420,34 @@ export default function TitleDetailScreen() {
|
||||
updateStatus.mutate({ id, status: null });
|
||||
}
|
||||
}}
|
||||
isPending={updateStatus.isPending || watchMovie.isPending}
|
||||
isPending={updateStatus.isPending || watchMovie.isPending || unwatchMovie.isPending}
|
||||
/>
|
||||
|
||||
{title.type === "movie" && (
|
||||
<Pressable
|
||||
onPress={() => watchMovie.mutate({ scope: "movie", ids: [id] })}
|
||||
disabled={watchMovie.isPending}
|
||||
className="bg-title-accent flex-row items-center gap-1.5 rounded-lg px-4 py-2"
|
||||
onPress={() => {
|
||||
if (isMovieWatched) {
|
||||
unwatchMovie.mutate({ scope: "movie", ids: [id] });
|
||||
} else {
|
||||
watchMovie.mutate({ scope: "movie", ids: [id] });
|
||||
}
|
||||
}}
|
||||
disabled={watchMovie.isPending || unwatchMovie.isPending}
|
||||
className={
|
||||
isMovieWatched
|
||||
? "border-destructive/20 bg-destructive/10 flex-row items-center gap-1.5 rounded-lg border px-4 py-2"
|
||||
: "bg-title-accent flex-row items-center gap-1.5 rounded-lg px-4 py-2"
|
||||
}
|
||||
>
|
||||
{watchMovie.isPending ? (
|
||||
{watchMovie.isPending || unwatchMovie.isPending ? (
|
||||
<Spinner size="sm" />
|
||||
) : isMovieWatched ? (
|
||||
<>
|
||||
<ScaledIcon icon={IconX} size={16} color={destructiveColor} />
|
||||
<Text className="text-destructive font-sans text-sm font-medium">
|
||||
<Trans>Mark Unwatched</Trans>
|
||||
</Text>
|
||||
</>
|
||||
) : (
|
||||
<>
|
||||
<ScaledIcon icon={IconCheck} size={16} color={titleAccentForeground} />
|
||||
|
||||
@@ -126,7 +126,14 @@ export function UpcomingRow({ item }: { item: UpcomingItem }) {
|
||||
<Link.Trigger withAppleZoom>{rowContent}</Link.Trigger>
|
||||
<Link.Preview />
|
||||
<Link.Menu>
|
||||
{item.titleType === "movie" && (
|
||||
{item.titleType === "movie" && item.userStatus === "completed" && (
|
||||
<Link.MenuAction
|
||||
title={t`Mark Unwatched`}
|
||||
icon="xmark.circle"
|
||||
onPress={() => titleActions.unwatchMovie(item.titleId, item.titleName)}
|
||||
/>
|
||||
)}
|
||||
{item.titleType === "movie" && item.userStatus !== "completed" && (
|
||||
<Link.MenuAction
|
||||
title={t`Mark Watched`}
|
||||
icon="checkmark.circle"
|
||||
|
||||
@@ -217,7 +217,14 @@ export const PosterCard = memo(function PosterCard({
|
||||
onPress={handleQuickAddPress}
|
||||
/>
|
||||
)}
|
||||
{type === "movie" && (
|
||||
{type === "movie" && userStatus === "completed" && (
|
||||
<Link.MenuAction
|
||||
title={t`Mark Unwatched`}
|
||||
icon="xmark.circle"
|
||||
onPress={() => titleActions.unwatchMovie(id, title)}
|
||||
/>
|
||||
)}
|
||||
{type === "movie" && userStatus !== "completed" && (
|
||||
<Link.MenuAction
|
||||
title={t`Mark Watched`}
|
||||
icon="checkmark.circle"
|
||||
|
||||
@@ -26,6 +26,7 @@ interface UseTitleActionsOptions {
|
||||
toasts?: {
|
||||
updateStatus?: ToastOverride<{ id: string; status: string | null }>;
|
||||
watchMovie?: ToastOverride<WatchInput>;
|
||||
unwatchMovie?: ToastOverride<WatchInput>;
|
||||
updateRating?: ToastOverride<{ id: string; stars: number }>;
|
||||
watchEpisode?: ToastOverride<WatchInput>;
|
||||
unwatchEpisode?: ToastOverride<WatchInput>;
|
||||
@@ -67,6 +68,16 @@ export function useTitleActions(options?: UseTitleActionsOptions) {
|
||||
}),
|
||||
);
|
||||
|
||||
const unwatchMovie = useMutation(
|
||||
orpc.tracking.unwatch.mutationOptions({
|
||||
onSuccess: (_data, input) => {
|
||||
toast.success(resolveToast(toastOverrides?.unwatchMovie, t`Marked as unwatched`, input));
|
||||
invalidateTitleQueries();
|
||||
},
|
||||
onError: () => toast.error(t`Failed to mark as unwatched`),
|
||||
}),
|
||||
);
|
||||
|
||||
const updateRating = useMutation(
|
||||
orpc.tracking.rate.mutationOptions({
|
||||
onSuccess: (_data, input) => {
|
||||
@@ -115,6 +126,7 @@ export function useTitleActions(options?: UseTitleActionsOptions) {
|
||||
return {
|
||||
updateStatus,
|
||||
watchMovie,
|
||||
unwatchMovie,
|
||||
updateRating,
|
||||
watchEpisode,
|
||||
unwatchEpisode,
|
||||
|
||||
@@ -55,6 +55,20 @@ export const titleActions = {
|
||||
}
|
||||
},
|
||||
|
||||
async unwatchMovie(id: string, titleName?: string) {
|
||||
try {
|
||||
await client.tracking.unwatch({ scope: "movie", ids: [id] });
|
||||
toast.success(
|
||||
titleName
|
||||
? i18n._(msg`Marked "${titleName}" as unwatched`)
|
||||
: i18n._(msg`Marked as unwatched`),
|
||||
);
|
||||
invalidateTitleQueries();
|
||||
} catch {
|
||||
toast.error(i18n._(msg`Failed to mark as unwatched`));
|
||||
}
|
||||
},
|
||||
|
||||
async removeFromLibrary(id: string) {
|
||||
try {
|
||||
await client.tracking.updateStatus({ id, status: null });
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Trans } from "@lingui/react/macro";
|
||||
import { IconCheck } from "@tabler/icons-react";
|
||||
import { IconCheck, IconX } from "@tabler/icons-react";
|
||||
|
||||
import { Button } from "@/components/ui/button";
|
||||
import { Separator } from "@/components/ui/separator";
|
||||
@@ -12,19 +12,31 @@ import { useTitleActions } from "./use-title-actions";
|
||||
export function TitleActions() {
|
||||
const { titleType } = useTitleContext();
|
||||
const { userStatus, userRating } = useTitleUserInfo();
|
||||
const { handleStatusChange, handleRating, handleWatchMovie } = useTitleActions();
|
||||
const { handleStatusChange, handleRating, handleWatchMovie, handleUnwatchMovie } =
|
||||
useTitleActions();
|
||||
const isMovieWatched = userStatus === "completed";
|
||||
|
||||
return (
|
||||
<div className="flex flex-wrap items-center gap-3">
|
||||
<StatusButton currentStatus={userStatus ?? null} onChange={handleStatusChange} />
|
||||
{titleType === "movie" && (
|
||||
<Button
|
||||
onClick={handleWatchMovie}
|
||||
onClick={isMovieWatched ? handleUnwatchMovie : handleWatchMovie}
|
||||
variant={isMovieWatched ? "destructive" : "default"}
|
||||
size="lg"
|
||||
className="hover:shadow-primary/20 h-9 rounded-lg px-4 text-sm hover:shadow-md active:scale-[0.97]"
|
||||
className={`h-9 rounded-lg px-4 text-sm hover:shadow-md active:scale-[0.97] ${isMovieWatched ? "hover:shadow-destructive/20" : "hover:shadow-primary/20"}`}
|
||||
>
|
||||
<IconCheck aria-hidden={true} className="size-3.5" />
|
||||
<Trans>Mark Watched</Trans>
|
||||
{isMovieWatched ? (
|
||||
<>
|
||||
<IconX aria-hidden={true} className="size-3.5" />
|
||||
<Trans>Mark Unwatched</Trans>
|
||||
</>
|
||||
) : (
|
||||
<>
|
||||
<IconCheck aria-hidden={true} className="size-3.5" />
|
||||
<Trans>Mark Watched</Trans>
|
||||
</>
|
||||
)}
|
||||
</Button>
|
||||
)}
|
||||
<Separator orientation="vertical" className="bg-border/50 mx-0.5 my-auto h-6" />
|
||||
|
||||
@@ -9,7 +9,8 @@ import { useTitleActions } from "./use-title-actions";
|
||||
export function TitleKeyboardShortcuts() {
|
||||
const { titleType } = useTitleContext();
|
||||
const { userStatus } = useTitleUserInfo();
|
||||
const { handleStatusChange, handleRating, handleWatchMovie } = useTitleActions();
|
||||
const { handleStatusChange, handleRating, handleWatchMovie, handleUnwatchMovie } =
|
||||
useTitleActions();
|
||||
|
||||
const commandPaletteOpen = useAtomValue(commandPaletteOpenAtom);
|
||||
const enabled = !commandPaletteOpen;
|
||||
@@ -21,7 +22,13 @@ export function TitleKeyboardShortcuts() {
|
||||
useHotkey(
|
||||
"M",
|
||||
() => {
|
||||
if (titleType === "movie") handleWatchMovie();
|
||||
if (titleType === "movie") {
|
||||
if (userStatus === "completed") {
|
||||
handleUnwatchMovie();
|
||||
} else {
|
||||
handleWatchMovie();
|
||||
}
|
||||
}
|
||||
},
|
||||
{ enabled },
|
||||
);
|
||||
|
||||
@@ -135,6 +135,19 @@ export function useTitleActions() {
|
||||
}
|
||||
}, [getUserInfo, setUserInfo, queryClient, userInfoKey, titleId, titleName, watch, t]);
|
||||
|
||||
const handleUnwatchMovie = useCallback(async () => {
|
||||
await queryClient.cancelQueries({ queryKey: userInfoKey });
|
||||
const prevStatus = getUserInfo().status;
|
||||
setUserInfo((old) => ({ ...old, status: "in_watchlist" }));
|
||||
try {
|
||||
await unwatch({ scope: "movie", ids: [titleId] });
|
||||
toast.success(t`Marked "${titleName}" as unwatched`);
|
||||
} catch {
|
||||
setUserInfo((old) => ({ ...old, status: prevStatus }));
|
||||
toast.error(t`Failed to mark as unwatched`);
|
||||
}
|
||||
}, [getUserInfo, setUserInfo, queryClient, userInfoKey, titleId, titleName, unwatch, t]);
|
||||
|
||||
const handleWatchEpisode = useCallback(
|
||||
async (episodeId: string, seasonNum: number, epNum: number, isWatched: boolean) => {
|
||||
await queryClient.cancelQueries({ queryKey: userInfoKey });
|
||||
@@ -352,6 +365,7 @@ export function useTitleActions() {
|
||||
handleStatusChange,
|
||||
handleRating,
|
||||
handleWatchMovie,
|
||||
handleUnwatchMovie,
|
||||
handleWatchEpisode,
|
||||
handleMarkSeason,
|
||||
handleUnmarkSeason,
|
||||
|
||||
@@ -13,6 +13,10 @@ import { logEpisodeWatch, logMovieWatch } from "./tracking";
|
||||
|
||||
const log = createLogger("webhooks");
|
||||
|
||||
const IMDB_GUID_PREFIX = "imdb://";
|
||||
const TMDB_GUID_PREFIX = "tmdb://";
|
||||
const TVDB_GUID_PREFIX = "tvdb://";
|
||||
|
||||
// ─── Types ──────────────────────────────────────────────────────────
|
||||
|
||||
export interface WebhookEvent {
|
||||
@@ -71,9 +75,14 @@ export function parsePlexPayload(formData: FormData): WebhookEvent | null {
|
||||
if (Array.isArray(guids)) {
|
||||
for (const g of guids) {
|
||||
const id = g.id ?? "";
|
||||
if (id.startsWith("tmdb://")) tmdbId = toOptionalInt(id.slice(7));
|
||||
else if (id.startsWith("imdb://")) imdbId = id.slice(7);
|
||||
else if (id.startsWith("tvdb://")) tvdbId = id.slice(7);
|
||||
if (id.startsWith(TMDB_GUID_PREFIX)) {
|
||||
// Plex episode TMDB GUIDs identify episodes, not series.
|
||||
if (isMovie) tmdbId = toOptionalInt(id.slice(TMDB_GUID_PREFIX.length));
|
||||
} else if (id.startsWith(IMDB_GUID_PREFIX)) {
|
||||
imdbId = id.slice(IMDB_GUID_PREFIX.length);
|
||||
} else if (id.startsWith(TVDB_GUID_PREFIX)) {
|
||||
tvdbId = id.slice(TVDB_GUID_PREFIX.length);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -54,6 +54,12 @@ beforeEach(() => {
|
||||
mockGetTvDetails.mockReset().mockResolvedValue({ number_of_seasons: 1 });
|
||||
});
|
||||
|
||||
function makePlexForm(payload: Record<string, unknown>): FormData {
|
||||
const form = new FormData();
|
||||
form.set("payload", JSON.stringify(payload));
|
||||
return form;
|
||||
}
|
||||
|
||||
// ─── toOptionalInt ──────────────────────────────────────────────────
|
||||
|
||||
describe("toOptionalInt", () => {
|
||||
@@ -86,12 +92,6 @@ describe("toOptionalInt", () => {
|
||||
// ─── parsePlexPayload ───────────────────────────────────────────────
|
||||
|
||||
describe("parsePlexPayload", () => {
|
||||
function makePlexForm(payload: Record<string, unknown>): FormData {
|
||||
const form = new FormData();
|
||||
form.set("payload", JSON.stringify(payload));
|
||||
return form;
|
||||
}
|
||||
|
||||
test("parses a movie scrobble event", () => {
|
||||
const result = parsePlexPayload(
|
||||
makePlexForm({
|
||||
@@ -143,6 +143,33 @@ describe("parsePlexPayload", () => {
|
||||
});
|
||||
});
|
||||
|
||||
test("ignores episode-level Plex TMDB GUIDs", () => {
|
||||
const result = parsePlexPayload(
|
||||
makePlexForm({
|
||||
event: "media.scrobble",
|
||||
Metadata: {
|
||||
type: "episode",
|
||||
title: "Episode Title",
|
||||
grandparentTitle: "The Pitt",
|
||||
parentIndex: 1,
|
||||
index: 14,
|
||||
Guid: [{ id: "imdb://tt35740476" }, { id: "tmdb://6951292" }, { id: "tvdb://11560129" }],
|
||||
},
|
||||
}),
|
||||
);
|
||||
expect(result).toEqual({
|
||||
provider: "plex",
|
||||
mediaType: "episode",
|
||||
title: "Episode Title",
|
||||
tmdbId: undefined,
|
||||
imdbId: "tt35740476",
|
||||
tvdbId: "11560129",
|
||||
seasonNumber: 1,
|
||||
episodeNumber: 14,
|
||||
showTitle: "The Pitt",
|
||||
});
|
||||
});
|
||||
|
||||
test("returns null for non-scrobble events", () => {
|
||||
expect(parsePlexPayload(makePlexForm({ event: "media.play" }))).toBeNull();
|
||||
});
|
||||
@@ -451,6 +478,38 @@ describe("processWebhook", () => {
|
||||
expect(result.status).toBe("success");
|
||||
});
|
||||
|
||||
test("resolves parsed Plex episodes without passing the episode TMDB ID", async () => {
|
||||
mockResolveShowTmdbId.mockResolvedValue(1396);
|
||||
const { titleId } = insertTvShow("tv-1", 1396, 1, 14, { title: "The Pitt" });
|
||||
mockGetOrFetchTitleByTmdbId.mockResolvedValue({ id: titleId });
|
||||
|
||||
const event = parsePlexPayload(
|
||||
makePlexForm({
|
||||
event: "media.scrobble",
|
||||
Metadata: {
|
||||
type: "episode",
|
||||
title: "Episode Title",
|
||||
grandparentTitle: "The Pitt",
|
||||
parentIndex: 1,
|
||||
index: 14,
|
||||
Guid: [{ id: "imdb://tt35740476" }, { id: "tmdb://6951292" }, { id: "tvdb://11560129" }],
|
||||
},
|
||||
}),
|
||||
);
|
||||
expect(event).not.toBeNull();
|
||||
if (!event) throw new Error("Expected Plex episode event");
|
||||
|
||||
const result = await processWebhook(connectionId, userId, "plex", event);
|
||||
|
||||
expect(result.status).toBe("success");
|
||||
expect(mockResolveShowTmdbId).toHaveBeenCalledWith({
|
||||
tmdbId: undefined,
|
||||
imdbId: "tt35740476",
|
||||
tvdbId: "11560129",
|
||||
title: "The Pitt",
|
||||
});
|
||||
});
|
||||
|
||||
test("returns error when episode cannot be resolved", async () => {
|
||||
mockResolveShowTmdbId.mockResolvedValue(null);
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: ar\n"
|
||||
"Project-Id-Version: sofa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-03-25 01:01\n"
|
||||
"PO-Revision-Date: 2026-07-12 21:31\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Arabic\n"
|
||||
"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n"
|
||||
@@ -346,7 +346,6 @@ msgstr "إضافة إلى قائمة المشاهدة"
|
||||
msgid "Added \"{titleName}\" to watchlist"
|
||||
msgstr "تمت إضافة \"{titleName}\" إلى قائمة المشاهدة"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1236,7 +1235,6 @@ msgstr "تصدير"
|
||||
msgid "Failed"
|
||||
msgstr "فشل"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Failed to add to watchlist"
|
||||
msgstr "فشل الإضافة إلى قائمة المشاهدة"
|
||||
@@ -1293,6 +1291,12 @@ msgstr "فشل تحميل العنوان"
|
||||
msgid "Failed to mark all episodes as watched"
|
||||
msgstr "فشل تحديد جميع الحلقات كمشاهدة"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Failed to mark as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1386,7 +1390,6 @@ msgstr "فشل تحديث الاسم"
|
||||
msgid "Failed to update rating"
|
||||
msgstr "فشل تحديث التقييم"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#: apps/web/src/components/settings/registration-section.tsx
|
||||
msgid "Failed to update registration setting"
|
||||
msgstr "فشل تحديث إعداد التسجيل"
|
||||
@@ -1860,6 +1863,13 @@ msgstr "تمييز الحلقة {epNum} كمشاهَدة"
|
||||
msgid "Mark Episode Watched"
|
||||
msgstr "تمييز الحلقة كمشاهَدة"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/dashboard/upcoming-row.tsx
|
||||
#: apps/native/src/components/ui/poster-card.tsx
|
||||
#: apps/web/src/components/titles/title-actions.tsx
|
||||
msgid "Mark Unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/components/command-palette.tsx
|
||||
msgid "Mark watched"
|
||||
msgstr "تمييز كمشاهَد"
|
||||
@@ -1871,6 +1881,10 @@ msgstr "تمييز كمشاهَد"
|
||||
msgid "Mark Watched"
|
||||
msgstr "تحديد كمشاهدة"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as watched"
|
||||
msgstr "تم تمييز \"{name}\" كمشاهَد"
|
||||
@@ -1879,6 +1893,11 @@ msgstr "تم تمييز \"{name}\" كمشاهَد"
|
||||
#~ msgid "Marked \"{titleName}\" as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as watched"
|
||||
@@ -1898,6 +1917,12 @@ msgstr "تم تحديد جميع حلقات \"{titleName}\" كمشاهدة"
|
||||
#~ msgid "Marked as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Marked as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: de\n"
|
||||
"Project-Id-Version: sofa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-03-25 01:01\n"
|
||||
"PO-Revision-Date: 2026-07-12 21:31\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: German\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -346,7 +346,6 @@ msgstr "Zur Merkliste hinzufügen"
|
||||
msgid "Added \"{titleName}\" to watchlist"
|
||||
msgstr "\"{titleName}\" zur Merkliste hinzugefügt"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1236,7 +1235,6 @@ msgstr "Exportieren"
|
||||
msgid "Failed"
|
||||
msgstr "Fehlgeschlagen"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Failed to add to watchlist"
|
||||
msgstr "Konnte nicht zur Merkliste hinzugefügt werden"
|
||||
@@ -1293,6 +1291,12 @@ msgstr "Titel konnte nicht geladen werden"
|
||||
msgid "Failed to mark all episodes as watched"
|
||||
msgstr "Nicht alle Episoden konnten als gesehen markiert werden"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Failed to mark as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1386,7 +1390,6 @@ msgstr "Name konnte nicht aktualisiert werden"
|
||||
msgid "Failed to update rating"
|
||||
msgstr "Bewertung konnte nicht aktualisiert werden"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#: apps/web/src/components/settings/registration-section.tsx
|
||||
msgid "Failed to update registration setting"
|
||||
msgstr "Registrierungseinstellung konnte nicht aktualisiert werden"
|
||||
@@ -1860,6 +1863,13 @@ msgstr "Episode {epNum} als gesehen markieren"
|
||||
msgid "Mark Episode Watched"
|
||||
msgstr "Episode als gesehen markieren"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/dashboard/upcoming-row.tsx
|
||||
#: apps/native/src/components/ui/poster-card.tsx
|
||||
#: apps/web/src/components/titles/title-actions.tsx
|
||||
msgid "Mark Unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/components/command-palette.tsx
|
||||
msgid "Mark watched"
|
||||
msgstr "Als gesehen markieren"
|
||||
@@ -1871,6 +1881,10 @@ msgstr "Als gesehen markieren"
|
||||
msgid "Mark Watched"
|
||||
msgstr "Als gesehen markieren"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as watched"
|
||||
msgstr "„{name}“ als gesehen markiert"
|
||||
@@ -1879,6 +1893,11 @@ msgstr "„{name}“ als gesehen markiert"
|
||||
#~ msgid "Marked \"{titleName}\" as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as watched"
|
||||
@@ -1898,6 +1917,12 @@ msgstr "Alle Folgen von \"{titleName}\" als gesehen markiert"
|
||||
#~ msgid "Marked as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Marked as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
|
||||
@@ -346,7 +346,6 @@ msgstr ""
|
||||
msgid "Added \"{titleName}\" to watchlist"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1236,7 +1235,6 @@ msgstr "Export"
|
||||
msgid "Failed"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Failed to add to watchlist"
|
||||
msgstr ""
|
||||
@@ -1293,6 +1291,12 @@ msgstr ""
|
||||
msgid "Failed to mark all episodes as watched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Failed to mark as unwatched"
|
||||
msgstr "Failed to mark as unwatched"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1386,7 +1390,6 @@ msgstr ""
|
||||
msgid "Failed to update rating"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#: apps/web/src/components/settings/registration-section.tsx
|
||||
msgid "Failed to update registration setting"
|
||||
msgstr ""
|
||||
@@ -1860,6 +1863,13 @@ msgstr "Mark episode {epNum} watched"
|
||||
msgid "Mark Episode Watched"
|
||||
msgstr "Mark Episode Watched"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/dashboard/upcoming-row.tsx
|
||||
#: apps/native/src/components/ui/poster-card.tsx
|
||||
#: apps/web/src/components/titles/title-actions.tsx
|
||||
msgid "Mark Unwatched"
|
||||
msgstr "Mark Unwatched"
|
||||
|
||||
#: apps/web/src/components/command-palette.tsx
|
||||
msgid "Mark watched"
|
||||
msgstr "Mark watched"
|
||||
@@ -1871,6 +1881,10 @@ msgstr "Mark watched"
|
||||
msgid "Mark Watched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as unwatched"
|
||||
msgstr "Marked \"{name}\" as unwatched"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as watched"
|
||||
msgstr "Marked \"{name}\" as watched"
|
||||
@@ -1879,6 +1893,11 @@ msgstr "Marked \"{name}\" as watched"
|
||||
#~ msgid "Marked \"{titleName}\" as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as unwatched"
|
||||
msgstr "Marked \"{titleName}\" as unwatched"
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as watched"
|
||||
@@ -1898,6 +1917,12 @@ msgstr "Marked all episodes of \"{titleName}\" as watched"
|
||||
#~ msgid "Marked as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Marked as unwatched"
|
||||
msgstr "Marked as unwatched"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: es\n"
|
||||
"Project-Id-Version: sofa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-03-25 01:01\n"
|
||||
"PO-Revision-Date: 2026-07-12 21:31\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Spanish\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -346,7 +346,6 @@ msgstr "Añadir a la lista"
|
||||
msgid "Added \"{titleName}\" to watchlist"
|
||||
msgstr "\"{titleName}\" añadido a la lista"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1236,7 +1235,6 @@ msgstr "Exportar"
|
||||
msgid "Failed"
|
||||
msgstr "Fallido"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Failed to add to watchlist"
|
||||
msgstr "Error al añadir a la lista"
|
||||
@@ -1293,6 +1291,12 @@ msgstr "Error al cargar el título"
|
||||
msgid "Failed to mark all episodes as watched"
|
||||
msgstr "Error al marcar todos los episodios como vistos"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Failed to mark as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1386,7 +1390,6 @@ msgstr "Error al actualizar el nombre"
|
||||
msgid "Failed to update rating"
|
||||
msgstr "Error al actualizar la valoración"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#: apps/web/src/components/settings/registration-section.tsx
|
||||
msgid "Failed to update registration setting"
|
||||
msgstr "Error al actualizar el ajuste de registro"
|
||||
@@ -1860,6 +1863,13 @@ msgstr "Marcar episodio {epNum} como visto"
|
||||
msgid "Mark Episode Watched"
|
||||
msgstr "Marcar episodio como visto"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/dashboard/upcoming-row.tsx
|
||||
#: apps/native/src/components/ui/poster-card.tsx
|
||||
#: apps/web/src/components/titles/title-actions.tsx
|
||||
msgid "Mark Unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/components/command-palette.tsx
|
||||
msgid "Mark watched"
|
||||
msgstr "Marcar como visto"
|
||||
@@ -1871,6 +1881,10 @@ msgstr "Marcar como visto"
|
||||
msgid "Mark Watched"
|
||||
msgstr "Marcar como visto"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as watched"
|
||||
msgstr "Marcado \"{name}\" como visto"
|
||||
@@ -1879,6 +1893,11 @@ msgstr "Marcado \"{name}\" como visto"
|
||||
#~ msgid "Marked \"{titleName}\" as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as watched"
|
||||
@@ -1898,6 +1917,12 @@ msgstr "Se marcaron todos los episodios de \"{titleName}\" como vistos"
|
||||
#~ msgid "Marked as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Marked as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: fr\n"
|
||||
"Project-Id-Version: sofa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-03-25 01:01\n"
|
||||
"PO-Revision-Date: 2026-07-12 21:31\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: French\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
@@ -346,7 +346,6 @@ msgstr "Ajouter à la liste de suivi"
|
||||
msgid "Added \"{titleName}\" to watchlist"
|
||||
msgstr "« {titleName} » ajouté à la liste de suivi"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1236,7 +1235,6 @@ msgstr "Exporter"
|
||||
msgid "Failed"
|
||||
msgstr "Échoué"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Failed to add to watchlist"
|
||||
msgstr "Échec de l'ajout à la liste de suivi"
|
||||
@@ -1293,6 +1291,12 @@ msgstr "Échec du chargement du titre"
|
||||
msgid "Failed to mark all episodes as watched"
|
||||
msgstr "Échec du marquage de tous les épisodes comme visionnés"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Failed to mark as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1386,7 +1390,6 @@ msgstr "Échec de la mise à jour du nom"
|
||||
msgid "Failed to update rating"
|
||||
msgstr "Échec de la mise à jour de la note"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#: apps/web/src/components/settings/registration-section.tsx
|
||||
msgid "Failed to update registration setting"
|
||||
msgstr "Échec de la mise à jour du paramètre d'inscription"
|
||||
@@ -1860,6 +1863,13 @@ msgstr "Marquer l'épisode {epNum} comme regardé"
|
||||
msgid "Mark Episode Watched"
|
||||
msgstr "Marquer l'épisode comme regardé"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/dashboard/upcoming-row.tsx
|
||||
#: apps/native/src/components/ui/poster-card.tsx
|
||||
#: apps/web/src/components/titles/title-actions.tsx
|
||||
msgid "Mark Unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/components/command-palette.tsx
|
||||
msgid "Mark watched"
|
||||
msgstr "Marquer comme regardé"
|
||||
@@ -1871,6 +1881,10 @@ msgstr "Marquer comme regardé"
|
||||
msgid "Mark Watched"
|
||||
msgstr "Marquer comme visionné"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as watched"
|
||||
msgstr "« {name} » marqué comme regardé"
|
||||
@@ -1879,6 +1893,11 @@ msgstr "« {name} » marqué comme regardé"
|
||||
#~ msgid "Marked \"{titleName}\" as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as watched"
|
||||
@@ -1898,6 +1917,12 @@ msgstr "Tous les épisodes de \"{titleName}\" marqués comme vus"
|
||||
#~ msgid "Marked as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Marked as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: he\n"
|
||||
"Project-Id-Version: sofa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-03-25 01:01\n"
|
||||
"PO-Revision-Date: 2026-07-12 21:31\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Hebrew\n"
|
||||
"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n"
|
||||
@@ -346,7 +346,6 @@ msgstr "הוסף לרשימת הצפייה"
|
||||
msgid "Added \"{titleName}\" to watchlist"
|
||||
msgstr "\"{titleName}\" נוסף לרשימת הצפייה"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1236,7 +1235,6 @@ msgstr "ייצוא"
|
||||
msgid "Failed"
|
||||
msgstr "נכשל"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Failed to add to watchlist"
|
||||
msgstr "הוספה לרשימת הצפייה נכשלה"
|
||||
@@ -1293,6 +1291,12 @@ msgstr "טעינת הכותרת נכשלה"
|
||||
msgid "Failed to mark all episodes as watched"
|
||||
msgstr "סימון כל הפרקים כנצפו נכשל"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Failed to mark as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1386,7 +1390,6 @@ msgstr "עדכון השם נכשל"
|
||||
msgid "Failed to update rating"
|
||||
msgstr "עדכון הדירוג נכשל"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#: apps/web/src/components/settings/registration-section.tsx
|
||||
msgid "Failed to update registration setting"
|
||||
msgstr "עדכון הגדרת ההרשמה נכשל"
|
||||
@@ -1860,6 +1863,13 @@ msgstr "סמן פרק {epNum} כנצפה"
|
||||
msgid "Mark Episode Watched"
|
||||
msgstr "סמן פרק כנצפה"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/dashboard/upcoming-row.tsx
|
||||
#: apps/native/src/components/ui/poster-card.tsx
|
||||
#: apps/web/src/components/titles/title-actions.tsx
|
||||
msgid "Mark Unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/components/command-palette.tsx
|
||||
msgid "Mark watched"
|
||||
msgstr "סמן כנצפה"
|
||||
@@ -1871,6 +1881,10 @@ msgstr "סמן כנצפה"
|
||||
msgid "Mark Watched"
|
||||
msgstr "סמן כנצפה"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as watched"
|
||||
msgstr "סומן \"{name}\" כנצפה"
|
||||
@@ -1879,6 +1893,11 @@ msgstr "סומן \"{name}\" כנצפה"
|
||||
#~ msgid "Marked \"{titleName}\" as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as watched"
|
||||
@@ -1898,6 +1917,12 @@ msgstr "כל פרקי \"{titleName}\" סומנו כנצפו"
|
||||
#~ msgid "Marked as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Marked as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: it\n"
|
||||
"Project-Id-Version: sofa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-03-25 01:01\n"
|
||||
"PO-Revision-Date: 2026-07-12 21:31\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Italian\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -346,7 +346,6 @@ msgstr "Aggiungi alla watchlist"
|
||||
msgid "Added \"{titleName}\" to watchlist"
|
||||
msgstr "Aggiunto \"{titleName}\" alla watchlist"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1236,7 +1235,6 @@ msgstr "Esporta"
|
||||
msgid "Failed"
|
||||
msgstr "Non riuscito"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Failed to add to watchlist"
|
||||
msgstr "Impossibile aggiungere alla watchlist"
|
||||
@@ -1293,6 +1291,12 @@ msgstr "Impossibile caricare il titolo"
|
||||
msgid "Failed to mark all episodes as watched"
|
||||
msgstr "Impossibile segnare tutti gli episodi come visti"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Failed to mark as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1386,7 +1390,6 @@ msgstr "Impossibile aggiornare il nome"
|
||||
msgid "Failed to update rating"
|
||||
msgstr "Impossibile aggiornare la valutazione"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#: apps/web/src/components/settings/registration-section.tsx
|
||||
msgid "Failed to update registration setting"
|
||||
msgstr "Impossibile aggiornare l'impostazione di registrazione"
|
||||
@@ -1860,6 +1863,13 @@ msgstr "Segna episodio {epNum} come visto"
|
||||
msgid "Mark Episode Watched"
|
||||
msgstr "Segna episodio come visto"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/dashboard/upcoming-row.tsx
|
||||
#: apps/native/src/components/ui/poster-card.tsx
|
||||
#: apps/web/src/components/titles/title-actions.tsx
|
||||
msgid "Mark Unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/components/command-palette.tsx
|
||||
msgid "Mark watched"
|
||||
msgstr "Segna come visto"
|
||||
@@ -1871,6 +1881,10 @@ msgstr "Segna come visto"
|
||||
msgid "Mark Watched"
|
||||
msgstr "Segna come visto"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as watched"
|
||||
msgstr "Segnato “{name}” come visto"
|
||||
@@ -1879,6 +1893,11 @@ msgstr "Segnato “{name}” come visto"
|
||||
#~ msgid "Marked \"{titleName}\" as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as watched"
|
||||
@@ -1898,6 +1917,12 @@ msgstr "Tutti gli episodi di \"{titleName}\" segnati come visti"
|
||||
#~ msgid "Marked as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Marked as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: ja\n"
|
||||
"Project-Id-Version: sofa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-03-25 01:01\n"
|
||||
"PO-Revision-Date: 2026-07-12 21:31\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Japanese\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
@@ -346,7 +346,6 @@ msgstr "ウォッチリストに追加"
|
||||
msgid "Added \"{titleName}\" to watchlist"
|
||||
msgstr "「{titleName}」をウォッチリストに追加しました"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1236,7 +1235,6 @@ msgstr "エクスポート"
|
||||
msgid "Failed"
|
||||
msgstr "失敗"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Failed to add to watchlist"
|
||||
msgstr "ウォッチリストへの追加に失敗しました"
|
||||
@@ -1293,6 +1291,12 @@ msgstr "作品の読み込みに失敗しました"
|
||||
msgid "Failed to mark all episodes as watched"
|
||||
msgstr "すべてのエピソードを視聴済みにするのに失敗しました"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Failed to mark as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1386,7 +1390,6 @@ msgstr "名前の更新に失敗しました"
|
||||
msgid "Failed to update rating"
|
||||
msgstr "評価の更新に失敗しました"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#: apps/web/src/components/settings/registration-section.tsx
|
||||
msgid "Failed to update registration setting"
|
||||
msgstr "登録設定の更新に失敗しました"
|
||||
@@ -1860,6 +1863,13 @@ msgstr "エピソード{epNum}を視聴済みにする"
|
||||
msgid "Mark Episode Watched"
|
||||
msgstr "エピソードを視聴済みにする"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/dashboard/upcoming-row.tsx
|
||||
#: apps/native/src/components/ui/poster-card.tsx
|
||||
#: apps/web/src/components/titles/title-actions.tsx
|
||||
msgid "Mark Unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/components/command-palette.tsx
|
||||
msgid "Mark watched"
|
||||
msgstr "視聴済みにする"
|
||||
@@ -1871,6 +1881,10 @@ msgstr "視聴済みにする"
|
||||
msgid "Mark Watched"
|
||||
msgstr "視聴済みにする"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as watched"
|
||||
msgstr "「{name}」を視聴済みにしました"
|
||||
@@ -1879,6 +1893,11 @@ msgstr "「{name}」を視聴済みにしました"
|
||||
#~ msgid "Marked \"{titleName}\" as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as watched"
|
||||
@@ -1898,6 +1917,12 @@ msgstr "「{titleName}」のすべてのエピソードを視聴済みにしま
|
||||
#~ msgid "Marked as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Marked as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: ko\n"
|
||||
"Project-Id-Version: sofa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-03-25 01:01\n"
|
||||
"PO-Revision-Date: 2026-07-12 21:31\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Korean\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
@@ -346,7 +346,6 @@ msgstr "찜 목록에 추가"
|
||||
msgid "Added \"{titleName}\" to watchlist"
|
||||
msgstr "\"{titleName}\"를 찜 목록에 추가했습니다"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1236,7 +1235,6 @@ msgstr "내보내기"
|
||||
msgid "Failed"
|
||||
msgstr "실패"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Failed to add to watchlist"
|
||||
msgstr "찜 목록에 추가 실패"
|
||||
@@ -1293,6 +1291,12 @@ msgstr "작품 정보를 불러오지 못했습니다"
|
||||
msgid "Failed to mark all episodes as watched"
|
||||
msgstr "모든 에피소드 시청 처리 실패"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Failed to mark as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1386,7 +1390,6 @@ msgstr "이름 업데이트 실패"
|
||||
msgid "Failed to update rating"
|
||||
msgstr "평점 업데이트 실패"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#: apps/web/src/components/settings/registration-section.tsx
|
||||
msgid "Failed to update registration setting"
|
||||
msgstr "회원가입 설정 업데이트 실패"
|
||||
@@ -1860,6 +1863,13 @@ msgstr "에피소드 {epNum} 시청함으로 표시"
|
||||
msgid "Mark Episode Watched"
|
||||
msgstr "에피소드 시청함으로 표시"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/dashboard/upcoming-row.tsx
|
||||
#: apps/native/src/components/ui/poster-card.tsx
|
||||
#: apps/web/src/components/titles/title-actions.tsx
|
||||
msgid "Mark Unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/components/command-palette.tsx
|
||||
msgid "Mark watched"
|
||||
msgstr "시청함으로 표시"
|
||||
@@ -1871,6 +1881,10 @@ msgstr "시청함으로 표시"
|
||||
msgid "Mark Watched"
|
||||
msgstr "시청 완료 표시"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as watched"
|
||||
msgstr "\"{name}\"을(를) 시청함으로 표시했습니다"
|
||||
@@ -1879,6 +1893,11 @@ msgstr "\"{name}\"을(를) 시청함으로 표시했습니다"
|
||||
#~ msgid "Marked \"{titleName}\" as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as watched"
|
||||
@@ -1898,6 +1917,12 @@ msgstr "\"{titleName}\"의 모든 에피소드를 시청 완료로 표시했습
|
||||
#~ msgid "Marked as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Marked as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: nl\n"
|
||||
"Project-Id-Version: sofa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-03-25 01:01\n"
|
||||
"PO-Revision-Date: 2026-07-12 21:31\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Dutch\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -346,7 +346,6 @@ msgstr "Toevoegen aan kijklijst"
|
||||
msgid "Added \"{titleName}\" to watchlist"
|
||||
msgstr "\"{titleName}\" toegevoegd aan kijklijst"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1236,7 +1235,6 @@ msgstr "Exporteren"
|
||||
msgid "Failed"
|
||||
msgstr "Mislukt"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Failed to add to watchlist"
|
||||
msgstr "Toevoegen aan kijklijst mislukt"
|
||||
@@ -1293,6 +1291,12 @@ msgstr "Titel laden mislukt"
|
||||
msgid "Failed to mark all episodes as watched"
|
||||
msgstr "Alle afleveringen als bekeken markeren mislukt"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Failed to mark as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1386,7 +1390,6 @@ msgstr "Naam bijwerken mislukt"
|
||||
msgid "Failed to update rating"
|
||||
msgstr "Beoordeling bijwerken mislukt"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#: apps/web/src/components/settings/registration-section.tsx
|
||||
msgid "Failed to update registration setting"
|
||||
msgstr "Registratie-instelling bijwerken mislukt"
|
||||
@@ -1860,6 +1863,13 @@ msgstr "Aflevering {epNum} als bekeken markeren"
|
||||
msgid "Mark Episode Watched"
|
||||
msgstr "Aflevering als bekeken markeren"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/dashboard/upcoming-row.tsx
|
||||
#: apps/native/src/components/ui/poster-card.tsx
|
||||
#: apps/web/src/components/titles/title-actions.tsx
|
||||
msgid "Mark Unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/components/command-palette.tsx
|
||||
msgid "Mark watched"
|
||||
msgstr "Als bekeken markeren"
|
||||
@@ -1871,6 +1881,10 @@ msgstr "Als bekeken markeren"
|
||||
msgid "Mark Watched"
|
||||
msgstr "Als bekeken markeren"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as watched"
|
||||
msgstr "\"{name}\" als bekeken gemarkeerd"
|
||||
@@ -1879,6 +1893,11 @@ msgstr "\"{name}\" als bekeken gemarkeerd"
|
||||
#~ msgid "Marked \"{titleName}\" as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as watched"
|
||||
@@ -1898,6 +1917,12 @@ msgstr "Alle afleveringen van \"{titleName}\" als bekeken gemarkeerd"
|
||||
#~ msgid "Marked as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Marked as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: pt\n"
|
||||
"Project-Id-Version: sofa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-03-25 01:01\n"
|
||||
"PO-Revision-Date: 2026-07-12 21:31\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Portuguese\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@@ -346,7 +346,6 @@ msgstr "Adicionar à Lista de Desejos"
|
||||
msgid "Added \"{titleName}\" to watchlist"
|
||||
msgstr "Adicionado \"{titleName}\" à lista de desejos"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1236,7 +1235,6 @@ msgstr "Exportar"
|
||||
msgid "Failed"
|
||||
msgstr "Falhou"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Failed to add to watchlist"
|
||||
msgstr "Falha ao adicionar à lista de desejos"
|
||||
@@ -1293,6 +1291,12 @@ msgstr "Falha ao carregar título"
|
||||
msgid "Failed to mark all episodes as watched"
|
||||
msgstr "Falha ao marcar todos os episódios como assistidos"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Failed to mark as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1386,7 +1390,6 @@ msgstr "Falha ao atualizar nome"
|
||||
msgid "Failed to update rating"
|
||||
msgstr "Falha ao atualizar avaliação"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#: apps/web/src/components/settings/registration-section.tsx
|
||||
msgid "Failed to update registration setting"
|
||||
msgstr "Falha ao atualizar configuração de registro"
|
||||
@@ -1860,6 +1863,13 @@ msgstr "Marcar episódio {epNum} como assistido"
|
||||
msgid "Mark Episode Watched"
|
||||
msgstr "Marcar Episódio como Assistido"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/dashboard/upcoming-row.tsx
|
||||
#: apps/native/src/components/ui/poster-card.tsx
|
||||
#: apps/web/src/components/titles/title-actions.tsx
|
||||
msgid "Mark Unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/components/command-palette.tsx
|
||||
msgid "Mark watched"
|
||||
msgstr "Marcar como assistido"
|
||||
@@ -1871,6 +1881,10 @@ msgstr "Marcar como assistido"
|
||||
msgid "Mark Watched"
|
||||
msgstr "Marcar como Assistido"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as watched"
|
||||
msgstr "Marcado \"{name}\" como assistido"
|
||||
@@ -1879,6 +1893,11 @@ msgstr "Marcado \"{name}\" como assistido"
|
||||
#~ msgid "Marked \"{titleName}\" as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as watched"
|
||||
@@ -1898,6 +1917,12 @@ msgstr "Todos os episódios de \"{titleName}\" marcados como vistos"
|
||||
#~ msgid "Marked as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Marked as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: zh\n"
|
||||
"Project-Id-Version: sofa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-03-25 01:01\n"
|
||||
"PO-Revision-Date: 2026-07-12 21:31\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Chinese Simplified\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
@@ -346,7 +346,6 @@ msgstr "添加到观看列表"
|
||||
msgid "Added \"{titleName}\" to watchlist"
|
||||
msgstr "已将“{titleName}”添加到观看列表"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1236,7 +1235,6 @@ msgstr "导出"
|
||||
msgid "Failed"
|
||||
msgstr "失败"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Failed to add to watchlist"
|
||||
msgstr "添加到待看列表失败"
|
||||
@@ -1293,6 +1291,12 @@ msgstr "加载影视内容失败"
|
||||
msgid "Failed to mark all episodes as watched"
|
||||
msgstr "标记所有剧集为已观看失败"
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Failed to mark as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
@@ -1386,7 +1390,6 @@ msgstr "更新名称失败"
|
||||
msgid "Failed to update rating"
|
||||
msgstr "更新评分失败"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#: apps/web/src/components/settings/registration-section.tsx
|
||||
msgid "Failed to update registration setting"
|
||||
msgstr "更新注册设置失败"
|
||||
@@ -1860,6 +1863,13 @@ msgstr "将第 {epNum} 集标记为已观看"
|
||||
msgid "Mark Episode Watched"
|
||||
msgstr "标记剧集为已观看"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/dashboard/upcoming-row.tsx
|
||||
#: apps/native/src/components/ui/poster-card.tsx
|
||||
#: apps/web/src/components/titles/title-actions.tsx
|
||||
msgid "Mark Unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/components/command-palette.tsx
|
||||
msgid "Mark watched"
|
||||
msgstr "标记为已观看"
|
||||
@@ -1871,6 +1881,10 @@ msgstr "标记为已观看"
|
||||
msgid "Mark Watched"
|
||||
msgstr "标记为已观看"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
msgid "Marked \"{name}\" as watched"
|
||||
msgstr "已将“{name}”标记为已观看"
|
||||
@@ -1879,6 +1893,11 @@ msgstr "已将“{name}”标记为已观看"
|
||||
#~ msgid "Marked \"{titleName}\" as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
#: apps/web/src/components/titles/use-title-actions.ts
|
||||
msgid "Marked \"{titleName}\" as watched"
|
||||
@@ -1898,6 +1917,12 @@ msgstr "已将\"{titleName}\"的所有剧集标记为已观看"
|
||||
#~ msgid "Marked as completed"
|
||||
#~ msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
msgid "Marked as unwatched"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/hooks/use-title-actions.ts
|
||||
#: apps/native/src/lib/title-actions.ts
|
||||
|
||||
Reference in New Issue
Block a user