mirror of
https://github.com/jakejarvis/sofa.git
synced 2026-10-15 19:45:42 -04:00
feat(native): add a watch history screen and trim the web phone tab bar
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
19 files changed
+623
-18
No files matched your search
@@ -1,19 +1,36 @@
|
||||
import { useLingui } from "@lingui/react/macro";
|
||||
import { Stack } from "expo-router";
|
||||
import { IconHistory } from "@tabler/icons-react-native";
|
||||
import { Stack, useRouter } from "expo-router";
|
||||
import { useAtom } from "jotai";
|
||||
import { View } from "react-native";
|
||||
import { Pressable, View } from "react-native";
|
||||
import { useCSSVariable, useResolveClassNames } from "uniwind";
|
||||
|
||||
import { HeaderAvatar } from "@/components/header-avatar";
|
||||
import { SortMenu } from "@/components/library/sort-menu";
|
||||
import { ScaledIcon } from "@/components/ui/scaled-icon";
|
||||
import { type SortBy, librarySortByAtom, librarySortDirectionAtom } from "@/lib/library-atoms";
|
||||
import * as Haptics from "@/utils/haptics";
|
||||
|
||||
function LibraryHeaderRight() {
|
||||
const { t } = useLingui();
|
||||
const router = useRouter();
|
||||
const foregroundColor = useCSSVariable("--color-foreground") as string;
|
||||
const [sortBy, setSortBy] = useAtom(librarySortByAtom);
|
||||
const [sortDirection, setSortDirection] = useAtom(librarySortDirectionAtom);
|
||||
|
||||
return (
|
||||
<View className="flex-row items-center gap-4">
|
||||
<Pressable
|
||||
accessibilityRole="button"
|
||||
accessibilityLabel={t`History`}
|
||||
hitSlop={8}
|
||||
onPress={() => {
|
||||
Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light);
|
||||
router.push("/(tabs)/(library)/history");
|
||||
}}
|
||||
>
|
||||
<ScaledIcon icon={IconHistory} size={22} color={foregroundColor} />
|
||||
</Pressable>
|
||||
<SortMenu
|
||||
sortBy={sortBy}
|
||||
sortDirection={sortDirection}
|
||||
@@ -51,13 +68,11 @@ export default function LibraryLayout() {
|
||||
|
||||
if (process.env.EXPO_OS === "ios") {
|
||||
return (
|
||||
<Stack
|
||||
screenOptions={{
|
||||
contentStyle,
|
||||
unstable_headerRightItems: getLibraryHeaderRightItems,
|
||||
}}
|
||||
>
|
||||
<Stack.Screen name="index">
|
||||
<Stack screenOptions={{ contentStyle }}>
|
||||
<Stack.Screen
|
||||
name="index"
|
||||
options={{ unstable_headerRightItems: getLibraryHeaderRightItems }}
|
||||
>
|
||||
<Stack.Header
|
||||
transparent
|
||||
blurEffect="systemChromeMaterialDark"
|
||||
@@ -84,10 +99,9 @@ export default function LibraryLayout() {
|
||||
screenOptions={{
|
||||
contentStyle,
|
||||
headerTitleAlign: "left",
|
||||
headerRight: renderLibraryHeaderRight,
|
||||
}}
|
||||
>
|
||||
<Stack.Screen name="index">
|
||||
<Stack.Screen name="index" options={{ headerRight: renderLibraryHeaderRight }}>
|
||||
<Stack.Header
|
||||
transparent={false}
|
||||
style={{
|
||||
|
||||
@@ -0,0 +1,191 @@
|
||||
import { useLingui } from "@lingui/react/macro";
|
||||
import { IconAlertTriangle, IconHistory } from "@tabler/icons-react-native";
|
||||
import { useInfiniteQuery } from "@tanstack/react-query";
|
||||
import { Stack } from "expo-router";
|
||||
import { useCallback, useMemo, useState } from "react";
|
||||
import { Pressable, RefreshControl, ScrollView, SectionList, View } from "react-native";
|
||||
import Animated, { FadeInDown } from "react-native-reanimated";
|
||||
import { useCSSVariable, useResolveClassNames } from "uniwind";
|
||||
|
||||
import { HistoryRow } from "@/components/history/history-row";
|
||||
import { EmptyState } from "@/components/ui/empty-state";
|
||||
import { ScaledIcon } from "@/components/ui/scaled-icon";
|
||||
import { Text } from "@/components/ui/text";
|
||||
import { usePullToRefresh } from "@/hooks/use-pull-to-refresh";
|
||||
import { orpc } from "@/lib/orpc";
|
||||
import { queryClient } from "@/lib/query-client";
|
||||
import * as Haptics from "@/utils/haptics";
|
||||
import { formatLocalDate } from "@sofa/i18n/date-buckets";
|
||||
import { formatDate } from "@sofa/i18n/format";
|
||||
|
||||
const contentContainerStyle = { paddingBottom: 24 };
|
||||
|
||||
function FilterChip({
|
||||
label,
|
||||
isSelected,
|
||||
onPress,
|
||||
}: {
|
||||
label: string;
|
||||
isSelected: boolean;
|
||||
onPress: () => void;
|
||||
}) {
|
||||
return (
|
||||
<Pressable
|
||||
onPress={() => {
|
||||
Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light);
|
||||
onPress();
|
||||
}}
|
||||
accessibilityRole="button"
|
||||
accessibilityState={{ selected: isSelected }}
|
||||
className={`rounded-full px-3 py-1.5 ${isSelected ? "bg-primary" : "bg-secondary"}`}
|
||||
>
|
||||
<Text
|
||||
className={`font-sans text-xs font-medium ${isSelected ? "text-primary-foreground" : "text-foreground"}`}
|
||||
>
|
||||
{label}
|
||||
</Text>
|
||||
</Pressable>
|
||||
);
|
||||
}
|
||||
|
||||
export default function HistoryScreen() {
|
||||
const { t } = useLingui();
|
||||
const headerTitleStyle = useResolveClassNames("font-display text-foreground text-xl");
|
||||
const tintColor = useCSSVariable("--color-primary") as string;
|
||||
const backgroundColor = useCSSVariable("--color-background") as string;
|
||||
const mutedColor = useCSSVariable("--color-muted-foreground") as string;
|
||||
|
||||
const [mediaType, setMediaType] = useState<"all" | "movie" | "tv">("all");
|
||||
|
||||
const { data, isPending, isError, refetch, fetchNextPage, hasNextPage, isFetchingNextPage } =
|
||||
useInfiniteQuery(
|
||||
orpc.tracking.history.infiniteOptions({
|
||||
input: (pageParam: string | undefined) => ({
|
||||
limit: 30,
|
||||
cursor: pageParam,
|
||||
type: mediaType !== "all" ? mediaType : undefined,
|
||||
}),
|
||||
initialPageParam: undefined as string | undefined,
|
||||
getNextPageParam: (lastPage) => lastPage.nextCursor ?? undefined,
|
||||
}),
|
||||
);
|
||||
|
||||
const allItems = useMemo(() => data?.pages.flatMap((p) => p.items) ?? [], [data]);
|
||||
|
||||
// Group by local calendar day, preserving newest-first order. The day key comes
|
||||
// from local getters; the heading formats the date-only key as UTC (see
|
||||
// intl-polyfills.ts: the native Intl polyfill defaults to UTC).
|
||||
const sections = useMemo(() => {
|
||||
const days: { key: string; title: string; data: typeof allItems }[] = [];
|
||||
for (const item of allItems) {
|
||||
const key = formatLocalDate(new Date(item.watchedAt));
|
||||
const last = days[days.length - 1];
|
||||
if (last && last.key === key) {
|
||||
last.data.push(item);
|
||||
} else {
|
||||
days.push({ key, title: formatDate(key, { weekday: "long" }), data: [item] });
|
||||
}
|
||||
}
|
||||
return days;
|
||||
}, [allItems]);
|
||||
|
||||
const refreshHistory = useCallback(
|
||||
() => queryClient.invalidateQueries({ queryKey: orpc.tracking.history.key() }),
|
||||
[],
|
||||
);
|
||||
const { refreshing, onRefresh } = usePullToRefresh(refreshHistory);
|
||||
|
||||
const onEndReached = useCallback(() => {
|
||||
if (hasNextPage && !isFetchingNextPage) {
|
||||
fetchNextPage();
|
||||
}
|
||||
}, [hasNextPage, isFetchingNextPage, fetchNextPage]);
|
||||
|
||||
const filterChips = (
|
||||
<ScrollView
|
||||
horizontal
|
||||
showsHorizontalScrollIndicator={false}
|
||||
contentContainerStyle={{ paddingHorizontal: 16, gap: 6, paddingTop: 10, paddingBottom: 6 }}
|
||||
>
|
||||
<FilterChip
|
||||
label={t`All`}
|
||||
isSelected={mediaType === "all"}
|
||||
onPress={() => setMediaType("all")}
|
||||
/>
|
||||
<FilterChip
|
||||
label={t`Movies`}
|
||||
isSelected={mediaType === "movie"}
|
||||
onPress={() => setMediaType("movie")}
|
||||
/>
|
||||
<FilterChip
|
||||
label={t`TV`}
|
||||
isSelected={mediaType === "tv"}
|
||||
onPress={() => setMediaType("tv")}
|
||||
/>
|
||||
</ScrollView>
|
||||
);
|
||||
|
||||
const isIOS = process.env.EXPO_OS === "ios";
|
||||
|
||||
return (
|
||||
<>
|
||||
<Stack.Header
|
||||
transparent={isIOS}
|
||||
blurEffect={isIOS ? "systemChromeMaterialDark" : undefined}
|
||||
style={{
|
||||
color: tintColor,
|
||||
shadowColor: "transparent",
|
||||
backgroundColor: isIOS ? undefined : backgroundColor,
|
||||
}}
|
||||
/>
|
||||
<Stack.Screen.Title style={headerTitleStyle as Record<string, unknown>}>
|
||||
{t`History`}
|
||||
</Stack.Screen.Title>
|
||||
<Stack.Screen.BackButton displayMode="minimal" />
|
||||
<SectionList
|
||||
sections={sections}
|
||||
keyExtractor={(item) => item.watchId}
|
||||
ListHeaderComponent={filterChips}
|
||||
renderItem={({ item }) => (
|
||||
<View className="px-4 py-1">
|
||||
<HistoryRow item={item} />
|
||||
</View>
|
||||
)}
|
||||
renderSectionHeader={({ section: { title } }) => (
|
||||
<View className="bg-background px-4 pt-3 pb-1">
|
||||
<Text className="text-muted-foreground text-xs font-semibold tracking-wider uppercase">
|
||||
{title}
|
||||
</Text>
|
||||
</View>
|
||||
)}
|
||||
stickySectionHeadersEnabled
|
||||
contentContainerStyle={contentContainerStyle}
|
||||
contentInsetAdjustmentBehavior="automatic"
|
||||
onEndReached={onEndReached}
|
||||
onEndReachedThreshold={0.5}
|
||||
refreshControl={<RefreshControl refreshing={refreshing} onRefresh={onRefresh} />}
|
||||
ListEmptyComponent={
|
||||
isPending ? null : isError && allItems.length === 0 ? (
|
||||
<EmptyState
|
||||
icon={IconAlertTriangle}
|
||||
title={t`Something went wrong`}
|
||||
description={t`Couldn't load your watch history`}
|
||||
actionLabel={t`Retry`}
|
||||
onAction={() => refetch()}
|
||||
/>
|
||||
) : (
|
||||
<Animated.View
|
||||
entering={FadeInDown.duration(300)}
|
||||
className="items-center justify-center px-4 py-16"
|
||||
>
|
||||
<ScaledIcon icon={IconHistory} size={48} color={`${mutedColor}66`} />
|
||||
<Text className="text-muted-foreground mt-4 text-center text-sm">
|
||||
{t`No watches yet.`}
|
||||
</Text>
|
||||
</Animated.View>
|
||||
)
|
||||
}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
import { useLingui } from "@lingui/react/macro";
|
||||
import { IconMovie } from "@tabler/icons-react-native";
|
||||
import { Link } from "expo-router";
|
||||
import { Pressable, View } from "react-native";
|
||||
import { useCSSVariable } from "uniwind";
|
||||
import type { z } from "zod";
|
||||
|
||||
import { Image } from "@/components/ui/image";
|
||||
import { ScaledIcon } from "@/components/ui/scaled-icon";
|
||||
import { Text } from "@/components/ui/text";
|
||||
import { formatLocalTimeOfDay } from "@/lib/format-time";
|
||||
import type { WatchHistoryItemSchema } from "@sofa/api/schemas";
|
||||
|
||||
type WatchHistoryItem = z.infer<typeof WatchHistoryItemSchema>;
|
||||
|
||||
export function HistoryRow({ item }: { item: WatchHistoryItem }) {
|
||||
const { t } = useLingui();
|
||||
const mutedColor = useCSSVariable("--color-muted-foreground") as string;
|
||||
|
||||
const sourceLabels = {
|
||||
manual: t`Manual`,
|
||||
import: t`Import`,
|
||||
plex: t`Plex`,
|
||||
jellyfin: t`Jellyfin`,
|
||||
emby: t`Emby`,
|
||||
} as const;
|
||||
|
||||
let subtitle: string | null = null;
|
||||
if (item.episode) {
|
||||
const season = item.episode.seasonNumber;
|
||||
const episode = item.episode.episodeNumber;
|
||||
const name = item.episode.name;
|
||||
subtitle = name ? t`S${season} E${episode} · ${name}` : t`S${season} E${episode}`;
|
||||
}
|
||||
|
||||
const time = formatLocalTimeOfDay(new Date(item.watchedAt));
|
||||
const accessibilityLabel = [item.title.title, subtitle, time].filter(Boolean).join(", ");
|
||||
|
||||
return (
|
||||
<Link href={`/title/${item.title.id}`} asChild>
|
||||
<Pressable
|
||||
accessibilityRole="link"
|
||||
accessibilityLabel={accessibilityLabel}
|
||||
className="bg-card/40 flex-row items-center gap-3 rounded-xl border border-white/[0.06] px-3 py-3"
|
||||
>
|
||||
<View className="overflow-hidden rounded-lg" style={{ width: 44, height: 66 }}>
|
||||
{item.title.posterPath ? (
|
||||
<Image
|
||||
source={{ uri: item.title.posterPath }}
|
||||
thumbHash={item.title.posterThumbHash}
|
||||
className="size-full"
|
||||
contentFit="cover"
|
||||
/>
|
||||
) : (
|
||||
<View className="bg-muted size-full items-center justify-center">
|
||||
<ScaledIcon icon={IconMovie} size={18} color={mutedColor} />
|
||||
</View>
|
||||
)}
|
||||
</View>
|
||||
<View className="min-w-0 flex-1">
|
||||
<Text className="text-foreground text-sm font-medium" numberOfLines={1}>
|
||||
{item.title.title}
|
||||
</Text>
|
||||
{subtitle && (
|
||||
<Text className="text-muted-foreground mt-1 text-xs" numberOfLines={1}>
|
||||
{subtitle}
|
||||
</Text>
|
||||
)}
|
||||
</View>
|
||||
<View className="items-end gap-1">
|
||||
<Text className="text-muted-foreground text-xs">{time}</Text>
|
||||
<View className="bg-muted rounded px-1.5 py-0.5">
|
||||
<Text className="text-muted-foreground text-[10px] font-medium tracking-wider uppercase">
|
||||
{sourceLabels[item.source]}
|
||||
</Text>
|
||||
</View>
|
||||
</View>
|
||||
</Pressable>
|
||||
</Link>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
import { describe, expect, test, vi } from "vitest";
|
||||
|
||||
vi.mock("@sofa/i18n", () => ({ i18n: { locale: "en" } }));
|
||||
|
||||
import { formatLocalTimeOfDay } from "@/lib/format-time";
|
||||
|
||||
describe("formatLocalTimeOfDay", () => {
|
||||
test("renders the local hour and minutes", () => {
|
||||
const result = formatLocalTimeOfDay(new Date(2026, 5, 15, 21, 5));
|
||||
expect(result).toMatch(/9|21/);
|
||||
expect(result).toContain("05");
|
||||
});
|
||||
|
||||
test("is independent of the date part", () => {
|
||||
expect(formatLocalTimeOfDay(new Date(2026, 0, 1, 7, 30))).toBe(
|
||||
formatLocalTimeOfDay(new Date(2030, 11, 31, 7, 30)),
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,19 @@
|
||||
import { formatDate } from "@sofa/i18n/format";
|
||||
|
||||
/**
|
||||
* Formats the device-local time of day (e.g. "9:05 PM" / "21:05") for a Date.
|
||||
*
|
||||
* The native Intl polyfill has no time-zone data and defaults to UTC, so we
|
||||
* read the local hours/minutes from the Date and format them as a synthetic
|
||||
* UTC instant. This keeps locale-aware 12/24h formatting with device-local time.
|
||||
*/
|
||||
export function formatLocalTimeOfDay(date: Date): string {
|
||||
return formatDate(new Date(Date.UTC(2000, 0, 1, date.getHours(), date.getMinutes())), {
|
||||
year: undefined,
|
||||
month: undefined,
|
||||
day: undefined,
|
||||
hour: "numeric",
|
||||
minute: "2-digit",
|
||||
timeZone: "UTC",
|
||||
});
|
||||
}
|
||||
@@ -3,7 +3,6 @@ import {
|
||||
IconBooks,
|
||||
IconCalendarEvent,
|
||||
IconCompass,
|
||||
IconHistory,
|
||||
IconHome,
|
||||
IconLogout,
|
||||
IconSearch,
|
||||
@@ -291,7 +290,6 @@ export function MobileTabBar() {
|
||||
{ href: "/library", label: t`Library`, icon: IconBooks },
|
||||
{ href: "/explore", label: t`Explore`, icon: IconCompass },
|
||||
{ href: "/upcoming", label: t`Upcoming`, icon: IconCalendarEvent },
|
||||
{ href: "/history", label: t`History`, icon: IconHistory },
|
||||
{ href: "/settings", label: t`Settings`, icon: IconSettings },
|
||||
] as const;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { useLingui } from "@lingui/react/macro";
|
||||
import { IconBooks, IconFilterOff } from "@tabler/icons-react";
|
||||
import { IconBooks, IconFilterOff, IconHistory } from "@tabler/icons-react";
|
||||
import { useInfiniteQuery } from "@tanstack/react-query";
|
||||
import { createFileRoute, useNavigate } from "@tanstack/react-router";
|
||||
import { Link, createFileRoute, useNavigate } from "@tanstack/react-router";
|
||||
import { zodValidator } from "@tanstack/zod-adapter";
|
||||
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
||||
import { z } from "zod";
|
||||
@@ -9,6 +9,7 @@ import { z } from "zod";
|
||||
import { TitleGrid, TitleGridSectionSkeleton } from "@/components/dashboard/title-grid";
|
||||
import { LibraryToolbar } from "@/components/library/library-toolbar";
|
||||
import { RouteError } from "@/components/route-error";
|
||||
import { buttonVariants } from "@/components/ui/button";
|
||||
import { useInfiniteScroll } from "@/hooks/use-infinite-scroll";
|
||||
import { orpc } from "@/lib/orpc/client";
|
||||
|
||||
@@ -180,9 +181,15 @@ function LibraryPage() {
|
||||
|
||||
return (
|
||||
<div className="space-y-6">
|
||||
<div className="flex items-center gap-2">
|
||||
<IconBooks aria-hidden={true} className="text-primary size-5" />
|
||||
<h1 className="font-display text-xl tracking-tight">{t`Library`}</h1>
|
||||
<div className="flex items-center justify-between gap-2">
|
||||
<div className="flex items-center gap-2">
|
||||
<IconBooks aria-hidden={true} className="text-primary size-5" />
|
||||
<h1 className="font-display text-xl tracking-tight">{t`Library`}</h1>
|
||||
</div>
|
||||
<Link to="/history" className={buttonVariants({ variant: "outline", size: "sm" })}>
|
||||
<IconHistory aria-hidden={true} />
|
||||
{t`History`}
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
<LibraryToolbar
|
||||
|
||||
@@ -373,6 +373,7 @@ msgid "age {age}"
|
||||
msgstr "العمر {age}"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
@@ -878,6 +879,10 @@ msgstr ""
|
||||
msgid "Couldn't load your library"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "Couldn't load your watch history"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
msgid "Couldn't search right now"
|
||||
msgstr ""
|
||||
@@ -1097,6 +1102,7 @@ msgstr "البريد الإلكتروني"
|
||||
msgid "Email is required"
|
||||
msgstr "البريد الإلكتروني مطلوب"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Emby"
|
||||
@@ -1580,8 +1586,11 @@ msgstr "الأعلى تقييماً"
|
||||
msgid "Hindi"
|
||||
msgstr "الهندية"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/_layout.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/web/src/components/nav-bar.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
#: apps/web/src/routes/_app/library.tsx
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
|
||||
@@ -1605,6 +1614,7 @@ msgstr "ذاكرة التخزين المؤقت للصور"
|
||||
msgid "Image cache and backup disk usage"
|
||||
msgstr "استخدام القرص لذاكرة التخزين المؤقت للصور والنسخ الاحتياطية"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
@@ -1734,6 +1744,7 @@ msgstr "الإيطالية"
|
||||
msgid "Japanese"
|
||||
msgstr "اليابانية"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Jellyfin"
|
||||
@@ -1864,6 +1875,7 @@ msgstr "انقطع الاتصال بعملية الاستيراد. تحقق من
|
||||
msgid "Manage your account and preferences"
|
||||
msgstr "إدارة حسابك وتفضيلاتك"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Manual"
|
||||
@@ -2059,6 +2071,7 @@ msgid "Movie"
|
||||
msgstr "فيلم"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/web/src/components/people/filmography-grid.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -2225,6 +2238,10 @@ msgstr "لا توجد عناوين تطابق فلاترك"
|
||||
msgid "No upcoming episodes or releases in the next 90 days."
|
||||
msgstr "لا توجد حلقات أو إصدارات قادمة في الـ 90 يوماً التالية."
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "No watches yet."
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/system-health-section.tsx
|
||||
@@ -2436,6 +2453,7 @@ msgstr "يرجى تأكيد كلمة المرور"
|
||||
msgid "Please sign in again."
|
||||
msgstr "يرجى تسجيل الدخول مرة أخرى."
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Plex"
|
||||
@@ -2829,6 +2847,7 @@ msgstr "جارٍ استرداد سجل المشاهدة وقائمة المشا
|
||||
#: apps/native/src/app/(auth)/register.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
@@ -2859,10 +2878,12 @@ msgstr "تشغيل الآن"
|
||||
#~ msgid "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
#~ msgstr "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode}"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode} · {name}"
|
||||
msgstr ""
|
||||
@@ -3156,6 +3177,7 @@ msgstr "سيقوم Sofa تلقائياً بتسجيل الأفلام والحل
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
@@ -3514,6 +3536,7 @@ msgid "tv"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
|
||||
@@ -373,6 +373,7 @@ msgid "age {age}"
|
||||
msgstr "Alter {age}"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
@@ -878,6 +879,10 @@ msgstr ""
|
||||
msgid "Couldn't load your library"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "Couldn't load your watch history"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
msgid "Couldn't search right now"
|
||||
msgstr ""
|
||||
@@ -1097,6 +1102,7 @@ msgstr "E-Mail"
|
||||
msgid "Email is required"
|
||||
msgstr "E-Mail ist erforderlich"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Emby"
|
||||
@@ -1580,8 +1586,11 @@ msgstr "Bestbewertet"
|
||||
msgid "Hindi"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/_layout.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/web/src/components/nav-bar.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
#: apps/web/src/routes/_app/library.tsx
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
|
||||
@@ -1605,6 +1614,7 @@ msgstr "Bild-Cache"
|
||||
msgid "Image cache and backup disk usage"
|
||||
msgstr "Speichernutzung für Bild-Cache und Backups"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
@@ -1734,6 +1744,7 @@ msgstr "Italienisch"
|
||||
msgid "Japanese"
|
||||
msgstr "Japanisch"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Jellyfin"
|
||||
@@ -1864,6 +1875,7 @@ msgstr "Verbindung zum Import verloren. Status in den Einstellungen prüfen."
|
||||
msgid "Manage your account and preferences"
|
||||
msgstr "Konto und Einstellungen verwalten"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Manual"
|
||||
@@ -2059,6 +2071,7 @@ msgid "Movie"
|
||||
msgstr "Film"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/web/src/components/people/filmography-grid.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -2225,6 +2238,10 @@ msgstr "Keine Titel entsprechen deinen Filtern"
|
||||
msgid "No upcoming episodes or releases in the next 90 days."
|
||||
msgstr "Keine kommenden Episoden oder Veröffentlichungen in den nächsten 90 Tagen."
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "No watches yet."
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/system-health-section.tsx
|
||||
@@ -2436,6 +2453,7 @@ msgstr "Bitte bestätige dein Passwort"
|
||||
msgid "Please sign in again."
|
||||
msgstr "Bitte melde dich erneut an."
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Plex"
|
||||
@@ -2829,6 +2847,7 @@ msgstr "Verlauf, Merkliste und Bewertungen werden abgerufen..."
|
||||
#: apps/native/src/app/(auth)/register.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
@@ -2859,10 +2878,12 @@ msgstr "Jetzt ausführen"
|
||||
#~ msgid "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
#~ msgstr "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode}"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode} · {name}"
|
||||
msgstr ""
|
||||
@@ -3156,6 +3177,7 @@ msgstr "Sofa protokolliert Filme und Episoden automatisch, wenn du sie zu Ende g
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
@@ -3514,6 +3536,7 @@ msgid "tv"
|
||||
msgstr "Serie"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
|
||||
@@ -373,6 +373,7 @@ msgid "age {age}"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
@@ -878,6 +879,10 @@ msgstr "Couldn't load upcoming releases"
|
||||
msgid "Couldn't load your library"
|
||||
msgstr "Couldn't load your library"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "Couldn't load your watch history"
|
||||
msgstr "Couldn't load your watch history"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
msgid "Couldn't search right now"
|
||||
msgstr "Couldn't search right now"
|
||||
@@ -1097,6 +1102,7 @@ msgstr ""
|
||||
msgid "Email is required"
|
||||
msgstr "Email is required"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Emby"
|
||||
@@ -1580,8 +1586,11 @@ msgstr "Highest rated"
|
||||
msgid "Hindi"
|
||||
msgstr "Hindi"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/_layout.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/web/src/components/nav-bar.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
#: apps/web/src/routes/_app/library.tsx
|
||||
msgid "History"
|
||||
msgstr "History"
|
||||
|
||||
@@ -1605,6 +1614,7 @@ msgstr ""
|
||||
msgid "Image cache and backup disk usage"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
@@ -1734,6 +1744,7 @@ msgstr "Italian"
|
||||
msgid "Japanese"
|
||||
msgstr "Japanese"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Jellyfin"
|
||||
@@ -1864,6 +1875,7 @@ msgstr ""
|
||||
msgid "Manage your account and preferences"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Manual"
|
||||
@@ -2059,6 +2071,7 @@ msgid "Movie"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/web/src/components/people/filmography-grid.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -2225,6 +2238,10 @@ msgstr "No titles match your filters"
|
||||
msgid "No upcoming episodes or releases in the next 90 days."
|
||||
msgstr "No upcoming episodes or releases in the next 90 days."
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "No watches yet."
|
||||
msgstr "No watches yet."
|
||||
|
||||
#: apps/native/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/system-health-section.tsx
|
||||
@@ -2436,6 +2453,7 @@ msgstr "Please confirm your password"
|
||||
msgid "Please sign in again."
|
||||
msgstr "Please sign in again."
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Plex"
|
||||
@@ -2829,6 +2847,7 @@ msgstr ""
|
||||
#: apps/native/src/app/(auth)/register.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
@@ -2859,10 +2878,12 @@ msgstr ""
|
||||
#~ msgid "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
#~ msgstr "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode}"
|
||||
msgstr "S{season} E{episode}"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode} · {name}"
|
||||
msgstr "S{season} E{episode} · {name}"
|
||||
@@ -3156,6 +3177,7 @@ msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
@@ -3514,6 +3536,7 @@ msgid "tv"
|
||||
msgstr "tv"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
|
||||
@@ -373,6 +373,7 @@ msgid "age {age}"
|
||||
msgstr "edad {age}"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
@@ -878,6 +879,10 @@ msgstr ""
|
||||
msgid "Couldn't load your library"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "Couldn't load your watch history"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
msgid "Couldn't search right now"
|
||||
msgstr ""
|
||||
@@ -1097,6 +1102,7 @@ msgstr "Correo electrónico"
|
||||
msgid "Email is required"
|
||||
msgstr "El correo electrónico es obligatorio"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Emby"
|
||||
@@ -1580,8 +1586,11 @@ msgstr "Mejor valorados"
|
||||
msgid "Hindi"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/_layout.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/web/src/components/nav-bar.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
#: apps/web/src/routes/_app/library.tsx
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
|
||||
@@ -1605,6 +1614,7 @@ msgstr "Caché de imágenes"
|
||||
msgid "Image cache and backup disk usage"
|
||||
msgstr "Uso del disco de caché de imágenes y copias de seguridad"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
@@ -1734,6 +1744,7 @@ msgstr "Italiano"
|
||||
msgid "Japanese"
|
||||
msgstr "Japonés"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Jellyfin"
|
||||
@@ -1864,6 +1875,7 @@ msgstr "Se perdió la conexión con la importación. Comprueba el estado en ajus
|
||||
msgid "Manage your account and preferences"
|
||||
msgstr "Gestiona tu cuenta y preferencias"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Manual"
|
||||
@@ -2059,6 +2071,7 @@ msgid "Movie"
|
||||
msgstr "Película"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/web/src/components/people/filmography-grid.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -2225,6 +2238,10 @@ msgstr "Ningún título coincide con tus filtros"
|
||||
msgid "No upcoming episodes or releases in the next 90 days."
|
||||
msgstr "No hay episodios ni estrenos en los próximos 90 días."
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "No watches yet."
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/system-health-section.tsx
|
||||
@@ -2436,6 +2453,7 @@ msgstr "Por favor, confirma tu contraseña"
|
||||
msgid "Please sign in again."
|
||||
msgstr "Por favor, inicia sesión de nuevo."
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Plex"
|
||||
@@ -2829,6 +2847,7 @@ msgstr "Obteniendo tu historial de visionado, lista y valoraciones..."
|
||||
#: apps/native/src/app/(auth)/register.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
@@ -2859,10 +2878,12 @@ msgstr "Ejecutar ahora"
|
||||
#~ msgid "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
#~ msgstr "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode}"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode} · {name}"
|
||||
msgstr ""
|
||||
@@ -3156,6 +3177,7 @@ msgstr "Sofa registrará automáticamente películas y episodios cuando termines
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
@@ -3514,6 +3536,7 @@ msgid "tv"
|
||||
msgstr "serie"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
|
||||
@@ -373,6 +373,7 @@ msgid "age {age}"
|
||||
msgstr "âge {age}"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
@@ -878,6 +879,10 @@ msgstr ""
|
||||
msgid "Couldn't load your library"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "Couldn't load your watch history"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
msgid "Couldn't search right now"
|
||||
msgstr ""
|
||||
@@ -1097,6 +1102,7 @@ msgstr "E-mail"
|
||||
msgid "Email is required"
|
||||
msgstr "L'adresse e-mail est requise"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Emby"
|
||||
@@ -1580,8 +1586,11 @@ msgstr "Mieux notés"
|
||||
msgid "Hindi"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/_layout.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/web/src/components/nav-bar.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
#: apps/web/src/routes/_app/library.tsx
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
|
||||
@@ -1605,6 +1614,7 @@ msgstr "Cache d'images"
|
||||
msgid "Image cache and backup disk usage"
|
||||
msgstr "Utilisation du disque : cache d'images et sauvegardes"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
@@ -1734,6 +1744,7 @@ msgstr "Italien"
|
||||
msgid "Japanese"
|
||||
msgstr "Japonais"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Jellyfin"
|
||||
@@ -1864,6 +1875,7 @@ msgstr "Connexion à l'importation perdue. Vérifiez l'état dans les paramètre
|
||||
msgid "Manage your account and preferences"
|
||||
msgstr "Gérez votre compte et vos préférences"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Manual"
|
||||
@@ -2059,6 +2071,7 @@ msgid "Movie"
|
||||
msgstr "Film"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/web/src/components/people/filmography-grid.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -2225,6 +2238,10 @@ msgstr "Aucun titre ne correspond à vos filtres"
|
||||
msgid "No upcoming episodes or releases in the next 90 days."
|
||||
msgstr "Aucun épisode ou sortie à venir dans les 90 prochains jours."
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "No watches yet."
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/system-health-section.tsx
|
||||
@@ -2436,6 +2453,7 @@ msgstr "Veuillez confirmer votre mot de passe"
|
||||
msgid "Please sign in again."
|
||||
msgstr "Veuillez vous reconnecter."
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Plex"
|
||||
@@ -2829,6 +2847,7 @@ msgstr "Récupération de votre historique, liste de suivi et notes..."
|
||||
#: apps/native/src/app/(auth)/register.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
@@ -2859,10 +2878,12 @@ msgstr "Exécuter maintenant"
|
||||
#~ msgid "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
#~ msgstr "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode}"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode} · {name}"
|
||||
msgstr ""
|
||||
@@ -3156,6 +3177,7 @@ msgstr "Sofa enregistrera automatiquement les films et épisodes lorsque vous au
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
@@ -3514,6 +3536,7 @@ msgid "tv"
|
||||
msgstr "série"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
|
||||
@@ -373,6 +373,7 @@ msgid "age {age}"
|
||||
msgstr "גיל {age}"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
@@ -878,6 +879,10 @@ msgstr ""
|
||||
msgid "Couldn't load your library"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "Couldn't load your watch history"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
msgid "Couldn't search right now"
|
||||
msgstr ""
|
||||
@@ -1097,6 +1102,7 @@ msgstr "דוא\"ל"
|
||||
msgid "Email is required"
|
||||
msgstr "כתובת דוא\"ל נדרשת"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Emby"
|
||||
@@ -1580,8 +1586,11 @@ msgstr "בדירוג הגבוה ביותר"
|
||||
msgid "Hindi"
|
||||
msgstr "הינדי"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/_layout.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/web/src/components/nav-bar.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
#: apps/web/src/routes/_app/library.tsx
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
|
||||
@@ -1605,6 +1614,7 @@ msgstr "מטמון תמונות"
|
||||
msgid "Image cache and backup disk usage"
|
||||
msgstr "שימוש בדיסק של מטמון תמונות וגיבויים"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
@@ -1734,6 +1744,7 @@ msgstr "איטלקית"
|
||||
msgid "Japanese"
|
||||
msgstr "יפנית"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Jellyfin"
|
||||
@@ -1864,6 +1875,7 @@ msgstr "אבד החיבור לייבוא. בדוק את הסטטוס בהגדר
|
||||
msgid "Manage your account and preferences"
|
||||
msgstr "נהל את החשבון וההעדפות שלך"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Manual"
|
||||
@@ -2059,6 +2071,7 @@ msgid "Movie"
|
||||
msgstr "סרט"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/web/src/components/people/filmography-grid.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -2225,6 +2238,10 @@ msgstr "אין כותרות התואמות למסננים"
|
||||
msgid "No upcoming episodes or releases in the next 90 days."
|
||||
msgstr "אין פרקים או יציאות קרובות ב-90 הימים הקרובים."
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "No watches yet."
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/system-health-section.tsx
|
||||
@@ -2436,6 +2453,7 @@ msgstr "אנא אשר את הסיסמה שלך"
|
||||
msgid "Please sign in again."
|
||||
msgstr "אנא התחבר שוב."
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Plex"
|
||||
@@ -2829,6 +2847,7 @@ msgstr "מאחזר את היסטוריית הצפייה, רשימת הצפייה
|
||||
#: apps/native/src/app/(auth)/register.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
@@ -2859,10 +2878,12 @@ msgstr "הפעל עכשיו"
|
||||
#~ msgid "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
#~ msgstr "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode}"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode} · {name}"
|
||||
msgstr ""
|
||||
@@ -3156,6 +3177,7 @@ msgstr "Sofa יתעד אוטומטית סרטים ופרקים כשתסיים ל
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
@@ -3514,6 +3536,7 @@ msgid "tv"
|
||||
msgstr "טלוויזיה"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
|
||||
@@ -373,6 +373,7 @@ msgid "age {age}"
|
||||
msgstr "età {age}"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
@@ -878,6 +879,10 @@ msgstr ""
|
||||
msgid "Couldn't load your library"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "Couldn't load your watch history"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
msgid "Couldn't search right now"
|
||||
msgstr ""
|
||||
@@ -1097,6 +1102,7 @@ msgstr ""
|
||||
msgid "Email is required"
|
||||
msgstr "L'email è obbligatoria"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Emby"
|
||||
@@ -1580,8 +1586,11 @@ msgstr "Meglio valutati"
|
||||
msgid "Hindi"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/_layout.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/web/src/components/nav-bar.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
#: apps/web/src/routes/_app/library.tsx
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
|
||||
@@ -1605,6 +1614,7 @@ msgstr "Cache immagini"
|
||||
msgid "Image cache and backup disk usage"
|
||||
msgstr "Utilizzo disco: cache immagini e backup"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
@@ -1734,6 +1744,7 @@ msgstr "Italiano"
|
||||
msgid "Japanese"
|
||||
msgstr "Giapponese"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Jellyfin"
|
||||
@@ -1864,6 +1875,7 @@ msgstr "Connessione all'importazione persa. Controlla lo stato nelle impostazion
|
||||
msgid "Manage your account and preferences"
|
||||
msgstr "Gestisci il tuo account e le tue preferenze"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Manual"
|
||||
@@ -2059,6 +2071,7 @@ msgid "Movie"
|
||||
msgstr "Film"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/web/src/components/people/filmography-grid.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -2225,6 +2238,10 @@ msgstr "Nessun titolo corrisponde ai tuoi filtri"
|
||||
msgid "No upcoming episodes or releases in the next 90 days."
|
||||
msgstr "Nessun episodio o uscita in arrivo nei prossimi 90 giorni."
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "No watches yet."
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/system-health-section.tsx
|
||||
@@ -2436,6 +2453,7 @@ msgstr "Conferma la tua password"
|
||||
msgid "Please sign in again."
|
||||
msgstr "Accedi di nuovo."
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Plex"
|
||||
@@ -2829,6 +2847,7 @@ msgstr "Recupero della cronologia, watchlist e valutazioni..."
|
||||
#: apps/native/src/app/(auth)/register.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
@@ -2859,10 +2878,12 @@ msgstr "Esegui ora"
|
||||
#~ msgid "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
#~ msgstr "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode}"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode} · {name}"
|
||||
msgstr ""
|
||||
@@ -3156,6 +3177,7 @@ msgstr "Sofa registrerà automaticamente film ed episodi quando finisci di guard
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
@@ -3514,6 +3536,7 @@ msgid "tv"
|
||||
msgstr "serie tv"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
|
||||
@@ -373,6 +373,7 @@ msgid "age {age}"
|
||||
msgstr "年齢 {age}"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
@@ -878,6 +879,10 @@ msgstr ""
|
||||
msgid "Couldn't load your library"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "Couldn't load your watch history"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
msgid "Couldn't search right now"
|
||||
msgstr ""
|
||||
@@ -1097,6 +1102,7 @@ msgstr "メールアドレス"
|
||||
msgid "Email is required"
|
||||
msgstr "メールアドレスは必須です"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Emby"
|
||||
@@ -1580,8 +1586,11 @@ msgstr "評価が高い順"
|
||||
msgid "Hindi"
|
||||
msgstr "ヒンディー語"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/_layout.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/web/src/components/nav-bar.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
#: apps/web/src/routes/_app/library.tsx
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
|
||||
@@ -1605,6 +1614,7 @@ msgstr "画像キャッシュ"
|
||||
msgid "Image cache and backup disk usage"
|
||||
msgstr "画像キャッシュとバックアップのディスク使用量"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
@@ -1734,6 +1744,7 @@ msgstr "イタリア語"
|
||||
msgid "Japanese"
|
||||
msgstr "日本語"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Jellyfin"
|
||||
@@ -1864,6 +1875,7 @@ msgstr "インポートへの接続が切断されました。設定でステー
|
||||
msgid "Manage your account and preferences"
|
||||
msgstr "アカウントと設定を管理する"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Manual"
|
||||
@@ -2059,6 +2071,7 @@ msgid "Movie"
|
||||
msgstr "映画"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/web/src/components/people/filmography-grid.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -2225,6 +2238,10 @@ msgstr "フィルターに一致するタイトルがありません"
|
||||
msgid "No upcoming episodes or releases in the next 90 days."
|
||||
msgstr "今後90日間に予定されているエピソードやリリースはありません。"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "No watches yet."
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/system-health-section.tsx
|
||||
@@ -2436,6 +2453,7 @@ msgstr "パスワードを確認してください"
|
||||
msgid "Please sign in again."
|
||||
msgstr "再度サインインしてください。"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Plex"
|
||||
@@ -2829,6 +2847,7 @@ msgstr "視聴履歴、ウォッチリスト、評価を取得中..."
|
||||
#: apps/native/src/app/(auth)/register.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
@@ -2859,10 +2878,12 @@ msgstr "今すぐ実行"
|
||||
#~ msgid "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
#~ msgstr "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode}"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode} · {name}"
|
||||
msgstr ""
|
||||
@@ -3156,6 +3177,7 @@ msgstr "視聴完了後、Sofaが自動的に映画やエピソードを記録
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
@@ -3514,6 +3536,7 @@ msgid "tv"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
|
||||
@@ -373,6 +373,7 @@ msgid "age {age}"
|
||||
msgstr "나이 {age}"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
@@ -878,6 +879,10 @@ msgstr ""
|
||||
msgid "Couldn't load your library"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "Couldn't load your watch history"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
msgid "Couldn't search right now"
|
||||
msgstr ""
|
||||
@@ -1097,6 +1102,7 @@ msgstr "이메일"
|
||||
msgid "Email is required"
|
||||
msgstr "이메일을 입력해주세요"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Emby"
|
||||
@@ -1580,8 +1586,11 @@ msgstr "평점 높은 순"
|
||||
msgid "Hindi"
|
||||
msgstr "힌디어"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/_layout.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/web/src/components/nav-bar.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
#: apps/web/src/routes/_app/library.tsx
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
|
||||
@@ -1605,6 +1614,7 @@ msgstr "이미지 캐시"
|
||||
msgid "Image cache and backup disk usage"
|
||||
msgstr "이미지 캐시 및 백업 디스크 사용량"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
@@ -1734,6 +1744,7 @@ msgstr "이탈리아어"
|
||||
msgid "Japanese"
|
||||
msgstr "일본어"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Jellyfin"
|
||||
@@ -1864,6 +1875,7 @@ msgstr "가져오기 연결이 끊어졌습니다. 설정에서 상태를 확인
|
||||
msgid "Manage your account and preferences"
|
||||
msgstr "계정 및 환경설정을 관리하세요"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Manual"
|
||||
@@ -2059,6 +2071,7 @@ msgid "Movie"
|
||||
msgstr "영화"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/web/src/components/people/filmography-grid.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -2225,6 +2238,10 @@ msgstr "필터에 맞는 제목이 없습니다"
|
||||
msgid "No upcoming episodes or releases in the next 90 days."
|
||||
msgstr "향후 90일 이내 예정된 에피소드 또는 출시가 없습니다."
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "No watches yet."
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/system-health-section.tsx
|
||||
@@ -2436,6 +2453,7 @@ msgstr "비밀번호를 확인해주세요"
|
||||
msgid "Please sign in again."
|
||||
msgstr "다시 로그인해주세요."
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Plex"
|
||||
@@ -2829,6 +2847,7 @@ msgstr "시청 기록, 시청 목록, 평점을 가져오는 중..."
|
||||
#: apps/native/src/app/(auth)/register.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
@@ -2859,10 +2878,12 @@ msgstr "지금 실행"
|
||||
#~ msgid "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
#~ msgstr "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode}"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode} · {name}"
|
||||
msgstr ""
|
||||
@@ -3156,6 +3177,7 @@ msgstr "시청을 완료하면 Sofa가 자동으로 영화와 에피소드를
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
@@ -3514,6 +3536,7 @@ msgid "tv"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
|
||||
@@ -373,6 +373,7 @@ msgid "age {age}"
|
||||
msgstr "leeftijd {age}"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
@@ -878,6 +879,10 @@ msgstr ""
|
||||
msgid "Couldn't load your library"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "Couldn't load your watch history"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
msgid "Couldn't search right now"
|
||||
msgstr ""
|
||||
@@ -1097,6 +1102,7 @@ msgstr "E-mail"
|
||||
msgid "Email is required"
|
||||
msgstr "E-mail is vereist"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Emby"
|
||||
@@ -1580,8 +1586,11 @@ msgstr "Hoogst beoordeeld"
|
||||
msgid "Hindi"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/_layout.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/web/src/components/nav-bar.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
#: apps/web/src/routes/_app/library.tsx
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
|
||||
@@ -1605,6 +1614,7 @@ msgstr "Afbeeldingscache"
|
||||
msgid "Image cache and backup disk usage"
|
||||
msgstr "Schijfgebruik voor afbeeldingscache en back-ups"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
@@ -1734,6 +1744,7 @@ msgstr "Italiaans"
|
||||
msgid "Japanese"
|
||||
msgstr "Japans"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Jellyfin"
|
||||
@@ -1864,6 +1875,7 @@ msgstr "Verbinding met de import verbroken. Controleer de status in de instellin
|
||||
msgid "Manage your account and preferences"
|
||||
msgstr "Beheer je account en voorkeuren"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Manual"
|
||||
@@ -2059,6 +2071,7 @@ msgid "Movie"
|
||||
msgstr "Film"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/web/src/components/people/filmography-grid.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -2225,6 +2238,10 @@ msgstr "Geen titels komen overeen met je filters"
|
||||
msgid "No upcoming episodes or releases in the next 90 days."
|
||||
msgstr "Geen aankomende afleveringen of releases in de komende 90 dagen."
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "No watches yet."
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/system-health-section.tsx
|
||||
@@ -2436,6 +2453,7 @@ msgstr "Bevestig je wachtwoord"
|
||||
msgid "Please sign in again."
|
||||
msgstr "Meld je opnieuw aan."
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Plex"
|
||||
@@ -2829,6 +2847,7 @@ msgstr "Kijkgeschiedenis, watchlist en beoordelingen ophalen..."
|
||||
#: apps/native/src/app/(auth)/register.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
@@ -2859,10 +2878,12 @@ msgstr "Nu uitvoeren"
|
||||
#~ msgid "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
#~ msgstr "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode}"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode} · {name}"
|
||||
msgstr ""
|
||||
@@ -3156,6 +3177,7 @@ msgstr "Sofa registreert automatisch films en afleveringen wanneer je klaar bent
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
@@ -3514,6 +3536,7 @@ msgid "tv"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
|
||||
@@ -373,6 +373,7 @@ msgid "age {age}"
|
||||
msgstr "idade {age}"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
@@ -878,6 +879,10 @@ msgstr ""
|
||||
msgid "Couldn't load your library"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "Couldn't load your watch history"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
msgid "Couldn't search right now"
|
||||
msgstr ""
|
||||
@@ -1097,6 +1102,7 @@ msgstr "E-mail"
|
||||
msgid "Email is required"
|
||||
msgstr "O email é obrigatório"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Emby"
|
||||
@@ -1580,8 +1586,11 @@ msgstr "Melhor avaliados"
|
||||
msgid "Hindi"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/_layout.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/web/src/components/nav-bar.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
#: apps/web/src/routes/_app/library.tsx
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
|
||||
@@ -1605,6 +1614,7 @@ msgstr "Cache de imagens"
|
||||
msgid "Image cache and backup disk usage"
|
||||
msgstr "Uso de disco de cache de imagens e backups"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
@@ -1734,6 +1744,7 @@ msgstr "Italiano"
|
||||
msgid "Japanese"
|
||||
msgstr "Japonês"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Jellyfin"
|
||||
@@ -1864,6 +1875,7 @@ msgstr "Conexão de importação perdida. Verifique o status nas configurações
|
||||
msgid "Manage your account and preferences"
|
||||
msgstr "Gerencie sua conta e preferências"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Manual"
|
||||
@@ -2059,6 +2071,7 @@ msgid "Movie"
|
||||
msgstr "Filme"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/web/src/components/people/filmography-grid.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -2225,6 +2238,10 @@ msgstr "Nenhum título corresponde aos seus filtros"
|
||||
msgid "No upcoming episodes or releases in the next 90 days."
|
||||
msgstr "Sem episódios ou lançamentos nos próximos 90 dias."
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "No watches yet."
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/system-health-section.tsx
|
||||
@@ -2436,6 +2453,7 @@ msgstr "Por favor confirme a sua palavra-passe"
|
||||
msgid "Please sign in again."
|
||||
msgstr "Por favor inicie sessão novamente."
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Plex"
|
||||
@@ -2829,6 +2847,7 @@ msgstr "Buscando seu histórico de exibição, lista de desejos e avaliações..
|
||||
#: apps/native/src/app/(auth)/register.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
@@ -2859,10 +2878,12 @@ msgstr "Executar agora"
|
||||
#~ msgid "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
#~ msgstr "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode}"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode} · {name}"
|
||||
msgstr ""
|
||||
@@ -3156,6 +3177,7 @@ msgstr "O Sofa registrará automaticamente filmes e episódios quando você term
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
@@ -3514,6 +3536,7 @@ msgid "tv"
|
||||
msgstr "série"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
|
||||
@@ -373,6 +373,7 @@ msgid "age {age}"
|
||||
msgstr "{age} 岁"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
@@ -878,6 +879,10 @@ msgstr ""
|
||||
msgid "Couldn't load your library"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "Couldn't load your watch history"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
msgid "Couldn't search right now"
|
||||
msgstr ""
|
||||
@@ -1097,6 +1102,7 @@ msgstr "邮箱"
|
||||
msgid "Email is required"
|
||||
msgstr "邮箱不能为空"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Emby"
|
||||
@@ -1580,8 +1586,11 @@ msgstr "评分最高"
|
||||
msgid "Hindi"
|
||||
msgstr "印地语"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/_layout.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/web/src/components/nav-bar.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
#: apps/web/src/routes/_app/library.tsx
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
|
||||
@@ -1605,6 +1614,7 @@ msgstr "图片缓存"
|
||||
msgid "Image cache and backup disk usage"
|
||||
msgstr "图片缓存与备份磁盘用量"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
@@ -1734,6 +1744,7 @@ msgstr "意大利语"
|
||||
msgid "Japanese"
|
||||
msgstr "日语"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Jellyfin"
|
||||
@@ -1864,6 +1875,7 @@ msgstr "导入连接已断开,请在设置中查看状态。"
|
||||
msgid "Manage your account and preferences"
|
||||
msgstr "管理您的账户和偏好设置"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Manual"
|
||||
@@ -2059,6 +2071,7 @@ msgid "Movie"
|
||||
msgstr "电影"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/web/src/components/people/filmography-grid.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -2225,6 +2238,10 @@ msgstr "没有标题符合您的筛选条件"
|
||||
msgid "No upcoming episodes or releases in the next 90 days."
|
||||
msgstr "未来 90 天内没有即将播出的剧集或上映的影片。"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
msgid "No watches yet."
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/integration-card.tsx
|
||||
#: apps/web/src/components/settings/system-health-section.tsx
|
||||
@@ -2436,6 +2453,7 @@ msgstr "请确认您的密码"
|
||||
msgid "Please sign in again."
|
||||
msgstr "请重新登录。"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
#: apps/web/src/routes/_app/history.tsx
|
||||
msgid "Plex"
|
||||
@@ -2829,6 +2847,7 @@ msgstr "正在获取您的观看记录、观看列表和评分..."
|
||||
#: apps/native/src/app/(auth)/register.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/components/explore/filterable-title-row.tsx
|
||||
@@ -2859,10 +2878,12 @@ msgstr "立即运行"
|
||||
#~ msgid "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
#~ msgstr "S{0} · {1} {2, plural, one {episode} other {episodes}}"
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode}"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/history/history-row.tsx
|
||||
#: apps/web/src/components/history/history-row.tsx
|
||||
msgid "S{season} E{episode} · {name}"
|
||||
msgstr ""
|
||||
@@ -3156,6 +3177,7 @@ msgstr "当您看完电影或剧集时,Sofa 将自动记录"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/(tabs)/(search)/index.tsx
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
@@ -3514,6 +3536,7 @@ msgid "tv"
|
||||
msgstr "电视剧"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(home)/upcoming.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/history.tsx
|
||||
#: apps/native/src/app/(tabs)/(library)/index.tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/library/filter-sheet.tsx
|
||||
|
||||
Reference in new issue
Block a user