mirror of
https://github.com/jakejarvis/sofa.git
synced 2026-10-15 19:45:42 -04:00
fix(native): recover from render errors and let Close leave deep-linked titles
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
15 files changed
+201
-6
No files matched your search
@@ -12,7 +12,7 @@ import { ThemeProvider } from "expo-router/react-navigation";
|
||||
import * as SplashScreen from "expo-splash-screen";
|
||||
import { StatusBar } from "expo-status-bar";
|
||||
import * as Updates from "expo-updates";
|
||||
import { PostHogErrorBoundary, PostHogProvider } from "posthog-react-native";
|
||||
import { PostHogProvider } from "posthog-react-native";
|
||||
import { useEffect, useRef, useState, useSyncExternalStore } from "react";
|
||||
import { GestureHandlerRootView } from "react-native-gesture-handler";
|
||||
import { KeyboardProvider } from "react-native-keyboard-controller";
|
||||
@@ -20,6 +20,7 @@ import { SafeAreaProvider } from "react-native-safe-area-context";
|
||||
import { enableFreeze } from "react-native-screens";
|
||||
import { Uniwind, useResolveClassNames } from "uniwind";
|
||||
|
||||
import { RootErrorFallback } from "@/components/root-error-fallback";
|
||||
import { OfflineBanner } from "@/components/ui/offline-banner";
|
||||
import { ServerUnreachableBanner } from "@/components/ui/server-unreachable-banner";
|
||||
import { useFollowDeviceLocale } from "@/hooks/use-follow-device-locale";
|
||||
@@ -221,11 +222,22 @@ function RootLayout() {
|
||||
</I18nProvider>
|
||||
);
|
||||
|
||||
if (!posthog) return inner;
|
||||
const guarded = (
|
||||
<Sentry.ErrorBoundary
|
||||
fallback={({ resetError }) => <RootErrorFallback resetError={resetError} />}
|
||||
onError={(error) => {
|
||||
posthog?.captureException(error, { source: "error-boundary" });
|
||||
}}
|
||||
>
|
||||
{inner}
|
||||
</Sentry.ErrorBoundary>
|
||||
);
|
||||
|
||||
if (!posthog) return guarded;
|
||||
|
||||
return (
|
||||
<PostHogProvider client={posthog} autocapture={{ captureScreens: false }}>
|
||||
<PostHogErrorBoundary>{inner}</PostHogErrorBoundary>
|
||||
{guarded}
|
||||
</PostHogProvider>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -12,7 +12,14 @@ import { useSafeAreaInsets } from "react-native-safe-area-context";
|
||||
* - Android: floating close button with safe-area offset
|
||||
*/
|
||||
export function ModalLayout({ children }: { children: ReactNode }) {
|
||||
const { dismissAll } = useRouter();
|
||||
const router = useRouter();
|
||||
const close = () => {
|
||||
if (router.canDismiss()) {
|
||||
router.dismissAll();
|
||||
} else {
|
||||
router.replace("/");
|
||||
}
|
||||
};
|
||||
const { t } = useLingui();
|
||||
const insets = useSafeAreaInsets();
|
||||
|
||||
@@ -21,7 +28,7 @@ export function ModalLayout({ children }: { children: ReactNode }) {
|
||||
<Stack.Header hidden={process.env.EXPO_OS !== "ios"} transparent blurEffect="none" />
|
||||
{process.env.EXPO_OS === "ios" && (
|
||||
<Stack.Toolbar placement="right">
|
||||
<Stack.Toolbar.Button onPress={() => dismissAll()}>
|
||||
<Stack.Toolbar.Button onPress={close}>
|
||||
<Stack.Toolbar.Icon sf="xmark" />
|
||||
<Stack.Toolbar.Label>{t`Close`}</Stack.Toolbar.Label>
|
||||
</Stack.Toolbar.Button>
|
||||
@@ -33,7 +40,7 @@ export function ModalLayout({ children }: { children: ReactNode }) {
|
||||
|
||||
{process.env.EXPO_OS !== "ios" && (
|
||||
<Pressable
|
||||
onPress={() => dismissAll()}
|
||||
onPress={close}
|
||||
accessibilityRole="button"
|
||||
accessibilityLabel={t`Close`}
|
||||
hitSlop={8}
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
import { msg } from "@lingui/core/macro";
|
||||
import { reloadAppAsync } from "expo";
|
||||
import * as SplashScreen from "expo-splash-screen";
|
||||
import { useEffect } from "react";
|
||||
import { Pressable, StyleSheet, Text, View } from "react-native";
|
||||
|
||||
import { i18n } from "@sofa/i18n";
|
||||
|
||||
/**
|
||||
* Rendered by the app-wide error boundary, outside every provider — so it uses
|
||||
* only react-native primitives and literal colors.
|
||||
*/
|
||||
export function RootErrorFallback({ resetError }: { resetError: () => void }) {
|
||||
useEffect(() => {
|
||||
void SplashScreen.hideAsync();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<Text style={styles.title}>{i18n._(msg`Something went wrong`)}</Text>
|
||||
<Text style={styles.body}>{i18n._(msg`Sofa hit an unexpected error.`)}</Text>
|
||||
<Pressable accessibilityRole="button" onPress={resetError} style={styles.button}>
|
||||
<Text style={styles.buttonLabel}>{i18n._(msg`Try again`)}</Text>
|
||||
</Pressable>
|
||||
<Pressable
|
||||
accessibilityRole="button"
|
||||
onPress={() => void reloadAppAsync()}
|
||||
style={styles.button}
|
||||
>
|
||||
<Text style={styles.buttonLabel}>{i18n._(msg`Restart app`)}</Text>
|
||||
</Pressable>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
container: {
|
||||
flex: 1,
|
||||
alignItems: "center",
|
||||
justifyContent: "center",
|
||||
gap: 12,
|
||||
padding: 24,
|
||||
backgroundColor: "#101010",
|
||||
},
|
||||
title: { color: "#ffffff", fontSize: 20, fontWeight: "600", textAlign: "center" },
|
||||
body: { color: "#a1a1a1", fontSize: 15, textAlign: "center", marginBottom: 12 },
|
||||
button: {
|
||||
minWidth: 180,
|
||||
alignItems: "center",
|
||||
paddingVertical: 12,
|
||||
paddingHorizontal: 20,
|
||||
borderRadius: 10,
|
||||
backgroundColor: "#fba952",
|
||||
},
|
||||
buttonLabel: { color: "#1a1208", fontSize: 16, fontWeight: "600" },
|
||||
});
|
||||
@@ -2714,6 +2714,10 @@ msgstr "يتطلب Emby Server 4.7.9+ وترخيصاً نشطاً لـ Emby Prem
|
||||
#~ msgid "Restart"
|
||||
#~ msgstr "إعادة التشغيل"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Restart app"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Restart Required"
|
||||
#~ msgstr "إعادة التشغيل مطلوبة"
|
||||
@@ -3041,6 +3045,10 @@ msgstr "تخطي في الوقت الحالي"
|
||||
msgid "Skipped"
|
||||
msgstr "تم التخطي"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Sofa hit an unexpected error."
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Sofa needs to restart to apply the new layout direction."
|
||||
#~ msgstr "يحتاج Sofa إلى إعادة التشغيل لتطبيق اتجاه التخطيط الجديد."
|
||||
@@ -3069,6 +3077,7 @@ msgstr "سيقوم Sofa تلقائياً بتسجيل الأفلام والحل
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
#: apps/native/src/app/person/[id].tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/auth-form.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -3406,6 +3415,7 @@ msgid "Try adjusting your filters"
|
||||
msgstr "حاول تعديل الفلاتر"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/routes/__root.tsx
|
||||
msgid "Try again"
|
||||
|
||||
@@ -2714,6 +2714,10 @@ msgstr "Erfordert Emby Server 4.7.9+ und eine aktive Emby Premiere-Lizenz."
|
||||
#~ msgid "Restart"
|
||||
#~ msgstr "Neu starten"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Restart app"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Restart Required"
|
||||
#~ msgstr "Neustart erforderlich"
|
||||
@@ -3041,6 +3045,10 @@ msgstr "Vorerst überspringen"
|
||||
msgid "Skipped"
|
||||
msgstr "Übersprungen"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Sofa hit an unexpected error."
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Sofa needs to restart to apply the new layout direction."
|
||||
#~ msgstr "Sofa muss neu gestartet werden, um die neue Layoutrichtung anzuwenden."
|
||||
@@ -3069,6 +3077,7 @@ msgstr "Sofa protokolliert Filme und Episoden automatisch, wenn du sie zu Ende g
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
#: apps/native/src/app/person/[id].tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/auth-form.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -3406,6 +3415,7 @@ msgid "Try adjusting your filters"
|
||||
msgstr "Passe deine Filter an"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/routes/__root.tsx
|
||||
msgid "Try again"
|
||||
|
||||
@@ -2714,6 +2714,10 @@ msgstr ""
|
||||
#~ msgid "Restart"
|
||||
#~ msgstr "Restart"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Restart app"
|
||||
msgstr "Restart app"
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Restart Required"
|
||||
#~ msgstr "Restart Required"
|
||||
@@ -3041,6 +3045,10 @@ msgstr "Skip for now"
|
||||
msgid "Skipped"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Sofa hit an unexpected error."
|
||||
msgstr "Sofa hit an unexpected error."
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Sofa needs to restart to apply the new layout direction."
|
||||
#~ msgstr "Sofa needs to restart to apply the new layout direction."
|
||||
@@ -3069,6 +3077,7 @@ msgstr ""
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
#: apps/native/src/app/person/[id].tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/auth-form.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -3406,6 +3415,7 @@ msgid "Try adjusting your filters"
|
||||
msgstr "Try adjusting your filters"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/routes/__root.tsx
|
||||
msgid "Try again"
|
||||
|
||||
@@ -2714,6 +2714,10 @@ msgstr "Requiere Emby Server 4.7.9+ y una licencia activa de Emby Premiere."
|
||||
#~ msgid "Restart"
|
||||
#~ msgstr "Reiniciar"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Restart app"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Restart Required"
|
||||
#~ msgstr "Reinicio requerido"
|
||||
@@ -3041,6 +3045,10 @@ msgstr "Omitir por ahora"
|
||||
msgid "Skipped"
|
||||
msgstr "Omitido"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Sofa hit an unexpected error."
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Sofa needs to restart to apply the new layout direction."
|
||||
#~ msgstr "Sofa necesita reiniciarse para aplicar la nueva dirección del diseño."
|
||||
@@ -3069,6 +3077,7 @@ msgstr "Sofa registrará automáticamente películas y episodios cuando termines
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
#: apps/native/src/app/person/[id].tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/auth-form.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -3406,6 +3415,7 @@ msgid "Try adjusting your filters"
|
||||
msgstr "Prueba a ajustar tus filtros"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/routes/__root.tsx
|
||||
msgid "Try again"
|
||||
|
||||
@@ -2714,6 +2714,10 @@ msgstr "Nécessite Emby Server 4.7.9+ et une licence Emby Premiere active."
|
||||
#~ msgid "Restart"
|
||||
#~ msgstr "Redémarrer"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Restart app"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Restart Required"
|
||||
#~ msgstr "Redémarrage requis"
|
||||
@@ -3041,6 +3045,10 @@ msgstr "Passer pour l'instant"
|
||||
msgid "Skipped"
|
||||
msgstr "Ignoré"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Sofa hit an unexpected error."
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Sofa needs to restart to apply the new layout direction."
|
||||
#~ msgstr "Sofa doit redémarrer pour appliquer la nouvelle direction de mise en page."
|
||||
@@ -3069,6 +3077,7 @@ msgstr "Sofa enregistrera automatiquement les films et épisodes lorsque vous au
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
#: apps/native/src/app/person/[id].tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/auth-form.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -3406,6 +3415,7 @@ msgid "Try adjusting your filters"
|
||||
msgstr "Essayez d'ajuster vos filtres"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/routes/__root.tsx
|
||||
msgid "Try again"
|
||||
|
||||
@@ -2714,6 +2714,10 @@ msgstr "דורש Emby Server 4.7.9+ ורישיון Emby Premiere פעיל."
|
||||
#~ msgid "Restart"
|
||||
#~ msgstr "הפעל מחדש"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Restart app"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Restart Required"
|
||||
#~ msgstr "נדרשת הפעלה מחדש"
|
||||
@@ -3041,6 +3045,10 @@ msgstr "דלג לעת עתה"
|
||||
msgid "Skipped"
|
||||
msgstr "דולג"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Sofa hit an unexpected error."
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Sofa needs to restart to apply the new layout direction."
|
||||
#~ msgstr "יש להפעיל מחדש את Sofa כדי להחיל את כיוון הפריסה החדש."
|
||||
@@ -3069,6 +3077,7 @@ msgstr "Sofa יתעד אוטומטית סרטים ופרקים כשתסיים ל
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
#: apps/native/src/app/person/[id].tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/auth-form.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -3406,6 +3415,7 @@ msgid "Try adjusting your filters"
|
||||
msgstr "נסה לשנות את המסננים"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/routes/__root.tsx
|
||||
msgid "Try again"
|
||||
|
||||
@@ -2714,6 +2714,10 @@ msgstr "Richiede Emby Server 4.7.9+ e una licenza Emby Premiere attiva."
|
||||
#~ msgid "Restart"
|
||||
#~ msgstr "Riavvia"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Restart app"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Restart Required"
|
||||
#~ msgstr "Riavvio necessario"
|
||||
@@ -3041,6 +3045,10 @@ msgstr "Salta per ora"
|
||||
msgid "Skipped"
|
||||
msgstr "Ignorati"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Sofa hit an unexpected error."
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Sofa needs to restart to apply the new layout direction."
|
||||
#~ msgstr "Sofa deve essere riavviato per applicare la nuova direzione del layout."
|
||||
@@ -3069,6 +3077,7 @@ msgstr "Sofa registrerà automaticamente film ed episodi quando finisci di guard
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
#: apps/native/src/app/person/[id].tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/auth-form.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -3406,6 +3415,7 @@ msgid "Try adjusting your filters"
|
||||
msgstr "Prova a modificare i filtri"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/routes/__root.tsx
|
||||
msgid "Try again"
|
||||
|
||||
@@ -2714,6 +2714,10 @@ msgstr "Emby Server 4.7.9+と有効なEmby Premiereライセンスが必要で
|
||||
#~ msgid "Restart"
|
||||
#~ msgstr "再起動"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Restart app"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Restart Required"
|
||||
#~ msgstr "再起動が必要です"
|
||||
@@ -3041,6 +3045,10 @@ msgstr "今はスキップ"
|
||||
msgid "Skipped"
|
||||
msgstr "スキップ済み"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Sofa hit an unexpected error."
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Sofa needs to restart to apply the new layout direction."
|
||||
#~ msgstr "Sofaは新しいレイアウト方向を適用するために再起動が必要です。"
|
||||
@@ -3069,6 +3077,7 @@ msgstr "視聴完了後、Sofaが自動的に映画やエピソードを記録
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
#: apps/native/src/app/person/[id].tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/auth-form.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -3406,6 +3415,7 @@ msgid "Try adjusting your filters"
|
||||
msgstr "フィルターを調整してみてください"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/routes/__root.tsx
|
||||
msgid "Try again"
|
||||
|
||||
@@ -2714,6 +2714,10 @@ msgstr "Emby Server 4.7.9+ 및 활성 Emby Premiere 라이선스가 필요합니
|
||||
#~ msgid "Restart"
|
||||
#~ msgstr "재시작"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Restart app"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Restart Required"
|
||||
#~ msgstr "재시작 필요"
|
||||
@@ -3041,6 +3045,10 @@ msgstr "지금은 건너뛰기"
|
||||
msgid "Skipped"
|
||||
msgstr "건너뜀"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Sofa hit an unexpected error."
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Sofa needs to restart to apply the new layout direction."
|
||||
#~ msgstr "Sofa를 재시작해야 새 레이아웃 방향이 적용됩니다."
|
||||
@@ -3069,6 +3077,7 @@ msgstr "시청을 완료하면 Sofa가 자동으로 영화와 에피소드를
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
#: apps/native/src/app/person/[id].tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/auth-form.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -3406,6 +3415,7 @@ msgid "Try adjusting your filters"
|
||||
msgstr "필터를 조정해 보세요"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/routes/__root.tsx
|
||||
msgid "Try again"
|
||||
|
||||
@@ -2714,6 +2714,10 @@ msgstr "Vereist Emby Server 4.7.9+ en een actieve Emby Premiere-licentie."
|
||||
#~ msgid "Restart"
|
||||
#~ msgstr "Herstarten"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Restart app"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Restart Required"
|
||||
#~ msgstr "Herstart vereist"
|
||||
@@ -3041,6 +3045,10 @@ msgstr "Nu overslaan"
|
||||
msgid "Skipped"
|
||||
msgstr "Overgeslagen"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Sofa hit an unexpected error."
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Sofa needs to restart to apply the new layout direction."
|
||||
#~ msgstr "Sofa moet herstarten om de nieuwe lay-outrichting toe te passen."
|
||||
@@ -3069,6 +3077,7 @@ msgstr "Sofa registreert automatisch films en afleveringen wanneer je klaar bent
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
#: apps/native/src/app/person/[id].tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/auth-form.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -3406,6 +3415,7 @@ msgid "Try adjusting your filters"
|
||||
msgstr "Probeer je filters aan te passen"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/routes/__root.tsx
|
||||
msgid "Try again"
|
||||
|
||||
@@ -2714,6 +2714,10 @@ msgstr "Requer Emby Server 4.7.9+ e uma licença ativa do Emby Premiere."
|
||||
#~ msgid "Restart"
|
||||
#~ msgstr "Reiniciar"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Restart app"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Restart Required"
|
||||
#~ msgstr "Reinício Necessário"
|
||||
@@ -3041,6 +3045,10 @@ msgstr "Ignorar por agora"
|
||||
msgid "Skipped"
|
||||
msgstr "Ignorado"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Sofa hit an unexpected error."
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Sofa needs to restart to apply the new layout direction."
|
||||
#~ msgstr "O Sofa precisa de reiniciar para aplicar a nova direção do layout."
|
||||
@@ -3069,6 +3077,7 @@ msgstr "O Sofa registrará automaticamente filmes e episódios quando você term
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
#: apps/native/src/app/person/[id].tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/auth-form.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -3406,6 +3415,7 @@ msgid "Try adjusting your filters"
|
||||
msgstr "Tente ajustar os seus filtros"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/routes/__root.tsx
|
||||
msgid "Try again"
|
||||
|
||||
@@ -2714,6 +2714,10 @@ msgstr "需要 Emby Server 4.7.9+ 以及有效的 Emby Premiere 授权。"
|
||||
#~ msgid "Restart"
|
||||
#~ msgstr "重启"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Restart app"
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Restart Required"
|
||||
#~ msgstr "需要重启"
|
||||
@@ -3041,6 +3045,10 @@ msgstr "暂时跳过"
|
||||
msgid "Skipped"
|
||||
msgstr "已跳过"
|
||||
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
msgid "Sofa hit an unexpected error."
|
||||
msgstr ""
|
||||
|
||||
#: apps/native/src/app/(tabs)/(settings)/index.tsx
|
||||
#~ msgid "Sofa needs to restart to apply the new layout direction."
|
||||
#~ msgstr "Sofa 需要重启以应用新的布局方向。"
|
||||
@@ -3069,6 +3077,7 @@ msgstr "当您看完电影或剧集时,Sofa 将自动记录"
|
||||
#: apps/native/src/app/change-password.tsx
|
||||
#: apps/native/src/app/person/[id].tsx
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/auth-form.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/components/settings/account-section.tsx
|
||||
@@ -3406,6 +3415,7 @@ msgid "Try adjusting your filters"
|
||||
msgstr "请尝试调整筛选条件"
|
||||
|
||||
#: apps/native/src/app/title/[id].tsx
|
||||
#: apps/native/src/components/root-error-fallback.tsx
|
||||
#: apps/web/src/components/route-error.tsx
|
||||
#: apps/web/src/routes/__root.tsx
|
||||
msgid "Try again"
|
||||
|
||||
Reference in new issue
Block a user