diff --git a/client/public/assets/locales/bg.json b/client/public/assets/locales/bg.json index b0c82707..4590230b 100644 --- a/client/public/assets/locales/bg.json +++ b/client/public/assets/locales/bg.json @@ -23,6 +23,8 @@ "unset": "Премахване на", "retry": "Опитайте отново", "login": "Влезте в системата", + "save": "Save", + "saving": "Saving...", "password": { "title": "Изисква се парола", "placeholder": "Вашата парола", @@ -37,8 +39,14 @@ "interface": "Интерфейс", "server": "Сървър", "server_id": "Идентификатор на сървъра", + "custom_url": "Custom URL", + "custom_url_placeholder": "https://speed.test/backend/", "choose_automatically": "Изберете автоматично", - "ookla_license": "Прочетох и приемам ЛСКП, политиката за поверителност и условията за ползване на Ookla." + "ookla_license": "Прочетох и приемам ЛСКП, политиката за поверителност и условията за ползване на Ookla.", + "ookla_notice": "By using Ookla, you agree to their EULA, privacy policy and terms of service.", + "ookla_desc": "Popular provider with global server network", + "libre_desc": "Open-source, self-hostable speedtest", + "cloudflare_desc": "Fast CDN-based testing" } }, "dropdown": { @@ -52,6 +60,7 @@ "upload": "Оптимална скорост нагоре", "download": "Оптимална скорост нагоре", "recommendations": "Оптимални стойности", + "optimal_values": "Optimal values", "change_provider": "Смяна на доставчика", "password": "Промяна на паролата", "cron": "Задаване на честота", @@ -64,23 +73,52 @@ "dark_mode": "Тъмният режим", "theme_switched_light": "Превключване в режим на светлина", "theme_switched_dark": "Превключване в тъмен режим", - "info": "Информация за проекта", + "preferences": "Preferences", "provider": "Щодо провайдера", "integrations": "Интеграции" }, + "about": { + "title": "About MySpeed", + "description": "MySpeed is an open-source speedtest analysis software that records your internet speed over a configurable period of time.", + "github": "GitHub", + "website": "Website", + "donate": "Donate", + "translate": "Translate", + "made_by": "Made with" + }, "options": { "cron": { - "continuous": "Непрекъснато (на всяка минута)", - "frequent": "Много често (на всеки 30 минути)", - "default": "Стандартно (на всеки час)", - "rare": "Рядко (на всеки 3 часа)", - "really_rare": "Много рядко (на всеки 6 часа)" + "continuous": "Continuous", + "continuous_desc": "Every minute - high resource usage", + "frequent": "Very often", + "frequent_desc": "Every 30 minutes", + "default": "Default", + "default_desc": "Every hour - recommended", + "rare": "Rarely", + "rare_desc": "Every 3 hours", + "really_rare": "Very rarely", + "really_rare_desc": "Every 6 hours" }, "level": { "no_access": "Няма достъп", "read_access": "Достъп само за четене" } }, + "password": { + "no_access_desc": "Visitors must enter the password to view anything", + "read_access_desc": "Visitors can view data but can't change settings" + }, + "pause": { + "manual": "Pause Indefinitely", + "manual_desc": "Pause until manually resumed", + "short": "Short Break", + "short_desc": "Pause for 1 hour", + "medium": "Medium Break", + "medium_desc": "Pause for 6 hours", + "long": "Long Break", + "long_desc": "Pause for 12 hours", + "custom": "Custom Duration" + }, "page": { "overview": "Преглед", "statistics": "Статистика" @@ -104,11 +142,16 @@ "cron_title": "Задаване на тестова честота", "cron_rules": "Правило на Cron", "cron_next_test": "Следващ тест:", + "custom_cron": "Custom cron expression", + "schedule_offset": "Offset schedule", + "schedule_offset_desc": "Adds a small delay to prevent tests from starting at exact times", + "advanced": "Advanced", "time_title": "Покажете тестовете от последните ...", "download": "Изтегляне", "pause_title": "Тестове за скорост - пауза за...", "hours": "Часове", "pause": "Пауза", + "pause_manual_hint": "Leave empty to pause indefinitely", "release_manually": "Освобождаване ръчно", "language": "Промяна на езика", "view_title": "Промяна на изгледа" @@ -122,6 +165,7 @@ "paused": "В момента тестовете за скорост са спрени. Моля, продължете, ако желаете да се включите.", "running": "Тестът на скоростта вече е в ход. Моля, изчакайте малко.", "admin_login": "Вход за администратор", + "servers": "Servers", "beta": { "title": "Бета версия", "description": "Тази функция все още е в бета фаза. Ако откриете някакви грешки, моля, докладвайте за тях тук." @@ -153,19 +197,36 @@ "reset": "Нулиране на", "confirm_reset": "Да, нулиране", "settings_exported": "Настройките са експортирани", - "settings_imported": "Настройките са импортирани" + "settings_imported": "Настройките са импортирани", + "retention": "Data retention", + "retention_desc": "How long speedtest results are kept before being automatically deleted.", + "retention_saved": "Retention period updated", + "retention_days_placeholder": "365", + "retention_days_suffix": "days", + "retention_back": "Back to presets", + "retention_options": { + "week": "7 days", + "month": "30 days", + "quarter": "90 days", + "half_year": "180 days", + "year": "1 year (default)", + "forever": "Keep forever", + "custom": "Custom..." + } }, "latest": { "ping": "Ping", "ping_unit": "ms", + "jitter": "Jitter", + "jitter_unit": "ms", "down": "Изтегляне", "speed_unit": "Mbit/s", + "byte_speed_unit": "MB/s", "up": "Качване на", "latest": "Последен тест", "before": "от" }, "info": { - "credits": "MySpeed е проект с отворен код, предоставен от GNMYT. Оставете звезда в GitHub или дарете средства, за да подкрепите проекта.", "recommendations_error": "Трябва да направите поне 10 теста, за да може да се определи средната стойност. Няма значение дали тестовете са извършени ръчно или автоматично.", "recommendations_info": "Въз основа на резултатите от последните 10 теста беше установено, че оптималният пинг е {{ping}} ms, а изтеглянето е {{down}}. Mbit/s, а качването при {{up}}. Mbit/s. Най-добре е да използвате договора си за интернет като ориентир и да го приемете само ако съвпада с него.", "update": "Налична е актуализация на версия {{version}}. Вижте промените и изтеглете актуализацията.", @@ -177,6 +238,10 @@ "title": "Ping", "description": "Пингът показва колко бързо отговаря съответният доставчик. Колкото по-кратко е времето, толкова по-добре." }, + "jitter": { + "title": "Jitter", + "description": "Jitter is the variation in ping response times. Lower jitter means a more stable connection, which is important for real-time applications like video calls and gaming." + }, "up": { "title": "Скорост на качване", "description": "Скоростта на качване влияе на вашето сърфиране. Колкото повече имате, толкова по-бързо компютърът ви може да изпраща данни." @@ -213,15 +278,12 @@ "result": { "title": "Резултат от теста", "description": "При този тест беше постигната максимална скорост на изтегляне от {{down}} Mbps и максимална скорост на качване от {{up}} Mbps. Той беше създаден {{type}} и е отнел {{duration}} секунди.", + "jitter": " The connection jitter was {{jitter}} ms.", "from_you": "от вас", "automatic": "автоматичен" }, "overview": { - "title": "Преглед на теста за последната {{amount}}", - "1": "24 часа", - "2": "2 дни", - "3": "7 дни", - "4": "30 дни" + "title_range": "Test overview from {{from}} to {{to}}" } }, "errors": { @@ -236,6 +298,10 @@ "invalid_view": "Невалиден изглед" }, "statistics": { + "average": "Average", + "export": { + "button": "Export" + }, "overview": { "total_title": "Общо тестове", "total_description": "Броят на извършените тестове", @@ -268,8 +334,39 @@ "avg": "Средно", "down": "Стойности за изтегляне", "up": "Качване на стойности" + }, + "failed_test": "Failed test", + "hourly": { + "title": "Speed by Time of Day", + "sample_count": "Tests" + }, + "consistency": { + "title": "Connection Stability", + "excellent": "Excellent", + "good": "Good", + "fair": "Fair", + "poor": "Poor", + "ping_variance": "Ping variance" } }, + "calendar": { + "select_range": "Select date range", + "select_start": "Select start date", + "select_end": "Select end date", + "from": "From", + "to": "To", + "last_7_days": "Last 7 days", + "last_30_days": "Last 30 days", + "last_90_days": "Last 90 days", + "last_year": "Last year", + "mon": "Mon", + "tue": "Tue", + "wed": "Wed", + "thu": "Thu", + "fri": "Fri", + "sat": "Sat", + "sun": "Sun" + }, "nodes": { "add": "Добавяне на сървър", "create": "Добавяне на", @@ -294,6 +391,11 @@ "yes": "Да, изтрийте", "success": "Сървърът е успешно изтрит" }, + "rename": { + "title": "Rename server", + "placeholder": "New server name", + "success": "The server has been renamed successfully" + }, "messages": { "not_reachable": "Сървърът не е достъпен", "password_changed": "Паролата е променена", @@ -322,11 +424,11 @@ "display_name": "Показвайте името", "display_name_placeholder": "Известие за MySpeed", "error_message": "Съобщение за грешка", - "error_message_placeholder": "Грешка: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Изпращане на съобщения за грешки", "send_finished": "Броят на извършените тестове", "finished_message": "Завършено съобщение", - "finished_message_placeholder": "%ping% ms, %download% Mbit/s, %upload% Mbit/s" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "gotify": { @@ -336,11 +438,11 @@ "key": "Токен на приложението", "priority": "Приоритет", "error_message": "Съобщение за грешка", - "error_message_placeholder": "Грешка: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Изпращане на съобщения за грешки", "send_finished": "Изпратете попълнен", "finished_message": "Завършено съобщение", - "finished_message_placeholder": "%ping% ms, %download% Mbit/s, %upload% Mbit/s" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "pushover": { @@ -349,18 +451,61 @@ "token": "Токен на приложение", "user_key": "Ключ на потребителя", "error_message": "Съобщение за грешка", - "error_message_placeholder": "Грешка: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Изпращане на съобщения за грешки", "send_finished": "Изпращане на завършени съобщения", "finished_message": "Завършено съобщение", - "finished_message_placeholder": "%ping% ms, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "healthChecks": { "title": "HealthChecks", "fields": { "url": "URL адрес за здравни прегледи", - "url_placeholder": "https://hc-ping.com/" + "url_placeholder": "https://hc-ping.com/", + "interval": "Ping interval (minutes)", + "interval_placeholder": "1" + } + }, + "influxdb": { + "title": "InfluxDB", + "fields": { + "url": "Server-URL", + "url_placeholder": "http://localhost:8086", + "org": "Organization", + "bucket": "Bucket", + "token": "API token", + "measurement": "Measurement name", + "measurement_placeholder": "speedtests (default)", + "host": "Host tag", + "host_placeholder": "Defaults to the machine hostname", + "tags": "Additional tags", + "tags_placeholder": "region=eu,role=primary (comma-separated)" + } + }, + "ntfy": { + "title": "ntfy", + "fields": { + "url": "Server-URL", + "url_placeholder": "https://ntfy.sh", + "topic": "Topic", + "topic_placeholder": "myspeed-alerts", + "token": "Access token", + "token_placeholder": "tk_... (optional, for protected servers)", + "title": "Notification title", + "title_placeholder": "MySpeed (optional)", + "tags": "Tags", + "tags_placeholder": "warning,satellite (comma-separated)", + "priority": "Default priority (1-5)", + "priority_placeholder": "3", + "error_priority": "Error priority (1-5)", + "error_priority_placeholder": "5", + "error_message": "Error message", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Send error messages", + "send_finished": "Send finished messages", + "finished_message": "Finished message", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "telegram": { @@ -369,11 +514,11 @@ "token": "Токен на бот", "chat_id": "Идентификатор на чата", "error_message": "Съобщение за грешка", - "error_message_placeholder": "Грешка: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Изпращане на съобщения за грешки", "send_finished": "Изпратете попълнен", "finished_message": "Завършено съобщение", - "finished_message_placeholder": "%ping% ms, %download% Mbit/s, %upload% Mbit/s" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "webhook": { @@ -386,11 +531,55 @@ "send_finished": "Изпратете попълнен", "send_alive": "Изпращане на оживени съобщения", "send_recommendations": "Изпращане на препоръки", - "send_config_updates": "Изпращане на актуализации на конфигурацията" + "send_config_updates": "Изпращане на актуализации на конфигурацията", + "interval": "Keep-Alive interval (minutes)", + "interval_placeholder": "1" } } }, "common": { "back_to_top": "Върнете се в началото" + }, + "not_found": { + "title": "Page not found", + "description": "The page you're looking for doesn't exist or has been moved.", + "back_home": "Back to Home" + }, + "route_error": { + "title": "Oops!", + "subtitle": "Something went wrong", + "description": "An unexpected error occurred. Please try again or go back to the home page.", + "reload": "Reload Page" + }, + "optimal_values": { + "title": "Optimal Values", + "use_recommended": "Use recommended" + }, + "preferences": { + "title": "Preferences", + "theme": { + "title": "Appearance", + "description": "Switch between dark and light interface.", + "dark": "Dark", + "dark_desc": "Easier on the eyes in low light", + "light": "Light", + "light_desc": "Brighter look for daytime use" + }, + "time_format": { + "title": "Time format", + "description": "How clock times are displayed throughout the app.", + "h24": "24-hour", + "h24_desc": "Display times like 14:30", + "h12": "12-hour", + "h12_desc": "Display times like 2:30 PM" + }, + "speed_unit": { + "title": "Speed unit", + "description": "Choose how speeds are shown. Values are converted automatically.", + "mbps": "Mbps (Megabits per second)", + "mbps_desc": "Standard ISP / speedtest unit", + "mbytes": "MB/s (Megabytes per second)", + "mbytes_desc": "Common in browsers and download managers" + } } } diff --git a/client/public/assets/locales/da.json b/client/public/assets/locales/da.json new file mode 100644 index 00000000..f6c0ada0 --- /dev/null +++ b/client/public/assets/locales/da.json @@ -0,0 +1,585 @@ +{ + "failed": "Mislykkedes", + "welcome": { + "step": "Trin", + "title": "Velkommen til MySpeed!", + "subtext": "Lad os konfigurere MySpeed for første gang. Bare rolig, det tager ikke lang tid.", + "provider_title": "Vælg en udbyder", + "provider_subtext": "Vælg her den udbyder, du vil bruge. Denne udbyder vil derefter udføre dine tests.", + "data_title": "Indstil optimale data", + "data_subtext": "Vælg dine kontraktligt aftalte hastigheder i dette trin", + "ms": "(i ms)", + "mbps": "(i Mbps)", + "accept_title": "Accepter vilkårene", + "accept_subtext": "I dette trin vil vi informere dig om Ookla-licensen. Læs den og bekræft, at du har læst og accepterer den ved at klikke på \"Færdig\"." + }, + "dialog": { + "okay": "Okay", + "done": "Færdig", + "continue": "Fortsæt", + "apply": "Ja, anvend", + "update": "Opdater", + "close": "Luk", + "unset": "Fjern", + "retry": "Prøv igen", + "login": "Log ind", + "save": "Save", + "saving": "Saving...", + "password": { + "title": "Adgangskode påkrævet", + "placeholder": "Din adgangskode", + "wrong": "Den indtastede adgangskode er forkert", + "unlock": "Lås op" + }, + "api": { + "title": "API ikke tilgængeligt", + "description": "MySpeed kunne ikke få adgang til API'et for denne instans. Prøv venligst igen senere." + }, + "provider": { + "interface": "Grænseflade", + "server": "Server", + "server_id": "Server-ID", + "custom_url": "Custom URL", + "custom_url_placeholder": "https://speed.test/backend/", + "choose_automatically": "Vælg automatisk", + "ookla_license": "Jeg har læst og accepterer EULA, privatlivspolitik og servicevilkår fra Ookla.", + "ookla_notice": "By using Ookla, you agree to their EULA, privacy policy and terms of service.", + "ookla_desc": "Popular provider with global server network", + "libre_desc": "Open-source, self-hostable speedtest", + "cloudflare_desc": "Fast CDN-based testing" + } + }, + "dropdown": { + "settings": "Indstillinger", + "changes_applied": "Dine ændringer er blevet gemt.", + "language_changed": "Sproget er blevet ændret.", + "provider_changed": "Udbyderen er blevet ændret.", + "changes_unsaved": "Dine ændringer blev ikke gemt. Kontroller din indtastning.", + "invalid": "Ugyldig indtastning", + "ping": "Optimal ping", + "upload": "Optimal upload-hastighed", + "download": "Optimal download-hastighed", + "recommendations": "Anbefalinger", + "optimal_values": "Optimal values", + "change_provider": "Skift udbyder", + "password": "Skift adgangskode", + "cron": "Indstil frekvens", + "time": "Indstil periode", + "storage": "Administrer lager", + "pause_tests": "Sæt tests på pause", + "resume_tests": "Genoptag tests", + "language": "Skift sprog", + "light_mode": "Lys tilstand", + "dark_mode": "Mørk tilstand", + "theme_switched_light": "Skiftet til lys tilstand", + "theme_switched_dark": "Skiftet til mørk tilstand", + "preferences": "Preferences", + "provider": "Om udbyderen", + "integrations": "Integrationer" + }, + "about": { + "title": "About MySpeed", + "description": "MySpeed is an open-source speedtest analysis software that records your internet speed over a configurable period of time.", + "github": "GitHub", + "website": "Website", + "donate": "Donate", + "translate": "Translate", + "made_by": "Made with" + }, + "options": { + "cron": { + "continuous": "Kontinuerlig (hvert minut)", + "continuous_desc": "Every minute - high resource usage", + "frequent": "Meget ofte (hvert 30. minut)", + "frequent_desc": "Every 30 minutes", + "default": "Standard (hver time)", + "default_desc": "Every hour - recommended", + "rare": "Sjældent (hver 3. time)", + "rare_desc": "Every 3 hours", + "really_rare": "Meget sjældent (hver 6. time)", + "really_rare_desc": "Every 6 hours" + }, + "level": { + "no_access": "Ingen adgang", + "read_access": "Læseadgang" + } + }, + "password": { + "no_access_desc": "Visitors must enter the password to view anything", + "read_access_desc": "Visitors can view data but can't change settings" + }, + "pause": { + "manual": "Pause Indefinitely", + "manual_desc": "Pause until manually resumed", + "short": "Short Break", + "short_desc": "Pause for 1 hour", + "medium": "Medium Break", + "medium_desc": "Pause for 6 hours", + "long": "Long Break", + "long_desc": "Pause for 12 hours", + "custom": "Custom Duration" + }, + "page": { + "overview": "Oversigt", + "statistics": "Statistik" + }, + "update": { + "ping_title": "Indstil optimal ping (ms)", + "ping_placeholder": "Ping (ms)", + "upload_title": "Indstil optimal upload-hastighed (Mbps)", + "upload_placeholder": "Upload-hastighed (Mbps)", + "download_title": "Indstil optimal download-hastighed (Mbps)", + "download_placeholder": "Download-hastighed (Mbps)", + "recommendations_title": "Optimale anbefalinger", + "recommendations_set": "Indstil automatiske anbefalinger?", + "provider_title": "Vælg speedtest-udbyder", + "manually": "Indstil manuelt", + "new_password": "Indstil en ny adgangskode", + "password_placeholder": "Ny adgangskode", + "password_removed": "Adgangskoden er blevet fjernet.", + "level": "Skift niveau", + "level_title": "Rettigheder for besøgende", + "cron_title": "Indstil testfrekvens", + "cron_rules": "Cron-regel", + "cron_next_test": "Næste test:", + "custom_cron": "Custom cron expression", + "schedule_offset": "Offset schedule", + "schedule_offset_desc": "Adds a small delay to prevent tests from starting at exact times", + "advanced": "Advanced", + "time_title": "Vis tests fra de sidste...", + "download": "Download", + "pause_title": "Sæt speedtests på pause i...", + "hours": "Timer", + "pause": "Pause", + "pause_manual_hint": "Leave empty to pause indefinitely", + "release_manually": "Frigiv manuelt", + "language": "Skift sprog", + "view_title": "Skift visning" + }, + "header": { + "title": "MySpeed", + "running_tooltip": "Speedtest kører", + "start_tooltip": "Start hastighedstest", + "new_update": "Opdatering tilgængelig", + "download": "Download", + "paused": "Speedtests er sat på pause. Fortsæt dem venligst, hvis du vil udføre en.", + "running": "En speedtest kører allerede. Vent venligst et øjeblik.", + "admin_login": "Admin-login", + "servers": "Servers", + "beta": { + "title": "Beta-version", + "description": "Denne funktion er stadig i beta. Hvis du finder fejl, bedes du rapportere dem her." + } + }, + "storage": { + "speedtests": "Hastighedstest", + "configuration": "Konfiguration", + "stored_tests": "Gemte tests", + "tests": "Test", + "export_tests": "Eksporter tests", + "tests_exported": "Testene er blevet eksporteret", + "csv": "CSV", + "json": "JSON", + "import_tests": "Importer tests", + "tests_imported": "Testene er blevet importeret", + "import_test_error": "Der opstod en fejl under import af tests", + "import_config_error": "Der opstod en fejl under import af konfigurationen", + "export": "Eksport", + "import": "Import", + "clear_history": "Ryd historik", + "history_cleared": "Historikken er blevet ryddet", + "delete": "Slet", + "confirm_delete": "Ja, slet", + "export_settings": "Eksporter indstillinger", + "import_settings": "Importer indstillinger", + "factory_reset": "Nulstilling til fabriksindstillinger", + "factory_reset_completed": "Fabriksnulstillingen er fuldført", + "reset": "Nulstil", + "confirm_reset": "Ja, nulstil", + "settings_exported": "Indstillingerne er blevet eksporteret", + "settings_imported": "Indstillingerne er blevet importeret", + "retention": "Data retention", + "retention_desc": "How long speedtest results are kept before being automatically deleted.", + "retention_saved": "Retention period updated", + "retention_days_placeholder": "365", + "retention_days_suffix": "days", + "retention_back": "Back to presets", + "retention_options": { + "week": "7 days", + "month": "30 days", + "quarter": "90 days", + "half_year": "180 days", + "year": "1 year (default)", + "forever": "Keep forever", + "custom": "Custom..." + } + }, + "latest": { + "ping": "Ping", + "ping_unit": "ms", + "jitter": "Jitter", + "jitter_unit": "ms", + "down": "Download", + "speed_unit": "Mbit/s", + "byte_speed_unit": "MB/s", + "up": "Upload", + "latest": "Sidste test", + "before": "før" + }, + "info": { + "recommendations_error": "Du skal udføre mindst 10 tests for at få et gennemsnit. Det er underordnet, om testene er udført manuelt eller automatisk.", + "recommendations_info": "Baseret på de sidste 10 tests er det konstateret, at den optimale ping var {{ping}} ms, download på {{down}} Mbps og upload på {{up}} Mbps. Det er bedst at orientere sig efter din internetkontrakt og kun overtage værdierne, hvis de matcher denne.", + "update": "En opdatering til version {{version}} er tilgængelig. Se ændringerne og download opdateringen.", + "down": { + "title": "Download-hastighed", + "description": "Download-hastigheden påvirker din browsing-oplevelse. Jo højere den er, jo hurtigere kan din computer modtage data." + }, + "ping": { + "title": "Ping", + "description": "Ping viser dig, hvor hurtigt den pågældende udbyder svarer. Jo kortere tid, jo bedre." + }, + "jitter": { + "title": "Jitter", + "description": "Jitter is the variation in ping response times. Lower jitter means a more stable connection, which is important for real-time applications like video calls and gaming." + }, + "up": { + "title": "Upload-hastighed", + "description": "Upload-hastigheden påvirker din browsing-oplevelse. Jo højere den er, jo hurtigere kan din computer sende data." + }, + "latest": { + "title": "Sidste test", + "description": "Dette er det tidspunkt, der viser dig, hvornår den sidste test blev kørt. I dette tilfælde fandt den sidste test sted den {{date}} kl. {{time}}." + } + }, + "time": { + "now": "Lige nu", + "seconds": "{{seconds}} sekunder", + "minute": "1 minut", + "minutes": "{{minutes}} minutter", + "hour": "1 time", + "hours": "{{hours}} timer", + "on": "Den", + "at": "Kl." + }, + "test": { + "not_available": "Der er i øjeblikket ingen tests tilgængelige", + "no_latest": "Der er ingen aktuel test tilgængelig. Udfør venligst en test eller vent til den næste test udføres.", + "loading_more": "Indlæser flere tests...", + "no_more_tests": "Ikke flere tests at indlæse", + "unknown_error": "Ukendt fejl:", + "failed": "Test mislykkedes", + "recheck": "Kontroller venligst om muligt, om dette sker ofte.", + "delete": "Slet test", + "deleted": "Testen er blevet slettet", + "average": { + "title": "Gennemsnitlig hastighed", + "description": "{{amount}} tests har vist, at der den {{date}} blev opnået en gennemsnitlig download-hastighed på {{down} Mbps og en upload-hastighed på {{up}} Mbps. Testene tog i gennemsnit {{duration}} sekunder." + }, + "result": { + "title": "Testresultat", + "description": "Denne test opnåede en maksimal download-hastighed på {{down}} Mbps og en maksimal upload-hastighed på {{up}} Mbps. Den blev oprettet {{type}} og tog {{duration}} sekunder.", + "jitter": " The connection jitter was {{jitter}} ms.", + "from_you": "af dig", + "automatic": "automatisk" + }, + "overview": { + "title_range": "Test overview from {{from}} to {{to}}" + } + }, + "errors": { + "network_unreachable": "Internetforbindelsen var ustabil under testen", + "took_too_long": "Testen tog for lang tid og blev afbrudt", + "no_permission": "MySpeed har ikke tilladelse til at starte denne test", + "resource_unavailable": "Testen kunne ikke udføres, da ressourcen var midlertidigt utilgængelig", + "no_route": "Testen kunne ikke udføres, da der ikke var nogen rute til værten", + "connection_refused": "Testen kunne ikke udføres, da forbindelsen blev afvist", + "timed_out": "Internetforbindelsen var ustabil under testen", + "config": "Konfigurationsfilen kunne ikke indlæses", + "invalid_view": "Ugyldig visning" + }, + "statistics": { + "average": "Average", + "export": { + "button": "Export" + }, + "overview": { + "total_title": "Antal tests", + "total_description": "Antallet af udførte tests", + "failed_title": "Mislykkede tests", + "failed_description": "Antallet af mislykkede tests", + "average_title": "Gennemsnitlig varighed", + "average_description": "Den gennemsnitlige varighed af testene" + }, + "failed": { + "title": "Mislykkede tests", + "success": "Vellykkede", + "failed": "Mislykkede", + "label": "Test" + }, + "speed": { + "title": "Hastighed" + }, + "manual": { + "title": "Manuelle tests", + "yes": "Oprettet manuelt", + "no": "Oprettet automatisk" + }, + "duration": { + "title": "Testvarighed", + "label": "Antal" + }, + "values": { + "min": "Laveste", + "max": "Maksimum", + "avg": "Gennemsnit", + "down": "Download-værdier", + "up": "Upload-værdier" + }, + "failed_test": "Failed test", + "hourly": { + "title": "Speed by Time of Day", + "sample_count": "Tests" + }, + "consistency": { + "title": "Connection Stability", + "excellent": "Excellent", + "good": "Good", + "fair": "Fair", + "poor": "Poor", + "ping_variance": "Ping variance" + } + }, + "calendar": { + "select_range": "Select date range", + "select_start": "Select start date", + "select_end": "Select end date", + "from": "From", + "to": "To", + "last_7_days": "Last 7 days", + "last_30_days": "Last 30 days", + "last_90_days": "Last 90 days", + "last_year": "Last year", + "mon": "Mon", + "tue": "Tue", + "wed": "Wed", + "thu": "Thu", + "fri": "Fri", + "sat": "Sat", + "sun": "Sun" + }, + "nodes": { + "add": "Tilføj server", + "create": "Tilføj", + "this_server": "Denne server", + "created": "Serveren er blevet tilføjet", + "password_required": "Denne node kræver en adgangskode", + "update_password": "Opdater venligst adgangskoden for denne node", + "password_outdated": "Adgangskode forældet", + "password_updated": "Adgangskoden er blevet opdateret", + "preview_active": "Tilføjelse og sletning af servere er deaktiveret i demo-tilstand.", + "placeholder": { + "name": "MySpeed-instans", + "url": "https://din-server.dk" + }, + "group": { + "name": "Servernavn", + "url": "Serveradresse" + }, + "delete": { + "title": "Slet server", + "description": "Serveren {{name}} (#{{id}}) vil blive slettet. Denne handling kan ikke fortrydes. Vil du fortsætte?", + "yes": "Ja, slet", + "success": "Serveren er blevet slettet" + }, + "rename": { + "title": "Rename server", + "placeholder": "New server name", + "success": "The server has been renamed successfully" + }, + "messages": { + "not_reachable": "Serveren kan ikke kontaktes", + "password_changed": "Adgangskode ændret", + "tests_pending": "Testresultater afventer" + } + }, + "preview": { + "title": "Demo-tilstand", + "info": "DEMO", + "description": "Du er i øjeblikket i demo-tilstand. Nogle funktioner er deaktiveret, og visse indstillinger kan ikke ændres. Hvis du vil bruge alle funktioner, kan du installere MySpeed på din egen server." + }, + "integrations": { + "none_active": "Denne integration er ikke aktiv.
Opret", + "preview_active": "Integrationer er deaktiveret i demo-tilstand.", + "display_name": "Integrationsnavn", + "create": "Opret", + "activity": { + "never_executed": "Aldrig udført", + "last_run": "Sidst kørt for " + }, + "discord": { + "title": "Discord", + "fields": { + "url": "Webhook-URL", + "url_placeholder": "https://discord.com/api/webhooks/...", + "display_name": "Visningsnavn", + "display_name_placeholder": "MySpeed-notifikation", + "error_message": "Fejlmeddelelse", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Send fejlmeddelelser", + "send_finished": "Send færdig-meddelelser", + "finished_message": "Færdig-meddelelse", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" + } + }, + "gotify": { + "title": "Gotify", + "fields": { + "url": "Server-URL", + "key": "App-token", + "priority": "Prioritet", + "error_message": "Fejlmeddelelse", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Send fejlmeddelelser", + "send_finished": "Send færdig-meddelelser", + "finished_message": "Færdig-meddelelse", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" + } + }, + "pushover": { + "title": "Pushover", + "fields": { + "token": "App-token", + "user_key": "Bruger-nøgle", + "error_message": "Fejlmeddelelse", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Send fejlmeddelelser", + "send_finished": "Send færdig-meddelelser", + "finished_message": "Færdig-meddelelse", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" + } + }, + "healthChecks": { + "title": "HealthChecks", + "fields": { + "url": "HealthChecks URL", + "url_placeholder": "https://hc-ping.com/", + "interval": "Ping interval (minutes)", + "interval_placeholder": "1" + } + }, + "influxdb": { + "title": "InfluxDB", + "fields": { + "url": "Server-URL", + "url_placeholder": "http://localhost:8086", + "org": "Organization", + "bucket": "Bucket", + "token": "API token", + "measurement": "Measurement name", + "measurement_placeholder": "speedtests (default)", + "host": "Host tag", + "host_placeholder": "Defaults to the machine hostname", + "tags": "Additional tags", + "tags_placeholder": "region=eu,role=primary (comma-separated)" + } + }, + "ntfy": { + "title": "ntfy", + "fields": { + "url": "Server-URL", + "url_placeholder": "https://ntfy.sh", + "topic": "Topic", + "topic_placeholder": "myspeed-alerts", + "token": "Access token", + "token_placeholder": "tk_... (optional, for protected servers)", + "title": "Notification title", + "title_placeholder": "MySpeed (optional)", + "tags": "Tags", + "tags_placeholder": "warning,satellite (comma-separated)", + "priority": "Default priority (1-5)", + "priority_placeholder": "3", + "error_priority": "Error priority (1-5)", + "error_priority_placeholder": "5", + "error_message": "Error message", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Send error messages", + "send_finished": "Send finished messages", + "finished_message": "Finished message", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" + } + }, + "telegram": { + "title": "Telegram", + "fields": { + "token": "Bot Token", + "chat_id": "Chat-ID", + "error_message": "Fejlmeddelelse", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Send fejlmeddelelser", + "send_finished": "Send færdig-meddelelser", + "finished_message": "Færdig-meddelelse", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" + } + }, + "webhook": { + "title": "Webhook", + "fields": { + "url": "Webhook-URL", + "url_placeholder": "https://din-server.dk/hook", + "send_started": "Send start-notifikation", + "send_failed": "Send fejlmeddelelser", + "send_finished": "Send færdig-meddelelser", + "send_alive": "Send Keep-Alive-beskeder", + "send_recommendations": "Send anbefalinger", + "send_config_updates": "Send konfigurationsopdateringer", + "interval": "Keep-Alive interval (minutes)", + "interval_placeholder": "1" + } + } + }, + "common": { + "back_to_top": "Tilbage til toppen" + }, + "not_found": { + "title": "Page not found", + "description": "The page you're looking for doesn't exist or has been moved.", + "back_home": "Back to Home" + }, + "route_error": { + "title": "Oops!", + "subtitle": "Something went wrong", + "description": "An unexpected error occurred. Please try again or go back to the home page.", + "reload": "Reload Page" + }, + "optimal_values": { + "title": "Optimal Values", + "use_recommended": "Use recommended" + }, + "preferences": { + "title": "Preferences", + "theme": { + "title": "Appearance", + "description": "Switch between dark and light interface.", + "dark": "Dark", + "dark_desc": "Easier on the eyes in low light", + "light": "Light", + "light_desc": "Brighter look for daytime use" + }, + "time_format": { + "title": "Time format", + "description": "How clock times are displayed throughout the app.", + "h24": "24-hour", + "h24_desc": "Display times like 14:30", + "h12": "12-hour", + "h12_desc": "Display times like 2:30 PM" + }, + "speed_unit": { + "title": "Speed unit", + "description": "Choose how speeds are shown. Values are converted automatically.", + "mbps": "Mbps (Megabits per second)", + "mbps_desc": "Standard ISP / speedtest unit", + "mbytes": "MB/s (Megabytes per second)", + "mbytes_desc": "Common in browsers and download managers" + } + } +} diff --git a/client/public/assets/locales/de.json b/client/public/assets/locales/de.json index 6d88926e..f7744384 100644 --- a/client/public/assets/locales/de.json +++ b/client/public/assets/locales/de.json @@ -23,6 +23,8 @@ "unset": "Entfernen", "retry": "Erneut versuchen", "login": "Anmelden", + "save": "Speichern", + "saving": "Speichern...", "password": { "title": "Passwort erforderlich", "placeholder": "Dein Passwort", @@ -37,8 +39,14 @@ "interface": "Schnittstelle", "server": "Server", "server_id": "Server-ID", + "custom_url": "Benutzerdefinierte URL", + "custom_url_placeholder": "https://speed.test/backend/", "choose_automatically": "Automatisch wählen", - "ookla_license": "Ich habe die EULA, die Datenschutzrichtlinie und die Nutzungsbedingungen von Ookla gelesen und akzeptiere sie." + "ookla_license": "Ich habe die EULA, die Datenschutzrichtlinie und die Nutzungsbedingungen von Ookla gelesen und akzeptiere sie.", + "ookla_notice": "By using Ookla, you agree to their EULA, privacy policy and terms of service.", + "ookla_desc": "Beliebter Anbieter mit globalem Servernetzwerk", + "libre_desc": "Open-Source, selbst-hostbarer Speedtest", + "cloudflare_desc": "Schnelle CDN-basierte Tests" } }, "dropdown": { @@ -52,6 +60,7 @@ "upload": "Optimaler Up-Speed", "download": "Optimaler Down-Speed", "recommendations": "Optimale Werte", + "optimal_values": "Optimale Werte", "change_provider": "Anbieter wechseln", "password": "Passwort ändern", "cron": "Häufigkeit einstellen", @@ -64,23 +73,52 @@ "dark_mode": "Dunkler Modus", "theme_switched_light": "In den hellen Modus geschaltet", "theme_switched_dark": "In den dunklen Modus geschaltet", - "info": "Infos zum Projekt", + "preferences": "Preferences", "provider": "Über den Anbieter", "integrations": "Integrationen" }, + "about": { + "title": "About MySpeed", + "description": "MySpeed is an open-source speedtest analysis software that records your internet speed over a configurable period of time.", + "github": "GitHub", + "website": "Website", + "donate": "Donate", + "translate": "Translate", + "made_by": "Made with" + }, "options": { "cron": { - "continuous": "Durchgehend (jede Minute)", - "frequent": "Sehr häufig (alle 30 Minuten)", - "default": "Standard (jede Stunde)", - "rare": "Selten (alle 3 Stunden)", - "really_rare": "Sehr selten (alle 6 Stunden)" + "continuous": "Continuous", + "continuous_desc": "Every minute - high resource usage", + "frequent": "Very often", + "frequent_desc": "Every 30 minutes", + "default": "Default", + "default_desc": "Every hour - recommended", + "rare": "Rarely", + "rare_desc": "Every 3 hours", + "really_rare": "Very rarely", + "really_rare_desc": "Every 6 hours" }, "level": { "no_access": "Kein Zugriff", "read_access": "Nur Lesezugriff" } }, + "password": { + "no_access_desc": "Visitors must enter the password to view anything", + "read_access_desc": "Visitors can view data but can't change settings" + }, + "pause": { + "manual": "Pause Indefinitely", + "manual_desc": "Pause until manually resumed", + "short": "Short Break", + "short_desc": "Pause for 1 hour", + "medium": "Medium Break", + "medium_desc": "Pause for 6 hours", + "long": "Long Break", + "long_desc": "Pause for 12 hours", + "custom": "Custom Duration" + }, "page": { "overview": "Übersicht", "statistics": "Statistik" @@ -104,11 +142,16 @@ "cron_title": "Test-Häufigkeit einstellen", "cron_rules": "Cron-Regel", "cron_next_test": "Nächster Test:", + "custom_cron": "Custom cron expression", + "schedule_offset": "Offset schedule", + "schedule_offset_desc": "Adds a small delay to prevent tests from starting at exact times", + "advanced": "Advanced", "time_title": "Zeige Tests der letzten ...", "download": "Herunterladen", "pause_title": "Speedtests pausieren für...", "hours": "Stunden", "pause": "Pausieren", + "pause_manual_hint": "Leave empty to pause indefinitely", "release_manually": "Manuell freigeben", "language": "Sprache ändern", "view_title": "Ansicht wechseln" @@ -122,6 +165,7 @@ "paused": "Speedtests sind aktuell pausiert. Bitte setze sie fort, wenn du einen machen möchtest.", "running": "Es läuft bereits ein Speedtest. Bitte warte noch einen Moment.", "admin_login": "Admin-Login", + "servers": "Servers", "beta": { "title": "Beta-Version", "description": "Diese Funktion befindet sich noch in der Beta-Phase. Wenn du Fehler findest, melde sie bitte hier." @@ -153,19 +197,36 @@ "reset": "Zurücksetzen", "confirm_reset": "Ja, zurücksetzen", "settings_exported": "Die Einstellungen wurden exportiert", - "settings_imported": "Die Einstellungen wurden importiert" + "settings_imported": "Die Einstellungen wurden importiert", + "retention": "Data retention", + "retention_desc": "How long speedtest results are kept before being automatically deleted.", + "retention_saved": "Retention period updated", + "retention_days_placeholder": "365", + "retention_days_suffix": "days", + "retention_back": "Back to presets", + "retention_options": { + "week": "7 days", + "month": "30 days", + "quarter": "90 days", + "half_year": "180 days", + "year": "1 year (default)", + "forever": "Keep forever", + "custom": "Custom..." + } }, "latest": { "ping": "Ping", "ping_unit": "ms", + "jitter": "Jitter", + "jitter_unit": "ms", "down": "Download", "speed_unit": "Mbit/s", + "byte_speed_unit": "MB/s", "up": "Upload", "latest": "Letzter Test", "before": "vor" }, "info": { - "credits": "MySpeed ist ein Open-Source-Projekt von GNMYT. Hinterlasse einen Stern auf GitHub oder spende, um das Projekt zu unterstützen.", "recommendations_error": "Du musst mindestens 10 Tests machen, damit ein Durchschnitt ermittelt werden kann. Ob die Tests manuell oder automatisch durchgeführt wurden ist egal.", "recommendations_info": "Anhand der letzten 10 Testergebnisse wurde festgestellt, dass der optimale Ping bei {{ping}} ms, der Download bei {{down}} Mbit/s und der Upload bei {{up}} Mbit/s liegt. Orientiere dich am besten an deinem Internetvertrag und übernehme es nur, wenn es mit dem übereinstimmt.", "update": "Ein Update auf die Version {{version}} ist verfügbar. Sieh dir die Änderungen an und lade dir das Update herunter.", @@ -177,6 +238,10 @@ "title": "Ping", "description": "Der Ping zeigt dir, wie schnell der jeweilige Anbieter antwortet. Umso kürzer die Zeit, desto besser." }, + "jitter": { + "title": "Jitter", + "description": "Jitter is the variation in ping response times. Lower jitter means a more stable connection, which is important for real-time applications like video calls and gaming." + }, "up": { "title": "Upload-Geschwindigkeit", "description": "Die Upload-Geschwindigkeit wirkt sich auf dein Surferlebnis aus. Umso mehr du bekommst, desto schneller kann dein Computer Daten senden." @@ -213,15 +278,12 @@ "result": { "title": "Testergebnis", "description": "Bei diesem Test wurde eine maximale Download-Geschwindigkeit von {{down}} Mbps und eine maximale Upload-Geschwindigkeit von {{up}} Mbps erreicht. Er wurde erstellt {{type}} und dauerte {{duration}} Sekunden.", + "jitter": " The connection jitter was {{jitter}} ms.", "from_you": "von dir", "automatic": "automatisch" }, "overview": { - "title": "Test-Übersicht der letzten {{amount}}", - "1": "24 Stunden", - "2": "2 Tage", - "3": "7 Tage", - "4": "30 Tage" + "title_range": "Test overview from {{from}} to {{to}}" } }, "errors": { @@ -236,6 +298,10 @@ "invalid_view": "Ungültige Ansicht" }, "statistics": { + "average": "Average", + "export": { + "button": "Export" + }, "overview": { "total_title": "Insgesamte Tests", "total_description": "Die Anzahl der ausgeführten Tests", @@ -268,8 +334,39 @@ "avg": "Durchschnitt", "down": "Download-Werte", "up": "Upload-Werte" + }, + "failed_test": "Failed test", + "hourly": { + "title": "Speed by Time of Day", + "sample_count": "Tests" + }, + "consistency": { + "title": "Connection Stability", + "excellent": "Excellent", + "good": "Good", + "fair": "Fair", + "poor": "Poor", + "ping_variance": "Ping variance" } }, + "calendar": { + "select_range": "Select date range", + "select_start": "Select start date", + "select_end": "Select end date", + "from": "From", + "to": "To", + "last_7_days": "Last 7 days", + "last_30_days": "Last 30 days", + "last_90_days": "Last 90 days", + "last_year": "Last year", + "mon": "Mon", + "tue": "Tue", + "wed": "Wed", + "thu": "Thu", + "fri": "Fri", + "sat": "Sat", + "sun": "Sun" + }, "nodes": { "add": "Server hinzufügen", "create": "Hinzufügen", @@ -294,6 +391,11 @@ "yes": "Ja, löschen", "success": "Der Server wurde erfolgreich gelöscht" }, + "rename": { + "title": "Rename server", + "placeholder": "New server name", + "success": "The server has been renamed successfully" + }, "messages": { "not_reachable": "Server ist nicht erreichbar", "password_changed": "Passwort wurde geändert", @@ -322,11 +424,11 @@ "display_name": "Anzeigename", "display_name_placeholder": "MySpeed Benachrichtigung", "error_message": "Fehlernachricht", - "error_message_placeholder": "Fehler: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Fehlernachrichten senden", "send_finished": "Abgeschlossene senden", "finished_message": "Abgeschlossen-Nachricht", - "finished_message_placeholder": "%ping% ms, %download% Mbit/s, %upload% Mbit/s" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "gotify": { @@ -336,11 +438,11 @@ "key": "Anwendungs-Token", "priority": "Priorität", "error_message": "Fehlernachricht", - "error_message_placeholder": "Fehler: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Fehlernachrichten senden", "send_finished": "Abgeschlossene senden", "finished_message": "Abgeschlossen-Nachricht", - "finished_message_placeholder": "%ping% ms, %download% Mbit/s, %upload% Mbit/s" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "pushover": { @@ -349,18 +451,61 @@ "token": "App-Token", "user_key": "Benutzerschlüssel", "error_message": "Fehlermeldung", - "error_message_placeholder": "Fehler: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Fehlermeldungen senden", "send_finished": "Abgeschlossene senden", "finished_message": "Abgeschlossen-Nachricht", - "finished_message_placeholder": "%ping% ms, %download% Mbit/s, %upload% Mbit/s" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "healthChecks": { "title": "HealthChecks", "fields": { "url": "HealthChecks-URL", - "url_placeholder": "https://hc-ping.com/" + "url_placeholder": "https://hc-ping.com/", + "interval": "Ping interval (minutes)", + "interval_placeholder": "1" + } + }, + "influxdb": { + "title": "InfluxDB", + "fields": { + "url": "Server-URL", + "url_placeholder": "http://localhost:8086", + "org": "Organization", + "bucket": "Bucket", + "token": "API token", + "measurement": "Measurement name", + "measurement_placeholder": "speedtests (default)", + "host": "Host tag", + "host_placeholder": "Defaults to the machine hostname", + "tags": "Additional tags", + "tags_placeholder": "region=eu,role=primary (comma-separated)" + } + }, + "ntfy": { + "title": "ntfy", + "fields": { + "url": "Server-URL", + "url_placeholder": "https://ntfy.sh", + "topic": "Topic", + "topic_placeholder": "myspeed-alerts", + "token": "Access token", + "token_placeholder": "tk_... (optional, for protected servers)", + "title": "Notification title", + "title_placeholder": "MySpeed (optional)", + "tags": "Tags", + "tags_placeholder": "warning,satellite (comma-separated)", + "priority": "Default priority (1-5)", + "priority_placeholder": "3", + "error_priority": "Error priority (1-5)", + "error_priority_placeholder": "5", + "error_message": "Error message", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Send error messages", + "send_finished": "Send finished messages", + "finished_message": "Finished message", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "telegram": { @@ -369,11 +514,11 @@ "token": "Bot Token", "chat_id": "Chat ID", "error_message": "Fehlernachricht", - "error_message_placeholder": "Fehler: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Fehlernachrichten senden", "send_finished": "Abgeschlossene senden", "finished_message": "Abgeschlossen-Nachricht", - "finished_message_placeholder": "%ping% ms, %download% Mbit/s, %upload% Mbit/s" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "webhook": { @@ -386,11 +531,55 @@ "send_finished": "Abgeschlossene senden", "send_alive": "Lebendig-Nachrichten senden", "send_recommendations": "Empfehlungen senden", - "send_config_updates": "Konfigurations-Updates senden" + "send_config_updates": "Konfigurations-Updates senden", + "interval": "Keep-Alive interval (minutes)", + "interval_placeholder": "1" } } }, "common": { "back_to_top": "Zurück zum Anfang" + }, + "not_found": { + "title": "Page not found", + "description": "The page you're looking for doesn't exist or has been moved.", + "back_home": "Back to Home" + }, + "route_error": { + "title": "Oops!", + "subtitle": "Something went wrong", + "description": "An unexpected error occurred. Please try again or go back to the home page.", + "reload": "Reload Page" + }, + "optimal_values": { + "title": "Optimal Values", + "use_recommended": "Use recommended" + }, + "preferences": { + "title": "Preferences", + "theme": { + "title": "Appearance", + "description": "Switch between dark and light interface.", + "dark": "Dark", + "dark_desc": "Easier on the eyes in low light", + "light": "Light", + "light_desc": "Brighter look for daytime use" + }, + "time_format": { + "title": "Time format", + "description": "How clock times are displayed throughout the app.", + "h24": "24-hour", + "h24_desc": "Display times like 14:30", + "h12": "12-hour", + "h12_desc": "Display times like 2:30 PM" + }, + "speed_unit": { + "title": "Speed unit", + "description": "Choose how speeds are shown. Values are converted automatically.", + "mbps": "Mbps (Megabits per second)", + "mbps_desc": "Standard ISP / speedtest unit", + "mbytes": "MB/s (Megabytes per second)", + "mbytes_desc": "Common in browsers and download managers" + } } } diff --git a/client/public/assets/locales/es.json b/client/public/assets/locales/es.json index 303f76bc..e4f91653 100644 --- a/client/public/assets/locales/es.json +++ b/client/public/assets/locales/es.json @@ -23,6 +23,8 @@ "unset": "Eliminar", "retry": "Volver a intentar", "login": "Iniciar sesión", + "save": "Save", + "saving": "Saving...", "password": { "title": "Constraseña requerida", "placeholder": "Tu contraseña", @@ -37,8 +39,14 @@ "interface": "Interfaz", "server": "Servidor", "server_id": "ID de servidor", + "custom_url": "Custom URL", + "custom_url_placeholder": "https://speed.test/backend/", "choose_automatically": "Elige automáticamente", - "ookla_license": "He leído y acepto el CLUF, la política de privacidad y las condiciones de servicio de Ookla." + "ookla_license": "He leído y acepto el CLUF, la política de privacidad y las condiciones de servicio de Ookla.", + "ookla_notice": "By using Ookla, you agree to their EULA, privacy policy and terms of service.", + "ookla_desc": "Popular provider with global server network", + "libre_desc": "Open-source, self-hostable speedtest", + "cloudflare_desc": "Fast CDN-based testing" } }, "dropdown": { @@ -52,6 +60,7 @@ "upload": "Velocidad de subida óptima", "download": "Velocidad de descarga óptima", "recommendations": "Valores óptimos", + "optimal_values": "Optimal values", "change_provider": "Cambiar de proveedor", "password": "Cambiar la contraseña", "cron": "Ajustar frecuencia", @@ -64,23 +73,52 @@ "dark_mode": "Modo oscuro", "theme_switched_light": "Conmutado a modo luz", "theme_switched_dark": "Cambiar a modo oscuro", - "info": "Información sobre el proyecto", + "preferences": "Preferences", "provider": "Acerca del proveedor", "integrations": "Integraciones" }, + "about": { + "title": "About MySpeed", + "description": "MySpeed is an open-source speedtest analysis software that records your internet speed over a configurable period of time.", + "github": "GitHub", + "website": "Website", + "donate": "Donate", + "translate": "Translate", + "made_by": "Made with" + }, "options": { "cron": { - "continuous": "Continuo (cada minuto)", - "frequent": "Muy a menudo (cada 30 minutos)", - "default": "Estándar (cada hora)", - "rare": "Raramente (cada 3 horas)", - "really_rare": "Muy raramente (cada 6 horas)" + "continuous": "Continuous", + "continuous_desc": "Every minute - high resource usage", + "frequent": "Very often", + "frequent_desc": "Every 30 minutes", + "default": "Default", + "default_desc": "Every hour - recommended", + "rare": "Rarely", + "rare_desc": "Every 3 hours", + "really_rare": "Very rarely", + "really_rare_desc": "Every 6 hours" }, "level": { "no_access": "Sin acceso", "read_access": "Acceso de sólo lectura" } }, + "password": { + "no_access_desc": "Visitors must enter the password to view anything", + "read_access_desc": "Visitors can view data but can't change settings" + }, + "pause": { + "manual": "Pause Indefinitely", + "manual_desc": "Pause until manually resumed", + "short": "Short Break", + "short_desc": "Pause for 1 hour", + "medium": "Medium Break", + "medium_desc": "Pause for 6 hours", + "long": "Long Break", + "long_desc": "Pause for 12 hours", + "custom": "Custom Duration" + }, "page": { "overview": "Visión general", "statistics": "Estadísticas" @@ -104,11 +142,16 @@ "cron_title": "Ajustar la frecuencia de los tests", "cron_rules": "Regla cron", "cron_next_test": "Próximo test:", + "custom_cron": "Custom cron expression", + "schedule_offset": "Offset schedule", + "schedule_offset_desc": "Adds a small delay to prevent tests from starting at exact times", + "advanced": "Advanced", "time_title": "Mostrar los tests de los últimos:", "download": "Descargar", "pause_title": "Pausar tests durante:", "hours": "Horas", "pause": "Pausar", + "pause_manual_hint": "Leave empty to pause indefinitely", "release_manually": "Reanudar manualmente", "language": "Cambiar de idioma", "view_title": "Cambiar interfaz" @@ -122,6 +165,7 @@ "paused": "Los tests de velocidad están pausados. Por favor, continúe si desea realizar uno.", "running": "Ya se está realizando un test de velocidad. Espera un momento.", "admin_login": "Inicio de sesión de administrador", + "servers": "Servers", "beta": { "title": "Versión beta", "description": "Esta función está todavía en beta. Si encuentras algún error, notifícalo aquí." @@ -153,19 +197,36 @@ "reset": "Restablecer", "confirm_reset": "Sí, restablecer", "settings_exported": "Se han exportado los ajustes", - "settings_imported": "Se han importado los ajustes" + "settings_imported": "Se han importado los ajustes", + "retention": "Data retention", + "retention_desc": "How long speedtest results are kept before being automatically deleted.", + "retention_saved": "Retention period updated", + "retention_days_placeholder": "365", + "retention_days_suffix": "days", + "retention_back": "Back to presets", + "retention_options": { + "week": "7 days", + "month": "30 days", + "quarter": "90 days", + "half_year": "180 days", + "year": "1 year (default)", + "forever": "Keep forever", + "custom": "Custom..." + } }, "latest": { "ping": "Ping", "ping_unit": "ms", + "jitter": "Jitter", + "jitter_unit": "ms", "down": "Descarga", "speed_unit": "Mbps", + "byte_speed_unit": "MB/s", "up": "Subida", "latest": "Último test", "before": "hace" }, "info": { - "credits": "MySpeed es un proyecto de código abierto proporcionado por GNMYT. Deja una estrella en GitHub o haz una donación para apoyar el proyecto.", "recommendations_error": "Hay que hacer al menos 10 tests para poder determinar una media. No importa si los tests se hicieron manual o automáticamente.", "recommendations_info": "Basándose en los resultados de los 10 últimos tests, el ping óptimo es {{ping}} ms, la velocidad de descarga es {{down}} Mbit/s y la velocidad de subida es {{up}} Mbit/s. Lo mejor es que utilices tu velocidad contratada como guía y sólo uses las recomendaciones si coinciden.", "update": "Está disponible una actualización a la versión {{version}}. Ver los cambios y descargar la actualización.", @@ -177,6 +238,10 @@ "title": "Ping", "description": "El ping muestra la rapidez con la que responde el proveedor correspondiente. Cuanto menor sea el tiempo, mejor." }, + "jitter": { + "title": "Jitter", + "description": "Jitter is the variation in ping response times. Lower jitter means a more stable connection, which is important for real-time applications like video calls and gaming." + }, "up": { "title": "Velocidad de subida", "description": "La velocidad de subida afecta a tu experiencia de navegación. Cuanto mayor sea, más rápido podrás enviar datos." @@ -213,15 +278,12 @@ "result": { "title": "Resultado del test", "description": "Este test alcanzó una velocidad de descarga máxima de {{down}} Mbps y una velocidad de subida máxima de {{up}} Mbps. Se creó {{type}} y tardó {{duration}} Segundos.", + "jitter": " The connection jitter was {{jitter}} ms.", "from_you": "de ti", "automatic": "automático" }, "overview": { - "title": "Resumen ({{amount}})", - "1": "24 horas", - "2": "2 días", - "3": "7 días", - "4": "30 días" + "title_range": "Test overview from {{from}} to {{to}}" } }, "errors": { @@ -236,6 +298,10 @@ "invalid_view": "Vista no válida" }, "statistics": { + "average": "Average", + "export": { + "button": "Export" + }, "overview": { "total_title": "Tests totales", "total_description": "Número de tests realizados", @@ -268,8 +334,39 @@ "avg": "Media", "down": "Velodidad de descarga", "up": "Velodidad de subida" + }, + "failed_test": "Failed test", + "hourly": { + "title": "Speed by Time of Day", + "sample_count": "Tests" + }, + "consistency": { + "title": "Connection Stability", + "excellent": "Excellent", + "good": "Good", + "fair": "Fair", + "poor": "Poor", + "ping_variance": "Ping variance" } }, + "calendar": { + "select_range": "Select date range", + "select_start": "Select start date", + "select_end": "Select end date", + "from": "From", + "to": "To", + "last_7_days": "Last 7 days", + "last_30_days": "Last 30 days", + "last_90_days": "Last 90 days", + "last_year": "Last year", + "mon": "Mon", + "tue": "Tue", + "wed": "Wed", + "thu": "Thu", + "fri": "Fri", + "sat": "Sat", + "sun": "Sun" + }, "nodes": { "add": "Añadir servidor", "create": "Añadir", @@ -294,6 +391,11 @@ "yes": "Sí, eliminar", "success": "El servidor se ha eliminado correctamente" }, + "rename": { + "title": "Rename server", + "placeholder": "New server name", + "success": "The server has been renamed successfully" + }, "messages": { "not_reachable": "No se puede acceder al servidor", "password_changed": "Se ha cambiado la contraseña", @@ -322,11 +424,11 @@ "display_name": "Mostrar nombre", "display_name_placeholder": "MySpeed Notificación", "error_message": "Mensaje de error", - "error_message_placeholder": "Error: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Enviar mensajes de error", "send_finished": "Enviar completado", "finished_message": "Mensaje finalizado", - "finished_message_placeholder": "%ping% ms, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "gotify": { @@ -336,11 +438,11 @@ "key": "Ficha de solicitud", "priority": "Prioridad", "error_message": "Mensaje de error", - "error_message_placeholder": "Error: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Enviar mensajes de error", "send_finished": "Enviar completados", "finished_message": "Mensaje finalizado", - "finished_message_placeholder": "%ping% ms, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "pushover": { @@ -349,18 +451,61 @@ "token": "App token", "user_key": "Clave de usuario", "error_message": "Mensaje de error", - "error_message_placeholder": "Error: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Enviar mensajes de error", "send_finished": "Enviar completados", "finished_message": "Mensaje finalizado", - "finished_message_placeholder": "%ping% ms, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "healthChecks": { "title": "HealthChecks", "fields": { "url": "URL de HealthChecks", - "url_placeholder": "https://hc-ping.com/" + "url_placeholder": "https://hc-ping.com/", + "interval": "Ping interval (minutes)", + "interval_placeholder": "1" + } + }, + "influxdb": { + "title": "InfluxDB", + "fields": { + "url": "Server-URL", + "url_placeholder": "http://localhost:8086", + "org": "Organization", + "bucket": "Bucket", + "token": "API token", + "measurement": "Measurement name", + "measurement_placeholder": "speedtests (default)", + "host": "Host tag", + "host_placeholder": "Defaults to the machine hostname", + "tags": "Additional tags", + "tags_placeholder": "region=eu,role=primary (comma-separated)" + } + }, + "ntfy": { + "title": "ntfy", + "fields": { + "url": "Server-URL", + "url_placeholder": "https://ntfy.sh", + "topic": "Topic", + "topic_placeholder": "myspeed-alerts", + "token": "Access token", + "token_placeholder": "tk_... (optional, for protected servers)", + "title": "Notification title", + "title_placeholder": "MySpeed (optional)", + "tags": "Tags", + "tags_placeholder": "warning,satellite (comma-separated)", + "priority": "Default priority (1-5)", + "priority_placeholder": "3", + "error_priority": "Error priority (1-5)", + "error_priority_placeholder": "5", + "error_message": "Error message", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Send error messages", + "send_finished": "Send finished messages", + "finished_message": "Finished message", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "telegram": { @@ -369,11 +514,11 @@ "token": "Bot Token", "chat_id": "Chat ID", "error_message": "Mensaje de error", - "error_message_placeholder": "Error: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Enviar mensajes de error", "send_finished": "Enviar completados", "finished_message": "Mensaje finalizado", - "finished_message_placeholder": "%ping% ms, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "webhook": { @@ -386,11 +531,55 @@ "send_finished": "Enviar completados", "send_alive": "Enviar mensaje de estado", "send_recommendations": "Enviar recomendaciones", - "send_config_updates": "Enviar actualizaciones de configuración" + "send_config_updates": "Enviar actualizaciones de configuración", + "interval": "Keep-Alive interval (minutes)", + "interval_placeholder": "1" } } }, "common": { "back_to_top": "Volver arriba" + }, + "not_found": { + "title": "Page not found", + "description": "The page you're looking for doesn't exist or has been moved.", + "back_home": "Back to Home" + }, + "route_error": { + "title": "Oops!", + "subtitle": "Something went wrong", + "description": "An unexpected error occurred. Please try again or go back to the home page.", + "reload": "Reload Page" + }, + "optimal_values": { + "title": "Optimal Values", + "use_recommended": "Use recommended" + }, + "preferences": { + "title": "Preferences", + "theme": { + "title": "Appearance", + "description": "Switch between dark and light interface.", + "dark": "Dark", + "dark_desc": "Easier on the eyes in low light", + "light": "Light", + "light_desc": "Brighter look for daytime use" + }, + "time_format": { + "title": "Time format", + "description": "How clock times are displayed throughout the app.", + "h24": "24-hour", + "h24_desc": "Display times like 14:30", + "h12": "12-hour", + "h12_desc": "Display times like 2:30 PM" + }, + "speed_unit": { + "title": "Speed unit", + "description": "Choose how speeds are shown. Values are converted automatically.", + "mbps": "Mbps (Megabits per second)", + "mbps_desc": "Standard ISP / speedtest unit", + "mbytes": "MB/s (Megabytes per second)", + "mbytes_desc": "Common in browsers and download managers" + } } } diff --git a/client/public/assets/locales/fr.json b/client/public/assets/locales/fr.json index 5b47bb35..0317d06d 100644 --- a/client/public/assets/locales/fr.json +++ b/client/public/assets/locales/fr.json @@ -23,6 +23,8 @@ "unset": "Retirer", "retry": "Réessayer", "login": "Connexion", + "save": "Save", + "saving": "Saving...", "password": { "title": "Mot de passe requis", "placeholder": "Votre mot de passe", @@ -37,8 +39,14 @@ "interface": "Interface", "server": "Serveur", "server_id": "ID du serveur", + "custom_url": "Custom URL", + "custom_url_placeholder": "https://speed.test/backend/", "choose_automatically": "Choisis automatiquement", - "ookla_license": "J'ai lu et j'accepte le CLUF, la politique de confidentialité et les conditions de service d'Ookla." + "ookla_license": "J'ai lu et j'accepte le CLUF, la politique de confidentialité et les conditions de service d'Ookla.", + "ookla_notice": "By using Ookla, you agree to their EULA, privacy policy and terms of service.", + "ookla_desc": "Popular provider with global server network", + "libre_desc": "Open-source, self-hostable speedtest", + "cloudflare_desc": "Fast CDN-based testing" } }, "dropdown": { @@ -52,6 +60,7 @@ "upload": "Vitesse optimale de téléversement", "download": "Vitesse optimale de téléchargement", "recommendations": "Recommandations", + "optimal_values": "Optimal values", "change_provider": "Changer de fournisseur", "password": "Changer le mot de passe", "cron": "Définir la fréquence", @@ -64,23 +73,52 @@ "dark_mode": "Mode sombre", "theme_switched_light": "Passage en mode lumière", "theme_switched_dark": "Passage en mode sombre", - "info": "À propos du projet", + "preferences": "Preferences", "provider": "A propos du fournisseur", "integrations": "Intégrations" }, + "about": { + "title": "About MySpeed", + "description": "MySpeed is an open-source speedtest analysis software that records your internet speed over a configurable period of time.", + "github": "GitHub", + "website": "Website", + "donate": "Donate", + "translate": "Translate", + "made_by": "Made with" + }, "options": { "cron": { - "continuous": "Continue (toutes les minutes)", - "frequent": "Très souvent (toutes les 30 minutes)", - "default": "Par défaut (toutes les heures)", - "rare": "Rarement (toutes les 3 heures)", - "really_rare": "Très rarement (toutes les 6 heures)" + "continuous": "Continuous", + "continuous_desc": "Every minute - high resource usage", + "frequent": "Very often", + "frequent_desc": "Every 30 minutes", + "default": "Default", + "default_desc": "Every hour - recommended", + "rare": "Rarely", + "rare_desc": "Every 3 hours", + "really_rare": "Very rarely", + "really_rare_desc": "Every 6 hours" }, "level": { "no_access": "Accès Refusé", "read_access": "Accès en lecture seule" } }, + "password": { + "no_access_desc": "Visitors must enter the password to view anything", + "read_access_desc": "Visitors can view data but can't change settings" + }, + "pause": { + "manual": "Pause Indefinitely", + "manual_desc": "Pause until manually resumed", + "short": "Short Break", + "short_desc": "Pause for 1 hour", + "medium": "Medium Break", + "medium_desc": "Pause for 6 hours", + "long": "Long Break", + "long_desc": "Pause for 12 hours", + "custom": "Custom Duration" + }, "page": { "overview": "Vue d'ensemble", "statistics": "Statistiques" @@ -104,11 +142,16 @@ "cron_title": "Définir la fréquence de test", "cron_rules": "Règle Cron", "cron_next_test": "Test suivant :", + "custom_cron": "Custom cron expression", + "schedule_offset": "Offset schedule", + "schedule_offset_desc": "Adds a small delay to prevent tests from starting at exact times", + "advanced": "Advanced", "time_title": "Afficher les tests des dernières ...", "download": "Télécharger", "pause_title": "Mettre en pause les tests de vitesse pour...", "hours": "Heures", "pause": "Suspendre", + "pause_manual_hint": "Leave empty to pause indefinitely", "release_manually": "Libérer manuellement", "language": "Changer de langue", "view_title": "Basculer l’affichage" @@ -122,6 +165,7 @@ "paused": "Les tests de vitesse sont actuellement en pause. Veuillez les poursuivre si vous voulez en faire un.", "running": "Un test de vitesse est déjà en cours. Veuillez patienter un instant.", "admin_login": "Connexion administrateur", + "servers": "Servers", "beta": { "title": "Version Bêta", "description": "Cette fonctionnalité est encore en version bêta. Si vous trouvez des bugs, veuillez les signaler ici." @@ -153,19 +197,36 @@ "reset": "Remise à zéro", "confirm_reset": "Oui, réinitialisation", "settings_exported": "Les paramètres ont été exportés", - "settings_imported": "Les paramètres ont été importés" + "settings_imported": "Les paramètres ont été importés", + "retention": "Data retention", + "retention_desc": "How long speedtest results are kept before being automatically deleted.", + "retention_saved": "Retention period updated", + "retention_days_placeholder": "365", + "retention_days_suffix": "days", + "retention_back": "Back to presets", + "retention_options": { + "week": "7 days", + "month": "30 days", + "quarter": "90 days", + "half_year": "180 days", + "year": "1 year (default)", + "forever": "Keep forever", + "custom": "Custom..." + } }, "latest": { "ping": "Ping", "ping_unit": "ms", + "jitter": "Jitter", + "jitter_unit": "ms", "down": "Téléchargement", "speed_unit": "Mbps", + "byte_speed_unit": "MB/s", "up": "Téléversement", "latest": "Dernier test", "before": "avant" }, "info": { - "credits": "MySpeed est un projet open source fourni par GNMYT. Laisse une étoile sur GitHub ou fais un don pour soutenir le projet.", "recommendations_error": "Vous devez faire au moins 10 tests pour obtenir une moyenne, peu importe que les tests aient été faits manuellement ou automatiquement.", "recommendations_info": "Sur la base des 10 derniers tests, il a été constaté que le ping optimal était de {{ping}} ms, le téléchargement à {{down}} Mbps et le téléversement à {{up}} Mbps.", "update": "Une mise à jour vers la version {{version}} est disponible. Voir les changements et télécharger la mise à jour.", @@ -177,6 +238,10 @@ "title": "Latence", "description": "Le ping vous montre la durée entre votre ordinateur et votre FAI. Plus le temps est court, mieux c'est." }, + "jitter": { + "title": "Jitter", + "description": "Jitter is the variation in ping response times. Lower jitter means a more stable connection, which is important for real-time applications like video calls and gaming." + }, "up": { "title": "Vitesse de téléversement", "description": "La vitesse de téléversement affecte votre expérience de navigation. Plus elle est élevée, plus vite votre ordinateur peut envoyer des données." @@ -213,15 +278,12 @@ "result": { "title": "Résultats du test", "description": "Ce test a atteint une vitesse de téléchargement maximale de {{down}} Mbps et une vitesse de téléchargement maximale de {{up}} Mbps. Il a été créé {{type}} et a duré {{duration}} secondes.", + "jitter": " The connection jitter was {{jitter}} ms.", "from_you": "par vous", "automatic": "automatiquement" }, "overview": { - "title": "Vue d'ensemble du test de la dernière {{amount}}", - "1": "24 heures", - "2": "2 jours", - "3": "7 jours", - "4": "30 jours" + "title_range": "Test overview from {{from}} to {{to}}" } }, "errors": { @@ -236,6 +298,10 @@ "invalid_view": "Vue invalide" }, "statistics": { + "average": "Average", + "export": { + "button": "Export" + }, "overview": { "total_title": "Tests au total", "total_description": "Nombre de tests exécutés", @@ -268,8 +334,39 @@ "avg": "Moyenne", "down": "Télécharger les valeurs", "up": "Charger des valeurs" + }, + "failed_test": "Failed test", + "hourly": { + "title": "Speed by Time of Day", + "sample_count": "Tests" + }, + "consistency": { + "title": "Connection Stability", + "excellent": "Excellent", + "good": "Good", + "fair": "Fair", + "poor": "Poor", + "ping_variance": "Ping variance" } }, + "calendar": { + "select_range": "Select date range", + "select_start": "Select start date", + "select_end": "Select end date", + "from": "From", + "to": "To", + "last_7_days": "Last 7 days", + "last_30_days": "Last 30 days", + "last_90_days": "Last 90 days", + "last_year": "Last year", + "mon": "Mon", + "tue": "Tue", + "wed": "Wed", + "thu": "Thu", + "fri": "Fri", + "sat": "Sat", + "sun": "Sun" + }, "nodes": { "add": "Ajouter un serveur", "create": "Ajouter", @@ -294,6 +391,11 @@ "yes": "Oui, supprimer", "success": "Le serveur a été supprimé avec succès" }, + "rename": { + "title": "Rename server", + "placeholder": "New server name", + "success": "The server has been renamed successfully" + }, "messages": { "not_reachable": "Le serveur n'est pas accessible", "password_changed": "Mot de passe changé", @@ -322,11 +424,11 @@ "display_name": "Nom d'affichage", "display_name_placeholder": "Notification de MySpeed", "error_message": "Message d'erreur", - "error_message_placeholder": "Erreur : %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Envoyer les messages d'erreur", "send_finished": "Envoyer les messages terminés", "finished_message": "Message terminé", - "finished_message_placeholder": "%ping% ms, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "gotify": { @@ -336,11 +438,11 @@ "key": "Jeton d'application", "priority": "Priorité", "error_message": "Message d'erreur", - "error_message_placeholder": "Erreur : %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Envoyer des messages d'erreur", "send_finished": "Envoyer les messages terminés", "finished_message": "Message terminé", - "finished_message_placeholder": "%ping% ms, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "pushover": { @@ -349,18 +451,61 @@ "token": "Jeton d'application", "user_key": "Clé d'utilisateur", "error_message": "Message d'erreur", - "error_message_placeholder": "Erreur : %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Envoyer des messages d'erreur", "send_finished": "Envoyer des messages terminés", "finished_message": "Message terminé", - "finished_message_placeholder": "%ping% ms, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "healthChecks": { "title": "Tests de santé", "fields": { "url": "Examens de santé-URL", - "url_placeholder": "https://hc-ping.com/" + "url_placeholder": "https://hc-ping.com/", + "interval": "Ping interval (minutes)", + "interval_placeholder": "1" + } + }, + "influxdb": { + "title": "InfluxDB", + "fields": { + "url": "Server-URL", + "url_placeholder": "http://localhost:8086", + "org": "Organization", + "bucket": "Bucket", + "token": "API token", + "measurement": "Measurement name", + "measurement_placeholder": "speedtests (default)", + "host": "Host tag", + "host_placeholder": "Defaults to the machine hostname", + "tags": "Additional tags", + "tags_placeholder": "region=eu,role=primary (comma-separated)" + } + }, + "ntfy": { + "title": "ntfy", + "fields": { + "url": "Server-URL", + "url_placeholder": "https://ntfy.sh", + "topic": "Topic", + "topic_placeholder": "myspeed-alerts", + "token": "Access token", + "token_placeholder": "tk_... (optional, for protected servers)", + "title": "Notification title", + "title_placeholder": "MySpeed (optional)", + "tags": "Tags", + "tags_placeholder": "warning,satellite (comma-separated)", + "priority": "Default priority (1-5)", + "priority_placeholder": "3", + "error_priority": "Error priority (1-5)", + "error_priority_placeholder": "5", + "error_message": "Error message", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Send error messages", + "send_finished": "Send finished messages", + "finished_message": "Finished message", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "telegram": { @@ -369,11 +514,11 @@ "token": "Token du bot", "chat_id": "ID de conversation", "error_message": "Message d'erreur", - "error_message_placeholder": "Erreur : %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Envoyer des messages d'erreur", "send_finished": "Envoyer les messages terminés", "finished_message": "Message terminé", - "finished_message_placeholder": "%ping% ms, %download% Mb/s, %upload% Mb/s" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "webhook": { @@ -386,11 +531,55 @@ "send_finished": "Envoyer les messages terminés", "send_alive": "Envoyer des messages Keep-Alive", "send_recommendations": "Envoyez des recommandations", - "send_config_updates": "Envoyer les mises à jour de configuration" + "send_config_updates": "Envoyer les mises à jour de configuration", + "interval": "Keep-Alive interval (minutes)", + "interval_placeholder": "1" } } }, "common": { "back_to_top": "Retour en haut de la page" + }, + "not_found": { + "title": "Page not found", + "description": "The page you're looking for doesn't exist or has been moved.", + "back_home": "Back to Home" + }, + "route_error": { + "title": "Oops!", + "subtitle": "Something went wrong", + "description": "An unexpected error occurred. Please try again or go back to the home page.", + "reload": "Reload Page" + }, + "optimal_values": { + "title": "Optimal Values", + "use_recommended": "Use recommended" + }, + "preferences": { + "title": "Preferences", + "theme": { + "title": "Appearance", + "description": "Switch between dark and light interface.", + "dark": "Dark", + "dark_desc": "Easier on the eyes in low light", + "light": "Light", + "light_desc": "Brighter look for daytime use" + }, + "time_format": { + "title": "Time format", + "description": "How clock times are displayed throughout the app.", + "h24": "24-hour", + "h24_desc": "Display times like 14:30", + "h12": "12-hour", + "h12_desc": "Display times like 2:30 PM" + }, + "speed_unit": { + "title": "Speed unit", + "description": "Choose how speeds are shown. Values are converted automatically.", + "mbps": "Mbps (Megabits per second)", + "mbps_desc": "Standard ISP / speedtest unit", + "mbytes": "MB/s (Megabytes per second)", + "mbytes_desc": "Common in browsers and download managers" + } } } diff --git a/client/public/assets/locales/ga.json b/client/public/assets/locales/ga.json new file mode 100644 index 00000000..1cd0412e --- /dev/null +++ b/client/public/assets/locales/ga.json @@ -0,0 +1,585 @@ +{ + "failed": "Theip air", + "welcome": { + "step": "Céim", + "title": "Fáilte go dtí MySpeed!", + "subtext": "Socraímis MySpeed ​​den chéad uair. Ná bíodh imní ort, ní thógfaidh sé i bhfad.", + "provider_title": "Roghnaigh soláthraí", + "provider_subtext": "Roghnaigh an soláthraí is mian leat a úsáid anseo. Déanfaidh an soláthraí seo do thástálacha ansin.", + "data_title": "Socraigh sonraí is fearr", + "data_subtext": "Roghnaigh do luasanna comhaontaithe conarthach sa chéim seo", + "ms": "(i ms)", + "mbps": "(i Mbps)", + "accept_title": "Glac leis na téarmaí", + "accept_subtext": "Sa chéim seo, ba mhaith linn tú a chur ar an eolas faoin gceadúnas Ookla. Léigh é agus deimhnigh gur léigh tú é agus go nglacann tú leis trí chliceáil ar “Críochnaithe”." + }, + "dialog": { + "okay": "Ceart go leor", + "done": "Déanta", + "continue": "Lean ar aghaidh", + "apply": "Sea, cuir isteach", + "update": "Nuashonrú", + "close": "Dún", + "unset": "Bain", + "retry": "Bain triail eile as", + "login": "Logáil Isteach", + "save": "Save", + "saving": "Saving...", + "password": { + "title": "Pasfhocal ag teastáil", + "placeholder": "Do phasfhocal", + "wrong": "Tá an focal faire a chuir tú isteach mícheart", + "unlock": "Díghlasáil" + }, + "api": { + "title": "Ní féidir teacht ar an API", + "description": "Níorbh fhéidir le MySpeed ​​teacht ar API an cháis seo. Déan iarracht arís ar ball." + }, + "provider": { + "interface": "Comhéadan", + "server": "Freastalaí", + "server_id": "ID an fhreastalaí", + "custom_url": "Custom URL", + "custom_url_placeholder": "https://speed.test/backend/", + "choose_automatically": "Roghnaigh go huathoibríoch", + "ookla_license": "Léigh mé agus glacaim le EULA, polasaí príobháideachta agus téarmaí seirbhíse Ookla.", + "ookla_notice": "By using Ookla, you agree to their EULA, privacy policy and terms of service.", + "ookla_desc": "Popular provider with global server network", + "libre_desc": "Open-source, self-hostable speedtest", + "cloudflare_desc": "Fast CDN-based testing" + } + }, + "dropdown": { + "settings": "Socruithe", + "changes_applied": "Tá do chuid athruithe sábháilte.", + "language_changed": "Tá an teanga athraithe.", + "provider_changed": "Tá an soláthraí athraithe.", + "changes_unsaved": "Níor cuireadh do chuid athruithe i bhfeidhm. Seiceáil do ionchur.", + "invalid": "Ionchur neamhbhailí", + "ping": "Ping is fearr", + "upload": "Luas suas is fearr", + "download": "Luas síos is fearr", + "recommendations": "Moltaí", + "optimal_values": "Optimal values", + "change_provider": "Athraigh soláthraí", + "password": "Athraigh an focal faire", + "cron": "Socraigh minicíocht", + "time": "Socraigh tréimhse", + "storage": "Bainistigh stóráil", + "pause_tests": "Cuir tástálacha ar sos", + "resume_tests": "Atosú tástálacha", + "language": "Athraigh teanga", + "light_mode": "Mód solais", + "dark_mode": "Mód dorcha", + "theme_switched_light": "Athraithe go mód solais", + "theme_switched_dark": "Athraithe go mód dorcha", + "preferences": "Preferences", + "provider": "Maidir leis an soláthraí", + "integrations": "Comhtháthúcháin" + }, + "about": { + "title": "About MySpeed", + "description": "MySpeed is an open-source speedtest analysis software that records your internet speed over a configurable period of time.", + "github": "GitHub", + "website": "Website", + "donate": "Donate", + "translate": "Translate", + "made_by": "Made with" + }, + "options": { + "cron": { + "continuous": "Continuous", + "continuous_desc": "Every minute - high resource usage", + "frequent": "Very often", + "frequent_desc": "Every 30 minutes", + "default": "Default", + "default_desc": "Every hour - recommended", + "rare": "Rarely", + "rare_desc": "Every 3 hours", + "really_rare": "Very rarely", + "really_rare_desc": "Every 6 hours" + }, + "level": { + "no_access": "Gan Rochtain", + "read_access": "Rochtain Léite Amháin" + } + }, + "password": { + "no_access_desc": "Visitors must enter the password to view anything", + "read_access_desc": "Visitors can view data but can't change settings" + }, + "pause": { + "manual": "Pause Indefinitely", + "manual_desc": "Pause until manually resumed", + "short": "Short Break", + "short_desc": "Pause for 1 hour", + "medium": "Medium Break", + "medium_desc": "Pause for 6 hours", + "long": "Long Break", + "long_desc": "Pause for 12 hours", + "custom": "Custom Duration" + }, + "page": { + "overview": "Forbhreathnú", + "statistics": "Staitisticí" + }, + "update": { + "ping_title": "Socraigh an ping is fearr (ms)", + "ping_placeholder": "Ping (ms)", + "upload_title": "Socraigh an luas suas is fearr (Mbps)", + "upload_placeholder": "Luas suas (Mbps)", + "download_title": "Socraigh an luas síos is fearr (Mbps)", + "download_placeholder": "Luas síos (Mbps)", + "recommendations_title": "Moltaí is fearr", + "recommendations_set": "Moltaí uathoibríocha a shocrú?", + "provider_title": "Socraigh soláthraí tástála luais", + "manually": "Socraigh de láimh", + "new_password": "Socraigh pasfhocal nua", + "password_placeholder": "Pasfhocal nua", + "password_removed": "Baineadh an glas pasfhocail agus baineadh an pasfhocal socraithe.", + "level": "Athraigh leibhéal", + "level_title": "Cearta do chuairteoirí", + "cron_title": "Socraigh minicíocht tástála", + "cron_rules": "Riail Cron", + "cron_next_test": "An chéad tástáil eile:", + "custom_cron": "Custom cron expression", + "schedule_offset": "Offset schedule", + "schedule_offset_desc": "Adds a small delay to prevent tests from starting at exact times", + "advanced": "Advanced", + "time_title": "Taispeáin tástálacha an ceann deireanach ...", + "download": "Íoslódáil", + "pause_title": "Cuir tástálacha luais ar sos le haghaidh...", + "hours": "Uaireanta", + "pause": "Sos", + "pause_manual_hint": "Leave empty to pause indefinitely", + "release_manually": "Scaoil de láimh", + "language": "Athraigh teanga", + "view_title": "Athraigh an radharc" + }, + "header": { + "title": "MySpeed", + "running_tooltip": "Tástáil Luas ag rith", + "start_tooltip": "Tosaigh an tástáil luais", + "new_update": "Nuashonrú ar fáil", + "download": "Íoslódáil", + "paused": "Tá tástálacha luais ar sos faoi láthair. Lean orthu más mian leat ceann a dhéanamh.", + "running": "Tá tástáil luais ar siúl cheana féin. Fan nóiméad le do thoil.", + "admin_login": "Logáil Isteach Riarthóra", + "servers": "Servers", + "beta": { + "title": "Leagan Béite", + "description": "Tá an ghné seo fós i mbéite. Má aimsíonn tú aon fhabhtanna, cuir in iúl iad anseo." + } + }, + "storage": { + "speedtests": "Tástálacha luais", + "configuration": "Cumraíocht", + "stored_tests": "Tástálacha stóráilte", + "tests": "Tástálacha", + "export_tests": "Tástálacha easpórtála", + "tests_exported": "Tá na tástálacha onnmhairithe", + "csv": "CSV", + "json": "JSON", + "import_tests": "Tástálacha allmhairithe", + "tests_imported": "Tá na tástálacha allmhairithe", + "import_test_error": "Tharla earráid agus na tástálacha á n-iompórtáil", + "import_config_error": "Tharla earráid agus an chumraíocht á hallmhairiú", + "export": "Easpórtáil", + "import": "Iompórtáil", + "clear_history": "Glan stair", + "history_cleared": "Tá an stair glanta", + "delete": "Scrios", + "confirm_delete": "Sea, scrios", + "export_settings": "Socruithe easpórtála", + "import_settings": "Socruithe allmhairithe", + "factory_reset": "Athshocrú monarchan", + "factory_reset_completed": "Tá an athshocrú monarchan críochnaithe", + "reset": "Athshocraigh", + "confirm_reset": "Sea, athshocraigh", + "settings_exported": "Tá na socruithe onnmhairithe", + "settings_imported": "Tá na socruithe allmhairithe", + "retention": "Data retention", + "retention_desc": "How long speedtest results are kept before being automatically deleted.", + "retention_saved": "Retention period updated", + "retention_days_placeholder": "365", + "retention_days_suffix": "days", + "retention_back": "Back to presets", + "retention_options": { + "week": "7 days", + "month": "30 days", + "quarter": "90 days", + "half_year": "180 days", + "year": "1 year (default)", + "forever": "Keep forever", + "custom": "Custom..." + } + }, + "latest": { + "ping": "Ping", + "ping_unit": "ms", + "jitter": "Jitter", + "jitter_unit": "ms", + "down": "Íoslódáil", + "speed_unit": "Mbps", + "byte_speed_unit": "MB/s", + "up": "Uaslódáil", + "latest": "Tástáil dheireanach", + "before": "roimhe" + }, + "info": { + "recommendations_error": "Caithfidh tú 10 dtástáil ar a laghad a dhéanamh chun meán a fháil. Is cuma má rinneadh na tástálacha de láimh nó go huathoibríoch.", + "recommendations_info": "Bunaithe ar na 10 dtástáil dheireanacha, fuarthas amach gurbh é an ping is fearr ná {{ping}} ms, an íoslódáil ag {{down}} Mbps agus an uaslódáil ag {{up}} Mbps. Is fearr duit féin a threorú ar do chonradh idirlín agus gan glacadh leis ach amháin má chomhlíonann sé sin.", + "update": "Tá nuashonrú ar leagan {{version}} ar fáil. Féach na hathruithe agus íoslódáil an nuashonrú.", + "down": { + "title": "Luas íoslódála", + "description": "Bíonn tionchar ag luas íoslódála ar do thaithí brabhsála. Dá mhéad a gheobhaidh tú, is ea is tapúla is féidir le do ríomhaire sonraí a fháil." + }, + "ping": { + "title": "Ping", + "description": "Léiríonn an ping duit cé chomh tapa agus a fhreagraíonn an soláthraí faoi seach. Dá giorra an t-am, is amhlaidh is fearr." + }, + "jitter": { + "title": "Jitter", + "description": "Jitter is the variation in ping response times. Lower jitter means a more stable connection, which is important for real-time applications like video calls and gaming." + }, + "up": { + "title": "Luas uaslódála", + "description": "Bíonn tionchar ag luas uaslódála ar do thaithí brabhsála. Dá mhéad a gheobhaidh tú, is ea is tapúla is féidir le do ríomhaire sonraí a sheoladh." + }, + "latest": { + "title": "Tástáil dheireanach", + "description": "Seo an t-am a thaispeánann duit cathain a rinneadh an tástáil dheireanach. Sa chás seo, rinneadh an ceann deireanach ar {{date}} ag {{time}}." + } + }, + "time": { + "now": "Díreach anois", + "seconds": "{{seconds}} soicind", + "minute": "1 nóiméad", + "minutes": "{{minutes}} nóiméad", + "hour": "1 uair an chloig", + "hours": "{{hours}} uaireanta", + "on": "Ar", + "at": "Ag" + }, + "test": { + "not_available": "Níl aon tástálacha ar fáil faoi láthair", + "no_latest": "Níl aon tástáil reatha ar fáil. Déan tástáil nó fan go dtí go ndéanfar an chéad tástáil eile.", + "loading_more": "Ag lódáil tuilleadh tástálacha...", + "no_more_tests": "Níl aon tástálacha eile le luchtú", + "unknown_error": "Earráid anaithnid:", + "failed": "Theip ar an tástáil", + "recheck": "Seiceáil a mhéid is féidir leat an dtarlaíonn sé seo go minic.", + "delete": "Scrios Tástáil", + "deleted": "Scriosadh an tástáil", + "average": { + "title": "Meánluas", + "description": "{{amount}} Léirigh tástálacha gur éirigh leis luas íoslódála meánach de {{down}} Mbps agus luas uaslódála de {{up}} Mbps a bhaint amach ar {{date}}. Thóg na tástálacha meán de {{duration}} soicind." + }, + "result": { + "title": "Toradh tástála", + "description": "Bhain an tástáil seo uasluas íoslódála amach de {{down}} Mbps agus uasluas uaslódála de {{up}} Mbps. Cruthaíodh í {{type}} agus mhair sí {{duration}} soicind.", + "jitter": " The connection jitter was {{jitter}} ms.", + "from_you": "ag tú", + "automatic": "go huathoibríoch" + }, + "overview": { + "title_range": "Test overview from {{from}} to {{to}}" + } + }, + "errors": { + "network_unreachable": "Bhí an nasc Idirlín éagobhsaí le linn na tástála", + "took_too_long": "Thóg an tástáil ró-fhada agus cuireadh ar ceal í", + "no_permission": "Níl cead ag MySpeed ​​an tástáil seo a thosú", + "resource_unavailable": "Níorbh fhéidir an tástáil a dhéanamh mar nach raibh an acmhainn ar fáil go sealadach", + "no_route": "Níorbh fhéidir an tástáil a dhéanamh mar nach raibh aon bhealach chuig an óstach ann", + "connection_refused": "Níorbh fhéidir an tástáil a dhéanamh mar gur diúltaíodh don nasc", + "timed_out": "Bhí an nasc Idirlín éagobhsaí le linn na tástála", + "config": "Níorbh fhéidir an comhad cumraíochta a luchtú", + "invalid_view": "Radharc neamhbhailí" + }, + "statistics": { + "average": "Average", + "export": { + "button": "Export" + }, + "overview": { + "total_title": "Iomlán na dtástálacha", + "total_description": "Líon na dtástálacha a rinneadh", + "failed_title": "Tástálacha teipthe", + "failed_description": "Líon na dtástálacha nár éirigh leo", + "average_title": "Meánfhad", + "average_description": "Meánfhad na dtástálacha" + }, + "failed": { + "title": "Tástálacha teipthe", + "success": "Rathúil", + "failed": "Theip air", + "label": "Tástálacha" + }, + "speed": { + "title": "Luas" + }, + "manual": { + "title": "Tástálacha láimhe", + "yes": "Cruthaithe de láimh", + "no": "Cruthaithe go huathoibríoch" + }, + "duration": { + "title": "Fad na tástála", + "label": "Méid" + }, + "values": { + "min": "Íosmhéid", + "max": "Uasmhéid", + "avg": "Meán", + "down": "Luachanna a íoslódáil", + "up": "Uaslódáil luachanna" + }, + "failed_test": "Failed test", + "hourly": { + "title": "Speed by Time of Day", + "sample_count": "Tests" + }, + "consistency": { + "title": "Connection Stability", + "excellent": "Excellent", + "good": "Good", + "fair": "Fair", + "poor": "Poor", + "ping_variance": "Ping variance" + } + }, + "calendar": { + "select_range": "Select date range", + "select_start": "Select start date", + "select_end": "Select end date", + "from": "From", + "to": "To", + "last_7_days": "Last 7 days", + "last_30_days": "Last 30 days", + "last_90_days": "Last 90 days", + "last_year": "Last year", + "mon": "Mon", + "tue": "Tue", + "wed": "Wed", + "thu": "Thu", + "fri": "Fri", + "sat": "Sat", + "sun": "Sun" + }, + "nodes": { + "add": "Cuir freastalaí leis", + "create": "Cuir leis", + "this_server": "An freastalaí seo", + "created": "Tá an freastalaí curtha leis go rathúil", + "password_required": "Éilíonn an nód seo pasfhocal", + "update_password": "Nuashonraigh pasfhocal an nóid seo le do thoil", + "password_outdated": "Pasfhocal atá as dáta", + "password_updated": "Tá an focal faire nuashonraithe go rathúil", + "preview_active": "Tá cur leis agus scriosadh freastalaithe díchumasaithe le linn mód taispeána.", + "placeholder": { + "name": "Ásc MySpeed", + "url": "https://your-server.com" + }, + "group": { + "name": "Ainm an fhreastalaí", + "url": "Seoladh an fhreastalaí" + }, + "delete": { + "title": "Scrios an freastalaí", + "description": "Scriosfar an freastalaí {{name}} (#{{id}}). Ní ​​féidir an gníomh seo a chealú. Ar mhaith leat leanúint ar aghaidh?", + "yes": "Sea, scrios", + "success": "Scriosadh an freastalaí go rathúil" + }, + "rename": { + "title": "Rename server", + "placeholder": "New server name", + "success": "The server has been renamed successfully" + }, + "messages": { + "not_reachable": "Ní féidir teacht ar an bhfreastalaí", + "password_changed": "Pasfhocal athraithe", + "tests_pending": "Torthaí tástála ar feitheamh" + } + }, + "preview": { + "title": "Mód taispeána", + "info": "DEMO", + "description": "Tá tú i mód taispeána faoi láthair. Tá roinnt gnéithe díchumasaithe agus ní féidir roinnt socruithe a athrú. Más mian leat gach gné a úsáid, is féidir leat MySpeed a shuiteáil ar do fhreastalaí féin." + }, + "integrations": { + "none_active": "Níl an comhtháthú seo gníomhach.
Cruthaigh", + "preview_active": "Tá comhtháthú díchumasaithe le linn mód taispeána.", + "display_name": "Tá comhtháthú díchumasaithe le linn mód taispeána", + "create": "Cruthaigh", + "activity": { + "never_executed": "Níor cuireadh chun báis riamh é", + "last_run": "An rith dheireanach roimhe seo " + }, + "discord": { + "title": "Discord", + "fields": { + "url": "URL-Crúca Gréasáin", + "url_placeholder": "https://discord.com/api/webhooks/...", + "display_name": "Ainm taispeána", + "display_name_placeholder": "Fógra MySpeed", + "error_message": "Teachtaireacht earráide", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Seol teachtaireachtaí earráide", + "send_finished": "Seol teachtaireachtaí críochnaithe", + "finished_message": "Teachtaireacht críochnaithe", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" + } + }, + "gotify": { + "title": "Gotify", + "fields": { + "url": "URL an fhreastalaí", + "key": "Comhartha aip", + "priority": "Tosaíocht", + "error_message": "Teachtaireacht earráide", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Seol teachtaireachtaí earráide", + "send_finished": "Seol teachtaireachtaí críochnaithe", + "finished_message": "Teachtaireacht críochnaithe", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" + } + }, + "pushover": { + "title": "Brúigh thar", + "fields": { + "token": "Comhartha aip", + "user_key": "Eochair úsáideora", + "error_message": "Teachtaireacht earráide", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Seol teachtaireachtaí earráide", + "send_finished": "Seol teachtaireachtaí críochnaithe", + "finished_message": "Teachtaireacht críochnaithe", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" + } + }, + "healthChecks": { + "title": "Seiceálacha Sláinte", + "fields": { + "url": "URL Seiceálacha Sláinte", + "url_placeholder": "https://hc-ping.com/", + "interval": "Ping interval (minutes)", + "interval_placeholder": "1" + } + }, + "influxdb": { + "title": "InfluxDB", + "fields": { + "url": "Server-URL", + "url_placeholder": "http://localhost:8086", + "org": "Organization", + "bucket": "Bucket", + "token": "API token", + "measurement": "Measurement name", + "measurement_placeholder": "speedtests (default)", + "host": "Host tag", + "host_placeholder": "Defaults to the machine hostname", + "tags": "Additional tags", + "tags_placeholder": "region=eu,role=primary (comma-separated)" + } + }, + "ntfy": { + "title": "ntfy", + "fields": { + "url": "Server-URL", + "url_placeholder": "https://ntfy.sh", + "topic": "Topic", + "topic_placeholder": "myspeed-alerts", + "token": "Access token", + "token_placeholder": "tk_... (optional, for protected servers)", + "title": "Notification title", + "title_placeholder": "MySpeed (optional)", + "tags": "Tags", + "tags_placeholder": "warning,satellite (comma-separated)", + "priority": "Default priority (1-5)", + "priority_placeholder": "3", + "error_priority": "Error priority (1-5)", + "error_priority_placeholder": "5", + "error_message": "Error message", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Send error messages", + "send_finished": "Send finished messages", + "finished_message": "Finished message", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" + } + }, + "telegram": { + "title": "Telegram", + "fields": { + "token": "Comhartha Bot", + "chat_id": "Aitheantas Comhrá", + "error_message": "Teachtaireacht earráide", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Seol teachtaireachtaí earráide", + "send_finished": "Seol teachtaireachtaí críochnaithe", + "finished_message": "Teachtaireacht críochnaithe", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" + } + }, + "webhook": { + "title": "Crúca Gréasáin", + "fields": { + "url": "URL-Crúca Gréasáin", + "url_placeholder": "https://your-server.com/hook", + "send_started": "Cuireadh tús leis an seoladh", + "send_failed": "Seol teachtaireachtaí earráide", + "send_finished": "Seol teachtaireachtaí críochnaithe", + "send_alive": "Seol teachtaireachtaí Coinnigh Beo", + "send_recommendations": "Seol moltaí", + "send_config_updates": "Seol nuashonruithe cumraíochta", + "interval": "Keep-Alive interval (minutes)", + "interval_placeholder": "1" + } + } + }, + "common": { + "back_to_top": "Ar ais go barr" + }, + "not_found": { + "title": "Page not found", + "description": "The page you're looking for doesn't exist or has been moved.", + "back_home": "Back to Home" + }, + "route_error": { + "title": "Oops!", + "subtitle": "Something went wrong", + "description": "An unexpected error occurred. Please try again or go back to the home page.", + "reload": "Reload Page" + }, + "optimal_values": { + "title": "Optimal Values", + "use_recommended": "Use recommended" + }, + "preferences": { + "title": "Preferences", + "theme": { + "title": "Appearance", + "description": "Switch between dark and light interface.", + "dark": "Dark", + "dark_desc": "Easier on the eyes in low light", + "light": "Light", + "light_desc": "Brighter look for daytime use" + }, + "time_format": { + "title": "Time format", + "description": "How clock times are displayed throughout the app.", + "h24": "24-hour", + "h24_desc": "Display times like 14:30", + "h12": "12-hour", + "h12_desc": "Display times like 2:30 PM" + }, + "speed_unit": { + "title": "Speed unit", + "description": "Choose how speeds are shown. Values are converted automatically.", + "mbps": "Mbps (Megabits per second)", + "mbps_desc": "Standard ISP / speedtest unit", + "mbytes": "MB/s (Megabytes per second)", + "mbytes_desc": "Common in browsers and download managers" + } + } +} diff --git a/client/public/assets/locales/id.json b/client/public/assets/locales/id.json new file mode 100644 index 00000000..95f0f8e9 --- /dev/null +++ b/client/public/assets/locales/id.json @@ -0,0 +1,585 @@ +{ + "failed": "Gagal", + "welcome": { + "step": "Langkah", + "title": "Selamat datang di MySpeed!", + "subtext": "Mari kita siapkan MySpeed untuk pertama kalinya. Jangan khawatir, tidak akan lama.", + "provider_title": "Pilih penyedia", + "provider_subtext": "Pilih penyedia yang ingin Anda gunakan di sini. Penyedia ini kemudian akan melakukan pengujian Anda.", + "data_title": "Atur data optimal", + "data_subtext": "Pilih kecepatan yang disepakati secara kontraktual dalam langkah ini", + "ms": "(dalam ms)", + "mbps": "(dalam Mbps)", + "accept_title": "Terima persyaratan", + "accept_subtext": "Pada langkah ini, kami ingin memberi tahu Anda tentang lisensi Ookla. Bacalah dan konfirmasi bahwa Anda telah membaca dan menerimanya dengan mengklik \"Selesai\"." + }, + "dialog": { + "okay": "Baik", + "done": "Selesai", + "continue": "Lanjutkan", + "apply": "Ya, terapkan", + "update": "Perbarui", + "close": "Tutup", + "unset": "Hapus", + "retry": "Coba lagi", + "login": "Masuk", + "save": "Save", + "saving": "Saving...", + "password": { + "title": "Kata sandi diperlukan", + "placeholder": "Kata sandi Anda", + "wrong": "Kata sandi yang Anda masukkan salah", + "unlock": "Buka kunci" + }, + "api": { + "title": "API tidak dapat dijangkau", + "description": "MySpeed tidak dapat menjangkau API dari instance ini. Silakan coba lagi nanti." + }, + "provider": { + "interface": "Antarmuka", + "server": "Server", + "server_id": "ID Server", + "custom_url": "Custom URL", + "custom_url_placeholder": "https://speed.test/backend/", + "choose_automatically": "Pilih secara otomatis", + "ookla_license": "Saya telah membaca dan menerima EULA, kebijakan privasi dan ketentuan layanan dari Ookla.", + "ookla_notice": "By using Ookla, you agree to their EULA, privacy policy and terms of service.", + "ookla_desc": "Popular provider with global server network", + "libre_desc": "Open-source, self-hostable speedtest", + "cloudflare_desc": "Fast CDN-based testing" + } + }, + "dropdown": { + "settings": "Pengaturan", + "changes_applied": "Perubahan Anda telah disimpan.", + "language_changed": "Bahasa telah diubah.", + "provider_changed": "Penyedia telah diubah.", + "changes_unsaved": "Perubahan Anda tidak diterapkan. Periksa masukan Anda.", + "invalid": "Masukan tidak valid", + "ping": "Ping optimal", + "upload": "Kecepatan unggah optimal", + "download": "Kecepatan unduh optimal", + "recommendations": "Rekomendasi", + "optimal_values": "Optimal values", + "change_provider": "Ubah penyedia", + "password": "Ubah kata sandi", + "cron": "Atur frekuensi", + "time": "Atur periode", + "storage": "Kelola penyimpanan", + "pause_tests": "Jeda pengujian", + "resume_tests": "Lanjutkan pengujian", + "language": "Ubah bahasa", + "light_mode": "Mode terang", + "dark_mode": "Mode gelap", + "theme_switched_light": "Beralih ke mode terang", + "theme_switched_dark": "Beralih ke mode gelap", + "preferences": "Preferences", + "provider": "Tentang penyedia", + "integrations": "Integrasi" + }, + "about": { + "title": "About MySpeed", + "description": "MySpeed is an open-source speedtest analysis software that records your internet speed over a configurable period of time.", + "github": "GitHub", + "website": "Website", + "donate": "Donate", + "translate": "Translate", + "made_by": "Made with" + }, + "options": { + "cron": { + "continuous": "Kontinyu (setiap menit)", + "continuous_desc": "Every minute - high resource usage", + "frequent": "Sangat sering (setiap 30 menit)", + "frequent_desc": "Every 30 minutes", + "default": "Default (setiap jam)", + "default_desc": "Every hour - recommended", + "rare": "Jarang (setiap 3 jam)", + "rare_desc": "Every 3 hours", + "really_rare": "Sangat jarang (setiap 6 jam)", + "really_rare_desc": "Every 6 hours" + }, + "level": { + "no_access": "Tidak Ada Akses", + "read_access": "Akses Hanya Baca" + } + }, + "password": { + "no_access_desc": "Visitors must enter the password to view anything", + "read_access_desc": "Visitors can view data but can't change settings" + }, + "pause": { + "manual": "Pause Indefinitely", + "manual_desc": "Pause until manually resumed", + "short": "Short Break", + "short_desc": "Pause for 1 hour", + "medium": "Medium Break", + "medium_desc": "Pause for 6 hours", + "long": "Long Break", + "long_desc": "Pause for 12 hours", + "custom": "Custom Duration" + }, + "page": { + "overview": "Ringkasan", + "statistics": "Statistik" + }, + "update": { + "ping_title": "Atur ping optimal (ms)", + "ping_placeholder": "Ping (ms)", + "upload_title": "Atur kecepatan unggah optimal (Mbps)", + "upload_placeholder": "Kecepatan unggah (Mbps)", + "download_title": "Atur kecepatan unduh optimal (Mbps)", + "download_placeholder": "Kecepatan unduh (Mbps)", + "recommendations_title": "Rekomendasi optimal", + "recommendations_set": "Atur rekomendasi otomatis?", + "provider_title": "Atur penyedia speedtest", + "manually": "Atur secara manual", + "new_password": "Atur kata sandi baru", + "password_placeholder": "Kata sandi baru", + "password_removed": "Kunci kata sandi telah dihapus dan kata sandi yang diatur telah dihapus.", + "level": "Ubah level", + "level_title": "Hak untuk pengunjung", + "cron_title": "Atur frekuensi pengujian", + "cron_rules": "Aturan Cron", + "cron_next_test": "Pengujian Berikutnya:", + "custom_cron": "Custom cron expression", + "schedule_offset": "Offset schedule", + "schedule_offset_desc": "Adds a small delay to prevent tests from starting at exact times", + "advanced": "Advanced", + "time_title": "Tampilkan pengujian dari ... terakhir", + "download": "Unduh", + "pause_title": "Jeda speedtest selama...", + "hours": "Jam", + "pause": "Jeda", + "pause_manual_hint": "Leave empty to pause indefinitely", + "release_manually": "Lepaskan secara manual", + "language": "Ubah bahasa", + "view_title": "Alihkan tampilan" + }, + "header": { + "title": "MySpeed", + "running_tooltip": "Speedtest sedang berjalan", + "start_tooltip": "Mulai speedtest", + "new_update": "Pembaruan tersedia", + "download": "Unduh", + "paused": "Speedtest saat ini dijeda. Silakan lanjutkan jika Anda ingin melakukan satu.", + "running": "Speedtest sudah berjalan. Silakan tunggu sebentar.", + "admin_login": "Masuk Admin", + "servers": "Servers", + "beta": { + "title": "Versi Beta", + "description": "Fitur ini masih dalam beta. Jika Anda menemukan bug, silakan laporkan di sini." + } + }, + "storage": { + "speedtests": "Speedtest", + "configuration": "Konfigurasi", + "stored_tests": "Pengujian tersimpan", + "tests": "Pengujian", + "export_tests": "Ekspor pengujian", + "tests_exported": "Pengujian telah diekspor", + "csv": "CSV", + "json": "JSON", + "import_tests": "Impor pengujian", + "tests_imported": "Pengujian telah diimpor", + "import_test_error": "Terjadi kesalahan saat mengimpor pengujian", + "import_config_error": "Terjadi kesalahan saat mengimpor konfigurasi", + "export": "Ekspor", + "import": "Impor", + "clear_history": "Hapus riwayat", + "history_cleared": "Riwayat telah dihapus", + "delete": "Hapus", + "confirm_delete": "Ya, hapus", + "export_settings": "Ekspor pengaturan", + "import_settings": "Impor pengaturan", + "factory_reset": "Reset pabrik", + "factory_reset_completed": "Reset pabrik telah selesai", + "reset": "Reset", + "confirm_reset": "Ya, reset", + "settings_exported": "Pengaturan telah diekspor", + "settings_imported": "Pengaturan telah diimpor", + "retention": "Data retention", + "retention_desc": "How long speedtest results are kept before being automatically deleted.", + "retention_saved": "Retention period updated", + "retention_days_placeholder": "365", + "retention_days_suffix": "days", + "retention_back": "Back to presets", + "retention_options": { + "week": "7 days", + "month": "30 days", + "quarter": "90 days", + "half_year": "180 days", + "year": "1 year (default)", + "forever": "Keep forever", + "custom": "Custom..." + } + }, + "latest": { + "ping": "Ping", + "ping_unit": "ms", + "jitter": "Jitter", + "jitter_unit": "ms", + "down": "Unduh", + "speed_unit": "Mbps", + "byte_speed_unit": "MB/s", + "up": "Unggah", + "latest": "Pengujian terakhir", + "before": "yang lalu" + }, + "info": { + "recommendations_error": "Anda harus melakukan setidaknya 10 pengujian untuk mendapatkan rata-rata. Tidak masalah apakah pengujian dilakukan secara manual atau otomatis.", + "recommendations_info": "Berdasarkan 10 pengujian terakhir, ditemukan bahwa ping optimal adalah {{ping}} ms, unduh di {{down}} Mbps dan unggah di {{up}} Mbps. Sebaiknya berorientasi pada kontrak internet Anda dan hanya mengadopsinya jika sesuai.", + "update": "Pembaruan ke versi {{version}} tersedia. Lihat perubahan dan unduh pembaruan.", + "down": { + "title": "Kecepatan unduh", + "description": "Kecepatan unduh mempengaruhi pengalaman menjelajah Anda. Semakin banyak yang Anda dapatkan, semakin cepat komputer Anda dapat menerima data." + }, + "ping": { + "title": "Ping", + "description": "Ping menunjukkan seberapa cepat penyedia masing-masing merespons. Semakin pendek waktunya, semakin baik." + }, + "jitter": { + "title": "Jitter", + "description": "Jitter is the variation in ping response times. Lower jitter means a more stable connection, which is important for real-time applications like video calls and gaming." + }, + "up": { + "title": "Kecepatan unggah", + "description": "Kecepatan unggah mempengaruhi pengalaman menjelajah Anda. Semakin banyak yang Anda dapatkan, semakin cepat komputer Anda dapat mengirim data." + }, + "latest": { + "title": "Pengujian terakhir", + "description": "Ini adalah waktu yang menunjukkan kapan pengujian terakhir dijalankan. Dalam hal ini, yang terakhir berlangsung pada {{date}} pada {{time}}." + } + }, + "time": { + "now": "Baru saja", + "seconds": "{{seconds}} detik", + "minute": "1 menit", + "minutes": "{{minutes}} menit", + "hour": "1 jam", + "hours": "{{hours}} jam", + "on": "Pada", + "at": "Pukul" + }, + "test": { + "not_available": "Saat ini tidak ada pengujian yang tersedia", + "no_latest": "Tidak ada pengujian saat ini yang tersedia. Silakan lakukan pengujian atau tunggu hingga pengujian berikutnya dilakukan.", + "loading_more": "Memuat lebih banyak pengujian...", + "no_more_tests": "Tidak ada lagi pengujian untuk dimuat", + "unknown_error": "Kesalahan tidak dikenal:", + "failed": "Pengujian gagal", + "recheck": "Silakan periksa sebisa mungkin jika ini sering terjadi.", + "delete": "Hapus Pengujian", + "deleted": "Pengujian telah dihapus", + "average": { + "title": "Kecepatan Rata-rata", + "description": "{{amount}} Pengujian telah menunjukkan bahwa pada {{date}} kecepatan unduh rata-rata {{down}} Mbps dan kecepatan unggah {{up}} Mbps tercapai. Pengujian memakan waktu rata-rata {{duration}} Detik." + }, + "result": { + "title": "Hasil pengujian", + "description": "Pengujian ini mencapai kecepatan unduh maksimum {{down}} Mbps dan kecepatan unggah maksimum {{up}} Mbps. Dibuat {{type}} dan memakan waktu {{duration}} Detik.", + "jitter": " The connection jitter was {{jitter}} ms.", + "from_you": "oleh Anda", + "automatic": "secara otomatis" + }, + "overview": { + "title_range": "Test overview from {{from}} to {{to}}" + } + }, + "errors": { + "network_unreachable": "Koneksi internet tidak stabil selama pengujian", + "took_too_long": "Pengujian memakan waktu terlalu lama dan dibatalkan", + "no_permission": "MySpeed tidak memiliki izin untuk memulai pengujian ini", + "resource_unavailable": "Pengujian tidak dapat dilakukan karena sumber daya tidak tersedia sementara", + "no_route": "Pengujian tidak dapat dilakukan karena tidak ada rute ke host", + "connection_refused": "Pengujian tidak dapat dilakukan karena koneksi ditolak", + "timed_out": "Koneksi internet tidak stabil selama pengujian", + "config": "File konfigurasi tidak dapat dimuat", + "invalid_view": "Tampilan tidak valid" + }, + "statistics": { + "average": "Average", + "export": { + "button": "Export" + }, + "overview": { + "total_title": "Total pengujian", + "total_description": "Jumlah pengujian yang dieksekusi", + "failed_title": "Pengujian gagal", + "failed_description": "Jumlah pengujian yang gagal", + "average_title": "Durasi rata-rata", + "average_description": "Durasi rata-rata dari pengujian" + }, + "failed": { + "title": "Pengujian gagal", + "success": "Berhasil", + "failed": "Gagal", + "label": "Pengujian" + }, + "speed": { + "title": "Kecepatan" + }, + "manual": { + "title": "Pengujian manual", + "yes": "Dibuat secara manual", + "no": "Dibuat secara otomatis" + }, + "duration": { + "title": "Durasi pengujian", + "label": "Jumlah" + }, + "values": { + "min": "Minimum", + "max": "Maksimum", + "avg": "Rata-rata", + "down": "Nilai unduh", + "up": "Nilai unggah" + }, + "failed_test": "Failed test", + "hourly": { + "title": "Speed by Time of Day", + "sample_count": "Tests" + }, + "consistency": { + "title": "Connection Stability", + "excellent": "Excellent", + "good": "Good", + "fair": "Fair", + "poor": "Poor", + "ping_variance": "Ping variance" + } + }, + "calendar": { + "select_range": "Select date range", + "select_start": "Select start date", + "select_end": "Select end date", + "from": "From", + "to": "To", + "last_7_days": "Last 7 days", + "last_30_days": "Last 30 days", + "last_90_days": "Last 90 days", + "last_year": "Last year", + "mon": "Mon", + "tue": "Tue", + "wed": "Wed", + "thu": "Thu", + "fri": "Fri", + "sat": "Sat", + "sun": "Sun" + }, + "nodes": { + "add": "Tambah server", + "create": "Tambah", + "this_server": "Server ini", + "created": "Server telah berhasil ditambahkan", + "password_required": "Node ini memerlukan kata sandi", + "update_password": "Silakan perbarui kata sandi dari node ini", + "password_outdated": "Kata sandi kedaluwarsa", + "password_updated": "Kata sandi telah berhasil diperbarui", + "preview_active": "Menambah dan menghapus server dinonaktifkan selama mode demo.", + "placeholder": { + "name": "Instance MySpeed", + "url": "https://your-server.com" + }, + "group": { + "name": "Nama server", + "url": "Alamat server" + }, + "delete": { + "title": "Hapus server", + "description": "Server {{name}} (#{{id}}) akan dihapus. Tindakan ini tidak dapat dibatalkan. Apakah Anda ingin melanjutkan?", + "yes": "Ya, hapus", + "success": "Server telah berhasil dihapus" + }, + "rename": { + "title": "Rename server", + "placeholder": "New server name", + "success": "The server has been renamed successfully" + }, + "messages": { + "not_reachable": "Server tidak dapat dijangkau", + "password_changed": "Kata sandi diubah", + "tests_pending": "Hasil pengujian tertunda" + } + }, + "preview": { + "title": "Mode demo", + "info": "DEMO", + "description": "Anda saat ini dalam mode demo. Beberapa fitur dinonaktifkan dan beberapa pengaturan tidak dapat diubah. Jika Anda ingin menggunakan semua fitur, Anda dapat menginstal MySpeed di server Anda sendiri." + }, + "integrations": { + "none_active": "Integrasi ini tidak aktif.
Buat", + "preview_active": "Integrasi dinonaktifkan selama mode demo.", + "display_name": "Nama integrasi", + "create": "Buat", + "activity": { + "never_executed": "Tidak pernah dieksekusi", + "last_run": "Terakhir dijalankan sebelum " + }, + "discord": { + "title": "Discord", + "fields": { + "url": "Webhook-URL", + "url_placeholder": "https://discord.com/api/webhooks/...", + "display_name": "Nama tampilan", + "display_name_placeholder": "Notifikasi MySpeed", + "error_message": "Pesan kesalahan", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Kirim pesan kesalahan", + "send_finished": "Kirim pesan selesai", + "finished_message": "Pesan selesai", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" + } + }, + "gotify": { + "title": "Gotify", + "fields": { + "url": "Server-URL", + "key": "Token aplikasi", + "priority": "Prioritas", + "error_message": "Pesan kesalahan", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Kirim pesan kesalahan", + "send_finished": "Kirim pesan selesai", + "finished_message": "Pesan selesai", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" + } + }, + "pushover": { + "title": "Pushover", + "fields": { + "token": "Token aplikasi", + "user_key": "Kunci pengguna", + "error_message": "Pesan kesalahan", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Kirim pesan kesalahan", + "send_finished": "Kirim pesan selesai", + "finished_message": "Pesan selesai", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" + } + }, + "healthChecks": { + "title": "HealthChecks", + "fields": { + "url": "HealthChecks-URL", + "url_placeholder": "https://hc-ping.com/", + "interval": "Ping interval (minutes)", + "interval_placeholder": "1" + } + }, + "influxdb": { + "title": "InfluxDB", + "fields": { + "url": "Server-URL", + "url_placeholder": "http://localhost:8086", + "org": "Organization", + "bucket": "Bucket", + "token": "API token", + "measurement": "Measurement name", + "measurement_placeholder": "speedtests (default)", + "host": "Host tag", + "host_placeholder": "Defaults to the machine hostname", + "tags": "Additional tags", + "tags_placeholder": "region=eu,role=primary (comma-separated)" + } + }, + "ntfy": { + "title": "ntfy", + "fields": { + "url": "Server-URL", + "url_placeholder": "https://ntfy.sh", + "topic": "Topic", + "topic_placeholder": "myspeed-alerts", + "token": "Access token", + "token_placeholder": "tk_... (optional, for protected servers)", + "title": "Notification title", + "title_placeholder": "MySpeed (optional)", + "tags": "Tags", + "tags_placeholder": "warning,satellite (comma-separated)", + "priority": "Default priority (1-5)", + "priority_placeholder": "3", + "error_priority": "Error priority (1-5)", + "error_priority_placeholder": "5", + "error_message": "Error message", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Send error messages", + "send_finished": "Send finished messages", + "finished_message": "Finished message", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" + } + }, + "telegram": { + "title": "Telegram", + "fields": { + "token": "Token Bot", + "chat_id": "ID Chat", + "error_message": "Pesan kesalahan", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Kirim pesan kesalahan", + "send_finished": "Kirim pesan selesai", + "finished_message": "Pesan selesai", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" + } + }, + "webhook": { + "title": "Webhook", + "fields": { + "url": "Webhook-URL", + "url_placeholder": "https://your-server.com/hook", + "send_started": "Kirim dimulai", + "send_failed": "Kirim pesan kesalahan", + "send_finished": "Kirim pesan selesai", + "send_alive": "Kirim pesan Keep-Alive", + "send_recommendations": "Kirim rekomendasi", + "send_config_updates": "Kirim pembaruan konfigurasi", + "interval": "Keep-Alive interval (minutes)", + "interval_placeholder": "1" + } + } + }, + "common": { + "back_to_top": "Kembali ke atas" + }, + "not_found": { + "title": "Page not found", + "description": "The page you're looking for doesn't exist or has been moved.", + "back_home": "Back to Home" + }, + "route_error": { + "title": "Oops!", + "subtitle": "Something went wrong", + "description": "An unexpected error occurred. Please try again or go back to the home page.", + "reload": "Reload Page" + }, + "optimal_values": { + "title": "Optimal Values", + "use_recommended": "Use recommended" + }, + "preferences": { + "title": "Preferences", + "theme": { + "title": "Appearance", + "description": "Switch between dark and light interface.", + "dark": "Dark", + "dark_desc": "Easier on the eyes in low light", + "light": "Light", + "light_desc": "Brighter look for daytime use" + }, + "time_format": { + "title": "Time format", + "description": "How clock times are displayed throughout the app.", + "h24": "24-hour", + "h24_desc": "Display times like 14:30", + "h12": "12-hour", + "h12_desc": "Display times like 2:30 PM" + }, + "speed_unit": { + "title": "Speed unit", + "description": "Choose how speeds are shown. Values are converted automatically.", + "mbps": "Mbps (Megabits per second)", + "mbps_desc": "Standard ISP / speedtest unit", + "mbytes": "MB/s (Megabytes per second)", + "mbytes_desc": "Common in browsers and download managers" + } + } +} diff --git a/client/public/assets/locales/it.json b/client/public/assets/locales/it.json index 76de0cdb..8b897467 100644 --- a/client/public/assets/locales/it.json +++ b/client/public/assets/locales/it.json @@ -23,6 +23,8 @@ "unset": "Rimuovere", "retry": "Riprova", "login": "Accedi", + "save": "Save", + "saving": "Saving...", "password": { "title": "È richiesta la password", "placeholder": "La vostra password", @@ -37,8 +39,14 @@ "interface": "Interfaccia", "server": "Server", "server_id": "ID server", + "custom_url": "Custom URL", + "custom_url_placeholder": "https://speed.test/backend/", "choose_automatically": "Scegli automaticamente", - "ookla_license": "Ho letto e accetto l'EULA, l'informativa sulla privacy e i termini di servizio di Ookla." + "ookla_license": "Ho letto e accetto l'EULA, l'informativa sulla privacy e i termini di servizio di Ookla.", + "ookla_notice": "By using Ookla, you agree to their EULA, privacy policy and terms of service.", + "ookla_desc": "Popular provider with global server network", + "libre_desc": "Open-source, self-hostable speedtest", + "cloudflare_desc": "Fast CDN-based testing" } }, "dropdown": { @@ -52,6 +60,7 @@ "upload": "Velocità di salita ottimale", "download": "Velocità di discesa ottimale", "recommendations": "Valori ottimali", + "optimal_values": "Optimal values", "change_provider": "Cambia fornitore", "password": "Modifica della password", "cron": "Impostazione della frequenza", @@ -64,23 +73,52 @@ "dark_mode": "Modalità scura", "theme_switched_light": "Passato alla modalità luce", "theme_switched_dark": "Passa alla modalità scura", - "info": "Informazioni sul progetto", + "preferences": "Preferences", "provider": "Informazioni sul fornitore", "integrations": "Integrazioni" }, + "about": { + "title": "About MySpeed", + "description": "MySpeed is an open-source speedtest analysis software that records your internet speed over a configurable period of time.", + "github": "GitHub", + "website": "Website", + "donate": "Donate", + "translate": "Translate", + "made_by": "Made with" + }, "options": { "cron": { - "continuous": "Continuo (ogni minuto)", - "frequent": "Molto spesso (ogni 30 minuti)", - "default": "Standard (ogni ora)", - "rare": "Raramente (ogni 3 ore)", - "really_rare": "Molto raramente (ogni 6 ore)" + "continuous": "Continuous", + "continuous_desc": "Every minute - high resource usage", + "frequent": "Very often", + "frequent_desc": "Every 30 minutes", + "default": "Default", + "default_desc": "Every hour - recommended", + "rare": "Rarely", + "rare_desc": "Every 3 hours", + "really_rare": "Very rarely", + "really_rare_desc": "Every 6 hours" }, "level": { "no_access": "Nessun accesso", "read_access": "Accesso in sola lettura" } }, + "password": { + "no_access_desc": "Visitors must enter the password to view anything", + "read_access_desc": "Visitors can view data but can't change settings" + }, + "pause": { + "manual": "Pause Indefinitely", + "manual_desc": "Pause until manually resumed", + "short": "Short Break", + "short_desc": "Pause for 1 hour", + "medium": "Medium Break", + "medium_desc": "Pause for 6 hours", + "long": "Long Break", + "long_desc": "Pause for 12 hours", + "custom": "Custom Duration" + }, "page": { "overview": "Panoramica", "statistics": "Statistiche" @@ -104,11 +142,16 @@ "cron_title": "Impostazione della frequenza di test", "cron_rules": "Regola Cron", "cron_next_test": "Il prossimo test:", + "custom_cron": "Custom cron expression", + "schedule_offset": "Offset schedule", + "schedule_offset_desc": "Adds a small delay to prevent tests from starting at exact times", + "advanced": "Advanced", "time_title": "Mostra i test dell'ultimo ...", "download": "Scaricare", "pause_title": "Test di velocità in pausa per...", "hours": "Orario", "pause": "Pausa", + "pause_manual_hint": "Leave empty to pause indefinitely", "release_manually": "Rilascio manuale", "language": "Cambiare la lingua", "view_title": "Cambia vista" @@ -122,6 +165,7 @@ "paused": "I test di velocità sono attualmente in pausa. Continuare se si desidera eseguirne uno.", "running": "È già in corso un test di velocità. Attendere un momento.", "admin_login": "Accesso amministratore", + "servers": "Servers", "beta": { "title": "Versione beta", "description": "Questa funzione è ancora in fase beta. Se si riscontrano bug, si prega di segnalarli qui." @@ -153,19 +197,36 @@ "reset": "Azzeramento", "confirm_reset": "Sì, ripristina", "settings_exported": "Le impostazioni sono state esportate", - "settings_imported": "Le impostazioni sono state importate" + "settings_imported": "Le impostazioni sono state importate", + "retention": "Data retention", + "retention_desc": "How long speedtest results are kept before being automatically deleted.", + "retention_saved": "Retention period updated", + "retention_days_placeholder": "365", + "retention_days_suffix": "days", + "retention_back": "Back to presets", + "retention_options": { + "week": "7 days", + "month": "30 days", + "quarter": "90 days", + "half_year": "180 days", + "year": "1 year (default)", + "forever": "Keep forever", + "custom": "Custom..." + } }, "latest": { "ping": "Ping", "ping_unit": "ms", + "jitter": "Jitter", + "jitter_unit": "ms", "down": "Scaricare", "speed_unit": "Mbps", + "byte_speed_unit": "MB/s", "up": "Caricare", "latest": "Ultimo test", "before": "da" }, "info": { - "credits": "MySpeed è un progetto open source fornito da GNMYT. Lascia una stella su GitHub o fai una donazione per sostenere il progetto.", "recommendations_error": "È necessario eseguire almeno 10 test per poter determinare una media. Non importa se i test sono stati eseguiti manualmente o automaticamente.", "recommendations_info": "Sulla base dei risultati degli ultimi 10 test, è emerso che il ping ottimale era {{ping}} ms, il download era {{down}} Mbps e l'upload a {{up}} Mbps. È meglio utilizzare il proprio contratto internet come guida e adottarlo solo se corrisponde.", "update": "È disponibile un aggiornamento della versione {{version}}. Vedere le modifiche e scaricare l'aggiornamento.", @@ -177,6 +238,10 @@ "title": "Ping", "description": "Il ping indica la velocità di risposta del rispettivo provider. Più breve è il tempo, meglio è." }, + "jitter": { + "title": "Jitter", + "description": "Jitter is the variation in ping response times. Lower jitter means a more stable connection, which is important for real-time applications like video calls and gaming." + }, "up": { "title": "Velocità upload", "description": "La velocità di upload influisce sull'esperienza di navigazione. Maggiore è la velocità, più veloce è l'invio dei dati da parte del computer." @@ -213,15 +278,12 @@ "result": { "title": "Risultato del test", "description": "Questo test ha raggiunto una velocità massima di download di {{down}} Mbps e una velocità massima di upload di {{up}} Mbps. È stato creato {{type}} e ha richiesto {{duration}} secondi.", + "jitter": " The connection jitter was {{jitter}} ms.", "from_you": "da parte vostra", "automatic": "automatico" }, "overview": { - "title": "Panoramica dei test dell'ultimo {{amount}}", - "1": "24 ore", - "2": "2 giorni", - "3": "7 giorni", - "4": "30 giorni" + "title_range": "Test overview from {{from}} to {{to}}" } }, "errors": { @@ -236,6 +298,10 @@ "invalid_view": "Vista non valida" }, "statistics": { + "average": "Average", + "export": { + "button": "Export" + }, "overview": { "total_title": "Totale test", "total_description": "Il numero di test eseguiti", @@ -268,8 +334,39 @@ "avg": "Media", "down": "Scarica i valori", "up": "Caricare i valori" + }, + "failed_test": "Failed test", + "hourly": { + "title": "Speed by Time of Day", + "sample_count": "Tests" + }, + "consistency": { + "title": "Connection Stability", + "excellent": "Excellent", + "good": "Good", + "fair": "Fair", + "poor": "Poor", + "ping_variance": "Ping variance" } }, + "calendar": { + "select_range": "Select date range", + "select_start": "Select start date", + "select_end": "Select end date", + "from": "From", + "to": "To", + "last_7_days": "Last 7 days", + "last_30_days": "Last 30 days", + "last_90_days": "Last 90 days", + "last_year": "Last year", + "mon": "Mon", + "tue": "Tue", + "wed": "Wed", + "thu": "Thu", + "fri": "Fri", + "sat": "Sat", + "sun": "Sun" + }, "nodes": { "add": "Aggiungi server", "create": "Aggiungi", @@ -294,6 +391,11 @@ "yes": "Sì, eliminare", "success": "Il server è stato cancellato con successo" }, + "rename": { + "title": "Rename server", + "placeholder": "New server name", + "success": "The server has been renamed successfully" + }, "messages": { "not_reachable": "Il server non è raggiungibile", "password_changed": "La password è stata modificata", @@ -322,11 +424,11 @@ "display_name": "Nome visualizzato", "display_name_placeholder": "Notifica MySpeed", "error_message": "Messaggio di errore", - "error_message_placeholder": "Errore: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Inviare messaggi di errore", "send_finished": "Inviare compilato", "finished_message": "Messaggio completato", - "finished_message_placeholder": "%ping% ms, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "gotify": { @@ -336,11 +438,11 @@ "key": "Token di applicazione", "priority": "Priorità", "error_message": "Messaggio di errore", - "error_message_placeholder": "Errore: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Inviare messaggi di errore", "send_finished": "Inviare compilato", "finished_message": "Messaggio completato", - "finished_message_placeholder": "%ping% ms, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "pushover": { @@ -349,18 +451,61 @@ "token": "App token", "user_key": "Chiave utente", "error_message": "Messaggio di errore", - "error_message_placeholder": "Errore: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Invia messaggi di errore", "send_finished": "Invia messaggi finiti", "finished_message": "Messaggio finito", - "finished_message_placeholder": "%ping% ms, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "healthChecks": { "title": "HealthChecks", "fields": { "url": "URL Controlli sanitari", - "url_placeholder": "https://hc-ping.com/" + "url_placeholder": "https://hc-ping.com/", + "interval": "Ping interval (minutes)", + "interval_placeholder": "1" + } + }, + "influxdb": { + "title": "InfluxDB", + "fields": { + "url": "Server-URL", + "url_placeholder": "http://localhost:8086", + "org": "Organization", + "bucket": "Bucket", + "token": "API token", + "measurement": "Measurement name", + "measurement_placeholder": "speedtests (default)", + "host": "Host tag", + "host_placeholder": "Defaults to the machine hostname", + "tags": "Additional tags", + "tags_placeholder": "region=eu,role=primary (comma-separated)" + } + }, + "ntfy": { + "title": "ntfy", + "fields": { + "url": "Server-URL", + "url_placeholder": "https://ntfy.sh", + "topic": "Topic", + "topic_placeholder": "myspeed-alerts", + "token": "Access token", + "token_placeholder": "tk_... (optional, for protected servers)", + "title": "Notification title", + "title_placeholder": "MySpeed (optional)", + "tags": "Tags", + "tags_placeholder": "warning,satellite (comma-separated)", + "priority": "Default priority (1-5)", + "priority_placeholder": "3", + "error_priority": "Error priority (1-5)", + "error_priority_placeholder": "5", + "error_message": "Error message", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Send error messages", + "send_finished": "Send finished messages", + "finished_message": "Finished message", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "telegram": { @@ -369,11 +514,11 @@ "token": "Bot Token", "chat_id": "ID chat", "error_message": "Messaggio di errore", - "error_message_placeholder": "Errore: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Inviare messaggi di errore", "send_finished": "Inviare compilato", "finished_message": "Messaggio completato", - "finished_message_placeholder": "%ping% ms, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "webhook": { @@ -386,11 +531,55 @@ "send_finished": "Inviare compilato", "send_alive": "Inviare messaggi vivaci", "send_recommendations": "Inviare raccomandazioni", - "send_config_updates": "Inviare gli aggiornamenti della configurazione" + "send_config_updates": "Inviare gli aggiornamenti della configurazione", + "interval": "Keep-Alive interval (minutes)", + "interval_placeholder": "1" } } }, "common": { "back_to_top": "Torna all'inizio" + }, + "not_found": { + "title": "Page not found", + "description": "The page you're looking for doesn't exist or has been moved.", + "back_home": "Back to Home" + }, + "route_error": { + "title": "Oops!", + "subtitle": "Something went wrong", + "description": "An unexpected error occurred. Please try again or go back to the home page.", + "reload": "Reload Page" + }, + "optimal_values": { + "title": "Optimal Values", + "use_recommended": "Use recommended" + }, + "preferences": { + "title": "Preferences", + "theme": { + "title": "Appearance", + "description": "Switch between dark and light interface.", + "dark": "Dark", + "dark_desc": "Easier on the eyes in low light", + "light": "Light", + "light_desc": "Brighter look for daytime use" + }, + "time_format": { + "title": "Time format", + "description": "How clock times are displayed throughout the app.", + "h24": "24-hour", + "h24_desc": "Display times like 14:30", + "h12": "12-hour", + "h12_desc": "Display times like 2:30 PM" + }, + "speed_unit": { + "title": "Speed unit", + "description": "Choose how speeds are shown. Values are converted automatically.", + "mbps": "Mbps (Megabits per second)", + "mbps_desc": "Standard ISP / speedtest unit", + "mbytes": "MB/s (Megabytes per second)", + "mbytes_desc": "Common in browsers and download managers" + } } } diff --git a/client/public/assets/locales/nl.json b/client/public/assets/locales/nl.json index 057d4388..c9f51334 100644 --- a/client/public/assets/locales/nl.json +++ b/client/public/assets/locales/nl.json @@ -23,6 +23,8 @@ "unset": "Verwijder", "retry": "Probeer het opnieuw", "login": "Inloggen", + "save": "Save", + "saving": "Saving...", "password": { "title": "Wachtwoord vereist", "placeholder": "Uw wachtwoord", @@ -37,8 +39,14 @@ "interface": "Interface", "server": "Server", "server_id": "Server-ID", + "custom_url": "Custom URL", + "custom_url_placeholder": "https://speed.test/backend/", "choose_automatically": "Automatisch kiezen", - "ookla_license": "Ik heb de EULA, het privacybeleid en de servicevoorwaarden van Ookla gelezen en accepteer deze." + "ookla_license": "Ik heb de EULA, het privacybeleid en de servicevoorwaarden van Ookla gelezen en accepteer deze.", + "ookla_notice": "By using Ookla, you agree to their EULA, privacy policy and terms of service.", + "ookla_desc": "Popular provider with global server network", + "libre_desc": "Open-source, self-hostable speedtest", + "cloudflare_desc": "Fast CDN-based testing" } }, "dropdown": { @@ -52,6 +60,7 @@ "upload": "Optimale snelheid", "download": "Optimale daalsnelheid", "recommendations": "Optimale waarden", + "optimal_values": "Optimal values", "change_provider": "Verander van leverancier", "password": "Wachtwoord wijzigen", "cron": "Frequentie instellen", @@ -64,23 +73,52 @@ "dark_mode": "Donkere modus", "theme_switched_light": "Overgeschakeld op lichtmodus", "theme_switched_dark": "Overgeschakeld naar donkere modus", - "info": "Info over het project", + "preferences": "Preferences", "provider": "Over de provider", "integrations": "Integraties" }, + "about": { + "title": "About MySpeed", + "description": "MySpeed is an open-source speedtest analysis software that records your internet speed over a configurable period of time.", + "github": "GitHub", + "website": "Website", + "donate": "Donate", + "translate": "Translate", + "made_by": "Made with" + }, "options": { "cron": { - "continuous": "Continu (elke minuut)", - "frequent": "Zeer vaak (elke 30 minuten)", - "default": "Standaard (elk uur)", - "rare": "Zelden (om de 3 uur)", - "really_rare": "Zeer zelden (om de 6 uur)" + "continuous": "Continuous", + "continuous_desc": "Every minute - high resource usage", + "frequent": "Very often", + "frequent_desc": "Every 30 minutes", + "default": "Default", + "default_desc": "Every hour - recommended", + "rare": "Rarely", + "rare_desc": "Every 3 hours", + "really_rare": "Very rarely", + "really_rare_desc": "Every 6 hours" }, "level": { "no_access": "Geen toegang", "read_access": "Alleen-lezen toegang" } }, + "password": { + "no_access_desc": "Visitors must enter the password to view anything", + "read_access_desc": "Visitors can view data but can't change settings" + }, + "pause": { + "manual": "Pause Indefinitely", + "manual_desc": "Pause until manually resumed", + "short": "Short Break", + "short_desc": "Pause for 1 hour", + "medium": "Medium Break", + "medium_desc": "Pause for 6 hours", + "long": "Long Break", + "long_desc": "Pause for 12 hours", + "custom": "Custom Duration" + }, "page": { "overview": "Overzicht", "statistics": "Statistieken" @@ -104,11 +142,16 @@ "cron_title": "Testfrequentie instellen", "cron_rules": "Cron-regel", "cron_next_test": "Volgende test:", + "custom_cron": "Custom cron expression", + "schedule_offset": "Offset schedule", + "schedule_offset_desc": "Adds a small delay to prevent tests from starting at exact times", + "advanced": "Advanced", "time_title": "Tests van de laatste ...", "download": "Downloaden", "pause_title": "Snelheidstests pauzeren voor...", "hours": "Uren", "pause": "Pauze", + "pause_manual_hint": "Leave empty to pause indefinitely", "release_manually": "Handmatig loslaten", "language": "Taal wijzigen", "view_title": "Weergave wijzigen" @@ -122,6 +165,7 @@ "paused": "Snelheidstests zijn momenteel gepauzeerd. Ga door als je er een wilt doen.", "running": "Er wordt al een snelheidstest uitgevoerd. Een ogenblik geduld alstublieft.", "admin_login": "Beheerderslogin", + "servers": "Servers", "beta": { "title": "Beta-versie", "description": "Deze functie is nog in betafase. Als je bugs vindt, meld ze dan hier." @@ -153,19 +197,36 @@ "reset": "Reset", "confirm_reset": "Ja, opnieuw instellen", "settings_exported": "De instellingen zijn geëxporteerd", - "settings_imported": "De instellingen zijn geïmporteerd" + "settings_imported": "De instellingen zijn geïmporteerd", + "retention": "Data retention", + "retention_desc": "How long speedtest results are kept before being automatically deleted.", + "retention_saved": "Retention period updated", + "retention_days_placeholder": "365", + "retention_days_suffix": "days", + "retention_back": "Back to presets", + "retention_options": { + "week": "7 days", + "month": "30 days", + "quarter": "90 days", + "half_year": "180 days", + "year": "1 year (default)", + "forever": "Keep forever", + "custom": "Custom..." + } }, "latest": { "ping": "Ping", "ping_unit": "ms", + "jitter": "Jitter", + "jitter_unit": "ms", "down": "Downloaden", "speed_unit": "Mbit/s", + "byte_speed_unit": "MB/s", "up": "Uploaden", "latest": "Laatste test", "before": "van" }, "info": { - "credits": "MySpeed is een open source project van GNMYT. Laat een ster achter op GitHub of doneer om het project te steunen.", "recommendations_error": "Je moet minstens 10 tests doen zodat je een gemiddelde kunt bepalen. Het maakt niet uit of de tests handmatig of automatisch zijn uitgevoerd.", "recommendations_info": "Op basis van de laatste 10 testresultaten bleek dat de optimale ping {{ping}} ms was, de download {{down}} Mbit/s en de upload op {{up}} Mbit/s. Je kunt het beste je internetcontract als richtlijn gebruiken en het alleen overnemen als het overeenkomt.", "update": "Er is een update voor versie {{version}} beschikbaar. Zie de wijzigingen en download de update.", @@ -177,6 +238,10 @@ "title": "Ping", "description": "De ping geeft aan hoe snel de betreffende provider reageert. Hoe korter de tijd, hoe beter." }, + "jitter": { + "title": "Jitter", + "description": "Jitter is the variation in ping response times. Lower jitter means a more stable connection, which is important for real-time applications like video calls and gaming." + }, "up": { "title": "Uploadsnelheid", "description": "Uploadsnelheid beïnvloedt je surfervaring. Hoe meer u krijgt, hoe sneller uw computer gegevens kan verzenden." @@ -213,15 +278,12 @@ "result": { "title": "Testresultaat", "description": "Deze test behaalde een maximale downloadsnelheid van {{down}} Mbps en een maximale uploadsnelheid van {{up}} Mbps. Hij werd gemaakt {{type}} en duurde {{duration}} Seconden.", + "jitter": " The connection jitter was {{jitter}} ms.", "from_you": "van jou", "automatic": "automatisch" }, "overview": { - "title": "Testoverzicht van de laatste {{amount}}", - "1": "24 uur", - "2": "2 dagen", - "3": "7 dagen", - "4": "30 dagen" + "title_range": "Test overview from {{from}} to {{to}}" } }, "errors": { @@ -236,6 +298,10 @@ "invalid_view": "Ongeldige weergave" }, "statistics": { + "average": "Average", + "export": { + "button": "Export" + }, "overview": { "total_title": "Totaal testen", "total_description": "Het aantal uitgevoerde tests", @@ -268,8 +334,39 @@ "avg": "Gemiddeld", "down": "Waarden downloaden", "up": "Waarden uploaden" + }, + "failed_test": "Failed test", + "hourly": { + "title": "Speed by Time of Day", + "sample_count": "Tests" + }, + "consistency": { + "title": "Connection Stability", + "excellent": "Excellent", + "good": "Good", + "fair": "Fair", + "poor": "Poor", + "ping_variance": "Ping variance" } }, + "calendar": { + "select_range": "Select date range", + "select_start": "Select start date", + "select_end": "Select end date", + "from": "From", + "to": "To", + "last_7_days": "Last 7 days", + "last_30_days": "Last 30 days", + "last_90_days": "Last 90 days", + "last_year": "Last year", + "mon": "Mon", + "tue": "Tue", + "wed": "Wed", + "thu": "Thu", + "fri": "Fri", + "sat": "Sat", + "sun": "Sun" + }, "nodes": { "add": "Server toevoegen", "create": "Voeg toe", @@ -294,6 +391,11 @@ "yes": "Ja, verwijderen", "success": "De server is succesvol verwijderd" }, + "rename": { + "title": "Rename server", + "placeholder": "New server name", + "success": "The server has been renamed successfully" + }, "messages": { "not_reachable": "Server is niet bereikbaar", "password_changed": "Wachtwoord is gewijzigd", @@ -322,11 +424,11 @@ "display_name": "Naam weergeven", "display_name_placeholder": "MySpeed-melding", "error_message": "Foutmelding", - "error_message_placeholder": "Fout: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Foutberichten verzenden", "send_finished": "Volledig ingevuld verzenden", "finished_message": "Voltooid bericht", - "finished_message_placeholder": "%ping% ms, %download% Mbit/s, %upload% Mbit/s" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "gotify": { @@ -336,11 +438,11 @@ "key": "Toepassen token", "priority": "Prioriteit", "error_message": "Foutmelding", - "error_message_placeholder": "Fout: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Foutberichten verzenden", "send_finished": "Volledig ingevuld verzenden", "finished_message": "Voltooid bericht", - "finished_message_placeholder": "%ping% ms, %download% Mbit/s, %upload% Mbit/s" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "pushover": { @@ -349,18 +451,61 @@ "token": "App-token", "user_key": "Gebruikers sleutel", "error_message": "Foutmelding", - "error_message_placeholder": "Fout: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Foutmeldingen verzenden", "send_finished": "Voltooide berichten verzenden", "finished_message": "Voltooid bericht", - "finished_message_placeholder": "%ping% ms, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "healthChecks": { "title": "HealthChecks", "fields": { "url": "URL gezondheidscontrole", - "url_placeholder": "https://hc-ping.com/" + "url_placeholder": "https://hc-ping.com/", + "interval": "Ping interval (minutes)", + "interval_placeholder": "1" + } + }, + "influxdb": { + "title": "InfluxDB", + "fields": { + "url": "Server-URL", + "url_placeholder": "http://localhost:8086", + "org": "Organization", + "bucket": "Bucket", + "token": "API token", + "measurement": "Measurement name", + "measurement_placeholder": "speedtests (default)", + "host": "Host tag", + "host_placeholder": "Defaults to the machine hostname", + "tags": "Additional tags", + "tags_placeholder": "region=eu,role=primary (comma-separated)" + } + }, + "ntfy": { + "title": "ntfy", + "fields": { + "url": "Server-URL", + "url_placeholder": "https://ntfy.sh", + "topic": "Topic", + "topic_placeholder": "myspeed-alerts", + "token": "Access token", + "token_placeholder": "tk_... (optional, for protected servers)", + "title": "Notification title", + "title_placeholder": "MySpeed (optional)", + "tags": "Tags", + "tags_placeholder": "warning,satellite (comma-separated)", + "priority": "Default priority (1-5)", + "priority_placeholder": "3", + "error_priority": "Error priority (1-5)", + "error_priority_placeholder": "5", + "error_message": "Error message", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Send error messages", + "send_finished": "Send finished messages", + "finished_message": "Finished message", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "telegram": { @@ -369,11 +514,11 @@ "token": "Bot Token", "chat_id": "Chat-ID", "error_message": "Foutmelding", - "error_message_placeholder": "Fout: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Foutberichten verzenden", "send_finished": "Volledig ingevuld verzenden", "finished_message": "Voltooid bericht", - "finished_message_placeholder": "%ping% ms, %download% Mbit/s, %upload% Mbit/s" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "webhook": { @@ -386,11 +531,55 @@ "send_finished": "Volledig ingevuld verzenden", "send_alive": "Stuur levendige berichten", "send_recommendations": "Stuur aanbevelingen", - "send_config_updates": "Configuratie-updates verzenden" + "send_config_updates": "Configuratie-updates verzenden", + "interval": "Keep-Alive interval (minutes)", + "interval_placeholder": "1" } } }, "common": { "back_to_top": "Terug naar boven" + }, + "not_found": { + "title": "Page not found", + "description": "The page you're looking for doesn't exist or has been moved.", + "back_home": "Back to Home" + }, + "route_error": { + "title": "Oops!", + "subtitle": "Something went wrong", + "description": "An unexpected error occurred. Please try again or go back to the home page.", + "reload": "Reload Page" + }, + "optimal_values": { + "title": "Optimal Values", + "use_recommended": "Use recommended" + }, + "preferences": { + "title": "Preferences", + "theme": { + "title": "Appearance", + "description": "Switch between dark and light interface.", + "dark": "Dark", + "dark_desc": "Easier on the eyes in low light", + "light": "Light", + "light_desc": "Brighter look for daytime use" + }, + "time_format": { + "title": "Time format", + "description": "How clock times are displayed throughout the app.", + "h24": "24-hour", + "h24_desc": "Display times like 14:30", + "h12": "12-hour", + "h12_desc": "Display times like 2:30 PM" + }, + "speed_unit": { + "title": "Speed unit", + "description": "Choose how speeds are shown. Values are converted automatically.", + "mbps": "Mbps (Megabits per second)", + "mbps_desc": "Standard ISP / speedtest unit", + "mbytes": "MB/s (Megabytes per second)", + "mbytes_desc": "Common in browsers and download managers" + } } } diff --git a/client/public/assets/locales/pl.json b/client/public/assets/locales/pl.json index d8a6e561..224b94a9 100644 --- a/client/public/assets/locales/pl.json +++ b/client/public/assets/locales/pl.json @@ -23,6 +23,8 @@ "unset": "Usuń", "retry": "Spróbuj ponownie", "login": "Zaloguj się", + "save": "Zapisz", + "saving": "Zapisywanie...", "password": { "title": "Wymagane hasło", "placeholder": "Twoje hasło", @@ -37,8 +39,14 @@ "interface": "Interfejs", "server": "Serwer", "server_id": "ID serwera", + "custom_url": "Niestandardowy adres URL", + "custom_url_placeholder": "https://speed.test/backend/", "choose_automatically": "Wybierz automatycznie", - "ookla_license": "Przeczytałem i akceptuję EULA, politykę prywatności oraz regulamin Ookla." + "ookla_license": "Przeczytałem i akceptuję EULA, politykę prywatności oraz regulamin Ookla.", + "ookla_notice": "Korzystając z Ookla, zgadzasz się na ich EULA, politykę prywatności i warunki świadczenia usług.", + "ookla_desc": "Popularny dostawca z globalną siecią serwerów", + "libre_desc": "Open-source, samodzielny test prędkości", + "cloudflare_desc": "Szybkie testowanie oparte na CDN" } }, "dropdown": { @@ -52,6 +60,7 @@ "upload": "Optymalna prędkość wysyłania", "download": "Optymalna prędkość pobierania", "recommendations": "Rekomendacje", + "optimal_values": "Optymalne wartości", "change_provider": "Zmień dostawcę", "password": "Zmień hasło", "cron": "Ustaw częstotliwość", @@ -64,23 +73,52 @@ "dark_mode": "Tryb ciemny", "theme_switched_light": "Przełączony na tryb oświetlenia", "theme_switched_dark": "Przełączony na tryb ciemny", - "info": "O projekcie", + "preferences": "Preferences", "provider": "O dostawcy", "integrations": "Integracje" }, + "about": { + "title": "Informacje o MySpeed", + "description": "MySpeed is an open-source speedtest analysis software that records your internet speed over a configurable period of time.", + "github": "GitHub", + "website": "Witryna", + "donate": "Wesprzyj nas", + "translate": "Tłumaczenie", + "made_by": "Stworzone przy użyciu" + }, "options": { "cron": { - "continuous": "Ciągły (co minutę)", - "frequent": "Bardzo często (co 30 minut)", - "default": "Domyślnie (co godzinę)", - "rare": "Rzadko (co 3 godziny)", - "really_rare": "Bardzo rzadko (co 6 godzin)" + "continuous": "Ciągły", + "continuous_desc": "Co minutę — wysokie zużycie zasobów", + "frequent": "Bardzo często", + "frequent_desc": "Co 30 minut", + "default": "Domyślnie", + "default_desc": "Co godzinę — zalecane", + "rare": "Rzadko", + "rare_desc": "Co 3 godziny", + "really_rare": "Bardzo rzadko", + "really_rare_desc": "Co 6 godzin" }, "level": { "no_access": "Brak dostępu", "read_access": "Tylko do odczytu" } }, + "password": { + "no_access_desc": "Odwiedzający muszą wprowadzić hasło, aby wyświetlić cokolwiek", + "read_access_desc": "Odwiedzający mogą przeglądać dane, ale nie mogą zmieniać ustawień" + }, + "pause": { + "manual": "Wstrzymaj na czas nieokreślony", + "manual_desc": "Wstrzymaj do momentu ręcznego wznowienia", + "short": "Krótka przerwa", + "short_desc": "Wstrzymaj na 1 godzinę", + "medium": "Średnia przerwa", + "medium_desc": "Wstrzymaj na 6 godzin", + "long": "Długa przerwa", + "long_desc": "Wstrzymaj na 12 godzin", + "custom": "Niestandardowy czas" + }, "page": { "overview": "Przegląd", "statistics": "Statystyki" @@ -104,11 +142,16 @@ "cron_title": "Ustaw częstotliwość testów", "cron_rules": "Reguła Cron", "cron_next_test": "Następny test:", + "custom_cron": "Własne wyrażenie crona", + "schedule_offset": "Harmonogram przesunięcia", + "schedule_offset_desc": "Dodaje niewielkie opóźnienie, aby zapobiec uruchamianiu testów w ściśle określonym czasie", + "advanced": "Zaawansowane", "time_title": "Pokaż testy z ostatnich ...", "download": "Pobierz", "pause_title": "Wstrzymaj testy prędkości na...", "hours": "Godziny", "pause": "Wstrzymaj", + "pause_manual_hint": "Pozostaw puste, aby wstrzymać na czas nieokreślony", "release_manually": "Wznów ręcznie", "language": "Zmień język", "view_title": "Zmień widok" @@ -122,6 +165,7 @@ "paused": "Testy prędkości są obecnie wstrzymane. Wznów je, jeśli chcesz wykonać test.", "running": "Test prędkości już trwa. Proszę, poczekaj chwilę.", "admin_login": "Logowanie administratora", + "servers": "Serwery", "beta": { "title": "Wersja beta", "description": "Ta funkcja jest wciąż w fazie beta. Jeśli znajdziesz błędy, zgłoś je tutaj." @@ -153,19 +197,36 @@ "reset": "Resetuj", "confirm_reset": "Tak, resetuj", "settings_exported": "Ustawienia zostały wyeksportowane", - "settings_imported": "Ustawienia zostały zaimportowane" + "settings_imported": "Ustawienia zostały zaimportowane", + "retention": "Data retention", + "retention_desc": "How long speedtest results are kept before being automatically deleted.", + "retention_saved": "Retention period updated", + "retention_days_placeholder": "365", + "retention_days_suffix": "days", + "retention_back": "Back to presets", + "retention_options": { + "week": "7 days", + "month": "30 days", + "quarter": "90 days", + "half_year": "180 days", + "year": "1 year (default)", + "forever": "Keep forever", + "custom": "Custom..." + } }, "latest": { "ping": "Ping", "ping_unit": "ms", + "jitter": "Jitter", + "jitter_unit": "ms", "down": "Pobieranie", "speed_unit": "Mbps", + "byte_speed_unit": "MB/s", "up": "Wysyłanie", "latest": "Ostatni test", "before": "przed" }, "info": { - "credits": "MySpeed to projekt open source dostarczony przez GNMYT. Daj gwiazdkę na GitHub lub wpłać darowiznę, aby wesprzeć projekt.", "recommendations_error": "Musisz wykonać co najmniej 10 testów, aby uzyskać średnią. Nieważne, czy testy były wykonane ręcznie, czy automatycznie.", "recommendations_info": "Na podstawie ostatnich 10 testów stwierdzono, że optymalny ping wynosił {{ping}} ms, pobieranie {{down}} Mbps oraz wysyłanie {{up}} Mbps. Najlepiej kierować się warunkami Twojej umowy internetowej i dostosować ustawienia tylko wtedy, gdy się zgadzają.", "update": "Dostępna jest aktualizacja do wersji {{version}}. Zobacz zmiany oraz pobierz aktualizację.", @@ -177,6 +238,10 @@ "title": "Ping", "description": "Ping pokazuje, jak szybko reaguje dany dostawca. Im krótszy, tym lepszy." }, + "jitter": { + "title": "Jitter", + "description": "Jitter to zmienność czasu odpowiedzi ping. Niższy jitter oznacza bardziej stabilne połączenie, co jest ważne dla aplikacji działających w czasie rzeczywistym, takich jak połączenia wideo i gry." + }, "up": { "title": "Prędkość wysyłania", "description": "Prędkość wysyłania wpływa na komfort korzystania z internetu. Im wyższa, tym szybciej komputer może wysyłać dane." @@ -213,15 +278,12 @@ "result": { "title": "Wynik testu", "description": "Ten test osiągnął maksymalną prędkość pobierania {{down}} Mbps oraz maksymalną prędkość wysyłania {{up}} Mbps. Test został wykonany {{type}} i trwał {{duration}} sekund.", + "jitter": " Jitter połączenia wynosił {{jitter}} ms.", "from_you": "przez Ciebie", "automatic": "automatycznie" }, "overview": { - "title": "Przegląd testów z ostatnich {{amount}}", - "1": "24 godziny", - "2": "2 dni", - "3": "7 dni", - "4": "30 dni" + "title_range": "Przegląd testów od {{from}} do {{to}}" } }, "errors": { @@ -236,6 +298,10 @@ "invalid_view": "Nieprawidłowy widok" }, "statistics": { + "average": "Średnia", + "export": { + "button": "Eksportuj" + }, "overview": { "total_title": "Łączna liczba testów", "total_description": "Liczba wykonanych testów", @@ -268,8 +334,39 @@ "avg": "Średnia", "down": "Wartości pobierania", "up": "Wartości wysyłania" + }, + "failed_test": "Test nieudany", + "hourly": { + "title": "Prędkość w zależności od pory dnia", + "sample_count": "Testy" + }, + "consistency": { + "title": "Stabilność połączenia", + "excellent": "Znakomita", + "good": "Dobra", + "fair": "Przyzwoita", + "poor": "Słaba", + "ping_variance": "Wariant ping" } }, + "calendar": { + "select_range": "Wybierz zakres dat", + "select_start": "Wybierz datę rozpoczęcia", + "select_end": "Wybierz datę zakończenia", + "from": "Od", + "to": "Do", + "last_7_days": "Ostatnie 7 dni", + "last_30_days": "Ostatnie 30 dni", + "last_90_days": "Ostatnie 90 dni", + "last_year": "Ostatni rok", + "mon": "Pn", + "tue": "Wt", + "wed": "Śr", + "thu": "Czw", + "fri": "Pt", + "sat": "Sob", + "sun": "Nd." + }, "nodes": { "add": "Dodaj serwer", "create": "Dodaj", @@ -294,6 +391,11 @@ "yes": "Tak, usuń", "success": "Serwer został pomyślnie usunięty" }, + "rename": { + "title": "Zmień nazwę serwera", + "placeholder": "Nowa nazwa serwera", + "success": "Nazwa serwera została pomyślnie zmieniona" + }, "messages": { "not_reachable": "Serwer jest niedostępny", "password_changed": "Hasło zmienione", @@ -322,11 +424,11 @@ "display_name": "Nazwa wyświetlana", "display_name_placeholder": "Powiadomienie MySpeed", "error_message": "Komunikat o błędzie", - "error_message_placeholder": "Błąd: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Wysyłaj komunikaty o błędach", "send_finished": "Wysyłaj komunikaty o zakończeniu", "finished_message": "Komunikat o zakończeniu", - "finished_message_placeholder": "%ping% ms, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "gotify": { @@ -336,11 +438,11 @@ "key": "Token aplikacji", "priority": "Priorytet", "error_message": "Komunikat o błędzie", - "error_message_placeholder": "Błąd: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Wysyłaj komunikaty o błędach", "send_finished": "Wysyłaj komunikaty o zakończeniu", "finished_message": "Komunikat o zakończeniu", - "finished_message_placeholder": "%ping% ms, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "pushover": { @@ -349,18 +451,61 @@ "token": "Token aplikacji", "user_key": "Klucz użytkownika", "error_message": "Komunikat o błędzie", - "error_message_placeholder": "Błąd: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Wysyłaj komunikaty o błędach", "send_finished": "Wysyłaj komunikaty o zakończeniu", "finished_message": "Komunikat o zakończeniu", - "finished_message_placeholder": "%ping% ms, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "healthChecks": { "title": "HealthChecks", "fields": { "url": "URL HealthChecks", - "url_placeholder": "https://hc-ping.com/" + "url_placeholder": "https://hc-ping.com/", + "interval": "Ping interval (minutes)", + "interval_placeholder": "1" + } + }, + "influxdb": { + "title": "InfluxDB", + "fields": { + "url": "Server-URL", + "url_placeholder": "http://localhost:8086", + "org": "Organization", + "bucket": "Bucket", + "token": "API token", + "measurement": "Measurement name", + "measurement_placeholder": "speedtests (default)", + "host": "Host tag", + "host_placeholder": "Defaults to the machine hostname", + "tags": "Additional tags", + "tags_placeholder": "region=eu,role=primary (comma-separated)" + } + }, + "ntfy": { + "title": "ntfy", + "fields": { + "url": "Server-URL", + "url_placeholder": "https://ntfy.sh", + "topic": "Topic", + "topic_placeholder": "myspeed-alerts", + "token": "Access token", + "token_placeholder": "tk_... (optional, for protected servers)", + "title": "Notification title", + "title_placeholder": "MySpeed (optional)", + "tags": "Tags", + "tags_placeholder": "warning,satellite (comma-separated)", + "priority": "Default priority (1-5)", + "priority_placeholder": "3", + "error_priority": "Error priority (1-5)", + "error_priority_placeholder": "5", + "error_message": "Error message", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Send error messages", + "send_finished": "Send finished messages", + "finished_message": "Finished message", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "telegram": { @@ -369,11 +514,11 @@ "token": "Token bota", "chat_id": "ID czatu", "error_message": "Komunikat o błędzie", - "error_message_placeholder": "Błąd: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Wysyłaj komunikaty o błędach", "send_finished": "Wysyłaj komunikaty o zakończeniu", "finished_message": "Komunikat o zakończeniu", - "finished_message_placeholder": "%ping% ms, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "webhook": { @@ -386,11 +531,55 @@ "send_finished": "Wyślij komunikaty o zakończeniu", "send_alive": "Wyślij komunikaty o aktywności", "send_recommendations": "Wyślij rekomendacje", - "send_config_updates": "Wyślij aktualizacje konfiguracji" + "send_config_updates": "Wyślij aktualizacje konfiguracji", + "interval": "Keep-Alive interval (minutes)", + "interval_placeholder": "1" } } }, "common": { "back_to_top": "Powrót do góry" + }, + "not_found": { + "title": "Nie znaleziono strony", + "description": "Szukana strona nie istnieje lub została przeniesiona.", + "back_home": "Powrót na stronę główną" + }, + "route_error": { + "title": "Ups!", + "subtitle": "Coś poszło nie tak", + "description": "Wystąpił nieoczekiwany błąd. Spróbuj ponownie lub wróć do strony głównej.", + "reload": "Odśwież stronę" + }, + "optimal_values": { + "title": "Optymalne wartości", + "use_recommended": "Użyj rekomendowanych" + }, + "preferences": { + "title": "Preferences", + "theme": { + "title": "Appearance", + "description": "Switch between dark and light interface.", + "dark": "Dark", + "dark_desc": "Easier on the eyes in low light", + "light": "Light", + "light_desc": "Brighter look for daytime use" + }, + "time_format": { + "title": "Time format", + "description": "How clock times are displayed throughout the app.", + "h24": "24-hour", + "h24_desc": "Display times like 14:30", + "h12": "12-hour", + "h12_desc": "Display times like 2:30 PM" + }, + "speed_unit": { + "title": "Speed unit", + "description": "Choose how speeds are shown. Values are converted automatically.", + "mbps": "Mbps (Megabits per second)", + "mbps_desc": "Standard ISP / speedtest unit", + "mbytes": "MB/s (Megabytes per second)", + "mbytes_desc": "Common in browsers and download managers" + } } } diff --git a/client/public/assets/locales/pt.json b/client/public/assets/locales/pt.json index 252d29af..b2ce0d85 100644 --- a/client/public/assets/locales/pt.json +++ b/client/public/assets/locales/pt.json @@ -23,6 +23,8 @@ "unset": "Remover", "retry": "Tentar novamente", "login": "Entrar", + "save": "Salvar", + "saving": "Salvando...", "password": { "title": "Senha necessária", "placeholder": "Sua senha", @@ -37,8 +39,14 @@ "interface": "Interface", "server": "Servidor", "server_id": "ID do servidor", + "custom_url": "URL personalizada", + "custom_url_placeholder": "https://speed.test/backend/", "choose_automatically": "Escolha automaticamente", - "ookla_license": "Eu li e aceito o EULA, a política de privacidade e os termos de serviço da Ookla." + "ookla_license": "Eu li e aceito o EULA, a política de privacidade e os termos de serviço da Ookla.", + "ookla_notice": "Ao usar o Ookla, você concorda com o EULA, a política de privacidade e os termos de serviço deles.", + "ookla_desc": "Popular provider with global server network", + "libre_desc": "Open-source, self-hostable speedtest", + "cloudflare_desc": "Fast CDN-based testing" } }, "dropdown": { @@ -52,6 +60,7 @@ "upload": "Velocidade de upload ótima", "download": "Velocidade de download ótima", "recommendations": "Recomendações", + "optimal_values": "Valores ideais", "change_provider": "Mudar de provedor", "password": "Alterar senha", "cron": "Definir frequência", @@ -60,27 +69,56 @@ "pause_tests": "Pausar testes", "resume_tests": "Retomar testes", "language": "Alterar idioma", - "light_mode": "Modo de luz", + "light_mode": "Modo claro", "dark_mode": "Modo escuro", "theme_switched_light": "Comutado para o modo de luz", "theme_switched_dark": "Mudança para o modo escuro", - "info": "Sobre o projeto", + "preferences": "Preferências", "provider": "Sobre o provedor", "integrations": "Integrações" }, + "about": { + "title": "Sobre o MySpeed", + "description": "O MySpeed é um software de código aberto para análise de testes de velocidade que registra a velocidade da sua internet durante um período de tempo configurável.", + "github": "GitHub", + "website": "Site", + "donate": "Doar", + "translate": "Traduzir", + "made_by": "Feito com" + }, "options": { "cron": { - "continuous": "Contínuo (a cada minuto)", - "frequent": "Muito frequente (a cada 30 minutos)", - "default": "Padrão (a cada hora)", - "rare": "Raramente (a cada 3 horas)", - "really_rare": "Muito raramente (a cada 6 horas)" + "continuous": "Contínuo", + "continuous_desc": "A cada minuto — uso intenso de recursos", + "frequent": "Muito frequentemente", + "frequent_desc": "A cada 30 minutos", + "default": "Padrão", + "default_desc": "A cada hora — recomendado", + "rare": "Raramente", + "rare_desc": "A cada 3 horas", + "really_rare": "Muito raramente", + "really_rare_desc": "A cada 6 horas" }, "level": { "no_access": "Sem acesso", "read_access": "Acesso somente leitura" } }, + "password": { + "no_access_desc": "Os visitantes precisam digitar a senha para ver qualquer coisa", + "read_access_desc": "Os visitantes podem ver os dados, mas não podem alterar as configurações" + }, + "pause": { + "manual": "Pausar indefinidamente", + "manual_desc": "Pausar até ser retomado manualmente", + "short": "Pausa breve", + "short_desc": "Pausar por 1 hora", + "medium": "Pausa média", + "medium_desc": "Pausar por 6 horas", + "long": "Pausa longa", + "long_desc": "Pausar por 12 horas", + "custom": "Duração personalizada" + }, "page": { "overview": "Visão geral", "statistics": "Estatísticas" @@ -104,11 +142,16 @@ "cron_title": "Definir frequência de teste", "cron_rules": "Regra Cron", "cron_next_test": "Próximo Teste:", + "custom_cron": "Custom cron expression", + "schedule_offset": "Offset schedule", + "schedule_offset_desc": "Adiciona um pequeno atraso para evitar que os testes comecem exatamente na hora marcada", + "advanced": "Avançado", "time_title": "Mostrar testes dos últimos ...", "download": "Baixar", "pause_title": "Pausar testes de velocidade por...", "hours": "Horas", "pause": "Pausar", + "pause_manual_hint": "Deixe em branco para pausar por tempo indeterminado", "release_manually": "Liberar manualmente", "language": "Alterar idioma", "view_title": "Alternar visualização" @@ -122,6 +165,7 @@ "paused": "Os testes de velocidade estão atualmente pausados. Por favor, continue-os se quiser realizar um.", "running": "Um teste de velocidade já está em andamento. Por favor, aguarde um momento.", "admin_login": "Login de Administrador", + "servers": "Servidores", "beta": { "title": "\"Versão Beta", "description": "Este recurso ainda está em beta. Se encontrar algum erro, por favor, relate aqui." @@ -153,19 +197,36 @@ "reset": "Redefinir", "confirm_reset": "Sim, redefinir", "settings_exported": "As configurações foram exportadas", - "settings_imported": "As configurações foram importadas" + "settings_imported": "As configurações foram importadas", + "retention": "Retenção de dados", + "retention_desc": "Por quanto tempo os resultados do Speedtest ficam guardados antes de serem excluídos automaticamente?", + "retention_saved": "Período de retenção atualizado", + "retention_days_placeholder": "365", + "retention_days_suffix": "dias", + "retention_back": "Voltar às predefinições", + "retention_options": { + "week": "7 dias", + "month": "30 dias", + "quarter": "90 dias", + "half_year": "180 dias", + "year": "1 ano (padrão)", + "forever": "Manter para sempre", + "custom": "Personalizado..." + } }, "latest": { "ping": "Ping", "ping_unit": "ms", + "jitter": "Jitter", + "jitter_unit": "ms", "down": "Download", "speed_unit": "Mbps", + "byte_speed_unit": "MB/s", "up": "Upload", "latest": "Último teste", "before": "antes" }, "info": { - "credits": "MySpeed é um projeto de código aberto fornecido pelo GNMYT. Deixe uma estrela no GitHub ou faça uma doação para apoiar o projeto.", "recommendations_error": "Você precisa fazer pelo menos 10 testes para obter uma média. Não importa se os testes foram feitos manualmente ou automaticamente.", "recommendations_info": "Com base nos últimos 10 testes, foi constatado que o ping ideal foi de {{ping}} ms, o download em {{down}} Mbps e o upload em {{up}} Mbps. É melhor se orientar pelo seu contrato de internet e adotá-lo apenas se estiver de acordo com isso.", "update": "Uma atualização para a versão {{version}} está disponível. Veja as mudanças e baixe a atualização.", @@ -177,6 +238,10 @@ "title": "Ping", "description": "O ping mostra a você a rapidez com que o respectivo provedor responde. Quanto menor o tempo, melhor." }, + "jitter": { + "title": "Jitter", + "description": "Jitter is the variation in ping response times. Lower jitter means a more stable connection, which is important for real-time applications like video calls and gaming." + }, "up": { "title": "Velocidade de upload", "description": "A velocidade de upload afeta sua experiência de navegação. Quanto mais você obtém, mais rápido seu computador pode enviar dados." @@ -213,15 +278,12 @@ "result": { "title": "Resultado do teste", "description": "Esse teste atingiu uma velocidade máxima de download de {{down}} Mbps e uma velocidade máxima de upload de {{up}} Mbps. Ele foi criado {{type}} e levou {{duration}} segundos.", + "jitter": " The connection jitter was {{jitter}} ms.", "from_you": "por você", "automatic": "automaticamente" }, "overview": { - "title": "Visão geral do teste do último {{amount}}", - "1": "24 horas", - "2": "2 dias", - "3": "7 dias", - "4": "30 dias" + "title_range": "Test overview from {{from}} to {{to}}" } }, "errors": { @@ -236,6 +298,10 @@ "invalid_view": "Visualização inválida" }, "statistics": { + "average": "Média", + "export": { + "button": "Exportar" + }, "overview": { "total_title": "Total de testes", "total_description": "O número de testes executados", @@ -267,9 +333,40 @@ "max": "Máximo", "avg": "Média", "down": "Valores de download", - "up": "Carregar valores" + "up": "Valores de upload" + }, + "failed_test": "Teste com falha", + "hourly": { + "title": "Velocidade por horário do dia", + "sample_count": "Testes" + }, + "consistency": { + "title": "Estabilidade da conexão", + "excellent": "Excelente", + "good": "Bom", + "fair": "Razoável", + "poor": "Ruim", + "ping_variance": "Variação do ping" } }, + "calendar": { + "select_range": "Selecionar período", + "select_start": "Selecionar data de início", + "select_end": "Selecione a data de término", + "from": "De", + "to": "Para", + "last_7_days": "Últimos 7 dias", + "last_30_days": "Últimos 30 dias", + "last_90_days": "Últimos 90 dias", + "last_year": "Último ano", + "mon": "Seg", + "tue": "Ter", + "wed": "Qua", + "thu": "Qui", + "fri": "Sex", + "sat": "Sáb", + "sun": "Dom" + }, "nodes": { "add": "Adicionar servidor", "create": "Adicionar", @@ -294,6 +391,11 @@ "yes": "Sim, excluir", "success": "O servidor foi excluído com êxito" }, + "rename": { + "title": "Renomear o servidor", + "placeholder": "Novo nome do servidor", + "success": "O servidor foi renomeado com sucesso" + }, "messages": { "not_reachable": "O servidor não pode ser acessado", "password_changed": "Senha alterada", @@ -322,11 +424,11 @@ "display_name": "Nome de exibição", "display_name_placeholder": "Notificação MySpeed", "error_message": "Mensagem de erro", - "error_message_placeholder": "Erro: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Enviar mensagens de erro", "send_finished": "Enviar mensagens concluídas", "finished_message": "Mensagem finalizada", - "finished_message_placeholder": "%ping% ms, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "gotify": { @@ -336,11 +438,11 @@ "key": "Token de aplicativo", "priority": "Prioridade", "error_message": "Mensagem de erro", - "error_message_placeholder": "Erro: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Enviar mensagens de erro", "send_finished": "Enviar mensagens concluídas", "finished_message": "Mensagem finalizada", - "finished_message_placeholder": "%ping% ms, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "pushover": { @@ -349,18 +451,61 @@ "token": "Token de aplicativo", "user_key": "Chave do usuário", "error_message": "Mensagem de erro", - "error_message_placeholder": "Erro: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Enviar mensagens de erro", "send_finished": "Enviar mensagens concluídas", "finished_message": "Mensagem finalizada", - "finished_message_placeholder": "%ping% ms, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "healthChecks": { "title": "HealthChecks", "fields": { "url": "HealthChecks-URL", - "url_placeholder": "https://hc-ping.com/" + "url_placeholder": "https://hc-ping.com/", + "interval": "Intervalo de ping (minutos)", + "interval_placeholder": "1" + } + }, + "influxdb": { + "title": "InfluxDB", + "fields": { + "url": "URL do servidor", + "url_placeholder": "http://localhost:8086", + "org": "Organização", + "bucket": "Bucket", + "token": "Token de API", + "measurement": "Nome da medição", + "measurement_placeholder": "speedtests (default)", + "host": "Host tag", + "host_placeholder": "Defaults to the machine hostname", + "tags": "Tags adicionais", + "tags_placeholder": "region=eu,role=primary (comma-separated)" + } + }, + "ntfy": { + "title": "ntfy", + "fields": { + "url": "URL do servidor", + "url_placeholder": "https://ntfy.sh", + "topic": "Tópico", + "topic_placeholder": "myspeed-alerts", + "token": "Token de acesso", + "token_placeholder": "tk_... (optional, for protected servers)", + "title": "Título da notificação", + "title_placeholder": "MySpeed (opcional)", + "tags": "Tags", + "tags_placeholder": "warning,satellite (comma-separated)", + "priority": "Prioridade padrão (1-5)", + "priority_placeholder": "3", + "error_priority": "Prioridade do erro (1-5)", + "error_priority_placeholder": "5", + "error_message": "Mensagem de erro", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Enviar mensagens de erro", + "send_finished": "Enviar mensagens concluídas", + "finished_message": "Mensagem concluída", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "telegram": { @@ -369,11 +514,11 @@ "token": "Token de bot", "chat_id": "ID do bate-papo", "error_message": "Mensagem de erro", - "error_message_placeholder": "Erro: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Enviar mensagens de erro", "send_finished": "Enviar mensagens concluídas", "finished_message": "Mensagem finalizada", - "finished_message_placeholder": "%ping% ms, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "webhook": { @@ -386,11 +531,55 @@ "send_finished": "Enviar mensagens concluídas", "send_alive": "Enviar mensagens Keep-Alive", "send_recommendations": "Enviar recomendações", - "send_config_updates": "Enviar atualizações de configuração" + "send_config_updates": "Enviar atualizações de configuração", + "interval": "Keep-Alive interval (minutes)", + "interval_placeholder": "1" } } }, "common": { "back_to_top": "Voltar ao topo" + }, + "not_found": { + "title": "página não encontrada", + "description": "A página que procura não existe ou foi movida.", + "back_home": "Voltar para o Início" + }, + "route_error": { + "title": "Ops!", + "subtitle": "Ocorreu um erro", + "description": "An unexpected error occurred. Please try again or go back to the home page.", + "reload": "Atualizar página" + }, + "optimal_values": { + "title": "Valores ideais", + "use_recommended": "Usar recomendados" + }, + "preferences": { + "title": "Preferências", + "theme": { + "title": "Aparência", + "description": "Alternar entre a interface escura e clara.", + "dark": "Escuro", + "dark_desc": "Easier on the eyes in low light", + "light": "Claro", + "light_desc": "Brighter look for daytime use" + }, + "time_format": { + "title": "Formato de hora", + "description": "How clock times are displayed throughout the app.", + "h24": "24 horas", + "h24_desc": "Display times like 14:30", + "h12": "12 horas", + "h12_desc": "Display times like 2:30 PM" + }, + "speed_unit": { + "title": "Unidade de velocidade", + "description": "Escolha como as velocidades são mostradas. Os valores são convertidos automaticamente.", + "mbps": "Mbps (Megabits por segundo)", + "mbps_desc": "Standard ISP / speedtest unit", + "mbytes": "MB/s (Megabytes por segundo)", + "mbytes_desc": "Common in browsers and download managers" + } } } diff --git a/client/public/assets/locales/ru.json b/client/public/assets/locales/ru.json index 91fefbaf..e47d5981 100644 --- a/client/public/assets/locales/ru.json +++ b/client/public/assets/locales/ru.json @@ -23,6 +23,8 @@ "unset": "Удалить", "retry": "Попробуйте еще раз", "login": "Войти", + "save": "Save", + "saving": "Saving...", "password": { "title": "Требуется пароль", "placeholder": "Ваш пароль", @@ -37,8 +39,14 @@ "interface": "Интерфейс", "server": "Сервер", "server_id": "Идентификатор сервера", + "custom_url": "Custom URL", + "custom_url_placeholder": "https://speed.test/backend/", "choose_automatically": "Выбирай автоматически", - "ookla_license": "Я прочитал и принимаю EULA, политику конфиденциальности и условия обслуживания Ookla." + "ookla_license": "Я прочитал и принимаю EULA, политику конфиденциальности и условия обслуживания Ookla.", + "ookla_notice": "By using Ookla, you agree to their EULA, privacy policy and terms of service.", + "ookla_desc": "Popular provider with global server network", + "libre_desc": "Open-source, self-hostable speedtest", + "cloudflare_desc": "Fast CDN-based testing" } }, "dropdown": { @@ -52,6 +60,7 @@ "upload": "Оптимальная скорость передачи", "download": "Оптимальная скорость приема", "recommendations": "Оптимальные значения", + "optimal_values": "Optimal values", "change_provider": "Смените поставщика услуг", "password": "Изменить пароль", "cron": "Установить частоту", @@ -60,27 +69,56 @@ "pause_tests": "Приостановить тесты", "resume_tests": "Продолжить тесты", "language": "Изменить язык", - "light_mode": "Режим освещения", + "light_mode": "Светлый режим", "dark_mode": "Темный режим", - "theme_switched_light": "Переключился в режим освещения", - "theme_switched_dark": "Переключись в темный режим", - "info": "Информация о проекте", + "theme_switched_light": "Включен светлый режим", + "theme_switched_dark": "Включен темный режим", + "preferences": "Preferences", "provider": "О провайдере", "integrations": "Интеграции" }, + "about": { + "title": "About MySpeed", + "description": "MySpeed is an open-source speedtest analysis software that records your internet speed over a configurable period of time.", + "github": "GitHub", + "website": "Website", + "donate": "Donate", + "translate": "Translate", + "made_by": "Made with" + }, "options": { "cron": { "continuous": "Непрерывно (каждую минуту)", + "continuous_desc": "Every minute - high resource usage", "frequent": "Очень часто (каждые 30 минут)", + "frequent_desc": "Every 30 minutes", "default": "По умолчанию (каждый час)", + "default_desc": "Every hour - recommended", "rare": "Редко (каждые 3 часа)", - "really_rare": "Очень редко (каждые 6 часов)" + "rare_desc": "Every 3 hours", + "really_rare": "Очень редко (каждые 6 часов)", + "really_rare_desc": "Every 6 hours" }, "level": { "no_access": "Нет доступа", "read_access": "Доступ только для чтения" } }, + "password": { + "no_access_desc": "Visitors must enter the password to view anything", + "read_access_desc": "Visitors can view data but can't change settings" + }, + "pause": { + "manual": "Pause Indefinitely", + "manual_desc": "Pause until manually resumed", + "short": "Short Break", + "short_desc": "Pause for 1 hour", + "medium": "Medium Break", + "medium_desc": "Pause for 6 hours", + "long": "Long Break", + "long_desc": "Pause for 12 hours", + "custom": "Custom Duration" + }, "page": { "overview": "Обзор", "statistics": "Статистика" @@ -104,11 +142,16 @@ "cron_title": "Установите тестовую частоту", "cron_rules": "Правило Cron", "cron_next_test": "Следующий тест:", + "custom_cron": "Custom cron expression", + "schedule_offset": "Offset schedule", + "schedule_offset_desc": "Adds a small delay to prevent tests from starting at exact times", + "advanced": "Advanced", "time_title": "Показать тесты последних ...", "download": "Скачать", "pause_title": "Скоростные тесты приостанавливают...", "hours": "Часы", "pause": "Пауза", + "pause_manual_hint": "Leave empty to pause indefinitely", "release_manually": "Освободить вручную", "language": "Изменить язык", "view_title": "Изменить вид" @@ -122,6 +165,7 @@ "paused": "В настоящее время тестирование скорости приостановлено. Пожалуйста, продолжайте, если вы хотите пройти тест.", "running": "Тест скорости уже проводится. Пожалуйста, подождите немного.", "admin_login": "Логин администратора", + "servers": "Servers", "beta": { "title": "Бета-версия", "description": "Эта функция все еще находится на стадии бета-тестирования. Если вы обнаружите какие-либо ошибки, пожалуйста, сообщите о них здесь." @@ -153,19 +197,36 @@ "reset": "Перезагрузка", "confirm_reset": "Да, сброс", "settings_exported": "Настройки были экспортированы", - "settings_imported": "Настройки были импортированы" + "settings_imported": "Настройки были импортированы", + "retention": "Data retention", + "retention_desc": "How long speedtest results are kept before being automatically deleted.", + "retention_saved": "Retention period updated", + "retention_days_placeholder": "365", + "retention_days_suffix": "days", + "retention_back": "Back to presets", + "retention_options": { + "week": "7 days", + "month": "30 days", + "quarter": "90 days", + "half_year": "180 days", + "year": "1 year (default)", + "forever": "Keep forever", + "custom": "Custom..." + } }, "latest": { "ping": "Пинг", "ping_unit": "ms", + "jitter": "Jitter", + "jitter_unit": "ms", "down": "Скачать", "speed_unit": "Mbit/s", + "byte_speed_unit": "MB/s", "up": "Загрузить", "latest": "Последний тест", "before": "с сайта" }, "info": { - "credits": "MySpeed - это проект с открытым исходным кодом, предоставленный GNMYT. Оставь звезду на GitHub или пожертвуй, чтобы поддержать проект.", "recommendations_error": "Вы должны провести не менее 10 тестов, чтобы можно было определить среднее значение. Не имеет значения, были ли тесты проведены вручную или автоматически.", "recommendations_info": "По результатам последних 10 тестов было установлено, что оптимальный пинг составляет {{ping}} ms, загрузка - {{down}} Mbit/s, а загрузка - {{up}} Mbit/s. Лучше всего использовать ваш договор на подключение к Интернету в качестве ориентира и принимать его только в том случае, если он совпадает.", "update": "Доступно обновление до версии {{version}}. Смотрите изменения и скачать обновление.", @@ -177,6 +238,10 @@ "title": "Пинг", "description": "Пинг показывает, как быстро отвечает соответствующий провайдер. Чем короче время, тем лучше." }, + "jitter": { + "title": "Jitter", + "description": "Jitter is the variation in ping response times. Lower jitter means a more stable connection, which is important for real-time applications like video calls and gaming." + }, "up": { "title": "Скорость загрузки", "description": "Скорость загрузки влияет на удобство просмотра веб-страниц. Чем она больше, тем быстрее ваш компьютер может передавать данные." @@ -199,7 +264,7 @@ "test": { "not_available": "В настоящее время нет доступных тестов", "no_latest": "Текущий тест отсутствует. Пожалуйста, выполните тест или подождите, пока не будет выполнен следующий тест.", - "loading_more": "Загрузи больше тестов...", + "loading_more": "Загрузить больше тестов...", "no_more_tests": "Больше никаких тестов для загрузки", "unknown_error": "Неизвестная ошибка:", "failed": "Тест не прошел", @@ -213,15 +278,12 @@ "result": { "title": "Результат тестирования", "description": "В этом тесте была достигнута максимальная скорость скачивания {{down}} Мбит/с и максимальная скорость загрузки {{up}} Мбит/с. Он был создан {{type}} и занял {{duration}} секунд.", + "jitter": " The connection jitter was {{jitter}} ms.", "from_you": "от тебя", "automatic": "автоматический" }, "overview": { - "title": "Тестовый обзор последнего {{amount}}", - "1": "24 часа", - "2": "2 дня", - "3": "7 дней", - "4": "30 дней" + "title_range": "Test overview from {{from}} to {{to}}" } }, "errors": { @@ -236,6 +298,10 @@ "invalid_view": "Недопустимый вид" }, "statistics": { + "average": "Average", + "export": { + "button": "Export" + }, "overview": { "total_title": "Всего тестов", "total_description": "Количество проведенных тестов", @@ -268,8 +334,39 @@ "avg": "Среднее", "down": "Значения для скачивания", "up": "Загружаемые значения" + }, + "failed_test": "Failed test", + "hourly": { + "title": "Speed by Time of Day", + "sample_count": "Tests" + }, + "consistency": { + "title": "Connection Stability", + "excellent": "Excellent", + "good": "Good", + "fair": "Fair", + "poor": "Poor", + "ping_variance": "Ping variance" } }, + "calendar": { + "select_range": "Select date range", + "select_start": "Select start date", + "select_end": "Select end date", + "from": "From", + "to": "To", + "last_7_days": "Last 7 days", + "last_30_days": "Last 30 days", + "last_90_days": "Last 90 days", + "last_year": "Last year", + "mon": "Mon", + "tue": "Tue", + "wed": "Wed", + "thu": "Thu", + "fri": "Fri", + "sat": "Sat", + "sun": "Sun" + }, "nodes": { "add": "Добавить сервер", "create": "Добавить", @@ -294,6 +391,11 @@ "yes": "Да, удалить", "success": "Сервер был успешно удален" }, + "rename": { + "title": "Rename server", + "placeholder": "New server name", + "success": "The server has been renamed successfully" + }, "messages": { "not_reachable": "Сервер недоступен", "password_changed": "Пароль был изменен", @@ -322,11 +424,11 @@ "display_name": "Отображаемое имя", "display_name_placeholder": "Уведомление MySpeed", "error_message": "Сообщение об ошибке", - "error_message_placeholder": "Ошибка: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Отправка сообщений об ошибках", "send_finished": "Отправить заполненный", "finished_message": "Завершенное сообщение", - "finished_message_placeholder": "%ping% ms, %download% Mbit/s, %upload% Mbit/s" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "gotify": { @@ -336,11 +438,11 @@ "key": "Токен приложения", "priority": "Приоритет", "error_message": "Сообщение об ошибке", - "error_message_placeholder": "Ошибка: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Отправка сообщений об ошибках", "send_finished": "Отправить заполненный", "finished_message": "Завершенное сообщение", - "finished_message_placeholder": "%ping% ms, %download% Mbit/s, %upload% Mbit/s" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "pushover": { @@ -349,18 +451,61 @@ "token": "Прикладной токен", "user_key": "Ключ пользователя", "error_message": "Сообщение об ошибке", - "error_message_placeholder": "Ошибка: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Отправляй сообщения об ошибках", "send_finished": "Отправляйте готовые сообщения", "finished_message": "Готовое сообщение", - "finished_message_placeholder": "%ping% мс, %download% Мбит/с, %upload% Мбит/с" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "healthChecks": { "title": "HealthChecks", "fields": { "url": "Проверка здоровья URL", - "url_placeholder": "https://hc-ping.com/" + "url_placeholder": "https://hc-ping.com/", + "interval": "Ping interval (minutes)", + "interval_placeholder": "1" + } + }, + "influxdb": { + "title": "InfluxDB", + "fields": { + "url": "Server-URL", + "url_placeholder": "http://localhost:8086", + "org": "Organization", + "bucket": "Bucket", + "token": "API token", + "measurement": "Measurement name", + "measurement_placeholder": "speedtests (default)", + "host": "Host tag", + "host_placeholder": "Defaults to the machine hostname", + "tags": "Additional tags", + "tags_placeholder": "region=eu,role=primary (comma-separated)" + } + }, + "ntfy": { + "title": "ntfy", + "fields": { + "url": "Server-URL", + "url_placeholder": "https://ntfy.sh", + "topic": "Topic", + "topic_placeholder": "myspeed-alerts", + "token": "Access token", + "token_placeholder": "tk_... (optional, for protected servers)", + "title": "Notification title", + "title_placeholder": "MySpeed (optional)", + "tags": "Tags", + "tags_placeholder": "warning,satellite (comma-separated)", + "priority": "Default priority (1-5)", + "priority_placeholder": "3", + "error_priority": "Error priority (1-5)", + "error_priority_placeholder": "5", + "error_message": "Error message", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Send error messages", + "send_finished": "Send finished messages", + "finished_message": "Finished message", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "telegram": { @@ -369,11 +514,11 @@ "token": "Токен бота", "chat_id": "Идентификатор чата", "error_message": "Сообщение об ошибке", - "error_message_placeholder": "Ошибка: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Отправка сообщений об ошибках", "send_finished": "Отправить заполненный", "finished_message": "Завершенное сообщение", - "finished_message_placeholder": "%ping% ms, %download% Mbit/s, %upload% Mbit/s" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "webhook": { @@ -386,11 +531,55 @@ "send_finished": "Отправить заполненный", "send_alive": "Отправляйте живые сообщения", "send_recommendations": "Отправить рекомендации", - "send_config_updates": "Отправка обновлений конфигурации" + "send_config_updates": "Отправка обновлений конфигурации", + "interval": "Keep-Alive interval (minutes)", + "interval_placeholder": "1" } } }, "common": { "back_to_top": "Вернуться к началу" + }, + "not_found": { + "title": "Page not found", + "description": "The page you're looking for doesn't exist or has been moved.", + "back_home": "Back to Home" + }, + "route_error": { + "title": "Oops!", + "subtitle": "Something went wrong", + "description": "An unexpected error occurred. Please try again or go back to the home page.", + "reload": "Reload Page" + }, + "optimal_values": { + "title": "Optimal Values", + "use_recommended": "Use recommended" + }, + "preferences": { + "title": "Preferences", + "theme": { + "title": "Appearance", + "description": "Switch between dark and light interface.", + "dark": "Dark", + "dark_desc": "Easier on the eyes in low light", + "light": "Light", + "light_desc": "Brighter look for daytime use" + }, + "time_format": { + "title": "Time format", + "description": "How clock times are displayed throughout the app.", + "h24": "24-hour", + "h24_desc": "Display times like 14:30", + "h12": "12-hour", + "h12_desc": "Display times like 2:30 PM" + }, + "speed_unit": { + "title": "Speed unit", + "description": "Choose how speeds are shown. Values are converted automatically.", + "mbps": "Mbps (Megabits per second)", + "mbps_desc": "Standard ISP / speedtest unit", + "mbytes": "MB/s (Megabytes per second)", + "mbytes_desc": "Common in browsers and download managers" + } } } diff --git a/client/public/assets/locales/tr.json b/client/public/assets/locales/tr.json index f661d057..852dbcd4 100644 --- a/client/public/assets/locales/tr.json +++ b/client/public/assets/locales/tr.json @@ -23,6 +23,8 @@ "unset": "Kaldırmak", "retry": "Tekrar deneyin", "login": "Giriş yap", + "save": "Save", + "saving": "Saving...", "password": { "title": "Şifre gerekli", "placeholder": "Şifreniz", @@ -37,8 +39,14 @@ "interface": "Arayüz", "server": "Sunucu", "server_id": "Sunucu Kimliği", + "custom_url": "Custom URL", + "custom_url_placeholder": "https://speed.test/backend/", "choose_automatically": "Otomatik olarak seçin", - "ookla_license": "Ookla'nın EULA'sını, gizlilik politikasını ve hizmet şartlarını okudum ve kabul ediyorum." + "ookla_license": "Ookla'nın EULA'sını, gizlilik politikasını ve hizmet şartlarını okudum ve kabul ediyorum.", + "ookla_notice": "By using Ookla, you agree to their EULA, privacy policy and terms of service.", + "ookla_desc": "Popular provider with global server network", + "libre_desc": "Open-source, self-hostable speedtest", + "cloudflare_desc": "Fast CDN-based testing" } }, "dropdown": { @@ -52,6 +60,7 @@ "upload": "Optimum yükleme hızı", "download": "Optimum indirme hızı", "recommendations": "Öneriler", + "optimal_values": "Optimal values", "change_provider": "Sağlayıcıyı değiştirin", "password": "Şifre Değiştir", "cron": "Frekans ayarlama", @@ -60,27 +69,56 @@ "pause_tests": "Testleri duraklat", "resume_tests": "Testlere devam et", "language": "Dili değiştir", - "light_mode": "Işık modu", - "dark_mode": "Karanlık mod", - "theme_switched_light": "Işık moduna geçildi", - "theme_switched_dark": "Karanlık moda geçildi", - "info": "Proje hakkında bilgi", + "light_mode": "Aydınlık tema", + "dark_mode": "Karanlık tema", + "theme_switched_light": "Aydınlık temaya geçildi", + "theme_switched_dark": "Koyu temaya geçildi", + "preferences": "Preferences", "provider": "Sağlayıcı hakkında", "integrations": "Entegrasyonlar" }, + "about": { + "title": "About MySpeed", + "description": "MySpeed is an open-source speedtest analysis software that records your internet speed over a configurable period of time.", + "github": "GitHub", + "website": "Website", + "donate": "Donate", + "translate": "Translate", + "made_by": "Made with" + }, "options": { "cron": { - "continuous": "Sürekli (her dakika)", - "frequent": "Çok sık (her 30 dakikada bir)", - "default": "Varsayılan (her saat)", - "rare": "Nadiren (her 3 saatte bir)", - "really_rare": "Çok nadiren (her 6 saatte bir)" + "continuous": "Continuous", + "continuous_desc": "Every minute - high resource usage", + "frequent": "Very often", + "frequent_desc": "Every 30 minutes", + "default": "Default", + "default_desc": "Every hour - recommended", + "rare": "Rarely", + "rare_desc": "Every 3 hours", + "really_rare": "Very rarely", + "really_rare_desc": "Every 6 hours" }, "level": { "no_access": "Erişim yok", "read_access": "Salt Okunur Erişim" } }, + "password": { + "no_access_desc": "Visitors must enter the password to view anything", + "read_access_desc": "Visitors can view data but can't change settings" + }, + "pause": { + "manual": "Pause Indefinitely", + "manual_desc": "Pause until manually resumed", + "short": "Short Break", + "short_desc": "Pause for 1 hour", + "medium": "Medium Break", + "medium_desc": "Pause for 6 hours", + "long": "Long Break", + "long_desc": "Pause for 12 hours", + "custom": "Custom Duration" + }, "page": { "overview": "Genel Bakış", "statistics": "İstatistikler" @@ -104,11 +142,16 @@ "cron_title": "Test sıklığını ayarla", "cron_rules": "Cron kuralı", "cron_next_test": "Sonraki test:", + "custom_cron": "Custom cron expression", + "schedule_offset": "Offset schedule", + "schedule_offset_desc": "Adds a small delay to prevent tests from starting at exact times", + "advanced": "Advanced", "time_title": "Son testleri göster ...", "download": "İndir", "pause_title": "Speedtestleri duraklat...", "hours": "Saatler", "pause": "Duraklat", + "pause_manual_hint": "Leave empty to pause indefinitely", "release_manually": "Manuel olarak bırak", "language": "Dili Değiştir", "view_title": "Görünümü Değiştir" @@ -122,6 +165,7 @@ "paused": "Speedtestler şu anda duraklatıldı. Bir tane yapmak isterseniz devam edin.", "running": "Bir speedtest zaten çalışıyor. Lütfen biraz bekleyin.", "admin_login": "Yönetici Girişi", + "servers": "Servers", "beta": { "title": "Beta Sürümü", "description": "Bu özellik hala beta aşamasında. Herhangi bir hata bulursanız lütfen bunları buradan bildirin." @@ -153,19 +197,36 @@ "reset": "Sıfırla", "confirm_reset": "Evet, sıfırla", "settings_exported": "Ayarlar dışa aktarıldı", - "settings_imported": "Ayarlar içe aktarıldı" + "settings_imported": "Ayarlar içe aktarıldı", + "retention": "Data retention", + "retention_desc": "How long speedtest results are kept before being automatically deleted.", + "retention_saved": "Retention period updated", + "retention_days_placeholder": "365", + "retention_days_suffix": "days", + "retention_back": "Back to presets", + "retention_options": { + "week": "7 days", + "month": "30 days", + "quarter": "90 days", + "half_year": "180 days", + "year": "1 year (default)", + "forever": "Keep forever", + "custom": "Custom..." + } }, "latest": { "ping": "Ping", "ping_unit": "ms", + "jitter": "Jitter", + "jitter_unit": "ms", "down": "İndirme", "speed_unit": "Mbit/s", + "byte_speed_unit": "MB/s", "up": "Yükleme", "latest": "Son test", "before": "önce" }, "info": { - "credits": "MySpeed, GNMYT tarafından sağlanan açık kaynaklı bir projedir. GitHub 'da bir yıldız bırakın veya projeyi desteklemek için bağış yapın.", "recommendations_error": "Bir ortalama almak için en az 10 test yapmanız gerekmektedir. Testler manuel veya otomatik yapılmış olmasının bir önemi yoktur.", "recommendations_info": "Son 10 test baz alındığında, optimum ping'in {{ping}} ms, indirme hızının {{down}} Mbps ve yükleme hızının {{up}} Mbps olduğu bulundu. İnternet sözleşmenize yönelik olarak kendinizi en iyi şekilde yönlendirmeniz ve yalnızca sözleşmenizle uyumlu olanı kabul etmeniz en iyisi karar olacaktır.", "update": "Sürüm {{version}} için bir güncelleme mevcut. Değişiklikleri görüntüleyin ve güncellemeyi indirin.", @@ -177,6 +238,10 @@ "title": "Ping", "description": "Ping, ilgili sağlayıcının ne kadar hızlı yanıt verdiğini gösterir. Süre ne kadar az olursa, o kadar iyidir." }, + "jitter": { + "title": "Jitter", + "description": "Jitter is the variation in ping response times. Lower jitter means a more stable connection, which is important for real-time applications like video calls and gaming." + }, "up": { "title": "Yükleme hızı", "description": "Yükleme hızı, tarama deneyiminizi etkiler. Ne kadar yüksek olursa, bilgisayarınız o kadar hızlı veri gönderebilir." @@ -213,15 +278,12 @@ "result": { "title": "Test sonucu", "description": "Bu testte maksimum indirme hızı {{down}} M bps ve maksimum yükleme hızı {{up}} Mbps olarak elde edilmiştir. Oluşturuldu {{type}} ve {{duration}} saniye sürdü.", + "jitter": " The connection jitter was {{jitter}} ms.", "from_you": "siz tarafından", "automatic": "otomatik olarak" }, "overview": { - "title": "Son {{amount}} içindeki test genel bakışı", - "1": "24 saat", - "2": "2 gün", - "3": "7 gün", - "4": "30 gün" + "title_range": "Test overview from {{from}} to {{to}}" } }, "errors": { @@ -236,6 +298,10 @@ "invalid_view": "Geçersiz görünüm" }, "statistics": { + "average": "Average", + "export": { + "button": "Export" + }, "overview": { "total_title": "Toplam testler", "total_description": "Yapılan testlerin sayısı", @@ -268,8 +334,39 @@ "avg": "Ortalama", "down": "İndirme değerleri", "up": "Yükleme değerleri" + }, + "failed_test": "Failed test", + "hourly": { + "title": "Speed by Time of Day", + "sample_count": "Tests" + }, + "consistency": { + "title": "Connection Stability", + "excellent": "Excellent", + "good": "Good", + "fair": "Fair", + "poor": "Poor", + "ping_variance": "Ping variance" } }, + "calendar": { + "select_range": "Select date range", + "select_start": "Select start date", + "select_end": "Select end date", + "from": "From", + "to": "To", + "last_7_days": "Last 7 days", + "last_30_days": "Last 30 days", + "last_90_days": "Last 90 days", + "last_year": "Last year", + "mon": "Mon", + "tue": "Tue", + "wed": "Wed", + "thu": "Thu", + "fri": "Fri", + "sat": "Sat", + "sun": "Sun" + }, "nodes": { "add": "Sunucu ekle", "create": "Ekle", @@ -294,6 +391,11 @@ "yes": "Evet, sil", "success": "Sunucu başarıyla silindi" }, + "rename": { + "title": "Rename server", + "placeholder": "New server name", + "success": "The server has been renamed successfully" + }, "messages": { "not_reachable": "Sunucuya ulaşılamıyor", "password_changed": "Şifre değiştirildi", @@ -322,11 +424,11 @@ "display_name": "Görünen ad", "display_name_placeholder": "MySpeed bildirimi", "error_message": "Hata mesajı", - "error_message_placeholder": "Hata: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Hata mesajlarını gönder", "send_finished": "Tamamlanan mesajları gönder", "finished_message": "Tamamlanan mesaj", - "finished_message_placeholder": "%ping% ms, %download% Mbit/s, %upload% Mbit/s" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "gotify": { @@ -336,11 +438,11 @@ "key": "Uygulama belirteci", "priority": "Öncelik", "error_message": "Hata mesajı", - "error_message_placeholder": "Hata: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Hata mesajlarını gönder", "send_finished": "Tamamlanan mesajları gönder", "finished_message": "Tamamlanan mesaj", - "finished_message_placeholder": "%ping% ms, %download% Mbit/s, %upload% Mbit/s" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "pushover": { @@ -349,18 +451,61 @@ "token": "Uygulama belirteci", "user_key": "Kullanıcı anahtarı", "error_message": "Hata mesajı", - "error_message_placeholder": "Hata: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Hata mesajları gönderme", "send_finished": "Tamamlanan mesajları gönderme", "finished_message": "Bitti mesajı", - "finished_message_placeholder": "%ping% ms, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "healthChecks": { "title": "HealthChecks", "fields": { "url": "HealthChecks-URL", - "url_placeholder": "https://hc-ping.com/" + "url_placeholder": "https://hc-ping.com/", + "interval": "Ping interval (minutes)", + "interval_placeholder": "1" + } + }, + "influxdb": { + "title": "InfluxDB", + "fields": { + "url": "Server-URL", + "url_placeholder": "http://localhost:8086", + "org": "Organization", + "bucket": "Bucket", + "token": "API token", + "measurement": "Measurement name", + "measurement_placeholder": "speedtests (default)", + "host": "Host tag", + "host_placeholder": "Defaults to the machine hostname", + "tags": "Additional tags", + "tags_placeholder": "region=eu,role=primary (comma-separated)" + } + }, + "ntfy": { + "title": "ntfy", + "fields": { + "url": "Server-URL", + "url_placeholder": "https://ntfy.sh", + "topic": "Topic", + "topic_placeholder": "myspeed-alerts", + "token": "Access token", + "token_placeholder": "tk_... (optional, for protected servers)", + "title": "Notification title", + "title_placeholder": "MySpeed (optional)", + "tags": "Tags", + "tags_placeholder": "warning,satellite (comma-separated)", + "priority": "Default priority (1-5)", + "priority_placeholder": "3", + "error_priority": "Error priority (1-5)", + "error_priority_placeholder": "5", + "error_message": "Error message", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", + "send_failed": "Send error messages", + "send_finished": "Send finished messages", + "finished_message": "Finished message", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "telegram": { @@ -369,11 +514,11 @@ "token": "Bot Token", "chat_id": "Sohbet Kimliği", "error_message": "Hata mesajı", - "error_message_placeholder": "Hata: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Hata mesajlarını gönder", "send_finished": "Tamamlanan mesajları gönder", "finished_message": "Tamamlanan mesaj", - "finished_message_placeholder": "%ping% ms, %download% Mbit/s, %upload% Mbit/s" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% ms, %download% Mbps, %upload% Mbps" } }, "webhook": { @@ -386,11 +531,55 @@ "send_finished": "Tamamlanan mesajları gönder", "send_alive": "Keep-Alive mesajlarını gönder", "send_recommendations": "Tavsiyeleri gönder", - "send_config_updates": "Yapılandırma güncellemelerini gönder" + "send_config_updates": "Yapılandırma güncellemelerini gönder", + "interval": "Keep-Alive interval (minutes)", + "interval_placeholder": "1" } } }, "common": { "back_to_top": "Başa dön" + }, + "not_found": { + "title": "Page not found", + "description": "The page you're looking for doesn't exist or has been moved.", + "back_home": "Back to Home" + }, + "route_error": { + "title": "Oops!", + "subtitle": "Something went wrong", + "description": "An unexpected error occurred. Please try again or go back to the home page.", + "reload": "Reload Page" + }, + "optimal_values": { + "title": "Optimal Values", + "use_recommended": "Use recommended" + }, + "preferences": { + "title": "Preferences", + "theme": { + "title": "Appearance", + "description": "Switch between dark and light interface.", + "dark": "Dark", + "dark_desc": "Easier on the eyes in low light", + "light": "Light", + "light_desc": "Brighter look for daytime use" + }, + "time_format": { + "title": "Time format", + "description": "How clock times are displayed throughout the app.", + "h24": "24-hour", + "h24_desc": "Display times like 14:30", + "h12": "12-hour", + "h12_desc": "Display times like 2:30 PM" + }, + "speed_unit": { + "title": "Speed unit", + "description": "Choose how speeds are shown. Values are converted automatically.", + "mbps": "Mbps (Megabits per second)", + "mbps_desc": "Standard ISP / speedtest unit", + "mbytes": "MB/s (Megabytes per second)", + "mbytes_desc": "Common in browsers and download managers" + } } } diff --git a/client/public/assets/locales/zh.json b/client/public/assets/locales/zh.json index fac86604..76feaa95 100644 --- a/client/public/assets/locales/zh.json +++ b/client/public/assets/locales/zh.json @@ -23,6 +23,8 @@ "unset": "移除", "retry": "再试一次", "login": "登录", + "save": "保存", + "saving": "保存中……", "password": { "title": "需要密码", "placeholder": "您的密码", @@ -37,8 +39,14 @@ "interface": "界面", "server": "服务器", "server_id": "服务器ID", + "custom_url": "自定义 URL", + "custom_url_placeholder": "https://speed.test/backend/", "choose_automatically": "自动选择", - "ookla_license": "我已阅读并接受 Ookla 的EULA隐私政策服务条款。" + "ookla_license": "我已阅读并接受 Ookla 的EULA隐私政策服务条款。", + "ookla_notice": "使用 Ookla 即表示您同意其最终用户许可协议隐私政策服务条款。", + "ookla_desc": "拥有全球服务器网络的流行提供商", + "libre_desc": "开源、可自托管的测速工具", + "cloudflare_desc": "基于 CDN 的快速测试" } }, "dropdown": { @@ -52,6 +60,7 @@ "upload": "最佳的上传速度", "download": "最佳的下载速度", "recommendations": "最优值", + "optimal_values": "最佳值", "change_provider": "更换提供商", "password": "更改密码", "cron": "设置测试频率", @@ -60,27 +69,56 @@ "pause_tests": "暂停测试", "resume_tests": "继续测试", "language": "修改语言", - "light_mode": "灯光模式", - "dark_mode": "黑暗模式", - "theme_switched_light": "切换到灯光模式", - "theme_switched_dark": "切换到黑暗模式", - "info": "关于项目的信息", + "light_mode": "浅色模式", + "dark_mode": "深色模式", + "theme_switched_light": "已切换到浅色模式", + "theme_switched_dark": "已切换到深色模式", + "preferences": "偏好设置", "provider": "关于供应商", "integrations": "集成" }, + "about": { + "title": "关于 MySpeed", + "description": "MySpeed 是一款开源测速分析软件,可在可配置的时间段内记录您的网速。", + "github": "GitHub", + "website": "官网", + "donate": "捐赠", + "translate": "翻译", + "made_by": "用" + }, "options": { "cron": { "continuous": "连续 (每分钟)", - "frequent": "非常频繁 (每30分钟一次)", + "continuous_desc": "每分钟一次——高资源占用", + "frequent": "频繁 (每30分钟一次)", + "frequent_desc": "每 30 分钟", "default": "标准 (每小时一次)", - "rare": "很少 (每3小时一次)", - "really_rare": "非常少 (每6小时一次)" + "default_desc": "每小时一次——推荐", + "rare": "较少 (每3小时一次)", + "rare_desc": "每 3 小时", + "really_rare": "很少 (每6小时一次)", + "really_rare_desc": "每 6 小时" }, "level": { "no_access": "无法进入", "read_access": "只读访问" } }, + "password": { + "no_access_desc": "访客必须输入密码才能查看任何内容", + "read_access_desc": "访客可以查看数据但无法更改设置" + }, + "pause": { + "manual": "无限期暂停", + "manual_desc": "暂停直到手动恢复", + "short": "短暂休息", + "short_desc": "暂停 1 小时", + "medium": "中等休息", + "medium_desc": "暂停 6 小时", + "long": "长时间休息", + "long_desc": "暂停 12 小时", + "custom": "自定义时长" + }, "page": { "overview": "概览", "statistics": "统计" @@ -104,11 +142,16 @@ "cron_title": "设置测试频率", "cron_rules": "克隆规则", "cron_next_test": "下一次测试:", + "custom_cron": "自定义 Cron 表达式", + "schedule_offset": "偏移计划", + "schedule_offset_desc": "添加小幅延迟以防止测试在整点启动", + "advanced": "高级", "time_title": "显示最后一次测试...", "download": "下载", "pause_title": "测速暂停了,因为...", "hours": "小时", "pause": "暂停", + "pause_manual_hint": "留空以无限期暂停", "release_manually": "手动释放", "language": "改变语言", "view_title": "修改视图" @@ -122,6 +165,7 @@ "paused": "测速目前已暂停。如果你想参加,请继续。", "running": "测速已经在进行中。请稍等片刻。", "admin_login": "管理员登录", + "servers": "服务器", "beta": { "title": "测试版本", "description": "该功能仍处于测试阶段。如果你发现错误,请报告 这里." @@ -153,19 +197,36 @@ "reset": "重置", "confirm_reset": "是,重置", "settings_exported": "配置已导出", - "settings_imported": "配置已导入" + "settings_imported": "配置已导入", + "retention": "数据保留", + "retention_desc": "测速结果在自动删除前保留多长时间。", + "retention_saved": "保留期已更新", + "retention_days_placeholder": "365", + "retention_days_suffix": "天", + "retention_back": "返回预设", + "retention_options": { + "week": "7 天", + "month": "30 天", + "quarter": "90 天", + "half_year": "180 天", + "year": "1 年(默认)", + "forever": "永久保留", + "custom": "自定义..." + } }, "latest": { "ping": "ping 延迟", "ping_unit": "毫秒", + "jitter": "抖动", + "jitter_unit": "毫秒", "down": "下载", "speed_unit": "Mbps", + "byte_speed_unit": "MB/s", "up": "上传", "latest": "最后一次测速", "before": "从" }, "info": { - "credits": "MySpeed是由 GNMYT 提供的一个开源项目。请在GitHub上留言或捐款支持该项目。", "recommendations_error": "必须至少做 10 次测速,这样才能确定平均数。无论这些测速是手动还是自动完成的,都没有关系。", "recommendations_info": "根据最近 10 次测速结果,最佳的 Ping 延迟为{{ping}} 毫秒,下载速度为{{down}} Mbit/s,上传速度为{{up}} Mbit/s。最好参考你的宽带合同,并只在与之相符的情况下采用这些值。", "update": "对{{version}} 版本的更新是可用的。参见变化下载更新。", @@ -177,6 +238,10 @@ "title": "平", "description": "Ping 延迟显示了各自供应商的响应速度。时间越短越好。" }, + "jitter": { + "title": "抖动", + "description": "抖动是指 ping 响应时间的变化。较低的抖动意味着更稳定的连接,这对视频会议和游戏等实时应用非常重要。" + }, "up": { "title": "上传速度", "description": "上传速度会影响你的浏览体验。你的测速值越大,你的计算机发送数据的速度就越快。" @@ -199,8 +264,8 @@ "test": { "not_available": "目前没有任何测试", "no_latest": "当前没有测试。请执行一个测试或等到下一个测试完成。", - "loading_more": "加载更多测试...", - "no_more_tests": "不再加载测试", + "loading_more": "加载更多测试记录...", + "no_more_tests": "已加载全部测试记录", "unknown_error": "未知错误:", "failed": "测试失败", "recheck": "如果这种情况经常发生,请尽可能地检查。", @@ -213,15 +278,12 @@ "result": { "title": "测试结果", "description": "该测试的最高下载速度为{{down}} Mbps,最高上传速度为{{up}} Mbps。创建 {{type}}耗时{{duration}} 秒。", + "jitter": " 连接抖动为 {{jitter}} 毫秒。", "from_you": "来自你的", "automatic": "自动" }, "overview": { - "title": "最后一次{{amount}}的测试概述", - "1": "24小时", - "2": "2天", - "3": "7天", - "4": "30天" + "title_range": "{{from}} 至 {{to}} 的测试概览" } }, "errors": { @@ -236,6 +298,10 @@ "invalid_view": "无效视图" }, "statistics": { + "average": "平均", + "export": { + "button": "导出" + }, "overview": { "total_title": "测速次数", "total_description": "进行测速的总的数量", @@ -268,8 +334,39 @@ "avg": "平均", "down": "下载数值", "up": "上传数值" + }, + "failed_test": "失败的测试", + "hourly": { + "title": "分时段速度", + "sample_count": "测试" + }, + "consistency": { + "title": "连接稳定性", + "excellent": "极佳", + "good": "良好", + "fair": "一般", + "poor": "较差", + "ping_variance": "Ping 方差" } }, + "calendar": { + "select_range": "选择日期范围", + "select_start": "选择开始日期", + "select_end": "选择结束日期", + "from": "从", + "to": "至", + "last_7_days": "最近 7 天", + "last_30_days": "最近 30 天", + "last_90_days": "最近 90 天", + "last_year": "去年", + "mon": "周一", + "tue": "周二", + "wed": "周三", + "thu": "周四", + "fri": "周五", + "sat": "周六", + "sun": "周日" + }, "nodes": { "add": "添加服务器", "create": "添加", @@ -294,6 +391,11 @@ "yes": "是的,删除", "success": "该服务器被成功删除" }, + "rename": { + "title": "重命名服务器", + "placeholder": "新服务器名称", + "success": "服务器已成功重命名" + }, "messages": { "not_reachable": "服务器无法到达", "password_changed": "密码已被更改", @@ -322,11 +424,11 @@ "display_name": "显示名称", "display_name_placeholder": "MySpeed 通知", "error_message": "测速失败的信息内容", - "error_message_placeholder": "错误: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] 错误: %error%", "send_failed": "是否发送测速失败信息", "send_finished": "是否发送测速完成信息", "finished_message": "测速完成的信息内容", - "finished_message_placeholder": "%ping% ms, %download% Mbit/s, %upload% Mbit/s" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% 毫秒, %download% Mbps, %upload% Mbps" } }, "gotify": { @@ -336,11 +438,11 @@ "key": "应用令牌", "priority": "优先权", "error_message": "测速失败的信息内容", - "error_message_placeholder": "错误: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] 错误: %error%", "send_failed": "是否发送测速失败信息", "send_finished": "是否发送测速完成信息", "finished_message": "测速完成的信息内容", - "finished_message_placeholder": "%ping% ms, %download% Mbit/s, %upload% Mbit/s" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% 毫秒, %download% Mbps, %upload% Mbps" } }, "pushover": { @@ -349,18 +451,61 @@ "token": "应用程序令牌", "user_key": "用户密钥", "error_message": "是否发送测速失败信息", - "error_message_placeholder": "错误: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] 错误: %error%", "send_failed": "是否发送测速失败信息", "send_finished": "是否发送测速完成信息", "finished_message": "测速完成的信息内容", - "finished_message_placeholder": "%ping% 毫秒, %download% Mbps, %upload% Mbps" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% 毫秒, %download% Mbps, %upload% Mbps" } }, "healthChecks": { "title": "HealthChecks", "fields": { "url": "健康检查网址", - "url_placeholder": "https://hc-ping.com/" + "url_placeholder": "https://hc-ping.com/", + "interval": "Ping 间隔(分钟)", + "interval_placeholder": "1" + } + }, + "influxdb": { + "title": "InfluxDB", + "fields": { + "url": "服务器 URL", + "url_placeholder": "http://localhost:8086", + "org": "组织", + "bucket": "存储桶", + "token": "API 令牌", + "measurement": "测量名称", + "measurement_placeholder": "speedtests(默认)", + "host": "主机标签", + "host_placeholder": "默认为机器主机名", + "tags": "附加标签", + "tags_placeholder": "region=eu,role=primary(逗号分隔)" + } + }, + "ntfy": { + "title": "ntfy", + "fields": { + "url": "服务器 URL", + "url_placeholder": "https://ntfy.sh", + "topic": "主题", + "topic_placeholder": "myspeed-alerts", + "token": "访问令牌", + "token_placeholder": "tk_...(可选,用于受保护的服务器)", + "title": "通知标题", + "title_placeholder": "MySpeed(可选)", + "tags": "标签", + "tags_placeholder": "warning,satellite(逗号分隔)", + "priority": "默认优先级(1-5)", + "priority_placeholder": "3", + "error_priority": "错误优先级(1-5)", + "error_priority_placeholder": "5", + "error_message": "错误消息", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] 错误: %error%", + "send_failed": "发送错误消息", + "send_finished": "发送完成消息", + "finished_message": "完成消息", + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% 毫秒, %download% Mbps, %upload% Mbps" } }, "telegram": { @@ -369,11 +514,11 @@ "token": "Bot Token", "chat_id": "聊天ID", "error_message": "是否发送测速失败信息", - "error_message_placeholder": "错误: %error%", + "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] 错误: %error%", "send_failed": "是否发送测速失败信息", "send_finished": "是否发送测速完成信息", "finished_message": "测速完成的信息内容", - "finished_message_placeholder": "%ping% ms, %download% Mbit/s, %upload% Mbit/s" + "finished_message_placeholder": "%year%-%month%-%day% %hour%:%minute% — %ping% 毫秒, %download% Mbps, %upload% Mbps" } }, "webhook": { @@ -386,11 +531,55 @@ "send_finished": "是否发送测速完成信息", "send_alive": "发送生动的信息", "send_recommendations": "发送建议", - "send_config_updates": "发送配置更新" + "send_config_updates": "发送配置更新", + "interval": "Keep-Alive 间隔(分钟)", + "interval_placeholder": "1" } } }, "common": { - "back_to_top": "返回顶部" + "back_to_top": "回到顶部" + }, + "not_found": { + "title": "页面未找到", + "description": "您查找的页面不存在或已被移动。", + "back_home": "返回首页" + }, + "route_error": { + "title": "哎呀!", + "subtitle": "出错了", + "description": "发生了意外错误。请重试或返回首页。", + "reload": "重新加载页面" + }, + "optimal_values": { + "title": "最佳值", + "use_recommended": "使用推荐值" + }, + "preferences": { + "title": "偏好设置", + "theme": { + "title": "外观", + "description": "在深色和浅色界面之间切换。", + "dark": "深色", + "dark_desc": "在弱光下更护眼", + "light": "浅色", + "light_desc": "白天使用更明亮" + }, + "time_format": { + "title": "时间格式", + "description": "应用中的时间显示方式。", + "h24": "24 小时制", + "h24_desc": "以 14:30 格式显示时间", + "h12": "12 小时制", + "h12_desc": "以 2:30 PM 格式显示时间" + }, + "speed_unit": { + "title": "速度单位", + "description": "选择速度的显示方式。数值会自动转换。", + "mbps": "Mbps(兆比特每秒)", + "mbps_desc": "标准 ISP / 测速单位", + "mbytes": "MB/s(兆字节每秒)", + "mbytes_desc": "常见于浏览器和下载管理器" + } } }