diff --git a/cli/build/docs/readme/generate.py b/cli/build/docs/readme/generate.py index 5c4ba6ab95..839fd91c96 100644 --- a/cli/build/docs/readme/generate.py +++ b/cli/build/docs/readme/generate.py @@ -30,7 +30,7 @@ from utils.cache.files import PROJECT_ROOT, read_text from utils.cache.yaml import load_yaml from utils.meta.identity import by_name, profile_url from utils.roles.deploy import role_has_stack -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.mapping import ROLE_FILE_META_MAIN, ROLE_FILE_README from utils.roles.meta_lookup import get_role_guide_companions from utils.roles.validation.invokable import _get_invokable_paths, _is_role_invokable @@ -68,7 +68,7 @@ def _app_name(preamble: str, role_name: str) -> str: for line in preamble.splitlines(): if line.startswith("# "): return line[2:].strip() - entity = get_entity_name(role_name) or role_name + entity = entity_name(role_name) or role_name return entity.replace("-", " ").title() diff --git a/cli/build/docs/readme/overview.py b/cli/build/docs/readme/overview.py index 1a0ba5a2f6..f3df36aacd 100644 --- a/cli/build/docs/readme/overview.py +++ b/cli/build/docs/readme/overview.py @@ -34,7 +34,7 @@ from pathlib import Path from cli.meta.roles.applications.complexity.model import compute_complexity_rows from utils.cache.files import PROJECT_ROOT, read_text from utils.cache.yaml import load_yaml_any -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.lifecycle import tested_lifecycles from utils.roles.mapping import ( ROLE_FILE_META_INFO, @@ -78,7 +78,7 @@ def _role_title(roles_dir: Path, role: str) -> str: for line in read_text(str(readme)).splitlines(): if line.startswith("# "): return line[2:].strip() - entity = get_entity_name(role) or role + entity = entity_name(role) or role return entity.replace("-", " ").title() diff --git a/docs/contributing/design/role/services/base.md b/docs/contributing/design/role/services/base.md index a1405cb899..a591b8b353 100644 --- a/docs/contributing/design/role/services/base.md +++ b/docs/contributing/design/role/services/base.md @@ -52,7 +52,7 @@ javascript: Rules: -- The primary service entry is the role entity name returned by `get_entity_name`. +- The primary service entry is the role entity name returned by `entity_name`. - `provides:` is only used when the public service name differs from the entity name. - `canonical:` is only used on alias entries that resolve back to the primary service key. - `frontend` vs. `backend` is derived from the role name prefix, not stored in config. diff --git a/docs/contributing/design/role/services/layout.md b/docs/contributing/design/role/services/layout.md index a27ac1ebc1..5e01080fed 100644 --- a/docs/contributing/design/role/services/layout.md +++ b/docs/contributing/design/role/services/layout.md @@ -50,7 +50,7 @@ same file-root rule as every other `meta/.yml`. ## Services Inlining Rule 📥 -All non-compose top-level keys (everything except `compose:`, `server:`, `rbac:`, and `credentials:`) MUST be inlined into `meta/services.yml` under `.`, where `` is the value returned by `get_entity_name(role_name)`. +All non-compose top-level keys (everything except `compose:`, `server:`, `rbac:`, and `credentials:`) MUST be inlined into `meta/services.yml` under `.`, where `` is the value returned by `entity_name(role_name)`. Inlined keys observed today (non-exhaustive): `plugins`, `plugins_enabled`, `email`, `ldap`, `accounts`, `scopes`, `alerting`, `languages`, `company`, `default_quota`, `legacy_login_mask`, `site_name`, `token`, `modules`, `network`, `performance`, `preload_models`, `provision`, `features`. @@ -62,7 +62,7 @@ It lives in its own `meta/volumes.yml` (volumes are role-wide, not per-service). ### Worked Example: `web-app-matomo` -`get_entity_name('web-app-matomo') == 'matomo'`, so every non-compose top-level key (`site_name`, `performance`, …) is inlined under `matomo.`: +`entity_name('web-app-matomo') == 'matomo'`, so every non-compose top-level key (`site_name`, `performance`, …) is inlined under `matomo.`: ```yaml # roles/web-app-matomo/meta/services.yml (file root IS the services map) @@ -312,7 +312,7 @@ See `cli contributing network ports suggest` in [port.md](../../../tools/network For the semantic meaning of each `lifecycle` value (and the criteria a role MUST satisfy to claim a given value) see [lifecycle.md](lifecycle.md). This section only covers the on-disk shape of the two fields. -Both fields live on the role's **primary entity** in `meta/services.yml`, where ` = get_entity_name(role_name)`: +Both fields live on the role's **primary entity** in `meta/services.yml`, where ` = entity_name(role_name)`: ```yaml # roles/web-app-gitea/meta/services.yml diff --git a/docs/requirements/031-llm-gateway-model-backends.md b/docs/requirements/031-llm-gateway-model-backends.md index d6db5c5039..9b2b6a354c 100644 --- a/docs/requirements/031-llm-gateway-model-backends.md +++ b/docs/requirements/031-llm-gateway-model-backends.md @@ -81,7 +81,7 @@ Closing probe once the node exists: `POST {gateway}/v1/chat/completions` with `" | Empty key or out-of-deployment base URL fails the deploy | [consumer_contract.yml](../../roles/svc-ai-litellm/tasks/utils/consumer_contract.yml) | | The admin UI sits behind Keycloak | [test-oidc-login.js](../../roles/web-app-litellm/files/playwright/test-oidc-login.js), gated on `services.sso` | -Decision 7's "proxy + SSO" is served by `services.sso.flavor: oidc` on `web-app-litellm` plus LiteLLM's own `GENERIC_*` OIDC settings, rendered into the gateway's env behind `LITELLM_UI_SSO`. An oauth2-proxy sidecar is not an option here: `get_entity_name` maps both `web-app-litellm` and `svc-ai-litellm` to `litellm`, so the two roles share one compose directory, one swarm stack name and one docker network name, and a second stack would overwrite the gateway's `compose.yml` and delete its service under `docker stack deploy --prune`. `web-app-bigbluebutton` is the precedent for a stackless role carrying `flavor: oidc`. The trade-off: an anonymous request reaches LiteLLM's own login page rather than being refused at the edge, and LiteLLM caps SSO at five accounts without a licence. +Decision 7's "proxy + SSO" is served by `services.sso.flavor: oidc` on `web-app-litellm` plus LiteLLM's own `GENERIC_*` OIDC settings, rendered into the gateway's env behind `LITELLM_UI_SSO`. An oauth2-proxy sidecar is not an option here: `entity_name` maps both `web-app-litellm` and `svc-ai-litellm` to `litellm`, so the two roles share one compose directory, one swarm stack name and one docker network name, and a second stack would overwrite the gateway's `compose.yml` and delete its service under `docker stack deploy --prune`. `web-app-bigbluebutton` is the precedent for a stackless role carrying `flavor: oidc`. The trade-off: an anonymous request reaches LiteLLM's own login page rather than being refused at the edge, and LiteLLM caps SSO at five accounts without a licence. Re-routing an alias is a one-line edit to `roles/svc-ai-litellm/templates/config.yaml.j2` followed by `make compose-deploy apps=svc-ai-litellm`; confirm no consumer redeploy is needed by prompting a consumer afterwards without redeploying it. diff --git a/locale/aa/LC_MESSAGES/core.po b/locale/aa/LC_MESSAGES/core.po index 6dd91166b0..c4b4d1b74f 100644 --- a/locale/aa/LC_MESSAGES/core.po +++ b/locale/aa/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ab/LC_MESSAGES/core.po b/locale/ab/LC_MESSAGES/core.po index 6fa6c870c6..9f94a6c652 100644 --- a/locale/ab/LC_MESSAGES/core.po +++ b/locale/ab/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ae/LC_MESSAGES/core.po b/locale/ae/LC_MESSAGES/core.po index fd51a50c76..744da2ae38 100644 --- a/locale/ae/LC_MESSAGES/core.po +++ b/locale/ae/LC_MESSAGES/core.po @@ -110,7 +110,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -718,6 +718,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -882,6 +886,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1611,6 +1619,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/af/LC_MESSAGES/core.po b/locale/af/LC_MESSAGES/core.po index 521018ee74..b116531086 100644 --- a/locale/af/LC_MESSAGES/core.po +++ b/locale/af/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ak/LC_MESSAGES/core.po b/locale/ak/LC_MESSAGES/core.po index e2d1879e72..fb0eaa6bcd 100644 --- a/locale/ak/LC_MESSAGES/core.po +++ b/locale/ak/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/am/LC_MESSAGES/core.po b/locale/am/LC_MESSAGES/core.po index 154b1c381e..6c3f6157df 100644 --- a/locale/am/LC_MESSAGES/core.po +++ b/locale/am/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/an/LC_MESSAGES/core.po b/locale/an/LC_MESSAGES/core.po index 8e645a497e..eecb6f77ad 100644 --- a/locale/an/LC_MESSAGES/core.po +++ b/locale/an/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ar/LC_MESSAGES/core.po b/locale/ar/LC_MESSAGES/core.po index db9fdd25d6..6fc35dcdab 100644 --- a/locale/ar/LC_MESSAGES/core.po +++ b/locale/ar/LC_MESSAGES/core.po @@ -143,7 +143,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "دور القاعدة في تشكيلة المديرين النظاميين عن طريق السقوط، والأوضاع الافتراضية، والتحقق من الوحدة" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "واجهة إدارة الحشد SeaweedFS مخزن الجسم، خدمة الملف والزنابق الرئيسية وراء SSO" @@ -985,6 +985,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "محرك الترجمة المدعوم من طراز LLM يتحدث LibreTranslate APIلخطوط الأنابيب التي تسميها مباشرة" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1218,6 +1223,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "التشغيل الآلي المباشر لإنشاء وتشغيل حيز تبادل عن طريق السيناريو المستنسخ" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "نقطة نهاية واحدة للترجمة التي تختار المحرك نفسه وتفضّل الخيط البشري المستعرض" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "فتح صفحة تسجيل الخروج" @@ -2193,6 +2203,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "موكّل شبكة تور وقاذفة مصفوفة لشبكة الإنترنت مجهولة التركيز على الخصوصية" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "ترجمــة الذاكــرة، والمسردــات، وتدفق عمل الاستعراض البشري خلف بوابة الترجمة التحريرية" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/as/LC_MESSAGES/core.po b/locale/as/LC_MESSAGES/core.po index 3e6a2dbf03..dfb869c169 100644 --- a/locale/as/LC_MESSAGES/core.po +++ b/locale/as/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/av/LC_MESSAGES/core.po b/locale/av/LC_MESSAGES/core.po index 56a7ebc174..91a9019c60 100644 --- a/locale/av/LC_MESSAGES/core.po +++ b/locale/av/LC_MESSAGES/core.po @@ -110,7 +110,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -718,6 +718,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -882,6 +886,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1611,6 +1619,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ay/LC_MESSAGES/core.po b/locale/ay/LC_MESSAGES/core.po index 170633cb09..4121f03df6 100644 --- a/locale/ay/LC_MESSAGES/core.po +++ b/locale/ay/LC_MESSAGES/core.po @@ -110,7 +110,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -718,6 +718,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -882,6 +886,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1611,6 +1619,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/az/LC_MESSAGES/core.po b/locale/az/LC_MESSAGES/core.po index c26d7835c5..d1b1ef9c10 100644 --- a/locale/az/LC_MESSAGES/core.po +++ b/locale/az/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Sistemləşdirilmiş meneceri konfiqurasiyası üçün əsas rolu drop-ins, default parametrlər, və əməliyyat" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Browser admini interfeys üçün SeaweedFS object , , the" @@ -911,6 +911,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Qızıl səviyyəli NFS server IP-restricted access for swarm-node host" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM-backed çeviri motoru danışdı LibreTranslate API, birbaşa çağıran borular üçün" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1119,6 +1124,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Klod qazanmaqla qazanmaq və aktivləşdirilməsi üçün proqram" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Bir çeviri sonpoint ki, motor özünü seçir və gözəl insan stringini tercih edir" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2058,6 +2068,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor şəhəri və browser anonim, gizlilik-based web tarama üçün starter" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Translation , , , , ," + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/ba/LC_MESSAGES/core.po b/locale/ba/LC_MESSAGES/core.po index 87791af2d6..404a31b343 100644 --- a/locale/ba/LC_MESSAGES/core.po +++ b/locale/ba/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/be/LC_MESSAGES/core.po b/locale/be/LC_MESSAGES/core.po index 606ddcee65..220d65e50b 100644 --- a/locale/be/LC_MESSAGES/core.po +++ b/locale/be/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/bg/LC_MESSAGES/core.po b/locale/bg/LC_MESSAGES/core.po index 01d94bdf2f..8f2d676ff7 100644 --- a/locale/bg/LC_MESSAGES/core.po +++ b/locale/bg/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Базова роля за конфигурацията на системния мениджър чрез drop-ins, настройки по подразбиране и валидиране на единица" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Интерфейс за администриране на браузъра SeaweedFS обект магазин, обслужващи файловия и главния конзола зад SSO" @@ -909,6 +909,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "NFS сървър на ниво Kernel за експортиране на споделена директория с IP-ограничен достъп за хостове с рояк" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM- подкрепени превод двигател говори LibreTranslate API, за тръбопроводи, които го наричат директно" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1114,6 +1119,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Он-целева автоматизация за създаване и активиране на място за размяна чрез клониран swapfile скрипт" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Един превод крайна точка, която избира самия двигател и предпочита преглед човешки низ" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2040,6 +2050,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor network клиент и браузър стартер за анонимно, фокусирано върху личните данни уеб сърфиране" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Преводна памет, речник и човешки преглед на работния процес зад превод портал" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/bh/LC_MESSAGES/core.po b/locale/bh/LC_MESSAGES/core.po index c65a5a2335..210d39a307 100644 --- a/locale/bh/LC_MESSAGES/core.po +++ b/locale/bh/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/bi/LC_MESSAGES/core.po b/locale/bi/LC_MESSAGES/core.po index 58d25d831f..df13c3ab4b 100644 --- a/locale/bi/LC_MESSAGES/core.po +++ b/locale/bi/LC_MESSAGES/core.po @@ -110,7 +110,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -718,6 +718,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -882,6 +886,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1611,6 +1619,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/bm/LC_MESSAGES/core.po b/locale/bm/LC_MESSAGES/core.po index 3f88b82008..164f7784b4 100644 --- a/locale/bm/LC_MESSAGES/core.po +++ b/locale/bm/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/bn/LC_MESSAGES/core.po b/locale/bn/LC_MESSAGES/core.po index 6ee7aaaf78..b3529d2127 100644 --- a/locale/bn/LC_MESSAGES/core.po +++ b/locale/bn/LC_MESSAGES/core.po @@ -137,7 +137,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "সিস্টেমের কনফিগারেশন ব্যবস্থার মূল ভূমিকা, ডিফল্ট মান ও একক ব্যবহারের উদ্দেশ্যে চিহ্নিত" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "প্রাপ্ত করার জন্য ব্রাউজারের প্রশাসন ইন্টারফেস SeaweedFS বস্তু সংরক্ষণ করো, ফাইল এবং মাস্টার কনসোল এস.এস.ও এর পিছনে রেখে দাও" @@ -906,6 +906,14 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "দূরবর্তী হোস্ট- নেম সার্ভারের সাথে শেয়ার করার জন্য ডি. এন. এস. সার্ভার" +# translation-refused: libretranslate added-span lost=[] gained=['♪'] +# nocheck: url +# translation-rejected: লিয়েট-থেকে- অনুমোদনকৃত অনুবাদ ইঞ্জিন LibreTranslate +# API♪ পাইপের লাইন যেন সরাসরি কল হয় ♪ +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1118,6 +1126,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Cod swapfile স্ক্রিপ্টের দ্বারা তৈরি ও প্রতিস্থাপনের জন্য ব্যবহার করতে ব্যর্থ।" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "একটা অনুবাদ শেষ করে, যেটা ইঞ্জিনকে নিজেই বেছে নেয় এবং একটা পর্যালোচনা মানবিক পংক্তি বেছে নেয়" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "লগআউট পৃষ্ঠা খুলুন" @@ -2023,6 +2036,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "নাম বিনা অনুমোদনে ব্যবহারযোগ্য টর নেটওয়ার্ক ক্লায়েন্ট ও ব্রাউজার লঞ্চার, ব্যক্তিগত ব্রাউজিং ওয়েব ব্রাউজিং ব্রাউজিং" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "অনুবাদ মেমরি, পরিভাষা এবং অনুবাদ গেটওয়ের পিছনে মানব পর্যালোচনার কাজ" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/bo/LC_MESSAGES/core.po b/locale/bo/LC_MESSAGES/core.po index 161ee297d7..3542ad4d42 100644 --- a/locale/bo/LC_MESSAGES/core.po +++ b/locale/bo/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/br/LC_MESSAGES/core.po b/locale/br/LC_MESSAGES/core.po index 7d19a0295a..eb45599e72 100644 --- a/locale/br/LC_MESSAGES/core.po +++ b/locale/br/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/bs/LC_MESSAGES/core.po b/locale/bs/LC_MESSAGES/core.po index fdadd7d4d0..cca8f69d39 100644 --- a/locale/bs/LC_MESSAGES/core.po +++ b/locale/bs/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ca/LC_MESSAGES/core.po b/locale/ca/LC_MESSAGES/core.po index 8484e89d72..879171a4ba 100644 --- a/locale/ca/LC_MESSAGES/core.po +++ b/locale/ca/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Funció base per a la configuració del gestor de sistemes mitjançant els valors desplegables, arranjament per omissió i validació de les unitats" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Interfície d' administració del navegador per a la SeaweedFS botiga d'objectes, servint a l'arxiu i consola mestre darrere de SSO" @@ -900,6 +900,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Servidor NFS del nucli per exportar un arbre de directoris compartit amb accés IP- restrictat per a màquines gming-node" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "Motor de traducció LLLLLLM-back LibreTranslate API, per canonades que l'anomenen directament" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1105,6 +1110,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Automatització a l' objectiu per crear i activar l' espai d' intercanvi mitjançant un script de fitxer d' intercanvi clonat" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Un punt de traducció que escull el motor mateix i prefereix una cadena revisada humana" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2016,6 +2026,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Client de xarxa Tor i carregador de navegador per a una navegació web anònima i privadesa" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Memòria de traducció, Gloss i el flux de treball humà darrere del portal de traducció" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/ce/LC_MESSAGES/core.po b/locale/ce/LC_MESSAGES/core.po index d1692a68ee..2c85247099 100644 --- a/locale/ce/LC_MESSAGES/core.po +++ b/locale/ce/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ch/LC_MESSAGES/core.po b/locale/ch/LC_MESSAGES/core.po index c9ed019b56..19e1ac2186 100644 --- a/locale/ch/LC_MESSAGES/core.po +++ b/locale/ch/LC_MESSAGES/core.po @@ -110,7 +110,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -718,6 +718,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -882,6 +886,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1611,6 +1619,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/co/LC_MESSAGES/core.po b/locale/co/LC_MESSAGES/core.po index 4a3e635faa..4f06bb46b3 100644 --- a/locale/co/LC_MESSAGES/core.po +++ b/locale/co/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/cr/LC_MESSAGES/core.po b/locale/cr/LC_MESSAGES/core.po index 52e2ad2c36..db3fe3d5b4 100644 --- a/locale/cr/LC_MESSAGES/core.po +++ b/locale/cr/LC_MESSAGES/core.po @@ -110,7 +110,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -718,6 +718,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -882,6 +886,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1611,6 +1619,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/cs/LC_MESSAGES/core.po b/locale/cs/LC_MESSAGES/core.po index 6df92010d3..b9170d1b5c 100644 --- a/locale/cs/LC_MESSAGES/core.po +++ b/locale/cs/LC_MESSAGES/core.po @@ -137,7 +137,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Základní role pro konfiguraci systémového manažera přes drop-iny, výchozí nastavení a validaci jednotky" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Rozhraní pro správu prohlížeče SeaweedFS objekt obchod, sloužící filer a hlavní konzole za SSO" @@ -903,6 +903,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Kernel- level NFS server pro export sdíleného adresářového stromu s IP- omezeným přístupem pro warm- uzel hosts" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM- zálohovaný překladač mluví LibreTranslate API, pro potrubí, která to nazývají přímo" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1112,6 +1117,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "on- cílová automatizace pro vytváření a aktivaci výměnného prostoru pomocí klonovaného skriptu" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Jeden překlad endpoint, který vybere motor sám a preferuje přezkoumávaný lidský řetězec" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2031,6 +2041,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor síťový klient a spouštěč prohlížeče pro anonymní, privacy- zaměřené prohlížení webových stránek" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Překladatelská paměť, glosáři a lidské hodnocení práce za překlad brány" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/cu/LC_MESSAGES/core.po b/locale/cu/LC_MESSAGES/core.po index f6bf0dc4ba..70a583132e 100644 --- a/locale/cu/LC_MESSAGES/core.po +++ b/locale/cu/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/cv/LC_MESSAGES/core.po b/locale/cv/LC_MESSAGES/core.po index 22732b68e4..a60985399f 100644 --- a/locale/cv/LC_MESSAGES/core.po +++ b/locale/cv/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/cy/LC_MESSAGES/core.po b/locale/cy/LC_MESSAGES/core.po index 06c48c5c81..7775e8562a 100644 --- a/locale/cy/LC_MESSAGES/core.po +++ b/locale/cy/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/da/LC_MESSAGES/core.po b/locale/da/LC_MESSAGES/core.po index a53747c553..d42409d5ef 100644 --- a/locale/da/LC_MESSAGES/core.po +++ b/locale/da/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Base rolle for systemd manager konfiguration via drop-ins, standardindstillinger, og enhedsvalidering" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Browser- administrationsgrænseflade til SeaweedFS objekt butik, der betjener filer og master konsoller bag SSO" @@ -894,6 +894,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Kernel- level NFS server til eksport af en delt mappe træ med IP- begrænset adgang til swarm- node værter" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM-backed oversættelse motor taler LibreTranslate API, for rørledninger, der kalder det direkte" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1099,6 +1104,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "On- target automatisering til at skabe og aktivere swap plads via en klonet swapfile script" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "En oversættelse endpoint, der vælger motoren selv og foretrækker en revideret menneskelig streng" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2010,6 +2020,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor netværksklient og browser lancerer til anonym, privat-fokuseret webbrowsing" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Oversættelseshukommelse, glossarer og den menneskelige gennemgang workflow bag oversættelse gateway" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/de/LC_MESSAGES/core.po b/locale/de/LC_MESSAGES/core.po index caec0af86b..a644375392 100644 --- a/locale/de/LC_MESSAGES/core.po +++ b/locale/de/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Basisrolle für Systemd Manager Konfiguration über Drop-Ins, Standardeinstellungen und Unit Validation" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Browser Administration Interface für die SeaweedFS Objektspeicher, der den Filer und die Masterkonsolen hinter SSO bedient" @@ -891,6 +891,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "NFS-Server auf Kernel-Ebene zum Exportieren eines gemeinsamen Verzeichnisbaums mit IP-beschränktem Zugriff für Swarm-Node-Hosts" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM-gestützte Übersetzungsmaschine spricht die LibreTranslate APIfür Pipelines, die es direkt aufrufen" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1096,6 +1101,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "On-Target-Automatisierung zum Erstellen und Aktivieren von Swap-Space über ein geklontes Swapfile-Skript" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Ein Übersetzungsendpunkt, der den Motor selbst auswählt und einen überprüften menschlichen String bevorzugt" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "Abmeldeseite öffnen" @@ -1998,6 +2008,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor Network Client und Browser Launcher für anonymes, datenschutzorientiertes Webbrowsing" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Translation Memory, Glossare und der menschliche Review Workflow hinter dem Translation Gateway" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/dv/LC_MESSAGES/core.po b/locale/dv/LC_MESSAGES/core.po index ebe7b7f697..e181752d53 100644 --- a/locale/dv/LC_MESSAGES/core.po +++ b/locale/dv/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/dz/LC_MESSAGES/core.po b/locale/dz/LC_MESSAGES/core.po index afca3687ae..5b9b871d6a 100644 --- a/locale/dz/LC_MESSAGES/core.po +++ b/locale/dz/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ee/LC_MESSAGES/core.po b/locale/ee/LC_MESSAGES/core.po index f76bcc31f0..dbefc5984e 100644 --- a/locale/ee/LC_MESSAGES/core.po +++ b/locale/ee/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/el/LC_MESSAGES/core.po b/locale/el/LC_MESSAGES/core.po index 7d9c74461f..29aa7e5ed7 100644 --- a/locale/el/LC_MESSAGES/core.po +++ b/locale/el/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Βασικός ρόλος για τις ρυθμίσεις του διαχειριστή μέσω drop-in, προεπιλεγμένες ρυθμίσεις και επικύρωση μονάδας" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Διεπαφή διαχείρισης περιηγητή για το SeaweedFS Αντικειμενικό κατάστημα, που εξυπηρετεί το Filer και master κονσόλες πίσω από SSO" @@ -899,6 +899,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Εξυπηρετητής επιπέδου πυρήνα NFS για την εξαγωγή ενός κοινού δέντρου καταλόγου με IP-περιορισμένη πρόσβαση για κόμβους σμήνους" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM-backed μεταφραστική μηχανή μιλώντας το LibreTranslate API, για αγωγούς που το αποκαλούν άμεσα" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1107,6 +1112,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Αυτοματοποίηση on-target για τη δημιουργία και ενεργοποίηση swap χώρου μέσω ενός κλωνοποιημένου σεναρίου swapfile" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Ένα τελικό σημείο μετάφρασης που επιλέγει την ίδια τη μηχανή και προτιμά μια αναθεωρημένη ανθρώπινη συμβολοσειρά" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2018,6 +2028,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor πελάτης δικτύου και εκκινητής περιηγητών για ανώνυμη, επικεντρωμένη στην ιδιωτικότητα περιήγηση στο διαδίκτυο" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Η μεταφραστική μνήμη, τα γλωσσάρια και η ροή εργασίας της ανθρώπινης κριτικής πίσω από τη μεταφραστική πύλη" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/eo/LC_MESSAGES/core.po b/locale/eo/LC_MESSAGES/core.po index 7eba4c4734..2c02a5eced 100644 --- a/locale/eo/LC_MESSAGES/core.po +++ b/locale/eo/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Bazrolo por sistemigita manaĝero konfiguracio per gut-in, defaŭltaj valoroj, kaj unuo validumado" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Browser Administration interfaco por la SeaweedFS Objektobutiko, servante la dosieron kaj majstrajn konzolojn malantaŭ SSO" @@ -894,6 +894,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Kernel-nivela NFS-servilo por eksportado de komuna direktora arbo kun IP-limigita aliro por svingo-node gastigantoj" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM-apogita traduko motoro parolanta la LibreTranslate APIPor duktoj kiuj nomas ĝin rekte" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1102,6 +1107,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "On-celo aŭtomatigo por kreado kaj aktivigado de interŝanĝspaco per klonita interŝanĝfilmanuskripto" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Unu traduko finpunkto kiu elektas la motoron mem kaj preferas reviziitan homan kordon" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2013,6 +2023,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor reto kliento kaj retumilo lanĉilo por anonima, privateco-fokusita retejo folianta" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Traduko, glosaroj kaj la homa revizio laborfluo malantaŭ la traduko enirejo" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/es/LC_MESSAGES/core.po b/locale/es/LC_MESSAGES/core.po index 16bcf1492c..b2d8974acd 100644 --- a/locale/es/LC_MESSAGES/core.po +++ b/locale/es/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Función de base para la configuración del administrador sistema mediante drop-ins, configuración predeterminada y validación de la unidad" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Interfaz de administración del navegador para SeaweedFS tienda de objetos, sirviendo el archivador y las consolas maestras detrás de SSO" @@ -903,6 +903,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Servidor NFS de nivel de núcleo para exportar un árbol de directorio compartido con acceso restringido por IP para hosts de nódulos" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "Motor de traducción respaldado por LLM que habla LibreTranslate API, para tuberías que lo llaman directamente" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1108,6 +1113,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Automatización on-target para crear y activar espacio swap a través de un script swapfile clonado" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Un punto final de traducción que elige el motor en sí y prefiere una cadena humana revisada" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "Abrir la página de cierre de sesión" @@ -2014,6 +2024,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Cliente de red Tor y navegador lanzador para navegación web anónima centrada en la privacidad" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Memoria de traducción, glosarios y el flujo de trabajo de revisión humana detrás de la puerta de la traducción" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/et/LC_MESSAGES/core.po b/locale/et/LC_MESSAGES/core.po index 63166d9803..8f4c1876fa 100644 --- a/locale/et/LC_MESSAGES/core.po +++ b/locale/et/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Süsteemse halduri seadistamise baasroll rippmenüüde, vaikeseadistuste ja üksuse valideerimise abil" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Brauseri administreerimise liides SeaweedFS objektipood, teenindades fileerit ja peakonsoole SSO taga" @@ -894,6 +894,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Kerneli tasemel NFS- server ühiskataloogipuu eksportimiseks koos IP- piiratud juurdepääsuga sülemisõlme hostidele" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM-i toetatud tõlkemootor räägib LibreTranslate APItorujuhtmete puhul, mis nimetavad seda otse" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1099,6 +1104,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Sihtotstarbeline automatiseerimine vahetusruumi loomiseks ja aktiveerimiseks kloonitud vahetusfaili skripti abil" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Üks tõlke lõpp-punkt, mis valib mootori ise ja eelistab läbivaadatud inimstringi" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2010,6 +2020,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor võrgu klient ja brauseri käivitaja anonüümseks, privaatsusele keskendunud veebibrauseriks" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Tõlkemälu, sõnastikud ja inimülevaate töövoog tõlkevärava taga" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/eu/LC_MESSAGES/core.po b/locale/eu/LC_MESSAGES/core.po index 0dee7bbea7..bf61022ebc 100644 --- a/locale/eu/LC_MESSAGES/core.po +++ b/locale/eu/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Sistematutako kudeatzailearen konfigurazioaren oinarri-rola tanta-ins, ezarpen lehenetsi eta balioztapen unitateen bidez." # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Arakatzailearen administrazioaren interfazea SeaweedFS objektuen biltegia, SSOren atzean zerbitzari eta kontsola nagusiak" @@ -894,6 +894,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Kernel-mailako NFS zerbitzaria direktorio partekatuko zuhaitz bat esportatzeko IP murriztapeneko sarbidearekin" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM-backed itzulpen-motorra hizketan LibreTranslate APIzuzenean deitzen dioten hodietarako" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1099,6 +1104,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "On-target automatizazioa trukatzeko lekua sortzeko eta aktibatzeko klonatutako swapfile script baten bidez" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Itzulpen-puntu bat motorra bera hautatzen duena eta giza kate berrikusia nahiago duena" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2010,6 +2020,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor sareko bezeroa eta arakatzailearen abiarazlea web arakatze anonimo eta pribaturako" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Itzulpen-memoria, glosarioak eta itzulpen-atearen atzeko giza-berrikuspeneko lan-fluxua" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/fa/LC_MESSAGES/core.po b/locale/fa/LC_MESSAGES/core.po index 556569301e..4874c47280 100644 --- a/locale/fa/LC_MESSAGES/core.po +++ b/locale/fa/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "نقش پایه برای پیکربندی مدیر سیستم از طریق تنظیمات کشویی، تنظیمات پیش فرض و اعتبار واحد" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "رابط مدیریت مرورگر برای SeaweedFS فروشگاه شی، خدمت به فایل و کنسول های کارشناسی ارشد پشت SSO" @@ -911,6 +911,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "سرور NFS سطح هسته برای صادرات یک درخت دایرکتوری مشترک با دسترسی محدود IP برای میزبان های گرد و غبار" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "موتور ترجمه مورد حمایت LLM در سخنرانی LibreTranslate APIبرای خطوط لوله ای که آن را مستقیماً می نامند" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1119,6 +1124,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "اتوماسیون On-target برای ایجاد و فعال کردن فضای مبادله از طریق یک اسکریپت پیکربندی شده" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "یک نقطه پایانی ترجمه که خود موتور را انتخاب می کند و ترجیح می دهد یک رشته انسانی بررسی شود" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "باز کردن صفحهٔ خروج" @@ -2024,6 +2034,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor Network client و مرورگر راه اندازی برای مرور وب سایت ناشناس و متمرکز" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "حافظه ترجمه، کلمات و گردش کار بررسی انسان در پشت دروازه ترجمه" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/ff/LC_MESSAGES/core.po b/locale/ff/LC_MESSAGES/core.po index d4a17a2884..0a71237c69 100644 --- a/locale/ff/LC_MESSAGES/core.po +++ b/locale/ff/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/fi/LC_MESSAGES/core.po b/locale/fi/LC_MESSAGES/core.po index 8e11b58783..210c4e3775 100644 --- a/locale/fi/LC_MESSAGES/core.po +++ b/locale/fi/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Perusrooli järjestelmän hallinta kokoonpanon kautta pudotus-ins, oletusasetukset, ja yksikön validointi" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Selaimen hallinnon käyttöliittymä SeaweedFS objekti tallentaa, palvelee tiedostokone ja pääkonsolit takana SSO" @@ -894,6 +894,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Ytimen tason NFS-palvelin jaetun hakemistopuun viemiseksi IP-rajoitteinen pääsy parvisolmujen isännöille" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM-tuki käännös moottori puhuu LibreTranslate API, putkistojen, jotka kutsuvat sitä suoraan" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1099,6 +1104,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Kohdeautomaatio, jolla luodaan ja aktivoidaan vaihtotilaa kloonatun swapfile-skriptin avulla" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Yksi käännös päätepiste, joka poimii moottorin itse ja mieluummin tarkistetaan ihmisen merkkijono" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2030,6 +2040,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor-verkkoasiakas ja selaimen lanseeraus anonyymille, yksityisyyteen keskittyvälle selailulle" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Käännösmuisti, sanastot ja ihmiskatsaus työnkulku käännösportaalin taakse" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/fj/LC_MESSAGES/core.po b/locale/fj/LC_MESSAGES/core.po index 3399d10a31..f9b6708bfb 100644 --- a/locale/fj/LC_MESSAGES/core.po +++ b/locale/fj/LC_MESSAGES/core.po @@ -110,7 +110,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -718,6 +718,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -882,6 +886,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1611,6 +1619,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/fo/LC_MESSAGES/core.po b/locale/fo/LC_MESSAGES/core.po index 636613dccc..5003e7a271 100644 --- a/locale/fo/LC_MESSAGES/core.po +++ b/locale/fo/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/fr/LC_MESSAGES/core.po b/locale/fr/LC_MESSAGES/core.po index 9b7d786bd2..daacba5bd0 100644 --- a/locale/fr/LC_MESSAGES/core.po +++ b/locale/fr/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Rôle de base pour la configuration du gestionnaire système via les drop-ins, les paramètres par défaut et la validation de l'unité" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Interface d'administration du navigateur SeaweedFS objet store, servant le filer et les consoles master derrière SSO" @@ -891,6 +891,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Serveur NFS de niveau noyau pour l'exportation d'un arborescence de répertoires partagés avec accès limité IP pour les hôtes swarm-node" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "Moteur de traduction soutenu par LLM parlant le LibreTranslate API, pour les pipelines qui appellent ça directement" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1096,6 +1101,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Automatisation sur cible pour créer et activer l'espace de swap via un script de swap cloné" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Un paramètre de traduction qui choisit le moteur lui-même et préfère une chaîne humaine revue" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "Ouvrir la page de déconnexion" @@ -1998,6 +2008,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Client réseau Tor et lanceur de navigateur pour la navigation anonyme et axée sur la vie privée" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Mémoire de traduction, glossaires et flux de travail de la revue humaine derrière la passerelle de traduction" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/fy/LC_MESSAGES/core.po b/locale/fy/LC_MESSAGES/core.po index 0ad1418d41..1aebf9b685 100644 --- a/locale/fy/LC_MESSAGES/core.po +++ b/locale/fy/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ga/LC_MESSAGES/core.po b/locale/ga/LC_MESSAGES/core.po index 4637ee7fe3..f29914b2a4 100644 --- a/locale/ga/LC_MESSAGES/core.po +++ b/locale/ga/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Ról bonn le haghaidh cumraíocht bainisteoir córasach trí titim-orlach, socruithe réamhshocraithe, agus bailíochtú aonad" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Comhéadan riaracháin bhrabhsálaí le haghaidh SeaweedFS siopa réad, ag freastal ar an comhadóir agus máistir Consóil taobh thiar SSO" @@ -902,6 +902,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "freastalaí NFS leibhéal Kernel le haghaidh onnmhairiú crann eolaire roinnte le rochtain IP-restricted do hóstach swarm-node" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM-backed inneall aistriúcháin ag labhairt ar an LibreTranslate API, le haghaidh píblínte a ghlaoch go díreach" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1107,6 +1112,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Ar-target uathoibriú a chruthú agus a ghníomhachtú spás swap trí script swapfile cloned" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "One endpoint aistriúcháin go picks an t-inneall féin agus is fearr teaghrán daonna athbhreithniú" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2018,6 +2028,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Cliant líonra Tor agus seoltóir bhrabhsálaí le haghaidh brabhsálaí gréasáin gan ainm, atá dírithe ar phríobháideacht" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Cuimhne aistriúcháin, snasta agus an sreabhadh oibre athbhreithnithe daonna taobh thiar den gheata aistriúcháin" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/gd/LC_MESSAGES/core.po b/locale/gd/LC_MESSAGES/core.po index 4fc23108b1..671f805e03 100644 --- a/locale/gd/LC_MESSAGES/core.po +++ b/locale/gd/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/gl/LC_MESSAGES/core.po b/locale/gl/LC_MESSAGES/core.po index 2c1decee0e..e04a3c88fe 100644 --- a/locale/gl/LC_MESSAGES/core.po +++ b/locale/gl/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Papel base para a configuración do xestor sistema mediante drop-ins, configuración por defecto e validación de unidades." # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Interface de administración do navegador para o SeaweedFS tenda de obxectos, servindo o ficheiro e as consolas mestras detrás de SSO" @@ -899,6 +899,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Servidor NFS de nivel Kernel para exportar unha árbore de directorio compartida con acceso restrinxido a IP para hosts enxame-nodo." +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "Motor de tradución compatible con LLM que fala LibreTranslate APIpara os que o chaman directamente" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1104,6 +1109,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Automatización on-target para crear e activar o espazo de intercambio a través dun script de intercambio clonado" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Un punto final de tradución que escolle o propio motor e prefire unha corda humana revisada." + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2015,6 +2025,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Cliente de rede Tor e navegador para navegación web anónima, centrada na privacidade" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Memoria de tradución, glosarios e fluxo de traballo de revisión humana detrás da pasarela de tradución" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/gn/LC_MESSAGES/core.po b/locale/gn/LC_MESSAGES/core.po index 188d2cb0ca..d2b03861f2 100644 --- a/locale/gn/LC_MESSAGES/core.po +++ b/locale/gn/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/gu/LC_MESSAGES/core.po b/locale/gu/LC_MESSAGES/core.po index a6af0d1eba..906fc8c117 100644 --- a/locale/gu/LC_MESSAGES/core.po +++ b/locale/gu/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "લૉગઆઉટ પૃષ્ઠ ખોલો" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/gv/LC_MESSAGES/core.po b/locale/gv/LC_MESSAGES/core.po index 379eaf809c..5ea1e6ff42 100644 --- a/locale/gv/LC_MESSAGES/core.po +++ b/locale/gv/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ha/LC_MESSAGES/core.po b/locale/ha/LC_MESSAGES/core.po index 86285a0fbf..c07425dd03 100644 --- a/locale/ha/LC_MESSAGES/core.po +++ b/locale/ha/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "Buɗe shafin fita" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/he/LC_MESSAGES/core.po b/locale/he/LC_MESSAGES/core.po index 385d6bea82..4d163f94a9 100644 --- a/locale/he/LC_MESSAGES/core.po +++ b/locale/he/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "תפקיד בסיסי עבור תצורת מנהל מערכת באמצעות טיפות, הגדרות ברירת מחדל, ואימות יחידה" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "ממשק ניהול הדפדפן עבור SeaweedFS חנות אובייקטים, לשרת את הקובץ וקונסולות המאסטר מאחורי SSO" @@ -901,6 +901,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "שרת NFS ברמת Kernel לייצא עץ במאי משותף עם גישה מוגבלת IP למארחים נחילים" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "מנוע התרגום של LLM מדבר LibreTranslate APIעבור צינורות שמכנים אותו ישירות" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1112,6 +1117,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "On-target אוטומציה ליצירת והפעלה של מרחב החלפת באמצעות תסריט משוחזר" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "קצה תרגום אחד שבוחר את המנוע עצמו ומעדיף מחרוזת אנושית ממוקדת" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2025,6 +2035,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "לקוח רשת Tor ומפעיל הדפדפן עבור גלישה באינטרנט אנונימית, ממוקדת פרטיות" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "זיכרון תרגום, מבריקים וזרימת ביקורת אנושית מאחורי שער התרגום" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/hi/LC_MESSAGES/core.po b/locale/hi/LC_MESSAGES/core.po index e2eb5cfc14..3c00b8b79f 100644 --- a/locale/hi/LC_MESSAGES/core.po +++ b/locale/hi/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "ड्रॉप-इन, डिफ़ॉल्ट सेटिंग्स और इकाई सत्यापन के माध्यम से सिस्टम प्रबंधक विन्यास के लिए बेस भूमिका" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "ब्राउज़र प्रशासन इंटरफ़ेस SeaweedFS ऑब्जेक्ट स्टोर, SSO के पीछे फ़ाइलर और मास्टर कंसोल की सेवा" @@ -891,6 +891,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "कर्नेल स्तर NFS सर्वर एक साझा निर्देशिका पेड़ के निर्यात के लिए IP-restricted पहुँच के साथ swarm-node होस्ट के लिए" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM समर्थित अनुवाद इंजन LibreTranslate API, पाइपलाइनों के लिए जो इसे सीधे बुलाते हैं" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1099,6 +1104,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "एक क्लोन्ड स्वैपफ़ाइल स्क्रिप्ट के माध्यम से स्वैप स्पेस बनाने और सक्रिय करने के लिए ऑन-टैरगेट ऑटोमेशन" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "एक अनुवाद समापन बिंदु जो इंजन को स्वयं चुनता है और एक समीक्षा की गई मानव स्ट्रिंग को पसंद करता है" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "लॉगआउट पृष्ठ खोलें" @@ -2001,6 +2011,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "गुमनाम, गोपनीयता-केंद्रित वेब ब्राउज़िंग के लिए टोर नेटवर्क क्लाइंट और ब्राउज़र लॉन्चर" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "अनुवाद स्मृति, शब्दावली और अनुवाद गेटवे के पीछे मानव समीक्षा कार्यप्रवाह" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/ho/LC_MESSAGES/core.po b/locale/ho/LC_MESSAGES/core.po index f1666e12fa..de009a733f 100644 --- a/locale/ho/LC_MESSAGES/core.po +++ b/locale/ho/LC_MESSAGES/core.po @@ -110,7 +110,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -718,6 +718,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -882,6 +886,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1611,6 +1619,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/hr/LC_MESSAGES/core.po b/locale/hr/LC_MESSAGES/core.po index 5c516b37d9..986101b211 100644 --- a/locale/hr/LC_MESSAGES/core.po +++ b/locale/hr/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ht/LC_MESSAGES/core.po b/locale/ht/LC_MESSAGES/core.po index 8a401b1498..a79b82ee92 100644 --- a/locale/ht/LC_MESSAGES/core.po +++ b/locale/ht/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/hu/LC_MESSAGES/core.po b/locale/hu/LC_MESSAGES/core.po index a4ef6cfc2b..f16bf169a7 100644 --- a/locale/hu/LC_MESSAGES/core.po +++ b/locale/hu/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "A rendszerkezelő konfigurációjának alapszerepe drop-ineken, alapértelmezett beállításokon és egységérvényesítésen keresztül" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "A böngésző adminisztrációs felülete SeaweedFS tárgy bolt, a filer és a Master konzolok mögött SSO" @@ -894,6 +894,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Kernel- Level NFS szerver egy megosztott könyvtárfa exportálásához IP- korlátozott hozzáféréssel a swear- csomópont hosts" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM- backed fordítómotor beszél a LibreTranslate APIközvetlenül hívható csővezetékek esetében" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1099,6 +1104,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Objekt automatizálás a swap tér létrehozására és aktiválására klónozott swapfile szkripten keresztül" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Egy fordítási végpont, amely kiválasztja magát a motort, és előnyben részesíti a felülvizsgált emberi sztring" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2014,6 +2024,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor hálózati kliens és böngésző indító névtelen, privát fókuszú web böngészés" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Fordítási memória, glosszáriumok és az emberi felülvizsgálat munkafolyamat mögött a fordítási átjáró" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/hy/LC_MESSAGES/core.po b/locale/hy/LC_MESSAGES/core.po index 791988472b..dba175cac7 100644 --- a/locale/hy/LC_MESSAGES/core.po +++ b/locale/hy/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/hz/LC_MESSAGES/core.po b/locale/hz/LC_MESSAGES/core.po index aecd99d73d..1550fe2220 100644 --- a/locale/hz/LC_MESSAGES/core.po +++ b/locale/hz/LC_MESSAGES/core.po @@ -110,7 +110,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -718,6 +718,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -882,6 +886,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1611,6 +1619,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ia/LC_MESSAGES/core.po b/locale/ia/LC_MESSAGES/core.po index 0081307f2a..4c652599db 100644 --- a/locale/ia/LC_MESSAGES/core.po +++ b/locale/ia/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/id/LC_MESSAGES/core.po b/locale/id/LC_MESSAGES/core.po index 74c15bca50..6b642cdaa6 100644 --- a/locale/id/LC_MESSAGES/core.po +++ b/locale/id/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Peran dasar bagi konfigurasi manajer systemd melalui drop-ins, pengaturan baku, dan validasi unit" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Antar muka administrasi peramban bagi SeaweedFS toko objek, melayani filer dan induk konsol belakang SSO" @@ -894,6 +894,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Server tingkat-kernel--NFS untuk mengekspor pohon direktori bersama dengan akses terbatas IP- untuk host titik swarm-" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM- didukung mesin terjemahan berbicara LibreTranslate API, untuk jaringan pipa yang menyebutnya secara langsung" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1099,6 +1104,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Target otomatis untuk membuat dan mengaktifkan ruang swap melalui skrip swapfile hasil kloning" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Satu terjemahan titik akhir yang memilih mesin itu sendiri dan lebih suka string manusia yang diulas" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "Buka halaman logout" @@ -2001,6 +2011,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Klien jaringan Tor dan peluncur peramban bagi peramban anonim, terfokus pada peramban web" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Memori terjemahan, glossaries dan review manusia mengalir di belakang gerbang terjemahan" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/ie/LC_MESSAGES/core.po b/locale/ie/LC_MESSAGES/core.po index 89ac8fb67e..ca8c4bcf1f 100644 --- a/locale/ie/LC_MESSAGES/core.po +++ b/locale/ie/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ig/LC_MESSAGES/core.po b/locale/ig/LC_MESSAGES/core.po index 1c644584d3..80ce8a674e 100644 --- a/locale/ig/LC_MESSAGES/core.po +++ b/locale/ig/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ii/LC_MESSAGES/core.po b/locale/ii/LC_MESSAGES/core.po index 8d628c770a..f17e047919 100644 --- a/locale/ii/LC_MESSAGES/core.po +++ b/locale/ii/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ik/LC_MESSAGES/core.po b/locale/ik/LC_MESSAGES/core.po index 103a1cc01a..5f60032807 100644 --- a/locale/ik/LC_MESSAGES/core.po +++ b/locale/ik/LC_MESSAGES/core.po @@ -110,7 +110,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -718,6 +718,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -882,6 +886,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1611,6 +1619,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/io/LC_MESSAGES/core.po b/locale/io/LC_MESSAGES/core.po index ee10b33899..b5414d082d 100644 --- a/locale/io/LC_MESSAGES/core.po +++ b/locale/io/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/is/LC_MESSAGES/core.po b/locale/is/LC_MESSAGES/core.po index dd3dd6518a..6e00d3242d 100644 --- a/locale/is/LC_MESSAGES/core.po +++ b/locale/is/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/it/LC_MESSAGES/core.po b/locale/it/LC_MESSAGES/core.po index bd10b00037..a687fac452 100644 --- a/locale/it/LC_MESSAGES/core.po +++ b/locale/it/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "ruolo di base per la configurazione di manager systemd tramite drop-ins, impostazioni predefinite e validazione unità" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Interfaccia di amministrazione del browser per SeaweedFS object store, servendo il filer e le console master dietro SSO" @@ -894,6 +894,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Server NFS a livello di Kernel per l'esportazione di un albero di directory condiviso con accesso limitato a IP per host di swarm-node" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM-backed motore di traduzione parlando il LibreTranslate API, per le tubazioni che lo chiamano direttamente" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1099,6 +1104,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Automazione on-target per la creazione e l'attivazione dello spazio swap tramite uno script di swapfile clonato" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Un endpoint di traduzione che sceglie il motore stesso e preferisce una stringa umana rivista" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "Apri la pagina di logout" @@ -2001,6 +2011,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor network client e browser launcher per la navigazione in rete anonima, focalizzata sulla privacy" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Memoria di traduzione, glossari e il flusso di lavoro di revisione umano dietro il gateway di traduzione" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/iu/LC_MESSAGES/core.po b/locale/iu/LC_MESSAGES/core.po index 681688fc04..5814004a97 100644 --- a/locale/iu/LC_MESSAGES/core.po +++ b/locale/iu/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ja/LC_MESSAGES/core.po b/locale/ja/LC_MESSAGES/core.po index 13c828536a..bde625b70f 100644 --- a/locale/ja/LC_MESSAGES/core.po +++ b/locale/ja/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "ドロップイン、デフォルト設定、ユニット検証によるシステム管理者構成のベースロール" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "ブラウザ管理インターフェイス SeaweedFS オブジェクトストア、 SSO の背後にある filer と master コンソールを提供する" @@ -897,6 +897,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "カーネルレベルの NFS サーバーで、共有ディレクトリツリーを IP 制限付きでエクスポートできます。" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM-backed トランスレーションエンジン LibreTranslate API、それを直接呼ぶパイプラインのために" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1102,6 +1107,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "クローンされたスワップファイルスクリプトを介してスワップスペースを作成および活性化するためのオンターゲット自動化" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "エンジン自体をピックアップし、レビューされた人間の文字列を好む1つの翻訳エンドポイント" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "ログアウトページを開く" @@ -2023,6 +2033,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "匿名でプライバシー重視のWeb閲覧のために、Torネットワーククライアントとブラウザランチャー" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "翻訳メモリ、用語集、翻訳ゲートウェイの背後にあるヒューマンレビューワークフロー" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/jv/LC_MESSAGES/core.po b/locale/jv/LC_MESSAGES/core.po index 2a381ec5f8..99b07e6e2b 100644 --- a/locale/jv/LC_MESSAGES/core.po +++ b/locale/jv/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ka/LC_MESSAGES/core.po b/locale/ka/LC_MESSAGES/core.po index 6d087fda29..26e4dc6f51 100644 --- a/locale/ka/LC_MESSAGES/core.po +++ b/locale/ka/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/kg/LC_MESSAGES/core.po b/locale/kg/LC_MESSAGES/core.po index c8c591b4e2..4b90012a1e 100644 --- a/locale/kg/LC_MESSAGES/core.po +++ b/locale/kg/LC_MESSAGES/core.po @@ -110,7 +110,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -718,6 +718,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -882,6 +886,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1611,6 +1619,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ki/LC_MESSAGES/core.po b/locale/ki/LC_MESSAGES/core.po index 38d40b4449..eac977ddcf 100644 --- a/locale/ki/LC_MESSAGES/core.po +++ b/locale/ki/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/kj/LC_MESSAGES/core.po b/locale/kj/LC_MESSAGES/core.po index 6d814e4845..5f3a06d235 100644 --- a/locale/kj/LC_MESSAGES/core.po +++ b/locale/kj/LC_MESSAGES/core.po @@ -110,7 +110,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -718,6 +718,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -882,6 +886,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1611,6 +1619,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/kk/LC_MESSAGES/core.po b/locale/kk/LC_MESSAGES/core.po index 9567d07fc6..cb65788e8f 100644 --- a/locale/kk/LC_MESSAGES/core.po +++ b/locale/kk/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/kl/LC_MESSAGES/core.po b/locale/kl/LC_MESSAGES/core.po index 6480964648..57c7710290 100644 --- a/locale/kl/LC_MESSAGES/core.po +++ b/locale/kl/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/km/LC_MESSAGES/core.po b/locale/km/LC_MESSAGES/core.po index f341b63cc7..85b29362eb 100644 --- a/locale/km/LC_MESSAGES/core.po +++ b/locale/km/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/kn/LC_MESSAGES/core.po b/locale/kn/LC_MESSAGES/core.po index 4950d0ea4a..aa14a10d07 100644 --- a/locale/kn/LC_MESSAGES/core.po +++ b/locale/kn/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ko/LC_MESSAGES/core.po b/locale/ko/LC_MESSAGES/core.po index 6dd1ed8fb5..baf9fa63d6 100644 --- a/locale/ko/LC_MESSAGES/core.po +++ b/locale/ko/LC_MESSAGES/core.po @@ -142,7 +142,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "drop-ins, default settings, Unit validation을 통해 systemd Manager 구성에 대한 기본 역할" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "브라우저 관리 인터페이스 SeaweedFS 오브젝트 저장소, SSO 뒤에 파일러와 마스터 콘솔을 제공" @@ -920,6 +920,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Kernel-level NFS 서버는 swarm-node 호스트에 대한 IP 제한 액세스와 공유 디렉토리 트리를 내보내기위한" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM 백업 번역 엔진은 말하기 LibreTranslate API그것을 직접 부르는 파이프라인을 위해" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1129,6 +1134,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "cloned swapfile 스크립트를 통해 스왑 공간을 생성하고 활성화하기 위한 On-target 자동화" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "엔진 자체를 선택하고 검토 된 인간의 문자열을 선호하는 하나의 번역 엔드 포인트" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "로그아웃 페이지 열기" @@ -2058,6 +2068,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor network client and browser launcher for 익명, 개인 정보 중심 웹 브라우징" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "번역 메모리, 광택 및 인간의 검토 작업 흐름 번역 게이트웨이 뒤에" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/kr/LC_MESSAGES/core.po b/locale/kr/LC_MESSAGES/core.po index 8350386bb1..fddb5fbc5f 100644 --- a/locale/kr/LC_MESSAGES/core.po +++ b/locale/kr/LC_MESSAGES/core.po @@ -110,7 +110,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -718,6 +718,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -882,6 +886,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1611,6 +1619,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ks/LC_MESSAGES/core.po b/locale/ks/LC_MESSAGES/core.po index f6be3ebfee..c80e9c0543 100644 --- a/locale/ks/LC_MESSAGES/core.po +++ b/locale/ks/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ku/LC_MESSAGES/core.po b/locale/ku/LC_MESSAGES/core.po index 34e91caa99..cb9cda424d 100644 --- a/locale/ku/LC_MESSAGES/core.po +++ b/locale/ku/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/kv/LC_MESSAGES/core.po b/locale/kv/LC_MESSAGES/core.po index 703131c43d..acc1f32b9a 100644 --- a/locale/kv/LC_MESSAGES/core.po +++ b/locale/kv/LC_MESSAGES/core.po @@ -110,7 +110,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -718,6 +718,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -882,6 +886,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1611,6 +1619,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/kw/LC_MESSAGES/core.po b/locale/kw/LC_MESSAGES/core.po index 125aa5f362..9ada0dfd4a 100644 --- a/locale/kw/LC_MESSAGES/core.po +++ b/locale/kw/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ky/LC_MESSAGES/core.po b/locale/ky/LC_MESSAGES/core.po index 1c81a465d9..e14d759384 100644 --- a/locale/ky/LC_MESSAGES/core.po +++ b/locale/ky/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Системаланган менеджер конфигурациясынын негизги ролу, киргизүү, демейки орнотуулар жана бирдикти текшерүү" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Браузерди колдонуу интерфейси SeaweedFS Объект дүкөнү, файл жана башкы консолдорду тейлөө" @@ -904,6 +904,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Kernel деңгээлиндеги NFS сервери жалпы каталог дарагын экспорттоо үчүн IP-чектелген кирүү мүмкүнчүлүгү бар үйүр түйүнү хосттору үчүн" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM менен колдоого алынган котормо кыймылдаткычы LibreTranslate APIАны түздөн-түз чакырган түтүктөр үчүн" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1116,6 +1121,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Клондоштурулган алмашуу файлынын скрипти аркылуу алмашуу мейкиндигин түзүү жана активдештирүү үчүн максаттуу автоматташтыруу" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Бир котормо чекити кыймылдаткычтын өзүн тандап, кайра каралган адам жипти жактырат" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2038,6 +2048,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor Network клиент жана браузердин ишке киргизүүчүсү анонимдүү, купуялуулукка багытталган веб-браузер үчүн" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Котормонун эс тутуму, сөздүктөр жана котормонун дарбазасынын артындагы адамдык сын-пикирлер" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/la/LC_MESSAGES/core.po b/locale/la/LC_MESSAGES/core.po index b510be1c7e..c0c919c2cf 100644 --- a/locale/la/LC_MESSAGES/core.po +++ b/locale/la/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/lb/LC_MESSAGES/core.po b/locale/lb/LC_MESSAGES/core.po index bd108b5ebc..da63119f2f 100644 --- a/locale/lb/LC_MESSAGES/core.po +++ b/locale/lb/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/lg/LC_MESSAGES/core.po b/locale/lg/LC_MESSAGES/core.po index 3342ffcfa7..13c2a8ed87 100644 --- a/locale/lg/LC_MESSAGES/core.po +++ b/locale/lg/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/li/LC_MESSAGES/core.po b/locale/li/LC_MESSAGES/core.po index 4421618897..5d1d3fbb91 100644 --- a/locale/li/LC_MESSAGES/core.po +++ b/locale/li/LC_MESSAGES/core.po @@ -110,7 +110,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -718,6 +718,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -882,6 +886,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1611,6 +1619,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ln/LC_MESSAGES/core.po b/locale/ln/LC_MESSAGES/core.po index 3316b63be3..8eea158cee 100644 --- a/locale/ln/LC_MESSAGES/core.po +++ b/locale/ln/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/lo/LC_MESSAGES/core.po b/locale/lo/LC_MESSAGES/core.po index ca2fc85569..f93a0f759a 100644 --- a/locale/lo/LC_MESSAGES/core.po +++ b/locale/lo/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/lt/LC_MESSAGES/core.po b/locale/lt/LC_MESSAGES/core.po index c36a7a4b1d..c1ea356b69 100644 --- a/locale/lt/LC_MESSAGES/core.po +++ b/locale/lt/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Pagrindinis vaidmuo sisteminis tvarkyklės konfigūracijos per drop- ins, numatytieji nustatymai, ir vieneto patvirtinimas" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Naršyklės administravimo sąsaja, skirta SeaweedFS daiktų saugykla, aptarnaujanti filtrą ir pagrindinius pultus už SSO" @@ -909,6 +909,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Kernel- level NFS serveris, skirtas bendro aplanko medžiui eksportuoti su IP- ribota prieiga sūkurinių mazgų mazgams" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM paremta vertimo sistema kalba LibreTranslate API, vamzdynai, kurie jį vadina tiesiogiai" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1116,6 +1121,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "On-target automatizavimas, skirtas sukurti ir aktyvuoti apsikeitimo erdvę per klonuoto wapfile scenarijų" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Vienas vertimas baigtis, kuri pasirenka patį variklį ir teikia pirmenybę peržiūrėtą žmogaus eilutę" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2055,6 +2065,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor tinklo klientas ir naršyklės paleidimo anoniminis, orientuotas žiniatinklio naršymas" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Vertimo atmintis, glosarijos ir žmogaus peržiūros darbų srautas už vertimo vartai" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/lu/LC_MESSAGES/core.po b/locale/lu/LC_MESSAGES/core.po index ae97b85514..6ae8fd9ff1 100644 --- a/locale/lu/LC_MESSAGES/core.po +++ b/locale/lu/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/lv/LC_MESSAGES/core.po b/locale/lv/LC_MESSAGES/core.po index 44819ec412..1511fd015b 100644 --- a/locale/lv/LC_MESSAGES/core.po +++ b/locale/lv/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Sistēmas pārvaldnieka bāzes loma konfigurācijā, izmantojot nolaižamos iestatījumus, noklusējuma iestatījumus un vienības apstiprināšanu" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Pārlūka administrēšanas saskarne SeaweedFS objektu veikals, apkalpo failu un meistara konsoles aiz SSO" @@ -906,6 +906,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Kernel līmeņa NFS serveris koplietošanas direktorija koka ar IP ierobežotu piekļuvi sharm-node resursdatoriem eksportēšanai" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM nodrošināta tulkošanas dzinējs runājot LibreTranslate API, cauruļvadiem, kas to sauc tieši" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1111,6 +1116,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Uz mērķa automatizācija, lai radītu un aktivizētu mijmaiņas telpu, izmantojot klonētu swapfile skriptu" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Viens tulkojuma galapunkts, kas izvēlas pašu dzinēju un dod priekšroku pārskatītai cilvēku virknei" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2035,6 +2045,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor tīkla klienta un pārlūka palaidējs anonīmai, uz privātumu vērstai tīmekļa pārlūkošanai" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Tulkošanas atmiņas, glosāriju un cilvēka pārskata darbplūsma aiz tulkošanas vārtejas" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/mg/LC_MESSAGES/core.po b/locale/mg/LC_MESSAGES/core.po index 662eb0dfc3..98c1665a9c 100644 --- a/locale/mg/LC_MESSAGES/core.po +++ b/locale/mg/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/mh/LC_MESSAGES/core.po b/locale/mh/LC_MESSAGES/core.po index 022450a51f..6568458779 100644 --- a/locale/mh/LC_MESSAGES/core.po +++ b/locale/mh/LC_MESSAGES/core.po @@ -110,7 +110,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -718,6 +718,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -882,6 +886,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1611,6 +1619,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/mi/LC_MESSAGES/core.po b/locale/mi/LC_MESSAGES/core.po index f7fb28496c..4d256bbb33 100644 --- a/locale/mi/LC_MESSAGES/core.po +++ b/locale/mi/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/mk/LC_MESSAGES/core.po b/locale/mk/LC_MESSAGES/core.po index 8ab7b9a9bd..71600a34e2 100644 --- a/locale/mk/LC_MESSAGES/core.po +++ b/locale/mk/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ml/LC_MESSAGES/core.po b/locale/ml/LC_MESSAGES/core.po index 9b4352bd78..21b34f7823 100644 --- a/locale/ml/LC_MESSAGES/core.po +++ b/locale/ml/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/mn/LC_MESSAGES/core.po b/locale/mn/LC_MESSAGES/core.po index c18e164132..352a41ba69 100644 --- a/locale/mn/LC_MESSAGES/core.po +++ b/locale/mn/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/mr/LC_MESSAGES/core.po b/locale/mr/LC_MESSAGES/core.po index 23feddb795..f505ab8acf 100644 --- a/locale/mr/LC_MESSAGES/core.po +++ b/locale/mr/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "लॉगआउट पृष्ठ उघडा" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ms/LC_MESSAGES/core.po b/locale/ms/LC_MESSAGES/core.po index c17cb85197..4b9a99fa89 100644 --- a/locale/ms/LC_MESSAGES/core.po +++ b/locale/ms/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Peranan dasar untuk konfigurasi manajer sistemd melalui drop-ins, pengaturan default, dan validasi unit" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Antarmuka administrasi Pelayaran untuk SeaweedFS Toko objek, melayani filer dan konsol master di belakang SSO" @@ -901,6 +901,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Server NFS level kernel untuk mengekspor pohon direktori terbagi dengan akses terbatas IP untuk host brund-node" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM LLM-backed mesin terjemahan berbicara LibreTranslate APIUntuk saluran pipa yang menyebutnya secara langsung" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1109,6 +1114,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Otomasi on-target untuk membuat dan mengaktifkan ruang swap melalui skrip swapfile kloning" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Satu titik akhir terjemahan terjemahan yang mengambil mesin itu sendiri dan lebih memilih string manusia yang ditinjau" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "Buka halaman log keluar" @@ -2021,6 +2031,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Klien jaringan dan peluncur peramban untuk penjelajah web tanpa nama, fokus privasi" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Ingatan terjemahan, glossary dan review manusia mengalir di balik gerbang terjemahan" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/mt/LC_MESSAGES/core.po b/locale/mt/LC_MESSAGES/core.po index 429de63be5..4bd53343a9 100644 --- a/locale/mt/LC_MESSAGES/core.po +++ b/locale/mt/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/my/LC_MESSAGES/core.po b/locale/my/LC_MESSAGES/core.po index ef1ff4d355..5cf4cf92f4 100644 --- a/locale/my/LC_MESSAGES/core.po +++ b/locale/my/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/na/LC_MESSAGES/core.po b/locale/na/LC_MESSAGES/core.po index 5fbe9065b3..3a4b1a3920 100644 --- a/locale/na/LC_MESSAGES/core.po +++ b/locale/na/LC_MESSAGES/core.po @@ -110,7 +110,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -718,6 +718,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -882,6 +886,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1611,6 +1619,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/nb/LC_MESSAGES/core.po b/locale/nb/LC_MESSAGES/core.po index 3a09ebfc0e..c96476b6f8 100644 --- a/locale/nb/LC_MESSAGES/core.po +++ b/locale/nb/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Baserolle for systemstyrekonfigurasjon via drop-ins, standardinnstillinger og validering av enhet" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Nettleseradministrasjonsgrensesnitt for SeaweedFS objektlagring, betjene filr og masterkonsoller bak SSO" @@ -894,6 +894,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Kernel-nivå NFS server for å eksportere et delt katalogtre med IP-begrenset tilgang for verm-node verter" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM-støttet oversettelsesmotor som snakker LibreTranslate APIfor rørledninger som kaller det direkte" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1099,6 +1104,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Automatisering på målet for å skape og aktivere swap-plass via et klonet swapfile-skript" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "En oversettelse endepunkt som plukker motoren selv og foretrekker en anmeldt menneskelig streng" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2010,6 +2020,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor nettverk klient og nettleser lanser for anonym, personvern-fokusert nettleser" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Oversettelsesminne, ordbøker og den menneskelige gjennomgangsarbeidsflyten bak oversettelsesporten" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/nd/LC_MESSAGES/core.po b/locale/nd/LC_MESSAGES/core.po index 09a86735c3..6b742a8918 100644 --- a/locale/nd/LC_MESSAGES/core.po +++ b/locale/nd/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ne/LC_MESSAGES/core.po b/locale/ne/LC_MESSAGES/core.po index 76618337b0..90a3e40307 100644 --- a/locale/ne/LC_MESSAGES/core.po +++ b/locale/ne/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ng/LC_MESSAGES/core.po b/locale/ng/LC_MESSAGES/core.po index 3608ebab56..06a5d820e6 100644 --- a/locale/ng/LC_MESSAGES/core.po +++ b/locale/ng/LC_MESSAGES/core.po @@ -110,7 +110,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -718,6 +718,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -882,6 +886,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1611,6 +1619,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/nl/LC_MESSAGES/core.po b/locale/nl/LC_MESSAGES/core.po index 9e98a87937..e880fbca41 100644 --- a/locale/nl/LC_MESSAGES/core.po +++ b/locale/nl/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Basisrol voor systeembeheerconfiguratie via drop-ins, standaardinstellingen en eenheidsvalidatie" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Browser administratie interface voor de SeaweedFS object store, serveren van de filer en master consoles achter SSO" @@ -891,6 +891,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Kernel-niveau NFS-server voor het exporteren van een gedeelde directory-boom met IP-beperkte toegang voor zwerm-node-hosts" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM-ondersteunde vertaalmachine spreken de LibreTranslate API, voor pijpleidingen die het direct noemen" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1096,6 +1101,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "On-target automatisering voor het creëren en activeren van swapruimte via een gekloond swapfile script" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Een vertaling eindpunt dat de motor zelf kiest en de voorkeur geeft aan een herzien menselijke string" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "Afmeldpagina openen" @@ -2003,6 +2013,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor netwerk client en browser launcher voor anonieme, privacygerichte webbrowsing" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Vertaalgeheugen, glossaria en de menselijke beoordeling workflow achter de vertaalpoort" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/nn/LC_MESSAGES/core.po b/locale/nn/LC_MESSAGES/core.po index 1abbbdfc5b..42c68588c5 100644 --- a/locale/nn/LC_MESSAGES/core.po +++ b/locale/nn/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/no/LC_MESSAGES/core.po b/locale/no/LC_MESSAGES/core.po index d6cb80b558..c2213e3ae6 100644 --- a/locale/no/LC_MESSAGES/core.po +++ b/locale/no/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/nr/LC_MESSAGES/core.po b/locale/nr/LC_MESSAGES/core.po index 61e1962169..11f2b3b7e6 100644 --- a/locale/nr/LC_MESSAGES/core.po +++ b/locale/nr/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/nv/LC_MESSAGES/core.po b/locale/nv/LC_MESSAGES/core.po index 850c60bc52..3efddcf512 100644 --- a/locale/nv/LC_MESSAGES/core.po +++ b/locale/nv/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ny/LC_MESSAGES/core.po b/locale/ny/LC_MESSAGES/core.po index 7cc2e6db01..7549001d4d 100644 --- a/locale/ny/LC_MESSAGES/core.po +++ b/locale/ny/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/oc/LC_MESSAGES/core.po b/locale/oc/LC_MESSAGES/core.po index e8f47f43f9..6103208bac 100644 --- a/locale/oc/LC_MESSAGES/core.po +++ b/locale/oc/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/oj/LC_MESSAGES/core.po b/locale/oj/LC_MESSAGES/core.po index ff4301b25a..a5d78716b1 100644 --- a/locale/oj/LC_MESSAGES/core.po +++ b/locale/oj/LC_MESSAGES/core.po @@ -110,7 +110,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -718,6 +718,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -882,6 +886,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1611,6 +1619,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/om/LC_MESSAGES/core.po b/locale/om/LC_MESSAGES/core.po index fe93cfe3fc..f4c50763ea 100644 --- a/locale/om/LC_MESSAGES/core.po +++ b/locale/om/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/or/LC_MESSAGES/core.po b/locale/or/LC_MESSAGES/core.po index 90fed2f4b8..d13c9a3df8 100644 --- a/locale/or/LC_MESSAGES/core.po +++ b/locale/or/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/os/LC_MESSAGES/core.po b/locale/os/LC_MESSAGES/core.po index 050289dcf5..75c693b97f 100644 --- a/locale/os/LC_MESSAGES/core.po +++ b/locale/os/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/pa/LC_MESSAGES/core.po b/locale/pa/LC_MESSAGES/core.po index 16a2bcb4b3..026ef69079 100644 --- a/locale/pa/LC_MESSAGES/core.po +++ b/locale/pa/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "ਲਾਗਆਉਟ ਪੰਨਾ ਖੋਲ੍ਹੋ" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/pi/LC_MESSAGES/core.po b/locale/pi/LC_MESSAGES/core.po index 9b2ff1b1fd..c9c4980e89 100644 --- a/locale/pi/LC_MESSAGES/core.po +++ b/locale/pi/LC_MESSAGES/core.po @@ -110,7 +110,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -718,6 +718,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -882,6 +886,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1611,6 +1619,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/pl/LC_MESSAGES/core.po b/locale/pl/LC_MESSAGES/core.po index 437f4ae550..783511f60d 100644 --- a/locale/pl/LC_MESSAGES/core.po +++ b/locale/pl/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Podstawowa rola konfiguracji menedżera systemowego poprzez krople, ustawienia domyślne i walidację jednostki" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Interfejs administracyjny przeglądarki dla SeaweedFS sklep z obiektami, obsługujący filer i konsole master za SSO" @@ -891,6 +891,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Serwer NFS Kernel- level do eksportu współdzielonego drzewa katalogów z ograniczonym dostępem IP- dla serwerów swark-node" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM- backed tłumaczenia silnik mówiący LibreTranslate API, dla rurociągów, które nazywają go bezpośrednio" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1096,6 +1101,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Automatyzacja on- target do tworzenia i aktywowania przestrzeni wymiany za pomocą sklonowanego skryptu swapfile" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Jeden punkt końcowy tłumaczenia, który wybiera sam silnik i preferuje zrewidowany ciąg ludzki" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "Otwórz stronę wylogowania" @@ -1998,6 +2008,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Klient sieci Tor i wyrzutnia przeglądarki do anonimowego, prywatnego przeglądania stron internetowych" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Pamięć tłumaczeń, glosariusze i ludzki przegląd pracy za bramą tłumaczenia" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/ps/LC_MESSAGES/core.po b/locale/ps/LC_MESSAGES/core.po index f7d06f603a..dde488f1dc 100644 --- a/locale/ps/LC_MESSAGES/core.po +++ b/locale/ps/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/pt/LC_MESSAGES/core.po b/locale/pt/LC_MESSAGES/core.po index 21496a082a..a20362fcb1 100644 --- a/locale/pt/LC_MESSAGES/core.po +++ b/locale/pt/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Papel base para a configuração do gerenciador systemd via drop-ins, configurações padrão e validação de unidade" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Interface de administração do navegador para o SeaweedFS loja de objetos, servindo o filer e consoles mestre atrás SSO" @@ -891,6 +891,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Servidor NFS de nível Kernel para exportar uma árvore de diretórios compartilhada com acesso restrito a IP para máquinas de nó de enxame" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM-backed motor de tradução falando o LibreTranslate API, para gasodutos que chamam de diretamente" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1096,6 +1101,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Automação no alvo para criar e ativar espaço de swap através de um script de arquivo swap clonado" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Um ponto final de tradução que escolhe o motor em si e prefere uma cadeia humana revista" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "Abrir a página de logout" @@ -1998,6 +2008,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor cliente de rede e lançador de navegador para navegação web anônima, focada em privacidade" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Memória de tradução, glossários e o fluxo de trabalho humano de revisão por trás do portal de tradução" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/qu/LC_MESSAGES/core.po b/locale/qu/LC_MESSAGES/core.po index eca8902754..4ef31a4e51 100644 --- a/locale/qu/LC_MESSAGES/core.po +++ b/locale/qu/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/rm/LC_MESSAGES/core.po b/locale/rm/LC_MESSAGES/core.po index 1d5a38445c..c821af4e8c 100644 --- a/locale/rm/LC_MESSAGES/core.po +++ b/locale/rm/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/rn/LC_MESSAGES/core.po b/locale/rn/LC_MESSAGES/core.po index 47e81d7384..557323f28b 100644 --- a/locale/rn/LC_MESSAGES/core.po +++ b/locale/rn/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ro/LC_MESSAGES/core.po b/locale/ro/LC_MESSAGES/core.po index 0827f02c73..6074fa77c5 100644 --- a/locale/ro/LC_MESSAGES/core.po +++ b/locale/ro/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Rolul de bază pentru configurarea managerului sistemat prin drop-in-uri, setările implicite și validarea unității" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Interfață de administrare browser pentru SeaweedFS magazin obiect, servind filer și console master în spatele SSO" @@ -894,6 +894,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Server NFS de nivel Kernel pentru exportul unui director comun cu acces limitat la IP pentru gazdele roi-nod" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM-backed motor de traducere vorbind LibreTranslate API, pentru conducte care-l numesc direct" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1102,6 +1107,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Automatizarea la țintă pentru crearea și activarea spațiului de swap printr-un script de swap file clonat" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Un obiectiv de traducere care alege motorul în sine și preferă un șir de caractere umane revizuite" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2030,6 +2040,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Client de rețea Tor și lansator browser pentru navigare web anonimă, axată pe confidențialitate" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Memorie de traducere, glosari și fluxul de lucru de revizuire uman din spatele portalului de traducere" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/ru/LC_MESSAGES/core.po b/locale/ru/LC_MESSAGES/core.po index d51fd3bb62..2096453f6f 100644 --- a/locale/ru/LC_MESSAGES/core.po +++ b/locale/ru/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Базовая роль для конфигурации системного менеджера через вставки, настройки по умолчанию и валидацию блока" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Интерфейс администрирования браузера для SeaweedFS Object Store, обслуживающий файловые и мастер-консоли позади SSO" @@ -891,6 +891,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Сервер NFS уровня ядра для экспорта общего дерева каталогов с ограниченным доступом IP для хостов роевых узлов" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "Поддерживаемый LLM механизм перевода, говорящий LibreTranslate APIТрубопроводы, которые называют его" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1096,6 +1101,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Автоматизация на цели для создания и активации своп-пространства с помощью клонированного скрипта своп-файла" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Одна конечная точка перевода, которая выбирает сам двигатель и предпочитает пересмотренную человеческую строку" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "Открыть страницу выхода" @@ -2002,6 +2012,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Сетевой клиент Tor и браузер для анонимного, ориентированного на конфиденциальность просмотра веб-страниц" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Память перевода, глоссарии и рабочий процесс человеческого обзора за шлюзом перевода" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/rw/LC_MESSAGES/core.po b/locale/rw/LC_MESSAGES/core.po index 078c63f03c..889e5e21a9 100644 --- a/locale/rw/LC_MESSAGES/core.po +++ b/locale/rw/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/sa/LC_MESSAGES/core.po b/locale/sa/LC_MESSAGES/core.po index 8803a8ca88..481cf8c65b 100644 --- a/locale/sa/LC_MESSAGES/core.po +++ b/locale/sa/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/sc/LC_MESSAGES/core.po b/locale/sc/LC_MESSAGES/core.po index 8ff109c6aa..d50810a45d 100644 --- a/locale/sc/LC_MESSAGES/core.po +++ b/locale/sc/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/sd/LC_MESSAGES/core.po b/locale/sd/LC_MESSAGES/core.po index 658ef1500b..9a378ac7d9 100644 --- a/locale/sd/LC_MESSAGES/core.po +++ b/locale/sd/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/se/LC_MESSAGES/core.po b/locale/se/LC_MESSAGES/core.po index ac1e722a9b..9c3930608d 100644 --- a/locale/se/LC_MESSAGES/core.po +++ b/locale/se/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/sg/LC_MESSAGES/core.po b/locale/sg/LC_MESSAGES/core.po index 5d1554b4c7..eaa1beada2 100644 --- a/locale/sg/LC_MESSAGES/core.po +++ b/locale/sg/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/si/LC_MESSAGES/core.po b/locale/si/LC_MESSAGES/core.po index a8f27f4e3f..eeb72a2f19 100644 --- a/locale/si/LC_MESSAGES/core.po +++ b/locale/si/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/sk/LC_MESSAGES/core.po b/locale/sk/LC_MESSAGES/core.po index 082aa8d2de..6a6f73eeb6 100644 --- a/locale/sk/LC_MESSAGES/core.po +++ b/locale/sk/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Základná úloha pre konfiguráciu systémového manažéra prostredníctvom drop-in, predvolených nastavení a validácie jednotiek" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Prehliadač administračné rozhranie pre SeaweedFS obchod s objektami, obsluhujúci filer a hlavné konzoly za SSO" @@ -897,6 +897,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Kernel-level NFS server pre export zdieľaný adresár strom s IP-obmedzený prístup pre roj-node hostiteľov" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "Prekladový motor krytý LLM hovoriaci LibreTranslate API, pre potrubia, ktoré to nazývajú priamo" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1102,6 +1107,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "On-target automatizácia pre vytváranie a aktiváciu swapového priestoru cez klonovaný skript swap súborov" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Jeden preklad koncový bod, ktorý vyberie samotný motor a dáva prednosť hodnotenej ľudského reťazca" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2017,6 +2027,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor Network klient a prehliadač spúšťač pre anonymné webové prehliadanie zamerané na súkromie" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Prekladová pamäť, glosáre a ľudské recenzie workflow za prekladateľskou bránou" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/sl/LC_MESSAGES/core.po b/locale/sl/LC_MESSAGES/core.po index feaf53939c..e4416cf034 100644 --- a/locale/sl/LC_MESSAGES/core.po +++ b/locale/sl/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Osnovna vloga za nastavitve sistemskega upravitelja preko spustov, privzetih nastavitev in potrjevanja enote" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Vmesnik za upravljanje brskalnika SeaweedFS shramba objektov, servisiranje datotečnih in glavnih konzol za SSO" @@ -894,6 +894,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Kernel-nivo NFS strežnik za izvoz deljeni imenik drevo z IP omejenega dostopa za gostitelje roy-node" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM-backed prevod motorja govori LibreTranslate API, za cevovode, ki ga imenujejo neposredno" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1099,6 +1104,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "O-ciljna avtomatizacija za ustvarjanje in aktiviranje swap prostora preko kloniranega skripta swapfile" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Prevodna končna točka, ki izbere motor sam in ima raje pregledan človeški niz" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2013,6 +2023,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor odjemalec omrežja in zaganjalnik brskalnika za anonimno brskanje po spletu, osredotočeno na zasebnost" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Translation memory, glosarji in človeški pregled potek dela za prevajalskim portalom" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/sm/LC_MESSAGES/core.po b/locale/sm/LC_MESSAGES/core.po index 9301247165..65d216da9a 100644 --- a/locale/sm/LC_MESSAGES/core.po +++ b/locale/sm/LC_MESSAGES/core.po @@ -110,7 +110,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -718,6 +718,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -882,6 +886,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1611,6 +1619,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/sn/LC_MESSAGES/core.po b/locale/sn/LC_MESSAGES/core.po index fe27a29449..3f58d1658c 100644 --- a/locale/sn/LC_MESSAGES/core.po +++ b/locale/sn/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/so/LC_MESSAGES/core.po b/locale/so/LC_MESSAGES/core.po index 1a64051c34..81561c7507 100644 --- a/locale/so/LC_MESSAGES/core.po +++ b/locale/so/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/sq/LC_MESSAGES/core.po b/locale/sq/LC_MESSAGES/core.po index 040b476893..8765b99e0f 100644 --- a/locale/sq/LC_MESSAGES/core.po +++ b/locale/sq/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Roli bazë për konfigurimin e sistemit nëpërmjet hedhjes, rregullimeve të prezgjedhura dhe vlefshmërisë së njësie" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Ndërfaqe e administratës së shfletimit për SeaweedFS arkiv i objektit, duke i shërbyer file dhe mjeshtër konsolave pas SSO" @@ -900,6 +900,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Serveri NFS i nivelit të Kernel për eksportimin e një degëzimi të përbashkët directory me hyrje të kufizuar në IP për hosts mizëri-node" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM duke folur për motorin e përkthimit LibreTranslate API, për tubacionet që e quajnë atë direkt" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1105,6 +1110,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Automatizimi në përdorim për krijimin dhe aktivizimin e hapësirës nëpërmjet një script të klonuar" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Një përkthim i fundit që zgjedh vetë motorin dhe preferon një varg njerëzor të rishikuar" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2031,6 +2041,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor klient dhe shfletues për lundrimet anonime, private-fokuse web" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Kujtimi i përkthimit, librat e studimit dhe rrjedhja e rishikimit të njeriut pas portës së përkthimit" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/sr/LC_MESSAGES/core.po b/locale/sr/LC_MESSAGES/core.po index 0f1ecef10f..e0e0f34980 100644 --- a/locale/sr/LC_MESSAGES/core.po +++ b/locale/sr/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ss/LC_MESSAGES/core.po b/locale/ss/LC_MESSAGES/core.po index dc69d9eb25..a5c411f0b6 100644 --- a/locale/ss/LC_MESSAGES/core.po +++ b/locale/ss/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/st/LC_MESSAGES/core.po b/locale/st/LC_MESSAGES/core.po index 69db0f8ddb..c661edffba 100644 --- a/locale/st/LC_MESSAGES/core.po +++ b/locale/st/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/su/LC_MESSAGES/core.po b/locale/su/LC_MESSAGES/core.po index 31eb741f11..6897cc0e70 100644 --- a/locale/su/LC_MESSAGES/core.po +++ b/locale/su/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/sv/LC_MESSAGES/core.po b/locale/sv/LC_MESSAGES/core.po index a2bdf2d886..29aa726e2a 100644 --- a/locale/sv/LC_MESSAGES/core.po +++ b/locale/sv/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Basroll för systemad manager konfiguration via drop-ins, standardinställningar och enhet validering" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Browser administration gränssnitt för SeaweedFS Objektbutik, servering av filer och masterkonsoler bakom SSO" @@ -894,6 +894,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Kernel-nivå NFS-server för export av ett delat katalogträd med IP-begränsad åtkomst för svärm-nod värdar" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM-stödd översättningsmotor som talar LibreTranslate APIför pipelines som kallar det direkt" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1102,6 +1107,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "On-target automation för att skapa och aktivera swap utrymme via en klonad swapfil script" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "En översättning slutpunkt som plockar motorn själv och föredrar en granskad mänsklig sträng" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2013,6 +2023,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor nätverksklient och webbläsare launcher för anonym, sekretessfokuserad webbläsning" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Översättningsminne, ordlistor och det mänskliga granskningsflödet bakom översättningsgateway" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/sw/LC_MESSAGES/core.po b/locale/sw/LC_MESSAGES/core.po index a78d2cf0a2..83356b1dfe 100644 --- a/locale/sw/LC_MESSAGES/core.po +++ b/locale/sw/LC_MESSAGES/core.po @@ -143,7 +143,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Jukumu la msingi la usanidi wa meneja wa mfumo kupitia drop-ins, mipangilio ya default, na uthibitisho wa kitengo" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Interface ya browser kwa ajili ya SeaweedFS Hifadhi ya kitu, kutumikia faili na vifungo vya bwana nyuma ya SSO" @@ -918,6 +918,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Seva ya NFS ya kiwango cha Kernel kwa kuuza nje mti wa saraka ulioshirikiwa na ufikiaji wa IP uliozuiliwa kwa majeshi ya nzige" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "Mhandisi wa tafsiri wa LLM akizungumza LibreTranslate APIKwa wale wanaoomba mkopo wa moja kwa moja" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1127,6 +1132,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "On-target automatisering kwa ajili ya kujenga na kuanzisha kubadilishana nafasi kupitia cloned swapfile script" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Tafsiri moja ya mwisho ambayo inachukua injini yenyewe na inapendelea kamba ya binadamu iliyorekebishwa" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "Fungua ukurasa wa kuondoka" @@ -2036,6 +2046,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor mtandao mteja na browser launcher kwa anonymous, faragha-umakini mtandao kuvinjari" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Kumbukumbu ya tafsiri, glossaries na kazi ya mapitio ya binadamu nyuma ya lango la tafsiri" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/ta/LC_MESSAGES/core.po b/locale/ta/LC_MESSAGES/core.po index 9ad67f1ee8..8adacbd8ab 100644 --- a/locale/ta/LC_MESSAGES/core.po +++ b/locale/ta/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "வெளியேறும் பக்கத்தைத் திற" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/te/LC_MESSAGES/core.po b/locale/te/LC_MESSAGES/core.po index 5b63fa8146..3d9d774c3a 100644 --- a/locale/te/LC_MESSAGES/core.po +++ b/locale/te/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "లాగౌట్ పేజీని తెరవండి" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/tg/LC_MESSAGES/core.po b/locale/tg/LC_MESSAGES/core.po index 414080187c..71d3bc8628 100644 --- a/locale/tg/LC_MESSAGES/core.po +++ b/locale/tg/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/th/LC_MESSAGES/core.po b/locale/th/LC_MESSAGES/core.po index 114aa105ab..ccedd57bcc 100644 --- a/locale/th/LC_MESSAGES/core.po +++ b/locale/th/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "บทบาทพื้นฐานสําหรับจัดการการปรับแต่งระบบผ่านทางการวาง, การตั้งค่าปริยาย และการตรวจสอบหน่วย" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "ส่วนติดต่อการจัดการเบราว์เซอร์สําหรับ SeaweedFS ร้านขายวัตถุ ให้บริการแฟ้มและเครื่องควบคุมหลักหลัง SSO" @@ -902,6 +902,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "เซิร์ฟเวอร์บริการ NFS ของ Keptember สําหรับส่งออกไดเร็กทอรีต้นไม้ใช้งานร่วมกัน โดยมีการจํากัดการเข้าถึงเครื่องจัดการข้อมูลประเภท PP" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "เครื่องยนต์แปลแบบ LLM แบบวนเสียง LibreTranslate APIสําหรับท่อส่งน้ํา ที่เรียกว่าโดยตรง" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1118,6 +1123,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "เรียกใช้อัตโนมัติสําหรับการสร้างและสลับพื้นที่โดยใช้สคริปต์สลับแฟ้มแบบโคลน" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "จุด จบ ของ การ แปล จุด หนึ่ง ที่ เลือก เครื่อง ยนต์ เอง และ ชอบ ข้อ ความ ที่ ได้ รับ การ ตรวจ สอบ จาก มนุษย์" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "เปิดหน้าออกจากระบบ" @@ -2024,6 +2034,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "โปรแกรมเรียกดูเครือข่าย Tor และเว็บเบราว์เซอร์สําหรับเรียกดูหน้าเว็บแบบไม่ระบุชื่อ โดยมีความเป็นส่วนตัวที่ถูกโฟกัส" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "ความ ทรง จํา ใน การ แปล, ความ ทรง จํา ของ มัน และ การ ทบทวน ของ มนุษย์ ที่ ไหล เวียน อยู่ เบื้อง หลัง ประตู สู่ การ แปล" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/ti/LC_MESSAGES/core.po b/locale/ti/LC_MESSAGES/core.po index e72b210903..7d4adfcc82 100644 --- a/locale/ti/LC_MESSAGES/core.po +++ b/locale/ti/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/tk/LC_MESSAGES/core.po b/locale/tk/LC_MESSAGES/core.po index b41a6fa32b..1cfab6cfa5 100644 --- a/locale/tk/LC_MESSAGES/core.po +++ b/locale/tk/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/tl/LC_MESSAGES/core.po b/locale/tl/LC_MESSAGES/core.po index 2a19e7fb49..40d1c47b64 100644 --- a/locale/tl/LC_MESSAGES/core.po +++ b/locale/tl/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Base papel para sa systemd manager configuration sa pamamagitan ng drop-ins, default settings, at unit factuation" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Pagitan ng administrasyong Browser SeaweedFS tindahan ng bagay, naglilingkod sa filer at master consoles sa likuran ng SSO" @@ -894,6 +894,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Kernel-level NFS server para sa pagluluwas ng isang kabahaging puno ng directory na may IP-fix access para sa mga host ng bluster-node" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM-backed translation engine na nagsasalita ng LibreTranslate API, para sa mga tubo na tuwirang tumatawag dito" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1099,6 +1104,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "On-target automation para sa paglikha at pagsasaayos ng lugar ng palitan sa pamamagitan ng isang clone na transaksyon ng Profile" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Isang endpoint ng pagsasalin na pumipili sa makina mismo at mas gusto nito ang repleksiyong pantao" + # translated-by: libretranslate msgctxt "logout:open_logout" msgid "Open the logout page" @@ -2014,6 +2024,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor network client at browser launcher para sa hindi kilala, privacy-focused web browse" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Ang memorya sa pagsasalin, mga glossaryo at ang gawaing pagrerepaso ng tao ay nasa likod ng pintuan ng pagsasalin" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/tn/LC_MESSAGES/core.po b/locale/tn/LC_MESSAGES/core.po index 0d268c6a95..a5d6ac2c5d 100644 --- a/locale/tn/LC_MESSAGES/core.po +++ b/locale/tn/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/to/LC_MESSAGES/core.po b/locale/to/LC_MESSAGES/core.po index 8d04247cca..f520e6b998 100644 --- a/locale/to/LC_MESSAGES/core.po +++ b/locale/to/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/tr/LC_MESSAGES/core.po b/locale/tr/LC_MESSAGES/core.po index 1c83bf2751..cca79bd3a1 100644 --- a/locale/tr/LC_MESSAGES/core.po +++ b/locale/tr/LC_MESSAGES/core.po @@ -138,7 +138,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Sistemli yönetici yapılandırması için zemin rolü düşüşler, varsayılan ayarlar ve birim doğrulama" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Tarayıcı yönetimi arayüzü için SeaweedFS object store, filer ve master konsolları SSO arkasındaki servis" @@ -920,6 +920,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "B-restricted access for swarm-node host" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM destekli çeviri motoru konuşması LibreTranslate API, doğrudan çağıran boru hatları için" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1139,6 +1144,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Bir klonlanmış takas senaryosu aracılığıyla takas alanı oluşturmak ve aktive etmek için hedef otomasyon" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Motorun kendisini seçen bir çeviri uç noktası ve incelenen bir insan dizesini tercih eder" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "Oturum kapatma sayfasını aç" @@ -2065,6 +2075,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor network müşteri ve tarayıcı anonim, gizlilik odaklı web taraması için başlatıcı" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Çeviri hafıza, sözlükler ve çeviri ağ geçidinin arkasındaki insan inceleme akışı" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/ts/LC_MESSAGES/core.po b/locale/ts/LC_MESSAGES/core.po index adb033884a..f9621064c8 100644 --- a/locale/ts/LC_MESSAGES/core.po +++ b/locale/ts/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/tt/LC_MESSAGES/core.po b/locale/tt/LC_MESSAGES/core.po index f1a7ca9dcb..a0394d0cb6 100644 --- a/locale/tt/LC_MESSAGES/core.po +++ b/locale/tt/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/tw/LC_MESSAGES/core.po b/locale/tw/LC_MESSAGES/core.po index 75bfdf0777..6a571eb0e0 100644 --- a/locale/tw/LC_MESSAGES/core.po +++ b/locale/tw/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ty/LC_MESSAGES/core.po b/locale/ty/LC_MESSAGES/core.po index 325dd7f334..0d63846c9e 100644 --- a/locale/ty/LC_MESSAGES/core.po +++ b/locale/ty/LC_MESSAGES/core.po @@ -110,7 +110,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -718,6 +718,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -882,6 +886,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1611,6 +1619,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ug/LC_MESSAGES/core.po b/locale/ug/LC_MESSAGES/core.po index 11cda308db..1532fbf167 100644 --- a/locale/ug/LC_MESSAGES/core.po +++ b/locale/ug/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/uk/LC_MESSAGES/core.po b/locale/uk/LC_MESSAGES/core.po index 2d0291ef74..c6c1d7df69 100644 --- a/locale/uk/LC_MESSAGES/core.po +++ b/locale/uk/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Базова роль для налаштування системного управління через краплі, налаштування за замовчуванням та перевірку одиниці" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Інтерфейс адміністрування браузера для SeaweedFS магазин об'єктів, що подають файловий і майстер консолі за SSO" @@ -895,6 +895,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Кернел-рівневий сервер NFS для експорту спільного каталогу з IP-обмеженим доступом для гончарно-необхідних господарів" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM-backed переклад двигуна, що говорить LibreTranslate API, для трубопроводів, які його називають безпосередньо" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1103,6 +1108,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Автоматизована автоматизація для створення та активації клаптового простору за допомогою клонованого сценарію swapfile" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Один кінцевий пункт перекладу, який забирає сам двигун і віддає перевагу рецензованим людським рядком" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "Відкрити сторінку виходу" @@ -2011,6 +2021,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "English, Українська, Français..." +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Переклад пам'яті, глянцевих та рецензійних робіт за перекладом" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/ur/LC_MESSAGES/core.po b/locale/ur/LC_MESSAGES/core.po index 1a1983c7eb..1728598c49 100644 --- a/locale/ur/LC_MESSAGES/core.po +++ b/locale/ur/LC_MESSAGES/core.po @@ -138,7 +138,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "صارف کا انتظامیہ SeaweedFS فائل اور مالک کی خدمت کرنا" @@ -927,6 +927,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Kernel-level NFS سرور کے لیے ایک مشترکہ خانہ بدوش درخت کی برآمد کے لیے جس میں پی آئی-وی-ویپ-ویڈی میزبانوں کے لئے رسائی ہوتی ہے۔" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM پیچھے ہٹ جانے والے مترجم انجن بولتی ہے۔ LibreTranslate API، پائپ لائنوں کے لئے جو اسے براہ راست کہتے ہیں۔" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1140,6 +1145,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "ایک ترجمہ اختتام پزیر ہوتا ہے جو انجن کو خود منتخب کرتا ہے اور انسانی تار کو ترجیح دیتا ہے۔" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "لاگ آؤٹ صفحہ کھولیں" @@ -2081,6 +2091,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "تر نیٹ ورک کلائنٹ اور براؤزر لانچر کے لیے، نجی-focted web infacting کے لیے" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "ترجمہ‌نگاروں اور انسانی جائزہ لینے والے ترجمے کے پیچھے" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/uz/LC_MESSAGES/core.po b/locale/uz/LC_MESSAGES/core.po index 91625bef33..b1b7030e9b 100644 --- a/locale/uz/LC_MESSAGES/core.po +++ b/locale/uz/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/ve/LC_MESSAGES/core.po b/locale/ve/LC_MESSAGES/core.po index 0447938e8e..85895dd389 100644 --- a/locale/ve/LC_MESSAGES/core.po +++ b/locale/ve/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/vi/LC_MESSAGES/core.po b/locale/vi/LC_MESSAGES/core.po index 786a6d0ffa..cc923af928 100644 --- a/locale/vi/LC_MESSAGES/core.po +++ b/locale/vi/LC_MESSAGES/core.po @@ -135,7 +135,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "Vai trò cơ bản cho cấu hình trình quản lý có hệ thống thông qua thả, cài đặt mặc định và hợp lệ hoá đơn vị" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "Giao diện quản lý duyệt cho SeaweedFS Cửa hàng đối tượng, phục vụ bộ phân loại và bàn giao tiếp chủ phía sau SSO" @@ -911,6 +911,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Máy chủ NFS cấp hạt nhân để xuất khẩu một cây thư mục chia sẻ với các máy chủ sở hữu thông tin IP-recited" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "Máy dịch LM-backed nói LibreTranslate APICho các đường ống gọi trực tiếp" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1123,6 +1128,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "Tự động hoạt động để tạo và kích hoạt không gian trao đổi thông qua một tập lệnh trao đổi nhân bản" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "Một điểm kết thúc dịch để tự chọn động cơ và thích một chuỗi người xem xét lại" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "Mở trang đăng xuất" @@ -2037,6 +2047,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Trình khách mạng Tor và phóng tên lửa trình duyệt vô danh, tập trung duyệt mạng cá nhân" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "Bộ nhớ dịch thuật, bản chú giải và công việc duyệt lại của con người nằm sau cánh cổng dịch thuật" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/vo/LC_MESSAGES/core.po b/locale/vo/LC_MESSAGES/core.po index c9d2f8257a..c0494e3a4f 100644 --- a/locale/vo/LC_MESSAGES/core.po +++ b/locale/vo/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/wa/LC_MESSAGES/core.po b/locale/wa/LC_MESSAGES/core.po index 215a524672..36858aa2b4 100644 --- a/locale/wa/LC_MESSAGES/core.po +++ b/locale/wa/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/wo/LC_MESSAGES/core.po b/locale/wo/LC_MESSAGES/core.po index cfdf3495cd..7c579565a5 100644 --- a/locale/wo/LC_MESSAGES/core.po +++ b/locale/wo/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/xh/LC_MESSAGES/core.po b/locale/xh/LC_MESSAGES/core.po index faf7bed0b5..0d3c03a281 100644 --- a/locale/xh/LC_MESSAGES/core.po +++ b/locale/xh/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/yi/LC_MESSAGES/core.po b/locale/yi/LC_MESSAGES/core.po index 47a0f77374..d03d015095 100644 --- a/locale/yi/LC_MESSAGES/core.po +++ b/locale/yi/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/yo/LC_MESSAGES/core.po b/locale/yo/LC_MESSAGES/core.po index d1ca4e7f44..6af8c8a681 100644 --- a/locale/yo/LC_MESSAGES/core.po +++ b/locale/yo/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/za/LC_MESSAGES/core.po b/locale/za/LC_MESSAGES/core.po index b4a26fa5e1..4eadef29b3 100644 --- a/locale/za/LC_MESSAGES/core.po +++ b/locale/za/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/locale/zh/LC_MESSAGES/core.po b/locale/zh/LC_MESSAGES/core.po index f40725bf8c..f314611038 100644 --- a/locale/zh/LC_MESSAGES/core.po +++ b/locale/zh/LC_MESSAGES/core.po @@ -137,7 +137,7 @@ msgid "Base role for systemd manager configuration via drop-ins, default setting msgstr "通过滴入、默认设置和单位验证系统化管理器配置的基础角色" # translated-by: libretranslate -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "浏览器管理界面 SeaweedFS 对象存储器, 服务 SSO 后面的文件和主控制台" @@ -913,6 +913,11 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "Kernel 级别 NFS 服务器,用于导出一个共享目录树,其中对swarm-node 主机的 IP 限制访问" +# translated-by: libretranslate +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "LLM 支持的翻译引擎 LibreTranslate API直接呼唤它的管道" + # translated-by: libretranslate msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." @@ -1120,6 +1125,11 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "通过克隆的交换文件脚本创建和激活交换空间的在线自动化" +# translated-by: libretranslate +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "一个翻译端点,可以选择引擎本身,更喜欢经过审查的人类弦" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "打开退出页面" @@ -2027,6 +2037,11 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "Tor 网络客户端和浏览器启动器,用于匿名、注重隐私的网页浏览" +# translated-by: libretranslate +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "翻译网关背后的翻译内存、词汇和人文审查工作流程" + # translated-by: libretranslate msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" diff --git a/locale/zu/LC_MESSAGES/core.po b/locale/zu/LC_MESSAGES/core.po index b357a8b6e2..57e344d467 100644 --- a/locale/zu/LC_MESSAGES/core.po +++ b/locale/zu/LC_MESSAGES/core.po @@ -111,7 +111,7 @@ msgctxt "role:sys-daemon:description" msgid "Base role for systemd manager configuration via drop-ins, default settings, and unit validation" msgstr "" -msgctxt "role:web-app-seaweedfs-console:description" +msgctxt "role:web-app-seaweedfs:description" msgid "Browser administration interface for the SeaweedFS object store, serving the filer and master consoles behind SSO" msgstr "" @@ -719,6 +719,10 @@ msgctxt "role:svc-storage-nfs-server:description" msgid "Kernel-level NFS server for exporting a shared directory tree with IP-restricted access for swarm-node hosts" msgstr "" +msgctxt "role:svc-ai-ltengine:description" +msgid "LLM-backed translation engine speaking the LibreTranslate API, for pipelines that call it directly" +msgstr "" + msgctxt "menu:Education:description" msgid "Learning platforms, classroom collaboration tools, and digital education environments." msgstr "" @@ -883,6 +887,10 @@ msgctxt "role:svc-opt-swapfile:description" msgid "On-target automation for creating and activating swap space via a cloned swapfile script" msgstr "" +msgctxt "role:web-svc-translate:description" +msgid "One translation endpoint that picks the engine itself and prefers a reviewed human string" +msgstr "" + msgctxt "logout:open_logout" msgid "Open the logout page" msgstr "" @@ -1612,6 +1620,10 @@ msgctxt "role:dsk-torbrowser:description" msgid "Tor network client and browser launcher for anonymous, privacy-focused web browsing" msgstr "" +msgctxt "role:web-app-weblate:description" +msgid "Translation memory, glossaries and the human review workflow behind the translation gateway" +msgstr "" + msgctxt "role:dsk-virtualbox:description" msgid "Type-2 hypervisor for virtual machines on Pacman workstations, with kernel modules and extension pack" msgstr "" diff --git a/plugins/filter/README.md b/plugins/filter/README.md index 7312a1d39a..44bfac94af 100644 --- a/plugins/filter/README.md +++ b/plugins/filter/README.md @@ -11,7 +11,7 @@ This directory contains custom **Ansible filter plugins** used within the Infini ### Examples ```jinja2 -{{ role_name | get_entity_name }} +{{ role_name | entity_name }} {{ my_list | unique }} {{ user_email | regex_replace('^(.+)@.*$', '\\1') }} ```` diff --git a/plugins/filter/canonical_domains_map.py b/plugins/filter/canonical_domains_map.py index 79cf007ae0..4319b3ad55 100644 --- a/plugins/filter/canonical_domains_map.py +++ b/plugins/filter/canonical_domains_map.py @@ -5,7 +5,7 @@ from ansible.errors import AnsibleError, AnsibleFilterError from utils.domains.list import render_domain_value from utils.roles.dependency_resolver import RoleDependencyResolver -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.templating.ansible import render_ansible_strict @@ -120,14 +120,14 @@ class FilterModule: return result def _add_default_domain(self, app_id, domain_primary, seen_domains, result): - entity_name = get_entity_name(app_id) + entity = entity_name(app_id) dp = str(domain_primary) if "{{" in dp or "}}" in dp or "{%" in dp: raise AnsibleFilterError( f"canonical_domains_map: domain_primary is not rendered " f"(contains Jinja expression): {domain_primary!r}" ) - default_domain = f"{entity_name}.{dp}" + default_domain = f"{entity}.{dp}" if default_domain in seen_domains: raise AnsibleFilterError( f"Domain '{default_domain}' is already configured for " diff --git a/plugins/filter/get/entity_name.py b/plugins/filter/get/entity_name.py index ab21fba8af..537c87bfa8 100644 --- a/plugins/filter/get/entity_name.py +++ b/plugins/filter/get/entity_name.py @@ -1,8 +1,8 @@ -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name class FilterModule: def filters(self): return { - "get_entity_name": get_entity_name, + "entity_name": entity_name, } diff --git a/plugins/filter/memory_filters.py b/plugins/filter/memory_filters.py index e0f18f45e6..e8837d5eab 100644 --- a/plugins/filter/memory_filters.py +++ b/plugins/filter/memory_filters.py @@ -5,7 +5,7 @@ import re from ansible.errors import AnsibleFilterError from utils.roles.applications.config import get -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name _UNIT_RE = re.compile(r"^\s*(\d+(?:\.\d+)?)\s*([kKmMgGtT]?[bB]?)?\s*$") _FACTORS = { @@ -62,7 +62,7 @@ def _to_mb(v: str) -> int: def _svc(app_id: str) -> str: """Resolve the internal service name for JVM-based applications.""" - return get_entity_name(app_id) + return entity_name(app_id) def _mem_limit_mb(apps: dict, app_id: str) -> int: diff --git a/plugins/filter/resource_filter.py b/plugins/filter/resource_filter.py index d449c4399d..ed65fcbccb 100644 --- a/plugins/filter/resource_filter.py +++ b/plugins/filter/resource_filter.py @@ -7,7 +7,7 @@ from utils.roles.applications.config import ( ConfigEntryNotSetError, get, ) -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name _UNSET = object() @@ -73,11 +73,11 @@ def resource_filter( ): """ Lookup order: - 1) services.. - 2) services.. + 1) services.. + 2) services.. 3) hard_default (mandatory) - - service_name may be "" → will resolve to get_entity_name(application_id). + - service_name may be "" → will resolve to entity_name(application_id). - hard_default is mandatory (no implicit None). - required=False always. - host_cpus, when given, resolves a percentage through @@ -85,7 +85,7 @@ def resource_filter( so that ``cpus: 50%`` in services.yml means half of the host. """ try: - entity = get_entity_name(application_id) + entity = entity_name(application_id) primary_service = service_name if service_name != "" else entity value = _UNSET for candidate in dict.fromkeys([primary_service, entity]): diff --git a/plugins/lookup/bounded_name.py b/plugins/lookup/bounded_name.py index 7c8edc390d..a2eda9527a 100644 --- a/plugins/lookup/bounded_name.py +++ b/plugins/lookup/bounded_name.py @@ -7,7 +7,7 @@ from ansible.plugins.loader import lookup_loader from ansible.plugins.lookup import LookupBase from utils.domains.primary_domain import get_domain -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name class LookupModule(LookupBase): @@ -67,4 +67,4 @@ class LookupModule(LookupBase): name = str(domain or "") if 0 < len(name) <= limit: return [name] - return [get_entity_name(application_id)] + return [entity_name(application_id)] diff --git a/plugins/lookup/canonical_url.py b/plugins/lookup/canonical_url.py index 2a173ede50..c6ce5eb964 100644 --- a/plugins/lookup/canonical_url.py +++ b/plugins/lookup/canonical_url.py @@ -31,7 +31,7 @@ from ansible.plugins.loader import lookup_loader from ansible.plugins.lookup import LookupBase from utils.domains.primary_domain import get_primary_domain -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.tls_common import ( align_domain_to_consumer, as_str, @@ -69,7 +69,7 @@ class LookupModule(LookupBase): consumer_app = applications.get(consumer, {}) if not isinstance(consumer_app, dict): consumer_app = {} - binding = consumer_app.get("services", {}).get(get_entity_name(app_id), {}) + binding = consumer_app.get("services", {}).get(entity_name(app_id), {}) if not (isinstance(binding, dict) and binding.get("enabled")): return [""] diff --git a/plugins/lookup/compose_networks.py b/plugins/lookup/compose_networks.py index 8a67620e33..dac99b42ac 100644 --- a/plugins/lookup/compose_networks.py +++ b/plugins/lookup/compose_networks.py @@ -18,7 +18,7 @@ from ansible.plugins.lookup import LookupBase from utils.networks.lookup_context import build_context, resolve_var from utils.networks.render import render_compose_networks -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name class LookupModule(LookupBase): @@ -50,7 +50,7 @@ class LookupModule(LookupBase): application_id=str(application_id), deployment_mode=ctx.deployment_mode, registry=ctx.registry, - get_entity_name=get_entity_name, + entity_name=entity_name, lookup_config=ctx.lookup_config, lookup_database=ctx.lookup_database, swarm_encrypted=swarm_encrypted, diff --git a/plugins/lookup/compose_volumes.py b/plugins/lookup/compose_volumes.py index 4a2cd198d5..03bfbd3f40 100644 --- a/plugins/lookup/compose_volumes.py +++ b/plugins/lookup/compose_volumes.py @@ -15,7 +15,7 @@ from ansible.plugins.lookup import LookupBase from plugins.filter.docker.service_enabled import ( FilterModule as _DockerServiceEnabledFilter, ) -from plugins.filter.get.entity_name import get_entity_name +from plugins.filter.get.entity_name import entity_name # nocheck: lookup-cache-import (raw-volume accessor: canonical meta/volumes.yml shape) from utils.cache.applications import get_canonical_volumes @@ -39,7 +39,7 @@ from utils.templating.ansible import _trust_as_template, to_plain def _resolve_database_volume_name( applications: dict[str, Any], application_id: str, dbtype: str ) -> str: - consumer_entity = get_entity_name(application_id) + consumer_entity = entity_name(application_id) db_id = f"svc-db-{dbtype}" central_name = get( applications=applications, @@ -136,7 +136,7 @@ def compose_volumes( f"compose_volumes: unknown application_id '{application_id}'" ) - role_entity = get_entity_name(application_id) + role_entity = entity_name(application_id) volumes: dict[str, Any] = {} configs: dict[str, Any] = {} secrets: dict[str, Any] = {} @@ -185,7 +185,7 @@ def compose_volumes( ) ) if engine_enabled and not engine_shared: - volumes[engine] = {"name": f"{get_entity_name(application_id)}_{engine}"} + volumes[engine] = {"name": f"{entity_name(application_id)}_{engine}"} sso = get_sso_config(applications, application_id) @@ -320,7 +320,7 @@ class LookupModule(LookupBase): if not source: return extra_configs - entity = get_entity_name(application_id) + entity = entity_name(application_id) return { **(extra_configs or {}), REALIGN_CONFIG_KEY: { diff --git a/plugins/lookup/container_address.py b/plugins/lookup/container_address.py index a79ba94660..7071111b8b 100644 --- a/plugins/lookup/container_address.py +++ b/plugins/lookup/container_address.py @@ -39,7 +39,7 @@ Examples:: Both terms (application_id, service_key) are required. ``services..name`` must exist in the resolved application config; the stack name is derived from ``application_id`` via the -``get_entity_name`` filter (matching how ``docker stack deploy`` +``entity_name`` filter (matching how ``docker stack deploy`` names the stack in ``sys-svc-compose/handlers/main.yml``). """ @@ -53,7 +53,7 @@ from ansible.errors import AnsibleError from ansible.plugins.loader import lookup_loader from ansible.plugins.lookup import LookupBase -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name def _as_str(value: Any) -> str: @@ -75,7 +75,7 @@ def _resolve_bare_name( ) entry = services.get(service_key) if not isinstance(entry, dict) and service_key == "application": - entity = get_entity_name(application_id) + entity = entity_name(application_id) if entity: entry = services.get(entity) if not isinstance(entry, dict): @@ -140,7 +140,7 @@ class LookupModule(LookupBase): if deployment_mode != "swarm": return [bare_name] - stack_name = get_entity_name(application_id) + stack_name = entity_name(application_id) if not stack_name: raise AnsibleError( f"container_address: cannot derive stack name from " diff --git a/plugins/lookup/container_networks.py b/plugins/lookup/container_networks.py index 5bed7737cb..1bc105c1a1 100644 --- a/plugins/lookup/container_networks.py +++ b/plugins/lookup/container_networks.py @@ -20,7 +20,7 @@ from ansible.plugins.lookup import LookupBase from utils.networks.lookup_context import build_context, resolve_var from utils.networks.render import render_container_networks -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name class LookupModule(LookupBase): @@ -46,7 +46,7 @@ class LookupModule(LookupBase): application_id=str(application_id), deployment_mode=ctx.deployment_mode, registry=ctx.registry, - get_entity_name=get_entity_name, + entity_name=entity_name, lookup_config=ctx.lookup_config, lookup_database=ctx.lookup_database, provider_self_alias=bool(kwargs.get("provider_self_alias", True)), diff --git a/plugins/lookup/container_service.py b/plugins/lookup/container_service.py index 71a7bba480..de0004a898 100644 --- a/plugins/lookup/container_service.py +++ b/plugins/lookup/container_service.py @@ -14,7 +14,7 @@ Returns a string safe to embed unchanged into a shell command: * Swarm mode - `_`, matching how Docker Swarm names every service and how `container service ps` accepts them. The stack name is derived from ``application_id`` via the - ``get_entity_name`` filter, mirroring how ``docker stack deploy`` + ``entity_name`` filter, mirroring how ``docker stack deploy`` composes the stack name in ``sys-svc-compose/handlers/main.yml``. @@ -32,7 +32,7 @@ from ansible.errors import AnsibleError from ansible.plugins.loader import lookup_loader from ansible.plugins.lookup import LookupBase -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name def _as_str(value: Any) -> str: @@ -54,7 +54,7 @@ def _resolve_bare_name( ) entry = services.get(service_key) if not isinstance(entry, dict) and service_key == "application": - entity = get_entity_name(application_id) + entity = entity_name(application_id) if entity: entry = services.get(entity) if not isinstance(entry, dict): @@ -113,7 +113,7 @@ class LookupModule(LookupBase): if deployment_mode != "swarm": return [bare_name] - stack_name = get_entity_name(application_id) + stack_name = entity_name(application_id) if not stack_name: raise AnsibleError( f"container_service: cannot derive stack name from " diff --git a/plugins/lookup/cpus.py b/plugins/lookup/cpus.py index 863dd8929f..5d8612a385 100644 --- a/plugins/lookup/cpus.py +++ b/plugins/lookup/cpus.py @@ -20,7 +20,7 @@ from ansible.plugins.lookup import LookupBase from plugins.filter.resource_filter import resolve_cpus from plugins.lookup.config import LookupModule as ConfigLookup from plugins.lookup.resource import LookupModule as ResourceLookup -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name class LookupModule(LookupBase): @@ -38,7 +38,7 @@ class LookupModule(LookupBase): vars_ = variables or getattr(self._templar, "available_variables", {}) or {} application_id = str(terms[0]) service_name = ( - str(terms[1]) if len(terms) == 2 else get_entity_name(application_id) + str(terms[1]) if len(terms) == 2 else entity_name(application_id) ) configured = ConfigLookup().run( diff --git a/plugins/lookup/current_play_redirect_domains.py b/plugins/lookup/current_play_redirect_domains.py index e4317a0297..45417f0f8c 100644 --- a/plugins/lookup/current_play_redirect_domains.py +++ b/plugins/lookup/current_play_redirect_domains.py @@ -10,7 +10,7 @@ from ansible.plugins.lookup import LookupBase from plugins.filter.merge.mapping import merge_mapping from utils.domains.list import render_domain_value -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name def _per_app_redirect_mappings( @@ -52,7 +52,7 @@ def _per_app_redirect_mappings( return values def _default_domain(app_id: str) -> str: - return f"{get_entity_name(app_id)}.{primary_domain}" + return f"{entity_name(app_id)}.{primary_domain}" canonical_map: dict[str, list[str]] = {} for app_id, cfg in apps.items(): diff --git a/plugins/lookup/database.py b/plugins/lookup/database.py index 710d95d1e6..24feed1b98 100644 --- a/plugins/lookup/database.py +++ b/plugins/lookup/database.py @@ -16,7 +16,7 @@ from utils.roles.applications.services.database import ( get_database_service_config, resolve_database_service_key, ) -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name def _swarm_address(bin_resolver: str, stack_name: str, service_key: str) -> str: @@ -75,7 +75,7 @@ class LookupModule(LookupBase): ): path_instances = self._templar.template(path_instances) - consumer_entity = get_entity_name(consumer_id) + consumer_entity = entity_name(consumer_id) try: dbtype = resolve_database_service_key(applications, consumer_id) @@ -193,11 +193,11 @@ class LookupModule(LookupBase): skip_missing_app=True, ) - env_dir = f"{path_instances}{get_entity_name(consumer_id)}/.env/" + env_dir = f"{path_instances}{entity_name(consumer_id)}/.env/" env = f"{env_dir}{dbtype}.env" realign_sql = f"{env_dir}{dbtype}-realign.sql" - initdb_dir = f"{path_instances}{get_entity_name(consumer_id)}/.initdb.d/" - build_dir = f"{path_instances}{get_entity_name(consumer_id)}/.postgres-build/" + initdb_dir = f"{path_instances}{entity_name(consumer_id)}/.initdb.d/" + build_dir = f"{path_instances}{entity_name(consumer_id)}/.postgres-build/" jdbc_scheme = dbtype if dbtype == "mariadb" else "postgresql" url_jdbc = f"jdbc:{jdbc_scheme}://{host}:{port}/{name}" diff --git a/plugins/lookup/engine.py b/plugins/lookup/engine.py index a18a0f93f7..22113aaaff 100644 --- a/plugins/lookup/engine.py +++ b/plugins/lookup/engine.py @@ -29,7 +29,7 @@ from utils.roles.applications.services.engines import ( is_engine_enabled, is_engine_shared, ) -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name _FIELDS = ( "engine", @@ -102,7 +102,7 @@ class LookupModule(LookupBase): descriptor = ENGINES[engine] svc_id = descriptor["svc"] port = int(descriptor["port"]) - entity = get_entity_name(consumer_id) + entity = entity_name(consumer_id) enabled = is_engine_enabled(applications, consumer_id, engine) shared = is_engine_shared(applications, consumer_id, engine) diff --git a/plugins/lookup/image.py b/plugins/lookup/image.py index 02cd1cef95..7d0d148db3 100644 --- a/plugins/lookup/image.py +++ b/plugins/lookup/image.py @@ -24,7 +24,7 @@ containers that do not appear in the services map). Locally-built images are declared once, in the service's config: ``services..custom: true`` names the image ``_custom`` (where ```` comes from -``utils.roles.entity.name.get_entity_name``) shared across an app's +``utils.roles.entity.name.entity_name``) shared across an app's custom services, while a non-empty STRING names it ``_custom`` for a second, distinct custom image inside one app (where the shared ``_custom`` would collide). The compose template's ``build:`` @@ -57,7 +57,7 @@ from ansible.errors import AnsibleError from ansible.plugins.loader import lookup_loader from ansible.plugins.lookup import LookupBase -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name try: from ansible.utils.display import Display @@ -167,7 +167,7 @@ class LookupModule(LookupBase): if isinstance(custom, str) and custom.strip(): custom_base = custom.strip() else: - custom_base = _as_str(get_entity_name(application_id)) + custom_base = _as_str(entity_name(application_id)) if not custom_base: raise AnsibleError( f"image: cannot derive entity name from " diff --git a/plugins/lookup/minio.py b/plugins/lookup/minio.py index 509ba6ded0..49d5461dc4 100644 --- a/plugins/lookup/minio.py +++ b/plugins/lookup/minio.py @@ -8,10 +8,10 @@ from ansible.plugins.lookup import LookupBase from utils.manager.credential_key import OVERRIDE_SECTION from utils.roles.applications.config import get -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name MINIO_PROVIDER_ROLE = "web-app-minio" -MINIO_SERVICE_KEY = get_entity_name(MINIO_PROVIDER_ROLE) +MINIO_SERVICE_KEY = entity_name(MINIO_PROVIDER_ROLE) class LookupModule(LookupBase): @@ -61,7 +61,7 @@ class LookupModule(LookupBase): ).run([], variables=vars_)[0] path_instances = self._require_var(vars_, "DIR_COMPOSITIONS") - consumer_entity = get_entity_name(consumer_id) + consumer_entity = entity_name(consumer_id) enabled = bool( get( @@ -97,7 +97,7 @@ class LookupModule(LookupBase): host = central_name if central_enabled else MINIO_SERVICE_KEY network = ( - get_entity_name(MINIO_PROVIDER_ROLE) if central_enabled else consumer_entity + entity_name(MINIO_PROVIDER_ROLE) if central_enabled else consumer_entity ) container = ( central_name diff --git a/plugins/lookup/native_metrics_target.py b/plugins/lookup/native_metrics_target.py index 201f517f32..78d74f213c 100644 --- a/plugins/lookup/native_metrics_target.py +++ b/plugins/lookup/native_metrics_target.py @@ -16,7 +16,7 @@ from ansible.plugins.loader import lookup_loader from ansible.plugins.lookup import LookupBase from utils.roles.applications.config import get -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name class LookupModule(LookupBase): @@ -59,7 +59,7 @@ class LookupModule(LookupBase): f"services.prometheus.native_metrics.port for {application_id!r}" ) - service_key = conf("service_key") or get_entity_name(application_id) + service_key = conf("service_key") or entity_name(application_id) if not service_key: raise AnsibleError( f"native_metrics_target: cannot derive service key for {application_id!r}" diff --git a/plugins/lookup/objstore.py b/plugins/lookup/objstore.py index 86fdad854c..8e47e743fb 100644 --- a/plugins/lookup/objstore.py +++ b/plugins/lookup/objstore.py @@ -9,7 +9,7 @@ from ansible.plugins.lookup import LookupBase from utils.manager.credential_key import OVERRIDE_SECTION from utils.roles.applications.config import get -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.tls_common import resolve_enabled OBJSTORE_ENGINES = ("seaweedfs", "minio") @@ -75,7 +75,7 @@ class LookupModule(LookupBase): templar=getattr(self, "_templar", None), ).run([], variables=vars_)[0] path_instances = self._require_var(vars_, "DIR_COMPOSITIONS") - consumer_entity = get_entity_name(consumer_id) + consumer_entity = entity_name(consumer_id) active = [ e for e in OBJSTORE_ENGINES if _is_enabled(applications, consumer_id, e) @@ -142,7 +142,7 @@ class LookupModule(LookupBase): ).strip() or engine host = central_name if central_enabled else engine - network = get_entity_name(provider_role) if central_enabled else consumer_entity + network = entity_name(provider_role) if central_enabled else consumer_entity container = central_name if central_enabled else f"{consumer_entity}-{engine}" port = get( applications, diff --git a/plugins/lookup/roles_with_service.py b/plugins/lookup/roles_with_service.py index afb6bfe7d6..aa37e91320 100644 --- a/plugins/lookup/roles_with_service.py +++ b/plugins/lookup/roles_with_service.py @@ -58,7 +58,7 @@ from utils.roles.applications.mcp import ( DEFAULT_MCP_TRANSPORT, derive_allowed_consumers, ) -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name if TYPE_CHECKING: from collections.abc import Sequence @@ -179,7 +179,7 @@ class LookupModule(LookupBase): continue if deployed is not None and str(role_id) not in deployed: continue - if get_entity_name(str(role_id)) == service_name: + if entity_name(str(role_id)) == service_name: continue canonical = _resolve_canonical_domain(str(role_id), app_config) if not canonical and direction is None and not include_headless: diff --git a/plugins/lookup/scrape_target.py b/plugins/lookup/scrape_target.py index 06190f50be..4379bd47bc 100644 --- a/plugins/lookup/scrape_target.py +++ b/plugins/lookup/scrape_target.py @@ -13,7 +13,7 @@ from ansible.plugins.loader import lookup_loader from ansible.plugins.lookup import LookupBase from utils.roles.applications.config import get -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name def _as_str(value: Any) -> str: @@ -82,7 +82,7 @@ class LookupModule(LookupBase): ) if deployment_mode == "swarm": - entity = get_entity_name(application_id) + entity = entity_name(application_id) if not entity: raise AnsibleError( f"scrape_target: cannot derive entity from {application_id!r}" diff --git a/plugins/lookup/shared_network_key.py b/plugins/lookup/shared_network_key.py index 6cee319c2d..0e3ad9e4c6 100644 --- a/plugins/lookup/shared_network_key.py +++ b/plugins/lookup/shared_network_key.py @@ -29,7 +29,7 @@ from ansible.plugins.lookup import LookupBase from utils.networks.lookup_context import build_context, resolve_var from utils.networks.render import shared_network_compose_key -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name class LookupModule(LookupBase): @@ -52,7 +52,7 @@ class LookupModule(LookupBase): application_id=application_id, deployment_mode=ctx.deployment_mode, registry=ctx.registry, - get_entity_name=get_entity_name, + entity_name=entity_name, lookup_config=ctx.lookup_config, lookup_database=ctx.lookup_database, node_local=bool(kwargs.get("node_local", False)), diff --git a/roles/svc-ai-agent-broker/vars/main.yml b/roles/svc-ai-agent-broker/vars/main.yml index 3ed8551399..d59e82577b 100644 --- a/roles/svc-ai-agent-broker/vars/main.yml +++ b/roles/svc-ai-agent-broker/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "svc-ai-agent-broker" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" AGENT_BROKER_CONTAINER: "{{ lookup('config', application_id, 'services.agent-broker.name') }}" AGENT_BROKER_PORT: "{{ lookup('config', application_id, 'services.agent-broker.ports.internal.http') }}" diff --git a/roles/svc-ai-jupyter/vars/main.yml b/roles/svc-ai-jupyter/vars/main.yml index ff917a5876..5d05dff896 100644 --- a/roles/svc-ai-jupyter/vars/main.yml +++ b/roles/svc-ai-jupyter/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "svc-ai-jupyter" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" JUPYTER_CONTAINER: "{{ lookup('config', application_id, 'services.jupyter.name') }}" JUPYTER_PORT: "{{ lookup('config', application_id, 'services.jupyter.ports.internal.http') }}" diff --git a/roles/svc-ai-libretranslate-engine/vars/main.yml b/roles/svc-ai-libretranslate-engine/vars/main.yml index 74aa9ded24..72e30a8353 100644 --- a/roles/svc-ai-libretranslate-engine/vars/main.yml +++ b/roles/svc-ai-libretranslate-engine/vars/main.yml @@ -1,7 +1,7 @@ --- application_id: svc-ai-libretranslate-engine -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" LIBRETRANSLATE_ENGINE_SERVICE: "{{ entity_name }}" LIBRETRANSLATE_ENGINE_IMAGE: "{{ lookup('config', application_id, 'services.libretranslate-engine.image') }}" diff --git a/roles/svc-ai-litellm/vars/main.yml b/roles/svc-ai-litellm/vars/main.yml index bab7ce1b8f..38ce6444b3 100644 --- a/roles/svc-ai-litellm/vars/main.yml +++ b/roles/svc-ai-litellm/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "svc-ai-litellm" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" LITELLM_CONTAINER: "{{ lookup('config', application_id, 'services.litellm.name') }}" LITELLM_PORT: "{{ lookup('config', application_id, 'services.litellm.ports.internal.http') }}" @@ -26,6 +26,14 @@ LITELLM_ROUTER_SAMPLE_TRIGGER: "{{ lookup('config', application_id, 'services.li LITELLM_ROUTER_SAMPLE_INTERVAL: "{{ lookup('config', application_id, 'services.litellm.router.sample.interval') }}" LITELLM_ROUTER_SAMPLE_WIDTH: "{{ lookup('config', application_id, 'services.litellm.router.sample.width') }}" LITELLM_ROUTER_HOOK_PATH_HOST: "{{ [ lookup('container', application_id, 'directories.config'), 'router_hook.py' ] | path_join }}" + +LITELLM_DECIDER_SOURCE_DIR: "{{ lookup('path_absolute', 'roles/svc-ai-s1/files/python/infinito_decider') }}" +LITELLM_DECIDER_DIR_HOST: "{{ [ lookup('container', application_id, 'directories.config'), 'infinito_decider' ] | path_join }}" +LITELLM_DECIDER_MODULES: + - __init__.py + - history.py + - judge.py + - sampling.py LITELLM_SPEED_PATH_HOST: "{{ [ lookup('container', application_id, 'directories.config'), 'measured_speed.json' ] | path_join }}" LITELLM_CONFIG_PATH_HOST: "{{ [ lookup('container', application_id, 'directories.config'), 'config.yaml' ] | path_join }}" LITELLM_CONFIG_PATH_DOCKER: "{{ lookup('volume', application_id, 'litellm_config').target }}" @@ -39,6 +47,11 @@ LITELLM_SERVED_PROVIDERS: "{{ LITELLM_KEYED_PROVIDERS + [AI_MOCK_PROVIDER] }}" LITELLM_UNRANKED_ALIASES: "{{ ([LITELLM_ROUTER_ALIAS] + (LITELLM_REMOTE_MODELS | selectattr('provider', 'equalto', AI_MOCK_PROVIDER) | map(attribute='alias') | list)) | join(',') }}" LITELLM_REMOTE_MODELS: "{{ lookup('config', application_id, 'services.litellm.remote_models') }}" +LITELLM_TEST_CONTRACT: + ollama: "{{ LITELLM_OLLAMA_BACKEND | bool }}" + lmstudio: "{{ LITELLM_LMSTUDIO_BACKEND | bool }}" + served: "{{ LITELLM_CHAT_MODEL_SERVED | bool }}" + LITELLM_UI_ROLE: "web-app-litellm" LITELLM_UI_SSO: "{{ (LITELLM_UI_ROLE in group_names) and (lookup('sso', LITELLM_UI_ROLE, 'is_oidc_native') | bool) }}" LITELLM_UI_BASE_URL: "{{ lookup('tls', LITELLM_UI_ROLE, 'url.base') }}" diff --git a/roles/svc-ai-lmstudio/vars/main.yml b/roles/svc-ai-lmstudio/vars/main.yml index 1a01d8eb02..c8c57f1a1a 100644 --- a/roles/svc-ai-lmstudio/vars/main.yml +++ b/roles/svc-ai-lmstudio/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "svc-ai-lmstudio" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" LMSTUDIO_CONTAINER: "{{ lookup('config', application_id, 'services.lmstudio.name') }}" LMSTUDIO_IMAGE: "{{ lookup('config', application_id, 'services.lmstudio.image') }}" diff --git a/roles/svc-ai-mcp-adapter/vars/main.yml b/roles/svc-ai-mcp-adapter/vars/main.yml index ff43879434..051670fcf6 100644 --- a/roles/svc-ai-mcp-adapter/vars/main.yml +++ b/roles/svc-ai-mcp-adapter/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "svc-ai-mcp-adapter" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" MCP_ADAPTER_CONTAINER: "{{ lookup('config', application_id, 'services.mcp-adapter.name') }}" MCP_ADAPTER_PORT: "{{ lookup('config', application_id, 'services.mcp-adapter.ports.internal.http') }}" diff --git a/roles/svc-ai-ollama/vars/main.yml b/roles/svc-ai-ollama/vars/main.yml index 125f6eae56..3388a65f9e 100644 --- a/roles/svc-ai-ollama/vars/main.yml +++ b/roles/svc-ai-ollama/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "svc-ai-ollama" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" OLLAMA_CONTAINER: "{{ lookup('config', application_id, 'services.ollama.name') }}" OLLAMA_PORT: "{{ lookup('config', application_id, 'services.ollama.ports.internal.http') }}" diff --git a/roles/svc-ai-s1/vars/main.yml b/roles/svc-ai-s1/vars/main.yml index 618a9e0287..15187ac7ac 100644 --- a/roles/svc-ai-s1/vars/main.yml +++ b/roles/svc-ai-s1/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "svc-ai-s1" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" S1_CONTAINER: "{{ lookup('config', application_id, 'services.s1.name') }}" S1_PORT: "{{ lookup('config', application_id, 'services.s1.ports.internal.http') }}" diff --git a/roles/svc-ai-searxng/vars/main.yml b/roles/svc-ai-searxng/vars/main.yml index 1841e082ba..22ec2370c7 100644 --- a/roles/svc-ai-searxng/vars/main.yml +++ b/roles/svc-ai-searxng/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "svc-ai-searxng" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" SEARXNG_CONTAINER: "{{ lookup('config', application_id, 'services.searxng.name') }}" SEARXNG_PORT: "{{ lookup('config', application_id, 'services.searxng.ports.internal.http') }}" diff --git a/roles/svc-ai-tika/vars/main.yml b/roles/svc-ai-tika/vars/main.yml index d6d0a05091..3895ab4b76 100644 --- a/roles/svc-ai-tika/vars/main.yml +++ b/roles/svc-ai-tika/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "svc-ai-tika" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" TIKA_CONTAINER: "{{ lookup('config', application_id, 'services.tika.name') }}" TIKA_PORT: "{{ lookup('config', application_id, 'services.tika.ports.internal.http') }}" diff --git a/roles/svc-bkp-local-2-device/vars/main.yml b/roles/svc-bkp-local-2-device/vars/main.yml index e51b4b758f..9df0644b9f 100644 --- a/roles/svc-bkp-local-2-device/vars/main.yml +++ b/roles/svc-bkp-local-2-device/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "svc-bkp-local-2-device" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" system_service_id: "{{ application_id }}" BACKUP_TO_USB_DESTINATION: "{{ BACKUP_TO_USB_MOUNT}}{{ BACKUP_TO_USB_TARGET }}" diff --git a/roles/svc-bkp-volume-2-local/lookup_plugins/backup_hard_restart_projects.py b/roles/svc-bkp-volume-2-local/lookup_plugins/backup_hard_restart_projects.py index 08bef5ec8e..7411135065 100644 --- a/roles/svc-bkp-volume-2-local/lookup_plugins/backup_hard_restart_projects.py +++ b/roles/svc-bkp-volume-2-local/lookup_plugins/backup_hard_restart_projects.py @@ -6,7 +6,7 @@ from typing import Any from ansible.plugins.loader import lookup_loader from ansible.plugins.lookup import LookupBase -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name class LookupModule(LookupBase): @@ -44,6 +44,6 @@ class LookupModule(LookupBase): if isinstance(backup, Mapping) and backup.get( "project_hard_restart" ): - entities.add(get_entity_name(application_id)) + entities.add(entity_name(application_id)) break return [sorted(entities)] diff --git a/roles/svc-cache-package/vars/main.yml b/roles/svc-cache-package/vars/main.yml index cf5ccd98fc..3f68c08c2b 100644 --- a/roles/svc-cache-package/vars/main.yml +++ b/roles/svc-cache-package/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: svc-cache-package -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" CACHE_PACKAGE_CONTAINER: "{{ lookup('config', application_id, 'services.package.name') }}" CACHE_PACKAGE_FRONTEND_CONTAINER: "{{ lookup('config', application_id, 'services.frontend.name') }}" diff --git a/roles/svc-db-elasticsearch/tasks/01_init.yml b/roles/svc-db-elasticsearch/tasks/01_init.yml index 9c6e13cf58..08038778df 100644 --- a/roles/svc-db-elasticsearch/tasks/01_init.yml +++ b/roles/svc-db-elasticsearch/tasks/01_init.yml @@ -7,7 +7,7 @@ - name: "🔍 Resolve consumer index namespace + credentials" ansible.builtin.set_fact: - elasticsearch_consumer_entity: "{{ database_consumer_id | get_entity_name }}" + elasticsearch_consumer_entity: "{{ database_consumer_id | entity_name }}" elasticsearch_consumer_username: "{{ lookup('engine', 'elasticsearch', database_consumer_id, 'username') }}" elasticsearch_consumer_password: "{{ database_password | default(lookup('engine', 'elasticsearch', database_consumer_id, 'password')) | string }}" changed_when: false diff --git a/roles/svc-db-elasticsearch/vars/main.yml b/roles/svc-db-elasticsearch/vars/main.yml index af2430a228..440c3fb0c8 100644 --- a/roles/svc-db-elasticsearch/vars/main.yml +++ b/roles/svc-db-elasticsearch/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: svc-db-elasticsearch -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" database_type: "{{ entity_name }}" diff --git a/roles/svc-db-mariadb/vars/main.yml b/roles/svc-db-mariadb/vars/main.yml index e013b1f460..f383d01fad 100644 --- a/roles/svc-db-mariadb/vars/main.yml +++ b/roles/svc-db-mariadb/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: svc-db-mariadb -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" database_type: "{{ entity_name }}" MARIADB_ROOT_PWD: "{{ lookup('config', application_id, 'secrets.credentials.root_password') }}" diff --git a/roles/svc-db-memcached/tasks/01_init.yml b/roles/svc-db-memcached/tasks/01_init.yml index 8a9eb760cb..7c9cce371d 100644 --- a/roles/svc-db-memcached/tasks/01_init.yml +++ b/roles/svc-db-memcached/tasks/01_init.yml @@ -19,5 +19,5 @@ ansible.builtin.debug: msg: >- Memcached has no native auth or namespace; consumer '{{ database_consumer_id }}' - is isolated by the key-prefix '{{ database_consumer_id | get_entity_name }}' which + is isolated by the key-prefix '{{ database_consumer_id | entity_name }}' which the 'engine' lookup resolves at consume time. Nothing to provision here. diff --git a/roles/svc-db-memcached/templates/service.yml.j2 b/roles/svc-db-memcached/templates/service.yml.j2 index 6176911370..22803b247f 100644 --- a/roles/svc-db-memcached/templates/service.yml.j2 +++ b/roles/svc-db-memcached/templates/service.yml.j2 @@ -1,7 +1,7 @@ # This template needs to be included in compose.yml, which depend on memcached memcached: {{ lookup('container_image', 'svc-db-memcached', 'memcached') }} - {{ lookup('compose_only', 'container_name', ((application_id | get_entity_name) ~ '-memcached')) }} + {{ lookup('compose_only', 'container_name', ((application_id | entity_name) ~ '-memcached')) }} {{ lookup('compose_restart') }} logging: driver: journald diff --git a/roles/svc-db-memcached/vars/main.yml b/roles/svc-db-memcached/vars/main.yml index 3066f45915..0f44e03c46 100644 --- a/roles/svc-db-memcached/vars/main.yml +++ b/roles/svc-db-memcached/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: svc-db-memcached -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" database_type: "{{ entity_name }}" diff --git a/roles/svc-db-openldap/vars/main.yml b/roles/svc-db-openldap/vars/main.yml index 9d360bac95..e897583808 100644 --- a/roles/svc-db-openldap/vars/main.yml +++ b/roles/svc-db-openldap/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "svc-db-openldap" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" OPENLDAP_PORT: "{{ lookup('config', application_id, 'services.openldap.ports.local.ldap') }}" OPENLDAP_SERVER_URI: "ldap://{{ DOCKER_REACH_HOST }}:{{ OPENLDAP_PORT }}" diff --git a/roles/svc-db-postgres/vars/main.yml b/roles/svc-db-postgres/vars/main.yml index ab4253a155..c4e8ede3fa 100644 --- a/roles/svc-db-postgres/vars/main.yml +++ b/roles/svc-db-postgres/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: svc-db-postgres -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" database_type: "{{ entity_name }}" diff --git a/roles/svc-db-qdrant/tasks/01_init.yml b/roles/svc-db-qdrant/tasks/01_init.yml index b9f4dadd86..1f4f8b60ca 100644 --- a/roles/svc-db-qdrant/tasks/01_init.yml +++ b/roles/svc-db-qdrant/tasks/01_init.yml @@ -19,5 +19,5 @@ ansible.builtin.debug: msg: >- Qdrant consumer '{{ database_consumer_id }}' uses collection prefix - '{{ database_consumer_id | get_entity_name }}_' on central instance + '{{ database_consumer_id | entity_name }}_' on central instance '{{ QDRANT_CONTAINER }}'; nothing to provision server-side. diff --git a/roles/svc-db-qdrant/vars/main.yml b/roles/svc-db-qdrant/vars/main.yml index 05c9d93010..e4fd1e3788 100644 --- a/roles/svc-db-qdrant/vars/main.yml +++ b/roles/svc-db-qdrant/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: svc-db-qdrant -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" database_type: "{{ entity_name }}" diff --git a/roles/svc-db-rabbitmq/tasks/01_init.yml b/roles/svc-db-rabbitmq/tasks/01_init.yml index 92914fbf36..b266f8dc47 100644 --- a/roles/svc-db-rabbitmq/tasks/01_init.yml +++ b/roles/svc-db-rabbitmq/tasks/01_init.yml @@ -7,7 +7,7 @@ - name: "🔍 Resolve consumer vhost + credentials" ansible.builtin.set_fact: - rabbitmq_consumer_vhost: "{{ database_consumer_id | get_entity_name }}" + rabbitmq_consumer_vhost: "{{ database_consumer_id | entity_name }}" rabbitmq_consumer_username: "{{ lookup('engine', 'rabbitmq', database_consumer_id, 'username') }}" rabbitmq_consumer_password: "{{ database_password | default(lookup('engine', 'rabbitmq', database_consumer_id, 'password')) | string }}" changed_when: false diff --git a/roles/svc-db-rabbitmq/vars/main.yml b/roles/svc-db-rabbitmq/vars/main.yml index dc1aa5ffea..3f0b2effc1 100644 --- a/roles/svc-db-rabbitmq/vars/main.yml +++ b/roles/svc-db-rabbitmq/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: svc-db-rabbitmq -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" database_type: "{{ entity_name }}" diff --git a/roles/svc-db-redis/templates/service.yml.j2 b/roles/svc-db-redis/templates/service.yml.j2 index 81ab50548a..dac83a83d4 100644 --- a/roles/svc-db-redis/templates/service.yml.j2 +++ b/roles/svc-db-redis/templates/service.yml.j2 @@ -1,7 +1,7 @@ # This template needs to be included in compose.yml, which depend on redis redis: {{ lookup('container_image', 'svc-db-redis', 'redis') }} - {{ lookup('compose_only', 'container_name', ((application_id | get_entity_name) ~ '-redis')) }} + {{ lookup('compose_only', 'container_name', ((application_id | entity_name) ~ '-redis')) }} {{ lookup('compose_restart') }} logging: driver: journald diff --git a/roles/svc-db-redis/vars/main.yml b/roles/svc-db-redis/vars/main.yml index bffc7cef2f..7da99ed227 100644 --- a/roles/svc-db-redis/vars/main.yml +++ b/roles/svc-db-redis/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: svc-db-redis -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" database_type: "{{ entity_name }}" diff --git a/roles/svc-db-typesense/vars/main.yml b/roles/svc-db-typesense/vars/main.yml index f986dfd1e4..42f0671be4 100644 --- a/roles/svc-db-typesense/vars/main.yml +++ b/roles/svc-db-typesense/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: svc-db-typesense -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" database_type: "{{ entity_name }}" TYPESENSE_API_KEY: "{{ lookup('config', application_id, 'secrets.credentials.api_key') }}" diff --git a/roles/svc-dns-unbound/vars/main.yml b/roles/svc-dns-unbound/vars/main.yml index 0db8887a24..af8f5119a1 100644 --- a/roles/svc-dns-unbound/vars/main.yml +++ b/roles/svc-dns-unbound/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: svc-dns-unbound -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" UNBOUND_CONTAINER: "{{ lookup('config', application_id, 'services.' ~ entity_name ~ '.name') }}" UNBOUND_CONTAINER_ADDRESS: "{{ lookup('container_address', application_id, UNBOUND_CONTAINER) }}" diff --git a/roles/svc-prx-openresty/vars/main.yml b/roles/svc-prx-openresty/vars/main.yml index bb2abdd913..0185425bac 100644 --- a/roles/svc-prx-openresty/vars/main.yml +++ b/roles/svc-prx-openresty/vars/main.yml @@ -1,7 +1,7 @@ --- # General application_id: "svc-prx-openresty" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" # Openresty OPENRESTY_IMAGE: "{{ lookup('config','svc-prx-openresty', 'services.openresty.image') }}" diff --git a/roles/svc-registry-cache/vars/main.yml b/roles/svc-registry-cache/vars/main.yml index dccf5567a1..df7e0eed6e 100644 --- a/roles/svc-registry-cache/vars/main.yml +++ b/roles/svc-registry-cache/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: svc-registry-cache -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" REGISTRY_CACHE_CONTAINER: "{{ lookup('config', application_id, 'services.cache.name') }}" REGISTRY_CACHE_PROXY_REMOTE_URL: "{{ lookup('config', application_id, 'services.cache.proxy.remote_url') }}" diff --git a/roles/svc-registry-docker/vars/main.yml b/roles/svc-registry-docker/vars/main.yml index 2e28f53b0b..1202c499a7 100644 --- a/roles/svc-registry-docker/vars/main.yml +++ b/roles/svc-registry-docker/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: svc-registry-docker -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" REGISTRY_IMAGE: "{{ lookup('config', application_id, 'services.docker.image') }}" REGISTRY_VERSION: "{{ lookup('config', application_id, 'services.docker.version') }}" diff --git a/roles/sys-ctl-cln-disc-space/tasks/00_core.yml b/roles/sys-ctl-cln-disc-space/tasks/00_core.yml index 87285dec9d..38e6695986 100644 --- a/roles/sys-ctl-cln-disc-space/tasks/00_core.yml +++ b/roles/sys-ctl-cln-disc-space/tasks/00_core.yml @@ -24,10 +24,10 @@ - "DEPLOYMENT_MODE={{ DEPLOYMENT_MODE }}" - "BIN_RESOLVE_CONTAINER_ID={{ BIN_RESOLVE_CONTAINER_ID }}" - "NEXTCLOUD_APPLICATION_CONTAINER={{ lookup('config', 'web-app-nextcloud', 'services.nextcloud.name') }}" - - "NEXTCLOUD_APPLICATION_STACK={{ 'web-app-nextcloud' | get_entity_name }}" + - "NEXTCLOUD_APPLICATION_STACK={{ 'web-app-nextcloud' | entity_name }}" - "NEXTCLOUD_APPLICATION_SERVICE_KEY=nextcloud" - "MASTODON_APPLICATION_CONTAINER={{ lookup('config', 'web-app-mastodon', 'services.mastodon.name') }}" - - "MASTODON_APPLICATION_STACK={{ 'web-app-mastodon' | get_entity_name }}" + - "MASTODON_APPLICATION_STACK={{ 'web-app-mastodon' | entity_name }}" - "MASTODON_APPLICATION_SERVICE_KEY=mastodon" - "MASTODON_CLEANUP_DAYS=1" system_service_force_linear_sync: false diff --git a/roles/sys-stk-front-proxy/tasks/main.yml b/roles/sys-stk-front-proxy/tasks/main.yml index 2ee080d001..d0e378481f 100644 --- a/roles/sys-stk-front-proxy/tasks/main.yml +++ b/roles/sys-stk-front-proxy/tasks/main.yml @@ -10,8 +10,8 @@ webserver_proxy_service_key | default( lookup('config', application_id, - 'services.' ~ (application_id | get_entity_name) ~ '.proxy.service_key', - application_id | get_entity_name + 'services.' ~ (application_id | entity_name) ~ '.proxy.service_key', + application_id | entity_name ) ) }} @@ -20,7 +20,7 @@ http_port | default( lookup('config', application_id, - 'services.' ~ (application_id | get_entity_name) ~ '.ports.local.http', + 'services.' ~ (application_id | entity_name) ~ '.ports.local.http', '' ) ) @@ -30,7 +30,7 @@ proxy_internal_port | default( lookup('config', application_id, - 'services.' ~ (application_id | get_entity_name) ~ '.proxy.internal_port', + 'services.' ~ (application_id | entity_name) ~ '.proxy.internal_port', '' ) ) diff --git a/roles/sys-stk-full/tasks/main.yml b/roles/sys-stk-full/tasks/main.yml index b83f9e579a..d838e9f3ee 100644 --- a/roles/sys-stk-full/tasks/main.yml +++ b/roles/sys-stk-full/tasks/main.yml @@ -9,7 +9,7 @@ lookup( 'config', application_id, - 'services.' ~ (application_id | get_entity_name) ~ '.ports.local.http', + 'services.' ~ (application_id | entity_name) ~ '.ports.local.http', '' ) }} diff --git a/roles/sys-svc-compose/TODO.md b/roles/sys-svc-compose/TODO.md index 78894fb6ea..a26f0dd9c5 100644 --- a/roles/sys-svc-compose/TODO.md +++ b/roles/sys-svc-compose/TODO.md @@ -1,3 +1,3 @@ # Todos -- Make network name equal to get_entity_name +- Make network name equal to entity_name diff --git a/roles/sys-svc-compose/handlers/compose.yml b/roles/sys-svc-compose/handlers/compose.yml index 416639c3e8..73841dfb2d 100644 --- a/roles/sys-svc-compose/handlers/compose.yml +++ b/roles/sys-svc-compose/handlers/compose.yml @@ -41,7 +41,7 @@ cmd: >- python/pull.py --chdir {{ lookup('container', application_id, 'directories.instance') }} - --project {{ application_id | get_entity_name }} + --project {{ application_id | entity_name }} --compose-files {{ lookup('compose_file_args', application_id, include_ca=False) | quote }} {% if lookup('container', application_id, 'files.env') is file %} --env-file {{ lookup('container', application_id, 'files.env') }} diff --git a/roles/sys-svc-compose/handlers/swarm.yml b/roles/sys-svc-compose/handlers/swarm.yml index facdcd8727..afc06593b9 100644 --- a/roles/sys-svc-compose/handlers/swarm.yml +++ b/roles/sys-svc-compose/handlers/swarm.yml @@ -149,7 +149,7 @@ --resolve-image never \ --prune \ --with-registry-auth \ - "{{ application_id | get_entity_name }}" + "{{ application_id | entity_name }}" args: chdir: "{{ lookup('container', application_id, 'directories.instance') }}" executable: /bin/bash @@ -164,7 +164,7 @@ - name: "⏳ swarm: wait until stack tasks converge" ansible.builtin.script: "{{ lookup('path_absolute', 'roles/sys-svc-compose/files/shell/swarm/stack_ready.sh') }}" environment: - STACK: "{{ application_id | get_entity_name }}" + STACK: "{{ application_id | entity_name }}" FATAL_GRACE: "{{ swarm_stack_fatal_grace }}" DEPLOY_SINCE: "{{ swarm_deploy_result.stdout_lines | default([]) | first | default('') }}" DEPLOYED_SERVICES: "{{ swarm_deploy_result | swarm_deployed_services | join(' ') }}" @@ -183,7 +183,7 @@ - name: "🔄 swarm: force task recreation so in-container state is reloaded" ansible.builtin.shell: | set -euo pipefail - docker stack services --format '{{ "{{.Name}}" }}' {{ application_id | get_entity_name | quote }} \ + docker stack services --format '{{ "{{.Name}}" }}' {{ application_id | entity_name | quote }} \ | xargs -r -n1 timeout {{ lookup('timeout', 900) | int }} docker service update --detach=false --force args: executable: /bin/bash diff --git a/roles/sys-svc-compose/lookup_plugins/compose_ca_inject_cmd.py b/roles/sys-svc-compose/lookup_plugins/compose_ca_inject_cmd.py index 413e478f46..623d6f0eb1 100644 --- a/roles/sys-svc-compose/lookup_plugins/compose_ca_inject_cmd.py +++ b/roles/sys-svc-compose/lookup_plugins/compose_ca_inject_cmd.py @@ -7,7 +7,7 @@ from ansible.errors import AnsibleError from ansible.plugins.loader import lookup_loader from ansible.plugins.lookup import LookupBase -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.templating.ansible import render_ansible_strict @@ -89,7 +89,7 @@ class LookupModule(LookupBase): if not isinstance(wrapper, bool): raise AnsibleError("compose_ca_inject_cmd: wrapper must be a bool") - project = _as_str(get_entity_name(application_id)) + project = _as_str(entity_name(application_id)) if not project: raise AnsibleError("compose_ca_inject_cmd: resolved project is empty") diff --git a/roles/sys-svc-compose/tasks/utils/network/README.md b/roles/sys-svc-compose/tasks/utils/network/README.md index 8ca48b30c4..748ce5e3d9 100644 --- a/roles/sys-svc-compose/tasks/utils/network/README.md +++ b/roles/sys-svc-compose/tasks/utils/network/README.md @@ -1,7 +1,7 @@ # Network utils 🕸️ Reusable task files for creating Docker networks in a uniform way. -Both helpers derive the docker-side network name from `role_id | get_entity_name` and the subnet from `meta/server.yml.networks.local.subnet`, so the name and the subnet pinning live in exactly one place. +Both helpers derive the docker-side network name from `role_id | entity_name` and the subnet from `meta/server.yml.networks.local.subnet`, so the name and the subnet pinning live in exactly one place. Ad-hoc `community.docker.docker_network` calls or `docker network create` / `container network create` shell-outs in role tasks are forbidden by [test_network_create_via_util.py](../../../../../tests/lint/ansible/modules/test_network_create_via_util.py). diff --git a/roles/sys-svc-compose/tasks/utils/network/create.yml b/roles/sys-svc-compose/tasks/utils/network/create.yml index 3e6c89ac78..0bd0ee1526 100644 --- a/roles/sys-svc-compose/tasks/utils/network/create.yml +++ b/roles/sys-svc-compose/tasks/utils/network/create.yml @@ -1,7 +1,7 @@ --- - name: "🔍 Probe existing overlay network for '{{ network_role_id }}' (swarm scope)" community.docker.docker_network_info: # nocheck: docker-module-uses-container-cli read-only info module; returns structured network facts the wrapper's raw JSON would need parsed - name: "{{ network_role_id | get_entity_name }}" + name: "{{ network_role_id | entity_name }}" register: sys_svc_compose_overlay_probe when: (SWARM_CLUSTER_AVAILABLE | bool) and not (lookup('config', network_role_id, 'networks.local.force_bridge', false) | bool) run_once: true @@ -10,7 +10,7 @@ - name: "🛑 Fail on network driver drift for '{{ network_role_id }}' (swarm)" ansible.builtin.fail: msg: >- - Network '{{ network_role_id | get_entity_name }}' exists with driver + Network '{{ network_role_id | entity_name }}' exists with driver '{{ sys_svc_compose_overlay_probe.network.Driver | default('unknown') }}' but 'overlay' is required. Remove the stale network or revert the networks.local.force_bridge change. when: @@ -38,10 +38,10 @@ - --label - "com.docker.compose.network={{ lookup('shared_network_key', network_role_id) }}" - --label - - "com.docker.compose.project={{ network_role_id | get_entity_name }}" + - "com.docker.compose.project={{ network_role_id | entity_name }}" - --label - - "com.docker.stack.namespace={{ network_role_id | get_entity_name }}" - - "{{ network_role_id | get_entity_name }}" + - "com.docker.stack.namespace={{ network_role_id | entity_name }}" + - "{{ network_role_id | entity_name }}" when: - (SWARM_CLUSTER_AVAILABLE | bool) and not (lookup('config', network_role_id, 'networks.local.force_bridge', false) | bool) - not (sys_svc_compose_overlay_probe.exists | default(false) | bool) @@ -51,14 +51,14 @@ - name: "🔍 Probe existing bridge network for '{{ network_role_id }}' (compose)" community.docker.docker_network_info: # nocheck: docker-module-uses-container-cli read-only info module; returns structured network facts the wrapper's raw JSON would need parsed - name: "{{ network_role_id | get_entity_name }}" + name: "{{ network_role_id | entity_name }}" register: sys_svc_compose_bridge_probe when: (not (SWARM_CLUSTER_AVAILABLE | bool)) or (lookup('config', network_role_id, 'networks.local.force_bridge', false) | bool) - name: "🛑 Fail on network driver drift for '{{ network_role_id }}' (compose)" ansible.builtin.fail: msg: >- - Network '{{ network_role_id | get_entity_name }}' exists with driver + Network '{{ network_role_id | entity_name }}' exists with driver '{{ sys_svc_compose_bridge_probe.network.Driver | default('unknown') }}' but 'bridge' is required. Remove the stale network or revert the networks.local.force_bridge change. when: @@ -77,8 +77,8 @@ - --label - "com.docker.compose.network={{ lookup('shared_network_key', network_role_id) }}" - --label - - "com.docker.compose.project={{ network_role_id | get_entity_name }}" - - "{{ network_role_id | get_entity_name }}" + - "com.docker.compose.project={{ network_role_id | entity_name }}" + - "{{ network_role_id | entity_name }}" when: - (not (SWARM_CLUSTER_AVAILABLE | bool)) or (lookup('config', network_role_id, 'networks.local.force_bridge', false) | bool) - not (sys_svc_compose_bridge_probe.exists | default(false) | bool) diff --git a/roles/sys-svc-compose/tasks/utils/post_deploy.yml b/roles/sys-svc-compose/tasks/utils/post_deploy.yml index b1974fbe00..bb7158a59f 100644 --- a/roles/sys-svc-compose/tasks/utils/post_deploy.yml +++ b/roles/sys-svc-compose/tasks/utils/post_deploy.yml @@ -16,10 +16,10 @@ - name: "🔑 For '{{ application_id }}': realign a dedicated postgres" ansible.builtin.include_tasks: "{{ lookup('path_absolute', 'roles/sys-svc-rdbms/tasks/utils/realign_dedicated_db.yml') }}" -- name: "⏳ Wait until swarm tasks of '{{ application_id | get_entity_name }}' are running" +- name: "⏳ Wait until swarm tasks of '{{ application_id | entity_name }}' are running" ansible.builtin.script: "{{ lookup('path_absolute', 'roles/sys-svc-compose/files/shell/swarm/stack_ready.sh') }}" environment: - STACK: "{{ application_id | get_entity_name }}" + STACK: "{{ application_id | entity_name }}" FATAL_GRACE: "{{ swarm_stack_fatal_grace }}" register: _swarm_tasks_ready retries: "{{ swarm_stack_converge_retries }}" diff --git a/roles/sys-svc-proxy/templates/location/html.conf.j2 b/roles/sys-svc-proxy/templates/location/html.conf.j2 index b910730594..437961e3ab 100644 --- a/roles/sys-svc-proxy/templates/location/html.conf.j2 +++ b/roles/sys-svc-proxy/templates/location/html.conf.j2 @@ -17,7 +17,7 @@ location {{location}} client_max_body_size {{ webserver_client_max_body_size | default(lookup('config', application_id, 'server.client_max_body_size', '100m')) }}; - {{ lookup('proxy_pass', application_id, proxy_service_key | default(application_id | get_entity_name), 'http', tail='request', location=location, local_port=http_port, internal_port=proxy_internal_port | default('')) }} + {{ lookup('proxy_pass', application_id, proxy_service_key | default(application_id | entity_name), 'http', tail='request', location=location, local_port=http_port, internal_port=proxy_internal_port | default('')) }} proxy_set_header Host $host; proxy_set_header Authorization $http_authorization; diff --git a/roles/sys-svc-proxy/templates/location/media.conf.j2 b/roles/sys-svc-proxy/templates/location/media.conf.j2 index 3b359b5d93..22a1174606 100644 --- a/roles/sys-svc-proxy/templates/location/media.conf.j2 +++ b/roles/sys-svc-proxy/templates/location/media.conf.j2 @@ -2,7 +2,7 @@ location ~* \.(jpg|jpeg|png|gif|webp|ico|svg)$ { expires 30d; add_header Cache-Control "public, max-age=2592000, immutable"; - {{ lookup('proxy_pass', application_id, proxy_service_key | default(application_id | get_entity_name), 'http', tail='plain', local_port=http_port, internal_port=proxy_internal_port | default('')) }} + {{ lookup('proxy_pass', application_id, proxy_service_key | default(application_id | entity_name), 'http', tail='plain', local_port=http_port, internal_port=proxy_internal_port | default('')) }} proxy_cache imgcache; proxy_cache_valid 200 302 60m; proxy_cache_valid 404 1m; diff --git a/roles/sys-svc-proxy/templates/location/upload.conf.j2 b/roles/sys-svc-proxy/templates/location/upload.conf.j2 index 8e0560b2f9..689a00f9ce 100644 --- a/roles/sys-svc-proxy/templates/location/upload.conf.j2 +++ b/roles/sys-svc-proxy/templates/location/upload.conf.j2 @@ -1,6 +1,6 @@ location {{ location_upload }} { - {{ lookup('proxy_pass', application_id, proxy_service_key | default(application_id | get_entity_name), 'http', tail='plain', local_port=http_port, internal_port=proxy_internal_port | default('')) }} + {{ lookup('proxy_pass', application_id, proxy_service_key | default(application_id | entity_name), 'http', tail='plain', local_port=http_port, internal_port=proxy_internal_port | default('')) }} {% include 'roles/sys-svc-proxy/templates/headers/identity_request_strips.conf.j2' %} proxy_set_header Host $host; diff --git a/roles/sys-svc-proxy/templates/location/ws.conf.j2 b/roles/sys-svc-proxy/templates/location/ws.conf.j2 index 316610d1af..5b77e0dc5e 100644 --- a/roles/sys-svc-proxy/templates/location/ws.conf.j2 +++ b/roles/sys-svc-proxy/templates/location/ws.conf.j2 @@ -5,7 +5,7 @@ location {{ webserver_websocket_location }} { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto {{ proxy_x_forwarded_proto | default('$scheme') }}; - {{ lookup('proxy_pass', application_id, proxy_service_key | default(application_id | get_entity_name), 'http', tail='plain', local_port=websocket_port, internal_port=proxy_internal_port | default('')) }} + {{ lookup('proxy_pass', application_id, proxy_service_key | default(application_id | entity_name), 'http', tail='plain', local_port=websocket_port, internal_port=proxy_internal_port | default('')) }} {% include 'roles/sys-svc-proxy/templates/headers/upstream_strips.conf.j2' %} diff --git a/roles/sys-svc-rdbms/templates/services/mariadb.yml.j2 b/roles/sys-svc-rdbms/templates/services/mariadb.yml.j2 index 0978769b1e..0042c6c75a 100644 --- a/roles/sys-svc-rdbms/templates/services/mariadb.yml.j2 +++ b/roles/sys-svc-rdbms/templates/services/mariadb.yml.j2 @@ -3,7 +3,7 @@ {{ lookup('database', application_id, 'host') }}: {{ lookup('container_deploy', replicas=1) | indent(4) }} - {{ lookup('compose_only', 'container_name', ((application_id | get_entity_name) ~ '-database')) }} + {{ lookup('compose_only', 'container_name', ((application_id | entity_name) ~ '-database')) }} logging: driver: journald {{ lookup('container_image', 'svc-db-mariadb', 'mariadb', image=lookup('database', application_id, 'image'), version=lookup('database', application_id, 'version')) }} diff --git a/roles/sys-svc-rdbms/templates/services/postgres.yml.j2 b/roles/sys-svc-rdbms/templates/services/postgres.yml.j2 index 41d69882a2..f9506f824d 100644 --- a/roles/sys-svc-rdbms/templates/services/postgres.yml.j2 +++ b/roles/sys-svc-rdbms/templates/services/postgres.yml.j2 @@ -5,9 +5,9 @@ {% set _libraries = lookup('postgres_libraries', _extensions) %} {{ lookup('database', application_id, 'host') }}: {{ lookup('container_deploy', replicas=1) | indent(4) }} - {{ lookup('compose_only', 'container_name', ((application_id | get_entity_name) ~ '-database')) }} + {{ lookup('compose_only', 'container_name', ((application_id | entity_name) ~ '-database')) }} {% if _libraries | length > 0 %} - {{ lookup('container_image', 'svc-db-postgres', 'postgres', image=(application_id | get_entity_name ~ '-database'), version=lookup('database', application_id, 'version')) }} + {{ lookup('container_image', 'svc-db-postgres', 'postgres', image=(application_id | entity_name ~ '-database'), version=lookup('database', application_id, 'version')) }} {{ lookup('compose_only', 'pull_policy', 'never') }} build: context: {{ lookup('database', application_id, 'build_dir') }} diff --git a/roles/test-e2e-cli/templates/mcp/test.env.j2 b/roles/test-e2e-cli/templates/mcp/test.env.j2 index f76a3133c0..95b4a7023f 100644 --- a/roles/test-e2e-cli/templates/mcp/test.env.j2 +++ b/roles/test-e2e-cli/templates/mcp/test.env.j2 @@ -1,7 +1,7 @@ {% set endpoint = lookup('config', application_id, 'mcp.endpoint') -%} {% set upstream_key = lookup('config', application_id, 'mcp.adapter.upstream_network', '') -%} {% set implementation = lookup('config', application_id, 'mcp.implementation') -%} -{% set entity = application_id | get_entity_name -%} +{% set entity = application_id | entity_name -%} MCP_AUTH_HEADER='{{ {'id': application_id, 'auth': lookup('config', application_id, 'mcp.auth'), 'token': lookup('mcp_client_bearer', application_id), 'owner': lookup('config', application_id, 'mcp.credential.owner')} | mcp_authorization }}' MCP_DEADLINE_SECONDS={{ lookup('timeout', 420) | int }} MCP_DEPLOYMENT_MODE={{ compose_mode }} diff --git a/roles/test-e2e-playwright/files/personas/utils/seaweedfs.js b/roles/test-e2e-playwright/files/personas/utils/seaweedfs.js index dfdd195322..3600883e04 100644 --- a/roles/test-e2e-playwright/files/personas/utils/seaweedfs.js +++ b/roles/test-e2e-playwright/files/personas/utils/seaweedfs.js @@ -14,7 +14,7 @@ * stored in SeaweedFS for that app. * * The listing goes to the storage engine directly (roles/web-svc-seaweedfs), - * not to the Filer UI: the Filer moved to roles/web-app-seaweedfs-console, + * not to the Filer UI: the Filer moved to roles/web-app-seaweedfs, * which a node may legitimately not deploy. Signing with the consumer's own * access key rather than the administrator's additionally proves that the * per-consumer identity in the engine's s3.json reaches its own bucket. diff --git a/roles/web-app-akaunting/tasks/setup/swarm.yml b/roles/web-app-akaunting/tasks/setup/swarm.yml index 01a8c17cc0..48fe1ab334 100644 --- a/roles/web-app-akaunting/tasks/setup/swarm.yml +++ b/roles/web-app-akaunting/tasks/setup/swarm.yml @@ -26,7 +26,7 @@ --env-file {{ lookup('container', application_id, 'files.env') | quote }} \ --env AKAUNTING_SETUP=true \ --mount type=volume,source={{ AKAUNTING_VOLUME | quote }},target={{ lookup('volume', 'web-app-akaunting', 'data').target }} \ - --network {{ application_id | get_entity_name | quote }} \ + --network {{ application_id | entity_name | quote }} \ {% if lookup('database', application_id, 'shared') | bool %}--network {{ lookup('database', application_id, 'network') | quote }} {% endif %}\ {{ AKAUNTING_IMAGE }}:{{ AKAUNTING_VERSION }} \ {{ AKAUNTING_ENTRYPOINT }} diff --git a/roles/web-app-baserow/vars/main.yml b/roles/web-app-baserow/vars/main.yml index 5004fe6ea7..7fa4adb69e 100644 --- a/roles/web-app-baserow/vars/main.yml +++ b/roles/web-app-baserow/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-baserow" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" database_password: "{{ lookup('config', application_id, 'secrets.credentials.database_password') }}" # nocheck: lookup-config-path BASEROW_PUBLIC_URL: "{{ lookup('tls', application_id, 'url.base') }}" diff --git a/roles/web-app-bigbluebutton/vars/main.yml b/roles/web-app-bigbluebutton/vars/main.yml index b7eafd9df5..317cd6e102 100644 --- a/roles/web-app-bigbluebutton/vars/main.yml +++ b/roles/web-app-bigbluebutton/vars/main.yml @@ -1,14 +1,14 @@ --- application_id: "web-app-bigbluebutton" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" compose_mode_force: compose domain: "{{ lookup('domain',application_id) }}" http_port: "{{ lookup('config', application_id, 'services.bigbluebutton.ports.local.http') }}" -BBB_REPOSITORY: "{{ lookup('config', 'web-app-bigbluebutton', 'services.' ~ ('web-app-bigbluebutton' | get_entity_name) ~ '.repository') }}" -BBB_REF: "{{ lookup('config', 'web-app-bigbluebutton', 'services.' ~ ('web-app-bigbluebutton' | get_entity_name) ~ '.ref') }}" +BBB_REPOSITORY: "{{ lookup('config', 'web-app-bigbluebutton', 'services.' ~ ('web-app-bigbluebutton' | entity_name) ~ '.repository') }}" +BBB_REF: "{{ lookup('config', 'web-app-bigbluebutton', 'services.' ~ ('web-app-bigbluebutton' | entity_name) ~ '.ref') }}" _BBB_COTURN_ROLE: "web-svc-coturn" diff --git a/roles/web-app-bluesky/tasks/00_core.yml b/roles/web-app-bluesky/tasks/00_core.yml index 62ca2db7e5..d06b8448a7 100644 --- a/roles/web-app-bluesky/tasks/00_core.yml +++ b/roles/web-app-bluesky/tasks/00_core.yml @@ -59,7 +59,7 @@ vars: domain: "{{ BLUESKY_API_DOMAIN }}" http_port: "{{ BLUESKY_API_PORT }}" - webserver_proxy_service_key: "{{ 'pds' if IS_SWARM_MODE else (application_id | get_entity_name) }}" + webserver_proxy_service_key: "{{ 'pds' if IS_SWARM_MODE else (application_id | entity_name) }}" proxy_internal_port: "{{ lookup('config', application_id, 'services.api.ports.internal.http') if IS_SWARM_MODE else '' }}" - name: "📂 Front proxy {{ BLUESKY_WEB_DOMAIN }} (broker if oauth2, else social-app)" @@ -72,7 +72,7 @@ webserver_proxy_service_key: >- {{ (BLUESKY_BROKER_SERVICE if (lookup('config', application_id, 'services.sso.enabled') | bool) else 'web') - if IS_SWARM_MODE else (application_id | get_entity_name) + if IS_SWARM_MODE else (application_id | entity_name) }} proxy_internal_port: >- {{ @@ -89,7 +89,7 @@ vars: domain: "{{ BLUESKY_VIEW_DOMAIN_FINAL }}" http_port: "{{ BLUESKY_VIEW_PORT }}" - webserver_proxy_service_key: "{{ 'view' if IS_SWARM_MODE else (application_id | get_entity_name) }}" + webserver_proxy_service_key: "{{ 'view' if IS_SWARM_MODE else (application_id | entity_name) }}" proxy_internal_port: "{{ lookup('config', application_id, 'services.view.ports.internal.http') if IS_SWARM_MODE else '' }}" when: BLUESKY_VIEW_ENABLED | bool diff --git a/roles/web-app-bookwyrm/vars/main.yml b/roles/web-app-bookwyrm/vars/main.yml index e409111daf..4a01463607 100644 --- a/roles/web-app-bookwyrm/vars/main.yml +++ b/roles/web-app-bookwyrm/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-bookwyrm" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" container_port: "{{ lookup('config', application_id, 'services.' ~ entity_name ~ '.ports.internal.http') }}" container_hostname: "{{ lookup('container_hostname', application_id) }}" diff --git a/roles/web-app-chess/vars/main.yml b/roles/web-app-chess/vars/main.yml index 3c28e223c3..86f6f0cf3c 100644 --- a/roles/web-app-chess/vars/main.yml +++ b/roles/web-app-chess/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-chess" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" domain: "{{ lookup('domain',application_id) }}" container_port: "{{ lookup('config', application_id, 'services.' ~ entity_name ~ '.ports.internal.http') }}" diff --git a/roles/web-app-confluence/vars/main.yml b/roles/web-app-confluence/vars/main.yml index 2ce263f096..b114fe2e0a 100644 --- a/roles/web-app-confluence/vars/main.yml +++ b/roles/web-app-confluence/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-confluence" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" container_hostname: "{{ lookup('container_hostname', application_id) }}" diff --git a/roles/web-app-dashboard/vars/main.yml b/roles/web-app-dashboard/vars/main.yml index 49c57c8094..63976936fc 100644 --- a/roles/web-app-dashboard/vars/main.yml +++ b/roles/web-app-dashboard/vars/main.yml @@ -12,7 +12,7 @@ DASHBOARD_JS_CDN_URL: "{{ lookup('tls', 'web-svc-cdn', 'url.base') }}" DASHBOARD_JS_FILES: >- {{ ['iframe.js'] + (['oidc.js'] if (DASHBOARD_OIDC_ENABLED | bool) else []) }} -DASHBOARD_JS_BASE_PATH: "{{ DASHBOARD_APPLICATION_ID | get_entity_name }}/js" +DASHBOARD_JS_BASE_PATH: "{{ DASHBOARD_APPLICATION_ID | entity_name }}/js" DASHBOARD_JS_SERVER_DIR: "{{ [ lookup('nginx','directories.data.cdn'), DASHBOARD_JS_BASE_PATH ] | path_join }}" DASHBOARD_JS_BASE_URL: "{{ (DASHBOARD_JS_CDN_URL | trim('/')) ~ '/' ~ (DASHBOARD_JS_BASE_PATH | trim('/')) }}" diff --git a/roles/web-app-discourse/vars/main.yml b/roles/web-app-discourse/vars/main.yml index 8e423d3f92..75ec85aa6f 100644 --- a/roles/web-app-discourse/vars/main.yml +++ b/roles/web-app-discourse/vars/main.yml @@ -1,16 +1,16 @@ --- application_id: "web-app-discourse" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" database_password: "{{ lookup('config', application_id, 'secrets.credentials.database_password') }}" # nocheck: lookup-config-path DISCOURSE_CONTAINER: "{{ entity_name }}" -DISCOURSE_NETWORK: "{{ application_id | get_entity_name }}" +DISCOURSE_NETWORK: "{{ application_id | entity_name }}" DISCOURSE_VOLUME: "{{ lookup('volume', application_id, 'data').name }}" DISCOURSE_PLUGINS: "{{ lookup('config', application_id, 'addons') }}" -DISCOURSE_PG_NETWORK: "{{ ('svc-db-' ~ DISCOURSE_DATABASE_TYPE) | get_entity_name }}" -DISCOURSE_REDIS_NETWORK: "{{ 'svc-db-redis' | get_entity_name }}" -DISCOURSE_WEB_NETWORK: "{{ 'svc-prx-openresty' | get_entity_name }}" +DISCOURSE_PG_NETWORK: "{{ ('svc-db-' ~ DISCOURSE_DATABASE_TYPE) | entity_name }}" +DISCOURSE_REDIS_NETWORK: "{{ 'svc-db-redis' | entity_name }}" +DISCOURSE_WEB_NETWORK: "{{ 'svc-prx-openresty' | entity_name }}" DISCOURSE_REDIS_SHARED: "{{ not (lookup('engine', 'redis', application_id, 'local') | bool) }}" DISCOURSE_REDIS_HOST: "{{ lookup('engine', 'redis', application_id, 'host') }}" DISCOURSE_REDIS_PORT: "{{ lookup('engine', 'redis', application_id, 'port') }}" @@ -35,9 +35,14 @@ DISCOURSE_LDAP_ENABLED: "{{ lookup('config', application_id, 'services.ldap.enab DISCOURSE_LITELLM_ENABLED: "{{ lookup('config', application_id, 'services.litellm.enabled') | bool }}" DISCOURSE_LITELLM_API_KEY: "{{ lookup('config', application_id, 'secrets.credentials.litellm_api_key') }}" -DISCOURSE_LITELLM_NETWORK: "{{ 'svc-ai-litellm' | get_entity_name }}" +DISCOURSE_LITELLM_NETWORK: "{{ 'svc-ai-litellm' | entity_name }}" DISCOURSE_LITELLM_HOST: "{{ LITELLM_OPENAI_BASE_LOCAL_URL | urlsplit('hostname') }}" DISCOURSE_LITELLM_CHAT_ENDPOINT: "{{ LITELLM_OPENAI_BASE_LOCAL_URL }}/chat/completions" +DISCOURSE_TRANSLATE_ENABLED: "{{ lookup('config', application_id, 'services.translate.enabled') | bool }}" +DISCOURSE_TRANSLATE_PROVIDER: "{{ lookup('config', application_id, 'addons.discourse-translator.config.provider') }}" +DISCOURSE_TRANSLATE_ENDPOINT: "{{ lookup('tls', 'web-svc-translate', 'url.base') | regex_replace('/+$', '') }}" +DISCOURSE_TRANSLATE_HOST: "{{ DISCOURSE_TRANSLATE_ENDPOINT | urlsplit('hostname') }}" + DISCOURSE_AI_LLM_DISPLAY_NAME: "{{ lookup('config', application_id, 'addons.discourse-ai.config.display_name') }}" DISCOURSE_AI_MAX_PROMPT_TOKENS: "{{ lookup('config', application_id, 'addons.discourse-ai.config.max_prompt_tokens') | int }}" diff --git a/roles/web-app-docs/files/python/infinito_docs/generators/integrations.py b/roles/web-app-docs/files/python/infinito_docs/generators/integrations.py index 9323b5f610..77f24465c9 100644 --- a/roles/web-app-docs/files/python/infinito_docs/generators/integrations.py +++ b/roles/web-app-docs/files/python/infinito_docs/generators/integrations.py @@ -20,7 +20,7 @@ import re from pathlib import Path from utils.cache.yaml import load_yaml -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.mapping import ROLE_DIR_META_ADDONS, ROLE_FILE_META_SERVICES from utils.roles.meta_lookup import get_role_lifecycle from utils.roles.order import find_roles @@ -115,7 +115,7 @@ def service_targets(roles_dir: Path, roles: list[str]) -> dict[str, str]: roles_dir: directory holding the role folders. roles: the role names on the axis. """ - targets = {get_entity_name(role): role for role in roles} + targets = {entity_name(role): role for role in roles} on_axis = set(roles) for role in roles: for key, entry in _services(Path(roles_dir) / role).items(): diff --git a/roles/web-app-docs/vars/main.yml b/roles/web-app-docs/vars/main.yml index 3f19e078a2..16432dac12 100644 --- a/roles/web-app-docs/vars/main.yml +++ b/roles/web-app-docs/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-docs" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" DOCS_CONTAINER: "{{ lookup('config', application_id, 'services.' ~ entity_name ~ '.name') }}" DOCS_SERVICE: "{{ entity_name }}" diff --git a/roles/web-app-erpnext/vars/main.yml b/roles/web-app-erpnext/vars/main.yml index 7036503189..9b68bc835e 100644 --- a/roles/web-app-erpnext/vars/main.yml +++ b/roles/web-app-erpnext/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-erpnext" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" ERPNEXT_BACKEND_CONTAINER: "{{ lookup('config', application_id, 'services.backend.name') }}" ERPNEXT_FRONTEND_CONTAINER: "{{ lookup('config', application_id, 'services.frontend.name') }}" diff --git a/roles/web-app-espocrm/vars/main.yml b/roles/web-app-espocrm/vars/main.yml index d92600ffd1..8e32cbff9c 100644 --- a/roles/web-app-espocrm/vars/main.yml +++ b/roles/web-app-espocrm/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-espocrm" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" swarm_stack_converge_retries: 600 diff --git a/roles/web-app-fediwall/vars/main.yml b/roles/web-app-fediwall/vars/main.yml index 124bc081eb..3315952cb0 100644 --- a/roles/web-app-fediwall/vars/main.yml +++ b/roles/web-app-fediwall/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-fediwall" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" domain: "{{ lookup('domain', application_id) }}" FEDIWALL_SERVICE: "{{ entity_name }}" diff --git a/roles/web-app-flowise/vars/main.yml b/roles/web-app-flowise/vars/main.yml index eacd0a4faf..28dcbf376c 100644 --- a/roles/web-app-flowise/vars/main.yml +++ b/roles/web-app-flowise/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-flowise" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" swarm_stack_converge_retries: 600 domain: "{{ lookup('domain',application_id) }}" http_port: "{{ lookup('config', application_id, 'services.flowise.ports.local.http') }}" diff --git a/roles/web-app-friendica/vars/main.yml b/roles/web-app-friendica/vars/main.yml index f9cfc12b95..0e66e53b9e 100644 --- a/roles/web-app-friendica/vars/main.yml +++ b/roles/web-app-friendica/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-friendica" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" FRIENDICA_SERVICE: "{{ entity_name }}" FRIENDICA_CONTAINER: "{{ entity_name }}" diff --git a/roles/web-app-fusiondirectory/templates/env.j2 b/roles/web-app-fusiondirectory/templates/env.j2 index a6fd6a7bf4..39b6560adb 100644 --- a/roles/web-app-fusiondirectory/templates/env.j2 +++ b/roles/web-app-fusiondirectory/templates/env.j2 @@ -2,7 +2,7 @@ FUSIONDIRECTORY_ADMIN_USER={{ lookup('users', 'administrator').username }} FUSIONDIRECTORY_ADMIN_PASS={{ lookup('users', 'administrator').password | dotenv_quote }} -LDAP01_NAME={{ application_id | get_entity_name }} +LDAP01_NAME={{ application_id | entity_name }} LDAP01_HOST={{ lookup('config', 'svc-db-openldap', 'services.openldap.name') }} LDAP01_PORT={{ lookup('config', 'svc-db-openldap', 'services.openldap.ports.local.ldap') }} LDAP01_ADMIN_DN={{ LDAP.DN.ADMINISTRATOR.DATA }} diff --git a/roles/web-app-fusiondirectory/vars/main.yml b/roles/web-app-fusiondirectory/vars/main.yml index 7803fc58f5..ef1c71eddd 100644 --- a/roles/web-app-fusiondirectory/vars/main.yml +++ b/roles/web-app-fusiondirectory/vars/main.yml @@ -1,5 +1,5 @@ --- application_id: web-app-fusiondirectory -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" FUSIONDIRECTORY_CONTAINER: "{{ lookup('config', application_id, 'services.fusiondirectory.name') }}" diff --git a/roles/web-app-gitea/vars/main.yml b/roles/web-app-gitea/vars/main.yml index 50fb563bdf..5b00baf74a 100644 --- a/roles/web-app-gitea/vars/main.yml +++ b/roles/web-app-gitea/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-gitea" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" GITEA_LDAP_AUTH_ARGS: - '--name "LDAP ({{ DOMAIN_PRIMARY }})"' diff --git a/roles/web-app-gitlab/vars/main.yml b/roles/web-app-gitlab/vars/main.yml index a1450318b9..4fef220b53 100644 --- a/roles/web-app-gitlab/vars/main.yml +++ b/roles/web-app-gitlab/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-gitlab" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" swarm_stack_converge_retries: 600 diff --git a/roles/web-app-hermes/vars/main.yml b/roles/web-app-hermes/vars/main.yml index d780eaa09b..74e1f2a8f9 100644 --- a/roles/web-app-hermes/vars/main.yml +++ b/roles/web-app-hermes/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-hermes" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" domain: "{{ lookup('domain', application_id) }}" http_port: "{{ lookup('config', application_id, 'services.hermes.ports.local.http') }}" diff --git a/roles/web-app-homeassistant/vars/main.yml b/roles/web-app-homeassistant/vars/main.yml index d2d8cd1214..bfd6340b8c 100644 --- a/roles/web-app-homeassistant/vars/main.yml +++ b/roles/web-app-homeassistant/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-homeassistant" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" domain: "{{ lookup('domain', application_id) }}" http_port: "{{ lookup('config', application_id, 'services.homeassistant.ports.local.http') }}" diff --git a/roles/web-app-hugo/vars/main.yml b/roles/web-app-hugo/vars/main.yml index d568e133d9..59126d934f 100644 --- a/roles/web-app-hugo/vars/main.yml +++ b/roles/web-app-hugo/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-hugo" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" HUGO_CONTAINER: "{{ entity_name }}" HUGO_SERVICE: "{{ entity_name }}" diff --git a/roles/web-app-jenkins/vars/main.yml b/roles/web-app-jenkins/vars/main.yml index 207da5b8dd..b2077c00d9 100644 --- a/roles/web-app-jenkins/vars/main.yml +++ b/roles/web-app-jenkins/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: web-app-jenkins -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" swarm_stack_converge_retries: 600 diff --git a/roles/web-app-jira/vars/main.yml b/roles/web-app-jira/vars/main.yml index 1e5fbc3de4..d2a4f08ff0 100644 --- a/roles/web-app-jira/vars/main.yml +++ b/roles/web-app-jira/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-jira" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" container_hostname: "{{ lookup('container_hostname', application_id) }}" diff --git a/roles/web-app-jitsi/vars/main.yml b/roles/web-app-jitsi/vars/main.yml index c46c698895..81437cb65e 100644 --- a/roles/web-app-jitsi/vars/main.yml +++ b/roles/web-app-jitsi/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-jitsi" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" JITSI_WEB_SERVICE: "web" JITSI_PROSODY_SERVICE: "prosody" diff --git a/roles/web-app-joomla/vars/main.yml b/roles/web-app-joomla/vars/main.yml index c7d2ddee5a..482e124890 100644 --- a/roles/web-app-joomla/vars/main.yml +++ b/roles/web-app-joomla/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-joomla" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" JOOMLA_VERSION: "{{ lookup('config', application_id, 'services.joomla.version') }}" JOOMLA_IMAGE: "{{ lookup('config', application_id, 'services.joomla.image') }}" diff --git a/roles/web-app-keycloak/tasks/04_realm_import/swarm.yml b/roles/web-app-keycloak/tasks/04_realm_import/swarm.yml index 6b2f2a6bac..e8e57991f9 100644 --- a/roles/web-app-keycloak/tasks/04_realm_import/swarm.yml +++ b/roles/web-app-keycloak/tasks/04_realm_import/swarm.yml @@ -29,7 +29,7 @@ container service create --detach --restart-condition on-failure --restart-max-attempts 3 --name "$JOB" \ --constraint node.role==manager \ --env-file {{ lookup('container', application_id, 'files.env') | quote }} \ - --network {{ application_id | get_entity_name | quote }} \ + --network {{ application_id | entity_name | quote }} \ {{ KEYCLOAK_DB_NETWORK_ARG }} \ --mount type=bind,source={{ KEYCLOAK_REALM_IMPORT_DIR_HOST | quote }},target={{ KEYCLOAK_REALM_IMPORT_DIR_DOCKER | quote }},readonly \ --entrypoint /opt/keycloak/bin/kc.sh \ diff --git a/roles/web-app-keycloak/templates/sso_proxy/container.yml.j2 b/roles/web-app-keycloak/templates/sso_proxy/container.yml.j2 index e455abbb90..1990a9d8f2 100644 --- a/roles/web-app-keycloak/templates/sso_proxy/container.yml.j2 +++ b/roles/web-app-keycloak/templates/sso_proxy/container.yml.j2 @@ -3,13 +3,13 @@ {{ lookup('container_image', 'web-app-keycloak', 'sso_proxy') }} {{ lookup('compose_restart') }} command: --config /oauth2-proxy.cfg - {{ lookup('compose_only', 'container_name', ((application_id | get_entity_name) ~ '-sso-proxy')) }} + {{ lookup('compose_only', 'container_name', ((application_id | entity_name) ~ '-sso-proxy')) }} hostname: sso-proxy labels: infinito.sso-proxy.config-sha256: "{{ lookup('template', lookup('path_absolute', 'roles/web-app-keycloak/templates/sso_proxy/oauth2-proxy-keycloak.cfg.j2'), template_vars={'sso_proxy_application_id': application_id}) | hash('sha256') }}" ports: # nocheck: compose-ports-must-use-container-ports the published port belongs to the consuming role's own entity and the container port to web-app-keycloak's sso_proxy, so the mapping spans two application_ids and no single container_ports call can read both - - {{ DOCKER_BIND_HOST }}:{{ lookup('config', application_id, 'services.' ~ (application_id | get_entity_name) ~ '.ports.local.sso') }}:{{ lookup('config', 'web-app-keycloak', 'services.sso_proxy.ports.internal.http') }}/tcp + - {{ DOCKER_BIND_HOST }}:{{ lookup('config', application_id, 'services.' ~ (application_id | entity_name) ~ '.ports.local.sso') }}:{{ lookup('config', 'web-app-keycloak', 'services.sso_proxy.ports.internal.http') }}/tcp volumes: - "{{ lookup('container', application_id, 'directories.volumes') }}{{ lookup('config', 'web-app-keycloak', 'services.sso_proxy.configuration_file') }}:/oauth2-proxy.cfg" {% if (TLS_MODE | lower) == 'self_signed' and OIDC.CLIENT.ISSUER_URL.startswith('https') %} diff --git a/roles/web-app-keycloak/templates/sso_proxy/endpoint.conf.j2 b/roles/web-app-keycloak/templates/sso_proxy/endpoint.conf.j2 index bab9c10fd6..9135568610 100644 --- a/roles/web-app-keycloak/templates/sso_proxy/endpoint.conf.j2 +++ b/roles/web-app-keycloak/templates/sso_proxy/endpoint.conf.j2 @@ -1,6 +1,6 @@ # OAuth2-Proxy-Endpoint location /oauth2/ { - {{ lookup('proxy_pass', application_id, 'sso-proxy', 'http', tail='oauth2', local_port=lookup('config', application_id, 'services.' ~ (application_id | get_entity_name) ~ '.ports.local.sso'), internal_port=lookup('config', 'web-app-keycloak', 'services.sso_proxy.ports.internal.http')) }} + {{ lookup('proxy_pass', application_id, 'sso-proxy', 'http', tail='oauth2', local_port=lookup('config', application_id, 'services.' ~ (application_id | entity_name) ~ '.ports.local.sso'), internal_port=lookup('config', 'web-app-keycloak', 'services.sso_proxy.ports.internal.http')) }} {% include 'roles/sys-svc-proxy/templates/headers/upstream_strips.conf.j2' %} diff --git a/roles/web-app-keycloak/templates/sso_proxy/oauth2-proxy-keycloak.cfg.j2 b/roles/web-app-keycloak/templates/sso_proxy/oauth2-proxy-keycloak.cfg.j2 index 37287c3ce9..70fc187366 100644 --- a/roles/web-app-keycloak/templates/sso_proxy/oauth2-proxy-keycloak.cfg.j2 +++ b/roles/web-app-keycloak/templates/sso_proxy/oauth2-proxy-keycloak.cfg.j2 @@ -2,7 +2,7 @@ http_address = "0.0.0.0:{{ lookup('config', 'web-app-keycloak', 'se cookie_secret = "{{ lookup('config', sso_proxy_application_id, 'secrets.credentials.sso_proxy_cookie_secret') }}" cookie_secure = "{{ lookup('tls', sso_proxy_application_id, 'enabled') | string | lower }}" {% set _sso_upstream_mode = (compose_mode_force | default('')) or DEPLOYMENT_MODE %} -upstreams = "http://{{ ((sso_proxy_application_id | get_entity_name) ~ '_') if _sso_upstream_mode == 'swarm' else '' }}{{ lookup('sso', sso_proxy_application_id, 'oauth2_origin_host') }}:{{ lookup('sso', sso_proxy_application_id, 'oauth2_origin_port') }}" # nocheck: literal-protocol-lookup Internal docker upstream is plaintext by design. +upstreams = "http://{{ ((sso_proxy_application_id | entity_name) ~ '_') if _sso_upstream_mode == 'swarm' else '' }}{{ lookup('sso', sso_proxy_application_id, 'oauth2_origin_host') }}:{{ lookup('sso', sso_proxy_application_id, 'oauth2_origin_port') }}" # nocheck: literal-protocol-lookup Internal docker upstream is plaintext by design. {% set _cookie_domains = lookup('sso_cookie_domains', sso_proxy_application_id) %} {% if _cookie_domains %} cookie_domains = {{ _cookie_domains | to_json }} diff --git a/roles/web-app-keycloak/vars/main.yml b/roles/web-app-keycloak/vars/main.yml index 6e0aea4276..9c8849588c 100644 --- a/roles/web-app-keycloak/vars/main.yml +++ b/roles/web-app-keycloak/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-keycloak" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" domain: "{{ lookup('domain',application_id) }}" KEYCLOAK_CONTAINER_HOSTNAME: "{{ entity_name }}" diff --git a/roles/web-app-kix/vars/main.yml b/roles/web-app-kix/vars/main.yml index 907b6b417c..190623d53b 100644 --- a/roles/web-app-kix/vars/main.yml +++ b/roles/web-app-kix/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-kix" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" swarm_stack_converge_retries: 600 diff --git a/roles/web-app-lam/vars/main.yml b/roles/web-app-lam/vars/main.yml index 4a9559524b..b74355a76d 100644 --- a/roles/web-app-lam/vars/main.yml +++ b/roles/web-app-lam/vars/main.yml @@ -2,5 +2,5 @@ # General application_id: "web-app-lam" -LAM_CONTAINER: "{{ application_id | get_entity_name }}" +LAM_CONTAINER: "{{ application_id | entity_name }}" LAM_PASSWORD: "{{ lookup('config', application_id, 'secrets.credentials.administrator_password') }}" diff --git a/roles/web-app-listmonk/vars/main.yml b/roles/web-app-listmonk/vars/main.yml index 165b5e51ba..c8887f7d35 100644 --- a/roles/web-app-listmonk/vars/main.yml +++ b/roles/web-app-listmonk/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-listmonk" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" container_port: "{{ lookup('config', application_id, 'services.listmonk.ports.internal.http') }}" LISTMONK_NAME: "{{ lookup('config', application_id, 'services.listmonk.name') }}" diff --git a/roles/web-app-littlejs/vars/main.yml b/roles/web-app-littlejs/vars/main.yml index 0c423d981c..8b1c6101f2 100644 --- a/roles/web-app-littlejs/vars/main.yml +++ b/roles/web-app-littlejs/vars/main.yml @@ -1,7 +1,7 @@ --- # General application_id: "web-app-littlejs" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" domain: "{{ lookup('domain',application_id) }}" LITTLEJS_HEADLINE: "LittleJS Playground" diff --git a/roles/web-app-mastodon/vars/main.yml b/roles/web-app-mastodon/vars/main.yml index 2516100fee..17a0787f8b 100644 --- a/roles/web-app-mastodon/vars/main.yml +++ b/roles/web-app-mastodon/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-mastodon" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" MASTODON_CONTAINER: "{{ lookup('config', application_id, 'services.mastodon.name') }}" MASTODON_CONTAINER_ADDRESS: "{{ lookup('container_address', application_id, entity_name) }}" diff --git a/roles/web-app-matomo/vars/main.yml b/roles/web-app-matomo/vars/main.yml index 618983d743..c3ee7bf283 100644 --- a/roles/web-app-matomo/vars/main.yml +++ b/roles/web-app-matomo/vars/main.yml @@ -2,7 +2,7 @@ application_id: "web-app-matomo" domain: "{{ lookup('domain',application_id) }}" http_port: "{{ lookup('config', application_id, 'services.matomo.ports.local.http') }}" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" MATOMO_SERVICE: "{{ entity_name }}" MATOMO_NAME: "{{ lookup('config', application_id, 'services.' ~ MATOMO_SERVICE ~ '.name') }}" diff --git a/roles/web-app-matrix/vars/main.yml b/roles/web-app-matrix/vars/main.yml index c7846ee29c..23bf614b0b 100644 --- a/roles/web-app-matrix/vars/main.yml +++ b/roles/web-app-matrix/vars/main.yml @@ -36,7 +36,7 @@ MATRIX_SYNAPSE_VOLUME: "{{ lookup('volume', application_id, 'synapse_data').name MATRIX_SYNAPSE_UID: 991 MATRIX_SYNAPSE_GID: 991 MATRIX_MDAD_SERVICE_KEY: "matrix" -MATRIX_MDAD_CONTAINER: "{{ application_id | get_entity_name }}" +MATRIX_MDAD_CONTAINER: "{{ application_id | entity_name }}" MATRIX_MDAD_CONTAINER_ADDRESS: "{{ lookup('container_address', application_id, MATRIX_MDAD_SERVICE_KEY) }}" MATRIX_SYNAPSE_DOMAIN: "{{ lookup('domains', application_id).synapse }}" MATRIX_SYNAPSE_PORT: "{{ lookup('config', 'web-app-matrix', 'services.synapse.ports.local.http') }}" @@ -96,7 +96,8 @@ MATRIX_ADDON_HOOKSHOT_GITLAB_ENABLED: "{{ lookup('config', application_id, 'addo MATRIX_ADDON_HOOKSHOT_JIRA_ENABLED: "{{ lookup('config', application_id, 'addons.hookshot-jira.enabled') | bool }}" MATRIX_ADDON_HOOKSHOT_WEBHOOKS_ENABLED: "{{ lookup('config', application_id, 'addons.hookshot-webhooks.enabled') | bool }}" MATRIX_ADDON_HOOKSHOT_FEEDS_ENABLED: "{{ lookup('config', application_id, 'addons.hookshot-feeds.enabled') | bool }}" -MATRIX_JITSI_SELF_HOSTED: "{{ (lookup('config', application_id, 'services.jitsi.enabled') | bool) and not (lookup('config', application_id, 'services.jitsi.shared') | bool) }}" +MATRIX_JITSI_SELF_HOSTED: "{{ (lookup('config', application_id, 'services.jitsi.enabled') | bool) and not (lookup('config', application_id, 'services.jitsi.shared') + | bool) }}" MATRIX_ADDON_JITSI_ENABLED: "{{ lookup('config', application_id, 'addons.jitsi.enabled') | bool }}" MATRIX_ADDON_JITSI_PREFERRED_DOMAIN: "{{ lookup('config', application_id, 'addons.jitsi.config.preferred_domain') }}" diff --git a/roles/web-app-mattermost/vars/main.yml b/roles/web-app-mattermost/vars/main.yml index bf4c10fd72..8670372c2a 100644 --- a/roles/web-app-mattermost/vars/main.yml +++ b/roles/web-app-mattermost/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-mattermost" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" container_port: "{{ lookup('config', application_id, 'services.' ~ entity_name ~ '.ports.internal.http') }}" diff --git a/roles/web-app-mediawiki/vars/main.yml b/roles/web-app-mediawiki/vars/main.yml index df787f6133..e41fdacc96 100644 --- a/roles/web-app-mediawiki/vars/main.yml +++ b/roles/web-app-mediawiki/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-mediawiki" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" MEDIAWIKI_SITENAME: "{{ lookup('config', application_id, 'services.mediawiki.sitename') }}" MEDIAWIKI_URL: "{{ lookup('tls', application_id, 'url.base') }}" diff --git a/roles/web-app-meta/templates/compose.yml.j2 b/roles/web-app-meta/templates/compose.yml.j2 index c4e181e50c..0ced875023 100644 --- a/roles/web-app-meta/templates/compose.yml.j2 +++ b/roles/web-app-meta/templates/compose.yml.j2 @@ -1,5 +1,5 @@ {% include 'roles/sys-svc-compose/templates/base.yml.j2' %} - {% set service_name = application_id | get_entity_name %} + {% set service_name = application_id | entity_name %} {{ service_name }}: {% include 'roles/sys-svc-container/templates/base.yml.j2' %} {{ lookup('container_image', application_id, 'meta') }} diff --git a/roles/web-app-meta/vars/main.yml b/roles/web-app-meta/vars/main.yml index 6e4e9d26c7..a0c76bbc78 100644 --- a/roles/web-app-meta/vars/main.yml +++ b/roles/web-app-meta/vars/main.yml @@ -1,5 +1,5 @@ --- application_id: "web-app-meta" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" META_CONTAINER: "{{ lookup('config', application_id, 'services.' ~ entity_name ~ '.name') }}" diff --git a/roles/web-app-mini-qr/templates/compose.yml.j2 b/roles/web-app-mini-qr/templates/compose.yml.j2 index 5c92728995..9096287282 100644 --- a/roles/web-app-mini-qr/templates/compose.yml.j2 +++ b/roles/web-app-mini-qr/templates/compose.yml.j2 @@ -1,5 +1,5 @@ {% include 'roles/sys-svc-compose/templates/base.yml.j2' %} - {% set service_name = application_id | get_entity_name %} + {% set service_name = application_id | entity_name %} {{ service_name }}: {% include 'roles/sys-svc-container/templates/base.yml.j2' %} {{ lookup('container_image', application_id, 'mini-qr') }} diff --git a/roles/web-app-mini-qr/vars/main.yml b/roles/web-app-mini-qr/vars/main.yml index 09d06dd35c..2d16f6b1d7 100644 --- a/roles/web-app-mini-qr/vars/main.yml +++ b/roles/web-app-mini-qr/vars/main.yml @@ -1,7 +1,7 @@ --- # General application_id: web-app-mini-qr -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" # Helper variables MINI_QR_CONTAINER: "{{ entity_name }}" diff --git a/roles/web-app-moodle/vars/main.yml b/roles/web-app-moodle/vars/main.yml index d935f9ec1b..486a6b3229 100644 --- a/roles/web-app-moodle/vars/main.yml +++ b/roles/web-app-moodle/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-moodle" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" swarm_stack_converge_retries: 600 MOODLE_CODE_DIR: "{{ lookup('volume', 'web-app-moodle', 'code').target }}" diff --git a/roles/web-app-n8n/vars/main.yml b/roles/web-app-n8n/vars/main.yml index d196121c95..e88fecff42 100644 --- a/roles/web-app-n8n/vars/main.yml +++ b/roles/web-app-n8n/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-n8n" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" N8N_CONTAINER: "{{ lookup('config', application_id, 'services.n8n.name') }}" N8N_HTTP_PORT: "{{ lookup('config', application_id, 'services.n8n.ports.local.http') }}" diff --git a/roles/web-app-nextcloud/meta/services.yml b/roles/web-app-nextcloud/meta/services.yml index 2cc5dc8e58..db2238cb5c 100644 --- a/roles/web-app-nextcloud/meta/services.yml +++ b/roles/web-app-nextcloud/meta/services.yml @@ -44,7 +44,7 @@ redis: mem_reservation: 256m mem_limit: 1g pids_limit: 512 - name: "{{ 'web-app-nextcloud' | get_entity_name }}-redis" + name: "{{ 'web-app-nextcloud' | entity_name }}-redis" # nocheck: playwright-service-flag: DB engine, covered by role-local integration tests mariadb: bond: 1 diff --git a/roles/web-app-nextcloud/vars/main.yml b/roles/web-app-nextcloud/vars/main.yml index 42722fc126..479c613e99 100644 --- a/roles/web-app-nextcloud/vars/main.yml +++ b/roles/web-app-nextcloud/vars/main.yml @@ -1,7 +1,7 @@ --- application_id: "web-app-nextcloud" container_port: "{{ lookup('config', application_id, 'services.' ~ entity_name ~ '.ports.internal.http') }}" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" swarm_stack_converge_retries: 600 diff --git a/roles/web-app-odoo/vars/main.yml b/roles/web-app-odoo/vars/main.yml index 6a43ede9d9..94b6c40ee3 100644 --- a/roles/web-app-odoo/vars/main.yml +++ b/roles/web-app-odoo/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-odoo" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" swarm_stack_converge_retries: 600 diff --git a/roles/web-app-openclaw/vars/main.yml b/roles/web-app-openclaw/vars/main.yml index 0e90df6fc6..7de7bbe3e1 100644 --- a/roles/web-app-openclaw/vars/main.yml +++ b/roles/web-app-openclaw/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-openclaw" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" domain: "{{ lookup('domain', application_id) }}" http_port: "{{ lookup('config', application_id, 'services.openclaw.ports.local.http') }}" diff --git a/roles/web-app-opencloud/vars/main.yml b/roles/web-app-opencloud/vars/main.yml index fec5ef1a45..26e37be66b 100644 --- a/roles/web-app-opencloud/vars/main.yml +++ b/roles/web-app-opencloud/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-opencloud" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" proxy_x_forwarded_proto: "https" diff --git a/roles/web-app-openproject/vars/main.yml b/roles/web-app-openproject/vars/main.yml index 17dd1d1510..2fbdb5930f 100644 --- a/roles/web-app-openproject/vars/main.yml +++ b/roles/web-app-openproject/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-openproject" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" OPENPROJECT_VERSION: "{{ lookup('config', application_id, 'services.web.version') }}" OPENPROJECT_IMAGE: "{{ lookup('config', application_id, 'services.web.image') }}" diff --git a/roles/web-app-opentalk/vars/main.yml b/roles/web-app-opentalk/vars/main.yml index a4625936b4..261b9ac2ef 100644 --- a/roles/web-app-opentalk/vars/main.yml +++ b/roles/web-app-opentalk/vars/main.yml @@ -7,7 +7,7 @@ # OPENTALK_OPENCLOUD_URL is gated behind group_names because the `tls` # lookup raises for roles outside the current host's scope. application_id: "web-app-opentalk" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" OPENTALK_CTRL_CONTAINER: "{{ lookup('config', application_id, 'services.controller.name') }}" OPENTALK_CTRL_HTTP_PORT: "{{ lookup('config', application_id, 'services.controller.ports.local.http') }}" diff --git a/roles/web-app-openwebui/vars/main.yml b/roles/web-app-openwebui/vars/main.yml index 474adb9bae..55b1835a63 100644 --- a/roles/web-app-openwebui/vars/main.yml +++ b/roles/web-app-openwebui/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-openwebui" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" OPENWEBUI_URL: "{{ lookup('tls', application_id, 'url.base') }}" OPENWEBUI_CONTAINER: "{{ lookup('config', application_id, 'services.openwebui.name') }}" @@ -17,18 +17,18 @@ OPENWEBUI_EMBEDDING_MODEL: "{{ lookup('config', application_id, 'services.openwe OPENWEBUI_STT_MODEL: "{{ lookup('config', application_id, 'services.openwebui.speech_to_text_model') }}" OPENWEBUI_TTS_MODEL: "{{ lookup('config', application_id, 'services.openwebui.text_to_speech_model') }}" OPENWEBUI_JUPYTER_ENABLED: "{{ lookup('config', application_id, 'services.jupyter.enabled') }}" -OPENWEBUI_JUPYTER_URL: "http://{{ 'svc-ai-jupyter' | get_entity_name }}:{{ lookup('config', 'svc-ai-jupyter', 'services.jupyter.ports.internal.http') }}" +OPENWEBUI_JUPYTER_URL: "http://{{ 'svc-ai-jupyter' | entity_name }}:{{ lookup('config', 'svc-ai-jupyter', 'services.jupyter.ports.internal.http') }}" OPENWEBUI_JUPYTER_TOKEN: "{{ lookup('config', 'svc-ai-jupyter', 'secrets.credentials.auth_token') }}" OPENWEBUI_SEARXNG_ENABLED: "{{ lookup('config', application_id, 'services.searxng.enabled') }}" -OPENWEBUI_SEARXNG_URL: "http://{{ 'svc-ai-searxng' | get_entity_name }}:{{ lookup('config', 'svc-ai-searxng', 'services.searxng.ports.internal.http') }}/search?q=" +OPENWEBUI_SEARXNG_URL: "http://{{ 'svc-ai-searxng' | entity_name }}:{{ lookup('config', 'svc-ai-searxng', 'services.searxng.ports.internal.http') }}/search?q=" OPENWEBUI_TIKA_ENABLED: "{{ lookup('config', application_id, 'services.tika.enabled') }}" -OPENWEBUI_TIKA_URL: "http://{{ 'svc-ai-tika' | get_entity_name }}:{{ lookup('config', 'svc-ai-tika', 'services.tika.ports.internal.http') }}" +OPENWEBUI_TIKA_URL: "http://{{ 'svc-ai-tika' | entity_name }}:{{ lookup('config', 'svc-ai-tika', 'services.tika.ports.internal.http') }}" OPENWEBUI_QDRANT_ENABLED: "{{ lookup('config', application_id, 'services.qdrant.enabled') }}" OPENWEBUI_QDRANT_URL: "{{ lookup('engine', 'qdrant', application_id, 'url') }}" OPENWEBUI_QDRANT_API_KEY: "{{ lookup('engine', 'qdrant', application_id, 'password') }}" OPENWEBUI_QDRANT_COLLECTION_PREFIX: "{{ lookup('engine', 'qdrant', application_id, 'prefix') }}" OPENWEBUI_AGENT_BROKER_ENABLED: "{{ lookup('config', application_id, 'services.agent-broker.enabled') }}" -OPENWEBUI_AGENT_BROKER_URL: "http://{{ 'svc-ai-agent-broker' | get_entity_name }}:{{ lookup('config', 'svc-ai-agent-broker', 'services.agent-broker.ports.internal.http') +OPENWEBUI_AGENT_BROKER_URL: "http://{{ 'svc-ai-agent-broker' | entity_name }}:{{ lookup('config', 'svc-ai-agent-broker', 'services.agent-broker.ports.internal.http') }}/v1" OPENWEBUI_AGENT_BROKER_KEY: "{{ lookup('config', 'svc-ai-agent-broker', 'secrets.credentials.api_key') }}" OPENWEBUI_AGENT_BROKER_TIMEOUT: "{{ lookup('config', 'svc-ai-agent-broker', 'services.agent-broker.request_timeout') }}" diff --git a/roles/web-app-peertube/vars/main.yml b/roles/web-app-peertube/vars/main.yml index 215da9b801..049156a0d0 100644 --- a/roles/web-app-peertube/vars/main.yml +++ b/roles/web-app-peertube/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-peertube" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" PEERTUBE_CONTAINER: "{{ lookup('config', application_id, 'services.peertube.name') }}" PEERTUBE_CONTAINER_ADDRESS: "{{ lookup('container_address', application_id, entity_name) }}" diff --git a/roles/web-app-penpot/vars/main.yml b/roles/web-app-penpot/vars/main.yml index ec94a7e182..cc9450ed8d 100644 --- a/roles/web-app-penpot/vars/main.yml +++ b/roles/web-app-penpot/vars/main.yml @@ -1,7 +1,7 @@ --- # General application_id: "web-app-penpot" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" PENPOT_FRONTEND_CONTAINER: "{{ lookup('config', application_id, 'services.frontend.name') }}" PENPOT_BACKEND_CONTAINER: "{{ lookup('config', application_id, 'services.backend.name') }}" diff --git a/roles/web-app-pgadmin/vars/main.yml b/roles/web-app-pgadmin/vars/main.yml index 3495b14d18..0d323d6f45 100644 --- a/roles/web-app-pgadmin/vars/main.yml +++ b/roles/web-app-pgadmin/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-pgadmin" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" PGADMIN_ADMIN_EMAIL: "{{ lookup('config', application_id, 'users.administrator.email') }}" PGADMIN_ADMIN_EMAIL_TLD: "{{ PGADMIN_ADMIN_EMAIL.split('@')[1].split('.')[-1] }}" diff --git a/roles/web-app-phpldapadmin/vars/main.yml b/roles/web-app-phpldapadmin/vars/main.yml index c6ed6c4c70..970bed4467 100644 --- a/roles/web-app-phpldapadmin/vars/main.yml +++ b/roles/web-app-phpldapadmin/vars/main.yml @@ -1,3 +1,3 @@ --- application_id: "web-app-phpldapadmin" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" diff --git a/roles/web-app-pihole/vars/main.yml b/roles/web-app-pihole/vars/main.yml index 0ba9d3e5d4..960f5aceee 100644 --- a/roles/web-app-pihole/vars/main.yml +++ b/roles/web-app-pihole/vars/main.yml @@ -1,7 +1,7 @@ --- # General application_id: "web-app-pihole" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" domain: "{{ lookup('domain', application_id) }}" PIHOLE_CONTAINER: "{{ entity_name }}" diff --git a/roles/web-app-prometheus/templates/compose.yml.j2 b/roles/web-app-prometheus/templates/compose.yml.j2 index ddeff9f264..57ea6e1c2b 100644 --- a/roles/web-app-prometheus/templates/compose.yml.j2 +++ b/roles/web-app-prometheus/templates/compose.yml.j2 @@ -17,7 +17,7 @@ {{ lookup('container_networks') | indent(4) }} {% for metrics_app_id in lookup('native_metrics_apps') %} - {{ metrics_app_id | get_entity_name }}: + {{ metrics_app_id | entity_name }}: {% endfor %} {% set service_name = 'blackbox-exporter' %} {{ service_name }}: @@ -101,7 +101,7 @@ {{ lookup('compose_volumes') }} {{ lookup('compose_networks') }} {% for metrics_app_id in lookup('native_metrics_apps') %} - {% set service_name = metrics_app_id | get_entity_name %} + {% set service_name = metrics_app_id | entity_name %} {{ service_name }}: external: true {% endfor %} diff --git a/roles/web-app-prometheus/templates/nginx/healthz.conf.j2 b/roles/web-app-prometheus/templates/nginx/healthz.conf.j2 index 01e6864639..75b3c9d3b4 100644 --- a/roles/web-app-prometheus/templates/nginx/healthz.conf.j2 +++ b/roles/web-app-prometheus/templates/nginx/healthz.conf.j2 @@ -48,7 +48,7 @@ } } -{% set prometheus_backend = lookup('proxy_pass', application_id, proxy_service_key | default(application_id | get_entity_name), 'http', tail='/', local_port=http_port, internal_port=proxy_internal_port | default('')) %} +{% set prometheus_backend = lookup('proxy_pass', application_id, proxy_service_key | default(application_id | entity_name), 'http', tail='/', local_port=http_port, internal_port=proxy_internal_port | default('')) %} location = /_live_probe { internal; {{ prometheus_backend }} diff --git a/roles/web-app-prometheus/templates/nginx/locations.conf.j2 b/roles/web-app-prometheus/templates/nginx/locations.conf.j2 index a669a3dc2c..cd66670cd9 100644 --- a/roles/web-app-prometheus/templates/nginx/locations.conf.j2 +++ b/roles/web-app-prometheus/templates/nginx/locations.conf.j2 @@ -15,7 +15,7 @@ $container_name — Docker container name for /healthz/live polling. Callers may set {% set container_name = "..." %} before this include to override the default (derived from the - canonical service key via get_entity_name). + canonical service key via `| entity_name`). healthz.conf.j2 — /healthz/live + /healthz/ready + /_live_probe location.conf.j2 — log_by_lua_block per-request metrics collection @@ -26,7 +26,7 @@ {% if container_name is defined %} set $container_name "{{ container_name }}"; {% else %} - {% set prometheus_service_key = application_id | get_entity_name %} + {% set prometheus_service_key = application_id | entity_name %} set $container_name "{{ lookup('config', application_id, 'services.' + prometheus_service_key + '.name', '') }}"; {% endif %} {% include 'roles/web-app-prometheus/templates/nginx/healthz.conf.j2' %} diff --git a/roles/web-app-roulette-wheel/vars/main.yml b/roles/web-app-roulette-wheel/vars/main.yml index 21b8572168..144a7e2cc6 100644 --- a/roles/web-app-roulette-wheel/vars/main.yml +++ b/roles/web-app-roulette-wheel/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-roulette-wheel" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" ROULETTE_WHEEL_APP_REL: "services/repository" ROULETTE_IMAGE: "{{ lookup('config', application_id, 'services.roulette-wheel.image') }}" diff --git a/roles/web-app-seaweedfs-console/tasks/main.yml b/roles/web-app-seaweedfs-console/tasks/main.yml deleted file mode 100644 index 240392665e..0000000000 --- a/roles/web-app-seaweedfs-console/tasks/main.yml +++ /dev/null @@ -1,4 +0,0 @@ ---- -- name: "🚀 Deploy web-app-seaweedfs-console (core, once per play)" - include_tasks: 00_core.yml - when: run_once_web_app_seaweedfs_console is not defined diff --git a/roles/web-app-seaweedfs-console/README.md b/roles/web-app-seaweedfs/README.md similarity index 100% rename from roles/web-app-seaweedfs-console/README.md rename to roles/web-app-seaweedfs/README.md diff --git a/roles/web-app-seaweedfs-console/files/playwright/.nocheck b/roles/web-app-seaweedfs/files/playwright/.nocheck similarity index 100% rename from roles/web-app-seaweedfs-console/files/playwright/.nocheck rename to roles/web-app-seaweedfs/files/playwright/.nocheck diff --git a/roles/web-app-seaweedfs-console/files/playwright/_shared.js b/roles/web-app-seaweedfs/files/playwright/_shared.js similarity index 100% rename from roles/web-app-seaweedfs-console/files/playwright/_shared.js rename to roles/web-app-seaweedfs/files/playwright/_shared.js diff --git a/roles/web-app-seaweedfs-console/files/playwright/playwright.spec.js b/roles/web-app-seaweedfs/files/playwright/playwright.spec.js similarity index 100% rename from roles/web-app-seaweedfs-console/files/playwright/playwright.spec.js rename to roles/web-app-seaweedfs/files/playwright/playwright.spec.js diff --git a/roles/web-app-seaweedfs-console/files/playwright/test-administrator-persona.js b/roles/web-app-seaweedfs/files/playwright/test-administrator-persona.js similarity index 100% rename from roles/web-app-seaweedfs-console/files/playwright/test-administrator-persona.js rename to roles/web-app-seaweedfs/files/playwright/test-administrator-persona.js diff --git a/roles/web-app-seaweedfs-console/files/playwright/test-biber-persona.js b/roles/web-app-seaweedfs/files/playwright/test-biber-persona.js similarity index 100% rename from roles/web-app-seaweedfs-console/files/playwright/test-biber-persona.js rename to roles/web-app-seaweedfs/files/playwright/test-biber-persona.js diff --git a/roles/web-app-seaweedfs-console/files/playwright/test-guest-persona.js b/roles/web-app-seaweedfs/files/playwright/test-guest-persona.js similarity index 100% rename from roles/web-app-seaweedfs-console/files/playwright/test-guest-persona.js rename to roles/web-app-seaweedfs/files/playwright/test-guest-persona.js diff --git a/roles/web-app-seaweedfs-console/files/playwright/test-storage-buckets.js b/roles/web-app-seaweedfs/files/playwright/test-storage-buckets.js similarity index 100% rename from roles/web-app-seaweedfs-console/files/playwright/test-storage-buckets.js rename to roles/web-app-seaweedfs/files/playwright/test-storage-buckets.js diff --git a/roles/web-app-seaweedfs-console/meta/csp.yml b/roles/web-app-seaweedfs/meta/csp.yml similarity index 100% rename from roles/web-app-seaweedfs-console/meta/csp.yml rename to roles/web-app-seaweedfs/meta/csp.yml diff --git a/roles/web-app-seaweedfs-console/meta/domains.yml b/roles/web-app-seaweedfs/meta/domains.yml similarity index 100% rename from roles/web-app-seaweedfs-console/meta/domains.yml rename to roles/web-app-seaweedfs/meta/domains.yml diff --git a/roles/web-app-seaweedfs-console/meta/info.yml b/roles/web-app-seaweedfs/meta/info.yml similarity index 100% rename from roles/web-app-seaweedfs-console/meta/info.yml rename to roles/web-app-seaweedfs/meta/info.yml diff --git a/roles/web-app-seaweedfs-console/meta/main.yml b/roles/web-app-seaweedfs/meta/main.yml similarity index 100% rename from roles/web-app-seaweedfs-console/meta/main.yml rename to roles/web-app-seaweedfs/meta/main.yml diff --git a/roles/web-app-seaweedfs-console/meta/networks.yml b/roles/web-app-seaweedfs/meta/networks.yml similarity index 100% rename from roles/web-app-seaweedfs-console/meta/networks.yml rename to roles/web-app-seaweedfs/meta/networks.yml diff --git a/roles/web-app-seaweedfs-console/meta/server.yml b/roles/web-app-seaweedfs/meta/server.yml similarity index 100% rename from roles/web-app-seaweedfs-console/meta/server.yml rename to roles/web-app-seaweedfs/meta/server.yml diff --git a/roles/web-app-seaweedfs-console/meta/services.yml b/roles/web-app-seaweedfs/meta/services.yml similarity index 98% rename from roles/web-app-seaweedfs-console/meta/services.yml rename to roles/web-app-seaweedfs/meta/services.yml index 60e2f123a7..ad8c4dba51 100644 --- a/roles/web-app-seaweedfs-console/meta/services.yml +++ b/roles/web-app-seaweedfs/meta/services.yml @@ -17,7 +17,7 @@ sso: host: seaweedfs-console port: "80" allowed_groups: - - "{{ lookup('rbac_group_path', application_id='web-app-seaweedfs-console', role='administrator') }}" + - "{{ lookup('rbac_group_path', application_id='web-app-seaweedfs', role='administrator') }}" # nocheck: dynamic-flag — LDAP is disabled for this role; the literal false is intentional, not group-gated. ldap: enabled: false diff --git a/roles/web-app-seaweedfs-console/meta/variants.yml b/roles/web-app-seaweedfs/meta/variants.yml similarity index 100% rename from roles/web-app-seaweedfs-console/meta/variants.yml rename to roles/web-app-seaweedfs/meta/variants.yml diff --git a/roles/web-app-seaweedfs-console/meta/volumes.yml b/roles/web-app-seaweedfs/meta/volumes.yml similarity index 100% rename from roles/web-app-seaweedfs-console/meta/volumes.yml rename to roles/web-app-seaweedfs/meta/volumes.yml diff --git a/roles/web-app-seaweedfs-console/tasks/00_core.yml b/roles/web-app-seaweedfs/tasks/00_core.yml similarity index 100% rename from roles/web-app-seaweedfs-console/tasks/00_core.yml rename to roles/web-app-seaweedfs/tasks/00_core.yml diff --git a/roles/web-app-seaweedfs/tasks/main.yml b/roles/web-app-seaweedfs/tasks/main.yml new file mode 100644 index 0000000000..6d297c4ef3 --- /dev/null +++ b/roles/web-app-seaweedfs/tasks/main.yml @@ -0,0 +1,4 @@ +--- +- name: "🚀 Deploy web-app-seaweedfs (core, once per play)" + include_tasks: 00_core.yml + when: run_once_web_app_seaweedfs is not defined diff --git a/roles/web-app-seaweedfs-console/templates/compose.yml.j2 b/roles/web-app-seaweedfs/templates/compose.yml.j2 similarity index 100% rename from roles/web-app-seaweedfs-console/templates/compose.yml.j2 rename to roles/web-app-seaweedfs/templates/compose.yml.j2 diff --git a/roles/web-app-seaweedfs-console/templates/nginx.conf.j2 b/roles/web-app-seaweedfs/templates/nginx.conf.j2 similarity index 100% rename from roles/web-app-seaweedfs-console/templates/nginx.conf.j2 rename to roles/web-app-seaweedfs/templates/nginx.conf.j2 diff --git a/roles/web-app-seaweedfs-console/templates/playwright.env.j2 b/roles/web-app-seaweedfs/templates/playwright.env.j2 similarity index 100% rename from roles/web-app-seaweedfs-console/templates/playwright.env.j2 rename to roles/web-app-seaweedfs/templates/playwright.env.j2 diff --git a/roles/web-app-seaweedfs-console/templates/proxy.conf.j2 b/roles/web-app-seaweedfs/templates/proxy.conf.j2 similarity index 100% rename from roles/web-app-seaweedfs-console/templates/proxy.conf.j2 rename to roles/web-app-seaweedfs/templates/proxy.conf.j2 diff --git a/roles/web-app-seaweedfs-console/vars/main.yml b/roles/web-app-seaweedfs/vars/main.yml similarity index 89% rename from roles/web-app-seaweedfs-console/vars/main.yml rename to roles/web-app-seaweedfs/vars/main.yml index fee6a765fb..c2578a965c 100644 --- a/roles/web-app-seaweedfs-console/vars/main.yml +++ b/roles/web-app-seaweedfs/vars/main.yml @@ -1,6 +1,6 @@ --- -application_id: "web-app-seaweedfs-console" -entity_name: "{{ application_id | get_entity_name }}" +application_id: "web-app-seaweedfs" +entity_name: seaweedfs-console SEAWEEDFS_ENGINE_ID: "web-svc-seaweedfs" SEAWEEDFS_ENGINE_HOST: "{{ lookup('config', SEAWEEDFS_ENGINE_ID, 'services.seaweedfs.name') }}" diff --git a/roles/web-app-shopware/vars/main.yml b/roles/web-app-shopware/vars/main.yml index a60d6a404d..94e47ea056 100644 --- a/roles/web-app-shopware/vars/main.yml +++ b/roles/web-app-shopware/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-shopware" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" container_port: "{{ lookup('config', application_id, 'services.web.ports.internal.http') }}" diff --git a/roles/web-app-snipe-it/vars/main.yml b/roles/web-app-snipe-it/vars/main.yml index 56966c32ef..bcd11f9e01 100644 --- a/roles/web-app-snipe-it/vars/main.yml +++ b/roles/web-app-snipe-it/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-snipe-it" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" swarm_stack_converge_retries: 600 diff --git a/roles/web-app-socialhome/vars/main.yml b/roles/web-app-socialhome/vars/main.yml index bc903800bc..740dc8906d 100644 --- a/roles/web-app-socialhome/vars/main.yml +++ b/roles/web-app-socialhome/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-socialhome" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" SOCIALHOME_EXTERNAL_URL: "{{ lookup('tls', application_id, 'url.base') }}" SOCIALHOME_INTERNAL_URL: "http://{{ DOCKER_REACH_HOST }}:{{ lookup('config', application_id, 'services.' ~ entity_name ~ '.ports.local.http') }}" diff --git a/roles/web-app-suitecrm/vars/main.yml b/roles/web-app-suitecrm/vars/main.yml index f87c7b5368..39656a84db 100644 --- a/roles/web-app-suitecrm/vars/main.yml +++ b/roles/web-app-suitecrm/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-suitecrm" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" domain: "{{ lookup('domain',application_id) }}" swarm_stack_converge_retries: 600 diff --git a/roles/web-app-taiga/vars/main.yml b/roles/web-app-taiga/vars/main.yml index f62f9f5549..c6af22f58c 100644 --- a/roles/web-app-taiga/vars/main.yml +++ b/roles/web-app-taiga/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-taiga" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" TAIGA_EMAIL_BACKEND: "{{ 'smtp' if lookup('email', application_id).smtp else 'console' }}" diff --git a/roles/web-app-wordpress/vars/main.yml b/roles/web-app-wordpress/vars/main.yml index 5aedd3cb20..75713103a8 100644 --- a/roles/web-app-wordpress/vars/main.yml +++ b/roles/web-app-wordpress/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-wordpress" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" WORDPRESS_URL: "{{ lookup('tls', application_id, 'url.base') }}" WORDPRESS_TITLE: "{{ lookup('config', application_id, 'services.' ~ entity_name ~ '.title') }}" @@ -40,9 +40,27 @@ WORDPRESS_CONFIG_UPLD_ABS: "{{ [lookup('container', application_id, 'directories WORDPRESS_MU_PLUGINS_DIR: "{{ [WORDPRESS_DOCKER_HTML_PATH, 'wp-content/mu-plugins'] | path_join }}" WORDPRESS_PLUGINS_DIR: "{{ [WORDPRESS_DOCKER_HTML_PATH, 'wp-content/plugins'] | path_join }}" +WORDPRESS_BBB_API_URL: >- + {{ lookup('config', application_id, 'addons.video-conferencing-with-bbb.config.bbb_settings.api_url') + if (lookup('config', application_id, 'addons.video-conferencing-with-bbb.enabled') | bool) else '' }} +WORDPRESS_BBB_API_SECRET: >- + {{ lookup('config', application_id, 'addons.video-conferencing-with-bbb.config.bbb_settings.api_secret') + if (lookup('config', application_id, 'addons.video-conferencing-with-bbb.enabled') | bool) else '' }} +WORDPRESS_LISTMONK_API_URL: >- + {{ lookup('config', application_id, 'addons.integration-for-listmonk-mailing-list-and-newsletter-manager.config.listmonk_settings.api_url') + if (lookup('config', application_id, 'addons.integration-for-listmonk-mailing-list-and-newsletter-manager.enabled') | bool) else '' }} +WORDPRESS_PEERTUBE_INSTANCE_URL: >- + {{ lookup('config', application_id, 'addons.video-manager-for-peertube.config.peertube_settings.instance_url') + if (lookup('config', application_id, 'addons.video-manager-for-peertube.enabled') | bool) else '' }} WORDPRESS_S3_UPLOADS_ARCHIVE: >- {{ lookup('config', application_id, 'addons.s3-uploads.config.archive') if (lookup('config', application_id, 'addons.s3-uploads.enabled') | bool) else '' }} +WORDPRESS_TRANSLATE_OPTIONS: >- + {{ lookup('config', application_id, 'addons.freedomtranslate-wp.config.options') + if (lookup('config', application_id, 'addons.freedomtranslate-wp.enabled') | bool) else [] }} +WORDPRESS_TRANSLATE_ENDPOINT: >- + {{ (WORDPRESS_TRANSLATE_OPTIONS | selectattr('name', 'equalto', 'freedomtranslate_api_url') + | map(attribute='value') | first) | default('', true) }} WORDPRESS_S3_UPLOADS_SRC: "/usr/src/s3-uploads" WORDPRESS_S3_UPLOADS_DIR: "{{ [WORDPRESS_PLUGINS_DIR, 's3-uploads'] | path_join }}" WORDPRESS_PERMALINK_STRUCTURE: "/%postname%/" diff --git a/roles/web-app-xwiki/vars/main.yml b/roles/web-app-xwiki/vars/main.yml index efb801d8ab..41b8fac89d 100644 --- a/roles/web-app-xwiki/vars/main.yml +++ b/roles/web-app-xwiki/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-xwiki" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" domain: "{{ lookup('domain',application_id) }}" container_hostname: "{{ lookup('container_hostname', application_id) }}" diff --git a/roles/web-app-yourls/vars/main.yml b/roles/web-app-yourls/vars/main.yml index 7c480bd034..69726aae6e 100644 --- a/roles/web-app-yourls/vars/main.yml +++ b/roles/web-app-yourls/vars/main.yml @@ -1,7 +1,7 @@ --- # General application_id: "web-app-yourls" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" YOURLS_USER: "{{ lookup('config', application_id, 'users.administrator.username') }}" YOURLS_PASSWORD: "{{ lookup('config', application_id, 'secrets.credentials.administrator_password') }}" diff --git a/roles/web-app-zammad/vars/main.yml b/roles/web-app-zammad/vars/main.yml index 99c0d57e2f..8c83a255dd 100644 --- a/roles/web-app-zammad/vars/main.yml +++ b/roles/web-app-zammad/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-app-zammad" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" ZAMMAD_INIT_SERVICE: "init" ZAMMAD_RAILS_SERVICE: "railsserver" diff --git a/roles/web-svc-api/vars/main.yml b/roles/web-svc-api/vars/main.yml index fccfdf3dea..4aa57775e9 100644 --- a/roles/web-svc-api/vars/main.yml +++ b/roles/web-svc-api/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-svc-api" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" API_CONTAINER: "{{ lookup('config', application_id, 'services.' ~ entity_name ~ '.name') }}" API_SERVICE: "{{ entity_name }}" diff --git a/roles/web-svc-collabora/vars/main.yml b/roles/web-svc-collabora/vars/main.yml index 2d1a635077..2403547662 100644 --- a/roles/web-svc-collabora/vars/main.yml +++ b/roles/web-svc-collabora/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: web-svc-collabora -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" domain: "{{ lookup('domain',application_id) }}" http_port: "{{ lookup('config', application_id, 'services.collabora.ports.local.http') }}" diff --git a/roles/web-svc-coturn/vars/main.yml b/roles/web-svc-coturn/vars/main.yml index 1fd172c9aa..7f6a3fc5b3 100644 --- a/roles/web-svc-coturn/vars/main.yml +++ b/roles/web-svc-coturn/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-svc-coturn" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" domain: "{{ lookup('domain',application_id) }}" COTURN_CONTAINER: "{{ entity_name }}" diff --git a/roles/web-svc-libretranslate/vars/main.yml b/roles/web-svc-libretranslate/vars/main.yml index 1e5d2762e1..2ce3f36145 100644 --- a/roles/web-svc-libretranslate/vars/main.yml +++ b/roles/web-svc-libretranslate/vars/main.yml @@ -1,7 +1,7 @@ --- application_id: web-svc-libretranslate # ID of the application -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" LIBRETRANSLATE_SERVICE: "{{ entity_name }}" LIBRETRANSLATE_IMAGE: "{{ lookup('config', application_id, 'services.libretranslate.image') }}" diff --git a/roles/web-svc-logout/vars/main.yml b/roles/web-svc-logout/vars/main.yml index 186a23350f..1250cc060f 100644 --- a/roles/web-svc-logout/vars/main.yml +++ b/roles/web-svc-logout/vars/main.yml @@ -2,7 +2,7 @@ application_id: "web-svc-logout" container_port: "{{ lookup('config', application_id, 'services.' ~ entity_name ~ '.ports.internal.http') }}" http_port: "{{ lookup('config', application_id, 'services.logout.ports.local.http') }}" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" LOGOUT_DOMAINS: "{{ (lookup('applications') | logout_domains(group_names, lookup('domains'))) | unique | sort }}" LOGOUT_URLS: "{{ LOGOUT_DOMAINS | map('regex_replace', '^(.*)$', lookup('tls', application_id, 'protocols.web') ~ '://\\1') | list }}" diff --git a/roles/web-svc-onlyoffice/vars/main.yml b/roles/web-svc-onlyoffice/vars/main.yml index 7138a9a8ca..92d14eb90a 100644 --- a/roles/web-svc-onlyoffice/vars/main.yml +++ b/roles/web-svc-onlyoffice/vars/main.yml @@ -2,7 +2,7 @@ application_id: web-svc-onlyoffice domain: "{{ lookup('domain',application_id) }}" http_port: "{{ lookup('config', application_id, 'services.onlyoffice.ports.local.http') }}" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" ONLYOFFICE_CONTAINER: "{{ lookup('config', application_id, 'services.' ~ entity_name ~ '.name') }}" ONLYOFFICE_JWT_SECRET: "{{ lookup('config', application_id, 'secrets.credentials.onlyoffice_jwt_secret') }}" diff --git a/roles/web-svc-seaweedfs/README.md b/roles/web-svc-seaweedfs/README.md index a72701af9d..77023ebbf7 100644 --- a/roles/web-svc-seaweedfs/README.md +++ b/roles/web-svc-seaweedfs/README.md @@ -14,7 +14,7 @@ The role serves one canonical domain: - `api.seaweedfs.s3.*` is the public S3 endpoint and is reachable without SSO gating. -The browser interfaces for the filer and master are served by [web-app-seaweedfs-console](../web-app-seaweedfs-console/), which reaches this role over the shared object-store network. +The browser interfaces for the filer and master are served by [web-app-seaweedfs](../web-app-seaweedfs/), which reaches this role over the shared object-store network. A node running this role without the console keeps its object store and its S3 endpoint; it simply has no browser console. Per-consumer S3 identities are rendered into `s3.json`: each consuming role receives an access key and bucket-scoped `Read`, `Write`, `List`, and `Tagging` actions, and consumers marked `public` additionally receive anonymous read on their bucket. diff --git a/roles/web-svc-seaweedfs/meta/services.yml b/roles/web-svc-seaweedfs/meta/services.yml index 78eaf62c9c..d714462446 100644 --- a/roles/web-svc-seaweedfs/meta/services.yml +++ b/roles/web-svc-seaweedfs/meta/services.yml @@ -1,7 +1,7 @@ --- # nocheck: tor-contract — object-storage backend; consumed server-side over the # internal network (matrix S3 media etc.), never a Tor-browser surface, so it -# rides no node onion. The browser consoles live in web-app-seaweedfs-console. +# rides no node onion. The browser consoles live in web-app-seaweedfs. # nocheck: playwright-service-flag — central object-store provider entity seaweedfs: healthcheck: diff --git a/roles/web-svc-seaweedfs/vars/main.yml b/roles/web-svc-seaweedfs/vars/main.yml index 4bb16d23e4..528de82329 100644 --- a/roles/web-svc-seaweedfs/vars/main.yml +++ b/roles/web-svc-seaweedfs/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: "web-svc-seaweedfs" -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" SEAWEEDFS_CONTAINER: "{{ lookup('config', application_id, 'services.seaweedfs.name') }}" SEAWEEDFS_CONSUMER_COUNT: "{{ lookup('objstore_consumers', 'seaweedfs') | length }}" diff --git a/roles/web-svc-simpleicons/vars/main.yml b/roles/web-svc-simpleicons/vars/main.yml index e6b0be1a80..2e1ebc3e9c 100644 --- a/roles/web-svc-simpleicons/vars/main.yml +++ b/roles/web-svc-simpleicons/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: web-svc-simpleicons -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" container_port: "{{ lookup('config', application_id, 'services.' ~ entity_name ~ '.ports.internal.http') }}" SIMPLEICONS_HOST_SERVER_FILE: "{{ [ lookup('container', application_id, 'directories.config'), 'server.js' ] | path_join }}" diff --git a/roles/web-svc-xmpp/vars/main.yml b/roles/web-svc-xmpp/vars/main.yml index dbbc2239eb..73b0a8337e 100644 --- a/roles/web-svc-xmpp/vars/main.yml +++ b/roles/web-svc-xmpp/vars/main.yml @@ -1,6 +1,6 @@ --- application_id: web-svc-xmpp -entity_name: "{{ application_id | get_entity_name }}" +entity_name: "{{ application_id | entity_name }}" EJABBERD_CONTAINER: "{{ lookup('config', application_id, 'services.xmpp.name') }}" XMPP_DOMAIN: "{{ (lookup('applications', application_id).domains.canonical | first) }}" diff --git a/scripts/container/purge/apps.sh b/scripts/container/purge/apps.sh index 1098523deb..850196beac 100755 --- a/scripts/container/purge/apps.sh +++ b/scripts/container/purge/apps.sh @@ -43,7 +43,7 @@ entities=() for app in "${apps[@]}"; do [[ -n "${app}" ]] || continue - entity="$("${python_bin}" -c 'from utils.roles.entity.name import get_entity_name; import sys; print(get_entity_name(sys.argv[1]) or "")' "${app}")" + entity="$("${python_bin}" -c 'from utils.roles.entity.name import entity_name; import sys; print(entity_name(sys.argv[1]) or "")' "${app}")" if [[ -z "${entity}" ]]; then echo "!!! WARNING: could not derive entity from apps=${app}: skipping" diff --git a/scripts/tests/deploy/swarm/utils/_context.sh b/scripts/tests/deploy/swarm/utils/_context.sh index ca3ddce992..770124a466 100755 --- a/scripts/tests/deploy/swarm/utils/_context.sh +++ b/scripts/tests/deploy/swarm/utils/_context.sh @@ -14,7 +14,7 @@ fi : "${APP_ID:?APP_ID required}" -ENTITY="$(PYTHONPATH="${_REPO_ROOT}" "${PYTHON}" -c "from utils.roles.entity.name import get_entity_name; print(get_entity_name('${APP_ID}'))")" +ENTITY="$(PYTHONPATH="${_REPO_ROOT}" "${PYTHON}" -c "from utils.roles.entity.name import entity_name; print(entity_name('${APP_ID}'))")" STACK_NAME="${ENTITY}" CUSTOM_IMAGE_REPO="${ENTITY}_custom" diff --git a/tasks/utils/migrate_meta_layout/indices.py b/tasks/utils/migrate_meta_layout/indices.py index 9743e9ced4..d3ed217c47 100644 --- a/tasks/utils/migrate_meta_layout/indices.py +++ b/tasks/utils/migrate_meta_layout/indices.py @@ -3,7 +3,7 @@ from __future__ import annotations from functools import cache from typing import TYPE_CHECKING, Any -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from . import yaml_io @@ -62,7 +62,7 @@ def build_port_index( if not isinstance(port_value, int): continue role_name, entity = _split_role_and_entity(combined_key, roles_dir) - entity_key = entity or get_entity_name(role_name) or role_name + entity_key = entity or entity_name(role_name) or role_name role_ports = ports_for_role.setdefault(role_name, {}) entity_ports = role_ports.setdefault(entity_key, {}) scope_map = entity_ports.setdefault(scope_label, {}) @@ -88,7 +88,7 @@ def _absorb_relays( else: continue role_name, entity = _split_role_and_entity(base, roles_dir) - entity_key = entity or get_entity_name(role_name) or role_name + entity_key = entity or entity_name(role_name) or role_name role_relays = relays_for_role.setdefault(role_name, {}) role_relays.setdefault(entity_key, {})[kind] = port_value diff --git a/tasks/utils/migrate_meta_layout/role_builder.py b/tasks/utils/migrate_meta_layout/role_builder.py index 7451f9e90d..e620521f91 100644 --- a/tasks/utils/migrate_meta_layout/role_builder.py +++ b/tasks/utils/migrate_meta_layout/role_builder.py @@ -3,7 +3,7 @@ from __future__ import annotations from collections import OrderedDict from typing import TYPE_CHECKING, Any -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.mapping import ( ROLE_FILE_META_MAIN, ROLE_FILE_META_RBAC, @@ -39,7 +39,7 @@ def build( relays_for_role: dict[str, dict[str, int]], ) -> None: role_name = role_dir.name - primary_entity = get_entity_name(role_name) or role_name + primary_entity = entity_name(role_name) or role_name config = _load_mapping(role_dir / "config" / "main.yml", role_name) schema = _load_mapping(role_dir / "schema" / "main.yml", role_name) diff --git a/tests/integration/infrastructure/compose/test_networks_render.py b/tests/integration/infrastructure/compose/test_networks_render.py index a7d5b52734..c5e66ba42b 100644 --- a/tests/integration/infrastructure/compose/test_networks_render.py +++ b/tests/integration/infrastructure/compose/test_networks_render.py @@ -17,7 +17,7 @@ from utils.networks.render import ( render_compose_networks, render_container_networks, ) -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name def _registry(): @@ -123,7 +123,7 @@ def _compose(application_id, deployment_mode, **lookup_kwargs): application_id=application_id, deployment_mode=deployment_mode, registry=_registry(), - get_entity_name=get_entity_name, + entity_name=entity_name, lookup_config=config, lookup_database=db, ) @@ -135,7 +135,7 @@ def _container(application_id, deployment_mode, **lookup_kwargs): application_id=application_id, deployment_mode=deployment_mode, registry=_registry(), - get_entity_name=get_entity_name, + entity_name=entity_name, lookup_config=config, lookup_database=db, ) diff --git a/tests/integration/roles/meta/services/test_dynamic_flags.py b/tests/integration/roles/meta/services/test_dynamic_flags.py index 27901ea3c5..1b27591894 100644 --- a/tests/integration/roles/meta/services/test_dynamic_flags.py +++ b/tests/integration/roles/meta/services/test_dynamic_flags.py @@ -74,7 +74,7 @@ from utils.roles.applications.services.registry import ( build_role_to_primary_service_key, build_service_registry_from_roles_dir, ) -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.mapping import ROLE_FILE_META_SERVICES from . import PROJECT_ROOT @@ -170,7 +170,7 @@ class TestServicesDynamicFlags(unittest.TestCase): block_exempt = _suppressed_top_level_keys(services_file) inline_exempt = _suppressed_inline_flags(services_file) - own_entity = get_entity_name(role_name) + own_entity = entity_name(role_name) for service_key, entry in data.items(): if not isinstance(entry, dict): diff --git a/tests/integration/roles/meta/services/test_no_self_reference.py b/tests/integration/roles/meta/services/test_no_self_reference.py index 34f5335d77..18f6a815ee 100644 --- a/tests/integration/roles/meta/services/test_no_self_reference.py +++ b/tests/integration/roles/meta/services/test_no_self_reference.py @@ -26,7 +26,7 @@ from __future__ import annotations import unittest from utils.cache.yaml import load_yaml_any -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.mapping import ROLE_FILE_META_SERVICES from . import PROJECT_ROOT @@ -55,8 +55,8 @@ class TestServicesNoSelfReference(unittest.TestCase): if not isinstance(data, dict): continue - entity_name = get_entity_name(role_name) - entry = data.get(entity_name) + entity = entity_name(role_name) + entry = data.get(entity) if not isinstance(entry, dict): continue @@ -64,7 +64,7 @@ class TestServicesNoSelfReference(unittest.TestCase): value = entry.get(flag) if _is_self_reference(value, role_name): offenders.append( - f"{role_name}: services.{entity_name}.{flag}={value!r} " + f"{role_name}: services.{entity}.{flag}={value!r} " f"is a tautological self-reference. The role's own " f"primary entity is loaded only when the role itself " f"is in group_names, so the Jinja always resolves " diff --git a/tests/lint/ansible/jinja/test_container_address_requires_service_name.py b/tests/lint/ansible/jinja/test_container_address_requires_service_name.py index c7046df4a1..44df1e4049 100644 --- a/tests/lint/ansible/jinja/test_container_address_requires_service_name.py +++ b/tests/lint/ansible/jinja/test_container_address_requires_service_name.py @@ -41,7 +41,7 @@ from plugins.lookup.container_address import _resolve_bare_name from utils.annotations.suppress import is_suppressed_at from utils.cache.applications import get_application_defaults from utils.cache.files import iter_project_files_with_content -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from . import PROJECT_ROOT @@ -78,7 +78,7 @@ def _resolve_key(arg: str, app: str) -> str | None: if literal: return literal.group(1) if arg.strip() == "entity_name": - return get_entity_name(app) + return entity_name(app) if arg.strip() == "application_id": return app return None diff --git a/tests/lint/ansible/jinja/test_container_healthcheck_requires_probe.py b/tests/lint/ansible/jinja/test_container_healthcheck_requires_probe.py index 8bc7c17064..ec6af53a41 100644 --- a/tests/lint/ansible/jinja/test_container_healthcheck_requires_probe.py +++ b/tests/lint/ansible/jinja/test_container_healthcheck_requires_probe.py @@ -23,7 +23,7 @@ and a ``test`` fighting over the same entry). Resolution scope: literal service keys, the ``service_name`` Jinja variable resolved against the nearest preceding ``{% set service_name = ... %}``, -``entity_name``, ``application_id | get_entity_name``, and role var +``entity_name``, ``application_id | entity_name``, and role var constants (``CHESS_SERVICE``) whose ``vars/main.yml`` value resolves the same way. Any other dynamic expression (loop variables) is skipped - it cannot be resolved statically. @@ -46,7 +46,7 @@ from utils.cache.yaml import load_yaml from utils.docker.healthcheck.compose import known_flavors, resolve_flavors from utils.docker.healthcheck.prefixes import PREFIXES from utils.docker.healthcheck.probes import PROBES -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.mapping import ROLE_FILE_VARS_MAIN from . import PROJECT_ROOT @@ -64,7 +64,7 @@ _LITERAL = re.compile(r"""^['"]([^'"]+)['"]$""") _INTERPOLATION = re.compile(r"""^\{\{\s*(.+?)\s*\}\}$""") _ROLE_VAR = re.compile(r"^[A-Z][A-Z0-9_]*$") _PLAIN_KEY = re.compile(r"^[a-z0-9][a-z0-9_-]*$") -_ENTITY_NAME_EXPRESSIONS = ("entity_name", "application_id | get_entity_name") +_ENTITY_NAME_EXPRESSIONS = ("entity_name", "application_id | entity_name") def _role_app_id(rel_path: str) -> str | None: @@ -89,7 +89,7 @@ def _resolve_expression(expression: str, app: str) -> str | None: if interpolation: return _resolve_expression(interpolation.group(1), app) if normalized in _ENTITY_NAME_EXPRESSIONS: - return get_entity_name(app) + return entity_name(app) if _ROLE_VAR.match(normalized): return _resolve_role_var(normalized, app) if _PLAIN_KEY.match(normalized) and normalized in ( diff --git a/tests/lint/ansible/modules/test_network_create_via_util.py b/tests/lint/ansible/modules/test_network_create_via_util.py index 8fd37dd5b1..3a3d83e576 100644 --- a/tests/lint/ansible/modules/test_network_create_via_util.py +++ b/tests/lint/ansible/modules/test_network_create_via_util.py @@ -22,7 +22,7 @@ canonical helpers, both under (mariadb, postgres, ollama). Both helpers derive the docker-side network name from -``role_id | get_entity_name`` and the subnet from +``role_id | entity_name`` and the subnet from ``meta/server.yml.networks.local.subnet``, so the mapping stays in one place. Ad-hoc ``community.docker.docker_network`` calls or shell-out to ``docker network create`` / ``container network create`` reintroduce @@ -133,7 +133,7 @@ class TestNetworkCreateViaUtil(unittest.TestCase): vars: compose_handlers_flush: true - Both derive name (``role_id | get_entity_name``) and subnet + Both derive name (``role_id | entity_name``) and subnet (``meta/server.yml.networks.local.subnet``) automatically. Calling ``community.docker.docker_network`` directly or shelling out to ``docker network create`` re-introduces the diff --git a/tests/lint/ansible/roles/meta/test_clearnet_role_forbids_variant_tor.py b/tests/lint/ansible/roles/meta/test_clearnet_role_forbids_variant_tor.py index 31004faeb9..0d2e1068ee 100644 --- a/tests/lint/ansible/roles/meta/test_clearnet_role_forbids_variant_tor.py +++ b/tests/lint/ansible/roles/meta/test_clearnet_role_forbids_variant_tor.py @@ -40,7 +40,7 @@ import yaml from utils.annotations.suppress import line_has_rule from utils.cache.files import read_text from utils.cache.yaml import load_yaml_str -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.mapping import ROLE_FILE_META_SERVICES, ROLE_FILE_META_VARIANTS from . import PROJECT_ROOT @@ -101,7 +101,7 @@ def clearnet_only_keys() -> dict[str, str]: continue if _suppressed((services_path,)): continue - key = get_entity_name(role_dir.name) + key = entity_name(role_dir.name) if key: found[key] = role_dir.name return found diff --git a/tests/lint/ansible/roles/meta/test_embedded_state_on_nfs.py b/tests/lint/ansible/roles/meta/test_embedded_state_on_nfs.py index 82361a71b0..8818900f45 100644 --- a/tests/lint/ansible/roles/meta/test_embedded_state_on_nfs.py +++ b/tests/lint/ansible/roles/meta/test_embedded_state_on_nfs.py @@ -28,7 +28,7 @@ from utils.annotations.suppress import is_suppressed_at from utils.cache.files import read_text from utils.cache.yaml import load_yaml_any from utils.roles.applications.services.database import RDBMS_SERVICE_KEYS -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.mapping import ROLE_FILE_META_SERVICES, ROLE_FILE_META_VOLUMES from utils.roles.meta_lookup import get_role_mode_enabled from utils.storage.nfs import swarm_nfs_backed @@ -75,7 +75,7 @@ def _single_replica_service_names(role_id: str, services: dict) -> set[str] | No entity key. Replicas resolve service-first and fall back to the primary entity, so a pin there covers every service in the role. """ - primary = get_entity_name(role_id) or role_id + primary = entity_name(role_id) or role_id if _declares_one_replica(services.get(primary)): return None return { diff --git a/tests/lint/ansible/roles/meta/test_eol_dependency_requires_eol_consumer.py b/tests/lint/ansible/roles/meta/test_eol_dependency_requires_eol_consumer.py index 23d0728e01..77a10f3676 100644 --- a/tests/lint/ansible/roles/meta/test_eol_dependency_requires_eol_consumer.py +++ b/tests/lint/ansible/roles/meta/test_eol_dependency_requires_eol_consumer.py @@ -167,7 +167,7 @@ import yaml from utils.annotations.suppress import line_has_rule from utils.cache.files import read_text from utils.cache.yaml import load_yaml_str -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.mapping import ( ROLE_DIR_META_ADDONS, ROLE_FILE_META_SERVICES, @@ -404,7 +404,7 @@ def own_eol_block_keys(role_dir: Path) -> set[str]: the key consumers bind, it never names a block in the provider's file. """ services = _load_mapping(role_dir / ROLE_FILE_META_SERVICES) - entity = get_entity_name(role_dir.name) + entity = entity_name(role_dir.name) if not entity: return set() return {entity, *_alias_keys(services, entity)} @@ -425,7 +425,7 @@ def eol_service_keys() -> dict[str, str]: if role_dir.name in exempt: continue services = _load_mapping(role_dir / ROLE_FILE_META_SERVICES) - entity = get_entity_name(role_dir.name) + entity = entity_name(role_dir.name) if not entity: continue keys = { diff --git a/tests/lint/ansible/roles/meta/test_service_key_collision.py b/tests/lint/ansible/roles/meta/test_service_key_collision.py index 2bfdec7b28..db9bb7b422 100644 --- a/tests/lint/ansible/roles/meta/test_service_key_collision.py +++ b/tests/lint/ansible/roles/meta/test_service_key_collision.py @@ -1,6 +1,6 @@ """Lint guard for service keys two roles would both claim. -A role's service key defaults to ``get_entity_name(role_name)``, which +A role's service key defaults to ``entity_name(role_name)``, which strips the longest matching category prefix. Two roles under different categories therefore collapse onto the same key whenever the remainder is equal (``svc-ai-libretranslate`` and ``web-svc-libretranslate`` both reduce @@ -14,11 +14,20 @@ container name, so two roles that ship a compose template and reduce to the same entity overwrite each other's rendered stack no matter what they advertise. That is unfixable with ``provides:`` and needs a role rename. +A role escapes that rename by declaring a literal ``entity_name`` in +``vars/main.yml``, which :func:`declared_entity_name` honours over the +derivation. The declaration and the primary key in ``meta/services.yml`` +are then two spellings of one fact: when they drift apart the registry +finds no primary entry and drops the role from the provider set without a +word, so they are checked against each other here. + Failure modes covered: * Two roles resolve to the same service key and neither disambiguates with ``meta/services.yml..provides``. * Two roles that both render a compose stack share an entity name, so the later one overwrites the earlier one's instance directory. + * A role declares a literal ``entity_name`` that keys no entry in its own + ``meta/services.yml``. """ from __future__ import annotations @@ -30,7 +39,7 @@ from utils.roles.applications.services.registry import ( discover_role_services, load_applications_from_roles_dir, ) -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import declared_entity_name, entity_name from . import PROJECT_ROOT @@ -59,11 +68,34 @@ class TestServiceKeyCollision(unittest.TestCase): "`meta/services.yml.`." ) + def test_a_declared_entity_name_keys_its_own_primary_service_entry(self): + findings = [] + for role_name, config in load_applications_from_roles_dir(ROLES_DIR).items(): + declared = declared_entity_name(role_name) + services = config.get("services") or {} + if not declared or not services or declared in services: + continue + findings.append( + f" - {role_name}: vars/main.yml declares entity_name " + f"'{declared}', meta/services.yml keys " + f"{', '.join(sorted(services))}" + ) + + if findings: + self.fail( + "Declared entity name keys no service entry:\n" + + "\n".join(findings) + + "\n\nFix: the declaration replaces the derived entity name " + "everywhere, including the key the registry reads the role's " + "primary entry under. Rename that key to the declared name, or " + "drop the declaration." + ) + def test_roles_rendering_a_compose_stack_have_distinct_entity_names(self): owners: dict[str, set[str]] = defaultdict(set) for role_dir in sorted(p for p in ROLES_DIR.iterdir() if p.is_dir()): if role_dir.joinpath(*COMPOSE_TEMPLATE).is_file(): - owners[get_entity_name(role_dir.name)].add(role_dir.name) + owners[entity_name(role_dir.name)].add(role_dir.name) self.assertTrue(owners, f"no role under {ROLES_DIR} renders a compose stack") diff --git a/tests/lint/ansible/roles/meta/test_sso_contract.py b/tests/lint/ansible/roles/meta/test_sso_contract.py index 208aa55d3c..a2eeb56915 100644 --- a/tests/lint/ansible/roles/meta/test_sso_contract.py +++ b/tests/lint/ansible/roles/meta/test_sso_contract.py @@ -31,7 +31,7 @@ import yaml from utils.cache.files import read_text from utils.cache.yaml import load_yaml_str from utils.roles.applications.services.sso import is_potentially_enabled -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.mapping import ROLE_FILE_META_SERVICES from . import PROJECT_ROOT @@ -125,7 +125,7 @@ class TestSsoRoleContract(unittest.TestCase): f"{role_name}: meta/services.yml.sso.oauth2.origin.port is missing or empty." ) - entity = get_entity_name(role_name) + entity = entity_name(role_name) if not entity: continue entity_block = services.get(entity) diff --git a/tests/lint/ansible/roles/test_compose_resource_limits.py b/tests/lint/ansible/roles/test_compose_resource_limits.py index 08a731bc70..9f096415b2 100644 --- a/tests/lint/ansible/roles/test_compose_resource_limits.py +++ b/tests/lint/ansible/roles/test_compose_resource_limits.py @@ -45,7 +45,7 @@ from utils.roles.applications.services.registry import ( build_service_registry_from_applications, load_applications_from_roles_dir, ) -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.mapping import ROLE_FILE_META_SERVICES from . import PROJECT_ROOT @@ -153,11 +153,11 @@ def _collect_findings(root: Path) -> list[MissingKeyFinding]: if not isinstance(services, dict): continue - entity_name = get_entity_name(role_dir.name) + entity = entity_name(role_dir.name) for service_key, raw_conf in services.items(): if not isinstance(raw_conf, dict): continue - is_entity = service_key == entity_name + is_entity = service_key == entity if not is_entity: if not _is_enabled(raw_conf): diff --git a/tests/lint/ansible/roles/test_container_var_name_lookup.py b/tests/lint/ansible/roles/test_container_var_name_lookup.py index af74e6cf64..f5a9d430c8 100644 --- a/tests/lint/ansible/roles/test_container_var_name_lookup.py +++ b/tests/lint/ansible/roles/test_container_var_name_lookup.py @@ -29,7 +29,7 @@ runtime. This test therefore checks two things per ``*_CONTAINER`` var: 1. The value is the config-``name`` lookup OR the bare ``entity_name`` - form (``{{ entity_name }}`` / ``{{ | get_entity_name }}``). + form (``{{ entity_name }}`` / ``{{ | entity_name }}``). 2. When the lookup form resolves ```` to a concrete service (a literal, or the role's ``entity_name``), that service declares ``name:`` in ``meta/services.yml``. @@ -51,7 +51,7 @@ from pathlib import Path from utils.annotations.suppress import is_suppressed_at from utils.cache.files import iter_project_files_with_content from utils.cache.yaml import load_yaml_any -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.mapping import ROLE_FILE_META_SERVICES, ROLE_FILE_VARS_MAIN from . import PROJECT_ROOT @@ -71,7 +71,7 @@ _USES_ENGINE_CONTAINER_RE = re.compile( ) _ENTITY_NAME_RE = re.compile( - r"^\{\{\s*(?:entity_name|[A-Za-z_]\w*\s*\|\s*get_entity_name)\s*\}\}$" + r"^\{\{\s*(?:entity_name|[A-Za-z_]\w*\s*\|\s*entity_name)\s*\}\}$" ) _SERVICE_KEY_RE = re.compile(r"services\.(?P.*?)\.name", re.DOTALL) @@ -99,7 +99,7 @@ def _resolve_service_key(raw_key: str, role_name: str) -> str | None: if "entity_name" in key and "~" in key and "-" not in key: collapsed = re.sub(r"['\"~ ]", "", key) if collapsed == "entity_name": - return get_entity_name(role_name) + return entity_name(role_name) return None diff --git a/tests/lint/ansible/roles/test_entity_name_is_defined_where_used.py b/tests/lint/ansible/roles/test_entity_name_is_defined_where_used.py index 7fea8e5c8f..7a108fae74 100644 --- a/tests/lint/ansible/roles/test_entity_name_is_defined_where_used.py +++ b/tests/lint/ansible/roles/test_entity_name_is_defined_where_used.py @@ -10,9 +10,11 @@ gap stays invisible until the swarm path templates it into a real argument and Five roles shipped that way while seventy-seven define it on the line below ``application_id``, which is why nothing looked odd in review. -The match needs its lookbehind: ``get_entity_name`` is a filter whose name ends -in this variable's, and without it every role calling that filter reads as a -violation. +The variable shares its name with the filter that derives it, so the match +also has to skip filter applications: everything preceded by a pipe is +``role_id | entity_name`` and carries its own argument, while a bare +occurrence reads the role's own variable. Without that distinction every +role calling the filter reads as a violation. Suppression (see ``docs/contributing/actions/testing/suppression.md``): @@ -37,6 +39,18 @@ _ROLES = str(PROJECT_ROOT / "roles") + os.sep _USE_RE = re.compile(rf"(? bool: + """Return whether *line* reads the variable rather than applying the filter. + + Args: + line: a single source line. + """ + return any( + not line[: match.start()].rstrip().endswith("|") + for match in _USE_RE.finditer(line) + ) + + def files_by_role() -> dict: """Return every role's yml and j2 files, keyed by role name.""" grouped: dict = {} @@ -102,7 +116,7 @@ def uses_it(role: str, paths: list, borrowed: set) -> list: uses.extend( f"{relative}:{index}" for index, line in enumerate(lines, start=1) - if _USE_RE.search(line) and not is_suppressed_at(lines, index, _RULE) + if reads_the_variable(line) and not is_suppressed_at(lines, index, _RULE) ) return uses diff --git a/tests/lint/ansible/roles/test_role_deploy_modes.py b/tests/lint/ansible/roles/test_role_deploy_modes.py index 7d3bb4eb1d..272c028429 100644 --- a/tests/lint/ansible/roles/test_role_deploy_modes.py +++ b/tests/lint/ansible/roles/test_role_deploy_modes.py @@ -21,7 +21,7 @@ from __future__ import annotations import unittest from utils.cache.yaml import load_yaml_any -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.mapping import ROLE_FILE_META_SERVICES from . import PROJECT_ROOT @@ -44,7 +44,7 @@ def _mode_problems(role_dir) -> list[str]: if not services_path.is_file(): return ["missing meta/services.yml (needed to declare deploy modes)"] services = load_yaml_any(str(services_path), default_if_missing={}) - entity = get_entity_name(role_dir.name) or role_dir.name + entity = entity_name(role_dir.name) or role_dir.name primary = services.get(entity) if isinstance(services, dict) else None if not isinstance(primary, dict): return [f"no primary entity '{entity}' block in meta/services.yml"] diff --git a/tests/lint/ansible/roles/test_role_host_mode.py b/tests/lint/ansible/roles/test_role_host_mode.py index 0a2901ebc0..bf839196c2 100644 --- a/tests/lint/ansible/roles/test_role_host_mode.py +++ b/tests/lint/ansible/roles/test_role_host_mode.py @@ -21,7 +21,7 @@ import unittest from cli.meta.roles.applications.complexity.graph import role_has_stack from utils.cache.yaml import load_yaml_any -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.mapping import ROLE_FILE_META_SERVICES from utils.roles.validation.invokable import _get_invokable_paths, _is_role_invokable @@ -33,7 +33,7 @@ def _host_problem(role_dir) -> str | None: if not services_path.is_file(): return "missing meta/services.yml (needed to declare modes.host.enabled)" services = load_yaml_any(str(services_path), default_if_missing={}) - entity = get_entity_name(role_dir.name) or role_dir.name + entity = entity_name(role_dir.name) or role_dir.name primary = services.get(entity) if isinstance(services, dict) else None if not isinstance(primary, dict): return f"no primary entity '{entity}' block in meta/services.yml" diff --git a/tests/lint/ansible/roles/test_shared_service_provider.py b/tests/lint/ansible/roles/test_shared_service_provider.py index c85711f9db..ce195d5af1 100644 --- a/tests/lint/ansible/roles/test_shared_service_provider.py +++ b/tests/lint/ansible/roles/test_shared_service_provider.py @@ -37,7 +37,7 @@ from utils.roles.applications.services.registry import ( build_service_registry_from_applications, load_applications_from_roles_dir, ) -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.mapping import ROLE_FILE_META_SERVICES from . import PROJECT_ROOT @@ -137,7 +137,7 @@ def _collect_findings(root: Path) -> list[ProviderFinding]: entity_to_role: dict[str, str] = {} for role in applications: - entity = get_entity_name(role) + entity = entity_name(role) if entity: entity_to_role.setdefault(entity, role) @@ -153,10 +153,10 @@ def _collect_findings(root: Path) -> list[ProviderFinding]: services = _load_yaml(config_path) if not isinstance(services, dict): continue - entity_name = get_entity_name(role_dir.name) + entity = entity_name(role_dir.name) for service_key, raw_conf in services.items(): responsible_role.setdefault(service_key, role_dir.name) - if service_key == entity_name or not isinstance(raw_conf, dict): + if service_key == entity or not isinstance(raw_conf, dict): continue if not _is_active(raw_conf) or _has_resource_keys(raw_conf): continue diff --git a/tests/lint/ansible/roles/test_stack_vars_resolve_in_their_own_role.py b/tests/lint/ansible/roles/test_stack_vars_resolve_in_their_own_role.py index 8c45e4ee54..1bb1768f26 100644 --- a/tests/lint/ansible/roles/test_stack_vars_resolve_in_their_own_role.py +++ b/tests/lint/ansible/roles/test_stack_vars_resolve_in_their_own_role.py @@ -11,7 +11,10 @@ url written by one app was looked up on ``svc-prx-openresty``, which has no such service, and the git task died on an unresolvable argument. Naming the application literally makes the expression answer the same in every -scope it travels through. +scope it travels through. ``entity_name`` is both such a variable and the +filter that derives one from a role id, so a match preceded by a pipe is an +application of the filter to whatever stands left of it, not a read of the +reader's scope. Only the ``compose_*`` keys are judged, because only those does the included chain evaluate. A value nobody downstream reads is merely in scope and harmless; @@ -39,6 +42,18 @@ _PASSED_RE = re.compile(r"^\s+(compose_[a-z_]+):\s*\"\{\{\s*([A-Z][A-Z0-9_]*)\s* _SCOPED_RE = re.compile(r"(? bool: + """Return whether *line* reads a role-scoped variable. + + Args: + line: a single source line. + """ + return any( + not line[: match.start()].rstrip().endswith("|") + for match in _SCOPED_RE.finditer(line) + ) + + def passed_into_stack(role) -> set[str]: """Return the variable names a role hands to the stack include. @@ -72,7 +87,7 @@ def definitions_reading_scope(role, names: set[str]) -> list[str]: lines = read_text(str(variables)).splitlines() for index, line in enumerate(lines, start=1): name = line.split(":", 1)[0].strip() - if name not in names or not _SCOPED_RE.search(line): + if name not in names or not reads_the_scope(line): continue if is_suppressed_at(lines, index, _RULE): continue diff --git a/tests/lint/ansible/services/test_agent_identity.py b/tests/lint/ansible/services/test_agent_identity.py index 893e34d38f..94c01589e4 100644 --- a/tests/lint/ansible/services/test_agent_identity.py +++ b/tests/lint/ansible/services/test_agent_identity.py @@ -33,7 +33,7 @@ from collections.abc import Mapping from utils.annotations.suppress import is_suppressed_in_head from utils.cache.files import read_text from utils.cache.yaml import load_yaml_any -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.mapping import ROLE_FILE_META_SECRETS, ROLE_FILE_META_USERS from . import PROJECT_ROOT @@ -67,7 +67,7 @@ class TestAgentIdentity(unittest.TestCase): missing = [] for role in _claimed_roles(): users, _lines = _users_of(role) - key = get_entity_name(role) + key = entity_name(role) if users is None or key not in users: missing.append( f"{role}: does not claim the reserved user key '{key}' in " @@ -85,7 +85,7 @@ class TestAgentIdentity(unittest.TestCase): privileged = [] for role in _claimed_roles(): users, _lines = _users_of(role) - entry = (users or {}).get(get_entity_name(role)) + entry = (users or {}).get(entity_name(role)) if not isinstance(entry, Mapping): continue if entry.get("roles"): diff --git a/tests/lint/ansible/services/test_mcp_consumer_services_entry.py b/tests/lint/ansible/services/test_mcp_consumer_services_entry.py index 56236909b0..3ee2759901 100644 --- a/tests/lint/ansible/services/test_mcp_consumer_services_entry.py +++ b/tests/lint/ansible/services/test_mcp_consumer_services_entry.py @@ -38,7 +38,7 @@ from utils.roles.applications.mcp import ( MCP_CONSUMER_FLAG, declares_mcp_consumer, ) -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.mapping import ROLE_FILE_META_MCP, ROLE_FILE_META_SERVICES from . import PROJECT_ROOT @@ -84,7 +84,7 @@ def missing_entries() -> list[str]: for consumer in consumers: if consumer == role: continue - key = get_entity_name(consumer) + key = entity_name(consumer) entry = services.get(key) if not isinstance(entry, Mapping): findings.append( diff --git a/tests/lint/ansible/services/test_mcp_consumer_variant.py b/tests/lint/ansible/services/test_mcp_consumer_variant.py index 8853ec96f3..601aada6c4 100644 --- a/tests/lint/ansible/services/test_mcp_consumer_variant.py +++ b/tests/lint/ansible/services/test_mcp_consumer_variant.py @@ -31,7 +31,7 @@ from utils.annotations.suppress import is_suppressed_in_head from utils.cache.applications import get_application_defaults, get_variants from utils.cache.files import read_text from utils.roles.applications.mcp import derive_allowed_consumers -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.mapping import ROLE_FILE_META_MCP from . import PROJECT_ROOT @@ -146,7 +146,7 @@ def offenders() -> list[str]: if is_suppressed_in_head(read_text(str(meta)).splitlines(), _RULE): continue consumer_ids = { - get_entity_name(c): c + entity_name(c): c for c in derive_allowed_consumers(role, services_by_role) } consumers = set(consumer_ids) diff --git a/tests/lint/ansible/shell/container/test_inspect_pins_type.py b/tests/lint/ansible/shell/container/test_inspect_pins_type.py index 069a95dcde..e0efa1c53c 100644 --- a/tests/lint/ansible/shell/container/test_inspect_pins_type.py +++ b/tests/lint/ansible/shell/container/test_inspect_pins_type.py @@ -6,7 +6,7 @@ Rationale ``docker inspect`` without ``--type`` searches every object kind and returns the first match. This repository names a role's overlay network after the role entity (``sys-svc-compose/tasks/utils/network/create.yml`` -uses ``network_role_id | get_entity_name``), which for a role whose main +uses ``network_role_id | entity_name``), which for a role whose main service carries the entity name is byte-identical to its container name. An untyped inspect can therefore resolve the *network* and report diff --git a/tests/unit/python/plugins/filter/get/test_docker_paths.py b/tests/unit/python/plugins/filter/get/test_docker_paths.py index 327ab946d1..53bcb4d786 100644 --- a/tests/unit/python/plugins/filter/get/test_docker_paths.py +++ b/tests/unit/python/plugins/filter/get/test_docker_paths.py @@ -7,7 +7,7 @@ class TestGetDockerPaths(unittest.TestCase): import plugins.filter.get.docker_paths as m with patch( - "utils.docker.paths_utils.get_entity_name", lambda app_id: "myentity" + "utils.docker.paths_utils.entity_name", lambda app_id: "myentity" ): out = m.get_docker_paths("web-app-anything", "/opt/compose/") diff --git a/tests/unit/python/plugins/filter/get/test_entity_name.py b/tests/unit/python/plugins/filter/get/test_entity_name.py index 4cb076cb75..cb6d31b7a5 100644 --- a/tests/unit/python/plugins/filter/get/test_entity_name.py +++ b/tests/unit/python/plugins/filter/get/test_entity_name.py @@ -7,6 +7,7 @@ from unittest.mock import patch from utils.cache.yaml import dump_yaml from utils.roles.categories import categories_file +from utils.roles.mapping import ROLE_FILE_VARS_MAIN class TestGetEntityNameFilter(unittest.TestCase): @@ -38,41 +39,64 @@ class TestGetEntityNameFilter(unittest.TestCase): root.start() self.addCleanup(root.stop) + entity_root = patch( + "utils.roles.entity.name.PROJECT_ROOT", Path(self.temp_dir) + ) + entity_root.start() + self.addCleanup(entity_root.stop) + plugin_path = str(Path.cwd() / "plugins" / "filter") if plugin_path not in sys.path and Path(plugin_path).is_dir(): sys.path.insert(0, plugin_path) - from plugins.filter.get.entity_name import get_entity_name + from plugins.filter.get.entity_name import entity_name - self.get_entity_name = get_entity_name + self.entity_name = entity_name def tearDown(self): shutil.rmtree(self.temp_dir) def test_entity_name_web_app(self): - self.assertEqual(self.get_entity_name("web-app-snipe-it"), "snipe-it") - self.assertEqual(self.get_entity_name("web-app-nextcloud"), "nextcloud") - self.assertEqual(self.get_entity_name("web-svc-file"), "file") + self.assertEqual(self.entity_name("web-app-snipe-it"), "snipe-it") + self.assertEqual(self.entity_name("web-app-nextcloud"), "nextcloud") + self.assertEqual(self.entity_name("web-svc-file"), "file") def test_entity_name_sys_bkp(self): self.assertEqual( - self.get_entity_name("sys-ctl-bkp-directory-validator"), + self.entity_name("sys-ctl-bkp-directory-validator"), "directory-validator", ) def test_entity_name_sys_hlth(self): - self.assertEqual(self.get_entity_name("sys-ctl-hlth-btrfs"), "btrfs") + self.assertEqual(self.entity_name("sys-ctl-hlth-btrfs"), "btrfs") def test_no_category_match(self): - self.assertEqual(self.get_entity_name("foobar-role"), "foobar-role") + self.assertEqual(self.entity_name("foobar-role"), "foobar-role") def test_exact_category_match_with_parent_prefix_strips(self): - self.assertEqual(self.get_entity_name("web-app"), "app") + self.assertEqual(self.entity_name("web-app"), "app") def test_exact_category_match_without_parent_prefix(self): - self.assertEqual(self.get_entity_name("web"), "") + self.assertEqual(self.entity_name("web"), "") def test_role_equal_to_category_path_strips_parent(self): - self.assertEqual(self.get_entity_name("svc-db"), "db") + self.assertEqual(self.entity_name("svc-db"), "db") + + def _declare(self, role_name, entity_name): + dump_yaml( + str(Path(self.roles_dir) / role_name / ROLE_FILE_VARS_MAIN), + {"application_id": role_name, "entity_name": entity_name}, + ) + + def test_declared_entity_name_overrides_the_derivation(self): + self._declare("web-app-seaweedfs", "seaweedfs-console") + self.assertEqual(self.entity_name("web-app-seaweedfs"), "seaweedfs-console") + + def test_declared_jinja_expression_falls_back_to_the_derivation(self): + self._declare("web-app-nextcloud", "{{ application_id | entity_name }}") + self.assertEqual(self.entity_name("web-app-nextcloud"), "nextcloud") + + def test_role_without_vars_file_falls_back_to_the_derivation(self): + self.assertEqual(self.entity_name("web-app-mastodon"), "mastodon") if __name__ == "__main__": diff --git a/tests/unit/python/plugins/filter/test_memory_filters.py b/tests/unit/python/plugins/filter/test_memory_filters.py index 002eecd3fd..47a75fc382 100644 --- a/tests/unit/python/plugins/filter/test_memory_filters.py +++ b/tests/unit/python/plugins/filter/test_memory_filters.py @@ -15,12 +15,12 @@ class TestMemoryFilters(unittest.TestCase): # ----------------------------- def _with_conf(self, mem_limit: str, mem_res: str): """ - Patch get/get_entity_name so that mem_limit and mem_reservation + Patch get/entity_name so that mem_limit and mem_reservation can be controlled in tests. """ patches = [ patch( - "plugins.filter.memory_filters.get_entity_name", + "plugins.filter.memory_filters.entity_name", return_value="confluence", ), patch( @@ -78,7 +78,7 @@ class TestMemoryFilters(unittest.TestCase): def test_invalid_unit_raises(self): with ( patch( - "plugins.filter.memory_filters.get_entity_name", + "plugins.filter.memory_filters.entity_name", return_value="confluence", ), patch( @@ -94,7 +94,7 @@ class TestMemoryFilters(unittest.TestCase): def test_zero_limit_raises(self): with ( patch( - "plugins.filter.memory_filters.get_entity_name", + "plugins.filter.memory_filters.entity_name", return_value="confluence", ), patch( @@ -110,7 +110,7 @@ class TestMemoryFilters(unittest.TestCase): def test_zero_reservation_raises(self): with ( patch( - "plugins.filter.memory_filters.get_entity_name", + "plugins.filter.memory_filters.entity_name", return_value="confluence", ), patch( @@ -125,12 +125,12 @@ class TestMemoryFilters(unittest.TestCase): def test_entity_name_is_derived_not_passed(self): """ - Ensure get_entity_name() is called internally and the app_id is not + Ensure entity_name() is called internally and the app_id is not passed around manually from the template. """ with ( patch( - "plugins.filter.memory_filters.get_entity_name", + "plugins.filter.memory_filters.entity_name", return_value="confluence", ) as mock_entity, patch( @@ -181,13 +181,13 @@ class TestMemoryFilters(unittest.TestCase): with self.assertRaises(memory_filters.AnsibleFilterError): memory_filters.redis_maxmemory_mb(self.apps, self.app_id) - def test_redis_maxmemory_does_not_call_get_entity_name(self): + def test_redis_maxmemory_does_not_call_entity_name(self): """ Ensure redis_maxmemory_mb does NOT rely on entity name resolution (it should always use the hard-coded 'redis' service name). """ patches = [ - patch("plugins.filter.memory_filters.get_entity_name"), + patch("plugins.filter.memory_filters.entity_name"), patch( "plugins.filter.memory_filters.get", side_effect=lambda apps, app_id, key, required=True, **kwargs: ( @@ -221,7 +221,7 @@ class TestMemoryFilters(unittest.TestCase): side_effect=fake_get, ), patch( - "plugins.filter.memory_filters.get_entity_name", + "plugins.filter.memory_filters.entity_name", return_value="confluence", ), ): diff --git a/tests/unit/python/plugins/filter/test_resource_filter.py b/tests/unit/python/plugins/filter/test_resource_filter.py index df4bf92422..50497ad8c4 100644 --- a/tests/unit/python/plugins/filter/test_resource_filter.py +++ b/tests/unit/python/plugins/filter/test_resource_filter.py @@ -14,10 +14,10 @@ class TestResourceFilter(unittest.TestCase): self.key = "cpus" self.patcher_conf = patch.object(plugin_module, "get") - self.patcher_entity = patch.object(plugin_module, "get_entity_name") + self.patcher_entity = patch.object(plugin_module, "entity_name") self.mock_get = self.patcher_conf.start() - self.mock_get_entity_name = self.patcher_entity.start() - self.mock_get_entity_name.return_value = "foo" + self.mock_entity_name = self.patcher_entity.start() + self.mock_entity_name.return_value = "foo" def tearDown(self): self.patcher_conf.stop() @@ -44,8 +44,8 @@ class TestResourceFilter(unittest.TestCase): plugin_module._UNSET, ) - def test_service_name_empty_uses_get_entity_name(self): - """When service_name is empty, it resolves via get_entity_name(application_id).""" + def test_service_name_empty_uses_entity_name(self): + """When service_name is empty, it resolves via entity_name(application_id).""" self.mock_get.return_value = "1.0" result = plugin_module.resource_filter( @@ -57,7 +57,7 @@ class TestResourceFilter(unittest.TestCase): ) self.assertEqual(result, "1.0") - self.mock_get_entity_name.assert_called_once_with(self.application_id) + self.mock_entity_name.assert_called_once_with(self.application_id) self.mock_get.assert_called_once_with( self.applications, self.application_id, diff --git a/tests/unit/python/plugins/lookup/test_bounded_name.py b/tests/unit/python/plugins/lookup/test_bounded_name.py index 0fa95092e8..cfb9ad3d25 100644 --- a/tests/unit/python/plugins/lookup/test_bounded_name.py +++ b/tests/unit/python/plugins/lookup/test_bounded_name.py @@ -28,7 +28,7 @@ class TestBoundedNameLookup(unittest.TestCase): side_effect=lambda domains, app: domains[app], ), patch( - "plugins.lookup.bounded_name.get_entity_name", + "plugins.lookup.bounded_name.entity_name", side_effect=lambda app: app.rsplit("-", 1)[-1], ), ] diff --git a/tests/unit/python/plugins/lookup/test_cpus.py b/tests/unit/python/plugins/lookup/test_cpus.py index b9db59a0a2..eb718b92f9 100644 --- a/tests/unit/python/plugins/lookup/test_cpus.py +++ b/tests/unit/python/plugins/lookup/test_cpus.py @@ -32,7 +32,7 @@ class TestCpusLookup(unittest.TestCase): _, call = _run(["web-app-hermes", "hermes"], "50%") self.assertEqual(call.args[0], ["web-app-hermes", "services.hermes.cpus"]) - @patch("plugins.lookup.cpus.get_entity_name", return_value="docs") + @patch("plugins.lookup.cpus.entity_name", return_value="docs") def test_the_entity_name_is_the_default_service(self, _entity): _, call = _run(["web-app-docs"], "50%") self.assertEqual(call.args[0], ["web-app-docs", "services.docs.cpus"]) diff --git a/tests/unit/python/plugins/lookup/test_database.py b/tests/unit/python/plugins/lookup/test_database.py index 3df47c4f2f..9b432ada8b 100644 --- a/tests/unit/python/plugins/lookup/test_database.py +++ b/tests/unit/python/plugins/lookup/test_database.py @@ -44,7 +44,7 @@ class DatabaseLookupTests(unittest.TestCase): return lm @staticmethod - def _fake_get_entity_name(role_name: str) -> str: + def _fake_entity_name(role_name: str) -> str: """ Make entity resolution deterministic for unit tests (no filesystem access). Mirrors the typical behavior for your role naming. @@ -90,8 +90,8 @@ class DatabaseLookupTests(unittest.TestCase): with patch.object( self.db_lookup_mod, - "get_entity_name", - side_effect=self._fake_get_entity_name, + "entity_name", + side_effect=self._fake_entity_name, ): out = lookup.run(["web-app-foo"], variables=vars_)[0] @@ -117,8 +117,8 @@ class DatabaseLookupTests(unittest.TestCase): with patch.object( self.db_lookup_mod, - "get_entity_name", - side_effect=self._fake_get_entity_name, + "entity_name", + side_effect=self._fake_entity_name, ): self.assertEqual( lookup.run(["web-app-foo", "url_full"], variables=vars_)[0], "" @@ -152,8 +152,8 @@ class DatabaseLookupTests(unittest.TestCase): with patch.object( self.db_lookup_mod, - "get_entity_name", - side_effect=self._fake_get_entity_name, + "entity_name", + side_effect=self._fake_entity_name, ): out = lookup.run(["web-app-foo"], variables=vars_)[0] @@ -184,8 +184,8 @@ class DatabaseLookupTests(unittest.TestCase): with patch.object( self.db_lookup_mod, - "get_entity_name", - side_effect=self._fake_get_entity_name, + "entity_name", + side_effect=self._fake_entity_name, ): self.assertEqual( lookup.run(["web-app-foo", "url_full"], variables=vars_)[0], @@ -223,8 +223,8 @@ class DatabaseLookupTests(unittest.TestCase): with patch.object( self.db_lookup_mod, - "get_entity_name", - side_effect=self._fake_get_entity_name, + "entity_name", + side_effect=self._fake_entity_name, ): out = lookup.run(["web-app-foo"], variables=vars_)[0] @@ -272,8 +272,8 @@ class DatabaseLookupTests(unittest.TestCase): with patch.object( self.db_lookup_mod, - "get_entity_name", - side_effect=self._fake_get_entity_name, + "entity_name", + side_effect=self._fake_entity_name, ): out = lookup.run(["web-app-foo"], variables=vars_)[0] @@ -317,8 +317,8 @@ class DatabaseLookupTests(unittest.TestCase): with patch.object( self.db_lookup_mod, - "get_entity_name", - side_effect=self._fake_get_entity_name, + "entity_name", + side_effect=self._fake_entity_name, ): out = lookup.run(["web-app-foo"], variables=vars_)[0] @@ -347,8 +347,8 @@ class DatabaseLookupTests(unittest.TestCase): with patch.object( self.db_lookup_mod, - "get_entity_name", - side_effect=self._fake_get_entity_name, + "entity_name", + side_effect=self._fake_entity_name, ): out = lookup.run(["web-app-foo"], variables=vars_)[0] @@ -359,8 +359,8 @@ class DatabaseLookupTests(unittest.TestCase): with patch.object( self.db_lookup_mod, - "get_entity_name", - side_effect=self._fake_get_entity_name, + "entity_name", + side_effect=self._fake_entity_name, ): self.assertFalse(lookup.run(["web-app-foo", "local"], variables=vars_)[0]) @@ -439,8 +439,8 @@ class DatabaseLookupTests(unittest.TestCase): lookup = self._make_lookup(vars_) with patch.object( self.db_lookup_mod, - "get_entity_name", - side_effect=self._fake_get_entity_name, + "entity_name", + side_effect=self._fake_entity_name, ): return lookup.run(["web-app-foo"], variables=vars_)[0] diff --git a/tests/unit/python/plugins/lookup/test_image.py b/tests/unit/python/plugins/lookup/test_image.py index 6940e286d2..db32ce61de 100644 --- a/tests/unit/python/plugins/lookup/test_image.py +++ b/tests/unit/python/plugins/lookup/test_image.py @@ -246,7 +246,7 @@ class TestImageLookup(unittest.TestCase): def test_custom_true_uses_entity_name_custom(self): with patch( - "plugins.lookup.image.get_entity_name", + "plugins.lookup.image.entity_name", return_value="mattermost", ): out = _run( @@ -259,7 +259,7 @@ class TestImageLookup(unittest.TestCase): def test_custom_true_with_version_override(self): with patch( - "plugins.lookup.image.get_entity_name", + "plugins.lookup.image.entity_name", return_value="mattermost", ): out = _run( @@ -273,7 +273,7 @@ class TestImageLookup(unittest.TestCase): def test_custom_true_with_image_override_image_wins(self): with patch( - "plugins.lookup.image.get_entity_name", + "plugins.lookup.image.entity_name", return_value="mattermost", ) as get_name: out = _run( @@ -288,7 +288,7 @@ class TestImageLookup(unittest.TestCase): def test_custom_true_swarm_prefix_applied(self): with patch( - "plugins.lookup.image.get_entity_name", + "plugins.lookup.image.entity_name", return_value="mattermost", ): out = _run( @@ -315,7 +315,7 @@ class TestImageLookup(unittest.TestCase): def test_custom_true_ignores_services_image(self): apps = _apps(image="mattermost/mattermost-team-edition", version="11.8.0") with patch( - "plugins.lookup.image.get_entity_name", + "plugins.lookup.image.entity_name", return_value="mattermost", ): out = _run( @@ -329,7 +329,7 @@ class TestImageLookup(unittest.TestCase): def test_custom_true_tag_only_returns_bare(self): with patch( - "plugins.lookup.image.get_entity_name", + "plugins.lookup.image.entity_name", return_value="mattermost", ): out = _run( @@ -355,7 +355,7 @@ class TestImageLookup(unittest.TestCase): apps = _apps() apps["web-app-mattermost"]["services"]["mattermost"]["custom"] = True with patch( - "plugins.lookup.image.get_entity_name", + "plugins.lookup.image.entity_name", return_value="mattermost", ): out = _run( @@ -395,7 +395,7 @@ class TestImageLookup(unittest.TestCase): "services" ].pop("mattermost") with patch( - "plugins.lookup.image.get_entity_name", + "plugins.lookup.image.entity_name", return_value="mattermost", ) as get_name: out = _run( @@ -430,7 +430,7 @@ class TestImageLookup(unittest.TestCase): def test_custom_true_empty_entity_name_raises(self): with ( patch( - "plugins.lookup.image.get_entity_name", + "plugins.lookup.image.entity_name", return_value="", ), self.assertRaises(AnsibleError), diff --git a/tests/unit/python/plugins/lookup/test_native_metrics_target.py b/tests/unit/python/plugins/lookup/test_native_metrics_target.py index e3abbdb9dd..98ed3164f6 100644 --- a/tests/unit/python/plugins/lookup/test_native_metrics_target.py +++ b/tests/unit/python/plugins/lookup/test_native_metrics_target.py @@ -61,11 +61,11 @@ def _run(terms, *, mode, apps): ) as native_loader_mock, patch("plugins.lookup.scrape_target.lookup_loader") as scrape_loader_mock, patch( - "plugins.lookup.native_metrics_target.get_entity_name", + "plugins.lookup.native_metrics_target.entity_name", side_effect=lambda app_id: ENTITIES.get(app_id, ""), ), patch( - "plugins.lookup.scrape_target.get_entity_name", + "plugins.lookup.scrape_target.entity_name", side_effect=lambda app_id: ENTITIES.get(app_id, ""), ), ): diff --git a/tests/unit/python/plugins/lookup/test_objstore.py b/tests/unit/python/plugins/lookup/test_objstore.py index 24338bb56f..e8ec70bc95 100644 --- a/tests/unit/python/plugins/lookup/test_objstore.py +++ b/tests/unit/python/plugins/lookup/test_objstore.py @@ -41,7 +41,7 @@ class ObjstoreLookupTests(unittest.TestCase): return lm @staticmethod - def _fake_get_entity_name(role_name: str) -> str: + def _fake_entity_name(role_name: str) -> str: """ Make entity resolution deterministic for unit tests (no filesystem access). Mirrors the typical behavior for your role naming. @@ -59,7 +59,7 @@ class ObjstoreLookupTests(unittest.TestCase): with ( mock.patch.object(self.mod, "lookup_loader") as loader_mock, patch.object( - self.mod, "get_entity_name", side_effect=self._fake_get_entity_name + self.mod, "entity_name", side_effect=self._fake_entity_name ), ): loader_mock.get.return_value = mock.MagicMock( diff --git a/tests/unit/python/roles/sys-svc-compose/lookup_plugins/test_compose_ca_inject_cmd.py b/tests/unit/python/roles/sys-svc-compose/lookup_plugins/test_compose_ca_inject_cmd.py index 357ac0a886..a49b3f1fa3 100644 --- a/tests/unit/python/roles/sys-svc-compose/lookup_plugins/test_compose_ca_inject_cmd.py +++ b/tests/unit/python/roles/sys-svc-compose/lookup_plugins/test_compose_ca_inject_cmd.py @@ -122,7 +122,7 @@ class ComposeCaInjectCmdLookupTests(unittest.TestCase): side_effect=lambda **kw: kw["raw"], ), patch.object( - self.mod, "get_entity_name", side_effect=lambda _x: "myproj" + self.mod, "entity_name", side_effect=lambda _x: "myproj" ), ): lk = self._mk_lookup_module() @@ -196,7 +196,7 @@ class ComposeCaInjectCmdLookupTests(unittest.TestCase): side_effect=lambda **kw: kw["raw"], ), patch.object( - self.mod, "get_entity_name", side_effect=lambda _x: "myproj" + self.mod, "entity_name", side_effect=lambda _x: "myproj" ), ): lk = self._mk_lookup_module() @@ -230,7 +230,7 @@ class ComposeCaInjectCmdLookupTests(unittest.TestCase): patch.object( self.mod, "render_ansible_strict", side_effect=lambda **kw: kw["raw"] ), - patch.object(self.mod, "get_entity_name", side_effect=lambda _x: "myproj"), + patch.object(self.mod, "entity_name", side_effect=lambda _x: "myproj"), self.assertRaises(AnsibleError) as ctx, ): lk.run(["web-app-test"], variables=variables) @@ -268,7 +268,7 @@ class ComposeCaInjectCmdLookupTests(unittest.TestCase): patch.object( self.mod, "render_ansible_strict", side_effect=lambda **kw: kw["raw"] ), - patch.object(self.mod, "get_entity_name", side_effect=lambda _x: "myproj"), + patch.object(self.mod, "entity_name", side_effect=lambda _x: "myproj"), ): lk = self._mk_lookup_module() return lk.run(["web-app-test"], variables=variables, **run_kwargs)[0] diff --git a/tests/unit/python/utils/networks/test_render.py b/tests/unit/python/utils/networks/test_render.py index cfc075685f..cea41c8f86 100644 --- a/tests/unit/python/utils/networks/test_render.py +++ b/tests/unit/python/utils/networks/test_render.py @@ -30,7 +30,7 @@ class TestRenderComposeNetworks(unittest.TestCase): application_id="svc-prx-openresty", deployment_mode="swarm", registry=registry, - get_entity_name=_entity_name, + entity_name=_entity_name, lookup_config=_const_lookup_config(), lookup_database=_const_lookup_database(), ) @@ -51,7 +51,7 @@ class TestRenderComposeNetworks(unittest.TestCase): application_id="svc-prx-openresty", deployment_mode="compose", registry=registry, - get_entity_name=_entity_name, + entity_name=_entity_name, lookup_config=_const_lookup_config( **{"networks.local.subnet": "10.0.0.0/24"} ), @@ -72,7 +72,7 @@ class TestRenderComposeNetworks(unittest.TestCase): application_id="svc-db-mariadb", deployment_mode="swarm", registry=registry, - get_entity_name=_entity_name, + entity_name=_entity_name, lookup_config=_const_lookup_config(), lookup_database=_const_lookup_database(), ) @@ -85,7 +85,7 @@ class TestRenderComposeNetworks(unittest.TestCase): application_id="svc-runner", deployment_mode="swarm", registry={}, - get_entity_name=lambda _role: "", + entity_name=lambda _role: "", lookup_config=_const_lookup_config(), lookup_database=_const_lookup_database(), ) @@ -97,7 +97,7 @@ class TestRenderComposeNetworks(unittest.TestCase): application_id="svc-runner", deployment_mode="swarm", registry={}, - get_entity_name=lambda _role: "", + entity_name=lambda _role: "", lookup_config=_const_lookup_config(), lookup_database=_const_lookup_database(), node_local=True, @@ -106,7 +106,7 @@ class TestRenderComposeNetworks(unittest.TestCase): application_id="svc-runner", deployment_mode="compose", registry={}, - get_entity_name=lambda _role: "", + entity_name=lambda _role: "", lookup_config=_const_lookup_config(), lookup_database=_const_lookup_database(), ) @@ -123,7 +123,7 @@ class TestRenderComposeNetworks(unittest.TestCase): application_id=role, deployment_mode="compose", registry={}, - get_entity_name=_entity_name, + entity_name=_entity_name, lookup_config=_const_lookup_config(), lookup_database=_const_lookup_database(), ), @@ -139,7 +139,7 @@ class TestRenderComposeNetworks(unittest.TestCase): application_id="web-app-anything", deployment_mode="compose", registry={}, - get_entity_name=_entity_name, + entity_name=_entity_name, lookup_config=_const_lookup_config(), lookup_database=_const_lookup_database(), ), @@ -165,7 +165,7 @@ class TestRenderComposeNetworks(unittest.TestCase): application_id="svc-db-qdrant", deployment_mode="compose", registry=registry, - get_entity_name=_entity_name, + entity_name=_entity_name, lookup_config=lookup_config, lookup_database=_const_lookup_database(), ) @@ -173,7 +173,7 @@ class TestRenderComposeNetworks(unittest.TestCase): application_id="svc-db-qdrant", deployment_mode="compose", registry=registry, - get_entity_name=_entity_name, + entity_name=_entity_name, lookup_config=lookup_config, lookup_database=_const_lookup_database(), own_network_only=True, @@ -189,7 +189,7 @@ class TestRenderComposeNetworks(unittest.TestCase): application_id="web-app-prometheus", deployment_mode="compose", registry={}, - get_entity_name=_entity_name, + entity_name=_entity_name, lookup_config=_const_lookup_config(), lookup_database=_const_lookup_database(), own_network_only=True, @@ -205,7 +205,7 @@ class TestRenderComposeNetworks(unittest.TestCase): application_id="svc-runner", deployment_mode="swarm", registry={}, - get_entity_name=lambda _role: "", + entity_name=lambda _role: "", lookup_config=_const_lookup_config( **{"networks.local.subnet": "10.0.0.0/24"} ), @@ -220,7 +220,7 @@ class TestRenderComposeNetworks(unittest.TestCase): application_id="svc-runner", deployment_mode="compose", registry={}, - get_entity_name=lambda _role: "", + entity_name=lambda _role: "", lookup_config=_const_lookup_config( **{"networks.local.subnet": "10.0.0.0/24"} ), diff --git a/tests/unit/python/utils/networks/test_render_container_networks.py b/tests/unit/python/utils/networks/test_render_container_networks.py index e2f729b1f8..8e4cf6295e 100644 --- a/tests/unit/python/utils/networks/test_render_container_networks.py +++ b/tests/unit/python/utils/networks/test_render_container_networks.py @@ -55,7 +55,7 @@ class TestComputeExternalNetworkRoles(unittest.TestCase): application_id="web-app-gitea", deployment_mode="swarm", registry=registry, - get_entity_name=_entity_name, + entity_name=_entity_name, lookup_config=cfg, lookup_database=_const_lookup_database(), ) @@ -100,7 +100,7 @@ class TestRenderContainerNetworks(unittest.TestCase): application_id="svc-prx-openresty", deployment_mode="swarm", registry=registry, - get_entity_name=_entity_name, + entity_name=_entity_name, lookup_config=_const_lookup_config(), lookup_database=_const_lookup_database(), ) @@ -120,7 +120,7 @@ class TestRenderContainerNetworks(unittest.TestCase): application_id="web-app-bookwyrm", deployment_mode="swarm", registry=registry, - get_entity_name=_entity_name, + entity_name=_entity_name, lookup_config=_const_lookup_config( **{"services.ldap.enabled": True, "services.ldap.shared": True} ), @@ -150,7 +150,7 @@ class TestRenderContainerNetworks(unittest.TestCase): application_id="svc-prx-openresty", deployment_mode="swarm", registry=registry, - get_entity_name=_entity_name, + entity_name=_entity_name, lookup_config=_const_lookup_config(), lookup_database=_const_lookup_database(), ) @@ -163,7 +163,7 @@ class TestRenderContainerNetworks(unittest.TestCase): application_id="web-app-plain", deployment_mode="swarm", registry={}, - get_entity_name=_entity_name, + entity_name=_entity_name, lookup_config=_const_lookup_config(), lookup_database=_const_lookup_database(), ) @@ -176,7 +176,7 @@ class TestRenderEncryption(unittest.TestCase): application_id="web-app-x", deployment_mode="swarm", registry={}, - get_entity_name=_entity_name, + entity_name=_entity_name, lookup_config=_const_lookup_config(), lookup_database=_const_lookup_database(), swarm_encrypted=False, diff --git a/tests/unit/python/utils/networks/test_render_shared_net.py b/tests/unit/python/utils/networks/test_render_shared_net.py index ec70e31a4f..bfeccefd75 100644 --- a/tests/unit/python/utils/networks/test_render_shared_net.py +++ b/tests/unit/python/utils/networks/test_render_shared_net.py @@ -70,7 +70,7 @@ class TestOwnSharedNetProvider(unittest.TestCase): application_id="web-svc-seaweedfs", deployment_mode="compose", registry=_PROVIDER_REGISTRY, - get_entity_name=_entity_name, + entity_name=_entity_name, lookup_config=_const_lookup_config( **{"networks.local.subnet": "192.168.206.0/24"} ), @@ -86,7 +86,7 @@ class TestOwnSharedNetProvider(unittest.TestCase): application_id="web-svc-seaweedfs", deployment_mode="swarm", registry=_PROVIDER_REGISTRY, - get_entity_name=_entity_name, + entity_name=_entity_name, lookup_config=_const_lookup_config(), lookup_database=_const_lookup_database(), ) @@ -99,7 +99,7 @@ class TestOwnSharedNetProvider(unittest.TestCase): "application_id": "web-svc-seaweedfs", "deployment_mode": "compose", "registry": _PROVIDER_REGISTRY, - "get_entity_name": _entity_name, + "entity_name": _entity_name, "lookup_config": _const_lookup_config(), "lookup_database": _const_lookup_database(), } @@ -122,7 +122,7 @@ class TestSharedNetworkComposeKey(unittest.TestCase): application_id=application_id, deployment_mode=deployment_mode, registry=registry, - get_entity_name=_entity_name, + entity_name=_entity_name, lookup_config=_const_lookup_config(), lookup_database=_const_lookup_database(), ) @@ -157,7 +157,7 @@ class TestSharedNetworkComposeKey(unittest.TestCase): application_id="web-svc-seaweedfs", deployment_mode="swarm", registry=_PROVIDER_REGISTRY, - get_entity_name=_entity_name, + entity_name=_entity_name, lookup_config=_const_lookup_config(), lookup_database=_const_lookup_database(), node_local=True, @@ -181,7 +181,7 @@ class TestSharedNetworkComposeKey(unittest.TestCase): application_id=application_id, deployment_mode=mode, registry=registry, - get_entity_name=_entity_name, + entity_name=_entity_name, lookup_config=_const_lookup_config( **{"networks.local.subnet": "192.168.206.0/24"} ), diff --git a/tests/unit/python/utils/roles/validation/test_resources.py b/tests/unit/python/utils/roles/validation/test_resources.py index 36d7f1e5c4..78e0966730 100644 --- a/tests/unit/python/utils/roles/validation/test_resources.py +++ b/tests/unit/python/utils/roles/validation/test_resources.py @@ -37,7 +37,7 @@ demo: with ( patch.object(rrv, "_roles_root", return_value=self.roles_root), - patch.object(rrv, "get_entity_name", return_value="demo"), + patch.object(rrv, "entity_name", return_value="demo"), ): kept = rrv.filter_roles_by_min_storage( role_names=["web-app-demo"], @@ -60,7 +60,7 @@ demo: with ( redirect_stdout(err), patch.object(rrv, "_roles_root", return_value=self.roles_root), - patch.object(rrv, "get_entity_name", return_value="demo"), + patch.object(rrv, "entity_name", return_value="demo"), ): kept = rrv.filter_roles_by_min_storage( role_names=["web-app-demo"], @@ -83,7 +83,7 @@ demo: {} with ( redirect_stdout(err), patch.object(rrv, "_roles_root", return_value=self.roles_root), - patch.object(rrv, "get_entity_name", return_value="demo"), + patch.object(rrv, "entity_name", return_value="demo"), ): kept = rrv.filter_roles_by_min_storage( role_names=["web-app-demo"], @@ -99,7 +99,7 @@ demo: {} with ( redirect_stdout(err), patch.object(rrv, "_roles_root", return_value=self.roles_root), - patch.object(rrv, "get_entity_name", return_value="demo"), + patch.object(rrv, "entity_name", return_value="demo"), ): kept = rrv.filter_roles_by_min_storage( role_names=["web-app-does-not-exist"], @@ -120,7 +120,7 @@ demo: {} with ( redirect_stdout(err), patch.object(rrv, "_roles_root", return_value=self.roles_root), - patch.object(rrv, "get_entity_name", return_value="demo"), + patch.object(rrv, "entity_name", return_value="demo"), ): kept = rrv.filter_roles_by_min_storage( role_names=["web-app-demo"], @@ -143,7 +143,7 @@ other: {} with ( redirect_stdout(err), patch.object(rrv, "_roles_root", return_value=self.roles_root), - patch.object(rrv, "get_entity_name", return_value="demo"), + patch.object(rrv, "entity_name", return_value="demo"), ): kept = rrv.filter_roles_by_min_storage( role_names=["web-app-demo"], @@ -166,7 +166,7 @@ not_demo: {} with ( redirect_stdout(err), patch.object(rrv, "_roles_root", return_value=self.roles_root), - patch.object(rrv, "get_entity_name", return_value="demo"), + patch.object(rrv, "entity_name", return_value="demo"), ): kept = rrv.filter_roles_by_min_storage( role_names=["web-app-demo"], @@ -184,7 +184,7 @@ not_demo: {} with ( redirect_stdout(err), patch.object(rrv, "_roles_root", return_value=self.roles_root), - patch.object(rrv, "get_entity_name", return_value="demo"), + patch.object(rrv, "entity_name", return_value="demo"), ): kept = rrv.filter_roles_by_min_storage( role_names=["web-app-demo"], @@ -208,7 +208,7 @@ demo: with ( redirect_stdout(err), patch.object(rrv, "_roles_root", return_value=self.roles_root), - patch.object(rrv, "get_entity_name", return_value="demo"), + patch.object(rrv, "entity_name", return_value="demo"), ): kept = rrv.filter_roles_by_min_storage( role_names=["web-app-demo"], @@ -243,7 +243,7 @@ demo: with ( redirect_stdout(err), patch.object(rrv, "_roles_root", return_value=self.roles_root), - patch.object(rrv, "get_entity_name", return_value=""), + patch.object(rrv, "entity_name", return_value=""), ): kept = rrv.filter_roles_by_min_storage( role_names=["web-app-demo"], diff --git a/utils/cleanup/databases_csv.py b/utils/cleanup/databases_csv.py index c30c42d999..4a1665d3aa 100644 --- a/utils/cleanup/databases_csv.py +++ b/utils/cleanup/databases_csv.py @@ -8,7 +8,7 @@ import sys from pathlib import Path from utils.paths import FILE_DATABASE_SECRETS -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name DEFAULT_CSV = FILE_DATABASE_SECRETS @@ -42,14 +42,14 @@ def wipe_database_entries( app_ids: list[str], csv_file: Path | None = None ) -> list[str]: """Remove rows whose database or username column matches an entity - derived from *app_ids* via :func:`get_entity_name`.""" + derived from *app_ids* via :func:`entity_name`.""" path = csv_file or _resolve_csv_file() if not path.exists(): return [] targets: set[str] = set() for app_id in app_ids: - entity = get_entity_name(app_id) + entity = entity_name(app_id) if entity: targets.add(entity) if not targets: diff --git a/utils/docker/paths_utils.py b/utils/docker/paths_utils.py index e5681ce8f1..e0912ebb0f 100644 --- a/utils/docker/paths_utils.py +++ b/utils/docker/paths_utils.py @@ -1,14 +1,14 @@ from __future__ import annotations -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name def get_docker_paths(application_id: str, path_docker_compose_instances: str) -> dict: """ Build the compose dict based on path_docker_compose_instances and application_id. - Uses get_entity_name to extract the entity name from application_id. + Uses entity_name to extract the entity name from application_id. """ - entity = get_entity_name(application_id) + entity = entity_name(application_id) base = f"{path_docker_compose_instances}{entity}/" return { diff --git a/utils/networks/attachments.py b/utils/networks/attachments.py index bbaacadda9..7491251826 100644 --- a/utils/networks/attachments.py +++ b/utils/networks/attachments.py @@ -10,7 +10,7 @@ from __future__ import annotations from typing import TYPE_CHECKING, Any -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name if TYPE_CHECKING: from collections.abc import Callable @@ -67,7 +67,7 @@ def _matches_kind( ).strip() if direction not in ("client", "both"): return False - consumer_key = get_entity_name(application_id) + consumer_key = entity_name(application_id) if ( lookup_config(application_id, f"services.{consumer_key}.mcp_consumer", None) is not True @@ -204,12 +204,12 @@ def _suppress_default( def _own_shared_net_provider( attachments: list[dict[str, Any]], own_entity: str, - get_entity_name: Callable[[str], str], + entity_name: Callable[[str], str], ) -> bool: return any( att["is_provider"] and att["topology"] == "shared_net" - and get_entity_name(att["role"]) == own_entity + and entity_name(att["role"]) == own_entity for att in attachments ) @@ -217,8 +217,8 @@ def _own_shared_net_provider( def _shared_network_key( attachments: list[dict[str, Any]], own_entity: str, - get_entity_name: Callable[[str], str], + entity_name: Callable[[str], str], ) -> str: - if _own_shared_net_provider(attachments, own_entity, get_entity_name): + if _own_shared_net_provider(attachments, own_entity, entity_name): return own_entity return "default" diff --git a/utils/networks/proxy.py b/utils/networks/proxy.py index eb55db1de3..02f5366346 100644 --- a/utils/networks/proxy.py +++ b/utils/networks/proxy.py @@ -11,7 +11,7 @@ import re from typing import Any from utils.roles.applications.config import get -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name _REGEX_OR_NAMED_LOCATION = re.compile(r"^[@~]") _LOCATION_MODIFIER = re.compile(r"^(?:=|\^~)\s*") @@ -40,7 +40,7 @@ def resolve_upstream( ``host.docker.internal:`` via the host gateway (the caller sets this off the real DEPLOYMENT_MODE, since such apps force a compose-style render). Missing swarm internal port hard-fails.""" - entity = get_entity_name(application_id) + entity = entity_name(application_id) if not entity: raise ValueError( f"resolve_upstream: cannot derive entity from {application_id!r}" diff --git a/utils/networks/render.py b/utils/networks/render.py index 10fc049197..74c69bb30c 100644 --- a/utils/networks/render.py +++ b/utils/networks/render.py @@ -71,7 +71,7 @@ def shared_network_compose_key( application_id: str, deployment_mode: str, registry: dict[str, dict[str, Any]], - get_entity_name: Callable[[str], str], + entity_name: Callable[[str], str], lookup_config: Callable[[str, str, Any], Any], lookup_database: Callable[[str, str], Any], node_local: bool = False, @@ -88,7 +88,7 @@ def shared_network_compose_key( application_id: role the network belongs to. deployment_mode: compose or swarm. registry: service registry built from the merged applications. - get_entity_name: role id to entity name. + entity_name: role id to entity name. lookup_config: config value accessor. lookup_database: database value accessor. node_local: render as compose regardless of deployment_mode. @@ -99,7 +99,7 @@ def shared_network_compose_key( registry, application_id, deployment_mode, lookup_config, lookup_database ) return _shared_network_key( - attachments, get_entity_name(application_id), get_entity_name + attachments, entity_name(application_id), entity_name ) @@ -137,7 +137,7 @@ def render_compose_networks( application_id: str, deployment_mode: str, registry: dict[str, dict[str, Any]], - get_entity_name: Callable[[str], str], + entity_name: Callable[[str], str], lookup_config: Callable[[str, str, Any], Any], lookup_database: Callable[[str, str], Any], swarm_encrypted: bool = True, @@ -152,12 +152,12 @@ def render_compose_networks( for att in attachments: if att["is_provider"] and att["topology"] == "default_net": continue - lines.append(f" {get_entity_name(att['role'])}:") + lines.append(f" {entity_name(att['role'])}:") lines.append(" external: true") - own_entity = get_entity_name(application_id) + own_entity = entity_name(application_id) is_own_shared_net_provider = ( - _shared_network_key(attachments, own_entity, get_entity_name) == own_entity + _shared_network_key(attachments, own_entity, entity_name) == own_entity ) if not _suppress_default(application_id, lookup_database): lines.append(" default:") @@ -199,7 +199,7 @@ def render_container_networks( application_id: str, deployment_mode: str, registry: dict[str, dict[str, Any]], - get_entity_name: Callable[[str], str], + entity_name: Callable[[str], str], lookup_config: Callable[[str, str, Any], Any], lookup_database: Callable[[str, str], Any], provider_self_alias: bool = True, @@ -217,7 +217,7 @@ def render_container_networks( continue if own_network_only and not att["is_provider"]: continue - lines.append(f" {get_entity_name(att['role'])}:") + lines.append(f" {entity_name(att['role'])}:") aliases = att["aliases"] if att["is_provider"] and not provider_self_alias: aliases = [] diff --git a/utils/recovery/databases.py b/utils/recovery/databases.py index dc4827fbed..b5cfa91d86 100644 --- a/utils/recovery/databases.py +++ b/utils/recovery/databases.py @@ -36,7 +36,7 @@ from utils.roles.applications.services.database import ( RDBMS_SERVICE_KEYS, resolve_database_service_key, ) -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name if TYPE_CHECKING: from collections.abc import Mapping @@ -101,7 +101,7 @@ def engine_by_key( engine = resolve_database_service_key(payload, application_id) if not engine: continue - entity = get_entity_name(application_id) + entity = entity_name(application_id) mapping[f"{entity}{DEDICATED_VOLUME_SUFFIX}"] = engine mapping[entity] = engine if generation_dir is not None: diff --git a/utils/roles/applications/mcp.py b/utils/roles/applications/mcp.py index 4bd869ce84..6d9793da2c 100644 --- a/utils/roles/applications/mcp.py +++ b/utils/roles/applications/mcp.py @@ -63,7 +63,7 @@ from __future__ import annotations from typing import TYPE_CHECKING, Any -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name if TYPE_CHECKING: from collections.abc import Mapping @@ -285,7 +285,7 @@ def declares_mcp_consumer(role_id: str, services: object) -> bool: """ if not isinstance(services, dict): return False - entry = services.get(get_entity_name(role_id)) + entry = services.get(entity_name(role_id)) return isinstance(entry, dict) and entry.get(MCP_CONSUMER_FLAG) is True @@ -302,7 +302,7 @@ def admits_mcp_consumer(provider_services: object, consumer_id: str) -> bool: """ if not isinstance(provider_services, dict): return True - entry = provider_services.get(get_entity_name(consumer_id)) + entry = provider_services.get(entity_name(consumer_id)) if isinstance(entry, dict) and MCP_CONSUMER_FLAG in entry: return entry[MCP_CONSUMER_FLAG] is True return True diff --git a/utils/roles/applications/services/registry.py b/utils/roles/applications/services/registry.py index 484bf2ada3..fcb2ae216f 100644 --- a/utils/roles/applications/services/registry.py +++ b/utils/roles/applications/services/registry.py @@ -5,7 +5,7 @@ from pathlib import Path from typing import TYPE_CHECKING, Any from utils.cache.yaml import load_yaml_any -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.mapping import ROLE_FILE_VARS_MAIN from utils.roles.meta_lookup import get_role_run_after from utils.roles.validation.invokable import types_from_group_names @@ -127,16 +127,16 @@ def discover_role_services( config: dict[str, Any], ) -> dict[str, dict[str, Any]]: services = _as_mapping(config.get("services")) - entity_name = get_entity_name(role_name) - primary_entry = _as_mapping(services.get(entity_name)) + entity = entity_name(role_name) + primary_entry = _as_mapping(services.get(entity)) alias_entries = { key: _as_mapping(entry) for key, entry in services.items() if isinstance(entry, dict) - and _normalized_name(_as_mapping(entry).get("canonical")) == entity_name + and _normalized_name(_as_mapping(entry).get("canonical")) == entity } provides = _normalized_name(primary_entry.get("provides")) - if provides == entity_name: + if provides == entity: provides = "" is_provider = bool(primary_entry) and ( @@ -147,7 +147,7 @@ def discover_role_services( if not is_provider: return {} - primary_id = provides or entity_name + primary_id = provides or entity raw_covers = primary_entry.get("covers") covers: list[str] = ( [_normalized_name(item) for item in raw_covers if isinstance(item, str)] @@ -157,8 +157,8 @@ def discover_role_services( covers = [c for c in covers if c] base_entry = { "role": role_name, - "entity_name": entity_name, - "source_key": entity_name, + "entity_name": entity, + "source_key": entity, "deploy_type": detect_deploy_type(role_name), "bucket": detect_service_bucket(role_name), "service_type": detect_service_channel(role_name), diff --git a/utils/roles/applications/services/resources.py b/utils/roles/applications/services/resources.py index e848588808..04f4aa0438 100644 --- a/utils/roles/applications/services/resources.py +++ b/utils/roles/applications/services/resources.py @@ -16,7 +16,7 @@ from typing import Any from humanfriendly import parse_size from utils.roles.applications.topics import apply_topic -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name _RESOURCE_KEYS = ("mem_reservation", "mem_limit", "pids_limit", "cpus") _CONTAINER_KEYS = ("image", "name", "version", "container") @@ -169,7 +169,7 @@ def collect_role_resources( config = _as_mapping(applications[role_name]) services = _as_mapping(config.get("services")) - entity_name = get_entity_name(role_name) + entity = entity_name(role_name) def add(service_key: str, service_conf: dict[str, Any]) -> None: if dedup and service_key in loaded: @@ -177,17 +177,17 @@ def collect_role_resources( loaded.add(service_key) rows.append(_row_for_service(role_name, service_key, service_conf, depth)) - if entity_name and entity_name in services: - add(entity_name, _as_mapping(services.get(entity_name))) + if entity and entity in services: + add(entity, _as_mapping(services.get(entity))) else: warnings.append( - f"role '{role_name}' has no services.{entity_name or ''} entry" + f"role '{role_name}' has no services.{entity or ''} entry" ) shared_dependencies: list[str] = [] nested_maps: dict[str, dict[str, Any]] = {} for service_key, raw_service_conf in services.items(): - if service_key == entity_name: + if service_key == entity: continue service_conf = _as_mapping(raw_service_conf) if not service_conf: diff --git a/utils/roles/entity/apps.py b/utils/roles/entity/apps.py index 2420e33236..1017f3f5ad 100644 --- a/utils/roles/entity/apps.py +++ b/utils/roles/entity/apps.py @@ -1,6 +1,6 @@ """Reverse entity -> application_id resolver. -`utils.roles.entity.name.get_entity_name` maps a role / application_id to +`utils.roles.entity.name.entity_name` maps a role / application_id to its compose entity name (the longest matching category prefix stripped). The purge orchestrators need the inverse: given an entity name, which application_ids belong to it? This helper walks the roles directory and @@ -16,7 +16,7 @@ from __future__ import annotations from typing import TYPE_CHECKING from utils.cache.yaml import load_yaml_any -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.mapping import ROLE_FILE_VARS_MAIN if TYPE_CHECKING: @@ -40,7 +40,7 @@ def _role_app_id(role_dir: Path) -> str: def apps_for_entity(entity: str, *, roles_dir: Path) -> list[str]: """Return sorted, deduplicated application_ids whose role belongs to - *entity* under `get_entity_name`. + *entity* under `entity_name`. Returns an empty list when *entity* is blank, *roles_dir* is not a directory, or no role matches. @@ -54,6 +54,6 @@ def apps_for_entity(entity: str, *, roles_dir: Path) -> list[str]: app_id = _role_app_id(role_dir) if not app_id: continue - if get_entity_name(app_id) == target: + if entity_name(app_id) == target: out.add(app_id) return sorted(out) diff --git a/utils/roles/entity/name.py b/utils/roles/entity/name.py index 52ca05517f..fe8826a2e5 100644 --- a/utils/roles/entity/name.py +++ b/utils/roles/entity/name.py @@ -1,15 +1,71 @@ +"""Entity-name SPOT. + +A role's entity name keys its instance directory, its compose project and +its container name. It is derived from the role name by stripping the +longest matching category path, unless the role declares a literal +``entity_name`` in ``vars/main.yml``, which wins. + +Two roles under different categories whose names share a suffix +(``svc-ai-libretranslate`` and ``web-svc-libretranslate``) otherwise +collapse onto one entity and overwrite each other's rendered stack. The +declaration is the escape hatch that keeps both role names intact; +``tests/lint/ansible/roles/meta/test_service_key_collision.py`` enforces +that no two compose-rendering roles end up on the same entity either way. + +``PROJECT_ROOT`` is read inside the functions, never pre-joined at import +time, for the reason :mod:`utils.roles.categories` states: tests patch the +root and build fixtures in temporary trees. +""" + +from __future__ import annotations + +from typing import TYPE_CHECKING + +from utils.cache import PROJECT_ROOT +from utils.cache.yaml import load_yaml_any from utils.roles.categories import ( categories_file, flatten_categories, load_categories_tree, ) +from utils.roles.mapping import ROLE_FILE_VARS_MAIN + +if TYPE_CHECKING: + from pathlib import Path -def get_entity_name(role_name): +def declared_entity_name(role_name: str, root: Path | None = None) -> str: + """The literal ``entity_name`` a role declares, or ``""``. + + Args: + role_name: role directory name / application id. + root: tree to resolve against; the repository root when omitted. + + Returns: + The declared name, or ``""`` when the role declares none, derives + it through a Jinja expression, or has no ``vars/main.yml``. + """ + base = PROJECT_ROOT if root is None else root + data = load_yaml_any( + str(base / "roles" / role_name / ROLE_FILE_VARS_MAIN), + default_if_missing={}, + ) + declared = data.get("entity_name") if isinstance(data, dict) else None + if not isinstance(declared, str): + return "" + declared = declared.strip() + return "" if "{{" in declared else declared + + +def entity_name(role_name): """ Get the entity name from a role name by removing the longest matching category path from categories.yml. """ + declared = declared_entity_name(role_name) + if declared: + return declared + categories_tree = load_categories_tree(str(categories_file())) all_category_paths = flatten_categories(categories_tree) diff --git a/utils/roles/meta_lookup.py b/utils/roles/meta_lookup.py index ecbdb7dbae..72d3b0d1d4 100644 --- a/utils/roles/meta_lookup.py +++ b/utils/roles/meta_lookup.py @@ -10,7 +10,7 @@ Both fields used to live nested inside `meta/main.yml.galaxy_info`: They live at ``meta/services.yml..{run_after,lifecycle}`` where ```` is the value returned by -:func:`utils.roles.entity.name.get_entity_name` for the role's directory +:func:`utils.roles.entity.name.entity_name` for the role's directory name. Both helpers degrade gracefully: @@ -29,7 +29,7 @@ import yaml from utils.cache.yaml import load_yaml_any from utils.github.variant.pools import ARCHITECTURES -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.mapping import ROLE_FILE_META_SERVICES, ROLE_FILE_META_TESTS from . import PROJECT_ROOT @@ -80,7 +80,7 @@ def _read_meta_tests(role_dir: Path) -> dict | None: def _primary_entry(role_name: str, services: dict | None) -> dict | None: if not services: return None - primary_entity = get_entity_name(role_name) or role_name + primary_entity = entity_name(role_name) or role_name entry = services.get(primary_entity) if entry is None: return None diff --git a/utils/roles/validation/resources.py b/utils/roles/validation/resources.py index db5a370d0b..56969cda4a 100644 --- a/utils/roles/validation/resources.py +++ b/utils/roles/validation/resources.py @@ -6,7 +6,7 @@ from humanfriendly import parse_size from utils.annotations.message import warning from utils.cache.yaml import load_yaml_any -from utils.roles.entity.name import get_entity_name +from utils.roles.entity.name import entity_name from utils.roles.mapping import ROLE_FILE_META_SERVICES from . import PROJECT_ROOT @@ -67,17 +67,17 @@ def filter_roles_by_min_storage( ) continue - entity_name = get_entity_name(role_name) - if not entity_name: + entity = entity_name(role_name) + if not entity: cfg_path_early = role_dir / ROLE_FILE_META_SERVICES if cfg_path_early.is_file(): try: early_cfg = _load_yaml_file(cfg_path_early) if isinstance(early_cfg, dict) and role_name in early_cfg: - entity_name = role_name + entity = role_name except Exception: # noqa: S110 - non-fatal: malformed services.yml just skips the role pass - if not entity_name: + if not entity: if emit_warnings: warning( f"Could not derive entity_name from role_name '{role_name}'.", @@ -99,7 +99,7 @@ def filter_roles_by_min_storage( ) continue - service_cfg = _deep_get(cfg, [entity_name]) + service_cfg = _deep_get(cfg, [entity]) if service_cfg is None or not isinstance(service_cfg, dict): out.append(role_name) continue @@ -109,7 +109,7 @@ def filter_roles_by_min_storage( if min_storage_val is None: if emit_warnings: warning( - f"Missing key services.{entity_name}.min_storage in {cfg_path} (treating as 0GB)", + f"Missing key services.{entity}.min_storage in {cfg_path} (treating as 0GB)", title="min_storage validation", ) out.append(role_name)