Compare commits

..

53 Commits

Author SHA1 Message Date
bed3fe71f6 Try to fix crlf issue on Windows 2025-03-29 15:56:13 +08:00
34c5fa37b9 Change to package-lock.json 2025-03-29 15:49:52 +08:00
1e83d78c28 Switch back to npm 2025-03-29 15:46:05 +08:00
cdf13cebd0 Update node requirement 2025-03-29 15:24:55 +08:00
71e773ae9f Fix: configs.content syntax not supported despite being valid in Docker Compose 2.23.1+ (#740)
Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
2025-03-29 15:17:25 +08:00
74e9efd471 Update dependencies 2025-03-29 15:14:25 +08:00
d451e06e84 Update dependencies 2025-01-04 18:14:17 +08:00
a65a9f5549 fix bug 176: preserve YAML comments when reordering items by matching… (#685) 2024-12-31 15:43:17 +08:00
9b73e44cd9 Remove useless scrollbar (#642) 2024-12-31 15:41:15 +08:00
81818a19d1 Update dependencies 2024-12-26 16:22:24 +08:00
1372bd2ce1 Remove the tsx workaround as it had been fixed in upstream 2024-12-26 16:22:08 +08:00
01906205f0 1.5.x (#636) 2024-10-14 14:20:34 +08:00
28337c5430 Add ARMv7 for CI 2024-10-14 14:14:52 +08:00
5baf48db63 Also update ci's node version to 22 2024-10-14 00:53:24 +08:00
b2c8fdab75 Add Translation keys (#506) 2024-10-14 00:51:59 +08:00
e12525fa42 Pin node-pty-prebuilt-multiarch 2024-10-13 21:11:38 +08:00
3e3f67c6b7 Update css for terminal 2024-10-13 21:11:20 +08:00
020faa49d2 Merge branch 'master' into 1.5.X 2024-10-13 20:43:58 +08:00
df95d7ce9d Translations update from Kuma Weblate (#396) 2024-10-13 20:41:38 +08:00
7a2524c542 Translated using Weblate (Hungarian)
Currently translated at 100.0% (114 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/hu/
2024-10-13 12:40:45 +00:00
6ceaa70cdd Translated using Weblate (German)
Currently translated at 100.0% (114 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/de/
2024-10-13 12:40:45 +00:00
caea8996da Translated using Weblate (Hungarian)
Currently translated at 99.1% (113 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/hu/
2024-10-13 12:40:45 +00:00
39e3d5a07c Translated using Weblate (Ukrainian)
Currently translated at 100.0% (114 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/uk/
2024-10-13 12:40:45 +00:00
723afb5bc2 Translated using Weblate (Italian)
Currently translated at 100.0% (114 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/it/
2024-10-13 12:40:45 +00:00
3b3b3a7940 Translated using Weblate (Belarusian)
Currently translated at 100.0% (114 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/be/
2024-10-13 12:40:45 +00:00
f9309a0650 Added translation using Weblate (Belarusian) 2024-10-13 12:40:45 +00:00
54c2be7abe Translated using Weblate (Dutch)
Currently translated at 100.0% (114 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/nl/
2024-10-13 12:40:45 +00:00
48db1c73a8 Translated using Weblate (Polish)
Currently translated at 100.0% (114 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/pl/
2024-10-13 12:40:45 +00:00
88f696d9b1 Translated using Weblate (Slovenian)
Currently translated at 100.0% (114 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/sl/
2024-10-13 12:40:45 +00:00
f80cfca64b Translated using Weblate (Catalan)
Currently translated at 100.0% (114 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/ca/
2024-10-13 12:40:45 +00:00
1ddd70791a Translated using Weblate (Turkish)
Currently translated at 100.0% (114 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/tr/
2024-10-13 12:40:45 +00:00
5f01347d2f Translated using Weblate (Arabic)
Currently translated at 96.4% (110 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/ar/
2024-10-13 12:40:45 +00:00
04c9a8669d Translated using Weblate (Hungarian)
Currently translated at 100.0% (114 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/hu/
2024-10-13 12:40:45 +00:00
91b7c18c52 Translated using Weblate (Spanish)
Currently translated at 100.0% (114 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/es/
2024-10-13 12:40:45 +00:00
9cef4ad9ee Translated using Weblate (Irish)
Currently translated at 100.0% (114 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/ga/
2024-10-13 12:40:45 +00:00
e7dd099f17 Added translation using Weblate (Irish) 2024-10-13 12:40:45 +00:00
d27fd2919b Translated using Weblate (Danish)
Currently translated at 100.0% (114 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/da/
2024-10-13 12:40:45 +00:00
e2f5796470 Translated using Weblate (Portuguese)
Currently translated at 100.0% (114 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/pt/
2024-10-13 12:40:45 +00:00
88f26f53c5 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (114 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/pt_BR/
2024-10-13 12:40:45 +00:00
ccd9d96227 Translated using Weblate (Thai)
Currently translated at 100.0% (114 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/th/
2024-10-13 12:40:45 +00:00
a8dcfe4ccd Translated using Weblate (Norwegian Bokmål)
Currently translated at 27.1% (31 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/nb_NO/
2024-10-13 12:40:45 +00:00
941ec0056a Translated using Weblate (Indonesian)
Currently translated at 100.0% (114 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/id/
2024-10-13 12:40:45 +00:00
1bb6f2532c Translated using Weblate (Thai)
Currently translated at 100.0% (114 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/th/
2024-10-13 12:40:45 +00:00
6fb24adc66 Translated using Weblate (Swedish)
Currently translated at 100.0% (114 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/sv/
2024-10-13 12:40:45 +00:00
c4fe952121 Translated using Weblate (Arabic)
Currently translated at 92.9% (106 of 114 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/ar/
2024-10-13 12:40:45 +00:00
59bfe79c40 Added translation using Weblate (Norwegian Bokmål) 2024-10-13 12:40:45 +00:00
9e89f49e38 Fixed: An agent do not disconnect correctly after removed (#617) 2024-10-13 20:40:40 +08:00
19beb02b1e Update to Node.js 22 from 18, as the upstream cpu 100% issues has been fixed. 2024-10-13 20:36:04 +08:00
9dd68372c2 Update dependencies 2024-10-13 20:20:47 +08:00
109222f024 fix default compose version obsolete (#507) 2024-05-01 11:20:13 +08:00
5ad42a6dab docker compose version is obsolete (#473) 2024-04-20 12:47:20 +08:00
74c8baef93 Update json-yaml-validate to latest version (#446) 2024-03-13 16:28:02 +08:00
c7ea2f9ee9 Added Irish language (#425) 2024-02-12 13:08:14 +08:00
48 changed files with 11021 additions and 5849 deletions

View File

@ -14,50 +14,31 @@ jobs:
ci:
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest, ARM64]
node: [18.17.1] # Can be changed
os: [ubuntu-latest, windows-latest, macos-latest, ARM, ARM64]
node: [22] # Can be changed
runs-on: ${{ matrix.os }}
steps:
- name: Checkout Code
run: | # Mainly for Windows
git config --global core.autocrlf false
git config --global core.eol lf
uses: actions/checkout@v4
- run: git config --global core.autocrlf false # Mainly for Windows
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: ${{matrix.node}}
- uses: pnpm/action-setup@v2
name: Install pnpm
with:
version: 8
run_install: false
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
run: npm install
- name: Lint
run: pnpm run lint
run: npm run lint
- name: Check Typescript
run: pnpm run check-ts
run: npm run check-ts
- name: Build
run: pnpm run build:frontend
run: npm run build:frontend
# more things can be add later like tests etc..

View File

@ -16,27 +16,5 @@ jobs:
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
name: Install pnpm
with:
version: 8
run_install: false
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Close Incorrect Issue
run: node extra/close-incorrect-issue.js ${{ secrets.GITHUB_TOKEN }} ${{ github.event.issue.number }} ${{ github.event.issue.user.login }}

View File

@ -17,11 +17,11 @@ jobs:
json-yaml-validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: json-yaml-validate
id: json-yaml-validate
uses: GrantBirki/json-yaml-validate@v1.3.0
uses: GrantBirki/json-yaml-validate@v2.6.1
with:
comment: "false" # enable comment mode
exclude_file: ".github/config/exclude.txt" # gitignore style file for exclusions

View File

@ -58,8 +58,7 @@ I personally do not like something that requires so many configurations before y
## Tools
- [`Node.js`](https://nodejs.org/) >= 20
- [`pnpm`](https://pnpm.io/)
- [`Node.js`](https://nodejs.org/) >= 22.14.0
- [`git`](https://git-scm.com/)
- IDE that supports [`ESLint`](https://eslint.org/) and EditorConfig (I am using [`IntelliJ IDEA`](https://www.jetbrains.com/idea/))
- A SQLite GUI tool (f.ex. [`SQLite Expert Personal`](https://www.sqliteexpert.com/download.html) or [`DBeaver Community`](https://dbeaver.io/download/))
@ -67,14 +66,14 @@ I personally do not like something that requires so many configurations before y
## Install Dependencies for Development
```bash
pnpm install
npm install
```
## Dev Server
```
pnpm run dev:frontend
pnpm run dev:backend
npm run dev:frontend
npm run dev:backend
```
## Backend Dev Server
@ -94,7 +93,7 @@ You can use Vue.js devtools Chrome extension for debugging.
### Build the frontend
```bash
pnpm run build
npm run build
```
## Database Migration
@ -117,7 +116,7 @@ Both frontend and backend share the same package.json. However, the frontend dep
Should only be done by the maintainer.
```bash
pnpm update
npm update
````
It should update the patch release version only.

View File

@ -98,6 +98,8 @@ export class AgentManager {
if (bean) {
await R.trash(bean);
let endpoint = bean.endpoint;
this.disconnect(endpoint);
this.sendAgentList();
delete this.agentSocketList[endpoint];
} else {
throw new Error("Agent not found");

View File

@ -17,6 +17,7 @@ export class DockerSocketHandler extends AgentSocketHandler {
callbackResult({
ok: true,
msg: "Deployed",
msgi18n: true,
}, callback);
stack.joinCombinedTerminal(socket);
} catch (e) {
@ -30,7 +31,8 @@ export class DockerSocketHandler extends AgentSocketHandler {
await this.saveStack(server, name, composeYAML, composeENV, isAdd);
callbackResult({
ok: true,
"msg": "Saved"
msg: "Saved",
msgi18n: true,
}, callback);
server.sendStackList();
} catch (e) {
@ -56,7 +58,8 @@ export class DockerSocketHandler extends AgentSocketHandler {
server.sendStackList();
callbackResult({
ok: true,
msg: "Deleted"
msg: "Deleted",
msgi18n: true,
}, callback);
} catch (e) {
@ -94,7 +97,8 @@ export class DockerSocketHandler extends AgentSocketHandler {
server.sendStackList();
callbackResult({
ok: true,
msg: "Updated"
msg: "Updated",
msgi18n: true,
}, callback);
} catch (e) {
callbackError(e, callback);
@ -114,7 +118,8 @@ export class DockerSocketHandler extends AgentSocketHandler {
await stack.start(socket);
callbackResult({
ok: true,
msg: "Started"
msg: "Started",
msgi18n: true,
}, callback);
server.sendStackList();
@ -138,7 +143,8 @@ export class DockerSocketHandler extends AgentSocketHandler {
await stack.stop(socket);
callbackResult({
ok: true,
msg: "Stopped"
msg: "Stopped",
msgi18n: true,
}, callback);
server.sendStackList();
} catch (e) {
@ -159,7 +165,8 @@ export class DockerSocketHandler extends AgentSocketHandler {
await stack.restart(socket);
callbackResult({
ok: true,
msg: "Restarted"
msg: "Restarted",
msgi18n: true,
}, callback);
server.sendStackList();
} catch (e) {
@ -180,7 +187,8 @@ export class DockerSocketHandler extends AgentSocketHandler {
await stack.update(socket);
callbackResult({
ok: true,
msg: "Updated"
msg: "Updated",
msgi18n: true,
}, callback);
server.sendStackList();
} catch (e) {
@ -201,7 +209,8 @@ export class DockerSocketHandler extends AgentSocketHandler {
await stack.down(socket);
callbackResult({
ok: true,
msg: "Downed"
msg: "Downed",
msgi18n: true,
}, callback);
server.sendStackList();
} catch (e) {

View File

@ -236,42 +236,63 @@ export function copyYAMLComments(doc : Document, src : Document) {
/**
* Copy yaml comments from srcItems to items
* Typescript is super annoying here, so I have to use any here
* TODO: Since comments are belong to the array index, the comments will be lost if the order of the items is changed or removed or added.
* Attempts to preserve comments by matching content rather than just array indices
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function copyYAMLCommentsItems(items : any, srcItems : any) {
function copyYAMLCommentsItems(items: any, srcItems: any) {
if (!items || !srcItems) {
return;
}
// First pass - try to match items by their content
for (let i = 0; i < items.length; i++) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const item : any = items[i];
const item: any = items[i];
// Try to find matching source item by content
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const srcItem : any = srcItems[i];
const srcIndex = srcItems.findIndex((srcItem: any) =>
JSON.stringify(srcItem.value) === JSON.stringify(item.value) &&
JSON.stringify(srcItem.key) === JSON.stringify(item.key)
);
if (!srcItem) {
continue;
}
if (srcIndex !== -1) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const srcItem: any = srcItems[srcIndex];
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const nextSrcItem: any = srcItems[srcIndex + 1];
if (item.key && srcItem.key) {
item.key.comment = srcItem.key.comment;
item.key.commentBefore = srcItem.key.commentBefore;
}
if (item.key && srcItem.key) {
item.key.comment = srcItem.key.comment;
item.key.commentBefore = srcItem.key.commentBefore;
}
if (srcItem.comment) {
item.comment = srcItem.comment;
}
if (srcItem.comment) {
item.comment = srcItem.comment;
}
if (item.value && srcItem.value) {
if (typeof item.value === "object" && typeof srcItem.value === "object") {
item.value.comment = srcItem.value.comment;
item.value.commentBefore = srcItem.value.commentBefore;
// Handle comments between array items
if (nextSrcItem && nextSrcItem.commentBefore) {
if (items[i + 1]) {
items[i + 1].commentBefore = nextSrcItem.commentBefore;
}
}
if (item.value.items && srcItem.value.items) {
copyYAMLCommentsItems(item.value.items, srcItem.value.items);
// Handle trailing comments after array items
if (srcItem.value && srcItem.value.comment) {
if (item.value) {
item.value.comment = srcItem.value.comment;
}
}
if (item.value && srcItem.value) {
if (typeof item.value === "object" && typeof srcItem.value === "object") {
item.value.comment = srcItem.value.comment;
item.value.commentBefore = srcItem.value.commentBefore;
if (item.value.items && srcItem.value.items) {
copyYAMLCommentsItems(item.value.items, srcItem.value.items);
}
}
}
}

View File

@ -1,4 +1,3 @@
version: "3.8"
services:
dockge:
image: louislam/dockge:1

View File

@ -1,7 +1,4 @@
# Due to the bug of #145, Node.js's version cannot be changed, unless upstream is fixed.
FROM node:18.17.1-bookworm-slim
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
FROM node:22-bookworm-slim
RUN apt update && apt install --yes --no-install-recommends \
curl \
ca-certificates \
@ -20,5 +17,4 @@ RUN apt update && apt install --yes --no-install-recommends \
docker-ce-cli \
docker-compose-plugin \
&& rm -rf /var/lib/apt/lists/* \
&& npm install pnpm -g \
&& pnpm install -g tsx
&& npm install -g tsx

View File

@ -9,8 +9,8 @@ FROM louislam/dockge:build-healthcheck AS build_healthcheck
FROM louislam/dockge:base AS build
WORKDIR /app
COPY --chown=node:node ./package.json ./package.json
COPY --chown=node:node ./pnpm-lock.yaml ./pnpm-lock.yaml
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile
COPY --chown=node:node ./package-lock.json ./package-lock.json
RUN npm ci
############################################
# ⭐ Main Image
@ -22,14 +22,21 @@ COPY --from=build /app/node_modules /app/node_modules
COPY --chown=node:node . .
RUN mkdir ./data
# It is just for safe, as by default, it is disabled in the latest Node.js now.
# Read more:
# - https://github.com/sagemathinc/cocalc/issues/6963
# - https://github.com/microsoft/node-pty/issues/630#issuecomment-1987212447
ENV UV_USE_IO_URING=0
VOLUME /app/data
EXPOSE 5001
HEALTHCHECK --interval=60s --timeout=30s --start-period=60s --retries=5 CMD extra/healthcheck
ENTRYPOINT ["/usr/bin/dumb-init", "--"]
CMD ["bash", "-c", "node ./extra/clean-tsx-tmp.js && tsx ./backend/index.ts"]
CMD ["tsx", "./backend/index.ts"]
############################################
# Mark as Nightly
############################################
FROM release AS nightly
RUN pnpm run mark-as-nightly
RUN npm run mark-as-nightly

View File

@ -1,13 +0,0 @@
/*
* This script is used to clean up the tmp directory.
* A workaround for https://github.com/louislam/dockge/issues/353
*/
import * as fs from "fs";
try {
fs.rmSync("/tmp/tsx-0", {
recursive: true,
});
} catch (e) {
}

View File

@ -1,4 +1,3 @@
version: "3.8"
services:
mariadb:
image: mariadb:latest

View File

@ -1,4 +1,3 @@
version: '3.8'
services:
nginx-proxy-manager:
image: 'jc21/nginx-proxy-manager:latest'

View File

@ -1,4 +1,3 @@
version: '3.8'
services:
uptime-kuma:
image: louislam/uptime-kuma:1

View File

@ -4,7 +4,7 @@
<ul v-if="isArrayInited" class="list-group">
<li v-for="(value, index) in array" :key="index" class="list-group-item">
<select v-model="array[index]" class="no-bg domain-input">
<option value="">Select a network...</option>
<option value="">{{ $t(`Select a network...`) }}</option>
<option v-for="option in options" :key="option" :value="option">{{ option }}</option>
</select>

View File

@ -116,7 +116,7 @@
</label>
<div v-if="networkList.length === 0 && service.networks && service.networks.length > 0" class="text-warning mb-3">
No networks available. You need to add internal networks or enable external networks in the right side first.
{{ $t("NoNetworksAvailable") }}
</div>
<ArraySelect name="networks" :display-name="$t('network')" placeholder="Network Name" :options="networkList" />
@ -127,7 +127,7 @@
<label class="form-label">
{{ $t("dependsOn") }}
</label>
<ArrayInput name="depends_on" :display-name="$t('dependsOn')" placeholder="Container Name" />
<ArrayInput name="depends_on" :display-name="$t('dependsOn')" :placeholder="$t(`containerName`)" />
</div>
</div>
</transition>

View File

@ -3,7 +3,7 @@
<h5>{{ $t("Internal Networks") }}</h5>
<ul class="list-group">
<li v-for="(networkRow, index) in networkList" :key="index" class="list-group-item">
<input v-model="networkRow.key" type="text" class="no-bg domain-input" placeholder="Network name..." />
<input v-model="networkRow.key" type="text" class="no-bg domain-input" :placeholder="$t(`Network name...`)" />
<font-awesome-icon icon="times" class="action remove ms-2 me-3 text-danger" @click="remove(index)" />
</li>
</ul>

View File

@ -247,13 +247,12 @@ export default {
<style scoped lang="scss">
.main-terminal {
height: 100%;
overflow-x: scroll;
}
</style>
<style lang="scss">
.terminal {
padding: 10px 15px;
background-color: black !important;
height: 100%;
}
</style>

View File

@ -47,7 +47,7 @@
<input
v-model="settings.primaryHostname"
class="form-control"
placeholder="(Unset: Follow current hostname)"
:placeholder="$t(`CurrentHostname`)"
/>
<button class="btn btn-outline-primary" type="button" @click="autoGetPrimaryHostname">
{{ $t("autoGet") }}

View File

@ -31,6 +31,7 @@ const languageList = {
"vi": "Tiếng Việt",
"hu": "Magyar",
"ca": "Català",
"ga": "Gaeilge",
};
let messages = {

View File

@ -35,7 +35,7 @@
"restartPolicyAlways": "دائماً",
"restartPolicyOnFailure": "عند الفشل",
"restartPolicyNo": "لا",
"environmentVariable": "متغير البيئة | متغيرات البيئة",
"environmentVariable": "متغير | متغيرات",
"restartPolicy": "سياسة إعادة التشغيل",
"containerName": "اسم الحاوية",
"port": "منفذ | منافذ",
@ -98,5 +98,16 @@
"url": "رابط | روابط",
"extra": "إضافات",
"reverseProxyMsg1": "هل تستدخم خادم عكسي؟",
"connecting...": "جاري الاتصال بخادم المقبس…"
"connecting...": "جاري الاتصال بخادم المقبس…",
"newUpdate": "تحديث جديد",
"currentEndpoint": "السياق: الوكيل الحالي",
"dockgeURL": "رابط Dockge (مثلا http://127.0.0.1:5001)",
"agentOnline": "متصل",
"agentOffline": "غير متصل",
"connecting": "جاري الإتصال",
"connect": "ارتبط",
"dockgeAgent": "سيرفر Dockge",
"removeAgent": "حذف الوكيل",
"removeAgentMsg": "هل انت متأكد من حذف هذا الوكيل؟",
"LongSyntaxNotSupported": "كتابة النصوص المدعومة غير المدعومة هنا. الرجاء استخدام محرر YAML."
}

116
frontend/src/lang/be.json Normal file
View File

@ -0,0 +1,116 @@
{
"active": "акт.",
"LongSyntaxNotSupported": "Доўгі сінтаксіс тут не падтрымліваецца. Выкарыстоўвайце рэдактар YAML.",
"removeAgentMsg": "Вы ўпэўнены, што хочаце выдаліць гэтага агента?",
"languageName": "Беларуская",
"Create your admin account": "Стварыце ўліковы запіс адміністратара",
"authIncorrectCreds": "Няправільны лагін ці пароль.",
"PasswordsDoNotMatch": "Паролі не супадаюць.",
"Repeat Password": "Паўтарыце пароль",
"Create": "Стварыць",
"signedInDisp": "Аўтарызаваны як {0}",
"signedInDispDisabled": "Аўтарызацыя выключана.",
"home": "Галоўная",
"console": "Кансоль",
"registry": "Рэестр (Registry)",
"compose": "Compose",
"addFirstStackMsg": "Стварыце свой першы стэк!",
"stackName": "Назва стэка",
"deployStack": "Разгарнуць",
"deleteStack": "Выдаліць",
"stopStack": "Спыніць",
"restartStack": "Перазапусціць",
"updateStack": "Абнавіць",
"startStack": "Запусціць",
"downStack": "Спыніць і дэактываваць",
"editStack": "Рэдагаваць",
"discardStack": "Скасаваць",
"saveStackDraft": "Захаваць",
"notAvailableShort": "Н/Д",
"deleteStackMsg": "Вы ўпэўнены, што хочаце выдаліць гэты стэк?",
"stackNotManagedByDockgeMsg": "Дадзены стэк не кіруецца Dockge.",
"primaryHostname": "Імя хоста",
"general": "Агульныя",
"container": "Кантэйнер | Кантэйнеры",
"scanFolder": "Сканаваць папку стэкаў",
"dockerImage": "Вобраз",
"restartPolicyUnlessStopped": "Пакуль не будзе спынены",
"restartPolicyAlways": "Заўсёды",
"restartPolicyOnFailure": "Пры падзенні",
"restartPolicyNo": "Ніколі",
"environmentVariable": "Зменная асяроддзя | Зменныя асяроддзя",
"restartPolicy": "Палітыка рэстарту",
"containerName": "Імя кантэйнера",
"port": "Порт | Порты",
"volume": "Сховішча | Сховішчы",
"network": "Сетка | Сеткі",
"dependsOn": "Залежнасць кантэйнера | Залежнасці кантэйнера",
"addListItem": "Дадаць {0}",
"deleteContainer": "Выдаліць",
"addContainer": "Дадаць кантэйнер",
"addNetwork": "Дадаць сетку",
"disableauth.message1": "Вы ўпэўнены, што хочаце <strong>адключыць аўтэнтыфікацыю</strong>?",
"Show update if available": "Паказаць абнаўленне, калі яно даступна",
"Also check beta release": "Атрымліваць бэта-версіі",
"disableauth.message2": "Гэта прызначана для сцэнарыяў, <strong>калі вы збіраецеся выкарыстоўваць староннюю аўтэнтыфікацыю</strong> перад Dockge, напрыклад, Cloudflare Access, Authelia або іншыя механізмы аўтэнтыфікацыі.",
"passwordNotMatchMsg": "Паўторны пароль не супадае.",
"autoGet": "Аўта",
"add": "Дадаць",
"Edit": "Змяніць",
"applyToYAML": "Ужыць да YAML",
"createExternalNetwork": "Стварыць",
"addInternalNetwork": "Дадаць",
"Save": "Захаваць",
"Language": "Мова",
"Current User": "Бягучы карыстальнік",
"Change Password": "Змяніць пароль",
"Current Password": "Бягучы пароль",
"New Password": "Новы пароль",
"Repeat New Password": "Паўтарыце новы пароль",
"Update Password": "Абнавіць пароль",
"Advanced": "Пашыраныя",
"Please use this option carefully!": "Выкарыстоўвайце гэтую опцыю асцярожна!",
"Enable Auth": "Уключыць аўтэнтыфікацыю",
"Disable Auth": "Адключыць аўтэнтыфікацыю",
"I understand, please disable": "Я разумею, адключыце",
"Leave": "Пакінуць",
"Frontend Version": "Версія знешняга інтэрфейсу",
"Check Update On GitHub": "Праверыць абнаўленні на GitHub",
"Remember me": "Запомніць мяне",
"Login": "Лагін",
"Username": "Імя карыстальніка",
"Password": "Пароль",
"Settings": "Налады",
"Logout": "Выйсці",
"Lowercase only": "Толькі ніжні рэгістр",
"Convert to Compose": "Пераўтварыць у Compose",
"Docker Run": "Docker Run",
"exited": "спын.",
"inactive": "неакт.",
"Appearance": "Знешні выгляд",
"Security": "Бяспека",
"About": "Аб праграме",
"Allowed commands:": "Дазволеныя каманды:",
"Internal Networks": "Унутраныя сеткі",
"External Networks": "Знешнія сеткі",
"No External Networks": "Няма знешніх сетак",
"reverseProxyMsg1": "Выкарыстоўваеце зваротны проксі?",
"reverseProxyMsg2": "Праверце, як наладзіць яго для WebSocket",
"Cannot connect to the socket server.": "Не ўдалося падключыцца да сокет-сервера.",
"reconnecting...": "Перападключэнне…",
"connecting...": "Падключэнне да сокет-сервера…",
"url": "URL-адрас | URL-адрасы",
"extra": "Дадаткова",
"newUpdate": "Даступна абнаўленне",
"dockgeAgent": "Агент Dockge | Агенты Dockge",
"currentEndpoint": "Бягучы",
"dockgeURL": "URL-адрас Dockge (напрыклад: http://127.0.0.1:5001)",
"agentOnline": "У сетцы",
"agentOffline": "Не ў сетцы",
"connecting": "Падключэнне",
"connect": "Падключыць",
"addAgent": "Дадаць Агента",
"agentAddedSuccessfully": "Агент паспяхова дададзены.",
"agentRemovedSuccessfully": "Агент паспяхова выдалены.",
"removeAgent": "Выдаліць агента"
}

View File

@ -111,5 +111,6 @@
"Please use this option carefully!": "Si us plau, utilitzeu aquesta opció amb cura!",
"Enable Auth": "Habilitar autenticació",
"I understand, please disable": "Ho entenc, si us plau deshabilita",
"Password": "Contrasenya"
"Password": "Contrasenya",
"LongSyntaxNotSupported": "La sintaxi llarga no està suportada aquí. Si us plau, fes servir l'editor YAML."
}

View File

@ -111,5 +111,6 @@
"agentAddedSuccessfully": "Agent succesfuld tilføjet.",
"agentRemovedSuccessfully": "Agent succesfuld fjernet.",
"removeAgent": "Fjern agent",
"removeAgentMsg": "Er du sikker på at du vil fjerne denne agent?"
"removeAgentMsg": "Er du sikker på at du vil fjerne denne agent?",
"LongSyntaxNotSupported": "Langt syntaks er ikke understøttet her. Forsøg venligst med YAML-editoren."
}

View File

@ -94,7 +94,7 @@
"Cannot connect to the socket server.": "Keine Verbindung zum Socket Server.",
"reverseProxyMsg1": "Wird ein Reverse Proxy genutzt?",
"reconnecting...": "Erneuter Verbindungsaufbau…",
"downStack": "Stopp & Inaktiv",
"downStack": "Stoppen & Deaktivieren",
"extra": "Extra",
"url": "URL / URLs",
"reverseProxyMsg2": "Lerne wie dieser für WebSockets zu konfigurieren ist.",

View File

@ -95,6 +95,7 @@
"reverseProxyMsg1": "Using a Reverse Proxy?",
"reverseProxyMsg2": "Check how to config it for WebSocket",
"Cannot connect to the socket server.": "Cannot connect to the socket server.",
"Lost connection to the socket server. Reconnecting...": "Lost connection to the socket server. Reconnecting...",
"reconnecting...": "Reconnecting…",
"connecting...": "Connecting to the socket server…",
"url": "URL | URLs",
@ -112,5 +113,20 @@
"agentRemovedSuccessfully": "Agent removed successfully.",
"removeAgent": "Remove Agent",
"removeAgentMsg": "Are you sure you want to remove this agent?",
"LongSyntaxNotSupported": "Long syntax is not supported here. Please use the YAML editor."
"LongSyntaxNotSupported": "Long syntax is not supported here. Please use the YAML editor.",
"Saved": "Saved",
"Deployed": "Deployed",
"Deleted": "Deleted",
"Updated": "Updated",
"Started": "Started",
"Stopped": "Stopped",
"Restarted": "Restarted",
"Downed": "Downed",
"Switch to sh": "Switch to sh",
"terminal": "Terminal",
"CurrentHostname": "(Unset: Follow current hostname)",
"New Container Name...": "New Container Name...",
"Network name...": "Network name...",
"Select a network...": "Select a network...",
"NoNetworksAvailable": "No networks available. You need to add internal networks or enable external networks in the right side first."
}

View File

@ -1,5 +1,5 @@
{
"languageName": "Español",
"languageName": "Inglés",
"Create your admin account": "Crea tu cuenta de administrador",
"authIncorrectCreds": "Nombre de usuario o contraseña incorrectos.",
"PasswordsDoNotMatch": "Las contraseñas no coinciden.",
@ -98,7 +98,7 @@
"Cannot connect to the socket server.": "No se puede conectar al servidor del socket.",
"reconnecting...": "Reconectando…",
"connecting...": "Conectando al servidor del socket…",
"url": "URL | URLs",
"url": "Dirección URL | Direcciones URLs",
"extra": "Addicional",
"currentEndpoint": "Corriente",
"dockgeURL": "URL de Dockge (ej. http://127.0.0.1:5001)",
@ -111,5 +111,6 @@
"removeAgentMsg": "Estás seguro que deseas remover este agente?",
"dockgeAgent": "Agentes Dockge",
"connecting": "Conectando",
"agentRemovedSuccessfully": "Agente removido satisfactoriamente."
"agentRemovedSuccessfully": "Agente removido satisfactoriamente.",
"LongSyntaxNotSupported": "Aquí no hay soporte para la sintaxis larga. Por favor use el editor de YAML."
}

116
frontend/src/lang/ga.json Normal file
View File

@ -0,0 +1,116 @@
{
"Create your admin account": "Cruthaigh do chuntas riaracháin",
"authIncorrectCreds": "Ainm úsáideora nó pasfhocal mícheart.",
"PasswordsDoNotMatch": "Níl na pasfhocail comhthráthacha.",
"Repeat Password": "Athscríobh an Pasfhocal",
"Create": "Cruthaigh",
"signedInDisp": "Sínithe isteach mar {0}",
"languageName": "Gaeilge",
"console": "Consól",
"registry": "Clárlann",
"compose": "Scríobh",
"stackName": "Ainm an Staca",
"deployStack": "Deighil",
"deleteStack": "Scrios",
"stopStack": "Stad",
"restartStack": "Atosaigh",
"updateStack": "Nuashonraigh",
"startStack": "Tosaigh",
"downStack": "Stad & Neamhghníomhach",
"editStack": "Cuir in Eagar",
"discardStack": "Caith amach",
"saveStackDraft": "Sábháil",
"deleteStackMsg": "An bhfuil tú cinnte go bhfuil tú ag iarraidh an staca seo a scriosadh?",
"primaryHostname": "Príomhainm óstáin",
"general": "Ginearálta",
"container": "Coimeádán | Coimeádáin",
"scanFolder": "Scanáil Fillteáin na dStacanna",
"dockerImage": "Íomha",
"restartPolicyUnlessStopped": "Mura Stadfar",
"restartPolicyAlways": "I gcónaí",
"restartPolicyOnFailure": "Ar theip",
"restartPolicyNo": "Níl",
"environmentVariable": "Athróg Timpeallacht | Athróga Timpeallacht",
"restartPolicy": "Polasaí Atosaigh",
"port": "Port | Portanna",
"volume": "Toirt | Toirteanna",
"network": "Líonra | Líonraí",
"dependsOn": "Spleáchas Coimeádán | Spleáchais Coimeádán",
"addListItem": "Cuir {0}",
"deleteContainer": "Scrios",
"addContainer": "Cuir Coimeádán leis",
"addNetwork": "Cuir Líonra leis",
"add": "Cuir",
"Edit": "Cuir in eagar",
"applyToYAML": "Déan iarratas ar YAML",
"createExternalNetwork": "Cruthaigh",
"disableauth.message1": "An bhfuil tú cinnte gur mhaith leat <strong>fíordheimhniú a dhíchumasú</strong>?",
"passwordNotMatchMsg": "Ní hionann an pasfhocal athfhillteach.",
"autoGet": "Faigh Uathoibríoch",
"addInternalNetwork": "Cuir",
"Save": "Sábháil",
"Language": "Teanga",
"Current User": "Úsáideoir Reatha",
"New Password": "Pasfhocal Nua",
"Current Password": "Pasfhocal Reatha",
"Change Password": "Athraigh do Phasfhocal",
"Repeat New Password": "Déan Pasfhocal Nua arís",
"Update Password": "Nuashonraigh Pasfhocal",
"Advanced": "Ardleibhéal",
"Please use this option carefully!": "Bain úsáid as an rogha seo go cúramach, le do thoil!",
"Enable Auth": "Cumasaigh Auth",
"Disable Auth": "Auth dhíchumasú",
"I understand, please disable": "Tuigim, le do thoil, múch",
"Leave": "Fág",
"Frontend Version": "Leagan Frontend",
"Check Update On GitHub": "Seiceáil an Nuashonrú ar GitHub",
"Show update if available": "Taispeáin an Nuashonrú más ar fáil",
"Also check beta release": "Seiceáil an scaoileadh beta freisin",
"Remember me": "Cuimhnigh orm",
"Login": "Logáil isteach",
"Username": "Ainm úsáideora",
"Password": "Pasfhocal",
"Logout": "Logáil Amach",
"Lowercase only": "Cás íochtair amháin",
"Convert to Compose": "Tiontaigh go Compóidh",
"Docker Run": "Docker Rith",
"exited": "scoir",
"inactive": "neamhghníomhach",
"Appearance": "Dealramh",
"Security": "Slándáil",
"About": "Maidir le",
"Allowed commands:": "Orduithe ceadaithe:",
"Internal Networks": "Líonraí Inmheánacha",
"External Networks": "Líonraí Seachtracha",
"No External Networks": "Gan Líonraí Seachtracha",
"reverseProxyMsg1": "Ag Úsáid Seachfhreastalaí Réabhlóideach?",
"reverseProxyMsg2": "Seiceáil conas é a shocraigh don WebSocket",
"Cannot connect to the socket server.": "Ní féidir ceangal a dhéanamh leis an freastalaí soicéad.",
"reconnecting...": "Ag athcheangal…",
"connecting...": "Ag nascadh leis an freastalaí soicéad…",
"url": "URL | URLanna",
"extra": "Breise",
"newUpdate": "Nuashonrú Nua",
"dockgeAgent": "Aighne Dockge | Aighnithe Dockge",
"currentEndpoint": "Reatha",
"dockgeURL": "Dockge URL (e.g. http://127.0.0.1:5001)",
"agentOnline": "Ar Líne",
"agentOffline": "As Líne",
"connecting": "Ag Nascadh",
"connect": "Ceangail",
"addAgent": "Cuir Aighne",
"agentAddedSuccessfully": "Aighne curtha leis go rathúil.",
"agentRemovedSuccessfully": "Aighne bhaint as go rathúil.",
"removeAgent": "Bain Aighne",
"removeAgentMsg": "An bhfuil tú cinnte gur mhaith leat an t-aighne seo a bhaint?",
"LongSyntaxNotSupported": "Ní thacaítear leis an níochán fada anseo. Úsáid an Eagarthóir YAML, le do thoil.",
"signedInDispDisabled": "Auth Díchumasaithe.",
"home": "Abhaile",
"addFirstStackMsg": "Scríobh do chéad stac!",
"notAvailableShort": "Níl ar Fáil",
"stackNotManagedByDockgeMsg": "Ní bhainistítear an staca seo ag Dockge.",
"containerName": "Ainm na gCoimeádán",
"disableauth.message2": "Tá sé deartha do chúinsí <strong>ina bhfuil sé beartaithe agat tríú páirtí athbhreithniú a chur i bhfeidhm</strong> os comhair Dockge cosúil le Rochtain Cloudflare, Authelia nó múnlaí deimhniú eile.",
"Settings": "Socruithe",
"active": "gníomhach"
}

View File

@ -111,5 +111,6 @@
"Cannot connect to the socket server.": "A Socket csatlakozás nem elérhető.",
"connecting...": "Csatlakozás a socket szerver-hez…",
"url": "URL | URL-ek",
"dockgeURL": "Dockge URL (pl. http://127.0.0.1:5001)"
"dockgeURL": "Dockge URL (pl. http://127.0.0.1:5001)",
"LongSyntaxNotSupported": "A hosszú szintaxis itt nem támogatott. Használja a YAML szerkesztőt."
}

View File

@ -111,5 +111,6 @@
"currentEndpoint": "Sekarang",
"agentOnline": "Terhubung",
"agentOffline": "Terputus",
"removeAgentMsg": "Apakah anda yakin untuk menghapus agen ini?"
"removeAgentMsg": "Apakah anda yakin untuk menghapus agen ini?",
"LongSyntaxNotSupported": "Sintaks yang panjang tidak didukung di sini. Silakan gunakan editor YAML."
}

View File

@ -95,10 +95,10 @@
"reverseProxyMsg1": "Stai usando Reverse Proxy?",
"reverseProxyMsg2": "Verifica come configurarlo per il WebSocket",
"Cannot connect to the socket server.": "impossibile collegarsi al socket server",
"connecting...": "Connessione al server socket…",
"connecting...": "connettendosi al socket server…",
"extra": "Extra",
"reconnecting...": "Riconnessione…",
"url": "Indirizzo | Indirizzi",
"url": "URL | URLs",
"newUpdate": "Nuovo aggiornamento",
"dockgeAgent": "Agente Dockge | Agenti Dockge",
"currentEndpoint": "Corrente",
@ -111,5 +111,6 @@
"removeAgent": "Rimuovi Agente",
"removeAgentMsg": "Sei sicuro di voler rimuovere questo agente?",
"addAgent": "Aggungi Agente",
"agentAddedSuccessfully": "Agente aggiunto correttamente."
"agentAddedSuccessfully": "Agente aggiunto correttamente.",
"LongSyntaxNotSupported": "La sintassi lunga non è supportata qui. Utilizzare l'editor YAML."
}

View File

@ -0,0 +1,34 @@
{
"Create your admin account": "Lag din administrator konto",
"authIncorrectCreds": "Brukernavn eller passord stemmer ikke.",
"PasswordsDoNotMatch": "Passord stemmer ikke.",
"Repeat Password": "Gjenta passord",
"Create": "Lag",
"signedInDisp": "Logg in som {0}",
"signedInDispDisabled": "Auth deaktivert.",
"home": "Hjem",
"console": "Konsoll",
"registry": "Register",
"compose": "Skriv",
"addFirstStackMsg": "Lag din første stack!",
"stackName": "Navn på stack",
"deployStack": "Utplassere",
"deleteStack": "Slett",
"stopStack": "Stoppe",
"restartStack": "Omstart",
"updateStack": "Oppdater",
"downStack": "Stop & Inaktiver",
"editStack": "Rediger",
"discardStack": "Kast",
"saveStackDraft": "Lagre",
"notAvailableShort": "N/A",
"deleteStackMsg": "Er du sikker på at du vil slette denne stacken?",
"stackNotManagedByDockgeMsg": "Denne stacken er ikke styrt av Dockge.",
"primaryHostname": "Primært vertsnavn",
"general": "Generell",
"container": "Container | Containers",
"scanFolder": "Skann Stacks mappe",
"dockerImage": "Bilde",
"languageName": "Engelsk",
"startStack": "Start"
}

View File

@ -100,7 +100,7 @@
"Convert to Compose": "Converteer naar compose",
"External Networks": "Externe netwerken",
"newUpdate": "Nieuwe update",
"dockgeAgent": "Dockge Agent | Dockge Agents",
"dockgeAgent": "Dockge Agent | Dockge Agenten",
"currentEndpoint": "Huidige",
"dockgeURL": "Dockge Adres (bijv. http://127.0.0.1:5001)",
"agentOnline": "Online",
@ -111,5 +111,6 @@
"agentAddedSuccessfully": "Agent toegevoegd.",
"agentRemovedSuccessfully": "Agent verwijderd.",
"removeAgent": "Verwijder agent",
"removeAgentMsg": "Weet je zeker dat je deze agent wilt verwijderen?"
"removeAgentMsg": "Weet je zeker dat je deze agent wilt verwijderen?",
"LongSyntaxNotSupported": "Lange syntax wordt hier niet ondersteund. Gebruik de YAML editor."
}

View File

@ -111,5 +111,6 @@
"connecting...": "Łączenie z socketem serwera…",
"extra": "Ekstra",
"url": "URL | URLe",
"reconnecting...": "Wznawianie połączenia…"
"reconnecting...": "Wznawianie połączenia…",
"LongSyntaxNotSupported": "Nieobsługiwana składnia. Użyj edytora YAML."
}

View File

@ -111,5 +111,6 @@
"agentAddedSuccessfully": "Agente adicionado com sucesso.",
"agentRemovedSuccessfully": "Agente removido com sucesso.",
"removeAgent": "Remover Agente",
"removeAgentMsg": "Tem certeza de que deseja remover este agente?"
"removeAgentMsg": "Tem certeza de que deseja remover este agente?",
"LongSyntaxNotSupported": "Sintaxe longa não é suportada aqui. Por favor, use o editor de YAML."
}

View File

@ -101,15 +101,16 @@
"agentAddedSuccessfully": "Agente adicionado com sucesso.",
"agentRemovedSuccessfully": "Agente removido com sucesso.",
"removeAgent": "Remover Agente",
"downStack": "Parar & Inativar",
"downStack": "Parar & Desativar",
"dockgeAgent": "Dockge Agente | Dockge Agentes",
"connect": "Conectar",
"removeAgentMsg": "Tem certeza de que deseja remover este agente?",
"reverseProxyMsg1": "Usando um Proxy Reverso?",
"reverseProxyMsg2": "Verifique para configurá-lo como WebSocket",
"Cannot connect to the socket server.": "Não é possível se conectar ao servidor socket.",
"url": "URL | URLs",
"url": "URL | URL's",
"extra": "Extra",
"reconnecting...": "Reconectando…",
"connecting...": "Conectando ao servidor de socket…"
"connecting...": "Conectando ao servidor de socket…",
"LongSyntaxNotSupported": "Sintaxes longas não são suportadas aqui. Por favor, utilize um editor YAML."
}

View File

@ -91,7 +91,7 @@
"Internal Networks": "Notranja omrežja",
"External Networks": "Zunanja omrežja",
"No External Networks": "Ni zunanjih omrežij",
"downStack": "Ustavi & Odstrani",
"downStack": "Ustavi & Deaktiviraj",
"connecting...": "Povezovanje s strežnikom…",
"reverseProxyMsg1": "Uporabljate obratni proxy?",
"extra": "Dodatno",
@ -99,5 +99,18 @@
"newUpdate": "Nova posodobitev",
"reverseProxyMsg2": "Preverite, kako ga konfigurirati za WebSocket",
"Cannot connect to the socket server.": "Ni mogoče vzpostaviti povezave s strežnikom vtičnic.",
"url": "URL | URL-ji"
"url": "URL | URL-ji",
"currentEndpoint": "Trenutni",
"dockgeURL": "Dockge URL (npr. http://127.0.0.1:5001)",
"agentOnline": "Aktivno",
"agentOffline": "Neaktivno",
"connecting": "Povezujem",
"connect": "Poveži",
"addAgent": "Dodaj agenta",
"dockgeAgent": "Dockge agent | Dockge agenti",
"agentAddedSuccessfully": "Agent dodan uspešno.",
"agentRemovedSuccessfully": "Agent uspešno odstranjen.",
"removeAgent": "Odstrani agent",
"removeAgentMsg": "Ali ste prepričani, da želite odstraniti agenta?",
"LongSyntaxNotSupported": "Long syntax-a ni podprta tukaj. Prosim uporabite YAML urejevalnik."
}

View File

@ -111,5 +111,6 @@
"removeAgent": "Ta bort agent",
"removeAgentMsg": "Är du säker att du vill ta bort denna agent?",
"dockgeAgent": "Dockge agenter | Dockge agenter",
"agentAddedSuccessfully": "Agent tillagd."
"agentAddedSuccessfully": "Agent tillagd.",
"LongSyntaxNotSupported": "Lång syntax stöds inte här. Använd YAML-redigeraren."
}

View File

@ -1,17 +1,17 @@
{
"languageName": "ไทย",
"languageName": "อังกฤษ",
"Create your admin account": "สร้างบัญชีผู้ดูแลระบบของคุณ",
"authIncorrectCreds": "ชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง",
"PasswordsDoNotMatch": "รหัสผ่านไม่ตรงกัน",
"Repeat Password": "ยืนยันรหัสผ่าน",
"Create": "สร้าง",
"signedInDisp": "ลงชื่อเข้าใช้ในชื่อ {0}",
"signedInDisp": "ลงชื่อเข้าใช้ในนาม {0}",
"signedInDispDisabled": "ปิดใช้งาน Auth",
"home": "หน้าหลักe",
"home": "หน้าหลัก",
"console": "คอนโซล",
"registry": "Registry",
"compose": "Compose",
"addFirstStackMsg": "Compose stack แรกของคุณ",
"addFirstStackMsg": "Compose stack แรกของคุณ!",
"stackName": "ชื่อ Stack",
"deployStack": "ปรับใช้",
"deleteStack": "ลบ",
@ -19,7 +19,7 @@
"restartStack": "เริ่มใหม่",
"updateStack": "อัปเดต",
"startStack": "เริ่มต้น",
"downStack": "หยุดและปิด",
"downStack": "หยุดการทำงาน",
"editStack": "แก้ไข",
"discardStack": "ยกเลิก",
"saveStackDraft": "บันทึก",
@ -98,5 +98,19 @@
"connecting...": "กำลังเชื่อมต่อกับเซิร์ฟเวอร์ socket…",
"url": "URL | URLs",
"extra": "พิเศษ",
"reconnecting...": "กำลังเชื่อมต่อใหม่…"
"reconnecting...": "กำลังเชื่อมต่อใหม่…",
"newUpdate": "อัปเดตใหม่",
"dockgeAgent": "เอเย่นต์ Dockge | เอเย่นต์ Dockge",
"currentEndpoint": "ปัจุบัน",
"agentOnline": "ออนไลน์",
"agentOffline": "ออฟไลน์",
"connecting": "กำลังเชื่อมต่อ",
"connect": "เชื่อมต่อ",
"addAgent": "เพิ่มเอเย่นต์",
"agentAddedSuccessfully": "เพิ่มเอเย่นต์สำเร็จ",
"agentRemovedSuccessfully": "ลบเอเย่นต์สำเร็จ",
"removeAgent": "ลบเอเย่นต์",
"removeAgentMsg": "คุณแน่ใจหรือไม่ที่จะลบเอเย่นต์นี้?",
"dockgeURL": "ลิ้งก์ Dockge (เช่น http://127.0.0.1:5001)",
"LongSyntaxNotSupported": "Syntax แบบยาสไม่รองรับที่นี่ กรุณาใช้ตัวแก้ไข YAML"
}

View File

@ -111,5 +111,6 @@
"agentAddedSuccessfully": "Aracı başarıyla eklendi.",
"agentRemovedSuccessfully": "Aracı başarıyla kaldırıldı.",
"removeAgent": "Aracıyı Kaldır",
"removeAgentMsg": "Bu aracıyı kaldırmak istediğinize emin misiniz?"
"removeAgentMsg": "Bu aracıyı kaldırmak istediğinize emin misiniz?",
"LongSyntaxNotSupported": "Uzun syntax burada desteklenmiyor. Lütfen YAML editörünü kullanın."
}

View File

@ -80,7 +80,7 @@
"Logout": "Вийти",
"Lowercase only": "Тільки нижній регістр",
"Convert to Compose": "Конвертувати в Compose",
"Docker Run": "Запустити Docker",
"Docker Run": "Docker Run",
"active": "активно",
"exited": "завершено",
"inactive": "неактивно",

View File

@ -203,7 +203,7 @@ export default defineComponent({
socket.on("disconnect", () => {
console.log("disconnect");
this.socketIO.connectionErrorMsg = "Lost connection to the socket server. Reconnecting...";
this.socketIO.connectionErrorMsg = `${this.$t("Lost connection to the socket server. Reconnecting...")}`;
this.socketIO.connected = false;
});

View File

@ -1,7 +1,7 @@
<template>
<transition name="slide-fade" appear>
<div>
<h1 v-if="isAdd" class="mb-3">Compose</h1>
<h1 v-if="isAdd" class="mb-3">{{$t("compose")}}</h1>
<h1 v-else class="mb-3">
<Uptime :stack="globalStack" :pill="true" /> {{ stack.name }}
<span v-if="$root.agentCount > 1" class="agent-name">
@ -112,7 +112,7 @@
<div v-if="isEditMode" class="input-group mb-3">
<input
v-model="newContainerName"
placeholder="New Container Name..."
:placeholder="$t(`New Container Name...`)"
class="form-control"
@keyup.enter="addContainer"
/>
@ -150,7 +150,7 @@
<!-- Combined Terminal Output -->
<div v-show="!isEditMode">
<h4 class="mb-3">Terminal</h4>
<h4 class="mb-3">{{$t("terminal")}}</h4>
<Terminal
ref="combinedTerminal"
class="mb-3 terminal"
@ -158,7 +158,7 @@
:endpoint="endpoint"
:rows="combinedTerminalRows"
:cols="combinedTerminalCols"
style="height: 350px;"
style="height: 315px;"
></Terminal>
</div>
</div>
@ -258,7 +258,7 @@ import { BModal } from "bootstrap-vue-next";
import NetworkInput from "../components/NetworkInput.vue";
import dotenv from "dotenv";
const template = `version: "3.8"
const template = `
services:
nginx:
image: nginx:latest

View File

@ -1,10 +1,10 @@
<template>
<transition name="slide-fade" appear>
<div>
<h1 class="mb-3">Terminal - {{ serviceName }} ({{ stackName }})</h1>
<h1 class="mb-3">{{$t("terminal")}} - {{ serviceName }} ({{ stackName }})</h1>
<div class="mb-3">
<router-link :to="sh" class="btn btn-normal me-2">Switch to sh</router-link>
<router-link :to="sh" class="btn btn-normal me-2">{{ $t("Switch to sh") }}</router-link>
</div>
<Terminal class="terminal" :rows="20" mode="interactive" :name="terminalName" :stack-name="stackName" :service-name="serviceName" :shell="shell" :endpoint="endpoint"></Terminal>

View File

@ -656,13 +656,6 @@ $shadow-box-padding: 20px;
}
}
.main-terminal {
.xterm-viewport {
border-radius: 10px;
background-color: $dark-bg !important;
}
}
code {
padding: .2em .4em;
margin: 0;

10520
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -3,23 +3,23 @@
"version": "1.4.2",
"type": "module",
"engines": {
"node": ">= 18.0.0 && <= 18.17.1"
"node": ">= 22.14.0"
},
"scripts": {
"fmt": "eslint \"**/*.{ts,vue}\" --fix",
"lint": "eslint \"**/*.{ts,vue}\"",
"check-ts": "tsc --noEmit",
"start": "tsx ./backend/index.ts",
"dev": "concurrently -k -r \"wait-on tcp:5000 && pnpm run dev:backend \" \"pnpm run dev:frontend\"",
"dev": "concurrently -k -r \"wait-on tcp:5000 && npm run dev:backend \" \"npm run dev:frontend\"",
"dev:backend": "cross-env NODE_ENV=development tsx watch --inspect ./backend/index.ts",
"dev:frontend": "cross-env NODE_ENV=development vite --host --config ./frontend/vite.config.ts",
"release-final": "tsx ./extra/test-docker.ts && tsx extra/update-version.ts && pnpm run build:frontend && npm run build:docker",
"release-beta": "tsx ./extra/test-docker.ts && tsx extra/update-version.ts && pnpm run build:frontend && npm run build:docker-beta",
"release-final": "tsx ./extra/test-docker.ts && tsx extra/update-version.ts && npm run build:frontend && npm run build:docker",
"release-beta": "tsx ./extra/test-docker.ts && tsx extra/update-version.ts && npm run build:frontend && npm run build:docker-beta",
"build:frontend": "vite build --config ./frontend/vite.config.ts",
"build:docker-base": "docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/dockge:base -f ./docker/Base.Dockerfile . --push",
"build:docker": "node ./extra/env2arg.js docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/dockge:latest -t louislam/dockge:1 -t louislam/dockge:$VERSION -t louislam/dockge:beta -t louislam/dockge:nightly --target release -f ./docker/Dockerfile . --push",
"build:docker-beta": "node ./extra/env2arg.js docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/dockge:beta -t louislam/dockge:$VERSION --target release -f ./docker/Dockerfile . --push",
"build:docker-nightly": "pnpm run build:frontend && docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/dockge:nightly --target nightly -f ./docker/Dockerfile . --push",
"build:docker-nightly": "npm run build:frontend && docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/dockge:nightly --target nightly -f ./docker/Dockerfile . --push",
"build:healthcheck": "docker buildx build -f docker/BuildHealthCheck.Dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/dockge:build-healthcheck . --push",
"start-docker": "docker run --rm -p 5001:5001 --name dockge louislam/dockge:latest",
"mark-as-nightly": "tsx ./extra/mark-as-nightly.ts",
@ -27,39 +27,39 @@
"reset-password": "tsx ./extra/reset-password.ts"
},
"dependencies": {
"@homebridge/node-pty-prebuilt-multiarch": "~0.11.12",
"@homebridge/node-pty-prebuilt-multiarch": "0.11.14",
"@inventage/envsubst": "^0.16.0",
"@louislam/sqlite3": "~15.1.6",
"bcryptjs": "~2.4.3",
"check-password-strength": "~2.0.7",
"check-password-strength": "~2.0.10",
"command-exists": "~1.2.9",
"compare-versions": "~6.1.0",
"composerize": "~1.4.1",
"croner": "~7.0.5",
"dayjs": "~1.11.10",
"dotenv": "~16.3.1",
"express": "~4.18.2",
"express-static-gzip": "~2.1.7",
"http-graceful-shutdown": "~3.1.13",
"compare-versions": "~6.1.1",
"composerize": "~1.7.1",
"croner": "~8.1.2",
"dayjs": "~1.11.13",
"dotenv": "~16.3.2",
"express": "~4.21.2",
"express-static-gzip": "~2.1.8",
"http-graceful-shutdown": "~3.1.14",
"jsonwebtoken": "~9.0.2",
"jwt-decode": "~3.1.2",
"knex": "~2.5.1",
"limiter-es6-compat": "~2.1.2",
"mysql2": "~3.6.5",
"mysql2": "~3.12.0",
"promisify-child-process": "~4.1.2",
"redbean-node": "~0.3.3",
"semver": "^7.5.4",
"socket.io": "~4.7.2",
"socket.io-client": "~4.7.2",
"timezones-list": "~3.0.2",
"semver": "^7.7.1",
"socket.io": "~4.8.1",
"socket.io-client": "~4.8.1",
"timezones-list": "~3.0.3",
"ts-command-line-args": "~2.5.1",
"tsx": "~4.6.2",
"tsx": "~4.19.3",
"type-fest": "~4.3.3",
"yaml": "~2.3.4"
},
"devDependencies": {
"@actions/github": "^6.0.0",
"@fontsource/jetbrains-mono": "^5.0.18",
"@fontsource/jetbrains-mono": "^5.2.5",
"@fortawesome/fontawesome-svg-core": "6.4.2",
"@fortawesome/free-regular-svg-icons": "6.4.2",
"@fortawesome/free-solid-svg-icons": "6.4.2",
@ -68,8 +68,8 @@
"@types/bootstrap": "~5.2.10",
"@types/command-exists": "~1.2.3",
"@types/express": "~4.17.21",
"@types/jsonwebtoken": "~9.0.5",
"@types/semver": "^7.5.6",
"@types/jsonwebtoken": "~9.0.9",
"@types/semver": "^7.7.0",
"@typescript-eslint/eslint-plugin": "~6.8.0",
"@typescript-eslint/parser": "~6.8.0",
"@vitejs/plugin-vue": "~4.5.2",
@ -81,19 +81,19 @@
"cross-env": "~7.0.3",
"eslint": "~8.50.0",
"eslint-plugin-jsdoc": "~46.8.2",
"eslint-plugin-vue": "~9.17.0",
"prismjs": "~1.29.0",
"eslint-plugin-vue": "~9.32.0",
"prismjs": "~1.30.0",
"sass": "~1.68.0",
"typescript": "~5.2.2",
"unplugin-vue-components": "~0.25.2",
"vite": "~5.0.10",
"vite": "~5.4.15",
"vite-plugin-compression": "~0.5.1",
"vue": "~3.3.13",
"vue": "~3.5.13",
"vue-eslint-parser": "~9.3.2",
"vue-i18n": "~9.5.0",
"vue-i18n": "~10.0.6",
"vue-prism-editor": "2.0.0-alpha.2",
"vue-qrcode": "~2.2.0",
"vue-router": "~4.2.5",
"vue-qrcode": "~2.2.2",
"vue-router": "~4.5.0",
"vue-toastification": "2.0.0-rc.5",
"wait-on": "^7.2.0",
"xterm-addon-web-links": "~0.9.0"

5649
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff