From 15f8cfce64cca34264d23c4467fa0b1cfdc33c8c Mon Sep 17 00:00:00 2001 From: Ildar Kamalov Date: Mon, 26 Nov 2018 15:00:56 +0300 Subject: [PATCH 1/2] Add new languages --- client/src/__locales/es.json | 124 +++++++++++++++++++++++++++++++ client/src/__locales/fr.json | 124 +++++++++++++++++++++++++++++++ client/src/__locales/ja.json | 124 +++++++++++++++++++++++++++++++ client/src/__locales/pt-br.json | 124 +++++++++++++++++++++++++++++++ client/src/__locales/ru.json | 2 +- client/src/__locales/sv.json | 124 +++++++++++++++++++++++++++++++ client/src/helpers/constants.js | 24 +++++- client/src/i18n.js | 44 ++++++++--- i18n.go | 11 ++- scripts/translations/download.js | 2 +- 10 files changed, 685 insertions(+), 18 deletions(-) create mode 100644 client/src/__locales/es.json create mode 100644 client/src/__locales/fr.json create mode 100644 client/src/__locales/ja.json create mode 100644 client/src/__locales/pt-br.json create mode 100644 client/src/__locales/sv.json diff --git a/client/src/__locales/es.json b/client/src/__locales/es.json new file mode 100644 index 00000000..38ea8af1 --- /dev/null +++ b/client/src/__locales/es.json @@ -0,0 +1,124 @@ +{ + "back": "Atr\u00e1s", + "dashboard": "Tablero de rendimiento", + "settings": "Ajustes", + "filters": "Filtros", + "query_log": "Log de consulta", + "faq": "FAQ", + "version": "versi\u00f3n", + "address": "direcci\u00f3n", + "on": "Activado", + "off": "Desactivado", + "copyright": "Copyright", + "homepage": "P\u00e1gina de inicio", + "report_an_issue": "Reportar el error", + "enable_protection": "Activar la protecci\u00f3n", + "enabled_protection": "Protecci\u00f3n activada", + "disable_protection": "Desactivar protecci\u00f3n", + "disabled_protection": "Protecci\u00f3n desactivada", + "refresh_statics": "Renovas estad\u00edsticas", + "dns_query": "DNS Queries", + "blocked_by": "Bloqueado por", + "stats_malware_phishing": "Malware\/phishing bloqueado", + "stats_adult": "Contenido adulto bloqueado", + "stats_query_domain": "Dominios m\u00e1s solicitados", + "for_last_24_hours": "en las \u00faltimas 24 horas", + "no_domains_found": "No dominios encontrados", + "requests_count": "N\u00famero de solicitudes", + "top_blocked_domains": "Dominios m\u00e1s bloqueados", + "top_clients": "Clientes m\u00e1s populares", + "no_clients_found": "No hay clientes", + "general_statistics": "Estad\u00edstica general", + "number_of_dns_query_24_hours": "Una serie de consultas DNS procesadas durante las \u00faltimas 24 horas", + "number_of_dns_query_blocked_24_hours": "El n\u00famero de solicitudes de DNS bloqueadas por los filtros y listas de block", + "number_of_dns_query_blocked_24_hours_by_sec": "El n\u00famero de solicitudes de DNS bloqueadas por el m\u00f3dulo de navegaci\u00f3n segura de AdGuard", + "number_of_dns_query_blocked_24_hours_adult": "El n\u00famero de sitios para adultos bloqueados", + "enforced_save_search": "B\u00fasqueda segura forzada", + "number_of_dns_query_to_safe_search": "Una serie de solicitudes de DNS a los motores de b\u00fasqueda para los que se aplic\u00f3 la B\u00fasqueda Segura", + "average_processing_time": "Tiempo medio de tratamiento", + "average_processing_time_hint": "Tiempo medio en milisegundos al procesar una solicitud DNS", + "block_domain_use_filters_and_hosts": "Bloquear dominios usando filtros y archivos hosts", + "filters_block_toggle_hint": "Puede configurar las reglas de bloqueo en los ajustes Filtros<\/a>.", + "use_adguard_browsing_sec": "Usar el servicio web de Seguridad de navegaci\u00f3n de AdGuard", + "use_adguard_browsing_sec_hint": "AdGuard Home comprobar\u00e1 si el dominio est\u00e1 en la lista negra del servicio web de seguridad de navegaci\u00f3n. Utilizar\u00e1 la API de b\u00fasqueda de privacidad para realizar la comprobaci\u00f3n: s\u00f3lo se env\u00eda al servidor un prefijo corto del hash del nombre de dominio SHA256.", + "use_adguard_parental": "Usar Control Parental de AdGuard ", + "use_adguard_parental_hint": "AdGuard Home comprobar\u00e1 si el dominio contiene materiales para adultos. Utiliza la misma API de privacidad que el servicio web de seguridad de navegaci\u00f3n.", + "enforce_safe_search": "Enforzar b\u00fasqueda segura", + "enforce_save_search_hint": "AdGuard Home puede hacer cumplir la b\u00fasqueda segura en los siguientes motores de b\u00fasqueda: Google, Youtube, Bing y Yandex.", + "no_servers_specified": "No hay servidores especificados", + "no_settings": "No hay ajustes", + "general_settings": "Ajustes generales", + "upstream_dns": "Servidores DNS upstream", + "upstream_dns_hint": "Si mantiene este campo vac\u00edo, AdGuard Home utilizar\u00e1 Cloudflare DNS<\/a> como upstream. Utilice el prefijo tls:\/\/ para DNS sobre servidores TLS.", + "test_upstream_btn": "Probar upstream", + "apply_btn": "Aplicar", + "disabled_filtering_toast": "Desactivar filtrado", + "enabled_filtering_toast": "Filtrado activado", + "disabled_safe_browsing_toast": "Navegaci\u00f3n segura desactivada", + "enabled_safe_browsing_toast": "Navegaci\u00f3n segura activada", + "disabled_parental_toast": "Control parental desactivado", + "enabled_parental_toast": "Control parental activado", + "disabled_safe_search_toast": "B\u00fasqueda segura desactivada", + "enabled_save_search_toast": "B\u00fasqueda segura activada", + "enabled_table_header": "Activado", + "name_table_header": "Nombre", + "filter_url_table_header": "Filtro URL", + "rules_count_table_header": "N\u00famero de reglas", + "last_time_updated_table_header": "\u00daltima actualizaci\u00f3n", + "actions_table_header": "Acciones", + "delete_table_action": "Eliminar", + "filters_and_hosts": "Filtros y hosts blocklists", + "filters_and_hosts_hint": "AdGuard Home entiende reglas b\u00e1sicas de bloqueo y la sintaxis de los archivos de hosts.", + "no_filters_added": "No hay filtros agregados", + "add_filter_btn": "Agregar filtro", + "cancel_btn": "Cancelar", + "enter_name_hint": "Ingresar nombre", + "enter_url_hint": "Ingresar URL", + "check_updates_btn": "Revisar si hay actualizaciones", + "new_filter_btn": "Nueva suscripci\u00f3n al filtro", + "enter_valid_filter_url": "Ingrese el URL v\u00e1lido para suscribirse o un archivo hosts.", + "custom_filter_rules": "Personalizar reglas del filtrado", + "custom_filter_rules_hint": "Introduzca una regla en una l\u00ednea. Puede utilizar reglas de bloqueo de anuncios o sintaxis de archivos de hosts.", + "examples_title": "Ejemplos", + "example_meaning_filter_block": "bloquear acceso para el dominio ejemplo.org\ny todos sus subdominios ", + "example_meaning_filter_whitelist": "desbloquear el acceso para el dominio ejemplo.org y sus subdominios", + "example_meaning_host_block": "AdGuard Home regresar\u00e1 la direcci\u00f3n 127.0.0.1 para el dominio ejemplo.org (pero no para sus subdominios).", + "example_comment": "! Aqu\u00ed va el comentario", + "example_comment_meaning": "solo un comentario", + "example_comment_hash": "# Tambi\u00e9n un comentario", + "all_filters_up_to_date_toast": "Todos los filtros son actualizados", + "updated_upstream_dns_toast": "Servidores DNS upstream son actualizados", + "dns_test_ok_toast": "Servidores DNS especificados funcionan correctamente", + "dns_test_not_ok_toast": "Servidor \"{{key}}\": no puede ser usado, por favor, revise si lo ha escrito correctamente", + "unblock_btn": "Desbloquear", + "block_btn": "Bloquear", + "time_table_header": "Tiempo", + "domain_name_table_header": "Nombre de dominio", + "type_table_header": "Tipo", + "response_table_header": "Respuesta", + "empty_response_status": "Vac\u00edo", + "show_all_filter_type": "Mostrar todo", + "show_filtered_type": "Mostrar filtrados", + "no_logs_found": "No se han encontrado registros", + "disabled_log_btn": "Desactivar registro", + "download_log_file_btn": "Descargar el archivo de registro", + "refresh_btn": "Renovar", + "enabled_log_btn": "Activar registro", + "last_dns_queries": "\u00daltimas 500 solicitudes de DNS", + "previous_btn": "Anterior", + "next_btn": "Siguiente", + "loading_table_status": "Cargando...", + "page_table_footer_text": "P\u00e1gina", + "of_table_footer_text": "de", + "rows_table_footer_text": "filas", + "updated_custom_filtering_toast": "Actualizadas las reglas de filtrado personalizadas", + "rule_removed_from_custom_filtering_toast": "Regla eliminada de las reglas de filtrado personalizadas", + "rule_added_to_custom_filtering_toast": "Regla a\u00f1adida a las reglas de filtrado personalizadas", + "query_log_disabled_toast": "Log de consulta desactivado", + "query_log_enabled_toast": "Log de consulta activado", + "source_label": "Fuente", + "found_in_known_domain_db": "Encontrado en la base de datos de dominios conocidos.", + "category_label": "Categor\u00eda", + "rule_label": "Regla", + "filter_label": "Filtro" +} \ No newline at end of file diff --git a/client/src/__locales/fr.json b/client/src/__locales/fr.json new file mode 100644 index 00000000..40a814e2 --- /dev/null +++ b/client/src/__locales/fr.json @@ -0,0 +1,124 @@ +{ + "back": "Retour", + "dashboard": "Tableau de bord", + "settings": "Param\u00e8tres", + "filters": "Filtres", + "query_log": "Journal des requ\u00eates\u001c", + "faq": "FAQ", + "version": "version", + "address": "addresse", + "on": "Activ\u00e9", + "off": "\u00c9teint", + "copyright": "Copyright", + "homepage": "Page d'accueil", + "report_an_issue": "Signaler un probl\u00e8me", + "enable_protection": "Activer la protection", + "enabled_protection": "Protection activ\u00e9e", + "disable_protection": "D\u00e9sactiver la protection", + "disabled_protection": "Protection d\u00e9sactiv\u00e9e", + "refresh_statics": "Renouveler les statistiques", + "dns_query": "Requ\u00eates\u001c DNS", + "blocked_by": "Bloqu\u00e9 par", + "stats_malware_phishing": "Tentative de malware\/hamme\u00e7onnage bloqu\u00e9e", + "stats_adult": "Sites \u00e0 contenu adulte bloqu\u00e9s", + "stats_query_domain": "Domaines les plus recherch\u00e9s", + "for_last_24_hours": "pendant les derni\u00e8res 24 heures", + "no_domains_found": "Pas de domaines trouv\u00e9s", + "requests_count": "Nombre de requ\u00eates", + "top_blocked_domains": "Les domaines les plus fr\u00e9quemment bloqu\u00e9s", + "top_clients": "Meilleurs clients", + "no_clients_found": "Pas de clients trouv\u00e9s", + "general_statistics": "Statistiques g\u00e9n\u00e9rales", + "number_of_dns_query_24_hours": "Un nombre de requ\u00eates DNS quieries trait\u00e9es pendant les 24 heures derni\u00e8res", + "number_of_dns_query_blocked_24_hours": "Un nombre de requ\u00eates DNS bloqu\u00e9es par les filtres adblock et les listes de blocage des hosts", + "number_of_dns_query_blocked_24_hours_by_sec": "Un nombre de requ\u00eates DNS bloqu\u00e9es par le module S\u00e9curit\u00e9 de navigation d'AdGuard", + "number_of_dns_query_blocked_24_hours_adult": "Un nombre de sites \u00e0 contenu adulte bloqu\u00e9s", + "enforced_save_search": "Recherche s\u00e9curis\u00e9e renforc\u00e9e", + "number_of_dns_query_to_safe_search": "Un nombre de requ\u00eates DNS faites avec la Recherche securis\u00e9e", + "average_processing_time": "Temps moyen de traitement", + "average_processing_time_hint": "Temps moyen (en millisecondes) de traitement d'une requ\u00eate DNS", + "block_domain_use_filters_and_hosts": "Bloquez les domaines \u00e0 l'aide des filtres et fichiers hosts", + "filters_block_toggle_hint": "Vous pouvez configurer les r\u00e8gles de filtrage dans les param\u00e8tres des Filtres<\/a>.", + "use_adguard_browsing_sec": "Utilisez le service S\u00e9curit\u00e9 de navigation d'AdGuard", + "use_adguard_browsing_sec_hint": "AdGuard Home va v\u00e9rifier si le domaine est dans la liste noire du service de s\u00e9curit\u00e9 de navigation. Pour cela il va utiliser un lookup API discret : le pr\u00e9fixe court du hash du nom de domaine SHA256 sera envoy\u00e9 au serveur.", + "use_adguard_parental": "Utiliser le contr\u00f4le parental d'AdGuard", + "use_adguard_parental_hint": "AdGuard Home va v\u00e9rifier s'il y a du contenu pour adultes sur le domaine. Ce sera fait par aide du m\u00eame API discret que celui utilis\u00e9 par le service de S\u00e9curit\u00e9 de navigation.", + "enforce_safe_search": "Renforcer la recherche s\u00e9curis\u00e9e", + "enforce_save_search_hint": "AdGuard Home peut renforcer la Recherche s\u00e9curis\u00e9e dans les moteurs de recherche suivants : Google, Youtube, Bing et Yandex.", + "no_servers_specified": "Pas de serveurs sp\u00e9cifi\u00e9s", + "no_settings": "Pas de param\u00e8tres", + "general_settings": "Param\u00e8tres g\u00e9n\u00e9raux", + "upstream_dns": "Serveurs DNS upstream", + "upstream_dns_hint": "Si vous laisses ce champ vide, AdGuard Home va utiliser Cloudflare DNS<\/a> somme upstream. Utilisez le pr\u00e9fixe tls:\/\/ pour DNS via les serveurs TLS .", + "test_upstream_btn": "Tester les upstreams", + "apply_btn": "Appliquer", + "disabled_filtering_toast": "Filtrage d\u00e9sactiv\u00e9", + "enabled_filtering_toast": "Filtrage activ\u00e9", + "disabled_safe_browsing_toast": "Surfing s\u00e9curis\u00e9 d\u00e9sactiv\u00e9", + "enabled_safe_browsing_toast": "Surfing s\u00e9curis\u00e9 activ\u00e9", + "disabled_parental_toast": "Contr\u00f4le parental d\u00e9sactiv\u00e9", + "enabled_parental_toast": "Contr\u00f4le parental activ\u00e9", + "disabled_safe_search_toast": "Recherche s\u00e9curis\u00e9e d\u00e9sactiv\u00e9e", + "enabled_save_search_toast": "Recherche s\u00e9curis\u00e9e activ\u00e9e", + "enabled_table_header": "Activ\u00e9", + "name_table_header": "Nom", + "filter_url_table_header": "URL du filtre", + "rules_count_table_header": "Nombre des r\u00e8gles", + "last_time_updated_table_header": "Derni\u00e8re mise \u00e0 jour", + "actions_table_header": "Actions", + "delete_table_action": "Supprimer", + "filters_and_hosts": "Listes de blocage des filtres et hosts", + "filters_and_hosts_hint": "AdGuard Home comprend les r\u00e8gles basiques de blocage ainsi que la syntaxe des fichiers hosts.", + "no_filters_added": "Aucun filtre ajout\u00e9", + "add_filter_btn": "Ajouter filtre", + "cancel_btn": "Annuler", + "enter_name_hint": "Saisir nom", + "enter_url_hint": "Saisir URL", + "check_updates_btn": "V\u00e9rifier les mises \u00e0 jour", + "new_filter_btn": "Abonnement \u00e0 un nouveau filtre", + "enter_valid_filter_url": "Saisir un URL valide pour s'abonner au filtre ou \u00e0 un fichier host.", + "custom_filter_rules": "R\u00e8gles de filtrage d'utilisateur", + "custom_filter_rules_hint": "Saisissez la r\u00e8gle en une ligne. C'est possible d'utiliser les r\u00e8gles de blocage ou la syntaxe des fichiers hosts.", + "examples_title": "Exemples", + "example_meaning_filter_block": "bloquer l'acc\u00e9s au domaine exemple.org et \u00e0 tous ses sous-domaines", + "example_meaning_filter_whitelist": "d\u00e9bloquer l'acc\u00e9s au domaine exemple.org et \u00e0 tous ses sous-domaines", + "example_meaning_host_block": "AdGuard Home va retourner l'adresse 127.0.0.1 au domaine example.org (mais pas aux sous-domaines).", + "example_comment": "! Voici comment ajouter une d\u00e9scription", + "example_comment_meaning": "commentaire", + "example_comment_hash": "# Et comme \u00e7a aussi on peut laisser des commentaires", + "all_filters_up_to_date_toast": "Tous les filtres sont mis \u00e0 jour", + "updated_upstream_dns_toast": "Les serveurs DNS upstream sont mis \u00e0 jour", + "dns_test_ok_toast": "Les serveurs DNS sp\u00e9cifi\u00e9s fonctionnent de mani\u00e8re incorrecte", + "dns_test_not_ok_toast": "Server \"{{key}}\": could not be used, please check that you've written it correctly", + "unblock_btn": "D\u00e9bloquer", + "block_btn": "Bloquer", + "time_table_header": "Temps", + "domain_name_table_header": "Nom de domaine", + "type_table_header": "Type", + "response_table_header": "R\u00e9ponse", + "empty_response_status": "Vide", + "show_all_filter_type": "Montrer tout", + "show_filtered_type": "Montrer les sites filtr\u00e9s", + "no_logs_found": "Aucun journal trouv\u00e9", + "disabled_log_btn": "D\u00e9sactiver le journal", + "download_log_file_btn": "T\u00e9l\u00e9charger le fichier de journal", + "refresh_btn": "Actualiser", + "enabled_log_btn": "Activer le journal", + "last_dns_queries": "5000 derni\u00e8res requ\u00eates DNS", + "previous_btn": "Pr\u00e9c\u00e9dent", + "next_btn": "Suivant", + "loading_table_status": "Chargement en cours ...", + "page_table_footer_text": "Page", + "of_table_footer_text": "de", + "rows_table_footer_text": "lignes", + "updated_custom_filtering_toast": "R\u00e8gles de filtrage d'utilisateur mises \u00e0 jour", + "rule_removed_from_custom_filtering_toast": "R\u00e8gle retir\u00e9e des r\u00e8gles d'utilisateur", + "rule_added_to_custom_filtering_toast": "R\u00e8gle ajout\u00e9e aux r\u00e8gles d'utilisateur", + "query_log_disabled_toast": "Journal de requ\u00eates d\u00e9sactiv\u00e9", + "query_log_enabled_toast": "Journal de requ\u00eates activ\u00e9", + "source_label": "Source", + "found_in_known_domain_db": "Trouv\u00e9 dans la base de donn\u00e9es des domaines connus", + "category_label": "Cat\u00e9gorie", + "rule_label": "R\u00e8gle", + "filter_label": "Filtre" +} \ No newline at end of file diff --git a/client/src/__locales/ja.json b/client/src/__locales/ja.json new file mode 100644 index 00000000..a2865c05 --- /dev/null +++ b/client/src/__locales/ja.json @@ -0,0 +1,124 @@ +{ + "back": "\u623b\u308b", + "dashboard": "\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9", + "settings": "\u8a2d\u5b9a", + "filters": "\u30d5\u30a3\u30eb\u30bf", + "query_log": "\u30af\u30a8\u30ea\u30fb\u30ed\u30b0", + "faq": "FAQ", + "version": "\u30d0\u30fc\u30b8\u30e7\u30f3", + "address": "\u30a2\u30c9\u30ec\u30b9", + "on": "ON", + "off": "OFF", + "copyright": "\u8457\u4f5c\u6a29", + "homepage": "\u30db\u30fc\u30e0\u30da\u30fc\u30b8", + "report_an_issue": "\u554f\u984c\u3092\u5831\u544a\u3059\u308b", + "enable_protection": "\u4fdd\u8b77\u3092\u6709\u52b9\u306b\u3059\u308b", + "enabled_protection": "\u4fdd\u8b77\u6709\u52b9", + "disable_protection": "\u4fdd\u8b77\u3092\u7121\u52b9\u306b\u3059\u308b", + "disabled_protection": "\u4fdd\u8b77\u7121\u52b9", + "refresh_statics": "\u7d71\u8a08\u30c7\u30fc\u30bf\u3092\u66f4\u65b0\u3059\u308b", + "dns_query": "DNS\u30af\u30a8\u30ea", + "blocked_by": "\u306b\u3088\u3063\u3066\u30d6\u30ed\u30c3\u30af\u6e08\u307f", + "stats_malware_phishing": "\u30d6\u30ed\u30c3\u30af\u6e08\u307f\u30de\u30eb\u30a6\u30a7\u30a2\uff0f\u30d5\u30a3\u30c3\u30b7\u30f3\u30b0", + "stats_adult": "\u30d6\u30ed\u30c3\u30af\u6e08\u307f\u30a2\u30c0\u30eb\u30c8\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8", + "stats_query_domain": "\u983b\u7e41\u306b\u554f\u3044\u5408\u308f\u305b\u3055\u308c\u308b\u30c9\u30e1\u30a4\u30f3", + "for_last_24_hours": "\u904e\u53bb24\u6642\u9593\u5185", + "no_domains_found": "\u30c9\u30e1\u30a4\u30f3\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f", + "requests_count": "\u30ea\u30af\u30a8\u30b9\u30c8\u6570", + "top_blocked_domains": "\u6700\u3082\u30d6\u30ed\u30c3\u30af\u3055\u308c\u308b\u30c9\u30e1\u30a4\u30f3", + "top_clients": "\u30c8\u30c3\u30d7\u30af\u30e9\u30a4\u30a2\u30f3\u30c8", + "no_clients_found": "\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f", + "general_statistics": "\u4e00\u822c\u7d71\u8a08", + "number_of_dns_query_24_hours": "\u904e\u53bb24\u6642\u9593\u306b\u51e6\u7406\u3055\u308c\u305fDNS\u30af\u30a8\u30ea\u306e\u6570", + "number_of_dns_query_blocked_24_hours": "\u5e83\u544a\u30d6\u30ed\u30c3\u30af\u30d5\u30a3\u30eb\u30bf\u3068\u30db\u30b9\u30c8\u30d6\u30ed\u30c3\u30af\u30ea\u30b9\u30c8\u306b\u3088\u3063\u3066\u30d6\u30ed\u30c3\u30af\u3055\u308c\u305fDNS\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6570", + "number_of_dns_query_blocked_24_hours_by_sec": "AdGuard\u30d6\u30e9\u30a6\u30b8\u30f3\u30b0\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u3088\u3063\u3066\u30d6\u30ed\u30c3\u30af\u3055\u308c\u305fDNS\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6570", + "number_of_dns_query_blocked_24_hours_adult": "\u30d6\u30ed\u30c3\u30af\u6e08\u307f\u6210\u4eba\u5411\u3051\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306e\u6570", + "enforced_save_search": "\u30bb\u30fc\u30d5\u30b5\u30fc\u30c1\u9069\u7528\u6e08\u307f", + "number_of_dns_query_to_safe_search": "\u30bb\u30fc\u30d5\u30b5\u30fc\u30c1\u304c\u9069\u7528\u3055\u308c\u305f\u691c\u7d22\u30a8\u30f3\u30b8\u30f3\u306b\u5bfe\u3059\u308bDNS\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6570", + "average_processing_time": "\u5e73\u5747\u51e6\u7406\u6642\u9593", + "average_processing_time_hint": "DNS\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u51e6\u7406\u306b\u304b\u304b\u308b\u5e73\u5747\u6642\u9593\uff08\u30df\u30ea\u79d2\u5358\u4f4d\uff09", + "block_domain_use_filters_and_hosts": "\u30d5\u30a3\u30eb\u30bf\u3068\u30db\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30c9\u30e1\u30a4\u30f3\u3092\u30d6\u30ed\u30c3\u30af\u3059\u308b", + "filters_block_toggle_hint": "\u30d5\u30a3\u30eb\u30bf<\/a>\u306e\u8a2d\u5b9a\u3067\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0\u30eb\u30fc\u30eb\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002", + "use_adguard_browsing_sec": "AdGuard\u30d6\u30e9\u30a6\u30b8\u30f3\u30b0\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3Web\u30b5\u30fc\u30d3\u30b9\u3092\u4f7f\u7528\u3059\u308b", + "use_adguard_browsing_sec_hint": "AdGuard Home\u306f\u3001\u30d6\u30e9\u30a6\u30b8\u30f3\u30b0\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3Web\u30b5\u30fc\u30d3\u30b9\u306b\u3088\u3063\u3066\u30c9\u30e1\u30a4\u30f3\u304c\u30d6\u30e9\u30c3\u30af\u30ea\u30b9\u30c8\u306b\u767b\u9332\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002 \u3053\u308c\u306f\u30d7\u30e9\u30a4\u30d0\u30b7\u30fc\u3092\u8003\u616e\u3057\u305fAPI\u3092\u4f7f\u7528\u3057\u3066\u30c1\u30a7\u30c3\u30af\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u30c9\u30e1\u30a4\u30f3\u540dSHA256\u30cf\u30c3\u30b7\u30e5\u306e\u77ed\u3044\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u306e\u307f\u304c\u30b5\u30fc\u30d0\u30fc\u306b\u9001\u4fe1\u3055\u308c\u307e\u3059\u3002", + "use_adguard_parental": "AdGuard\u30da\u30a2\u30ec\u30f3\u30bf\u30eb\u30b3\u30f3\u30c8\u30ed\u30fc\u30ebWeb\u30b5\u30fc\u30d3\u30b9\u3092\u4f7f\u7528\u3059\u308b", + "use_adguard_parental_hint": "AdGuard Home\u306f\u3001\u30c9\u30e1\u30a4\u30f3\u306b\u30a2\u30c0\u30eb\u30c8\u30b3\u30f3\u30c6\u30f3\u30c4\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002 \u30d6\u30e9\u30a6\u30b8\u30f3\u30b0\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3Web\u30b5\u30fc\u30d3\u30b9\u3068\u540c\u3058\u30d7\u30e9\u30a4\u30d0\u30b7\u30fc\u306b\u512a\u3057\u3044API\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002", + "enforce_safe_search": "\u30bb\u30fc\u30d5\u30b5\u30fc\u30c1\u3092\u9069\u7528\u3059\u308b", + "enforce_save_search_hint": "AdGuard Home\u306f\u3001Google\u3001Youtube\u3001Bing\u3001Yandex\u306e\u691c\u7d22\u30a8\u30f3\u30b8\u30f3\u3067\u30bb\u30fc\u30d5\u30b5\u30fc\u30c1\u3092\u9069\u7528\u3067\u304d\u307e\u3059\u3002", + "no_servers_specified": "\u30b5\u30fc\u30d0\u30fc\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093", + "no_settings": "\u8a2d\u5b9a\u306a\u3057", + "general_settings": "\u4e00\u822c\u8a2d\u5b9a", + "upstream_dns": "\u30a2\u30c3\u30d7\u30b9\u30c8\u30ea\u30fc\u30e0DNS\u30b5\u30fc\u30d0\u30fc", + "upstream_dns_hint": "\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u7a7a\u306e\u307e\u307e\u306b\u3059\u308b\u3068\u3001AdGuard Home\u306fCloudflare DNS<\/a>\u3092\u30a2\u30c3\u30d7\u30b9\u30c8\u30ea\u30fc\u30e0\u3068\u3057\u3066\u4f7f\u7528\u3057\u307e\u3059\u3002 TLS\u30b5\u30fc\u30d0\u30fc\u7d4c\u7531\u306eDNS\u306b\u306f\u3001\uff62tls:\/\/\u300d\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002", + "test_upstream_btn": "\u30a2\u30c3\u30d7\u30b9\u30c8\u30ea\u30fc\u30e0\u30b5\u30fc\u30d0\u30fc\u30c6\u30b9\u30c8", + "apply_btn": "\u9069\u7528", + "disabled_filtering_toast": "\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u7121\u52b9", + "enabled_filtering_toast": "\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u6709\u52b9", + "disabled_safe_browsing_toast": "\u30bb\u30fc\u30d5\u30d6\u30e9\u30a6\u30b8\u30f3\u30b0\u7121\u52b9", + "enabled_safe_browsing_toast": "\u30bb\u30fc\u30d5\u30d6\u30e9\u30a6\u30b8\u30f3\u30b0\u6709\u52b9", + "disabled_parental_toast": "\u30da\u30a2\u30ec\u30f3\u30bf\u30eb\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u7121\u52b9", + "enabled_parental_toast": "\u30da\u30a2\u30ec\u30f3\u30bf\u30eb\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u6709\u52b9", + "disabled_safe_search_toast": "\u30bb\u30fc\u30d5\u30b5\u30fc\u30c1\u7121\u52b9", + "enabled_save_search_toast": "\u30bb\u30fc\u30d5\u30b5\u30fc\u30c1\u6709\u52b9", + "enabled_table_header": "\u6709\u52b9", + "name_table_header": "\u540d\u79f0", + "filter_url_table_header": "\u30d5\u30a3\u30eb\u30bf\u306eURL", + "rules_count_table_header": "\u30eb\u30fc\u30eb\u6570", + "last_time_updated_table_header": "\u6700\u7d42\u66f4\u65b0\u65e5", + "actions_table_header": "\u64cd\u4f5c", + "delete_table_action": "\u524a\u9664", + "filters_and_hosts": "\u30d5\u30a3\u30eb\u30bf\u3068\u30db\u30b9\u30c8\u30d6\u30ed\u30c3\u30af\u30ea\u30b9\u30c8", + "filters_and_hosts_hint": "AdGuard Home\u306f\u3001\u57fa\u672c\u7684\u306a\u5e83\u544a\u30d6\u30ed\u30c3\u30af\u30eb\u30fc\u30eb\u3068\u30db\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u69cb\u6587\u3092\u7406\u89e3\u3057\u3066\u3044\u307e\u3059\u3002", + "no_filters_added": "\u30d5\u30a3\u30eb\u30bf\u306f\u8ffd\u52a0\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f", + "add_filter_btn": "\u30d5\u30a3\u30eb\u30bf\u3092\u8ffd\u52a0\u3059\u308b", + "cancel_btn": "\u30ad\u30e3\u30f3\u30bb\u30eb", + "enter_name_hint": "\u540d\u79f0\u3092\u5165\u529b", + "enter_url_hint": "URL\u3092\u5165\u529b", + "check_updates_btn": "\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3092\u78ba\u8a8d\u3059\u308b", + "new_filter_btn": "\u65b0\u3057\u3044\u30d5\u30a3\u30eb\u30bf\u30fb\u30b5\u30d6\u30b9\u30af\u30ea\u30d7\u30b7\u30e7\u30f3", + "enter_valid_filter_url": "\u30d5\u30a3\u30eb\u30bf\u30fb\u30b5\u30d6\u30b9\u30af\u30ea\u30d7\u30b7\u30e7\u30f3\u304a\u3088\u3073\u30db\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u6709\u52b9\u306aURL\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002", + "custom_filter_rules": "\u30ab\u30b9\u30bf\u30e0\u30fb\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u30eb\u30fc\u30eb", + "custom_filter_rules_hint": "1\u3064\u306e\u884c\u306b1\u3064\u306e\u30eb\u30fc\u30eb\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u5e83\u544a\u30d6\u30ed\u30c3\u30af\u30eb\u30fc\u30eb\u3084\u30db\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u69cb\u6587\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002", + "examples_title": "\u4f8b", + "example_meaning_filter_block": "example.org\u30c9\u30e1\u30a4\u30f3\u3068\u305d\u306e\u3059\u3079\u3066\u306e\u30b5\u30d6\u30c9\u30e1\u30a4\u30f3\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u30d6\u30ed\u30c3\u30af\u3059\u308b", + "example_meaning_filter_whitelist": "example.org\u30c9\u30e1\u30a4\u30f3\u3068\u305d\u306e\u3059\u3079\u3066\u306e\u30b5\u30d6\u30c9\u30e1\u30a4\u30f3\u3078\u306e\u30a2\u30af\u30bb\u30b9\u306e\u30d6\u30ed\u30c3\u30af\u3092\u89e3\u9664\u3059\u308b", + "example_meaning_host_block": "AdGuard Home\u306f\u3001example.org\u30c9\u30e1\u30a4\u30f3\uff08\u30b5\u30d6\u30c9\u30e1\u30a4\u30f3\u306f\u9664\u304f\uff09\u306b\u5bfe\u3057\u3066127.0.0.1\u306e\u30a2\u30c9\u30ec\u30b9\u3092\u8fd4\u3059\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002", + "example_comment": "! \u3053\u3053\u306b\u306f\u30b3\u30e1\u30f3\u30c8\u304c\u5165\u308a\u307e\u3059", + "example_comment_meaning": "\u305f\u3060\u306e\u30b3\u30e1\u30f3\u30c8", + "example_comment_hash": "# \u3053\u3053\u3082\u30b3\u30e1\u30f3\u30c8", + "all_filters_up_to_date_toast": "\u30d5\u30a3\u30eb\u30bf\u306f\u65e2\u306b\u3059\u3079\u3066\u6700\u65b0\u3067\u3059", + "updated_upstream_dns_toast": "\u30a2\u30c3\u30d7\u30b9\u30c8\u30ea\u30fc\u30e0DNS\u30b5\u30fc\u30d0\u30fc\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f", + "dns_test_ok_toast": "\u6307\u5b9a\u3055\u308c\u305fDNS\u30b5\u30fc\u30d0\u30fc\u306f\u6b63\u3057\u304f\u52d5\u4f5c\u3057\u3066\u3044\u307e\u3059", + "dns_test_not_ok_toast": "\u30b5\u30fc\u30d0 \"{{key}}\": \u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u6b63\u3057\u304f\u5165\u529b\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044", + "unblock_btn": "\u30d6\u30ed\u30c3\u30af\u89e3\u9664", + "block_btn": "\u30d6\u30ed\u30c3\u30af", + "time_table_header": "\u6642\u523b", + "domain_name_table_header": "\u30c9\u30e1\u30a4\u30f3\u540d", + "type_table_header": "\u7a2e\u985e", + "response_table_header": "\u5fdc\u7b54", + "empty_response_status": "\u7a7a", + "show_all_filter_type": "\u5168\u3066\u8868\u793a", + "show_filtered_type": "\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u6e08\u307f\u3092\u8868\u793a", + "no_logs_found": "\u30ed\u30b0\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f", + "disabled_log_btn": "\u30ed\u30b0\u3092\u7121\u52b9\u306b\u3059\u308b", + "download_log_file_btn": "\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9", + "refresh_btn": "\u66f4\u65b0", + "enabled_log_btn": "\u30ed\u30b0\u3092\u6709\u52b9\u306b\u3059\u308b", + "last_dns_queries": "\u6700\u7d42\uff15\uff10\uff10\uff10\u672c\u306eDNS\u30af\u30a8\u30ea", + "previous_btn": "\u524d", + "next_btn": "\u6b21\u3078", + "loading_table_status": "\u8aad\u307f\u8fbc\u307f\u4e2d\u2026", + "page_table_footer_text": "\u30da\u30fc\u30b8", + "of_table_footer_text": "\uff0f", + "rows_table_footer_text": "\u884c", + "updated_custom_filtering_toast": "\u30ab\u30b9\u30bf\u30e0\u30fb\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u30eb\u30fc\u30eb\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f", + "rule_removed_from_custom_filtering_toast": "\u30ab\u30b9\u30bf\u30e0\u30fb\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u30eb\u30fc\u30eb\u304b\u3089\u30eb\u30fc\u30eb\u3092\u9664\u53bb\u3057\u307e\u3057\u305f", + "rule_added_to_custom_filtering_toast": "\u30ab\u30b9\u30bf\u30e0\u30fb\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u30eb\u30fc\u30eb\u306b\u30eb\u30fc\u30eb\u3092\u8ffd\u52a0\u3057\u307e\u3057\u305f", + "query_log_disabled_toast": "\u30af\u30a8\u30ea\u30fb\u30ed\u30b0\u7121\u52b9", + "query_log_enabled_toast": "\u30af\u30a8\u30ea\u30fb\u30ed\u30b0\u6709\u52b9", + "source_label": "\u30bd\u30fc\u30b9", + "found_in_known_domain_db": "\u65e2\u77e5\u306e\u30c9\u30e1\u30a4\u30f3\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u3002", + "category_label": "\u30ab\u30c6\u30b4\u30ea", + "rule_label": "\u30eb\u30fc\u30eb", + "filter_label": "\u30d5\u30a3\u30eb\u30bf" +} \ No newline at end of file diff --git a/client/src/__locales/pt-br.json b/client/src/__locales/pt-br.json new file mode 100644 index 00000000..58803b47 --- /dev/null +++ b/client/src/__locales/pt-br.json @@ -0,0 +1,124 @@ +{ + "back": "Voltar", + "dashboard": "Painel", + "settings": "Configura\u00e7\u00f5es", + "filters": "Filtros", + "query_log": "Registro de consultas", + "faq": "FAQ", + "version": "vers\u00e3o", + "address": "endere\u00e7o", + "on": "ON", + "off": "OFF", + "copyright": "Copyright", + "homepage": "P\u00e1gina inicial", + "report_an_issue": "Reportar um problema", + "enable_protection": "Ativar prote\u00e7\u00e3o", + "enabled_protection": "Prote\u00e7\u00e3o ativada", + "disable_protection": "Desativar prote\u00e7\u00e3o", + "disabled_protection": "Prote\u00e7\u00e3o desativada", + "refresh_statics": "Atualizar estat\u00edsticas", + "dns_query": "Consultas de DNS", + "blocked_by": "Bloqueador por", + "stats_malware_phishing": "Bloqueado malware\/phishing", + "stats_adult": "Bloqueado sites adultos", + "stats_query_domain": "Principais dom\u00ednios consultados", + "for_last_24_hours": "nas \u00faltimas 24 horas", + "no_domains_found": "Nenhum dom\u00ednio encontrado", + "requests_count": "Contagem de solicita\u00e7\u00f5es", + "top_blocked_domains": "Principais dom\u00ednios bloqueados", + "top_clients": "Principais clientes", + "no_clients_found": "Nenhuma cliente encontrado", + "general_statistics": "Estat\u00edsticas gerais", + "number_of_dns_query_24_hours": "O n\u00famero de consultas DNS processadas nas \u00faltimas 24 horas", + "number_of_dns_query_blocked_24_hours": "V\u00e1rias solicita\u00e7\u00f5es DNS bloqueadas por filtros de bloqueio de an\u00fancios e listas de bloqueio de hosts", + "number_of_dns_query_blocked_24_hours_by_sec": "V\u00e1rias solicita\u00e7\u00f5es de DNS bloqueadas pelo m\u00f3dulo de seguran\u00e7a da navega\u00e7\u00e3o do AdGuard", + "number_of_dns_query_blocked_24_hours_adult": "V\u00e1rios sites adultos bloqueados", + "enforced_save_search": "For\u00e7ar pesquisa segura", + "number_of_dns_query_to_safe_search": "V\u00e1rias solicita\u00e7\u00f5es de DNS para motores de busca para os quais a pesquisa segura foi aplicada", + "average_processing_time": "Tempo m\u00e9dio de processamento", + "average_processing_time_hint": "Tempo m\u00e9dio em milissegundos no processamento de uma solicita\u00e7\u00e3o DNS", + "block_domain_use_filters_and_hosts": "Bloquear dom\u00ednios usando arquivos de filtros e hosts", + "filters_block_toggle_hint": "Voc\u00ea pode configurar as regras de bloqueio nas configura\u00e7\u00f5es de Filtros<\/a>.", + "use_adguard_browsing_sec": "Usar o servi\u00e7o de seguran\u00e7a da navega\u00e7\u00e3o do AdGuard", + "use_adguard_browsing_sec_hint": "O AdGuard Home ir\u00e1 verificar se o dom\u00ednio est\u00e1 na lista negra do servi\u00e7o de seguran\u00e7a da navega\u00e7\u00e3o. Ele usar\u00e1 a API de pesquisa de privacidade para executar a verifica\u00e7\u00e3o: apenas um prefixo curto do hash do nome de dom\u00ednio SHA256 \u00e9 enviado para o servidor.", + "use_adguard_parental": "Usar o servi\u00e7o de controle parental do AdGuard", + "use_adguard_parental_hint": "O AdGuard Home ir\u00e1 verificar se o dom\u00ednio cont\u00e9m conte\u00fado adulto. Ele usa a mesma API amig\u00e1vel de privacidade que o servi\u00e7o de seguran\u00e7a da navega\u00e7\u00e3o.", + "enforce_safe_search": "For\u00e7ar pesquisa segura", + "enforce_save_search_hint": "O AdGuard Home pode for\u00e7ar a pesquisa segura nos seguintes motores de busca: Google, Youtube, Bing e Yandex.", + "no_servers_specified": "Nenhum servidor especificado", + "no_settings": "N\u00e3o configurado", + "general_settings": "Configura\u00e7\u00f5es gerais", + "upstream_dns": "Servidores DNS upstream", + "upstream_dns_hint": "Se voc\u00ea deixar este campo vazio, o AdGuard Home ir\u00e1 usar oDNS da Cloudflare<\/a> como upstream. Use o prefixo tls:\/\/ para servidores DNS com TLS.", + "test_upstream_btn": "Testar upstreams", + "apply_btn": "Aplicar", + "disabled_filtering_toast": "Filtragem desativada", + "enabled_filtering_toast": "Filtragem ativada", + "disabled_safe_browsing_toast": "Navega\u00e7\u00e3o segura desativada", + "enabled_safe_browsing_toast": "Navega\u00e7\u00e3o segura ativada", + "disabled_parental_toast": "Controle parental desativado", + "enabled_parental_toast": "Controle parental ativado", + "disabled_safe_search_toast": "Pesquisa segura desativada", + "enabled_save_search_toast": "Pesquisa segura ativada", + "enabled_table_header": "Ativado", + "name_table_header": "Nome", + "filter_url_table_header": "URL do filtro", + "rules_count_table_header": "Quantidade de regras", + "last_time_updated_table_header": "\u00daltima atualiza\u00e7\u00e3o", + "actions_table_header": "A\u00e7\u00f5es", + "delete_table_action": "Excluir", + "filters_and_hosts": "Filtros e listas de bloqueio de hosts", + "filters_and_hosts_hint": "O AdGuard Home entende regras b\u00e1sicas de bloqueio de an\u00fancios e a sintaxe de arquivos de hosts.", + "no_filters_added": "Nenhum filtro adicionado", + "add_filter_btn": "Adicionar filtro", + "cancel_btn": "Cancelar", + "enter_name_hint": "Digite o nome", + "enter_url_hint": "Digite a URL", + "check_updates_btn": "Verificar atualiza\u00e7\u00f5es", + "new_filter_btn": "Nova inscri\u00e7\u00e3o de filtro", + "enter_valid_filter_url": "Digite a URL v\u00e1lida para efetuar a inscri\u00e7\u00e3o de filtro ou um arquivo de hosts.", + "custom_filter_rules": "Regras de filtragem personalizadas", + "custom_filter_rules_hint": "Digite uma regra por linha. Voc\u00ea pode usar regras de bloqueio de an\u00fancios ou a sintaxe de arquivos de hosts.", + "examples_title": "Exemplos", + "example_meaning_filter_block": "bloqueia o acesso ao dom\u00ednio exemplo.org e a todos os seus subdom\u00ednios", + "example_meaning_filter_whitelist": "desbloqueia o acesso ao dom\u00ednio exemplo.org e a todos os seus subdom\u00ednios", + "example_meaning_host_block": "O AdGuard Home ir\u00e1 retornar o endere\u00e7o 127.0.0.1 para o dom\u00ednio exemplo.org (exceto seus subdom\u00ednios).", + "example_comment": "! Aqui vai um coment\u00e1rio", + "example_comment_meaning": "apenas um coment\u00e1rio", + "example_comment_hash": "# Tamb\u00e9m um coment\u00e1rio", + "all_filters_up_to_date_toast": "Todos os filtros j\u00e1 est\u00e3o atualizados", + "updated_upstream_dns_toast": "Atualizado os servidores DNS upstream", + "dns_test_ok_toast": "Os servidores DNS especificados est\u00e3o funcionando corretamente", + "dns_test_not_ok_toast": "O servidor \"{{key}}\": n\u00e3o p\u00f4de ser utilizado. Por favor, verifique se voc\u00ea escreveu corretamente", + "unblock_btn": "Desbloquear", + "block_btn": "Bloquear", + "time_table_header": "Data", + "domain_name_table_header": "Nome de dom\u00ednio", + "type_table_header": "Tipo", + "response_table_header": "Resposta", + "empty_response_status": "Vazio", + "show_all_filter_type": "Mostrar todos", + "show_filtered_type": "Mostrar filtrados", + "no_logs_found": "Nenhum registro encontrado", + "disabled_log_btn": "Desativar registros", + "download_log_file_btn": "Baixar arquivo de registros", + "refresh_btn": "Atualizar", + "enabled_log_btn": "Ativar registros", + "last_dns_queries": "\u00daltimas 5000 consultas DNS", + "previous_btn": "Anterior", + "next_btn": "Pr\u00f3ximo", + "loading_table_status": "Carregando", + "page_table_footer_text": "P\u00e1gina", + "of_table_footer_text": "de", + "rows_table_footer_text": "linhas", + "updated_custom_filtering_toast": "Regras de filtragem personalizadas atualizadas", + "rule_removed_from_custom_filtering_toast": "Regra removida das regras de filtragem personalizadas", + "rule_added_to_custom_filtering_toast": "Regra adicionada \u00e0s regras de filtragem personalizadas", + "query_log_disabled_toast": "Registros de consultas desativado", + "query_log_enabled_toast": "Registros de consultas ativado", + "source_label": "Fonte", + "found_in_known_domain_db": "Encontrado no banco de dados de dom\u00ednios conhecidos.", + "category_label": "Categoria", + "rule_label": "Regra", + "filter_label": "Filtro" +} \ No newline at end of file diff --git a/client/src/__locales/ru.json b/client/src/__locales/ru.json index e0f19e08..d1ad4656 100644 --- a/client/src/__locales/ru.json +++ b/client/src/__locales/ru.json @@ -33,7 +33,7 @@ "number_of_dns_query_blocked_24_hours": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e DNS-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c\u0438 \u0438 \u0431\u043b\u043e\u043a-\u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438", "number_of_dns_query_blocked_24_hours_by_sec": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e DNS-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u0410\u043d\u0442\u0438\u0444\u0438\u0448\u0438\u043d\u0433\u0430 AdGuard", "number_of_dns_query_blocked_24_hours_adult": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \"\u0441\u0430\u0439\u0442\u043e\u0432 \u0434\u043b\u044f \u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0445\"", - "enforced_save_search": "\u0423\u0441\u0438\u043b\u0435\u043d\u043d\u044b\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a", + "enforced_save_search": "\u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a", "number_of_dns_query_to_safe_search": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 DNS \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u044b\u043b \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a", "average_processing_time": "\u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430", "average_processing_time_hint": "\u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 DNS \u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445", diff --git a/client/src/__locales/sv.json b/client/src/__locales/sv.json new file mode 100644 index 00000000..8afe4e56 --- /dev/null +++ b/client/src/__locales/sv.json @@ -0,0 +1,124 @@ +{ + "back": "Tiilbaka", + "dashboard": "Kontrollpanel", + "settings": "Inst\u00e4llningar", + "filters": "Filter", + "query_log": "F\u00f6rfr\u00e5gningslogg", + "faq": "FAQ", + "version": "version", + "address": "adress", + "on": "P\u00c5", + "off": "AV", + "copyright": "Copyright", + "homepage": "Hemsida", + "report_an_issue": "Rapportera ett problem", + "enable_protection": "Koppla p\u00e5 skydd", + "enabled_protection": "Kopplade p\u00e5 skydd", + "disable_protection": "Koppla bort skydd", + "disabled_protection": "Kopplade bort skydd", + "refresh_statics": "Uppdatera statistik", + "dns_query": "DNS-f\u00f6rfr\u00e5gningar", + "blocked_by": "Blockerat av", + "stats_malware_phishing": "Blockerad skadekod\/phising", + "stats_adult": "Blockerade vuxensajter", + "stats_query_domain": "Mest efters\u00f6kta dom\u00e4ner", + "for_last_24_hours": "under de senaste 24 timamrna", + "no_domains_found": "Inga dom\u00e4ner hittade", + "requests_count": "F\u00f6rfr\u00e5gningsantal", + "top_blocked_domains": "Flest blockerade dom\u00e4ner", + "top_clients": "Toppklienter", + "no_clients_found": "Inga hitatde klienter", + "general_statistics": "Allm\u00e4n statistik", + "number_of_dns_query_24_hours": "Ett antal DNS-f\u00f6rfr\u00e5gningar utf\u00f6rdes under de senaste 244 timamrna", + "number_of_dns_query_blocked_24_hours": "Ett antal DNS-f\u00f6rfr\u00e5gningar blockerades av annonsfilter och v\u00e4rdens bloceringsklistor", + "number_of_dns_query_blocked_24_hours_by_sec": "Ett antal DNS-f\u00f6rfr\u00e5gningar blockerades av AdGuards modul f\u00f6r surfs\u00e4kerhet", + "number_of_dns_query_blocked_24_hours_adult": "Ett anta vuxensajter blockerades", + "enforced_save_search": "Aktivering av S\u00e4ker surf", + "number_of_dns_query_to_safe_search": "Ett antal DNS-f\u00f6rfr\u00e5gningar genomf\u00f6rdes p\u00e5 s\u00f6kmotorer med S\u00e4ker surf aktiverat", + "average_processing_time": "Genomsnittlig processtid", + "average_processing_time_hint": "Genomsnittlig processtid i millisekunder f\u00f6r DNS-f\u00f6rfr\u00e5gning", + "block_domain_use_filters_and_hosts": "Blockera dom\u00e4ner med filter- och v\u00e4rdfiler", + "filters_block_toggle_hint": "Du kan st\u00e4lla in egna blockerings regler i Filterinst\u00e4llningar<\/a>.", + "use_adguard_browsing_sec": "Amv\u00e4nd AdGuards webbservice f\u00f6r surfs\u00e4kerhet", + "use_adguard_browsing_sec_hint": "AdGuard Home kommer att kontrollera om en dom\u00e4n \u00e4r svartlistad i webbservicens surfs\u00e4kerhet. Med en integritetsv\u00e4nlig metod g\u00f6rs en API-lookup f\u00f6r att kontrollera : endast en kort prefix i dom\u00e4nnamnet SHA256 hash skickas till servern.", + "use_adguard_parental": "Anv\u00e4nda AdGuards webbservice f\u00f6r f\u00e4r\u00e4ldrakontroll", + "use_adguard_parental_hint": "AdGuard Home kommer att kontrollera dom\u00e4ner f\u00f6r inneh\u00e5ll av vuxenmaterial . Samma integritetsv\u00e4nliga metod f\u00f6r API-lookup som till\u00e4mpas i webbservicens surfs\u00e4kerhet anv\u00e4nds.", + "enforce_safe_search": "Till\u00e4mpa S\u00e4ker surf", + "enforce_save_search_hint": "AdGuard Home kan framtvinga s\u00e4ker surf i f\u00f6ljande s\u00f6kmoterer: Google, Youtube, Bing, och Yandex.", + "no_servers_specified": "Inga servrar angivna", + "no_settings": "Inga inst\u00e4llningar", + "general_settings": "Allm\u00e4nna inst\u00e4llningar", + "upstream_dns": "Upstream DNS-servrar", + "upstream_dns_hint": "Om du l\u00e5ter f\u00e4ltet vara tomt kommer AdGuard Home att anv\u00e4nda Cloudflare DNS<\/a> f\u00f6r upstream. Anv\u00e4nd tls:\/\/ prefix f\u00f6r DNS \u00f6ver TLS-servrar.", + "test_upstream_btn": "Testa uppstr\u00f6mmar", + "apply_btn": "Till\u00e4mpa", + "disabled_filtering_toast": "Filtrering bortkopplad", + "enabled_filtering_toast": "Filtrering inkopplad", + "disabled_safe_browsing_toast": "S\u00e4ker surfning bortkopplat", + "enabled_safe_browsing_toast": "S\u00e4ker surfning inkopplat", + "disabled_parental_toast": "F\u00f6r\u00e4ldrakontroll bortkopplat", + "enabled_parental_toast": "F\u00f6r\u00e4ldrakontroll inkopplat", + "disabled_safe_search_toast": "S\u00e4ker webbs\u00f6kning bortkopplat", + "enabled_save_search_toast": "S\u00e4ker webbs\u00f6kning inkopplat", + "enabled_table_header": "Inkopplat", + "name_table_header": "Namn", + "filter_url_table_header": "Filtrerar URL", + "rules_count_table_header": "Regelantal", + "last_time_updated_table_header": "Uppdaterades senast", + "actions_table_header": "\u00c5tg\u00e4rder", + "delete_table_action": "Ta bort", + "filters_and_hosts": "Filtrerings- och v\u00e4rdlistor f\u00f6r blockering", + "filters_and_hosts_hint": "AdGuard till\u00e4mpar grundl\u00e4ggande annonsblockeringsregler och v\u00e4rdfiltersyntaxer", + "no_filters_added": "Inga filter tillagda", + "add_filter_btn": "L\u00e4gg till filter", + "cancel_btn": "Avbryt", + "enter_name_hint": "Skriv in namn", + "enter_url_hint": "Skriv in URL", + "check_updates_btn": "S\u00f6k efter uppdateringar", + "new_filter_btn": "Nytt filterabonemang", + "enter_valid_filter_url": "Skriv in en giltigt URL till ett filterabonnemang eller v\u00e4rdfil.", + "custom_filter_rules": "Egna filterregler", + "custom_filter_rules_hint": "Skriv en regel per rad. Du kan anv\u00e4nda antingen annonsblockeringsregler eller v\u00e4rdfilssyntax.", + "examples_title": "Exempel", + "example_meaning_filter_block": "blockera \u00e5tkomst till dom\u00e4n example.org domain och alla dess subdom\u00e4ner", + "example_meaning_filter_whitelist": "avblockera \u00e5tkomst till dom\u00e4n example.org domain och alla dess subdom\u00e4ner", + "example_meaning_host_block": "AdGuard Home kommer nu att returnera adress 127.0.0.1 f\u00f6r dom\u00e4nexemplet example.org (dock utan dess subdom\u00e4ner).", + "example_comment": "! H\u00e4r kommer en kommentar", + "example_comment_meaning": "Endast en kommentar", + "example_comment_hash": "# Ocks\u00e5 en kommentar", + "all_filters_up_to_date_toast": "Alla filter \u00e4r redan aktuella", + "updated_upstream_dns_toast": "Uppdaterade uppstr\u00f6ms-dns-servrar", + "dns_test_ok_toast": "Angivna DNS servrar fungerar korrekt", + "dns_test_not_ok_toast": "Server \"{{key}}\": kunde inte anv\u00e4ndas. Var sn\u00e4ll och kolla att du skrivit in r\u00e4tt", + "unblock_btn": "Avblockera", + "block_btn": "Blockera", + "time_table_header": "Tid", + "domain_name_table_header": "Dom\u00e4nnamn", + "type_table_header": "Typ", + "response_table_header": "Svar", + "empty_response_status": "Empty", + "show_all_filter_type": "Visa alla", + "show_filtered_type": "Visa filtrerade", + "no_logs_found": "Inga logga funna", + "disabled_log_btn": "Koppla bort logg", + "download_log_file_btn": "Ladda ner loggfil", + "refresh_btn": "L\u00e4s in igen", + "enabled_log_btn": "Koppla in logg", + "last_dns_queries": "De senaste 5000 DNS-anropen", + "previous_btn": "F\u00f6reg\u00e5ende", + "next_btn": "N\u00e4sta", + "loading_table_status": "L\u00e4ser in...", + "page_table_footer_text": "Sida", + "of_table_footer_text": "av", + "rows_table_footer_text": "rader", + "updated_custom_filtering_toast": "Uppdaterade de egna filterreglerna", + "rule_removed_from_custom_filtering_toast": "Regel borttagen fr\u00e5n de egna filterreglerna", + "rule_added_to_custom_filtering_toast": "Regel tillagd till de egna filterreglerna", + "query_log_disabled_toast": "F\u00f6rfr\u00e5gningsloggen bortkopplad", + "query_log_enabled_toast": "F\u00f6rfr\u00e5gningsloggen inkopplad", + "source_label": "K\u00e4lla", + "found_in_known_domain_db": "Hittad i dom\u00e4ndatabas.", + "category_label": "Kategori", + "rule_label": "Regel", + "filter_label": "Filter" +} \ No newline at end of file diff --git a/client/src/helpers/constants.js b/client/src/helpers/constants.js index 3777fdd1..1fe9348a 100644 --- a/client/src/helpers/constants.js +++ b/client/src/helpers/constants.js @@ -27,11 +27,31 @@ export const LANGUAGES = [ name: 'English', }, { - key: 'ru', - name: 'Русский', + key: 'es', + name: 'Español', + }, + { + key: 'fr', + name: 'Français', + }, + { + key: 'pt-br', + name: 'Português (BR)', + }, + { + key: 'sv', + name: 'Svenska', }, { key: 'vi', name: 'Tiếng Việt', }, + { + key: 'ru', + name: 'Русский', + }, + { + key: 'ja', + name: '日本語', + }, ]; diff --git a/client/src/i18n.js b/client/src/i18n.js index ce7a3424..bd5f3832 100644 --- a/client/src/i18n.js +++ b/client/src/i18n.js @@ -6,23 +6,45 @@ import langDetect from 'i18next-browser-languagedetector'; import vi from './__locales/vi.json'; import en from './__locales/en.json'; import ru from './__locales/ru.json'; +import es from './__locales/es.json'; +import fr from './__locales/fr.json'; +import ja from './__locales/ja.json'; +import sv from './__locales/sv.json'; +import ptBR from './__locales/pt-br.json'; + +const resources = { + en: { + translation: en, + }, + vi: { + translation: vi, + }, + ru: { + translation: ru, + }, + es: { + translation: es, + }, + fr: { + translation: fr, + }, + ja: { + translation: ja, + }, + sv: { + translation: sv, + }, + 'pt-BR': { + translation: ptBR, + }, +}; i18n .use(langDetect) .use(initReactI18n) .use(reactI18nextModule) // passes i18n down to react-i18next .init({ - resources: { - en: { - translation: en, - }, - vi: { - translation: vi, - }, - ru: { - translation: ru, - }, - }, + resources, fallbackLng: 'en', keySeparator: false, // we use content as keys nsSeparator: false, // Fix character in content diff --git a/i18n.go b/i18n.go index 7f0652e1..25aaf153 100644 --- a/i18n.go +++ b/i18n.go @@ -12,9 +12,14 @@ import ( // internationalization // -------------------- var allowedLanguages = map[string]bool{ - "en": true, - "ru": true, - "vi": true, + "en": true, + "ru": true, + "vi": true, + "es": true, + "fr": true, + "ja": true, + "sv": true, + "pt-br": true, } func isLanguageAllowed(language string) bool { diff --git a/scripts/translations/download.js b/scripts/translations/download.js index cbdfc76d..4afd06a4 100644 --- a/scripts/translations/download.js +++ b/scripts/translations/download.js @@ -4,7 +4,7 @@ const crypto = require('crypto'); const requestPromise = require('request-promise'); const LOCALES_DIR = '../../client/src/__locales'; -const LOCALES_LIST = ['en', 'ru', 'vi']; +const LOCALES_LIST = ['en', 'ru', 'vi', 'es', 'fr', 'ja', 'sv', 'pt-br']; /** * Hash content From d8c97cbabe7535b34d30cea02087201ed6d8af43 Mon Sep 17 00:00:00 2001 From: Ildar Kamalov Date: Mon, 26 Nov 2018 15:26:38 +0300 Subject: [PATCH 2/2] Update locales --- client/src/__locales/en.json | 4 ++++ client/src/__locales/ru.json | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/client/src/__locales/en.json b/client/src/__locales/en.json index 7b6fba15..cdbe383b 100644 --- a/client/src/__locales/en.json +++ b/client/src/__locales/en.json @@ -86,6 +86,10 @@ "example_comment": "! Here goes a comment", "example_comment_meaning": "just a comment", "example_comment_hash": "# Also a comment", + "example_upstream_regular": "regular DNS (over UDP)", + "example_upstream_dot": "encrypted DNS-over-TLS<\/a>", + "example_upstream_doh": "encrypted DNS-over-HTTPS<\/a>", + "example_upstream_tcp": "regular DNS (over TCP)", "all_filters_up_to_date_toast": "All filters are already up-to-date", "updated_upstream_dns_toast": "Updated the upstream DNS servers", "dns_test_ok_toast": "Specified DNS servers are working correctly", diff --git a/client/src/__locales/ru.json b/client/src/__locales/ru.json index d1ad4656..5782d4d3 100644 --- a/client/src/__locales/ru.json +++ b/client/src/__locales/ru.json @@ -86,6 +86,10 @@ "example_comment": "! \u0422\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435", "example_comment_meaning": "\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439", "example_comment_hash": "# \u0418 \u0432\u043e\u0442 \u0442\u0430\u043a \u0442\u043e\u0436\u0435", + "example_upstream_regular": "\u043e\u0431\u044b\u0447\u043d\u044b\u0439 DNS (\u043f\u043e\u0432\u0435\u0440\u0445 UDP)", + "example_upstream_dot": "\u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 DNS-\u043f\u043e\u0432\u0435\u0440\u0445-TLS<\/a>", + "example_upstream_doh": "\u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 DNS-\u043f\u043e\u0432\u0435\u0440\u0445-HTTPS<\/a>", + "example_upstream_tcp": "\u043e\u0431\u044b\u0447\u043d\u044b\u0439 DNS (\u043f\u043e\u0432\u0435\u0440\u0445 TCP)", "all_filters_up_to_date_toast": "\u0412\u0441\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b", "updated_upstream_dns_toast": "Upstream DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b", "dns_test_ok_toast": "\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u044b DNS \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e",