#!/usr/bin/env node 'use strict'; const fs = require('fs'); const path = require('path'); const langDir = path.join(__dirname, '..', 'lang'); const locales = fs.readdirSync(langDir).filter((f) => f.endsWith('.json')); const dashboardPatches = { ar: { client_server_host_hint: 'العنوان الذي يستخدمه عملاء RustDesk للوصول إلى هذا الخادم. غيّره عندما يختلف URL اللوحة عن IP/DNS الموجه للعملاء. للنطاقات المنفصلة، اضبط الإعدادات → نقاط نهاية العملاء العامة.', client_server_host_env_hint: 'نقاط نهاية ID والترحيل وAPI العامة مُعدّة في الإعدادات → نقاط نهاية العملاء العامة. امسحها هناك لاستخدام هذا التجاوز مجدداً.', }, cs: { client_server_host_hint: 'Adresa, kterou klienti RustDesk používají pro přístup k serveru. Změňte ji, když se URL panelu liší od IP/DNS pro klienty. Pro oddělené domény nastavte Nastavení → Veřejné koncové body klientů.', client_server_host_env_hint: 'Veřejné ID, relay a API jsou nastaveny v Nastavení → Veřejné koncové body klientů. Vymažte je tam, abyste znovu mohli použít toto pole.', }, da: { client_server_host_hint: 'Adresse RustDesk-klienter bruger til at nå denne server. Ændr den, når panel-URL adskiller sig fra klientens IP/DNS. For adskilte domæner: Indstillinger → Offentlige klient-endpoints.', client_server_host_env_hint: 'Offentlige ID-, relay- og API-endpoints er konfigureret under Indstillinger → Offentlige klient-endpoints. Ryd dem der for at bruge denne override igen.', }, de: { client_server_host_hint: 'Adresse, die RustDesk-Clients für diesen Server nutzen. Ändern, wenn die Panel-URL von der Client-IP/DNS abweicht. Für getrennte Domains: Einstellungen → Öffentliche Client-Endpunkte.', client_server_host_env_hint: 'Öffentliche ID-, Relay- und API-Endpunkte sind unter Einstellungen → Öffentliche Client-Endpunkte konfiguriert. Dort leeren, um diese Überschreibung wieder zu nutzen.', }, es: { client_server_host_hint: 'Dirección que usan los clientes RustDesk para llegar a este servidor. Cámbiela cuando la URL del panel difiera de la IP/DNS del cliente. Para dominios separados: Ajustes → Endpoints públicos del cliente.', client_server_host_env_hint: 'Los endpoints públicos de ID, relay y API están en Ajustes → Endpoints públicos del cliente. Bórrelos allí para volver a usar este campo.', }, fi: { client_server_host_hint: 'Osoite, jota RustDesk-asiakkaat käyttävät palvelimeen. Muuta, jos paneelin URL poikkeaa asiakkaan IP/DNS:stä. Erillisille domaineille: Asetukset → Julkiset asiakaspäätepisteet.', client_server_host_env_hint: 'Julkinen ID-, relay- ja API-osoite on Asetukset → Julkiset asiakaspäätepisteet. Tyhjennä ne käyttääksesi tätä kenttää uudelleen.', }, fr: { client_server_host_hint: 'Adresse utilisée par les clients RustDesk pour joindre ce serveur. Modifiez-la si l’URL du panneau diffère de l’IP/DNS client. Domaines séparés : Paramètres → Points de terminaison clients publics.', client_server_host_env_hint: 'Les points de terminaison publics ID, relais et API sont définis dans Paramètres → Points de terminaison clients publics. Effacez-les pour réutiliser ce champ.', }, hi: { client_server_host_hint: 'RustDesk क्लाइंट इस सर्वर तक पहुँचने के लिए जो पता उपयोग करते हैं। पैनल URL अलग हो तो बदलें। अलग डोमेन के लिए: Settings → Public client endpoints।', client_server_host_env_hint: 'सार्वजनिक ID, relay और API Settings → Public client endpoints में सेट हैं। इस ओवरराइड के लिए वहाँ खाली करें।', }, hu: { client_server_host_hint: 'Cím, amit a RustDesk kliensek használnak. Módosítsa, ha a panel URL eltér a kliens IP/DNS-től. Külön domainekhez: Beállítások → Nyilvános kliens végpontok.', client_server_host_env_hint: 'A nyilvános ID, relay és API a Beállítások → Nyilvános kliens végpontok menüben van. Törölje ott a mezőket az override újbóli használatához.', }, id: { client_server_host_hint: 'Alamat yang digunakan klien RustDesk untuk server ini. Ubah jika URL panel berbeda dari IP/DNS klien. Domain terpisah: Pengaturan → Endpoint klien publik.', client_server_host_env_hint: 'Endpoint ID, relay, dan API publik dikonfigurasi di Pengaturan → Endpoint klien publik. Kosongkan di sana untuk override ini.', }, it: { client_server_host_hint: 'Indirizzo usato dai client RustDesk per questo server. Modificalo se l’URL del pannello differisce da IP/DNS client. Domini separati: Impostazioni → Endpoint client pubblici.', client_server_host_env_hint: 'ID, relay e API pubblici sono in Impostazioni → Endpoint client pubblici. Svuota lì per usare di nuovo questo campo.', }, ja: { client_server_host_hint: 'RustDesk クライアントがこのサーバーに接続するアドレス。パネル URL とクライアント向け IP/DNS が異なる場合に変更。分割ドメインは 設定 → 公開クライアントエンドポイント。', client_server_host_env_hint: '公開 ID・リレー・API は 設定 → 公開クライアントエンドポイント で設定されています。クリアするとこの上書きが使えます。', }, ko: { client_server_host_hint: 'RustDesk 클라이언트가 이 서버에 접속하는 주소. 패널 URL과 클라이언트 IP/DNS가 다를 때 변경. 분리 도메인: 설정 → 공개 클라이언트 엔드포인트.', client_server_host_env_hint: '공개 ID, relay, API는 설정 → 공개 클라이언트 엔드포인트에 구성됨. 비우면 이 재정의를 다시 사용.', }, nb: { client_server_host_hint: 'Adresse RustDesk-klienter bruker for denne serveren. Endre når panel-URL avviker fra klient-IP/DNS. Separate domener: Innstillinger → Offentlige klient-endepunkter.', client_server_host_env_hint: 'Offentlige ID-, relay- og API-endepunkter er satt under Innstillinger → Offentlige klient-endepunkter. Tøm der for å bruke denne overstyringen igjen.', }, nl: { client_server_host_hint: 'Adres dat RustDesk-clients gebruiken voor deze server. Wijzig wanneer de panel-URL afwijkt van client-IP/DNS. Gescheiden domeinen: Instellingen → Openbare client-eindpunten.', client_server_host_env_hint: 'Openbare ID-, relay- en API-eindpunten staan in Instellingen → Openbare client-eindpunten. Leeg daar om dit veld weer te gebruiken.', }, pl: { client_server_host_hint: 'Adres, pod którym klienci RustDesk łączą się z serwerem. Zmień, gdy URL panelu różni się od IP/DNS klientów. Osobne domeny: Ustawienia → Publiczne endpointy klienta.', client_server_host_env_hint: 'Publiczne ID, relay i API są w Ustawienia → Publiczne endpointy klienta. Wyczyść tam, aby znów użyć tego pola.', }, pt: { client_server_host_hint: 'Endereço que os clientes RustDesk usam para este servidor. Altere quando a URL do painel difere do IP/DNS do cliente. Domínios separados: Definições → Endpoints públicos do cliente.', client_server_host_env_hint: 'ID, relay e API públicos estão em Definições → Endpoints públicos do cliente. Limpe lá para usar este campo novamente.', }, ro: { client_server_host_hint: 'Adresa folosită de clienții RustDesk. Modificați când URL-ul panoului diferă de IP/DNS client. Domenii separate: Setări → Endpoint-uri publice client.', client_server_host_env_hint: 'ID, relay și API public sunt în Setări → Endpoint-uri publice client. Goliți acolo pentru a folosi din nou acest câmp.', }, sv: { client_server_host_hint: 'Adress RustDesk-klienter använder för denna server. Ändra när panel-URL skiljer sig från klient-IP/DNS. Separata domäner: Inställningar → Offentliga klientändpunkter.', client_server_host_env_hint: 'Offentliga ID-, relay- och API-ändpunkter finns under Inställningar → Offentliga klientändpunkter. Töm där för att använda detta fält igen.', }, th: { client_server_host_hint: 'ที่อยู่ที่ไคลเอนต์ RustDesk ใช้เชื่อมต่อเซิร์ฟเวอร์ เปลี่ยนเมื่อ URL แผงต่างจาก IP/DNS ของไคลเอนต์ โดเมนแยก: การตั้งค่า → จุดปลายทางไคลเอนต์สาธารณะ', client_server_host_env_hint: 'ID, relay และ API สาธารณะตั้งใน การตั้งค่า → จุดปลายทางไคลเอนต์สาธารณะ ล้างที่นั่นเพื่อใช้การแทนที่นี้อีกครั้ง', }, tr: { client_server_host_hint: 'RustDesk istemcilerinin bu sunucuya erişmek için kullandığı adres. Panel URL’si farklıysa değiştirin. Ayrı domainler: Ayarlar → Genel istemci uç noktaları.', client_server_host_env_hint: 'Genel ID, relay ve API Ayarlar → Genel istemci uç noktaları bölümünde. Bu alanı tekrar kullanmak için orayı temizleyin.', }, uk: { client_server_host_hint: 'Адреса для клієнтів RustDesk. Змініть, якщо URL панелі відрізняється від IP/DNS клієнтів. Окремі домени: Налаштування → Публічні кінцеві точки клієнта.', client_server_host_env_hint: 'Публічні ID, relay і API налаштовані в Налаштування → Публічні кінцеві точки клієнта. Очистіть там, щоб знову використати це поле.', }, vi: { client_server_host_hint: 'Địa chỉ client RustDesk dùng để kết nối máy chủ. Đổi khi URL bảng điều khiển khác IP/DNS client. Tên miền tách: Cài đặt → Điểm cuối client công khai.', client_server_host_env_hint: 'ID, relay và API công khai được cấu hình tại Cài đặt → Điểm cuối client công khai. Xóa ở đó để dùng lại trường này.', }, zh: { client_server_host_hint: 'RustDesk 客户端连接本服务器使用的地址。当面板 URL 与客户端 IP/DNS 不同时请修改。分离域名请配置:设置 → 公共客户端端点。', client_server_host_env_hint: '公共 ID、中继和 API 已在 设置 → 公共客户端端点 中配置。清除后可再次使用此覆盖字段。', }, 'zh-TW': { client_server_host_hint: 'RustDesk 用戶端連線此伺服器使用的位址。面板 URL 與用戶端 IP/DNS 不同時請變更。分離網域:設定 → 公共用戶端端點。', client_server_host_env_hint: '公共 ID、中繼與 API 已於 設定 → 公共用戶端端點 設定。清除後可再次使用此覆寫欄位。', }, }; const settingsPatches = { ar: { public_endpoints_title: 'نقاط نهاية العملاء العامة', public_endpoints_desc: 'اسم المضيف وURL API الذي يستخدمه عملاء RustDesk للوصول إلى هذا الخادم. يُستخدم في إعداد العميل في لوحة التحكم ورمز QR وسلاسل النشر.', public_endpoints_hint: 'اضبطها عندما يختلف اسم مضيف لوحة الويب عن خادم ID أو الترحيل أو API (proxy عكسي / DNS منفصل). اتركها فارغة للاكتشاف التلقائي.', public_endpoints_server_id: 'خادم ID العام', public_endpoints_server_id_placeholder: 'مثال remote.example.com', public_endpoints_relay: 'خادم الترحيل العام', public_endpoints_relay_placeholder: 'مثال remote.example.com (افتراضي: خادم ID)', public_endpoints_api_url: 'URL API العام', public_endpoints_api_url_placeholder: 'مثال https://api.example.com', public_endpoints_api_url_hint: 'URL كامل لعملاء RustDesk لتسجيل الدخول واستدعاءات API (المنفذ 21114 افتراضياً).', public_endpoints_save: 'حفظ نقاط النهاية', public_endpoints_saved: 'تم حفظ نقاط نهاية العملاء العامة', public_endpoints_invalid_host: 'اسم مضيف ID أو relay غير صالح', public_endpoints_invalid_api_url: 'URL API غير صالح — استخدم http:// أو https://', public_endpoints_save_title: 'حفظ نقاط نهاية العملاء العامة؟', public_endpoints_save_confirm: 'تحديث قيم إعداد عميل RustDesk المستخدمة في لوحة التحكم؟', }, cs: { public_endpoints_title: 'Veřejné koncové body klientů', public_endpoints_desc: 'Hostname a API URL pro klienty RustDesk. Používá se v konfiguraci klienta na dashboardu, QR kódech a deploy řetězcích.', public_endpoints_hint: 'Nastavte, když se hostname konzole liší od ID/relay/API (reverse proxy / rozdělené DNS). Prázdné = auto-detekce.', public_endpoints_server_id: 'Veřejný ID server', public_endpoints_server_id_placeholder: 'např. remote.example.com', public_endpoints_relay: 'Veřejný relay server', public_endpoints_relay_placeholder: 'např. remote.example.com (výchozí: ID server)', public_endpoints_api_url: 'Veřejná API URL', public_endpoints_api_url_placeholder: 'např. https://api.example.com', public_endpoints_api_url_hint: 'Plná URL pro přihlášení a API volání RustDesk klientů (výchozí port 21114).', public_endpoints_save: 'Uložit koncové body', public_endpoints_saved: 'Veřejné koncové body klientů uloženy', public_endpoints_invalid_host: 'Neplatný hostname ID nebo relay serveru', public_endpoints_invalid_api_url: 'Neplatná API URL — použijte http:// nebo https://', public_endpoints_save_title: 'Uložit veřejné koncové body klientů?', public_endpoints_save_confirm: 'Aktualizovat hodnoty konfigurace RustDesk klienta na dashboardu?', }, da: { public_endpoints_title: 'Offentlige klient-endpoints', public_endpoints_desc: 'Værtsnavn og API-URL som RustDesk-klienter bruger. Bruges til dashboard-konfiguration, QR-koder og deploy-strenge.', public_endpoints_hint: 'Angiv når konsolens værtsnavn adskiller sig fra ID/relay/API (reverse proxy / opdelt DNS). Tom = auto-detektion.', public_endpoints_server_id: 'Offentlig ID-server', public_endpoints_server_id_placeholder: 'f.eks. remote.example.com', public_endpoints_relay: 'Offentlig relay-server', public_endpoints_relay_placeholder: 'f.eks. remote.example.com (standard: ID-server)', public_endpoints_api_url: 'Offentlig API-URL', public_endpoints_api_url_placeholder: 'f.eks. https://api.example.com', public_endpoints_api_url_hint: 'Fuld URL til RustDesk-login og API-kald (standard port 21114).', public_endpoints_save: 'Gem endpoints', public_endpoints_saved: 'Offentlige klient-endpoints gemt', public_endpoints_invalid_host: 'Ugyldigt ID- eller relay-værtsnavn', public_endpoints_invalid_api_url: 'Ugyldig API-URL — brug http:// eller https://', public_endpoints_save_title: 'Gem offentlige klient-endpoints?', public_endpoints_save_confirm: 'Opdatere RustDesk-klientværdier på dashboardet?', }, de: { public_endpoints_title: 'Öffentliche Client-Endpunkte', public_endpoints_desc: 'Hostname und API-URL für RustDesk-Clients. Für Dashboard-Konfiguration, QR-Codes und Deploy-Strings.', public_endpoints_hint: 'Setzen, wenn Konsolen-Hostname von ID/Relay/API abweicht (Reverse Proxy / getrenntes DNS). Leer = Auto-Erkennung.', public_endpoints_server_id: 'Öffentlicher ID-Server', public_endpoints_server_id_placeholder: 'z. B. remote.example.com', public_endpoints_relay: 'Öffentlicher Relay-Server', public_endpoints_relay_placeholder: 'z. B. remote.example.com (Standard: ID-Server)', public_endpoints_api_url: 'Öffentliche API-URL', public_endpoints_api_url_placeholder: 'z. B. https://api.example.com', public_endpoints_api_url_hint: 'Vollständige URL für RustDesk-Login und API (Standardport 21114).', public_endpoints_save: 'Endpunkte speichern', public_endpoints_saved: 'Öffentliche Client-Endpunkte gespeichert', public_endpoints_invalid_host: 'Ungültiger ID- oder Relay-Hostname', public_endpoints_invalid_api_url: 'Ungültige API-URL — http:// oder https:// verwenden', public_endpoints_save_title: 'Öffentliche Client-Endpunkte speichern?', public_endpoints_save_confirm: 'RustDesk-Clientwerte auf dem Dashboard aktualisieren?', }, es: { public_endpoints_title: 'Endpoints públicos del cliente', public_endpoints_desc: 'Hostname y URL API que usan los clientes RustDesk. Para configuración del dashboard, códigos QR y cadenas de despliegue.', public_endpoints_hint: 'Configúrelos cuando el hostname de la consola difiera del ID/relay/API (proxy inverso / DNS separado). Vacío = autodetección.', public_endpoints_server_id: 'Servidor ID público', public_endpoints_server_id_placeholder: 'p. ej. remote.example.com', public_endpoints_relay: 'Servidor relay público', public_endpoints_relay_placeholder: 'p. ej. remote.example.com (predeterminado: ID)', public_endpoints_api_url: 'URL API pública', public_endpoints_api_url_placeholder: 'p. ej. https://api.example.com', public_endpoints_api_url_hint: 'URL completa para login y API de RustDesk (puerto 21114 por defecto).', public_endpoints_save: 'Guardar endpoints', public_endpoints_saved: 'Endpoints públicos del cliente guardados', public_endpoints_invalid_host: 'Hostname ID o relay no válido', public_endpoints_invalid_api_url: 'URL API no válida — use http:// o https://', public_endpoints_save_title: '¿Guardar endpoints públicos del cliente?', public_endpoints_save_confirm: '¿Actualizar valores de configuración RustDesk en el dashboard?', }, fi: { public_endpoints_title: 'Julkiset asiakaspäätepisteet', public_endpoints_desc: 'Isäntänimi ja API-URL, joita RustDesk-asiakkaat käyttävät. Dashboard-konfiguraatio, QR-koodit ja deploy-merkkijonot.', public_endpoints_hint: 'Aseta, kun konsolin isäntänimi poikkeaa ID/relay/API:sta (käänteinen välityspalvelin / erillinen DNS). Tyhjä = automaattinen.', public_endpoints_server_id: 'Julkinen ID-palvelin', public_endpoints_server_id_placeholder: 'esim. remote.example.com', public_endpoints_relay: 'Julkinen relay-palvelin', public_endpoints_relay_placeholder: 'esim. remote.example.com (oletus: ID-palvelin)', public_endpoints_api_url: 'Julkinen API-URL', public_endpoints_api_url_placeholder: 'esim. https://api.example.com', public_endpoints_api_url_hint: 'Täysi URL RustDesk-kirjautumiseen ja API-kutsuihin (oletusportti 21114).', public_endpoints_save: 'Tallenna päätepisteet', public_endpoints_saved: 'Julkiset asiakaspäätepisteet tallennettu', public_endpoints_invalid_host: 'Virheellinen ID- tai relay-isäntänimi', public_endpoints_invalid_api_url: 'Virheellinen API-URL — käytä http:// tai https://', public_endpoints_save_title: 'Tallenna julkiset asiakaspäätepisteet?', public_endpoints_save_confirm: 'Päivitä RustDesk-asiakasarvot dashboardilla?', }, fr: { public_endpoints_title: 'Points de terminaison clients publics', public_endpoints_desc: 'Nom d’hôte et URL API utilisés par les clients RustDesk. Configuration du tableau de bord, QR et chaînes de déploiement.', public_endpoints_hint: 'À définir quand l’hôte de la console diffère de l’ID/relai/API (proxy inverse / DNS séparé). Vide = détection auto.', public_endpoints_server_id: 'Serveur ID public', public_endpoints_server_id_placeholder: 'ex. remote.example.com', public_endpoints_relay: 'Serveur relais public', public_endpoints_relay_placeholder: 'ex. remote.example.com (par défaut : serveur ID)', public_endpoints_api_url: 'URL API publique', public_endpoints_api_url_placeholder: 'ex. https://api.example.com', public_endpoints_api_url_hint: 'URL complète pour connexion et API RustDesk (port 21114 par défaut).', public_endpoints_save: 'Enregistrer les points de terminaison', public_endpoints_saved: 'Points de terminaison clients publics enregistrés', public_endpoints_invalid_host: 'Nom d’hôte ID ou relais invalide', public_endpoints_invalid_api_url: 'URL API invalide — utilisez http:// ou https://', public_endpoints_save_title: 'Enregistrer les points de terminaison publics ?', public_endpoints_save_confirm: 'Mettre à jour la configuration client RustDesk du tableau de bord ?', }, hi: { public_endpoints_title: 'सार्वजनिक क्लाइंट एंडपॉइंट', public_endpoints_desc: 'RustDesk क्लाइंट द्वारा उपयोग किया जाने वाला होस्टनाम और API URL। डैशबोर्ड, QR और deploy स्ट्रिंग के लिए।', public_endpoints_hint: 'जब कंसोल होस्टनाम ID/relay/API से अलग हो (रिवर्स प्रॉक्सी)। खाली = ऑटो-डिटेक्ट।', public_endpoints_server_id: 'सार्वजनिक ID सर्वर', public_endpoints_server_id_placeholder: 'जैसे remote.example.com', public_endpoints_relay: 'सार्वजनिक relay सर्वर', public_endpoints_relay_placeholder: 'जैसे remote.example.com (डिफ़ॉल्ट: ID)', public_endpoints_api_url: 'सार्वजनिक API URL', public_endpoints_api_url_placeholder: 'जैसे https://api.example.com', public_endpoints_api_url_hint: 'RustDesk लॉगिन/API के लिए पूर्ण URL (डिफ़ॉल्ट पोर्ट 21114)।', public_endpoints_save: 'एंडपॉइंट सहेजें', public_endpoints_saved: 'सार्वजनिक क्लाइंट एंडपॉइंट सहेजे गए', public_endpoints_invalid_host: 'अमान्य ID या relay होस्टनाम', public_endpoints_invalid_api_url: 'अमान्य API URL — http:// या https://', public_endpoints_save_title: 'सार्वजनिक क्लाइंट एंडपॉइंट सहेजें?', public_endpoints_save_confirm: 'डैशबोर्ड RustDesk कॉन्फ़िग अपडेट करें?', }, hu: { public_endpoints_title: 'Nyilvános kliens végpontok', public_endpoints_desc: 'A RustDesk kliensek által használt hostname és API URL. Dashboard, QR és deploy stringekhez.', public_endpoints_hint: 'Állítsa be, ha a konzol hostname eltér az ID/relay/API-tól (reverse proxy / külön DNS). Üres = automatikus.', public_endpoints_server_id: 'Nyilvános ID szerver', public_endpoints_server_id_placeholder: 'pl. remote.example.com', public_endpoints_relay: 'Nyilvános relay szerver', public_endpoints_relay_placeholder: 'pl. remote.example.com (alapértelmezett: ID)', public_endpoints_api_url: 'Nyilvános API URL', public_endpoints_api_url_placeholder: 'pl. https://api.example.com', public_endpoints_api_url_hint: 'Teljes URL RustDesk bejelentkezéshez és API-hoz (alap port 21114).', public_endpoints_save: 'Végpontok mentése', public_endpoints_saved: 'Nyilvános kliens végpontok mentve', public_endpoints_invalid_host: 'Érvénytelen ID vagy relay hostname', public_endpoints_invalid_api_url: 'Érvénytelen API URL — http:// vagy https://', public_endpoints_save_title: 'Nyilvános kliens végpontok mentése?', public_endpoints_save_confirm: 'Frissíti a dashboard RustDesk beállításait?', }, id: { public_endpoints_title: 'Endpoint klien publik', public_endpoints_desc: 'Hostname dan URL API untuk klien RustDesk. Digunakan di konfigurasi dashboard, QR, dan deploy string.', public_endpoints_hint: 'Atur jika hostname konsol berbeda dari ID/relay/API (reverse proxy / DNS terpisah). Kosong = deteksi otomatis.', public_endpoints_server_id: 'Server ID publik', public_endpoints_server_id_placeholder: 'mis. remote.example.com', public_endpoints_relay: 'Server relay publik', public_endpoints_relay_placeholder: 'mis. remote.example.com (default: ID)', public_endpoints_api_url: 'URL API publik', public_endpoints_api_url_placeholder: 'mis. https://api.example.com', public_endpoints_api_url_hint: 'URL lengkap untuk login dan API RustDesk (port default 21114).', public_endpoints_save: 'Simpan endpoint', public_endpoints_saved: 'Endpoint klien publik disimpan', public_endpoints_invalid_host: 'Hostname ID atau relay tidak valid', public_endpoints_invalid_api_url: 'URL API tidak valid — gunakan http:// atau https://', public_endpoints_save_title: 'Simpan endpoint klien publik?', public_endpoints_save_confirm: 'Perbarui konfigurasi klien RustDesk di dashboard?', }, it: { public_endpoints_title: 'Endpoint client pubblici', public_endpoints_desc: 'Hostname e URL API usati dai client RustDesk. Configurazione dashboard, QR e stringhe deploy.', public_endpoints_hint: 'Imposta quando l’hostname della console differisce da ID/relay/API (reverse proxy / DNS separato). Vuoto = auto.', public_endpoints_server_id: 'Server ID pubblico', public_endpoints_server_id_placeholder: 'es. remote.example.com', public_endpoints_relay: 'Server relay pubblico', public_endpoints_relay_placeholder: 'es. remote.example.com (predefinito: ID)', public_endpoints_api_url: 'URL API pubblica', public_endpoints_api_url_placeholder: 'es. https://api.example.com', public_endpoints_api_url_hint: 'URL completa per login e API RustDesk (porta 21114 predefinita).', public_endpoints_save: 'Salva endpoint', public_endpoints_saved: 'Endpoint client pubblici salvati', public_endpoints_invalid_host: 'Hostname ID o relay non valido', public_endpoints_invalid_api_url: 'URL API non valida — usare http:// o https://', public_endpoints_save_title: 'Salvare gli endpoint client pubblici?', public_endpoints_save_confirm: 'Aggiornare la configurazione client RustDesk nel dashboard?', }, ja: { public_endpoints_title: '公開クライアントエンドポイント', public_endpoints_desc: 'RustDesk クライアントが使用するホスト名と API URL。ダッシュボード設定、QR、デプロイ文字列に使用。', public_endpoints_hint: 'コンソールのホスト名が ID/リレー/API と異なる場合に設定(リバースプロキシ / 分割 DNS)。空欄は自動検出。', public_endpoints_server_id: '公開 ID サーバー', public_endpoints_server_id_placeholder: '例 remote.example.com', public_endpoints_relay: '公開リレーサーバー', public_endpoints_relay_placeholder: '例 remote.example.com(既定: ID サーバー)', public_endpoints_api_url: '公開 API URL', public_endpoints_api_url_placeholder: '例 https://api.example.com', public_endpoints_api_url_hint: 'RustDesk ログイン/API 用の完全 URL(既定ポート 21114)。', public_endpoints_save: 'エンドポイントを保存', public_endpoints_saved: '公開クライアントエンドポイントを保存しました', public_endpoints_invalid_host: 'ID またはリレーのホスト名が無効です', public_endpoints_invalid_api_url: 'API URL が無効 — http:// または https:// を使用', public_endpoints_save_title: '公開クライアントエンドポイントを保存しますか?', public_endpoints_save_confirm: 'ダッシュボードの RustDesk 設定値を更新しますか?', }, ko: { public_endpoints_title: '공개 클라이언트 엔드포인트', public_endpoints_desc: 'RustDesk 클라이언트가 사용하는 호스트명과 API URL. 대시보드 설정, QR, 배포 문자열에 사용.', public_endpoints_hint: '콘솔 호스트명이 ID/relay/API와 다를 때 설정(리버스 프록시/분리 DNS). 비우면 자동 감지.', public_endpoints_server_id: '공개 ID 서버', public_endpoints_server_id_placeholder: '예: remote.example.com', public_endpoints_relay: '공개 relay 서버', public_endpoints_relay_placeholder: '예: remote.example.com(기본: ID 서버)', public_endpoints_api_url: '공개 API URL', public_endpoints_api_url_placeholder: '예: https://api.example.com', public_endpoints_api_url_hint: 'RustDesk 로그인/API용 전체 URL(기본 포트 21114).', public_endpoints_save: '엔드포인트 저장', public_endpoints_saved: '공개 클라이언트 엔드포인트 저장됨', public_endpoints_invalid_host: 'ID 또는 relay 호스트명이 잘못됨', public_endpoints_invalid_api_url: 'API URL이 잘못됨 — http:// 또는 https:// 사용', public_endpoints_save_title: '공개 클라이언트 엔드포인트를 저장할까요?', public_endpoints_save_confirm: '대시보드 RustDesk 설정 값을 업데이트할까요?', }, nb: { public_endpoints_title: 'Offentlige klient-endepunkter', public_endpoints_desc: 'Vertsnavn og API-URL RustDesk-klienter bruker. Dashboard-konfig, QR og deploy-strenger.', public_endpoints_hint: 'Sett når konsollvertsnavn skiller seg fra ID/relay/API (reverse proxy / delt DNS). Tom = auto.', public_endpoints_server_id: 'Offentlig ID-server', public_endpoints_server_id_placeholder: 'f.eks. remote.example.com', public_endpoints_relay: 'Offentlig relay-server', public_endpoints_relay_placeholder: 'f.eks. remote.example.com (standard: ID)', public_endpoints_api_url: 'Offentlig API-URL', public_endpoints_api_url_placeholder: 'f.eks. https://api.example.com', public_endpoints_api_url_hint: 'Full URL for RustDesk-innlogging og API (standard port 21114).', public_endpoints_save: 'Lagre endepunkter', public_endpoints_saved: 'Offentlige klient-endepunkter lagret', public_endpoints_invalid_host: 'Ugyldig ID- eller relay-vertsnavn', public_endpoints_invalid_api_url: 'Ugyldig API-URL — bruk http:// eller https://', public_endpoints_save_title: 'Lagre offentlige klient-endepunkter?', public_endpoints_save_confirm: 'Oppdatere RustDesk-klientverdier på dashboardet?', }, nl: { public_endpoints_title: 'Openbare client-eindpunten', public_endpoints_desc: 'Hostnaam en API-URL voor RustDesk-clients. Dashboard-config, QR-codes en deploy-strings.', public_endpoints_hint: 'Instellen wanneer console-hostnaam afwijkt van ID/relay/API (reverse proxy / gesplitst DNS). Leeg = auto.', public_endpoints_server_id: 'Openbare ID-server', public_endpoints_server_id_placeholder: 'bijv. remote.example.com', public_endpoints_relay: 'Openbare relay-server', public_endpoints_relay_placeholder: 'bijv. remote.example.com (standaard: ID)', public_endpoints_api_url: 'Openbare API-URL', public_endpoints_api_url_placeholder: 'bijv. https://api.example.com', public_endpoints_api_url_hint: 'Volledige URL voor RustDesk-login en API (standaard poort 21114).', public_endpoints_save: 'Eindpunten opslaan', public_endpoints_saved: 'Openbare client-eindpunten opgeslagen', public_endpoints_invalid_host: 'Ongeldige ID- of relay-hostnaam', public_endpoints_invalid_api_url: 'Ongeldige API-URL — gebruik http:// of https://', public_endpoints_save_title: 'Openbare client-eindpunten opslaan?', public_endpoints_save_confirm: 'RustDesk-clientwaarden op het dashboard bijwerken?', }, pl: { public_endpoints_title: 'Publiczne endpointy klienta', public_endpoints_desc: 'Hostname i URL API używane przez klientów RustDesk. Konfiguracja na pulpicie, kody QR i deploy string.', public_endpoints_hint: 'Ustaw, gdy hostname konsoli różni się od ID/relay/API (reverse proxy / osobne DNS). Puste = auto-wykrywanie.', public_endpoints_server_id: 'Publiczny serwer ID', public_endpoints_server_id_placeholder: 'np. remote.example.com', public_endpoints_relay: 'Publiczny serwer relay', public_endpoints_relay_placeholder: 'np. remote.example.com (domyślnie: serwer ID)', public_endpoints_api_url: 'Publiczny URL API', public_endpoints_api_url_placeholder: 'np. https://api.example.com', public_endpoints_api_url_hint: 'Pełny URL logowania i API RustDesk (domyślnie port 21114).', public_endpoints_save: 'Zapisz endpointy', public_endpoints_saved: 'Publiczne endpointy klienta zapisane', public_endpoints_invalid_host: 'Nieprawidłowy hostname ID lub relay', public_endpoints_invalid_api_url: 'Nieprawidłowy URL API — użyj http:// lub https://', public_endpoints_save_title: 'Zapisać publiczne endpointy klienta?', public_endpoints_save_confirm: 'Zaktualizować konfigurację klienta RustDesk na pulpicie?', }, pt: { public_endpoints_title: 'Endpoints públicos do cliente', public_endpoints_desc: 'Hostname e URL API usados pelos clientes RustDesk. Configuração do dashboard, QR e strings de deploy.', public_endpoints_hint: 'Defina quando o hostname da consola difere do ID/relay/API (proxy inverso / DNS separado). Vazio = auto.', public_endpoints_server_id: 'Servidor ID público', public_endpoints_server_id_placeholder: 'ex. remote.example.com', public_endpoints_relay: 'Servidor relay público', public_endpoints_relay_placeholder: 'ex. remote.example.com (predef.: ID)', public_endpoints_api_url: 'URL API pública', public_endpoints_api_url_placeholder: 'ex. https://api.example.com', public_endpoints_api_url_hint: 'URL completa para login e API RustDesk (porta 21114 por defeito).', public_endpoints_save: 'Guardar endpoints', public_endpoints_saved: 'Endpoints públicos do cliente guardados', public_endpoints_invalid_host: 'Hostname ID ou relay inválido', public_endpoints_invalid_api_url: 'URL API inválida — use http:// ou https://', public_endpoints_save_title: 'Guardar endpoints públicos do cliente?', public_endpoints_save_confirm: 'Atualizar configuração RustDesk no dashboard?', }, ro: { public_endpoints_title: 'Endpoint-uri publice client', public_endpoints_desc: 'Hostname și URL API folosite de clienții RustDesk. Configurare dashboard, QR și șiruri deploy.', public_endpoints_hint: 'Setați când hostname-ul consolei diferă de ID/relay/API (proxy invers / DNS separat). Gol = auto.', public_endpoints_server_id: 'Server ID public', public_endpoints_server_id_placeholder: 'ex. remote.example.com', public_endpoints_relay: 'Server relay public', public_endpoints_relay_placeholder: 'ex. remote.example.com (implicit: ID)', public_endpoints_api_url: 'URL API public', public_endpoints_api_url_placeholder: 'ex. https://api.example.com', public_endpoints_api_url_hint: 'URL complet pentru login și API RustDesk (port implicit 21114).', public_endpoints_save: 'Salvează endpoint-urile', public_endpoints_saved: 'Endpoint-uri publice client salvate', public_endpoints_invalid_host: 'Hostname ID sau relay invalid', public_endpoints_invalid_api_url: 'URL API invalid — folosiți http:// sau https://', public_endpoints_save_title: 'Salvați endpoint-urile publice client?', public_endpoints_save_confirm: 'Actualizați configurația client RustDesk pe dashboard?', }, sv: { public_endpoints_title: 'Offentliga klientändpunkter', public_endpoints_desc: 'Värdnamn och API-URL som RustDesk-klienter använder. Dashboard-konfig, QR och deploy-strängar.', public_endpoints_hint: 'Ange när konsolens värdnamn skiljer sig från ID/relay/API (reverse proxy / separat DNS). Tomt = auto.', public_endpoints_server_id: 'Offentlig ID-server', public_endpoints_server_id_placeholder: 't.ex. remote.example.com', public_endpoints_relay: 'Offentlig relay-server', public_endpoints_relay_placeholder: 't.ex. remote.example.com (standard: ID)', public_endpoints_api_url: 'Offentlig API-URL', public_endpoints_api_url_placeholder: 't.ex. https://api.example.com', public_endpoints_api_url_hint: 'Fullständig URL för RustDesk-inloggning och API (standardport 21114).', public_endpoints_save: 'Spara ändpunkter', public_endpoints_saved: 'Offentliga klientändpunkter sparade', public_endpoints_invalid_host: 'Ogiltigt ID- eller relay-värdnamn', public_endpoints_invalid_api_url: 'Ogiltig API-URL — använd http:// eller https://', public_endpoints_save_title: 'Spara offentliga klientändpunkter?', public_endpoints_save_confirm: 'Uppdatera RustDesk-klientvärden på dashboarden?', }, th: { public_endpoints_title: 'จุดปลายทางไคลเอนต์สาธารณะ', public_endpoints_desc: 'ชื่อโฮสต์และ URL API ที่ไคลเอนต์ RustDesk ใช้ สำหรับการตั้งค่าแดชบอร์ด QR และ deploy string', public_endpoints_hint: 'ตั้งเมื่อชื่อโฮสต์คอนโซลต่างจาก ID/relay/API (reverse proxy / DNS แยก) ว่าง = ตรวจจับอัตโนมัติ', public_endpoints_server_id: 'เซิร์ฟเวอร์ ID สาธารณะ', public_endpoints_server_id_placeholder: 'เช่น remote.example.com', public_endpoints_relay: 'เซิร์ฟเวอร์ relay สาธารณะ', public_endpoints_relay_placeholder: 'เช่น remote.example.com (ค่าเริ่มต้น: ID)', public_endpoints_api_url: 'URL API สาธารณะ', public_endpoints_api_url_placeholder: 'เช่น https://api.example.com', public_endpoints_api_url_hint: 'URL เต็มสำหรับล็อกอินและ API ของ RustDesk (พอร์ตเริ่มต้น 21114)', public_endpoints_save: 'บันทึกจุดปลายทาง', public_endpoints_saved: 'บันทึกจุดปลายทางไคลเอนต์สาธารณะแล้ว', public_endpoints_invalid_host: 'ชื่อโฮสต์ ID หรือ relay ไม่ถูกต้อง', public_endpoints_invalid_api_url: 'URL API ไม่ถูกต้อง — ใช้ http:// หรือ https://', public_endpoints_save_title: 'บันทึกจุดปลายทางไคลเอนต์สาธารณะ?', public_endpoints_save_confirm: 'อัปเดตค่าการตั้งค่า RustDesk บนแดชบอร์ด?', }, tr: { public_endpoints_title: 'Genel istemci uç noktaları', public_endpoints_desc: 'RustDesk istemcilerinin kullandığı hostname ve API URL. Dashboard yapılandırması, QR ve deploy dizeleri.', public_endpoints_hint: 'Konsol hostname ID/relay/API\'den farklıysa ayarlayın (ters vekil / ayrı DNS). Boş = otomatik.', public_endpoints_server_id: 'Genel ID sunucusu', public_endpoints_server_id_placeholder: 'örn. remote.example.com', public_endpoints_relay: 'Genel relay sunucusu', public_endpoints_relay_placeholder: 'örn. remote.example.com (varsayılan: ID)', public_endpoints_api_url: 'Genel API URL', public_endpoints_api_url_placeholder: 'örn. https://api.example.com', public_endpoints_api_url_hint: 'RustDesk giriş/API için tam URL (varsayılan port 21114).', public_endpoints_save: 'Uç noktaları kaydet', public_endpoints_saved: 'Genel istemci uç noktaları kaydedildi', public_endpoints_invalid_host: 'Geçersiz ID veya relay hostname', public_endpoints_invalid_api_url: 'Geçersiz API URL — http:// veya https:// kullanın', public_endpoints_save_title: 'Genel istemci uç noktaları kaydedilsin mi?', public_endpoints_save_confirm: 'Dashboard RustDesk yapılandırma değerleri güncellensin mi?', }, uk: { public_endpoints_title: 'Публічні кінцеві точки клієнта', public_endpoints_desc: 'Ім’я хоста та URL API для клієнтів RustDesk. Конфігурація панелі, QR і deploy-рядки.', public_endpoints_hint: 'Встановіть, якщо хост консолі відрізняється від ID/relay/API (reverse proxy / окремий DNS). Порожньо = авто.', public_endpoints_server_id: 'Публічний ID-сервер', public_endpoints_server_id_placeholder: 'напр. remote.example.com', public_endpoints_relay: 'Публічний relay-сервер', public_endpoints_relay_placeholder: 'напр. remote.example.com (за замовч.: ID)', public_endpoints_api_url: 'Публічний URL API', public_endpoints_api_url_placeholder: 'напр. https://api.example.com', public_endpoints_api_url_hint: 'Повний URL для входу та API RustDesk (порт за замовч. 21114).', public_endpoints_save: 'Зберегти кінцеві точки', public_endpoints_saved: 'Публічні кінцеві точки клієнта збережено', public_endpoints_invalid_host: 'Недійсне ім’я хоста ID або relay', public_endpoints_invalid_api_url: 'Недійсний URL API — використовуйте http:// або https://', public_endpoints_save_title: 'Зберегти публічні кінцеві точки клієнта?', public_endpoints_save_confirm: 'Оновити конфігурацію RustDesk на панелі?', }, vi: { public_endpoints_title: 'Điểm cuối client công khai', public_endpoints_desc: 'Hostname và URL API mà client RustDesk dùng. Cấu hình dashboard, QR và chuỗi deploy.', public_endpoints_hint: 'Đặt khi hostname console khác ID/relay/API (reverse proxy / DNS tách). Trống = tự động.', public_endpoints_server_id: 'Máy chủ ID công khai', public_endpoints_server_id_placeholder: 'vd. remote.example.com', public_endpoints_relay: 'Máy chủ relay công khai', public_endpoints_relay_placeholder: 'vd. remote.example.com (mặc định: ID)', public_endpoints_api_url: 'URL API công khai', public_endpoints_api_url_placeholder: 'vd. https://api.example.com', public_endpoints_api_url_hint: 'URL đầy đủ cho đăng nhập và API RustDesk (cổng mặc định 21114).', public_endpoints_save: 'Lưu điểm cuối', public_endpoints_saved: 'Đã lưu điểm cuối client công khai', public_endpoints_invalid_host: 'Hostname ID hoặc relay không hợp lệ', public_endpoints_invalid_api_url: 'URL API không hợp lệ — dùng http:// hoặc https://', public_endpoints_save_title: 'Lưu điểm cuối client công khai?', public_endpoints_save_confirm: 'Cập nhật cấu hình client RustDesk trên dashboard?', }, zh: { public_endpoints_title: '公共客户端端点', public_endpoints_desc: 'RustDesk 客户端使用的 hostname 和 API URL。用于仪表板配置、二维码和部署字符串。', public_endpoints_hint: '当控制台 hostname 与 ID/中继/API 不同时设置(反向代理/分离 DNS)。留空则自动检测。', public_endpoints_server_id: '公共 ID 服务器', public_endpoints_server_id_placeholder: '例如 remote.example.com', public_endpoints_relay: '公共中继服务器', public_endpoints_relay_placeholder: '例如 remote.example.com(默认:ID 服务器)', public_endpoints_api_url: '公共 API URL', public_endpoints_api_url_placeholder: '例如 https://api.example.com', public_endpoints_api_url_hint: 'RustDesk 登录/API 的完整 URL(默认端口 21114)。', public_endpoints_save: '保存端点', public_endpoints_saved: '已保存公共客户端端点', public_endpoints_invalid_host: 'ID 或中继服务器 hostname 无效', public_endpoints_invalid_api_url: 'API URL 无效 — 请使用 http:// 或 https://', public_endpoints_save_title: '保存公共客户端端点?', public_endpoints_save_confirm: '更新仪表板上的 RustDesk 客户端配置值?', }, 'zh-TW': { public_endpoints_title: '公共用戶端端點', public_endpoints_desc: 'RustDesk 用戶端使用的 hostname 與 API URL。用於儀表板設定、QR 與部署字串。', public_endpoints_hint: '當控制台 hostname 與 ID/中繼/API 不同時設定(反向代理/分離 DNS)。留空則自動偵測。', public_endpoints_server_id: '公共 ID 伺服器', public_endpoints_server_id_placeholder: '例如 remote.example.com', public_endpoints_relay: '公共中繼伺服器', public_endpoints_relay_placeholder: '例如 remote.example.com(預設:ID 伺服器)', public_endpoints_api_url: '公共 API URL', public_endpoints_api_url_placeholder: '例如 https://api.example.com', public_endpoints_api_url_hint: 'RustDesk 登入/API 的完整 URL(預設連接埠 21114)。', public_endpoints_save: '儲存端點', public_endpoints_saved: '已儲存公共用戶端端點', public_endpoints_invalid_host: 'ID 或中繼伺服器 hostname 無效', public_endpoints_invalid_api_url: 'API URL 無效 — 請使用 http:// 或 https://', public_endpoints_save_title: '儲存公共用戶端端點?', public_endpoints_save_confirm: '更新儀表板上的 RustDesk 用戶端設定值?', }, }; for (const file of locales) { const locale = file.replace('.json', ''); const filePath = path.join(langDir, file); const data = JSON.parse(fs.readFileSync(filePath, 'utf8')); if (locale !== 'en') { const dashPatch = dashboardPatches[locale]; if (dashPatch && data.dashboard) { Object.assign(data.dashboard, dashPatch); } const settingsPatch = settingsPatches[locale]; if (settingsPatch && data.settings) { Object.assign(data.settings, settingsPatch); } } fs.writeFileSync(filePath, `${JSON.stringify(data, null, 2)}\n`, 'utf8'); console.log('patched', file); }