From 7a08d6990800bcedb93c73e181edffb845861875 Mon Sep 17 00:00:00 2001 From: AvatarStark <35643861+AvatarStark@users.noreply.github.com> Date: Wed, 10 Jan 2024 06:40:23 -0500 Subject: [PATCH 1/2] inlang: update translations --- assets/translations/strings_es.i18n.json | 130 ++++++++++++++++++++ assets/translations/strings_fa.i18n.json | 4 +- assets/translations/strings_ru.i18n.json | 4 +- assets/translations/strings_tr.i18n.json | 4 +- assets/translations/strings_zh-CN.i18n.json | 4 +- project.inlang/settings.json | 45 +++---- 6 files changed, 161 insertions(+), 30 deletions(-) create mode 100644 assets/translations/strings_es.i18n.json diff --git a/assets/translations/strings_es.i18n.json b/assets/translations/strings_es.i18n.json new file mode 100644 index 000000000..c5128dbff --- /dev/null +++ b/assets/translations/strings_es.i18n.json @@ -0,0 +1,130 @@ +{ + "general": { + "reset": "Renicio" + }, + "home": { + "emptyProfilesMsg": "Comience agregando un perfil de suscripción", + "connection": { + "disconnecting": "Desconectando", + "experimentalNotice": "Funciones experimentales en uso" + } + }, + "profile": { + "overviewPageTitle": "Perfiles", + "activeProfileNameSemanticLabel": "Nombre del perfil activo: \"${name}\".", + "activeProfileBtnSemanticLabel": "Ver todos los perfiles.", + "subscription": { + "expired": "Caducado" + }, + "update": { + "updateSubscriptions": "Actualizar suscripciones", + "successMsg": "Perfil actualizado con éxito", + "namedSuccessMsg": "\"${name}\" actualizado exitosamente" + }, + "share": { + "exportToClipboardSuccess": "Exportado al portapapeles", + "exportConfigToClipboardSuccess": "Configuración copiada al portapapeles" + }, + "delete": { + "successMsg": "Perfil eliminado exitosamente" + }, + "save": { + "successMsg": "Perfil guardado exitosamente" + } + }, + "proxies": { + "pageTitle": "Proxies", + "emptyProxiesMsg": "No proxies disponibles", + "delayTestTooltip": "Prueba de Restraso", + "sortTooltip": "Ordenar Proxies", + "sortOptions": { + "unsorted": "Por Defecto", + "name": "Alfabéticamente", + "delay": "Por retraso" + } + }, + "logs": { + "resumeTooltip": "reanudar" + }, + "settings": { + "requiresRestartMsg": "Para que esto surta efecto, reinicie la aplicación.", + "experimentalMsg": "Las funciones con el indicador Experimental aún están en desarrollo y pueden causar problemas.", + "general": { + "regionMsg": "Ayuda a configurar opciones predeterminadas para omitir direcciones nacionales", + "themeModes": { + "system": "Seguir el tema del sistema", + "dark": "Modo Oscuro", + "light": "Modo Claro", + "black": "Modo Negro" + }, + "silentStart": "Inicio Silencioso", + "ignoreBatteryOptimizationsMsg": "Elimine las restricciones para un rendimiento VPN óptimo" + }, + "advanced": { + "debugModeMsg": "Reinicie la aplicación para aplicar este cambio." + }, + "network": { + "perAppProxyModes": { + "off": "Todo", + "offMsg": "Proxy en todas las aplicaciones", + "include": "Proxy", + "includeMsg": "Proxy solo en aplicaciones seleccionadas", + "exclude": "Bypass", + "excludeMsg": "No hacer proxy de aplicaciones seleccionadas" + }, + "hideSystemApps": "Ocultar aplicaciones del sistema" + }, + "config": { + "resetBtn": "Restablecer opciones", + "serviceModes": { + "proxy": "Proxy", + "systemProxy": "Sistema Proxy", + "tun": "VPN" + }, + "logLevel": "Registro del Nivel", + "resolveDestination": "Resolver Destino", + "ipv6Modes": { + "disable": "Desactivar", + "enable": "Activar", + "prefer": "Preferido", + "only": "Exclusivo" + }, + "remoteDnsAddress": "DNS Remoto", + "directDnsAddress": "DNS Directo", + "connectionTestUrl": "URL de prueba de conexión", + "urlTestInterval": "URL Prueba de Intervalo", + "strictRoute": "Ruta estricta" + }, + "geoAssets": { + "successMsg": "Activo actualizado correctamente", + "missingGeoAssetsMsg": "Faltan los archivos de los recursos de enrutamiento seleccionados. Descárgalos o elige los existentes." + } + }, + "appUpdate": { + "notAvailableMsg": "Ya estas usando la última versión." + }, + "tray": { + "status": { + "disconnect": "Desconectado", + "disconnecting": "Desconectando" + } + }, + "failure": { + "singbox": { + "missingPrivilegeMsg": "El modo VPN requiere privilegios de administrador. Reinicie la aplicación como administrador o cambie el modo de servicio." + }, + "profiles": { + "unexpected": "Error Inesperado", + "notFound": "Perfil no encontrado", + "invalidConfig": "Configuracion Invalida", + "invalidUrl": "URL Invalido" + }, + "connection": { + "badResponse": "Mala respuesta" + } + }, + "play": { + "short_description": "Auto, SSH, VLESS, Vmess, Trojan, Reality, Sing-Box, Clash, Xray, Shadowsocks", + "full_description": "El objetivo clave de HiddifyNext es proporcionar un cliente de túnel seguro, fácil de usar y eficiente. Le permite enrutar todo el tráfico o el tráfico de aplicaciones seleccionadas a un servidor remoto de su elección, utilizando el permiso del servicio VPN.Nota: No proporcionamos ningún servidor; Los usuarios deben garantizar que sus actividades en línea permanezcan privadas mediante el uso de su propio servidor autohospedado o servidores confiables. Soportamos servidores con:- Enlace de suscripción normal a V2ray/Xray- Enlace de suscripción a Choque- Enlace de suscripción a Sing-Box¿Cuáles son nuestras características únicas? - Fácil de usar - Optimizado y Rápido - Seleccionar automáticamente LowestPing - Mostrar información de uso del usuario. - Importe fácilmente un subvínculo con un solo clic mediante enlaces profundos - Gratis y sin anuncios - Cambie fácilmente los subvínculos de usuario - más y másApoyo:- Todos los protocolos soportados por Sing-Box- VLESS + xtls realidad, visión- VMESS- troyano- Calcetines Shoadow- Realidad-V2ray-Histria2-TUIC-SSH- SombraTLSEl código fuente existe en https://github.com/hiddify/Hiddify-NextEl núcleo de la aplicación se basa en sing-box de código abierto.Descripción del permiso:- Servicio VPN: como el objetivo de esta aplicación es proporcionar un cliente de túnel seguro, fácil de usar y eficiente, necesitamos este permiso para poder enrutar el tráfico a través del túnel al servidor remoto.- CONSULTAR TODOS LOS PAQUETES: este permiso se utiliza para permitir a los usuarios incluir o excluir aplicaciones específicas para la tunelización.- RECIBIR ARRANQUE COMPLETADO: este permiso se puede habilitar o deshabilitar desde la configuración de la aplicación para activar esta aplicación al iniciar el dispositivo.- PUBLICAR NOTIFICACIONES: este permiso es esencial ya que empleamos un servicio en primer plano para garantizar el funcionamiento continuo del servicio VPN.- Esta aplicación está libre de publicidad. Los datos analíticos y de fallos solo se producen con el consentimiento explícito del usuario en el primer uso de la aplicación." + } +} \ No newline at end of file diff --git a/assets/translations/strings_fa.i18n.json b/assets/translations/strings_fa.i18n.json index bf6d0aa5f..131ae880d 100644 --- a/assets/translations/strings_fa.i18n.json +++ b/assets/translations/strings_fa.i18n.json @@ -73,11 +73,11 @@ "update": { "buttonTxt": "بروزرسانی", "tooltip": "بروزرسانی پروفایل", + "updateSubscriptions": "بروزرسانی اشتراک‌ها", "failureMsg": "در بروزرسانی پروفایل خطایی رخ داد", "successMsg": "پروفایل با موفقیت بروزرسانی شد", "namedFailureMsg": "در بروزرسانی \"${name}\" خطایی رخ داد", - "namedSuccessMsg": "\"${name}\" با موفقیت به روز شد", - "updateSubscriptions": "بروزرسانی اشتراک‌ها" + "namedSuccessMsg": "\"${name}\" با موفقیت به روز شد" }, "share": { "buttonText": "اشتراک گذاری", diff --git a/assets/translations/strings_ru.i18n.json b/assets/translations/strings_ru.i18n.json index 380dbeb04..1a0aafcfc 100644 --- a/assets/translations/strings_ru.i18n.json +++ b/assets/translations/strings_ru.i18n.json @@ -73,11 +73,11 @@ "update": { "buttonTxt": "Обновить", "tooltip": "Обновить профиль", + "updateSubscriptions": "Обновить подписки", "failureMsg": "Не удалось обновить профиль", "successMsg": "Профиль успешно обновлён", "namedFailureMsg": "Не удалось обновить \"${name}\".", - "namedSuccessMsg": "\"${name}\" успешно обновлено", - "updateSubscriptions": "Обновить подписки" + "namedSuccessMsg": "\"${name}\" успешно обновлено" }, "share": { "buttonText": "Поделиться", diff --git a/assets/translations/strings_tr.i18n.json b/assets/translations/strings_tr.i18n.json index cbd2df77e..263f5ca58 100644 --- a/assets/translations/strings_tr.i18n.json +++ b/assets/translations/strings_tr.i18n.json @@ -73,11 +73,11 @@ "update": { "buttonTxt": "Güncelle", "tooltip": "Profili Güncelle", + "updateSubscriptions": "Abonelikleri Güncelle", "failureMsg": "Profil güncellenemedi", "successMsg": "Profil başarıyla güncellendi", "namedFailureMsg": "\"${name}\" güncellenemedi", - "namedSuccessMsg": "\"${name}\" başarıyla güncellendi", - "updateSubscriptions": "Abonelikleri Güncelle" + "namedSuccessMsg": "\"${name}\" başarıyla güncellendi" }, "share": { "buttonText": "Paylaş", diff --git a/assets/translations/strings_zh-CN.i18n.json b/assets/translations/strings_zh-CN.i18n.json index 702765bf0..03eaf4981 100644 --- a/assets/translations/strings_zh-CN.i18n.json +++ b/assets/translations/strings_zh-CN.i18n.json @@ -73,11 +73,11 @@ "update": { "buttonTxt": "更新", "tooltip": "更新配置文件", + "updateSubscriptions": "更新订阅", "failureMsg": "更新配置文件失败", "successMsg": "配置文件更新成功", "namedFailureMsg": "无法更新\"${name}\"", - "namedSuccessMsg": "\"${name}\" 更新成功", - "updateSubscriptions": "更新订阅" + "namedSuccessMsg": "\"${name}\" 更新成功" }, "share": { "buttonText": "分享", diff --git a/project.inlang/settings.json b/project.inlang/settings.json index f84390a11..c54c6b2d8 100644 --- a/project.inlang/settings.json +++ b/project.inlang/settings.json @@ -1,24 +1,25 @@ { - "$schema": "https://inlang.com/schema/project-settings", - "sourceLanguageTag": "en", - "languageTags": [ - "en", - "fa", - "ru", - "tr", - "zh-CN" - ], - "modules": [ - "https://cdn.jsdelivr.net/npm/@inlang/plugin-i18next@4/dist/index.js", - "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-empty-pattern@1/dist/index.js", - "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-identical-pattern@1/dist/index.js", - "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-without-source@1/dist/index.js", - "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-missing-translation@1/dist/index.js" - ], - "plugin.inlang.i18next": { - "pathPattern": "./assets/translations/strings_{languageTag}.i18n.json", - "variableReferencePattern": [ - "@:" - ] - } + "$schema": "https://inlang.com/schema/project-settings", + "sourceLanguageTag": "en", + "languageTags": [ + "en", + "es", + "fa", + "ru", + "tr", + "zh-CN" + ], + "modules": [ + "https://cdn.jsdelivr.net/npm/@inlang/plugin-i18next@4/dist/index.js", + "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-empty-pattern@1/dist/index.js", + "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-identical-pattern@1/dist/index.js", + "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-without-source@1/dist/index.js", + "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-missing-translation@1/dist/index.js" + ], + "plugin.inlang.i18next": { + "pathPattern": "./assets/translations/strings_{languageTag}.i18n.json", + "variableReferencePattern": [ + "@:" + ] + } } \ No newline at end of file From 9019bdcc413742e8c5a63fff946669537f8a5291 Mon Sep 17 00:00:00 2001 From: problematicconsumer Date: Sat, 13 Jan 2024 00:07:30 +0330 Subject: [PATCH 2/2] Add missing es translations --- .github/sync_translate.sh | 1 + assets/translations/strings_es.i18n.json | 242 +++++++++++++++++++++-- 2 files changed, 223 insertions(+), 20 deletions(-) diff --git a/.github/sync_translate.sh b/.github/sync_translate.sh index 1bb71b928..14e517ff7 100644 --- a/.github/sync_translate.sh +++ b/.github/sync_translate.sh @@ -15,6 +15,7 @@ python3 auto_translator.py en zh-CN # python3 auto_translator.py en pt python3 auto_translator.py en ru python3 auto_translator.py en tr +python3 auto_translator.py en es diff --git a/assets/translations/strings_es.i18n.json b/assets/translations/strings_es.i18n.json index c5128dbff..40f206435 100644 --- a/assets/translations/strings_es.i18n.json +++ b/assets/translations/strings_es.i18n.json @@ -1,12 +1,36 @@ { "general": { - "reset": "Renicio" + "reset": "Renicio", + "appTitle": "Hiddify Next", + "toggle": { + "enabled": "Activado", + "disabled": "Desactivado" + }, + "state": { + "disable": "Desactivar" + }, + "sort": "Clasificar", + "sortBy": "Ordenar por", + "addToClipboard": "Añadir al portapapeles" }, "home": { "emptyProfilesMsg": "Comience agregando un perfil de suscripción", "connection": { "disconnecting": "Desconectando", - "experimentalNotice": "Funciones experimentales en uso" + "experimentalNotice": "Funciones experimentales en uso", + "tapToConnect": "Toque para conectarse", + "connecting": "Conectando", + "connected": "Conectado", + "experimentalNoticeMsg": "Ha habilitado algunas funciones experimentales que podrían afectar la calidad de la conexión y provocar errores inesperados. Siempre puede cambiar o restablecer estas opciones desde la página de opciones de configuración.", + "disableExperimentalNotice": "No volver a mostrar" + }, + "pageTitle": "Hogar", + "noActiveProfileMsg": "Elige un perfil", + "stats": { + "traffic": "Tráfico en vivo", + "trafficTotal": "Tráfico total", + "uplink": "Enlace ascendente", + "downlink": "Enlace descendente" } }, "profile": { @@ -14,22 +38,75 @@ "activeProfileNameSemanticLabel": "Nombre del perfil activo: \"${name}\".", "activeProfileBtnSemanticLabel": "Ver todos los perfiles.", "subscription": { - "expired": "Caducado" + "expired": "Caducado", + "traffic": "Tráfico", + "updatedTimeAgo": "Actualizado ${timeago}", + "remainingDuration": "${duration} días restantes", + "remainingTrafficSemanticLabel": "${consumed} de ${total} tráfico consumido.", + "noTraffic": "Fuera de cuota" }, "update": { "updateSubscriptions": "Actualizar suscripciones", "successMsg": "Perfil actualizado con éxito", - "namedSuccessMsg": "\"${name}\" actualizado exitosamente" + "namedSuccessMsg": "\"${name}\" actualizado exitosamente", + "buttonTxt": "Actualizar", + "tooltip": "Actualización del perfil", + "failureMsg": "No se pudo actualizar el perfil", + "namedFailureMsg": "No se pudo actualizar \"${name}\"" }, "share": { "exportToClipboardSuccess": "Exportado al portapapeles", - "exportConfigToClipboardSuccess": "Configuración copiada al portapapeles" + "exportConfigToClipboardSuccess": "Configuración copiada al portapapeles", + "buttonText": "Compartir", + "exportSubLinkToClipboard": "Exportar enlace de suscripción al portapapeles", + "subLinkQrCode": "Código QR del enlace de suscripción", + "exportConfigToClipboard": "Exportar configuración al portapapeles" }, "delete": { - "successMsg": "Perfil eliminado exitosamente" + "successMsg": "Perfil eliminado exitosamente", + "buttonTxt": "Borrar", + "confirmationMsg": "¿Eliminar perfil permanentemente?" }, "save": { - "successMsg": "Perfil guardado exitosamente" + "successMsg": "Perfil guardado exitosamente", + "buttonText": "Ahorrar", + "failureMsg": "No se pudo guardar el perfil" + }, + "detailsPageTitle": "Perfil", + "nonActiveProfileBtnSemanticLabel": "Seleccione \"${name}\" como perfil activo.", + "sortBy": { + "lastUpdate": "Recientemente actualizado", + "name": "Alfabéticamente" + }, + "add": { + "buttonText": "Nuevo perfil", + "shortBtnTxt": "Nuevo perfil", + "fromClipboard": "Agregar desde el portapapeles", + "scanQr": "Escanear código QR", + "qrScanner": { + "permissionDeniedError": "Permiso denegado", + "unexpectedError": "Algo salió mal", + "torchSemanticLabel": "Linterna", + "facingSemanticLabel": "Frente a la cámara" + }, + "manually": "Entrada manual", + "addingProfileMsg": "Agregar perfil", + "failureMsg": "No se pudo agregar el perfil" + }, + "edit": { + "buttonTxt": "Editar", + "selectActiveTxt": "Seleccionar perfil activo" + }, + "detailsForm": { + "nameLabel": "Nombre", + "nameHint": "Nombre de perfil", + "urlLabel": "URL", + "urlHint": "URL de configuración completa", + "emptyNameMsg": "Se requiere el nombre", + "invalidUrlMsg": "URL invalida", + "lastUpdate": "Última actualización", + "updateInterval": "Actualización automática", + "updateIntervalDialogTitle": "Intervalo de actualización automática (en horas)" } }, "proxies": { @@ -44,7 +121,14 @@ } }, "logs": { - "resumeTooltip": "reanudar" + "resumeTooltip": "reanudar", + "pageTitle": "Registros", + "filterHint": "Filtrar", + "allLevelsFilter": "Todo", + "shareCoreLogs": "Compartir registros principales", + "shareAppLogs": "Compartir registros de aplicaciones", + "pauseTooltip": "Pausa", + "clearTooltip": "Claro" }, "settings": { "requiresRestartMsg": "Para que esto surta efecto, reinicie la aplicación.", @@ -58,10 +142,30 @@ "black": "Modo Negro" }, "silentStart": "Inicio Silencioso", - "ignoreBatteryOptimizationsMsg": "Elimine las restricciones para un rendimiento VPN óptimo" + "ignoreBatteryOptimizationsMsg": "Elimine las restricciones para un rendimiento VPN óptimo", + "sectionTitle": "General", + "locale": "Idioma", + "region": "Región", + "regions": { + "ir": "Irán (ir)", + "cn": "China (CN)", + "ru": "Rusia (ru)", + "af": "Afganistán (af)", + "other": "Otro" + }, + "themeMode": "Modo temático", + "enableAnalytics": "Habilitar análisis", + "enableAnalyticsMsg": "Dar permiso para recopilar análisis y enviar informes de fallos para mejorar la aplicación.", + "autoStart": "Inicie en el arranque", + "openWorkingDir": "Abrir directorio de trabajo", + "ignoreBatteryOptimizations": "Deshabilitar la optimización de la batería", + "dynamicNotification": "Mostrar velocidad en la notificación" }, "advanced": { - "debugModeMsg": "Reinicie la aplicación para aplicar este cambio." + "debugModeMsg": "Reinicie la aplicación para aplicar este cambio.", + "sectionTitle": "Avanzado", + "debugMode": "Modo de depuración", + "memoryLimit": "Limite de memoria" }, "network": { "perAppProxyModes": { @@ -72,7 +176,10 @@ "exclude": "Bypass", "excludeMsg": "No hacer proxy de aplicaciones seleccionadas" }, - "hideSystemApps": "Ocultar aplicaciones del sistema" + "hideSystemApps": "Ocultar aplicaciones del sistema", + "perAppProxyPageTitle": "Proxy por aplicación", + "showSystemApps": "Mostrar aplicaciones del sistema", + "clearSelection": "Selección clara" }, "config": { "resetBtn": "Restablecer opciones", @@ -93,25 +200,86 @@ "directDnsAddress": "DNS Directo", "connectionTestUrl": "URL de prueba de conexión", "urlTestInterval": "URL Prueba de Intervalo", - "strictRoute": "Ruta estricta" + "strictRoute": "Ruta estricta", + "serviceMode": "Modo de servicio", + "section": { + "route": "Opciones de ruta", + "dns": "Opciones de DNS", + "inbound": "Opciones entrantes", + "outbound": "Opciones de salida", + "tlsTricks": "Trucos TLS", + "misc": "Opciones varias" + }, + "pageTitle": "Opciones de configuración", + "ipv6Mode": "Ruta IPv6", + "remoteDnsDomainStrategy": "Estrategia de dominio DNS remoto", + "directDnsDomainStrategy": "Estrategia de dominio DNS directo", + "mixedPort": "Puerto Mixto", + "localDnsPort": "Puerto DNS local", + "allowConnectionFromLan": "Permitir conexión desde LAN", + "tunImplementation": "Implementación de TUN", + "mtu": "MTU", + "enableClashApi": "Habilitar API de choque", + "clashApiPort": "Puerto API de choque", + "enableTun": "Habilitar sintonización", + "setSystemProxy": "Establecer proxy del sistema", + "enableDnsRouting": "Habilitar enrutamiento DNS", + "enableFakeDns": "Habilitar DNS falso", + "bypassLan": "Omitir LAN", + "enableTlsFragment": "Habilitar fragmento TLS", + "tlsFragmentSize": "Tamaño del fragmento TLS", + "tlsFragmentSleep": "Sueño de fragmento TLS", + "enableTlsMixedSniCase": "Habilitar caso SNI mixto TLS", + "enableTlsPadding": "Habilitar el relleno TLS", + "tlsPaddingSize": "Relleno TLS" }, "geoAssets": { "successMsg": "Activo actualizado correctamente", - "missingGeoAssetsMsg": "Faltan los archivos de los recursos de enrutamiento seleccionados. Descárgalos o elige los existentes." - } + "missingGeoAssetsMsg": "Faltan los archivos de los recursos de enrutamiento seleccionados. Descárgalos o elige los existentes.", + "pageTitle": "Activos de enrutamiento", + "version": "Versión ${version}", + "fileMissing": "Archivo faltante", + "update": "Actualizar", + "download": "Descargar", + "failureMsg": "No se pudo actualizar el activo", + "addRecommended": "Agregar activos recomendados" + }, + "pageTitle": "Ajustes", + "experimental": "Experimental" }, "appUpdate": { - "notAvailableMsg": "Ya estas usando la última versión." + "notAvailableMsg": "Ya estas usando la última versión.", + "dialogTitle": "Actualización disponible", + "updateMsg": "Hay disponible una nueva versión de @:general.appTitle. ¿Te gustaría actualizar ahora?", + "currentVersionLbl": "Versión actual", + "newVersionLbl": "Nueva versión", + "updateNowBtnTxt": "Actualizar ahora", + "laterBtnTxt": "Más tarde", + "ignoreBtnTxt": "Ignorar" }, "tray": { "status": { "disconnect": "Desconectado", - "disconnecting": "Desconectando" - } + "disconnecting": "Desconectando", + "connect": "Conectar", + "connecting": "Conectando" + }, + "dashboard": "Panel", + "quit": "Abandonar", + "open": "Abierto" }, "failure": { "singbox": { - "missingPrivilegeMsg": "El modo VPN requiere privilegios de administrador. Reinicie la aplicación como administrador o cambie el modo de servicio." + "missingPrivilegeMsg": "El modo VPN requiere privilegios de administrador. Reinicie la aplicación como administrador o cambie el modo de servicio.", + "unexpected": "Error de servicio inesperado", + "serviceNotRunning": "El servicio no está funcionando", + "missingPrivilege": "Privilegio perdido", + "missingGeoAssets": "Recursos geográficos faltantes", + "missingGeoAssetsMsg": "Faltan recursos geográficos. considere cambiar el activo activo o descargar uno seleccionado en la configuración.", + "invalidConfigOptions": "Opciones de configuración no válidas", + "invalidConfig": "Configuración no válida", + "create": "Error de creación del servicio", + "start": "Error de inicio del servicio" }, "profiles": { "unexpected": "Error Inesperado", @@ -120,11 +288,45 @@ "invalidUrl": "URL Invalido" }, "connection": { - "badResponse": "Mala respuesta" + "badResponse": "Mala respuesta", + "unexpected": "Error de conexión inesperado", + "timeout": "El tiempo de conexión expiro", + "connectionError": "Error de conexión", + "badCertificate": "Certificado malo" + }, + "unexpected": "Error inesperado", + "clash": { + "unexpected": "Error inesperado", + "core": "Error de choque ${reason}" + }, + "connectivity": { + "unexpected": "Falla inesperada", + "missingVpnPermission": "Permiso VPN faltante", + "missingNotificationPermission": "Permiso de notificación faltante", + "core": "Error central" + }, + "geoAssets": { + "unexpected": "Error inesperado", + "notUpdate": "Actualización no disponible", + "activeNotFound": "Activo geográfico activo no encontrado" } }, "play": { "short_description": "Auto, SSH, VLESS, Vmess, Trojan, Reality, Sing-Box, Clash, Xray, Shadowsocks", - "full_description": "El objetivo clave de HiddifyNext es proporcionar un cliente de túnel seguro, fácil de usar y eficiente. Le permite enrutar todo el tráfico o el tráfico de aplicaciones seleccionadas a un servidor remoto de su elección, utilizando el permiso del servicio VPN.Nota: No proporcionamos ningún servidor; Los usuarios deben garantizar que sus actividades en línea permanezcan privadas mediante el uso de su propio servidor autohospedado o servidores confiables. Soportamos servidores con:- Enlace de suscripción normal a V2ray/Xray- Enlace de suscripción a Choque- Enlace de suscripción a Sing-Box¿Cuáles son nuestras características únicas? - Fácil de usar - Optimizado y Rápido - Seleccionar automáticamente LowestPing - Mostrar información de uso del usuario. - Importe fácilmente un subvínculo con un solo clic mediante enlaces profundos - Gratis y sin anuncios - Cambie fácilmente los subvínculos de usuario - más y másApoyo:- Todos los protocolos soportados por Sing-Box- VLESS + xtls realidad, visión- VMESS- troyano- Calcetines Shoadow- Realidad-V2ray-Histria2-TUIC-SSH- SombraTLSEl código fuente existe en https://github.com/hiddify/Hiddify-NextEl núcleo de la aplicación se basa en sing-box de código abierto.Descripción del permiso:- Servicio VPN: como el objetivo de esta aplicación es proporcionar un cliente de túnel seguro, fácil de usar y eficiente, necesitamos este permiso para poder enrutar el tráfico a través del túnel al servidor remoto.- CONSULTAR TODOS LOS PAQUETES: este permiso se utiliza para permitir a los usuarios incluir o excluir aplicaciones específicas para la tunelización.- RECIBIR ARRANQUE COMPLETADO: este permiso se puede habilitar o deshabilitar desde la configuración de la aplicación para activar esta aplicación al iniciar el dispositivo.- PUBLICAR NOTIFICACIONES: este permiso es esencial ya que empleamos un servicio en primer plano para garantizar el funcionamiento continuo del servicio VPN.- Esta aplicación está libre de publicidad. Los datos analíticos y de fallos solo se producen con el consentimiento explícito del usuario en el primer uso de la aplicación." + "full_description": "El objetivo clave de HiddifyNext es proporcionar un cliente de túnel seguro, fácil de usar y eficiente. Le permite enrutar todo el tráfico o el tráfico de aplicaciones seleccionadas a un servidor remoto de su elección, utilizando el permiso del servicio VPN.Nota: No proporcionamos ningún servidor; Los usuarios deben garantizar que sus actividades en línea permanezcan privadas mediante el uso de su propio servidor autohospedado o servidores confiables. Soportamos servidores con:- Enlace de suscripción normal a V2ray/Xray- Enlace de suscripción a Choque- Enlace de suscripción a Sing-Box¿Cuáles son nuestras características únicas? - Fácil de usar - Optimizado y Rápido - Seleccionar automáticamente LowestPing - Mostrar información de uso del usuario. - Importe fácilmente un subvínculo con un solo clic mediante enlaces profundos - Gratis y sin anuncios - Cambie fácilmente los subvínculos de usuario - más y másApoyo:- Todos los protocolos soportados por Sing-Box- VLESS + xtls realidad, visión- VMESS- troyano- Calcetines Shoadow- Realidad-V2ray-Histria2-TUIC-SSH- SombraTLSEl código fuente existe en https://github.com/hiddify/Hiddify-NextEl núcleo de la aplicación se basa en sing-box de código abierto.Descripción del permiso:- Servicio VPN: como el objetivo de esta aplicación es proporcionar un cliente de túnel seguro, fácil de usar y eficiente, necesitamos este permiso para poder enrutar el tráfico a través del túnel al servidor remoto.- CONSULTAR TODOS LOS PAQUETES: este permiso se utiliza para permitir a los usuarios incluir o excluir aplicaciones específicas para la tunelización.- RECIBIR ARRANQUE COMPLETADO: este permiso se puede habilitar o deshabilitar desde la configuración de la aplicación para activar esta aplicación al iniciar el dispositivo.- PUBLICAR NOTIFICACIONES: este permiso es esencial ya que empleamos un servicio en primer plano para garantizar el funcionamiento continuo del servicio VPN.- Esta aplicación está libre de publicidad. Los datos analíticos y de fallos solo se producen con el consentimiento explícito del usuario en el primer uso de la aplicación.", + "title": "Hiddify Next (vista previa)" + }, + "intro": { + "termsAndPolicyCaution(rich)": "al continuar, aceptas ${tap(@:about.termsAndConditions)}", + "start": "Comenzar" + }, + "about": { + "pageTitle": "Acerca de", + "version": "Versión", + "sourceCode": "Código fuente", + "telegramChannel": "Canal de telegramas", + "checkForUpdate": "Buscar actualizaciones", + "privacyPolicy": "Política de privacidad", + "termsAndConditions": "Términos y condiciones" } } \ No newline at end of file