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": "常见于浏览器和下载管理器"
+ }
}
}