added "simk" harcodings to locales

This commit is contained in:
tapframe 2026-01-18 14:26:23 +05:30
parent 4a61136690
commit 3e30048c03
10 changed files with 212 additions and 18 deletions

View file

@ -522,6 +522,27 @@
"sync_success_msg": "تمت مزامنة تقدم المشاهدة مع Trakt بنجاح.",
"sync_error_msg": "فشلت المزامنة. يرجى المحاولة مرة أخرى."
},
"simkl": {
"title": "إعدادات Simkl",
"settings_title": "إعدادات Simkl",
"connect_title": "الاتصال بـ Simkl",
"connect_desc": "زامن تاريخ مشاهدتك وتتبع ما تشاهده",
"sign_in": "تسجيل الدخول بـ Simkl",
"sign_out": "قطع الاتصال",
"sign_out_confirm": "هل أنت متأكد من أنك تريد قطع الاتصال من Simkl؟",
"syncing_desc": "عناصرك المشاهدة تتم مزامنتها مع Simkl.",
"auth_success_title": "تم الاتصال بنجاح",
"auth_success_msg": "تم ربط حساب Simkl الخاص بك بنجاح.",
"auth_error_title": "خطأ في المصادقة",
"auth_error_msg": "فشل في إكمال المصادقة مع Simkl.",
"auth_error_generic": "حدث خطأ أثناء المصادقة.",
"sign_out_error": "فشل في قطع الاتصال من Simkl.",
"config_error_title": "خطأ في التكوين",
"config_error_msg": "معرف عميل Simkl مفقود في متغيرات البيئة.",
"conflict_title": "تعارض",
"conflict_msg": "لا يمكنك ربط Simkl بينما Trakt متصل. يرجى قطع اتصال Trakt أولاً.",
"disclaimer": "Nuvio غير مرتبط بشركة Simkl."
},
"tmdb_settings": {
"title": "إعدادات TMDb",
"metadata_enrichment": "إثراء البيانات التعريفية",
@ -675,6 +696,9 @@
"mdblist": "MDBList",
"mdblist_connected": "متصل",
"mdblist_desc": "تفعيل لإضافة التقييمات والمراجعات",
"simkl": "Simkl",
"simkl_connected": "متصل",
"simkl_desc": "تتبع ما تشاهده",
"tmdb": "TMDB",
"tmdb_desc": "مزود البيانات التعريفية والشعارات",
"openrouter": "OpenRouter API",

View file

@ -522,6 +522,27 @@
"sync_success_msg": "Wiedergabefortschritt erfolgreich mit Trakt synchronisiert.",
"sync_error_msg": "Synchronisierung fehlgeschlagen. Bitte versuchen Sie es erneut."
},
"simkl": {
"title": "Simkl Einstellungen",
"settings_title": "Simkl Einstellungen",
"connect_title": "Mit Simkl verbinden",
"connect_desc": "Synchronisieren Sie Ihren Verlauf und verfolgen Sie, was Sie sehen",
"sign_in": "Mit Simkl anmelden",
"sign_out": "Trennen",
"sign_out_confirm": "Sind Sie sicher, dass Sie die Verbindung zu Simkl trennen möchten?",
"syncing_desc": "Ihre gesehenen Elemente werden mit Simkl synchronisiert.",
"auth_success_title": "Erfolgreich verbunden",
"auth_success_msg": "Ihr Simkl-Konto wurde erfolgreich verbunden.",
"auth_error_title": "Authentifizierungsfehler",
"auth_error_msg": "Authentifizierung mit Simkl fehlgeschlagen.",
"auth_error_generic": "Bei der Authentifizierung ist ein Fehler aufgetreten.",
"sign_out_error": "Verbindung zu Simkl konnte nicht getrennt werden.",
"config_error_title": "Konfigurationsfehler",
"config_error_msg": "Simkl Client ID fehlt in den Umgebungsvariablen.",
"conflict_title": "Konflikt",
"conflict_msg": "Sie können Simkl nicht verbinden, während Trakt verbunden ist. Bitte trennen Sie zuerst Trakt.",
"disclaimer": "Nuvio ist nicht mit Simkl verbunden."
},
"tmdb_settings": {
"title": "TMDb Einstellungen",
"metadata_enrichment": "Metadaten-Anreicherung",
@ -675,6 +696,9 @@
"mdblist": "MDBList",
"mdblist_connected": "Verbunden",
"mdblist_desc": "Aktivieren, um Bewertungen & Rezensionen hinzuzufügen",
"simkl": "Simkl",
"simkl_connected": "Verbunden",
"simkl_desc": "Verfolge, was du schaust",
"tmdb": "TMDB",
"tmdb_desc": "Metadaten- & Logo-Quellanbieter",
"openrouter": "OpenRouter API",

View file

@ -522,6 +522,27 @@
"sync_success_msg": "Successfully synced your watch progress with Trakt.",
"sync_error_msg": "Sync failed. Please try again."
},
"simkl": {
"title": "Simkl Settings",
"settings_title": "Simkl Settings",
"connect_title": "Connect with Simkl",
"connect_desc": "Sync your watch history and track what you're watching",
"sign_in": "Sign In with Simkl",
"sign_out": "Disconnect",
"sign_out_confirm": "Are you sure you want to disconnect from Simkl?",
"syncing_desc": "Your watched items are syncing with Simkl.",
"auth_success_title": "Successfully Connected",
"auth_success_msg": "Your Simkl account has been connected successfully.",
"auth_error_title": "Authentication Error",
"auth_error_msg": "Failed to complete authentication with Simkl.",
"auth_error_generic": "An error occurred during authentication.",
"sign_out_error": "Failed to disconnect from Simkl.",
"config_error_title": "Configuration Error",
"config_error_msg": "Simkl Client ID is missing in environment variables.",
"conflict_title": "Conflict",
"conflict_msg": "You cannot connect to Simkl while Trakt is connected. Please disconnect Trakt first.",
"disclaimer": "Nuvio is not affiliated with Simkl."
},
"tmdb_settings": {
"title": "TMDb Settings",
"metadata_enrichment": "Metadata Enrichment",
@ -675,6 +696,9 @@
"mdblist": "MDBList",
"mdblist_connected": "Connected",
"mdblist_desc": "Enable to add ratings & reviews",
"simkl": "Simkl",
"simkl_connected": "Connected",
"simkl_desc": "Track what you watch",
"tmdb": "TMDB",
"tmdb_desc": "Metadata & logo source provider",
"openrouter": "OpenRouter API",

View file

@ -522,6 +522,27 @@
"sync_success_msg": "Sincronización del progreso con Trakt completada con éxito.",
"sync_error_msg": "La sincronización falló. Por favor, inténtalo de nuevo."
},
"simkl": {
"title": "Configuración de Simkl",
"settings_title": "Configuración de Simkl",
"connect_title": "Conectar con Simkl",
"connect_desc": "Sincroniza tu historial de visualización y rastrea lo que ves",
"sign_in": "Iniciar sesión con Simkl",
"sign_out": "Desconectar",
"sign_out_confirm": "¿Estás seguro de que quieres desconectar de Simkl?",
"syncing_desc": "Tus elementos vistos se están sincronizando con Simkl.",
"auth_success_title": "Conectado exitosamente",
"auth_success_msg": "Tu cuenta de Simkl se ha conectado exitosamente.",
"auth_error_title": "Error de autenticación",
"auth_error_msg": "Error al completar la autenticación con Simkl.",
"auth_error_generic": "Ocurrió un error durante la autenticación.",
"sign_out_error": "Error al desconectar de Simkl.",
"config_error_title": "Error de configuración",
"config_error_msg": "El ID de cliente de Simkl falta en las variables de entorno.",
"conflict_title": "Conflicto",
"conflict_msg": "No puedes conectar Simkl mientras Trakt está conectado. Por favor, desconecta Trakt primero.",
"disclaimer": "Nuvio no está afiliado con Simkl."
},
"tmdb_settings": {
"title": "Ajustes de TMDb",
"metadata_enrichment": "Enriquecimiento de metadatos",
@ -675,6 +696,9 @@
"mdblist": "MDBList",
"mdblist_connected": "Conectado",
"mdblist_desc": "Activar para añadir valoraciones y reseñas",
"simkl": "Simkl",
"simkl_connected": "Conectado",
"simkl_desc": "Rastrea lo que ves",
"tmdb": "TMDB",
"tmdb_desc": "Proveedor de metadatos y logos",
"openrouter": "API de OpenRouter",

View file

@ -522,6 +522,27 @@
"sync_success_msg": "Votre progression a été synchronisée avec succès avec Trakt.",
"sync_error_msg": "La synchronisation a échoué. Veuillez réessayer."
},
"simkl": {
"title": "Paramètres Simkl",
"settings_title": "Paramètres Simkl",
"connect_title": "Se connecter avec Simkl",
"connect_desc": "Synchronisez votre historique de visionnage et suivez ce que vous regardez",
"sign_in": "Se connecter avec Simkl",
"sign_out": "Déconnecter",
"sign_out_confirm": "Êtes-vous sûr de vouloir vous déconnecter de Simkl ?",
"syncing_desc": "Vos éléments regardés sont synchronisés avec Simkl.",
"auth_success_title": "Connecté avec succès",
"auth_success_msg": "Votre compte Simkl a été connecté avec succès.",
"auth_error_title": "Erreur d'authentification",
"auth_error_msg": "Échec de l'authentification avec Simkl.",
"auth_error_generic": "Une erreur s'est produite lors de l'authentification.",
"sign_out_error": "Échec de la déconnexion de Simkl.",
"config_error_title": "Erreur de configuration",
"config_error_msg": "L'ID client Simkl est manquant dans les variables d'environnement.",
"conflict_title": "Conflit",
"conflict_msg": "Vous ne pouvez pas connecter Simkl tant que Trakt est connecté. Veuillez d'abord déconnecter Trakt.",
"disclaimer": "Nuvio n'est pas affilié à Simkl."
},
"tmdb_settings": {
"title": "Paramètres TMDb",
"metadata_enrichment": "Enrichissement des métadonnées",
@ -675,6 +696,9 @@
"mdblist": "MDBList",
"mdblist_connected": "Connecté",
"mdblist_desc": "Activer pour ajouter les notes et avis",
"simkl": "Simkl",
"simkl_connected": "Connecté",
"simkl_desc": "Suivez ce que vous regardez",
"tmdb": "TMDB",
"tmdb_desc": "Fournisseur de métadonnées et de logos",
"openrouter": "API OpenRouter",

View file

@ -522,6 +522,27 @@
"sync_success_msg": "Progressi di visione sincronizzati con successo con Trakt.",
"sync_error_msg": "Sincronizzazione fallita. Riprova."
},
"simkl": {
"title": "Impostazioni Simkl",
"settings_title": "Impostazioni Simkl",
"connect_title": "Connetti con Simkl",
"connect_desc": "Sincronizza la tua cronologia di visione e traccia ciò che guardi",
"sign_in": "Accedi con Simkl",
"sign_out": "Disconnetti",
"sign_out_confirm": "Sei sicuro di voler disconnettere da Simkl?",
"syncing_desc": "I tuoi elementi guardati sono in sincronizzazione con Simkl.",
"auth_success_title": "Connesso con successo",
"auth_success_msg": "Il tuo account Simkl è stato connesso con successo.",
"auth_error_title": "Errore di autenticazione",
"auth_error_msg": "Impossibile completare l'autenticazione con Simkl.",
"auth_error_generic": "Si è verificato un errore durante l'autenticazione.",
"sign_out_error": "Impossibile disconnettere da Simkl.",
"config_error_title": "Errore di configurazione",
"config_error_msg": "L'ID client Simkl manca nelle variabili d'ambiente.",
"conflict_title": "Conflitto",
"conflict_msg": "Non puoi connettere Simkl mentre Trakt è connesso. Disconnetti prima Trakt.",
"disclaimer": "Nuvio non è affiliato con Simkl."
},
"tmdb_settings": {
"title": "Impostazioni TMDb",
"metadata_enrichment": "Arricchimento metadati",
@ -675,6 +696,9 @@
"mdblist": "MDBList",
"mdblist_connected": "Connesso",
"mdblist_desc": "Abilita per aggiungere voti e recensioni",
"simkl": "Simkl",
"simkl_connected": "Connesso",
"simkl_desc": "Traccia ciò che guardi",
"tmdb": "TMDB",
"tmdb_desc": "Sorgente metadati e loghi",
"openrouter": "API OpenRouter",

View file

@ -522,6 +522,27 @@
"sync_success_msg": "Progresso sincronizado com sucesso com o Trakt.",
"sync_error_msg": "Falha na sincronização. Tente novamente."
},
"simkl": {
"title": "Configurações do Simkl",
"settings_title": "Configurações do Simkl",
"connect_title": "Conectar com Simkl",
"connect_desc": "Sincronize seu histórico de visualização e rastreie o que você assiste",
"sign_in": "Entrar com Simkl",
"sign_out": "Desconectar",
"sign_out_confirm": "Tem certeza de que deseja desconectar do Simkl?",
"syncing_desc": "Seus itens assistidos estão sendo sincronizados com o Simkl.",
"auth_success_title": "Conectado com sucesso",
"auth_success_msg": "Sua conta Simkl foi conectada com sucesso.",
"auth_error_title": "Erro de autenticação",
"auth_error_msg": "Falha ao completar a autenticação com o Simkl.",
"auth_error_generic": "Ocorreu um erro durante a autenticação.",
"sign_out_error": "Falha ao desconectar do Simkl.",
"config_error_title": "Erro de configuração",
"config_error_msg": "O ID do cliente Simkl está faltando nas variáveis de ambiente.",
"conflict_title": "Conflito",
"conflict_msg": "Você não pode conectar o Simkl enquanto o Trakt está conectado. Desconecte o Trakt primeiro.",
"disclaimer": "Nuvio não é afiliado ao Simkl."
},
"tmdb_settings": {
"title": "Configurações do TMDb",
"metadata_enrichment": "Enriquecimento de Metadados",
@ -689,6 +710,9 @@
"mdblist": "MDBList",
"mdblist_connected": "Conectado",
"mdblist_desc": "Habilitar para adicionar avaliações e resenhas",
"simkl": "Simkl",
"simkl_connected": "Conectado",
"simkl_desc": "Acompanhe o que você assiste",
"tmdb": "TMDB",
"tmdb_desc": "Provedor de metadados e logos",
"openrouter": "OpenRouter API",

View file

@ -522,6 +522,27 @@
"sync_success_msg": "Progresso sincronizado com sucesso com o Trakt.",
"sync_error_msg": "Falha na sincronização. Tenta novamente."
},
"simkl": {
"title": "Configurações do Simkl",
"settings_title": "Configurações do Simkl",
"connect_title": "Ligar ao Simkl",
"connect_desc": "Sincroniza o teu histórico de visualização e rastreia o que vês",
"sign_in": "Entrar com Simkl",
"sign_out": "Desligar",
"sign_out_confirm": "Tens a certeza de que queres desligar do Simkl?",
"syncing_desc": "Os teus itens vistos estão a ser sincronizados com o Simkl.",
"auth_success_title": "Ligado com sucesso",
"auth_success_msg": "A tua conta Simkl foi ligada com sucesso.",
"auth_error_title": "Erro de autenticação",
"auth_error_msg": "Falha ao completar a autenticação com o Simkl.",
"auth_error_generic": "Ocorreu um erro durante a autenticação.",
"sign_out_error": "Falha ao desligar do Simkl.",
"config_error_title": "Erro de configuração",
"config_error_msg": "O ID do cliente Simkl está em falta nas variáveis de ambiente.",
"conflict_title": "Conflito",
"conflict_msg": "Não podes ligar o Simkl enquanto o Trakt está ligado. Desliga primeiro o Trakt.",
"disclaimer": "Nuvio não é afiliado ao Simkl."
},
"tmdb_settings": {
"title": "Configurações do TMDb",
"metadata_enrichment": "Enriquecimento de Metadados",
@ -689,6 +710,9 @@
"mdblist": "MDBList",
"mdblist_connected": "Conectado",
"mdblist_desc": "Ativar para adicionar avaliações e críticas",
"simkl": "Simkl",
"simkl_connected": "Conectado",
"simkl_desc": "Acompanhe o que vê",
"tmdb": "TMDB",
"tmdb_desc": "Provedor de metadados e logos",
"openrouter": "OpenRouter API",

View file

@ -387,8 +387,8 @@ const SettingsScreen: React.FC = () => {
)}
{isItemVisible('simkl') && (
<SettingItem
title={'Simkl'}
description={isSimklAuthenticated ? 'Connected' : 'Track what you watch'}
title={t('settings.items.simkl')}
description={isSimklAuthenticated ? t('settings.items.simkl_connected') : t('settings.items.simkl_desc')}
customIcon={<SimklIcon size={isTablet ? 24 : 20} />}
renderControl={() => <ChevronRight />}
onPress={() => navigation.navigate('SimklSettings')}
@ -691,8 +691,8 @@ const SettingsScreen: React.FC = () => {
)}
{isItemVisible('simkl') && (
<SettingItem
title={'Simkl'}
description={isSimklAuthenticated ? 'Connected' : 'Track what you watch'}
title={t('settings.items.simkl')}
description={isSimklAuthenticated ? t('settings.items.simkl_connected') : t('settings.items.simkl_desc')}
customIcon={<SimklIcon size={20} />}
renderControl={() => <ChevronRight />}
onPress={() => navigation.navigate('SimklSettings')}

View file

@ -21,6 +21,7 @@ import { useTheme } from '../contexts/ThemeContext';
import { useSimklIntegration } from '../hooks/useSimklIntegration';
import { useTraktIntegration } from '../hooks/useTraktIntegration';
import CustomAlert from '../components/CustomAlert';
import { useTranslation } from 'react-i18next';
const ANDROID_STATUSBAR_HEIGHT = StatusBar.currentHeight || 0;
@ -50,6 +51,7 @@ const SimklSettingsScreen: React.FC = () => {
const [alertMessage, setAlertMessage] = useState('');
const { currentTheme } = useTheme();
const { t } = useTranslation();
const {
isAuthenticated,
@ -97,30 +99,30 @@ const SimklSettingsScreen: React.FC = () => {
.then(success => {
if (success) {
refreshAuthStatus();
openAlert('Success', 'Connected to Simkl successfully!');
openAlert(t('common.success'), t('simkl.auth_success_msg'));
} else {
openAlert('Error', 'Failed to connect to Simkl.');
openAlert(t('common.error'), t('simkl.auth_error_msg'));
}
})
.catch(err => {
logger.error('[SimklSettingsScreen] Token exchange error:', err);
openAlert('Error', 'An error occurred during connection.');
openAlert(t('common.error'), t('simkl.auth_error_generic'));
})
.finally(() => setIsExchangingCode(false));
} else if (response.type === 'error') {
openAlert('Error', 'Authentication error: ' + (response.error?.message || 'Unknown'));
openAlert(t('simkl.auth_error_title'), t('simkl.auth_error_generic') + ' ' + (response.error?.message || t('common.unknown')));
}
}
}, [response, refreshAuthStatus]);
const handleSignIn = () => {
if (!SIMKL_CLIENT_ID) {
openAlert('Configuration Error', 'Simkl Client ID is missing in environment variables.');
openAlert(t('simkl.config_error_title'), t('simkl.config_error_msg'));
return;
}
if (isTraktAuthenticated) {
openAlert('Conflict', 'You cannot connect to Simkl while Trakt is connected. Please disconnect Trakt first.');
openAlert(t('simkl.conflict_title'), t('simkl.conflict_msg'));
return;
}
@ -130,7 +132,7 @@ const SimklSettingsScreen: React.FC = () => {
const handleSignOut = async () => {
await simklService.logout();
refreshAuthStatus();
openAlert('Signed Out', 'You have disconnected from Simkl.');
openAlert(t('common.success'), t('simkl.sign_out_confirm'));
};
return (
@ -156,7 +158,7 @@ const SimklSettingsScreen: React.FC = () => {
</View>
<Text style={[styles.headerTitle, { color: isDarkMode ? currentTheme.colors.highEmphasis : currentTheme.colors.textDark }]}>
Simkl Integration
{t('simkl.settings_title')}
</Text>
<ScrollView style={styles.scrollView} contentContainerStyle={styles.scrollContent}>
@ -195,7 +197,7 @@ const SimklSettingsScreen: React.FC = () => {
</View>
</View>
<Text style={[styles.statusDesc, { color: currentTheme.colors.mediumEmphasis }]}>
Your watched items are syncing with Simkl.
{t('simkl.syncing_desc')}
</Text>
{userStats && (
@ -239,16 +241,16 @@ const SimklSettingsScreen: React.FC = () => {
style={[styles.button, { backgroundColor: currentTheme.colors.error, marginTop: 20 }]}
onPress={handleSignOut}
>
<Text style={styles.buttonText}>Disconnect</Text>
<Text style={styles.buttonText}>{t('simkl.sign_out')}</Text>
</TouchableOpacity>
</View>
) : (
<View style={styles.signInContainer}>
<Text style={[styles.signInTitle, { color: currentTheme.colors.highEmphasis }]}>
Connect Simkl
{t('simkl.connect_title')}
</Text>
<Text style={[styles.signInDescription, { color: currentTheme.colors.mediumEmphasis }]}>
Sync your watch history and track what you're watching.
{t('simkl.connect_desc')}
</Text>
<TouchableOpacity
style={[
@ -261,7 +263,7 @@ const SimklSettingsScreen: React.FC = () => {
{isExchangingCode ? (
<ActivityIndicator color="white" />
) : (
<Text style={styles.buttonText}>Sign In with Simkl</Text>
<Text style={styles.buttonText}>{t('simkl.sign_in')}</Text>
)}
</TouchableOpacity>
</View>
@ -277,7 +279,7 @@ const SimklSettingsScreen: React.FC = () => {
</View>
<Text style={[styles.disclaimer, { color: isDarkMode ? currentTheme.colors.mediumEmphasis : currentTheme.colors.textMutedDark }]}>
Nuvio is not affiliated with Simkl.
{t('simkl.disclaimer')}
</Text>
</ScrollView>