Compare commits

..
8 Commits
99 changed files with 763 additions and 17985 deletions

No files matched your search

+1 -38
View File
@@ -117,15 +117,6 @@ jobs:
- name: Install dependencies
run: npm ci
# Bundled plugins are counted as downloads in the plugin store, so a
# build only fetches them when the pins change.
- name: Cache bundled plugins
uses: actions/cache@v6
with:
path: node_modules/.cache/termix-bundled-plugins
key: bundled-plugins-${{ hashFiles('docker/bundled-plugins.json') }}
enableCrossOsArchive: true
# A beta build has to know it is a beta, or it reports the stable version.
- name: Stamp beta version
if: inputs.version_override != ''
@@ -146,9 +137,8 @@ jobs:
run: npm run build && npx electron-builder --win --x64 --ia32 --publish never
# The updater only installs the x64 NSIS build; 32-bit installs get a link.
# The combined x64+ia32 installer is never uploaded.
- name: Fix Windows update files
run: node scripts/fix-update-info.cjs --drop ia32 --drop termix_windows_nsis.exe release/latest.yml release/beta.yml release/alpha.yml
run: node scripts/fix-update-info.cjs --drop ia32 release/latest.yml release/beta.yml release/alpha.yml
- name: Upload Windows x64 NSIS Installer
uses: actions/upload-artifact@v7
@@ -250,15 +240,6 @@ jobs:
npm install --force @rollup/rollup-linux-arm64-gnu
npm install --force @rollup/rollup-linux-arm-gnueabihf
# Bundled plugins are counted as downloads in the plugin store, so a
# build only fetches them when the pins change.
- name: Cache bundled plugins
uses: actions/cache@v6
with:
path: node_modules/.cache/termix-bundled-plugins
key: bundled-plugins-${{ hashFiles('docker/bundled-plugins.json') }}
enableCrossOsArchive: true
# A beta build has to know it is a beta, or it reports the stable version.
- name: Stamp beta version
if: inputs.version_override != ''
@@ -486,15 +467,6 @@ jobs:
npm install dmg-license
node scripts/install-macos-sharp.cjs
# Bundled plugins are counted as downloads in the plugin store, so a
# build only fetches them when the pins change.
- name: Cache bundled plugins
uses: actions/cache@v6
with:
path: node_modules/.cache/termix-bundled-plugins
key: bundled-plugins-${{ hashFiles('docker/bundled-plugins.json') }}
enableCrossOsArchive: true
# A beta build has to know it is a beta, or it reports the stable version.
- name: Stamp beta version
if: inputs.version_override != ''
@@ -982,15 +954,6 @@ jobs:
npm install dmg-license
node scripts/install-macos-sharp.cjs
# Bundled plugins are counted as downloads in the plugin store, so a
# build only fetches them when the pins change.
- name: Cache bundled plugins
uses: actions/cache@v6
with:
path: node_modules/.cache/termix-bundled-plugins
key: bundled-plugins-${{ hashFiles('docker/bundled-plugins.json') }}
enableCrossOsArchive: true
- name: Check for Code Signing Certificates
id: check_certs
run: |
-9
View File
@@ -24,15 +24,6 @@ jobs:
- name: Install dependencies
run: npm ci
# Bundled plugins are counted as downloads in the plugin store, so a
# build only fetches them when the pins change.
- name: Cache bundled plugins
uses: actions/cache@v6
with:
path: node_modules/.cache/termix-bundled-plugins
key: bundled-plugins-${{ hashFiles('docker/bundled-plugins.json') }}
enableCrossOsArchive: true
- name: Build plugin SDK
run: npm run build:sdk
-9
View File
@@ -228,15 +228,6 @@ jobs:
- name: Install dependencies
run: npm ci
# Bundled plugins are counted as downloads in the plugin store, so a
# build only fetches them when the pins change.
- name: Cache bundled plugins
uses: actions/cache@v6
with:
path: node_modules/.cache/termix-bundled-plugins
key: bundled-plugins-${{ hashFiles('docker/bundled-plugins.json') }}
enableCrossOsArchive: true
- name: Build plugin SDK
run: npm run build:sdk
+1 -11
View File
@@ -13,23 +13,13 @@
- Every language is now fully translated, in Termix and in every plugin, and stays up to date with each release
- Languages with more than two plural forms, like Russian, Polish and Arabic, now use the right one
- The Plugins tab shows how many times each plugin was downloaded, in a Downloads column
- Plugins, Browse hides plugins you already have. Turn on Show installed to see them
### Fixed
- Regional browser languages like `es-MX`, `pt` or `zh-HK` showed English instead of the closest translation
- Counts like "1 keys" or "Moved 1 host(s)" now use the singular
- Plugin updates on the desktop app, synced or installed from the Plugins tab, failed to start with "Cannot find package"
- Plugin updates synced to the desktop app failed to start with "Cannot find package"
- The desktop app showed plugins that only run on the server as not running and out of date
- Keep the terminal WebSocket open past nginx's 60s default
- Plugin download counts now show in the Plugins tab without waiting for the background check
- Clicking into a saved password, key passphrase or sudo password field and saving without typing erased it, which stopped sudo autofill
- The desktop app now says when its data is from 2.8 or older and needs 2.9 first, instead of only saying the local server could not start
- Client tunnels on the desktop app stopped with "Endpoint SSH connection closed" when a reverse proxy dropped their idle connection
- Typing right after opening a host from the sidebar went to the host search instead of the new session
- SSH config import failed on files that put a tab or `=` between a keyword and its value
- App icons and the favicon have rounded corners again
## 26.10.0
+1 -3
View File
@@ -34,9 +34,7 @@ WORKDIR /app
COPY . .
# Bundled plugin downloads show in the plugin store, so keep them between builds.
RUN --mount=type=cache,target=/app/node_modules/.cache/termix-bundled-plugins \
npm run build:backend
RUN npm run build:backend
# Stage 4: Download OPKSSH binary for the target platform so the image works offline
FROM node:24-slim AS opkssh-downloader
+68 -68
View File
@@ -3,20 +3,20 @@
{
"id": "acme-ssl",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-ACME-SSL/releases/download/v1.0.1/acme-ssl-1.0.1.tmxplug",
"sha256": "cb5b7c56a281272cfff229d01a2729a4fa3936de04c0ac487d65bcf8dbd2f38e"
"url": "https://github.com/Termix-SSH/Plugin-ACME-SSL/releases/download/v1.0.0/acme-ssl-1.0.0.tmxplug",
"sha256": "34aa172b2f6bc6a773ebdff2ec0f590d411ce258fd43176bdddb4c30d1fe30da"
},
{
"id": "ai",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-AI/releases/download/v1.0.1/ai-1.0.1.tmxplug",
"sha256": "2558c91e3e6823b3e18873d7b074762c4d76a1a0b96ff38d2dad13e0404b74a7"
"url": "https://github.com/Termix-SSH/Plugin-AI/releases/download/v1.0.0/ai-1.0.0.tmxplug",
"sha256": "ad291a2c6f6f01b72ebd275e8d202b78f55bc13a1e1a40f419d04e71b2fbd06b"
},
{
"id": "alerts",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Alerts/releases/download/v1.0.1/alerts-1.0.1.tmxplug",
"sha256": "f5f233c0ffdeee956e1839a17a323c18ce8eb389a08569c3c6e5e24b698dd72a",
"url": "https://github.com/Termix-SSH/Plugin-Alerts/releases/download/v1.0.0/alerts-1.0.0.tmxplug",
"sha256": "3fe008f9d2a32e2b7111399054a2264ea5cf5d71264cc31e85cdab3e909cc62f",
"onboarding": {
"recommended": true,
"consent": false
@@ -25,14 +25,14 @@
{
"id": "automations",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Automations/releases/download/v1.0.1/automations-1.0.1.tmxplug",
"sha256": "d2bb5298f8afac3f479ded81d5b1a799d9844b3f4990c8aaf2dd8fed7222428d"
"url": "https://github.com/Termix-SSH/Plugin-Automations/releases/download/v1.0.0/automations-1.0.0.tmxplug",
"sha256": "76d4cff6e78d40ec67e899f0c7b2aca43d35a47b9a15071d0a8f5a8d939af9a9"
},
{
"id": "docker",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Docker/releases/download/v1.0.1/docker-1.0.1.tmxplug",
"sha256": "00e170e61ea9b7952449ea9ce30b09b983433f8d18d29f523cf3c6f98e7286e3",
"url": "https://github.com/Termix-SSH/Plugin-Docker/releases/download/v1.0.0/docker-1.0.0.tmxplug",
"sha256": "641e564ba915a72efed4236272d63f6fff43904309833870f3554d3e9bd28dfa",
"onboarding": {
"recommended": true,
"consent": false
@@ -41,8 +41,8 @@
{
"id": "file-manager",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-File-Manager/releases/download/v1.0.2/file-manager-1.0.2.tmxplug",
"sha256": "4c735f5b795a8c676590a0dc25db1bcc6036ac250b9817a61867cebdc17931c6",
"url": "https://github.com/Termix-SSH/Plugin-File-Manager/releases/download/v1.0.0/file-manager-1.0.0.tmxplug",
"sha256": "1cafccfe86a29e2f318026ca7bc20629df94331c81209607976dafd7feac0ca4",
"onboarding": {
"recommended": true,
"consent": false
@@ -51,20 +51,20 @@
{
"id": "fleets",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Fleets/releases/download/v1.0.1/fleets-1.0.1.tmxplug",
"sha256": "82ac71e69022c4991570e6fed109a9eec79421f081af0a1dcb6d8b8e4251ee3b"
"url": "https://github.com/Termix-SSH/Plugin-Fleets/releases/download/v1.0.0/fleets-1.0.0.tmxplug",
"sha256": "1ebeccd6b2a8e9510ab56658374d0b87f652149101d14956752a696ca920f611"
},
{
"id": "homepage",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Homepage/releases/download/v1.0.1/homepage-1.0.1.tmxplug",
"sha256": "573375726f334e37bbf504d9411c4ad2d4bfc4363219ff10dcea6cb2cb00ed32"
"url": "https://github.com/Termix-SSH/Plugin-Homepage/releases/download/v1.0.0/homepage-1.0.0.tmxplug",
"sha256": "65cd21802f6a71f3b3c582bc0007bfc91160abc161b2390bce715fd2ed987f99"
},
{
"id": "host-metrics",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Host-Metrics/releases/download/v1.0.2/host-metrics-1.0.2.tmxplug",
"sha256": "433d5297e2fc263f2262b7ea33d7a795c9a970089aea328077861c3f032a23f5",
"url": "https://github.com/Termix-SSH/Plugin-Host-Metrics/releases/download/v1.0.0/host-metrics-1.0.0.tmxplug",
"sha256": "1afce5489038e5e30b55210e8e43ba93e0446fe087e2952af75a402dbf809ea9",
"onboarding": {
"recommended": true,
"consent": false
@@ -73,32 +73,32 @@
{
"id": "ldap",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-LDAP/releases/download/v1.0.1/ldap-1.0.1.tmxplug",
"sha256": "f5ba13c682d11060f373f85a9c7aaa131e587ec59c0498c0dabb013c2e474f5c"
"url": "https://github.com/Termix-SSH/Plugin-LDAP/releases/download/v1.0.0/ldap-1.0.0.tmxplug",
"sha256": "1df08a931457043ba500689a73b4b5ab2bfb43630f377557e0fb13280b996334"
},
{
"id": "network-topology",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Network-Topology/releases/download/v1.0.1/network-topology-1.0.1.tmxplug",
"sha256": "4c8ec1ae0c39b8b72a89e0dce4b20a36df4adc826abe215b8ee9b69b44fe75ca"
"url": "https://github.com/Termix-SSH/Plugin-Network-Topology/releases/download/v1.0.0/network-topology-1.0.0.tmxplug",
"sha256": "dc3ad943c1753b352b4d80c09836a293a8767293061ddf2e641575bae97124e9"
},
{
"id": "opkssh",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-OPKSSH/releases/download/v1.0.1/opkssh-1.0.1.tmxplug",
"sha256": "c19eadfe763e4dbecbd9a5e9e753576c577c75296ddc8e0af4cce98c2376b26f"
"url": "https://github.com/Termix-SSH/Plugin-OPKSSH/releases/download/v1.0.0/opkssh-1.0.0.tmxplug",
"sha256": "91cc1575aa1ff84632e0b6a4da68df3a7df4b8e18431b9c0378d314b886ed55d"
},
{
"id": "proxmox",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Proxmox/releases/download/v1.0.1/proxmox-1.0.1.tmxplug",
"sha256": "4e0989856e061b9ab1ec25cc727051e03ea5e3dc1603e08895bd54e7ce132db7"
"url": "https://github.com/Termix-SSH/Plugin-Proxmox/releases/download/v1.0.0/proxmox-1.0.0.tmxplug",
"sha256": "09891a3ab67a5b6589d8ab9e0fc88d8c63ff9d4e52ed8e7cbd0801a5e64e593f"
},
{
"id": "remote-desktop",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Remote-Desktop/releases/download/v1.0.2/remote-desktop-1.0.2.tmxplug",
"sha256": "70823a3f5161f6722fee22a9d5fe274dd47623960bc2188429c39a1c7e3e2b39",
"url": "https://github.com/Termix-SSH/Plugin-Remote-Desktop/releases/download/v1.0.0/remote-desktop-1.0.0.tmxplug",
"sha256": "7b24691953550458ee1609372443eeb5580d20091b02c95011c0427268350efc",
"onboarding": {
"recommended": true,
"consent": false
@@ -107,14 +107,14 @@
{
"id": "secret-sources",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Secret-Sources/releases/download/v1.0.1/secret-sources-1.0.1.tmxplug",
"sha256": "9f5246325d3128c6376962f4cdbed33e78c487a4837f69235dfdcafeb293229a"
"url": "https://github.com/Termix-SSH/Plugin-Secret-Sources/releases/download/v1.0.0/secret-sources-1.0.0.tmxplug",
"sha256": "04e9cfca70ffafc41546ddf0f1f6411743a2e0e9835b26ad5c0b91ac11028485"
},
{
"id": "serial",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Serial/releases/download/v1.0.1/serial-1.0.1.tmxplug",
"sha256": "9908467fc184e40f108ff750bf2fb8044e000a436f84d0a7121109f4fcd5d121",
"url": "https://github.com/Termix-SSH/Plugin-Serial/releases/download/v1.0.0/serial-1.0.0.tmxplug",
"sha256": "2470acbd6c4c343c3d89dada972051f1ee7aace88af1e6719b92f19a4a6e46ea",
"onboarding": {
"recommended": "desktop",
"consent": false
@@ -123,20 +123,20 @@
{
"id": "session-recording",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Session-Recording/releases/download/v1.0.1/session-recording-1.0.1.tmxplug",
"sha256": "45a08f950244c862a3774f9a653b3e3645285edb507a49b5c8da123832faf1e7"
"url": "https://github.com/Termix-SSH/Plugin-Session-Recording/releases/download/v1.0.0/session-recording-1.0.0.tmxplug",
"sha256": "6b630ca0e08d79be7cb49366c898586ee3416a518f8e200157a6191c2c7c9ab7"
},
{
"id": "session-sharing",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Session-Sharing/releases/download/v1.0.1/session-sharing-1.0.1.tmxplug",
"sha256": "753aa9c0998f194ccf5fc49fd39c133a87f21f21e803014c4bfac6ccc7f9acb1"
"url": "https://github.com/Termix-SSH/Plugin-Session-Sharing/releases/download/v1.0.0/session-sharing-1.0.0.tmxplug",
"sha256": "0c0d3f2d63184d4a4b2a90b11a1ee247ddc937abba76af74eb39e27048b412f9"
},
{
"id": "snippets",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Snippets/releases/download/v1.0.1/snippets-1.0.1.tmxplug",
"sha256": "bf643828beba86677220d802c0df74b441d7954538637f37413f78d59c08585f",
"url": "https://github.com/Termix-SSH/Plugin-Snippets/releases/download/v1.0.0/snippets-1.0.0.tmxplug",
"sha256": "47872d08cdf4a15b50c8f90ca125276a92579147a27cb6b5639a84a01160abe5",
"onboarding": {
"recommended": true,
"consent": false
@@ -145,8 +145,8 @@
{
"id": "ssh-terminal",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-SSH-Terminal/releases/download/v1.0.2/ssh-terminal-1.0.2.tmxplug",
"sha256": "e65102a8cd6afdaa890095fa698f3f455a1035729b9fdca800a31cc6e5ed760f",
"url": "https://github.com/Termix-SSH/Plugin-SSH-Terminal/releases/download/v1.0.0/ssh-terminal-1.0.0.tmxplug",
"sha256": "5b5a357bbf9a503c6b68725245712a99fa8ea0eec0baff64319be28950acac79",
"onboarding": {
"recommended": true,
"consent": false
@@ -155,8 +155,8 @@
{
"id": "sso",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-SSO/releases/download/v1.0.2/sso-1.0.2.tmxplug",
"sha256": "29ab0e4748ee71cb11f9b8dacd630430d284b6ce24561cffae9b4d7fe64e9c3b",
"url": "https://github.com/Termix-SSH/Plugin-SSO/releases/download/v1.0.1/sso-1.0.1.tmxplug",
"sha256": "ba7485ba058c784975609f6960bbaf7ec2018bcdce40b47308efc92ca96fdab5",
"onboarding": {
"recommended": false,
"consent": false,
@@ -166,20 +166,20 @@
{
"id": "step-ca",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Step-CA/releases/download/v1.0.1/step-ca-1.0.1.tmxplug",
"sha256": "ff4df5bae8c48ff61fe659b6ed69a40ac070862bc423972711a194d558d77cc8"
"url": "https://github.com/Termix-SSH/Plugin-Step-CA/releases/download/v1.0.0/step-ca-1.0.0.tmxplug",
"sha256": "05209afbaeb104ff77fecb5cf26a7823b9ed66031eac7557d3216fc3b861f7a6"
},
{
"id": "tailscale",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Tailscale/releases/download/v1.0.1/tailscale-1.0.1.tmxplug",
"sha256": "0efe1cbf0f431763611926b6a9e92630ca8c1a89ea57bb796c5d7bd3ce0ab55f"
"url": "https://github.com/Termix-SSH/Plugin-Tailscale/releases/download/v1.0.0/tailscale-1.0.0.tmxplug",
"sha256": "e9840bddef696b24354b9f04f2c97e164c3879f3fd1b337347de728db522874e"
},
{
"id": "telemetry",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Telemetry/releases/download/v1.0.1/telemetry-1.0.1.tmxplug",
"sha256": "c7f70e149c67a570f2b004c2cceeba27ffe8cbd95cd4df4bbffd880cc3451469",
"url": "https://github.com/Termix-SSH/Plugin-Telemetry/releases/download/v1.0.0/telemetry-1.0.0.tmxplug",
"sha256": "b41210d638b93470891ab238e3d1180a0e0d0f0c697b1c2079156416dec05966",
"onboarding": {
"recommended": true,
"consent": true
@@ -188,20 +188,20 @@
{
"id": "termix-identity",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Termix-Identity/releases/download/v1.0.1/termix-identity-1.0.1.tmxplug",
"sha256": "dc423ec53f012fdcc2cdccd872ac01353025e4da2ee9fea0d2a2d5988518a5a0"
"url": "https://github.com/Termix-SSH/Plugin-Termix-Identity/releases/download/v1.0.0/termix-identity-1.0.0.tmxplug",
"sha256": "facd9f1c6036202e7c6b1020408ce49c7ba4bc687a8f8b93ccf60e97f473f897"
},
{
"id": "tmux-monitor",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Tmux-Monitor/releases/download/v1.0.2/tmux-monitor-1.0.2.tmxplug",
"sha256": "ea41f1f90bdeab6164cfa2a594f359492afa123ed06990afa338be69a9d974c6"
"url": "https://github.com/Termix-SSH/Plugin-Tmux-Monitor/releases/download/v1.0.0/tmux-monitor-1.0.0.tmxplug",
"sha256": "d453e0c5f1bf54160615d5df4e12eac0d97fea3c78c0aad5ebe8552e1f2de42c"
},
{
"id": "totp",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-TOTP/releases/download/v1.0.1/totp-1.0.1.tmxplug",
"sha256": "4a083871663c2f6034904bd49bb02c2d4dd4ed4d50fbce1522172dae84991474",
"url": "https://github.com/Termix-SSH/Plugin-TOTP/releases/download/v1.0.0/totp-1.0.0.tmxplug",
"sha256": "a2d389048d16e31c089cf211fe2fb37fcfb33369497b58ee445e8626e9ec494d",
"onboarding": {
"recommended": true,
"consent": false
@@ -210,8 +210,8 @@
{
"id": "tunnels",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Tunnels/releases/download/v1.0.2/tunnels-1.0.2.tmxplug",
"sha256": "44799c0bdbcc576fb0e1c1ecce96f283d2cc32b44ac5aeeb7253f8ca0b650860",
"url": "https://github.com/Termix-SSH/Plugin-Tunnels/releases/download/v1.0.0/tunnels-1.0.0.tmxplug",
"sha256": "dc6c2942490c07ec1f9a4065850288cbb00c42dae64397937d2551d689314939",
"onboarding": {
"recommended": true,
"consent": false
@@ -220,32 +220,32 @@
{
"id": "vault",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Vault/releases/download/v1.0.1/vault-1.0.1.tmxplug",
"sha256": "c828eeebe37bf576020908e16a28e73073fc77178062b323058624f557a8c72a"
"url": "https://github.com/Termix-SSH/Plugin-Vault/releases/download/v1.0.0/vault-1.0.0.tmxplug",
"sha256": "bdad88ed576ed30b464c9cbddab4d9bb60696581dc1b815b76e1b4a08500f870"
},
{
"id": "wake-on-lan",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Wake-On-LAN/releases/download/v1.0.1/wake-on-lan-1.0.1.tmxplug",
"sha256": "5301d26138cb37812e8ef1fc5d3df688415517d545667b365fca2f41166a8402"
"url": "https://github.com/Termix-SSH/Plugin-Wake-On-LAN/releases/download/v1.0.0/wake-on-lan-1.0.0.tmxplug",
"sha256": "3e7d4c8a9a20cde95d8594d4ae8e1fa0469d0751be9f00249f6431b10ada9ea9"
},
{
"id": "warpgate",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Warpgate/releases/download/v1.0.1/warpgate-1.0.1.tmxplug",
"sha256": "2f3b3169101ff04d0ea6229b31270ba0b5b8ff2c3d16e3f21a9e6c569d463ea8"
"url": "https://github.com/Termix-SSH/Plugin-Warpgate/releases/download/v1.0.0/warpgate-1.0.0.tmxplug",
"sha256": "18ed1c8238ecf57b5776ad93c6533d7040b988ae765012c5da591b85faa02d2e"
},
{
"id": "web-endpoint",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Web-Endpoint/releases/download/v1.0.1/web-endpoint-1.0.1.tmxplug",
"sha256": "88477231ab3c93206c99393c6cc8628c1ff8159af6978d0d09db969c28e1d637"
"url": "https://github.com/Termix-SSH/Plugin-Web-Endpoint/releases/download/v1.0.0/web-endpoint-1.0.0.tmxplug",
"sha256": "7f69e608eccd8cc6fa2436bffb3e2c3c8aae6cebebf7341913f15e7f9be58e42"
},
{
"id": "webauthn",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-WebAuthn/releases/download/v1.0.1/webauthn-1.0.1.tmxplug",
"sha256": "f9ccd5d6fe110b5c7ad8b90fd95e0a201e03d440462c2c3f6559406222364464",
"url": "https://github.com/Termix-SSH/Plugin-WebAuthn/releases/download/v1.0.0/webauthn-1.0.0.tmxplug",
"sha256": "dafcd7bfffc39b60a14333164dfd8ca70986da1390285359669d0293cd050121",
"onboarding": {
"recommended": true,
"consent": false
@@ -254,8 +254,8 @@
{
"id": "workspaces",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Workspaces/releases/download/v1.0.1/workspaces-1.0.1.tmxplug",
"sha256": "17f53044318d6f53ef1e332d204f6469c7043fd9985c4d1eae16b6a1c3248153",
"url": "https://github.com/Termix-SSH/Plugin-Workspaces/releases/download/v1.0.0/workspaces-1.0.0.tmxplug",
"sha256": "1ee3a07bd8d61b46b6fbe118d2a424f8027575282287622b467e83a4356e6412",
"onboarding": {
"recommended": true,
"consent": false
-10
View File
@@ -425,16 +425,6 @@ http {
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;
# A terminal is quiet most of the time - waiting on a prompt, reading
# output, running something long. Every console plugin dials this route
# (terminal, serial, remote desktop), and nginx's default
# proxy_read_timeout of 60s closed the socket about a minute into any
# pause, which reaches the user as the SSH server disconnecting. The
# plugin WebSocket routes below already ask for 86400s; this is the same
# class of socket, so it asks for the same.
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
proxy_buffering off;
}
location /host/ {
-10
View File
@@ -394,16 +394,6 @@ http {
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;
# A terminal is quiet most of the time - waiting on a prompt, reading
# output, running something long. Every console plugin dials this route
# (terminal, serial, remote desktop), and nginx's default
# proxy_read_timeout of 60s closed the socket about a minute into any
# pause, which reaches the user as the SSH server disconnecting. The
# plugin WebSocket routes below already ask for 86400s; this is the same
# class of socket, so it asks for the same.
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
proxy_buffering off;
}
location /host/ {
@@ -1 +0,0 @@
ALTER TABLE `plugin_install_counts` DROP COLUMN `source`;
File diff suppressed because it is too large. Load diff
-7
View File
@@ -498,13 +498,6 @@
"when": 1791550497926,
"tag": "0070_drop_donation_modal",
"breakpoints": true
},
{
"idx": 71,
"version": "5",
"when": 1791755801066,
"tag": "0071_drop_install_count_source",
"breakpoints": true
}
]
}
@@ -1 +0,0 @@
ALTER TABLE "plugin_install_counts" DROP COLUMN "source";
File diff suppressed because it is too large. Load diff
-7
View File
@@ -498,13 +498,6 @@
"when": 1791550496661,
"tag": "0070_drop_donation_modal",
"breakpoints": true
},
{
"idx": 71,
"version": "7",
"when": 1791755800419,
"tag": "0071_drop_install_count_source",
"breakpoints": true
}
]
}
@@ -1 +0,0 @@
ALTER TABLE `plugin_install_counts` DROP COLUMN `source`;
File diff suppressed because it is too large. Load diff
-7
View File
@@ -463,13 +463,6 @@
"when": 1791550495357,
"tag": "0065_drop_donation_modal",
"breakpoints": true
},
{
"idx": 66,
"version": "6",
"when": 1791755799726,
"tag": "0066_drop_install_count_source",
"breakpoints": true
}
]
}
-6
View File
@@ -35,13 +35,7 @@ function parseConflictingPort(stderr) {
* stderr. Always returns a failure -- see the note above on why every exit
* that reaches this point counts as one.
*/
// Part of PRE_29_DATABASE_ERROR in src/backend/database/db/upgrade-guard.ts.
const OLD_DATABASE_MARKER = "This database is from Termix 2.8 or older";
function classifyBackendFailure(stderr = "") {
if (stderr.includes(OLD_DATABASE_MARKER)) {
return { reason: "old-database", port: null };
}
if (stderr.includes("EADDRINUSE")) {
return { reason: "port-in-use", port: parseConflictingPort(stderr) };
}
-13
View File
@@ -1984,16 +1984,6 @@ const C2S_WS_HIGH_WATERMARK = 1024 * 1024;
const C2S_WS_LOW_WATERMARK = 256 * 1024;
const C2S_STREAM_WRITE_LIMIT = 8 * 1024 * 1024;
// A proxy in front of the server may drop an idle WebSocket, which stopped
// the tunnel. Pings count as traffic.
function keepC2SSocketAlive(ws) {
const timer = setInterval(() => {
if (ws.readyState === WebSocket.OPEN) ws.ping();
}, 25_000);
timer.unref?.();
ws.once("close", () => clearInterval(timer));
}
// C2S (client-to-server) tunnels relay through the server this desktop is
// linked to, not the embedded backend.
function getC2SRemoteBaseUrl() {
@@ -2262,7 +2252,6 @@ async function openC2SRelay(
getWebSocketOptions(relayUrl, { headers }),
);
attachC2SAuth(ws, tunnel.name || getC2STunnelName(tunnel));
keepC2SSocketAlive(ws);
const pendingChunks = [];
let ready = false;
let closed = false;
@@ -2370,7 +2359,6 @@ async function testC2SRelay(
getWebSocketOptions(relayUrl, { headers }),
);
attachC2SAuth(ws, tunnel.name || getC2STunnelName(tunnel));
keepC2SSocketAlive(ws);
if (runtime) runtime.authSocket = ws;
return new Promise((resolve) => {
@@ -2681,7 +2669,6 @@ async function startC2SRemoteTunnel(tunnel, index = 0, authToken) {
getWebSocketOptions(relayUrl, { headers }),
);
attachC2SAuth(ws, tunnel.name || getC2STunnelName(tunnel));
keepC2SSocketAlive(ws);
const sockets = new Map();
let closed = false;
+1 -1
View File
@@ -369,7 +369,7 @@
{
"name": "TERMIX_PLUGIN_STATS_URL",
"group": "plugins",
"description": "Where plugin download counts are read from. Defaults to stats.json next to the registry index."
"description": "Where install counts are read from. Defaults to stats.json next to the registry index."
},
{
"name": "TERMIX_REQUIRE_SIGNED_PLUGINS",
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "termix",
"version": "26.10.1",
"version": "26.10.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "termix",
"version": "26.10.1",
"version": "26.10.0",
"hasInstallScript": true,
"workspaces": [
"packages/*"
+1 -1
View File
@@ -4,7 +4,7 @@
"workspaces": [
"packages/*"
],
"version": "26.10.1",
"version": "26.10.0",
"description": "Self-hosted, plugin-based server management.",
"author": "Karmaa",
"main": "electron/main.cjs",
-11
View File
@@ -1,6 +1,5 @@
import { createRequire } from "node:module";
import { describe, expect, it } from "vitest";
import { PRE_29_DATABASE_ERROR } from "../src/backend/database/db/upgrade-guard.js";
const require = createRequire(import.meta.url);
const { classifyBackendFailure } =
@@ -47,16 +46,6 @@ describe("classifyBackendFailure", () => {
});
});
it("identifies a 2.8 database the backend refused to open", () => {
const stderr = `[ERROR] [SYSTEM] Failed to initialize backend services [op:startup_failed]
Error: ${PRE_29_DATABASE_ERROR}
at assertNotPre29Database (upgrade-guard.js:14:11)`;
expect(classifyBackendFailure(stderr)).toEqual({
reason: "old-database",
port: null,
});
});
it("reports a crash for any other non-zero exit", () => {
expect(classifyBackendFailure("TypeError: boom")).toEqual({
reason: "crashed",
+2 -6
View File
@@ -4,8 +4,7 @@
* build, so the desktop updater gets the right download:
*
* --drop <text> remove entries whose file name contains text
* (the ia32 installer, the combined Windows
* installer, the universal mac zip)
* (the ia32 installer, the universal mac zip)
* --rename <old=new> follow an artifact the workflow renamed
*
* Usage: node scripts/fix-update-info.cjs [--drop x] [--rename a=b] files...
@@ -16,12 +15,9 @@ const yaml = require("js-yaml");
function fixUpdateInfo(info, { drop = [], rename = {} } = {}) {
const rewrite = (name) => rename[name] ?? name;
const seen = new Set();
// electron-builder can list the same file more than once.
const files = (info.files ?? [])
.filter((file) => !drop.some((text) => file.url.includes(text)))
.map((file) => ({ ...file, url: rewrite(file.url) }))
.filter((file) => !seen.has(file.url) && seen.add(file.url));
.map((file) => ({ ...file, url: rewrite(file.url) }));
if (files.length === 0) {
throw new Error("no files left in update info");
}
-20
View File
@@ -26,26 +26,6 @@ describe("fixUpdateInfo", () => {
expect(fixed.version).toBe("26.10.2");
});
it("drops the combined Windows installer and duplicate entries", () => {
const fixed = fixUpdateInfo(
{
...info,
files: [
{ url: "termix_windows_nsis.exe", sha512: "c", size: 3 },
{ url: "termix_windows_ia32_nsis.exe", sha512: "a", size: 1 },
{ url: "termix_windows_x64_nsis.exe", sha512: "b", size: 2 },
{ url: "termix_windows_x64_nsis.exe", sha512: "b", size: 2 },
],
path: "termix_windows_nsis.exe",
},
{ drop: ["ia32", "termix_windows_nsis.exe"] },
);
expect(fixed.files).toEqual([
{ url: "termix_windows_x64_nsis.exe", sha512: "b", size: 2 },
]);
expect(fixed.path).toBe("termix_windows_x64_nsis.exe");
});
it("follows renamed artifacts", () => {
const fixed = fixUpdateInfo(
{
+1
View File
@@ -542,6 +542,7 @@ async function initializeCompleteDatabase(): Promise<void> {
plugin_id TEXT NOT NULL,
registry_id TEXT NOT NULL,
count INTEGER NOT NULL DEFAULT 0,
source TEXT NOT NULL DEFAULT 'aggregate-telemetry',
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
UNIQUE (plugin_id, registry_id)
);
@@ -80,8 +80,6 @@ export const RETIRED_COLUMNS: Record<string, string[]> = {
"donation_modal_dismissed",
],
sessions: ["oidc_sub", "oidc_sid", "sso_provider_id"],
// 26.10.1 shows downloads only.
plugin_install_counts: ["source"],
user_preferences: [
"command_autocomplete",
"terminal_defaults",
+5 -3
View File
@@ -1055,9 +1055,10 @@ export const pluginRegistries = mysqlTable("plugin_registries", {
});
/**
* Download counts from each registry's stats.json, written by a background
* job rather than by installs, kept separate from `plugins` so that job can
* overwrite counts without touching install state.
* Install counts populated by a background job (GitHub release download
* counts, aggregated telemetry, or a manual override) rather than by the
* install/uninstall actions themselves, kept separate from `plugins` so
* that job can overwrite counts without touching install state.
*/
export const pluginInstallCounts = mysqlTable(
"plugin_install_counts",
@@ -1066,6 +1067,7 @@ export const pluginInstallCounts = mysqlTable(
pluginId: varchar("plugin_id", { length: 255 }).notNull(),
registryId: varchar("registry_id", { length: 255 }).notNull(),
count: int("count").notNull().default(0),
source: text("source").notNull().default("aggregate-telemetry"),
updatedAt: text("updated_at")
.notNull()
.default(sql`(CURRENT_TIMESTAMP)`),
+5 -3
View File
@@ -1055,9 +1055,10 @@ export const pluginRegistries = pgTable("plugin_registries", {
});
/**
* Download counts from each registry's stats.json, written by a background
* job rather than by installs, kept separate from `plugins` so that job can
* overwrite counts without touching install state.
* Install counts populated by a background job (GitHub release download
* counts, aggregated telemetry, or a manual override) rather than by the
* install/uninstall actions themselves, kept separate from `plugins` so
* that job can overwrite counts without touching install state.
*/
export const pluginInstallCounts = pgTable(
"plugin_install_counts",
@@ -1066,6 +1067,7 @@ export const pluginInstallCounts = pgTable(
pluginId: varchar("plugin_id", { length: 255 }).notNull(),
registryId: varchar("registry_id", { length: 255 }).notNull(),
count: integer("count").notNull().default(0),
source: text("source").notNull().default("aggregate-telemetry"),
updatedAt: text("updated_at")
.notNull()
.default(sql`CURRENT_TIMESTAMP`),
+5 -3
View File
@@ -1051,9 +1051,10 @@ export const pluginRegistries = sqliteTable("plugin_registries", {
});
/**
* Download counts from each registry's stats.json, written by a background
* job rather than by installs, kept separate from `plugins` so that job can
* overwrite counts without touching install state.
* Install counts populated by a background job (GitHub release download
* counts, aggregated telemetry, or a manual override) rather than by the
* install/uninstall actions themselves, kept separate from `plugins` so
* that job can overwrite counts without touching install state.
*/
export const pluginInstallCounts = sqliteTable(
"plugin_install_counts",
@@ -1062,6 +1063,7 @@ export const pluginInstallCounts = sqliteTable(
pluginId: text("plugin_id").notNull(),
registryId: text("registry_id").notNull(),
count: integer("count").notNull().default(0),
source: text("source").notNull().default("aggregate-telemetry"),
updatedAt: text("updated_at")
.notNull()
.default(sql`CURRENT_TIMESTAMP`),
@@ -7,9 +7,10 @@ export type PluginInstallCountRecord = typeof pluginInstallCounts.$inferSelect;
export interface PluginInstallCountInput {
pluginId: string;
count: number;
source: string;
}
/** Download counts for the store, one row per plugin and registry. */
/** Popularity numbers for the store, one row per plugin and registry. */
export class PluginInstallCountRepository {
constructor(
private readonly context: DatabaseContext,
@@ -37,11 +38,13 @@ export class PluginInstallCountRepository {
let written = 0;
for (const entry of entries) {
const row = existing.get(entry.pluginId);
if (row && row.count === entry.count) continue;
if (row && row.count === entry.count && row.source === entry.source) {
continue;
}
if (row) {
await this.context.drizzle
.update(pluginInstallCounts)
.set({ count: entry.count, updatedAt: now })
.set({ count: entry.count, source: entry.source, updatedAt: now })
.where(
and(
eq(pluginInstallCounts.pluginId, entry.pluginId),
@@ -53,6 +56,7 @@ export class PluginInstallCountRepository {
pluginId: entry.pluginId,
registryId,
count: entry.count,
source: entry.source,
updatedAt: now,
});
}
@@ -91,11 +91,11 @@ export function parseSSHConfig(content: string): SSHConfigHost[] {
const line = rawLine.trim();
if (!line || line.startsWith("#")) continue;
const match = /^(\S+?)(?:\s*=\s*|\s+)(.+)$/.exec(line);
if (!match) continue;
const spaceIdx = line.indexOf(" ");
if (spaceIdx === -1) continue;
const key = match[1].toLowerCase();
const value = match[2];
const key = line.slice(0, spaceIdx).toLowerCase();
const value = line.slice(spaceIdx + 1).trim();
if (key === "host") {
if (current && current.hostname) results.push(current);
+3 -3
View File
@@ -1,5 +1,5 @@
/**
* The registry timer: refreshes the store's download counts and applies
* The registry timer: refreshes the store's install counts and applies
* plugin updates for plugins with auto-update on. An update that asks for a
* new capability is never applied here; admins get an alert and review it in
* the Plugins tab. Nothing is ever installed from here.
@@ -13,8 +13,8 @@ const CHECK_EVERY_MS = 6 * 60 * 60_000;
let timer: NodeJS.Timeout | null = null;
export async function runPluginAutoUpdate(): Promise<void> {
const { syncDownloadCounts } = await import("./download-counts.js");
await syncDownloadCounts();
const { syncInstallCounts } = await import("./install-counts.js");
await syncInstallCounts();
const { isLinkedDesktop, updateAllPlugins } = await import("./manage.js");
if (await isLinkedDesktop()) return;
-103
View File
@@ -1,103 +0,0 @@
/**
* Download counts for the plugin store, copied from the registry's
* stats.json into plugin_install_counts.
*
* A count is how often the plugin's .tmxplug release files were downloaded.
* An instance that updates three times counts three times, and copies bundled
* into Docker images or the desktop app never count. Treat it as a ranking,
* never as a user count.
*/
import { pluginLogger } from "../utils/logger.js";
import {
OFFICIAL_REGISTRY_ID,
fetchRegistryStats,
officialSource,
type RegistrySource,
} from "./registry-index.js";
async function repository() {
const { createCurrentPluginInstallCountRepository } =
await import("../database/repositories/factory.js");
return createCurrentPluginInstallCountRepository();
}
const STALE_MS = 6 * 60 * 60_000;
const FORCED_MS = 60_000;
const WAIT_MS = 3_000;
let lastSyncAt = 0;
let running: Promise<number> | null = null;
/**
* Syncs when the counts are older than the registry timer's interval, or
* older than a minute with force (the Refresh button). Waits a few seconds
* at most so a slow registry never holds up the store; a sync that runs
* longer still finishes in the background.
*/
export async function refreshDownloadCounts(force = false): Promise<void> {
const age = Date.now() - lastSyncAt;
if (!running && age >= (force ? FORCED_MS : STALE_MS)) {
running = syncDownloadCounts().finally(() => {
running = null;
});
}
if (!running) return;
let timeout: NodeJS.Timeout | undefined;
await Promise.race([
running,
new Promise((resolve) => {
timeout = setTimeout(resolve, WAIT_MS);
}),
]);
clearTimeout(timeout);
}
/** Test seam. */
export function resetDownloadCountRefresh(): void {
lastSyncAt = 0;
running = null;
}
/** Returns how many rows changed. Never throws; a failed sync keeps the old numbers. */
export async function syncDownloadCounts(): Promise<number> {
lastSyncAt = Date.now();
let changed = 0;
let sources: RegistrySource[] = [officialSource()];
try {
const { listSources } = await import("./registries.js");
sources = await listSources();
} catch {
// Official only when the registry choices cannot be read.
}
for (const source of sources) {
try {
const stats = await fetchRegistryStats(source);
if (!stats) continue;
const entries = [...stats.plugins].map(([pluginId, downloads]) => ({
pluginId,
count: downloads,
}));
changed += await (await repository()).upsertMany(source.id, entries);
} catch (error) {
pluginLogger.warn(
`Could not sync plugin download counts from ${source.id}: ${
error instanceof Error ? error.message : String(error)
}`,
{ operation: "plugin_registry" },
);
}
}
return changed;
}
export async function readDownloadCounts(
registryId: string = OFFICIAL_REGISTRY_ID,
): Promise<Map<string, number>> {
try {
const rows = await (await repository()).listByRegistry(registryId);
return new Map(rows.map((row) => [row.pluginId, row.count]));
} catch {
return new Map();
}
}
+94
View File
@@ -0,0 +1,94 @@
/**
* Popularity numbers for the plugin store, copied from the registry's
* stats.json into plugin_install_counts.
*
* Two sources, and the store prefers the first:
* - "aggregate-telemetry": instances that reported the plugin enabled in the
* last 7 days through the Usage Statistics plugin. It undercounts by every
* instance that turned the report off or never installed that plugin.
* - "github-releases": downloads of the plugin's .tmxplug release assets.
* This counts downloads, not active installs: an instance that updates
* three times counts three times, and Docker images that bundle the plugin
* count once per build, not once per install.
*
* Treat both as a rough ranking, never as a user count.
*/
import { pluginLogger } from "../utils/logger.js";
import {
OFFICIAL_REGISTRY_ID,
fetchRegistryStats,
officialSource,
type RegistrySource,
} from "./registry-index.js";
export const TELEMETRY_SOURCE = "aggregate-telemetry";
export const DOWNLOADS_SOURCE = "github-releases";
export interface InstallCount {
count: number;
source: string;
}
async function repository() {
const { createCurrentPluginInstallCountRepository } =
await import("../database/repositories/factory.js");
return createCurrentPluginInstallCountRepository();
}
/** Picks the number to show: active installs when known, downloads otherwise. */
export function preferredCount(entry: {
downloads: number;
activeInstalls: number | null;
}): InstallCount {
return entry.activeInstalls !== null && entry.activeInstalls > 0
? { count: entry.activeInstalls, source: TELEMETRY_SOURCE }
: { count: entry.downloads, source: DOWNLOADS_SOURCE };
}
/** Returns how many rows changed. Never throws; a failed sync keeps the old numbers. */
export async function syncInstallCounts(): Promise<number> {
let changed = 0;
let sources: RegistrySource[] = [officialSource()];
try {
const { listSources } = await import("./registries.js");
sources = await listSources();
} catch {
// Official only when the registry choices cannot be read.
}
for (const source of sources) {
try {
const stats = await fetchRegistryStats(source);
if (!stats) continue;
const entries = [...stats.plugins].map(([pluginId, entry]) => ({
pluginId,
...preferredCount(entry),
}));
changed += await (await repository()).upsertMany(source.id, entries);
} catch (error) {
pluginLogger.warn(
`Could not sync plugin install counts from ${source.id}: ${
error instanceof Error ? error.message : String(error)
}`,
{ operation: "plugin_registry" },
);
}
}
return changed;
}
export async function readInstallCounts(
registryId: string = OFFICIAL_REGISTRY_ID,
): Promise<Map<string, InstallCount>> {
try {
const rows = await (await repository()).listByRegistry(registryId);
return new Map(
rows.map((row) => [
row.pluginId,
{ count: row.count, source: row.source },
]),
);
} catch {
return new Map();
}
}
+8 -9
View File
@@ -56,10 +56,7 @@ import {
} from "./registries.js";
import { invalidatePluginPermissionCache } from "./permissions.js";
import { moveWithRetry } from "./fs-retry.js";
import {
readDownloadCounts,
refreshDownloadCounts,
} from "./download-counts.js";
import { readInstallCounts } from "./install-counts.js";
import { readArtifactManifest, sameCapabilities } from "./artifact-manifest.js";
import {
parseManifest,
@@ -276,8 +273,9 @@ export interface RegistryListing {
pinnedVersion: string | null;
autoUpdate: boolean;
bundled: boolean;
/** See download-counts.ts for what this number does and does not mean. */
downloads: number | null;
/** See install-counts.ts for what this number does and does not mean. */
installCount: number | null;
installCountSource: string | null;
}>;
}
@@ -317,14 +315,13 @@ export async function listRegistry(
const records = new Map(
(await createCurrentPluginRepository().listAll()).map((r) => [r.id, r]),
);
await refreshDownloadCounts(options.force);
const counts = new Map(
await Promise.all(
sources
.filter((source) => source.tier !== "custom")
.map(
async (source) =>
[source.id, await readDownloadCounts(source.id)] as const,
[source.id, await readInstallCounts(source.id)] as const,
),
),
);
@@ -442,7 +439,9 @@ export async function listRegistry(
pinnedVersion: record?.pinnedVersion ?? null,
autoUpdate: Boolean(record?.autoUpdate),
bundled: shipped.has(plugin.id),
downloads: counts.get(source.id)?.get(plugin.id) ?? null,
installCount: counts.get(source.id)?.get(plugin.id)?.count ?? null,
installCountSource:
counts.get(source.id)?.get(plugin.id)?.source ?? null,
};
}),
};
+10 -4
View File
@@ -356,8 +356,7 @@ export async function fetchRegistryIndex(
}
export interface RegistryStats {
/** Downloads per plugin id. */
plugins: Map<string, number>;
plugins: Map<string, { downloads: number; activeInstalls: number | null }>;
}
/** stats.json sits next to index.json and is rebuilt daily by the registry. */
@@ -381,14 +380,21 @@ function asCount(value: unknown): number | null {
}
export function parseRegistryStats(raw: unknown): RegistryStats {
const plugins = new Map<string, number>();
const plugins = new Map<
string,
{ downloads: number; activeInstalls: number | null }
>();
const entries = (raw as { plugins?: unknown } | null)?.plugins;
if (!entries || typeof entries !== "object" || Array.isArray(entries)) {
return { plugins };
}
for (const [id, value] of Object.entries(entries)) {
if (!ID_PATTERN.test(id) || !value || typeof value !== "object") continue;
plugins.set(id, asCount((value as Record<string, unknown>).downloads) ?? 0);
const entry = value as Record<string, unknown>;
plugins.set(id, {
downloads: asCount(entry.downloads) ?? 0,
activeInstalls: asCount(entry.activeInstalls),
});
}
return { plugins };
}
@@ -92,13 +92,6 @@ Host alias-only
expect(result).toHaveLength(0);
});
it("accepts tabs and = between keywords and values", () => {
const config = "Host\tweb\n\tHostName=10.0.0.5\n\tUser = deploy\n";
expect(parseSSHConfig(config)).toEqual([
{ name: "web", hostname: "10.0.0.5", user: "deploy" },
]);
});
it("defaults port to undefined when not specified", () => {
const config = `
Host server
@@ -61,7 +61,6 @@ function setup() {
getC2SRelayHeaders: headers,
getWebSocketOptions: (_url: string, options: unknown) => options,
attachC2SAuth: vi.fn(),
keepC2SSocketAlive: vi.fn(),
logToFile: vi.fn(),
emitC2STunnelStatuses: vi.fn(),
checkLocalPortAvailable: async () => ({ available: true }),
@@ -178,32 +177,3 @@ describe("client tunnel runtime authentication", () => {
});
});
});
describe("client tunnel socket keepalive", () => {
it("pings an open socket until it closes", () => {
vi.useFakeTimers();
try {
const context = vm.createContext({
setInterval,
clearInterval,
WebSocket: { OPEN: 1 },
});
vm.runInContext(
section("function keepC2SSocketAlive(", "// C2S (client-to-server)"),
context,
);
const ws = Object.assign(new EventEmitter(), {
readyState: 1,
ping: vi.fn(),
});
context.keepC2SSocketAlive(ws);
vi.advanceTimersByTime(50_000);
expect(ws.ping).toHaveBeenCalledTimes(2);
ws.emit("close");
vi.advanceTimersByTime(50_000);
expect(ws.ping).toHaveBeenCalledTimes(2);
} finally {
vi.useRealTimers();
}
});
});
@@ -1,15 +1,25 @@
import { beforeEach, describe, expect, it, vi } from "vitest";
const state = vi.hoisted(() => ({
stats: null as null | { plugins: Map<string, number> },
stats: null as null | {
plugins: Map<string, { downloads: number; activeInstalls: number | null }>;
},
fail: false,
sources: [{ id: "official", tier: "official" }] as Array<{
id: string;
tier: string;
}>,
statsBySource: {} as Record<string, { plugins: Map<string, number> } | null>,
statsBySource: {} as Record<
string,
{
plugins: Map<
string,
{ downloads: number; activeInstalls: number | null }
>;
} | null
>,
upserted: [] as Array<{ registryId: string; entries: unknown[] }>,
rows: [] as Array<{ pluginId: string; count: number }>,
rows: [] as Array<{ pluginId: string; count: number; source: string }>,
}));
vi.mock("../../plugins/registry-index.js", () => ({
@@ -36,11 +46,12 @@ vi.mock("../../database/repositories/factory.js", () => ({
}));
const {
readDownloadCounts,
refreshDownloadCounts,
resetDownloadCountRefresh,
syncDownloadCounts,
} = await import("../../plugins/download-counts.js");
DOWNLOADS_SOURCE,
TELEMETRY_SOURCE,
preferredCount,
readInstallCounts,
syncInstallCounts,
} = await import("../../plugins/install-counts.js");
beforeEach(() => {
state.stats = null;
@@ -49,62 +60,9 @@ beforeEach(() => {
state.statsBySource = {};
state.upserted = [];
state.rows = [];
resetDownloadCountRefresh();
});
describe("refreshDownloadCounts", () => {
const docker = () => ({ plugins: new Map([["docker", 5]]) });
it("syncs on the first look and not again while fresh", async () => {
state.stats = docker();
await refreshDownloadCounts();
await refreshDownloadCounts();
expect(state.upserted).toHaveLength(1);
});
it("does not sync again right away even when forced", async () => {
state.stats = docker();
await refreshDownloadCounts();
await refreshDownloadCounts(true);
expect(state.upserted).toHaveLength(1);
});
it("syncs again when forced after a minute", async () => {
vi.useFakeTimers({ toFake: ["Date"] });
try {
state.stats = docker();
await refreshDownloadCounts();
vi.setSystemTime(Date.now() + 61_000);
await refreshDownloadCounts();
expect(state.upserted).toHaveLength(1);
await refreshDownloadCounts(true);
expect(state.upserted).toHaveLength(2);
} finally {
vi.useRealTimers();
}
});
});
describe("syncDownloadCounts", () => {
it("writes one row per plugin", async () => {
state.stats = {
plugins: new Map([
["docker", 50],
["tunnels", 8],
]),
};
expect(await syncDownloadCounts()).toBe(2);
expect(state.upserted).toEqual([
{
registryId: "official",
entries: [
{ pluginId: "docker", count: 50 },
{ pluginId: "tunnels", count: 8 },
],
},
]);
});
describe("syncInstallCounts with more registries", () => {
it("stores counts per registry and skips custom ones", async () => {
state.sources = [
{ id: "official", tier: "official" },
@@ -112,33 +70,78 @@ describe("syncDownloadCounts", () => {
{ id: "mine", tier: "custom" },
];
state.statsBySource = {
official: { plugins: new Map([["docker", 5]]) },
community: { plugins: new Map([["neat", 3]]) },
official: {
plugins: new Map([["docker", { downloads: 5, activeInstalls: null }]]),
},
community: {
plugins: new Map([["neat", { downloads: 3, activeInstalls: 2 }]]),
},
mine: null,
};
expect(await syncDownloadCounts()).toBe(2);
expect(await syncInstallCounts()).toBe(2);
expect(state.upserted.map((entry) => entry.registryId)).toEqual([
"official",
"community",
]);
});
});
describe("preferredCount", () => {
it("prefers active installs and falls back to downloads", () => {
expect(preferredCount({ downloads: 90, activeInstalls: 12 })).toEqual({
count: 12,
source: TELEMETRY_SOURCE,
});
expect(preferredCount({ downloads: 90, activeInstalls: null })).toEqual({
count: 90,
source: DOWNLOADS_SOURCE,
});
expect(preferredCount({ downloads: 90, activeInstalls: 0 })).toEqual({
count: 90,
source: DOWNLOADS_SOURCE,
});
});
});
describe("syncInstallCounts", () => {
it("writes one row per plugin with its preferred source", async () => {
state.stats = {
plugins: new Map([
["docker", { downloads: 50, activeInstalls: 20 }],
["tunnels", { downloads: 8, activeInstalls: null }],
]),
};
expect(await syncInstallCounts()).toBe(2);
expect(state.upserted).toEqual([
{
registryId: "official",
entries: [
{ pluginId: "docker", count: 20, source: TELEMETRY_SOURCE },
{ pluginId: "tunnels", count: 8, source: DOWNLOADS_SOURCE },
],
},
]);
});
it("keeps the old numbers when the registry is unreachable", async () => {
state.fail = true;
expect(await syncDownloadCounts()).toBe(0);
expect(await syncInstallCounts()).toBe(0);
expect(state.upserted).toEqual([]);
});
it("does nothing for a registry with no stats file", async () => {
expect(await syncDownloadCounts()).toBe(0);
expect(await syncInstallCounts()).toBe(0);
expect(state.upserted).toEqual([]);
});
});
describe("readDownloadCounts", () => {
describe("readInstallCounts", () => {
it("maps the stored rows by plugin id", async () => {
state.rows = [{ pluginId: "docker", count: 20 }];
const counts = await readDownloadCounts();
expect(counts.get("docker")).toBe(20);
state.rows = [{ pluginId: "docker", count: 20, source: TELEMETRY_SOURCE }];
const counts = await readInstallCounts();
expect(counts.get("docker")).toEqual({
count: 20,
source: TELEMETRY_SOURCE,
});
});
});
@@ -512,16 +512,16 @@ describe("registry stats", () => {
it("keeps valid counts and drops the rest", () => {
const stats = parseRegistryStats({
plugins: {
docker: { downloads: 120 },
docker: { downloads: 120, activeInstalls: 40 },
tunnels: { downloads: 7 },
"../bad": { downloads: 1 },
broken: { downloads: -3 },
broken: { downloads: -3, activeInstalls: "many" },
},
});
expect(Object.fromEntries(stats.plugins)).toEqual({
docker: 120,
tunnels: 7,
broken: 0,
docker: { downloads: 120, activeInstalls: 40 },
tunnels: { downloads: 7, activeInstalls: null },
broken: { downloads: 0, activeInstalls: null },
});
});
@@ -530,6 +530,9 @@ describe("registry stats", () => {
response(JSON.stringify({ plugins: { docker: { downloads: 3 } } })),
);
const stats = await fetchRegistryStats();
expect(stats?.plugins.get("docker")).toBe(3);
expect(stats?.plugins.get("docker")).toEqual({
downloads: 3,
activeInstalls: null,
});
});
});
+3 -2
View File
@@ -321,8 +321,9 @@ export interface RegistryPluginEntry {
pinnedVersion: string | null;
autoUpdate: boolean;
bundled: boolean;
/** How often the release files were downloaded, from the registry. */
downloads: number | null;
/** Active installs when known, release downloads otherwise. */
installCount: number | null;
installCountSource: string | null;
}
export interface RegistryListingSource {
+1 -3
View File
@@ -1101,9 +1101,7 @@ export function Auth({ onLogin }: AuthProps) {
port: embeddedServerFailure.port,
})
: t("messages.embeddedServerPortInUseUnknownPort")
: embeddedServerFailure.reason === "old-database"
? t("messages.embeddedServerOldDatabase")
: t("messages.embeddedServerCrashed");
: t("messages.embeddedServerCrashed");
return (
<div className="fixed inset-0 flex items-center justify-center bg-background p-6">
+4 -9
View File
@@ -1,7 +1,6 @@
import { isElectron } from "@/lib/electron";
export type EmbeddedServerFailureReason =
"port-in-use" | "old-database" | "crashed";
export type EmbeddedServerFailureReason = "port-in-use" | "crashed";
export interface EmbeddedServerFailure {
reason: EmbeddedServerFailureReason;
@@ -42,13 +41,9 @@ export async function getEmbeddedServerFailure(): Promise<EmbeddedServerFailure
// An unrecognized reason from a newer/older main process still means the
// backend is down, which is the part the caller acts on -- so it is
// reported as the generic crash rather than dropped.
if (failure.reason === "port-in-use") {
return { reason: "port-in-use", port: failure.port ?? null };
}
if (failure.reason === "old-database") {
return { reason: "old-database", port: null };
}
return { reason: "crashed", port: null };
return failure.reason === "port-in-use"
? { reason: "port-in-use", port: failure.port ?? null }
: { reason: "crashed", port: null };
} catch {
// No status channel, or the main process is tearing down. Neither is
// evidence that the backend failed, so keep waiting.
+4 -5
View File
@@ -1127,7 +1127,6 @@
"databaseConnectionFailed": "Failed to connect to the database server",
"embeddedServerPortInUse": "Port {{port}} is already in use by another program. This is usually a Termix Docker container or a leftover Termix process from a previous session. Close it, then restart Termix.",
"embeddedServerPortInUseUnknownPort": "One of the ports Termix needs is already in use by another program. Close whatever is using it, then restart Termix.",
"embeddedServerOldDatabase": "Your local data is from Termix 2.8 or older and has to pass through 2.9 first. Install Termix 2.9.1, open it once so it can move your data, then update to this version again.",
"embeddedServerCrashed": "The local server stopped unexpectedly. Restart Termix, and check the desktop log if this keeps happening.",
"resetCodeSent": "Reset code sent to Docker logs",
"codeVerified": "Code verified successfully",
@@ -1934,7 +1933,7 @@
"version": "Version",
"status": "Status",
"category": "Category",
"downloads": "Downloads"
"installs": "Installs"
},
"risk": {
"critical": "Critical",
@@ -2086,9 +2085,6 @@
"noneInstalled": "No plugins installed yet. Browse to add some.",
"nothingHere": "Nothing here.",
"nothingHereHint": "Try another category or search.",
"showInstalled": "Show installed",
"allInstalled": "Everything here is already installed.",
"allInstalledHint": "Turn on Show installed to see them.",
"communitySubmit": "How to submit",
"registries": {
"intro": "Registries are lists of plugins you can install. The official one is always on. You can turn on the community registry or add your own.",
@@ -2149,8 +2145,11 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS is set, so installing from a file stays blocked."
},
"count": {
"active_one": "{{formatted}} active install",
"active_other": "{{formatted}} active installs",
"downloads_one": "{{formatted}} download",
"downloads_other": "{{formatted}} downloads",
"activeHint": "Instances that reported this plugin turned on in the last week. Instances with usage statistics turned off are not counted.",
"downloadsHint": "How many times a release was downloaded. This is not the number of installs."
},
"unverified": "Unverified",
+8 -80
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Gekoppel aan {{server}}",
"pluginsDocsLink": "Lees oor elkeen"
},
"desktopUpdates": {
"title": "Buro-toepassing",
"mode": "Opdaterings",
"modeHint": "Hoe hierdie toepassing nuwe weergawes kry.",
"manualModeHint": "Hierdie kopie kan nie self opdateer nie, so Termix vertel jou net wanneer 'n nuwe weergas beskikbaar is.",
"modeAutomatic": "Outomaties",
"modePrompt": "Vra eers",
"modeNever": "Nooit",
"automaticBody": "Laai nuwe weergawes in die agtergrond af en installeer hulle wanneer jy herbegin.",
"promptBody": "Vertel my wanneer 'n nuwe weergawe beskikbaar is en laat my kies wanneer om dit af te laai.",
"neverBody": "Soek nie na opdaterings nie. Jy kan steeds handmatig in Instellings soek.",
"onboardingTitle": "Toepassing-opdaterings",
"onboardingBody": "Die buro-toepassing kan nou self opdateer. Kies hoe jy wil hê nuwe weergawes moet aankom. Jy kan dit later in Instellings, Opdaterings verander.",
"onboardingManual": "Hierdie kopie van die toepassing is op 'n manier geïnstalleer wat nie self kan opdateer nie, so Termix sal jou vertel wanneer 'n nuwe weergawe beskikbaar is met 'n skakel om dit af te laai.",
"status": "Weergawe {{version}}",
"statusIdle": "Nog nie gecontroleer nie",
"statusChecking": "Soek na opdaterings",
"statusAvailable": "Weergawe {{version}} is beskikbaar",
"statusDownloading": "Laai {{version}} af ({{progress}}%)",
"statusReady": "Weergawe {{version}} is gereed. Herbegin om dit te installeer.",
"statusUpToDate": "Jy het die nuutste weergawe",
"statusError": "Kon nie na opdaterings soek nie. Probeer later weer.",
"checkNow": "Soek nou",
"download": "Laai af",
"restart": "Herbegin nou",
"later": "Later",
"available": "Termix {{version}} is beskikbaar",
"manualHint": "Laai dit af van die vrystellingsblad en installeer dit oor hierdie een.",
"ready": "Termix {{version}} is gereed om te installeer",
"readyHint": "Dit word die volgende keer wat Termix herbegin geïnstalleer."
},
"nav": {
"home": "Tuis",
"terminal": "Terminaal",
@@ -1127,7 +1096,6 @@
"databaseConnectionFailed": "Kon nie met die databasisbediener verbind nie",
"embeddedServerPortInUse": "Poort {{port}} word reeds deur 'n ander program gebruik. Dit is gewoonlik 'n Termix Docker-houer of 'n oorblywende Termix-proses van 'n vorige sessie. Maak dit toe en herbegin dan Termix.",
"embeddedServerPortInUseUnknownPort": "Een van die poorte wat Termix benodig, word reeds deur 'n ander program gebruik. Maak wat dit gebruik toe en herbegin dan Termix.",
"embeddedServerOldDatabase": "U plaaslike data is van Termix 2.8 of ouer en moet eers deur 2.9 gaan. Installeer Termix 2.9.1, open dit een keer sodat dit u data kan verskuif, en dateer dan weer na hierdie weergawe op.",
"embeddedServerCrashed": "Die plaaslike bediener het onverwags gestop. Herbegin Termix en kyk na die skryfstoeljoernaal as dit voortduur.",
"resetCodeSent": "Herstelkode na Docker-logs gestuur",
"codeVerified": "Kode suksesvol verifieer",
@@ -1900,23 +1868,19 @@
"tabs": {
"installed": "Geïnstalleer",
"browse": "Blaaie",
"updates": "Opdaterings",
"registries": "Register"
"updates": "Opdaterings"
},
"status": {
"summary": "{{installed}} geïnstalleer, {{running}} aktief",
"running": "Aktief",
"disabled": "Afgeskakel",
"failed": "Onverwags gestop",
"blocked": "Wag op 'n ander plugin",
"server": "Loop op jou bediener"
"blocked": "Wag op 'n ander plugin"
},
"groups": {
"running": "Aktief",
"notRunning": "Nie aktief nie",
"onServer": "Op jou bediener"
"notRunning": "Nie aktief nie"
},
"runsOnServerHint": "Hierdie invoegtoepassing loop slegs op jou bediener, so dit bly af in die buro-toepassing. Dit werk steeds daar.",
"sort": {
"popular": "Mees gewild",
"name": "Naam",
@@ -1934,7 +1898,7 @@
"version": "Weergawe",
"status": "Status",
"category": "Kategorie",
"downloads": "Aflaai"
"installs": "Installasies"
},
"risk": {
"critical": "Krities",
@@ -2086,47 +2050,8 @@
"noneInstalled": "Nog geen plugins geïnstalleer nie. Blaai om sommige by te voeg.",
"nothingHere": "Niets hier nie.",
"nothingHereHint": "Probeer 'n ander kategorie of soek.",
"showInstalled": "Wys geïnstalleerdes",
"allInstalled": "Alles hier is reeds geïnstalleer.",
"allInstalledHint": "Skakel Wys geïnstalleerdes aan om hulle te sien.",
"communitySoon": "Gemeenskapsplugins kom in 'n latere opdatering. Plugin-skrywers kan reeds hulle plugins by die gemeenskapsregister indien.",
"communitySubmit": "Hoe om in te dien",
"registries": {
"intro": "Register is lys van invoegtoepassings wat jy kan installeer. Die amptelike een is altyd aan. Jy kan die gemeenskapsregister aanskakel of jou eie byvoeg.",
"hostYourOwn": "Herberg jou eie register",
"add": "Voeg register by",
"addTitle": "Voeg 'n register by",
"addHint": "Plak die skakel na die register se index.json. Termix lees dit en wys die sleutel waarmee dit invoegtoepassings onderteken. Voeg slegs register by van mense wat jy vertrou.",
"urlLabel": "Index-URL",
"check": "Kontroleer",
"addConfirm": "Vertrou en voeg by",
"added": "Het {{name}} bygevoeg",
"customWarning": "Invoegtoepassings uit hierdie register word nie deur die Termix-span hersien nie. Slegs die eienaar van die register besluit wat daarin is. Elke aflaai moet onderteken word deur die sleutel hierbo.",
"keyFingerprint": "Sleutel {{keyId}}",
"pluginCount_one": "{{count}} invoegtoepassing",
"pluginCount_other": "{{count}} invoegtoepassings",
"officialName": "Amptelik",
"communityName": "Gemeenskap",
"alwaysOn": "Altyd aan",
"communityHint": "Invoegtoepassings gemaak deur ander mense. Elke weergawe word deur 'n persoon en outomatiese kontroles nagegaan voordat dit gelys word.",
"communityConfirmTitle": "Skakel gemeenskapsinvoegtoepassings aan?",
"communityConfirmBody": "Gemeenskapsinvoegtoepassings word deur ander mense gemaak, nie die Termix-span nie. Elke weergawe word deur 'n persoon en outomatiese kontroles nagegaan voordat dit gelys word, maar foute kan steeds deurskiet. Installeer slegs invoegtoepassings wat jy vertrou en kyk wat elkeen vra.",
"communityConfirm": "Skakel aan",
"communityBadge": "Gemeenskap",
"communityBadgeHint": "Van die gemeenskapsregister. Gemaak deur ander mense en hersien voordat dit gelys is.",
"customBadge": "Aangepas",
"customBadgeHint": "Van {{name}}, 'n register wat 'n admin bygevoeg het. Nie deur die Termix-span hersien nie.",
"remove": "Verwyder",
"removeTitle": "Verwyder {{name}}?",
"removeBody": "Sy plugins sal nie meer in Blaaie verskyn nie. Jy kan dit later weer byvoeg.",
"removed": "{{name}} verwyder",
"inUse": "Installeer eers die plugins van {{name}} uit: {{list}}",
"changeFailed": "Kon nie die register verander nie: {{error}}",
"loadFailed": "Kon nie registers laai nie: {{error}}",
"unreachable": "Kon nie dit lees nie: {{error}}",
"filter": "Register",
"allRegistries": "Alle registers",
"browseHint": "Skakel gemeenskapsplugins aan of voeg jou eie register by in die Registers-oortjie."
},
"upToDate": "Alles is op datum.",
"lastChecked": "Laas gecheck {{time}}",
"updatesReady_one": "{{count}} opdatering gereed.",
@@ -2149,8 +2074,11 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS is gestel, dus bly installering vanaf 'n lêer geblokkeer."
},
"count": {
"active_one": "{{formatted}} aktiewe installering",
"active_other": "{{formatted}} aktiewe installasies",
"downloads_one": "{{formatted}} aflaai",
"downloads_other": "{{formatted}} afdlae",
"activeHint": "Instansies wat die afgelope week gerapporteer het dat hierdie plugin aangeskakel is. Instansies met gebruiksstatistieke afgeskakel word nie getel nie.",
"downloadsHint": "Hoeveel keer 'n uitgawe afgelaai is. Dit is nie die aantal installasies nie."
},
"unverified": "Ongeverifieer",
+12 -84
View File
@@ -233,37 +233,6 @@
"desktopLinked": "مرتبطة بـ {{server}}",
"pluginsDocsLink": "اقرأ عن كل منها"
},
"desktopUpdates": {
"title": "تطبيق سطح المكتب",
"mode": "التحديثات",
"modeHint": "كيف يحصل هذا التطبيق على الإصدارات الجديدة.",
"manualModeHint": "لا يمكن لهذا النسخة تحديث نفسها، لذا يخبرك Termix فقط عند إصدار نسخة جديدة.",
"modeAutomatic": "تلقائي",
"modePrompt": "اسأل أولاً",
"modeNever": "أبداً",
"automaticBody": "تحميل الإصدارات الجديدة في الخلفية وتثبيتها عند إعادة التشغيل.",
"promptBody": "أخبرني عند إصدار نسخة جديدة واترك لي حرية اختيار وقت التحميل.",
"neverBody": "لا تتحقق من وجود تحديثات. يمكنك دائماً التحقق يدوياً من الإعدادات.",
"onboardingTitle": "تحديثات التطبيق",
"onboardingBody": "يمكن لتطبيق سطح المكتب الآن تحديث نفسه. اختر كيف تريد وصول الإصدارات الجديدة. يمكنك تغيير ذلك لاحقاً في الإعدادات، التحديثات.",
"onboardingManual": "تم تثبيت هذه النسخة من التطبيق بطريقة لا تسمح لها بالتحديث التلقائي، لذا سيخبرك Termix عند إصدار نسخة جديدة مع رابط لتحميلها.",
"status": "الإصدار {{version}}",
"statusIdle": "لم يتم التحقق بعد",
"statusChecking": "جارٍ التحقق من وجود تحديثات",
"statusAvailable": "الإصدار {{version}} متاح",
"statusDownloading": "جارٍ تحميل {{version}} ({{progress}}%)",
"statusReady": "الإصدار {{version}} جاهز. أعد التشغيل لتثبيته.",
"statusUpToDate": "لديك أحدث إصدار",
"statusError": "تعذر التحقق من وجود تحديثات. حاول مرة أخرى لاحقاً.",
"checkNow": "تحقق الآن",
"download": "تحميل",
"restart": "إعادة التشغيل الآن",
"later": "لاحقاً",
"available": "Termix {{version}} متاح",
"manualHint": "قم بتحميله من صفحة الإصدار وثبته فوق هذا الإصدار.",
"ready": "Termix {{version}} جاهز للتثبيت",
"readyHint": "سيتم تثبيته في المرة القادمة التي يعاد فيها تشغيل Termix."
},
"nav": {
"home": "الرئيسية",
"terminal": "الطرفية",
@@ -1183,7 +1152,6 @@
"databaseConnectionFailed": "فشل في الاتصال بخادم قاعدة البيانات",
"embeddedServerPortInUse": "المنفذ {{port}} مستخدم بالفعل بواسطة برنامج آخر. عادةً ما يكون هذا حاوية Docker لـ Termix أو عملية متبقية من Termix من جلسة سابقة. أغلقها، ثم أعد تشغيل Termix.",
"embeddedServerPortInUseUnknownPort": "أحد المنافذ التي يحتاجها Termix مستخدم بالفعل بواسطة برنامج آخر. أغلق ما يستخدمه، ثم أعد تشغيل Termix.",
"embeddedServerOldDatabase": "بياناتك المحلية من إصدار Termix 2.8 أو أقدم، ويجب أولاً تحديثها عبر الإصدار 2.9. قم بتثبيت Termix 2.9.1، وافتحه مرة واحدة للسماح بنقل بياناتك، ثم قم بالتحديث إلى هذا الإصدار مرة أخرى.",
"embeddedServerCrashed": "توقف الخادم المحلي بشكل غير متوقع. أعد تشغيل Termix، وتحقق من سجل سطح المكتب إذا استمر هذا الأمر.",
"resetCodeSent": "تم إرسال رمز إعادة التعيين إلى سجلات Docker",
"codeVerified": "تم التحقق من الرمز بنجاح",
@@ -1996,23 +1964,19 @@
"tabs": {
"installed": "مثبتة",
"browse": "تصفح",
"updates": "التحديثات",
"registries": "السجلات"
"updates": "التحديثات"
},
"status": {
"summary": "{{installed}} مثبتة، {{running}} تعمل",
"running": "تعمل",
"disabled": "معطلة",
"failed": "توقفت بشكل غير متوقع",
"blocked": "في انتظار إضافة أخرى",
"server": "يعمل على خادمك"
"blocked": "في انتظار إضافة أخرى"
},
"groups": {
"running": "تعمل",
"notRunning": "غير تعمل",
"onServer": "على خادمك"
"notRunning": "غير تعمل"
},
"runsOnServerHint": "هذا الإضافة تعمل فقط على خادمك، لذا تبقى معطلة في تطبيق سطح المكتب. لكنها لا تزال تعمل هناك.",
"sort": {
"popular": "الأكثر شعبية",
"name": "الاسم",
@@ -2030,7 +1994,7 @@
"version": "الإصدار",
"status": "الحالة",
"category": "الفئة",
"downloads": "التحميلات"
"installs": "التثبيتات"
},
"risk": {
"critical": "حرج",
@@ -2246,51 +2210,8 @@
"noneInstalled": "لم يتم تثبيت أي إضافات بعد. تصفح لإضافة بعض.",
"nothingHere": "لا شيء هنا.",
"nothingHereHint": "جرب فئة أخرى أو البحث.",
"showInstalled": "عرض المثبتة",
"allInstalled": "كل شيء هنا مثبت بالفعل.",
"allInstalledHint": "قم بتشغيل عرض المثبتة لرؤيتها.",
"communitySoon": "ستأتي إضافات المجتمع في تحديث لاحق. يمكن لمطوري الإضافات بالفعل إرسال إضافاتهم إلى سجل المجتمع.",
"communitySubmit": "كيفية التقديم",
"registries": {
"intro": "السجلات هي قوائم من الإضافات التي يمكنك تثبيتها. الرسمية دائماً مفعّلة. يمكنك تفعيل سجل المجتمع أو إضافة سجل خاص بك.",
"hostYourOwn": "استضف سجلاً خاصاً بك",
"add": "إضافة سجل",
"addTitle": "إضافة سجل",
"addHint": "الصق الرابط إلى ملف index.json الخاص بالسجل. يقرأ Termix هذا الملف ويعرض المفتاح الذي يوقع به الإضافات. أضف فقط السجلات من أشخاص تثق بهم.",
"urlLabel": "رابط الفهرس",
"check": "تحقق",
"addConfirm": "الثقة والإضافة",
"added": "تمت إضافة {{name}}",
"customWarning": "الإضافات من هذا السجل لم تتم مراجعتها من قبل فريق Termix. فقط مالك السجل يقرر ما يحتويه. يجب توقيع كل تحميل بالمفتاح أعلاه.",
"keyFingerprint": "المفتاح {{keyId}}",
"pluginCount_zero": "لا توجد إضافات",
"pluginCount_one": "إضافة واحدة",
"pluginCount_two": "إضافتان",
"pluginCount_few": "{{count}} إضافات",
"pluginCount_many": "{{count}} إضافة",
"pluginCount_other": "{{count}} إضافات",
"officialName": "رسمي",
"communityName": "المجتمع",
"alwaysOn": "دائماً مفعّل",
"communityHint": "إضافات من صنع أشخاص آخرين. يتم التحقق من كل إصدار بواسطة شخص وبفحوصات آلية قبل إدراجها.",
"communityConfirmTitle": "تفعيل إضافات المجتمع؟",
"communityConfirmBody": "إضافات المجتمع من صنع أشخاص آخرين، وليس فريق Termix. يتم التحقق من كل إصدار بواسطة شخص وبفحوصات آلية قبل إدراجها، لكن قد تمر أخطاء. ثبّت فقط الإضافات التي تثق بها وتحقق مما تطلبه كل واحدة.",
"communityConfirm": "تفعيل",
"communityBadge": "المجتمع",
"communityBadgeHint": "من سجل المجتمع. من صنع أشخاص آخرين وتمت مراجعته قبل إدراجه.",
"customBadge": "مخصص",
"customBadgeHint": "من {{name}}، سجل أضافه مسؤول. لم تتم مراجعته من قبل فريق Termix.",
"remove": "إزالة",
"removeTitle": "إزالة {{name}}؟",
"removeBody": "لن تظهر إضافاته في \"تصفح\" بعد الآن. يمكنك إضافتها مرة أخرى لاحقًا.",
"removed": "تمت إزالة {{name}}",
"inUse": "قم بإلغاء تثبيت الإضافات من {{name}} أولاً: {{list}}",
"changeFailed": "تعذر تغيير السجل: {{error}}",
"loadFailed": "تعذر تحميل السجلات: {{error}}",
"unreachable": "تعذر قراءته: {{error}}",
"filter": "السجل",
"allRegistries": "جميع السجلات",
"browseHint": "فعّل الإضافات المجتمعية أو أضف سجلك الخاص في علامة التبويب \"السجلات\"."
},
"upToDate": "كل شيء محدث.",
"lastChecked": "آخر فحص {{time}}",
"updatesReady_zero": "لا توجد تحديثات جاهزة.",
@@ -2321,12 +2242,19 @@
"signedOnly": "تم تعيين TERMIX_REQUIRE_SIGNED_PLUGINS، لذا يبقى التثبيت من ملف محظورًا."
},
"count": {
"active_zero": "لا توجد عمليات تثبيت نشطة.",
"active_one": "{{formatted}} عملية تثبيت نشطة.",
"active_two": "{{formatted}} عمليتي تثبيت نشطتان.",
"active_few": "{{formatted}} عمليات تثبيت نشطة.",
"active_many": "{{formatted}} عملية تثبيت نشطة.",
"active_other": "{{formatted}} عملية تثبيت نشطة.",
"downloads_zero": "لا توجد تنزيلات.",
"downloads_one": "{{formatted}} تنزيل.",
"downloads_two": "{{formatted}} تنزيلان.",
"downloads_few": "{{formatted}} تنزيلات.",
"downloads_many": "{{formatted}} تنزيلًا.",
"downloads_other": "{{formatted}} تنزيل.",
"activeHint": "الأمثلة التي أبلغت عن تشغيل هذا المكوّن الإضافي خلال الأسبوع الماضي. لا تُحسب الأمثلة التي تم إيقاف إحصائيات الاستخدام فيها.",
"downloadsHint": "عدد المرات التي تم فيها تنزيل الإصدار. هذا ليس عدد التثبيتات."
},
"unverified": "غير موثّق",
+8 -80
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Връзка с {{server}}",
"pluginsDocsLink": "Прочетете за всеки от тях"
},
"desktopUpdates": {
"title": "Десктоп приложение",
"mode": "Обновления",
"modeHint": "Как това приложение получава нови версии.",
"manualModeHint": "Тази копия не може да се обновява сама, така че Termix само ви информира, когато има нова версия.",
"modeAutomatic": "Автоматично",
"modePrompt": "Питай първо",
"modeNever": "Никога",
"automaticBody": "Изтегля нови версии в фонов режим и ги инсталира при рестартиране.",
"promptBody": "Информирай ме, когато има нова версия, и позволи ми да изберя кога да я изтегля.",
"neverBody": "Не проверявай за обновления. Все още можете да проверите ръчно в Настройки.",
"onboardingTitle": "Обновления на приложението",
"onboardingBody": "Десктоп приложението вече може да се обновява само. Изберете как искате да пристигат новите версии. Можете да промените това по-късно в Настройки, Обновления.",
"onboardingManual": "Тази копия на приложението е инсталирана по начин, който не позволява самообновяване, така че Termix ще ви информира, когато има нова версия, с връзка за изтегляне.",
"status": "Версия {{version}}",
"statusIdle": "Все още не е проверено",
"statusChecking": "Проверка за обновления",
"statusAvailable": "Версия {{version}} е налична",
"statusDownloading": "Изтегляне на {{version}} ({{progress}}%)",
"statusReady": "Версия {{version}} е готова. Рестартирайте, за да я инсталирате.",
"statusUpToDate": "Имате най-новата версия",
"statusError": "Не може да се провери за обновления. Опитайте отново по-късно.",
"checkNow": "Провери сега",
"download": "Изтегли",
"restart": "Рестартирай сега",
"later": "По-късно",
"available": "Termix {{version}} е наличен",
"manualHint": "Изтеглете го от страницата с издания и го инсталирайте върху текущата версия.",
"ready": "Termix {{version}} е готов за инсталация",
"readyHint": "Ще се инсталира следващия път, когато Termix се рестартира."
},
"nav": {
"home": "Начало",
"terminal": "Терминал",
@@ -1127,7 +1096,6 @@
"databaseConnectionFailed": "Неуспешно свързване със сървъра на базата данни",
"embeddedServerPortInUse": "Порт {{port}} вече се използва от друга програма. Обикновено това е Termix Docker контейнер или остатъчен Termix процес от предишна сесия. Затворете го и рестартирайте Termix.",
"embeddedServerPortInUseUnknownPort": "Един от портовете, нужни на Termix, вече се използва от друга програма. Затворете програмата, която го използва, и рестартирайте Termix.",
"embeddedServerOldDatabase": "Вашите локални данни са от Termix 2.8 или по-стара версия и трябва първо да преминат през версия 2.9. Инсталирайте Termix 2.9.1, отворете го веднъж, за да може да прехвърли данните ви, след което актуализирайте отново до тази версия.",
"embeddedServerCrashed": "Локалният сървър спря неочаквано. Рестартирайте Termix и проверете дневника на работния плот, ако това продължава да се случва.",
"resetCodeSent": "Кодът за нулиране е изпратен в Docker логовете",
"codeVerified": "Кодът е проверен успешно",
@@ -1900,23 +1868,19 @@
"tabs": {
"installed": "Инсталирани",
"browse": "Разглеждане",
"updates": "Актуализации",
"registries": "Регистри"
"updates": "Актуализации"
},
"status": {
"summary": "{{installed}} инсталирани, {{running}} работещи",
"running": "Работеща",
"disabled": "Изключена",
"failed": "Спряна неочаквано",
"blocked": "Чака друга добавка",
"server": "Работи на вашия сървър"
"blocked": "Чака друга добавка"
},
"groups": {
"running": "Работещи",
"notRunning": "Неработещи",
"onServer": "На вашия сървър"
"notRunning": "Неработещи"
},
"runsOnServerHint": "Този плъгин работи само на вашия сървър, така че остава изключен в десктоп приложението. Все още работи там.",
"sort": {
"popular": "Най-популярни",
"name": "Име",
@@ -1934,7 +1898,7 @@
"version": "Версия",
"status": "Статус",
"category": "Категория",
"downloads": "Изтегляния"
"installs": "Инсталации"
},
"risk": {
"critical": "Критично",
@@ -2086,47 +2050,8 @@
"noneInstalled": "Все още няма инсталирани плъгини. Разгледайте каталога, за да добавите някой.",
"nothingHere": "Тук няма нищо.",
"nothingHereHint": "Опитайте друга категория или търсене.",
"showInstalled": "Покажи инсталирани",
"allInstalled": "Всичко тук вече е инсталирано.",
"allInstalledHint": "Включете Покажи инсталирани, за да ги видите.",
"communitySoon": "Плъгините от общността ще бъдат налични в по-късна актуализация. Създателите на плъгини вече могат да изпратят своите в регистъра на общността.",
"communitySubmit": "Как да изпратите",
"registries": {
"intro": "Регистрите са списъци с плъгини, които можете да инсталирате. Официалният винаги е включен. Можете да включите общностния регистър или да добавите свой собствен.",
"hostYourOwn": "Хостнете свой собствен регистър",
"add": "Добави регистър",
"addTitle": "Добавяне на регистър",
"addHint": "Поставете връзката към index.json на регистъра. Termix го прочита и показва ключа, с който подписва плъгините. Добавяйте само регистри от хора, на които вярвате.",
"urlLabel": "URL на индекса",
"check": "Провери",
"addConfirm": "Довери се и добави",
"added": "Добавен {{name}}",
"customWarning": "Плъгините от този регистър не са прегледани от екипа на Termix. Само собственикът на регистъра решава какво има в него. Всяко изтегляне трябва да бъде подписано с ключа по-горе.",
"keyFingerprint": "Ключ {{keyId}}",
"pluginCount_one": "{{count}} плъгин",
"pluginCount_other": "{{count}} плъгина",
"officialName": "Официален",
"communityName": "Общностен",
"alwaysOn": "Винаги включен",
"communityHint": "Плъгини, създадени от други хора. Всяка версия се проверява от човек и от автоматизирани проверки, преди да бъде публикувана.",
"communityConfirmTitle": "Да включим общностните плъгини?",
"communityConfirmBody": "Общностните плъгини са създадени от други хора, не от екипа на Termix. Всяка версия се проверява от човек и от автоматизирани проверки, преди да бъде публикувана, но грешки все пак могат да се появят. Инсталирайте само плъгини, на които вярвате, и проверявайте какво иска всеки един от тях.",
"communityConfirm": "Включи",
"communityBadge": "Общностен",
"communityBadgeHint": "От общностния регистър. Създаден от други хора и прегледан, преди да бъде публикуван.",
"customBadge": "Персонализиран",
"customBadgeHint": "От {{name}}, регистър, добавен от администратор. Не е прегледан от екипа на Termix.",
"remove": "Премахване",
"removeTitle": "Премахване на {{name}}?",
"removeBody": "Неговите плъгини вече няма да се показват в Разглеждане. Можете да го добавите отново по-късно.",
"removed": "Премахнато {{name}}",
"inUse": "Първо деинсталирайте плъгините от {{name}}: {{list}}",
"changeFailed": "Неуспешна промяна на регистъра: {{error}}",
"loadFailed": "Неуспешно зареждане на регистрите: {{error}}",
"unreachable": "Неуспешно четене: {{error}}",
"filter": "Регистър",
"allRegistries": "Всички регистри",
"browseHint": "Включете плъгините на общността или добавете свой собствен регистър в раздела Регистри."
},
"upToDate": "Всичко е актуално.",
"lastChecked": "Последна проверка {{time}}",
"updatesReady_one": "{{count}} актуализация е готова.",
@@ -2149,8 +2074,11 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS е зададено, затова инсталацията от файл остава блокирана."
},
"count": {
"active_one": "{{formatted}} активна инсталация",
"active_other": "{{formatted}} активни инсталации",
"downloads_one": "{{formatted}} изтегляне",
"downloads_other": "{{formatted}} изтегляния",
"activeHint": "Инстанции, които са докладвали, че този плъгин е включен през последната седмица. Инстанциите с изключена статистика за използване не се броят.",
"downloadsHint": "Колко пъти е изтеглена версията. Това не е броят на инсталациите."
},
"unverified": "Неверифициран",
+8 -80
View File
@@ -233,37 +233,6 @@
"desktopLinked": "{{server}} এর সাথে লিঙ্ক করা",
"pluginsDocsLink": "প্রতিটির সম্পর্কে পড়ুন"
},
"desktopUpdates": {
"title": "ডেস্কটপ অ্যাপ",
"mode": "আপডেট",
"modeHint": "এই অ্যাপটি নতুন ভার্সন কীভাবে পায়।",
"manualModeHint": "এই কপিটি নিজে থেকে আপডেট করতে পারে না, তাই Termix শুধু তখনই জানায় যখন নতুন ভার্সন আসে।",
"modeAutomatic": "স্বয়ংক্রিয়",
"modePrompt": "প্রথমে জিজ্ঞাসা করুন",
"modeNever": "কখনো না",
"automaticBody": "ব্যাকগ্রাউন্ডে নতুন ভার্সন ডাউনলোড করুন এবং রিস্টার্ট করার সময় ইনস্টল করুন।",
"promptBody": "নতুন ভার্সন আসলে আমাকে জানান এবং ডাউনলোড করার সময় আমি নির্বাচন করতে পারি।",
"neverBody": "আপডেটের জন্য চেক করবেন না। আপনি সেটিংস থেকে ম্যানুয়ালি চেক করতে পারেন।",
"onboardingTitle": "অ্যাপ আপডেট",
"onboardingBody": "ডেস্কটপ অ্যাপটি এখন নিজে থেকে আপডেট করতে পারে। নতুন ভার্সন কীভাবে আসবে তা বেছে নিন। আপনি পরে সেটিংস, আপডেট থেকে এটি পরিবর্তন করতে পারেন।",
"onboardingManual": "এই অ্যাপের কপিটি এমনভাবে ইনস্টল করা হয়েছে যা নিজে থেকে আপডেট করতে পারে না, তাই Termix নতুন ভার্সন আসলে ডাউনলোড করার লিংক সহ আপনাকে জানাবে।",
"status": "ভার্সন {{version}}",
"statusIdle": "এখনো চেক করা হয়নি",
"statusChecking": "আপডেট চেক করা হচ্ছে",
"statusAvailable": "ভার্সন {{version}} উপলব্ধ",
"statusDownloading": "{{version}} ডাউনলোড হচ্ছে ({{progress}}%)",
"statusReady": "ভার্সন {{version}} প্রস্তুত। ইনস্টল করতে রিস্টার্ট করুন।",
"statusUpToDate": "আপনার কাছে সর্বশেষ ভার্সন রয়েছে",
"statusError": "আপডেট চেক করা যায়নি। পরে আবার চেষ্টা করুন।",
"checkNow": "এখনই চেক করুন",
"download": "ডাউনলোড",
"restart": "এখনই রিস্টার্ট করুন",
"later": "পরে",
"available": "Termix {{version}} উপলব্ধ",
"manualHint": "রিলিজ পেজ থেকে এটি ডাউনলোড করুন এবং এটির উপর ইনস্টল করুন।",
"ready": "Termix {{version}} ইনস্টল করার জন্য প্রস্তুত",
"readyHint": "এটি পরবর্তীবার Termix রিস্টার্ট করলে ইনস্টল হবে।"
},
"nav": {
"home": "হোম",
"terminal": "টার্মিনাল",
@@ -1127,7 +1096,6 @@
"databaseConnectionFailed": "ডেটাবেস সার্ভারে সংযোগ করতে ব্যর্থ হয়েছে",
"embeddedServerPortInUse": "{{port}} পোর্টটি ইতিমধ্যে অন্য একটি প্রোগ্রাম দ্বারা ব্যবহৃত হচ্ছে। এটি সাধারণত একটি Termix Docker কন্টেইনার বা আগের সেশনের একটি অবশিষ্ট Termix প্রক্রিয়া হয়। এটি বন্ধ করুন, তারপর Termix পুনরায় চালু করুন।",
"embeddedServerPortInUseUnknownPort": "Termix-এর প্রয়োজনীয় পোর্টগুলোর একটি ইতিমধ্যে অন্য একটি প্রোগ্রাম দ্বারা ব্যবহৃত হচ্ছে। যা তা ব্যবহার করছে তা বন্ধ করুন, তারপর Termix পুনরায় চালু করুন।",
"embeddedServerOldDatabase": "আপনার স্থানীয় ডেটাটি Termix 2.8 বা তার পূর্ববর্তী সংস্করণের এবং এটি প্রথমে 2.9 সংস্করণের মধ্য দিয়ে যেতে হবে। Termix 2.9.1 ইনস্টল করুন, এটি একবার ওপেন করুন যাতে এটি আপনার ডেটা স্থানান্তর করতে পারে, তারপর আবার এই সংস্করণে আপডেট করুন।",
"embeddedServerCrashed": "স্থানীয় সার্ভার অপ্রত্যাশিতভাবে বন্ধ হয়ে গেছে। Termix পুনরায় চালু করুন এবং যদি এটি বারবার ঘটে তবে ডেস্কটপ লগ পরীক্ষা করুন।",
"resetCodeSent": "রিসেট কোড Docker লগে পাঠানো হয়েছে",
"codeVerified": "কোড সফলভাবে যাচাইকৃত হয়েছে",
@@ -1900,23 +1868,19 @@
"tabs": {
"installed": "ইনস্টল করা",
"browse": "ব্রাউজ করুন",
"updates": "আপডেট",
"registries": "রেজিস্ট্রি"
"updates": "আপডেট"
},
"status": {
"summary": "{{installed}} ইনস্টল করা, {{running}} চলমান",
"running": "চলমান",
"disabled": "নিষ্ক্রিয়",
"failed": "অপ্রত্যাশিতভাবে থেমে গেছে",
"blocked": "অন্য প্লাগইনের জন্য অপেক্ষা করছে",
"server": "আপনার সার্ভারে চলে"
"blocked": "অন্য প্লাগইনের জন্য অপেক্ষা করছে"
},
"groups": {
"running": "চলমান",
"notRunning": "চলমান নয়",
"onServer": "আপনার সার্ভারে"
"notRunning": "চলমান নয়"
},
"runsOnServerHint": "এই প্লাগিনটি শুধু আপনার সার্ভারে চলে, তাই এটি ডেস্কটপ অ্যাপে বন্ধ থাকে। এটি সেখানে কাজ করে।",
"sort": {
"popular": "সবচেয়ে জনপ্রিয়",
"name": "নাম",
@@ -1934,7 +1898,7 @@
"version": "সংস্করণ",
"status": "অবস্থা",
"category": "ক্যাটাগরি",
"downloads": "ডাউনলোড"
"installs": "ইনস্টল"
},
"risk": {
"critical": "গুরুতর",
@@ -2086,47 +2050,8 @@
"noneInstalled": "এখনো কোনো প্লাগইন ইনস্টল করা হয়নি। কিছু যোগ করতে ব্রাউজ করুন।",
"nothingHere": "এখানে কিছু নেই।",
"nothingHereHint": "অন্য কোনো ক্যাটাগরি বা সার্চ চেষ্টা করুন।",
"showInstalled": "ইনস্টল করা দেখান",
"allInstalled": "এখানে সবকিছু ইতিমধ্যে ইনস্টল করা আছে।",
"allInstalledHint": "দেখতে ইনস্টল করা দেখান চালু করুন।",
"communitySoon": "কমিউনিটি প্লাগইনগুলো পরবর্তী আপডেটে আসছে। প্লাগইন ডেভেলপাররা ইতিমধ্যে কমিউনিটি রেজিস্ট্রিতে তাদের প্লাগইন জমা দিতে পারেন।",
"communitySubmit": "কীভাবে জমা দেবেন",
"registries": {
"intro": "রেজিস্ট্রি হলো প্লাগিনের তালিকা যা আপনি ইনস্টল করতে পারেন। অফিশিয়ালটি সবসময় চালু থাকে। আপনি কমিউনিটি রেজিস্ট্রি চালু করতে পারেন বা আপনার নিজের যোগ করতে পারেন।",
"hostYourOwn": "নিজের রেজিস্ট্রি হোস্ট করুন",
"add": "রেজিস্ট্রি যোগ করুন",
"addTitle": "একটি রেজিস্ট্রি যোগ করুন",
"addHint": "রেজিস্ট্রির index.json-এর লিংক পেস্ট করুন। Termix এটি পড়ে এবং প্লাগিন সাইন করার জন্য যে কী ব্যবহার করে তা দেখায়। শুধু বিশ্বস্ত মানুষের রেজিস্ট্রি যোগ করুন।",
"urlLabel": "ইনডেক্স URL",
"check": "চেক করুন",
"addConfirm": "বিশ্বাস করুন এবং যোগ করুন",
"added": "{{name}} যোগ করা হয়েছে",
"customWarning": "এই রেজিস্ট্রির প্লাগিনগুলো Termix দ্বারা পর্যালোচনা করা হয়নি। শুধু রেজিস্ট্রির মালিকই ঠিক করে এতে কী থাকবে। প্রতিটি ডাউনলোড উপরের কী দ্বারা সাইন করা থাকতে হবে।",
"keyFingerprint": "কী {{keyId}}",
"pluginCount_one": "{{count}} প্লাগিন",
"pluginCount_other": "{{count}} প্লাগিন",
"officialName": "অফিশিয়াল",
"communityName": "কমিউনিটি",
"alwaysOn": "সবসময় চালু",
"communityHint": "অন্য মানুষ কর্তৃক তৈরি প্লাগিন। প্রতিটি ভার্সন তালিকাভুক্ত হওয়ার আগে একজন মানুষ এবং স্বয়ংক্রিয় চেক দ্বারা পরীক্ষা করা হয়।",
"communityConfirmTitle": "কমিউনিটি প্লাগিন চালু করবেন?",
"communityConfirmBody": "কমিউনিটি প্লাগিন অন্য মানুষ কর্তৃক তৈরি, Termix দ্বারা নয়। প্রতিটি ভার্সন তালিকাভুক্ত হওয়ার আগে একজন মানুষ এবং স্বয়ংক্রিয় চেক দ্বারা পরীক্ষা করা হয়, কিন্তু ভুল থাকতে পারে। শুধু বিশ্বস্ত প্লাগিন ইনস্টল করুন এবং প্রতিটি কী চায় তা চেক করুন।",
"communityConfirm": "চালু করুন",
"communityBadge": "কমিউনিটি",
"communityBadgeHint": "কমিউনিটি রেজিস্ট্রি থেকে। অন্য মানুষ কর্তৃক তৈরি এবং তালিকাভুক্ত হওয়ার আগে পর্যালোচনা করা হয়েছে।",
"customBadge": "কাস্টম",
"customBadgeHint": "{{name}} থেকে, একটি রেজিস্ট্রি যা একজন অ্যাডমিন যোগ করেছেন। Termix দ্বারা পর্যালোচনা করা হয়নি।",
"remove": "অপসারণ করুন",
"removeTitle": "{{name}} অপসারণ করবেন?",
"removeBody": "এর প্লাগিনগুলো আর ব্রাউজ বিভাগে দেখা যাবে না। আপনি পরে এটি আবার যোগ করতে পারবেন।",
"removed": "{{name}} অপসারণ করা হয়েছে",
"inUse": "প্রথমে {{name}} থেকে প্লাগিনগুলো আনইনস্টল করুন: {{list}}",
"changeFailed": "রেজিস্ট্রি পরিবর্তন করা যায়নি: {{error}}",
"loadFailed": "রেজিস্ট্রিগুলো লোড করা যায়নি: {{error}}",
"unreachable": "এটি পড়া যায়নি: {{error}}",
"filter": "রেজিস্ট্রি",
"allRegistries": "সব রেজিস্ট্রি",
"browseHint": "কমিউনিটি প্লাগিন চালু করুন অথবা রেজিস্ট্রি ট্যাবে আপনার নিজস্ব রেজিস্ট্রি যোগ করুন।"
},
"upToDate": "সবকিছু আপডেট করা আছে।",
"lastChecked": "সর্বশেষ চেক করা হয়েছে {{time}}",
"updatesReady_one": "{{count}}টি আপডেট প্রস্তুত।",
@@ -2149,8 +2074,11 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS সেট করা আছে, তাই ফাইল থেকে ইনস্টল করা অবরুদ্ধ থাকবে।"
},
"count": {
"active_one": "{{formatted}}টি সক্রিয় ইনস্টল",
"active_other": "{{formatted}}টি সক্রিয় ইনস্টল",
"downloads_one": "{{formatted}}টি ডাউনলোড",
"downloads_other": "{{formatted}}টি ডাউনলোড",
"activeHint": "গত সপ্তাহে এই প্লাগইন চালু থাকার রিপোর্ট করেছে এমন ইনস্ট্যান্সের সংখ্যা। ব্যবহার পরিসংখ্যান বন্ধ থাকা ইনস্ট্যান্স গণনা করা হয় না।",
"downloadsHint": "একটি রিলিজ কতবার ডাউনলোড হয়েছে। এটি ইনস্টলেশনের সংখ্যা নয়।"
},
"unverified": "অনির্ভরিত",
+9 -81
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Vinculat a {{server}}",
"pluginsDocsLink": "Llegeix sobre cadascun"
},
"desktopUpdates": {
"title": "Aplicació d'escriptori",
"mode": "Actualitzacions",
"modeHint": "Com obté aquesta aplicació les noves versions.",
"manualModeHint": "Aquesta còpia no es pot actualitzar sola, per la qual cosa Termix només t'informa quan hi ha una nova versió disponible.",
"modeAutomatic": "Automàtic",
"modePrompt": "Pregunta primer",
"modeNever": "Mai",
"automaticBody": "Descarrega les noves versions en segon pla i instal·la-les quan reiniciïs.",
"promptBody": "Informa'm quan hi hagi una nova versió i deixa'm triar quan la vull descarregar.",
"neverBody": "No comprovis si hi ha actualitzacions. Encara pots comprovar-ho manualment a Configuració.",
"onboardingTitle": "Actualitzacions de l'aplicació",
"onboardingBody": "L'aplicació d'escriptori ara es pot actualitzar sola. Tria com vols que arribin les noves versions. Pots canviar-ho més endavant a Configuració, Actualitzacions.",
"onboardingManual": "Aquesta còpia de l'aplicació s'ha instal·lat d'una manera que no es pot actualitzar sola, per la qual cosa Termix t'informarà quan hi hagi una nova versió disponible amb un enllaç per descarregar-la.",
"status": "Versió {{version}}",
"statusIdle": "Encara no s'ha comprovat",
"statusChecking": "Comprovant si hi ha actualitzacions",
"statusAvailable": "Hi ha disponible la versió {{version}}",
"statusDownloading": "Descarregant {{version}} ({{progress}}%)",
"statusReady": "La versió {{version}} està llesta. Reinicia per instal·lar-la.",
"statusUpToDate": "Tens l'última versió",
"statusError": "No s'ha pogut comprovar si hi ha actualitzacions. Torna-ho a provar més tard.",
"checkNow": "Comprova ara",
"download": "Descarrega",
"restart": "Reinicia ara",
"later": "Més tard",
"available": "Hi ha disponible Termix {{version}}",
"manualHint": "Descarrega-la des de la pàgina de llançaments i instal·la-la sobre aquesta.",
"ready": "Termix {{version}} està llest per instal·lar-se",
"readyHint": "S'instal·larà la propera vegada que reiniciïs Termix."
},
"nav": {
"home": "Inici",
"terminal": "Terminal",
@@ -1141,7 +1110,6 @@
"databaseConnectionFailed": "No s'ha pogut connectar al servidor de bases de dades",
"embeddedServerPortInUse": "El port {{port}} ja està en ús per un altre programa. Normalment és un contenidor Docker de Termix o un procés de Termix d'una sessió anterior. Tanca'l i reinicia Termix.",
"embeddedServerPortInUseUnknownPort": "Un dels ports que necessita Termix ja està en ús per un altre programa. Tanca el que l'està utilitzant i reinicia Termix.",
"embeddedServerOldDatabase": "Les dades locals són de Termix 2.8 o anterior i han de passar primer per la versió 2.9. Instal·la Termix 2.9.1, obre-la un cop perquè pugui moure les dades i, a continuació, actualitza a aquesta versió.",
"embeddedServerCrashed": "El servidor local s'ha aturat inesperadament. Reinicia Termix i consulta el registre d'escriptori si el problema persisteix.",
"resetCodeSent": "Codi de restabliment enviat als registres de Docker",
"codeVerified": "Codi verificat correctament",
@@ -1924,23 +1892,19 @@
"tabs": {
"installed": "Instal·lats",
"browse": "Explorar",
"updates": "Actualitzacions",
"registries": "Registres"
"updates": "Actualitzacions"
},
"status": {
"summary": "{{installed}} instal·lats, {{running}} en execució",
"running": "En execució",
"disabled": "Desactivat",
"failed": "Aturat inesperadament",
"blocked": "Esperant un altre plugin",
"server": "S'executa al teu servidor"
"blocked": "Esperant un altre plugin"
},
"groups": {
"running": "En execució",
"notRunning": "No en execució",
"onServer": "Al teu servidor"
"notRunning": "No en execució"
},
"runsOnServerHint": "Aquest complement només s'executa al teu servidor, per la qual cosa es manté desactivat a l'aplicació d'escriptori. Funciona igual allà.",
"sort": {
"popular": "Més populars",
"name": "Nom",
@@ -1958,7 +1922,7 @@
"version": "Versió",
"status": "Estat",
"category": "Categoria",
"downloads": "Descarregues"
"installs": "Instal·lacions"
},
"risk": {
"critical": "Crític",
@@ -2126,48 +2090,8 @@
"noneInstalled": "Encara no tens cap complement instal·lat. Navega per afegir-ne alguns.",
"nothingHere": "No hi ha res aquí.",
"nothingHereHint": "Prova una altra categoria o cerca.",
"showInstalled": "Mostra els instal·lats",
"allInstalled": "Tot el que hi ha aquí ja està instal·lat.",
"allInstalledHint": "Activa Mostra els instal·lats per veure'ls.",
"communitySoon": "Els complements de la comunitat arribaran en una actualització futura. Els autors de complements ja poden enviar els seus al registre de la comunitat.",
"communitySubmit": "Com enviar-los",
"registries": {
"intro": "Els registres són llistes de complements que pots instal·lar. L'oficial està sempre activat. Pots activar el registre de la comunitat o afegir-ne el teu propi.",
"hostYourOwn": "Allotja el teu propi registre",
"add": "Afegeix un registre",
"addTitle": "Afegeix un registre",
"addHint": "Enganxa l'enllaç a l'index.json del registre. Termix el llegeix i mostra la clau amb la qual signa els complements. Només afegeixis registres de persones de confiança.",
"urlLabel": "URL de l'índex",
"check": "Comprova",
"addConfirm": "Confia i afegeix",
"added": "S'ha afegit {{name}}",
"customWarning": "Els complements d'aquest registre no són revisats per l'equip de Termix. Només el propietari del registre decideix què hi ha. Cada descàrrega ha d'estar signada amb la clau anterior.",
"keyFingerprint": "Clau {{keyId}}",
"pluginCount_one": "{{count}} complement",
"pluginCount_many": "{{count}} complements",
"pluginCount_other": "{{count}} complements",
"officialName": "Oficial",
"communityName": "Comunitat",
"alwaysOn": "Sempre activat",
"communityHint": "Complements fets per altres persones. Cada versió és revisada per una persona i per comprovacions automatitzades abans de ser publicada.",
"communityConfirmTitle": "Vols activar els complements de la comunitat?",
"communityConfirmBody": "Els complements de la comunitat són fets per altres persones, no per l'equip de Termix. Cada versió és revisada per una persona i per comprovacions automatitzades abans de ser publicada, però encara poden passar errors. Només instal·lis complements de confiança i comprova què demana cadascun.",
"communityConfirm": "Activa",
"communityBadge": "Comunitat",
"communityBadgeHint": "Del registre de la comunitat. Fet per altres persones i revisat abans de ser publicat.",
"customBadge": "Personalitzat",
"customBadgeHint": "De {{name}}, un registre afegit per un administrador. No revisat per l'equip de Termix.",
"remove": "Eliminar",
"removeTitle": "Vols eliminar {{name}}?",
"removeBody": "Els seus connectors ja no es mostraran a Explorar. Ho pots tornar a afegir més endavant.",
"removed": "S'ha eliminat {{name}}",
"inUse": "Desinstal·la primer els connectors de {{name}}: {{list}}",
"changeFailed": "No s'ha pogut modificar el registre: {{error}}",
"loadFailed": "No s'han pogut carregar els registres: {{error}}",
"unreachable": "No s'ha pogut llegir: {{error}}",
"filter": "Registre",
"allRegistries": "Tots els registres",
"browseHint": "Activa els connectors de la comunitat o afegeix el teu propi registre a la pestanya Registres."
},
"upToDate": "Tot està actualitzat.",
"lastChecked": "Última comprovació: {{time}}",
"updatesReady_one": "{{count}} actualització disponible.",
@@ -2192,9 +2116,13 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS està configurat, per la qual cosa la instal·lació des d'un fitxer continua bloquejada."
},
"count": {
"active_one": "{{formatted}} instal·lació activa",
"active_many": "{{formatted}} instal·lacions actives",
"active_other": "{{formatted}} instal·lacions actives",
"downloads_one": "{{formatted}} descàrrega",
"downloads_many": "{{formatted}} descàrregues",
"downloads_other": "{{formatted}} descàrregues",
"activeHint": "Instàncies que han informat que aquest complement estava activat durant l'última setmana. Les instàncies amb les estadístiques d'ús desactivades no es compten.",
"downloadsHint": "Quant de temps s'ha descarregat una versió. Això no és el nombre d'instal·lacions."
},
"unverified": "No verificat",
+10 -82
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Propojeno s {{server}}",
"pluginsDocsLink": "Přečtěte si o každém z nich"
},
"desktopUpdates": {
"title": "Desktopová aplikace",
"mode": "Aktualizace",
"modeHint": "Jak tato aplikace získává nové verze.",
"manualModeHint": "Tato kopie se nedokáže aktualizovat sama, takže Termix vás pouze informuje, když je k dispozici nová verze.",
"modeAutomatic": "Automaticky",
"modePrompt": "Nejprve se zeptat",
"modeNever": "Nikdy",
"automaticBody": "Stahovat nové verze na pozadí a nainstalovat je po restartu.",
"promptBody": "Upozornit mě, když je k dispozici nová verze, a nechat mě vybrat, kdy ji stáhnout.",
"neverBody": "Nezkontrolovat aktualizace. Stále je můžete zkontrolovat ručně v Nastavení.",
"onboardingTitle": "Aktualizace aplikace",
"onboardingBody": "Desktopová aplikace se nyní dokáže aktualizovat sama. Vyberte si, jak chcete, aby nové verze přicházely. Toto můžete později změnit v Nastavení, Aktualizace.",
"onboardingManual": "Tato kopie aplikace byla nainstalována způsobem, který neumožňuje automatickou aktualizaci, takže Termix vás upozorní, když je k dispozici nová verze, a poskytne odkaz ke stažení.",
"status": "Verze {{version}}",
"statusIdle": "Ještě nekontrolováno",
"statusChecking": "Kontrola aktualizací",
"statusAvailable": "Je k dispozici verze {{version}}",
"statusDownloading": "Stahování {{version}} ({{progress}} %)",
"statusReady": "Verze {{version}} je připravena. Restartujte pro instalaci.",
"statusUpToDate": "Máte nejnovější verzi",
"statusError": "Nelze zkontrolovat aktualizace. Zkuste to později.",
"checkNow": "Zkontrolovat nyní",
"download": "Stáhnout",
"restart": "Restartovat nyní",
"later": "Později",
"available": "Termix {{version}} je k dispozici",
"manualHint": "Stáhněte si ho ze stránky s vydáním a nainstalujte přes tuto verzi.",
"ready": "Termix {{version}} je připraven k instalaci",
"readyHint": "Nainstaluje se při příštím restartu Termixu."
},
"nav": {
"home": "Domů",
"terminal": "Terminál",
@@ -1155,7 +1124,6 @@
"databaseConnectionFailed": "Nepodařilo se připojit k databázovému serveru",
"embeddedServerPortInUse": "Port {{port}} je již používán jiným programem. Obvykle se jedná o Docker kontejner Termix nebo zbytkový proces Termix z předchozí relace. Zavřete jej a poté restartujte Termix.",
"embeddedServerPortInUseUnknownPort": "Jeden z portů, které Termix potřebuje, je již používán jiným programem. Zavřete aplikaci, která jej používá, a poté restartujte Termix.",
"embeddedServerOldDatabase": "Vaše místní data pocházejí z Termix 2.8 nebo starší verze a musí být nejprve převedena verzí 2.9. Nainstalujte Termix 2.9.1, otevřete jej jednou, aby mohl přesunout vaše data, a poté aktualizujte znovu na tuto verzi.",
"embeddedServerCrashed": "Místní server neočekávaně přestal běžet. Restartujte Termix a pokud se problém opakuje, zkontrolujte protokol desktopu.",
"resetCodeSent": "Resetovací kód byl odeslán do logů Dockeru",
"codeVerified": "Kód byl úspěšně ověřen",
@@ -1948,23 +1916,19 @@
"tabs": {
"installed": "Nainstalované",
"browse": "Procházet",
"updates": "Aktualizace",
"registries": "Rejstříky"
"updates": "Aktualizace"
},
"status": {
"summary": "{{installed}} nainstalováno, {{running}} spuštěno",
"running": "Spuštěno",
"disabled": "Zakázáno",
"failed": "Neočekávaně zastaveno",
"blocked": "Čeká na jiný plugin",
"server": "Běží na vašem serveru"
"blocked": "Čeká na jiný plugin"
},
"groups": {
"running": "Spuštěné",
"notRunning": "Nespuštěné",
"onServer": "Na vašem serveru"
"notRunning": "Nespuštěné"
},
"runsOnServerHint": "Tento plugin běží pouze na vašem serveru, takže je v desktopové aplikaci vypnutý. Na serveru stále funguje.",
"sort": {
"popular": "Nejoblíbenější",
"name": "Název",
@@ -1982,7 +1946,7 @@
"version": "Verze",
"status": "Stav",
"category": "Kategorie",
"downloads": "Stahování"
"installs": "Instalace"
},
"risk": {
"critical": "Kritické",
@@ -2166,49 +2130,8 @@
"noneInstalled": "Zatím nejsou nainstalovány žádné pluginy. Prohledejte je a přidejte nějaké.",
"nothingHere": "Nic zde není.",
"nothingHereHint": "Zkuste jinou kategorii nebo vyhledejte.",
"showInstalled": "Zobrazit nainstalované",
"allInstalled": "Všechno zde je již nainstalováno.",
"allInstalledHint": "Zapněte Zobrazit nainstalované, abyste je viděli.",
"communitySoon": "Komunitní pluginy přijdou v pozdější aktualizaci. Autoři pluginů je již nyní mohou odeslat do komunitního registru.",
"communitySubmit": "Jak odeslat",
"registries": {
"intro": "Rejstříky jsou seznamy pluginů, které můžete nainstalovat. Oficiální rejstřík je vždy zapnutý. Můžete zapnout komunitní rejstřík nebo přidat vlastní.",
"hostYourOwn": "Hostovat vlastní rejstřík",
"add": "Přidat rejstřík",
"addTitle": "Přidat rejstřík",
"addHint": "Vložte odkaz na index.json rejstříku. Termix ho přečte a zobrazí klíč, kterým pluginy podepisuje. Přidávejte pouze rejstříky od lidí, kterým důvěřujete.",
"urlLabel": "URL indexu",
"check": "Zkontrolovat",
"addConfirm": "Důvěřovat a přidat",
"added": "Přidáno {{name}}",
"customWarning": "Pluginy z tohoto rejstříku nejsou recenzovány týmem Termix. Pouze vlastník rejstříku rozhoduje o tom, co v něm je. Každé stažení musí být podepsáno výše uvedeným klíčem.",
"keyFingerprint": "Klíč {{keyId}}",
"pluginCount_one": "{{count}} plugin",
"pluginCount_few": "{{count}} pluginů",
"pluginCount_many": "{{count}} pluginů",
"pluginCount_other": "{{count}} pluginů",
"officialName": "Oficiální",
"communityName": "Komunitní",
"alwaysOn": "Vždy zapnuto",
"communityHint": "Pluginy vytvořené ostatními lidmi. Každá verze je před zařazením zkontrolována člověkem i automatizovanými kontrolami.",
"communityConfirmTitle": "Zapnout komunitní pluginy?",
"communityConfirmBody": "Komunitní pluginy vytvářejí jiní lidé, ne tým Termix. Každá verze je před zařazením zkontrolována člověkem i automatizovanými kontrolami, ale chyby se mohou stále vyskytnout. Instalujte pouze pluginy, kterým důvěřujete, a zkontrolujte, co každý z nich vyžaduje.",
"communityConfirm": "Zapnout",
"communityBadge": "Komunitní",
"communityBadgeHint": "Z komunitního rejstříku. Vytvořeno ostatními lidmi a recenzováno před zařazením.",
"customBadge": "Vlastní",
"customBadgeHint": "Z {{name}}, rejstříku přidaného administrátorem. Nebylo recenzováno týmem Termix.",
"remove": "Odebrat",
"removeTitle": "Odebrat {{name}}?",
"removeBody": "Jejich pluginy se již nebudou zobrazovat v sekci Prohlížet. Můžete je přidat znovu později.",
"removed": "Odebráno {{name}}",
"inUse": "Nejprve odinstalujte pluginy z {{name}}: {{list}}",
"changeFailed": "Nelze změnit registr: {{error}}",
"loadFailed": "Nelze načíst registry: {{error}}",
"unreachable": "Nelze jej přečíst: {{error}}",
"filter": "Registr",
"allRegistries": "Všechny registry",
"browseHint": "Zapněte komunitní pluginy nebo přidejte vlastní registr na kartě Registry."
},
"upToDate": "Vše je aktuální.",
"lastChecked": "Naposledy kontrolováno {{time}}",
"updatesReady_one": "{{count}} aktualizace připravena.",
@@ -2235,10 +2158,15 @@
"signedOnly": "Je nastavena proměnná TERMIX_REQUIRE_SIGNED_PLUGINS, takže instalace ze souboru zůstává blokována."
},
"count": {
"active_one": "{{formatted}} aktivní instalace",
"active_few": "{{formatted}} aktivní instalace",
"active_many": "{{formatted}} aktivních instalací",
"active_other": "{{formatted}} aktivní instalace",
"downloads_one": "{{formatted}} stažení",
"downloads_few": "{{formatted}} stažení",
"downloads_many": "{{formatted}} stažení",
"downloads_other": "{{formatted}} stažení",
"activeHint": "Počet instancí, které během posledního týdne nahlásily, že je tento plugin zapnutý. Instance s vypnutou statistikou využití se nepočítají.",
"downloadsHint": "Počet stažení dané verze. Toto není počet instalací."
},
"unverified": "Nepotvrzený",
+8 -80
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Linket til {{server}}",
"pluginsDocsLink": "Læs om hver enkelt"
},
"desktopUpdates": {
"title": "Skrivebordsapp",
"mode": "Opdateringer",
"modeHint": "Sådan får appen nye versioner.",
"manualModeHint": "Denne kopi kan ikke opdatere sig selv, så Termix giver kun besked, når en ny version er udkommet.",
"modeAutomatic": "Automatisk",
"modePrompt": "Spørg først",
"modeNever": "Aldrig",
"automaticBody": "Download nye versioner i baggrunden og installer dem, når du genstarter.",
"promptBody": "Giv mig besked, når en ny version er udkommet, og lad mig vælge, hvornår den skal downloades.",
"neverBody": "Tjek ikke efter opdateringer. Du kan stadig tjekke manuelt i Indstillinger.",
"onboardingTitle": "App-opdateringer",
"onboardingBody": "Skrivebordsappen kan nu opdatere sig selv. Vælg, hvordan du vil modtage nye versioner. Du kan ændre dette senere i Indstillinger, Opdateringer.",
"onboardingManual": "Denne kopi af appen blev installeret på en måde, der ikke understøtter selvopdatering, så Termix vil give dig besked, når en ny version er udkommet, med et link til at downloade den.",
"status": "Version {{version}}",
"statusIdle": "Ikke tjekket endnu",
"statusChecking": "Tjekker efter opdateringer",
"statusAvailable": "Version {{version}} er tilgængelig",
"statusDownloading": "Downloader {{version}} ({{progress}}%)",
"statusReady": "Version {{version}} er klar. Genstart for at installere den.",
"statusUpToDate": "Du har den nyeste version",
"statusError": "Kunne ikke tjekke efter opdateringer. Prøv igen senere.",
"checkNow": "Tjek nu",
"download": "Download",
"restart": "Genstart nu",
"later": "Senere",
"available": "Termix {{version}} er tilgængelig",
"manualHint": "Download den fra udgivelsessiden og installer den over den nuværende.",
"ready": "Termix {{version}} er klar til installation",
"readyHint": "Den installeres næste gang Termix genstartes."
},
"nav": {
"home": "Hjem",
"terminal": "Terminal",
@@ -1127,7 +1096,6 @@
"databaseConnectionFailed": "Kunne ikke oprette forbindelse til databasens server",
"embeddedServerPortInUse": "Port {{port}} er allerede i brug af et andet program. Dette er typisk en Termix Docker-container eller en efterladt Termix-proces fra en tidligere session. Luk den, og genstart derefter Termix.",
"embeddedServerPortInUseUnknownPort": "En af de porte, som Termix har brug for, er allerede i brug af et andet program. Luk det, der bruger den, og genstart derefter Termix.",
"embeddedServerOldDatabase": "Dine lokale data stammer fra Termix 2.8 eller ældre og skal først migreres gennem version 2.9. Installer Termix 2.9.1, åbn den én gang, så den kan flytte dine data, og opdater derefter til denne version igen.",
"embeddedServerCrashed": "Den lokale server stoppede uventet. Genstart Termix, og tjek skrivebordsloggen, hvis dette fortsætter.",
"resetCodeSent": "Nulstillingskode sendt til Docker-logs",
"codeVerified": "Kode verificeret med succes",
@@ -1900,23 +1868,19 @@
"tabs": {
"installed": "Installeret",
"browse": "Gennemse",
"updates": "Opdateringer",
"registries": "Registre"
"updates": "Opdateringer"
},
"status": {
"summary": "{{installed}} installeret, {{running}} kører",
"running": "Kører",
"disabled": "Deaktiveret",
"failed": "Stoppet uventet",
"blocked": "Venter på et andet plugin",
"server": "Kører på din server"
"blocked": "Venter på et andet plugin"
},
"groups": {
"running": "Kører",
"notRunning": "Kører ikke",
"onServer": "På din server"
"notRunning": "Kører ikke"
},
"runsOnServerHint": "Denne plugin kører kun på din server, så den er slukket i skrivebordsappen. Den fungerer stadig der.",
"sort": {
"popular": "Mest populære",
"name": "Navn",
@@ -1934,7 +1898,7 @@
"version": "Version",
"status": "Status",
"category": "Kategori",
"downloads": "Downloads"
"installs": "Installationer"
},
"risk": {
"critical": "Kritisk",
@@ -2086,47 +2050,8 @@
"noneInstalled": "Ingen plugins er installeret endnu. Gennemse for at tilføje nogle.",
"nothingHere": "Intet her.",
"nothingHereHint": "Prøv en anden kategori eller søg.",
"showInstalled": "Vis installeret",
"allInstalled": "Alt her er allerede installeret.",
"allInstalledHint": "Slå Vis installeret til for at se dem.",
"communitySoon": "Community-plugins kommer i en senere opdatering. Plugin-forfattere kan allerede indsende deres til community-registret.",
"communitySubmit": "Sådan indsender du",
"registries": {
"intro": "Registre er lister over plugins, du kan installere. Den officielle er altid tændt. Du kan slå fællesskabsregistret til eller tilføje dit eget.",
"hostYourOwn": "Vært for dit eget register",
"add": "Tilføj register",
"addTitle": "Tilføj et register",
"addHint": "Indsæt linket til registrets index.json. Termix læser det og viser nøglen, det signerer plugins med. Tilføj kun registre fra personer, du stoler på.",
"urlLabel": "Index-URL",
"check": "Tjek",
"addConfirm": "Stol på og tilføj",
"added": "Tilføjede {{name}}",
"customWarning": "Plugins fra dette register er ikke gennemgået af Termix-teamet. Kun ejeren af registret afgør, hvad der er i det. Hver download skal være signeret med nøglen ovenfor.",
"keyFingerprint": "Nøgle {{keyId}}",
"pluginCount_one": "{{count}} plugin",
"pluginCount_other": "{{count}} plugins",
"officialName": "Officiel",
"communityName": "Fællesskab",
"alwaysOn": "Altid tændt",
"communityHint": "Plugins lavet af andre. Hver version er tjekket af en person og af automatiske kontroller, før den bliver listet.",
"communityConfirmTitle": "Slå fællesskabsplugins til?",
"communityConfirmBody": "Fællesskabsplugins er lavet af andre, ikke af Termix-teamet. Hver version er tjekket af en person og af automatiske kontroller, før den bliver listet, men fejl kan stadig slippe igennem. Installer kun plugins, du stoler på, og tjek, hvad hver enkelt beder om.",
"communityConfirm": "Slå til",
"communityBadge": "Fællesskab",
"communityBadgeHint": "Fra fællesskabsregistret. Lavet af andre og gennemgået, før det blev listet.",
"customBadge": "Brugerdefineret",
"customBadgeHint": "Fra {{name}}, et register, en administrator har tilføjet. Ikke gennemgået af Termix-teamet.",
"remove": "Fjern",
"removeTitle": "Fjern {{name}}?",
"removeBody": "Dens plugins vil ikke længere vises i Gennemse. Du kan tilføje det igen senere.",
"removed": "{{name}} er fjernet",
"inUse": "Afinstaller plugins fra {{name}} først: {{list}}",
"changeFailed": "Kunne ikke ændre registreret: {{error}}",
"loadFailed": "Kunne ikke indlæse registre: {{error}}",
"unreachable": "Kunne ikke læse det: {{error}}",
"filter": "Registret",
"allRegistries": "Alle registre",
"browseHint": "Aktiver fællesskabsplugins eller tilføj dit eget register i fanen Register."
},
"upToDate": "Alt er opdateret.",
"lastChecked": "Sidst tjekket {{time}}",
"updatesReady_one": "{{count}} opdatering klar.",
@@ -2149,8 +2074,11 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS er indstillet, så installation fra fil forbliver blokeret."
},
"count": {
"active_one": "{{formatted}} aktiv installation",
"active_other": "{{formatted}} aktive installationer",
"downloads_one": "{{formatted}} download",
"downloads_other": "{{formatted}} downloads",
"activeHint": "Instanser, der har rapporteret, at denne plugin var slået til i den sidste uge. Instanser med brugstatistik slået fra tæles ikke med.",
"downloadsHint": "Hvor mange gange en udgivelse er blevet downloadet. Dette er ikke antallet af installationer."
},
"unverified": "Ikke verificeret",
+8 -80
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Verknüpft mit {{server}}",
"pluginsDocsLink": "Mehr über jedes Plugin erfahren"
},
"desktopUpdates": {
"title": "Desktop-App",
"mode": "Updates",
"modeHint": "Wie diese App neue Versionen erhält.",
"manualModeHint": "Diese Kopie kann sich nicht selbst aktualisieren, daher teilt Termix Ihnen nur mit, wenn eine neue Version verfügbar ist.",
"modeAutomatic": "Automatisch",
"modePrompt": "Zuerst fragen",
"modeNever": "Nie",
"automaticBody": "Neue Versionen im Hintergrund herunterladen und beim Neustart installieren.",
"promptBody": "Benachrichtige mich, wenn eine neue Version verfügbar ist, und lass mich entscheiden, wann ich sie herunterladen möchte.",
"neverBody": "Nicht nach Updates suchen. Du kannst manuell in den Einstellungen prüfen.",
"onboardingTitle": "App-Updates",
"onboardingBody": "Die Desktop-App kann sich nun selbst aktualisieren. Wähle aus, wie neue Versionen bereitgestellt werden sollen. Du kannst dies später in den Einstellungen unter Updates ändern.",
"onboardingManual": "Diese Kopie der App wurde auf eine Weise installiert, die keine Selbstaktualisierung unterstützt. Daher teilt Termix Ihnen mit, wenn eine neue Version verfügbar ist, und stellt einen Link zum Herunterladen bereit.",
"status": "Version {{version}}",
"statusIdle": "Noch nicht geprüft",
"statusChecking": "Prüfe auf Updates",
"statusAvailable": "Version {{version}} ist verfügbar",
"statusDownloading": "Lade {{version}} herunter ({{progress}}%)",
"statusReady": "Version {{version}} ist bereit. Neustart zur Installation.",
"statusUpToDate": "Du hast die neueste Version",
"statusError": "Konnte nicht nach Updates suchen. Versuche es später erneut.",
"checkNow": "Jetzt prüfen",
"download": "Herunterladen",
"restart": "Jetzt neu starten",
"later": "Später",
"available": "Termix {{version}} ist verfügbar",
"manualHint": "Lade es von der Release-Seite herunter und installiere es über diese Version.",
"ready": "Termix {{version}} ist bereit zur Installation",
"readyHint": "Es wird beim nächsten Neustart von Termix installiert."
},
"nav": {
"home": "Startseite",
"terminal": "Terminal",
@@ -1127,7 +1096,6 @@
"databaseConnectionFailed": "Verbindung zum Datenbankserver fehlgeschlagen",
"embeddedServerPortInUse": "Der Port {{port}} wird bereits von einem anderen Programm verwendet. Dies ist in der Regel ein Termix-Docker-Container oder ein verbliebener Termix-Prozess aus einer früheren Sitzung. Schließen Sie dieses Programm und starten Sie Termix neu.",
"embeddedServerPortInUseUnknownPort": "Einer der von Termix benötigten Ports wird bereits von einem anderen Programm verwendet. Schließen Sie das entsprechende Programm und starten Sie Termix neu.",
"embeddedServerOldDatabase": "Ihre lokalen Daten stammen von Termix 2.8 oder älter und müssen zuerst durch Version 2.9 migriert werden. Installieren Sie Termix 2.9.1, öffnen Sie es einmal, damit Ihre Daten verschoben werden können, und aktualisieren Sie anschließend erneut auf diese Version.",
"embeddedServerCrashed": "Der lokale Server wurde unerwartet beendet. Starten Sie Termix neu und prüfen Sie das Desktop-Protokoll, falls dies weiterhin auftritt.",
"resetCodeSent": "Reset-Code an Docker-Logs gesendet",
"codeVerified": "Code erfolgreich verifiziert",
@@ -1900,23 +1868,19 @@
"tabs": {
"installed": "Installiert",
"browse": "Durchsuchen",
"updates": "Updates",
"registries": "Registries"
"updates": "Updates"
},
"status": {
"summary": "{{installed}} installiert, {{running}} aktiv",
"running": "Aktiv",
"disabled": "Deaktiviert",
"failed": "Unerwartet gestoppt",
"blocked": "Wartet auf ein anderes Plugin",
"server": "Läuft auf deinem Server"
"blocked": "Wartet auf ein anderes Plugin"
},
"groups": {
"running": "Aktiv",
"notRunning": "Nicht aktiv",
"onServer": "Auf deinem Server"
"notRunning": "Nicht aktiv"
},
"runsOnServerHint": "Dieses Plugin läuft nur auf deinem Server, daher ist es in der Desktop-App deaktiviert. Es funktioniert dort weiterhin.",
"sort": {
"popular": "Am beliebtesten",
"name": "Name",
@@ -1934,7 +1898,7 @@
"version": "Version",
"status": "Status",
"category": "Kategorie",
"downloads": "Downloads"
"installs": "Installationen"
},
"risk": {
"critical": "Kritisch",
@@ -2086,47 +2050,8 @@
"noneInstalled": "Noch keine Plugins installiert. Stöbern Sie, um welche hinzuzufügen.",
"nothingHere": "Hier ist nichts.",
"nothingHereHint": "Versuchen Sie eine andere Kategorie oder suchen Sie.",
"showInstalled": "Installierte anzeigen",
"allInstalled": "Alles hier ist bereits installiert.",
"allInstalledHint": "Aktiviere „Installierte anzeigen“, um sie zu sehen.",
"communitySoon": "Community-Plugins kommen in einem späteren Update. Plugin-Autoren können ihre Plugins bereits im Community-Registrierungssystem einreichen.",
"communitySubmit": "So reichen Sie ein",
"registries": {
"intro": "Registries sind Listen von Plugins, die du installieren kannst. Die offizielle ist immer aktiv. Du kannst die Community-Registry aktivieren oder deine eigene hinzufügen.",
"hostYourOwn": "Eigene Registry hosten",
"add": "Registry hinzufügen",
"addTitle": "Eine Registry hinzufügen",
"addHint": "Füge den Link zur index.json der Registry ein. Termix liest sie aus und zeigt den Schlüssel an, mit dem Plugins signiert werden. Füge nur Registries von vertrauenswürdigen Quellen hinzu.",
"urlLabel": "Index-URL",
"check": "Prüfen",
"addConfirm": "Vertrauen und hinzufügen",
"added": "{{name}} hinzugefügt",
"customWarning": "Plugins aus dieser Registry werden nicht vom Termix-Team überprüft. Nur der Besitzer der Registry entscheidet, was darin enthalten ist. Jeder Download muss mit dem oben genannten Schlüssel signiert sein.",
"keyFingerprint": "Schlüssel {{keyId}}",
"pluginCount_one": "{{count}} Plugin",
"pluginCount_other": "{{count}} Plugins",
"officialName": "Offiziell",
"communityName": "Community",
"alwaysOn": "Immer aktiv",
"communityHint": "Plugins, die von anderen erstellt wurden. Jede Version wird vor der Aufnahme von einer Person und durch automatisierte Checks überprüft.",
"communityConfirmTitle": "Community-Plugins aktivieren?",
"communityConfirmBody": "Community-Plugins werden von anderen Personen erstellt, nicht vom Termix-Team. Jede Version wird vor der Aufnahme von einer Person und durch automatisierte Checks überprüft, aber Fehler können dennoch passieren. Installiere nur Plugins, denen du vertraust, und prüfe, was jedes Plugin anfordert.",
"communityConfirm": "Aktivieren",
"communityBadge": "Community",
"communityBadgeHint": "Aus der Community-Registry. Von anderen erstellt und vor der Aufnahme überprüft.",
"customBadge": "Benutzerdefiniert",
"customBadgeHint": "Von {{name}}, einer Registry, die ein Administrator hinzugefügt hat. Nicht vom Termix-Team überprüft.",
"remove": "Entfernen",
"removeTitle": "{{name}} entfernen?",
"removeBody": "Seine Plugins werden nicht mehr im Bereich „Durchsuchen“ angezeigt. Du kannst es später erneut hinzufügen.",
"removed": "{{name}} wurde entfernt",
"inUse": "Deinstalliere zuerst die Plugins aus {{name}}: {{list}}",
"changeFailed": "Das Repository konnte nicht geändert werden: {{error}}",
"loadFailed": "Die Repositories konnten nicht geladen werden: {{error}}",
"unreachable": "Konnte nicht gelesen werden: {{error}}",
"filter": "Repository",
"allRegistries": "Alle Repositories",
"browseHint": "Aktiviere Community-Plugins oder füge dein eigenes Repository im Tab „Repositories“ hinzu."
},
"upToDate": "Alles ist auf dem neuesten Stand.",
"lastChecked": "Zuletzt geprüft {{time}}",
"updatesReady_one": "{{count}} Update bereit.",
@@ -2149,8 +2074,11 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS ist gesetzt, daher bleibt die Installation aus einer Datei blockiert."
},
"count": {
"active_one": "{{formatted}} aktive Installation",
"active_other": "{{formatted}} aktive Installationen",
"downloads_one": "{{formatted}} Download",
"downloads_other": "{{formatted}} Downloads",
"activeHint": "Instanzen, die in der letzten Woche gemeldet haben, dass dieses Plugin aktiviert ist. Instanzen mit deaktivierter Nutzungsstatistik werden nicht gezählt.",
"downloadsHint": "Wie oft eine Version heruntergeladen wurde. Dies ist nicht die Anzahl der Installationen."
},
"unverified": "Nicht verifiziert",
+8 -80
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Συνδεδεμένο με {{server}}",
"pluginsDocsLink": "Διαβάστε για καθένα"
},
"desktopUpdates": {
"title": "Εφαρμογή επιφάνειας εργασίας",
"mode": "Ενημερώσεις",
"modeHint": "Πώς λαμβάνει η εφαρμογή νέες εκδόσεις.",
"manualModeHint": "Αυτό το αντίγραφο δεν μπορεί να ενημερωθεί αυτόματα, οπότε το Termix σας ενημερώνει μόνο όταν κυκλοφορεί νέα έκδοση.",
"modeAutomatic": "Αυτόματο",
"modePrompt": "Ερώτηση πρώτα",
"modeNever": "Ποτέ",
"automaticBody": "Λήψη νέων εκδόσεων στο παρασκήνιο και εγκατάσταση κατά την επανεκκίνηση.",
"promptBody": "Ενημέρωσέ με όταν κυκλοφορήσει νέα έκδοση και άφησέ με να επιλέξω πότε θα γίνει η λήψη.",
"neverBody": "Μην ελέγχεις για ενημερώσεις. Μπορείτε πάντα να κάνεις έλεγχο χειροκίνητα στις Ρυθμίσεις.",
"onboardingTitle": "Ενημερώσεις εφαρμογής",
"onboardingBody": "Η εφαρμογή επιφάνειας εργασίας μπορεί πλέον να ενημερώνεται αυτόματα. Επιλέξτε πώς θέλετε να φτάνουν οι νέες εκδόσεις. Μπορείτε να αλλάξετε αυτό αργότερα στις Ρυθμίσεις, Ενημερώσεις.",
"onboardingManual": "Αυτό το αντίγραφο της εφαρμογής εγκαταστάθηκε με τρόπο που δεν επιτρέπει αυτόματη ενημέρωση, οπότε το Termix θα σας ενημερώνει όταν κυκλοφορεί νέα έκδοση με σύνδεσμο για λήψη.",
"status": "Έκδοση {{version}}",
"statusIdle": "Δεν έχει γίνει έλεγχος ακόμη",
"statusChecking": "Έλεγχος για ενημερώσεις",
"statusAvailable": "Η έκδοση {{version}} είναι διαθέσιμη",
"statusDownloading": "Λήψη {{version}} ({{progress}}%)",
"statusReady": "Η έκδοση {{version}} είναι έτοιμη. Επανεκκινήστε για εγκατάσταση.",
"statusUpToDate": "Έχετε την πιο πρόσφατη έκδοση",
"statusError": "Αδυναμία ελέγχου για ενημερώσεις. Δοκιμάστε ξανά αργότερα.",
"checkNow": "Έλεγχος τώρα",
"download": "Λήψη",
"restart": "Επανεκκίνηση τώρα",
"later": "Αργότερα",
"available": "Το Termix {{version}} είναι διαθέσιμο",
"manualHint": "Κάντε λήψη από τη σελίδα κυκλοφορίας και εγκαταστήστε το πάνω από αυτό.",
"ready": "Το Termix {{version}} είναι έτοιμο για εγκατάσταση",
"readyHint": "Εγκαθίσταται την επόμενη φορά που θα επανεκκινήσει το Termix."
},
"nav": {
"home": "Αρχική",
"terminal": "Τερματικό",
@@ -1127,7 +1096,6 @@
"databaseConnectionFailed": "Αποτυχία σύνδεσης με τον διακομιστή βάσης δεδομένων",
"embeddedServerPortInUse": "Η θύρα {{port}} χρησιμοποιείται ήδη από ένα άλλο πρόγραμμα. Συνήθως πρόκειται για ένα Docker container του Termix ή μια διαδικασία του Termix από προηγούμενη συνεδρία. Κλείστε το και επανεκκινήστε το Termix.",
"embeddedServerPortInUseUnknownPort": "Μία από τις θύρες που χρειάζεται το Termix χρησιμοποιείται ήδη από ένα άλλο πρόγραμμα. Κλείστε ό,τι τη χρησιμοποιεί και επανεκκινήστε το Termix.",
"embeddedServerOldDatabase": "Τα τοπικά σας δεδομένα προέρχονται από την έκδοση Termix 2.8 ή παλαιότερη και πρέπει πρώτα να περάσουν από την έκδοση 2.9. Εγκαταστήστε την Termix 2.9.1, ανοίξτε την μία φορά ώστε να μετακινηθούν τα δεδομένα σας και στη συνέχεια ενημερώστε ξανά σε αυτή την έκδοση.",
"embeddedServerCrashed": "Ο τοπικός διακομιστής σταμάτησε απροσδόκητα. Επανεκκινήστε το Termix και ελέγξτε το αρχείο καταγραφής της επιφάνειας εργασίας αν αυτό συνεχίζεται.",
"resetCodeSent": "Ο κωδικός επαναφοράς στάλθηκε στα αρχεία καταγραφής του Docker",
"codeVerified": "Ο κωδικός επαληθεύτηκε επιτυχώς",
@@ -1900,23 +1868,19 @@
"tabs": {
"installed": "Εγκατεστημένα",
"browse": "Περιήγηση",
"updates": "Ενημερώσεις",
"registries": "Μητρώα"
"updates": "Ενημερώσεις"
},
"status": {
"summary": "{{installed}} εγκατεστημένα, {{running}} εκτελούνται",
"running": "Εν ενεργεία",
"disabled": "Απενεργοποιημένο",
"failed": "Διακόπηκε απροσδόκητα",
"blocked": "Περιμένει άλλο plugin",
"server": "Τρέχει στον διακομιστή σας"
"blocked": "Περιμένει άλλο plugin"
},
"groups": {
"running": "Εν ενεργεία",
"notRunning": "Δεν εκτελούνται",
"onServer": "Στον διακομιστή σας"
"notRunning": "Δεν εκτελούνται"
},
"runsOnServerHint": "Αυτό το πρόσθετο τρέχει μόνο στον διακομιστή σας, οπότε παραμένει απενεργοποιημένο στην εφαρμογή επιφάνειας εργασίας. Συνεχίζει να λειτουργεί εκεί.",
"sort": {
"popular": "Πιο δημοφιλή",
"name": "Όνομα",
@@ -1934,7 +1898,7 @@
"version": "Έκδοση",
"status": "Κατάσταση",
"category": "Κατηγορία",
"downloads": "Λήψεις"
"installs": "Εγκαταστάσεις"
},
"risk": {
"critical": "Κρίσιμο",
@@ -2086,47 +2050,8 @@
"noneInstalled": "Δεν έχουν εγκατασταθεί προσθέματα ακόμη. Περιηγηθείτε για να προσθέσετε μερικά.",
"nothingHere": "Τίποτα εδώ.",
"nothingHereHint": "Δοκιμάστε άλλη κατηγορία ή αναζήτηση.",
"showInstalled": "Εμφάνιση εγκατεστημένων",
"allInstalled": "Όλα εδώ είναι ήδη εγκατεστημένα.",
"allInstalledHint": "Ενεργοποιήστε την επιλογή «Εμφάνιση εγκατεστημένων» για να τα δείτε.",
"communitySoon": "Τα προσθέματα κοινότητας θα έρθουν σε μελλοντική ενημέρωση. Οι δημιουργοί προσθέτων μπορούν ήδη να υποβάλουν τα δικά τους στο μητρώο κοινότητας.",
"communitySubmit": "Πώς να υποβάλετε",
"registries": {
"intro": "Τα μητρώα είναι λίστες προσθέτων που μπορείτε να εγκαταστήσετε. Το επίσημο είναι πάντα ενεργό. Μπορείτε να ενεργοποιήσετε το μητρώο της κοινότητας ή να προσθέσετε το δικό σας.",
"hostYourOwn": "Φιλοξενήστε το δικό σας μητρώο",
"add": "Προσθήκη μητρώου",
"addTitle": "Προσθήκη μητρώου",
"addHint": "Επικολλήστε τον σύνδεσμο στο index.json του μητρώου. Το Termix το διαβάζει και εμφανίζει το κλειδί με το οποίο υπογράφει τα πρόσθετα. Προσθέστε μόνο μητρώα από άτομα που εμπιστεύεστε.",
"urlLabel": "URL ευρετηρίου",
"check": "Έλεγχος",
"addConfirm": "Εμπιστοσύνη και προσθήκη",
"added": "Προστέθηκε το {{name}}",
"customWarning": "Τα πρόσθετα από αυτό το μητρώο δεν ελέγχονται από την ομάδα του Termix. Μόνο ο ιδιοκτήτης του μητρώου αποφασίζει τι περιέχει. Κάθε λήψη πρέπει να υπογράφεται από το παραπάνω κλειδί.",
"keyFingerprint": "Κλειδί {{keyId}}",
"pluginCount_one": "{{count}} πρόσθετο",
"pluginCount_other": "{{count}} πρόσθετα",
"officialName": "Επίσημο",
"communityName": "Κοινότητας",
"alwaysOn": "Πάντα ενεργό",
"communityHint": "Πρόσθετα που δημιουργήθηκαν από άλλα άτομα. Κάθε έκδοση ελέγχεται από άνθρωπο και από αυτοματοποιημένους ελέγχους πριν καταχωρηθεί.",
"communityConfirmTitle": "Ενεργοποίηση προσθέτων κοινότητας;",
"communityConfirmBody": "Τα πρόσθετα κοινότητας δημιουργούνται από άλλα άτομα, όχι από την ομάδα του Termix. Κάθε έκδοση ελέγχεται από άνθρωπο και από αυτοματοποιημένους ελέγχους πριν καταχωρηθεί, αλλά μπορεί να περάσουν λάθη. Εγκαταστήστε μόνο πρόσθετα που εμπιστεύεστε και ελέγξτε τι ζητάει το καθένα.",
"communityConfirm": "Ενεργοποίηση",
"communityBadge": "Κοινότητας",
"communityBadgeHint": "Από το μητρώο κοινότητας. Δημιουργήθηκε από άλλα άτομα και ελέγχθηκε πριν καταχωρηθεί.",
"customBadge": "Προσαρμοσμένο",
"customBadgeHint": "Από το {{name}}, ένα μητρώο που πρόσθεσε ένας διαχειριστής. Δεν ελέγχεται από την ομάδα του Termix.",
"remove": "Αφαίρεση",
"removeTitle": "Αφαίρεση του {{name}};",
"removeBody": "Τα πρόσθετά του δεν θα εμφανίζονται πλέον στην ενότητα Αναζήτηση. Μπορείτε να το προσθέσετε ξανά αργότερα.",
"removed": "Αφαιρέθηκε το {{name}}",
"inUse": "Απεγκαταστήστε πρώτα τα πρόσθετα από το {{name}}: {{list}}",
"changeFailed": "Αδυναμία αλλαγής του καταλόγου: {{error}}",
"loadFailed": "Αδυναμία φόρτωσης των καταλόγων: {{error}}",
"unreachable": "Αδυναμία ανάγνωσης: {{error}}",
"filter": "Κατάλογος",
"allRegistries": "Όλοι οι κατάλογοι",
"browseHint": "Ενεργοποιήστε τα πρόσθετα της κοινότητας ή προσθέστε τον δικό σας κατάλογο στην καρτέλα Κατάλογοι."
},
"upToDate": "Όλα είναι ενημερωμένα.",
"lastChecked": "Τελευταίος έλεγχος {{time}}",
"updatesReady_one": "{{count}} ενημέρωση έτοιμη.",
@@ -2149,8 +2074,11 @@
"signedOnly": "Το TERMIX_REQUIRE_SIGNED_PLUGINS είναι ορισμένο, οπότε η εγκατάσταση από αρχείο παραμένει μπλοκαρισμένη."
},
"count": {
"active_one": "{{formatted}} ενεργή εγκατάσταση",
"active_other": "{{formatted}} ενεργές εγκαταστάσεις",
"downloads_one": "{{formatted}} λήψη",
"downloads_other": "{{formatted}} λήψεις",
"activeHint": "Παραδείγματα που ανέφεραν ότι αυτό το πρόσθετο ήταν ενεργοποιημένο την τελευταία εβδομάδα. Τα παραδείγματα με τις στατιστικές χρήσης απενεργοποιημένες δεν μετρώνται.",
"downloadsHint": "Πόσες φορές κατεβάστηκε μια έκδοση. Αυτό δεν είναι ο αριθμός των εγκαταστάσεων."
},
"unverified": "Μη επαληθευμένο",
+9 -81
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Vinculado a {{server}}",
"pluginsDocsLink": "Lee sobre cada uno"
},
"desktopUpdates": {
"title": "Aplicación de escritorio",
"mode": "Actualizaciones",
"modeHint": "Cómo obtiene esta aplicación nuevas versiones.",
"manualModeHint": "Esta copia no puede actualizarse automáticamente, por lo que Termix solo te avisará cuando haya una nueva versión disponible.",
"modeAutomatic": "Automática",
"modePrompt": "Preguntar primero",
"modeNever": "Nunca",
"automaticBody": "Descarga las nuevas versiones en segundo plano e instálalas cuando reinicies.",
"promptBody": "Avísame cuando haya una nueva versión y déjame elegir cuándo descargarla.",
"neverBody": "No buscar actualizaciones. Puedes comprobarlo manualmente en Configuración.",
"onboardingTitle": "Actualizaciones de la aplicación",
"onboardingBody": "La aplicación de escritorio ahora puede actualizarse automáticamente. Elige cómo quieres recibir las nuevas versiones. Puedes cambiar esto más tarde en Configuración, Actualizaciones.",
"onboardingManual": "Esta copia de la aplicación se instaló de una forma que no permite la actualización automática, por lo que Termix te avisará cuando haya una nueva versión con un enlace para descargarla.",
"status": "Versión {{version}}",
"statusIdle": "Aún no se ha comprobado",
"statusChecking": "Buscando actualizaciones",
"statusAvailable": "La versión {{version}} está disponible",
"statusDownloading": "Descargando {{version}} ({{progress}}%)",
"statusReady": "La versión {{version}} está lista. Reinicia para instalarla.",
"statusUpToDate": "Tienes la última versión",
"statusError": "No se ha podido buscar actualizaciones. Inténtalo de nuevo más tarde.",
"checkNow": "Comprobar ahora",
"download": "Descargar",
"restart": "Reiniciar ahora",
"later": "Más tarde",
"available": "Termix {{version}} está disponible",
"manualHint": "Descárgalo desde la página de lanzamientos e instálalo sobre esta versión.",
"ready": "Termix {{version}} está listo para instalar",
"readyHint": "Se instalará la próxima vez que reinicies Termix."
},
"nav": {
"home": "Inicio",
"terminal": "Terminal",
@@ -1141,7 +1110,6 @@
"databaseConnectionFailed": "Error al conectarse al servidor de base de datos",
"embeddedServerPortInUse": "El puerto {{port}} ya está en uso por otro programa. Por lo general, se trata de un contenedor Docker de Termix o de un proceso residual de Termix de una sesión anterior. Ciérrelo y reinicie Termix.",
"embeddedServerPortInUseUnknownPort": "Uno de los puertos que necesita Termix ya está en uso por otro programa. Cierre lo que lo esté usando y reinicie Termix.",
"embeddedServerOldDatabase": "Tus datos locales son de Termix 2.8 o una versión anterior y deben pasar primero por la versión 2.9. Instala Termix 2.9.1, ábrelo una vez para que pueda migrar tus datos y, a continuación, actualiza a esta versión.",
"embeddedServerCrashed": "El servidor local se detuvo de forma inesperada. Reinicie Termix y consulte el registro del escritorio si el problema persiste.",
"resetCodeSent": "Código de restablecimiento enviado a los registros de Docker",
"codeVerified": "Código verificado correctamente",
@@ -1924,23 +1892,19 @@
"tabs": {
"installed": "Instalados",
"browse": "Explorar",
"updates": "Actualizaciones",
"registries": "Registros"
"updates": "Actualizaciones"
},
"status": {
"summary": "{{installed}} instalados, {{running}} en ejecución",
"running": "En ejecución",
"disabled": "Desactivado",
"failed": "Detenido inesperadamente",
"blocked": "Esperando a otro complemento",
"server": "Se ejecuta en tu servidor"
"blocked": "Esperando a otro complemento"
},
"groups": {
"running": "En ejecución",
"notRunning": "No en ejecución",
"onServer": "En tu servidor"
"notRunning": "No en ejecución"
},
"runsOnServerHint": "Este complemento solo se ejecuta en tu servidor, por lo que permanece desactivado en la aplicación de escritorio. Sigue funcionando allí.",
"sort": {
"popular": "Más populares",
"name": "Nombre",
@@ -1958,7 +1922,7 @@
"version": "Versión",
"status": "Estado",
"category": "Categoría",
"downloads": "Descargas"
"installs": "Instalaciones"
},
"risk": {
"critical": "Crítico",
@@ -2126,48 +2090,8 @@
"noneInstalled": "Aún no hay complementos instalados. Explora para añadir algunos.",
"nothingHere": "No hay nada aquí.",
"nothingHereHint": "Prueba con otra categoría o realiza una búsqueda.",
"showInstalled": "Mostrar instalados",
"allInstalled": "Todo lo que hay aquí ya está instalado.",
"allInstalledHint": "Activa Mostrar instalados para verlos.",
"communitySoon": "Los complementos de la comunidad llegarán en una actualización futura. Los autores de complementos ya pueden enviar los suyos al registro de la comunidad.",
"communitySubmit": "Cómo enviar",
"registries": {
"intro": "Los registros son listas de complementos que puedes instalar. El oficial siempre está activado. Puedes activar el registro de la comunidad o añadir el tuyo propio.",
"hostYourOwn": "Aloja tu propio registro",
"add": "Añadir registro",
"addTitle": "Añadir un registro",
"addHint": "Pega el enlace al index.json del registro. Termix lo leerá y mostrará la clave con la que firma los complementos. Solo añade registros de personas en las que confíes.",
"urlLabel": "URL del índice",
"check": "Comprobar",
"addConfirm": "Confiar y añadir",
"added": "Se ha añadido {{name}}",
"customWarning": "Los complementos de este registro no han sido revisados por el equipo de Termix. Solo el propietario del registro decide qué contiene. Cada descarga debe estar firmada con la clave anterior.",
"keyFingerprint": "Clave {{keyId}}",
"pluginCount_one": "{{count}} complemento",
"pluginCount_many": "{{count}} complementos",
"pluginCount_other": "{{count}} complementos",
"officialName": "Oficial",
"communityName": "Comunidad",
"alwaysOn": "Siempre activado",
"communityHint": "Complementos creados por otras personas. Cada versión es revisada por una persona y mediante comprobaciones automáticas antes de ser publicada.",
"communityConfirmTitle": "¿Activar los complementos de la comunidad?",
"communityConfirmBody": "Los complementos de la comunidad son creados por otras personas, no por el equipo de Termix. Cada versión es revisada por una persona y mediante comprobaciones automáticas antes de ser publicada, pero aún pueden pasar errores. Solo instala complementos en los que confíes y revisa lo que solicita cada uno.",
"communityConfirm": "Activar",
"communityBadge": "Comunidad",
"communityBadgeHint": "Del registro de la comunidad. Creado por otras personas y revisado antes de ser publicado.",
"customBadge": "Personalizado",
"customBadgeHint": "De {{name}}, un registro añadido por un administrador. No revisado por el equipo de Termix.",
"remove": "Eliminar",
"removeTitle": "¿Eliminar {{name}}?",
"removeBody": "Sus complementos ya no aparecerán en Explorar. Puedes volver a añadirlo más tarde.",
"removed": "{{name}} eliminado",
"inUse": "Desinstala primero los complementos de {{name}}: {{list}}",
"changeFailed": "No se ha podido modificar el registro: {{error}}",
"loadFailed": "No se han podido cargar los registros: {{error}}",
"unreachable": "No se ha podido leer: {{error}}",
"filter": "Registro",
"allRegistries": "Todos los registros",
"browseHint": "Activa los complementos de la comunidad o añade tu propio registro en la pestaña Registros."
},
"upToDate": "Todo está actualizado.",
"lastChecked": "Última comprobación: {{time}}",
"updatesReady_one": "{{count}} actualización lista.",
@@ -2192,9 +2116,13 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS está activado, por lo que la instalación desde archivo sigue bloqueada."
},
"count": {
"active_one": "{{formatted}} instalación activa",
"active_many": "{{formatted}} instalaciones activas",
"active_other": "{{formatted}} instalaciones activas",
"downloads_one": "{{formatted}} descarga",
"downloads_many": "{{formatted}} descargas",
"downloads_other": "{{formatted}} descargas",
"activeHint": "Instancias que informaron que este complemento estaba activado durante la última semana. Las instancias con las estadísticas de uso desactivadas no se cuentan.",
"downloadsHint": "El número de veces que se descargó una versión. Esto no es el número de instalaciones."
},
"unverified": "No verificado",
+8 -80
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Seotud {{server}}-iga",
"pluginsDocsLink": "Loe igaühe kohta"
},
"desktopUpdates": {
"title": "Töölaukra rakendus",
"mode": "Uuendused",
"modeHint": "Kuidas see rakendus uusi versioone saab.",
"manualModeHint": "See koopia ei saa ennast uuendada, seega teatab Termix sulle ainult siis, kui uus versioon on välja antud.",
"modeAutomatic": "Automaatne",
"modePrompt": "Küsi esmalt",
"modeNever": "Mitte kunagi",
"automaticBody": "Laadi uued versioonid taustal alla ja paigalda need taaskäivitamisel.",
"promptBody": "Teata mulle, kui uus versioon on saadaval, ja lase mul valida, millal selle alla laadida.",
"neverBody": "Ärge otsige uuendusi. Saate ikkagi käsitsi Sätetes kontrollida.",
"onboardingTitle": "Rakenduse uuendused",
"onboardingBody": "Töölauarakendus saab nüüd ennast uuendada. Vali, kuidas soovid uusi versioone saada. Seda saad hiljem muuta Sätetes, Uuendused.",
"onboardingManual": "See rakenduse koopia on paigaldatud viisil, mis ei võimalda eneseuuendamist, seega teatab Termix sulle uue versiooni saadavusest koos allalaadimise lingiga.",
"status": "Versioon {{version}}",
"statusIdle": "Pole veel kontrollitud",
"statusChecking": "Uuenduste otsimine",
"statusAvailable": "Versioon {{version}} on saadaval",
"statusDownloading": "Laadin alla versiooni {{version}} ({{progress}}%)",
"statusReady": "Versioon {{version}} on valmis. Taaskäivita, et see paigaldada.",
"statusUpToDate": "Sul on uusim versioon",
"statusError": "Uuenduste kontrollimine ei õnnestunud. Proovi hiljem uuesti.",
"checkNow": "Kontrolli nüüd",
"download": "Laadi alla",
"restart": "Taaskäivita nüüd",
"later": "Hiljem",
"available": "Termix {{version}} on saadaval",
"manualHint": "Laadi see vabastusleheküljelt alla ja paigalda see selle peale.",
"ready": "Termix {{version}} on paigaldamiseks valmis",
"readyHint": "See paigaldatakse järgmisel Termixi taaskäivitamisel."
},
"nav": {
"home": "Avaleht",
"terminal": "Terminal",
@@ -1127,7 +1096,6 @@
"databaseConnectionFailed": "Andmebaasi serveriga ühendumine ebaõnnestus",
"embeddedServerPortInUse": "Porti {{port}} kasutab juba teine programm. Tavaliselt on tegemist Termixi Docker-i konteineriga või eelmisest seansist allesjäänud Termixi protsessiga. Sulge see ja käivita Termix uuesti.",
"embeddedServerPortInUseUnknownPort": "Üht Termixi jaoks vajalikust portidest kasutab juba teine programm. Sulge see programm ja käivita Termix uuesti.",
"embeddedServerOldDatabase": "Teie kohalikud andmed pärinevad Termixi versioonist 2.8 või vanemast ja tuleb esmalt läbida versioon 2.9. Paigaldage Termix 2.9.1, avage see üks kord, et andmed saaksid ümber paigutada, ja uuendage seejärel uuesti sellele versioonile.",
"embeddedServerCrashed": "Lokaalne server peatus ootamatult. Käivita Termix uuesti ja kui probleem püsib, vaata töölaua logifaili.",
"resetCodeSent": "Lähtestuskood saadetud Docker-i logidesse",
"codeVerified": "Kood edukalt kinnitatud",
@@ -1900,23 +1868,19 @@
"tabs": {
"installed": "Paigaldatud",
"browse": "Sirvi",
"updates": "Uuendused",
"registries": "Registrid"
"updates": "Uuendused"
},
"status": {
"summary": "{{installed}} paigaldatud, {{running}} käimas",
"running": "Käimas",
"disabled": "Keelatud",
"failed": "Peatati ootamatult",
"blocked": "Ootab teist pistikprogrammi",
"server": "Töötab sinu serveris"
"blocked": "Ootab teist pistikprogrammi"
},
"groups": {
"running": "Käimas",
"notRunning": "Ei tööta",
"onServer": "Sinu serveris"
"notRunning": "Ei tööta"
},
"runsOnServerHint": "See plugin töötab ainult sinu serveris, seega on see töölauarakenduses väljas. See töötab seal ikkagi.",
"sort": {
"popular": "Kõige populaarsemad",
"name": "Nimi",
@@ -1934,7 +1898,7 @@
"version": "Versioon",
"status": "Olek",
"category": "Kategooria",
"downloads": "Allalaadimised"
"installs": "Paigaldused"
},
"risk": {
"critical": "Kriitiline",
@@ -2086,47 +2050,8 @@
"noneInstalled": "Pistikmooduleid pole veel paigaldatud. Sirvige, et lisada mõned.",
"nothingHere": "Siin pole midagi.",
"nothingHereHint": "Proovige teist kategooriat või otsingut.",
"showInstalled": "Kuva paigaldatud",
"allInstalled": "Kõik siin on juba paigaldatud.",
"allInstalledHint": "Lülita sisse Kuva paigaldatud, et neid näha.",
"communitySoon": "Kogukonna pistikmoodulid ilmuvad hilisemas uuenduses. Pistikmooduli autorid saavad juba oma moodulid kogukonna registrisse esitada.",
"communitySubmit": "Kuidas esitada",
"registries": {
"intro": "Registrid on loendid plugindest, mida sa paigaldada. Ametlik on alati sees. Saad sisse lülitada kogukonna registri või lisada oma.",
"hostYourOwn": "Hosti oma registrit",
"add": "Lisa register",
"addTitle": "Lisa register",
"addHint": "Kleepi registri index.json-i link. Termix loeb selle ja kuvab võtme, millega ta plugineid allkirjastab. Lisa ainult registreid inimestelt, kellele usaldad.",
"urlLabel": "Indeksi URL",
"check": "Kontrolli",
"addConfirm": "Usalda ja lisa",
"added": "Lisatud {{name}}",
"customWarning": "Selle registri plugineid ei kontrolli Termixi meeskond. Ainult registri omanik otsustab, mis selles on. Iga allalaadimine peab olema ülaloleva võtmega allkirjastatud.",
"keyFingerprint": "Võti {{keyId}}",
"pluginCount_one": "{{count}} plugin",
"pluginCount_other": "{{count}} pluginit",
"officialName": "Ametlik",
"communityName": "Kogukond",
"alwaysOn": "Alati sees",
"communityHint": "Teiste inimeste poolt loodud plugined. Iga versioon kontrollitakse enne loetellu panemist inimese ja automatiseeritud kontrollide poolt.",
"communityConfirmTitle": "Lülita kogukonna plugined sisse?",
"communityConfirmBody": "Kogukonna plugined on loodud teiste inimeste poolt, mitte Termixi meeskonna poolt. Iga versioon kontrollitakse enne loetellu panemist inimese ja automatiseeritud kontrollide poolt, kuid vigu võib ikkagi läbi libiseda. Paigalda ainult plugineid, millele usaldad, ja kontrolli, mida igaüks küsib.",
"communityConfirm": "Lülita sisse",
"communityBadge": "Kogukond",
"communityBadgeHint": "Kogukonna registrilt. Loodud teiste inimeste poolt ja enne loetellu panemist kontrollitud.",
"customBadge": "Kohandatud",
"customBadgeHint": "Registrilt {{name}}, mille administraator on lisanud. Ei ole Termixi meeskonna poolt kontrollitud.",
"remove": "Eemalda",
"removeTitle": "Kas eemaldada {{name}}?",
"removeBody": "Selle registri pluginad ei ilmu enam brauseris. Saate selle hiljem uuesti lisada.",
"removed": "{{name}} eemaldatud",
"inUse": "Eemaldage kõigepealt {{name}} pluginad: {{list}}",
"changeFailed": "Registrit ei õnnestunud muuta: {{error}}",
"loadFailed": "Registreid ei õnnestunud laadida: {{error}}",
"unreachable": "Selle lugemine ei õnnestunud: {{error}}",
"filter": "Registri",
"allRegistries": "Kõik registrid",
"browseHint": "Lülitage sisse kogukonna pluginad või lisage oma registri Registrid-kaardil."
},
"upToDate": "Kõik on ajakohane.",
"lastChecked": "Viimati kontrollitud {{time}}",
"updatesReady_one": "{{count}} uuendus valmis.",
@@ -2149,8 +2074,11 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS on määratud, seega on failist paigaldamine blokeeritud."
},
"count": {
"active_one": "{{formatted}} aktiivne paigaldus",
"active_other": "{{formatted}} aktiivset paigaldust",
"downloads_one": "{{formatted}} allalaadimine",
"downloads_other": "{{formatted}} allalaadimist",
"activeHint": "Instantsid, mis on viimase nädala jooksul teatanud selle plugini sisselülitamisest. Kasutusstatistika väljalülitatud instantsid ei arvestata.",
"downloadsHint": "Kui mitu korda on väljaanne alla laaditud. See ei ole installide arv."
},
"unverified": "Kontrollimata",
+8 -80
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Linkitetty palvelimeen {{server}}",
"pluginsDocsLink": "Lue lisää jokaisesta"
},
"desktopUpdates": {
"title": "Työpöytäsovellus",
"mode": "Päivitykset",
"modeHint": "Kuinka tämä sovellus hankkii uusia versioita.",
"manualModeHint": "Tätä kopiota ei voi päivittää automaattisesti, joten Termix ilmoittaa vain, kun uusi versio on saatavilla.",
"modeAutomatic": "Automaattinen",
"modePrompt": "Kysy ensin",
"modeNever": "Ei koskaan",
"automaticBody": "Lataa uudet versiot taustalla ja asenna ne, kun käynnistät sovelluksen uudelleen.",
"promptBody": "Ilmoita, kun uusi versio on saatavilla, ja anna minun valita, milloin se ladataan.",
"neverBody": "Älä tarkista päivityksiä. Voit silti tarkistaa päivitykset manuaalisesti Asetuksista.",
"onboardingTitle": "Sovelluspäivitykset",
"onboardingBody": "Työpöytäsovellus voi nyt päivittää itsensä. Valitse, miten haluat uusien versioiden tulevan. Voit muuttaa tätä myöhemmin Asetukset > Päivitykset -kohdasta.",
"onboardingManual": "Tämä sovelluksen kopio on asennettu tavalla, joka ei tue automaattista päivitystä, joten Termix ilmoittaa, kun uusi versio on saatavilla, ja antaa linkin sen lataamiseen.",
"status": "Versio {{version}}",
"statusIdle": "Ei vielä tarkistettu",
"statusChecking": "Tarkistetaan päivityksiä",
"statusAvailable": "Versio {{version}} on saatavilla",
"statusDownloading": "Ladataan versiota {{version}} ({{progress}} %)",
"statusReady": "Versio {{version}} on valmis. Käynnistä uudelleen asentaaksesi sen.",
"statusUpToDate": "Sinulla on uusin versio",
"statusError": "Päivitysten tarkistus epäonnistui. Yritä myöhemmin uudelleen.",
"checkNow": "Tarkista nyt",
"download": "Lataa",
"restart": "Käynnistä uudelleen nyt",
"later": "Myöhemmin",
"available": "Termix {{version}} on saatavilla",
"manualHint": "Lataa se julkaisusivulta ja asenna se tämän päälle.",
"ready": "Termix {{version}} on valmis asennettavaksi",
"readyHint": "Se asennetaan seuraavan kerran, kun Termix käynnistetään uudelleen."
},
"nav": {
"home": "Koti",
"terminal": "Pääte",
@@ -1127,7 +1096,6 @@
"databaseConnectionFailed": "Yhteys tietokantapalvelimeen epäonnistui",
"embeddedServerPortInUse": "Porttia {{port}} käyttää jo toinen ohjelma. Kyseessä on yleensä Termixin Docker-kontti tai edellisestä istunnosta jäänyt Termix-prosessi. Sulje se ja käynnistä Termix uudelleen.",
"embeddedServerPortInUseUnknownPort": "Termixin tarvitsema portti on jo toisen ohjelman käytössä. Sulje porttia käyttävä ohjelma ja käynnistä Termix uudelleen.",
"embeddedServerOldDatabase": "Paikalliset tietosi ovat peräisin Termix 2.8 tai vanhemmasta versiosta, ja niiden on käyty ensin versiota 2.9. Asenna Termix 2.9.1, avaa se kerran, jotta se voi siirtää tietosi, ja päivitä sitten uudelleen tähän versioon.",
"embeddedServerCrashed": "Paikallinen palvelin pysähtyi odottamatta. Käynnistä Termix uudelleen ja tarkista työpöytäloki, jos ongelma toistuu.",
"resetCodeSent": "Palautuskoodi lähetetty Docker-lokeihin",
"codeVerified": "Koodi vahvistettu onnistuneesti",
@@ -1900,23 +1868,19 @@
"tabs": {
"installed": "Asennetut",
"browse": "Selaa",
"updates": "Päivitykset",
"registries": "Rekisterit"
"updates": "Päivitykset"
},
"status": {
"summary": "{{installed}} asennettu, {{running}} käynnissä",
"running": "Käynnissä",
"disabled": "Poistettu käytöstä",
"failed": "Pysähtyi odottamatta",
"blocked": "Odottaa toista lisäosaa",
"server": "Käynnistyy palvelimellasi"
"blocked": "Odottaa toista lisäosaa"
},
"groups": {
"running": "Käynnissä",
"notRunning": "Ei käynnissä",
"onServer": "Palvelimellasi"
"notRunning": "Ei käynnissä"
},
"runsOnServerHint": "Tämä lisäosa toimii vain palvelimellasi, joten se pysyy pois päältä työpöytäsovelluksessa. Se toimii silti palvelimella.",
"sort": {
"popular": "Suosituimmat",
"name": "Nimi",
@@ -1934,7 +1898,7 @@
"version": "Versio",
"status": "Tila",
"category": "Kategoria",
"downloads": "Lataukset"
"installs": "Asennukset"
},
"risk": {
"critical": "Kriittinen",
@@ -2086,47 +2050,8 @@
"noneInstalled": "Lisäosia ei ole vielä asennettu. Selaa ja lisää joitakin.",
"nothingHere": "Täällä ei ole mitään.",
"nothingHereHint": "Kokeile toista kategoriaa tai haku.",
"showInstalled": "Näytä asennetut",
"allInstalled": "Kaikki tässä on jo asennettu.",
"allInstalledHint": "Ota Näytä asennetut -vaihtoehto käyttöön nähdäksesi ne.",
"communitySoon": "Yhteisön lisäosat tulevat myöhemmässä päivityksessä. Lisäosan tekijät voivat jo lähettää lisäosansa yhteisön rekisteriin.",
"communitySubmit": "Miten lähetän",
"registries": {
"intro": "Rekisterit ovat listoja lisäosista, jotka voit asentaa. Virallinen rekisteri on aina käytössä. Voit ottaa käyttöön yhteisön rekisterin tai lisätä oman.",
"hostYourOwn": "Isännöi oma rekisterisi",
"add": "Lisää rekisteri",
"addTitle": "Lisää rekisteri",
"addHint": "Liitä linkki rekisterin index.json-tiedostoon. Termix lukee sen ja näyttää avaimen, jolla se allekirjoittaa lisäosat. Lisää vain rekistereitä luotettavista lähteistä.",
"urlLabel": "Hakemiston URL-osoite",
"check": "Tarkista",
"addConfirm": "Luota ja lisää",
"added": "Lisätty {{name}}",
"customWarning": "Tämän rekisterin lisäosia ei tarkasta Termixin tiimi. Vain rekisterin omistaja päättää, mitä se sisältää. Jokaisen latauksen on oltava yllä olevalla avaimella allekirjoitettu.",
"keyFingerprint": "Avain {{keyId}}",
"pluginCount_one": "{{count}} lisäosa",
"pluginCount_other": "{{count}} lisäosaa",
"officialName": "Virallinen",
"communityName": "Yhteisö",
"alwaysOn": "Aina käytössä",
"communityHint": "Muiden tekemiä lisäosia. Jokainen versio tarkistetaan henkilökohtaisesti ja automaattisin tarkistuksin ennen listauksia.",
"communityConfirmTitle": "Ota yhteisön lisäosat käyttöön?",
"communityConfirmBody": "Yhteisön lisäosat ovat muiden kuin Termixin tiimin tekemiä. Jokainen versio tarkistetaan henkilökohtaisesti ja automaattisin tarkistuksin ennen listauksia, mutta virheet voivat silti päästä läpi. Asenna vain luottamasi lisäosat ja tarkista, mitä kukin niistä pyytää.",
"communityConfirm": "Ota käyttöön",
"communityBadge": "Yhteisö",
"communityBadgeHint": "Yhteisön rekisteristä. Muun tekemä ja tarkistettu ennen listauksia.",
"customBadge": "Mukautettu",
"customBadgeHint": "Lähde: {{name}}, ylläpitäjän lisäämä rekisteri. Ei tarkastettu Termixin tiimin toimesta.",
"remove": "Poista",
"removeTitle": "Poistetaanko {{name}}?",
"removeBody": "Sen lisäosat eivät enää näy Selaa-osiossa. Voit lisätä sen myöhemmin uudelleen.",
"removed": "{{name}} poistettu",
"inUse": "Asenna lisäosat palvelimelta {{name}} ensin: {{list}}",
"changeFailed": "Rekisterin muuttaminen epäonnistui: {{error}}",
"loadFailed": "Rekistereitä ei voitu ladata: {{error}}",
"unreachable": "Sen lukeminen epäonnistui: {{error}}",
"filter": "Rekisteri",
"allRegistries": "Kaikki rekisterit",
"browseHint": "Ota yhteisön lisäosat käyttöön tai lisää oma rekisterisi Rekisterit-välilehdellä."
},
"upToDate": "Kaikki on ajan tasalla.",
"lastChecked": "Viimeksi tarkistettu {{time}}",
"updatesReady_one": "{{count}} päivitys valmis.",
@@ -2149,8 +2074,11 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS on määritetty, joten asennus tiedostosta pysyy estettynä."
},
"count": {
"active_one": "{{formatted}} aktiivinen asennus",
"active_other": "{{formatted}} aktiivista asennusta",
"downloads_one": "{{formatted}} lataus",
"downloads_other": "{{formatted}} latausta",
"activeHint": "Esimerkit, jotka ovat ilmoittaneet tämän lisäosan olevan käytössä viimeisen viikon aikana. Esimerkit, joissa käyttötilastot on poistettu käytöstä, eivät ole mukana laskussa.",
"downloadsHint": "Kuinka monta kertaa julkaisu on ladattu. Tämä ei ole asennusten määrää."
},
"unverified": "Varmentamaton",
+9 -81
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Lié à {{server}}",
"pluginsDocsLink": "En savoir plus sur chacun"
},
"desktopUpdates": {
"title": "Application de bureau",
"mode": "Mises à jour",
"modeHint": "Comment cette application reçoit les nouvelles versions.",
"manualModeHint": "Cette copie ne peut pas se mettre à jour automatiquement, donc Termix vous informe simplement lorsqu'une nouvelle version est disponible.",
"modeAutomatic": "Automatique",
"modePrompt": "Demander d'abord",
"modeNever": "Jamais",
"automaticBody": "Télécharger les nouvelles versions en arrière-plan et les installer au redémarrage.",
"promptBody": "M'informer lorsqu'une nouvelle version est disponible et me laisser choisir quand la télécharger.",
"neverBody": "Ne pas vérifier les mises à jour. Vous pouvez toujours vérifier manuellement dans les Paramètres.",
"onboardingTitle": "Mises à jour de l'application",
"onboardingBody": "L'application de bureau peut désormais se mettre à jour automatiquement. Choisissez comment vous souhaitez recevoir les nouvelles versions. Vous pourrez modifier ce paramètre plus tard dans Paramètres, Mises à jour.",
"onboardingManual": "Cette copie de l'application a été installée d'une manière qui ne permet pas les mises à jour automatiques, donc Termix vous informera lorsqu'une nouvelle version sera disponible avec un lien pour la télécharger.",
"status": "Version {{version}}",
"statusIdle": "Pas encore vérifié",
"statusChecking": "Recherche de mises à jour",
"statusAvailable": "La version {{version}} est disponible",
"statusDownloading": "Téléchargement de {{version}} ({{progress}}%)",
"statusReady": "La version {{version}} est prête. Redémarrez pour l'installer.",
"statusUpToDate": "Vous avez la dernière version",
"statusError": "Impossible de vérifier les mises à jour. Réessayez plus tard.",
"checkNow": "Vérifier maintenant",
"download": "Télécharger",
"restart": "Redémarrer maintenant",
"later": "Plus tard",
"available": "Termix {{version}} est disponible",
"manualHint": "Téléchargez-la depuis la page des versions et installez-la par-dessus celle-ci.",
"ready": "Termix {{version}} est prêt à être installé",
"readyHint": "Il sera installé au prochain redémarrage de Termix."
},
"nav": {
"home": "Accueil",
"terminal": "Terminal",
@@ -1141,7 +1110,6 @@
"databaseConnectionFailed": "Échec de la connexion au serveur de base de données",
"embeddedServerPortInUse": "Le port {{port}} est déjà utilisé par un autre programme. Il s'agit généralement d'un conteneur Docker Termix ou d'un processus Termix résidant d'une session précédente. Fermez-le, puis redémarrez Termix.",
"embeddedServerPortInUseUnknownPort": "L'un des ports requis par Termix est déjà utilisé par un autre programme. Fermez l'application qui l'utilise, puis redémarrez Termix.",
"embeddedServerOldDatabase": "Vos données locales proviennent de Termix 2.8 ou d'une version antérieure et doivent d'abord être migrées vers la version 2.9. Installez Termix 2.9.1, ouvrez-le une fois pour permettre la migration de vos données, puis mettez à jour vers cette version.",
"embeddedServerCrashed": "Le serveur local s'est arrêté de manière inattendue. Redémarrez Termix et consultez le journal du bureau si le problème persiste.",
"resetCodeSent": "Code de réinitialisation envoyé aux journaux Docker",
"codeVerified": "Code vérifié avec succès",
@@ -1924,23 +1892,19 @@
"tabs": {
"installed": "Installés",
"browse": "Parcourir",
"updates": "Mises à jour",
"registries": "Registries"
"updates": "Mises à jour"
},
"status": {
"summary": "{{installed}} installés, {{running}} en cours d'exécution",
"running": "En cours d'exécution",
"disabled": "Désactivé",
"failed": "Arrêt inattendu",
"blocked": "En attente d'un autre plugin",
"server": "Exécute sur votre serveur"
"blocked": "En attente d'un autre plugin"
},
"groups": {
"running": "En cours d'exécution",
"notRunning": "Non en cours d'exécution",
"onServer": "Sur votre serveur"
"notRunning": "Non en cours d'exécution"
},
"runsOnServerHint": "Ce plugin s'exécute uniquement sur votre serveur, il reste donc désactivé dans l'application de bureau. Il fonctionne toujours sur le serveur.",
"sort": {
"popular": "Les plus populaires",
"name": "Nom",
@@ -1958,7 +1922,7 @@
"version": "Version",
"status": "État",
"category": "Catégorie",
"downloads": "Téléchargements"
"installs": "Installations"
},
"risk": {
"critical": "Critique",
@@ -2126,48 +2090,8 @@
"noneInstalled": "Aucun plugin n'est installé. Parcourez la liste pour en ajouter.",
"nothingHere": "Rien ici.",
"nothingHereHint": "Essayez une autre catégorie ou une recherche.",
"showInstalled": "Afficher les installés",
"allInstalled": "Tout est déjà installé ici.",
"allInstalledHint": "Activez Afficher les installés pour les voir.",
"communitySoon": "Les plugins communautaires arriveront dans une future mise à jour. Les auteurs de plugins peuvent déjà soumettre les leurs au registre communautaire.",
"communitySubmit": "Comment soumettre",
"registries": {
"intro": "Les registries sont des listes de plugins que vous pouvez installer. Le registry officiel est toujours activé. Vous pouvez activer le registry communautaire ou ajouter le vôtre.",
"hostYourOwn": "Héberger votre propre registry",
"add": "Ajouter un registry",
"addTitle": "Ajouter un registry",
"addHint": "Collez le lien vers le fichier index.json du registry. Termix le lit et affiche la clé avec laquelle il signe les plugins. Ajoutez uniquement des registries provenant de sources de confiance.",
"urlLabel": "URL de l'index",
"check": "Vérifier",
"addConfirm": "Faire confiance et ajouter",
"added": "{{name}} ajouté",
"customWarning": "Les plugins de ce registry ne sont pas examinés par l'équipe Termix. Seul le propriétaire du registry décide de son contenu. Chaque téléchargement doit être signé par la clé ci-dessus.",
"keyFingerprint": "Clé {{keyId}}",
"pluginCount_one": "{{count}} plugin",
"pluginCount_many": "{{count}} plugins",
"pluginCount_other": "{{count}} plugins",
"officialName": "Officiel",
"communityName": "Communautaire",
"alwaysOn": "Toujours activé",
"communityHint": "Plugins créés par d'autres personnes. Chaque version est vérifiée par une personne et par des contrôles automatisés avant d'être listée.",
"communityConfirmTitle": "Activer les plugins communautaires ?",
"communityConfirmBody": "Les plugins communautaires sont créés par d'autres personnes, pas par l'équipe Termix. Chaque version est vérifiée par une personne et par des contrôles automatisés avant d'être listée, mais des erreurs peuvent parfois passer. Installez uniquement les plugins en qui vous avez confiance et vérifiez ce que chacun demande.",
"communityConfirm": "Activer",
"communityBadge": "Communautaire",
"communityBadgeHint": "Provenant du registry communautaire. Créé par d'autres personnes et examiné avant d'être listé.",
"customBadge": "Personnalisé",
"customBadgeHint": "Provenant de {{name}}, un registry ajouté par un administrateur. Non examiné par l'équipe Termix.",
"remove": "Supprimer",
"removeTitle": "Supprimer {{name}} ?",
"removeBody": "Ses plugins ne s'afficheront plus dans la section Parcourir. Vous pourrez le réajouter plus tard.",
"removed": "{{name}} supprimé",
"inUse": "Désinstallez d'abord les plugins de {{name}} : {{list}}",
"changeFailed": "Impossible de modifier le registre : {{error}}",
"loadFailed": "Impossible de charger les registres : {{error}}",
"unreachable": "Impossible de le lire : {{error}}",
"filter": "Registre",
"allRegistries": "Tous les registres",
"browseHint": "Activez les plugins communautaires ou ajoutez votre propre registre dans l'onglet Registres."
},
"upToDate": "Tout est à jour.",
"lastChecked": "Dernière vérification {{time}}",
"updatesReady_one": "{{count}} mise à jour disponible.",
@@ -2192,9 +2116,13 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS est défini, l'installation depuis un fichier reste donc bloquée."
},
"count": {
"active_one": "{{formatted}} installation active",
"active_many": "{{formatted}} installations actives",
"active_other": "{{formatted}} installations actives",
"downloads_one": "{{formatted}} téléchargement",
"downloads_many": "{{formatted}} téléchargements",
"downloads_other": "{{formatted}} téléchargements",
"activeHint": "Instances qui ont signalé ce plugin activé au cours de la dernière semaine. Les instances dont les statistiques d'utilisation sont désactivées ne sont pas comptées.",
"downloadsHint": "Nombre de fois qu'une version a été téléchargée. Il ne s'agit pas du nombre d'installations."
},
"unverified": "Non vérifié",
+9 -81
View File
@@ -233,37 +233,6 @@
"desktopLinked": "מקושר ל-{{server}}",
"pluginsDocsLink": "קרא על כל אחד מהם"
},
"desktopUpdates": {
"title": "אפליקציית שולחן עבודה",
"mode": "עדכונים",
"modeHint": "כך האפליקציה מקבלת גרסאות חדשות.",
"manualModeHint": "עותק זה אינו יכול לעדכן את עצמו, לכן Termix רק מודיע לך כאשר גרסה חדשה זמינה.",
"modeAutomatic": "אוטומטי",
"modePrompt": "שאל קודם",
"modeNever": "לעולם לא",
"automaticBody": "הורד גרסאות חדשות ברקע והתקן אותן בעת ההפעלה מחדש.",
"promptBody": "הודע לי כאשר גרסה חדשה זמינה ואפשר לי לבחור מתי להוריד אותה.",
"neverBody": "אל תבדוק אם יש עדכונים. עדיין ניתן לבדוק ידנית בהגדרות.",
"onboardingTitle": "עדכוני אפליקציה",
"onboardingBody": "אפליקציית שולחן העבודה יכולה כעת לעדכן את עצמה. בחר כיצד תרצה שגרסאות חדשות יגיעו. ניתן לשנות זאת מאוחר יותר בהגדרות, עדכונים.",
"onboardingManual": "עותק זה של האפליקציה הותקן בדרך שאינה מאפשרת עדכון עצמי, לכן Termix יודיע לך כאשר גרסה חדשה זמינה עם קישור להורדה.",
"status": "גרסה {{version}}",
"statusIdle": "טרם נבדק",
"statusChecking": "בודק אם יש עדכונים",
"statusAvailable": "גרסה {{version}} זמינה",
"statusDownloading": "מוריד את {{version}} ({{progress}}%)",
"statusReady": "גרסה {{version}} מוכנה. הפעל מחדש כדי להתקין.",
"statusUpToDate": "יש לך את הגרסה העדכנית ביותר",
"statusError": "לא ניתן לבדוק אם יש עדכונים. נסה שוב מאוחר יותר.",
"checkNow": "בדוק עכשיו",
"download": "הורד",
"restart": "הפעל מחדש עכשיו",
"later": "מאוחר יותר",
"available": "Termix {{version}} זמין",
"manualHint": "הורד אותו מדף השחרור והתקן אותו מעל זה.",
"ready": "Termix {{version}} מוכן להתקנה",
"readyHint": "הוא מותקן בפעם הבאה ש-Termix מופעל מחדש."
},
"nav": {
"home": "דף הבית",
"terminal": "טרמינל",
@@ -1141,7 +1110,6 @@
"databaseConnectionFailed": "החיבור לשרת המסד נתונים נכשל",
"embeddedServerPortInUse": "הפורט {{port}} כבר בשימוש על ידי תוכנית אחרת. לרוב מדובר במיכל Docker של Termix או בתהליך Termix שנותר מהפעלה קודמת. סגור אותו, ואז הפעל מחדש את Termix.",
"embeddedServerPortInUseUnknownPort": "אחד מהפורטים ש-Termix זקוק להם כבר בשימוש על ידי תוכנית אחרת. סגור את מה שמשתמש בו, ואז הפעל מחדש את Termix.",
"embeddedServerOldDatabase": "הנתונים המקומיים שלך הם מ-Termix 2.8 או קודם יותר, ועליהם לעבור דרך גרסה 2.9 תחילה. התקן את Termix 2.9.1, פתח אותו פעם אחת כדי שיוכל להעביר את הנתונים שלך, ואז עדכן שוב לגרסה זו.",
"embeddedServerCrashed": "השרת המקומי הופסק באופן בלתי צפוי. הפעל מחדש את Termix, ובדוק את יומן השולחן העבודה אם זה ממשיך לקרות.",
"resetCodeSent": "קוד איפוס נשלח ליומני Docker",
"codeVerified": "הקוד אומת בהצלחה",
@@ -1924,23 +1892,19 @@
"tabs": {
"installed": "מותקן",
"browse": "דפדוף",
"updates": "עדכונים",
"registries": "רשומות"
"updates": "עדכונים"
},
"status": {
"summary": "{{installed}} מותקנים, {{running}} פעילים",
"running": "פעיל",
"disabled": "מושבת",
"failed": "הופסק ללא ציפייה",
"blocked": "ממתין לתוסף אחר",
"server": "רץ על השרת שלך"
"blocked": "ממתין לתוסף אחר"
},
"groups": {
"running": "פעילים",
"notRunning": "לא פעילים",
"onServer": "על השרת שלך"
"notRunning": "לא פעילים"
},
"runsOnServerHint": "תוסף זה פועל רק על השרת שלך, לכן הוא נשאר כבוי באפליקציית שולחן העבודה. הוא עדיין עובד שם.",
"sort": {
"popular": "הפופולריים ביותר",
"name": "שם",
@@ -1958,7 +1922,7 @@
"version": "גרסה",
"status": "סטטוס",
"category": "קטגוריה",
"downloads": "הורדות"
"installs": "התקנות"
},
"risk": {
"critical": "קריטי",
@@ -2126,48 +2090,8 @@
"noneInstalled": "אין תוספים מותקנים עדיין. דפדף כדי להוסיף כמה.",
"nothingHere": "אין כאן כלום.",
"nothingHereHint": "נסה קטגוריה אחרת או חיפוש.",
"showInstalled": "הצג מותקנים",
"allInstalled": "הכל כאן כבר מותקן.",
"allInstalledHint": "הפעל את הצג מותקנים כדי לראות אותם.",
"communitySoon": "תוספי קהילה יגיעו בעדכון מאוחר יותר. יוצרי תוספים כבר יכולים להגיש את התוספים שלהם לרשם הקהילה.",
"communitySubmit": "איך להגיש",
"registries": {
"intro": "רשומות הן רשימות של תוספים שניתן להתקין. הרשומה הרשמית תמיד פעילה. ניתן להפעיל את רשומת הקהילה או להוסיף רשומה משלך.",
"hostYourOwn": "ארח רשומה משלך",
"add": "הוסף רשומה",
"addTitle": "הוסף רשומה",
"addHint": "הדבק את הקישור ל-index.json של הרשומה. Termix קורא אותו ומציג את המפתח שבו הוא חותם על תוספים. הוסף רק רשומות מאנשים שאתה סומך עליהם.",
"urlLabel": "כתובת אינדקס",
"check": "בדוק",
"addConfirm": "סמוך והוסף",
"added": "נוסף {{name}}",
"customWarning": "תוספים מרשומה זו אינם נבדקים על ידי צוות Termix. רק בעל הרשומה מחליט מה נכלל בה. כל הורדה חייבת להיות חתומה על ידי המפתח למעלה.",
"keyFingerprint": "מפתח {{keyId}}",
"pluginCount_one": "{{count}} תוסף",
"pluginCount_two": "{{count}} תוספים",
"pluginCount_other": "{{count}} תוספים",
"officialName": "רשמי",
"communityName": "קהילה",
"alwaysOn": "תמיד פעיל",
"communityHint": "תוספים שנוצרו על ידי אנשים אחרים. כל גרסה נבדקת על ידי אדם ועל ידי בדיקות אוטומטיות לפני שהיא מוצגת.",
"communityConfirmTitle": "להפעיל תוספי קהילה?",
"communityConfirmBody": "תוספי קהילה נוצרים על ידי אנשים אחרים, לא על ידי צוות Termix. כל גרסה נבדקת על ידי אדם ועל ידי בדיקות אוטומטיות לפני שהיא מוצגת, אך טעויות עדיין יכולות לחדור. התקן רק תוספים שאתה סומך עליהם ובדוק מה כל אחד מהם מבקש.",
"communityConfirm": "הפעל",
"communityBadge": "קהילה",
"communityBadgeHint": "מרשומת הקהילה. נוצר על ידי אנשים אחרים ונבדק לפני שהוצג.",
"customBadge": "מותאם אישית",
"customBadgeHint": "מ-{{name}}, רשומה שהוסיף מנהל. לא נבדק על ידי צוות Termix.",
"remove": "הסר",
"removeTitle": "להסיר את {{name}}?",
"removeBody": "התוספים שלו לא יופיעו עוד בדפדוף. תוכל להוסיף אותו שוב מאוחר יותר.",
"removed": "{{name}} הוסר",
"inUse": "הסר קודם את התוספים מ-{{name}}: {{list}}",
"changeFailed": "לא ניתן לשנות את הרשומה: {{error}}",
"loadFailed": "לא ניתן לטעון את הרשומות: {{error}}",
"unreachable": "לא ניתן לקרוא אותה: {{error}}",
"filter": "רשומה",
"allRegistries": "כל הרשומות",
"browseHint": "הפעל תוספים קהילתיים או הוסף רשומה משלך בלשונית רשומות."
},
"upToDate": "הכל מעודכן.",
"lastChecked": "בדיקה אחרונה {{time}}",
"updatesReady_one": "עדכון אחד מוכן.",
@@ -2192,9 +2116,13 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS מוגדר, אז התקנה מקובץ נשארת חסומה."
},
"count": {
"active_one": "{{formatted}} התקנה פעילה",
"active_two": "{{formatted}} התקנות פעילות",
"active_other": "{{formatted}} התקנות פעילות",
"downloads_one": "{{formatted}} הורדה",
"downloads_two": "{{formatted}} הורדות",
"downloads_other": "{{formatted}} הורדות",
"activeHint": "מארחים שדיווחו שהתוסף הזה מופעל בשבוע האחרון. מארחים עם סטטיסטיקות שימוש כבויות אינם נספרים.",
"downloadsHint": "כמה פעמים גרסה הורדה. זה לא מספר ההתקנות."
},
"unverified": "לא מאומת",
+8 -80
View File
@@ -233,37 +233,6 @@
"desktopLinked": "{{server}} से लिंक किया गया",
"pluginsDocsLink": "प्रत्येक के बारे में पढ़ें"
},
"desktopUpdates": {
"title": "डेस्कटॉप ऐप",
"mode": "अपडेट",
"modeHint": "यह ऐप नई संस्करण कैसे प्राप्त करता है।",
"manualModeHint": "यह कॉपी स्वयं अपडेट नहीं कर सकती, इसलिए Termix आपको केवल तभी बताता है जब कोई नया संस्करण उपलब्ध हो।",
"modeAutomatic": "स्वचालित",
"modePrompt": "पहले पूछें",
"modeNever": "कभी नहीं",
"automaticBody": "पृष्ठभूमि में नई संस्करण डाउनलोड करें और पुनरारंभ करने पर उन्हें इंस्टॉल करें।",
"promptBody": "मुझे बताएं जब कोई नया संस्करण उपलब्ध हो और मुझे डाउनलोड करने का समय चुनने दें।",
"neverBody": "अपडेट के लिए जांच न करें। आप अभी भी सेटिंग्स में मैन्युअल रूप से जांच सकते हैं।",
"onboardingTitle": "ऐप अपडेट",
"onboardingBody": "डेस्कटॉप ऐप अब स्वयं को अपडेट कर सकता है। चुनें कि आप नई संस्करण कैसे प्राप्त करना चाहते हैं। आप इसे बाद में सेटिंग्स, अपडेट में बदल सकते हैं।",
"onboardingManual": "इस ऐप की कॉपी ऐसे इंस्टॉल की गई थी कि यह स्वयं को अपडेट नहीं कर सकती, इसलिए Termix आपको एक नया संस्करण उपलब्ध होने पर डाउनलोड करने के लिए लिंक के साथ बताएगा।",
"status": "संस्करण {{version}}",
"statusIdle": "अभी तक जांच नहीं की गई",
"statusChecking": "अपडेट की जांच हो रही है",
"statusAvailable": "संस्करण {{version}} उपलब्ध है",
"statusDownloading": "{{version}} डाउनलोड हो रहा है ({{progress}}%)",
"statusReady": "संस्करण {{version}} तैयार है। इसे इंस्टॉल करने के लिए पुनरारंभ करें।",
"statusUpToDate": "आपके पास नवीनतम संस्करण है",
"statusError": "अपडेट की जांच नहीं हो सकी। कृपया बाद में पुनः प्रयास करें।",
"checkNow": "अभी जांचें",
"download": "डाउनलोड",
"restart": "अभी पुनरारंभ करें",
"later": "बाद में",
"available": "Termix {{version}} उपलब्ध है",
"manualHint": "इसे रिलीज पेज से डाउनलोड करें और इसे इस पर इंस्टॉल करें।",
"ready": "Termix {{version}} इंस्टॉल करने के लिए तैयार है",
"readyHint": "यह अगली बार जब Termix पुनरारंभ होगा तब इंस्टॉल होगा।"
},
"nav": {
"home": "होम",
"terminal": "टर्मिनल",
@@ -1127,7 +1096,6 @@
"databaseConnectionFailed": "डेटाबेस सर्वर से कनेक्ट करने में विफल",
"embeddedServerPortInUse": "पोर्ट {{port}} पहले से ही किसी अन्य प्रोग्राम द्वारा उपयोग में है। यह आमतौर पर Termix Docker कंटेनर या पिछले सत्र से बचा हुआ Termix प्रक्रिया होती है। इसे बंद करें, फिर Termix को पुनः आरंभ करें।",
"embeddedServerPortInUseUnknownPort": "Termix को आवश्यक एक पोर्ट पहले से ही किसी अन्य प्रोग्राम द्वारा उपयोग में है। जो भी इसे उपयोग कर रहा है उसे बंद करें, फिर Termix को पुनः आरंभ करें।",
"embeddedServerOldDatabase": "आपका स्थानीय डेटा Termix 2.8 या उससे पुरानी संस्करण का है और इसे पहले 2.9 से होकर गुजरना होगा। Termix 2.9.1 इंस्टॉल करें, इसे एक बार खोलें ताकि यह आपके डेटा को स्थानांतरित कर सके, फिर वापस इस संस्करण पर अपडेट करें।",
"embeddedServerCrashed": "स्थानीय सर्वर अचानक रुक गया। Termix को पुनः आरंभ करें, और यदि यह बार-बार होता है तो डेस्कटॉप लॉग की जांच करें।",
"resetCodeSent": "रीसेट कोड Docker लॉग में भेजा गया",
"codeVerified": "कोड सफलतापूर्वक सत्यापित",
@@ -1900,23 +1868,19 @@
"tabs": {
"installed": "इंस्टॉल किया गया",
"browse": "ब्राउज़ करें",
"updates": "अपडेट",
"registries": "रेजिस्ट्री"
"updates": "अपडेट"
},
"status": {
"summary": "{{installed}} इंस्टॉल, {{running}} चल रहे",
"running": "चल रहा है",
"disabled": "अक्षम",
"failed": "अप्रत्याशित रूप से रुका",
"blocked": "दूसरे प्लगइन का इंतज़ार कर रहा है",
"server": "आपके सर्वर पर चलता है"
"blocked": "दूसरे प्लगइन का इंतज़ार कर रहा है"
},
"groups": {
"running": "चल रहे",
"notRunning": "न चल रहे",
"onServer": "आपके सर्वर पर"
"notRunning": "न चल रहे"
},
"runsOnServerHint": "यह प्लगइन केवल आपके सर्वर पर चलता है, इसलिए यह डेस्कटॉप ऐप में बंद रहता है। यह वहां अभी भी काम करता है।",
"sort": {
"popular": "सबसे लोकप्रिय",
"name": "नाम",
@@ -1934,7 +1898,7 @@
"version": "संस्करण",
"status": "स्थिति",
"category": "श्रेणी",
"downloads": "डाउनलोड"
"installs": "इंस्टॉल"
},
"risk": {
"critical": "गंभीर",
@@ -2086,47 +2050,8 @@
"noneInstalled": "अभी तक कोई प्लगइन इंस्टॉल नहीं है। कुछ जोड़ने के लिए ब्राउज़ करें।",
"nothingHere": "यहाँ कुछ नहीं है।",
"nothingHereHint": "कोई और श्रेणी या खोज आज़माएं।",
"showInstalled": "इंस्टॉल किए गए दिखाएं",
"allInstalled": "यहां सब कुछ पहले से ही इंस्टॉल है।",
"allInstalledHint": "इन्हें देखने के लिए 'इंस्टॉल किए गए दिखाएं' को चालू करें।",
"communitySoon": "समुदाय प्लगइन बाद के अपडेट में आ रहे हैं। प्लगइन लेखक पहले ही अपने प्लगइन को समुदाय रजिस्ट्री में जमा कर सकते हैं।",
"communitySubmit": "जमा कैसे करें",
"registries": {
"intro": "रेजिस्ट्री उन प्लगइन की सूचियां हैं जिन्हें आप इंस्टॉल कर सकते हैं। आधिकारिक रेजिस्ट्री हमेशा चालू रहती है। आप कम्युनिटी रेजिस्ट्री को चालू कर सकते हैं या अपनी खुद की जोड़ सकते हैं।",
"hostYourOwn": "अपनी रेजिस्ट्री होस्ट करें",
"add": "रेजिस्ट्री जोड़ें",
"addTitle": "एक रेजिस्ट्री जोड़ें",
"addHint": "रेजिस्ट्री के index.json का लिंक पेस्ट करें। Termix इसे पढ़ता है और वह कुंजी दिखाता है जिससे यह प्लगइन को साइन करता है। केवल उन लोगों की रेजिस्ट्री जोड़ें जिन पर आप भरोसा करते हैं।",
"urlLabel": "इंडेक्स URL",
"check": "जांचें",
"addConfirm": "भरोसा करें और जोड़ें",
"added": "{{name}} जोड़ा गया",
"customWarning": "इस रेजिस्ट्री से प्लगइन Termix टीम द्वारा समीक्षित नहीं किए जाते हैं। केवल रेजिस्ट्री का मालिक तय करता है कि इसमें क्या है। हर डाउनलोड को ऊपर दी गई कुंजी से साइन किया जाना चाहिए।",
"keyFingerprint": "कुंजी {{keyId}}",
"pluginCount_one": "{{count}} प्लगइन",
"pluginCount_other": "{{count}} प्लगइन",
"officialName": "आधिकारिक",
"communityName": "कम्युनिटी",
"alwaysOn": "हमेशा चालू",
"communityHint": "अन्य लोगों द्वारा बनाए गए प्लगइन। प्रत्येक संस्करण को सूचीबद्ध करने से पहले एक व्यक्ति और स्वचालित जांच द्वारा जांचा जाता है।",
"communityConfirmTitle": "कम्युनिटी प्लगइन चालू करें?",
"communityConfirmBody": "कम्युनिटी प्लगइन अन्य लोगों द्वारा बनाए जाते हैं, Termix टीम द्वारा नहीं। प्रत्येक संस्करण को सूचीबद्ध करने से पहले एक व्यक्ति और स्वचालित जांच द्वारा जांचा जाता है, लेकिन गलतियां अभी भी हो सकती हैं। केवल उन प्लगइन को इंस्टॉल करें जिन पर आप भरोसा करते हैं और जांचें कि प्रत्येक क्या मांगता है।",
"communityConfirm": "चालू करें",
"communityBadge": "कम्युनिटी",
"communityBadgeHint": "कम्युनिटी रेजिस्ट्री से। अन्य लोगों द्वारा बनाया गया और सूचीबद्ध होने से पहले समीक्षित।",
"customBadge": "कस्टम",
"customBadgeHint": "{{name}} से, एक रेजिस्ट्री जो एक एडमिन ने जोड़ी थी। Termix टीम द्वारा समीक्षित नहीं।",
"remove": "हटाएं",
"removeTitle": "{{name}} हटाएं?",
"removeBody": "इसके प्लगइन्स अब ब्राउज़ में दिखाई नहीं देंगे। आप इसे बाद में फिर से जोड़ सकते हैं।",
"removed": "{{name}} हटा दिया गया",
"inUse": "पहले {{name}} से प्लगइन्स अनइंस्टॉल करें: {{list}}",
"changeFailed": "रेजिस्ट्री नहीं बदली जा सकी: {{error}}",
"loadFailed": "रेजिस्ट्रियां नहीं लोड की जा सकीं: {{error}}",
"unreachable": "इसे नहीं पढ़ा जा सका: {{error}}",
"filter": "रेजिस्ट्री",
"allRegistries": "सभी रेजिस्ट्रियां",
"browseHint": "कम्युनिटी प्लगइन्स चालू करें या रेजिस्ट्रियां टैब में अपनी रेजिस्ट्री जोड़ें।"
},
"upToDate": "सब कुछ अपडेटेड है।",
"lastChecked": "आखिरी बार {{time}} को जाँचा गया",
"updatesReady_one": "{{count}} अपडेट तैयार है।",
@@ -2149,8 +2074,11 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS सेट है, इसलिए फ़ाइल से इंस्टॉल करना ब्लॉक रहता है।"
},
"count": {
"active_one": "{{formatted}} सक्रिय इंस्टॉल",
"active_other": "{{formatted}} सक्रिय इंस्टॉल",
"downloads_one": "{{formatted}} डाउनलोड",
"downloads_other": "{{formatted}} डाउनलोड",
"activeHint": "पिछले सप्ताह में इस प्लगइन को चालू होने की रिपोर्ट करने वाले इंस्टेंस। उन इंस्टेंस की गिनती नहीं की जाती जिनमें उपयोग सांख्यिकी बंद है।",
"downloadsHint": "किसी रिलीज को कितनी बार डाउनलोड किया गया। यह इंस्टॉल की संख्या नहीं है।"
},
"unverified": "असत्यापित",
+9 -81
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Povezano s {{server}}",
"pluginsDocsLink": "Pročitajte o svakom od njih"
},
"desktopUpdates": {
"title": "Desktop aplikacija",
"mode": "Ažuriranja",
"modeHint": "Kako ova aplikacija dobiva nove verzije.",
"manualModeHint": "Ova kopija se ne može sama ažurirati, pa vas Termix samo obavještava kada je nova verzija dostupna.",
"modeAutomatic": "Automatski",
"modePrompt": "Pitaj prvo",
"modeNever": "Nikada",
"automaticBody": "Preuzmi nove verzije u pozadini i instaliraj ih pri ponovnom pokretanju.",
"promptBody": "Obavijesti me kada je nova verzija dostupna i dopusti mi da odaberem kada je preuzeti.",
"neverBody": "Ne provjeravaj za ažuriranja. I dalje možete ručno provjeriti u Postavkama.",
"onboardingTitle": "Ažuriranja aplikacije",
"onboardingBody": "Desktop aplikacija se sada može sama ažurirati. Odaberite kako želite da nove verzije stignu. Ovo možete kasnije promijeniti u Postavkama, Ažuriranja.",
"onboardingManual": "Ova kopija aplikacije instalirana je na način koji ne dopušta samostalno ažuriranje, pa će vas Termix obavijestiti kada je nova verzija dostupna s poveznicom za preuzimanje.",
"status": "Verzija {{version}}",
"statusIdle": "Još nije provjereno",
"statusChecking": "Provjera ažuriranja",
"statusAvailable": "Verzija {{version}} je dostupna",
"statusDownloading": "Preuzimanje {{version}} ({{progress}}%)",
"statusReady": "Verzija {{version}} je spremna. Ponovno pokrenite za instalaciju.",
"statusUpToDate": "Imate najnoviju verziju",
"statusError": "Nije moguće provjeriti ažuriranja. Pokušajte ponovno kasnije.",
"checkNow": "Provjeri sada",
"download": "Preuzmi",
"restart": "Ponovno pokreni sada",
"later": "Kasnije",
"available": "Termix {{version}} je dostupan",
"manualHint": "Preuzmite ga s stranice izdanja i instalirajte preko ove verzije.",
"ready": "Termix {{version}} je spreman za instalaciju",
"readyHint": "Instalirat će se sljedeći put kada se Termix ponovno pokrene."
},
"nav": {
"home": "Početna",
"terminal": "Terminal",
@@ -1141,7 +1110,6 @@
"databaseConnectionFailed": "Povezivanje s poslužiteljem baze podataka nije uspjelo",
"embeddedServerPortInUse": "Port {{port}} već koristi drugi program. To je obično Termix Docker kontejner ili preostali Termix proces iz prethodne sesije. Zatvorite ga, a zatim ponovno pokrenite Termix.",
"embeddedServerPortInUseUnknownPort": "Jedan od portova koji Termixu trebaju već koristi drugi program. Zatvorite program koji ga koristi, a zatim ponovno pokrenite Termix.",
"embeddedServerOldDatabase": "Vaši lokalni podaci potječu iz Termixa 2.8 ili starije verzije i moraju prvo proći kroz verziju 2.9. Instalirajte Termix 2.9.1, otvorite ga jednom kako bi mogao premjestiti vaše podatke, a zatim ponovno ažurirajte na ovu verziju.",
"embeddedServerCrashed": "Lokalni poslužitelj je neočekivano prestao raditi. Ponovno pokrenite Termix i provjerite dnevnik radne površine ako se to ponavlja.",
"resetCodeSent": "Kod za resetiranje poslan u Docker dnevnike",
"codeVerified": "Kod uspješno potvrđen",
@@ -1924,23 +1892,19 @@
"tabs": {
"installed": "Instalirano",
"browse": "Pregled",
"updates": "Ažuriranja",
"registries": "Registri"
"updates": "Ažuriranja"
},
"status": {
"summary": "{{installed}} instalirano, {{running}} pokrenuto",
"running": "Pokrenuto",
"disabled": "Onemogućeno",
"failed": "Neočekivano zaustavljeno",
"blocked": "Čeka drugi dodatak",
"server": "Radi na vašem poslužitelju"
"blocked": "Čeka drugi dodatak"
},
"groups": {
"running": "Pokrenuto",
"notRunning": "Nije pokrenuto",
"onServer": "Na vašem poslužitelju"
"notRunning": "Nije pokrenuto"
},
"runsOnServerHint": "Ovaj dodatak radi samo na vašem poslužitelju, pa je isključen u desktop aplikaciji. I dalje radi tamo.",
"sort": {
"popular": "Najpopularniji",
"name": "Naziv",
@@ -1958,7 +1922,7 @@
"version": "Verzija",
"status": "Status",
"category": "Kategorija",
"downloads": "Preuzimanja"
"installs": "Instalacije"
},
"risk": {
"critical": "Kritično",
@@ -2126,48 +2090,8 @@
"noneInstalled": "Još nema instaliranih dodataka. Pregledajte ih kako biste dodali neke.",
"nothingHere": "Ovdje nema ništa.",
"nothingHereHint": "Pokušajte s drugom kategorijom ili pretragom.",
"showInstalled": "Prikaži instalirane",
"allInstalled": "Sve ovdje je već instalirano.",
"allInstalledHint": "Uključite Prikaži instalirane da ih vidite.",
"communitySoon": "Društveni dodaci dolaze u kasnijem ažuriranju. Autori dodataka već mogu predložiti svoje dodatke u zajednički registar.",
"communitySubmit": "Kako predložiti",
"registries": {
"intro": "Registri su popisi dodataka koje možete instalirati. Službeni je uvijek uključen. Možete uključiti zajednički registar ili dodati vlastiti.",
"hostYourOwn": "Hostajte vlastiti registar",
"add": "Dodaj registar",
"addTitle": "Dodaj registar",
"addHint": "Zalijepite poveznicu na index.json registra. Termix ga čita i prikazuje ključ kojim potpisuje dodatke. Dodajte samo registre od ljudi kojima vjerujete.",
"urlLabel": "URL indeksa",
"check": "Provjeri",
"addConfirm": "Vjeruj i dodaj",
"added": "Dodano {{name}}",
"customWarning": "Dodaci iz ovog registra nisu pregledani od strane Termix tima. Samo vlasnik registra odlučuje što se nalazi u njemu. Svako preuzimanje mora biti potpisano ključem iznad.",
"keyFingerprint": "Ključ {{keyId}}",
"pluginCount_one": "{{count}} dodatak",
"pluginCount_few": "{{count}} dodatka",
"pluginCount_other": "{{count}} dodataka",
"officialName": "Službeni",
"communityName": "Zajednica",
"alwaysOn": "Uvijek uključen",
"communityHint": "Dodaci koje su napravili drugi ljudi. Svaka verzija je provjerena od strane osobe i automatiziranim provjerama prije nego što bude navedena.",
"communityConfirmTitle": "Uključiti dodatke zajednice?",
"communityConfirmBody": "Dodatke zajednice prave drugi ljudi, a ne Termix tim. Svaka verzija je provjerena od strane osobe i automatiziranim provjerama prije nego što bude navedena, ali greške se mogu probiti. Instalirajte samo dodatke kojima vjerujete i provjerite što svaki od njih traži.",
"communityConfirm": "Uključi",
"communityBadge": "Zajednica",
"communityBadgeHint": "Iz registra zajednice. Napravili su ga drugi ljudi i pregledan je prije nego što je naveden.",
"customBadge": "Prilagođeno",
"customBadgeHint": "Iz {{name}}, registra koji je dodao administrator. Nije pregledan od strane Termix tima.",
"remove": "Ukloni",
"removeTitle": "Ukloniti {{name}}?",
"removeBody": "Njegovi dodaci više se neće prikazivati u Pregledu. Možete ga ponovno dodati kasnije.",
"removed": "Uklonjen {{name}}",
"inUse": "Prvo deinstalirajte dodatke iz {{name}}: {{list}}",
"changeFailed": "Nije moguće promijeniti registar: {{error}}",
"loadFailed": "Nije moguće učitati registre: {{error}}",
"unreachable": "Nije moguće pročitati: {{error}}",
"filter": "Registar",
"allRegistries": "Svi registri",
"browseHint": "Uključite zajedničke dodatke ili dodajte vlastiti registar na kartici Registri."
},
"upToDate": "Sve je ažurirano.",
"lastChecked": "Zadnja provjera {{time}}",
"updatesReady_one": "{{count}} ažuriranje spremno.",
@@ -2192,9 +2116,13 @@
"signedOnly": "Postavljena je varijabla TERMIX_REQUIRE_SIGNED_PLUGINS, stoga je instaliranje iz datoteke i dalje blokirano."
},
"count": {
"active_one": "{{formatted}} aktivna instalacija",
"active_few": "{{formatted}} aktivne instalacije",
"active_other": "{{formatted}} aktivnih instalacija",
"downloads_one": "{{formatted}} preuzimanje",
"downloads_few": "{{formatted}} preuzimanja",
"downloads_other": "{{formatted}} preuzimanja",
"activeHint": "Instancije koje su prijavile da je ovaj dodatak uključen tijekom posljednjeg tjedna. Instancije s isključenom statistikom korištenja ne računaju se.",
"downloadsHint": "Koliko je puta verzija preuzeta. Ovo nije broj instalacija."
},
"unverified": "Neprovjereno",
+8 -80
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Csatolva a(z) {{server}} szerverhez",
"pluginsDocsLink": "Olvasson el többet mindegyikről"
},
"desktopUpdates": {
"title": "Asztali alkalmazás",
"mode": "Frissítések",
"modeHint": "Hogyan kap új verziókat ez az alkalmazás.",
"manualModeHint": "Ez a példány nem tud önmagát frissíteni, így a Termix csak akkor értesít, ha megjelenik egy új verzió.",
"modeAutomatic": "Automatikus",
"modePrompt": "Először kérdezzen",
"modeNever": "Soha",
"automaticBody": "Az új verziók letöltése a háttérben történik, és újraindításkor telepíti őket.",
"promptBody": "Értesítsen, ha új verzió érhető el, és hagyjon választani, mikor töltsem le.",
"neverBody": "Ne ellenőrizze a frissítéseket. Kézzel is ellenőrizheti a Beállításokban.",
"onboardingTitle": "Alkalmazásfrissítések",
"onboardingBody": "Az asztali alkalmazás mostantól képes önmagát frissíteni. Válassza ki, hogyan szeretné, hogy az új verziók érkezzenek. Ezt később módosíthatja a Beállítások > Frissítések menüpontban.",
"onboardingManual": "Az alkalmazás ezt a példányát úgy telepítették, hogy nem tud önmagát frissíteni, így a Termix értesítést küld, ha új verzió jelenik meg, és letöltési linket is mellékel.",
"status": "Verzió: {{version}}",
"statusIdle": "Még nem ellenőrizve",
"statusChecking": "Frissítések keresése",
"statusAvailable": "A(z) {{version}} verzió elérhető",
"statusDownloading": "A(z) {{version}} letöltése ({{progress}}%)",
"statusReady": "A(z) {{version}} verzió készen áll. Indítsa újra a telepítéshez.",
"statusUpToDate": "A legújabb verziót használja",
"statusError": "Nem sikerült ellenőrizni a frissítéseket. Próbálja újra később.",
"checkNow": "Ellenőrzés most",
"download": "Letöltés",
"restart": "Újraindítás most",
"later": "Később",
"available": "A Termix {{version}} verziója elérhető",
"manualHint": "Töltse le a kiadási oldalról, és telepítse a jelenlegi helyére.",
"ready": "A Termix {{version}} verziója készen áll a telepítésre",
"readyHint": "A következő újraindításkor települ."
},
"nav": {
"home": "Főoldal",
"terminal": "Terminál",
@@ -1127,7 +1096,6 @@
"databaseConnectionFailed": "Nem sikerült csatlakozni az adatbázis-szervert",
"embeddedServerPortInUse": "A {{port}} portot már egy másik program használja. Ez általában egy Termix Docker-konténer vagy egy előző munkamenetből maradt Termix-folyamat. Zárja be, majd indítsa újra a Termixet.",
"embeddedServerPortInUseUnknownPort": "A Termix által szükséges portok egyikét már egy másik program használja. Zárja be azt, ami használja, majd indítsa újra a Termixet.",
"embeddedServerOldDatabase": "A helyi adatai a Termix 2.8 vagy régebbi verzióból származnak, és először át kell futniuk a 2.9-es verzió migrációján. Telepítse a Termix 2.9.1 verzióját, nyissa meg egyszer, hogy az adatok átkerüljenek, majd frissítsen újra erre a verzióra.",
"embeddedServerCrashed": "A helyi szerver váratlanul leállt. Indítsa újra a Termixet, és ellenőrizze az asztali naplót, ha ez továbbra is előfordul.",
"resetCodeSent": "A visszaállítási kód elküldve a Docker naplókba",
"codeVerified": "A kód sikeresen ellenőrizve",
@@ -1900,23 +1868,19 @@
"tabs": {
"installed": "Telepítve",
"browse": "Böngészés",
"updates": "Frissítések",
"registries": "Regisztrációk"
"updates": "Frissítések"
},
"status": {
"summary": "{{installed}} telepítve, {{running}} fut",
"running": "Fut",
"disabled": "Letiltva",
"failed": "Váratlanul leállt",
"blocked": "Várakozás egy másik bővítményre",
"server": "A szerverén fut"
"blocked": "Várakozás egy másik bővítményre"
},
"groups": {
"running": "Fut",
"notRunning": "Nem fut",
"onServer": "A szerverén"
"notRunning": "Nem fut"
},
"runsOnServerHint": "Ez a bővítmény csak a szerverén fut, ezért az asztali alkalmazásban kikapcsolva marad. A szerveren továbbra is működik.",
"sort": {
"popular": "Legnépszerűbb",
"name": "Név",
@@ -1934,7 +1898,7 @@
"version": "Verzió",
"status": "Állapot",
"category": "Kategória",
"downloads": "Letöltések"
"installs": "Telepítések"
},
"risk": {
"critical": "Kritikus",
@@ -2086,47 +2050,8 @@
"noneInstalled": "Még nincsenek telepített bővítmények. Böngésszen, és adjon hozzá néhányat.",
"nothingHere": "Itt nincs semmi.",
"nothingHereHint": "Próbáljon meg másik kategóriát vagy keresést.",
"showInstalled": "Telepítettek megjelenítése",
"allInstalled": "Minden itt már telepítve van.",
"allInstalledHint": "Kapcsolja be a Telepítettek megjelenítése opciót, hogy lássa őket.",
"communitySoon": "A közösségi bővítmények egy későbbi frissítésben érkeznek. A bővítmény-fejlesztők már most beküldhetik alkotásaikat a közösségi nyilvántartásba.",
"communitySubmit": "Hogyan küldjem be",
"registries": {
"intro": "A regisztrációk telepíthető bővítmények listái. A hivatalos mindig be van kapcsolva. Bekapcsolhatja a közösségi regisztrációt, vagy hozzáadhatja a sajátját.",
"hostYourOwn": "Saját regisztráció üzemeltetése",
"add": "Regisztráció hozzáadása",
"addTitle": "Regisztráció hozzáadása",
"addHint": "Illessze be a regisztráció index.json fájljának linkjét. A Termix beolvassa, és megjeleníti azt a kulcsot, amellyel a bővítményeket aláírja. Csak olyan regisztrációkat adjon hozzá, amelyeknek megbízik a tulajdonosában.",
"urlLabel": "Index URL",
"check": "Ellenőrzés",
"addConfirm": "Megbízás és hozzáadás",
"added": "A(z) {{name}} hozzáadva",
"customWarning": "Ebből a regisztrációból származó bővítményeket nem ellenőrzi a Termix csapata. Csak a regisztráció tulajdonosa dönt arról, mi kerül bele. Minden letöltést a fenti kulccsal kell aláírni.",
"keyFingerprint": "Kulcs: {{keyId}}",
"pluginCount_one": "{{count}} bővítmény",
"pluginCount_other": "{{count}} bővítmény",
"officialName": "Hivatalos",
"communityName": "Közösségi",
"alwaysOn": "Mindig bekapcsolva",
"communityHint": "Mások által készített bővítmények. Minden verziót egy személy és automatizált ellenőrzések is átnéznek, mielőtt felkerülne a listára.",
"communityConfirmTitle": "Bekapcsolja a közösségi bővítményeket?",
"communityConfirmBody": "A közösségi bővítményeket nem a Termix csapata, hanem mások készítik. Minden verziót egy személy és automatizált ellenőrzések is átnéznek, mielőtt felkerülne a listára, de előfordulhatnak hibák. Csak olyan bővítményeket telepítsen, amelyeknek megbízik, és ellenőrizze, mire kér engedélyt mindegyik.",
"communityConfirm": "Bekapcsolás",
"communityBadge": "Közösségi",
"communityBadgeHint": "A közösségi regisztrációból. Mások által készített, és felvétel előtt ellenőrzött.",
"customBadge": "Egyedi",
"customBadgeHint": "A(z) {{name}}-ből, egy admin által hozzáadott regisztrációból. Nem ellenőrizte a Termix csapata.",
"remove": "Eltávolítás",
"removeTitle": "Eltávolítja a(z) {{name}} elemet?",
"removeBody": "A benne lévő bővítmények már nem jelennek meg a Böngészés fülön. Később újra hozzáadhatja.",
"removed": "A(z) {{name}} eltávolítva",
"inUse": "Először távolítsa el a(z) {{name}} bővítményeit: {{list}}",
"changeFailed": "Nem sikerült módosítani a regisztrációs tárat: {{error}}",
"loadFailed": "Nem sikerült betölteni a regisztrációs tárokat: {{error}}",
"unreachable": "Nem sikerült olvasni: {{error}}",
"filter": "Regisztrációs tároló",
"allRegistries": "Összes regisztrációs tároló",
"browseHint": "Kapcsolja be a közösségi bővítményeket, vagy adja hozzá saját regisztrációs tárolóját a Regisztrációs tárolók fülön."
},
"upToDate": "Minden naprakész.",
"lastChecked": "Utolsó ellenőrzés: {{time}}",
"updatesReady_one": "{{count}} frissítés kész.",
@@ -2149,8 +2074,11 @@
"signedOnly": "A TERMIX_REQUIRE_SIGNED_PLUGINS be van állítva, ezért a fájlból való telepítés továbbra is letiltva."
},
"count": {
"active_one": "{{formatted}} aktív telepítés",
"active_other": "{{formatted}} aktív telepítés",
"downloads_one": "{{formatted}} letöltés",
"downloads_other": "{{formatted}} letöltés",
"activeHint": "Azok a példányok, amelyek az elmúlt hétben bekapcsolt állapotban jelentették ezt a bővítményt. Azok a példányok, amelyeknél a használati statisztikák kikapcsolva vannak, nem számítanak bele.",
"downloadsHint": "Hányszor letöltötték egy kiadást. Ez nem a telepítések számát jelenti."
},
"unverified": "Nem ellenőrzött",
+7 -80
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Terhubung ke {{server}}",
"pluginsDocsLink": "Baca tentang masing-masing"
},
"desktopUpdates": {
"title": "Aplikasi desktop",
"mode": "Pembaruan",
"modeHint": "Bagaimana aplikasi ini mendapatkan versi baru.",
"manualModeHint": "Salinan ini tidak dapat memperbarui dirinya sendiri, jadi Termix hanya memberi tahu Anda ketika versi baru tersedia.",
"modeAutomatic": "Otomatis",
"modePrompt": "Tanya dulu",
"modeNever": "Tidak pernah",
"automaticBody": "Unduh versi baru di latar belakang dan instal saat Anda memulai ulang.",
"promptBody": "Beritahu saya ketika versi baru tersedia dan biarkan saya memilih kapan mengunduhnya.",
"neverBody": "Jangan periksa pembaruan. Anda masih bisa memeriksa secara manual di Pengaturan.",
"onboardingTitle": "Pembaruan aplikasi",
"onboardingBody": "Aplikasi desktop sekarang dapat memperbarui dirinya sendiri. Pilih bagaimana Anda ingin versi baru tiba. Anda dapat mengubah ini nanti di Pengaturan, Pembaruan.",
"onboardingManual": "Salinan aplikasi ini diinstal dengan cara yang tidak dapat memperbarui dirinya sendiri, jadi Termix akan memberi tahu Anda ketika versi baru tersedia dengan tautan untuk mengunduhnya.",
"status": "Versi {{version}}",
"statusIdle": "Belum diperiksa",
"statusChecking": "Memeriksa pembaruan",
"statusAvailable": "Versi {{version}} tersedia",
"statusDownloading": "Mengunduh {{version}} ({{progress}}%)",
"statusReady": "Versi {{version}} siap. Mulai ulang untuk menginstalnya.",
"statusUpToDate": "Anda memiliki versi terbaru",
"statusError": "Tidak dapat memeriksa pembaruan. Coba lagi nanti.",
"checkNow": "Periksa sekarang",
"download": "Unduh",
"restart": "Mulai ulang sekarang",
"later": "Nanti",
"available": "Termix {{version}} tersedia",
"manualHint": "Unduh dari halaman rilis dan instal di atas yang ini.",
"ready": "Termix {{version}} siap untuk diinstal",
"readyHint": "Ini akan diinstal saat Termix dimulai ulang berikutnya."
},
"nav": {
"home": "Beranda",
"terminal": "Terminal",
@@ -1113,7 +1082,6 @@
"databaseConnectionFailed": "Gagal terhubung ke server database",
"embeddedServerPortInUse": "Port {{port}} sudah digunakan oleh program lain. Biasanya ini adalah kontainer Docker Termix atau proses Termix yang tersisa dari sesi sebelumnya. Tutup program tersebut, lalu mulai ulang Termix.",
"embeddedServerPortInUseUnknownPort": "Salah satu port yang dibutuhkan Termix sudah digunakan oleh program lain. Tutup program yang menggunakannya, lalu mulai ulang Termix.",
"embeddedServerOldDatabase": "Data lokal Anda berasal dari Termix 2.8 atau lebih lama dan harus diproses melalui versi 2.9 terlebih dahulu. Instal Termix 2.9.1, buka sekali agar data Anda dapat dipindahkan, lalu perbarui ke versi ini lagi.",
"embeddedServerCrashed": "Server lokal berhenti secara tidak terduga. Mulai ulang Termix, dan periksa log desktop jika masalah ini terus terjadi.",
"resetCodeSent": "Kode reset dikirim ke log Docker",
"codeVerified": "Kode berhasil diverifikasi",
@@ -1876,23 +1844,19 @@
"tabs": {
"installed": "Terpasang",
"browse": "Jelajahi",
"updates": "Pembaruan",
"registries": "Registrasi"
"updates": "Pembaruan"
},
"status": {
"summary": "{{installed}} terpasang, {{running}} berjalan",
"running": "Berjalan",
"disabled": "Dinonaktifkan",
"failed": "Berhenti secara tak terduga",
"blocked": "Menunggu plugin lain",
"server": "Berjalan di server Anda"
"blocked": "Menunggu plugin lain"
},
"groups": {
"running": "Berjalan",
"notRunning": "Tidak berjalan",
"onServer": "Di server Anda"
"notRunning": "Tidak berjalan"
},
"runsOnServerHint": "Plugin ini hanya berjalan di server Anda, jadi tetap nonaktif di aplikasi desktop. Plugin ini tetap berfungsi di sana.",
"sort": {
"popular": "Paling populer",
"name": "Nama",
@@ -1910,7 +1874,7 @@
"version": "Versi",
"status": "Status",
"category": "Kategori",
"downloads": "Unduhan"
"installs": "Instalasi"
},
"risk": {
"critical": "Kritis",
@@ -2046,46 +2010,8 @@
"noneInstalled": "Belum ada plugin terpasang. Jelajahi untuk menambahkan beberapa.",
"nothingHere": "Tidak ada di sini.",
"nothingHereHint": "Coba kategori lain atau cari.",
"showInstalled": "Tampilkan yang terinstal",
"allInstalled": "Semua di sini sudah terinstal.",
"allInstalledHint": "Aktifkan Tampilkan yang terinstal untuk melihatnya.",
"communitySoon": "Plugin komunitas akan hadir dalam pembaruan mendatang. Pengembang plugin sudah dapat mengirimkan plugin mereka ke registri komunitas.",
"communitySubmit": "Cara mengirimkan",
"registries": {
"intro": "Registrasi adalah daftar plugin yang dapat Anda instal. Registrasi resmi selalu aktif. Anda dapat mengaktifkan registrasi komunitas atau menambahkan registrasi Anda sendiri.",
"hostYourOwn": "Host registrasi Anda sendiri",
"add": "Tambahkan registrasi",
"addTitle": "Tambahkan registrasi",
"addHint": "Tempel tautan ke index.json registrasi. Termix membacanya dan menampilkan kunci yang digunakan untuk menandatangani plugin. Hanya tambahkan registrasi dari orang yang Anda percayai.",
"urlLabel": "URL Indeks",
"check": "Periksa",
"addConfirm": "Percaya dan tambahkan",
"added": "Menambahkan {{name}}",
"customWarning": "Plugin dari registrasi ini tidak ditinjau oleh tim Termix. Hanya pemilik registrasi yang memutuskan apa yang ada di dalamnya. Setiap unduhan harus ditandatangani oleh kunci di atas.",
"keyFingerprint": "Kunci {{keyId}}",
"pluginCount_other": "{{count}} plugin",
"officialName": "Resmi",
"communityName": "Komunitas",
"alwaysOn": "Selalu aktif",
"communityHint": "Plugin yang dibuat oleh orang lain. Setiap versi diperiksa oleh seseorang dan oleh pemeriksaan otomatis sebelum dicantumkan.",
"communityConfirmTitle": "Aktifkan plugin komunitas?",
"communityConfirmBody": "Plugin komunitas dibuat oleh orang lain, bukan tim Termix. Setiap versi diperiksa oleh seseorang dan oleh pemeriksaan otomatis sebelum dicantumkan, tetapi kesalahan masih bisa lolos. Hanya instal plugin yang Anda percayai dan periksa apa yang diminta oleh masing-masing.",
"communityConfirm": "Aktifkan",
"communityBadge": "Komunitas",
"communityBadgeHint": "Dari registrasi komunitas. Dibuat oleh orang lain dan ditinjau sebelum dicantumkan.",
"customBadge": "Kustom",
"customBadgeHint": "Dari {{name}}, registrasi yang ditambahkan oleh admin. Tidak ditinjau oleh tim Termix.",
"remove": "Hapus",
"removeTitle": "Hapus {{name}}?",
"removeBody": "Plugin-nya tidak akan lagi muncul di Jelajahi. Anda bisa menambahkannya kembali nanti.",
"removed": "{{name}} telah dihapus",
"inUse": "Copot pemasangan plugin dari {{name}} terlebih dahulu: {{list}}",
"changeFailed": "Tidak dapat mengubah registri: {{error}}",
"loadFailed": "Tidak dapat memuat registri: {{error}}",
"unreachable": "Tidak dapat membacanya: {{error}}",
"filter": "Registri",
"allRegistries": "Semua registri",
"browseHint": "Aktifkan plugin komunitas atau tambahkan registri Anda sendiri di tab Registri."
},
"upToDate": "Semuanya sudah diperbarui.",
"lastChecked": "Terakhir diperiksa {{time}}",
"updatesReady_other": "{{count}} pembaruan siap.",
@@ -2106,7 +2032,9 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS diatur, sehingga pemasangan dari file tetap diblokir."
},
"count": {
"active_other": "{{formatted}} instalasi aktif",
"downloads_other": "{{formatted}} unduhan",
"activeHint": "Instansi yang melaporkan plugin ini diaktifkan dalam seminggu terakhir. Instansi dengan statistik penggunaan yang dimatikan tidak dihitung.",
"downloadsHint": "Berapa kali rilis diunduh. Ini bukan jumlah instalasi."
},
"unverified": "Tidak terverifikasi",
@@ -2330,7 +2258,6 @@
"continue": "Lanjutkan",
"back": "Kembali",
"mergeTitle": "Tambahkan ke akun saya",
"mergeBody_other": "{{count}} item di perangkat ini ditambahkan ke akun Anda. Item yang sudah ada di akun Anda tetap seperti semula di server.",
"replaceTitle": "Ganti dengan akun saya",
"replaceBody_other": "{{count}} item di perangkat ini dihapus, dan perangkat ini mengambil semua dari akun Anda. Host yang hanya disimpan di perangkat ini tetap ada.",
"link": "Hubungkan",
+9 -81
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Collegato a {{server}}",
"pluginsDocsLink": "Leggi la descrizione di ciascuno"
},
"desktopUpdates": {
"title": "App desktop",
"mode": "Aggiornamenti",
"modeHint": "Come questa app riceve le nuove versioni.",
"manualModeHint": "Questa copia non può aggiornarsi automaticamente, quindi Termix ti avvisa solo quando è disponibile una nuova versione.",
"modeAutomatic": "Automatico",
"modePrompt": "Chiedi prima",
"modeNever": "Mai",
"automaticBody": "Scarica le nuove versioni in background e installale al riavvio.",
"promptBody": "Avvisami quando è disponibile una nuova versione e permettimi di scegliere quando scaricarla.",
"neverBody": "Non cercare aggiornamenti. Puoi comunque controllare manualmente nelle Impostazioni.",
"onboardingTitle": "Aggiornamenti dell'app",
"onboardingBody": "L'app desktop può ora aggiornarsi automaticamente. Scegli come desideri ricevere le nuove versioni. Puoi modificare questa impostazione in seguito in Impostazioni, Aggiornamenti.",
"onboardingManual": "Questa copia dell'app è stata installata in un modo che non supporta l'aggiornamento automatico, quindi Termix ti avviserà quando è disponibile una nuova versione con un link per scaricarla.",
"status": "Versione {{version}}",
"statusIdle": "Non ancora controllato",
"statusChecking": "Verifica aggiornamenti in corso",
"statusAvailable": "È disponibile la versione {{version}}",
"statusDownloading": "Download di {{version}} in corso ({{progress}}%)",
"statusReady": "La versione {{version}} è pronta. Riavvia per installarla.",
"statusUpToDate": "Hai l'ultima versione",
"statusError": "Impossibile verificare la presenza di aggiornamenti. Riprova più tardi.",
"checkNow": "Verifica ora",
"download": "Scarica",
"restart": "Riavvia ora",
"later": "Più tardi",
"available": "Termix {{version}} è disponibile",
"manualHint": "Scaricalo dalla pagina dei rilasci e installalo sopra questa versione.",
"ready": "Termix {{version}} è pronto per l'installazione",
"readyHint": "Verrà installato al prossimo riavvio di Termix."
},
"nav": {
"home": "Home",
"terminal": "Terminale",
@@ -1141,7 +1110,6 @@
"databaseConnectionFailed": "Impossibile connettersi al server del database",
"embeddedServerPortInUse": "La porta {{port}} è già in uso da un altro programma. Di solito si tratta di un container Docker di Termix o di un processo residuo di Termix da una sessione precedente. Chiudilo, quindi riavvia Termix.",
"embeddedServerPortInUseUnknownPort": "Una delle porte necessarie a Termix è già in uso da un altro programma. Chiudi il programma che la sta utilizzando, quindi riavvia Termix.",
"embeddedServerOldDatabase": "I tuoi dati locali provengono da Termix 2.8 o versioni precedenti e devono essere migrati tramite la versione 2.9. Installa Termix 2.9.1, aprilo una volta per consentire la migrazione dei dati, quindi aggiorna nuovamente a questa versione.",
"embeddedServerCrashed": "Il server locale si è arrestato inaspettatamente. Riavvia Termix e controlla il log del desktop se il problema persiste.",
"resetCodeSent": "Codice di reset inviato ai log di Docker",
"codeVerified": "Codice verificato con successo",
@@ -1924,23 +1892,19 @@
"tabs": {
"installed": "Installati",
"browse": "Sfoglia",
"updates": "Aggiornamenti",
"registries": "Registri"
"updates": "Aggiornamenti"
},
"status": {
"summary": "{{installed}} installati, {{running}} in esecuzione",
"running": "In esecuzione",
"disabled": "Disabilitato",
"failed": "Arrestato inaspettatamente",
"blocked": "In attesa di un altro plugin",
"server": "Eseguito sul tuo server"
"blocked": "In attesa di un altro plugin"
},
"groups": {
"running": "In esecuzione",
"notRunning": "Non in esecuzione",
"onServer": "Sul tuo server"
"notRunning": "Non in esecuzione"
},
"runsOnServerHint": "Questo plugin viene eseguito solo sul tuo server, quindi rimane disattivato nell'app desktop. Funziona comunque sul server.",
"sort": {
"popular": "Più popolari",
"name": "Nome",
@@ -1958,7 +1922,7 @@
"version": "Versione",
"status": "Stato",
"category": "Categoria",
"downloads": "Download"
"installs": "Installazioni"
},
"risk": {
"critical": "Critico",
@@ -2126,48 +2090,8 @@
"noneInstalled": "Nessun plugin installato. Esplora per aggiungerne alcuni.",
"nothingHere": "Nessun elemento qui.",
"nothingHereHint": "Prova un'altra categoria o una ricerca.",
"showInstalled": "Mostra installati",
"allInstalled": "Tutto qui è già installato.",
"allInstalledHint": "Attiva Mostra installati per vederli.",
"communitySoon": "I plugin della community arriveranno in un aggiornamento futuro. Gli autori di plugin possono già inviarli al registro della community.",
"communitySubmit": "Come inviare",
"registries": {
"intro": "I registri sono elenchi di plugin che puoi installare. Quello ufficiale è sempre attivo. Puoi attivare il registro della community o aggiungerne uno tuo.",
"hostYourOwn": "Ospita il tuo registro",
"add": "Aggiungi registro",
"addTitle": "Aggiungi un registro",
"addHint": "Incolla il link al file index.json del registro. Termix lo legge e mostra la chiave con cui firma i plugin. Aggiungi solo registri di persone di cui ti fidi.",
"urlLabel": "URL dell'indice",
"check": "Verifica",
"addConfirm": "Fidati e aggiungi",
"added": "Aggiunto {{name}}",
"customWarning": "I plugin da questo registro non sono revisionati dal team di Termix. Solo il proprietario del registro decide cosa contiene. Ogni download deve essere firmato dalla chiave sopra.",
"keyFingerprint": "Chiave {{keyId}}",
"pluginCount_one": "{{count}} plugin",
"pluginCount_many": "{{count}} plugin",
"pluginCount_other": "{{count}} plugin",
"officialName": "Ufficiale",
"communityName": "Community",
"alwaysOn": "Sempre attivo",
"communityHint": "Plugin creati da altre persone. Ogni versione viene controllata da una persona e da controlli automatizzati prima di essere elencata.",
"communityConfirmTitle": "Attivare i plugin della community?",
"communityConfirmBody": "I plugin della community sono creati da altre persone, non dal team di Termix. Ogni versione viene controllata da una persona e da controlli automatizzati prima di essere elencata, ma errori possono comunque sfuggire. Installa solo plugin di cui ti fidi e controlla cosa richiede ciascuno.",
"communityConfirm": "Attiva",
"communityBadge": "Community",
"communityBadgeHint": "Dal registro della community. Creato da altre persone e revisionato prima dell'inserimento.",
"customBadge": "Personalizzato",
"customBadgeHint": "Da {{name}}, un registro aggiunto da un amministratore. Non revisionato dal team di Termix.",
"remove": "Rimuovi",
"removeTitle": "Rimuovere {{name}}?",
"removeBody": "I suoi plugin non appariranno più nella sezione Esplora. Puoi aggiungerlo di nuovo in seguito.",
"removed": "{{name}} rimosso",
"inUse": "Disinstalla prima i plugin di {{name}}: {{list}}",
"changeFailed": "Impossibile modificare il registro: {{error}}",
"loadFailed": "Impossibile caricare i registri: {{error}}",
"unreachable": "Impossibile leggerlo: {{error}}",
"filter": "Registro",
"allRegistries": "Tutti i registri",
"browseHint": "Abilita i plugin della community o aggiungi il tuo registro nella scheda Registri."
},
"upToDate": "Tutto è aggiornato.",
"lastChecked": "Ultimo controllo {{time}}",
"updatesReady_one": "{{count}} aggiornamento pronto.",
@@ -2192,9 +2116,13 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS è impostato, quindi l'installazione da file rimane bloccata."
},
"count": {
"active_one": "{{formatted}} installazione attiva",
"active_many": "{{formatted}} installazioni attive",
"active_other": "{{formatted}} installazioni attive",
"downloads_one": "{{formatted}} download",
"downloads_many": "{{formatted}} download",
"downloads_other": "{{formatted}} download",
"activeHint": "Istanze che hanno segnalato questo plugin attivato nell'ultima settimana. Le istanze con le statistiche di utilizzo disattivate non vengono conteggiate.",
"downloadsHint": "Quante volte una versione è stata scaricata. Questo non è il numero di installazioni."
},
"unverified": "Non verificato",
+7 -79
View File
@@ -233,37 +233,6 @@
"desktopLinked": "{{server}} と連携済み",
"pluginsDocsLink": "各プラグインについて読む"
},
"desktopUpdates": {
"title": "デスクトップアプリ",
"mode": "アップデート",
"modeHint": "このアプリが新しいバージョンを取得する方法です。",
"manualModeHint": "このコピーは自動更新できないため、Termix は新しいバージョンがリリースされたときのみお知らせします。",
"modeAutomatic": "自動",
"modePrompt": "確認してから",
"modeNever": "しない",
"automaticBody": "バックグラウンドで新しいバージョンをダウンロードし、再起動時にインストールします。",
"promptBody": "新しいバージョンがリリースされたらお知らせし、ダウンロードするタイミングは自分で選べます。",
"neverBody": "アップデートを確認しません。設定から手動で確認することはできます。",
"onboardingTitle": "アプリのアップデート",
"onboardingBody": "デスクトップアプリが自動で更新できるようになりました。新しいバージョンの入手方法を選んでください。後で「設定」>「アップデート」から変更できます。",
"onboardingManual": "このアプリのコピーは自動更新できない方法でインストールされたため、Termix は新しいバージョンがリリースされたときにダウンロードリンク付きでお知らせします。",
"status": "バージョン {{version}}",
"statusIdle": "まだ確認していません",
"statusChecking": "アップデートを確認中",
"statusAvailable": "バージョン {{version}} が利用可能です",
"statusDownloading": "{{version}} をダウンロード中 ({{progress}}%)",
"statusReady": "バージョン {{version}} の準備ができました。インストールするには再起動してください。",
"statusUpToDate": "最新バージョンです",
"statusError": "アップデートの確認に失敗しました。後でもう一度お試しください。",
"checkNow": "今すぐ確認",
"download": "ダウンロード",
"restart": "今すぐ再起動",
"later": "後で",
"available": "Termix {{version}} が利用可能です",
"manualHint": "リリースページからダウンロードして、現在のバージョンに上書きインストールしてください。",
"ready": "Termix {{version}} のインストール準備ができました",
"readyHint": "Termix を再起動したときにインストールされます。"
},
"nav": {
"home": "ホーム",
"terminal": "ターミナル",
@@ -1113,7 +1082,6 @@
"databaseConnectionFailed": "データベースサーバーへの接続に失敗しました",
"embeddedServerPortInUse": "ポート {{port}} はすでに別のプログラムで使用されています。これは通常、TermixのDockerコンテナや、以前のセッションから残ったTermixプロセスです。それを閉じてから、Termixを再起動してください。",
"embeddedServerPortInUseUnknownPort": "Termixが必要とするポートの1つが、すでに別のプログラムで使用されています。それを使用中のものを閉じてから、Termixを再起動してください。",
"embeddedServerOldDatabase": "ローカルデータは Termix 2.8 以前のものであり、まず 2.9 を経由する必要があります。Termix 2.9.1 をインストールし、一度起動してデータを移行してから、再度このバージョンにアップデートしてください。",
"embeddedServerCrashed": "ローカルサーバーが予期せず停止しました。Termixを再起動し、この問題が繰り返される場合はデスクトップログを確認してください。",
"resetCodeSent": "リセットコードをDockerログに送信しました",
"codeVerified": "コードの検証に成功しました",
@@ -1876,23 +1844,19 @@
"tabs": {
"installed": "インストール済み",
"browse": "閲覧",
"updates": "アップデート",
"registries": "レジストリ"
"updates": "アップデート"
},
"status": {
"summary": "{{installed}} 個インストール済み、{{running}} 個実行中",
"running": "実行中",
"disabled": "無効",
"failed": "予期せず停止",
"blocked": "他のプラグインを待機中",
"server": "サーバー上で実行"
"blocked": "他のプラグインを待機中"
},
"groups": {
"running": "実行中",
"notRunning": "実行中ではない",
"onServer": "サーバー上"
"notRunning": "実行中ではない"
},
"runsOnServerHint": "このプラグインはサーバー上でのみ実行されるため、デスクトップアプリでは無効のままです。サーバー上では引き続き動作します。",
"sort": {
"popular": "人気順",
"name": "名前",
@@ -1910,7 +1874,7 @@
"version": "バージョン",
"status": "ステータス",
"category": "カテゴリ",
"downloads": "ダウンロード数"
"installs": "インストール数"
},
"risk": {
"critical": "重大",
@@ -2046,46 +2010,8 @@
"noneInstalled": "まだプラグインがインストールされていません。閲覧して追加してください。",
"nothingHere": "ここには何もありません。",
"nothingHereHint": "別のカテゴリや検索を試してください。",
"showInstalled": "インストール済みを表示",
"allInstalled": "ここにあるものはすべて既にインストール済みです。",
"allInstalledHint": "「インストール済みを表示」をオンにすると表示されます。",
"communitySoon": "コミュニティプラグインは今後の更新で提供される予定です。プラグイン開発者はすでにコミュニティレジストリに提出できます。",
"communitySubmit": "提出方法",
"registries": {
"intro": "レジストリはインストールできるプラグインのリストです。公式レジストリは常に有効です。コミュニティレジストリを有効にしたり、独自のレジストリを追加したりできます。",
"hostYourOwn": "独自のレジストリをホスト",
"add": "レジストリを追加",
"addTitle": "レジストリを追加",
"addHint": "レジストリの index.json へのリンクを貼り付けてください。Termix はこれを読み取り、プラグインに署名する鍵を表示します。信頼できる人からのレジストリのみを追加してください。",
"urlLabel": "インデックス URL",
"check": "確認",
"addConfirm": "信頼して追加",
"added": "{{name}} を追加しました",
"customWarning": "このレジストリのプラグインは Termix チームによってレビューされていません。レジストリの所有者のみがその内容を決めます。すべてのダウンロードは上記の鍵で署名されている必要があります。",
"keyFingerprint": "鍵 {{keyId}}",
"pluginCount_other": "{{count}} 個のプラグイン",
"officialName": "公式",
"communityName": "コミュニティ",
"alwaysOn": "常に有効",
"communityHint": "他の人によって作成されたプラグインです。各バージョンは、リストに掲載される前に人間と自動チェックの両方で確認されます。",
"communityConfirmTitle": "コミュニティプラグインを有効にしますか?",
"communityConfirmBody": "コミュニティプラグインは Termix チームではなく、他の人によって作成されています。各バージョンはリストに掲載される前に人間と自動チェックの両方で確認されますが、ミスが漏れることもあります。信頼できるプラグインのみをインストールし、各プラグインが要求する権限を確認してください。",
"communityConfirm": "有効にする",
"communityBadge": "コミュニティ",
"communityBadgeHint": "コミュニティレジストリから。他の人によって作成され、リストに掲載される前にレビューされています。",
"customBadge": "カスタム",
"customBadgeHint": "{{name}}(管理者が追加したレジストリ)から。Termix チームによってレビューされていません。",
"remove": "削除",
"removeTitle": "{{name}} を削除しますか?",
"removeBody": "そのプラグインは「閲覧」に表示されなくなります。後で再度追加できます。",
"removed": "{{name}} を削除しました",
"inUse": "まず {{name}} のプラグインをアンインストールしてください: {{list}}",
"changeFailed": "レジストリを変更できませんでした: {{error}}",
"loadFailed": "レジストリを読み込めませんでした: {{error}}",
"unreachable": "読み取れませんでした: {{error}}",
"filter": "レジストリ",
"allRegistries": "すべてのレジストリ",
"browseHint": "コミュニティプラグインを有効にするか、レジストリタブで独自のレジストリを追加してください。"
},
"upToDate": "すべて最新です。",
"lastChecked": "最終確認: {{time}}",
"updatesReady_other": "{{count}} 件の更新が準備完了です。",
@@ -2106,7 +2032,9 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS が設定されているため、ファイルからのインストールはブロックされたままです。"
},
"count": {
"active_other": "{{formatted}} 件のアクティブインストール",
"downloads_other": "{{formatted}} 回のダウンロード",
"activeHint": "過去1週間でこのプラグインが有効になっていると報告したインスタンス数。使用統計が無効化されているインスタンスはカウントされません。",
"downloadsHint": "リリースがダウンロードされた回数です。これはインストール数ではありません。"
},
"unverified": "未検証",
+7 -79
View File
@@ -233,37 +233,6 @@
"desktopLinked": "{{server}}(으)로 연결됨",
"pluginsDocsLink": "각 항목에 대해 읽기"
},
"desktopUpdates": {
"title": "데스크톱 앱",
"mode": "업데이트",
"modeHint": "이 앱이 새 버전을 받는 방법입니다.",
"manualModeHint": "이 복사본은 자체 업데이트가 불가능하므로, Termix는 새 버전이 출시되었을 때만 알려드립니다.",
"modeAutomatic": "자동",
"modePrompt": "먼저 묻기",
"modeNever": "사용 안 함",
"automaticBody": "백그라운드에서 새 버전을 다운로드하고 재시작 시 설치합니다.",
"promptBody": "새 버전이 출시되면 알려드리고, 다운로드 시점은 사용자가 선택합니다.",
"neverBody": "업데이트 확인을 하지 않습니다. 설정에서 수동으로 확인할 수 있습니다.",
"onboardingTitle": "앱 업데이트",
"onboardingBody": "이제 데스크톱 앱이 자체 업데이트를 지원합니다. 새 버전이 도착하는 방식을 선택하세요. 나중에 설정 > 업데이트에서 변경할 수 있습니다.",
"onboardingManual": "이 앱 복사본은 자체 업데이트가 불가능한 방식으로 설치되었으므로, Termix는 새 버전이 출시되면 다운로드 링크와 함께 알려드립니다.",
"status": "버전 {{version}}",
"statusIdle": "아직 확인하지 않음",
"statusChecking": "업데이트 확인 중",
"statusAvailable": "버전 {{version}} 사용 가능",
"statusDownloading": "{{version}} 다운로드 중 ({{progress}}%)",
"statusReady": "버전 {{version}} 준비 완료. 설치하려면 재시작하세요.",
"statusUpToDate": "최신 버전을 사용 중입니다",
"statusError": "업데이트를 확인할 수 없습니다. 나중에 다시 시도하세요.",
"checkNow": "지금 확인",
"download": "다운로드",
"restart": "지금 재시작",
"later": "나중에",
"available": "Termix {{version}} 사용 가능",
"manualHint": "릴리스 페이지에서 다운로드하여 현재 버전 위에 설치하세요.",
"ready": "Termix {{version}} 설치 준비 완료",
"readyHint": "Termix가 다음에 재시작될 때 설치됩니다."
},
"nav": {
"home": "홈",
"terminal": "터미널",
@@ -1113,7 +1082,6 @@
"databaseConnectionFailed": "데이터베이스 서버 연결 실패",
"embeddedServerPortInUse": "포트 {{port}}는 이미 다른 프로그램에서 사용 중입니다. 일반적으로 Termix Docker 컨테이너나 이전 세션의 Termix 프로세스가 원인입니다. 해당 프로그램을 닫은 후 Termix를 다시 시작하세요.",
"embeddedServerPortInUseUnknownPort": "Termix가 필요로 하는 포트 중 하나가 이미 다른 프로그램에서 사용 중입니다. 해당 포트를 사용하는 프로그램을 닫은 후 Termix를 다시 시작하세요.",
"embeddedServerOldDatabase": "로컬 데이터가 Termix 2.8 이하 버전에서 생성된 것으로, 먼저 2.9 버전을 거쳐야 합니다. Termix 2.9.1을 설치하고 한 번 실행하여 데이터를 마이그레이션한 후, 다시 이 버전으로 업데이트하세요.",
"embeddedServerCrashed": "로컬 서버가 예기치 않게 중지되었습니다. Termix를 다시 시작하고, 이 문제가 계속 발생하면 데스크톱 로그를 확인하세요.",
"resetCodeSent": "리셋 코드가 Docker 로그로 전송되었습니다",
"codeVerified": "코드가 성공적으로 확인되었습니다",
@@ -1876,23 +1844,19 @@
"tabs": {
"installed": "설치됨",
"browse": "찾아보기",
"updates": "업데이트",
"registries": "레지스트리"
"updates": "업데이트"
},
"status": {
"summary": "{{installed}}개 설치, {{running}}개 실행 중",
"running": "실행 중",
"disabled": "비활성화됨",
"failed": "예기치 않게 중지됨",
"blocked": "다른 플러그인 대기 중",
"server": "서버에서 실행 중"
"blocked": "다른 플러그인 대기 중"
},
"groups": {
"running": "실행 중",
"notRunning": "실행 안 됨",
"onServer": "서버에 설치됨"
"notRunning": "실행 안 됨"
},
"runsOnServerHint": "이 플러그인은 서버에서만 실행되므로 데스크톱 앱에서는 비활성화됩니다. 서버에서는 정상적으로 작동합니다.",
"sort": {
"popular": "인기순",
"name": "이름순",
@@ -1910,7 +1874,7 @@
"version": "버전",
"status": "상태",
"category": "카테고리",
"downloads": "다운로드"
"installs": "설치 횟수"
},
"risk": {
"critical": "치명적",
@@ -2046,46 +2010,8 @@
"noneInstalled": "아직 플러그인이 설치되지 않았습니다. 둘러보고 추가해 보세요.",
"nothingHere": "내용이 없습니다.",
"nothingHereHint": "다른 카테고리나 검색어를 시도해 보세요.",
"showInstalled": "설치된 항목 표시",
"allInstalled": "여기에 있는 모든 항목이 이미 설치되어 있습니다.",
"allInstalledHint": "설치된 항목 표시를 켜면 볼 수 있습니다.",
"communitySoon": "커뮤니티 플러그인은 향후 업데이트에서 제공됩니다. 플러그인 개발자는 이미 커뮤니티 레지스트리에 플러그인을 제출할 수 있습니다.",
"communitySubmit": "제출 방법",
"registries": {
"intro": "레지스트리는 설치할 수 있는 플러그인 목록입니다. 공식 레지스트리는 항상 켜져 있습니다. 커뮤니티 레지스트리를 켜거나 사용자 정의 레지스트리를 추가할 수 있습니다.",
"hostYourOwn": "자신의 레지스트리 호스팅하기",
"add": "레지스트리 추가",
"addTitle": "레지스트리 추가",
"addHint": "레지스트리의 index.json 링크를 붙여넣으세요. Termix는 이를 읽고 플러그인에 서명하는 키를 표시합니다. 신뢰할 수 있는 사람만 추가하세요.",
"urlLabel": "인덱스 URL",
"check": "확인",
"addConfirm": "신뢰하고 추가",
"added": "{{name}} 추가됨",
"customWarning": "이 레지스트리의 플러그인은 Termix 팀에서 검토하지 않습니다. 레지스트리 소유자만 내용을 결정합니다. 모든 다운로드는 위의 키로 서명되어야 합니다.",
"keyFingerprint": "키 {{keyId}}",
"pluginCount_other": "{{count}}개 플러그인",
"officialName": "공식",
"communityName": "커뮤니티",
"alwaysOn": "항상 켜짐",
"communityHint": "다른 사용자가 만든 플러그인입니다. 각 버전은 목록에 올라가기 전에 사람과 자동 검사를 통해 확인됩니다.",
"communityConfirmTitle": "커뮤니티 플러그인을 켜시겠습니까?",
"communityConfirmBody": "커뮤니티 플러그인은 Termix 팀이 아닌 다른 사용자가 만듭니다. 각 버전은 목록에 올라가기 전에 사람과 자동 검사를 통해 확인되지만, 실수가 발생할 수 있습니다. 신뢰할 수 있는 플러그인만 설치하고 각 플러그인이 요청하는 권한을 확인하세요.",
"communityConfirm": "켜기",
"communityBadge": "커뮤니티",
"communityBadgeHint": "커뮤니티 레지스트리에서 제공됩니다. 다른 사용자가 만들었고 목록에 올라가기 전에 검토되었습니다.",
"customBadge": "사용자 정의",
"customBadgeHint": "{{name}}에서 제공됩니다. 관리자가 추가한 레지스트리입니다. Termix 팀에서 검토하지 않았습니다.",
"remove": "제거",
"removeTitle": "{{name}}을(를) 제거하시겠습니까?",
"removeBody": "해당 플러그인은 더 이상 탐색 화면에 표시되지 않습니다. 나중에 다시 추가할 수 있습니다.",
"removed": "{{name}} 제거됨",
"inUse": "먼저 {{name}}의 플러그인을 제거하세요: {{list}}",
"changeFailed": "레지스트리를 변경할 수 없습니다: {{error}}",
"loadFailed": "레지스트리를 로드할 수 없습니다: {{error}}",
"unreachable": "읽을 수 없습니다: {{error}}",
"filter": "레지스트리",
"allRegistries": "모든 레지스트리",
"browseHint": "커뮤니티 플러그인을 활성화하거나 레지스트리 탭에서 사용자 정의 레지스트리를 추가하세요."
},
"upToDate": "모든 항목이 최신 상태입니다.",
"lastChecked": "마지막 확인: {{time}}",
"updatesReady_other": "{{count}}개의 업데이트가 준비되었습니다.",
@@ -2106,7 +2032,9 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS가 설정되어 있어 파일에서 설치가 차단됩니다."
},
"count": {
"active_other": "{{formatted}}개의 활성 설치",
"downloads_other": "{{formatted}}회 다운로드",
"activeHint": "지난 주에 이 플러그인이 켜져 있다고 보고한 인스턴스 수입니다. 사용량 통계가 꺼진 인스턴스는 계산되지 않습니다.",
"downloadsHint": "릴리스가 다운로드된 횟수입니다. 이는 설치 횟수가 아닙니다."
},
"unverified": "미검증",
+10 -82
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Susietas su {{server}}",
"pluginsDocsLink": "Skaityti apie kiekvieną"
},
"desktopUpdates": {
"title": "Darbalaukio programėlė",
"mode": "Atnaujinimai",
"modeHint": "Kaip ši programėlė gauna naujas versijas.",
"manualModeHint": "Ši kopija negali atnaujinti pati, todėl Termix tik praneša, kai išleidžiama nauja versija.",
"modeAutomatic": "Automatiškai",
"modePrompt": "Paklausti pirmiausia",
"modeNever": "Niekada",
"automaticBody": "Atsisiųsti naujas versijas fone ir įdiegti jas paleidus programėlę iš naujo.",
"promptBody": "Praneškite, kai bus išleista nauja versija, ir leiskite man pasirinkti, kada ją atsisiųsti.",
"neverBody": "Neieškoti atnaujinimų. Visada galite patikrinti rankiniu būdu skiltyje Nustatymai.",
"onboardingTitle": "Programėlės atnaujinimai",
"onboardingBody": "Dabar darbalaukio programėlė gali atnaujinti pati. Pasirinkite, kaip norite gauti naujas versijas. Vėliau tai galite pakeisti skiltyje Nustatymai, Atnaujinimai.",
"onboardingManual": "Ši programėlės kopija buvo įdiegta taip, kad negali atnaujinti pati, todėl Termix praneš, kai bus išleista nauja versija, ir pateiks nuorodą ją atsisiųsti.",
"status": "Versija {{version}}",
"statusIdle": "Dar nepatikrinta",
"statusChecking": "Ieškoma atnaujinimų",
"statusAvailable": "Prieinama versija {{version}}",
"statusDownloading": "Atsisiunčiama versija {{version}} ({{progress}}%)",
"statusReady": "Versija {{version}} paruošta. Paleiskite iš naujo, kad ją įdiegtumėte.",
"statusUpToDate": "Turite naujausią versiją",
"statusError": "Nepavyko patikrinti atnaujinimų. Bandykite vėliau.",
"checkNow": "Patikrinti dabar",
"download": "Atsisiųsti",
"restart": "Paleisti iš naujo dabar",
"later": "Vėliau",
"available": "Prieinama Termix {{version}}",
"manualHint": "Atsisiųskite iš išleidimų puslapio ir įdiekite virš šios versijos.",
"ready": "Termix {{version}} paruošta įdiegimui",
"readyHint": "Ji bus įdiegta kitą kartą paleidus Termix iš naujo."
},
"nav": {
"home": "Pradžia",
"terminal": "Terminalas",
@@ -1155,7 +1124,6 @@
"databaseConnectionFailed": "Nepavyko prisijungti prie duomenų bazės serverio",
"embeddedServerPortInUse": "Prievadas {{port}} jau naudojamas kitos programos. Dažniausiai tai yra Termix Docker konteineris arba ankstesnės sesijos Termix procesas. Uždarykite jį ir paleiskite Termix iš naujo.",
"embeddedServerPortInUseUnknownPort": "Viena iš prievadų, kurių Termix reikia, jau naudojama kitos programos. Uždarykite programą, kurią naudoja, ir paleiskite Termix iš naujo.",
"embeddedServerOldDatabase": "Jūsų vietiniai duomenys yra iš Termix 2.8 arba senesnės versijos, todėl pirmiausia juos reikia atnaujinti per 2.9 versiją. Įdiekite Termix 2.9.1, atidarykite ją vieną kartą, kad duomenys būtų perkelti, tada vėl atnaujinkite į šią versiją.",
"embeddedServerCrashed": "Vietinis serveris netikėtai sustojo. Paleiskite Termix iš naujo ir, jei tai kartosis, patikrinkite darbalaužio žurnalą.",
"resetCodeSent": "Atstatymo kodas išsiųstas į Docker žurnalus",
"codeVerified": "Kodas sėkmingai patvirtintas",
@@ -1948,23 +1916,19 @@
"tabs": {
"installed": "Įdiegti",
"browse": "Naršyti",
"updates": "Atnaujinimai",
"registries": "Registratūros"
"updates": "Atnaujinimai"
},
"status": {
"summary": "{{installed}} įdiegta, {{running}} veikia",
"running": "Veikia",
"disabled": "Išjungta",
"failed": "Nenumatomai sustabdyta",
"blocked": "Laukiama kito priedo",
"server": "Veikia jūsų serveryje"
"blocked": "Laukiama kito priedo"
},
"groups": {
"running": "Veikia",
"notRunning": "Nevykdoma",
"onServer": "Jūsų serveryje"
"notRunning": "Nevykdoma"
},
"runsOnServerHint": "Šis priedas veikia tik jūsų serveryje, todėl darbalaukio programėlėje jis išjungtas. Jame vis tiek veikia.",
"sort": {
"popular": "Populiariausi",
"name": "Pavadinimas",
@@ -1982,7 +1946,7 @@
"version": "Versija",
"status": "Būsena",
"category": "Kategorija",
"downloads": "Atsisiuntimai"
"installs": "Įdiegimai"
},
"risk": {
"critical": "Kritinė",
@@ -2166,49 +2130,8 @@
"noneInstalled": "Dar nėra įdiegta jokių priedų. Naršykite, kad pridėtumėte.",
"nothingHere": "Čia nieko nėra.",
"nothingHereHint": "Pabandykite kitą kategoriją arba paiešką.",
"showInstalled": "Rodyti įdiegtus",
"allInstalled": "Viskas čia jau įdiegta.",
"allInstalledHint": "Įjunkite Rodyti įdiegtus, kad juos pamatytumėte.",
"communitySoon": "Bendruomenės priedai bus prieinami vėlesniame naujinime. Priedų autoriai jau gali pateikti savo priedus bendruomenės registrui.",
"communitySubmit": "Kaip pateikti",
"registries": {
"intro": "Registratūros yra sąrašai priedų, kuriuos galite įdiegti. Oficiali visada įjungta. Galite įjungti bendruomenės registratūrą arba pridėti savo.",
"hostYourOwn": "Sukurkite savo registratūrą",
"add": "Pridėti registratūrą",
"addTitle": "Pridėti registratūrą",
"addHint": "Įklijuokite nuorodą į registratūros index.json. Termix ją perskaitys ir parodys raktą, kuriuo pasirašomi priedai. Pridėkite tik registratūras, kurioms pasitikite.",
"urlLabel": "Indekso URL",
"check": "Patikrinti",
"addConfirm": "Pasitikėti ir pridėti",
"added": "Pridėta {{name}}",
"customWarning": "Šios registratūros priedai nėra peržiūrėti Termix komandos. Tik registratūros savininkas nusprendžia, kas joje bus. Kiekvienas atsisiuntimas turi būti pasirašytas aukščiau nurodytu raktu.",
"keyFingerprint": "Raktas {{keyId}}",
"pluginCount_one": "{{count}} priedas",
"pluginCount_few": "{{count}} priedai",
"pluginCount_many": "{{count}} priedų",
"pluginCount_other": "{{count}} priedų",
"officialName": "Oficiali",
"communityName": "Bendruomenė",
"alwaysOn": "Visada įjungta",
"communityHint": "Priedus sukūrė kiti žmonės. Kiekviena versija patikrinama žmogaus ir automatinių tikrinimų prieš ją įtraukiant į sąrašą.",
"communityConfirmTitle": "Įjungti bendruomenės priedus?",
"communityConfirmBody": "Bendruomenės priedus sukūrė kiti žmonės, ne Termix komanda. Kiekviena versija patikrinama žmogaus ir automatinių tikrinimų prieš ją įtraukiant į sąrašą, tačiau klaidos vis tiek gali prasiskverbti. Įdiekite tik priedus, kuriems pasitikite, ir patikrinkite, ko kiekvienas prašo.",
"communityConfirm": "Įjungti",
"communityBadge": "Bendruomenė",
"communityBadgeHint": "Iš bendruomenės registratūros. Sukūrė kiti žmonės ir buvo peržiūrėta prieš įtraukiant į sąrašą.",
"customBadge": "Nestandartinė",
"customBadgeHint": "Iš {{name}}, registratūros, kurią pridėjo administratorius. Neperžiūrėta Termix komandos.",
"remove": "Pašalinti",
"removeTitle": "Pašalinti „{{name}}“?",
"removeBody": "Jo priedai nebebus rodomi skiltyje „Naršyti“. Vėliau galėsite jį pridėti iš naujo.",
"removed": "„{{name}}“ pašalintas",
"inUse": "Pirmiausia išdiekite priedus iš „{{name}}“: {{list}}",
"changeFailed": "Nepavyko pakeisti registro: {{error}}",
"loadFailed": "Nepavyko įkelti registrų: {{error}}",
"unreachable": "Nepavyko jo perskaityti: {{error}}",
"filter": "Registras",
"allRegistries": "Visi registrai",
"browseHint": "Įjunkite bendruomenės priedus arba pridėkite savo registrą skirtuke „Registrai“."
},
"upToDate": "Viskas yra naujausia.",
"lastChecked": "Paskutinį kartą patikrinta {{time}}",
"updatesReady_one": "Pasiruošęs {{count}} naujinimas.",
@@ -2235,10 +2158,15 @@
"signedOnly": "Nustatytas TERMIX_REQUIRE_SIGNED_PLUGINS, todėl įdiegimas iš failo lieka blokuotas."
},
"count": {
"active_one": "{{formatted}} aktyvus įdiegimas",
"active_few": "{{formatted}} aktyvūs įdiegimai",
"active_many": "{{formatted}} aktyvių įdiegimų",
"active_other": "{{formatted}} aktyvūs įdiegimai",
"downloads_one": "{{formatted}} atsisiuntimas",
"downloads_few": "{{formatted}} atsisiuntimai",
"downloads_many": "{{formatted}} atsisiuntimų",
"downloads_other": "{{formatted}} atsisiuntimai",
"activeHint": "Pavyzdžių, kurie per pastarąją savaitę pranešė, kad šis priedas įjungtas, skaičius. Pavyzdžiai, kuriuose išjungta naudojimo statistika, nėra skaičiuojami.",
"downloadsHint": "Kiek kartų išleidimas buvo atsisiųstas. Tai nėra diegimų skaičius."
},
"unverified": "Patvirtintas",
+9 -81
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Saitēts ar {{server}}",
"pluginsDocsLink": "Lasiet par katru no tiem"
},
"desktopUpdates": {
"title": "Darbvirsmas lietotne",
"mode": "Atjauninājumi",
"modeHint": "Kā šī lietotne saņem jaunās versijas.",
"manualModeHint": "Šo kopiju nevar atjaunināt pati, tāpēc Termix tikai paziņo, kad ir iznākusi jauna versija.",
"modeAutomatic": "Automātiski",
"modePrompt": "Vispirms vaicāt",
"modeNever": "Nekad",
"automaticBody": "Lejupielādē jaunās versijas fonā un instalē tās, kad restartējat.",
"promptBody": "Paziņo, kad ir iznākusi jauna versija, un ļauj izvēlēties, kad to lejupielādēt.",
"neverBody": "Neizpildīt atjauninājumu pārbaudi. Jūs joprojām varat pārbaudīt manuāli Iestatījumos.",
"onboardingTitle": "Lietotnes atjauninājumi",
"onboardingBody": "Tagad darbvirsmas lietotne var atjaunināt pati. Izvēlieties, kā vēlaties saņemt jaunās versijas. To varat mainīt vēlāk Iestatījumos, sadaļā Atjauninājumi.",
"onboardingManual": "Šī lietotnes kopija tika instalēta tā, ka to nevar atjaunināt pati, tāpēc Termix paziņos, kad ir iznākusi jauna versija, ar saiti tās lejupielādei.",
"status": "Versija {{version}}",
"statusIdle": "Vēl nav pārbaudīts",
"statusChecking": "Pārbauda atjauninājumus",
"statusAvailable": "Ir pieejama versija {{version}}",
"statusDownloading": "Lejupielādē {{version}} ({{progress}}%)",
"statusReady": "Versija {{version}} ir gatava. Restartējiet, lai to instalētu.",
"statusUpToDate": "Jums ir jaunākā versija",
"statusError": "Neizdevās pārbaudīt atjauninājumus. Mēģiniet vēlreiz vēlāk.",
"checkNow": "Pārbaudīt tagad",
"download": "Lejupielādēt",
"restart": "Restartēt tagad",
"later": "Vēlāk",
"available": "Ir pieejams Termix {{version}}",
"manualHint": "Lejupielādējiet to no izlaišanas lapas un instalējiet virs šīs versijas.",
"ready": "Termix {{version}} ir gatavs instalēšanai",
"readyHint": "Tas tiks instalēts nākamajā reizi, kad Termix tiks restartēts."
},
"nav": {
"home": "Sākums",
"terminal": "Terminālis",
@@ -1141,7 +1110,6 @@
"databaseConnectionFailed": "Neizdevās izveidot savienojumu ar datubāzes serveri",
"embeddedServerPortInUse": "Ports {{port}} jau tiek izmantots citā programmā. Parasti tas ir Termix Docker konteineris vai iepriekšējās sesijas Termix process. Aizveriet to un restartējiet Termix.",
"embeddedServerPortInUseUnknownPort": "Viens no portiem, kurus Termix nepieciešams, jau tiek izmantots citā programmā. Aizveriet to, kas to izmanto, un restartējiet Termix.",
"embeddedServerOldDatabase": "Jūsu vietējie dati ir no Termix 2.8 vai vecākas versijas, un tiem vispirms ir jāiziet cauri 2.9 versijai. Instalējiet Termix 2.9.1, atveriet to vienu reizi, lai tas pārvietotu jūsu datus, pēc tam atkal atjauniniet uz šo versiju.",
"embeddedServerCrashed": "Vietējais serveris negaidīti apstājās. Restartējiet Termix un, ja tas turpinās notikt, pārbaudiet darbvirsmas žurnālu.",
"resetCodeSent": "Atiestatīšanas kods nosūtīts uz Docker žurnāliem",
"codeVerified": "Kods veiksmīgi verificēts",
@@ -1924,23 +1892,19 @@
"tabs": {
"installed": "Instalēti",
"browse": "Pārlūkot",
"updates": "Atjauninājumi",
"registries": "Reģistri"
"updates": "Atjauninājumi"
},
"status": {
"summary": "{{installed}} instalēti, {{running}} darbojas",
"running": "Darbojas",
"disabled": "Atspējots",
"failed": "Gaidāms apstājās",
"blocked": "Gaida citu spraudni",
"server": "Darbojas jūsu serverī"
"blocked": "Gaida citu spraudni"
},
"groups": {
"running": "Darbojas",
"notRunning": "Nedarbojas",
"onServer": "Jūsu serverī"
"notRunning": "Nedarbojas"
},
"runsOnServerHint": "Šis spraudnis darbojas tikai jūsu serverī, tāpēc darbvirsmas lietotnē tas ir izslēgts. Tur tas joprojām darbojas.",
"sort": {
"popular": "Populārākie",
"name": "Nosaukums",
@@ -1958,7 +1922,7 @@
"version": "Versija",
"status": "Statuss",
"category": "Kategorija",
"downloads": "Lejupielādes"
"installs": "Instalācijas"
},
"risk": {
"critical": "Kritisks",
@@ -2126,48 +2090,8 @@
"noneInstalled": "Vēl nav uzstādīti spraudņi. Pārlūkojiet, lai pievienotu.",
"nothingHere": "Šeit nekas nav.",
"nothingHereHint": "Mēģiniet citu kategoriju vai meklējiet.",
"showInstalled": "Rādīt instalētos",
"allInstalled": "Šeit viss jau ir instalēts.",
"allInstalledHint": "Ieslēdziet Rādīt instalētos, lai tos redzētu.",
"communitySoon": "Sabiedrības spraudņi būs pieejami nākamajā atjauninājumā. Spraudņu autori jau tagad var iesniegt savus spraudņus sabiedrības reģistrā.",
"communitySubmit": "Kā iesniegt",
"registries": {
"intro": "Reģistri ir spraudņu saraksti, kurus varat instalēt. Oficiālais reģistrs vienmēr ir ieslēgts. Varat ieslēgt kopienas reģistru vai pievienot savu.",
"hostYourOwn": "Izvietojiet savu reģistru",
"add": "Pievienot reģistru",
"addTitle": "Pievienot reģistru",
"addHint": "Ielīmējiet saiti uz reģistra index.json. Termix to nolasīs un parādīs atslēgu, ar kuru tas paraksta spraudņus. Pievienojiet tikai reģistrus no cilvēkiem, kam uzticat.",
"urlLabel": "Indeksa URL",
"check": "Pārbaudīt",
"addConfirm": "Uzticēties un pievienot",
"added": "Pievienots {{name}}",
"customWarning": "Spraudņi no šī reģistra netiek pārskatīti Termix komandas. Tikai reģistra īpašnieks nosaka, kas tajā atrodas. Katrai lejupielādei ir jābūt parakstītai ar augstāk minēto atslēgu.",
"keyFingerprint": "Atslēga {{keyId}}",
"pluginCount_zero": "0 spraudņi",
"pluginCount_one": "{{count}} spraudnis",
"pluginCount_other": "{{count}} spraudņi",
"officialName": "Oficiālais",
"communityName": "Kopiena",
"alwaysOn": "Vienmēr ieslēgts",
"communityHint": "Spraudņus izstrādājuši citi cilvēki. Katru versiju pirms iekļaušanas sarakstā pārbauda cilvēks un automatizētie pārbaudes.",
"communityConfirmTitle": "Ieslēgt kopienas spraudņus?",
"communityConfirmBody": "Kopienas spraudņus izstrādājuši citi cilvēki, nevis Termix komanda. Katru versiju pirms iekļaušanas sarakstā pārbauda cilvēks un automatizētie pārbaudes, taču kļūdas var tikt cauri. Instalējiet tikai spraudņus, kam uzticat, un pārbaudiet, ko katrs no tiem pieprasa.",
"communityConfirm": "Ieslēgt",
"communityBadge": "Kopiena",
"communityBadgeHint": "No kopienas reģistra. Izstrādājis cits cilvēks un pārskatīts pirms iekļaušanas sarakstā.",
"customBadge": "Pielāgots",
"customBadgeHint": "No {{name}}, reģistra, ko pievienoja administrators. Nepārskatīts Termix komandas.",
"remove": "Noņemt",
"removeTitle": "Noņemt {{name}}?",
"removeBody": "Tā spraudņi vairs neparādīsies sadaļā „Pārlūkot”. To varat pievienot vēlāk.",
"removed": "{{name}} noņemts",
"inUse": "Vispirms atinstalējiet spraudņus no {{name}}: {{list}}",
"changeFailed": "Neizdevās mainīt reģistru: {{error}}",
"loadFailed": "Neizdevās ielādēt reģistrus: {{error}}",
"unreachable": "Neizdevās to izlasīt: {{error}}",
"filter": "Reģistrs",
"allRegistries": "Visi reģistri",
"browseHint": "Ieslēdziet kopienas spraudņus vai pievienojiet savu reģistru cilnē „Reģistri”."
},
"upToDate": "Viss ir jaunākajā versijā.",
"lastChecked": "Pēdējo reizi pārbaudīts {{time}}",
"updatesReady_zero": "Nav gatavu atjauninājumu.",
@@ -2192,9 +2116,13 @@
"signedOnly": "Ir iestatīts TERMIX_REQUIRE_SIGNED_PLUGINS, tāpēc uzstādīšana no faila paliek bloķēta."
},
"count": {
"active_zero": "Nav aktīvu uzstādījumu.",
"active_one": "{{formatted}} aktīvs uzstādījums",
"active_other": "{{formatted}} aktīvi uzstādījumi",
"downloads_zero": "Nav lejupielāžu.",
"downloads_one": "{{formatted}} lejupielāde",
"downloads_other": "{{formatted}} lejupielādes",
"activeHint": "Instances, kas pēdējās nedēļas laikā ziņoja, ka šis spraudnis ir ieslēgts. Instances, kurām ir izslēgta lietošanas statistika, netiek skaitītas.",
"downloadsHint": "Cik reižu izlaidums tika lejupielādēts. Tas nav instalāciju skaits."
},
"unverified": "Nav verificēts",
+7 -79
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Disambungkan ke {{server}}",
"pluginsDocsLink": "Baca tentang setiap satu"
},
"desktopUpdates": {
"title": "Aplikasi desktop",
"mode": "Kemas kini",
"modeHint": "Bagaimana aplikasi ini mendapatkan versi baharu.",
"manualModeHint": "Salinan ini tidak boleh dikemas kini secara automatik, jadi Termix hanya akan memberitahu anda apabila versi baharu dikeluarkan.",
"modeAutomatic": "Automatik",
"modePrompt": "Tanya dahulu",
"modeNever": "Tidak pernah",
"automaticBody": "Muat turun versi baharu di latar belakang dan pasang apabila anda memulakan semula.",
"promptBody": "Beritahu saya apabila versi baharu dikeluarkan dan biarkan saya memilih bila untuk memuat turunnya.",
"neverBody": "Jangan semak kemas kini. Anda masih boleh menyemak secara manual dalam Tetapan.",
"onboardingTitle": "Kemas kini aplikasi",
"onboardingBody": "Aplikasi desktop kini boleh dikemas kini secara automatik. Pilih bagaimana anda mahu versi baharu tiba. Anda boleh mengubah ini kemudian dalam Tetapan, Kemas kini.",
"onboardingManual": "Salinan aplikasi ini dipasang dengan cara yang tidak boleh dikemas kini secara automatik, jadi Termix akan memberitahu anda apabila versi baharu dikeluarkan dengan pautan untuk memuat turunnya.",
"status": "Versi {{version}}",
"statusIdle": "Belum disemak",
"statusChecking": "Menyemak kemas kini",
"statusAvailable": "Versi {{version}} tersedia",
"statusDownloading": "Memuat turun {{version}} ({{progress}}%)",
"statusReady": "Versi {{version}} sedia. Mula semula untuk memasangnya.",
"statusUpToDate": "Anda mempunyai versi terkini",
"statusError": "Tidak dapat menyemak kemas kini. Cuba lagi nanti.",
"checkNow": "Semak sekarang",
"download": "Muat turun",
"restart": "Mula semula sekarang",
"later": "Nanti",
"available": "Termix {{version}} tersedia",
"manualHint": "Muat turun dari halaman pelepasan dan pasang di atas yang ini.",
"ready": "Termix {{version}} sedia untuk dipasang",
"readyHint": "Ia akan dipasang pada kali seterusnya Termix dimulakan semula."
},
"nav": {
"home": "Laman Utama",
"terminal": "Terminal",
@@ -1113,7 +1082,6 @@
"databaseConnectionFailed": "Gagal menyambung ke pelayan pangkalan data",
"embeddedServerPortInUse": "Port {{port}} sudah digunakan oleh program lain. Ini biasanya bekas kontena Docker Termix atau proses Termix yang tinggal dari sesi sebelumnya. Tutupnya, kemudian mulakan semula Termix.",
"embeddedServerPortInUseUnknownPort": "Salah satu port yang diperlukan oleh Termix sudah digunakan oleh program lain. Tutup apa sahaja yang menggunakannya, kemudian mulakan semula Termix.",
"embeddedServerOldDatabase": "Data tempatan anda adalah dari Termix 2.8 atau lebih lama dan perlu melalui versi 2.9 terlebih dahulu. Pasang Termix 2.9.1, buka sekali supaya ia boleh memindahkan data anda, kemudian kemaskini ke versi ini semula.",
"embeddedServerCrashed": "Pelayan tempatan berhenti secara tidak dijangka. Mulakan semula Termix, dan semak log desktop jika ini berlaku berulang kali.",
"resetCodeSent": "Kod reset dihantar ke log Docker",
"codeVerified": "Kod berjaya disahkan",
@@ -1876,23 +1844,19 @@
"tabs": {
"installed": "Dipasang",
"browse": "Semak imbas",
"updates": "Kemas kini",
"registries": "Daftar"
"updates": "Kemas kini"
},
"status": {
"summary": "{{installed}} dipasang, {{running}} berjalan",
"running": "Berjalan",
"disabled": "Dilumpuhkan",
"failed": "Berhenti secara tidak dijangka",
"blocked": "Menunggu plugin lain",
"server": "Berjalan pada pelayan anda"
"blocked": "Menunggu plugin lain"
},
"groups": {
"running": "Berjalan",
"notRunning": "Tidak berjalan",
"onServer": "Pada pelayan anda"
"notRunning": "Tidak berjalan"
},
"runsOnServerHint": "Plugin ini hanya berjalan pada pelayan anda, jadi ia kekal dimatikan dalam aplikasi desktop. Ia masih berfungsi di sana.",
"sort": {
"popular": "Paling popular",
"name": "Nama",
@@ -1910,7 +1874,7 @@
"version": "Versi",
"status": "Status",
"category": "Kategori",
"downloads": "Muat turun"
"installs": "Pemasangan"
},
"risk": {
"critical": "Kritikal",
@@ -2046,46 +2010,8 @@
"noneInstalled": "Tiada plugin dipasang lagi. Layari untuk menambah beberapa.",
"nothingHere": "Tiada apa-apa di sini.",
"nothingHereHint": "Cuba kategori lain atau carian.",
"showInstalled": "Paparkan yang dipasang",
"allInstalled": "Semua di sini sudah dipasang.",
"allInstalledHint": "Hidupkan Paparkan yang dipasang untuk melihatnya.",
"communitySoon": "Plugin komuniti akan datang dalam kemas kini kemudian. Pengarang plugin sudah boleh menghantar plugin mereka ke daftar komuniti.",
"communitySubmit": "Cara menghantar",
"registries": {
"intro": "Daftar adalah senarai plugin yang boleh anda pasang. Daftar rasmi sentiasa dihidupkan. Anda boleh menghidupkan daftar komuniti atau menambah milik anda sendiri.",
"hostYourOwn": "Hoskan daftar anda sendiri",
"add": "Tambah daftar",
"addTitle": "Tambah daftar",
"addHint": "Tampal pautan ke index.json daftar. Termix akan membacanya dan memaparkan kunci yang digunakan untuk menandatangani plugin. Hanya tambah daftar daripada orang yang anda percayai.",
"urlLabel": "URL Indeks",
"check": "Semak",
"addConfirm": "Percaya dan tambah",
"added": "Menambah {{name}}",
"customWarning": "Plugin dari daftar ini tidak disemak oleh pasukan Termix. Hanya pemilik daftar yang memutuskan apa yang ada di dalamnya. Setiap muat turun mesti ditandatangani oleh kunci di atas.",
"keyFingerprint": "Kunci {{keyId}}",
"pluginCount_other": "{{count}} plugin",
"officialName": "Rasmi",
"communityName": "Komuniti",
"alwaysOn": "Sentiasa dihidupkan",
"communityHint": "Plugin yang dibuat oleh orang lain. Setiap versi disemak oleh seseorang dan oleh pemeriksaan automatik sebelum ia disenaraikan.",
"communityConfirmTitle": "Hidupkan plugin komuniti?",
"communityConfirmBody": "Plugin komuniti dibuat oleh orang lain, bukan pasukan Termix. Setiap versi disemak oleh seseorang dan oleh pemeriksaan automatik sebelum ia disenaraikan, tetapi kesilapan masih boleh berlaku. Hanya pasang plugin yang anda percayai dan semak apa yang diminta oleh setiap satu.",
"communityConfirm": "Hidupkan",
"communityBadge": "Komuniti",
"communityBadgeHint": "Dari daftar komuniti. Dibuat oleh orang lain dan disemak sebelum ia disenaraikan.",
"customBadge": "Tersuai",
"customBadgeHint": "Dari {{name}}, sebuah daftar yang ditambah oleh pentadbir. Tidak disemak oleh pasukan Termix.",
"remove": "Buang",
"removeTitle": "Buang {{name}}?",
"removeBody": "Pluginnya tidak akan lagi dipaparkan dalam Teroka. Anda boleh menambahnya semula kemudian.",
"removed": "{{name}} telah dibuang",
"inUse": "Nyahpasang plugin dari {{name}} dahulu: {{list}}",
"changeFailed": "Tidak dapat mengubah daftar: {{error}}",
"loadFailed": "Tidak dapat memuatkan daftar: {{error}}",
"unreachable": "Tidak dapat membacanya: {{error}}",
"filter": "Daftar",
"allRegistries": "Semua daftar",
"browseHint": "Hidupkan plugin komuniti atau tambah daftar anda sendiri dalam tab Daftar."
},
"upToDate": "Semuanya terkini.",
"lastChecked": "Pemeriksaan terakhir {{time}}",
"updatesReady_other": "{{count}} kemas kini sedia.",
@@ -2106,7 +2032,9 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS ditetapkan, jadi pemasangan daripada fail kekal disekat."
},
"count": {
"active_other": "{{formatted}} pemasangan aktif",
"downloads_other": "{{formatted}} muat turun",
"activeHint": "Contoh yang melaporkan plugin ini dihidupkan dalam tempoh seminggu yang lalu. Contoh dengan statistik penggunaan yang dimatikan tidak dikira.",
"downloadsHint": "Berapa kali satu versi telah dimuat turun. Ini bukan bilangan pemasangan."
},
"unverified": "Tidak disahkan",
+8 -80
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Gekoppeld aan {{server}}",
"pluginsDocsLink": "Lees meer over elk plugin"
},
"desktopUpdates": {
"title": "Bureaublad-app",
"mode": "Updates",
"modeHint": "Hoe deze app nieuwe versies krijgt.",
"manualModeHint": "Deze kopie kan zichzelf niet updaten, dus Termix geeft je alleen een seintje als er een nieuwe versie is.",
"modeAutomatic": "Automatisch",
"modePrompt": "Eerst vragen",
"modeNever": "Nooit",
"automaticBody": "Download nieuwe versies op de achtergrond en installeer ze bij de volgende herstart.",
"promptBody": "Laat me weten als er een nieuwe versie is en laat me zelf kiezen wanneer ik hem download.",
"neverBody": "Niet controleren op updates. Je kunt dit handmatig doen in Instellingen.",
"onboardingTitle": "App-updates",
"onboardingBody": "De bureaublad-app kan zichzelf nu updaten. Kies hoe je nieuwe versies wilt ontvangen. Je kunt dit later wijzigen in Instellingen, Updates.",
"onboardingManual": "Deze kopie van de app is op een manier geïnstalleerd die geen automatische updates ondersteunt. Termix geeft je daarom een seintje als er een nieuwe versie is, met een link om hem te downloaden.",
"status": "Versie {{version}}",
"statusIdle": "Nog niet gecontroleerd",
"statusChecking": "Controleren op updates",
"statusAvailable": "Versie {{version}} is beschikbaar",
"statusDownloading": "Downloaden van {{version}} ({{progress}}%)",
"statusReady": "Versie {{version}} is klaar. Herstart om te installeren.",
"statusUpToDate": "Je hebt de nieuwste versie",
"statusError": "Kan niet controleren op updates. Probeer het later opnieuw.",
"checkNow": "Nu controleren",
"download": "Downloaden",
"restart": "Nu herstarten",
"later": "Later",
"available": "Termix {{version}} is beschikbaar",
"manualHint": "Download hem van de releasepagina en installeer hem bovenop deze versie.",
"ready": "Termix {{version}} is klaar om te installeren",
"readyHint": "Het wordt geïnstalleerd de volgende keer dat Termix herstart."
},
"nav": {
"home": "Home",
"terminal": "Terminal",
@@ -1127,7 +1096,6 @@
"databaseConnectionFailed": "Kan geen verbinding maken met de databaseserver",
"embeddedServerPortInUse": "Poort {{port}} wordt al gebruikt door een ander programma. Dit is meestal een Termix Docker-container of een overgebleven Termix-proces van een eerdere sessie. Sluit deze af en start Termix opnieuw op.",
"embeddedServerPortInUseUnknownPort": "Een van de poorten die Termix nodig heeft, wordt al gebruikt door een ander programma. Sluit het programma dat deze gebruikt en start Termix opnieuw op.",
"embeddedServerOldDatabase": "Je lokale gegevens zijn afkomstig van Termix 2.8 of ouder en moeten eerst door versie 2.9 worden verwerkt. Installeer Termix 2.9.1, open het een keer zodat je gegevens kunnen worden gemigreerd en update daarna opnieuw naar deze versie.",
"embeddedServerCrashed": "De lokale server is onverwacht gestopt. Start Termix opnieuw op en controleer het bureaubladlogboek als dit blijft gebeuren.",
"resetCodeSent": "Resetcode verzonden naar Docker-logboeken",
"codeVerified": "Code succesvol geverifieerd",
@@ -1900,23 +1868,19 @@
"tabs": {
"installed": "Geïnstalleerd",
"browse": "Bladeren",
"updates": "Updates",
"registries": "Registrars"
"updates": "Updates"
},
"status": {
"summary": "{{installed}} geïnstalleerd, {{running}} actief",
"running": "Actief",
"disabled": "Uitgeschakeld",
"failed": "Onverwacht gestopt",
"blocked": "Wachten op een andere plugin",
"server": "Wordt uitgevoerd op je server"
"blocked": "Wachten op een andere plugin"
},
"groups": {
"running": "Actief",
"notRunning": "Niet actief",
"onServer": "Op je server"
"notRunning": "Niet actief"
},
"runsOnServerHint": "Deze plugin wordt alleen uitgevoerd op je server, dus hij staat uit in de bureaublad-app. Hij werkt daar wel.",
"sort": {
"popular": "Meest populair",
"name": "Naam",
@@ -1934,7 +1898,7 @@
"version": "Versie",
"status": "Status",
"category": "Categorie",
"downloads": "Downloads"
"installs": "Installaties"
},
"risk": {
"critical": "Kritiek",
@@ -2086,47 +2050,8 @@
"noneInstalled": "Nog geen plugins geïnstalleerd. Blader om er een paar toe te voegen.",
"nothingHere": "Hier is niets.",
"nothingHereHint": "Probeer een andere categorie of zoekopdracht.",
"showInstalled": "Geïnstalleerde tonen",
"allInstalled": "Alles hier is al geïnstalleerd.",
"allInstalledHint": "Zet Geïnstalleerde tonen aan om ze te zien.",
"communitySoon": "Community-plugins komen in een latere update. Plugin-auteurs kunnen hun plugins al indienen bij het community-register.",
"communitySubmit": "Hoe in te dienen",
"registries": {
"intro": "Registrars zijn lijsten met plugins die je kunt installeren. De officiële staat altijd aan. Je kunt de community-registrar aanzetten of je eigen toevoegen.",
"hostYourOwn": "Je eigen registrar hosten",
"add": "Registrar toevoegen",
"addTitle": "Een registrar toevoegen",
"addHint": "Plak de link naar de index.json van de registrar. Termix leest deze in en toont de sleutel waarmee de plugins worden ondertekend. Voeg alleen registrars toe van bronnen die je vertrouwt.",
"urlLabel": "Index-URL",
"check": "Controleren",
"addConfirm": "Vertrouwen en toevoegen",
"added": "{{name}} toegevoegd",
"customWarning": "Plugins uit deze registrar worden niet beoordeeld door het Termix-team. Alleen de eigenaar van de registrar bepaalt wat erin staat. Elke download moet worden ondertekend met de bovenstaande sleutel.",
"keyFingerprint": "Sleutel {{keyId}}",
"pluginCount_one": "{{count}} plugin",
"pluginCount_other": "{{count}} plugins",
"officialName": "Officieel",
"communityName": "Community",
"alwaysOn": "Altijd aan",
"communityHint": "Plugins gemaakt door anderen. Elke versie wordt door een persoon en door geautomatiseerde controles gecontroleerd voordat hij wordt opgenomen.",
"communityConfirmTitle": "Community-plugins aanzetten?",
"communityConfirmBody": "Community-plugins worden gemaakt door anderen, niet door het Termix-team. Elke versie wordt door een persoon en door geautomatiseerde controles gecontroleerd voordat hij wordt opgenomen, maar er kunnen nog steeds fouten insluipen. Installeer alleen plugins die je vertrouwt en controleer wat elke plugin vraagt.",
"communityConfirm": "Aanzetten",
"communityBadge": "Community",
"communityBadgeHint": "Uit de community-registrar. Gemaakt door anderen en beoordeeld voordat hij werd opgenomen.",
"customBadge": "Aangepast",
"customBadgeHint": "Uit {{name}}, een registrar die een beheerder heeft toegevoegd. Niet beoordeeld door het Termix-team.",
"remove": "Verwijderen",
"removeTitle": "{{name}} verwijderen?",
"removeBody": "De plugins ervan worden niet langer weergegeven in Bladeren. Je kunt het later opnieuw toevoegen.",
"removed": "{{name}} verwijderd",
"inUse": "Verwijder eerst de plugins van {{name}}: {{list}}",
"changeFailed": "Het register kon niet worden gewijzigd: {{error}}",
"loadFailed": "Registers konden niet worden geladen: {{error}}",
"unreachable": "Kon het niet lezen: {{error}}",
"filter": "Register",
"allRegistries": "Alle registers",
"browseHint": "Schakel community-plugins in of voeg je eigen register toe op het tabblad Registers."
},
"upToDate": "Alles is bijgewerkt.",
"lastChecked": "Laatst gecontroleerd {{time}}",
"updatesReady_one": "{{count}} update klaar.",
@@ -2149,8 +2074,11 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS is ingesteld, dus installeren vanuit een bestand blijft geblokkeerd."
},
"count": {
"active_one": "{{formatted}} actieve installatie",
"active_other": "{{formatted}} actieve installaties",
"downloads_one": "{{formatted}} download",
"downloads_other": "{{formatted}} downloads",
"activeHint": "Instanties die in de afgelopen week hebben gemeld dat deze plugin was ingeschakeld. Instanties met gebruikstatistieken uitgeschakeld worden niet meegeteld.",
"downloadsHint": "Hoe vaak een release is gedownload. Dit is niet het aantal installaties."
},
"unverified": "Niet geverifieerd",
+8 -80
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Koblet til {{server}}",
"pluginsDocsLink": "Les om hver enkelt"
},
"desktopUpdates": {
"title": "Skrivebordsapp",
"mode": "Oppdateringer",
"modeHint": "Hvordan denne appen får nye versjoner.",
"manualModeHint": "Denne kopien kan ikke oppdatere seg selv, så Termix varsler deg bare når en ny versjon er tilgjengelig.",
"modeAutomatic": "Automatisk",
"modePrompt": "Spør først",
"modeNever": "Aldri",
"automaticBody": "Last ned nye versjoner i bakgrunnen og installer dem når du starter på nytt.",
"promptBody": "Varsle meg når en ny versjon er tilgjengelig, og la meg velge når jeg vil laste den ned.",
"neverBody": "Ikke sjekk etter oppdateringer. Du kan fortsatt sjekke manuelt i Innstillinger.",
"onboardingTitle": "Appoppdateringer",
"onboardingBody": "Skrivebordsappen kan nå oppdatere seg selv. Velg hvordan du vil at nye versjoner skal ankomme. Du kan endre dette senere i Innstillinger, Oppdateringer.",
"onboardingManual": "Denne kopien av appen ble installert på en måte som ikke tillater selvoppdatering, så Termix vil varsle deg når en ny versjon er tilgjengelig med en lenke for nedlasting.",
"status": "Versjon {{version}}",
"statusIdle": "Ikke sjekket ennå",
"statusChecking": "Sjekker etter oppdateringer",
"statusAvailable": "Versjon {{version}} er tilgjengelig",
"statusDownloading": "Laster ned {{version}} ({{progress}} %)",
"statusReady": "Versjon {{version}} er klar. Start på nytt for å installere den.",
"statusUpToDate": "Du har den nyeste versjonen",
"statusError": "Kunne ikke sjekke etter oppdateringer. Prøv igjen senere.",
"checkNow": "Sjekk nå",
"download": "Last ned",
"restart": "Start på nytt nå",
"later": "Senere",
"available": "Termix {{version}} er tilgjengelig",
"manualHint": "Last den ned fra utgivelsessiden og installer den over den nåværende.",
"ready": "Termix {{version}} er klar til installasjon",
"readyHint": "Den installeres neste gang Termix starter på nytt."
},
"nav": {
"home": "Hjem",
"terminal": "Terminal",
@@ -1127,7 +1096,6 @@
"databaseConnectionFailed": "Kunne ikke koble til databasenserveren",
"embeddedServerPortInUse": "Port {{port}} er allerede i bruk av et annet program. Dette er vanligvis en Termix Docker-container eller en etterlatt Termix-prosess fra en tidligere økt. Lukk den, og start deretter Termix på nytt.",
"embeddedServerPortInUseUnknownPort": "En av portene Termix trenger er allerede i bruk av et annet program. Lukk det som bruker den, og start deretter Termix på nytt.",
"embeddedServerOldDatabase": "De lokale dataene dine er fra Termix 2.8 eller eldre og må først oppgraderes gjennom versjon 2.9. Installer Termix 2.9.1, åpne den én gang slik at den kan flytte dataene dine, og oppgrader deretter til denne versjonen igjen.",
"embeddedServerCrashed": "Den lokale serveren stoppet uventet. Start Termix på nytt, og sjekk skrivebordsloggen hvis dette fortsetter å skje.",
"resetCodeSent": "Tilbakestillingskode sendt til Docker-logger",
"codeVerified": "Koden ble verifisert",
@@ -1900,23 +1868,19 @@
"tabs": {
"installed": "Installert",
"browse": "Utforsk",
"updates": "Oppdateringer",
"registries": "Register"
"updates": "Oppdateringer"
},
"status": {
"summary": "{{installed}} installert, {{running}} kjører",
"running": "Kjører",
"disabled": "Deaktivert",
"failed": "Stoppet uventet",
"blocked": "Venter på et annet plugin",
"server": "Kjører på serveren din"
"blocked": "Venter på et annet plugin"
},
"groups": {
"running": "Kjører",
"notRunning": "Kjører ikke",
"onServer": "På serveren din"
"notRunning": "Kjører ikke"
},
"runsOnServerHint": "Denne utvidelsen kjører kun på serveren din, så den er avskrudd i skrivebordsappen. Den fungerer fortsatt der.",
"sort": {
"popular": "Mest populære",
"name": "Navn",
@@ -1934,7 +1898,7 @@
"version": "Versjon",
"status": "Status",
"category": "Kategori",
"downloads": "Nedlastinger"
"installs": "Installasjoner"
},
"risk": {
"critical": "Kritisk",
@@ -2086,47 +2050,8 @@
"noneInstalled": "Ingen plugins er installert ennå. Bla gjennom for å legge til noen.",
"nothingHere": "Ingenting her.",
"nothingHereHint": "Prøv en annen kategori eller søk.",
"showInstalled": "Vis installerte",
"allInstalled": "Alt her er allerede installert.",
"allInstalledHint": "Skru på Vis installerte for å se dem.",
"communitySoon": "Community-plugins kommer i en senere oppdatering. Plugin-utviklere kan allerede sende inn sine til community-registret.",
"communitySubmit": "Slik sender du inn",
"registries": {
"intro": "Register er lister over utvidelser du kan installere. Det offisielle er alltid på. Du kan skru på fellesskapsregisteret eller legge til ditt eget.",
"hostYourOwn": "Host ditt eget register",
"add": "Legg til register",
"addTitle": "Legg til et register",
"addHint": "Lim inn lenken til registerets index.json. Termix leser den og viser nøkkelen den signerer utvidelser med. Legg kun til register fra personer du stoler på.",
"urlLabel": "Indeks-URL",
"check": "Sjekk",
"addConfirm": "Stol på og legg til",
"added": "La til {{name}}",
"customWarning": "Utvidelser fra dette registeret er ikke gjennomgått av Termix-teamet. Kun eieren av registeret bestemmer hva som er i det. Hver nedlasting må være signert med nøkkelen over.",
"keyFingerprint": "Nøkkel {{keyId}}",
"pluginCount_one": "{{count}} utvidelse",
"pluginCount_other": "{{count}} utvidelser",
"officialName": "Offisiell",
"communityName": "Fellesskap",
"alwaysOn": "Alltid på",
"communityHint": "Utvidelser laget av andre. Hver versjon blir sjekket av en person og av automatiske kontroller før den blir listet.",
"communityConfirmTitle": "Skru på fellesskapsutvidelser?",
"communityConfirmBody": "Fellesskapsutvidelser er laget av andre, ikke av Termix-teamet. Hver versjon blir sjekket av en person og av automatiske kontroller før den blir listet, men feil kan fortsatt smugles inn. Installer kun utvidelser du stoler på, og sjekk hva hver enkelt ber om.",
"communityConfirm": "Skru på",
"communityBadge": "Fellesskap",
"communityBadgeHint": "Fra fellesskapsregisteret. Laget av andre og gjennomgått før den ble listet.",
"customBadge": "Egendefinert",
"customBadgeHint": "Fra {{name}}, et register en administrator la til. Ikke gjennomgått av Termix-teamet.",
"remove": "Fjern",
"removeTitle": "Fjern {{name}}?",
"removeBody": "Tilleggene fra denne kilden vises ikke lenger i Utforsk. Du kan legge den til igjen senere.",
"removed": "Fjernet {{name}}",
"inUse": "Avinstaller tilleggene fra {{name}} først: {{list}}",
"changeFailed": "Kunne ikke endre registeret: {{error}}",
"loadFailed": "Kunne ikke laste register: {{error}}",
"unreachable": "Kunne ikke lese det: {{error}}",
"filter": "Register",
"allRegistries": "Alle registre",
"browseHint": "Aktiver fellesskapstillegg eller legg til ditt eget register i fanen Register."
},
"upToDate": "Alt er oppdatert.",
"lastChecked": "Sist sjekket {{time}}",
"updatesReady_one": "{{count}} oppdatering klar.",
@@ -2149,8 +2074,11 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS er satt, så installasjon fra fil er fortsatt blokkert."
},
"count": {
"active_one": "{{formatted}} aktiv installasjon",
"active_other": "{{formatted}} aktive installasjoner",
"downloads_one": "{{formatted}} nedlasting",
"downloads_other": "{{formatted}} nedlastinger",
"activeHint": "Instanser som rapporterte at denne plugin-en var aktivert den siste uken. Instanser med brukerstatisikker avskrudd blir ikke med i tellingen.",
"downloadsHint": "Hvor mange ganger en utgivelse ble lastet ned. Dette er ikke antall installasjoner."
},
"unverified": "Uverifisert",
+10 -82
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Połączono z {{server}}",
"pluginsDocsLink": "Przeczytaj o każdej z nich"
},
"desktopUpdates": {
"title": "Aplikacja desktopowa",
"mode": "Aktualizacje",
"modeHint": "Jak aplikacja pobiera nowe wersje.",
"manualModeHint": "Ta kopia nie może się aktualizować samodzielnie, więc Termix tylko informuje Cię o dostępności nowej wersji.",
"modeAutomatic": "Automatycznie",
"modePrompt": "Pytaj najpierw",
"modeNever": "Nigdy",
"automaticBody": "Pobieraj nowe wersje w tle i instaluj je po ponownym uruchomieniu.",
"promptBody": "Powiadom mnie o dostępności nowej wersji i pozwól mi wybrać, kiedy ją pobrać.",
"neverBody": "Nie sprawdzaj aktualizacji. Możesz nadal sprawdzić ręcznie w Ustawieniach.",
"onboardingTitle": "Aktualizacje aplikacji",
"onboardingBody": "Aplikacja desktopowa może teraz aktualizować się samodzielnie. Wybierz, jak chcesz otrzymywać nowe wersje. Możesz to później zmienić w Ustawieniach, Aktualizacje.",
"onboardingManual": "Ta kopia aplikacji została zainstalowana w sposób, który nie pozwala na samodzielną aktualizację, więc Termix poinformuje Cię o dostępności nowej wersji, udostępniając link do pobrania.",
"status": "Wersja {{version}}",
"statusIdle": "Nie sprawdzono jeszcze",
"statusChecking": "Sprawdzanie aktualizacji",
"statusAvailable": "Dostępna jest wersja {{version}}",
"statusDownloading": "Pobieranie {{version}} ({{progress}}%)",
"statusReady": "Wersja {{version}} jest gotowa. Uruchom ponownie, aby zainstalować.",
"statusUpToDate": "Masz najnowszą wersję",
"statusError": "Nie udało się sprawdzić aktualizacji. Spróbuj ponownie później.",
"checkNow": "Sprawdź teraz",
"download": "Pobierz",
"restart": "Uruchom ponownie teraz",
"later": "Później",
"available": "Dostępna jest wersja Termix {{version}}",
"manualHint": "Pobierz ją ze strony wydań i zainstaluj nad istniejącą.",
"ready": "Termix {{version}} jest gotowy do instalacji",
"readyHint": "Zostanie zainstalowany przy następnym ponownym uruchomieniu Termix."
},
"nav": {
"home": "Strona główna",
"terminal": "Terminal",
@@ -1155,7 +1124,6 @@
"databaseConnectionFailed": "Nie udało się połączyć z serwerem bazy danych",
"embeddedServerPortInUse": "Port {{port}} jest już używany przez inny program. Zazwyczaj jest to kontener Docker Termix lub pozostały proces Termix z poprzedniej sesji. Zamknij go, a następnie uruchom Termix ponownie.",
"embeddedServerPortInUseUnknownPort": "Jeden z portów wymaganych przez Termix jest już używany przez inny program. Zamknij program, który go używa, a następnie uruchom Termix ponownie.",
"embeddedServerOldDatabase": "Twoje lokalne dane pochodzą z Termix 2.8 lub starszej wersji i muszą zostać najpierw zaktualizowane do wersji 2.9. Zainstaluj Termix 2.9.1, otwórz go raz, aby mógł przenieść Twoje dane, a następnie zaktualizuj ponownie do tej wersji.",
"embeddedServerCrashed": "Lokalny serwer zatrzymał się nieoczekiwanie. Uruchom Termix ponownie i sprawdź dziennik pulpitu, jeśli problem będzie się powtarzał.",
"resetCodeSent": "Kod resetowania wysłany do logów Docker",
"codeVerified": "Kod zweryfikowany pomyślnie",
@@ -1948,23 +1916,19 @@
"tabs": {
"installed": "Zainstalowane",
"browse": "Przeglądaj",
"updates": "Aktualizacje",
"registries": "Rejestry"
"updates": "Aktualizacje"
},
"status": {
"summary": "{{installed}} zainstalowanych, {{running}} uruchomionych",
"running": "Uruchomione",
"disabled": "Wyłączone",
"failed": "Zatrzymane nieoczekiwanie",
"blocked": "Oczekiwanie na inną wtyczkę",
"server": "Uruchamiane na Twoim serwerze"
"blocked": "Oczekiwanie na inną wtyczkę"
},
"groups": {
"running": "Uruchomione",
"notRunning": "Nie uruchomione",
"onServer": "Na Twoim serwerze"
"notRunning": "Nie uruchomione"
},
"runsOnServerHint": "Ten wtyczka działa tylko na Twoim serwerze, więc jest wyłączona w aplikacji desktopowej. Nadal działa tam.",
"sort": {
"popular": "Najpopularniejsze",
"name": "Nazwa",
@@ -1982,7 +1946,7 @@
"version": "Wersja",
"status": "Status",
"category": "Kategoria",
"downloads": "Pobrania"
"installs": "Instalacje"
},
"risk": {
"critical": "Krytyczne",
@@ -2166,49 +2130,8 @@
"noneInstalled": "Nie zainstalowano jeszcze żadnych wtyczek. Przeglądaj, aby dodać kilka.",
"nothingHere": "Nic tutaj nie ma.",
"nothingHereHint": "Spróbuj innej kategorii lub wyszukiwania.",
"showInstalled": "Pokaż zainstalowane",
"allInstalled": "Wszystko tutaj jest już zainstalowane.",
"allInstalledHint": "Włącz Pokaż zainstalowane, aby je zobaczyć.",
"communitySoon": "Wtyczki społecznościowe pojawią się w kolejnej aktualizacji. Autorzy wtyczek mogą już przesyłać swoje do rejestru społecznościowego.",
"communitySubmit": "Jak przesłać",
"registries": {
"intro": "Rejestry to listy wtyczek, które można zainstalować. Oficjalny jest zawsze włączony. Możesz włączyć rejestr społecznościowy lub dodać własny.",
"hostYourOwn": "Hostuj własny rejestr",
"add": "Dodaj rejestr",
"addTitle": "Dodaj rejestr",
"addHint": "Wklej link do index.json rejestru. Termix go odczyta i pokaże klucz, którym podpisuje wtyczki. Dodawaj tylko rejestry od zaufanych osób.",
"urlLabel": "URL indeksu",
"check": "Sprawdź",
"addConfirm": "Zaufaj i dodaj",
"added": "Dodano {{name}}",
"customWarning": "Wtyczki z tego rejestru nie są sprawdzane przez zespół Termix. Tylko właściciel rejestru decyduje, co w nim znajduje się. Każde pobranie musi być podpisane kluczem powyżej.",
"keyFingerprint": "Klucz {{keyId}}",
"pluginCount_one": "{{count}} wtyczka",
"pluginCount_few": "{{count}} wtyczki",
"pluginCount_many": "{{count}} wtyczek",
"pluginCount_other": "{{count}} wtyczek",
"officialName": "Oficjalny",
"communityName": "Społecznościowy",
"alwaysOn": "Zawsze włączony",
"communityHint": "Wtyczki stworzone przez innych użytkowników. Każda wersja jest sprawdzana przez osobę i automatyczne kontrole przed umieszczeniem na liście.",
"communityConfirmTitle": "Włączyć wtyczki społecznościowe?",
"communityConfirmBody": "Wtyczki społecznościowe są tworzone przez innych użytkowników, a nie zespół Termix. Każda wersja jest sprawdzana przez osobę i automatyczne kontrole przed umieszczeniem na liście, ale błędy mogą się zdarzyć. Instaluj tylko wtyczki, którym ufasz, i sprawdzaj, czego każda z nich wymaga.",
"communityConfirm": "Włącz",
"communityBadge": "Społecznościowy",
"communityBadgeHint": "Z rejestru społecznościowego. Stworzone przez innych użytkowników i sprawdzone przed umieszczeniem na liście.",
"customBadge": "Niestandardowy",
"customBadgeHint": "Z {{name}}, rejestru dodanego przez administratora. Nie sprawdzane przez zespół Termix.",
"remove": "Usuń",
"removeTitle": "Usunąć {{name}}?",
"removeBody": "Jego wtyczki nie będą już wyświetlane w sekcji Przeglądaj. Możesz dodać je ponownie później.",
"removed": "Usunięto {{name}}",
"inUse": "Najpierw odinstaluj wtyczki z {{name}}: {{list}}",
"changeFailed": "Nie udało się zmienić rejestru: {{error}}",
"loadFailed": "Nie udało się załadować rejestrów: {{error}}",
"unreachable": "Nie udało się odczytać: {{error}}",
"filter": "Rejestr",
"allRegistries": "Wszystkie rejestry",
"browseHint": "Włącz wtyczki społecznościowe lub dodaj własny rejestr w zakładce Rejestry."
},
"upToDate": "Wszystko jest aktualne.",
"lastChecked": "Ostatnio sprawdzono {{time}}",
"updatesReady_one": "{{count}} aktualizacja gotowa.",
@@ -2235,10 +2158,15 @@
"signedOnly": "Ustawiono TERMIX_REQUIRE_SIGNED_PLUGINS, więc instalacja z pliku pozostaje zablokowana."
},
"count": {
"active_one": "{{formatted}} aktywna instalacja",
"active_few": "{{formatted}} aktywne instalacje",
"active_many": "{{formatted}} aktywnych instalacji",
"active_other": "{{formatted}} aktywnych instalacji",
"downloads_one": "{{formatted}} pobranie",
"downloads_few": "{{formatted}} pobrania",
"downloads_many": "{{formatted}} pobrań",
"downloads_other": "{{formatted}} pobrań",
"activeHint": "Instancje, które zgłosiły włączenie tego wtyczki w ciągu ostatniego tygodnia. Instancje z wyłączonymi statystykami użycia nie są liczane.",
"downloadsHint": "Ile razy wydanie zostało pobrane. To nie jest liczba instalacji."
},
"unverified": "Nieweryfikowany",
+9 -81
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Vinculado a {{server}}",
"pluginsDocsLink": "Leia sobre cada um"
},
"desktopUpdates": {
"title": "App para desktop",
"mode": "Atualizações",
"modeHint": "Como este app recebe novas versões.",
"manualModeHint": "Esta cópia não pode se atualizar sozinha, então o Termix apenas avisa quando uma nova versão é lançada.",
"modeAutomatic": "Automático",
"modePrompt": "Perguntar primeiro",
"modeNever": "Nunca",
"automaticBody": "Baixar novas versões em segundo plano e instalá-las ao reiniciar.",
"promptBody": "Avisar-me quando uma nova versão estiver disponível e deixar-me escolher quando baixá-la.",
"neverBody": "Não verificar atualizações. Você ainda pode verificar manualmente em Configurações.",
"onboardingTitle": "Atualizações do app",
"onboardingBody": "O app para desktop agora pode se atualizar sozinho. Escolha como deseja receber novas versões. Você pode alterar isso depois em Configurações, Atualizações.",
"onboardingManual": "Esta cópia do app foi instalada de uma forma que não permite autoatualização, então o Termix avisará quando uma nova versão estiver disponível com um link para baixá-la.",
"status": "Versão {{version}}",
"statusIdle": "Ainda não verificado",
"statusChecking": "Verificando atualizações",
"statusAvailable": "A versão {{version}} está disponível",
"statusDownloading": "Baixando {{version}} ({{progress}}%)",
"statusReady": "A versão {{version}} está pronta. Reinicie para instalá-la.",
"statusUpToDate": "Você tem a versão mais recente",
"statusError": "Não foi possível verificar atualizações. Tente novamente mais tarde.",
"checkNow": "Verificar agora",
"download": "Baixar",
"restart": "Reiniciar agora",
"later": "Depois",
"available": "Termix {{version}} está disponível",
"manualHint": "Baixe-o na página de lançamentos e instale por cima desta versão.",
"ready": "Termix {{version}} está pronto para instalação",
"readyHint": "Será instalado na próxima vez que o Termix reiniciar."
},
"nav": {
"home": "Início",
"terminal": "Terminal",
@@ -1141,7 +1110,6 @@
"databaseConnectionFailed": "Falha ao conectar ao servidor de banco de dados",
"embeddedServerPortInUse": "A porta {{port}} já está em uso por outro programa. Geralmente, isso é um contêiner Docker do Termix ou um processo residual do Termix de uma sessão anterior. Feche-o e reinicie o Termix.",
"embeddedServerPortInUseUnknownPort": "Uma das portas necessárias para o Termix já está em uso por outro programa. Feche o que estiver usando-a e reinicie o Termix.",
"embeddedServerOldDatabase": "Seus dados locais são da versão 2.8 ou anterior do Termix e precisam passar pela versão 2.9 primeiro. Instale o Termix 2.9.1, abra-o uma vez para que ele possa migrar seus dados e, em seguida, atualize para esta versão novamente.",
"embeddedServerCrashed": "O servidor local parou inesperadamente. Reinicie o Termix e verifique o log da área de trabalho se isso continuar acontecendo.",
"resetCodeSent": "Código de redefinição enviado para os logs do Docker",
"codeVerified": "Código verificado com sucesso",
@@ -1924,23 +1892,19 @@
"tabs": {
"installed": "Instalados",
"browse": "Navegar",
"updates": "Atualizações",
"registries": "Registros"
"updates": "Atualizações"
},
"status": {
"summary": "{{installed}} instalados, {{running}} em execução",
"running": "Em execução",
"disabled": "Desativado",
"failed": "Parado inesperadamente",
"blocked": "Aguardando outro plugin",
"server": "Executa no seu servidor"
"blocked": "Aguardando outro plugin"
},
"groups": {
"running": "Em execução",
"notRunning": "Não em execução",
"onServer": "No seu servidor"
"notRunning": "Não em execução"
},
"runsOnServerHint": "Este plugin só executa no seu servidor, por isso fica desativado no app para desktop. Ele continua funcionando lá.",
"sort": {
"popular": "Mais populares",
"name": "Nome",
@@ -1958,7 +1922,7 @@
"version": "Versão",
"status": "Status",
"category": "Categoria",
"downloads": "Downloads"
"installs": "Instalações"
},
"risk": {
"critical": "Crítico",
@@ -2126,48 +2090,8 @@
"noneInstalled": "Nenhum plugin instalado ainda. Navegue para adicionar alguns.",
"nothingHere": "Nada aqui.",
"nothingHereHint": "Tente outra categoria ou pesquisa.",
"showInstalled": "Mostrar instalados",
"allInstalled": "Tudo aqui já está instalado.",
"allInstalledHint": "Ative Mostrar instalados para vê-los.",
"communitySoon": "Plugins da comunidade chegarão em uma atualização futura. Autores de plugins já podem enviar os seus para o registro da comunidade.",
"communitySubmit": "Como enviar",
"registries": {
"intro": "Registros são listas de plugins que você pode instalar. O oficial está sempre ativado. Você pode ativar o registro da comunidade ou adicionar o seu próprio.",
"hostYourOwn": "Hospede seu próprio registro",
"add": "Adicionar registro",
"addTitle": "Adicionar um registro",
"addHint": "Cole o link do index.json do registro. O Termix o lê e mostra a chave com que ele assina os plugins. Adicione apenas registros de pessoas em quem confia.",
"urlLabel": "URL do índice",
"check": "Verificar",
"addConfirm": "Confiar e adicionar",
"added": "{{name}} adicionado",
"customWarning": "Plugins deste registro não são revisados pela equipe do Termix. Apenas o proprietário do registro decide o que nele está. Cada download deve ser assinado pela chave acima.",
"keyFingerprint": "Chave {{keyId}}",
"pluginCount_one": "{{count}} plugin",
"pluginCount_many": "{{count}} plugins",
"pluginCount_other": "{{count}} plugins",
"officialName": "Oficial",
"communityName": "Comunidade",
"alwaysOn": "Sempre ativado",
"communityHint": "Plugins feitos por outras pessoas. Cada versão é verificada por uma pessoa e por verificações automatizadas antes de ser listada.",
"communityConfirmTitle": "Ativar plugins da comunidade?",
"communityConfirmBody": "Plugins da comunidade são feitos por outras pessoas, não pela equipe do Termix. Cada versão é verificada por uma pessoa e por verificações automatizadas antes de ser listada, mas erros ainda podem passar. Instale apenas plugins em quem confia e verifique o que cada um solicita.",
"communityConfirm": "Ativar",
"communityBadge": "Comunidade",
"communityBadgeHint": "Do registro da comunidade. Feito por outras pessoas e revisado antes de ser listado.",
"customBadge": "Personalizado",
"customBadgeHint": "De {{name}}, um registro adicionado por um administrador. Não revisado pela equipe do Termix.",
"remove": "Remover",
"removeTitle": "Remover {{name}}?",
"removeBody": "Seus plugins não aparecerão mais em Navegar. Você pode adicioná-lo novamente mais tarde.",
"removed": "{{name}} removido",
"inUse": "Desinstale os plugins de {{name}} primeiro: {{list}}",
"changeFailed": "Não foi possível alterar o registro: {{error}}",
"loadFailed": "Não foi possível carregar os registros: {{error}}",
"unreachable": "Não foi possível ler: {{error}}",
"filter": "Registro",
"allRegistries": "Todos os registros",
"browseHint": "Ative os plugins da comunidade ou adicione seu próprio registro na aba Registros."
},
"upToDate": "Tudo está atualizado.",
"lastChecked": "Última verificação {{time}}",
"updatesReady_one": "{{count}} atualização pronta.",
@@ -2192,9 +2116,13 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS está definido, então a instalação a partir de arquivo permanece bloqueada."
},
"count": {
"active_one": "{{formatted}} instalação ativa",
"active_many": "{{formatted}} instalações ativas",
"active_other": "{{formatted}} instalações ativas",
"downloads_one": "{{formatted}} download",
"downloads_many": "{{formatted}} downloads",
"downloads_other": "{{formatted}} downloads",
"activeHint": "Instâncias que relataram este plugin ativado na última semana. Instâncias com estatísticas de uso desativadas não são contadas.",
"downloadsHint": "Quantas vezes uma versão foi baixada. Isso não é o número de instalações."
},
"unverified": "Não verificado",
+9 -81
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Ligado a {{server}}",
"pluginsDocsLink": "Leia sobre cada um"
},
"desktopUpdates": {
"title": "Aplicação desktop",
"mode": "Atualizações",
"modeHint": "Como esta aplicação recebe novas versões.",
"manualModeHint": "Esta cópia não pode atualizar-se automaticamente, pelo que o Termix apenas informa quando há uma nova versão disponível.",
"modeAutomatic": "Automático",
"modePrompt": "Perguntar primeiro",
"modeNever": "Nunca",
"automaticBody": "Transferir novas versões em segundo plano e instalá-las quando reiniciar.",
"promptBody": "Avisar-me quando houver uma nova versão e deixar-me escolher quando a transferir.",
"neverBody": "Não verificar atualizações. Pode sempre verificar manualmente nas Definições.",
"onboardingTitle": "Atualizações da aplicação",
"onboardingBody": "A aplicação desktop pode agora atualizar-se automaticamente. Escolha como deseja receber as novas versões. Pode alterar isto mais tarde em Definições, Atualizações.",
"onboardingManual": "Esta cópia da aplicação foi instalada de uma forma que não permite atualizações automáticas, pelo que o Termix irá informar quando houver uma nova versão disponível com um link para a transferir.",
"status": "Versão {{version}}",
"statusIdle": "Ainda não verificado",
"statusChecking": "A verificar atualizações",
"statusAvailable": "A versão {{version}} está disponível",
"statusDownloading": "A transferir {{version}} ({{progress}}%)",
"statusReady": "A versão {{version}} está pronta. Reinicie para instalar.",
"statusUpToDate": "Tem a versão mais recente",
"statusError": "Não foi possível verificar atualizações. Tente novamente mais tarde.",
"checkNow": "Verificar agora",
"download": "Transferir",
"restart": "Reiniciar agora",
"later": "Mais tarde",
"available": "O Termix {{version}} está disponível",
"manualHint": "Transfira-o na página de lançamentos e instale-o por cima desta versão.",
"ready": "O Termix {{version}} está pronto para instalar",
"readyHint": "Será instalado na próxima reinicialização do Termix."
},
"nav": {
"home": "Início",
"terminal": "Terminal",
@@ -1141,7 +1110,6 @@
"databaseConnectionFailed": "Falha ao conectar ao servidor de base de dados",
"embeddedServerPortInUse": "A porta {{port}} já está em uso por outro programa. Isto é geralmente um contentor Docker do Termix ou um processo residual do Termix de uma sessão anterior. Feche-o e reinicie o Termix.",
"embeddedServerPortInUseUnknownPort": "Uma das portas necessárias ao Termix já está em uso por outro programa. Feche o que a estiver a usar e reinicie o Termix.",
"embeddedServerOldDatabase": "Os seus dados locais são da versão 2.8 ou anterior do Termix e precisam de passar primeiro pela versão 2.9. Instale o Termix 2.9.1, abra-o uma vez para que possa migrar os seus dados e, em seguida, atualize novamente para esta versão.",
"embeddedServerCrashed": "O servidor local parou inesperadamente. Reinicie o Termix e verifique o registo do ambiente de trabalho se isto continuar a acontecer.",
"resetCodeSent": "Código de redefinição enviado para os registos do Docker",
"codeVerified": "Código verificado com sucesso",
@@ -1924,23 +1892,19 @@
"tabs": {
"installed": "Instalados",
"browse": "Explorar",
"updates": "Atualizações",
"registries": "Registos"
"updates": "Atualizações"
},
"status": {
"summary": "{{installed}} instalados, {{running}} em execução",
"running": "Em execução",
"disabled": "Desativado",
"failed": "Parado inesperadamente",
"blocked": "À espera de outro plugin",
"server": "Executa no seu servidor"
"blocked": "À espera de outro plugin"
},
"groups": {
"running": "Em execução",
"notRunning": "Não em execução",
"onServer": "No seu servidor"
"notRunning": "Não em execução"
},
"runsOnServerHint": "Este plugin apenas executa no seu servidor, pelo que permanece desativado na aplicação desktop. Continua a funcionar lá.",
"sort": {
"popular": "Mais populares",
"name": "Nome",
@@ -1958,7 +1922,7 @@
"version": "Versão",
"status": "Estado",
"category": "Categoria",
"downloads": "Transferências"
"installs": "Instalações"
},
"risk": {
"critical": "Crítico",
@@ -2126,48 +2090,8 @@
"noneInstalled": "Ainda não há plugins instalados. Navegue para adicionar alguns.",
"nothingHere": "Nada aqui.",
"nothingHereHint": "Tente outra categoria ou pesquisa.",
"showInstalled": "Mostrar instalados",
"allInstalled": "Tudo aqui já está instalado.",
"allInstalledHint": "Ative Mostrar instalados para os ver.",
"communitySoon": "Plugins da comunidade chegarão numa atualização futura. Os autores de plugins já podem submeter os seus ao registo da comunidade.",
"communitySubmit": "Como submeter",
"registries": {
"intro": "Os registos são listas de plugins que pode instalar. O oficial está sempre ativo. Pode ativar o registo da comunidade ou adicionar o seu próprio.",
"hostYourOwn": "Alojar o seu próprio registo",
"add": "Adicionar registo",
"addTitle": "Adicionar um registo",
"addHint": "Cole o link para o index.json do registo. O Termix lê-o e mostra a chave com que assina os plugins. Adicione apenas registos de pessoas em quem confia.",
"urlLabel": "URL do índice",
"check": "Verificar",
"addConfirm": "Confiar e adicionar",
"added": "Adicionado {{name}}",
"customWarning": "Os plugins deste registo não são revistos pela equipa do Termix. Apenas o proprietário do registo decide o que nele se inclui. Cada transferência deve ser assinada pela chave acima.",
"keyFingerprint": "Chave {{keyId}}",
"pluginCount_one": "{{count}} plugin",
"pluginCount_many": "{{count}} plugins",
"pluginCount_other": "{{count}} plugins",
"officialName": "Oficial",
"communityName": "Comunidade",
"alwaysOn": "Sempre ativo",
"communityHint": "Plugins feitos por outras pessoas. Cada versão é verificada por uma pessoa e por verificações automáticas antes de ser listada.",
"communityConfirmTitle": "Ativar plugins da comunidade?",
"communityConfirmBody": "Os plugins da comunidade são feitos por outras pessoas, não pela equipa do Termix. Cada versão é verificada por uma pessoa e por verificações automáticas antes de ser listada, mas erros podem ainda ocorrer. Instale apenas plugins em quem confia e verifique o que cada um solicita.",
"communityConfirm": "Ativar",
"communityBadge": "Comunidade",
"communityBadgeHint": "Do registo da comunidade. Feito por outras pessoas e revisto antes de ser listado.",
"customBadge": "Personalizado",
"customBadgeHint": "De {{name}}, um registo adicionado por um administrador. Não revisto pela equipa do Termix.",
"remove": "Remover",
"removeTitle": "Remover {{name}}?",
"removeBody": "Os seus plugins deixarão de aparecer em Explorar. Pode adicioná-lo novamente mais tarde.",
"removed": "{{name}} removido",
"inUse": "Desinstale primeiro os plugins de {{name}}: {{list}}",
"changeFailed": "Não foi possível alterar o registo: {{error}}",
"loadFailed": "Não foi possível carregar os registos: {{error}}",
"unreachable": "Não foi possível ler: {{error}}",
"filter": "Registo",
"allRegistries": "Todos os registos",
"browseHint": "Ative os plugins da comunidade ou adicione o seu próprio registo na separação Registos."
},
"upToDate": "Tudo está atualizado.",
"lastChecked": "Última verificação {{time}}",
"updatesReady_one": "{{count}} atualização pronta.",
@@ -2192,9 +2116,13 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS está definido, por isso a instalação a partir de ficheiro permanece bloqueada."
},
"count": {
"active_one": "{{formatted}} instalação ativa",
"active_many": "{{formatted}} instalações ativas",
"active_other": "{{formatted}} instalações ativas",
"downloads_one": "{{formatted}} descarga",
"downloads_many": "{{formatted}} descargas",
"downloads_other": "{{formatted}} descargas",
"activeHint": "Instâncias que reportaram este plugin ativado na última semana. Instâncias com estatísticas de utilização desativadas não são contadas.",
"downloadsHint": "Quantas vezes uma versão foi descarregada. Isto não é o número de instalações."
},
"unverified": "Não verificado",
+9 -81
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Legat de {{server}}",
"pluginsDocsLink": "Citește despre fiecare"
},
"desktopUpdates": {
"title": "Aplicație desktop",
"mode": "Actualizări",
"modeHint": "Cum primește această aplicație versiuni noi.",
"manualModeHint": "Această copie nu se poate actualiza singură, așa că Termix îți va anunța doar când apare o versiune nouă.",
"modeAutomatic": "Automat",
"modePrompt": "Întreabă mai întâi",
"modeNever": "Niciodată",
"automaticBody": "Descarcă versiunile noi în fundal și instalează-le când repornești aplicația.",
"promptBody": "Anunță-mă când apare o versiune nouă și lasă-mă să aleg când să o descarc.",
"neverBody": "Nu verifica actualizările. Îți poți verifica manual în Setări.",
"onboardingTitle": "Actualizări aplicație",
"onboardingBody": "Aplicația desktop se poate actualiza acum singură. Alege cum vrei să primești versiunile noi. Poți modifica această setare ulterior în Setări, Actualizări.",
"onboardingManual": "Această copie a aplicației a fost instalată într-un mod care nu permite actualizarea automată, așa că Termix îți va anunța când apare o versiune nouă, cu un link pentru descărcare.",
"status": "Versiunea {{version}}",
"statusIdle": "Nu s-a verificat încă",
"statusChecking": "Se verifică actualizările",
"statusAvailable": "Versiunea {{version}} este disponibilă",
"statusDownloading": "Se descarcă {{version}} ({{progress}}%)",
"statusReady": "Versiunea {{version}} este gata. Repornește pentru a o instala.",
"statusUpToDate": "Ai cea mai nouă versiune",
"statusError": "Nu s-au putut verifica actualizările. Încearcă din nou mai târziu.",
"checkNow": "Verifică acum",
"download": "Descarcă",
"restart": "Repornire acum",
"later": "Mai târziu",
"available": "Termix {{version}} este disponibil",
"manualHint": "Descarcă-l de pe pagina de lansare și instalează-l peste cel actual.",
"ready": "Termix {{version}} este gata de instalare",
"readyHint": "Se instalează data viitoare când Termix se repornește."
},
"nav": {
"home": "Acasă",
"terminal": "Terminal",
@@ -1141,7 +1110,6 @@
"databaseConnectionFailed": "Nu s-a putut conecta la serverul de bază de date",
"embeddedServerPortInUse": "Portul {{port}} este deja utilizat de un alt program. De obicei, acesta este un container Docker Termix sau un proces Termix rămas dintr-o sesiune anterioară. Închideți-l, apoi reporniți Termix.",
"embeddedServerPortInUseUnknownPort": "Unul dintre porturile de care are nevoie Termix este deja utilizat de un alt program. Închideți aplicația care îl utilizează, apoi reporniți Termix.",
"embeddedServerOldDatabase": "Datele locale sunt din Termix 2.8 sau o versiune anterioară și trebuie să treacă mai întâi prin versiunea 2.9. Instalați Termix 2.9.1, deschideți-l o dată pentru a vă muta datele, apoi actualizați din nou la această versiune.",
"embeddedServerCrashed": "Serverul local s-a oprit neașteptat. Reporniți Termix și verificați jurnalul desktop dacă problema persistă.",
"resetCodeSent": "Codul de resetare a fost trimis în jurnalul Docker",
"codeVerified": "Codul a fost verificat cu succes",
@@ -1924,23 +1892,19 @@
"tabs": {
"installed": "Instalate",
"browse": "Răsfoire",
"updates": "Actualizări",
"registries": "Registre"
"updates": "Actualizări"
},
"status": {
"summary": "{{installed}} instalate, {{running}} în execuție",
"running": "În execuție",
"disabled": "Dezactivat",
"failed": "Oprit neașteptat",
"blocked": "Așteaptă un alt plugin",
"server": "Rulează pe serverul tău"
"blocked": "Așteaptă un alt plugin"
},
"groups": {
"running": "În execuție",
"notRunning": "Nu este în execuție",
"onServer": "Pe serverul tău"
"notRunning": "Nu este în execuție"
},
"runsOnServerHint": "Acest plugin rulează doar pe serverul tău, așa că rămâne dezactivat în aplicația desktop. Funcționează totuși acolo.",
"sort": {
"popular": "Cele mai populare",
"name": "Nume",
@@ -1958,7 +1922,7 @@
"version": "Versiune",
"status": "Stare",
"category": "Categorie",
"downloads": "Descărcări"
"installs": "Instalări"
},
"risk": {
"critical": "Critic",
@@ -2126,48 +2090,8 @@
"noneInstalled": "Nu sunt plugin-uri instalate încă. Răsfoiește pentru a adăuga unele.",
"nothingHere": "Nimic aici.",
"nothingHereHint": "Încearcă o altă categorie sau o căutare.",
"showInstalled": "Arată instalate",
"allInstalled": "Totul de aici este deja instalat.",
"allInstalledHint": "Activează „Arată instalate” pentru a le vedea.",
"communitySoon": "Plugin-urile comunității vor fi disponibile într-o actualizare ulterioară. Autorii de plugin-uri își pot deja trimite plugin-urile în registrul comunității.",
"communitySubmit": "Cum să trimiți",
"registries": {
"intro": "Registrele sunt liste de pluginuri pe care le poți instala. Cel oficial este mereu activat. Poți activa registrul comunității sau să adaugi unul propriu.",
"hostYourOwn": "Găzduiește-ți propriul registru",
"add": "Adaugă registru",
"addTitle": "Adaugă un registru",
"addHint": "Lipește link-ul către index.json al registrului. Termix îl citește și afișează cheia cu care semnează pluginurile. Adaugă doar registre de la surse de încredere.",
"urlLabel": "URL index",
"check": "Verifică",
"addConfirm": "Aprobă și adaugă",
"added": "Adăugat {{name}}",
"customWarning": "Pluginurile din acest registru nu sunt verificate de echipa Termix. Doar proprietarul registrului decide ce conține. Fiecare descărcare trebuie semnată cu cheia de mai sus.",
"keyFingerprint": "Cheia {{keyId}}",
"pluginCount_one": "{{count}} plugin",
"pluginCount_few": "{{count}} pluginuri",
"pluginCount_other": "{{count}} pluginuri",
"officialName": "Oficial",
"communityName": "Comunitate",
"alwaysOn": "Mereu activat",
"communityHint": "Pluginuri create de alte persoane. Fiecare versiune este verificată de o persoană și prin verificări automate înainte de a fi listată.",
"communityConfirmTitle": "Activezi pluginurile comunității?",
"communityConfirmBody": "Pluginurile comunității sunt create de alte persoane, nu de echipa Termix. Fiecare versiune este verificată de o persoană și prin verificări automate înainte de a fi listată, dar pot trece totuși erori. Instalează doar pluginuri de care ai încredere și verifică ce solicită fiecare.",
"communityConfirm": "Activează",
"communityBadge": "Comunitate",
"communityBadgeHint": "Din registrul comunității. Creat de alte persoane și verificat înainte de listare.",
"customBadge": "Personalizat",
"customBadgeHint": "Din {{name}}, un registru adăugat de un administrator. Nu este verificat de echipa Termix.",
"remove": "Elimină",
"removeTitle": "Elimină {{name}}?",
"removeBody": "Plugin-urile sale nu vor mai apărea în secțiunea Browse. Le poți adăuga din nou mai târziu.",
"removed": "{{name}} eliminat",
"inUse": "Dezinstalează mai întâi plugin-urile din {{name}}: {{list}}",
"changeFailed": "Nu s-a putut modifica registrul: {{error}}",
"loadFailed": "Nu s-au putut încărca registrele: {{error}}",
"unreachable": "Nu s-a putut citi: {{error}}",
"filter": "Registrul",
"allRegistries": "Toate registrele",
"browseHint": "Activează plugin-urile comunitare sau adaugă propriul registru în fila Registries."
},
"upToDate": "Totul este la zi.",
"lastChecked": "Ultima verificare {{time}}",
"updatesReady_one": "{{count}} actualizare gata.",
@@ -2192,9 +2116,13 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS este setat, așa că instalarea din fișier rămâne blocată."
},
"count": {
"active_one": "{{formatted}} instalare activă",
"active_few": "{{formatted}} instalări active",
"active_other": "{{formatted}} instalări active",
"downloads_one": "{{formatted}} descărcare",
"downloads_few": "{{formatted}} descărcări",
"downloads_other": "{{formatted}} descărcări",
"activeHint": "Instanțe care au raportat acest plugin activat în ultima săptămână. Instanțele cu statisticile de utilizare dezactivate nu sunt luate în calcul.",
"downloadsHint": "De câte ori a fost descărcată o versiune. Acesta nu este numărul de instalări."
},
"unverified": "Nevalidat",
+10 -82
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Привязано к {{server}}",
"pluginsDocsLink": "Подробнее о каждом"
},
"desktopUpdates": {
"title": "Десктопное приложение",
"mode": "Обновления",
"modeHint": "Как приложение получает новые версии.",
"manualModeHint": "Эта копия не может обновляться автоматически, поэтому Termix только уведомляет вас о выходе новой версии.",
"modeAutomatic": "Автоматически",
"modePrompt": "Спрашивать",
"modeNever": "Никогда",
"automaticBody": "Скачивать новые версии в фоновом режиме и устанавливать их при перезапуске.",
"promptBody": "Уведомлять о выходе новой версии и позволять мне выбрать время для скачивания.",
"neverBody": "Не проверять наличие обновлений. Вы всё равно можете проверить их вручную в Настройках.",
"onboardingTitle": "Обновления приложения",
"onboardingBody": "Десктопное приложение теперь может обновляться самостоятельно. Выберите, как вы хотите получать новые версии. Это можно изменить позже в Настройках, раздел Обновления.",
"onboardingManual": "Эта копия приложения была установлена таким образом, что не может обновляться автоматически, поэтому Termix будет уведомлять вас о выходе новой версии со ссылкой для скачивания.",
"status": "Версия {{version}}",
"statusIdle": "Ещё не проверено",
"statusChecking": "Проверка обновлений",
"statusAvailable": "Доступна версия {{version}}",
"statusDownloading": "Скачивание {{version}} ({{progress}}%)",
"statusReady": "Версия {{version}} готова. Перезапустите приложение для установки.",
"statusUpToDate": "У вас установлена последняя версия",
"statusError": "Не удалось проверить наличие обновлений. Попробуйте позже.",
"checkNow": "Проверить сейчас",
"download": "Скачать",
"restart": "Перезапустить сейчас",
"later": "Позже",
"available": "Доступна Termix {{version}}",
"manualHint": "Скачайте её со страницы релизов и установите поверх текущей версии.",
"ready": "Termix {{version}} готова к установке",
"readyHint": "Она будет установлена при следующем перезапуске Termix."
},
"nav": {
"home": "Главная",
"terminal": "Терминал",
@@ -1155,7 +1124,6 @@
"databaseConnectionFailed": "Не удалось подключиться к серверу базы данных",
"embeddedServerPortInUse": "Порт {{port}} уже занят другой программой. Обычно это контейнер Termix Docker или процесс Termix от предыдущего сеанса. Закройте его, затем перезапустите Termix.",
"embeddedServerPortInUseUnknownPort": "Один из портов, необходимых Termix, уже занят другой программой. Закройте программу, использующую этот порт, затем перезапустите Termix.",
"embeddedServerOldDatabase": "Ваши локальные данные относятся к Termix версии 2.8 или более ранней и должны быть сначала обновлены через версию 2.9. Установите Termix 2.9.1, откройте его один раз для миграции данных, а затем обновитесь до текущей версии.",
"embeddedServerCrashed": "Локальный сервер неожиданно остановился. Перезапустите Termix и проверьте журнал рабочего стола, если это повторится.",
"resetCodeSent": "Код сброса отправлен в логи Docker",
"codeVerified": "Код успешно подтвержден",
@@ -1948,23 +1916,19 @@
"tabs": {
"installed": "Установленные",
"browse": "Каталог",
"updates": "Обновления",
"registries": "Регистры"
"updates": "Обновления"
},
"status": {
"summary": "{{installed}} установлено, {{running}} запущено",
"running": "Запущен",
"disabled": "Отключен",
"failed": "Неожиданно остановлен",
"blocked": "Ожидание другого плагина",
"server": "Работает на вашем сервере"
"blocked": "Ожидание другого плагина"
},
"groups": {
"running": "Запущенные",
"notRunning": "Не запущенные",
"onServer": "На вашем сервере"
"notRunning": "Не запущенные"
},
"runsOnServerHint": "Этот плагин работает только на вашем сервере, поэтому он отключён в десктопном приложении. Он продолжает работать на сервере.",
"sort": {
"popular": "Самые популярные",
"name": "Имя",
@@ -1982,7 +1946,7 @@
"version": "Версия",
"status": "Статус",
"category": "Категория",
"downloads": "Скачивания"
"installs": "Установки"
},
"risk": {
"critical": "Критический",
@@ -2166,49 +2130,8 @@
"noneInstalled": "Плагины ещё не установлены. Просмотрите каталог, чтобы добавить.",
"nothingHere": "Здесь пусто.",
"nothingHereHint": "Попробуйте другую категорию или поиск.",
"showInstalled": "Показать установленные",
"allInstalled": "Всё здесь уже установлено.",
"allInstalledHint": "Включите «Показать установленные», чтобы увидеть их.",
"communitySoon": "Пользовательские плагины появятся в одном из будущих обновлений. Авторы плагинов уже могут отправлять свои плагины в реестр сообщества.",
"communitySubmit": "Как отправить",
"registries": {
"intro": "Регистры — это списки плагинов, которые можно установить. Официальный регистр всегда включён. Вы можете включить регистр сообщества или добавить свой собственный.",
"hostYourOwn": "Разместить свой регистр",
"add": "Добавить регистр",
"addTitle": "Добавить регистр",
"addHint": "Вставьте ссылку на index.json регистра. Termix прочитает его и покажет ключ, которым он подписывает плагины. Добавляйте только регистры от людей, которым доверяете.",
"urlLabel": "URL индекса",
"check": "Проверить",
"addConfirm": "Доверять и добавить",
"added": "Добавлен {{name}}",
"customWarning": "Плагины из этого регистра не проверяются командой Termix. Только владелец регистра решает, что в нём находится. Каждое скачивание должно быть подписано ключом, указанным выше.",
"keyFingerprint": "Ключ {{keyId}}",
"pluginCount_one": "{{count}} плагин",
"pluginCount_few": "{{count}} плагина",
"pluginCount_many": "{{count}} плагинов",
"pluginCount_other": "{{count}} плагинов",
"officialName": "Официальный",
"communityName": "Сообщества",
"alwaysOn": "Всегда включён",
"communityHint": "Плагины, созданные другими людьми. Каждая версия проверяется человеком и автоматическими проверками перед добавлением в список.",
"communityConfirmTitle": "Включить плагины сообщества?",
"communityConfirmBody": "Плагины сообщества создаются другими людьми, а не командой Termix. Каждая версия проверяется человеком и автоматическими проверками перед добавлением в список, но ошибки всё же могут проскользнуть. Устанавливайте только те плагины, которым доверяете, и проверяйте, какие разрешения запрашивает каждый из них.",
"communityConfirm": "Включить",
"communityBadge": "Сообщества",
"communityBadgeHint": "Из регистра сообщества. Создан другими людьми и проверен перед добавлением в список.",
"customBadge": "Пользовательский",
"customBadgeHint": "Из {{name}}, регистра, добавленного администратором. Не проверен командой Termix.",
"remove": "Удалить",
"removeTitle": "Удалить {{name}}?",
"removeBody": "Плагины из этого реестра больше не будут отображаться в разделе «Обзор». Вы можете добавить его снова позже.",
"removed": "{{name}} удалён",
"inUse": "Сначала удалите плагины из {{name}}: {{list}}",
"changeFailed": "Не удалось изменить реестр: {{error}}",
"loadFailed": "Не удалось загрузить реестры: {{error}}",
"unreachable": "Не удалось прочитать: {{error}}",
"filter": "Реестр",
"allRegistries": "Все реестры",
"browseHint": "Включите плагины сообщества или добавьте свой собственный реестр на вкладке «Реестры»."
},
"upToDate": "Всё обновлено.",
"lastChecked": "Последняя проверка: {{time}}",
"updatesReady_one": "{{count}} обновление готово.",
@@ -2235,10 +2158,15 @@
"signedOnly": "Установлена переменная TERMIX_REQUIRE_SIGNED_PLUGINS, поэтому установка из файла заблокирована."
},
"count": {
"active_one": "{{formatted}} активная установка",
"active_few": "{{formatted}} активных установки",
"active_many": "{{formatted}} активных установок",
"active_other": "{{formatted}} активных установок",
"downloads_one": "{{formatted}} загрузка",
"downloads_few": "{{formatted}} загрузки",
"downloads_many": "{{formatted}} загрузок",
"downloads_other": "{{formatted}} загрузок",
"activeHint": "Количество экземпляров, которые сообщили об активации этого плагина за последнюю неделю. Экземпляры с отключённой статистикой использования не учитываются.",
"downloadsHint": "Количество загрузок релиза. Это не количество установок."
},
"unverified": "Непроверенный",
+10 -82
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Prepojené s {{server}}",
"pluginsDocsLink": "Prečítajte si o každom z nich"
},
"desktopUpdates": {
"title": "Desktopová aplikácia",
"mode": "Aktualizácie",
"modeHint": "Ako táto aplikácia získava nové verzie.",
"manualModeHint": "Tento inštalátor sa nedokáže aktualizovať sám, preto vás Termix iba upozorní, keď je k dispozícii nová verzia.",
"modeAutomatic": "Automaticky",
"modePrompt": "Najprv sa opýtať",
"modeNever": "Nikdy",
"automaticBody": "Stiahnuť nové verzie na pozadí a nainštalovať ich po reštarte.",
"promptBody": "Upozorniť ma, keď je k dispozícii nová verzia, a nechať ma vybrať, kedy ju stiahnuť.",
"neverBody": "Nekontrolovať aktualizácie. Stále ich môžete skontrolovať ručne v Nastaveniach.",
"onboardingTitle": "Aktualizácie aplikácie",
"onboardingBody": "Desktopová aplikácia sa teraz dokáže aktualizovať sama. Vyberte si, ako chcete dostávať nové verzie. Toto môžete neskôr zmeniť v Nastaveniach, Aktualizácie.",
"onboardingManual": "Táto kópia aplikácie bola nainštalovaná spôsobom, ktorý neumožňuje samostatnú aktualizáciu, preto vás Termix upozorní, keď je k dispozícii nová verzia, a poskytne odkaz na jej stiahnutie.",
"status": "Verzia {{version}}",
"statusIdle": "Ešte nebola skontrolovaná",
"statusChecking": "Kontrola aktualizácií",
"statusAvailable": "Verzia {{version}} je k dispozícii",
"statusDownloading": "Sťahovanie {{version}} ({{progress}} %)",
"statusReady": "Verzia {{version}} je pripravená. Reštartujte ju pre inštaláciu.",
"statusUpToDate": "Máte najnovšiu verziu",
"statusError": "Nepodarilo sa skontrolovať aktualizácie. Skúste to znova neskôr.",
"checkNow": "Skontrolovať teraz",
"download": "Stiahnuť",
"restart": "Reštartovať teraz",
"later": "Neskôr",
"available": "Termix {{version}} je k dispozícii",
"manualHint": "Stiahnite si ho zo stránky s vydáním a nainštalujte ho namiesto tejto verzie.",
"ready": "Termix {{version}} je pripravený na inštaláciu",
"readyHint": "Nainštaluje sa pri ďalšom reštarte Termixu."
},
"nav": {
"home": "Domov",
"terminal": "Terminál",
@@ -1155,7 +1124,6 @@
"databaseConnectionFailed": "Nepodarilo sa pripojiť k databázovému serveru",
"embeddedServerPortInUse": "Port {{port}} je už používaný iným programom. Zvyčajne ide o kontajner Termix Docker alebo o zvyškový proces Termix z predchádzajúcej relácie. Zatvorte ho a potom reštartujte Termix.",
"embeddedServerPortInUseUnknownPort": "Jeden z portov, ktoré Termix potrebuje, je už používaný iným programom. Zatvorte aplikáciu, ktorá ho používa, a potom reštartujte Termix.",
"embeddedServerOldDatabase": "Vaše lokálne údaje pochádzajú z Termix 2.8 alebo staršej verzie a musia prejsť cez verziu 2.9. Nainštalujte Termix 2.9.1, otvorte ho raz, aby mohol presunúť vaše údaje, a potom aktualizujte na túto verziu znova.",
"embeddedServerCrashed": "Lokálny server neočakávane zastavil. Reštartujte Termix a ak sa problém opakuje, skontrolujte denník udalostí na ploche.",
"resetCodeSent": "Resetovací kód bol odoslaný do logov Dockeru",
"codeVerified": "Kód bol úspešne overený",
@@ -1948,23 +1916,19 @@
"tabs": {
"installed": "Nainštalované",
"browse": "Prehľadávať",
"updates": "Aktualizácie",
"registries": "Registratúry"
"updates": "Aktualizácie"
},
"status": {
"summary": "{{installed}} nainštalovaných, {{running}} bežiacich",
"running": "Beží",
"disabled": "Zakázané",
"failed": "Neočakávane zastavené",
"blocked": "Čaká na iný plugin",
"server": "Beží na vašom serveri"
"blocked": "Čaká na iný plugin"
},
"groups": {
"running": "Bežiaci",
"notRunning": "Nebieži",
"onServer": "Na vašom serveri"
"notRunning": "Nebieži"
},
"runsOnServerHint": "Tento plugin beží iba na vašom serveri, preto je v desktopovej aplikácii vypnutý. Na serveri však stále funguje.",
"sort": {
"popular": "Najpopulárnejšie",
"name": "Názov",
@@ -1982,7 +1946,7 @@
"version": "Verzia",
"status": "Stav",
"category": "Kategória",
"downloads": "Sťahovania"
"installs": "Inštalácie"
},
"risk": {
"critical": "Kritické",
@@ -2166,49 +2130,8 @@
"noneInstalled": "Zatiaľ nie sú nainštalované žiadne pluginy. Prezerajte a pridajte niektoré.",
"nothingHere": "Tu nič nie je.",
"nothingHereHint": "Skúste inú kategóriu alebo vyhľadávanie.",
"showInstalled": "Zobraziť nainštalované",
"allInstalled": "Všetko tu je už nainštalované.",
"allInstalledHint": "Pre ich zobrazenie zapnite možnosť Zobraziť nainštalované.",
"communitySoon": "Pluginy od komunity prídu v budúcej aktualizácii. Autori pluginov ich môžu už teraz odoslať do komunitného registra.",
"communitySubmit": "Ako odoslať",
"registries": {
"intro": "Registratúry sú zoznamy pluginov, ktoré môžete nainštalovať. Oficiálna je vždy zapnutá. Môžete zapnúť komunitnú registratúru alebo pridať vlastnú.",
"hostYourOwn": "Hostovať vlastnú registratúru",
"add": "Pridať registratúru",
"addTitle": "Pridať registratúru",
"addHint": "Vložte odkaz na index.json registratúry. Termix ho prečíta a zobrazí kľúč, ktorým podpisuje pluginy. Pridávajte iba registratúry od osôb, ktorým dôverujete.",
"urlLabel": "URL indexu",
"check": "Skontrolovať",
"addConfirm": "Dôverovať a pridať",
"added": "Pridané {{name}}",
"customWarning": "Pluginy z tejto registratúry nie sú overované tímom Termix. Iba vlastník registratúry rozhoduje o jej obsahu. Každé sťahovanie musí byť podpísané vyššie uvedeným kľúčom.",
"keyFingerprint": "Kľúč {{keyId}}",
"pluginCount_one": "{{count}} plugin",
"pluginCount_few": "{{count}} pluginy",
"pluginCount_many": "{{count}} pluginov",
"pluginCount_other": "{{count}} pluginov",
"officialName": "Oficiálna",
"communityName": "Komunitná",
"alwaysOn": "Vždy zapnutá",
"communityHint": "Pluginy vytvorené inými ľuďmi. Každá verzia je pred zaradením skontrolovaná človekom aj automatizovanými kontrolami.",
"communityConfirmTitle": "Zapnúť komunitné pluginy?",
"communityConfirmBody": "Komunitné pluginy vytvárajú iní ľudia, nie tím Termix. Každá verzia je pred zaradením skontrolovaná človekom aj automatizovanými kontrolami, ale chyby sa môžu vyskytnúť. Inštalujte iba pluginy, ktorým dôverujete, a skontrolujte, čo každý z nich vyžaduje.",
"communityConfirm": "Zapnúť",
"communityBadge": "Komunitné",
"communityBadgeHint": "Z komunitnej registratúry. Vytvorené inými ľuďmi a overené pred zaradením.",
"customBadge": "Vlastné",
"customBadgeHint": "Z {{name}}, registratúry pridanej správcom. Nie je overená tímom Termix.",
"remove": "Odstrániť",
"removeTitle": "Odstrániť {{name}}?",
"removeBody": "Jeho pluginy sa už nebudú zobrazovať v prehľade. Môžete ho pridať späť neskôr.",
"removed": "Odstránené {{name}}",
"inUse": "Najprv odinštalujte pluginy z {{name}}: {{list}}",
"changeFailed": "Nepodarilo sa zmeniť registr: {{error}}",
"loadFailed": "Nepodarilo sa načítať registry: {{error}}",
"unreachable": "Nepodarilo sa ho prečítať: {{error}}",
"filter": "Registr",
"allRegistries": "Všetky registry",
"browseHint": "Zapnite komunitné pluginy alebo pridajte vlastný registr v karte Registry."
},
"upToDate": "Všetko je aktuálne.",
"lastChecked": "Posledná kontrola {{time}}",
"updatesReady_one": "{{count}} aktualizácia pripravená.",
@@ -2235,10 +2158,15 @@
"signedOnly": "Je nastavené TERMIX_REQUIRE_SIGNED_PLUGINS, preto je inštalácia zo súboru zablokovaná."
},
"count": {
"active_one": "{{formatted}} aktívna inštalácia",
"active_few": "{{formatted}} aktívne inštalácie",
"active_many": "{{formatted}} aktívnych inštalácií",
"active_other": "{{formatted}} aktívne inštalácie",
"downloads_one": "{{formatted}} stiahnutie",
"downloads_few": "{{formatted}} stiahnutia",
"downloads_many": "{{formatted}} stiahnutí",
"downloads_other": "{{formatted}} stiahnutia",
"activeHint": "Počet inštancií, ktoré v poslednom týždni nahlásili, že je tento plugin zapnutý. Inštancie s vypnutou štatistikou používania sa nepočítajú.",
"downloadsHint": "Počet stiahnutí vydania. Toto nie je počet inštalácií."
},
"unverified": "Nepotvrdený",
+10 -82
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Povezano z {{server}}",
"pluginsDocsLink": "Preberite o vsakem posebej"
},
"desktopUpdates": {
"title": "Namizna aplikacija",
"mode": "Posodobitve",
"modeHint": "Kako ta aplikacija prejema nove različice.",
"manualModeHint": "Ta kopija se ne more samodejno posodobiti, zato vas Termix le obvesti, ko je na voljo nova različica.",
"modeAutomatic": "Samodejno",
"modePrompt": "Vprašaj najprej",
"modeNever": "Nikoli",
"automaticBody": "Prenesite nove različice v ozadju in jih namestite ob ponovnem zagonu.",
"promptBody": "Obvesti me, ko je na voljo nova različica, in mi omogoči, da izberem, kdaj jo želim prenesti.",
"neverBody": "Ne preverjaj za posodobitve. Preverite lahko ročno v Nastavitvah.",
"onboardingTitle": "Posodobitve aplikacije",
"onboardingBody": "Namizna aplikacija se lahko zdaj samodejno posodablja. Izberite, kako želite prejemati nove različice. To lahko kasneje spremenite v Nastavitvah, Posodobitve.",
"onboardingManual": "Ta kopija aplikacije je bila nameščena na način, ki ne omogoča samodejnega posodabljanja, zato vas bo Termix obvestil, ko je na voljo nova različica, s povezavo za prenos.",
"status": "Različica {{version}}",
"statusIdle": "Še ni bilo preverjeno",
"statusChecking": "Preverjanje za posodobitve",
"statusAvailable": "Na voljo je različica {{version}}",
"statusDownloading": "Prenašanje {{version}} ({{progress}} %)",
"statusReady": "Različica {{version}} je pripravljena. Ponovno zaženite za namestitev.",
"statusUpToDate": "Imate najnovejšo različico",
"statusError": "Preverjanje za posodobitve ni bilo mogoče. Poskusite znova kasneje.",
"checkNow": "Preveri zdaj",
"download": "Prenesi",
"restart": "Ponovno zaženi zdaj",
"later": "Kasneje",
"available": "Na voljo je Termix {{version}}",
"manualHint": "Prenesite ga s strani z izdajami in ga namestite namesto tega.",
"ready": "Termix {{version}} je pripravljen za namestitev",
"readyHint": "Namesti se naslednjič, ko se Termix ponovno zažene."
},
"nav": {
"home": "Domov",
"terminal": "Terminal",
@@ -1155,7 +1124,6 @@
"databaseConnectionFailed": "Povezava s strežnikom podatkovne zbirke ni uspela",
"embeddedServerPortInUse": "Vrata {{port}} že uporablja drug program. To je običajno Docker posode Termix ali preostali proces Termix iz prejšnje seje. Zaprite ga in ponovno zaženite Termix.",
"embeddedServerPortInUseUnknownPort": "Eno od vrat, ki jih Termix potrebuje, že uporablja drug program. Zaprite program, ki jih uporablja, in ponovno zaženite Termix.",
"embeddedServerOldDatabase": "Vaši lokalni podatki so iz Termix 2.8 ali starejše različice in morajo najprej preiti skozi različico 2.9. Namestite Termix 2.9.1, ga enkrat odprite, da lahko preseli vaše podatke, nato pa posodobite na to različico.",
"embeddedServerCrashed": "Lokalni strežnik se je nepričakovano ustavil. Ponovno zaženite Termix in, če se težava ponavlja, preverite dnevnik namizne aplikacije.",
"resetCodeSent": "Koda za ponastavitev je poslana v Docker dnevnike",
"codeVerified": "Koda je bila uspešno preverjena",
@@ -1948,23 +1916,19 @@
"tabs": {
"installed": "Nameščeni",
"browse": "Raziskaj",
"updates": "Posodobitve",
"registries": "Registrature"
"updates": "Posodobitve"
},
"status": {
"summary": "{{installed}} nameščenih, {{running}} delujočih",
"running": "Deluje",
"disabled": "Onemogočen",
"failed": "Nepričakovano ustavljen",
"blocked": "Čaka na drug vtičnik",
"server": "Zažene se na vašem strežniku"
"blocked": "Čaka na drug vtičnik"
},
"groups": {
"running": "Delujoči",
"notRunning": "Ne delujejo",
"onServer": "Na vašem strežniku"
"notRunning": "Ne delujejo"
},
"runsOnServerHint": "Ta vtičnik se zažene le na vašem strežniku, zato je v namizni aplikaciji izklopljen. Tam še vedno deluje.",
"sort": {
"popular": "Najbolj priljubljeni",
"name": "Ime",
@@ -1982,7 +1946,7 @@
"version": "Različica",
"status": "Stanje",
"category": "Kategorija",
"downloads": "Prenosi"
"installs": "Namestitve"
},
"risk": {
"critical": "Kritično",
@@ -2166,49 +2130,8 @@
"noneInstalled": "Še ni nameščenih vtičnikov. Brskajte in dodajte kakšnega.",
"nothingHere": "Tukaj ni ničesar.",
"nothingHereHint": "Poskusite drugo kategorijo ali iskanje.",
"showInstalled": "Prikaži nameščene",
"allInstalled": "Vse tukaj je že nameščeno.",
"allInstalledHint": "Vklopite Prikaži nameščene, da jih vidite.",
"communitySoon": "Skupnostni vtičniki bodo na voljo v kasnejši posodobitvi. Avtorji vtičnikov jih lahko že zdaj oddajo v skupnostni register.",
"communitySubmit": "Kako oddati",
"registries": {
"intro": "Registrature so sezname vtičnikov, ki jih lahko namestite. Uradna je vedno vklopljena. Vklopiti lahko tudi skupnostno registraturo ali dodati svojo.",
"hostYourOwn": "Gostite svojo registraturo",
"add": "Dodaj registraturo",
"addTitle": "Dodaj registraturo",
"addHint": "Prilepite povezavo do index.json registrature. Termix jo prebere in prikaže ključ, s katerim podpisuje vtičnike. Dodajte le registrature, ki jim zaupate.",
"urlLabel": "URL indeksa",
"check": "Preveri",
"addConfirm": "Zaupaj in dodaj",
"added": "Dodano {{name}}",
"customWarning": "Vtičniki iz te registrature niso pregledani s strani ekipe Termix. Lastnik registrature sam odloča, kaj je v njej. Vsak prenos mora biti podpisan s ključom zgoraj.",
"keyFingerprint": "Ključ {{keyId}}",
"pluginCount_one": "{{count}} vtičnik",
"pluginCount_two": "{{count}} vtičnika",
"pluginCount_few": "{{count}} vtičniki",
"pluginCount_other": "{{count}} vtičnikov",
"officialName": "Uradno",
"communityName": "Skupnost",
"alwaysOn": "Vedno vklopljeno",
"communityHint": "Vtičniki, ki jih ustvarijo drugi. Vsaka različica je pred objavo pregledana s strani osebe in samodejnih preverjanj.",
"communityConfirmTitle": "Vklopiti skupnostne vtičnike?",
"communityConfirmBody": "Skupnostne vtičnike ustvarijo drugi, ne ekipa Termix. Vsaka različica je pred objavo pregledana s strani osebe in samodejnih preverjanj, vendar se lahko napake še vedno pojavijo. Namestite le vtičnike, ki jim zaupate, in preverite, kaj vsak od njih zahteva.",
"communityConfirm": "Vklopi",
"communityBadge": "Skupnost",
"communityBadgeHint": "Iz skupnostne registrature. Ustvaril ga je nekdo drug in bil pregledan pred objavo.",
"customBadge": "Po meri",
"customBadgeHint": "Iz {{name}}, registrature, ki jo je dodal skrbnik. Ni pregledan s strani ekipe Termix.",
"remove": "Odstrani",
"removeTitle": "Odstraniti {{name}}?",
"removeBody": "Njegovi vtičniki se ne bodo več prikazovali v razdelku Brskanje. Kasneje ga lahko ponovno dodate.",
"removed": "Odstranjen {{name}}",
"inUse": "Najprej odstranite vtičnike iz {{name}}: {{list}}",
"changeFailed": "Registr ni bilo mogoče spremeniti: {{error}}",
"loadFailed": "Registr ni bilo mogoče naložiti: {{error}}",
"unreachable": "Registr ni bilo mogoče prebrati: {{error}}",
"filter": "Registr",
"allRegistries": "Vsi registri",
"browseHint": "Vklopite vtičnike skupnosti ali dodajte svoj registr na zavihku Registri."
},
"upToDate": "Vse je posodobljeno.",
"lastChecked": "Zadnjič preverjeno {{time}}",
"updatesReady_one": "{{count}} posodobitev pripravljena.",
@@ -2235,10 +2158,15 @@
"signedOnly": "Nastavljena je spremenljivka TERMIX_REQUIRE_SIGNED_PLUGINS, zato je nameščanje iz datoteke blokirano."
},
"count": {
"active_one": "{{formatted}} aktivna namestitev",
"active_two": "{{formatted}} aktivni namestitvi",
"active_few": "{{formatted}} aktivne namestitve",
"active_other": "{{formatted}} aktivnih namestitev",
"downloads_one": "{{formatted}} prenos",
"downloads_two": "{{formatted}} prenosa",
"downloads_few": "{{formatted}} prenosi",
"downloads_other": "{{formatted}} prenosov",
"activeHint": "Instanče, ki so v zadnjem tednu poročale, da je ta vtičnik vklopljen. Instanče z izklopljeno statistiko uporabe niso šteté.",
"downloadsHint": "Koliko krat je bila izdaja prenesena. To ni število namestitev."
},
"unverified": "Nepreverjeno",
+9 -81
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Повезано са {{server}}",
"pluginsDocsLink": "Прочитајте о сваком од њих"
},
"desktopUpdates": {
"title": "Десктоп апликација",
"mode": "Ажурирања",
"modeHint": "Како ова апликација добија нове верзије.",
"manualModeHint": "Ова копија не може сама да се ажурира, па Termix само обавештава када је нова верзија доступна.",
"modeAutomatic": "Аутоматски",
"modePrompt": "Питај прво",
"modeNever": "Никад",
"automaticBody": "Преузима нове верзије у позадини и инсталира их при поновном покретању.",
"promptBody": "Обавести ме када је нова верзија доступна и дозволи ми да одлучим када да је преузмем.",
"neverBody": "Не проверавај за ажурирања. И даље можете ручно проверити у Подешавањима.",
"onboardingTitle": "Ажурирања апликације",
"onboardingBody": "Десктоп апликација се сада може сама ажурирати. Изаберите како желите да стигну нове верзије. Ово можете касније променити у Подешавањима, Ажурирања.",
"onboardingManual": "Ова копија апликације је инсталирана на начин који не дозвољава аутоматско ажурирање, па ће вас Termix обавестити када је нова верзија доступна, заједно са везом за преузимање.",
"status": "Верзија {{version}}",
"statusIdle": "Још није проверено",
"statusChecking": "Провера за ажурирања",
"statusAvailable": "Верзија {{version}} је доступна",
"statusDownloading": "Преузимање {{version}} ({{progress}}%)",
"statusReady": "Верзија {{version}} је спремна. Поново покрените да бисте је инсталирали.",
"statusUpToDate": "Имате најновију верзију",
"statusError": "Није могуће проверити за ажурирања. Покушајте поново касније.",
"checkNow": "Провери сада",
"download": "Преузми",
"restart": "Поново покрените сада",
"later": "Касније",
"available": "Termix {{version}} је доступан",
"manualHint": "Преузмите га са странице издања и инсталирајте преко ове верзије.",
"ready": "Termix {{version}} је спреман за инсталацију",
"readyHint": "Инсталира се следећи пут када се Termix поново покрене."
},
"nav": {
"home": "Почетна",
"terminal": "Терминал",
@@ -1141,7 +1110,6 @@
"databaseConnectionFailed": "Неуспешно повезивање са сервером базе података",
"embeddedServerPortInUse": "Порт {{port}} је већ у употреби од стране другог програма. Обично је у питању Termix Docker контејнер или преостали Termix процес из претходне сесије. Затворите га, а затим поново покрените Termix.",
"embeddedServerPortInUseUnknownPort": "Један од портова који Termix-у треба већ је у употреби од стране другог програма. Затворите оно што га користи, а затим поново покрените Termix.",
"embeddedServerOldDatabase": "Ваши локални подаци су из Termix 2.8 или старије верзије и морају прво да прођу кроз верзију 2.9. Инсталирајте Termix 2.9.1, отворите га једном како би пренео ваше податке, а затим ажурирајте на ову верзију.",
"embeddedServerCrashed": "Локални сервер је неочекивано заустављен. Поново покрените Termix и проверите дневник десктопа ако се ово настави.",
"resetCodeSent": "Код за ресетовање је послат у Docker дневнике",
"codeVerified": "Код је успешно верификован",
@@ -1924,23 +1892,19 @@
"tabs": {
"installed": "Инсталирани",
"browse": "Преглед",
"updates": "Ажурирања",
"registries": "Регистри"
"updates": "Ажурирања"
},
"status": {
"summary": "{{installed}} инсталирано, {{running}} покренуто",
"running": "Покренуто",
"disabled": "Онемогућено",
"failed": "Неочекивано заустављено",
"blocked": "Чека на други додатак",
"server": "Ради на вашем серверу"
"blocked": "Чека на други додатак"
},
"groups": {
"running": "Покренуто",
"notRunning": "Није покренуто",
"onServer": "На вашем серверу"
"notRunning": "Није покренуто"
},
"runsOnServerHint": "Овај додатак ради само на вашем серверу, па је искључен у десктоп апликацији. И даље ради тамо.",
"sort": {
"popular": "Најпопуларнији",
"name": "Име",
@@ -1958,7 +1922,7 @@
"version": "Верзија",
"status": "Статус",
"category": "Категорија",
"downloads": "Преузимања"
"installs": "Инсталације"
},
"risk": {
"critical": "Критично",
@@ -2126,48 +2090,8 @@
"noneInstalled": "Још нема инсталираних плугина. Прегледајте да бисте додали неке.",
"nothingHere": "Ништа овде.",
"nothingHereHint": "Покушајте са другом категоријом или претрагом.",
"showInstalled": "Прикажи инсталиране",
"allInstalled": "Све овде је већ инсталирано.",
"allInstalledHint": "Укључите Прикажи инсталиране да бисте их видели.",
"communitySoon": "Плугини заједнице стижу у каснијем ажурирању. Аутори плугина могу већ сада да их поднесу у регистар заједнице.",
"communitySubmit": "Како поднети",
"registries": {
"intro": "Регистри су листе додатака које можете инсталирати. Званични је увек укључен. Можете укључити заједнички регистар или додати свој.",
"hostYourOwn": "Домаћин свог регистра",
"add": "Додај регистар",
"addTitle": "Додај регистар",
"addHint": "Залепите везу ка index.json датотеци регистра. Termix ће је прочитати и показати кључ којим потписује додатке. Додајте само регистре од људи којима верујете.",
"urlLabel": "URL индекса",
"check": "Провери",
"addConfirm": "Повери и додај",
"added": "Додато {{name}}",
"customWarning": "Додаци из овог регистра нису прегледани од стране Termix тима. Само власник регистра одлучује шта се налази у њему. Свако преузимање мора бити потписано кључем изнад.",
"keyFingerprint": "Кључ {{keyId}}",
"pluginCount_one": "{{count}} додатак",
"pluginCount_few": "{{count}} додатка",
"pluginCount_other": "{{count}} додатака",
"officialName": "Званични",
"communityName": "Заједница",
"alwaysOn": "Увек укључен",
"communityHint": "Додаци које су направили други људи. Свака верзија је проверена од стране особе и аутоматским проверама пре него што буде наведена.",
"communityConfirmTitle": "Укључити додатке заједнице?",
"communityConfirmBody": "Додаци заједнице су направили други људи, не Termix тим. Свака верзија је проверена од стране особе и аутоматским проверама пре него што буде наведена, али грешке могу и даље проћи. Инсталирајте само додатке којима верујете и проверите шта сваки од њих тражи.",
"communityConfirm": "Укључи",
"communityBadge": "Заједница",
"communityBadgeHint": "Из регистра заједнице. Направили су га други људи и прегледан је пре него што је наведен.",
"customBadge": "Прилагођен",
"customBadgeHint": "Из {{name}}, регистра које је додао администратор. Није прегледан од стране Termix тима.",
"remove": "Уклони",
"removeTitle": "Уклонити {{name}}?",
"removeBody": "Његови додаци више неће бити приказани у прегледу. Можете га додати поново касније.",
"removed": "Уклоњено {{name}}",
"inUse": "Прво деинсталирајте додате из {{name}}: {{list}}",
"changeFailed": "Није могуће променити регистар: {{error}}",
"loadFailed": "Није могуће учитати регистре: {{error}}",
"unreachable": "Није могуће прочитати: {{error}}",
"filter": "Регистар",
"allRegistries": "Сви регистри",
"browseHint": "Укључите заједничке додате или додајте сопствени регистар у картици Регистри."
},
"upToDate": "Све је ажурирано.",
"lastChecked": "Последњи пут проверено {{time}}",
"updatesReady_one": "{{count}} ажурирање спремно.",
@@ -2192,9 +2116,13 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS је подешен, па је инсталација из фајла и даље блокирана."
},
"count": {
"active_one": "{{formatted}} активна инсталација",
"active_few": "{{formatted}} активне инсталације",
"active_other": "{{formatted}} активних инсталација",
"downloads_one": "{{formatted}} преузимање",
"downloads_few": "{{formatted}} преузимања",
"downloads_other": "{{formatted}} преузимања",
"activeHint": "Инстанце које су пријавиле да је овај плугин укључен у последњој недељи. Инстанце са искљученом статистицом коришћења се не рачунају.",
"downloadsHint": "Кoliko пута је издање преузето. Ово није број инсталација."
},
"unverified": "Неверификовано",
+8 -80
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Länkad till {{server}}",
"pluginsDocsLink": "Läs om varje plugin"
},
"desktopUpdates": {
"title": "Skrivbordsapp",
"mode": "Uppdateringar",
"modeHint": "Hur den här appen får nya versioner.",
"manualModeHint": "Den här kopian kan inte uppdatera sig själv, så Termix meddelar dig bara när en ny version finns tillgänglig.",
"modeAutomatic": "Automatisk",
"modePrompt": "Fråga först",
"modeNever": "Aldrig",
"automaticBody": "Ladda ner nya versioner i bakgrunden och installera dem när du startar om.",
"promptBody": "Meddela mig när en ny version finns tillgänglig och låt mig välja när jag vill ladda ner den.",
"neverBody": "Sök inte efter uppdateringar. Du kan fortfarande söka manuellt i Inställningar.",
"onboardingTitle": "Appuppdateringar",
"onboardingBody": "Skrivbordsappen kan nu uppdatera sig själv. Välj hur du vill att nya versioner ska levereras. Du kan ändra detta senare i Inställningar, Uppdateringar.",
"onboardingManual": "Den här kopian av appen installerades på ett sätt som inte kan uppdatera sig själv, så Termix kommer att meddela dig när en ny version finns tillgänglig med en länk för att ladda ner den.",
"status": "Version {{version}}",
"statusIdle": "Har inte kontrollerats ännu",
"statusChecking": "Söker efter uppdateringar",
"statusAvailable": "Version {{version}} finns tillgänglig",
"statusDownloading": "Laddar ner {{version}} ({{progress}} %)",
"statusReady": "Version {{version}} är klar. Starta om för att installera den.",
"statusUpToDate": "Du har den senaste versionen",
"statusError": "Kunde inte söka efter uppdateringar. Försök igen senare.",
"checkNow": "Kontrollera nu",
"download": "Ladda ner",
"restart": "Starta om nu",
"later": "Senare",
"available": "Termix {{version}} finns tillgänglig",
"manualHint": "Ladda ner den från versionsidan och installera den över den nuvarande.",
"ready": "Termix {{version}} är redo att installeras",
"readyHint": "Den installeras nästa gång Termix startas om."
},
"nav": {
"home": "Hem",
"terminal": "Terminal",
@@ -1127,7 +1096,6 @@
"databaseConnectionFailed": "Kunde inte ansluta till databasservern",
"embeddedServerPortInUse": "Port {{port}} används redan av ett annat program. Detta är oftast en Termix Docker-container eller en kvarvarande Termix-process från en tidigare session. Stäng den och starta om Termix.",
"embeddedServerPortInUseUnknownPort": "En av portarna som Termix behöver används redan av ett annat program. Stäng det som använder porten och starta om Termix.",
"embeddedServerOldDatabase": "Din lokala data är från Termix 2.8 eller äldre och måste först migreras via version 2.9. Installera Termix 2.9.1, öppna den en gång så att den kan flytta dina data, och uppgradera sedan till denna version igen.",
"embeddedServerCrashed": "Den lokala servern stoppade oväntat. Starta om Termix och kontrollera skrivbordsloggen om detta fortsätter att hända.",
"resetCodeSent": "Återställningskod skickad till Docker-loggarna",
"codeVerified": "Koden verifierades framgångsrikt",
@@ -1900,23 +1868,19 @@
"tabs": {
"installed": "Installerade",
"browse": "Bläddra",
"updates": "Uppdateringar",
"registries": "Register"
"updates": "Uppdateringar"
},
"status": {
"summary": "{{installed}} installerade, {{running}} körs",
"running": "Körs",
"disabled": "Inaktiverad",
"failed": "Stoppades oväntat",
"blocked": "Väntar på ett annat plugin",
"server": "Kör på din server"
"blocked": "Väntar på ett annat plugin"
},
"groups": {
"running": "Körs",
"notRunning": "Körs inte",
"onServer": "På din server"
"notRunning": "Körs inte"
},
"runsOnServerHint": "Detta tillägg körs endast på din server, så det är avstängt i skrivbordsappen. Det fungerar fortfarande där.",
"sort": {
"popular": "Mest populära",
"name": "Namn",
@@ -1934,7 +1898,7 @@
"version": "Version",
"status": "Status",
"category": "Kategori",
"downloads": "Nedladdningar"
"installs": "Installationer"
},
"risk": {
"critical": "Kritisk",
@@ -2086,47 +2050,8 @@
"noneInstalled": "Inga plugins installerade ännu. Bläddra för att lägga till några.",
"nothingHere": "Inget här.",
"nothingHereHint": "Prova en annan kategori eller sök.",
"showInstalled": "Visa installerade",
"allInstalled": "Allt här är redan installerat.",
"allInstalledHint": "Aktivera Visa installerade för att se dem.",
"communitySoon": "Community-plugins kommer i en senare uppdatering. Plugin-utvecklare kan redan skicka in sina plugins till community-registret.",
"communitySubmit": "Hur man skickar in",
"registries": {
"intro": "Register är listor över tillägg du kan installera. Det officiella är alltid påslaget. Du kan aktivera community-registret eller lägga till ditt eget.",
"hostYourOwn": "Värd ditt eget register",
"add": "Lägg till register",
"addTitle": "Lägg till ett register",
"addHint": "Klistra in länken till registrets index.json. Termix läser den och visar nyckeln den signerar tilläggen med. Lägg bara till register från personer du litar på.",
"urlLabel": "Index-URL",
"check": "Kontrollera",
"addConfirm": "Lita på och lägg till",
"added": "Lade till {{name}}",
"customWarning": "Tillägg från detta register granskas inte av Termix-teamet. Endast ägaren av registret bestämmer vad som finns i det. Varje nedladdning måste signeras med nyckeln ovan.",
"keyFingerprint": "Nyckel {{keyId}}",
"pluginCount_one": "{{count}} tillägg",
"pluginCount_other": "{{count}} tillägg",
"officialName": "Officiell",
"communityName": "Community",
"alwaysOn": "Alltid på",
"communityHint": "Tillägg skapade av andra personer. Varje version kontrolleras av en person och av automatiserade kontroller innan den listas.",
"communityConfirmTitle": "Vill du aktivera community-tillägg?",
"communityConfirmBody": "Community-tillägg skapas av andra personer, inte av Termix-teamet. Varje version kontrolleras av en person och av automatiserade kontroller innan den listas, men misstag kan fortfarande smyga igenom. Installera bara tillägg du litar på och kontrollera vad varje tillägg begär.",
"communityConfirm": "Aktivera",
"communityBadge": "Community",
"communityBadgeHint": "Från community-registret. Skapad av andra personer och granskad innan den lades till.",
"customBadge": "Anpassad",
"customBadgeHint": "Från {{name}}, ett register som en administratör har lagt till. Inte granskad av Termix-teamet.",
"remove": "Ta bort",
"removeTitle": "Ta bort {{name}}?",
"removeBody": "Dess plugins visas inte längre i Bläddra. Du kan lägga till den igen senare.",
"removed": "Tog bort {{name}}",
"inUse": "Avinstallera plugins från {{name}} först: {{list}}",
"changeFailed": "Kunde inte ändra registret: {{error}}",
"loadFailed": "Kunde inte ladda register: {{error}}",
"unreachable": "Kunde inte läsa det: {{error}}",
"filter": "Register",
"allRegistries": "Alla register",
"browseHint": "Aktivera community-plugins eller lägg till ditt eget register på fliken Register."
},
"upToDate": "Allt är uppdaterat.",
"lastChecked": "Senast kontrollerad {{time}}",
"updatesReady_one": "{{count}} uppdatering redo.",
@@ -2149,8 +2074,11 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS är inställt, så installation från fil förblir blockerad."
},
"count": {
"active_one": "{{formatted}} aktiv installation",
"active_other": "{{formatted}} aktiva installationer",
"downloads_one": "{{formatted}} nedladdning",
"downloads_other": "{{formatted}} nedladdningar",
"activeHint": "Instanser som rapporterade att detta plugin var aktiverat under den senaste veckan. Instanser med avstängd användningsstatistik räknas inte.",
"downloadsHint": "Hur många gånger en version har laddats ner. Detta är inte antalet installationer."
},
"unverified": "Ej verifierad",
+7 -79
View File
@@ -233,37 +233,6 @@
"desktopLinked": "เชื่อมต่อกับ {{server}}",
"pluginsDocsLink": "อ่านเกี่ยวกับแต่ละตัว"
},
"desktopUpdates": {
"title": "แอปเดสก์ท็อป",
"mode": "การอัปเดต",
"modeHint": "วิธีที่แอปนี้รับเวอร์ชันใหม่",
"manualModeHint": "สำเนาของแอปนี้ไม่สามารถอัปเดตเองได้ ดังนั้น Termix จะแจ้งเตือนคุณเมื่อมีเวอร์ชันใหม่เท่านั้น",
"modeAutomatic": "อัตโนมัติ",
"modePrompt": "ถามก่อน",
"modeNever": "ไม่เลย",
"automaticBody": "ดาวน์โหลดเวอร์ชันใหม่ในพื้นหลังและติดตั้งเมื่อคุณรีสตาร์ทแอป",
"promptBody": "แจ้งเตือนเมื่อมีเวอร์ชันใหม่และให้ฉันเลือกเวลาที่จะดาวน์โหลด",
"neverBody": "ไม่ตรวจสอบการอัปเดต คุณสามารถตรวจสอบด้วยตนเองในเมนูการตั้งค่าได้",
"onboardingTitle": "การอัปเดตแอป",
"onboardingBody": "แอปเดสก์ท็อปสามารถอัปเดตตัวเองได้แล้ว เลือกวิธีที่คุณต้องการรับเวอร์ชันใหม่ คุณสามารถเปลี่ยนการตั้งค่านี้ได้ในภายหลังที่เมนู การตั้งค่า > การอัปเดต",
"onboardingManual": "แอปนี้ถูกติดตั้งในรูปแบบที่ไม่สามารถอัปเดตตัวเองได้ ดังนั้น Termix จะแจ้งเตือนเมื่อมีเวอร์ชันใหม่พร้อมลิงก์สำหรับดาวน์โหลด",
"status": "เวอร์ชัน {{version}}",
"statusIdle": "ยังไม่ได้ตรวจสอบ",
"statusChecking": "กำลังตรวจสอบการอัปเดต",
"statusAvailable": "มีเวอร์ชัน {{version}} ให้ใช้งาน",
"statusDownloading": "กำลังดาวน์โหลด {{version}} ({{progress}}%)",
"statusReady": "เวอร์ชัน {{version}} พร้อมใช้งานแล้ว รีสตาร์ทเพื่อติดตั้ง",
"statusUpToDate": "คุณใช้เวอร์ชันล่าสุดแล้ว",
"statusError": "ไม่สามารถตรวจสอบการอัปเดตได้ โปรดลองอีกครั้งในภายหลัง",
"checkNow": "ตรวจสอบเลย",
"download": "ดาวน์โหลด",
"restart": "รีสตาร์ทเลย",
"later": "ภายหลัง",
"available": "Termix เวอร์ชัน {{version}} พร้อมใช้งาน",
"manualHint": "ดาวน์โหลดจากหน้าเผยแพร่และติดตั้งทับเวอร์ชันปัจจุบัน",
"ready": "Termix เวอร์ชัน {{version}} พร้อมติดตั้ง",
"readyHint": "จะติดตั้งเมื่อ Termix รีสตาร์ทครั้งถัดไป"
},
"nav": {
"home": "หน้าแรก",
"terminal": "เทอร์มินัล",
@@ -1113,7 +1082,6 @@
"databaseConnectionFailed": "ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ฐานข้อมูลได้",
"embeddedServerPortInUse": "พอร์ต {{port}} ถูกใช้งานโดยโปรแกรมอื่นแล้ว โดยปกติแล้วมักจะเป็นคอนเทนเนอร์ Docker ของ Termix หรือกระบวนการ Termix ที่ค้างอยู่จากเซสชันก่อนหน้า กรุณาปิดโปรแกรมดังกล่าว แล้วรีสตาร์ท Termix",
"embeddedServerPortInUseUnknownPort": "พอร์ตที่ Termix ต้องการถูกใช้งานโดยโปรแกรมอื่นแล้ว กรุณาปิดโปรแกรมที่ใช้งานพอร์ตดังกล่าว แล้วรีสตาร์ท Termix",
"embeddedServerOldDatabase": "ข้อมูลท้องถิ่นของคุณมาจาก Termix 2.8 หรือเก่ากว่า และต้องผ่านเวอร์ชัน 2.9 ก่อน โปรดติดตั้ง Termix 2.9.1 เปิดใช้งานครั้งหนึ่งเพื่อให้สามารถย้ายข้อมูลของคุณ แล้วอัปเดตเป็นเวอร์ชันนี้อีกครั้ง",
"embeddedServerCrashed": "เซิร์ฟเวอร์ท้องถิ่นหยุดทำงานอย่างกะทันหัน กรุณารีสตาร์ท Termix และตรวจสอบบันทึกการทำงานบนเดสก์ท็อปหากปัญหานี้เกิดขึ้นซ้ำ",
"resetCodeSent": "ส่งรหัสรีเซ็ตไปยังบันทึกของ Docker แล้ว",
"codeVerified": "ตรวจสอบรหัสสำเร็จ",
@@ -1876,23 +1844,19 @@
"tabs": {
"installed": "ติดตั้งแล้ว",
"browse": "เรียกดู",
"updates": "อัปเดต",
"registries": "ทะเบียนปลั๊กอิน"
"updates": "อัปเดต"
},
"status": {
"summary": "ติดตั้งแล้ว {{installed}} ตัว, กำลังทำงาน {{running}} ตัว",
"running": "กำลังทำงาน",
"disabled": "ปิดใช้งาน",
"failed": "หยุดทำงานโดยไม่คาดคิด",
"blocked": "กำลังรอปลั๊กอินอื่น",
"server": "ทำงานบนเซิร์ฟเวอร์ของคุณ"
"blocked": "กำลังรอปลั๊กอินอื่น"
},
"groups": {
"running": "กำลังทำงาน",
"notRunning": "ไม่ทำงาน",
"onServer": "บนเซิร์ฟเวอร์ของคุณ"
"notRunning": "ไม่ทำงาน"
},
"runsOnServerHint": "ปลั๊กอินนี้ทำงานเฉพาะบนเซิร์ฟเวอร์ของคุณเท่านั้น จึงจะปิดใช้งานในแอปเดสก์ท็อป แต่ยังคงทำงานบนเซิร์ฟเวอร์ได้ปกติ",
"sort": {
"popular": "ยอดนิยมที่สุด",
"name": "ชื่อ",
@@ -1910,7 +1874,7 @@
"version": "เวอร์ชัน",
"status": "สถานะ",
"category": "หมวดหมู่",
"downloads": "ดาวน์โหลด"
"installs": "จำนวนการติดตั้ง"
},
"risk": {
"critical": "วิกฤต",
@@ -2046,46 +2010,8 @@
"noneInstalled": "ยังไม่มีปลั๊กอินที่ติดตั้งอยู่ เรียกดูเพื่อเพิ่ม",
"nothingHere": "ไม่มีอะไรที่นี่",
"nothingHereHint": "ลองหมวดหมู่อื่นหรือค้นหาใหม่",
"showInstalled": "แสดงที่ติดตั้งแล้ว",
"allInstalled": "ทุกอย่างในที่นี้ติดตั้งเรียบร้อยแล้ว",
"allInstalledHint": "เปิดใช้งาน 'แสดงที่ติดตั้งแล้ว' เพื่อดูรายการ",
"communitySoon": "ปลั๊กอินจากชุมชนจะพร้อมใช้งานในการอัปเดตครั้งถัดไป ผู้พัฒนาปลั๊กอินสามารถส่งปลั๊กอินของตนไปยังทะเบียนชุมชนได้แล้ว",
"communitySubmit": "วิธีการส่ง",
"registries": {
"intro": "ทะเบียนปลั๊กอินคือรายการปลั๊กอินที่สามารถติดตั้งได้ ทะเบียนทางการจะเปิดใช้งานเสมอ คุณสามารถเปิดใช้งานทะเบียนชุมชนหรือเพิ่มทะเบียนของคุณเองได้",
"hostYourOwn": "โฮสต์ทะเบียนของคุณเอง",
"add": "เพิ่มทะเบียน",
"addTitle": "เพิ่มทะเบียน",
"addHint": "วางลิงก์ไปยังไฟล์ index.json ของทะเบียน Termix จะอ่านไฟล์นี้และแสดงคีย์ที่ใช้ลงนามปลั๊กอิน เพิ่มเฉพาะทะเบียนจากแหล่งที่คุณไว้วางใจเท่านั้น",
"urlLabel": "URL ดัชนี",
"check": "ตรวจสอบ",
"addConfirm": "ไว้วางใจและเพิ่ม",
"added": "เพิ่ม {{name}} เรียบร้อยแล้ว",
"customWarning": "ปลั๊กอินจากทะเบียนนี้ไม่ได้ผ่านการตรวจสอบโดยทีม Termix เจ้าของทะเบียนเป็นผู้ตัดสินใจเนื้อหาทั้งหมด การดาวน์โหลดทุกครั้งต้องมีการลงนามด้วยคีย์ด้านบน",
"keyFingerprint": "คีย์ {{keyId}}",
"pluginCount_other": "ปลั๊กอิน {{count}} รายการ",
"officialName": "ทางการ",
"communityName": "ชุมชน",
"alwaysOn": "เปิดใช้งานเสมอ",
"communityHint": "ปลั๊กอินที่สร้างโดยบุคคลอื่น แต่ละเวอร์ชันจะผ่านการตรวจสอบโดยมนุษย์และระบบอัตโนมัติก่อนจะแสดงในรายการ",
"communityConfirmTitle": "เปิดใช้งานปลั๊กอินชุมชน?",
"communityConfirmBody": "ปลั๊กอินชุมชนสร้างโดยบุคคลอื่น ไม่ใช่ทีม Termix แต่ละเวอร์ชันจะผ่านการตรวจสอบโดยมนุษย์และระบบอัตโนมัติก่อนจะแสดงในรายการ แต่อาจมีข้อผิดพลาดหลุดรอดมาได้ ควรติดตั้งเฉพาะปลั๊กอินที่คุณไว้วางใจและตรวจสอบสิทธิ์ที่แต่ละปลั๊กอินขอ",
"communityConfirm": "เปิดใช้งาน",
"communityBadge": "ชุมชน",
"communityBadgeHint": "จากทะเบียนชุมชน สร้างโดยบุคคลอื่นและผ่านการตรวจสอบก่อนแสดงในรายการ",
"customBadge": "กำหนดเอง",
"customBadgeHint": "จาก {{name}} ซึ่งเป็นทะเบียนที่ผู้ดูแลระบบเพิ่มเข้ามา ไม่ได้ผ่านการตรวจสอบโดยทีม Termix",
"remove": "ลบ",
"removeTitle": "ลบ {{name}} หรือไม่",
"removeBody": "ปลั๊กอินจากแหล่งนี้จะไม่แสดงในหน้าสำรวจอีกต่อไป คุณสามารถเพิ่มกลับได้ในภายหลัง",
"removed": "ลบ {{name}} เรียบร้อยแล้ว",
"inUse": "ถอนการติดตั้งปลั๊กอินจาก {{name}} ก่อน: {{list}}",
"changeFailed": "ไม่สามารถเปลี่ยนรีจิสทรีได้: {{error}}",
"loadFailed": "ไม่สามารถโหลดรีจิสทรีได้: {{error}}",
"unreachable": "ไม่สามารถอ่านข้อมูลได้: {{error}}",
"filter": "รีจิสทรี",
"allRegistries": "รีจิสทรีทั้งหมด",
"browseHint": "เปิดใช้งานปลั๊กอินจากชุมชน หรือเพิ่มรีจิสทรีของคุณเองในแท็บ รีจิสทรี"
},
"upToDate": "ทุกอย่างอัปเดตเป็นเวอร์ชันล่าสุดแล้ว",
"lastChecked": "ตรวจสอบล่าสุดเมื่อ {{time}}",
"updatesReady_other": "มี {{count}} การอัปเดตพร้อมใช้งาน",
@@ -2106,7 +2032,9 @@
"signedOnly": "ตั้งค่า TERMIX_REQUIRE_SIGNED_PLUGINS ไว้แล้ว จึงยังคงบล็อกการติดตั้งจากไฟล์"
},
"count": {
"active_other": "{{formatted}} การติดตั้งที่ใช้งานอยู่",
"downloads_other": "{{formatted}} ดาวน์โหลด",
"activeHint": "จำนวนอินสแตนซ์ที่รายงานเปิดใช้งานปลั๊กอินนี้ในช่วงสัปดาห์ที่ผ่านมา อินสแตนซ์ที่เปิดใช้งานสถิติการใช้งานไม่รวมอยู่ในจำนวนนี้",
"downloadsHint": "จำนวนครั้งที่มีการดาวน์โหลดเวอร์ชันนี้ ไม่ใช่จำนวนการติดตั้ง"
},
"unverified": "ยังไม่ได้รับการยืนยัน",
+8 -80
View File
@@ -233,37 +233,6 @@
"desktopLinked": "{{server}} ile bağlantılı",
"pluginsDocsLink": "Her biri hakkında bilgi edinin"
},
"desktopUpdates": {
"title": "Masaüstü uygulaması",
"mode": "Güncellemeler",
"modeHint": "Bu uygulamanın yeni sürümleri nasıl alır.",
"manualModeHint": "Bu kopya kendini güncelleyemez, bu yüzden Termix yalnızca yeni bir sürüm çıktığında size bildirir.",
"modeAutomatic": "Otomatik",
"modePrompt": "Önce sor",
"modeNever": "Asla",
"automaticBody": "Yeni sürümleri arka planda indirin ve yeniden başlattığınızda yükleyin.",
"promptBody": "Yeni bir sürüm çıktığında bana bildir ve ne zaman indireceğime karar vermemi sağla.",
"neverBody": "Güncelleme kontrolü yapma. Ayarlar'dan manuel olarak kontrol edebilirsiniz.",
"onboardingTitle": "Uygulama güncellemeleri",
"onboardingBody": "Masaüstü uygulaması artık kendini güncelleyebilir. Yeni sürümlerin nasıl geleceğini seçin. Bunu daha sonra Ayarlar > Güncellemeler bölümünden değiştirebilirsiniz.",
"onboardingManual": "Bu uygulama kopyası kendini güncelleyemeyecek şekilde kurulmuş, bu yüzden Termix yeni bir sürüm çıktığında size indirme bağlantısıyla birlikte bildirimde bulunacaktır.",
"status": "Sürüm {{version}}",
"statusIdle": "Henüz kontrol edilmedi",
"statusChecking": "Güncellemeler kontrol ediliyor",
"statusAvailable": "{{version}} sürümü mevcut",
"statusDownloading": "{{version}} indiriliyor ({{progress}}%)",
"statusReady": "{{version}} sürümü hazır. Yüklemek için yeniden başlatın.",
"statusUpToDate": "En yeni sürüme sahipsiniz",
"statusError": "Güncellemeler kontrol edilemedi. Daha sonra tekrar deneyin.",
"checkNow": "Şimdi kontrol et",
"download": "İndir",
"restart": "Şimdi yeniden başlat",
"later": "Daha sonra",
"available": "Termix {{version}} mevcut",
"manualHint": "Sürüm sayfasından indirin ve bunun üzerine yükleyin.",
"ready": "Termix {{version}} yüklenmeye hazır",
"readyHint": "Termix yeniden başladığında yüklenir."
},
"nav": {
"home": "Ana Sayfa",
"terminal": "Terminal",
@@ -1127,7 +1096,6 @@
"databaseConnectionFailed": "Veritabanı sunucusuna bağlanılamadı",
"embeddedServerPortInUse": "{{port}} numaralı bağlantı noktası başka bir program tarafından kullanılıyor. Bu genellikle bir Termix Docker kapsayıcısı veya önceki bir oturumdan kalan bir Termix işlemidir. Kapatın ve ardından Termix'i yeniden başlatın.",
"embeddedServerPortInUseUnknownPort": "Termix'in ihtiyaç duyduğu bağlantı noktalarından biri başka bir program tarafından kullanılıyor. Kullanan programı kapatın ve ardından Termix'i yeniden başlatın.",
"embeddedServerOldDatabase": "Yerel verileriniz Termix 2.8 veya daha eski bir sürümden kalmadır ve önce 2.9 sürümünden geçmelidir. Termix 2.9.1'i yükleyin, verilerinizi taşıyabilmesi için bir kez açın, ardından tekrar bu sürüme güncelleyin.",
"embeddedServerCrashed": "Yerel sunucu beklenmedik şekilde durdu. Termix'i yeniden başlatın ve bu durum devam ederse masaüstü günlüklerini kontrol edin.",
"resetCodeSent": "Sıfırlama kodu Docker günlüklerine gönderildi",
"codeVerified": "Kod başarıyla doğrulandı",
@@ -1900,23 +1868,19 @@
"tabs": {
"installed": "Yüklü",
"browse": "Göz at",
"updates": "Güncellemeler",
"registries": "Kayıtlar"
"updates": "Güncellemeler"
},
"status": {
"summary": "{{installed}} yüklü, {{running}} çalışıyor",
"running": "Çalışıyor",
"disabled": "Devre dışı",
"failed": "Beklenmedik şekilde durdu",
"blocked": "Başka bir eklentiyi bekliyor",
"server": "Sunucunuzda çalışır"
"blocked": "Başka bir eklentiyi bekliyor"
},
"groups": {
"running": "Çalışıyor",
"notRunning": "Çalışmıyor",
"onServer": "Sunucunuzda"
"notRunning": "Çalışmıyor"
},
"runsOnServerHint": "Bu eklenti yalnızca sunucunuzda çalışır, bu yüzden masaüstü uygulamasında kapalı kalır. Orada yine de çalışır.",
"sort": {
"popular": "En popüler",
"name": "Ad",
@@ -1934,7 +1898,7 @@
"version": "Sürüm",
"status": "Durum",
"category": "Kategori",
"downloads": "İndirmeler"
"installs": "Yüklemeler"
},
"risk": {
"critical": "Kritik",
@@ -2086,47 +2050,8 @@
"noneInstalled": "Henüz eklenti yüklenmedi. Eklemek için göz atın.",
"nothingHere": "Burada hiçbir şey yok.",
"nothingHereHint": "Başka bir kategori veya arama deneyin.",
"showInstalled": "Yüklenmiş olanları göster",
"allInstalled": "Buradaki her şey zaten yüklü.",
"allInstalledHint": "Görmek için Yüklenmiş olanları göster'i açın.",
"communitySoon": "Topluluk eklentileri daha sonraki bir güncellemede gelecek. Eklenti yazarları eklentilerini topluluk kayıt defterine zaten gönderebilir.",
"communitySubmit": "Nasıl gönderilir",
"registries": {
"intro": "Kayıtlar, yükleyebileceğiniz eklenti listeleridir. Resmi kayıt her zaman açıktır. Topluluk kaydını açabilir veya kendi kaydınızı ekleyebilirsiniz.",
"hostYourOwn": "Kendi kaydınızı barındırın",
"add": "Kayıt ekle",
"addTitle": "Kayıt ekle",
"addHint": "Kaydın index.json dosyasına bağlantıyı yapıştırın. Termix bunu okur ve eklentileri imzaladığı anahtarı gösterir. Yalnızca güvendiğiniz kişilerden kayıtlar ekleyin.",
"urlLabel": "Dizin URL'si",
"check": "Kontrol et",
"addConfirm": "Güven ve ekle",
"added": "{{name}} eklendi",
"customWarning": "Bu kayıttaki eklentiler Termix ekibi tarafından gözden geçirilmez. Kaydın sahibi yalnızca içeriği belirler. Her indirme yukarıdaki anahtarla imzalanmalıdır.",
"keyFingerprint": "Anahtar {{keyId}}",
"pluginCount_one": "{{count}} eklenti",
"pluginCount_other": "{{count}} eklenti",
"officialName": "Resmi",
"communityName": "Topluluk",
"alwaysOn": "Her zaman açık",
"communityHint": "Diğer kişiler tarafından yapılan eklentiler. Her sürüm listelenmeden önce bir kişi ve otomatik kontroller tarafından kontrol edilir.",
"communityConfirmTitle": "Topluluk eklentileri açılsın mı?",
"communityConfirmBody": "Topluluk eklentileri Termix ekibi tarafından değil, diğer kişiler tarafından yapılır. Her sürüm listelenmeden önce bir kişi ve otomatik kontroller tarafından kontrol edilir, ancak hatalar yine de geçebilir. Yalnızca güvendiğiniz eklentileri yükleyin ve her birinin ne istediğini kontrol edin.",
"communityConfirm": "Aç",
"communityBadge": "Topluluk",
"communityBadgeHint": "Topluluk kaydından. Diğer kişiler tarafından yapılmış ve listelenmeden önce gözden geçirilmiştir.",
"customBadge": "Özel",
"customBadgeHint": "{{name}} kayıtlarından, bir yönetici tarafından eklenen bir kayıttan. Termix ekibi tarafından gözden geçirilmemiştir.",
"remove": "Kaldır",
"removeTitle": "{{name}} kaldırılsın mı?",
"removeBody": "Eklentileri artık Gözat bölümünde görünmeyecek. Daha sonra tekrar ekleyebilirsiniz.",
"removed": "{{name}} kaldırıldı",
"inUse": "Önce {{name}} eklentilerini kaldırın: {{list}}",
"changeFailed": "Kayıt defteri değiştirilemedi: {{error}}",
"loadFailed": "Kayıt defterleri yüklenemedi: {{error}}",
"unreachable": "Okunamadı: {{error}}",
"filter": "Kayıt defteri",
"allRegistries": "Tüm kayıt defterleri",
"browseHint": "Topluluk eklentilerini açın veya Kayıt Defterleri sekmesinden kendi kayıt defterinizi ekleyin."
},
"upToDate": "Her şey güncel.",
"lastChecked": "Son kontrol {{time}}",
"updatesReady_one": "{{count}} güncelleme hazır.",
@@ -2149,8 +2074,11 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS ayarlı olduğu için dosyadan yükleme engelleniyor."
},
"count": {
"active_one": "{{formatted}} aktif yükleme",
"active_other": "{{formatted}} aktif yükleme",
"downloads_one": "{{formatted}} indirme",
"downloads_other": "{{formatted}} indirme",
"activeHint": "Son bir hafta içinde bu eklentinin etkin olduğunu bildiren örnekler. Kullanım istatistikleri kapalı olan örnekler sayılmaz.",
"downloadsHint": "Bir sürümün kaç kez indirildiği. Bu, kurulum sayısı değildir."
},
"unverified": "Doğrulanmamış",
+10 -82
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Пов’язано з {{server}}",
"pluginsDocsLink": "Детальніше про кожен"
},
"desktopUpdates": {
"title": "Настільний додаток",
"mode": "Оновлення",
"modeHint": "Як цей додаток отримує нові версії.",
"manualModeHint": "Ця копія не може оновлюватися сама, тому Termix лише повідомляє вас, коли виходить нова версія.",
"modeAutomatic": "Автоматично",
"modePrompt": "Спочатку запитати",
"modeNever": "Ніколи",
"automaticBody": "Завантажувати нові версії у фоновому режимі та встановлювати їх під час перезапуску.",
"promptBody": "Повідомляти мене про вихід нової версії та дозволяти обирати, коли її завантажити.",
"neverBody": "Не перевіряти наявність оновлень. Ви все ще можете перевірити їх вручну в Налаштуваннях.",
"onboardingTitle": "Оновлення додатка",
"onboardingBody": "Настільний додаток тепер може оновлюватися самостійно. Оберіть, як ви хочете отримувати нові версії. Це можна змінити пізніше в Налаштуваннях, Оновлення.",
"onboardingManual": "Ця копія додатка була встановлена таким чином, що не підтримує автоматичне оновлення, тому Termix повідомить вас про вихід нової версії та надасть посилання для завантаження.",
"status": "Версія {{version}}",
"statusIdle": "Ще не перевірено",
"statusChecking": "Перевірка наявності оновлень",
"statusAvailable": "Доступна версія {{version}}",
"statusDownloading": "Завантаження {{version}} ({{progress}}%)",
"statusReady": "Версія {{version}} готова. Перезапустіть, щоб встановити її.",
"statusUpToDate": "У вас остання версія",
"statusError": "Не вдалося перевірити наявність оновлень. Спробуйте пізніше.",
"checkNow": "Перевірити зараз",
"download": "Завантажити",
"restart": "Перезапустити зараз",
"later": "Пізніше",
"available": "Доступна Termix {{version}}",
"manualHint": "Завантажте її зі сторінки випуску та встановіть поверх поточної.",
"ready": "Termix {{version}} готова до встановлення",
"readyHint": "Вона встановиться під час наступного перезапуску Termix."
},
"nav": {
"home": "Головна",
"terminal": "Термінал",
@@ -1155,7 +1124,6 @@
"databaseConnectionFailed": "Не вдалося підключитися до сервера бази даних",
"embeddedServerPortInUse": "Порт {{port}} вже використовується іншою програмою. Зазвичай це контейнер Termix Docker або залишковий процес Termix з попередньої сесії. Закрийте його, а потім перезапустіть Termix.",
"embeddedServerPortInUseUnknownPort": "Один із портів, необхідних Termix, вже використовується іншою програмою. Закрийте програму, яка його використовує, а потім перезапустіть Termix.",
"embeddedServerOldDatabase": "Ваші локальні дані походять з версії Termix 2.8 або старішої, тому спочатку їх потрібно оновити через версію 2.9. Встановіть Termix 2.9.1, відкрийте його один раз, щоб дані мігрували, а потім оновіться до цієї версії.",
"embeddedServerCrashed": "Локальний сервер несподівано зупинився. Перезапустіть Termix і перевірте журнал робочого столу, якщо це повторюється.",
"resetCodeSent": "Код скидання надіслано до логів Docker",
"codeVerified": "Код успішно перевірено",
@@ -1948,23 +1916,19 @@
"tabs": {
"installed": "Встановлено",
"browse": "Каталог",
"updates": "Оновлення",
"registries": "Реєстри"
"updates": "Оновлення"
},
"status": {
"summary": "{{installed}} встановлено, {{running}} запущено",
"running": "Запущено",
"disabled": "Вимкнено",
"failed": "Зупинено несподівано",
"blocked": "Очікує на інший плагін",
"server": "Працює на вашому сервері"
"blocked": "Очікує на інший плагін"
},
"groups": {
"running": "Запущено",
"notRunning": "Не запущено",
"onServer": "На вашому сервері"
"notRunning": "Не запущено"
},
"runsOnServerHint": "Цей плагін працює лише на вашому сервері, тому він вимкнений у настільному додатку. Він все одно працює там.",
"sort": {
"popular": "Найпопулярніші",
"name": "Назва",
@@ -1982,7 +1946,7 @@
"version": "Версія",
"status": "Статус",
"category": "Категорія",
"downloads": "Завантаження"
"installs": "Встановлень"
},
"risk": {
"critical": "Критичний",
@@ -2166,49 +2130,8 @@
"noneInstalled": "Плагіни ще не встановлено. Перегляньте каталог, щоб додати кілька.",
"nothingHere": "Тут нічого немає.",
"nothingHereHint": "Спробуйте іншу категорію або пошук.",
"showInstalled": "Показати встановлені",
"allInstalled": "Усе тут уже встановлено.",
"allInstalledHint": "Увімкніть Показати встановлені, щоб побачити їх.",
"communitySoon": "Плагіни спільноти з’являться в одному з наступних оновлень. Автори плагінів вже можуть надсилати свої плагіни до реєстру спільноти.",
"communitySubmit": "Як надіслати",
"registries": {
"intro": "Реєстри — це списки плагінів, які можна встановити. Офіційний завжди увімкнено. Ви можете увімкнути реєстр спільноти або додати власний.",
"hostYourOwn": "Розмістити власний реєстр",
"add": "Додати реєстр",
"addTitle": "Додати реєстр",
"addHint": "Вставте посилання на index.json реєстру. Termix прочитає його та покаже ключ, яким він підписує плагіни. Додавайте лише реєстри від людей, яким довіряєте.",
"urlLabel": "URL-адреса індексу",
"check": "Перевірити",
"addConfirm": "Довіряти та додати",
"added": "Додано {{name}}",
"customWarning": "Плагіни з цього реєстру не перевіряються командою Termix. Тільки власник реєстру вирішує, що в ньому міститься. Кожне завантаження має бути підписано ключем вище.",
"keyFingerprint": "Ключ {{keyId}}",
"pluginCount_one": "{{count}} плагін",
"pluginCount_few": "{{count}} плагіни",
"pluginCount_many": "{{count}} плагінів",
"pluginCount_other": "{{count}} плагінів",
"officialName": "Офіційний",
"communityName": "Спільноти",
"alwaysOn": "Завжди увімкнено",
"communityHint": "Плагіни, створені іншими людьми. Кожна версія перевіряється людиною та автоматичними системами перед публікацією.",
"communityConfirmTitle": "Увімкнути плагіни спільноти?",
"communityConfirmBody": "Плагіни спільноти створюються іншими людьми, а не командою Termix. Кожна версія перевіряється людиною та автоматичними системами перед публікацією, але помилки все ж можуть прослизнути. Встановлюйте лише плагіни, яким довіряєте, та перевіряйте, які дозволи вони потребують.",
"communityConfirm": "Увімкнути",
"communityBadge": "Спільноти",
"communityBadgeHint": "З реєстру спільноти. Створено іншими людьми та перевірено перед публікацією.",
"customBadge": "Користувацький",
"customBadgeHint": "З {{name}}, реєстру, доданого адміністратором. Не перевірено командою Termix.",
"remove": "Видалити",
"removeTitle": "Видалити {{name}}?",
"removeBody": "Його плагіни більше не відображатимуться в розділі «Перегляд». Ви можете додати його знову пізніше.",
"removed": "Видалено {{name}}",
"inUse": "Спочатку видаліть плагіни з {{name}}: {{list}}",
"changeFailed": "Не вдалося змінити реєстр: {{error}}",
"loadFailed": "Не вдалося завантажити реєстри: {{error}}",
"unreachable": "Не вдалося прочитати: {{error}}",
"filter": "Реєстр",
"allRegistries": "Усі реєстри",
"browseHint": "Увімкніть плагіни спільноти або додайте власний реєстр на вкладці «Реєстри»."
},
"upToDate": "Все оновлено.",
"lastChecked": "Остання перевірка: {{time}}",
"updatesReady_one": "Готове {{count}} оновлення.",
@@ -2235,10 +2158,15 @@
"signedOnly": "Встановлено TERMIX_REQUIRE_SIGNED_PLUGINS, тому встановлення з файлу заблоковано."
},
"count": {
"active_one": "{{formatted}} активне встановлення",
"active_few": "{{formatted}} активні встановлення",
"active_many": "{{formatted}} активних встановлень",
"active_other": "{{formatted}} активних встановлень",
"downloads_one": "{{formatted}} завантаження",
"downloads_few": "{{formatted}} завантаження",
"downloads_many": "{{formatted}} завантажень",
"downloads_other": "{{formatted}} завантажень",
"activeHint": "Кількість екземплярів, які повідомили про увімкнення цього плагіна протягом останнього тижня. Екземпляри з вимкненою статистикою використання не враховуються.",
"downloadsHint": "Кількість завантажень релізу. Це не кількість встановлень."
},
"unverified": "Неперевірений",
+7 -80
View File
@@ -233,37 +233,6 @@
"desktopLinked": "Đã liên kết với {{server}}",
"pluginsDocsLink": "Đọc về từng plugin"
},
"desktopUpdates": {
"title": "Ứng dụng máy tính để bàn",
"mode": "Cập nhật",
"modeHint": "Cách ứng dụng này nhận các phiên bản mới.",
"manualModeHint": "Bản cài đặt này không thể tự động cập nhật, nên Termix chỉ thông báo cho bạn khi có phiên bản mới.",
"modeAutomatic": "Tự động",
"modePrompt": "Hỏi trước",
"modeNever": "Không bao giờ",
"automaticBody": "Tải xuống các phiên bản mới trong nền và cài đặt khi bạn khởi động lại.",
"promptBody": "Thông báo cho tôi khi có phiên bản mới và để tôi chọn thời điểm tải xuống.",
"neverBody": "Không kiểm tra cập nhật. Bạn vẫn có thể kiểm tra thủ công trong Cài đặt.",
"onboardingTitle": "Cập nhật ứng dụng",
"onboardingBody": "Ứng dụng máy tính để bàn giờ có thể tự động cập nhật. Chọn cách bạn muốn nhận các phiên bản mới. Bạn có thể thay đổi điều này sau trong Cài đặt, mục Cập nhật.",
"onboardingManual": "Bản cài đặt ứng dụng này được cài đặt theo cách không thể tự động cập nhật, nên Termix sẽ thông báo cho bạn khi có phiên bản mới kèm theo liên kết tải xuống.",
"status": "Phiên bản {{version}}",
"statusIdle": "Chưa kiểm tra",
"statusChecking": "Đang kiểm tra cập nhật",
"statusAvailable": "Phiên bản {{version}} đã sẵn sàng",
"statusDownloading": "Đang tải xuống {{version}} ({{progress}}%)",
"statusReady": "Phiên bản {{version}} đã sẵn sàng. Khởi động lại để cài đặt.",
"statusUpToDate": "Bạn đang dùng phiên bản mới nhất",
"statusError": "Không thể kiểm tra cập nhật. Vui lòng thử lại sau.",
"checkNow": "Kiểm tra ngay",
"download": "Tải xuống",
"restart": "Khởi động lại ngay",
"later": "Để sau",
"available": "Termix {{version}} đã sẵn sàng",
"manualHint": "Tải xuống từ trang phát hành và cài đặt đè lên bản hiện tại.",
"ready": "Termix {{version}} đã sẵn sàng để cài đặt",
"readyHint": "Nó sẽ được cài đặt khi Termix khởi động lại lần tới."
},
"nav": {
"home": "Trang chủ",
"terminal": "Terminal",
@@ -1113,7 +1082,6 @@
"databaseConnectionFailed": "Không thể kết nối đến máy chủ cơ sở dữ liệu",
"embeddedServerPortInUse": "Cổng {{port}} đang được sử dụng bởi một chương trình khác. Điều này thường là do một container Docker Termix hoặc một tiến trình Termix còn sót lại từ phiên trước. Hãy đóng nó đi, sau đó khởi động lại Termix.",
"embeddedServerPortInUseUnknownPort": "Một trong các cổng mà Termix cần đang bị một chương trình khác sử dụng. Hãy đóng chương trình đang sử dụng cổng đó, sau đó khởi động lại Termix.",
"embeddedServerOldDatabase": "Dữ liệu cục bộ của bạn từ Termix 2.8 hoặc cũ hơn và cần phải được nâng cấp qua phiên bản 2.9 trước. Hãy cài đặt Termix 2.9.1, mở ứng dụng một lần để nó có thể di chuyển dữ liệu của bạn, sau đó cập nhật lên phiên bản này.",
"embeddedServerCrashed": "Máy chủ cục bộ đã dừng hoạt động bất ngờ. Hãy khởi động lại Termix và kiểm tra nhật ký máy tính để bàn nếu tình trạng này tiếp tục xảy ra.",
"resetCodeSent": "Mã đặt lại đã được gửi đến nhật ký Docker",
"codeVerified": "Xác minh mã thành công",
@@ -1876,23 +1844,19 @@
"tabs": {
"installed": "Đã cài đặt",
"browse": "Duyệt",
"updates": "Cập nhật",
"registries": "Registries"
"updates": "Cập nhật"
},
"status": {
"summary": "{{installed}} đã cài đặt, {{running}} đang chạy",
"running": "Đang chạy",
"disabled": "Đã tắt",
"failed": "Dừng bất ngờ",
"blocked": "Đang chờ plugin khác",
"server": "Chạy trên máy chủ của bạn"
"blocked": "Đang chờ plugin khác"
},
"groups": {
"running": "Đang chạy",
"notRunning": "Không chạy",
"onServer": "Trên máy chủ của bạn"
"notRunning": "Không chạy"
},
"runsOnServerHint": "Plugin này chỉ chạy trên máy chủ của bạn, nên nó sẽ tắt trong ứng dụng máy tính để bàn. Nó vẫn hoạt động trên máy chủ.",
"sort": {
"popular": "Phổ biến nhất",
"name": "Tên",
@@ -1910,7 +1874,7 @@
"version": "Phiên bản",
"status": "Trạng thái",
"category": "Danh mục",
"downloads": "Lượt tải"
"installs": "Lượt cài đặt"
},
"risk": {
"critical": "Quan trọng",
@@ -2046,46 +2010,8 @@
"noneInstalled": "Chưa cài đặt plugin nào. Hãy duyệt để thêm một số plugin.",
"nothingHere": "Không có gì ở đây.",
"nothingHereHint": "Hãy thử một danh mục khác hoặc tìm kiếm.",
"showInstalled": "Hiển thị đã cài",
"allInstalled": "Tất cả ở đây đều đã được cài đặt.",
"allInstalledHint": "Bật Hiển thị đã cài để xem chúng.",
"communitySoon": "Plugin cộng đồng sẽ có trong một bản cập nhật sau. Tác giả plugin đã có thể gửi plugin của họ vào sổ đăng ký cộng đồng.",
"communitySubmit": "Cách gửi plugin",
"registries": {
"intro": "Registries là danh sách các plugin bạn có thể cài đặt. Registry chính thức luôn được bật. Bạn có thể bật registry cộng đồng hoặc thêm registry của riêng mình.",
"hostYourOwn": "Tự lưu trữ registry",
"add": "Thêm registry",
"addTitle": "Thêm một registry",
"addHint": "Dán liên kết đến file index.json của registry. Termix sẽ đọc file này và hiển thị khóa dùng để ký cho các plugin. Chỉ thêm registry từ những người bạn tin tưởng.",
"urlLabel": "URL chỉ mục",
"check": "Kiểm tra",
"addConfirm": "Tin tưởng và thêm",
"added": "Đã thêm {{name}}",
"customWarning": "Các plugin từ registry này không được đội ngũ Termix xem xét. Chỉ chủ sở hữu registry quyết định nội dung của nó. Mọi lượt tải xuống đều phải được ký bằng khóa ở trên.",
"keyFingerprint": "Khóa {{keyId}}",
"pluginCount_other": "{{count}} plugin",
"officialName": "Chính thức",
"communityName": "Cộng đồng",
"alwaysOn": "Luôn bật",
"communityHint": "Các plugin do người khác tạo. Mỗi phiên bản đều được kiểm tra bởi con người và các quy trình tự động trước khi được liệt kê.",
"communityConfirmTitle": "Bật plugin cộng đồng?",
"communityConfirmBody": "Plugin cộng đồng do người khác tạo, không phải đội ngũ Termix. Mỗi phiên bản đều được kiểm tra bởi con người và các quy trình tự động trước khi được liệt kê, nhưng vẫn có thể có sai sót lọt qua. Chỉ cài đặt các plugin bạn tin tưởng và kiểm tra những gì mỗi plugin yêu cầu.",
"communityConfirm": "Bật",
"communityBadge": "Cộng đồng",
"communityBadgeHint": "Từ registry cộng đồng. Do người khác tạo và đã được xem xét trước khi liệt kê.",
"customBadge": "Tùy chỉnh",
"customBadgeHint": "Từ {{name}}, một registry do quản trị viên thêm. Không được đội ngũ Termix xem xét.",
"remove": "Xóa",
"removeTitle": "Xóa {{name}}?",
"removeBody": "Các plugin của nó sẽ không còn hiển thị trong mục Khám phá. Bạn có thể thêm lại sau.",
"removed": "Đã xóa {{name}}",
"inUse": "Hãy gỡ cài đặt các plugin từ {{name}} trước: {{list}}",
"changeFailed": "Không thể thay đổi registry: {{error}}",
"loadFailed": "Không thể tải danh sách registry: {{error}}",
"unreachable": "Không thể đọc: {{error}}",
"filter": "Registry",
"allRegistries": "Tất cả registry",
"browseHint": "Bật plugin cộng đồng hoặc thêm registry của riêng bạn trong tab Registries."
},
"upToDate": "Mọi thứ đều đã cập nhật.",
"lastChecked": "Lần kiểm tra cuối cùng {{time}}",
"updatesReady_other": "{{count}} bản cập nhật sẵn sàng.",
@@ -2106,7 +2032,9 @@
"signedOnly": "TERMIX_REQUIRE_SIGNED_PLUGINS được đặt, vì vậy việc cài đặt từ tệp vẫn bị chặn."
},
"count": {
"active_other": "{{formatted}} cài đặt đang hoạt động",
"downloads_other": "{{formatted}} lượt tải xuống",
"activeHint": "Số lượng phiên bản báo cáo rằng plugin này đã được bật trong tuần qua. Các phiên bản tắt thống kê sử dụng không được tính.",
"downloadsHint": "Số lần một phiên bản phát hành được tải xuống. Đây không phải là số lần cài đặt."
},
"unverified": "Chưa xác minh",
@@ -2330,7 +2258,6 @@
"continue": "Tiếp tục",
"back": "Quay lại",
"mergeTitle": "Thêm vào tài khoản của tôi",
"mergeBody_other": "{{count}} mục trên thiết bị này sẽ được thêm vào tài khoản của bạn. Các mục mà tài khoản của bạn đã có sẽ giữ nguyên trên máy chủ.",
"replaceTitle": "Thay thế bằng tài khoản của tôi",
"replaceBody_other": "Các mục {{count}} trên thiết bị này sẽ bị xóa, và thiết bị này sẽ đồng bộ mọi thứ từ tài khoản của bạn. Các host chỉ được giữ trên thiết bị này sẽ vẫn còn.",
"link": "Liên kết",
+7 -79
View File
@@ -233,37 +233,6 @@
"desktopLinked": "已关联到 {{server}}",
"pluginsDocsLink": "阅读每个插件的说明"
},
"desktopUpdates": {
"title": "桌面应用",
"mode": "更新",
"modeHint": "此应用如何获取新版本。",
"manualModeHint": "此副本无法自动更新,因此 Termix 仅在新版本发布时通知您。",
"modeAutomatic": "自动",
"modePrompt": "先询问",
"modeNever": "从不",
"automaticBody": "在后台下载新版本,并在您重启时安装。",
"promptBody": "有新版本时通知我,由我决定何时下载。",
"neverBody": "不检查更新。您仍可在设置中手动检查。",
"onboardingTitle": "应用更新",
"onboardingBody": "桌面应用现在可以自动更新。请选择您希望接收新版本的方式。您稍后可以在“设置”>“更新”中更改此选项。",
"onboardingManual": "此应用副本的安装方式不支持自动更新,因此 Termix 会在新版本发布时通知您,并提供下载链接。",
"status": "版本 {{version}}",
"statusIdle": "尚未检查",
"statusChecking": "正在检查更新",
"statusAvailable": "版本 {{version}} 可用",
"statusDownloading": "正在下载 {{version}} ({{progress}}%)",
"statusReady": "版本 {{version}} 已就绪。重启即可安装。",
"statusUpToDate": "您已拥有最新版本",
"statusError": "无法检查更新。请稍后重试。",
"checkNow": "立即检查",
"download": "下载",
"restart": "立即重启",
"later": "稍后",
"available": "Termix {{version}} 可用",
"manualHint": "从发布页面下载并覆盖安装当前版本。",
"ready": "Termix {{version}} 已准备好安装",
"readyHint": "下次重启 Termix 时将进行安装。"
},
"nav": {
"home": "主页",
"terminal": "终端",
@@ -1113,7 +1082,6 @@
"databaseConnectionFailed": "无法连接到数据库服务器",
"embeddedServerPortInUse": "端口 {{port}} 已被其他程序占用。这通常是 Termix Docker 容器或上一次会话残留的 Termix 进程。请关闭该程序,然后重启 Termix。",
"embeddedServerPortInUseUnknownPort": "Termix 所需的一个端口已被其他程序占用。请关闭占用该端口的程序,然后重启 Termix。",
"embeddedServerOldDatabase": "您的本地数据来自 Termix 2.8 或更早版本,必须先通过 2.9 版本进行迁移。请安装 Termix 2.9.1,打开一次以完成数据迁移,然后再更新到当前版本。",
"embeddedServerCrashed": "本地服务器意外停止。请重启 Termix,如果问题持续出现,请检查桌面日志。",
"resetCodeSent": "重置代码已发送至 Docker 日志",
"codeVerified": "代码验证成功",
@@ -1876,23 +1844,19 @@
"tabs": {
"installed": "已安装",
"browse": "浏览",
"updates": "更新",
"registries": "注册表"
"updates": "更新"
},
"status": {
"summary": "已安装 {{installed}} 个,正在运行 {{running}} 个",
"running": "正在运行",
"disabled": "已禁用",
"failed": "意外停止",
"blocked": "等待其他插件",
"server": "在您的服务器上运行"
"blocked": "等待其他插件"
},
"groups": {
"running": "正在运行",
"notRunning": "未运行",
"onServer": "在您的服务器上"
"notRunning": "未运行"
},
"runsOnServerHint": "此插件仅在您的服务器上运行,因此在桌面应用中处于关闭状态。它在服务器上仍然正常工作。",
"sort": {
"popular": "最受欢迎",
"name": "名称",
@@ -1910,7 +1874,7 @@
"version": "版本",
"status": "状态",
"category": "类别",
"downloads": "下载量"
"installs": "安装量"
},
"risk": {
"critical": "严重",
@@ -2046,46 +2010,8 @@
"noneInstalled": "尚未安装任何插件。浏览并添加一些。",
"nothingHere": "这里什么都没有。",
"nothingHereHint": "尝试其他类别或搜索。",
"showInstalled": "显示已安装",
"allInstalled": "此处所有内容均已安装。",
"allInstalledHint": "开启“显示已安装”以查看它们。",
"communitySoon": "社区插件将在后续更新中推出。插件作者现在就可以向社区注册表提交他们的插件。",
"communitySubmit": "如何提交",
"registries": {
"intro": "注册表是您安装的插件列表。官方注册表始终开启。您可以开启社区注册表或添加自己的注册表。",
"hostYourOwn": "托管您自己的注册表",
"add": "添加注册表",
"addTitle": "添加注册表",
"addHint": "粘贴注册表 index.json 的链接。Termix 将读取该文件并显示用于签署插件的密钥。仅添加您信任的人提供的注册表。",
"urlLabel": "索引 URL",
"check": "检查",
"addConfirm": "信任并添加",
"added": "已添加 {{name}}",
"customWarning": "此注册表中的插件未经 Termix 团队审核。注册表的所有者决定其中包含的内容。每次下载都必须由上述密钥签名。",
"keyFingerprint": "密钥 {{keyId}}",
"pluginCount_other": "{{count}} 个插件",
"officialName": "官方",
"communityName": "社区",
"alwaysOn": "始终开启",
"communityHint": "由其他人制作的插件。每个版本在列出前都经过人工和自动化检查。",
"communityConfirmTitle": "要开启社区插件吗?",
"communityConfirmBody": "社区插件由其他人制作,而非 Termix 团队。每个版本在列出前都经过人工和自动化检查,但仍可能有疏漏。仅安装您信任的插件,并检查每个插件的权限请求。",
"communityConfirm": "开启",
"communityBadge": "社区",
"communityBadgeHint": "来自社区注册表。由其他人制作,并在列出前经过审核。",
"customBadge": "自定义",
"customBadgeHint": "来自 {{name}},这是管理员添加的注册表。未经 Termix 团队审核。",
"remove": "移除",
"removeTitle": "移除 {{name}}?",
"removeBody": "其插件将不再显示在“浏览”中。您可以稍后再次添加。",
"removed": "已移除 {{name}}",
"inUse": "请先卸载来自 {{name}} 的插件:{{list}}",
"changeFailed": "无法更改注册表:{{error}}",
"loadFailed": "无法加载注册表:{{error}}",
"unreachable": "无法读取:{{error}}",
"filter": "注册表",
"allRegistries": "所有注册表",
"browseHint": "在“注册表”选项卡中启用社区插件或添加您自己的注册表。"
},
"upToDate": "所有内容均为最新。",
"lastChecked": "上次检查于 {{time}}",
"updatesReady_other": "{{count}} 个更新就绪。",
@@ -2106,7 +2032,9 @@
"signedOnly": "已设置 TERMIX_REQUIRE_SIGNED_PLUGINS,因此从文件安装仍处于阻止状态。"
},
"count": {
"active_other": "{{formatted}} 个活跃安装",
"downloads_other": "{{formatted}} 次下载",
"activeHint": "过去一周内报告已启用此插件的实例数量。未开启使用统计的实例不计入其中。",
"downloadsHint": "某个版本被下载的次数。这并非安装数量。"
},
"unverified": "未验证",
+7 -79
View File
@@ -233,37 +233,6 @@
"desktopLinked": "已連線至 {{server}}",
"pluginsDocsLink": "閱讀各外掛說明"
},
"desktopUpdates": {
"title": "桌面應用程式",
"mode": "更新",
"modeHint": "此應用程式如何取得新版本。",
"manualModeHint": "此副本無法自行更新,因此 Termix 僅會在新版本發布時通知您。",
"modeAutomatic": "自動",
"modePrompt": "先詢問",
"modeNever": "永不",
"automaticBody": "在背景下載新版本,並在您重新啟動時安裝。",
"promptBody": "在新版本發布時通知我,並讓我選擇何時下載。",
"neverBody": "不要檢查更新。您仍可在設定中手動檢查。",
"onboardingTitle": "應用程式更新",
"onboardingBody": "桌面應用程式現在可以自行更新。選擇您希望接收新版本的方式。您之後可以在「設定」>「更新」中更改此設定。",
"onboardingManual": "此應用程式副本的安裝方式無法自行更新,因此 Termix 會在新版本發布時通知您,並提供下載連結。",
"status": "版本 {{version}}",
"statusIdle": "尚未檢查",
"statusChecking": "正在檢查更新",
"statusAvailable": "版本 {{version}} 可供使用",
"statusDownloading": "正在下載 {{version}} ({{progress}}%)",
"statusReady": "版本 {{version}} 已準備就緒。重新啟動以安裝。",
"statusUpToDate": "您已擁有最新版本",
"statusError": "無法檢查更新。請稍後再試。",
"checkNow": "立即檢查",
"download": "下載",
"restart": "立即重新啟動",
"later": "稍後",
"available": "Termix {{version}} 可供使用",
"manualHint": "從發布頁面下載並覆蓋安裝此版本。",
"ready": "Termix {{version}} 已準備好安裝",
"readyHint": "下次重新啟動 Termix 時將進行安裝。"
},
"nav": {
"home": "首頁",
"terminal": "終端機",
@@ -1113,7 +1082,6 @@
"databaseConnectionFailed": "無法連線至資料庫伺服器",
"embeddedServerPortInUse": "連接埠 {{port}} 已被其他程式使用。這通常是 Termix Docker 容器或上次工作階段殘留的 Termix 行程。請關閉該程式,然後重新啟動 Termix。",
"embeddedServerPortInUseUnknownPort": "Termix 所需的其中一個連接埠已被其他程式使用。請關閉佔用該連接埠的程式,然後重新啟動 Termix。",
"embeddedServerOldDatabase": "您的本機資料來自 Termix 2.8 或更早版本,必須先透過 2.9 版本進行遷移。請安裝 Termix 2.9.1,開啟一次以完成資料遷移,然後再更新至此版本。",
"embeddedServerCrashed": "本機伺服器意外停止。請重新啟動 Termix,若問題持續發生,請檢查桌面記錄檔。",
"resetCodeSent": "重設碼已傳送至 Docker 記錄檔",
"codeVerified": "驗證碼驗證成功",
@@ -1876,23 +1844,19 @@
"tabs": {
"installed": "已安裝",
"browse": "瀏覽",
"updates": "更新",
"registries": "登錄"
"updates": "更新"
},
"status": {
"summary": "已安裝 {{installed}} 個,執行中 {{running}} 個",
"running": "執行中",
"disabled": "已停用",
"failed": "意外停止",
"blocked": "等待其他外掛",
"server": "在您的伺服器上執行"
"blocked": "等待其他外掛"
},
"groups": {
"running": "執行中",
"notRunning": "未執行",
"onServer": "在您的伺服器上"
"notRunning": "未執行"
},
"runsOnServerHint": "此外掛程式僅在您的伺服器上執行,因此在桌面應用程式中會保持關閉狀態。它在伺服器上仍會正常運作。",
"sort": {
"popular": "最受歡迎",
"name": "名稱",
@@ -1910,7 +1874,7 @@
"version": "版本",
"status": "狀態",
"category": "類別",
"downloads": "下載次數"
"installs": "安裝次數"
},
"risk": {
"critical": "嚴重",
@@ -2046,46 +2010,8 @@
"noneInstalled": "尚未安裝任何外掛。瀏覽並安裝一些外掛吧。",
"nothingHere": "此處無內容。",
"nothingHereHint": "請嘗試其他分類或搜尋。",
"showInstalled": "顯示已安裝",
"allInstalled": "此處的所有項目都已安裝。",
"allInstalledHint": "開啟「顯示已安裝」以查看它們。",
"communitySoon": "社群外掛將於後續更新中推出。外掛作者目前已可將其作品提交至社群登錄。",
"communitySubmit": "如何提交",
"registries": {
"intro": "登錄是您可以安裝的外掛程式清單。官方登錄始終開啟。您可以開啟社群登錄或新增自己的登錄。",
"hostYourOwn": "託管您自己的登錄",
"add": "新增登錄",
"addTitle": "新增登錄",
"addHint": "貼上登錄 index.json 的連結。Termix 會讀取它並顯示用於簽署外掛程式的金鑰。僅新增您信任的人提供的登錄。",
"urlLabel": "索引 URL",
"check": "檢查",
"addConfirm": "信任並新增",
"added": "已新增 {{name}}",
"customWarning": "此登錄中的外掛程式未經 Termix 團隊審查。僅由登錄擁有者決定其內容。每次下載都必須由上述金鑰簽署。",
"keyFingerprint": "金鑰 {{keyId}}",
"pluginCount_other": "{{count}} 個外掛程式",
"officialName": "官方",
"communityName": "社群",
"alwaysOn": "始終開啟",
"communityHint": "由其他人製作的外掛程式。每個版本在列出前都會經過人工和自動化檢查。",
"communityConfirmTitle": "要開啟社群外掛程式嗎?",
"communityConfirmBody": "社群外掛程式由其他人而非 Termix 團隊製作。每個版本在列出前都會經過人工和自動化檢查,但仍可能有疏漏。僅安裝您信任的外掛程式,並檢查每個外掛程式要求的權限。",
"communityConfirm": "開啟",
"communityBadge": "社群",
"communityBadgeHint": "來自社群登錄。由其他人製作並在列出前經過審查。",
"customBadge": "自訂",
"customBadgeHint": "來自 {{name}},這是管理員新增的登錄。未經 Termix 團隊審查。",
"remove": "移除",
"removeTitle": "移除 {{name}}?",
"removeBody": "其插件將不再顯示於「瀏覽」中。您可以稍後再次新增。",
"removed": "已移除 {{name}}",
"inUse": "請先解除安裝來自 {{name}} 的插件:{{list}}",
"changeFailed": "無法變更註冊表:{{error}}",
"loadFailed": "無法載入註冊表:{{error}}",
"unreachable": "無法讀取:{{error}}",
"filter": "註冊表",
"allRegistries": "所有註冊表",
"browseHint": "在「註冊表」分頁中啟用社群插件或新增您自己的註冊表。"
},
"upToDate": "所有項目皆為最新。",
"lastChecked": "上次檢查時間:{{time}}",
"updatesReady_other": "有 {{count}} 項更新待安裝。",
@@ -2106,7 +2032,9 @@
"signedOnly": "已設定 TERMIX_REQUIRE_SIGNED_PLUGINS,因此無法從檔案安裝。"
},
"count": {
"active_other": "{{formatted}} 個活躍安裝",
"downloads_other": "{{formatted}} 次下載",
"activeHint": "過去一周內回報此插件已啟用的實例數量。已關閉使用統計的實例不會被計入。",
"downloadsHint": "版本被下載的次數。這並非安裝次數。"
},
"unverified": "未驗證",
+4 -72
View File
@@ -221,35 +221,6 @@
"onboarding.desktopLinkBody": "488f5897a248",
"onboarding.desktopLinked": "19146658b07d",
"onboarding.pluginsDocsLink": "e4ffb8fd289c",
"desktopUpdates.title": "f7a44c6b8856",
"desktopUpdates.mode": "c76d18079a07",
"desktopUpdates.modeHint": "6492b43953cd",
"desktopUpdates.manualModeHint": "ce2956d8ed40",
"desktopUpdates.modeAutomatic": "ac9041e76816",
"desktopUpdates.modePrompt": "1aeb84dfd695",
"desktopUpdates.modeNever": "80c3052d33cc",
"desktopUpdates.automaticBody": "247814681732",
"desktopUpdates.promptBody": "3ef83b4a2743",
"desktopUpdates.neverBody": "9f7c7e91ab50",
"desktopUpdates.onboardingTitle": "16213f85d7a6",
"desktopUpdates.onboardingBody": "0a3a54812d10",
"desktopUpdates.onboardingManual": "3350626ad97f",
"desktopUpdates.status": "4033fb7f46f8",
"desktopUpdates.statusIdle": "82bd72a326cc",
"desktopUpdates.statusChecking": "78948b2a07ee",
"desktopUpdates.statusAvailable": "7ed7afe08d2a",
"desktopUpdates.statusDownloading": "91ac5aba3d05",
"desktopUpdates.statusReady": "f01885602d2f",
"desktopUpdates.statusUpToDate": "aff2a7fb6524",
"desktopUpdates.statusError": "7c5c7ec5e1e0",
"desktopUpdates.checkNow": "2ce5dd0d6f18",
"desktopUpdates.download": "a479c9c34e87",
"desktopUpdates.restart": "af2c3d8ef2fe",
"desktopUpdates.later": "56e2f5d3634e",
"desktopUpdates.available": "e0a6e0d244ee",
"desktopUpdates.manualHint": "48b49fd6307c",
"desktopUpdates.ready": "faadfb86e8e8",
"desktopUpdates.readyHint": "dd55ccd0ee8d",
"nav.home": "70f8bb9a8a53",
"nav.terminal": "a1f52cdcb3f2",
"nav.close": "bbfa773e5a63",
@@ -1056,7 +1027,6 @@
"messages.databaseConnectionFailed": "1b3aebbdb5fd",
"messages.embeddedServerPortInUse": "5bf7c4c579d0",
"messages.embeddedServerPortInUseUnknownPort": "1b00931d564b",
"messages.embeddedServerOldDatabase": "531a8964b8fe",
"messages.embeddedServerCrashed": "c927ebd90f05",
"messages.resetCodeSent": "6419f91e7844",
"messages.codeVerified": "65a610f29c92",
@@ -1730,17 +1700,13 @@
"plugins.manager.tabs.installed": "7bb4405cdfc9",
"plugins.manager.tabs.browse": "2f3b5c55bc27",
"plugins.manager.tabs.updates": "c76d18079a07",
"plugins.manager.tabs.registries": "103d9f3f36b0",
"plugins.manager.status.summary": "27466d88a124",
"plugins.manager.status.running": "73989d9c5926",
"plugins.manager.status.disabled": "f4f4473df8cb",
"plugins.manager.status.failed": "71f9a28d7960",
"plugins.manager.status.blocked": "911f8f3cbad4",
"plugins.manager.status.server": "212cbe47e65e",
"plugins.manager.groups.running": "73989d9c5926",
"plugins.manager.groups.notRunning": "2a2cd4b515b7",
"plugins.manager.groups.onServer": "63ca7153c2d1",
"plugins.manager.runsOnServerHint": "d2caa58282dc",
"plugins.manager.sort.popular": "5adbdd07e7a4",
"plugins.manager.sort.name": "709a23220f2c",
"plugins.manager.sort.updated": "5f0500ccf919",
@@ -1753,7 +1719,7 @@
"plugins.manager.table.version": "2da600bf9404",
"plugins.manager.table.status": "bae7d5be7082",
"plugins.manager.table.category": "a3c686e711e4",
"plugins.manager.table.downloads": "a862c2b21b5e",
"plugins.manager.table.installs": "671fb4cc25e3",
"plugins.manager.risk.critical": "04b7b26c8ca2",
"plugins.manager.risk.high": "667c4baaccc2",
"plugins.manager.risk.medium": "1fd503c30a8b",
@@ -1872,44 +1838,8 @@
"plugins.manager.noneInstalled": "ad8f5e4cbbed",
"plugins.manager.nothingHere": "7f420221dbfd",
"plugins.manager.nothingHereHint": "92d7f6617ad5",
"plugins.manager.showInstalled": "68d68a7017d0",
"plugins.manager.allInstalled": "a75d3e3abf86",
"plugins.manager.allInstalledHint": "42408fa9dabc",
"plugins.manager.communitySoon": "1f13a2b46846",
"plugins.manager.communitySubmit": "0e4bbb08b9a6",
"plugins.manager.registries.intro": "06b019845732",
"plugins.manager.registries.hostYourOwn": "784643b2b706",
"plugins.manager.registries.add": "88a1dcec3924",
"plugins.manager.registries.addTitle": "bc9248dfa57b",
"plugins.manager.registries.addHint": "af1c75c75121",
"plugins.manager.registries.urlLabel": "6d60ca68e22c",
"plugins.manager.registries.check": "4b5e84be0e45",
"plugins.manager.registries.addConfirm": "55443d56d1d6",
"plugins.manager.registries.added": "f280ddcd11a7",
"plugins.manager.registries.customWarning": "dbdcb06ffbfe",
"plugins.manager.registries.keyFingerprint": "fce960e3550e",
"plugins.manager.registries.pluginCount": "cc498dc6b74a",
"plugins.manager.registries.officialName": "ac60fda7090f",
"plugins.manager.registries.communityName": "bfd58ee3a270",
"plugins.manager.registries.alwaysOn": "531e4565609f",
"plugins.manager.registries.communityHint": "7e31d9675e88",
"plugins.manager.registries.communityConfirmTitle": "f6f57fa44030",
"plugins.manager.registries.communityConfirmBody": "23b78222dfec",
"plugins.manager.registries.communityConfirm": "26563efc2a04",
"plugins.manager.registries.communityBadge": "bfd58ee3a270",
"plugins.manager.registries.communityBadgeHint": "c757a98b9b1b",
"plugins.manager.registries.customBadge": "081ae3fdc403",
"plugins.manager.registries.customBadgeHint": "a762458e9890",
"plugins.manager.registries.remove": "e963907dac5c",
"plugins.manager.registries.removeTitle": "97f43b84a5cd",
"plugins.manager.registries.removeBody": "bb026b2746e5",
"plugins.manager.registries.removed": "6da8d2c7f2c4",
"plugins.manager.registries.inUse": "f33686c03611",
"plugins.manager.registries.changeFailed": "66ff9acddd8c",
"plugins.manager.registries.loadFailed": "cf578720f769",
"plugins.manager.registries.unreachable": "d2181b2733b4",
"plugins.manager.registries.filter": "1fd6a805dae7",
"plugins.manager.registries.allRegistries": "456d49fa8b74",
"plugins.manager.registries.browseHint": "7935e5685cbc",
"plugins.manager.upToDate": "2772acacfd94",
"plugins.manager.lastChecked": "0e673333d6f9",
"plugins.manager.updatesReady": "4e5d7acd0702",
@@ -1927,7 +1857,9 @@
"plugins.manager.developer.enable": "26563efc2a04",
"plugins.manager.developer.installFromFile": "98a3d702a4cf",
"plugins.manager.developer.signedOnly": "c77cc6700613",
"plugins.manager.count.active": "f100c8d84db0",
"plugins.manager.count.downloads": "1f0ddccbcd84",
"plugins.manager.count.activeHint": "f46d3c9fbac5",
"plugins.manager.count.downloadsHint": "3282a2be25c0",
"plugins.manager.unverified": "eb27a190c073",
"plugins.manager.unverifiedHint": "2f5d72213e0c",
+5 -2
View File
@@ -31,7 +31,7 @@ import { getPluginData, type PluginDataSummary } from "@/api/plugins-api";
import {
BetaBadge,
CapabilityRow,
DownloadCount,
InstallCountFact,
PluginIconBox,
SourceBadge,
UnverifiedBadge,
@@ -128,7 +128,10 @@ export function PluginDetail({
})}
</span>
)}
<DownloadCount count={plugin.downloads} />
<InstallCountFact
count={plugin.installCount}
source={plugin.installCountSource}
/>
</Facts>
</div>
<div className="flex shrink-0 flex-col gap-1.5">
+20 -41
View File
@@ -41,7 +41,7 @@ import { InlineView, SurfaceScope } from "@/components/surface/surface-scope";
import { cn } from "@/lib/utils";
import {
BetaBadge,
DownloadCount,
InstallCountFact,
PluginIconBox,
SourceBadge,
UnverifiedBadge,
@@ -952,12 +952,6 @@ function BrowseSection({
const [category, setCategory] = useState<string | null>(null);
const [registry, setRegistry] = useState<string | null>(null);
const [sort, setSort] = useState<SortKey>("popular");
const [installedChoice, setInstalledChoice] = useStoredChoice(
"pluginsTab.browseInstalled",
["hide", "show"],
"hide",
);
const showInstalled = installedChoice === "show";
const categories = useMemo(() => categoriesOf(plugins), [plugins]);
const registries = manager.registries;
const registryFilter = registries.some((entry) => entry.id === registry)
@@ -967,7 +961,6 @@ function BrowseSection({
const rows = sortPlugins(
plugins.filter(
(p) =>
(showInstalled || !p.installed) &&
matchesQuery(p, query) &&
(category === null || p.category === category) &&
(registryFilter === null || p.registryId === registryFilter),
@@ -975,9 +968,6 @@ function BrowseSection({
sort,
);
const allInstalledHidden =
!showInstalled && plugins.length > 0 && plugins.every((p) => p.installed);
const listColumns: DataColumn<PluginEntry>[] = [
{
key: "name",
@@ -1002,13 +992,16 @@ function BrowseSection({
),
},
{
key: "downloads",
header: t("plugins.manager.table.downloads"),
key: "installs",
header: t("plugins.manager.table.installs"),
width: "110px",
hideBelow: "lg",
cell: (p) => (
<span className="text-muted-foreground">
<DownloadCount count={p.downloads} />
<InstallCountFact
count={p.installCount}
source={p.installCountSource}
/>
</span>
),
},
@@ -1039,15 +1032,6 @@ function BrowseSection({
placeholder={t("plugins.manager.searchPlugins")}
>
<div className="ml-auto flex items-center gap-2">
<label className="flex items-center gap-1.5">
<span className="text-xs text-muted-foreground">
{t("plugins.manager.showInstalled")}
</span>
<FakeSwitch
checked={showInstalled}
onChange={(v) => setInstalledChoice(v ? "show" : "hide")}
/>
</label>
{registries.length > 1 && (
<Select
value={registryFilter ?? "__all"}
@@ -1103,23 +1087,15 @@ function BrowseSection({
)}
{rows.length === 0 ? (
allInstalledHidden ? (
<EmptyState
icon={Puzzle}
title={t("plugins.manager.allInstalled")}
hint={t("plugins.manager.allInstalledHint")}
/>
) : (
<EmptyState
icon={Puzzle}
title={t("plugins.manager.nothingHere")}
hint={
plugins.length === 0
? undefined
: t("plugins.manager.nothingHereHint")
}
/>
)
<EmptyState
icon={Puzzle}
title={t("plugins.manager.nothingHere")}
hint={
plugins.length === 0
? undefined
: t("plugins.manager.nothingHereHint")
}
/>
) : (
<PluginCollection
plugins={rows}
@@ -1172,7 +1148,10 @@ function BrowseCard({
{plugin.author && <span>{plugin.author}</span>}
{plugin.latestVersion && <span>v{plugin.latestVersion}</span>}
{plugin.category && <span>{plugin.category}</span>}
<DownloadCount count={plugin.downloads} />
<InstallCountFact
count={plugin.installCount}
source={plugin.installCountSource}
/>
</>
}
/>
+22 -7
View File
@@ -126,16 +126,31 @@ export function BetaBadge() {
);
}
/** How often the plugin's release files were downloaded. */
export function DownloadCount({ count }: { count: number | null }) {
/** Active installs when the registry has them, release downloads otherwise. */
export function InstallCountFact({
count,
source,
}: {
count: number | null;
source: string | null;
}) {
const { t } = useTranslation();
if (count === null || count <= 0) return null;
const active = source === "aggregate-telemetry";
return (
<span title={t("plugins.manager.count.downloadsHint")}>
{t("plugins.manager.count.downloads", {
count,
formatted: formatCount(count),
})}
<span
title={
active
? t("plugins.manager.count.activeHint")
: t("plugins.manager.count.downloadsHint")
}
>
{t(
active
? "plugins.manager.count.active"
: "plugins.manager.count.downloads",
{ count, formatted: formatCount(count) },
)}
</span>
);
}
+9 -5
View File
@@ -62,7 +62,8 @@ export interface PluginEntry {
inRegistry: boolean;
contributes: Record<string, unknown> | null;
publishedAt: string | null;
downloads: number | null;
installCount: number | null;
installCountSource: string | null;
source: PluginSource;
/** Installed from a file or folder with no registry signature behind it. */
unverified: boolean;
@@ -160,7 +161,8 @@ export function mergePlugins(
inRegistry: Boolean(entry),
contributes: (summary.contributes as Record<string, unknown>) ?? null,
publishedAt: latestPublished(entry?.versions ?? []),
downloads: entry?.downloads ?? null,
installCount: entry?.installCount ?? null,
installCountSource: entry?.installCountSource ?? null,
source: pluginSource(summary),
unverified: pluginSource(summary) === "unverified",
registryId: entry?.registryId ?? summary.registryId ?? null,
@@ -203,7 +205,8 @@ export function mergePlugins(
inRegistry: true,
contributes: null,
publishedAt: latestPublished(entry.versions),
downloads: entry.downloads ?? null,
installCount: entry.installCount ?? null,
installCountSource: entry.installCountSource ?? null,
source: entry.tier ?? "official",
unverified: false,
registryId: entry.registryId ?? "official",
@@ -243,7 +246,8 @@ export function uploadEntry(preview: PluginUploadPreview): PluginEntry {
inRegistry: false,
contributes: null,
publishedAt: null,
downloads: null,
installCount: null,
installCountSource: null,
source: "unverified",
unverified: true,
registryId: null,
@@ -266,7 +270,7 @@ export function sortPlugins(rows: PluginEntry[], key: SortKey): PluginEntry[] {
if (key === "popular") {
sorted.sort(
(a, b) =>
(b.downloads ?? -1) - (a.downloads ?? -1) ||
(b.installCount ?? -1) - (a.installCount ?? -1) ||
a.name.localeCompare(b.name),
);
} else if (key === "updated") {
+4
View File
@@ -489,6 +489,10 @@ export function CredentialEditorView({
? ""
: credForm.passphrase
}
onFocus={() => {
if (credForm.passphrase === "existing_key_password")
setCredField("passphrase", "");
}}
onChange={(e) => setCredField("passphrase", e.target.value)}
/>
</div>
+20
View File
@@ -1094,6 +1094,10 @@ export function HostEditor({
? ""
: form.password
}
onFocus={() => {
if (form.password === "existing_password")
setField("password", "");
}}
onChange={(e) => setField("password", e.target.value)}
/>
<PluginComponent
@@ -1207,6 +1211,10 @@ export function HostEditor({
? ""
: form.keyPassword
}
onFocus={() => {
if (form.keyPassword === "existing_key_password")
setField("keyPassword", "");
}}
onChange={(e) =>
setField("keyPassword", e.target.value)
}
@@ -1228,6 +1236,10 @@ export function HostEditor({
? ""
: form.password
}
onFocus={() => {
if (form.password === "existing_password")
setField("password", "");
}}
onChange={(e) =>
setField("password", e.target.value)
}
@@ -1365,6 +1377,10 @@ export function HostEditor({
? ""
: form.password
}
onFocus={() => {
if (form.password === "existing_password")
setField("password", "");
}}
onChange={(e) =>
setField("password", e.target.value)
}
@@ -1490,6 +1506,10 @@ export function HostEditor({
? ""
: form.sudoPassword
}
onFocus={() => {
if (form.sudoPassword === "existing_sudo_password")
setField("sudoPassword", "");
}}
onChange={(e) =>
setField("sudoPassword", e.target.value)
}
+1 -12
View File
@@ -79,7 +79,7 @@ import { useSidebarDragState } from "./hooks/useSidebarDragState";
export function SidebarTree({
children,
onOpenTab: openTab,
onOpenTab,
onEditHost,
onShareHost,
query: externalQuery = "",
@@ -125,16 +125,6 @@ export function SidebarTree({
rowFields?: HostRowFields;
}) {
const { t } = useTranslation();
const rootRef = useRef<HTMLDivElement>(null);
// Focus left on the clicked row sends the next keys to the host speed
// search instead of the session that just opened.
const onOpenTab: typeof openTab = (...args) => {
const active = document.activeElement;
if (active instanceof HTMLElement && rootRef.current?.contains(active)) {
active.blur();
}
openTab(...args);
};
const hostSettingPlugins = usePluginHostSections();
const hostSwitchPlugins = hostSettingPlugins.filter(
(plugin) => !!plugin.contributes?.settings?.host?.enableKey,
@@ -949,7 +939,6 @@ export function SidebarTree({
return (
<div
ref={rootRef}
className="relative flex flex-col flex-1 min-h-0"
onKeyDown={(event) => {
if (selectionMode || arrangeMode) return;
@@ -38,20 +38,6 @@ describe("getEmbeddedServerFailure", () => {
});
});
it("surfaces a database too old to open", async () => {
setElectronAPI({
isElectron: true,
getEmbeddedServerStatus: vi.fn().mockResolvedValue({
running: false,
failure: { reason: "old-database", port: null },
}),
});
await expect(getEmbeddedServerFailure()).resolves.toEqual({
reason: "old-database",
port: null,
});
});
it("surfaces a generic crash", async () => {
setElectronAPI({
isElectron: true,
@@ -28,7 +28,8 @@ const [plugin] = mergePlugins(
pinnedVersion: null,
autoUpdate: false,
bundled: false,
downloads: null,
installCount: null,
installCountSource: null,
},
],
);
+2 -14
View File
@@ -22,7 +22,8 @@ const plugin = {
capabilities: [],
contributes: {},
versions: [],
downloads: null,
installCount: null,
installCountSource: null,
};
vi.mock("@/plugins/use-plugins-manager", () => ({
@@ -73,19 +74,6 @@ describe("PluginsTab", () => {
expect(link.getAttribute("href")).toBe(docsUrl("communityRegistry"));
});
it("hides installed plugins in Browse until shown", async () => {
await renderTab();
fireEvent.click(screen.getByText(en.plugins.manager.tabs.browse));
expect(screen.queryByText("Demo Plugin")).toBeNull();
expect(screen.getByText(en.plugins.manager.allInstalled)).toBeTruthy();
fireEvent.click(screen.getByRole("switch"));
expect(screen.getByText("Demo Plugin")).toBeTruthy();
expect(localStorage.getItem("pluginsTab.browseInstalled")).toBe("show");
});
it("switches to a table and remembers it", async () => {
await renderTab();
expect(screen.queryByRole("table")).toBeNull();
+5 -4
View File
@@ -61,7 +61,8 @@ function entry(
pinnedVersion: null,
autoUpdate: false,
bundled: true,
downloads: null,
installCount: null,
installCountSource: null,
...overrides,
};
}
@@ -234,9 +235,9 @@ describe("popularity", () => {
const rows = mergePlugins(
[],
[
entry({ id: "a", name: "A", installed: false, downloads: 5 }),
entry({ id: "b", name: "B", installed: false, downloads: null }),
entry({ id: "c", name: "C", installed: false, downloads: 90 }),
entry({ id: "a", name: "A", installed: false, installCount: 5 }),
entry({ id: "b", name: "B", installed: false, installCount: null }),
entry({ id: "c", name: "C", installed: false, installCount: 90 }),
],
);
expect(sortPlugins(rows, "popular").map((r) => r.id)).toEqual([
@@ -23,9 +23,7 @@ vi.mock("@/sidebar/tree/FolderItem/FolderItem", () => ({
folderHostCount: () => 1,
}));
vi.mock("@/sidebar/tree/HostItem/HostItem", () => ({
HostItem: ({ onOpenTab }: { onOpenTab: (type: string) => void }) => (
<button onClick={() => onOpenTab("terminal")}>Host</button>
),
HostItem: () => <div>Host</div>,
}));
const observers: Array<{
@@ -163,45 +161,13 @@ it("finds a host inside a closed folder and opens the keyboard-selected match",
const search = view.getByLabelText("hosts.speedSearch");
expect(document.activeElement).toBe(search);
expect(view.container.querySelectorAll("[data-index]")).toHaveLength(3);
fireEvent.keyDown(search, { key: "ArrowDown" });
fireEvent.keyDown(search, { key: "Enter" });
expect(onOpenTab).toHaveBeenCalledWith(beta, "terminal", {
forceNewTab: false,
});
fireEvent.keyDown(search, { key: "Escape" });
expect(view.queryByLabelText("hosts.speedSearch")).toBeNull();
expect(view.container.querySelectorAll("[data-index]")).toHaveLength(1);
expect(document.activeElement).toBe(list);
fireEvent.keyDown(list, { key: "a" });
const again = view.getByLabelText("hosts.speedSearch");
fireEvent.keyDown(again, { key: "ArrowDown" });
fireEvent.keyDown(again, { key: "Enter" });
expect(onOpenTab).toHaveBeenCalledWith(beta, "terminal", {
forceNewTab: false,
});
// The opened session takes over the keyboard.
expect(view.queryByLabelText("hosts.speedSearch")).toBeNull();
expect(view.container.contains(document.activeElement)).toBe(false);
});
it("lets go of focus when a host opens, so typing reaches the session", () => {
const host = {
id: "1",
name: "alpha",
ip: "192.0.2.1",
username: "u",
} as Host;
const onOpenTab = vi.fn();
const view = render(
<SidebarTree
children={[{ name: "group", path: "group", children: [host] }]}
onOpenTab={onOpenTab}
onEditHost={vi.fn()}
selectionMode={false}
onToggleSelectionMode={vi.fn()}
/>,
);
const row = view.getByText("Host");
row.focus();
fireEvent.click(row);
expect(onOpenTab).toHaveBeenCalledWith(host, "terminal", undefined);
expect(document.activeElement).not.toBe(row);
fireEvent.keyDown(document.body, { key: "a" });
expect(view.queryByLabelText("hosts.speedSearch")).toBeNull();
});