diff --git a/CHANGELOG.md b/CHANGELOG.md index f72a3ec9..3c7475eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,33 @@ ## [Unreleased] +Production release **3.3.0** (stable `main`, after merge from `dev`). Ships via **Settings → Updates** on the **Stable** channel, or `betterdesk.sh` / `betterdesk.ps1` option 2 / `docker compose pull` for GHCR. Panel update creates a pre-update backup by default. No database migration or manual SQL step is required. + +### Added + +- **Organization shared address book (#190)** — admins maintain a shared contact list per organization (Organizations → Address Book). Entries merge into each member's RustDesk address book on `GET /api/ab` when sharing is enabled; personal entries stay private. +- **Organizations → Device Groups tab** — readout of device groups and user groups linked to the organization (`team_id`), with shortcuts to Devices → Groups and one-click org-scoped group creation. +- **Docker MACVLAN quick-start (#186)** — `docker-compose.quick.macvlan.yml` plus upgrade notes in [DOCKER_QUICKSTART.md](docs/docker/DOCKER_QUICKSTART.md). Uses `service_started` (not `service_healthy`) and `127.0.0.1` API/WS env when the console uses `network_mode: service:server`. +- **`betterdesk-show-admin-credentials` helper (#195)** — re-execs as `betterdesk` to read `.admin_credentials` on hardened images (`cap_drop: ALL`). Bundled in all Docker images; documented in README, install.sh, and Docker troubleshooting. + +### Fixed + +- **Stale update warning banner (#192)** — Settings → Updates no longer keeps showing stale `EACCES` errors after a successful external update (`betterdesk.sh`, `betterdesk.ps1`, `betterdesk-docker.sh`, or GHCR `docker compose pull`). Non-critical root-owned file failures are filtered; the banner clears when the installed SHA matches the target. Native install/update now copies `VERSION` into the console directory (Settings reads semver from `VERSION` or `package.json`). +- **CodeQL / security hardening** — OIDC discovery blocks private/link-local DNS; branding SVG/CSS multi-pass sanitization; same-origin restrictions on desktop iframe routes and `Utils.api()`; confined filesystem helpers; upload rate limits; type-safe device file API parsing. CodeQL config documents intentional exclusions. +- **Go server product version in Docker builds** — `BETTERDESK_PRODUCT_VERSION` build arg embeds semver in the Go binary (Settings → Server Information matches panel version after image update). + ### Changed -- _(none yet)_ + +- Alpha desktop clients (`betterdesk-mgmt`, `betterdesk-agent-client`) temporarily untracked from git to reduce Dependabot / CI noise. +- Version bump automation uses `scripts/bump-version.js --list-paths` (includes Go server VERSION files and MACVLAN compose). + +### Upgrade notes (operators) + +| Topic | Action | +|-------|--------| +| **Native / panel update** | Settings → Updates → Stable → Check for updates → Install. Allow Go server rebuild/restart when prompted. | +| **Docker** | `docker compose pull && docker compose up -d` after release; use `betterdesk-show-admin-credentials` instead of `cat` as root. | +| **MACVLAN (#186)** | Switch to `docker-compose.quick.macvlan.yml` or set `depends_on: service_started`, `DB_PATH=/app/data/db_v2.sqlite3`, `127.0.0.1` for API/WS. | +| **Stale update banner (#192)** | Update to 3.3.0+ or once: `rm -f /data/.last_update_result.json` and restart console. | --- diff --git a/betterdesk.ps1 b/betterdesk.ps1 index eab686e9..f0667b12 100644 --- a/betterdesk.ps1 +++ b/betterdesk.ps1 @@ -1393,6 +1393,10 @@ function Install-NodeJsConsole { if (Test-Path $envExampleSrc) { Copy-Item -Path $envExampleSrc -Destination (Join-Path $script:CONSOLE_PATH ".env.example") -Force } + $versionSrc = Join-Path $script:ScriptDir "VERSION" + if (Test-Path $versionSrc) { + Copy-Item -Path $versionSrc -Destination (Join-Path $script:CONSOLE_PATH "VERSION") -Force -ErrorAction SilentlyContinue + } # Install npm dependencies Print-Step "Installing npm dependencies..." @@ -3283,6 +3287,7 @@ function Update-FromGitHub { # ---- Step 6: Update VERSION file ---- if ($remoteVersion -and (Test-Path (Join-Path $cloneDir "VERSION"))) { Copy-Item -Path (Join-Path $cloneDir "VERSION") -Destination (Join-Path $script:ScriptDir "VERSION") -Force -ErrorAction SilentlyContinue + Copy-Item -Path (Join-Path $cloneDir "VERSION") -Destination (Join-Path $script:CONSOLE_PATH "VERSION") -Force -ErrorAction SilentlyContinue } # Cleanup diff --git a/betterdesk.sh b/betterdesk.sh index d2cb264a..9a62fe99 100755 --- a/betterdesk.sh +++ b/betterdesk.sh @@ -1888,6 +1888,9 @@ install_nodejs_console() { if [ -f "$source_folder/.env.example" ]; then cp -a "$source_folder/.env.example" "$CONSOLE_PATH/.env.example" fi + if [ -f "$SCRIPT_DIR/VERSION" ]; then + cp -a "$SCRIPT_DIR/VERSION" "$CONSOLE_PATH/VERSION" 2>/dev/null || true + fi # Install npm dependencies print_step "Installing npm dependencies..." @@ -3397,6 +3400,8 @@ update_from_github() { # ---- Step 6: Update VERSION file in project root ---- if [ -f "$clone_dir/VERSION" ] && [ -n "$remote_version" ]; then cp "$clone_dir/VERSION" "$SCRIPT_DIR/VERSION" 2>/dev/null || true + cp "$clone_dir/VERSION" "$CONSOLE_PATH/VERSION" 2>/dev/null || true + fi fi # Cleanup diff --git a/docker-compose.quick.macvlan.yml b/docker-compose.quick.macvlan.yml index 7506bbc2..774de32b 100644 --- a/docker-compose.quick.macvlan.yml +++ b/docker-compose.quick.macvlan.yml @@ -28,8 +28,8 @@ # (issue #186): use service_started (not service_healthy), pin image tags, and # set DB_PATH=/app/data/db_v2.sqlite3 plus AUTH_DB_PATH on the server. # -# Image tag (aligned with CHANGELOG / git tag v3.2.15): -# Default: 3.2.15 | Rolling: BETTERDESK_IMAGE_TAG=latest +# Image tag (aligned with CHANGELOG / git tag): +# Default: 3.2.17 | Rolling: BETTERDESK_IMAGE_TAG=latest # ============================================================================= services: diff --git a/web-nodejs/lang/ar.json b/web-nodejs/lang/ar.json index 6490ec48..2c417a16 100644 --- a/web-nodejs/lang/ar.json +++ b/web-nodejs/lang/ar.json @@ -2354,25 +2354,25 @@ "link_user_hint": "سيتم ربط المستخدم المحدد بهذه المؤسسة باستخدام بيانات اعتماد حساب الخادم الخاص به.", "no_available_users": "جميع مستخدمي الخادم مرتبطون بالفعل بهذه المؤسسة.", "user_linked": "المستخدم مرتبط بالمنظمة", - "device_groups_tab": "Device Groups", - "device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.", - "manage_in_devices": "Open Devices → Groups", - "no_org_device_groups": "No device groups are linked to this organization yet.", - "create_org_device_group": "Create device group", - "org_device_group_created": "Device group created", - "org_user_groups_title": "User groups", - "org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).", - "no_org_user_groups": "No user groups linked to this organization.", + "device_groups_tab": "مجموعات الأجهزة", + "device_groups_intro": "تحدد مجموعات الأجهزة المرتبطة بهذه المنظمة الأجهزة التي يمكن للأعضاء الوصول إليها في عميل RustDesk. اضبط العضوية والوصول من صفحة الأجهزة.", + "manage_in_devices": "فتح الأجهزة → المجموعات", + "no_org_device_groups": "لا توجد مجموعات أجهزة مرتبطة بهذه المنظمة بعد.", + "create_org_device_group": "إنشاء مجموعة أجهزة", + "org_device_group_created": "تم إنشاء مجموعة الأجهزة", + "org_user_groups_title": "مجموعات المستخدمين", + "org_user_groups_intro": "يمكن منح مجموعات المستخدمين المرتبطة بهذه المنظمة وصولاً إلى مجموعات الأجهزة أعلاه (الأجهزة → المجموعات → مجموعات المستخدمين المسموح بها).", + "no_org_user_groups": "لا توجد مجموعات مستخدمين مرتبطة بهذه المنظمة.", "group_name": "Name", "group_type": "Type", - "group_members": "Devices", + "group_members": "الأجهزة", "group_type_manual": "Manual", "group_type_tag": "Tag", - "group_allowed_user_groups": "Allowed user groups", - "group_devices_suffix": "devices", - "group_name_required": "Group name is required", - "org_team_id": "Organization team ID", - "link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)." + "group_allowed_user_groups": "مجموعات المستخدمين المسموح بها", + "group_devices_suffix": "أجهزة", + "group_name_required": "اسم المجموعة مطلوب", + "org_team_id": "معرّف فريق المنظمة", + "link_team_id_hint": "ستُربط المجموعة تلقائياً بهذه المنظمة (معرّف الفريق = معرّف المنظمة)." }, "chat": { "e2e_enabled": "مشفرة من طرف إلى طرف", diff --git a/web-nodejs/lang/cs.json b/web-nodejs/lang/cs.json index f742b389..8f29b0e0 100644 --- a/web-nodejs/lang/cs.json +++ b/web-nodejs/lang/cs.json @@ -576,7 +576,7 @@ "enrollment_tag_picker_hint": "Umozliwia wybor tagow z listy uzywanej na stronie Urzadzenia zamiast samego wpisywania.", "enrollment_open_requests": "Otworz zadania rejestracji", "enrollment_pending_count": "{count} oczekujacych zadan rejestracji", - "go_server_version": "Go server", + "go_server_version": "Server Go", "go_server_version_dev_hint": "Binární Go server hlásí vývojovou sestavu — přestavte nebo aktualizujte server, aby odpovídal verzi produktu" }, "audit": { @@ -2347,25 +2347,25 @@ "link_user_hint": "Vybraný uživatel bude propojen s touto organizací pomocí svých přihlašovacích údajů k serveru.", "no_available_users": "Všichni uživatelé serveru jsou již s touto organizací propojeni.", "user_linked": "Uživatel propojen s organizací", - "device_groups_tab": "Device Groups", - "device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.", - "manage_in_devices": "Open Devices → Groups", - "no_org_device_groups": "No device groups are linked to this organization yet.", - "create_org_device_group": "Create device group", - "org_device_group_created": "Device group created", - "org_user_groups_title": "User groups", - "org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).", - "no_org_user_groups": "No user groups linked to this organization.", + "device_groups_tab": "Skupiny zařízení", + "device_groups_intro": "Skupiny zařízení propojené s touto organizací určují, ke kterým strojům mají členové přístup v klientu RustDesk. Členství a přístup nastavíte na stránce Zařízení.", + "manage_in_devices": "Otevřít Zařízení → Skupiny", + "no_org_device_groups": "S touto organizací zatím nejsou propojeny žádné skupiny zařízení.", + "create_org_device_group": "Vytvořit skupinu zařízení", + "org_device_group_created": "Skupina zařízení vytvořena", + "org_user_groups_title": "Skupiny uživatelů", + "org_user_groups_intro": "Skupinám uživatelů propojeným s organizací lze udělit přístup ke skupinám zařízení výše (Zařízení → Skupiny → Povolené skupiny uživatelů).", + "no_org_user_groups": "S touto organizací nejsou propojeny žádné skupiny uživatelů.", "group_name": "Name", "group_type": "Type", - "group_members": "Devices", + "group_members": "Zařízení", "group_type_manual": "Manual", "group_type_tag": "Tag", - "group_allowed_user_groups": "Allowed user groups", - "group_devices_suffix": "devices", - "group_name_required": "Group name is required", - "org_team_id": "Organization team ID", - "link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)." + "group_allowed_user_groups": "Povolené skupiny uživatelů", + "group_devices_suffix": "zařízení", + "group_name_required": "Název skupiny je povinný", + "org_team_id": "ID týmu organizace", + "link_team_id_hint": "Skupina bude automaticky propojena s touto organizací (team ID = ID organizace)." }, "chat": { "e2e_enabled": "Koncové šifrování aktivní", diff --git a/web-nodejs/lang/da.json b/web-nodejs/lang/da.json index 7f96484d..cf2f22c6 100644 --- a/web-nodejs/lang/da.json +++ b/web-nodejs/lang/da.json @@ -2353,25 +2353,25 @@ "link_user_hint": "Den valgte bruger vil blive knyttet til denne organisation ved hjælp af deres serverkontooplysninger.", "no_available_users": "Alle serverbrugere er allerede knyttet til denne organisation.", "user_linked": "Bruger knyttet til organisation", - "device_groups_tab": "Device Groups", - "device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.", - "manage_in_devices": "Open Devices → Groups", - "no_org_device_groups": "No device groups are linked to this organization yet.", - "create_org_device_group": "Create device group", - "org_device_group_created": "Device group created", - "org_user_groups_title": "User groups", - "org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).", - "no_org_user_groups": "No user groups linked to this organization.", + "device_groups_tab": "Enhedsgrupper", + "device_groups_intro": "Enhedsgrupper knyttet til denne organisation definerer, hvilke maskiner medlemmer kan nå i RustDesk-klienten. Konfigurer medlemskab og adgang på siden Enheder.", + "manage_in_devices": "Åbn Enheder → Grupper", + "no_org_device_groups": "Ingen enhedsgrupper er knyttet til denne organisation endnu.", + "create_org_device_group": "Opret enhedsgruppe", + "org_device_group_created": "Enhedsgruppe oprettet", + "org_user_groups_title": "Brugergrupper", + "org_user_groups_intro": "Brugergrupper knyttet til organisationen kan få adgang til enhedsgrupperne ovenfor (Enheder → Grupper → Tilladte brugergrupper).", + "no_org_user_groups": "Ingen brugergrupper knyttet til denne organisation.", "group_name": "Name", "group_type": "Type", - "group_members": "Devices", + "group_members": "Enheder", "group_type_manual": "Manual", "group_type_tag": "Tag", - "group_allowed_user_groups": "Allowed user groups", - "group_devices_suffix": "devices", - "group_name_required": "Group name is required", - "org_team_id": "Organization team ID", - "link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)." + "group_allowed_user_groups": "Tilladte brugergrupper", + "group_devices_suffix": "enheder", + "group_name_required": "Gruppenavn er påkrævet", + "org_team_id": "Organisationens team-ID", + "link_team_id_hint": "Gruppen knyttes automatisk til denne organisation (team-ID = organisations-ID)." }, "chat": { "e2e_enabled": "End-to-end krypteret", diff --git a/web-nodejs/lang/es.json b/web-nodejs/lang/es.json index 1d5c70ff..83b8081c 100644 --- a/web-nodejs/lang/es.json +++ b/web-nodejs/lang/es.json @@ -2347,25 +2347,25 @@ "link_user_hint": "Vincula un usuario existente con esta organización.", "no_available_users": "No hay usuarios disponibles", "user_linked": "Usuario vinculado", - "device_groups_tab": "Device Groups", - "device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.", - "manage_in_devices": "Open Devices → Groups", - "no_org_device_groups": "No device groups are linked to this organization yet.", - "create_org_device_group": "Create device group", - "org_device_group_created": "Device group created", - "org_user_groups_title": "User groups", - "org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).", - "no_org_user_groups": "No user groups linked to this organization.", + "device_groups_tab": "Grupos de dispositivos", + "device_groups_intro": "Los grupos de dispositivos vinculados a esta organización definen a qué máquinas pueden acceder los miembros en el cliente RustDesk. Configure membresía y acceso en la página Dispositivos.", + "manage_in_devices": "Abrir Dispositivos → Grupos", + "no_org_device_groups": "Aún no hay grupos de dispositivos vinculados a esta organización.", + "create_org_device_group": "Crear grupo de dispositivos", + "org_device_group_created": "Grupo de dispositivos creado", + "org_user_groups_title": "Grupos de usuarios", + "org_user_groups_intro": "Los grupos de usuarios vinculados a la organización pueden obtener acceso a los grupos de dispositivos anteriores (Dispositivos → Grupos → Grupos de usuarios permitidos).", + "no_org_user_groups": "No hay grupos de usuarios vinculados a esta organización.", "group_name": "Name", "group_type": "Type", - "group_members": "Devices", + "group_members": "Dispositivos", "group_type_manual": "Manual", "group_type_tag": "Tag", - "group_allowed_user_groups": "Allowed user groups", - "group_devices_suffix": "devices", - "group_name_required": "Group name is required", - "org_team_id": "Organization team ID", - "link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)." + "group_allowed_user_groups": "Grupos de usuarios permitidos", + "group_devices_suffix": "dispositivos", + "group_name_required": "El nombre del grupo es obligatorio", + "org_team_id": "ID de equipo de la organización", + "link_team_id_hint": "El grupo se vinculará automáticamente a esta organización (team ID = ID de organización)." }, "chat": { "e2e_enabled": "Cifrado de extremo a extremo", diff --git a/web-nodejs/lang/fi.json b/web-nodejs/lang/fi.json index cf7722a4..9e5b0217 100644 --- a/web-nodejs/lang/fi.json +++ b/web-nodejs/lang/fi.json @@ -2353,25 +2353,25 @@ "link_user_hint": "Valittu käyttäjä linkitetään tähän organisaatioon hänen palvelintilinsä tunnistetiedoilla.", "no_available_users": "Kaikki palvelimen käyttäjät on jo linkitetty tähän organisaatioon.", "user_linked": "Käyttäjä linkitetty organisaatioon", - "device_groups_tab": "Device Groups", - "device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.", - "manage_in_devices": "Open Devices → Groups", - "no_org_device_groups": "No device groups are linked to this organization yet.", - "create_org_device_group": "Create device group", - "org_device_group_created": "Device group created", - "org_user_groups_title": "User groups", - "org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).", - "no_org_user_groups": "No user groups linked to this organization.", + "device_groups_tab": "Laiteryhmät", + "device_groups_intro": "Tähän organisaatioon linkitetyt laiteryhmät määrittävät, mihin koneisiin jäsenet pääsevät RustDesk-asiakkaassa. Jäsenyyden ja käyttöoikeudet määrität Laitteet-sivulla.", + "manage_in_devices": "Avaa Laitteet → Ryhmät", + "no_org_device_groups": "Tähän organisaatioon ei ole vielä linkitetty laiteryhmiä.", + "create_org_device_group": "Luo laiteryhmä", + "org_device_group_created": "Laiteryhmä luotu", + "org_user_groups_title": "Käyttäjäryhmät", + "org_user_groups_intro": "Organisaatioon linkitetyille käyttäjäryhmille voidaan myöntää pääsy yllä oleviin laiteryhmiin (Laitteet → Ryhmät → Sallitut käyttäjäryhmät).", + "no_org_user_groups": "Organisaatioon ei ole linkitetty käyttäjäryhmiä.", "group_name": "Name", "group_type": "Type", - "group_members": "Devices", + "group_members": "Laitteet", "group_type_manual": "Manual", "group_type_tag": "Tag", - "group_allowed_user_groups": "Allowed user groups", - "group_devices_suffix": "devices", - "group_name_required": "Group name is required", - "org_team_id": "Organization team ID", - "link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)." + "group_allowed_user_groups": "Sallitut käyttäjäryhmät", + "group_devices_suffix": "laitteet", + "group_name_required": "Ryhmän nimi on pakollinen", + "org_team_id": "Organisaation tiimitunnus", + "link_team_id_hint": "Ryhmä linkitetään automaattisesti tähän organisaatioon (tiimitunnus = organisaation tunnus)." }, "chat": { "e2e_enabled": "Päästä päähän salattu", diff --git a/web-nodejs/lang/hi.json b/web-nodejs/lang/hi.json index 59d252cb..d44d8514 100644 --- a/web-nodejs/lang/hi.json +++ b/web-nodejs/lang/hi.json @@ -2353,25 +2353,25 @@ "link_user_hint": "चयनित उपयोगकर्ता को उनके सर्वर खाता क्रेडेंशियल का उपयोग करके इस संगठन से जोड़ा जाएगा।", "no_available_users": "सभी सर्वर उपयोगकर्ता पहले से ही इस संगठन से जुड़े हुए हैं।", "user_linked": "उपयोगकर्ता संगठन से जुड़ा हुआ है", - "device_groups_tab": "Device Groups", - "device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.", - "manage_in_devices": "Open Devices → Groups", - "no_org_device_groups": "No device groups are linked to this organization yet.", - "create_org_device_group": "Create device group", - "org_device_group_created": "Device group created", - "org_user_groups_title": "User groups", - "org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).", - "no_org_user_groups": "No user groups linked to this organization.", + "device_groups_tab": "डिवाइस समूह", + "device_groups_intro": "इस संगठन से जुड़े डिवाइस समूह निर्धारित करते हैं कि सदस्य RustDesk क्लाइंट में किन मशीनों तक पहुँच सकते हैं। सदस्यता और पहुँच डिवाइस पृष्ठ पर सेट करें।", + "manage_in_devices": "डिवाइस → समूह खोलें", + "no_org_device_groups": "इस संगठन से अभी तक कोई डिवाइस समूह जुड़ा नहीं है।", + "create_org_device_group": "डिवाइस समूह बनाएँ", + "org_device_group_created": "डिवाइस समूह बनाया गया", + "org_user_groups_title": "उपयोगकर्ता समूह", + "org_user_groups_intro": "संगठन से जुड़े उपयोगकर्ता समूहों को ऊपर के डिवाइस समूहों तक पहुँच दी जा सकती है (डिवाइस → समूह → अनुमत उपयोगकर्ता समूह)।", + "no_org_user_groups": "इस संगठन से कोई उपयोगकर्ता समूह जुड़ा नहीं है।", "group_name": "Name", "group_type": "Type", - "group_members": "Devices", + "group_members": "डिवाइस", "group_type_manual": "Manual", "group_type_tag": "Tag", - "group_allowed_user_groups": "Allowed user groups", - "group_devices_suffix": "devices", - "group_name_required": "Group name is required", - "org_team_id": "Organization team ID", - "link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)." + "group_allowed_user_groups": "अनुमत उपयोगकर्ता समूह", + "group_devices_suffix": "डिवाइस", + "group_name_required": "समूह का नाम आवश्यक है", + "org_team_id": "संगठन टीम ID", + "link_team_id_hint": "समूह स्वचालित रूप से इस संगठन से जुड़ जाएगा (टीम ID = संगठन ID)।" }, "chat": { "e2e_enabled": "एंड-टू-एंड एन्क्रिप्टेड", diff --git a/web-nodejs/lang/hu.json b/web-nodejs/lang/hu.json index abdce3e8..99d9669e 100644 --- a/web-nodejs/lang/hu.json +++ b/web-nodejs/lang/hu.json @@ -2353,25 +2353,25 @@ "link_user_hint": "A kiválasztott felhasználó a szerverfiók hitelesítő adataival lesz összekapcsolva ezzel a szervezettel.", "no_available_users": "Az összes szerverfelhasználó már kapcsolódik ehhez a szervezethez.", "user_linked": "Felhasználó a szervezethez kapcsolva", - "device_groups_tab": "Device Groups", - "device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.", - "manage_in_devices": "Open Devices → Groups", - "no_org_device_groups": "No device groups are linked to this organization yet.", - "create_org_device_group": "Create device group", - "org_device_group_created": "Device group created", - "org_user_groups_title": "User groups", - "org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).", - "no_org_user_groups": "No user groups linked to this organization.", + "device_groups_tab": "Eszközcsoportok", + "device_groups_intro": "A szervezethez kapcsolt eszközcsoportok határozzák meg, mely gépekhez férhetnek hozzá a tagok a RustDesk kliensben. Tagságot és hozzáférést az Eszközök oldalon állíthat be.", + "manage_in_devices": "Eszközök → Csoportok megnyitása", + "no_org_device_groups": "Ehhez a szervezethez még nincs eszközcsoport kapcsolva.", + "create_org_device_group": "Eszközcsoport létrehozása", + "org_device_group_created": "Eszközcsoport létrehozva", + "org_user_groups_title": "Felhasználói csoportok", + "org_user_groups_intro": "A szervezethez kapcsolt felhasználói csoportok hozzáférést kaphatnak a fenti eszközcsoportokhoz (Eszközök → Csoportok → Engedélyezett felhasználói csoportok).", + "no_org_user_groups": "Nincs felhasználói csoport kapcsolva ehhez a szervezethez.", "group_name": "Name", "group_type": "Type", - "group_members": "Devices", + "group_members": "Eszközök", "group_type_manual": "Manual", "group_type_tag": "Tag", - "group_allowed_user_groups": "Allowed user groups", - "group_devices_suffix": "devices", - "group_name_required": "Group name is required", - "org_team_id": "Organization team ID", - "link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)." + "group_allowed_user_groups": "Engedélyezett felhasználói csoportok", + "group_devices_suffix": "eszköz", + "group_name_required": "A csoport neve kötelező", + "org_team_id": "Szervezet csapatazonosítója", + "link_team_id_hint": "A csoport automatikusan ehhez a szervezethez lesz kapcsolva (csapat ID = szervezet ID)." }, "chat": { "e2e_enabled": "Végponttól végpontig titkosítva", diff --git a/web-nodejs/lang/id.json b/web-nodejs/lang/id.json index d9113c8e..bfc08b83 100644 --- a/web-nodejs/lang/id.json +++ b/web-nodejs/lang/id.json @@ -2353,25 +2353,25 @@ "link_user_hint": "Pengguna yang dipilih akan ditautkan ke organisasi ini menggunakan kredensial akun server mereka.", "no_available_users": "Semua pengguna server sudah tertaut ke organisasi ini.", "user_linked": "Pengguna tertaut ke organisasi", - "device_groups_tab": "Device Groups", - "device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.", - "manage_in_devices": "Open Devices → Groups", - "no_org_device_groups": "No device groups are linked to this organization yet.", - "create_org_device_group": "Create device group", - "org_device_group_created": "Device group created", - "org_user_groups_title": "User groups", - "org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).", - "no_org_user_groups": "No user groups linked to this organization.", + "device_groups_tab": "Grup perangkat", + "device_groups_intro": "Grup perangkat yang ditautkan ke organisasi ini menentukan mesin mana yang dapat diakses anggota di klien RustDesk. Atur keanggotaan dan akses di halaman Perangkat.", + "manage_in_devices": "Buka Perangkat → Grup", + "no_org_device_groups": "Belum ada grup perangkat yang ditautkan ke organisasi ini.", + "create_org_device_group": "Buat grup perangkat", + "org_device_group_created": "Grup perangkat dibuat", + "org_user_groups_title": "Grup pengguna", + "org_user_groups_intro": "Grup pengguna yang ditautkan ke organisasi dapat diberi akses ke grup perangkat di atas (Perangkat → Grup → Grup pengguna yang diizinkan).", + "no_org_user_groups": "Tidak ada grup pengguna yang ditautkan ke organisasi ini.", "group_name": "Name", "group_type": "Type", - "group_members": "Devices", + "group_members": "Perangkat", "group_type_manual": "Manual", "group_type_tag": "Tag", - "group_allowed_user_groups": "Allowed user groups", - "group_devices_suffix": "devices", - "group_name_required": "Group name is required", - "org_team_id": "Organization team ID", - "link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)." + "group_allowed_user_groups": "Grup pengguna yang diizinkan", + "group_devices_suffix": "perangkat", + "group_name_required": "Nama grup wajib diisi", + "org_team_id": "ID tim organisasi", + "link_team_id_hint": "Grup akan otomatis ditautkan ke organisasi ini (team ID = ID organisasi)." }, "chat": { "e2e_enabled": "Dienkripsi ujung ke ujung", diff --git a/web-nodejs/lang/it.json b/web-nodejs/lang/it.json index bc41f08b..8b541cfc 100644 --- a/web-nodejs/lang/it.json +++ b/web-nodejs/lang/it.json @@ -2347,25 +2347,25 @@ "link_user_hint": "Collega un utente esistente a questa organizzazione.", "no_available_users": "Nessun utente disponibile", "user_linked": "Utente collegato", - "device_groups_tab": "Device Groups", - "device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.", - "manage_in_devices": "Open Devices → Groups", - "no_org_device_groups": "No device groups are linked to this organization yet.", - "create_org_device_group": "Create device group", - "org_device_group_created": "Device group created", - "org_user_groups_title": "User groups", - "org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).", - "no_org_user_groups": "No user groups linked to this organization.", + "device_groups_tab": "Gruppi dispositivi", + "device_groups_intro": "I gruppi dispositivi collegati a questa organizzazione definiscono a quali macchine i membri possono accedere nel client RustDesk. Configura appartenenza e accesso nella pagina Dispositivi.", + "manage_in_devices": "Apri Dispositivi → Gruppi", + "no_org_device_groups": "Nessun gruppo dispositivi collegato a questa organizzazione.", + "create_org_device_group": "Crea gruppo dispositivi", + "org_device_group_created": "Gruppo dispositivi creato", + "org_user_groups_title": "Gruppi utenti", + "org_user_groups_intro": "I gruppi utenti collegati all'organizzazione possono ottenere accesso ai gruppi dispositivi sopra (Dispositivi → Gruppi → Gruppi utenti consentiti).", + "no_org_user_groups": "Nessun gruppo utenti collegato a questa organizzazione.", "group_name": "Name", "group_type": "Type", - "group_members": "Devices", + "group_members": "Dispositivi", "group_type_manual": "Manual", "group_type_tag": "Tag", - "group_allowed_user_groups": "Allowed user groups", - "group_devices_suffix": "devices", - "group_name_required": "Group name is required", - "org_team_id": "Organization team ID", - "link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)." + "group_allowed_user_groups": "Gruppi utenti consentiti", + "group_devices_suffix": "dispositivi", + "group_name_required": "Il nome del gruppo è obbligatorio", + "org_team_id": "ID team organizzazione", + "link_team_id_hint": "Il gruppo sarà collegato automaticamente a questa organizzazione (team ID = ID organizzazione)." }, "chat": { "e2e_enabled": "Crittografia end-to-end", diff --git a/web-nodejs/lang/ja.json b/web-nodejs/lang/ja.json index 54e96a49..d489616b 100644 --- a/web-nodejs/lang/ja.json +++ b/web-nodejs/lang/ja.json @@ -2347,25 +2347,25 @@ "link_user_hint": "選択したユーザーは、サーバー アカウントの資格情報を使用してこの組織にリンクされます。", "no_available_users": "すべてのサーバー ユーザーはすでにこの組織にリンクされています。", "user_linked": "組織にリンクされたユーザー", - "device_groups_tab": "Device Groups", - "device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.", - "manage_in_devices": "Open Devices → Groups", - "no_org_device_groups": "No device groups are linked to this organization yet.", - "create_org_device_group": "Create device group", - "org_device_group_created": "Device group created", - "org_user_groups_title": "User groups", - "org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).", - "no_org_user_groups": "No user groups linked to this organization.", + "device_groups_tab": "デバイスグループ", + "device_groups_intro": "この組織にリンクされたデバイスグループは、RustDesk クライアントでメンバーがアクセスできるマシンを定義します。メンバーシップとアクセスはデバイスページで設定します。", + "manage_in_devices": "デバイス → グループを開く", + "no_org_device_groups": "この組織にリンクされたデバイスグループはまだありません。", + "create_org_device_group": "デバイスグループを作成", + "org_device_group_created": "デバイスグループを作成しました", + "org_user_groups_title": "ユーザーグループ", + "org_user_groups_intro": "組織にリンクされたユーザーグループは、上記のデバイスグループへのアクセスを付与できます(デバイス → グループ → 許可されたユーザーグループ)。", + "no_org_user_groups": "この組織にリンクされたユーザーグループはありません。", "group_name": "Name", "group_type": "Type", - "group_members": "Devices", + "group_members": "デバイス", "group_type_manual": "Manual", "group_type_tag": "Tag", - "group_allowed_user_groups": "Allowed user groups", - "group_devices_suffix": "devices", - "group_name_required": "Group name is required", - "org_team_id": "Organization team ID", - "link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)." + "group_allowed_user_groups": "許可されたユーザーグループ", + "group_devices_suffix": "デバイス", + "group_name_required": "グループ名は必須です", + "org_team_id": "組織チーム ID", + "link_team_id_hint": "グループは自動的にこの組織にリンクされます(チーム ID = 組織 ID)。" }, "chat": { "e2e_enabled": "エンドツーエンド暗号化", diff --git a/web-nodejs/lang/ko.json b/web-nodejs/lang/ko.json index 74d7833d..114080d3 100644 --- a/web-nodejs/lang/ko.json +++ b/web-nodejs/lang/ko.json @@ -2347,25 +2347,25 @@ "link_user_hint": "선택된 사용자는 서버 계정 자격 증명을 사용하여 이 조직에 연결됩니다.", "no_available_users": "모든 서버 사용자는 이미 이 조직에 연결되어 있습니다.", "user_linked": "조직에 연결된 사용자", - "device_groups_tab": "Device Groups", - "device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.", - "manage_in_devices": "Open Devices → Groups", - "no_org_device_groups": "No device groups are linked to this organization yet.", - "create_org_device_group": "Create device group", - "org_device_group_created": "Device group created", - "org_user_groups_title": "User groups", - "org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).", - "no_org_user_groups": "No user groups linked to this organization.", + "device_groups_tab": "장치 그룹", + "device_groups_intro": "이 조직에 연결된 장치 그룹은 RustDesk 클라이언트에서 구성원이 접근할 수 있는 장치를 정의합니다. 구성원 및 접근 권한은 장치 페이지에서 설정하세요.", + "manage_in_devices": "장치 → 그룹 열기", + "no_org_device_groups": "이 조직에 연결된 장치 그룹이 아직 없습니다.", + "create_org_device_group": "장치 그룹 만들기", + "org_device_group_created": "장치 그룹이 생성되었습니다", + "org_user_groups_title": "사용자 그룹", + "org_user_groups_intro": "조직에 연결된 사용자 그룹은 위 장치 그룹에 대한 접근 권한을 부여받을 수 있습니다(장치 → 그룹 → 허용된 사용자 그룹).", + "no_org_user_groups": "이 조직에 연결된 사용자 그룹이 없습니다.", "group_name": "Name", "group_type": "Type", - "group_members": "Devices", + "group_members": "장치", "group_type_manual": "Manual", "group_type_tag": "Tag", - "group_allowed_user_groups": "Allowed user groups", - "group_devices_suffix": "devices", - "group_name_required": "Group name is required", - "org_team_id": "Organization team ID", - "link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)." + "group_allowed_user_groups": "허용된 사용자 그룹", + "group_devices_suffix": "장치", + "group_name_required": "그룹 이름은 필수입니다", + "org_team_id": "조직 팀 ID", + "link_team_id_hint": "그룹은 자동으로 이 조직에 연결됩니다(팀 ID = 조직 ID)." }, "chat": { "e2e_enabled": "종단 간 암호화", diff --git a/web-nodejs/lang/nb.json b/web-nodejs/lang/nb.json index 36d6ee25..b2f769d8 100644 --- a/web-nodejs/lang/nb.json +++ b/web-nodejs/lang/nb.json @@ -2353,25 +2353,25 @@ "link_user_hint": "Den valgte brukeren vil bli koblet til denne organisasjonen ved å bruke deres serverkontolegitimasjon.", "no_available_users": "Alle serverbrukere er allerede knyttet til denne organisasjonen.", "user_linked": "Bruker knyttet til organisasjon", - "device_groups_tab": "Device Groups", - "device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.", - "manage_in_devices": "Open Devices → Groups", - "no_org_device_groups": "No device groups are linked to this organization yet.", - "create_org_device_group": "Create device group", - "org_device_group_created": "Device group created", - "org_user_groups_title": "User groups", - "org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).", - "no_org_user_groups": "No user groups linked to this organization.", + "device_groups_tab": "Enhetsgrupper", + "device_groups_intro": "Enhetsgrupper knyttet til denne organisasjonen definerer hvilke maskiner medlemmer kan nå i RustDesk-klienten. Konfigurer medlemskap og tilgang på siden Enheter.", + "manage_in_devices": "Åpne Enheter → Grupper", + "no_org_device_groups": "Ingen enhetsgrupper er knyttet til denne organisasjonen ennå.", + "create_org_device_group": "Opprett enhetsgruppe", + "org_device_group_created": "Enhetsgruppe opprettet", + "org_user_groups_title": "Brukergrupper", + "org_user_groups_intro": "Brukergrupper knyttet til organisasjonen kan få tilgang til enhetsgruppene over (Enheter → Grupper → Tillatte brukergrupper).", + "no_org_user_groups": "Ingen brukergrupper knyttet til denne organisasjonen.", "group_name": "Name", "group_type": "Type", - "group_members": "Devices", + "group_members": "Enheter", "group_type_manual": "Manual", "group_type_tag": "Tag", - "group_allowed_user_groups": "Allowed user groups", - "group_devices_suffix": "devices", - "group_name_required": "Group name is required", - "org_team_id": "Organization team ID", - "link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)." + "group_allowed_user_groups": "Tillatte brukergrupper", + "group_devices_suffix": "enheter", + "group_name_required": "Gruppenavn er påkrevd", + "org_team_id": "Organisasjonens team-ID", + "link_team_id_hint": "Gruppen knyttes automatisk til denne organisasjonen (team-ID = organisasjons-ID)." }, "chat": { "e2e_enabled": "Ende-til-ende kryptert", diff --git a/web-nodejs/lang/nl.json b/web-nodejs/lang/nl.json index 2e9470ad..2f75d33a 100644 --- a/web-nodejs/lang/nl.json +++ b/web-nodejs/lang/nl.json @@ -2347,25 +2347,25 @@ "link_user_hint": "Koppel een bestaande gebruiker aan deze organisatie.", "no_available_users": "Geen beschikbare gebruikers", "user_linked": "Gebruiker gekoppeld", - "device_groups_tab": "Device Groups", - "device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.", - "manage_in_devices": "Open Devices → Groups", - "no_org_device_groups": "No device groups are linked to this organization yet.", - "create_org_device_group": "Create device group", - "org_device_group_created": "Device group created", - "org_user_groups_title": "User groups", - "org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).", - "no_org_user_groups": "No user groups linked to this organization.", + "device_groups_tab": "Apparaatgroepen", + "device_groups_intro": "Apparaatgroepen gekoppeld aan deze organisatie bepalen welke machines leden kunnen bereiken in de RustDesk-client. Configureer lidmaatschap en toegang op de pagina Apparaten.", + "manage_in_devices": "Apparaten → Groepen openen", + "no_org_device_groups": "Er zijn nog geen apparaatgroepen gekoppeld aan deze organisatie.", + "create_org_device_group": "Apparaatgroep maken", + "org_device_group_created": "Apparaatgroep aangemaakt", + "org_user_groups_title": "Gebruikersgroepen", + "org_user_groups_intro": "Gebruikersgroepen gekoppeld aan de organisatie kunnen toegang krijgen tot de apparaatgroepen hierboven (Apparaten → Groepen → Toegestane gebruikersgroepen).", + "no_org_user_groups": "Geen gebruikersgroepen gekoppeld aan deze organisatie.", "group_name": "Name", "group_type": "Type", - "group_members": "Devices", + "group_members": "Apparaten", "group_type_manual": "Manual", "group_type_tag": "Tag", - "group_allowed_user_groups": "Allowed user groups", - "group_devices_suffix": "devices", - "group_name_required": "Group name is required", - "org_team_id": "Organization team ID", - "link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)." + "group_allowed_user_groups": "Toegestane gebruikersgroepen", + "group_devices_suffix": "apparaten", + "group_name_required": "Groepsnaam is verplicht", + "org_team_id": "Organisatie team-ID", + "link_team_id_hint": "De groep wordt automatisch gekoppeld aan deze organisatie (team-ID = organisatie-ID)." }, "chat": { "e2e_enabled": "End-to-end versleuteld", diff --git a/web-nodejs/lang/pt.json b/web-nodejs/lang/pt.json index f90460ab..0ef762be 100644 --- a/web-nodejs/lang/pt.json +++ b/web-nodejs/lang/pt.json @@ -2347,25 +2347,25 @@ "link_user_hint": "Vincule um usuário existente a esta organização.", "no_available_users": "Nenhum usuário disponível", "user_linked": "Usuário vinculado", - "device_groups_tab": "Device Groups", - "device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.", - "manage_in_devices": "Open Devices → Groups", - "no_org_device_groups": "No device groups are linked to this organization yet.", - "create_org_device_group": "Create device group", - "org_device_group_created": "Device group created", - "org_user_groups_title": "User groups", - "org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).", - "no_org_user_groups": "No user groups linked to this organization.", + "device_groups_tab": "Grupos de dispositivos", + "device_groups_intro": "Os grupos de dispositivos ligados a esta organização definem quais máquinas os membros podem aceder no cliente RustDesk. Configure membros e acesso na página Dispositivos.", + "manage_in_devices": "Abrir Dispositivos → Grupos", + "no_org_device_groups": "Ainda não há grupos de dispositivos ligados a esta organização.", + "create_org_device_group": "Criar grupo de dispositivos", + "org_device_group_created": "Grupo de dispositivos criado", + "org_user_groups_title": "Grupos de utilizadores", + "org_user_groups_intro": "Grupos de utilizadores ligados à organização podem receber acesso aos grupos de dispositivos acima (Dispositivos → Grupos → Grupos de utilizadores permitidos).", + "no_org_user_groups": "Nenhum grupo de utilizadores ligado a esta organização.", "group_name": "Name", "group_type": "Type", - "group_members": "Devices", + "group_members": "Dispositivos", "group_type_manual": "Manual", "group_type_tag": "Tag", - "group_allowed_user_groups": "Allowed user groups", - "group_devices_suffix": "devices", - "group_name_required": "Group name is required", - "org_team_id": "Organization team ID", - "link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)." + "group_allowed_user_groups": "Grupos de utilizadores permitidos", + "group_devices_suffix": "dispositivos", + "group_name_required": "O nome do grupo é obrigatório", + "org_team_id": "ID de equipa da organização", + "link_team_id_hint": "O grupo será ligado automaticamente a esta organização (team ID = ID da organização)." }, "chat": { "e2e_enabled": "Criptografia ponta a ponta", diff --git a/web-nodejs/lang/ro.json b/web-nodejs/lang/ro.json index d2830f51..3eaf0329 100644 --- a/web-nodejs/lang/ro.json +++ b/web-nodejs/lang/ro.json @@ -2353,25 +2353,25 @@ "link_user_hint": "Utilizatorul selectat va fi conectat la această organizație folosind acreditările contului său de server.", "no_available_users": "Toți utilizatorii de server sunt deja conectați la această organizație.", "user_linked": "Utilizator conectat la organizație", - "device_groups_tab": "Device Groups", - "device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.", - "manage_in_devices": "Open Devices → Groups", - "no_org_device_groups": "No device groups are linked to this organization yet.", - "create_org_device_group": "Create device group", - "org_device_group_created": "Device group created", - "org_user_groups_title": "User groups", - "org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).", - "no_org_user_groups": "No user groups linked to this organization.", + "device_groups_tab": "Grupuri de dispozitive", + "device_groups_intro": "Grupurile de dispozitive legate de această organizație definesc la ce mașini pot accesa membrii în clientul RustDesk. Configurați apartenența și accesul în pagina Dispozitive.", + "manage_in_devices": "Deschide Dispozitive → Grupuri", + "no_org_device_groups": "Niciun grup de dispozitive nu este legat încă de această organizație.", + "create_org_device_group": "Creează grup de dispozitive", + "org_device_group_created": "Grup de dispozitive creat", + "org_user_groups_title": "Grupuri de utilizatori", + "org_user_groups_intro": "Grupurilor de utilizatori legate de organizație li se poate acorda acces la grupurile de dispozitive de mai sus (Dispozitive → Grupuri → Grupuri de utilizatori permise).", + "no_org_user_groups": "Niciun grup de utilizatori legat de această organizație.", "group_name": "Name", "group_type": "Type", - "group_members": "Devices", + "group_members": "Dispozitive", "group_type_manual": "Manual", "group_type_tag": "Tag", - "group_allowed_user_groups": "Allowed user groups", - "group_devices_suffix": "devices", - "group_name_required": "Group name is required", - "org_team_id": "Organization team ID", - "link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)." + "group_allowed_user_groups": "Grupuri de utilizatori permise", + "group_devices_suffix": "dispozitive", + "group_name_required": "Numele grupului este obligatoriu", + "org_team_id": "ID echipă organizație", + "link_team_id_hint": "Grupul va fi legat automat de această organizație (team ID = ID organizație)." }, "chat": { "e2e_enabled": "Criptat de la capăt la capăt", diff --git a/web-nodejs/lang/sv.json b/web-nodejs/lang/sv.json index 225d93ec..10d1920f 100644 --- a/web-nodejs/lang/sv.json +++ b/web-nodejs/lang/sv.json @@ -2353,25 +2353,25 @@ "link_user_hint": "Den valda användaren kommer att länkas till den här organisationen med deras serverkontouppgifter.", "no_available_users": "Alla serveranvändare är redan länkade till denna organisation.", "user_linked": "Användare länkad till organisation", - "device_groups_tab": "Device Groups", - "device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.", - "manage_in_devices": "Open Devices → Groups", - "no_org_device_groups": "No device groups are linked to this organization yet.", - "create_org_device_group": "Create device group", - "org_device_group_created": "Device group created", - "org_user_groups_title": "User groups", - "org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).", - "no_org_user_groups": "No user groups linked to this organization.", + "device_groups_tab": "Enhetsgrupper", + "device_groups_intro": "Enhetsgrupper kopplade till denna organisation definierar vilka maskiner medlemmar kan nå i RustDesk-klienten. Konfigurera medlemskap och åtkomst på sidan Enheter.", + "manage_in_devices": "Öppna Enheter → Grupper", + "no_org_device_groups": "Inga enhetsgrupper är kopplade till denna organisation ännu.", + "create_org_device_group": "Skapa enhetsgrupp", + "org_device_group_created": "Enhetsgrupp skapad", + "org_user_groups_title": "Användargrupper", + "org_user_groups_intro": "Användargrupper kopplade till organisationen kan få åtkomst till enhetsgrupperna ovan (Enheter → Grupper → Tillåtna användargrupper).", + "no_org_user_groups": "Inga användargrupper kopplade till denna organisation.", "group_name": "Name", "group_type": "Type", - "group_members": "Devices", + "group_members": "Enheter", "group_type_manual": "Manual", "group_type_tag": "Tag", - "group_allowed_user_groups": "Allowed user groups", - "group_devices_suffix": "devices", - "group_name_required": "Group name is required", - "org_team_id": "Organization team ID", - "link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)." + "group_allowed_user_groups": "Tillåtna användargrupper", + "group_devices_suffix": "enheter", + "group_name_required": "Gruppnamn krävs", + "org_team_id": "Organisationens team-ID", + "link_team_id_hint": "Gruppen kopplas automatiskt till denna organisation (team-ID = organisations-ID)." }, "chat": { "e2e_enabled": "End-to-end krypterad", diff --git a/web-nodejs/lang/th.json b/web-nodejs/lang/th.json index 9eb61ce6..86aa6d62 100644 --- a/web-nodejs/lang/th.json +++ b/web-nodejs/lang/th.json @@ -2353,25 +2353,25 @@ "link_user_hint": "ผู้ใช้ที่เลือกจะเชื่อมโยงกับองค์กรนี้โดยใช้ข้อมูลรับรองบัญชีเซิร์ฟเวอร์ของตน", "no_available_users": "ผู้ใช้เซิร์ฟเวอร์ทั้งหมดเชื่อมโยงกับองค์กรนี้แล้ว", "user_linked": "ผู้ใช้เชื่อมโยงกับองค์กร", - "device_groups_tab": "Device Groups", - "device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.", - "manage_in_devices": "Open Devices → Groups", - "no_org_device_groups": "No device groups are linked to this organization yet.", - "create_org_device_group": "Create device group", - "org_device_group_created": "Device group created", - "org_user_groups_title": "User groups", - "org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).", - "no_org_user_groups": "No user groups linked to this organization.", + "device_groups_tab": "กลุ่มอุปกรณ์", + "device_groups_intro": "กลุ่มอุปกรณ์ที่เชื่อมกับองค์กรนี้กำหนดว่าสมาชิกเข้าถึงเครื่องใดได้ในไคลเอนต์ RustDesk ตั้งค่าสมาชิกและการเข้าถึงในหน้าอุปกรณ์", + "manage_in_devices": "เปิด อุปกรณ์ → กลุ่ม", + "no_org_device_groups": "ยังไม่มีกลุ่มอุปกรณ์ที่เชื่อมกับองค์กรนี้", + "create_org_device_group": "สร้างกลุ่มอุปกรณ์", + "org_device_group_created": "สร้างกลุ่มอุปกรณ์แล้ว", + "org_user_groups_title": "กลุ่มผู้ใช้", + "org_user_groups_intro": "กลุ่มผู้ใช้ที่เชื่อมกับองค์กรสามารถได้รับสิทธิ์เข้าถึงกลุ่มอุปกรณ์ด้านบน (อุปกรณ์ → กลุ่ม → กลุ่มผู้ใช้ที่อนุญาต)", + "no_org_user_groups": "ไม่มีกลุ่มผู้ใช้ที่เชื่อมกับองค์กรนี้", "group_name": "Name", "group_type": "Type", - "group_members": "Devices", + "group_members": "อุปกรณ์", "group_type_manual": "Manual", "group_type_tag": "Tag", - "group_allowed_user_groups": "Allowed user groups", - "group_devices_suffix": "devices", - "group_name_required": "Group name is required", - "org_team_id": "Organization team ID", - "link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)." + "group_allowed_user_groups": "กลุ่มผู้ใช้ที่อนุญาต", + "group_devices_suffix": "อุปกรณ์", + "group_name_required": "ต้องระบุชื่อกลุ่ม", + "org_team_id": "รหัสทีมองค์กร", + "link_team_id_hint": "กลุ่มจะเชื่อมกับองค์กรนี้โดยอัตโนมัติ (team ID = รหัสองค์กร)" }, "chat": { "e2e_enabled": "เข้ารหัสตั้งแต่ต้นทางถึงปลายทาง", diff --git a/web-nodejs/lang/tr.json b/web-nodejs/lang/tr.json index 8685d855..a7c958bc 100644 --- a/web-nodejs/lang/tr.json +++ b/web-nodejs/lang/tr.json @@ -2353,25 +2353,25 @@ "link_user_hint": "Seçilen kullanıcı, sunucu hesabı kimlik bilgilerini kullanarak bu kuruluşa bağlanacak.", "no_available_users": "Tüm sunucu kullanıcıları zaten bu kuruluşa bağlı.", "user_linked": "Kullanıcı kuruluşa bağlı", - "device_groups_tab": "Device Groups", - "device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.", - "manage_in_devices": "Open Devices → Groups", - "no_org_device_groups": "No device groups are linked to this organization yet.", - "create_org_device_group": "Create device group", - "org_device_group_created": "Device group created", - "org_user_groups_title": "User groups", - "org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).", - "no_org_user_groups": "No user groups linked to this organization.", + "device_groups_tab": "Cihaz grupları", + "device_groups_intro": "Bu kuruluşa bağlı cihaz grupları, üyelerin RustDesk istemcisinde hangi makinelere erişebileceğini belirler. Üyelik ve erişimi Cihazlar sayfasından yapılandırın.", + "manage_in_devices": "Cihazlar → Gruplar'ı aç", + "no_org_device_groups": "Bu kuruluşa henüz bağlı cihaz grubu yok.", + "create_org_device_group": "Cihaz grubu oluştur", + "org_device_group_created": "Cihaz grubu oluşturuldu", + "org_user_groups_title": "Kullanıcı grupları", + "org_user_groups_intro": "Kuruluşa bağlı kullanıcı gruplarına yukarıdaki cihaz gruplarına erişim verilebilir (Cihazlar → Gruplar → İzin verilen kullanıcı grupları).", + "no_org_user_groups": "Bu kuruluşa bağlı kullanıcı grubu yok.", "group_name": "Name", "group_type": "Type", - "group_members": "Devices", + "group_members": "Cihazlar", "group_type_manual": "Manual", "group_type_tag": "Tag", - "group_allowed_user_groups": "Allowed user groups", - "group_devices_suffix": "devices", - "group_name_required": "Group name is required", - "org_team_id": "Organization team ID", - "link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)." + "group_allowed_user_groups": "İzin verilen kullanıcı grupları", + "group_devices_suffix": "cihaz", + "group_name_required": "Grup adı gerekli", + "org_team_id": "Kuruluş ekip kimliği", + "link_team_id_hint": "Grup otomatik olarak bu kuruluşa bağlanacaktır (ekip ID = kuruluş ID)." }, "chat": { "e2e_enabled": "Uçtan uca şifrelenmiş", diff --git a/web-nodejs/lang/uk.json b/web-nodejs/lang/uk.json index a0c92b67..2ddfdc03 100644 --- a/web-nodejs/lang/uk.json +++ b/web-nodejs/lang/uk.json @@ -2353,25 +2353,25 @@ "link_user_hint": "Вибраного користувача буде пов’язано з цією організацією за допомогою облікових даних його сервера.", "no_available_users": "Усі користувачі сервера вже пов’язані з цією організацією.", "user_linked": "Користувач пов'язаний з організацією", - "device_groups_tab": "Device Groups", - "device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.", - "manage_in_devices": "Open Devices → Groups", - "no_org_device_groups": "No device groups are linked to this organization yet.", - "create_org_device_group": "Create device group", - "org_device_group_created": "Device group created", - "org_user_groups_title": "User groups", - "org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).", - "no_org_user_groups": "No user groups linked to this organization.", + "device_groups_tab": "Групи пристроїв", + "device_groups_intro": "Групи пристроїв, пов'язані з цією організацією, визначають, до яких машин члени мають доступ у клієнті RustDesk. Членство та доступ налаштовуйте на сторінці Пристрої.", + "manage_in_devices": "Відкрити Пристрої → Групи", + "no_org_device_groups": "До цієї організації ще не пов'язано жодної групи пристроїв.", + "create_org_device_group": "Створити групу пристроїв", + "org_device_group_created": "Групу пристроїв створено", + "org_user_groups_title": "Групи користувачів", + "org_user_groups_intro": "Групам користувачів, пов'язаним з організацією, можна надати доступ до груп пристроїв вище (Пристрої → Групи → Дозволені групи користувачів).", + "no_org_user_groups": "До цієї організації не пов'язано груп користувачів.", "group_name": "Name", "group_type": "Type", - "group_members": "Devices", + "group_members": "Пристрої", "group_type_manual": "Manual", "group_type_tag": "Tag", - "group_allowed_user_groups": "Allowed user groups", - "group_devices_suffix": "devices", - "group_name_required": "Group name is required", - "org_team_id": "Organization team ID", - "link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)." + "group_allowed_user_groups": "Дозволені групи користувачів", + "group_devices_suffix": "пристрої", + "group_name_required": "Назва групи обов'язкова", + "org_team_id": "ID команди організації", + "link_team_id_hint": "Група буде автоматично пов'язана з цією організацією (team ID = ID організації)." }, "chat": { "e2e_enabled": "Наскрізне шифрування", diff --git a/web-nodejs/lang/vi.json b/web-nodejs/lang/vi.json index 1a69974d..91b49f13 100644 --- a/web-nodejs/lang/vi.json +++ b/web-nodejs/lang/vi.json @@ -2353,25 +2353,25 @@ "link_user_hint": "Người dùng được chọn sẽ được liên kết với tổ chức này bằng thông tin xác thực tài khoản máy chủ của họ.", "no_available_users": "Tất cả người dùng máy chủ đã được liên kết với tổ chức này.", "user_linked": "Người dùng được liên kết với tổ chức", - "device_groups_tab": "Device Groups", - "device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.", - "manage_in_devices": "Open Devices → Groups", - "no_org_device_groups": "No device groups are linked to this organization yet.", - "create_org_device_group": "Create device group", - "org_device_group_created": "Device group created", - "org_user_groups_title": "User groups", - "org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).", - "no_org_user_groups": "No user groups linked to this organization.", + "device_groups_tab": "Nhóm thiết bị", + "device_groups_intro": "Các nhóm thiết bị liên kết với tổ chức này xác định máy nào thành viên có thể truy cập trong client RustDesk. Cấu hình thành viên và quyền truy cập tại trang Thiết bị.", + "manage_in_devices": "Mở Thiết bị → Nhóm", + "no_org_device_groups": "Chưa có nhóm thiết bị nào liên kết với tổ chức này.", + "create_org_device_group": "Tạo nhóm thiết bị", + "org_device_group_created": "Đã tạo nhóm thiết bị", + "org_user_groups_title": "Nhóm người dùng", + "org_user_groups_intro": "Các nhóm người dùng liên kết với tổ chức có thể được cấp quyền truy cập các nhóm thiết bị ở trên (Thiết bị → Nhóm → Nhóm người dùng được phép).", + "no_org_user_groups": "Không có nhóm người dùng nào liên kết với tổ chức này.", "group_name": "Name", "group_type": "Type", - "group_members": "Devices", + "group_members": "Thiết bị", "group_type_manual": "Manual", "group_type_tag": "Tag", - "group_allowed_user_groups": "Allowed user groups", - "group_devices_suffix": "devices", - "group_name_required": "Group name is required", - "org_team_id": "Organization team ID", - "link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)." + "group_allowed_user_groups": "Nhóm người dùng được phép", + "group_devices_suffix": "thiết bị", + "group_name_required": "Tên nhóm là bắt buộc", + "org_team_id": "ID nhóm tổ chức", + "link_team_id_hint": "Nhóm sẽ tự động liên kết với tổ chức này (team ID = ID tổ chức)." }, "chat": { "e2e_enabled": "Mã hóa đầu cuối", diff --git a/web-nodejs/lang/zh-TW.json b/web-nodejs/lang/zh-TW.json index ebbca8f5..9da4e613 100644 --- a/web-nodejs/lang/zh-TW.json +++ b/web-nodejs/lang/zh-TW.json @@ -2357,25 +2357,25 @@ "link_user_hint": "所選使用者將使用其伺服器帐戶憑證連結到此組織。", "no_available_users": "所有伺服器使用者都已連結到此組織。", "user_linked": "使用者已連結到組織", - "device_groups_tab": "Device Groups", - "device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.", - "manage_in_devices": "Open Devices → Groups", - "no_org_device_groups": "No device groups are linked to this organization yet.", - "create_org_device_group": "Create device group", - "org_device_group_created": "Device group created", - "org_user_groups_title": "User groups", - "org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).", - "no_org_user_groups": "No user groups linked to this organization.", + "device_groups_tab": "裝置群組", + "device_groups_intro": "與此組織連結的裝置群組定義成員在 RustDesk 用戶端中可存取哪些機器。請在裝置頁面設定成員與存取權限。", + "manage_in_devices": "開啟 裝置 → 群組", + "no_org_device_groups": "尚未有裝置群組與此組織連結。", + "create_org_device_group": "建立裝置群組", + "org_device_group_created": "已建立裝置群組", + "org_user_groups_title": "使用者群組", + "org_user_groups_intro": "與組織連結的使用者群組可獲得上述裝置群組的存取權(裝置 → 群組 → 允許的使用者群組)。", + "no_org_user_groups": "沒有與此組織連結的使用者群組。", "group_name": "Name", "group_type": "Type", - "group_members": "Devices", + "group_members": "裝置", "group_type_manual": "Manual", "group_type_tag": "Tag", - "group_allowed_user_groups": "Allowed user groups", - "group_devices_suffix": "devices", - "group_name_required": "Group name is required", - "org_team_id": "Organization team ID", - "link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)." + "group_allowed_user_groups": "允許的使用者群組", + "group_devices_suffix": "裝置", + "group_name_required": "群組名稱為必填", + "org_team_id": "組織團隊 ID", + "link_team_id_hint": "群組將自動與此組織連結(團隊 ID = 組織 ID)。" }, "chat": { "e2e_enabled": "端到端加密", diff --git a/web-nodejs/lang/zh.json b/web-nodejs/lang/zh.json index 09167d58..38922bb6 100644 --- a/web-nodejs/lang/zh.json +++ b/web-nodejs/lang/zh.json @@ -2418,25 +2418,25 @@ "link_user_hint": "所选用户将使用其服务器帐户凭据链接到此组织。", "no_available_users": "所有服务器用户都已链接到此组织。", "user_linked": "用户已链接到组织", - "device_groups_tab": "Device Groups", - "device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.", - "manage_in_devices": "Open Devices → Groups", - "no_org_device_groups": "No device groups are linked to this organization yet.", - "create_org_device_group": "Create device group", - "org_device_group_created": "Device group created", - "org_user_groups_title": "User groups", - "org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).", - "no_org_user_groups": "No user groups linked to this organization.", + "device_groups_tab": "设备分组", + "device_groups_intro": "与此组织关联的设备分组定义成员在 RustDesk 客户端中可访问哪些机器。请在设备页面配置成员和访问权限。", + "manage_in_devices": "打开 设备 → 分组", + "no_org_device_groups": "尚未有设备分组与此组织关联。", + "create_org_device_group": "创建设备分组", + "org_device_group_created": "设备分组已创建", + "org_user_groups_title": "用户分组", + "org_user_groups_intro": "与此组织关联的用户分组可获得上述设备分组的访问权限(设备 → 分组 → 允许的用户分组)。", + "no_org_user_groups": "没有与此组织关联的用户分组。", "group_name": "Name", "group_type": "Type", - "group_members": "Devices", + "group_members": "设备", "group_type_manual": "Manual", "group_type_tag": "Tag", - "group_allowed_user_groups": "Allowed user groups", - "group_devices_suffix": "devices", - "group_name_required": "Group name is required", - "org_team_id": "Organization team ID", - "link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)." + "group_allowed_user_groups": "允许的用户分组", + "group_devices_suffix": "设备", + "group_name_required": "分组名称为必填项", + "org_team_id": "组织团队 ID", + "link_team_id_hint": "该分组将自动与此组织关联(团队 ID = 组织 ID)。" }, "chat": { "e2e_enabled": "端到端加密", diff --git a/web-nodejs/lib/productVersion.js b/web-nodejs/lib/productVersion.js index a41a8cd6..8a6a551b 100644 --- a/web-nodejs/lib/productVersion.js +++ b/web-nodejs/lib/productVersion.js @@ -35,7 +35,16 @@ function readProductVersion({ rootDir, consoleDir, fallback = '0.0.0' } = {}) { } } catch (_e) { /* fall through */ } - const fromPkg = readPackageJsonVersion(consoleDir || path.join(projectRoot, 'web-nodejs')); + const resolvedConsoleDir = consoleDir || path.join(projectRoot, 'web-nodejs'); + const consoleVersionFile = path.join(resolvedConsoleDir, 'VERSION'); + try { + if (fs.existsSync(consoleVersionFile)) { + const v = fs.readFileSync(consoleVersionFile, 'utf8').trim(); + if (SEMVER_RE.test(v)) return v; + } + } catch (_e) { /* fall through */ } + + const fromPkg = readPackageJsonVersion(resolvedConsoleDir); if (fromPkg) return fromPkg; return fallback; diff --git a/web-nodejs/scripts/dev-i18n/apply-i18n-audit.js b/web-nodejs/scripts/dev-i18n/apply-i18n-audit.js index 6e7d3340..87920c0a 100644 --- a/web-nodejs/scripts/dev-i18n/apply-i18n-audit.js +++ b/web-nodejs/scripts/dev-i18n/apply-i18n-audit.js @@ -24,9 +24,10 @@ const nordicEastern = require(path.join(DATA_DIR, 'nordic-eastern.js')); const asiaRtl = require(path.join(DATA_DIR, 'asia-rtl.js')); const gapFill = require(path.join(DATA_DIR, 'gap-fill.js')); const enFallbackFixes = require(path.join(DATA_DIR, 'en-fallback-fixes.js')); +const orgDeviceGroups = require(path.join(DATA_DIR, 'org-device-groups.js')); const ALL_PATCHES = { ...westEu, ...southCentralEu, ...nordicEastern, ...asiaRtl, ...gapFill }; -const FORCE_PATCHES = enFallbackFixes; +const FORCE_PATCHES = { ...enFallbackFixes, ...orgDeviceGroups }; function readJson(filePath) { const content = fs.readFileSync(filePath, 'utf8').replace(/^\uFEFF/, ''); diff --git a/web-nodejs/scripts/dev-i18n/i18n-audit-data/org-device-groups.js b/web-nodejs/scripts/dev-i18n/i18n-audit-data/org-device-groups.js new file mode 100644 index 00000000..8e9dc550 --- /dev/null +++ b/web-nodejs/scripts/dev-i18n/i18n-audit-data/org-device-groups.js @@ -0,0 +1,389 @@ +'use strict'; + +/** Organizations → Device Groups tab — localized strings (June 2026 release). */ + +function org(patch) { + return { organizations: patch }; +} + +module.exports = { + ar: org({ + device_groups_tab: 'مجموعات الأجهزة', + device_groups_intro: 'تحدد مجموعات الأجهزة المرتبطة بهذه المنظمة الأجهزة التي يمكن للأعضاء الوصول إليها في عميل RustDesk. اضبط العضوية والوصول من صفحة الأجهزة.', + manage_in_devices: 'فتح الأجهزة → المجموعات', + no_org_device_groups: 'لا توجد مجموعات أجهزة مرتبطة بهذه المنظمة بعد.', + create_org_device_group: 'إنشاء مجموعة أجهزة', + org_device_group_created: 'تم إنشاء مجموعة الأجهزة', + org_user_groups_title: 'مجموعات المستخدمين', + org_user_groups_intro: 'يمكن منح مجموعات المستخدمين المرتبطة بهذه المنظمة وصولاً إلى مجموعات الأجهزة أعلاه (الأجهزة → المجموعات → مجموعات المستخدمين المسموح بها).', + no_org_user_groups: 'لا توجد مجموعات مستخدمين مرتبطة بهذه المنظمة.', + group_members: 'الأجهزة', + group_allowed_user_groups: 'مجموعات المستخدمين المسموح بها', + group_devices_suffix: 'أجهزة', + group_name_required: 'اسم المجموعة مطلوب', + org_team_id: 'معرّف فريق المنظمة', + link_team_id_hint: 'ستُربط المجموعة تلقائياً بهذه المنظمة (معرّف الفريق = معرّف المنظمة).' + }), + cs: { + settings: { + go_server_version: 'Server Go' + }, + organizations: { + device_groups_tab: 'Skupiny zařízení', + device_groups_intro: 'Skupiny zařízení propojené s touto organizací určují, ke kterým strojům mají členové přístup v klientu RustDesk. Členství a přístup nastavíte na stránce Zařízení.', + manage_in_devices: 'Otevřít Zařízení → Skupiny', + no_org_device_groups: 'S touto organizací zatím nejsou propojeny žádné skupiny zařízení.', + create_org_device_group: 'Vytvořit skupinu zařízení', + org_device_group_created: 'Skupina zařízení vytvořena', + org_user_groups_title: 'Skupiny uživatelů', + org_user_groups_intro: 'Skupinám uživatelů propojeným s organizací lze udělit přístup ke skupinám zařízení výše (Zařízení → Skupiny → Povolené skupiny uživatelů).', + no_org_user_groups: 'S touto organizací nejsou propojeny žádné skupiny uživatelů.', + group_members: 'Zařízení', + group_allowed_user_groups: 'Povolené skupiny uživatelů', + group_devices_suffix: 'zařízení', + group_name_required: 'Název skupiny je povinný', + org_team_id: 'ID týmu organizace', + link_team_id_hint: 'Skupina bude automaticky propojena s touto organizací (team ID = ID organizace).' + } + }, + da: org({ + device_groups_tab: 'Enhedsgrupper', + device_groups_intro: 'Enhedsgrupper knyttet til denne organisation definerer, hvilke maskiner medlemmer kan nå i RustDesk-klienten. Konfigurer medlemskab og adgang på siden Enheder.', + manage_in_devices: 'Åbn Enheder → Grupper', + no_org_device_groups: 'Ingen enhedsgrupper er knyttet til denne organisation endnu.', + create_org_device_group: 'Opret enhedsgruppe', + org_device_group_created: 'Enhedsgruppe oprettet', + org_user_groups_title: 'Brugergrupper', + org_user_groups_intro: 'Brugergrupper knyttet til organisationen kan få adgang til enhedsgrupperne ovenfor (Enheder → Grupper → Tilladte brugergrupper).', + no_org_user_groups: 'Ingen brugergrupper knyttet til denne organisation.', + group_members: 'Enheder', + group_allowed_user_groups: 'Tilladte brugergrupper', + group_devices_suffix: 'enheder', + group_name_required: 'Gruppenavn er påkrævet', + org_team_id: 'Organisationens team-ID', + link_team_id_hint: 'Gruppen knyttes automatisk til denne organisation (team-ID = organisations-ID).' + }), + es: org({ + device_groups_tab: 'Grupos de dispositivos', + device_groups_intro: 'Los grupos de dispositivos vinculados a esta organización definen a qué máquinas pueden acceder los miembros en el cliente RustDesk. Configure membresía y acceso en la página Dispositivos.', + manage_in_devices: 'Abrir Dispositivos → Grupos', + no_org_device_groups: 'Aún no hay grupos de dispositivos vinculados a esta organización.', + create_org_device_group: 'Crear grupo de dispositivos', + org_device_group_created: 'Grupo de dispositivos creado', + org_user_groups_title: 'Grupos de usuarios', + org_user_groups_intro: 'Los grupos de usuarios vinculados a la organización pueden obtener acceso a los grupos de dispositivos anteriores (Dispositivos → Grupos → Grupos de usuarios permitidos).', + no_org_user_groups: 'No hay grupos de usuarios vinculados a esta organización.', + group_members: 'Dispositivos', + group_allowed_user_groups: 'Grupos de usuarios permitidos', + group_devices_suffix: 'dispositivos', + group_name_required: 'El nombre del grupo es obligatorio', + org_team_id: 'ID de equipo de la organización', + link_team_id_hint: 'El grupo se vinculará automáticamente a esta organización (team ID = ID de organización).' + }), + fi: org({ + device_groups_tab: 'Laiteryhmät', + device_groups_intro: 'Tähän organisaatioon linkitetyt laiteryhmät määrittävät, mihin koneisiin jäsenet pääsevät RustDesk-asiakkaassa. Jäsenyyden ja käyttöoikeudet määrität Laitteet-sivulla.', + manage_in_devices: 'Avaa Laitteet → Ryhmät', + no_org_device_groups: 'Tähän organisaatioon ei ole vielä linkitetty laiteryhmiä.', + create_org_device_group: 'Luo laiteryhmä', + org_device_group_created: 'Laiteryhmä luotu', + org_user_groups_title: 'Käyttäjäryhmät', + org_user_groups_intro: 'Organisaatioon linkitetyille käyttäjäryhmille voidaan myöntää pääsy yllä oleviin laiteryhmiin (Laitteet → Ryhmät → Sallitut käyttäjäryhmät).', + no_org_user_groups: 'Organisaatioon ei ole linkitetty käyttäjäryhmiä.', + group_members: 'Laitteet', + group_allowed_user_groups: 'Sallitut käyttäjäryhmät', + group_devices_suffix: 'laitteet', + group_name_required: 'Ryhmän nimi on pakollinen', + org_team_id: 'Organisaation tiimitunnus', + link_team_id_hint: 'Ryhmä linkitetään automaattisesti tähän organisaatioon (tiimitunnus = organisaation tunnus).' + }), + hi: org({ + device_groups_tab: 'डिवाइस समूह', + device_groups_intro: 'इस संगठन से जुड़े डिवाइस समूह निर्धारित करते हैं कि सदस्य RustDesk क्लाइंट में किन मशीनों तक पहुँच सकते हैं। सदस्यता और पहुँच डिवाइस पृष्ठ पर सेट करें।', + manage_in_devices: 'डिवाइस → समूह खोलें', + no_org_device_groups: 'इस संगठन से अभी तक कोई डिवाइस समूह जुड़ा नहीं है।', + create_org_device_group: 'डिवाइस समूह बनाएँ', + org_device_group_created: 'डिवाइस समूह बनाया गया', + org_user_groups_title: 'उपयोगकर्ता समूह', + org_user_groups_intro: 'संगठन से जुड़े उपयोगकर्ता समूहों को ऊपर के डिवाइस समूहों तक पहुँच दी जा सकती है (डिवाइस → समूह → अनुमत उपयोगकर्ता समूह)।', + no_org_user_groups: 'इस संगठन से कोई उपयोगकर्ता समूह जुड़ा नहीं है।', + group_members: 'डिवाइस', + group_allowed_user_groups: 'अनुमत उपयोगकर्ता समूह', + group_devices_suffix: 'डिवाइस', + group_name_required: 'समूह का नाम आवश्यक है', + org_team_id: 'संगठन टीम ID', + link_team_id_hint: 'समूह स्वचालित रूप से इस संगठन से जुड़ जाएगा (टीम ID = संगठन ID)।' + }), + hu: org({ + device_groups_tab: 'Eszközcsoportok', + device_groups_intro: 'A szervezethez kapcsolt eszközcsoportok határozzák meg, mely gépekhez férhetnek hozzá a tagok a RustDesk kliensben. Tagságot és hozzáférést az Eszközök oldalon állíthat be.', + manage_in_devices: 'Eszközök → Csoportok megnyitása', + no_org_device_groups: 'Ehhez a szervezethez még nincs eszközcsoport kapcsolva.', + create_org_device_group: 'Eszközcsoport létrehozása', + org_device_group_created: 'Eszközcsoport létrehozva', + org_user_groups_title: 'Felhasználói csoportok', + org_user_groups_intro: 'A szervezethez kapcsolt felhasználói csoportok hozzáférést kaphatnak a fenti eszközcsoportokhoz (Eszközök → Csoportok → Engedélyezett felhasználói csoportok).', + no_org_user_groups: 'Nincs felhasználói csoport kapcsolva ehhez a szervezethez.', + group_members: 'Eszközök', + group_allowed_user_groups: 'Engedélyezett felhasználói csoportok', + group_devices_suffix: 'eszköz', + group_name_required: 'A csoport neve kötelező', + org_team_id: 'Szervezet csapatazonosítója', + link_team_id_hint: 'A csoport automatikusan ehhez a szervezethez lesz kapcsolva (csapat ID = szervezet ID).' + }), + id: org({ + device_groups_tab: 'Grup perangkat', + device_groups_intro: 'Grup perangkat yang ditautkan ke organisasi ini menentukan mesin mana yang dapat diakses anggota di klien RustDesk. Atur keanggotaan dan akses di halaman Perangkat.', + manage_in_devices: 'Buka Perangkat → Grup', + no_org_device_groups: 'Belum ada grup perangkat yang ditautkan ke organisasi ini.', + create_org_device_group: 'Buat grup perangkat', + org_device_group_created: 'Grup perangkat dibuat', + org_user_groups_title: 'Grup pengguna', + org_user_groups_intro: 'Grup pengguna yang ditautkan ke organisasi dapat diberi akses ke grup perangkat di atas (Perangkat → Grup → Grup pengguna yang diizinkan).', + no_org_user_groups: 'Tidak ada grup pengguna yang ditautkan ke organisasi ini.', + group_members: 'Perangkat', + group_allowed_user_groups: 'Grup pengguna yang diizinkan', + group_devices_suffix: 'perangkat', + group_name_required: 'Nama grup wajib diisi', + org_team_id: 'ID tim organisasi', + link_team_id_hint: 'Grup akan otomatis ditautkan ke organisasi ini (team ID = ID organisasi).' + }), + it: org({ + device_groups_tab: 'Gruppi dispositivi', + device_groups_intro: 'I gruppi dispositivi collegati a questa organizzazione definiscono a quali macchine i membri possono accedere nel client RustDesk. Configura appartenenza e accesso nella pagina Dispositivi.', + manage_in_devices: 'Apri Dispositivi → Gruppi', + no_org_device_groups: 'Nessun gruppo dispositivi collegato a questa organizzazione.', + create_org_device_group: 'Crea gruppo dispositivi', + org_device_group_created: 'Gruppo dispositivi creato', + org_user_groups_title: 'Gruppi utenti', + org_user_groups_intro: 'I gruppi utenti collegati all\'organizzazione possono ottenere accesso ai gruppi dispositivi sopra (Dispositivi → Gruppi → Gruppi utenti consentiti).', + no_org_user_groups: 'Nessun gruppo utenti collegato a questa organizzazione.', + group_members: 'Dispositivi', + group_allowed_user_groups: 'Gruppi utenti consentiti', + group_devices_suffix: 'dispositivi', + group_name_required: 'Il nome del gruppo è obbligatorio', + org_team_id: 'ID team organizzazione', + link_team_id_hint: 'Il gruppo sarà collegato automaticamente a questa organizzazione (team ID = ID organizzazione).' + }), + ja: org({ + device_groups_tab: 'デバイスグループ', + device_groups_intro: 'この組織にリンクされたデバイスグループは、RustDesk クライアントでメンバーがアクセスできるマシンを定義します。メンバーシップとアクセスはデバイスページで設定します。', + manage_in_devices: 'デバイス → グループを開く', + no_org_device_groups: 'この組織にリンクされたデバイスグループはまだありません。', + create_org_device_group: 'デバイスグループを作成', + org_device_group_created: 'デバイスグループを作成しました', + org_user_groups_title: 'ユーザーグループ', + org_user_groups_intro: '組織にリンクされたユーザーグループは、上記のデバイスグループへのアクセスを付与できます(デバイス → グループ → 許可されたユーザーグループ)。', + no_org_user_groups: 'この組織にリンクされたユーザーグループはありません。', + group_members: 'デバイス', + group_allowed_user_groups: '許可されたユーザーグループ', + group_devices_suffix: 'デバイス', + group_name_required: 'グループ名は必須です', + org_team_id: '組織チーム ID', + link_team_id_hint: 'グループは自動的にこの組織にリンクされます(チーム ID = 組織 ID)。' + }), + ko: org({ + device_groups_tab: '장치 그룹', + device_groups_intro: '이 조직에 연결된 장치 그룹은 RustDesk 클라이언트에서 구성원이 접근할 수 있는 장치를 정의합니다. 구성원 및 접근 권한은 장치 페이지에서 설정하세요.', + manage_in_devices: '장치 → 그룹 열기', + no_org_device_groups: '이 조직에 연결된 장치 그룹이 아직 없습니다.', + create_org_device_group: '장치 그룹 만들기', + org_device_group_created: '장치 그룹이 생성되었습니다', + org_user_groups_title: '사용자 그룹', + org_user_groups_intro: '조직에 연결된 사용자 그룹은 위 장치 그룹에 대한 접근 권한을 부여받을 수 있습니다(장치 → 그룹 → 허용된 사용자 그룹).', + no_org_user_groups: '이 조직에 연결된 사용자 그룹이 없습니다.', + group_members: '장치', + group_allowed_user_groups: '허용된 사용자 그룹', + group_devices_suffix: '장치', + group_name_required: '그룹 이름은 필수입니다', + org_team_id: '조직 팀 ID', + link_team_id_hint: '그룹은 자동으로 이 조직에 연결됩니다(팀 ID = 조직 ID).' + }), + nb: org({ + device_groups_tab: 'Enhetsgrupper', + device_groups_intro: 'Enhetsgrupper knyttet til denne organisasjonen definerer hvilke maskiner medlemmer kan nå i RustDesk-klienten. Konfigurer medlemskap og tilgang på siden Enheter.', + manage_in_devices: 'Åpne Enheter → Grupper', + no_org_device_groups: 'Ingen enhetsgrupper er knyttet til denne organisasjonen ennå.', + create_org_device_group: 'Opprett enhetsgruppe', + org_device_group_created: 'Enhetsgruppe opprettet', + org_user_groups_title: 'Brukergrupper', + org_user_groups_intro: 'Brukergrupper knyttet til organisasjonen kan få tilgang til enhetsgruppene over (Enheter → Grupper → Tillatte brukergrupper).', + no_org_user_groups: 'Ingen brukergrupper knyttet til denne organisasjonen.', + group_members: 'Enheter', + group_allowed_user_groups: 'Tillatte brukergrupper', + group_devices_suffix: 'enheter', + group_name_required: 'Gruppenavn er påkrevd', + org_team_id: 'Organisasjonens team-ID', + link_team_id_hint: 'Gruppen knyttes automatisk til denne organisasjonen (team-ID = organisasjons-ID).' + }), + nl: org({ + device_groups_tab: 'Apparaatgroepen', + device_groups_intro: 'Apparaatgroepen gekoppeld aan deze organisatie bepalen welke machines leden kunnen bereiken in de RustDesk-client. Configureer lidmaatschap en toegang op de pagina Apparaten.', + manage_in_devices: 'Apparaten → Groepen openen', + no_org_device_groups: 'Er zijn nog geen apparaatgroepen gekoppeld aan deze organisatie.', + create_org_device_group: 'Apparaatgroep maken', + org_device_group_created: 'Apparaatgroep aangemaakt', + org_user_groups_title: 'Gebruikersgroepen', + org_user_groups_intro: 'Gebruikersgroepen gekoppeld aan de organisatie kunnen toegang krijgen tot de apparaatgroepen hierboven (Apparaten → Groepen → Toegestane gebruikersgroepen).', + no_org_user_groups: 'Geen gebruikersgroepen gekoppeld aan deze organisatie.', + group_members: 'Apparaten', + group_allowed_user_groups: 'Toegestane gebruikersgroepen', + group_devices_suffix: 'apparaten', + group_name_required: 'Groepsnaam is verplicht', + org_team_id: 'Organisatie team-ID', + link_team_id_hint: 'De groep wordt automatisch gekoppeld aan deze organisatie (team-ID = organisatie-ID).' + }), + pt: org({ + device_groups_tab: 'Grupos de dispositivos', + device_groups_intro: 'Os grupos de dispositivos ligados a esta organização definem quais máquinas os membros podem aceder no cliente RustDesk. Configure membros e acesso na página Dispositivos.', + manage_in_devices: 'Abrir Dispositivos → Grupos', + no_org_device_groups: 'Ainda não há grupos de dispositivos ligados a esta organização.', + create_org_device_group: 'Criar grupo de dispositivos', + org_device_group_created: 'Grupo de dispositivos criado', + org_user_groups_title: 'Grupos de utilizadores', + org_user_groups_intro: 'Grupos de utilizadores ligados à organização podem receber acesso aos grupos de dispositivos acima (Dispositivos → Grupos → Grupos de utilizadores permitidos).', + no_org_user_groups: 'Nenhum grupo de utilizadores ligado a esta organização.', + group_members: 'Dispositivos', + group_allowed_user_groups: 'Grupos de utilizadores permitidos', + group_devices_suffix: 'dispositivos', + group_name_required: 'O nome do grupo é obrigatório', + org_team_id: 'ID de equipa da organização', + link_team_id_hint: 'O grupo será ligado automaticamente a esta organização (team ID = ID da organização).' + }), + ro: org({ + device_groups_tab: 'Grupuri de dispozitive', + device_groups_intro: 'Grupurile de dispozitive legate de această organizație definesc la ce mașini pot accesa membrii în clientul RustDesk. Configurați apartenența și accesul în pagina Dispozitive.', + manage_in_devices: 'Deschide Dispozitive → Grupuri', + no_org_device_groups: 'Niciun grup de dispozitive nu este legat încă de această organizație.', + create_org_device_group: 'Creează grup de dispozitive', + org_device_group_created: 'Grup de dispozitive creat', + org_user_groups_title: 'Grupuri de utilizatori', + org_user_groups_intro: 'Grupurilor de utilizatori legate de organizație li se poate acorda acces la grupurile de dispozitive de mai sus (Dispozitive → Grupuri → Grupuri de utilizatori permise).', + no_org_user_groups: 'Niciun grup de utilizatori legat de această organizație.', + group_members: 'Dispozitive', + group_allowed_user_groups: 'Grupuri de utilizatori permise', + group_devices_suffix: 'dispozitive', + group_name_required: 'Numele grupului este obligatoriu', + org_team_id: 'ID echipă organizație', + link_team_id_hint: 'Grupul va fi legat automat de această organizație (team ID = ID organizație).' + }), + sv: org({ + device_groups_tab: 'Enhetsgrupper', + device_groups_intro: 'Enhetsgrupper kopplade till denna organisation definierar vilka maskiner medlemmar kan nå i RustDesk-klienten. Konfigurera medlemskap och åtkomst på sidan Enheter.', + manage_in_devices: 'Öppna Enheter → Grupper', + no_org_device_groups: 'Inga enhetsgrupper är kopplade till denna organisation ännu.', + create_org_device_group: 'Skapa enhetsgrupp', + org_device_group_created: 'Enhetsgrupp skapad', + org_user_groups_title: 'Användargrupper', + org_user_groups_intro: 'Användargrupper kopplade till organisationen kan få åtkomst till enhetsgrupperna ovan (Enheter → Grupper → Tillåtna användargrupper).', + no_org_user_groups: 'Inga användargrupper kopplade till denna organisation.', + group_members: 'Enheter', + group_allowed_user_groups: 'Tillåtna användargrupper', + group_devices_suffix: 'enheter', + group_name_required: 'Gruppnamn krävs', + org_team_id: 'Organisationens team-ID', + link_team_id_hint: 'Gruppen kopplas automatiskt till denna organisation (team-ID = organisations-ID).' + }), + th: org({ + device_groups_tab: 'กลุ่มอุปกรณ์', + device_groups_intro: 'กลุ่มอุปกรณ์ที่เชื่อมกับองค์กรนี้กำหนดว่าสมาชิกเข้าถึงเครื่องใดได้ในไคลเอนต์ RustDesk ตั้งค่าสมาชิกและการเข้าถึงในหน้าอุปกรณ์', + manage_in_devices: 'เปิด อุปกรณ์ → กลุ่ม', + no_org_device_groups: 'ยังไม่มีกลุ่มอุปกรณ์ที่เชื่อมกับองค์กรนี้', + create_org_device_group: 'สร้างกลุ่มอุปกรณ์', + org_device_group_created: 'สร้างกลุ่มอุปกรณ์แล้ว', + org_user_groups_title: 'กลุ่มผู้ใช้', + org_user_groups_intro: 'กลุ่มผู้ใช้ที่เชื่อมกับองค์กรสามารถได้รับสิทธิ์เข้าถึงกลุ่มอุปกรณ์ด้านบน (อุปกรณ์ → กลุ่ม → กลุ่มผู้ใช้ที่อนุญาต)', + no_org_user_groups: 'ไม่มีกลุ่มผู้ใช้ที่เชื่อมกับองค์กรนี้', + group_members: 'อุปกรณ์', + group_allowed_user_groups: 'กลุ่มผู้ใช้ที่อนุญาต', + group_devices_suffix: 'อุปกรณ์', + group_name_required: 'ต้องระบุชื่อกลุ่ม', + org_team_id: 'รหัสทีมองค์กร', + link_team_id_hint: 'กลุ่มจะเชื่อมกับองค์กรนี้โดยอัตโนมัติ (team ID = รหัสองค์กร)' + }), + tr: org({ + device_groups_tab: 'Cihaz grupları', + device_groups_intro: 'Bu kuruluşa bağlı cihaz grupları, üyelerin RustDesk istemcisinde hangi makinelere erişebileceğini belirler. Üyelik ve erişimi Cihazlar sayfasından yapılandırın.', + manage_in_devices: 'Cihazlar → Gruplar\'ı aç', + no_org_device_groups: 'Bu kuruluşa henüz bağlı cihaz grubu yok.', + create_org_device_group: 'Cihaz grubu oluştur', + org_device_group_created: 'Cihaz grubu oluşturuldu', + org_user_groups_title: 'Kullanıcı grupları', + org_user_groups_intro: 'Kuruluşa bağlı kullanıcı gruplarına yukarıdaki cihaz gruplarına erişim verilebilir (Cihazlar → Gruplar → İzin verilen kullanıcı grupları).', + no_org_user_groups: 'Bu kuruluşa bağlı kullanıcı grubu yok.', + group_members: 'Cihazlar', + group_allowed_user_groups: 'İzin verilen kullanıcı grupları', + group_devices_suffix: 'cihaz', + group_name_required: 'Grup adı gerekli', + org_team_id: 'Kuruluş ekip kimliği', + link_team_id_hint: 'Grup otomatik olarak bu kuruluşa bağlanacaktır (ekip ID = kuruluş ID).' + }), + uk: org({ + device_groups_tab: 'Групи пристроїв', + device_groups_intro: 'Групи пристроїв, пов\'язані з цією організацією, визначають, до яких машин члени мають доступ у клієнті RustDesk. Членство та доступ налаштовуйте на сторінці Пристрої.', + manage_in_devices: 'Відкрити Пристрої → Групи', + no_org_device_groups: 'До цієї організації ще не пов\'язано жодної групи пристроїв.', + create_org_device_group: 'Створити групу пристроїв', + org_device_group_created: 'Групу пристроїв створено', + org_user_groups_title: 'Групи користувачів', + org_user_groups_intro: 'Групам користувачів, пов\'язаним з організацією, можна надати доступ до груп пристроїв вище (Пристрої → Групи → Дозволені групи користувачів).', + no_org_user_groups: 'До цієї організації не пов\'язано груп користувачів.', + group_members: 'Пристрої', + group_allowed_user_groups: 'Дозволені групи користувачів', + group_devices_suffix: 'пристрої', + group_name_required: 'Назва групи обов\'язкова', + org_team_id: 'ID команди організації', + link_team_id_hint: 'Група буде автоматично пов\'язана з цією організацією (team ID = ID організації).' + }), + vi: org({ + device_groups_tab: 'Nhóm thiết bị', + device_groups_intro: 'Các nhóm thiết bị liên kết với tổ chức này xác định máy nào thành viên có thể truy cập trong client RustDesk. Cấu hình thành viên và quyền truy cập tại trang Thiết bị.', + manage_in_devices: 'Mở Thiết bị → Nhóm', + no_org_device_groups: 'Chưa có nhóm thiết bị nào liên kết với tổ chức này.', + create_org_device_group: 'Tạo nhóm thiết bị', + org_device_group_created: 'Đã tạo nhóm thiết bị', + org_user_groups_title: 'Nhóm người dùng', + org_user_groups_intro: 'Các nhóm người dùng liên kết với tổ chức có thể được cấp quyền truy cập các nhóm thiết bị ở trên (Thiết bị → Nhóm → Nhóm người dùng được phép).', + no_org_user_groups: 'Không có nhóm người dùng nào liên kết với tổ chức này.', + group_members: 'Thiết bị', + group_allowed_user_groups: 'Nhóm người dùng được phép', + group_devices_suffix: 'thiết bị', + group_name_required: 'Tên nhóm là bắt buộc', + org_team_id: 'ID nhóm tổ chức', + link_team_id_hint: 'Nhóm sẽ tự động liên kết với tổ chức này (team ID = ID tổ chức).' + }), + zh: org({ + device_groups_tab: '设备分组', + device_groups_intro: '与此组织关联的设备分组定义成员在 RustDesk 客户端中可访问哪些机器。请在设备页面配置成员和访问权限。', + manage_in_devices: '打开 设备 → 分组', + no_org_device_groups: '尚未有设备分组与此组织关联。', + create_org_device_group: '创建设备分组', + org_device_group_created: '设备分组已创建', + org_user_groups_title: '用户分组', + org_user_groups_intro: '与此组织关联的用户分组可获得上述设备分组的访问权限(设备 → 分组 → 允许的用户分组)。', + no_org_user_groups: '没有与此组织关联的用户分组。', + group_members: '设备', + group_allowed_user_groups: '允许的用户分组', + group_devices_suffix: '设备', + group_name_required: '分组名称为必填项', + org_team_id: '组织团队 ID', + link_team_id_hint: '该分组将自动与此组织关联(团队 ID = 组织 ID)。' + }), + 'zh-TW': org({ + device_groups_tab: '裝置群組', + device_groups_intro: '與此組織連結的裝置群組定義成員在 RustDesk 用戶端中可存取哪些機器。請在裝置頁面設定成員與存取權限。', + manage_in_devices: '開啟 裝置 → 群組', + no_org_device_groups: '尚未有裝置群組與此組織連結。', + create_org_device_group: '建立裝置群組', + org_device_group_created: '已建立裝置群組', + org_user_groups_title: '使用者群組', + org_user_groups_intro: '與組織連結的使用者群組可獲得上述裝置群組的存取權(裝置 → 群組 → 允許的使用者群組)。', + no_org_user_groups: '沒有與此組織連結的使用者群組。', + group_members: '裝置', + group_allowed_user_groups: '允許的使用者群組', + group_devices_suffix: '裝置', + group_name_required: '群組名稱為必填', + org_team_id: '組織團隊 ID', + link_team_id_hint: '群組將自動與此組織連結(團隊 ID = 組織 ID)。' + }) +}; diff --git a/web-nodejs/tests/productVersion.test.js b/web-nodejs/tests/productVersion.test.js index a58b7aec..642a4b52 100644 --- a/web-nodejs/tests/productVersion.test.js +++ b/web-nodejs/tests/productVersion.test.js @@ -42,6 +42,17 @@ describe('productVersion', () => { expect(readProductVersion({ rootDir: tmpRoot, consoleDir })).toBe('2.0.1'); }); + test('reads VERSION from console dir when repo root VERSION is missing', () => { + const consoleDir = path.join(tmpRoot, 'console'); + fs.mkdirSync(consoleDir, { recursive: true }); + fs.writeFileSync(path.join(consoleDir, 'VERSION'), '3.3.0\n'); + fs.writeFileSync( + path.join(consoleDir, 'package.json'), + JSON.stringify({ version: '3.2.0' }) + ); + expect(readProductVersion({ rootDir: tmpRoot, consoleDir })).toBe('3.3.0'); + }); + test('returns fallback when no sources available', () => { expect(readProductVersion({ rootDir: tmpRoot, fallback: '0.0.0' })).toBe('0.0.0'); });