Compare commits

...
40 changed files with 4031 additions and 3312 deletions
+15 -34
View File
@@ -233,7 +233,6 @@
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz",
"integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/code-frame": "^7.29.0",
"@babel/generator": "^7.29.0",
@@ -1931,6 +1930,16 @@
}
}
},
"node_modules/@bubblewrap/core/node_modules/inquirer/node_modules/@types/node": {
"version": "25.9.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.1.tgz",
"integrity": "sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==",
"optional": true,
"peer": true,
"dependencies": {
"undici-types": ">=7.24.0 <7.24.7"
}
},
"node_modules/@bubblewrap/core/node_modules/mute-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz",
@@ -1954,7 +1963,8 @@
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz",
"integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==",
"license": "MIT",
"optional": true
"optional": true,
"peer": true
},
"node_modules/@bubblewrap/validator": {
"version": "1.22.0",
@@ -2077,7 +2087,6 @@
}
],
"license": "MIT",
"peer": true,
"engines": {
"node": ">=20.19.0"
},
@@ -2126,7 +2135,6 @@
}
],
"license": "MIT",
"peer": true,
"engines": {
"node": ">=20.19.0"
}
@@ -2564,7 +2572,6 @@
"resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-6.1.20.tgz",
"integrity": "sha512-1cukXLlePFiJ8YKXn/4tMKsy0etxYLCkXk8nUCFi11nRONF2Ba2CD5b21/ovtOO2tL6afTJfwmc1ed3HG7eB1g==",
"license": "MIT",
"peer": true,
"dependencies": {
"preact": "~10.12.1"
}
@@ -2808,7 +2815,6 @@
"resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.22.12.tgz",
"integrity": "sha512-xcmww1O/JFP2MrlGUMd3Q78S3Qu6W3mYTXYuIqFq33EorgYHV/HqymHfXy9GjiCJ7OI+7lWx6nYFOzU7M4rd1Q==",
"license": "MIT",
"peer": true,
"dependencies": {
"@jimp/core": "^0.22.12"
}
@@ -2845,7 +2851,6 @@
"resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.22.12.tgz",
"integrity": "sha512-xslz2ZoFZOPLY8EZ4dC29m168BtDx95D6K80TzgUi8gqT7LY6CsajWO0FAxDwHz6h0eomHMfyGX0stspBrTKnQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@jimp/utils": "^0.22.12"
},
@@ -2858,7 +2863,6 @@
"resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.22.12.tgz",
"integrity": "sha512-S0vJADTuh1Q9F+cXAwFPlrKWzDj2F9t/9JAbUvaaDuivpyWuImEKXVz5PUZw2NbpuSHjwssbTpOZ8F13iJX4uw==",
"license": "MIT",
"peer": true,
"dependencies": {
"@jimp/utils": "^0.22.12"
},
@@ -2883,7 +2887,6 @@
"resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.22.12.tgz",
"integrity": "sha512-xImhTE5BpS8xa+mAN6j4sMRWaUgUDLoaGHhJhpC+r7SKKErYDR0WQV4yCE4gP+N0gozD0F3Ka1LUSaMXrn7ZIA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@jimp/utils": "^0.22.12",
"tinycolor2": "^1.6.0"
@@ -2927,7 +2930,6 @@
"resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.22.12.tgz",
"integrity": "sha512-FNuUN0OVzRCozx8XSgP9MyLGMxNHHJMFt+LJuFjn1mu3k0VQxrzqbN06yIl46TVejhyAhcq5gLzqmSCHvlcBVw==",
"license": "MIT",
"peer": true,
"dependencies": {
"@jimp/utils": "^0.22.12"
},
@@ -3051,7 +3053,6 @@
"resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.22.12.tgz",
"integrity": "sha512-3NyTPlPbTnGKDIbaBgQ3HbE6wXbAlFfxHVERmrbqAi8R3r6fQPxpCauA8UVDnieg5eo04D0T8nnnNIX//i/sXg==",
"license": "MIT",
"peer": true,
"dependencies": {
"@jimp/utils": "^0.22.12"
},
@@ -3064,7 +3065,6 @@
"resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.22.12.tgz",
"integrity": "sha512-9YNEt7BPAFfTls2FGfKBVgwwLUuKqy+E8bDGGEsOqHtbuhbshVGxN2WMZaD4gh5IDWvR+emmmPPWGgaYNYt1gA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@jimp/utils": "^0.22.12"
},
@@ -3080,7 +3080,6 @@
"resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.22.12.tgz",
"integrity": "sha512-dghs92qM6MhHj0HrV2qAwKPMklQtjNpoYgAB94ysYpsXslhRTiPisueSIELRwZGEr0J0VUxpUY7HgJwlSIgGZw==",
"license": "MIT",
"peer": true,
"dependencies": {
"@jimp/utils": "^0.22.12"
},
@@ -5343,7 +5342,6 @@
"integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
"devOptional": true,
"license": "MIT",
"peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -5378,7 +5376,6 @@
"integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.3",
"fast-uri": "^3.0.1",
@@ -5472,8 +5469,7 @@
"version": "5.10.4",
"resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-5.10.4.tgz",
"integrity": "sha512-gt0VUqZ2+mr25ScbUcKZgJr96jKYm4vjOcxEWCEh/E5F4dWqhyo3dBhPRvNNnkKiWxkMd2cBwj3ZYH3rK39fkA==",
"license": "SEE LICENSE IN LICENSE",
"peer": true
"license": "SEE LICENSE IN LICENSE"
},
"node_modules/aria-query": {
"version": "5.3.1",
@@ -5597,7 +5593,6 @@
"resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz",
"integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==",
"license": "MIT",
"peer": true,
"dependencies": {
"follow-redirects": "^1.15.11",
"form-data": "^4.0.5",
@@ -5821,7 +5816,6 @@
}
],
"license": "MIT",
"peer": true,
"dependencies": {
"baseline-browser-mapping": "^2.9.0",
"caniuse-lite": "^1.0.30001759",
@@ -5906,8 +5900,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/bulma/-/bulma-1.0.4.tgz",
"integrity": "sha512-Ffb6YGXDiZYX3cqvSbHWqQ8+LkX6tVoTcZuVB3lm93sbAVXlO0D6QlOTMnV6g18gILpAXqkG2z9hf9z4hCjz2g==",
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/bulma-block-list": {
"version": "1.1.0",
@@ -6165,7 +6158,6 @@
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.1.tgz",
"integrity": "sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==",
"license": "MIT",
"peer": true,
"dependencies": {
"@kurkle/color": "^0.3.0"
},
@@ -6588,7 +6580,6 @@
"resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
"integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
"license": "ISC",
"peer": true,
"engines": {
"node": ">=12"
}
@@ -6777,7 +6768,6 @@
"integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==",
"deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/compiler-sfc": "2.7.16",
"csstype": "^3.1.0"
@@ -8335,8 +8325,7 @@
"version": "6.2.2",
"resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.2.tgz",
"integrity": "sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==",
"license": "Apache-2.0",
"peer": true
"license": "Apache-2.0"
},
"node_modules/ieee754": {
"version": "1.2.1",
@@ -10403,7 +10392,6 @@
"resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz",
"integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==",
"license": "MIT",
"peer": true,
"dependencies": {
"dijkstrajs": "^1.0.1",
"pngjs": "^5.0.0",
@@ -10758,7 +10746,6 @@
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.0.tgz",
"integrity": "sha512-yqjxruMGBQJ2gG4HtjZtAfXArHomazDHoFwFFmZZl0r7Pdo7qCIXKqKHZc8yeoMgzJJ+pO6pEEHa+V7uzWlrAQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@types/estree": "1.0.8"
},
@@ -10942,7 +10929,6 @@
"resolved": "https://registry.npmjs.org/sass/-/sass-1.98.0.tgz",
"integrity": "sha512-+4N/u9dZ4PrgzGgPlKnaaRQx64RO0JBKs9sDhQ2pLgN6JQZ25uPQZKQYaBJU48Kd5BxgXoJ4e09Dq7nMcOUW3A==",
"license": "MIT",
"peer": true,
"dependencies": {
"chokidar": "^4.0.0",
"immutable": "^5.1.5",
@@ -10964,7 +10950,6 @@
"integrity": "sha512-Do7u6iRb6K+lrllcTkB1BXcHwOxcKe3rEfOF/GcCLE2w3WpddakRAosJOHFUR37DpsvimQXEt5abs3NzUjEIqg==",
"devOptional": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@bufbuild/protobuf": "^2.5.0",
"colorjs.io": "^0.5.0",
@@ -12730,7 +12715,6 @@
"resolved": "https://registry.npmjs.org/vite/-/vite-7.1.11.tgz",
"integrity": "sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==",
"license": "MIT",
"peer": true,
"dependencies": {
"esbuild": "^0.25.0",
"fdir": "^6.5.0",
@@ -14123,7 +14107,6 @@
"integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"esbuild": "^0.21.3",
"postcss": "^8.4.43",
@@ -14183,7 +14166,6 @@
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.31.tgz",
"integrity": "sha512-iV/sU9SzOlmA/0tygSmjkEN6Jbs3nPoIPFhCMLD2STrjgOU8DX7ZtzMhg4ahVwf5Rp9KoFzcXeB1ZrVbLBp5/Q==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/compiler-dom": "3.5.31",
"@vue/compiler-sfc": "3.5.31",
@@ -14871,7 +14853,6 @@
"integrity": "sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==",
"dev": true,
"license": "MIT",
"peer": true,
"bin": {
"rollup": "dist/bin/rollup"
},
+74 -56
View File
@@ -112,7 +112,7 @@
"api": "API",
"app": "app",
"appen": "appen",
"ar": "år",
"ar": "@:{'words.generated.years'}",
"are": "are",
"arsag": "årsag",
"at": "at",
@@ -679,7 +679,7 @@
"nøgle": "nøgle",
"nogle": "nogle",
"nok": "nok",
"nøkkel": "nøgle",
"nøkkel": "@:{'words.generated.nøgle'}",
"nøkkelen": "nøglen",
"not": "not",
"note": "note",
@@ -1599,7 +1599,25 @@
"view_lane_new_tab": "@:{'words.generated.abn'} @:{'words.generated.bane'} @:{'words.generated.i'} @:{'words.generated.ny'} @:{'words.generated.fane'}",
"view_lane_setup_new_tab": "@:{'words.generated.abn'} baneopsætning @:{'words.generated.i'} @:{'words.generated.ny'} @:{'words.generated.fane'}",
"view_order_new_tab": "@:{'words.generated.abn'} @:{'words.generated.ordre'} @:{'words.generated.i'} @:{'words.generated.ny'} @:{'words.generated.fane'}",
"view_vehicle_new_tab": "?@:{'words.generated.bn'} @:{'words.generated.k'}?@:{'words.generated.ret'}?j {reg} @:{'words.generated.i'} @:{'words.generated.ny'} @:{'words.generated.fane'}"
"view_vehicle_new_tab": "?@:{'words.generated.bn'} @:{'words.generated.k'}?@:{'words.generated.ret'}?j {reg} @:{'words.generated.i'} @:{'words.generated.ny'} @:{'words.generated.fane'}",
"accept_self_serve_wash": "Godkend selvbetjent vask",
"accept_self_serve_wash_confirm": "Flyt denne kladde til kunde #{customerNumber} med selvbetjeningsdetaljerne?",
"accept_self_serve_wash_success": "Den selvbetjente vask blev godkendt.",
"email_notifications_section": "E-mail notifikationer",
"resend_booking_completion_confirmation": "(Gen)send bekræftelse for færdig booking",
"resend_booking_completion_confirmation_error": "Bekræftelsen for færdig booking kunne ikke sendes",
"resend_booking_completion_confirmation_success": "Bekræftelsen for færdig booking er sendt",
"resend_booking_confirmation": "(Gen)send bookingbekræftelse",
"resend_booking_confirmation_error": "Bookingbekræftelsen kunne ikke sendes",
"resend_booking_confirmation_success": "Bookingbekræftelsen er sendt",
"resend_wash_certificate": "(Gen)send vaskecertifikat",
"resend_wash_certificate_error": "Vaskecertifikatet kunne ikke sendes",
"resend_wash_certificate_success": "Vaskecertifikatet er sendt",
"self_serve_customer": "Kunde",
"self_serve_driver": "Chauffør",
"self_serve_elapsed": "Tid",
"self_serve_wash_attachment": "Selvbetjent vask",
"self_serve_wash_attachment_for_customer": "Selvbetjent vask for kunde #{customerNumber}"
},
"show_details": "@:{'words.generated.vis'} @:{'words.generated.detaljer'}",
"show_order_details": "@:{'words.generated.vis'} @:{'words.generated.ordredetaljer'}",
@@ -2439,6 +2457,59 @@
"username_desc": "@.capitalize:{'words.generated.brugernavnet'} @:{'words.generated.bruges'} @:{'words.generated.til'} @:{'words.generated.at'} @:{'words.generated.autentificere'} @:{'words.generated.api'} @:{'words.generated.forbindelsen'}."
},
"release_manager": {
"integrations": {
"title": "GitHub og Coolify",
"subtitle": "Knyt GitHub-repositories og branches til kanalspecifikke Coolify-services.",
"choose_repository": "Vælg repository",
"add_health_url": "tilføj health-URL",
"github_token_not_configured": "GitHub-token er ikke konfigureret; private repositories kan ikke vises.",
"open_github_token_settings": "Åbn GitHub token-indstillinger",
"channel": "Kanal",
"app": "App",
"repository": "Repository",
"repository_message": "Eksempel: truckwash/backend-php",
"repository_placeholder": "ejer/repo",
"branch": "Branch",
"branch_message": "Eksempel: release/canary",
"branch_placeholder": "branch",
"latest_prefix": "Seneste: {commit}",
"coolify_instance": "Coolify-instans",
"coolify_instance_message": "Lad feltet være tomt for manuelle deployment-poster.",
"no_coolify_instance": "Ingen Coolify-instans",
"coolify_instance_placeholder": "Coolify-instans-id",
"coolify_service_uuid": "Coolify service-UUID",
"coolify_service_uuid_message": "Vælg en eksisterende service eller indsæt en UUID.",
"coolify_service_uuid_placeholder": "Coolify service-UUID",
"health_url": "Health-URL",
"health_url_message": "Eksempel: https://api-canary.example.test/ping",
"health_url_placeholder": "Health-URL",
"ssl_domain": "Load balancer-domæne",
"ssl_domain_message": "Skal være et DNS-domæne, der routes til Coolify load balanceren. Eksempel: api-v2.truckwash.io",
"ssl_domain_placeholder": "Load balancer-domæne",
"https_domain_for_coolify": "Domæne kontrolleret af load balanceren",
"endpoint_mode": "Endpoint mode",
"endpoint_mode_message": "Use automatic gateway routing or manually override the public host and port.",
"endpoint_mode_auto": "Auto",
"endpoint_mode_manual": "Manual",
"manual_endpoint_host": "Manual host",
"manual_endpoint_host_message": "Public host shown in release previews when manual mode is selected.",
"manual_endpoint_host_placeholder": "api-v2.truckwash.io",
"manual_endpoint_port": "Manual public port",
"manual_endpoint_port_message": "Optional public port from 1 to 65535.",
"app_port": "App port",
"app_port_message": "Internal container port exposed to Coolify routing.",
"auto_gateway_endpoint": "Automatic gateway endpoint",
"pending_automatic_endpoint": "Automatic endpoint resolution pending",
"auto_deploy": "Auto deploy",
"auto_deploy_tooltip": "Opret automatisk deployments, når dette mål ændres.",
"coolify_ssl": "Coolify SSL",
"coolify_ssl_tooltip": "Bed Coolify om at oprette HTTPS for det konfigurerede domæne.",
"deploy_now": "Deploy nu",
"deploy_now_tooltip": "Start en deployment straks efter målet gemmes.",
"create_missing_service": "Opret manglende service",
"create_missing_service_tooltip": "Tillad Release Manager at oprette en manglende Coolify-service.",
"test_access_tooltip": "Bekræft, at den konfigurerede GitHub-token kan læse dette repository og branch."
},
"title": "Release Manager",
"subtitle": "Gradvise API- og Front-End-udgivelser",
"channel_names": {
@@ -2884,59 +2955,6 @@
"severity": "Alvorlighed",
"any_severity": "Alle alvorligheder",
"no_timeline_events": "Ingen timeline-events matcher de aktuelle filtre."
},
"integrations": {
"title": "GitHub og Coolify",
"subtitle": "Knyt GitHub-repositories og branches til kanalspecifikke Coolify-services.",
"choose_repository": "Vælg repository",
"add_health_url": "tilføj health-URL",
"github_token_not_configured": "GitHub-token er ikke konfigureret; private repositories kan ikke vises.",
"open_github_token_settings": "Åbn GitHub token-indstillinger",
"channel": "Kanal",
"app": "App",
"repository": "Repository",
"repository_message": "Eksempel: truckwash/backend-php",
"repository_placeholder": "ejer/repo",
"branch": "Branch",
"branch_message": "Eksempel: release/canary",
"branch_placeholder": "branch",
"latest_prefix": "Seneste: {commit}",
"coolify_instance": "Coolify-instans",
"coolify_instance_message": "Lad feltet være tomt for manuelle deployment-poster.",
"no_coolify_instance": "Ingen Coolify-instans",
"coolify_instance_placeholder": "Coolify-instans-id",
"coolify_service_uuid": "Coolify service-UUID",
"coolify_service_uuid_message": "Vælg en eksisterende service eller indsæt en UUID.",
"coolify_service_uuid_placeholder": "Coolify service-UUID",
"health_url": "Health-URL",
"health_url_message": "Eksempel: https://api-canary.example.test/ping",
"health_url_placeholder": "Health-URL",
"ssl_domain": "Load balancer-domæne",
"ssl_domain_message": "Skal være et DNS-domæne, der routes til Coolify load balanceren. Eksempel: api-v2.truckwash.io",
"ssl_domain_placeholder": "Load balancer-domæne",
"https_domain_for_coolify": "Domæne kontrolleret af load balanceren",
"endpoint_mode": "Endpoint mode",
"endpoint_mode_message": "Use automatic gateway routing or manually override the public host and port.",
"endpoint_mode_auto": "Auto",
"endpoint_mode_manual": "Manual",
"manual_endpoint_host": "Manual host",
"manual_endpoint_host_message": "Public host shown in release previews when manual mode is selected.",
"manual_endpoint_host_placeholder": "api-v2.truckwash.io",
"manual_endpoint_port": "Manual public port",
"manual_endpoint_port_message": "Optional public port from 1 to 65535.",
"app_port": "App port",
"app_port_message": "Internal container port exposed to Coolify routing.",
"auto_gateway_endpoint": "Automatic gateway endpoint",
"pending_automatic_endpoint": "Automatic endpoint resolution pending",
"auto_deploy": "Auto deploy",
"auto_deploy_tooltip": "Opret automatisk deployments, når dette mål ændres.",
"coolify_ssl": "Coolify SSL",
"coolify_ssl_tooltip": "Bed Coolify om at oprette HTTPS for det konfigurerede domæne.",
"deploy_now": "Deploy nu",
"deploy_now_tooltip": "Start en deployment straks efter målet gemmes.",
"create_missing_service": "Opret manglende service",
"create_missing_service_tooltip": "Tillad Release Manager at oprette en manglende Coolify-service.",
"test_access_tooltip": "Bekræft, at den konfigurerede GitHub-token kan læse dette repository og branch."
}
}
},
+91 -56
View File
@@ -1061,7 +1061,7 @@
"uhrzeit": "Uhrzeit",
"um": "um",
"umbenannt": "umbenannt",
"umbenennen": "umbenennen",
"umbenennen": "@:{'words.generated.rename'}",
"umsatz": "Umsatz",
"umweltgeb": "Umweltgeb",
"unabhangig": "unabhängig",
@@ -1709,7 +1709,25 @@
"view_lane_new_tab": "@:{'words.generated.spur'} @:{'words.generated.in'} @:{'words.generated.neuem'} @:{'words.generated.tab'} @:{'words.generated.anzeigen'}",
"view_lane_setup_new_tab": "Spurkonfiguration @:{'words.generated.in'} @:{'words.generated.neuem'} @:{'words.generated.tab'} @:{'words.generated.anzeigen'}",
"view_order_new_tab": "@:{'words.generated.auftrag'} @:{'words.generated.in'} @:{'words.generated.neuem'} @:{'words.generated.tab'} @:{'words.generated.anzeigen'}",
"view_vehicle_new_tab": "@:{'words.generated.fahrzeug'} {reg} @:{'words.generated.in'} @:{'words.generated.neuem'} @:{'words.generated.tab'} @:{'words.generated.anzeigen'}"
"view_vehicle_new_tab": "@:{'words.generated.fahrzeug'} {reg} @:{'words.generated.in'} @:{'words.generated.neuem'} @:{'words.generated.tab'} @:{'words.generated.anzeigen'}",
"accept_self_serve_wash": "Self-Service-Wäsche akzeptieren",
"accept_self_serve_wash_confirm": "Diesen Entwurf mit den Self-Service-Details zu Kunde #{customerNumber} verschieben?",
"accept_self_serve_wash_success": "Die Self-Service-Wäsche wurde akzeptiert.",
"email_notifications_section": "E-Mail-Benachrichtigungen",
"resend_booking_completion_confirmation": "(Re)send booking completion confirmation",
"resend_booking_completion_confirmation_error": "The booking completion confirmation could not be sent",
"resend_booking_completion_confirmation_success": "The booking completion confirmation has been sent",
"resend_booking_confirmation": "(Re)send booking confirmation",
"resend_booking_confirmation_error": "The booking confirmation could not be sent",
"resend_booking_confirmation_success": "The booking confirmation has been sent",
"resend_wash_certificate": "(Re)send wash certificate",
"resend_wash_certificate_error": "The wash certificate could not be sent",
"resend_wash_certificate_success": "The wash certificate has been sent",
"self_serve_customer": "Kunde",
"self_serve_driver": "Fahrer",
"self_serve_elapsed": "Zeit",
"self_serve_wash_attachment": "Self-Service-Wäsche",
"self_serve_wash_attachment_for_customer": "Self-Service-Wäsche für Kunde #{customerNumber}"
},
"show_details": "@.capitalize:{'words.generated.details'} @:{'words.generated.anzeigen'}",
"show_order_details": "@:{'words.generated.auftragsdetails'} @:{'words.generated.anzeigen'}",
@@ -2549,6 +2567,59 @@
"username_desc": "@.capitalize:{'words.generated.der'} @:{'words.generated.benutzername'} @:{'words.generated.wird'} @:{'words.generated.zur'} @:{'words.generated.authentifizierung'} @:{'words.generated.der'} @:{'words.generated.api'}-@:{'words.generated.verbindung'} @:{'words.generated.verwendet'}."
},
"release_manager": {
"integrations": {
"title": "GitHub und Coolify",
"subtitle": "GitHub-Repositories und Branches kanalspezifischen Coolify-Services zuordnen.",
"choose_repository": "Repository auswählen",
"add_health_url": "Health-URL hinzufügen",
"github_token_not_configured": "GitHub-Token ist nicht konfiguriert; private Repositories können nicht aufgelistet werden.",
"open_github_token_settings": "GitHub-Token-Einstellungen öffnen",
"channel": "Channel",
"app": "App",
"repository": "Repository",
"repository_message": "Example: truckwash/backend-php",
"repository_placeholder": "owner/repo",
"branch": "Branch",
"branch_message": "Example: release/canary",
"branch_placeholder": "branch",
"latest_prefix": "Neueste: {commit}",
"coolify_instance": "Coolify-Instanz",
"coolify_instance_message": "Leer lassen für manuelle Deployment-Einträge.",
"no_coolify_instance": "Keine Coolify-Instanz",
"coolify_instance_placeholder": "Coolify-Instanz-ID",
"coolify_service_uuid": "Coolify service UUID",
"coolify_service_uuid_message": "Bestehenden Service auswählen oder UUID einfügen.",
"coolify_service_uuid_placeholder": "Coolify service UUID",
"health_url": "Health URL",
"health_url_message": "Example: https://api-canary.example.test/ping",
"health_url_placeholder": "Health URL",
"ssl_domain": "Load-Balancer-Domain",
"ssl_domain_message": "Muss eine DNS-Domain sein, die zum Coolify Load Balancer geroutet wird. Beispiel: api-v2.truckwash.io",
"ssl_domain_placeholder": "Load-Balancer-Domain",
"https_domain_for_coolify": "Domain unter Kontrolle des Load Balancers",
"endpoint_mode": "Endpoint mode",
"endpoint_mode_message": "Use automatic gateway routing or manually override the public host and port.",
"endpoint_mode_auto": "Auto",
"endpoint_mode_manual": "Manual",
"manual_endpoint_host": "Manual host",
"manual_endpoint_host_message": "Public host shown in release previews when manual mode is selected.",
"manual_endpoint_host_placeholder": "api-v2.truckwash.io",
"manual_endpoint_port": "Manual public port",
"manual_endpoint_port_message": "Optional public port from 1 to 65535.",
"app_port": "App port",
"app_port_message": "Internal container port exposed to Coolify routing.",
"auto_gateway_endpoint": "Automatic gateway endpoint",
"pending_automatic_endpoint": "Automatic endpoint resolution pending",
"auto_deploy": "Auto-Deploy",
"auto_deploy_tooltip": "Automatisch Deployments erstellen, wenn sich dieses Ziel ändert.",
"coolify_ssl": "Coolify SSL",
"coolify_ssl_tooltip": "Coolify anweisen, HTTPS für die konfigurierte Domain bereitzustellen.",
"deploy_now": "Jetzt deployen",
"deploy_now_tooltip": "Deployment direkt nach dem Speichern des Ziels starten.",
"create_missing_service": "Fehlenden Service erstellen",
"create_missing_service_tooltip": "Release Manager erlauben, einen fehlenden Coolify-Service zu erstellen.",
"test_access_tooltip": "Prüfen, ob der konfigurierte GitHub-Token dieses Repository und den Branch lesen kann."
},
"title": "Release Manager",
"subtitle": "Schrittweise API- und Front-End-Releases",
"channel_names": {
@@ -2744,7 +2815,8 @@
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"use_local_frontend": "Lokales Frontend verwenden"
"use_local_frontend": "Lokales Frontend verwenden",
"switch_error": "Release channel could not be switched. The previous channel is still active."
},
"common": {
"yes": "ja",
@@ -2768,7 +2840,8 @@
"save_target": "Ziel speichern",
"delete": "Löschen",
"back": "Zurück",
"next": "Weiter"
"next": "Weiter",
"publish_release": "Publish release"
},
"tables": {
"channel": "Kanal",
@@ -2978,58 +3051,20 @@
"any_severity": "Beliebiger Schweregrad",
"no_timeline_events": "Keine Timeline-Events entsprechen den aktuellen Filtern."
},
"integrations": {
"title": "GitHub und Coolify",
"subtitle": "GitHub-Repositories und Branches kanalspezifischen Coolify-Services zuordnen.",
"choose_repository": "Repository auswählen",
"add_health_url": "Health-URL hinzufügen",
"github_token_not_configured": "GitHub-Token ist nicht konfiguriert; private Repositories können nicht aufgelistet werden.",
"open_github_token_settings": "GitHub-Token-Einstellungen öffnen",
"channel": "Channel",
"app": "App",
"repository": "Repository",
"repository_message": "Example: truckwash/backend-php",
"repository_placeholder": "owner/repo",
"branch": "Branch",
"branch_message": "Example: release/canary",
"branch_placeholder": "branch",
"latest_prefix": "Neueste: {commit}",
"coolify_instance": "Coolify-Instanz",
"coolify_instance_message": "Leer lassen für manuelle Deployment-Einträge.",
"no_coolify_instance": "Keine Coolify-Instanz",
"coolify_instance_placeholder": "Coolify-Instanz-ID",
"coolify_service_uuid": "Coolify service UUID",
"coolify_service_uuid_message": "Bestehenden Service auswählen oder UUID einfügen.",
"coolify_service_uuid_placeholder": "Coolify service UUID",
"health_url": "Health URL",
"health_url_message": "Example: https://api-canary.example.test/ping",
"health_url_placeholder": "Health URL",
"ssl_domain": "Load-Balancer-Domain",
"ssl_domain_message": "Muss eine DNS-Domain sein, die zum Coolify Load Balancer geroutet wird. Beispiel: api-v2.truckwash.io",
"ssl_domain_placeholder": "Load-Balancer-Domain",
"https_domain_for_coolify": "Domain unter Kontrolle des Load Balancers",
"endpoint_mode": "Endpoint mode",
"endpoint_mode_message": "Use automatic gateway routing or manually override the public host and port.",
"endpoint_mode_auto": "Auto",
"endpoint_mode_manual": "Manual",
"manual_endpoint_host": "Manual host",
"manual_endpoint_host_message": "Public host shown in release previews when manual mode is selected.",
"manual_endpoint_host_placeholder": "api-v2.truckwash.io",
"manual_endpoint_port": "Manual public port",
"manual_endpoint_port_message": "Optional public port from 1 to 65535.",
"app_port": "App port",
"app_port_message": "Internal container port exposed to Coolify routing.",
"auto_gateway_endpoint": "Automatic gateway endpoint",
"pending_automatic_endpoint": "Automatic endpoint resolution pending",
"auto_deploy": "Auto-Deploy",
"auto_deploy_tooltip": "Automatisch Deployments erstellen, wenn sich dieses Ziel ändert.",
"coolify_ssl": "Coolify SSL",
"coolify_ssl_tooltip": "Coolify anweisen, HTTPS für die konfigurierte Domain bereitzustellen.",
"deploy_now": "Jetzt deployen",
"deploy_now_tooltip": "Deployment direkt nach dem Speichern des Ziels starten.",
"create_missing_service": "Fehlenden Service erstellen",
"create_missing_service_tooltip": "Release Manager erlauben, einen fehlenden Coolify-Service zu erstellen.",
"test_access_tooltip": "Prüfen, ob der konfigurierte GitHub-Token dieses Repository und den Branch lesen kann."
"status": {
"confirm_issue_action": "Run this Release Manager action? It can change deployment state and will be audited.",
"choose_bundle_prompt": "Enter the bundle id to set for this channel.",
"impact": "Impact",
"cause": "Cause",
"automated_fix": "Automated fix",
"manual_fallback": "Manual fallback",
"related_deployment": "Related deployment",
"recent_result": "Recent result",
"no_automated_action": "No automated action available.",
"deployment": "Deployment",
"target": "Target",
"coolify_target": "Coolify target",
"service_set": "Service set"
}
}
},
+72 -54
View File
@@ -1433,7 +1433,25 @@
"view_lane_new_tab": "@.capitalize:{'words.generated.view'} @:{'words.generated.lane'} @:{'words.generated.in'} @:{'words.generated.new'} @:{'words.generated.tab'}",
"view_lane_setup_new_tab": "@.capitalize:{'words.generated.view'} @:{'words.generated.lane'} @:{'words.generated.setup'} @:{'words.generated.in'} @:{'words.generated.new'} @:{'words.generated.tab'}",
"view_order_new_tab": "@.capitalize:{'words.generated.view'} @:{'words.generated.order'} @:{'words.generated.in'} @:{'words.generated.new'} @:{'words.generated.tab'}",
"view_vehicle_new_tab": "@.capitalize:{'words.generated.view'} @:{'words.generated.vehicle'} {reg} @:{'words.generated.in'} @:{'words.generated.new'} @:{'words.generated.tab'}"
"view_vehicle_new_tab": "@.capitalize:{'words.generated.view'} @:{'words.generated.vehicle'} {reg} @:{'words.generated.in'} @:{'words.generated.new'} @:{'words.generated.tab'}",
"accept_self_serve_wash": "Accept self-serve wash",
"accept_self_serve_wash_confirm": "Move this draft to customer #{customerNumber} with the self-serve details?",
"accept_self_serve_wash_success": "The self-serve wash was accepted.",
"email_notifications_section": "Email notifications",
"resend_booking_completion_confirmation": "(Re)send booking completion confirmation",
"resend_booking_completion_confirmation_error": "The booking completion confirmation could not be sent",
"resend_booking_completion_confirmation_success": "The booking completion confirmation has been sent",
"resend_booking_confirmation": "(Re)send booking confirmation",
"resend_booking_confirmation_error": "The booking confirmation could not be sent",
"resend_booking_confirmation_success": "The booking confirmation has been sent",
"resend_wash_certificate": "(Re)send wash certificate",
"resend_wash_certificate_error": "The wash certificate could not be sent",
"resend_wash_certificate_success": "The wash certificate has been sent",
"self_serve_customer": "Customer",
"self_serve_driver": "Driver",
"self_serve_elapsed": "Elapsed",
"self_serve_wash_attachment": "Self-serve wash",
"self_serve_wash_attachment_for_customer": "Self-serve wash for customer #{customerNumber}"
},
"show_details": "@.capitalize:{'words.generated.show'} @:{'words.generated.details'}",
"show_order_details": "@.capitalize:{'words.generated.show'} @:{'words.generated.order'} @:{'words.generated.details'}",
@@ -2273,6 +2291,59 @@
"username_desc": "@.capitalize:{'words.replication.article.host_mention'} @:{'words.generated.username'} @:{'words.generated.is'} @:{'words.generated.used'} @:{'words.generated.to'} @:{'words.generated.authenticate'} @:{'words.replication.article.host_mention'} @:{'words.generated.api'} @:{'words.generated.connection'}."
},
"release_manager": {
"integrations": {
"title": "GitHub and Coolify",
"subtitle": "Map GitHub repositories and branches to channel-specific Coolify services.",
"choose_repository": "Choose repository",
"add_health_url": "add health URL",
"github_token_not_configured": "GitHub token is not configured; private repositories cannot be listed.",
"open_github_token_settings": "Open GitHub token settings",
"channel": "Channel",
"app": "App",
"repository": "Repository",
"repository_message": "Example: truckwash/backend-php",
"repository_placeholder": "owner/repo",
"branch": "Branch",
"branch_message": "Example: release/canary",
"branch_placeholder": "branch",
"latest_prefix": "Latest: {commit}",
"coolify_instance": "Coolify instance",
"coolify_instance_message": "Leave empty for manual deployment records.",
"no_coolify_instance": "No Coolify instance",
"coolify_instance_placeholder": "Coolify instance id",
"coolify_service_uuid": "Coolify service UUID",
"coolify_service_uuid_message": "Select an existing service or paste a UUID.",
"coolify_service_uuid_placeholder": "Coolify service UUID",
"health_url": "Health URL",
"health_url_message": "Example: https://api-canary.example.test/ping",
"health_url_placeholder": "Health URL",
"ssl_domain": "Load balancer domain",
"ssl_domain_message": "Must be a DNS domain routed to the Coolify load balancer. Example: api-v2.truckwash.io",
"ssl_domain_placeholder": "Load balancer domain",
"https_domain_for_coolify": "Domain controlled by the load balancer",
"endpoint_mode": "Endpoint mode",
"endpoint_mode_message": "Use automatic gateway routing or manually override the public host and port.",
"endpoint_mode_auto": "Auto",
"endpoint_mode_manual": "Manual",
"manual_endpoint_host": "Manual host",
"manual_endpoint_host_message": "Public host shown in release previews when manual mode is selected.",
"manual_endpoint_host_placeholder": "api-v2.truckwash.io",
"manual_endpoint_port": "Manual public port",
"manual_endpoint_port_message": "Optional public port from 1 to 65535.",
"app_port": "App port",
"app_port_message": "Internal container port exposed to Coolify routing.",
"auto_gateway_endpoint": "Automatic gateway endpoint",
"pending_automatic_endpoint": "Automatic endpoint resolution pending",
"auto_deploy": "Auto deploy",
"auto_deploy_tooltip": "Automatically create deployments when this target changes.",
"coolify_ssl": "Coolify SSL",
"coolify_ssl_tooltip": "Ask Coolify to provision HTTPS for the configured domain.",
"deploy_now": "Deploy now",
"deploy_now_tooltip": "Start a deployment immediately after saving the target.",
"create_missing_service": "Create missing service",
"create_missing_service_tooltip": "Allow Release Manager to create a missing Coolify service.",
"test_access_tooltip": "Verify the configured GitHub token can read this repository and branch."
},
"title": "Release Manager",
"subtitle": "Gradual API and Front-End releases",
"channel_names": {
@@ -2718,59 +2789,6 @@
"severity": "Severity",
"any_severity": "Any severity",
"no_timeline_events": "No timeline events match the current filters."
},
"integrations": {
"title": "GitHub and Coolify",
"subtitle": "Map GitHub repositories and branches to channel-specific Coolify services.",
"choose_repository": "Choose repository",
"add_health_url": "add health URL",
"github_token_not_configured": "GitHub token is not configured; private repositories cannot be listed.",
"open_github_token_settings": "Open GitHub token settings",
"channel": "Channel",
"app": "App",
"repository": "Repository",
"repository_message": "Example: truckwash/backend-php",
"repository_placeholder": "owner/repo",
"branch": "Branch",
"branch_message": "Example: release/canary",
"branch_placeholder": "branch",
"latest_prefix": "Latest: {commit}",
"coolify_instance": "Coolify instance",
"coolify_instance_message": "Leave empty for manual deployment records.",
"no_coolify_instance": "No Coolify instance",
"coolify_instance_placeholder": "Coolify instance id",
"coolify_service_uuid": "Coolify service UUID",
"coolify_service_uuid_message": "Select an existing service or paste a UUID.",
"coolify_service_uuid_placeholder": "Coolify service UUID",
"health_url": "Health URL",
"health_url_message": "Example: https://api-canary.example.test/ping",
"health_url_placeholder": "Health URL",
"ssl_domain": "Load balancer domain",
"ssl_domain_message": "Must be a DNS domain routed to the Coolify load balancer. Example: api-v2.truckwash.io",
"ssl_domain_placeholder": "Load balancer domain",
"https_domain_for_coolify": "Domain controlled by the load balancer",
"endpoint_mode": "Endpoint mode",
"endpoint_mode_message": "Use automatic gateway routing or manually override the public host and port.",
"endpoint_mode_auto": "Auto",
"endpoint_mode_manual": "Manual",
"manual_endpoint_host": "Manual host",
"manual_endpoint_host_message": "Public host shown in release previews when manual mode is selected.",
"manual_endpoint_host_placeholder": "api-v2.truckwash.io",
"manual_endpoint_port": "Manual public port",
"manual_endpoint_port_message": "Optional public port from 1 to 65535.",
"app_port": "App port",
"app_port_message": "Internal container port exposed to Coolify routing.",
"auto_gateway_endpoint": "Automatic gateway endpoint",
"pending_automatic_endpoint": "Automatic endpoint resolution pending",
"auto_deploy": "Auto deploy",
"auto_deploy_tooltip": "Automatically create deployments when this target changes.",
"coolify_ssl": "Coolify SSL",
"coolify_ssl_tooltip": "Ask Coolify to provision HTTPS for the configured domain.",
"deploy_now": "Deploy now",
"deploy_now_tooltip": "Start a deployment immediately after saving the target.",
"create_missing_service": "Create missing service",
"create_missing_service_tooltip": "Allow Release Manager to create a missing Coolify service.",
"test_access_tooltip": "Verify the configured GitHub token can read this repository and branch."
}
}
},
+88 -53
View File
@@ -549,7 +549,25 @@
"view_lane_new_tab": "@:{'templates.generated.compat.admin.pos.settings_wheel.view_lane_new_tab'}",
"view_lane_setup_new_tab": "@:{'templates.generated.compat.admin.pos.settings_wheel.view_lane_setup_new_tab'}",
"view_order_new_tab": "@:{'templates.generated.compat.admin.pos.settings_wheel.view_order_new_tab'}",
"view_vehicle_new_tab": "@:{'templates.generated.compat.admin.pos.settings_wheel.view_vehicle_new_tab'}"
"view_vehicle_new_tab": "@:{'templates.generated.compat.admin.pos.settings_wheel.view_vehicle_new_tab'}",
"accept_self_serve_wash": "@:{'templates.generated.compat.admin.pos.settings_wheel.accept_self_serve_wash'}",
"accept_self_serve_wash_confirm": "@:{'templates.generated.compat.admin.pos.settings_wheel.accept_self_serve_wash_confirm'}",
"accept_self_serve_wash_success": "@:{'templates.generated.compat.admin.pos.settings_wheel.accept_self_serve_wash_success'}",
"email_notifications_section": "@:{'templates.generated.compat.admin.pos.settings_wheel.email_notifications_section'}",
"resend_booking_completion_confirmation": "@:{'templates.generated.compat.admin.pos.settings_wheel.resend_booking_completion_confirmation'}",
"resend_booking_completion_confirmation_error": "@:{'templates.generated.compat.admin.pos.settings_wheel.resend_booking_completion_confirmation_error'}",
"resend_booking_completion_confirmation_success": "@:{'templates.generated.compat.admin.pos.settings_wheel.resend_booking_completion_confirmation_success'}",
"resend_booking_confirmation": "@:{'templates.generated.compat.admin.pos.settings_wheel.resend_booking_confirmation'}",
"resend_booking_confirmation_error": "@:{'templates.generated.compat.admin.pos.settings_wheel.resend_booking_confirmation_error'}",
"resend_booking_confirmation_success": "@:{'templates.generated.compat.admin.pos.settings_wheel.resend_booking_confirmation_success'}",
"resend_wash_certificate": "@:{'templates.generated.compat.admin.pos.settings_wheel.resend_wash_certificate'}",
"resend_wash_certificate_error": "@:{'templates.generated.compat.admin.pos.settings_wheel.resend_wash_certificate_error'}",
"resend_wash_certificate_success": "@:{'templates.generated.compat.admin.pos.settings_wheel.resend_wash_certificate_success'}",
"self_serve_customer": "@:{'templates.generated.compat.admin.pos.settings_wheel.self_serve_customer'}",
"self_serve_driver": "@:{'templates.generated.compat.admin.pos.settings_wheel.self_serve_driver'}",
"self_serve_elapsed": "@:{'templates.generated.compat.admin.pos.settings_wheel.self_serve_elapsed'}",
"self_serve_wash_attachment": "@:{'templates.generated.compat.admin.pos.settings_wheel.self_serve_wash_attachment'}",
"self_serve_wash_attachment_for_customer": "@:{'templates.generated.compat.admin.pos.settings_wheel.self_serve_wash_attachment_for_customer'}"
},
"show_details": "@:{'templates.generated.compat.admin.pos.show_details'}",
"show_order_details": "@:{'templates.generated.compat.admin.pos.show_order_details'}",
@@ -1498,6 +1516,59 @@
"username_desc": "@:{'templates.generated.compat.configuration.xlvask.username_desc'}"
},
"release_manager": {
"integrations": {
"title": "@:{'templates.generated.compat.configuration.release_manager.integrations.title'}",
"subtitle": "@:{'templates.generated.compat.configuration.release_manager.integrations.subtitle'}",
"choose_repository": "@:{'templates.generated.compat.configuration.release_manager.integrations.choose_repository'}",
"add_health_url": "@:{'templates.generated.compat.configuration.release_manager.integrations.add_health_url'}",
"github_token_not_configured": "@:{'templates.generated.compat.configuration.release_manager.integrations.github_token_not_configured'}",
"open_github_token_settings": "@:{'templates.generated.compat.configuration.release_manager.integrations.open_github_token_settings'}",
"channel": "@:{'templates.generated.compat.configuration.release_manager.integrations.channel'}",
"app": "@:{'templates.generated.compat.configuration.release_manager.integrations.app'}",
"repository": "@:{'templates.generated.compat.configuration.release_manager.integrations.repository'}",
"repository_message": "@:{'templates.generated.compat.configuration.release_manager.integrations.repository_message'}",
"repository_placeholder": "@:{'templates.generated.compat.configuration.release_manager.integrations.repository_placeholder'}",
"branch": "@:{'templates.generated.compat.configuration.release_manager.integrations.branch'}",
"branch_message": "@:{'templates.generated.compat.configuration.release_manager.integrations.branch_message'}",
"branch_placeholder": "@:{'templates.generated.compat.configuration.release_manager.integrations.branch_placeholder'}",
"latest_prefix": "@:{'templates.generated.compat.configuration.release_manager.integrations.latest_prefix'}",
"coolify_instance": "@:{'templates.generated.compat.configuration.release_manager.integrations.coolify_instance'}",
"coolify_instance_message": "@:{'templates.generated.compat.configuration.release_manager.integrations.coolify_instance_message'}",
"no_coolify_instance": "@:{'templates.generated.compat.configuration.release_manager.integrations.no_coolify_instance'}",
"coolify_instance_placeholder": "@:{'templates.generated.compat.configuration.release_manager.integrations.coolify_instance_placeholder'}",
"coolify_service_uuid": "@:{'templates.generated.compat.configuration.release_manager.integrations.coolify_service_uuid'}",
"coolify_service_uuid_message": "@:{'templates.generated.compat.configuration.release_manager.integrations.coolify_service_uuid_message'}",
"coolify_service_uuid_placeholder": "@:{'templates.generated.compat.configuration.release_manager.integrations.coolify_service_uuid_placeholder'}",
"health_url": "@:{'templates.generated.compat.configuration.release_manager.integrations.health_url'}",
"health_url_message": "@:{'templates.generated.compat.configuration.release_manager.integrations.health_url_message'}",
"health_url_placeholder": "@:{'templates.generated.compat.configuration.release_manager.integrations.health_url_placeholder'}",
"ssl_domain": "@:{'templates.generated.compat.configuration.release_manager.integrations.ssl_domain'}",
"ssl_domain_message": "@:{'templates.generated.compat.configuration.release_manager.integrations.ssl_domain_message'}",
"ssl_domain_placeholder": "@:{'templates.generated.compat.configuration.release_manager.integrations.ssl_domain_placeholder'}",
"https_domain_for_coolify": "@:{'templates.generated.compat.configuration.release_manager.integrations.https_domain_for_coolify'}",
"endpoint_mode": "@:{'templates.generated.compat.configuration.release_manager.integrations.endpoint_mode'}",
"endpoint_mode_message": "@:{'templates.generated.compat.configuration.release_manager.integrations.endpoint_mode_message'}",
"endpoint_mode_auto": "@:{'templates.generated.compat.configuration.release_manager.integrations.endpoint_mode_auto'}",
"endpoint_mode_manual": "@:{'templates.generated.compat.configuration.release_manager.integrations.endpoint_mode_manual'}",
"manual_endpoint_host": "@:{'templates.generated.compat.configuration.release_manager.integrations.manual_endpoint_host'}",
"manual_endpoint_host_message": "@:{'templates.generated.compat.configuration.release_manager.integrations.manual_endpoint_host_message'}",
"manual_endpoint_host_placeholder": "@:{'templates.generated.compat.configuration.release_manager.integrations.manual_endpoint_host_placeholder'}",
"manual_endpoint_port": "@:{'templates.generated.compat.configuration.release_manager.integrations.manual_endpoint_port'}",
"manual_endpoint_port_message": "@:{'templates.generated.compat.configuration.release_manager.integrations.manual_endpoint_port_message'}",
"app_port": "@:{'templates.generated.compat.configuration.release_manager.integrations.app_port'}",
"app_port_message": "@:{'templates.generated.compat.configuration.release_manager.integrations.app_port_message'}",
"auto_gateway_endpoint": "@:{'templates.generated.compat.configuration.release_manager.integrations.auto_gateway_endpoint'}",
"pending_automatic_endpoint": "@:{'templates.generated.compat.configuration.release_manager.integrations.pending_automatic_endpoint'}",
"auto_deploy": "@:{'templates.generated.compat.configuration.release_manager.integrations.auto_deploy'}",
"auto_deploy_tooltip": "@:{'templates.generated.compat.configuration.release_manager.integrations.auto_deploy_tooltip'}",
"coolify_ssl": "@:{'templates.generated.compat.configuration.release_manager.integrations.coolify_ssl'}",
"coolify_ssl_tooltip": "@:{'templates.generated.compat.configuration.release_manager.integrations.coolify_ssl_tooltip'}",
"deploy_now": "@:{'templates.generated.compat.configuration.release_manager.integrations.deploy_now'}",
"deploy_now_tooltip": "@:{'templates.generated.compat.configuration.release_manager.integrations.deploy_now_tooltip'}",
"create_missing_service": "@:{'templates.generated.compat.configuration.release_manager.integrations.create_missing_service'}",
"create_missing_service_tooltip": "@:{'templates.generated.compat.configuration.release_manager.integrations.create_missing_service_tooltip'}",
"test_access_tooltip": "@:{'templates.generated.compat.configuration.release_manager.integrations.test_access_tooltip'}"
},
"title": "@:{'templates.generated.compat.configuration.release_manager.title'}",
"subtitle": "@:{'templates.generated.compat.configuration.release_manager.subtitle'}",
"channel_names": {
@@ -1910,58 +1981,22 @@
"any_severity": "@:{'templates.generated.compat.configuration.release_manager.replay.any_severity'}",
"no_timeline_events": "@:{'templates.generated.compat.configuration.release_manager.replay.no_timeline_events'}"
},
"integrations": {
"title": "@:{'templates.generated.compat.configuration.release_manager.integrations.title'}",
"subtitle": "@:{'templates.generated.compat.configuration.release_manager.integrations.subtitle'}",
"choose_repository": "@:{'templates.generated.compat.configuration.release_manager.integrations.choose_repository'}",
"add_health_url": "@:{'templates.generated.compat.configuration.release_manager.integrations.add_health_url'}",
"github_token_not_configured": "@:{'templates.generated.compat.configuration.release_manager.integrations.github_token_not_configured'}",
"open_github_token_settings": "@:{'templates.generated.compat.configuration.release_manager.integrations.open_github_token_settings'}",
"channel": "@:{'templates.generated.compat.configuration.release_manager.integrations.channel'}",
"app": "@:{'templates.generated.compat.configuration.release_manager.integrations.app'}",
"repository": "@:{'templates.generated.compat.configuration.release_manager.integrations.repository'}",
"repository_message": "@:{'templates.generated.compat.configuration.release_manager.integrations.repository_message'}",
"repository_placeholder": "@:{'templates.generated.compat.configuration.release_manager.integrations.repository_placeholder'}",
"branch": "@:{'templates.generated.compat.configuration.release_manager.integrations.branch'}",
"branch_message": "@:{'templates.generated.compat.configuration.release_manager.integrations.branch_message'}",
"branch_placeholder": "@:{'templates.generated.compat.configuration.release_manager.integrations.branch_placeholder'}",
"latest_prefix": "@:{'templates.generated.compat.configuration.release_manager.integrations.latest_prefix'}",
"coolify_instance": "@:{'templates.generated.compat.configuration.release_manager.integrations.coolify_instance'}",
"coolify_instance_message": "@:{'templates.generated.compat.configuration.release_manager.integrations.coolify_instance_message'}",
"no_coolify_instance": "@:{'templates.generated.compat.configuration.release_manager.integrations.no_coolify_instance'}",
"coolify_instance_placeholder": "@:{'templates.generated.compat.configuration.release_manager.integrations.coolify_instance_placeholder'}",
"coolify_service_uuid": "@:{'templates.generated.compat.configuration.release_manager.integrations.coolify_service_uuid'}",
"coolify_service_uuid_message": "@:{'templates.generated.compat.configuration.release_manager.integrations.coolify_service_uuid_message'}",
"coolify_service_uuid_placeholder": "@:{'templates.generated.compat.configuration.release_manager.integrations.coolify_service_uuid_placeholder'}",
"health_url": "@:{'templates.generated.compat.configuration.release_manager.integrations.health_url'}",
"health_url_message": "@:{'templates.generated.compat.configuration.release_manager.integrations.health_url_message'}",
"health_url_placeholder": "@:{'templates.generated.compat.configuration.release_manager.integrations.health_url_placeholder'}",
"ssl_domain": "@:{'templates.generated.compat.configuration.release_manager.integrations.ssl_domain'}",
"ssl_domain_message": "@:{'templates.generated.compat.configuration.release_manager.integrations.ssl_domain_message'}",
"ssl_domain_placeholder": "@:{'templates.generated.compat.configuration.release_manager.integrations.ssl_domain_placeholder'}",
"https_domain_for_coolify": "@:{'templates.generated.compat.configuration.release_manager.integrations.https_domain_for_coolify'}",
"endpoint_mode": "@:{'templates.generated.compat.configuration.release_manager.integrations.endpoint_mode'}",
"endpoint_mode_message": "@:{'templates.generated.compat.configuration.release_manager.integrations.endpoint_mode_message'}",
"endpoint_mode_auto": "@:{'templates.generated.compat.configuration.release_manager.integrations.endpoint_mode_auto'}",
"endpoint_mode_manual": "@:{'templates.generated.compat.configuration.release_manager.integrations.endpoint_mode_manual'}",
"manual_endpoint_host": "@:{'templates.generated.compat.configuration.release_manager.integrations.manual_endpoint_host'}",
"manual_endpoint_host_message": "@:{'templates.generated.compat.configuration.release_manager.integrations.manual_endpoint_host_message'}",
"manual_endpoint_host_placeholder": "@:{'templates.generated.compat.configuration.release_manager.integrations.manual_endpoint_host_placeholder'}",
"manual_endpoint_port": "@:{'templates.generated.compat.configuration.release_manager.integrations.manual_endpoint_port'}",
"manual_endpoint_port_message": "@:{'templates.generated.compat.configuration.release_manager.integrations.manual_endpoint_port_message'}",
"app_port": "@:{'templates.generated.compat.configuration.release_manager.integrations.app_port'}",
"app_port_message": "@:{'templates.generated.compat.configuration.release_manager.integrations.app_port_message'}",
"auto_gateway_endpoint": "@:{'templates.generated.compat.configuration.release_manager.integrations.auto_gateway_endpoint'}",
"pending_automatic_endpoint": "@:{'templates.generated.compat.configuration.release_manager.integrations.pending_automatic_endpoint'}",
"auto_deploy": "@:{'templates.generated.compat.configuration.release_manager.integrations.auto_deploy'}",
"auto_deploy_tooltip": "@:{'templates.generated.compat.configuration.release_manager.integrations.auto_deploy_tooltip'}",
"coolify_ssl": "@:{'templates.generated.compat.configuration.release_manager.integrations.coolify_ssl'}",
"coolify_ssl_tooltip": "@:{'templates.generated.compat.configuration.release_manager.integrations.coolify_ssl_tooltip'}",
"deploy_now": "@:{'templates.generated.compat.configuration.release_manager.integrations.deploy_now'}",
"deploy_now_tooltip": "@:{'templates.generated.compat.configuration.release_manager.integrations.deploy_now_tooltip'}",
"create_missing_service": "@:{'templates.generated.compat.configuration.release_manager.integrations.create_missing_service'}",
"create_missing_service_tooltip": "@:{'templates.generated.compat.configuration.release_manager.integrations.create_missing_service_tooltip'}",
"test_access_tooltip": "@:{'templates.generated.compat.configuration.release_manager.integrations.test_access_tooltip'}"
"loading": {
"assignments": "@:{'templates.generated.compat.configuration.release_manager.loading.assignments'}",
"channels": "@:{'templates.generated.compat.configuration.release_manager.loading.channels'}",
"channels_detail": "@:{'templates.generated.compat.configuration.release_manager.loading.channels_detail'}",
"data_services": "@:{'templates.generated.compat.configuration.release_manager.loading.data_services'}",
"deployments": "@:{'templates.generated.compat.configuration.release_manager.loading.deployments'}",
"github_repositories": "@:{'templates.generated.compat.configuration.release_manager.loading.github_repositories'}",
"integrations": "@:{'templates.generated.compat.configuration.release_manager.loading.integrations'}",
"operations": "@:{'templates.generated.compat.configuration.release_manager.loading.operations'}",
"refreshing_summary": "@:{'templates.generated.compat.configuration.release_manager.loading.refreshing_summary'}",
"refreshing_timeline": "@:{'templates.generated.compat.configuration.release_manager.loading.refreshing_timeline'}",
"settings": "@:{'templates.generated.compat.configuration.release_manager.loading.settings'}",
"summary": "@:{'templates.generated.compat.configuration.release_manager.loading.summary'}",
"summary_detail": "@:{'templates.generated.compat.configuration.release_manager.loading.summary_detail'}",
"timeline_events": "@:{'templates.generated.compat.configuration.release_manager.loading.timeline_events'}",
"timeline_sessions": "@:{'templates.generated.compat.configuration.release_manager.loading.timeline_sessions'}"
}
}
},
+90 -55
View File
@@ -1710,7 +1710,25 @@
"view_lane_new_tab": "@.capitalize:{'words.generated.se'} kjørefelt @:{'words.generated.i'} @:{'words.generated.ny'} @:{'words.generated.fane'}",
"view_lane_setup_new_tab": "@.capitalize:{'words.generated.se'} kjørefeltoppsett @:{'words.generated.i'} @:{'words.generated.ny'} @:{'words.generated.fane'}",
"view_order_new_tab": "@.capitalize:{'words.generated.se'} @:{'words.generated.ordre'} @:{'words.generated.i'} @:{'words.generated.ny'} @:{'words.generated.fane'}",
"view_vehicle_new_tab": "@.capitalize:{'words.generated.se'} @:{'words.generated.kjøretøy'} {reg} @:{'words.generated.i'} @:{'words.generated.ny'} @:{'words.generated.fane'}"
"view_vehicle_new_tab": "@.capitalize:{'words.generated.se'} @:{'words.generated.kjøretøy'} {reg} @:{'words.generated.i'} @:{'words.generated.ny'} @:{'words.generated.fane'}",
"accept_self_serve_wash": "Godta selvbetjent vask",
"accept_self_serve_wash_confirm": "Flytt denne kladden til kunde #{customerNumber} med selvbetjeningsdetaljene?",
"accept_self_serve_wash_success": "Den selvbetjente vasken ble godtatt.",
"email_notifications_section": "E-postvarsler",
"resend_booking_completion_confirmation": "(Re)send booking completion confirmation",
"resend_booking_completion_confirmation_error": "The booking completion confirmation could not be sent",
"resend_booking_completion_confirmation_success": "The booking completion confirmation has been sent",
"resend_booking_confirmation": "(Re)send booking confirmation",
"resend_booking_confirmation_error": "The booking confirmation could not be sent",
"resend_booking_confirmation_success": "The booking confirmation has been sent",
"resend_wash_certificate": "(Re)send wash certificate",
"resend_wash_certificate_error": "The wash certificate could not be sent",
"resend_wash_certificate_success": "The wash certificate has been sent",
"self_serve_customer": "Kunde",
"self_serve_driver": "Sjåfør",
"self_serve_elapsed": "Tid",
"self_serve_wash_attachment": "Selvbetjent vask",
"self_serve_wash_attachment_for_customer": "Selvbetjent vask for kunde #{customerNumber}"
},
"show_details": "@:{'words.generated.vis'} @:{'words.generated.detaljer'}",
"show_order_details": "@:{'words.generated.vis'} @:{'words.generated.bestillingsdetaljer'}",
@@ -2550,6 +2568,59 @@
"username_desc": "@:{'words.generated.brukernavnet'} @:{'words.generated.brukes'} @:{'words.generated.til'} @:{'words.generated.a'} @:{'words.generated.autentisere'} @:{'words.generated.api'}-@:{'words.generated.tilkoblingen'}."
},
"release_manager": {
"integrations": {
"title": "GitHub og Coolify",
"subtitle": "Knyt GitHub-repositories og branches til kanalspecifikke Coolify-services.",
"choose_repository": "Velg repository",
"add_health_url": "legg til health-URL",
"github_token_not_configured": "GitHub-token er ikke konfigurert; private repositories kan ikke vises.",
"open_github_token_settings": "Åpne GitHub token-innstillinger",
"channel": "Kanal",
"app": "App",
"repository": "Repository",
"repository_message": "Eksempel: truckwash/backend-php",
"repository_placeholder": "ejer/repo",
"branch": "Branch",
"branch_message": "Eksempel: release/canary",
"branch_placeholder": "branch",
"latest_prefix": "Seneste: {commit}",
"coolify_instance": "Coolify-instans",
"coolify_instance_message": "Lad feltet være tomt for manuelle deployment-poster.",
"no_coolify_instance": "Ingen Coolify-instans",
"coolify_instance_placeholder": "Coolify-instans-id",
"coolify_service_uuid": "Coolify service-UUID",
"coolify_service_uuid_message": "Vælg en eksisterende service eller indsæt en UUID.",
"coolify_service_uuid_placeholder": "Coolify service-UUID",
"health_url": "Health-URL",
"health_url_message": "Eksempel: https://api-canary.example.test/ping",
"health_url_placeholder": "Health-URL",
"ssl_domain": "Load balancer-domene",
"ssl_domain_message": "Må være et DNS-domene som routes til Coolify load balanceren. Eksempel: api-v2.truckwash.io",
"ssl_domain_placeholder": "Load balancer-domene",
"https_domain_for_coolify": "Domene kontrollert av load balanceren",
"endpoint_mode": "Endpoint mode",
"endpoint_mode_message": "Use automatic gateway routing or manually override the public host and port.",
"endpoint_mode_auto": "Auto",
"endpoint_mode_manual": "Manual",
"manual_endpoint_host": "Manual host",
"manual_endpoint_host_message": "Public host shown in release previews when manual mode is selected.",
"manual_endpoint_host_placeholder": "api-v2.truckwash.io",
"manual_endpoint_port": "Manual public port",
"manual_endpoint_port_message": "Optional public port from 1 to 65535.",
"app_port": "App port",
"app_port_message": "Internal container port exposed to Coolify routing.",
"auto_gateway_endpoint": "Automatic gateway endpoint",
"pending_automatic_endpoint": "Automatic endpoint resolution pending",
"auto_deploy": "Auto deploy",
"auto_deploy_tooltip": "Opret automatisk deployments, når dette mål ændres.",
"coolify_ssl": "Coolify SSL",
"coolify_ssl_tooltip": "Bed Coolify om at oprette HTTPS for det konfigurerede domæne.",
"deploy_now": "Deploy nå",
"deploy_now_tooltip": "Start en deployment straks efter målet gemmes.",
"create_missing_service": "Opprett manglende service",
"create_missing_service_tooltip": "Tillad Release Manager at oprette en manglende Coolify-service.",
"test_access_tooltip": "Bekræft, at den konfigurerede GitHub-token kan læse dette repository og branch."
},
"title": "Release Manager",
"subtitle": "Gradvise API- og Front-End-utgivelser",
"channel_names": {
@@ -2745,7 +2816,8 @@
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"use_local_frontend": "Bruk lokal frontend"
"use_local_frontend": "Bruk lokal frontend",
"switch_error": "Release channel could not be switched. The previous channel is still active."
},
"common": {
"yes": "ja",
@@ -2769,7 +2841,8 @@
"save_target": "Lagre mål",
"delete": "Slett",
"back": "Tilbake",
"next": "Neste"
"next": "Neste",
"publish_release": "Publish release"
},
"tables": {
"channel": "Kanal",
@@ -2979,58 +3052,20 @@
"any_severity": "Alle alvorligheder",
"no_timeline_events": "Ingen timeline-events matcher de aktuelle filtre."
},
"integrations": {
"title": "GitHub og Coolify",
"subtitle": "Knyt GitHub-repositories og branches til kanalspecifikke Coolify-services.",
"choose_repository": "Velg repository",
"add_health_url": "legg til health-URL",
"github_token_not_configured": "GitHub-token er ikke konfigurert; private repositories kan ikke vises.",
"open_github_token_settings": "Åpne GitHub token-innstillinger",
"channel": "Kanal",
"app": "App",
"repository": "Repository",
"repository_message": "Eksempel: truckwash/backend-php",
"repository_placeholder": "ejer/repo",
"branch": "Branch",
"branch_message": "Eksempel: release/canary",
"branch_placeholder": "branch",
"latest_prefix": "Seneste: {commit}",
"coolify_instance": "Coolify-instans",
"coolify_instance_message": "Lad feltet være tomt for manuelle deployment-poster.",
"no_coolify_instance": "Ingen Coolify-instans",
"coolify_instance_placeholder": "Coolify-instans-id",
"coolify_service_uuid": "Coolify service-UUID",
"coolify_service_uuid_message": "Vælg en eksisterende service eller indsæt en UUID.",
"coolify_service_uuid_placeholder": "Coolify service-UUID",
"health_url": "Health-URL",
"health_url_message": "Eksempel: https://api-canary.example.test/ping",
"health_url_placeholder": "Health-URL",
"ssl_domain": "Load balancer-domene",
"ssl_domain_message": "Må være et DNS-domene som routes til Coolify load balanceren. Eksempel: api-v2.truckwash.io",
"ssl_domain_placeholder": "Load balancer-domene",
"https_domain_for_coolify": "Domene kontrollert av load balanceren",
"endpoint_mode": "Endpoint mode",
"endpoint_mode_message": "Use automatic gateway routing or manually override the public host and port.",
"endpoint_mode_auto": "Auto",
"endpoint_mode_manual": "Manual",
"manual_endpoint_host": "Manual host",
"manual_endpoint_host_message": "Public host shown in release previews when manual mode is selected.",
"manual_endpoint_host_placeholder": "api-v2.truckwash.io",
"manual_endpoint_port": "Manual public port",
"manual_endpoint_port_message": "Optional public port from 1 to 65535.",
"app_port": "App port",
"app_port_message": "Internal container port exposed to Coolify routing.",
"auto_gateway_endpoint": "Automatic gateway endpoint",
"pending_automatic_endpoint": "Automatic endpoint resolution pending",
"auto_deploy": "Auto deploy",
"auto_deploy_tooltip": "Opret automatisk deployments, når dette mål ændres.",
"coolify_ssl": "Coolify SSL",
"coolify_ssl_tooltip": "Bed Coolify om at oprette HTTPS for det konfigurerede domæne.",
"deploy_now": "Deploy nå",
"deploy_now_tooltip": "Start en deployment straks efter målet gemmes.",
"create_missing_service": "Opprett manglende service",
"create_missing_service_tooltip": "Tillad Release Manager at oprette en manglende Coolify-service.",
"test_access_tooltip": "Bekræft, at den konfigurerede GitHub-token kan læse dette repository og branch."
"status": {
"confirm_issue_action": "Run this Release Manager action? It can change deployment state and will be audited.",
"choose_bundle_prompt": "Enter the bundle id to set for this channel.",
"impact": "Impact",
"cause": "Cause",
"automated_fix": "Automated fix",
"manual_fallback": "Manual fallback",
"related_deployment": "Related deployment",
"recent_result": "Recent result",
"no_automated_action": "No automated action available.",
"deployment": "Deployment",
"target": "Target",
"coolify_target": "Coolify target",
"service_set": "Service set"
}
}
},
+90 -55
View File
@@ -1760,7 +1760,25 @@
"view_lane_new_tab": "@.capitalize:{'words.generated.view'} @:{'words.generated.lane'} @:{'words.generated.in'} @:{'words.generated.new'} @:{'words.generated.tab'}",
"view_lane_setup_new_tab": "@.capitalize:{'words.generated.view'} @:{'words.generated.lane'} @:{'words.generated.setup'} @:{'words.generated.in'} @:{'words.generated.new'} @:{'words.generated.tab'}",
"view_order_new_tab": "@.capitalize:{'words.generated.view'} @:{'words.generated.order'} @:{'words.generated.in'} @:{'words.generated.new'} @:{'words.generated.tab'}",
"view_vehicle_new_tab": "@.capitalize:{'words.generated.visa'} @:{'words.generated.fordon'} {reg} @:{'words.generated.i'} @:{'words.generated.ny'} @:{'words.generated.flik'}"
"view_vehicle_new_tab": "@.capitalize:{'words.generated.visa'} @:{'words.generated.fordon'} {reg} @:{'words.generated.i'} @:{'words.generated.ny'} @:{'words.generated.flik'}",
"accept_self_serve_wash": "Godkänn självbetjäningstvätt",
"accept_self_serve_wash_confirm": "Flytta detta utkast till kund #{customerNumber} med självbetjäningsdetaljerna?",
"accept_self_serve_wash_success": "Självbetjäningstvätten godkändes.",
"email_notifications_section": "E-postaviseringar",
"resend_booking_completion_confirmation": "(Re)send booking completion confirmation",
"resend_booking_completion_confirmation_error": "The booking completion confirmation could not be sent",
"resend_booking_completion_confirmation_success": "The booking completion confirmation has been sent",
"resend_booking_confirmation": "(Re)send booking confirmation",
"resend_booking_confirmation_error": "The booking confirmation could not be sent",
"resend_booking_confirmation_success": "The booking confirmation has been sent",
"resend_wash_certificate": "(Re)send wash certificate",
"resend_wash_certificate_error": "The wash certificate could not be sent",
"resend_wash_certificate_success": "The wash certificate has been sent",
"self_serve_customer": "Kund",
"self_serve_driver": "Förare",
"self_serve_elapsed": "Tid",
"self_serve_wash_attachment": "Självbetjäningstvätt",
"self_serve_wash_attachment_for_customer": "Självbetjäningstvätt för kund #{customerNumber}"
},
"show_details": "@:{'words.generated.show'} @:{'words.generated.details'}",
"show_order_details": "@:{'words.generated.show'} @:{'words.generated.order'} @:{'words.generated.details'}",
@@ -2600,6 +2618,59 @@
"username_desc": "Användarnamnet @:{'words.generated.anvands'} @:{'words.generated.for'} @:{'words.generated.att'} @:{'words.generated.autentisera'} @:{'words.generated.api'}-@:{'words.generated.anslutningen'}."
},
"release_manager": {
"integrations": {
"title": "GitHub och Coolify",
"subtitle": "Koppla GitHub-repositories och branches till kanalspecifika Coolify-tjänster.",
"choose_repository": "Välj repository",
"add_health_url": "lägg till health-URL",
"github_token_not_configured": "GitHub-token er ikke konfigureret; private repositories kan ikke vises.",
"open_github_token_settings": "Öppna GitHub token-inställningar",
"channel": "Kanal",
"app": "App",
"repository": "Repository",
"repository_message": "Eksempel: truckwash/backend-php",
"repository_placeholder": "ejer/repo",
"branch": "Branch",
"branch_message": "Eksempel: release/canary",
"branch_placeholder": "branch",
"latest_prefix": "Seneste: {commit}",
"coolify_instance": "Coolify-instans",
"coolify_instance_message": "Lad feltet være tomt for manuelle deployment-poster.",
"no_coolify_instance": "Ingen Coolify-instans",
"coolify_instance_placeholder": "Coolify-instans-id",
"coolify_service_uuid": "Coolify service-UUID",
"coolify_service_uuid_message": "Vælg en eksisterende service eller indsæt en UUID.",
"coolify_service_uuid_placeholder": "Coolify service-UUID",
"health_url": "Health-URL",
"health_url_message": "Eksempel: https://api-canary.example.test/ping",
"health_url_placeholder": "Health-URL",
"ssl_domain": "Load balancer-domän",
"ssl_domain_message": "Måste vara en DNS-domän som routas till Coolify load balancern. Exempel: api-v2.truckwash.io",
"ssl_domain_placeholder": "Load balancer-domän",
"https_domain_for_coolify": "Domän som kontrolleras av load balancern",
"endpoint_mode": "Endpoint mode",
"endpoint_mode_message": "Use automatic gateway routing or manually override the public host and port.",
"endpoint_mode_auto": "Auto",
"endpoint_mode_manual": "Manual",
"manual_endpoint_host": "Manual host",
"manual_endpoint_host_message": "Public host shown in release previews when manual mode is selected.",
"manual_endpoint_host_placeholder": "api-v2.truckwash.io",
"manual_endpoint_port": "Manual public port",
"manual_endpoint_port_message": "Optional public port from 1 to 65535.",
"app_port": "App port",
"app_port_message": "Internal container port exposed to Coolify routing.",
"auto_gateway_endpoint": "Automatic gateway endpoint",
"pending_automatic_endpoint": "Automatic endpoint resolution pending",
"auto_deploy": "Auto deploy",
"auto_deploy_tooltip": "Opret automatisk deployments, når dette mål ændres.",
"coolify_ssl": "Coolify SSL",
"coolify_ssl_tooltip": "Bed Coolify om at oprette HTTPS for det konfigurerede domæne.",
"deploy_now": "Deploy nu",
"deploy_now_tooltip": "Start en deployment straks efter målet gemmes.",
"create_missing_service": "Skapa saknad tjänst",
"create_missing_service_tooltip": "Tillad Release Manager at oprette en manglende Coolify-service.",
"test_access_tooltip": "Bekræft, at den konfigurerede GitHub-token kan læse dette repository og branch."
},
"title": "Release Manager",
"subtitle": "Gradvisa API- och Front-End-versioner",
"channel_names": {
@@ -2795,7 +2866,8 @@
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"use_local_frontend": "Använd lokal frontend"
"use_local_frontend": "Använd lokal frontend",
"switch_error": "Release channel could not be switched. The previous channel is still active."
},
"common": {
"yes": "ja",
@@ -2819,7 +2891,8 @@
"save_target": "Spara mål",
"delete": "Radera",
"back": "Tillbaka",
"next": "Nästa"
"next": "Nästa",
"publish_release": "Publish release"
},
"tables": {
"channel": "Kanal",
@@ -3029,58 +3102,20 @@
"any_severity": "Alla allvarlighetsgrader",
"no_timeline_events": "Ingen timeline-events matcher de aktuelle filtre."
},
"integrations": {
"title": "GitHub och Coolify",
"subtitle": "Koppla GitHub-repositories och branches till kanalspecifika Coolify-tjänster.",
"choose_repository": "Välj repository",
"add_health_url": "lägg till health-URL",
"github_token_not_configured": "GitHub-token er ikke konfigureret; private repositories kan ikke vises.",
"open_github_token_settings": "Öppna GitHub token-inställningar",
"channel": "Kanal",
"app": "App",
"repository": "Repository",
"repository_message": "Eksempel: truckwash/backend-php",
"repository_placeholder": "ejer/repo",
"branch": "Branch",
"branch_message": "Eksempel: release/canary",
"branch_placeholder": "branch",
"latest_prefix": "Seneste: {commit}",
"coolify_instance": "Coolify-instans",
"coolify_instance_message": "Lad feltet være tomt for manuelle deployment-poster.",
"no_coolify_instance": "Ingen Coolify-instans",
"coolify_instance_placeholder": "Coolify-instans-id",
"coolify_service_uuid": "Coolify service-UUID",
"coolify_service_uuid_message": "Vælg en eksisterende service eller indsæt en UUID.",
"coolify_service_uuid_placeholder": "Coolify service-UUID",
"health_url": "Health-URL",
"health_url_message": "Eksempel: https://api-canary.example.test/ping",
"health_url_placeholder": "Health-URL",
"ssl_domain": "Load balancer-domän",
"ssl_domain_message": "Måste vara en DNS-domän som routas till Coolify load balancern. Exempel: api-v2.truckwash.io",
"ssl_domain_placeholder": "Load balancer-domän",
"https_domain_for_coolify": "Domän som kontrolleras av load balancern",
"endpoint_mode": "Endpoint mode",
"endpoint_mode_message": "Use automatic gateway routing or manually override the public host and port.",
"endpoint_mode_auto": "Auto",
"endpoint_mode_manual": "Manual",
"manual_endpoint_host": "Manual host",
"manual_endpoint_host_message": "Public host shown in release previews when manual mode is selected.",
"manual_endpoint_host_placeholder": "api-v2.truckwash.io",
"manual_endpoint_port": "Manual public port",
"manual_endpoint_port_message": "Optional public port from 1 to 65535.",
"app_port": "App port",
"app_port_message": "Internal container port exposed to Coolify routing.",
"auto_gateway_endpoint": "Automatic gateway endpoint",
"pending_automatic_endpoint": "Automatic endpoint resolution pending",
"auto_deploy": "Auto deploy",
"auto_deploy_tooltip": "Opret automatisk deployments, når dette mål ændres.",
"coolify_ssl": "Coolify SSL",
"coolify_ssl_tooltip": "Bed Coolify om at oprette HTTPS for det konfigurerede domæne.",
"deploy_now": "Deploy nu",
"deploy_now_tooltip": "Start en deployment straks efter målet gemmes.",
"create_missing_service": "Skapa saknad tjänst",
"create_missing_service_tooltip": "Tillad Release Manager at oprette en manglende Coolify-service.",
"test_access_tooltip": "Bekræft, at den konfigurerede GitHub-token kan læse dette repository og branch."
"status": {
"confirm_issue_action": "Run this Release Manager action? It can change deployment state and will be audited.",
"choose_bundle_prompt": "Enter the bundle id to set for this channel.",
"impact": "Impact",
"cause": "Cause",
"automated_fix": "Automated fix",
"manual_fallback": "Manual fallback",
"related_deployment": "Related deployment",
"recent_result": "Recent result",
"no_automated_action": "No automated action available.",
"deployment": "Deployment",
"target": "Target",
"coolify_target": "Coolify target",
"service_set": "Service set"
}
}
},
@@ -0,0 +1,28 @@
{
"compat": {
"admin": {
"pos": {
"settings_wheel": {
"accept_self_serve_wash": "Godkend selvbetjent vask",
"accept_self_serve_wash_confirm": "Flyt denne kladde til kunde #{customerNumber} med selvbetjeningsdetaljerne?",
"accept_self_serve_wash_success": "Den selvbetjente vask blev godkendt.",
"email_notifications_section": "E-mail notifikationer",
"resend_booking_completion_confirmation": "(Gen)send bekræftelse for færdig booking",
"resend_booking_completion_confirmation_error": "Bekræftelsen for færdig booking kunne ikke sendes",
"resend_booking_completion_confirmation_success": "Bekræftelsen for færdig booking er sendt",
"resend_booking_confirmation": "(Gen)send bookingbekræftelse",
"resend_booking_confirmation_error": "Bookingbekræftelsen kunne ikke sendes",
"resend_booking_confirmation_success": "Bookingbekræftelsen er sendt",
"resend_wash_certificate": "(Gen)send vaskecertifikat",
"resend_wash_certificate_error": "Vaskecertifikatet kunne ikke sendes",
"resend_wash_certificate_success": "Vaskecertifikatet er sendt",
"self_serve_customer": "Kunde",
"self_serve_driver": "Chauffør",
"self_serve_elapsed": "Tid",
"self_serve_wash_attachment": "Selvbetjent vask",
"self_serve_wash_attachment_for_customer": "Selvbetjent vask for kunde #{customerNumber}"
}
}
}
}
}
@@ -298,507 +298,6 @@
"subtitle": "@.capitalize:{'terms.glossary.konfiguration'} @:{'terms.glossary.af'} @:{'terms.glossary.xlvask'} @:{'terms.glossary.integrationen'}",
"title": "@:{'terms.glossary.xlvask'} @:{'terms.glossary.konfiguration'}",
"username_desc": "@.capitalize:{'terms.glossary.brugernavnet'} @:{'terms.glossary.bruges'} @:{'terms.glossary.til'} @:{'terms.glossary.at'} @:{'terms.glossary.autentificere'} @:{'terms.glossary.api'} @:{'terms.glossary.forbindelsen'}."
},
"release_manager": {
"title": "Release Manager",
"subtitle": "Gradvise API- og Front-End-udgivelser",
"channel_names": {
"stable": "Stabil",
"canary": "Canary",
"internal": "Intern"
},
"channel_descriptions": {
"stable": "Standard produktionskanal.",
"canary": "Tidlig produktionsvalideringskanal.",
"internal": "Intern kanal til medarbejdere og superbruger-validering."
},
"control_api": {
"title": "Kontrol-API",
"tooltip": "Release Manager-handlinger sendes til denne API. Brug produktions-API'en, medmindre du tester en staging-backend.",
"example": "Eksempel: https://api.truckwash.io:4433",
"endpoint_label": "API-endpoint",
"endpoint_message": "Skift kun dette, når Release Manager-endpoints er tilgængelige på mål-API'en.",
"endpoint_aria": "Release Manager kontrol-API URL",
"use_tooltip": "Indlæs release-data fra denne API",
"use": "Brug",
"reset_tooltip": "Vend tilbage til standard kontrol-API",
"reset": "Nulstil",
"known_endpoints": "Kendte kontrol-API-endpoints"
},
"tabs": {
"overview": {
"label": "Oversigt",
"description": "Kanalstatus, opsætningsfremdrift og seneste release-tilstand."
},
"channels": {
"label": "Kanaler",
"description": "Opret stabile, canary- og målrettede kanaler med rollout-grænser."
},
"assignments": {
"label": "Tildelinger",
"description": "Fastgør brugere, subbrugere eller kunder til en bestemt release-kanal."
},
"deployments": {
"label": "Udrulninger",
"description": "Start udrulninger og promover vellykkede builds."
},
"replay": {
"label": "Replay",
"description": "Aktivér målrettet opsamling og søg i release-tidslinjehændelser."
},
"integrations": {
"label": "Integrationer",
"description": "Forbind GitHub-repositories, branches og Coolify-services."
},
"settings": {
"label": "Indstillinger",
"description": "Konfigurer Release Managers GitHub-adgang og webhook-indstillinger."
}
},
"loading": {
"summary": "Indl\u00e6ser Release Manager-data...",
"refreshing_summary": "Opdaterer Release Manager-data...",
"summary_detail": "Release-status, kanaler, deployments og service-health indl\u00e6ses.",
"channels": "Indl\u00e6ser release-kanaler...",
"channels_detail": "Kanalbaner og release-afh\u00e6ngigheder indl\u00e6ses.",
"assignments": "Indl\u00e6ser release-tildelinger...",
"deployments": "Indl\u00e6ser release-deployments...",
"operations": "Indl\u00e6ser release-operationer...",
"data_services": "Indl\u00e6ser release-datatjenester...",
"integrations": "Indl\u00e6ser release-integrationer...",
"settings": "Indl\u00e6ser Release Manager-indstillinger...",
"github_repositories": "Indl\u00e6ser GitHub-repositories...",
"timeline_sessions": "Indl\u00e6ser release-tidslinjesessioner...",
"timeline_events": "Indl\u00e6ser release-tidslinjeh\u00e6ndelser...",
"refreshing_timeline": "Opdaterer release-tidslinje..."
},
"setup": {
"channels": "Kanaler",
"targets": "GitHub- og Coolify-mål",
"assignments": "Pilot-tildelinger",
"deployments": "Første udrulning",
"replay": "Replay-opsamling"
},
"stats": {
"channels": "Kanaler",
"targets": "Mål",
"deployments": "Udrulninger",
"timeline_events": "Tidslinjehændelser"
},
"overview": {
"title": "Oversigt",
"subtitle": "Aktuel kanalstatus, release-aktivitet og modulstatus.",
"guided_setup": "Guidet opsætning",
"next_step": "Næste: {step}",
"ready": "Release Manager er klar til daglig drift.",
"add_suggested_channel": "Tilføj foreslået kanal",
"module_health_empty": "Modul-health snapshots vises, når probes er blevet registreret."
},
"status": {
"confirm_issue_action": "Koer denne Release Manager-handling? Den kan aendre deployment-tilstand og bliver auditeret.",
"choose_bundle_prompt": "Indtast bundle-id'et, der skal saettes for denne kanal.",
"impact": "Konsekvens",
"cause": "Aarsag",
"automated_fix": "Automatisk rettelse",
"manual_fallback": "Manuel fallback",
"related_deployment": "Relateret deployment",
"recent_result": "Seneste resultat",
"no_automated_action": "Ingen automatisk handling tilgængelig.",
"deployment": "Deployment",
"target": "Maal",
"coolify_target": "Coolify-maal",
"service_set": "Service set"
},
"settings": {
"title": "Release Manager-indstillinger",
"subtitle": "Konfigurer GitHub-tokenet, der bruges til private repositories og branch-opslag.",
"github_token": "GitHub-token",
"github_api_url": "GitHub API-URL",
"webhook_secret": "Webhook-hemmelighed",
"github_webhook_secret": "GitHub webhook-hemmelighed",
"configured": "Konfigureret",
"not_configured": "Ikke konfigureret",
"loaded_from": "Indlæst fra {variable}",
"set_below": "Angiv {variable} nedenfor",
"private_repositories_prefix": "Private repositories læses med serverens miljøvariabel",
"private_repositories_or": "eller modulets konfigurationsvariabel",
"github_token_message": "Eksempel: github_pat_... med adgang til de private repositories, Release Manager udruller.",
"github_token_placeholder": "Lad feltet være tomt for at beholde det eksisterende token",
"github_api_url_message": "Konfigureret i ReleaseManager.github_api_url. Brug https://api.github.com medmindre GitHub Enterprise bruges.",
"webhook_secret_message": "Valgfrit; lad feltet være tomt for at beholde den eksisterende hemmelighed.",
"webhook_secret_placeholder": "Webhook HMAC-hemmelighed",
"save": "Gem indstillinger",
"back_to_integrations": "Tilbage til integrationer",
"guide": {
"steps": {
"github_token": "GitHub-token",
"github_api_url": "GitHub API-URL",
"github_webhook_secret": "GitHub webhook secret",
"review": "Gennemgang"
},
"github_token_title": "Tilføj GitHub-token",
"github_token_description": "Release Manager bruger denne token til at vise private repositories, branches og commits, før et deployment-mål gemmes eller testes.",
"configure_this_in": "Konfigurer dette i",
"server_environment_variable": "Serverens miljøvariabel",
"takes_precedence": "har forrang, når den er sat.",
"recommended_access": "Anbefalet adgang",
"recommended_access_description": "Fine-grained GitHub-token med Contents: read-adgang til hvert release-repository.",
"github_api_url_title": "Tilføj GitHub API-URL",
"github_api_url_description": "Brug GitHub Cloud som standard, eller peg på REST API-base-URLen for en GitHub Enterprise Server-installation.",
"github_api_url_invalid": "Indtast en fuld HTTP- eller HTTPS-URL.",
"github_cloud": "GitHub Cloud",
"enterprise_example": "Enterprise-eksempel",
"github_webhook_secret_title": "Tilføj GitHub webhook secret",
"github_webhook_secret_description": "Brug samme secret i GitHub repository-webhooks, så Release Manager kan verificere deployment-events, før de håndteres.",
"github_webhook_url": "GitHub webhook-URL:",
"store_shared_secret_in": "Gem den delte secret i",
"review_title": "Gennemgå GitHub-opsætning",
"review_description": "Gem værdierne, og brug derefter Integrationer til at vælge et privat repository, branch og specifik commit eller seneste commit før adgang testes.",
"ready": "Klar",
"needs_value": "Mangler værdi"
}
},
"channel_unavailable": {
"kicker": "Release Manager",
"title": "Release-kanalen er ikke klar",
"summary_prefix": "Din konto er tildelt",
"summary_suffix": ", men kanalen mangler påkrævet release-konfiguration.",
"release_bundle": "Release-bundle",
"frontend_version": "Frontend-version",
"api_version": "API-version",
"frontend_base_url": "Frontend-URL",
"api_base_url": "API-URL",
"frontend_entry": "Frontend-entry",
"release_runtime": "Release-runtime",
"checking_again": "Tjekker igen om {seconds}s",
"refresh_error": "Release-status kunne ikke opdateres. Det næste automatiske tjek prøver igen.",
"ignore": "Ignorer de næste 5 minutter",
"check_again": "Tjek igen",
"logout": "Log ud",
"base_image": "Basis-image"
},
"channel_switched": {
"kicker": "Release Manager",
"title": "Du er nu på {channel}",
"summary_prefix": "Din konto er blevet tildelt release-kanalen",
"summary_suffix": "Denne enhed husker, at du har set denne besked.",
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"frontend_version": "Frontend-version",
"api_version": "API-version",
"assigned_channel": "Tildelt kanal",
"current_app_image": "Nuværende app-image",
"current_api": "Nuværende API",
"base_image": "Basis-image",
"continue": "Fortsæt"
},
"channel_selector": {
"title": "Release-kanal",
"subtitle": "Vælg hvilken tildelt release-kanal denne enhed skal bruge.",
"sidebar_title": "Release",
"default": "Standard",
"ready": "Klar",
"unavailable": "Ikke klar",
"release_bundle": "Release-bundle",
"frontend_version": "Frontend-version",
"api_version": "API-version",
"frontend_base_url": "Frontend-URL",
"api_base_url": "API-URL",
"frontend_entry": "Frontend-entry",
"release_runtime": "Release-runtime",
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"use_local_frontend": "Brug lokal frontend",
"switch_error": "Release-kanalen kunne ikke skiftes. Den forrige kanal er stadig aktiv."
},
"common": {
"yes": "ja",
"no": "nej",
"off": "fra"
},
"actions": {
"edit": "Rediger",
"rollback": "Rul tilbage",
"update": "Opdater",
"create": "Opret",
"publish_release": "Publicer release",
"clear": "Ryd",
"assign": "Tildel",
"remove": "Fjern",
"test_access": "Test adgang",
"deploy": "Deploy",
"redeploy": "Redeploy",
"promote": "Promover",
"enable": "Aktiver",
"search": "Søg",
"save_target": "Gem mål",
"delete": "Slet",
"back": "Tilbage",
"next": "Næste"
},
"tables": {
"channel": "Kanal",
"rollout": "Udrulning",
"frontend": "Frontend",
"api": "API",
"replay": "Replay",
"actions": "Handlinger",
"module": "Modul",
"status": "Status",
"checked": "Kontrolleret",
"subject": "Emne",
"reason": "Årsag",
"expires": "Udløber",
"deployment": "Deployment",
"source": "Kilde",
"started": "Startet",
"target": "Mål",
"coolify": "Coolify",
"auto": "Auto"
},
"values": {
"app": {
"frontend": "frontend",
"api": "api"
},
"capture_level": {
"metadata": "metadata",
"full_redacted": "fuldt redigeret"
},
"subject_type": {
"user": "bruger",
"subuser": "medarbejder",
"customer": "kunde",
"channel": "kanal"
},
"severity": {
"error": "fejl",
"warning": "advarsel",
"info": "info"
},
"status": {
"ok": "ok",
"active": "aktiv",
"deployed": "deployet",
"stable": "stabil",
"enabled": "aktiveret",
"queued": "i kø",
"deploying": "deploying",
"metadata": "metadata",
"not_configured": "ikke konfigureret",
"warning": "advarsel",
"failed": "fejlet",
"down": "nede",
"error": "fejl",
"unknown": "ukendt"
}
},
"autocomplete": {
"suggested_value": "Foreslået værdi",
"suggestion": "Forslag",
"use_typed_value": "Brug indtastet værdi",
"custom": "Tilpasset",
"api_url": "API-URL",
"frontend_url": "Frontend-URL",
"known_release_url": "Kendt release-URL",
"deploy_here_with_coolify": "Deploy {app} her med Coolify",
"prepare_coolify_target": "Forbered et Coolify-mål med HTTPS/SSL aktiveret",
"coolify_ssl": "Coolify SSL",
"github_repository": "GitHub-repository",
"owner_repository": "ejer/repository",
"git_branch": "Git-branch",
"deployment_branch": "Deployment-branch",
"github_commit": "GitHub-commit",
"git_commit": "Git-commit",
"use_specific_commit_sha": "Brug specifik commit-SHA",
"custom_commit": "Tilpasset commit",
"health_url": "Health-URL",
"release_health_check": "Release health check",
"coolify_service": "Coolify-service",
"service_uuid": "Service-UUID",
"known_coolify_service_uuid": "Kendt Coolify service-UUID",
"control_api": "Kontrol-API",
"release_manager_api_endpoint": "Release Manager API-endpoint",
"module": "Modul",
"timeline_module_key": "Timeline-modulnøgle"
},
"errors": {
"github_repositories": "Kunne ikke indlæse GitHub-repositories.",
"github_branches": "Kunne ikke indlæse GitHub-branches.",
"repository_branch_required": "Repository og branch er påkrævet før GitHub-adgang kan testes.",
"github_access_failed": "Test af GitHub repository-adgang fejlede."
},
"channels": {
"title": "Kanaler",
"subtitle": "Opret og juster gradvise release-kanaler.",
"rollout_percent": "{percent}% udrulning",
"already_configured": "Allerede konfigureret",
"slug": "Slug",
"slug_message": "Eksempel: canary",
"slug_placeholder": "slug",
"name": "Navn",
"name_message": "Vises til operatører, når de gennemgår en kanal.",
"name_placeholder": "Navn",
"rollout": "Udrulning",
"rollout_message": "0-100 procent af ikke-tildelt trafik.",
"frontend_url": "Frontend-URL",
"frontend_url_message": "Eksempel: https://canary.example.test",
"frontend_url_placeholder": "Frontend-URL",
"no_matching_release_url": "Ingen matchende release-URL.",
"api_url": "API-URL",
"api_url_message": "Eksempel: https://api-canary.example.test",
"api_url_placeholder": "API-URL",
"no_matching_api_url": "Ingen matchende API-URL.",
"replay_capture": "Replay capture",
"replay_capture_message": "Metadata er sikrere til brede kanaler.",
"retention_days": "Opbevaringsdage",
"retention_days_message": "1-365 dage.",
"enabled": "Aktiveret",
"default_channel": "Standardkanal",
"replay_enabled": "Replay aktiveret",
"frontend_chip": "Frontend: {url}",
"api_chip": "API: {url}"
},
"assignments": {
"title": "Tildelinger",
"subtitle": "Fastgør brugere, medarbejdere eller kunder til release-kanaler.",
"subject": "Emne",
"subject_message": "Søg efter brugere, medarbejdere eller kunder, eller skriv et manuelt emne som user:42.",
"subject_placeholder": "Søg eller skriv emne",
"subject_empty": "Ingen emner fundet",
"group_users": "Brugere",
"group_subusers": "Medarbejdere",
"group_customers": "Kunder",
"group_manual": "Manuel",
"manual_user": "Bruger #{id}",
"manual_subuser": "Medarbejder #{id}",
"manual_customer": "Kunde #{id}",
"manual_description": "Brug indtastet værdi {subject}",
"subject_type": "Emnetype",
"subject_type_message": "Vælg identitetstypen, der skal fastgøres.",
"customer": "Kunde",
"customer_message": "Søg på kundenummer eller navn, og vælg derefter den præcise kunde.",
"customer_placeholder": "Søg kunde",
"subject_id": "Emne-ID",
"subject_id_message": "Eksempel: bruger-id 42",
"subject_id_placeholder": "Emne-id",
"channel": "Kanal",
"channel_message": "Fastgjorte emner springer procentudrulningen over.",
"reason": "Årsag",
"reason_message": "Eksempel: canary-validering for kundesupport.",
"reason_placeholder": "Årsag",
"expires": "Udløber",
"expires_message": "Lad feltet være tomt for ingen automatisk udløb."
},
"deployments": {
"title": "Deployments",
"subtitle": "Start, promover og inspicer release-deployments.",
"manual_deployment_record": "Manuel deployment-post",
"target": "Mål",
"target_message": "Vælg et gemt mål, eller behold manuelle felter redigerbare.",
"select_target_or_manual": "Vælg mål eller manuel",
"channel": "Kanal",
"app": "App",
"repository": "Repository",
"repository_message": "Eksempel: truckwash/front-end-vue",
"repository_placeholder": "ejer/repo",
"branch": "Branch",
"branch_message": "Eksempel: master",
"branch_placeholder": "branch",
"commit_selection": "Commit-valg",
"commit_selection_message": "Seneste slås op som branchens head med den konfigurerede GitHub-token.",
"latest_from_branch": "Seneste fra branch",
"specific_commit": "Specifik commit",
"specific_commit_message": "Eksempel: feedface1234",
"commit_sha_placeholder": "commit sha",
"version_label": "Versionslabel",
"version_label_message": "Eksempel: api-2026.05.19",
"version_label_placeholder": "versionslabel",
"commit_prefix": "Commit: {commit}",
"test_access_tooltip": "Bekræft token-adgang til det valgte repository, branch og commit."
},
"replay": {
"title": "Replay",
"subtitle": "Aktiver målrettet capture og gennemgå fejltimelines trin for trin.",
"capture_channel": "Capture {channel}",
"target_type": "Måltype",
"target": "Mål",
"target_message": "Eksempel: bruger-id 42 eller kanal-slug canary.",
"target_placeholder": "Mål-id eller kanal-slug",
"channel_scope": "Kanalafgrænsning",
"channel_scope_message": "Valgfrit; begrænser replay capture til en kanal.",
"no_channel_scope": "Ingen kanalafgrænsning",
"capture_level": "Capture-niveau",
"expires": "Udløber",
"expires_message": "Lad feltet være tomt for manuel deaktivering.",
"trace_id": "Trace-ID",
"trace_id_message": "Eksempel: trace-canary-1",
"trace_id_placeholder": "Trace-id",
"channel": "Kanal",
"channel_placeholder": "Kanal",
"principal_id": "Principal-ID",
"principal_id_placeholder": "Principal-id",
"module": "Modul",
"module_placeholder": "Modul",
"severity": "Alvorlighed",
"any_severity": "Alle alvorligheder",
"no_timeline_events": "Ingen timeline-events matcher de aktuelle filtre."
},
"integrations": {
"title": "GitHub og Coolify",
"subtitle": "Knyt GitHub-repositories og branches til kanalspecifikke Coolify-services.",
"choose_repository": "Vælg repository",
"add_health_url": "tilføj health-URL",
"github_token_not_configured": "GitHub-token er ikke konfigureret; private repositories kan ikke vises.",
"open_github_token_settings": "Åbn GitHub token-indstillinger",
"channel": "Kanal",
"app": "App",
"repository": "Repository",
"repository_message": "Eksempel: truckwash/backend-php",
"repository_placeholder": "ejer/repo",
"branch": "Branch",
"branch_message": "Eksempel: release/canary",
"branch_placeholder": "branch",
"latest_prefix": "Seneste: {commit}",
"coolify_instance": "Coolify-instans",
"coolify_instance_message": "Lad feltet være tomt for manuelle deployment-poster.",
"no_coolify_instance": "Ingen Coolify-instans",
"coolify_instance_placeholder": "Coolify-instans-id",
"coolify_service_uuid": "Coolify service-UUID",
"coolify_service_uuid_message": "Vælg en eksisterende service eller indsæt en UUID.",
"coolify_service_uuid_placeholder": "Coolify service-UUID",
"health_url": "Health-URL",
"health_url_message": "Eksempel: https://api-canary.example.test/ping",
"health_url_placeholder": "Health-URL",
"ssl_domain": "Load balancer-domæne",
"ssl_domain_message": "Skal være et DNS-domæne, der routes til Coolify load balanceren. Eksempel: api-v2.truckwash.io",
"ssl_domain_placeholder": "Load balancer-domæne",
"https_domain_for_coolify": "Domæne kontrolleret af load balanceren",
"endpoint_mode": "Endpoint mode",
"endpoint_mode_message": "Use automatic gateway routing or manually override the public host and port.",
"endpoint_mode_auto": "Auto",
"endpoint_mode_manual": "Manual",
"manual_endpoint_host": "Manual host",
"manual_endpoint_host_message": "Public host shown in release previews when manual mode is selected.",
"manual_endpoint_host_placeholder": "api-v2.truckwash.io",
"manual_endpoint_port": "Manual public port",
"manual_endpoint_port_message": "Optional public port from 1 to 65535.",
"app_port": "App port",
"app_port_message": "Internal container port exposed to Coolify routing.",
"auto_gateway_endpoint": "Automatic gateway endpoint",
"pending_automatic_endpoint": "Automatic endpoint resolution pending",
"auto_deploy": "Auto deploy",
"auto_deploy_tooltip": "Opret automatisk deployments, når dette mål ændres.",
"coolify_ssl": "Coolify SSL",
"coolify_ssl_tooltip": "Bed Coolify om at oprette HTTPS for det konfigurerede domæne.",
"deploy_now": "Deploy nu",
"deploy_now_tooltip": "Start en deployment straks efter målet gemmes.",
"create_missing_service": "Opret manglende service",
"create_missing_service_tooltip": "Tillad Release Manager at oprette en manglende Coolify-service.",
"test_access_tooltip": "Bekræft, at den konfigurerede GitHub-token kan læse dette repository og branch."
}
}
}
}
@@ -0,0 +1,61 @@
{
"compat": {
"configuration": {
"release_manager": {
"integrations": {
"title": "GitHub og Coolify",
"subtitle": "Knyt GitHub-repositories og branches til kanalspecifikke Coolify-services.",
"choose_repository": "Vælg repository",
"add_health_url": "tilføj health-URL",
"github_token_not_configured": "GitHub-token er ikke konfigureret; private repositories kan ikke vises.",
"open_github_token_settings": "Åbn GitHub token-indstillinger",
"channel": "Kanal",
"app": "App",
"repository": "Repository",
"repository_message": "Eksempel: truckwash/backend-php",
"repository_placeholder": "ejer/repo",
"branch": "Branch",
"branch_message": "Eksempel: release/canary",
"branch_placeholder": "branch",
"latest_prefix": "Seneste: {commit}",
"coolify_instance": "Coolify-instans",
"coolify_instance_message": "Lad feltet være tomt for manuelle deployment-poster.",
"no_coolify_instance": "Ingen Coolify-instans",
"coolify_instance_placeholder": "Coolify-instans-id",
"coolify_service_uuid": "Coolify service-UUID",
"coolify_service_uuid_message": "Vælg en eksisterende service eller indsæt en UUID.",
"coolify_service_uuid_placeholder": "Coolify service-UUID",
"health_url": "Health-URL",
"health_url_message": "Eksempel: https://api-canary.example.test/ping",
"health_url_placeholder": "Health-URL",
"ssl_domain": "Load balancer-domæne",
"ssl_domain_message": "Skal være et DNS-domæne, der routes til Coolify load balanceren. Eksempel: api-v2.truckwash.io",
"ssl_domain_placeholder": "Load balancer-domæne",
"https_domain_for_coolify": "Domæne kontrolleret af load balanceren",
"endpoint_mode": "Endpoint mode",
"endpoint_mode_message": "Use automatic gateway routing or manually override the public host and port.",
"endpoint_mode_auto": "Auto",
"endpoint_mode_manual": "Manual",
"manual_endpoint_host": "Manual host",
"manual_endpoint_host_message": "Public host shown in release previews when manual mode is selected.",
"manual_endpoint_host_placeholder": "api-v2.truckwash.io",
"manual_endpoint_port": "Manual public port",
"manual_endpoint_port_message": "Optional public port from 1 to 65535.",
"app_port": "App port",
"app_port_message": "Internal container port exposed to Coolify routing.",
"auto_gateway_endpoint": "Automatic gateway endpoint",
"pending_automatic_endpoint": "Automatic endpoint resolution pending",
"auto_deploy": "Auto deploy",
"auto_deploy_tooltip": "Opret automatisk deployments, når dette mål ændres.",
"coolify_ssl": "Coolify SSL",
"coolify_ssl_tooltip": "Bed Coolify om at oprette HTTPS for det konfigurerede domæne.",
"deploy_now": "Deploy nu",
"deploy_now_tooltip": "Start en deployment straks efter målet gemmes.",
"create_missing_service": "Opret manglende service",
"create_missing_service_tooltip": "Tillad Release Manager at oprette en manglende Coolify-service.",
"test_access_tooltip": "Bekræft, at den konfigurerede GitHub-token kan læse dette repository og branch."
}
}
}
}
}
@@ -0,0 +1,454 @@
{
"compat": {
"configuration": {
"release_manager": {
"title": "Release Manager",
"subtitle": "Gradvise API- og Front-End-udgivelser",
"channel_names": {
"stable": "Stabil",
"canary": "Canary",
"internal": "Intern"
},
"channel_descriptions": {
"stable": "Standard produktionskanal.",
"canary": "Tidlig produktionsvalideringskanal.",
"internal": "Intern kanal til medarbejdere og superbruger-validering."
},
"control_api": {
"title": "Kontrol-API",
"tooltip": "Release Manager-handlinger sendes til denne API. Brug produktions-API'en, medmindre du tester en staging-backend.",
"example": "Eksempel: https://api.truckwash.io:4433",
"endpoint_label": "API-endpoint",
"endpoint_message": "Skift kun dette, når Release Manager-endpoints er tilgængelige på mål-API'en.",
"endpoint_aria": "Release Manager kontrol-API URL",
"use_tooltip": "Indlæs release-data fra denne API",
"use": "Brug",
"reset_tooltip": "Vend tilbage til standard kontrol-API",
"reset": "Nulstil",
"known_endpoints": "Kendte kontrol-API-endpoints"
},
"tabs": {
"overview": {
"label": "Oversigt",
"description": "Kanalstatus, opsætningsfremdrift og seneste release-tilstand."
},
"channels": {
"label": "Kanaler",
"description": "Opret stabile, canary- og målrettede kanaler med rollout-grænser."
},
"assignments": {
"label": "Tildelinger",
"description": "Fastgør brugere, subbrugere eller kunder til en bestemt release-kanal."
},
"deployments": {
"label": "Udrulninger",
"description": "Start udrulninger og promover vellykkede builds."
},
"replay": {
"label": "Replay",
"description": "Aktivér målrettet opsamling og søg i release-tidslinjehændelser."
},
"integrations": {
"label": "Integrationer",
"description": "Forbind GitHub-repositories, branches og Coolify-services."
},
"settings": {
"label": "Indstillinger",
"description": "Konfigurer Release Managers GitHub-adgang og webhook-indstillinger."
}
},
"loading": {
"summary": "Indlæser Release Manager-data...",
"refreshing_summary": "Opdaterer Release Manager-data...",
"summary_detail": "Release-status, kanaler, deployments og service-health indlæses.",
"channels": "Indlæser release-kanaler...",
"channels_detail": "Kanalbaner og release-afhængigheder indlæses.",
"assignments": "Indlæser release-tildelinger...",
"deployments": "Indlæser release-deployments...",
"operations": "Indlæser release-operationer...",
"data_services": "Indlæser release-datatjenester...",
"integrations": "Indlæser release-integrationer...",
"settings": "Indlæser Release Manager-indstillinger...",
"github_repositories": "Indlæser GitHub-repositories...",
"timeline_sessions": "Indlæser release-tidslinjesessioner...",
"timeline_events": "Indlæser release-tidslinjehændelser...",
"refreshing_timeline": "Opdaterer release-tidslinje..."
},
"setup": {
"channels": "Kanaler",
"targets": "GitHub- og Coolify-mål",
"assignments": "Pilot-tildelinger",
"deployments": "Første udrulning",
"replay": "Replay-opsamling"
},
"stats": {
"channels": "Kanaler",
"targets": "Mål",
"deployments": "Udrulninger",
"timeline_events": "Tidslinjehændelser"
},
"overview": {
"title": "Oversigt",
"subtitle": "Aktuel kanalstatus, release-aktivitet og modulstatus.",
"guided_setup": "Guidet opsætning",
"next_step": "Næste: {step}",
"ready": "Release Manager er klar til daglig drift.",
"add_suggested_channel": "Tilføj foreslået kanal",
"module_health_empty": "Modul-health snapshots vises, når probes er blevet registreret."
},
"status": {
"confirm_issue_action": "Koer denne Release Manager-handling? Den kan aendre deployment-tilstand og bliver auditeret.",
"choose_bundle_prompt": "Indtast bundle-id'et, der skal saettes for denne kanal.",
"impact": "Konsekvens",
"cause": "Aarsag",
"automated_fix": "Automatisk rettelse",
"manual_fallback": "Manuel fallback",
"related_deployment": "Relateret deployment",
"recent_result": "Seneste resultat",
"no_automated_action": "Ingen automatisk handling tilgængelig.",
"deployment": "Deployment",
"target": "Maal",
"coolify_target": "Coolify-maal",
"service_set": "Service set"
},
"settings": {
"title": "Release Manager-indstillinger",
"subtitle": "Konfigurer GitHub-tokenet, der bruges til private repositories og branch-opslag.",
"github_token": "GitHub-token",
"github_api_url": "GitHub API-URL",
"webhook_secret": "Webhook-hemmelighed",
"github_webhook_secret": "GitHub webhook-hemmelighed",
"configured": "Konfigureret",
"not_configured": "Ikke konfigureret",
"loaded_from": "Indlæst fra {variable}",
"set_below": "Angiv {variable} nedenfor",
"private_repositories_prefix": "Private repositories læses med serverens miljøvariabel",
"private_repositories_or": "eller modulets konfigurationsvariabel",
"github_token_message": "Eksempel: github_pat_... med adgang til de private repositories, Release Manager udruller.",
"github_token_placeholder": "Lad feltet være tomt for at beholde det eksisterende token",
"github_api_url_message": "Konfigureret i ReleaseManager.github_api_url. Brug https://api.github.com medmindre GitHub Enterprise bruges.",
"webhook_secret_message": "Valgfrit; lad feltet være tomt for at beholde den eksisterende hemmelighed.",
"webhook_secret_placeholder": "Webhook HMAC-hemmelighed",
"save": "Gem indstillinger",
"back_to_integrations": "Tilbage til integrationer",
"guide": {
"steps": {
"github_token": "GitHub-token",
"github_api_url": "GitHub API-URL",
"github_webhook_secret": "GitHub webhook secret",
"review": "Gennemgang"
},
"github_token_title": "Tilføj GitHub-token",
"github_token_description": "Release Manager bruger denne token til at vise private repositories, branches og commits, før et deployment-mål gemmes eller testes.",
"configure_this_in": "Konfigurer dette i",
"server_environment_variable": "Serverens miljøvariabel",
"takes_precedence": "har forrang, når den er sat.",
"recommended_access": "Anbefalet adgang",
"recommended_access_description": "Fine-grained GitHub-token med Contents: read-adgang til hvert release-repository.",
"github_api_url_title": "Tilføj GitHub API-URL",
"github_api_url_description": "Brug GitHub Cloud som standard, eller peg på REST API-base-URLen for en GitHub Enterprise Server-installation.",
"github_api_url_invalid": "Indtast en fuld HTTP- eller HTTPS-URL.",
"github_cloud": "GitHub Cloud",
"enterprise_example": "Enterprise-eksempel",
"github_webhook_secret_title": "Tilføj GitHub webhook secret",
"github_webhook_secret_description": "Brug samme secret i GitHub repository-webhooks, så Release Manager kan verificere deployment-events, før de håndteres.",
"github_webhook_url": "GitHub webhook-URL:",
"store_shared_secret_in": "Gem den delte secret i",
"review_title": "Gennemgå GitHub-opsætning",
"review_description": "Gem værdierne, og brug derefter Integrationer til at vælge et privat repository, branch og specifik commit eller seneste commit før adgang testes.",
"ready": "Klar",
"needs_value": "Mangler værdi"
}
},
"channel_unavailable": {
"kicker": "Release Manager",
"title": "Release-kanalen er ikke klar",
"summary_prefix": "Din konto er tildelt",
"summary_suffix": ", men kanalen mangler påkrævet release-konfiguration.",
"release_bundle": "Release-bundle",
"frontend_version": "Frontend-version",
"api_version": "API-version",
"frontend_base_url": "Frontend-URL",
"api_base_url": "API-URL",
"frontend_entry": "Frontend-entry",
"release_runtime": "Release-runtime",
"checking_again": "Tjekker igen om {seconds}s",
"refresh_error": "Release-status kunne ikke opdateres. Det næste automatiske tjek prøver igen.",
"ignore": "Ignorer de næste 5 minutter",
"check_again": "Tjek igen",
"logout": "Log ud",
"base_image": "Basis-image"
},
"channel_switched": {
"kicker": "Release Manager",
"title": "Du er nu på {channel}",
"summary_prefix": "Din konto er blevet tildelt release-kanalen",
"summary_suffix": "Denne enhed husker, at du har set denne besked.",
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"frontend_version": "Frontend-version",
"api_version": "API-version",
"assigned_channel": "Tildelt kanal",
"current_app_image": "Nuværende app-image",
"current_api": "Nuværende API",
"base_image": "Basis-image",
"continue": "Fortsæt"
},
"channel_selector": {
"title": "Release-kanal",
"subtitle": "Vælg hvilken tildelt release-kanal denne enhed skal bruge.",
"sidebar_title": "Release",
"default": "Standard",
"ready": "Klar",
"unavailable": "Ikke klar",
"release_bundle": "Release-bundle",
"frontend_version": "Frontend-version",
"api_version": "API-version",
"frontend_base_url": "Frontend-URL",
"api_base_url": "API-URL",
"frontend_entry": "Frontend-entry",
"release_runtime": "Release-runtime",
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"use_local_frontend": "Brug lokal frontend",
"switch_error": "Release-kanalen kunne ikke skiftes. Den forrige kanal er stadig aktiv."
},
"common": {
"yes": "ja",
"no": "nej",
"off": "fra"
},
"actions": {
"edit": "Rediger",
"rollback": "Rul tilbage",
"update": "Opdater",
"create": "Opret",
"publish_release": "Publicer release",
"clear": "Ryd",
"assign": "Tildel",
"remove": "Fjern",
"test_access": "Test adgang",
"deploy": "Deploy",
"redeploy": "Redeploy",
"promote": "Promover",
"enable": "Aktiver",
"search": "Søg",
"save_target": "Gem mål",
"delete": "Slet",
"back": "Tilbage",
"next": "Næste"
},
"tables": {
"channel": "Kanal",
"rollout": "Udrulning",
"frontend": "Frontend",
"api": "API",
"replay": "Replay",
"actions": "Handlinger",
"module": "Modul",
"status": "Status",
"checked": "Kontrolleret",
"subject": "Emne",
"reason": "Årsag",
"expires": "Udløber",
"deployment": "Deployment",
"source": "Kilde",
"started": "Startet",
"target": "Mål",
"coolify": "Coolify",
"auto": "Auto"
},
"values": {
"app": {
"frontend": "frontend",
"api": "api"
},
"capture_level": {
"metadata": "metadata",
"full_redacted": "fuldt redigeret"
},
"subject_type": {
"user": "bruger",
"subuser": "medarbejder",
"customer": "kunde",
"channel": "kanal"
},
"severity": {
"error": "fejl",
"warning": "advarsel",
"info": "info"
},
"status": {
"ok": "ok",
"active": "aktiv",
"deployed": "deployet",
"stable": "stabil",
"enabled": "aktiveret",
"queued": "i kø",
"deploying": "deploying",
"metadata": "metadata",
"not_configured": "ikke konfigureret",
"warning": "advarsel",
"failed": "fejlet",
"down": "nede",
"error": "fejl",
"unknown": "ukendt"
}
},
"autocomplete": {
"suggested_value": "Foreslået værdi",
"suggestion": "Forslag",
"use_typed_value": "Brug indtastet værdi",
"custom": "Tilpasset",
"api_url": "API-URL",
"frontend_url": "Frontend-URL",
"known_release_url": "Kendt release-URL",
"deploy_here_with_coolify": "Deploy {app} her med Coolify",
"prepare_coolify_target": "Forbered et Coolify-mål med HTTPS/SSL aktiveret",
"coolify_ssl": "Coolify SSL",
"github_repository": "GitHub-repository",
"owner_repository": "ejer/repository",
"git_branch": "Git-branch",
"deployment_branch": "Deployment-branch",
"github_commit": "GitHub-commit",
"git_commit": "Git-commit",
"use_specific_commit_sha": "Brug specifik commit-SHA",
"custom_commit": "Tilpasset commit",
"health_url": "Health-URL",
"release_health_check": "Release health check",
"coolify_service": "Coolify-service",
"service_uuid": "Service-UUID",
"known_coolify_service_uuid": "Kendt Coolify service-UUID",
"control_api": "Kontrol-API",
"release_manager_api_endpoint": "Release Manager API-endpoint",
"module": "Modul",
"timeline_module_key": "Timeline-modulnøgle"
},
"errors": {
"github_repositories": "Kunne ikke indlæse GitHub-repositories.",
"github_branches": "Kunne ikke indlæse GitHub-branches.",
"repository_branch_required": "Repository og branch er påkrævet før GitHub-adgang kan testes.",
"github_access_failed": "Test af GitHub repository-adgang fejlede."
},
"channels": {
"title": "Kanaler",
"subtitle": "Opret og juster gradvise release-kanaler.",
"rollout_percent": "{percent}% udrulning",
"already_configured": "Allerede konfigureret",
"slug": "Slug",
"slug_message": "Eksempel: canary",
"slug_placeholder": "slug",
"name": "Navn",
"name_message": "Vises til operatører, når de gennemgår en kanal.",
"name_placeholder": "Navn",
"rollout": "Udrulning",
"rollout_message": "0-100 procent af ikke-tildelt trafik.",
"frontend_url": "Frontend-URL",
"frontend_url_message": "Eksempel: https://canary.example.test",
"frontend_url_placeholder": "Frontend-URL",
"no_matching_release_url": "Ingen matchende release-URL.",
"api_url": "API-URL",
"api_url_message": "Eksempel: https://api-canary.example.test",
"api_url_placeholder": "API-URL",
"no_matching_api_url": "Ingen matchende API-URL.",
"replay_capture": "Replay capture",
"replay_capture_message": "Metadata er sikrere til brede kanaler.",
"retention_days": "Opbevaringsdage",
"retention_days_message": "1-365 dage.",
"enabled": "Aktiveret",
"default_channel": "Standardkanal",
"replay_enabled": "Replay aktiveret",
"frontend_chip": "Frontend: {url}",
"api_chip": "API: {url}"
},
"assignments": {
"title": "Tildelinger",
"subtitle": "Fastgør brugere, medarbejdere eller kunder til release-kanaler.",
"subject": "Emne",
"subject_message": "Søg efter brugere, medarbejdere eller kunder, eller skriv et manuelt emne som user:42.",
"subject_placeholder": "Søg eller skriv emne",
"subject_empty": "Ingen emner fundet",
"group_users": "Brugere",
"group_subusers": "Medarbejdere",
"group_customers": "Kunder",
"group_manual": "Manuel",
"manual_user": "Bruger #{id}",
"manual_subuser": "Medarbejder #{id}",
"manual_customer": "Kunde #{id}",
"manual_description": "Brug indtastet værdi {subject}",
"subject_type": "Emnetype",
"subject_type_message": "Vælg identitetstypen, der skal fastgøres.",
"customer": "Kunde",
"customer_message": "Søg på kundenummer eller navn, og vælg derefter den præcise kunde.",
"customer_placeholder": "Søg kunde",
"subject_id": "Emne-ID",
"subject_id_message": "Eksempel: bruger-id 42",
"subject_id_placeholder": "Emne-id",
"channel": "Kanal",
"channel_message": "Fastgjorte emner springer procentudrulningen over.",
"reason": "Årsag",
"reason_message": "Eksempel: canary-validering for kundesupport.",
"reason_placeholder": "Årsag",
"expires": "Udløber",
"expires_message": "Lad feltet være tomt for ingen automatisk udløb."
},
"deployments": {
"title": "Deployments",
"subtitle": "Start, promover og inspicer release-deployments.",
"manual_deployment_record": "Manuel deployment-post",
"target": "Mål",
"target_message": "Vælg et gemt mål, eller behold manuelle felter redigerbare.",
"select_target_or_manual": "Vælg mål eller manuel",
"channel": "Kanal",
"app": "App",
"repository": "Repository",
"repository_message": "Eksempel: truckwash/front-end-vue",
"repository_placeholder": "ejer/repo",
"branch": "Branch",
"branch_message": "Eksempel: master",
"branch_placeholder": "branch",
"commit_selection": "Commit-valg",
"commit_selection_message": "Seneste slås op som branchens head med den konfigurerede GitHub-token.",
"latest_from_branch": "Seneste fra branch",
"specific_commit": "Specifik commit",
"specific_commit_message": "Eksempel: feedface1234",
"commit_sha_placeholder": "commit sha",
"version_label": "Versionslabel",
"version_label_message": "Eksempel: api-2026.05.19",
"version_label_placeholder": "versionslabel",
"commit_prefix": "Commit: {commit}",
"test_access_tooltip": "Bekræft token-adgang til det valgte repository, branch og commit."
},
"replay": {
"title": "Replay",
"subtitle": "Aktiver målrettet capture og gennemgå fejltimelines trin for trin.",
"capture_channel": "Capture {channel}",
"target_type": "Måltype",
"target": "Mål",
"target_message": "Eksempel: bruger-id 42 eller kanal-slug canary.",
"target_placeholder": "Mål-id eller kanal-slug",
"channel_scope": "Kanalafgrænsning",
"channel_scope_message": "Valgfrit; begrænser replay capture til en kanal.",
"no_channel_scope": "Ingen kanalafgrænsning",
"capture_level": "Capture-niveau",
"expires": "Udløber",
"expires_message": "Lad feltet være tomt for manuel deaktivering.",
"trace_id": "Trace-ID",
"trace_id_message": "Eksempel: trace-canary-1",
"trace_id_placeholder": "Trace-id",
"channel": "Kanal",
"channel_placeholder": "Kanal",
"principal_id": "Principal-ID",
"principal_id_placeholder": "Principal-id",
"module": "Modul",
"module_placeholder": "Modul",
"severity": "Alvorlighed",
"any_severity": "Alle alvorligheder",
"no_timeline_events": "Ingen timeline-events matcher de aktuelle filtre."
}
}
}
}
}
+1 -1
View File
@@ -83,7 +83,7 @@
"api": "API",
"app": "app",
"appen": "appen",
"ar": "år",
"ar": "@:{'terms.glossary.years'}",
"are": "are",
"arsag": "årsag",
"at": "at",
+1 -1
View File
@@ -18,7 +18,7 @@
"nøgle": "nøgle",
"nogle": "nogle",
"nok": "nok",
"nøkkel": "nøgle",
"nøkkel": "@:{'terms.glossary.nøgle'}",
"nøkkelen": "nøglen",
"not": "not",
"note": "note",
@@ -0,0 +1,28 @@
{
"compat": {
"admin": {
"pos": {
"settings_wheel": {
"accept_self_serve_wash": "Self-Service-Wäsche akzeptieren",
"accept_self_serve_wash_confirm": "Diesen Entwurf mit den Self-Service-Details zu Kunde #{customerNumber} verschieben?",
"accept_self_serve_wash_success": "Die Self-Service-Wäsche wurde akzeptiert.",
"email_notifications_section": "E-Mail-Benachrichtigungen",
"resend_booking_completion_confirmation": "(Re)send booking completion confirmation",
"resend_booking_completion_confirmation_error": "The booking completion confirmation could not be sent",
"resend_booking_completion_confirmation_success": "The booking completion confirmation has been sent",
"resend_booking_confirmation": "(Re)send booking confirmation",
"resend_booking_confirmation_error": "The booking confirmation could not be sent",
"resend_booking_confirmation_success": "The booking confirmation has been sent",
"resend_wash_certificate": "(Re)send wash certificate",
"resend_wash_certificate_error": "The wash certificate could not be sent",
"resend_wash_certificate_success": "The wash certificate has been sent",
"self_serve_customer": "Kunde",
"self_serve_driver": "Fahrer",
"self_serve_elapsed": "Zeit",
"self_serve_wash_attachment": "Self-Service-Wäsche",
"self_serve_wash_attachment_for_customer": "Self-Service-Wäsche für Kunde #{customerNumber}"
}
}
}
}
}
@@ -298,490 +298,6 @@
"subtitle": "@:{'terms.glossary.konfiguration'} @:{'terms.glossary.der'} @:{'terms.glossary.xlvask'}-@.capitalize:{'terms.glossary.integration'}",
"title": "@:{'terms.glossary.xlvask'}-@:{'terms.glossary.konfiguration'}",
"username_desc": "@.capitalize:{'terms.glossary.der'} @:{'terms.glossary.benutzername'} @:{'terms.glossary.wird'} @:{'terms.glossary.zur'} @:{'terms.glossary.authentifizierung'} @:{'terms.glossary.der'} @:{'terms.glossary.api'}-@:{'terms.glossary.verbindung'} @:{'terms.glossary.verwendet'}."
},
"release_manager": {
"title": "Release Manager",
"subtitle": "Schrittweise API- und Front-End-Releases",
"channel_names": {
"stable": "Stabil",
"canary": "Canary",
"internal": "Intern"
},
"channel_descriptions": {
"stable": "Standard-Produktionskanal.",
"canary": "Früher Produktionsvalidierungskanal.",
"internal": "Interner Kanal für Mitarbeitende und Superuser-Validierung."
},
"control_api": {
"title": "Kontroll-API",
"tooltip": "Release-Manager-Aktionen werden an diese API gesendet. Verwende die Produktions-Kontroll-API, außer du testest ein Staging-Backend.",
"example": "Beispiel: https://api.truckwash.io:4433",
"endpoint_label": "API-Endpunkt",
"endpoint_message": "Ändere dies nur, wenn Release-Manager-Endpunkte auf der Ziel-API verfügbar sind.",
"endpoint_aria": "Release Manager Kontroll-API-URL",
"use_tooltip": "Release-Daten von dieser API laden",
"use": "Verwenden",
"reset_tooltip": "Zur Standard-Kontroll-API zurückkehren",
"reset": "Zurücksetzen",
"known_endpoints": "Bekannte Kontroll-API-Endpunkte"
},
"tabs": {
"overview": {
"label": "Übersicht",
"description": "Kanalzustand, Einrichtungsfortschritt und aktueller Release-Status."
},
"channels": {
"label": "Kanäle",
"description": "Stabile, Canary- und Zielkanäle mit Rollout-Grenzen erstellen."
},
"assignments": {
"label": "Zuweisungen",
"description": "Benutzer, Unterbenutzer oder Kunden einem bestimmten Release-Kanal zuweisen."
},
"deployments": {
"label": "Bereitstellungen",
"description": "Bereitstellungen starten und erfolgreiche Builds promoten."
},
"replay": {
"label": "Replay",
"description": "Gezielte Erfassung aktivieren und Release-Timeline-Ereignisse durchsuchen."
},
"integrations": {
"label": "Integrationen",
"description": "GitHub-Repositories, Branches und Coolify-Dienste verbinden."
},
"settings": {
"label": "Einstellungen",
"description": "GitHub-Zugriff und Webhook-Einstellungen des Release Managers konfigurieren."
}
},
"loading": {
"summary": "Release Manager-Daten werden geladen...",
"refreshing_summary": "Release Manager-Daten werden aktualisiert...",
"summary_detail": "Release-Status, Kanale, Deployments und Servicezustand werden geladen.",
"channels": "Release-Kanale werden geladen...",
"channels_detail": "Kanalansichten und Release-Abhangigkeiten werden geladen.",
"assignments": "Release-Zuweisungen werden geladen...",
"deployments": "Release-Deployments werden geladen...",
"operations": "Release-Operationen werden geladen...",
"data_services": "Release-Datendienste werden geladen...",
"integrations": "Release-Integrationen werden geladen...",
"settings": "Release Manager-Einstellungen werden geladen...",
"github_repositories": "GitHub-Repositories werden geladen...",
"timeline_sessions": "Release-Timeline-Sessions werden geladen...",
"timeline_events": "Release-Timeline-Ereignisse werden geladen...",
"refreshing_timeline": "Release-Timeline wird aktualisiert..."
},
"setup": {
"channels": "Kanäle",
"targets": "GitHub- und Coolify-Ziele",
"assignments": "Pilot-Zuweisungen",
"deployments": "Erste Bereitstellung",
"replay": "Replay-Erfassung"
},
"stats": {
"channels": "Kanäle",
"targets": "Ziele",
"deployments": "Bereitstellungen",
"timeline_events": "Timeline-Ereignisse"
},
"overview": {
"title": "Übersicht",
"subtitle": "Aktueller Kanalzustand, Release-Aktivität und Modulstatus.",
"guided_setup": "Geführte Einrichtung",
"next_step": "Nächster Schritt: {step}",
"ready": "Release Manager ist für den täglichen Betrieb bereit.",
"add_suggested_channel": "Vorgeschlagenen Kanal hinzufügen",
"module_health_empty": "Modul-Health-Snapshots erscheinen, nachdem Probes aufgezeichnet wurden."
},
"settings": {
"title": "Release-Manager-Einstellungen",
"subtitle": "GitHub-Token für private Repositories und Branch-Abfragen konfigurieren.",
"github_token": "GitHub-Token",
"github_api_url": "GitHub-API-URL",
"webhook_secret": "Webhook-Secret",
"github_webhook_secret": "GitHub-Webhook-Secret",
"configured": "Konfiguriert",
"not_configured": "Nicht konfiguriert",
"loaded_from": "Geladen aus {variable}",
"set_below": "{variable} unten festlegen",
"private_repositories_prefix": "Private Repositories werden mit der Server-Umgebungsvariable gelesen",
"private_repositories_or": "oder der Modul-Konfigurationsvariable",
"github_token_message": "Beispiel: github_pat_... mit Zugriff auf die privaten Repositories, die Release Manager bereitstellt.",
"github_token_placeholder": "Leer lassen, um das vorhandene Token zu behalten",
"github_api_url_message": "Konfiguriert in ReleaseManager.github_api_url. https://api.github.com verwenden, sofern GitHub Enterprise nicht genutzt wird.",
"webhook_secret_message": "Optional; leer lassen, um das vorhandene Secret zu behalten.",
"webhook_secret_placeholder": "Webhook-HMAC-Secret",
"save": "Einstellungen speichern",
"back_to_integrations": "Zurück zu Integrationen",
"guide": {
"steps": {
"github_token": "GitHub-Token",
"github_api_url": "GitHub API-URL",
"github_webhook_secret": "GitHub Webhook Secret",
"review": "Prüfung"
},
"github_token_title": "GitHub-Token hinzufügen",
"github_token_description": "Release Manager verwendet diesen Token, um private Repositories, Branches und Commits aufzulisten, bevor ein Deployment-Ziel gespeichert oder getestet wird.",
"configure_this_in": "Dies konfigurieren in",
"server_environment_variable": "Die Server-Umgebungsvariable",
"takes_precedence": "hat Vorrang, wenn sie gesetzt ist.",
"recommended_access": "Empfohlener Zugriff",
"recommended_access_description": "Fine-grained GitHub-Token mit Contents: read-Zugriff für jedes Release-Repository.",
"github_api_url_title": "GitHub API-URL hinzufügen",
"github_api_url_description": "GitHub Cloud standardmäßig verwenden oder auf die REST-API-Basis-URL einer GitHub Enterprise Server-Installation zeigen.",
"github_api_url_invalid": "Vollständige HTTP- oder HTTPS-URL eingeben.",
"github_cloud": "GitHub Cloud",
"enterprise_example": "Enterprise-Beispiel",
"github_webhook_secret_title": "GitHub Webhook Secret hinzufügen",
"github_webhook_secret_description": "Dasselbe Secret in GitHub-Repository-Webhooks verwenden, damit Release Manager Deployment-Events vor der Verarbeitung verifizieren kann.",
"github_webhook_url": "GitHub Webhook-URL:",
"store_shared_secret_in": "Geteiltes Secret speichern in",
"review_title": "GitHub-Konfiguration prüfen",
"review_description": "Werte speichern und dann unter Integrationen ein privates Repository, einen Branch und einen bestimmten Commit oder den neuesten Commit auswählen, bevor der Zugriff getestet wird.",
"ready": "Bereit",
"needs_value": "Wert fehlt"
}
},
"channel_unavailable": {
"kicker": "Release Manager",
"title": "Release-Kanal ist nicht bereit",
"summary_prefix": "Dein Konto ist zugewiesen zu",
"summary_suffix": ", aber diesem Kanal fehlt erforderliche Release-Konfiguration.",
"release_bundle": "Release-Bundle",
"frontend_version": "Frontend-Version",
"api_version": "API-Version",
"frontend_base_url": "Frontend-URL",
"api_base_url": "API-URL",
"frontend_entry": "Frontend-Einstiegspunkt",
"release_runtime": "Release-Laufzeit",
"checking_again": "Erneute Prüfung in {seconds}s",
"refresh_error": "Release-Status konnte nicht aktualisiert werden. Die nächste automatische Prüfung versucht es erneut.",
"ignore": "Nächste 5 Minuten ignorieren",
"check_again": "Erneut prüfen",
"logout": "Abmelden",
"base_image": "Basis-Image"
},
"channel_switched": {
"kicker": "Release Manager",
"title": "Du bist jetzt auf {channel}",
"summary_prefix": "Dein Konto wurde dem Release-Kanal",
"summary_suffix": "zugewiesen. Dieses Gerät merkt sich, dass du diesen Hinweis gesehen hast.",
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"frontend_version": "Frontend-Version",
"api_version": "API-Version",
"assigned_channel": "Zugewiesener Kanal",
"current_app_image": "Aktuelles App-Image",
"current_api": "Aktuelle API",
"base_image": "Basis-Image",
"continue": "Fortfahren"
},
"channel_selector": {
"title": "Release-Kanal",
"subtitle": "Wählen Sie, welchen zugewiesenen Release-Kanal dieses Gerät verwenden soll.",
"sidebar_title": "Release",
"default": "Standard",
"ready": "Bereit",
"unavailable": "Nicht bereit",
"release_bundle": "Release-Bundle",
"frontend_version": "Frontend-Version",
"api_version": "API-Version",
"frontend_base_url": "Frontend-URL",
"api_base_url": "API-URL",
"frontend_entry": "Frontend-Einstiegspunkt",
"release_runtime": "Release-Laufzeit",
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"use_local_frontend": "Lokales Frontend verwenden"
},
"common": {
"yes": "ja",
"no": "nein",
"off": "aus"
},
"actions": {
"edit": "Bearbeiten",
"rollback": "Zurückrollen",
"update": "Aktualisieren",
"create": "Erstellen",
"clear": "Leeren",
"assign": "Zuweisen",
"remove": "Entfernen",
"test_access": "Zugriff testen",
"deploy": "Deployen",
"redeploy": "Erneut deployen",
"promote": "Promoten",
"enable": "Aktivieren",
"search": "Suchen",
"save_target": "Ziel speichern",
"delete": "Löschen",
"back": "Zurück",
"next": "Weiter"
},
"tables": {
"channel": "Kanal",
"rollout": "Rollout",
"frontend": "Frontend",
"api": "API",
"replay": "Replay",
"actions": "Aktionen",
"module": "Module",
"status": "Status",
"checked": "Geprüft",
"subject": "Subjekt",
"reason": "Grund",
"expires": "Läuft ab",
"deployment": "Deployment",
"source": "Quelle",
"started": "Gestartet",
"target": "Ziel",
"coolify": "Coolify",
"auto": "Auto"
},
"values": {
"app": {
"frontend": "Frontend",
"api": "API"
},
"capture_level": {
"metadata": "Metadaten",
"full_redacted": "vollständig redigiert"
},
"subject_type": {
"user": "Benutzer",
"subuser": "Mitarbeiter",
"customer": "Kunde",
"channel": "Kanal"
},
"severity": {
"error": "Fehler",
"warning": "Warnung",
"info": "Info"
},
"status": {
"ok": "ok",
"active": "aktiv",
"deployed": "deployt",
"stable": "stabil",
"enabled": "aktiviert",
"queued": "in Warteschlange",
"deploying": "deploying",
"metadata": "Metadaten",
"not_configured": "nicht konfiguriert",
"warning": "Warnung",
"failed": "fehlgeschlagen",
"down": "down",
"error": "Fehler",
"unknown": "unbekannt"
}
},
"autocomplete": {
"suggested_value": "Vorgeschlagener Wert",
"suggestion": "Vorschlag",
"use_typed_value": "Eingegebenen Wert verwenden",
"custom": "Benutzerdefiniert",
"api_url": "API URL",
"frontend_url": "Frontend URL",
"known_release_url": "Bekannte Release-URL",
"deploy_here_with_coolify": "{app} hier mit Coolify deployen",
"prepare_coolify_target": "Coolify-Ziel mit aktiviertem HTTPS/SSL vorbereiten",
"coolify_ssl": "Coolify SSL",
"github_repository": "GitHub-Repository",
"owner_repository": "owner/repository",
"git_branch": "Git branch",
"deployment_branch": "Deployment branch",
"github_commit": "GitHub commit",
"git_commit": "Git commit",
"use_specific_commit_sha": "Bestimmte Commit-SHA verwenden",
"custom_commit": "Benutzerdefinierter Commit",
"health_url": "Health URL",
"release_health_check": "Release-Health-Check",
"coolify_service": "Coolify service",
"service_uuid": "Service UUID",
"known_coolify_service_uuid": "Known Coolify service UUID",
"control_api": "Kontroll-API",
"release_manager_api_endpoint": "Release Manager API-Endpunkt",
"module": "Module",
"timeline_module_key": "Timeline-Modulschlüssel"
},
"errors": {
"github_repositories": "GitHub-Repositories konnten nicht geladen werden.",
"github_branches": "GitHub-Branches konnten nicht geladen werden.",
"repository_branch_required": "Repository und Branch sind erforderlich, bevor GitHub-Zugriff getestet werden kann.",
"github_access_failed": "GitHub-Repository-Zugriffstest ist fehlgeschlagen."
},
"channels": {
"title": "Kanäle",
"subtitle": "Graduale Release-Kanäle erstellen und anpassen.",
"rollout_percent": "{percent}% rollout",
"already_configured": "Bereits konfiguriert",
"slug": "Slug",
"slug_message": "Example: canary",
"slug_placeholder": "slug",
"name": "Name",
"name_message": "Wird Operatoren bei der Kanalprüfung angezeigt.",
"name_placeholder": "Name",
"rollout": "Rollout",
"rollout_message": "0-100 Prozent des nicht zugewiesenen Traffics.",
"frontend_url": "Frontend URL",
"frontend_url_message": "Example: https://canary.example.test",
"frontend_url_placeholder": "Frontend URL",
"no_matching_release_url": "Keine passende Release-URL.",
"api_url": "API URL",
"api_url_message": "Example: https://api-canary.example.test",
"api_url_placeholder": "API URL",
"no_matching_api_url": "Keine passende API-URL.",
"replay_capture": "Replay-Erfassung",
"replay_capture_message": "Metadaten sind für breite Kanäle sicherer.",
"retention_days": "Aufbewahrungstage",
"retention_days_message": "1-365 Tage.",
"enabled": "Aktiviert",
"default_channel": "Standardkanal",
"replay_enabled": "Replay aktiviert",
"frontend_chip": "Frontend: {url}",
"api_chip": "API: {url}"
},
"assignments": {
"title": "Zuweisungen",
"subtitle": "Benutzer, Mitarbeiter oder Kunden an Release-Kanäle binden.",
"subject": "Subjekt",
"subject_message": "Benutzer, Subuser oder Kunden suchen oder ein manuelles Subjekt wie user:42 eingeben.",
"subject_placeholder": "Subjekt suchen oder eingeben",
"subject_empty": "Keine Subjekte gefunden",
"group_users": "Benutzer",
"group_subusers": "Subuser",
"group_customers": "Kunden",
"group_manual": "Manuell",
"manual_user": "Benutzer #{id}",
"manual_subuser": "Subuser #{id}",
"manual_customer": "Kunde #{id}",
"manual_description": "Eingegebenen Wert {subject} verwenden",
"subject_type": "Subjekttyp",
"subject_type_message": "Identitätstyp zum Binden auswählen.",
"customer": "Customer",
"customer_message": "Nach Kundennummer oder Name suchen und dann den genauen Kunden auswählen.",
"customer_placeholder": "Kunde suchen",
"subject_id": "Subjekt-ID",
"subject_id_message": "Beispiel: Benutzer-ID 42",
"subject_id_placeholder": "Subjekt-ID",
"channel": "Channel",
"channel_message": "Gebundene Subjekte umgehen den prozentualen Rollout.",
"reason": "Grund",
"reason_message": "Beispiel: Canary-Validierung für Kundensupport.",
"reason_placeholder": "Grund",
"expires": "Läuft ab",
"expires_message": "Leer lassen für kein automatisches Ablaufdatum."
},
"deployments": {
"title": "Deployments",
"subtitle": "Release-Deployments starten, promoten und prüfen.",
"manual_deployment_record": "Manueller Deployment-Eintrag",
"target": "Ziel",
"target_message": "Gespeichertes Ziel wählen oder manuelle Felder editierbar lassen.",
"select_target_or_manual": "Ziel oder manuell auswählen",
"channel": "Channel",
"app": "App",
"repository": "Repository",
"repository_message": "Example: truckwash/front-end-vue",
"repository_placeholder": "owner/repo",
"branch": "Branch",
"branch_message": "Example: master",
"branch_placeholder": "branch",
"commit_selection": "Commit-Auswahl",
"commit_selection_message": "Neueste Version wird mit dem konfigurierten GitHub-Token als Branch-Head aufgelöst.",
"latest_from_branch": "Neuester vom Branch",
"specific_commit": "Bestimmter Commit",
"specific_commit_message": "Example: feedface1234",
"commit_sha_placeholder": "commit sha",
"version_label": "Versionslabel",
"version_label_message": "Example: api-2026.05.19",
"version_label_placeholder": "Versionslabel",
"commit_prefix": "Commit: {commit}",
"test_access_tooltip": "Token-Zugriff auf das ausgewählte Repository, den Branch und Commit prüfen."
},
"replay": {
"title": "Replay",
"subtitle": "Gezielte Erfassung aktivieren und Fehler-Timelines Schritt für Schritt prüfen.",
"capture_channel": "{channel} erfassen",
"target_type": "Zieltyp",
"target": "Ziel",
"target_message": "Beispiel: Benutzer-ID 42 oder Kanal-Slug canary.",
"target_placeholder": "Ziel-ID oder Kanal-Slug",
"channel_scope": "Kanalbereich",
"channel_scope_message": "Optional; begrenzt Replay-Erfassung auf einen Kanal.",
"no_channel_scope": "Kein Kanalbereich",
"capture_level": "Erfassungsstufe",
"expires": "Läuft ab",
"expires_message": "Leer lassen für manuelle Deaktivierung.",
"trace_id": "Trace ID",
"trace_id_message": "Example: trace-canary-1",
"trace_id_placeholder": "Trace id",
"channel": "Channel",
"channel_placeholder": "Channel",
"principal_id": "Principal ID",
"principal_id_placeholder": "Principal-ID",
"module": "Module",
"module_placeholder": "Module",
"severity": "Schweregrad",
"any_severity": "Beliebiger Schweregrad",
"no_timeline_events": "Keine Timeline-Events entsprechen den aktuellen Filtern."
},
"integrations": {
"title": "GitHub und Coolify",
"subtitle": "GitHub-Repositories und Branches kanalspezifischen Coolify-Services zuordnen.",
"choose_repository": "Repository auswählen",
"add_health_url": "Health-URL hinzufügen",
"github_token_not_configured": "GitHub-Token ist nicht konfiguriert; private Repositories können nicht aufgelistet werden.",
"open_github_token_settings": "GitHub-Token-Einstellungen öffnen",
"channel": "Channel",
"app": "App",
"repository": "Repository",
"repository_message": "Example: truckwash/backend-php",
"repository_placeholder": "owner/repo",
"branch": "Branch",
"branch_message": "Example: release/canary",
"branch_placeholder": "branch",
"latest_prefix": "Neueste: {commit}",
"coolify_instance": "Coolify-Instanz",
"coolify_instance_message": "Leer lassen für manuelle Deployment-Einträge.",
"no_coolify_instance": "Keine Coolify-Instanz",
"coolify_instance_placeholder": "Coolify-Instanz-ID",
"coolify_service_uuid": "Coolify service UUID",
"coolify_service_uuid_message": "Bestehenden Service auswählen oder UUID einfügen.",
"coolify_service_uuid_placeholder": "Coolify service UUID",
"health_url": "Health URL",
"health_url_message": "Example: https://api-canary.example.test/ping",
"health_url_placeholder": "Health URL",
"ssl_domain": "Load-Balancer-Domain",
"ssl_domain_message": "Muss eine DNS-Domain sein, die zum Coolify Load Balancer geroutet wird. Beispiel: api-v2.truckwash.io",
"ssl_domain_placeholder": "Load-Balancer-Domain",
"https_domain_for_coolify": "Domain unter Kontrolle des Load Balancers",
"endpoint_mode": "Endpoint mode",
"endpoint_mode_message": "Use automatic gateway routing or manually override the public host and port.",
"endpoint_mode_auto": "Auto",
"endpoint_mode_manual": "Manual",
"manual_endpoint_host": "Manual host",
"manual_endpoint_host_message": "Public host shown in release previews when manual mode is selected.",
"manual_endpoint_host_placeholder": "api-v2.truckwash.io",
"manual_endpoint_port": "Manual public port",
"manual_endpoint_port_message": "Optional public port from 1 to 65535.",
"app_port": "App port",
"app_port_message": "Internal container port exposed to Coolify routing.",
"auto_gateway_endpoint": "Automatic gateway endpoint",
"pending_automatic_endpoint": "Automatic endpoint resolution pending",
"auto_deploy": "Auto-Deploy",
"auto_deploy_tooltip": "Automatisch Deployments erstellen, wenn sich dieses Ziel ändert.",
"coolify_ssl": "Coolify SSL",
"coolify_ssl_tooltip": "Coolify anweisen, HTTPS für die konfigurierte Domain bereitzustellen.",
"deploy_now": "Jetzt deployen",
"deploy_now_tooltip": "Deployment direkt nach dem Speichern des Ziels starten.",
"create_missing_service": "Fehlenden Service erstellen",
"create_missing_service_tooltip": "Release Manager erlauben, einen fehlenden Coolify-Service zu erstellen.",
"test_access_tooltip": "Prüfen, ob der konfigurierte GitHub-Token dieses Repository und den Branch lesen kann."
}
}
}
}
@@ -0,0 +1,61 @@
{
"compat": {
"configuration": {
"release_manager": {
"integrations": {
"title": "GitHub und Coolify",
"subtitle": "GitHub-Repositories und Branches kanalspezifischen Coolify-Services zuordnen.",
"choose_repository": "Repository auswählen",
"add_health_url": "Health-URL hinzufügen",
"github_token_not_configured": "GitHub-Token ist nicht konfiguriert; private Repositories können nicht aufgelistet werden.",
"open_github_token_settings": "GitHub-Token-Einstellungen öffnen",
"channel": "Channel",
"app": "App",
"repository": "Repository",
"repository_message": "Example: truckwash/backend-php",
"repository_placeholder": "owner/repo",
"branch": "Branch",
"branch_message": "Example: release/canary",
"branch_placeholder": "branch",
"latest_prefix": "Neueste: {commit}",
"coolify_instance": "Coolify-Instanz",
"coolify_instance_message": "Leer lassen für manuelle Deployment-Einträge.",
"no_coolify_instance": "Keine Coolify-Instanz",
"coolify_instance_placeholder": "Coolify-Instanz-ID",
"coolify_service_uuid": "Coolify service UUID",
"coolify_service_uuid_message": "Bestehenden Service auswählen oder UUID einfügen.",
"coolify_service_uuid_placeholder": "Coolify service UUID",
"health_url": "Health URL",
"health_url_message": "Example: https://api-canary.example.test/ping",
"health_url_placeholder": "Health URL",
"ssl_domain": "Load-Balancer-Domain",
"ssl_domain_message": "Muss eine DNS-Domain sein, die zum Coolify Load Balancer geroutet wird. Beispiel: api-v2.truckwash.io",
"ssl_domain_placeholder": "Load-Balancer-Domain",
"https_domain_for_coolify": "Domain unter Kontrolle des Load Balancers",
"endpoint_mode": "Endpoint mode",
"endpoint_mode_message": "Use automatic gateway routing or manually override the public host and port.",
"endpoint_mode_auto": "Auto",
"endpoint_mode_manual": "Manual",
"manual_endpoint_host": "Manual host",
"manual_endpoint_host_message": "Public host shown in release previews when manual mode is selected.",
"manual_endpoint_host_placeholder": "api-v2.truckwash.io",
"manual_endpoint_port": "Manual public port",
"manual_endpoint_port_message": "Optional public port from 1 to 65535.",
"app_port": "App port",
"app_port_message": "Internal container port exposed to Coolify routing.",
"auto_gateway_endpoint": "Automatic gateway endpoint",
"pending_automatic_endpoint": "Automatic endpoint resolution pending",
"auto_deploy": "Auto-Deploy",
"auto_deploy_tooltip": "Automatisch Deployments erstellen, wenn sich dieses Ziel ändert.",
"coolify_ssl": "Coolify SSL",
"coolify_ssl_tooltip": "Coolify anweisen, HTTPS für die konfigurierte Domain bereitzustellen.",
"deploy_now": "Jetzt deployen",
"deploy_now_tooltip": "Deployment direkt nach dem Speichern des Ziels starten.",
"create_missing_service": "Fehlenden Service erstellen",
"create_missing_service_tooltip": "Release Manager erlauben, einen fehlenden Coolify-Service zu erstellen.",
"test_access_tooltip": "Prüfen, ob der konfigurierte GitHub-Token dieses Repository und den Branch lesen kann."
}
}
}
}
}
@@ -0,0 +1,454 @@
{
"compat": {
"configuration": {
"release_manager": {
"title": "Release Manager",
"subtitle": "Schrittweise API- und Front-End-Releases",
"channel_names": {
"stable": "Stabil",
"canary": "Canary",
"internal": "Intern"
},
"channel_descriptions": {
"stable": "Standard-Produktionskanal.",
"canary": "Früher Produktionsvalidierungskanal.",
"internal": "Interner Kanal für Mitarbeitende und Superuser-Validierung."
},
"control_api": {
"title": "Kontroll-API",
"tooltip": "Release-Manager-Aktionen werden an diese API gesendet. Verwende die Produktions-Kontroll-API, außer du testest ein Staging-Backend.",
"example": "Beispiel: https://api.truckwash.io:4433",
"endpoint_label": "API-Endpunkt",
"endpoint_message": "Ändere dies nur, wenn Release-Manager-Endpunkte auf der Ziel-API verfügbar sind.",
"endpoint_aria": "Release Manager Kontroll-API-URL",
"use_tooltip": "Release-Daten von dieser API laden",
"use": "Verwenden",
"reset_tooltip": "Zur Standard-Kontroll-API zurückkehren",
"reset": "Zurücksetzen",
"known_endpoints": "Bekannte Kontroll-API-Endpunkte"
},
"tabs": {
"overview": {
"label": "Übersicht",
"description": "Kanalzustand, Einrichtungsfortschritt und aktueller Release-Status."
},
"channels": {
"label": "Kanäle",
"description": "Stabile, Canary- und Zielkanäle mit Rollout-Grenzen erstellen."
},
"assignments": {
"label": "Zuweisungen",
"description": "Benutzer, Unterbenutzer oder Kunden einem bestimmten Release-Kanal zuweisen."
},
"deployments": {
"label": "Bereitstellungen",
"description": "Bereitstellungen starten und erfolgreiche Builds promoten."
},
"replay": {
"label": "Replay",
"description": "Gezielte Erfassung aktivieren und Release-Timeline-Ereignisse durchsuchen."
},
"integrations": {
"label": "Integrationen",
"description": "GitHub-Repositories, Branches und Coolify-Dienste verbinden."
},
"settings": {
"label": "Einstellungen",
"description": "GitHub-Zugriff und Webhook-Einstellungen des Release Managers konfigurieren."
}
},
"loading": {
"summary": "Release Manager-Daten werden geladen...",
"refreshing_summary": "Release Manager-Daten werden aktualisiert...",
"summary_detail": "Release-Status, Kanale, Deployments und Servicezustand werden geladen.",
"channels": "Release-Kanale werden geladen...",
"channels_detail": "Kanalansichten und Release-Abhangigkeiten werden geladen.",
"assignments": "Release-Zuweisungen werden geladen...",
"deployments": "Release-Deployments werden geladen...",
"operations": "Release-Operationen werden geladen...",
"data_services": "Release-Datendienste werden geladen...",
"integrations": "Release-Integrationen werden geladen...",
"settings": "Release Manager-Einstellungen werden geladen...",
"github_repositories": "GitHub-Repositories werden geladen...",
"timeline_sessions": "Release-Timeline-Sessions werden geladen...",
"timeline_events": "Release-Timeline-Ereignisse werden geladen...",
"refreshing_timeline": "Release-Timeline wird aktualisiert..."
},
"setup": {
"channels": "Kanäle",
"targets": "GitHub- und Coolify-Ziele",
"assignments": "Pilot-Zuweisungen",
"deployments": "Erste Bereitstellung",
"replay": "Replay-Erfassung"
},
"stats": {
"channels": "Kanäle",
"targets": "Ziele",
"deployments": "Bereitstellungen",
"timeline_events": "Timeline-Ereignisse"
},
"overview": {
"title": "Übersicht",
"subtitle": "Aktueller Kanalzustand, Release-Aktivität und Modulstatus.",
"guided_setup": "Geführte Einrichtung",
"next_step": "Nächster Schritt: {step}",
"ready": "Release Manager ist für den täglichen Betrieb bereit.",
"add_suggested_channel": "Vorgeschlagenen Kanal hinzufügen",
"module_health_empty": "Modul-Health-Snapshots erscheinen, nachdem Probes aufgezeichnet wurden."
},
"settings": {
"title": "Release-Manager-Einstellungen",
"subtitle": "GitHub-Token für private Repositories und Branch-Abfragen konfigurieren.",
"github_token": "GitHub-Token",
"github_api_url": "GitHub-API-URL",
"webhook_secret": "Webhook-Secret",
"github_webhook_secret": "GitHub-Webhook-Secret",
"configured": "Konfiguriert",
"not_configured": "Nicht konfiguriert",
"loaded_from": "Geladen aus {variable}",
"set_below": "{variable} unten festlegen",
"private_repositories_prefix": "Private Repositories werden mit der Server-Umgebungsvariable gelesen",
"private_repositories_or": "oder der Modul-Konfigurationsvariable",
"github_token_message": "Beispiel: github_pat_... mit Zugriff auf die privaten Repositories, die Release Manager bereitstellt.",
"github_token_placeholder": "Leer lassen, um das vorhandene Token zu behalten",
"github_api_url_message": "Konfiguriert in ReleaseManager.github_api_url. https://api.github.com verwenden, sofern GitHub Enterprise nicht genutzt wird.",
"webhook_secret_message": "Optional; leer lassen, um das vorhandene Secret zu behalten.",
"webhook_secret_placeholder": "Webhook-HMAC-Secret",
"save": "Einstellungen speichern",
"back_to_integrations": "Zurück zu Integrationen",
"guide": {
"steps": {
"github_token": "GitHub-Token",
"github_api_url": "GitHub API-URL",
"github_webhook_secret": "GitHub Webhook Secret",
"review": "Prüfung"
},
"github_token_title": "GitHub-Token hinzufügen",
"github_token_description": "Release Manager verwendet diesen Token, um private Repositories, Branches und Commits aufzulisten, bevor ein Deployment-Ziel gespeichert oder getestet wird.",
"configure_this_in": "Dies konfigurieren in",
"server_environment_variable": "Die Server-Umgebungsvariable",
"takes_precedence": "hat Vorrang, wenn sie gesetzt ist.",
"recommended_access": "Empfohlener Zugriff",
"recommended_access_description": "Fine-grained GitHub-Token mit Contents: read-Zugriff für jedes Release-Repository.",
"github_api_url_title": "GitHub API-URL hinzufügen",
"github_api_url_description": "GitHub Cloud standardmäßig verwenden oder auf die REST-API-Basis-URL einer GitHub Enterprise Server-Installation zeigen.",
"github_api_url_invalid": "Vollständige HTTP- oder HTTPS-URL eingeben.",
"github_cloud": "GitHub Cloud",
"enterprise_example": "Enterprise-Beispiel",
"github_webhook_secret_title": "GitHub Webhook Secret hinzufügen",
"github_webhook_secret_description": "Dasselbe Secret in GitHub-Repository-Webhooks verwenden, damit Release Manager Deployment-Events vor der Verarbeitung verifizieren kann.",
"github_webhook_url": "GitHub Webhook-URL:",
"store_shared_secret_in": "Geteiltes Secret speichern in",
"review_title": "GitHub-Konfiguration prüfen",
"review_description": "Werte speichern und dann unter Integrationen ein privates Repository, einen Branch und einen bestimmten Commit oder den neuesten Commit auswählen, bevor der Zugriff getestet wird.",
"ready": "Bereit",
"needs_value": "Wert fehlt"
}
},
"channel_unavailable": {
"kicker": "Release Manager",
"title": "Release-Kanal ist nicht bereit",
"summary_prefix": "Dein Konto ist zugewiesen zu",
"summary_suffix": ", aber diesem Kanal fehlt erforderliche Release-Konfiguration.",
"release_bundle": "Release-Bundle",
"frontend_version": "Frontend-Version",
"api_version": "API-Version",
"frontend_base_url": "Frontend-URL",
"api_base_url": "API-URL",
"frontend_entry": "Frontend-Einstiegspunkt",
"release_runtime": "Release-Laufzeit",
"checking_again": "Erneute Prüfung in {seconds}s",
"refresh_error": "Release-Status konnte nicht aktualisiert werden. Die nächste automatische Prüfung versucht es erneut.",
"ignore": "Nächste 5 Minuten ignorieren",
"check_again": "Erneut prüfen",
"logout": "Abmelden",
"base_image": "Basis-Image"
},
"channel_switched": {
"kicker": "Release Manager",
"title": "Du bist jetzt auf {channel}",
"summary_prefix": "Dein Konto wurde dem Release-Kanal",
"summary_suffix": "zugewiesen. Dieses Gerät merkt sich, dass du diesen Hinweis gesehen hast.",
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"frontend_version": "Frontend-Version",
"api_version": "API-Version",
"assigned_channel": "Zugewiesener Kanal",
"current_app_image": "Aktuelles App-Image",
"current_api": "Aktuelle API",
"base_image": "Basis-Image",
"continue": "Fortfahren"
},
"channel_selector": {
"title": "Release-Kanal",
"subtitle": "Wählen Sie, welchen zugewiesenen Release-Kanal dieses Gerät verwenden soll.",
"sidebar_title": "Release",
"default": "Standard",
"ready": "Bereit",
"unavailable": "Nicht bereit",
"release_bundle": "Release-Bundle",
"frontend_version": "Frontend-Version",
"api_version": "API-Version",
"frontend_base_url": "Frontend-URL",
"api_base_url": "API-URL",
"frontend_entry": "Frontend-Einstiegspunkt",
"release_runtime": "Release-Laufzeit",
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"use_local_frontend": "Lokales Frontend verwenden",
"switch_error": "Release channel could not be switched. The previous channel is still active."
},
"common": {
"yes": "ja",
"no": "nein",
"off": "aus"
},
"actions": {
"edit": "Bearbeiten",
"rollback": "Zurückrollen",
"update": "Aktualisieren",
"create": "Erstellen",
"clear": "Leeren",
"assign": "Zuweisen",
"remove": "Entfernen",
"test_access": "Zugriff testen",
"deploy": "Deployen",
"redeploy": "Erneut deployen",
"promote": "Promoten",
"enable": "Aktivieren",
"search": "Suchen",
"save_target": "Ziel speichern",
"delete": "Löschen",
"back": "Zurück",
"next": "Weiter",
"publish_release": "Publish release"
},
"tables": {
"channel": "Kanal",
"rollout": "Rollout",
"frontend": "Frontend",
"api": "API",
"replay": "Replay",
"actions": "Aktionen",
"module": "Module",
"status": "Status",
"checked": "Geprüft",
"subject": "Subjekt",
"reason": "Grund",
"expires": "Läuft ab",
"deployment": "Deployment",
"source": "Quelle",
"started": "Gestartet",
"target": "Ziel",
"coolify": "Coolify",
"auto": "Auto"
},
"values": {
"app": {
"frontend": "Frontend",
"api": "API"
},
"capture_level": {
"metadata": "Metadaten",
"full_redacted": "vollständig redigiert"
},
"subject_type": {
"user": "Benutzer",
"subuser": "Mitarbeiter",
"customer": "Kunde",
"channel": "Kanal"
},
"severity": {
"error": "Fehler",
"warning": "Warnung",
"info": "Info"
},
"status": {
"ok": "ok",
"active": "aktiv",
"deployed": "deployt",
"stable": "stabil",
"enabled": "aktiviert",
"queued": "in Warteschlange",
"deploying": "deploying",
"metadata": "Metadaten",
"not_configured": "nicht konfiguriert",
"warning": "Warnung",
"failed": "fehlgeschlagen",
"down": "down",
"error": "Fehler",
"unknown": "unbekannt"
}
},
"autocomplete": {
"suggested_value": "Vorgeschlagener Wert",
"suggestion": "Vorschlag",
"use_typed_value": "Eingegebenen Wert verwenden",
"custom": "Benutzerdefiniert",
"api_url": "API URL",
"frontend_url": "Frontend URL",
"known_release_url": "Bekannte Release-URL",
"deploy_here_with_coolify": "{app} hier mit Coolify deployen",
"prepare_coolify_target": "Coolify-Ziel mit aktiviertem HTTPS/SSL vorbereiten",
"coolify_ssl": "Coolify SSL",
"github_repository": "GitHub-Repository",
"owner_repository": "owner/repository",
"git_branch": "Git branch",
"deployment_branch": "Deployment branch",
"github_commit": "GitHub commit",
"git_commit": "Git commit",
"use_specific_commit_sha": "Bestimmte Commit-SHA verwenden",
"custom_commit": "Benutzerdefinierter Commit",
"health_url": "Health URL",
"release_health_check": "Release-Health-Check",
"coolify_service": "Coolify service",
"service_uuid": "Service UUID",
"known_coolify_service_uuid": "Known Coolify service UUID",
"control_api": "Kontroll-API",
"release_manager_api_endpoint": "Release Manager API-Endpunkt",
"module": "Module",
"timeline_module_key": "Timeline-Modulschlüssel"
},
"errors": {
"github_repositories": "GitHub-Repositories konnten nicht geladen werden.",
"github_branches": "GitHub-Branches konnten nicht geladen werden.",
"repository_branch_required": "Repository und Branch sind erforderlich, bevor GitHub-Zugriff getestet werden kann.",
"github_access_failed": "GitHub-Repository-Zugriffstest ist fehlgeschlagen."
},
"channels": {
"title": "Kanäle",
"subtitle": "Graduale Release-Kanäle erstellen und anpassen.",
"rollout_percent": "{percent}% rollout",
"already_configured": "Bereits konfiguriert",
"slug": "Slug",
"slug_message": "Example: canary",
"slug_placeholder": "slug",
"name": "Name",
"name_message": "Wird Operatoren bei der Kanalprüfung angezeigt.",
"name_placeholder": "Name",
"rollout": "Rollout",
"rollout_message": "0-100 Prozent des nicht zugewiesenen Traffics.",
"frontend_url": "Frontend URL",
"frontend_url_message": "Example: https://canary.example.test",
"frontend_url_placeholder": "Frontend URL",
"no_matching_release_url": "Keine passende Release-URL.",
"api_url": "API URL",
"api_url_message": "Example: https://api-canary.example.test",
"api_url_placeholder": "API URL",
"no_matching_api_url": "Keine passende API-URL.",
"replay_capture": "Replay-Erfassung",
"replay_capture_message": "Metadaten sind für breite Kanäle sicherer.",
"retention_days": "Aufbewahrungstage",
"retention_days_message": "1-365 Tage.",
"enabled": "Aktiviert",
"default_channel": "Standardkanal",
"replay_enabled": "Replay aktiviert",
"frontend_chip": "Frontend: {url}",
"api_chip": "API: {url}"
},
"assignments": {
"title": "Zuweisungen",
"subtitle": "Benutzer, Mitarbeiter oder Kunden an Release-Kanäle binden.",
"subject": "Subjekt",
"subject_message": "Benutzer, Subuser oder Kunden suchen oder ein manuelles Subjekt wie user:42 eingeben.",
"subject_placeholder": "Subjekt suchen oder eingeben",
"subject_empty": "Keine Subjekte gefunden",
"group_users": "Benutzer",
"group_subusers": "Subuser",
"group_customers": "Kunden",
"group_manual": "Manuell",
"manual_user": "Benutzer #{id}",
"manual_subuser": "Subuser #{id}",
"manual_customer": "Kunde #{id}",
"manual_description": "Eingegebenen Wert {subject} verwenden",
"subject_type": "Subjekttyp",
"subject_type_message": "Identitätstyp zum Binden auswählen.",
"customer": "Customer",
"customer_message": "Nach Kundennummer oder Name suchen und dann den genauen Kunden auswählen.",
"customer_placeholder": "Kunde suchen",
"subject_id": "Subjekt-ID",
"subject_id_message": "Beispiel: Benutzer-ID 42",
"subject_id_placeholder": "Subjekt-ID",
"channel": "Channel",
"channel_message": "Gebundene Subjekte umgehen den prozentualen Rollout.",
"reason": "Grund",
"reason_message": "Beispiel: Canary-Validierung für Kundensupport.",
"reason_placeholder": "Grund",
"expires": "Läuft ab",
"expires_message": "Leer lassen für kein automatisches Ablaufdatum."
},
"deployments": {
"title": "Deployments",
"subtitle": "Release-Deployments starten, promoten und prüfen.",
"manual_deployment_record": "Manueller Deployment-Eintrag",
"target": "Ziel",
"target_message": "Gespeichertes Ziel wählen oder manuelle Felder editierbar lassen.",
"select_target_or_manual": "Ziel oder manuell auswählen",
"channel": "Channel",
"app": "App",
"repository": "Repository",
"repository_message": "Example: truckwash/front-end-vue",
"repository_placeholder": "owner/repo",
"branch": "Branch",
"branch_message": "Example: master",
"branch_placeholder": "branch",
"commit_selection": "Commit-Auswahl",
"commit_selection_message": "Neueste Version wird mit dem konfigurierten GitHub-Token als Branch-Head aufgelöst.",
"latest_from_branch": "Neuester vom Branch",
"specific_commit": "Bestimmter Commit",
"specific_commit_message": "Example: feedface1234",
"commit_sha_placeholder": "commit sha",
"version_label": "Versionslabel",
"version_label_message": "Example: api-2026.05.19",
"version_label_placeholder": "Versionslabel",
"commit_prefix": "Commit: {commit}",
"test_access_tooltip": "Token-Zugriff auf das ausgewählte Repository, den Branch und Commit prüfen."
},
"replay": {
"title": "Replay",
"subtitle": "Gezielte Erfassung aktivieren und Fehler-Timelines Schritt für Schritt prüfen.",
"capture_channel": "{channel} erfassen",
"target_type": "Zieltyp",
"target": "Ziel",
"target_message": "Beispiel: Benutzer-ID 42 oder Kanal-Slug canary.",
"target_placeholder": "Ziel-ID oder Kanal-Slug",
"channel_scope": "Kanalbereich",
"channel_scope_message": "Optional; begrenzt Replay-Erfassung auf einen Kanal.",
"no_channel_scope": "Kein Kanalbereich",
"capture_level": "Erfassungsstufe",
"expires": "Läuft ab",
"expires_message": "Leer lassen für manuelle Deaktivierung.",
"trace_id": "Trace ID",
"trace_id_message": "Example: trace-canary-1",
"trace_id_placeholder": "Trace id",
"channel": "Channel",
"channel_placeholder": "Channel",
"principal_id": "Principal ID",
"principal_id_placeholder": "Principal-ID",
"module": "Module",
"module_placeholder": "Module",
"severity": "Schweregrad",
"any_severity": "Beliebiger Schweregrad",
"no_timeline_events": "Keine Timeline-Events entsprechen den aktuellen Filtern."
},
"status": {
"confirm_issue_action": "Run this Release Manager action? It can change deployment state and will be audited.",
"choose_bundle_prompt": "Enter the bundle id to set for this channel.",
"impact": "Impact",
"cause": "Cause",
"automated_fix": "Automated fix",
"manual_fallback": "Manual fallback",
"related_deployment": "Related deployment",
"recent_result": "Recent result",
"no_automated_action": "No automated action available.",
"deployment": "Deployment",
"target": "Target",
"coolify_target": "Coolify target",
"service_set": "Service set"
}
}
}
}
}
+1 -1
View File
@@ -8,7 +8,7 @@
"uhrzeit": "Uhrzeit",
"um": "um",
"umbenannt": "umbenannt",
"umbenennen": "umbenennen",
"umbenennen": "@:{'terms.glossary.rename'}",
"umsatz": "Umsatz",
"umweltgeb": "Umweltgeb",
"unabhangig": "unabhängig",
@@ -0,0 +1,28 @@
{
"compat": {
"admin": {
"pos": {
"settings_wheel": {
"accept_self_serve_wash": "Accept self-serve wash",
"accept_self_serve_wash_confirm": "Move this draft to customer #{customerNumber} with the self-serve details?",
"accept_self_serve_wash_success": "The self-serve wash was accepted.",
"email_notifications_section": "Email notifications",
"resend_booking_completion_confirmation": "(Re)send booking completion confirmation",
"resend_booking_completion_confirmation_error": "The booking completion confirmation could not be sent",
"resend_booking_completion_confirmation_success": "The booking completion confirmation has been sent",
"resend_booking_confirmation": "(Re)send booking confirmation",
"resend_booking_confirmation_error": "The booking confirmation could not be sent",
"resend_booking_confirmation_success": "The booking confirmation has been sent",
"resend_wash_certificate": "(Re)send wash certificate",
"resend_wash_certificate_error": "The wash certificate could not be sent",
"resend_wash_certificate_success": "The wash certificate has been sent",
"self_serve_customer": "Customer",
"self_serve_driver": "Driver",
"self_serve_elapsed": "Elapsed",
"self_serve_wash_attachment": "Self-serve wash",
"self_serve_wash_attachment_for_customer": "Self-serve wash for customer #{customerNumber}"
}
}
}
}
}
@@ -298,507 +298,6 @@
"subtitle": "@.capitalize:{'terms.glossary.configuration'} @:{'terms.glossary.of'} @:{'terms.replication.article.host_mention'} @:{'terms.glossary.xlvask'} @:{'terms.glossary.integration'}",
"title": "@:{'terms.glossary.xlvask'} @:{'terms.glossary.configuration'}",
"username_desc": "@.capitalize:{'terms.replication.article.host_mention'} @:{'terms.glossary.username'} @:{'terms.glossary.is'} @:{'terms.glossary.used'} @:{'terms.glossary.to'} @:{'terms.glossary.authenticate'} @:{'terms.replication.article.host_mention'} @:{'terms.glossary.api'} @:{'terms.glossary.connection'}."
},
"release_manager": {
"title": "Release Manager",
"subtitle": "Gradual API and Front-End releases",
"channel_names": {
"stable": "Stable",
"canary": "Canary",
"internal": "Internal"
},
"channel_descriptions": {
"stable": "Default production channel.",
"canary": "Early production validation channel.",
"internal": "Internal staff and superuser validation channel."
},
"control_api": {
"title": "Control API",
"tooltip": "Release Manager actions are sent to this API. Use the production control API unless testing a staged backend.",
"example": "Example: https://api.truckwash.io:4433",
"endpoint_label": "API endpoint",
"endpoint_message": "Switch this only when Release Manager endpoints are available on the target API.",
"endpoint_aria": "Release Manager control API URL",
"use_tooltip": "Load release data from this API",
"use": "Use",
"reset_tooltip": "Return to the default control API",
"reset": "Reset",
"known_endpoints": "Known control API endpoints"
},
"tabs": {
"overview": {
"label": "Overview",
"description": "Channel health, setup progress, and the latest release state."
},
"channels": {
"label": "Channels",
"description": "Create stable, canary, and targeted channels with rollout limits."
},
"assignments": {
"label": "Assignments",
"description": "Pin users, subusers, or customers to a specific release channel."
},
"deployments": {
"label": "Deployments",
"description": "Trigger deployments and promote successful builds."
},
"replay": {
"label": "Replay",
"description": "Enable targeted capture and search release timeline events."
},
"integrations": {
"label": "Integrations",
"description": "Connect GitHub repositories, branches, and Coolify services."
},
"settings": {
"label": "Settings",
"description": "Configure Release Manager GitHub access and webhook settings."
}
},
"loading": {
"summary": "Loading release manager data...",
"refreshing_summary": "Refreshing release manager data...",
"summary_detail": "Release status, channels, deployments, and service health are being loaded.",
"channels": "Loading release channels...",
"channels_detail": "Channel lanes and release dependencies are being loaded.",
"assignments": "Loading release assignments...",
"deployments": "Loading release deployments...",
"operations": "Loading release operations...",
"data_services": "Loading release data services...",
"integrations": "Loading release integrations...",
"settings": "Loading Release Manager settings...",
"github_repositories": "Loading GitHub repositories...",
"timeline_sessions": "Loading release timeline sessions...",
"timeline_events": "Loading release timeline events...",
"refreshing_timeline": "Refreshing release timeline..."
},
"setup": {
"channels": "Channels",
"targets": "GitHub and Coolify targets",
"assignments": "Pilot assignments",
"deployments": "First deployment",
"replay": "Replay capture"
},
"stats": {
"channels": "Channels",
"targets": "Targets",
"deployments": "Deployments",
"timeline_events": "Timeline events"
},
"overview": {
"title": "Overview",
"subtitle": "Current channel health, release activity, and module status.",
"guided_setup": "Guided setup",
"next_step": "Next: {step}",
"ready": "Release Manager is ready for day-to-day operations.",
"add_suggested_channel": "Add suggested channel",
"module_health_empty": "Module health snapshots appear after probes have been recorded."
},
"status": {
"confirm_issue_action": "Run this Release Manager action? It can change deployment state and will be audited.",
"choose_bundle_prompt": "Enter the bundle id to set for this channel.",
"impact": "Impact",
"cause": "Cause",
"automated_fix": "Automated fix",
"manual_fallback": "Manual fallback",
"related_deployment": "Related deployment",
"recent_result": "Recent result",
"no_automated_action": "No automated action available.",
"deployment": "Deployment",
"target": "Target",
"coolify_target": "Coolify target",
"service_set": "Service set"
},
"settings": {
"title": "Release Manager Settings",
"subtitle": "Configure the GitHub token used for private repositories and branch lookups.",
"github_token": "GitHub token",
"github_api_url": "GitHub API URL",
"webhook_secret": "Webhook secret",
"github_webhook_secret": "GitHub webhook secret",
"configured": "Configured",
"not_configured": "Not configured",
"loaded_from": "Loaded from {variable}",
"set_below": "Set {variable} below",
"private_repositories_prefix": "Private repositories are read with the server environment variable",
"private_repositories_or": "or the module config variable",
"github_token_message": "Example: github_pat_... with access to the private repositories Release Manager deploys.",
"github_token_placeholder": "Leave blank to keep the existing token",
"github_api_url_message": "Configured in ReleaseManager.github_api_url. Use https://api.github.com unless using GitHub Enterprise.",
"webhook_secret_message": "Optional; leave blank to keep the existing secret.",
"webhook_secret_placeholder": "Webhook HMAC secret",
"save": "Save settings",
"back_to_integrations": "Back to integrations",
"guide": {
"steps": {
"github_token": "GitHub token",
"github_api_url": "GitHub API URL",
"github_webhook_secret": "GitHub webhook secret",
"review": "Review"
},
"github_token_title": "Add GitHub token",
"github_token_description": "Release Manager uses this token to list private repositories, branches, and commits before a deployment target is saved or tested.",
"configure_this_in": "Configure this in",
"server_environment_variable": "The server environment variable",
"takes_precedence": "takes precedence when it is set.",
"recommended_access": "Recommended access",
"recommended_access_description": "Fine-grained GitHub token with Contents: read access for each release repository.",
"github_api_url_title": "Add GitHub API URL",
"github_api_url_description": "Use GitHub Cloud by default, or point this at the REST API base URL for a GitHub Enterprise Server installation.",
"github_api_url_invalid": "Enter a full HTTP or HTTPS URL.",
"github_cloud": "GitHub Cloud",
"enterprise_example": "Enterprise example",
"github_webhook_secret_title": "Add GitHub webhook secret",
"github_webhook_secret_description": "Use the same secret in GitHub repository webhooks so Release Manager can verify deployment events before handling them.",
"github_webhook_url": "GitHub webhook URL:",
"store_shared_secret_in": "Store the shared secret in",
"review_title": "Review GitHub setup",
"review_description": "Save the values, then use Integrations to select a private repository, branch, and specific commit or latest commit before testing access.",
"ready": "Ready",
"needs_value": "Needs value"
}
},
"channel_unavailable": {
"kicker": "Release Manager",
"title": "Release channel is not ready",
"summary_prefix": "Your account is assigned to",
"summary_suffix": ", but that channel is missing required release configuration.",
"release_bundle": "Release bundle",
"frontend_version": "Frontend version",
"api_version": "API version",
"frontend_base_url": "Frontend URL",
"api_base_url": "API URL",
"frontend_entry": "Frontend entry",
"release_runtime": "Release runtime",
"checking_again": "Checking again in {seconds}s",
"refresh_error": "Release status could not be refreshed. The next automatic check will try again.",
"ignore": "Ignore next 5 minutes",
"check_again": "Check again",
"logout": "Logout",
"base_image": "Base image"
},
"channel_switched": {
"kicker": "Release Manager",
"title": "You are now on {channel}",
"summary_prefix": "Your account has been assigned to the",
"summary_suffix": "release channel. This device will remember that you have seen this notice.",
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"frontend_version": "Frontend version",
"api_version": "API version",
"assigned_channel": "Assigned channel",
"current_app_image": "Current app image",
"current_api": "Current API",
"base_image": "Base image",
"continue": "Continue"
},
"channel_selector": {
"title": "Release channel",
"subtitle": "Choose which assigned release channel this device should use.",
"sidebar_title": "Release",
"default": "Default",
"ready": "Ready",
"unavailable": "Not ready",
"release_bundle": "Release bundle",
"frontend_version": "Frontend version",
"api_version": "API version",
"frontend_base_url": "Frontend URL",
"api_base_url": "API URL",
"frontend_entry": "Frontend entry",
"release_runtime": "Release runtime",
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"use_local_frontend": "Use local frontend",
"switch_error": "Release channel could not be switched. The previous channel is still active."
},
"common": {
"yes": "yes",
"no": "no",
"off": "off"
},
"actions": {
"edit": "Edit",
"rollback": "Rollback",
"update": "Update",
"create": "Create",
"publish_release": "Publish release",
"clear": "Clear",
"assign": "Assign",
"remove": "Remove",
"test_access": "Test access",
"deploy": "Deploy",
"redeploy": "Redeploy",
"promote": "Promote",
"enable": "Enable",
"search": "Search",
"save_target": "Save target",
"delete": "Delete",
"back": "Back",
"next": "Next"
},
"tables": {
"channel": "Channel",
"rollout": "Rollout",
"frontend": "Frontend",
"api": "API",
"replay": "Replay",
"actions": "Actions",
"module": "Module",
"status": "Status",
"checked": "Checked",
"subject": "Subject",
"reason": "Reason",
"expires": "Expires",
"deployment": "Deployment",
"source": "Source",
"started": "Started",
"target": "Target",
"coolify": "Coolify",
"auto": "Auto"
},
"values": {
"app": {
"frontend": "frontend",
"api": "api"
},
"capture_level": {
"metadata": "metadata",
"full_redacted": "full_redacted"
},
"subject_type": {
"user": "user",
"subuser": "subuser",
"customer": "customer",
"channel": "channel"
},
"severity": {
"error": "error",
"warning": "warning",
"info": "info"
},
"status": {
"ok": "ok",
"active": "active",
"deployed": "deployed",
"stable": "stable",
"enabled": "enabled",
"queued": "queued",
"deploying": "deploying",
"metadata": "metadata",
"not_configured": "not configured",
"warning": "warning",
"failed": "failed",
"down": "down",
"error": "error",
"unknown": "unknown"
}
},
"autocomplete": {
"suggested_value": "Suggested value",
"suggestion": "Suggestion",
"use_typed_value": "Use typed value",
"custom": "Custom",
"api_url": "API URL",
"frontend_url": "Frontend URL",
"known_release_url": "Known release URL",
"deploy_here_with_coolify": "Deploy {app} here with Coolify",
"prepare_coolify_target": "Prepare a Coolify target with HTTPS/SSL enabled",
"coolify_ssl": "Coolify SSL",
"github_repository": "GitHub repository",
"owner_repository": "owner/repository",
"git_branch": "Git branch",
"deployment_branch": "Deployment branch",
"github_commit": "GitHub commit",
"git_commit": "Git commit",
"use_specific_commit_sha": "Use specific commit SHA",
"custom_commit": "Custom commit",
"health_url": "Health URL",
"release_health_check": "Release health check",
"coolify_service": "Coolify service",
"service_uuid": "Service UUID",
"known_coolify_service_uuid": "Known Coolify service UUID",
"control_api": "Control API",
"release_manager_api_endpoint": "Release Manager API endpoint",
"module": "Module",
"timeline_module_key": "Timeline module key"
},
"errors": {
"github_repositories": "Could not load GitHub repositories.",
"github_branches": "Could not load GitHub branches.",
"repository_branch_required": "Repository and branch are required before testing GitHub access.",
"github_access_failed": "GitHub repository access test failed."
},
"channels": {
"title": "Channels",
"subtitle": "Create and tune gradual release channels.",
"rollout_percent": "{percent}% rollout",
"already_configured": "Already configured",
"slug": "Slug",
"slug_message": "Example: canary",
"slug_placeholder": "slug",
"name": "Name",
"name_message": "Shown to operators when reviewing a channel.",
"name_placeholder": "Name",
"rollout": "Rollout",
"rollout_message": "0-100 percent of unassigned traffic.",
"frontend_url": "Frontend URL",
"frontend_url_message": "Example: https://canary.example.test",
"frontend_url_placeholder": "Frontend URL",
"no_matching_release_url": "No matching release URL.",
"api_url": "API URL",
"api_url_message": "Example: https://api-canary.example.test",
"api_url_placeholder": "API URL",
"no_matching_api_url": "No matching API URL.",
"replay_capture": "Replay capture",
"replay_capture_message": "Metadata is safer for broad channels.",
"retention_days": "Retention days",
"retention_days_message": "1-365 days.",
"enabled": "Enabled",
"default_channel": "Default channel",
"replay_enabled": "Replay enabled",
"frontend_chip": "Frontend: {url}",
"api_chip": "API: {url}"
},
"assignments": {
"title": "Assignments",
"subtitle": "Pin users, subusers, or customers to release channels.",
"subject": "Subject",
"subject_message": "Search users, subusers, or customers, or type a manual subject like user:42.",
"subject_placeholder": "Search or type subject",
"subject_empty": "No subjects found",
"group_users": "Users",
"group_subusers": "Subusers",
"group_customers": "Customers",
"group_manual": "Manual",
"manual_user": "User #{id}",
"manual_subuser": "Subuser #{id}",
"manual_customer": "Customer #{id}",
"manual_description": "Use typed value {subject}",
"subject_type": "Subject type",
"subject_type_message": "Choose the identity type to pin.",
"customer": "Customer",
"customer_message": "Search by customer number or name, then select the exact customer.",
"customer_placeholder": "Search customer",
"subject_id": "Subject ID",
"subject_id_message": "Example: user id 42",
"subject_id_placeholder": "Subject id",
"channel": "Channel",
"channel_message": "Pinned subjects bypass percentage rollout.",
"reason": "Reason",
"reason_message": "Example: canary validation for customer support.",
"reason_placeholder": "Reason",
"expires": "Expires",
"expires_message": "Leave blank for no automatic expiry."
},
"deployments": {
"title": "Deployments",
"subtitle": "Trigger, promote, and inspect release deployments.",
"manual_deployment_record": "Manual deployment record",
"target": "Target",
"target_message": "Pick a saved target or keep manual fields editable.",
"select_target_or_manual": "Select target or manual",
"channel": "Channel",
"app": "App",
"repository": "Repository",
"repository_message": "Example: truckwash/front-end-vue",
"repository_placeholder": "owner/repo",
"branch": "Branch",
"branch_message": "Example: master",
"branch_placeholder": "branch",
"commit_selection": "Commit selection",
"commit_selection_message": "Latest resolves to the branch head with the configured GitHub token.",
"latest_from_branch": "Latest from branch",
"specific_commit": "Specific commit",
"specific_commit_message": "Example: feedface1234",
"commit_sha_placeholder": "commit sha",
"version_label": "Version label",
"version_label_message": "Example: api-2026.05.19",
"version_label_placeholder": "version label",
"commit_prefix": "Commit: {commit}",
"test_access_tooltip": "Verify token access to the selected repository, branch, and commit."
},
"replay": {
"title": "Replay",
"subtitle": "Enable targeted capture and step through failure timelines.",
"capture_channel": "Capture {channel}",
"target_type": "Target type",
"target": "Target",
"target_message": "Example: user id 42 or channel slug canary.",
"target_placeholder": "Target id or channel slug",
"channel_scope": "Channel scope",
"channel_scope_message": "Optional; limits replay capture to a channel.",
"no_channel_scope": "No channel scope",
"capture_level": "Capture level",
"expires": "Expires",
"expires_message": "Leave blank for manual disable.",
"trace_id": "Trace ID",
"trace_id_message": "Example: trace-canary-1",
"trace_id_placeholder": "Trace id",
"channel": "Channel",
"channel_placeholder": "Channel",
"principal_id": "Principal ID",
"principal_id_placeholder": "Principal id",
"module": "Module",
"module_placeholder": "Module",
"severity": "Severity",
"any_severity": "Any severity",
"no_timeline_events": "No timeline events match the current filters."
},
"integrations": {
"title": "GitHub and Coolify",
"subtitle": "Map GitHub repositories and branches to channel-specific Coolify services.",
"choose_repository": "Choose repository",
"add_health_url": "add health URL",
"github_token_not_configured": "GitHub token is not configured; private repositories cannot be listed.",
"open_github_token_settings": "Open GitHub token settings",
"channel": "Channel",
"app": "App",
"repository": "Repository",
"repository_message": "Example: truckwash/backend-php",
"repository_placeholder": "owner/repo",
"branch": "Branch",
"branch_message": "Example: release/canary",
"branch_placeholder": "branch",
"latest_prefix": "Latest: {commit}",
"coolify_instance": "Coolify instance",
"coolify_instance_message": "Leave empty for manual deployment records.",
"no_coolify_instance": "No Coolify instance",
"coolify_instance_placeholder": "Coolify instance id",
"coolify_service_uuid": "Coolify service UUID",
"coolify_service_uuid_message": "Select an existing service or paste a UUID.",
"coolify_service_uuid_placeholder": "Coolify service UUID",
"health_url": "Health URL",
"health_url_message": "Example: https://api-canary.example.test/ping",
"health_url_placeholder": "Health URL",
"ssl_domain": "Load balancer domain",
"ssl_domain_message": "Must be a DNS domain routed to the Coolify load balancer. Example: api-v2.truckwash.io",
"ssl_domain_placeholder": "Load balancer domain",
"https_domain_for_coolify": "Domain controlled by the load balancer",
"endpoint_mode": "Endpoint mode",
"endpoint_mode_message": "Use automatic gateway routing or manually override the public host and port.",
"endpoint_mode_auto": "Auto",
"endpoint_mode_manual": "Manual",
"manual_endpoint_host": "Manual host",
"manual_endpoint_host_message": "Public host shown in release previews when manual mode is selected.",
"manual_endpoint_host_placeholder": "api-v2.truckwash.io",
"manual_endpoint_port": "Manual public port",
"manual_endpoint_port_message": "Optional public port from 1 to 65535.",
"app_port": "App port",
"app_port_message": "Internal container port exposed to Coolify routing.",
"auto_gateway_endpoint": "Automatic gateway endpoint",
"pending_automatic_endpoint": "Automatic endpoint resolution pending",
"auto_deploy": "Auto deploy",
"auto_deploy_tooltip": "Automatically create deployments when this target changes.",
"coolify_ssl": "Coolify SSL",
"coolify_ssl_tooltip": "Ask Coolify to provision HTTPS for the configured domain.",
"deploy_now": "Deploy now",
"deploy_now_tooltip": "Start a deployment immediately after saving the target.",
"create_missing_service": "Create missing service",
"create_missing_service_tooltip": "Allow Release Manager to create a missing Coolify service.",
"test_access_tooltip": "Verify the configured GitHub token can read this repository and branch."
}
}
}
}
@@ -0,0 +1,61 @@
{
"compat": {
"configuration": {
"release_manager": {
"integrations": {
"title": "GitHub and Coolify",
"subtitle": "Map GitHub repositories and branches to channel-specific Coolify services.",
"choose_repository": "Choose repository",
"add_health_url": "add health URL",
"github_token_not_configured": "GitHub token is not configured; private repositories cannot be listed.",
"open_github_token_settings": "Open GitHub token settings",
"channel": "Channel",
"app": "App",
"repository": "Repository",
"repository_message": "Example: truckwash/backend-php",
"repository_placeholder": "owner/repo",
"branch": "Branch",
"branch_message": "Example: release/canary",
"branch_placeholder": "branch",
"latest_prefix": "Latest: {commit}",
"coolify_instance": "Coolify instance",
"coolify_instance_message": "Leave empty for manual deployment records.",
"no_coolify_instance": "No Coolify instance",
"coolify_instance_placeholder": "Coolify instance id",
"coolify_service_uuid": "Coolify service UUID",
"coolify_service_uuid_message": "Select an existing service or paste a UUID.",
"coolify_service_uuid_placeholder": "Coolify service UUID",
"health_url": "Health URL",
"health_url_message": "Example: https://api-canary.example.test/ping",
"health_url_placeholder": "Health URL",
"ssl_domain": "Load balancer domain",
"ssl_domain_message": "Must be a DNS domain routed to the Coolify load balancer. Example: api-v2.truckwash.io",
"ssl_domain_placeholder": "Load balancer domain",
"https_domain_for_coolify": "Domain controlled by the load balancer",
"endpoint_mode": "Endpoint mode",
"endpoint_mode_message": "Use automatic gateway routing or manually override the public host and port.",
"endpoint_mode_auto": "Auto",
"endpoint_mode_manual": "Manual",
"manual_endpoint_host": "Manual host",
"manual_endpoint_host_message": "Public host shown in release previews when manual mode is selected.",
"manual_endpoint_host_placeholder": "api-v2.truckwash.io",
"manual_endpoint_port": "Manual public port",
"manual_endpoint_port_message": "Optional public port from 1 to 65535.",
"app_port": "App port",
"app_port_message": "Internal container port exposed to Coolify routing.",
"auto_gateway_endpoint": "Automatic gateway endpoint",
"pending_automatic_endpoint": "Automatic endpoint resolution pending",
"auto_deploy": "Auto deploy",
"auto_deploy_tooltip": "Automatically create deployments when this target changes.",
"coolify_ssl": "Coolify SSL",
"coolify_ssl_tooltip": "Ask Coolify to provision HTTPS for the configured domain.",
"deploy_now": "Deploy now",
"deploy_now_tooltip": "Start a deployment immediately after saving the target.",
"create_missing_service": "Create missing service",
"create_missing_service_tooltip": "Allow Release Manager to create a missing Coolify service.",
"test_access_tooltip": "Verify the configured GitHub token can read this repository and branch."
}
}
}
}
}
@@ -0,0 +1,454 @@
{
"compat": {
"configuration": {
"release_manager": {
"title": "Release Manager",
"subtitle": "Gradual API and Front-End releases",
"channel_names": {
"stable": "Stable",
"canary": "Canary",
"internal": "Internal"
},
"channel_descriptions": {
"stable": "Default production channel.",
"canary": "Early production validation channel.",
"internal": "Internal staff and superuser validation channel."
},
"control_api": {
"title": "Control API",
"tooltip": "Release Manager actions are sent to this API. Use the production control API unless testing a staged backend.",
"example": "Example: https://api.truckwash.io:4433",
"endpoint_label": "API endpoint",
"endpoint_message": "Switch this only when Release Manager endpoints are available on the target API.",
"endpoint_aria": "Release Manager control API URL",
"use_tooltip": "Load release data from this API",
"use": "Use",
"reset_tooltip": "Return to the default control API",
"reset": "Reset",
"known_endpoints": "Known control API endpoints"
},
"tabs": {
"overview": {
"label": "Overview",
"description": "Channel health, setup progress, and the latest release state."
},
"channels": {
"label": "Channels",
"description": "Create stable, canary, and targeted channels with rollout limits."
},
"assignments": {
"label": "Assignments",
"description": "Pin users, subusers, or customers to a specific release channel."
},
"deployments": {
"label": "Deployments",
"description": "Trigger deployments and promote successful builds."
},
"replay": {
"label": "Replay",
"description": "Enable targeted capture and search release timeline events."
},
"integrations": {
"label": "Integrations",
"description": "Connect GitHub repositories, branches, and Coolify services."
},
"settings": {
"label": "Settings",
"description": "Configure Release Manager GitHub access and webhook settings."
}
},
"loading": {
"summary": "Loading release manager data...",
"refreshing_summary": "Refreshing release manager data...",
"summary_detail": "Release status, channels, deployments, and service health are being loaded.",
"channels": "Loading release channels...",
"channels_detail": "Channel lanes and release dependencies are being loaded.",
"assignments": "Loading release assignments...",
"deployments": "Loading release deployments...",
"operations": "Loading release operations...",
"data_services": "Loading release data services...",
"integrations": "Loading release integrations...",
"settings": "Loading Release Manager settings...",
"github_repositories": "Loading GitHub repositories...",
"timeline_sessions": "Loading release timeline sessions...",
"timeline_events": "Loading release timeline events...",
"refreshing_timeline": "Refreshing release timeline..."
},
"setup": {
"channels": "Channels",
"targets": "GitHub and Coolify targets",
"assignments": "Pilot assignments",
"deployments": "First deployment",
"replay": "Replay capture"
},
"stats": {
"channels": "Channels",
"targets": "Targets",
"deployments": "Deployments",
"timeline_events": "Timeline events"
},
"overview": {
"title": "Overview",
"subtitle": "Current channel health, release activity, and module status.",
"guided_setup": "Guided setup",
"next_step": "Next: {step}",
"ready": "Release Manager is ready for day-to-day operations.",
"add_suggested_channel": "Add suggested channel",
"module_health_empty": "Module health snapshots appear after probes have been recorded."
},
"status": {
"confirm_issue_action": "Run this Release Manager action? It can change deployment state and will be audited.",
"choose_bundle_prompt": "Enter the bundle id to set for this channel.",
"impact": "Impact",
"cause": "Cause",
"automated_fix": "Automated fix",
"manual_fallback": "Manual fallback",
"related_deployment": "Related deployment",
"recent_result": "Recent result",
"no_automated_action": "No automated action available.",
"deployment": "Deployment",
"target": "Target",
"coolify_target": "Coolify target",
"service_set": "Service set"
},
"settings": {
"title": "Release Manager Settings",
"subtitle": "Configure the GitHub token used for private repositories and branch lookups.",
"github_token": "GitHub token",
"github_api_url": "GitHub API URL",
"webhook_secret": "Webhook secret",
"github_webhook_secret": "GitHub webhook secret",
"configured": "Configured",
"not_configured": "Not configured",
"loaded_from": "Loaded from {variable}",
"set_below": "Set {variable} below",
"private_repositories_prefix": "Private repositories are read with the server environment variable",
"private_repositories_or": "or the module config variable",
"github_token_message": "Example: github_pat_... with access to the private repositories Release Manager deploys.",
"github_token_placeholder": "Leave blank to keep the existing token",
"github_api_url_message": "Configured in ReleaseManager.github_api_url. Use https://api.github.com unless using GitHub Enterprise.",
"webhook_secret_message": "Optional; leave blank to keep the existing secret.",
"webhook_secret_placeholder": "Webhook HMAC secret",
"save": "Save settings",
"back_to_integrations": "Back to integrations",
"guide": {
"steps": {
"github_token": "GitHub token",
"github_api_url": "GitHub API URL",
"github_webhook_secret": "GitHub webhook secret",
"review": "Review"
},
"github_token_title": "Add GitHub token",
"github_token_description": "Release Manager uses this token to list private repositories, branches, and commits before a deployment target is saved or tested.",
"configure_this_in": "Configure this in",
"server_environment_variable": "The server environment variable",
"takes_precedence": "takes precedence when it is set.",
"recommended_access": "Recommended access",
"recommended_access_description": "Fine-grained GitHub token with Contents: read access for each release repository.",
"github_api_url_title": "Add GitHub API URL",
"github_api_url_description": "Use GitHub Cloud by default, or point this at the REST API base URL for a GitHub Enterprise Server installation.",
"github_api_url_invalid": "Enter a full HTTP or HTTPS URL.",
"github_cloud": "GitHub Cloud",
"enterprise_example": "Enterprise example",
"github_webhook_secret_title": "Add GitHub webhook secret",
"github_webhook_secret_description": "Use the same secret in GitHub repository webhooks so Release Manager can verify deployment events before handling them.",
"github_webhook_url": "GitHub webhook URL:",
"store_shared_secret_in": "Store the shared secret in",
"review_title": "Review GitHub setup",
"review_description": "Save the values, then use Integrations to select a private repository, branch, and specific commit or latest commit before testing access.",
"ready": "Ready",
"needs_value": "Needs value"
}
},
"channel_unavailable": {
"kicker": "Release Manager",
"title": "Release channel is not ready",
"summary_prefix": "Your account is assigned to",
"summary_suffix": ", but that channel is missing required release configuration.",
"release_bundle": "Release bundle",
"frontend_version": "Frontend version",
"api_version": "API version",
"frontend_base_url": "Frontend URL",
"api_base_url": "API URL",
"frontend_entry": "Frontend entry",
"release_runtime": "Release runtime",
"checking_again": "Checking again in {seconds}s",
"refresh_error": "Release status could not be refreshed. The next automatic check will try again.",
"ignore": "Ignore next 5 minutes",
"check_again": "Check again",
"logout": "Logout",
"base_image": "Base image"
},
"channel_switched": {
"kicker": "Release Manager",
"title": "You are now on {channel}",
"summary_prefix": "Your account has been assigned to the",
"summary_suffix": "release channel. This device will remember that you have seen this notice.",
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"frontend_version": "Frontend version",
"api_version": "API version",
"assigned_channel": "Assigned channel",
"current_app_image": "Current app image",
"current_api": "Current API",
"base_image": "Base image",
"continue": "Continue"
},
"channel_selector": {
"title": "Release channel",
"subtitle": "Choose which assigned release channel this device should use.",
"sidebar_title": "Release",
"default": "Default",
"ready": "Ready",
"unavailable": "Not ready",
"release_bundle": "Release bundle",
"frontend_version": "Frontend version",
"api_version": "API version",
"frontend_base_url": "Frontend URL",
"api_base_url": "API URL",
"frontend_entry": "Frontend entry",
"release_runtime": "Release runtime",
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"use_local_frontend": "Use local frontend",
"switch_error": "Release channel could not be switched. The previous channel is still active."
},
"common": {
"yes": "yes",
"no": "no",
"off": "off"
},
"actions": {
"edit": "Edit",
"rollback": "Rollback",
"update": "Update",
"create": "Create",
"publish_release": "Publish release",
"clear": "Clear",
"assign": "Assign",
"remove": "Remove",
"test_access": "Test access",
"deploy": "Deploy",
"redeploy": "Redeploy",
"promote": "Promote",
"enable": "Enable",
"search": "Search",
"save_target": "Save target",
"delete": "Delete",
"back": "Back",
"next": "Next"
},
"tables": {
"channel": "Channel",
"rollout": "Rollout",
"frontend": "Frontend",
"api": "API",
"replay": "Replay",
"actions": "Actions",
"module": "Module",
"status": "Status",
"checked": "Checked",
"subject": "Subject",
"reason": "Reason",
"expires": "Expires",
"deployment": "Deployment",
"source": "Source",
"started": "Started",
"target": "Target",
"coolify": "Coolify",
"auto": "Auto"
},
"values": {
"app": {
"frontend": "frontend",
"api": "api"
},
"capture_level": {
"metadata": "metadata",
"full_redacted": "full_redacted"
},
"subject_type": {
"user": "user",
"subuser": "subuser",
"customer": "customer",
"channel": "channel"
},
"severity": {
"error": "error",
"warning": "warning",
"info": "info"
},
"status": {
"ok": "ok",
"active": "active",
"deployed": "deployed",
"stable": "stable",
"enabled": "enabled",
"queued": "queued",
"deploying": "deploying",
"metadata": "metadata",
"not_configured": "not configured",
"warning": "warning",
"failed": "failed",
"down": "down",
"error": "error",
"unknown": "unknown"
}
},
"autocomplete": {
"suggested_value": "Suggested value",
"suggestion": "Suggestion",
"use_typed_value": "Use typed value",
"custom": "Custom",
"api_url": "API URL",
"frontend_url": "Frontend URL",
"known_release_url": "Known release URL",
"deploy_here_with_coolify": "Deploy {app} here with Coolify",
"prepare_coolify_target": "Prepare a Coolify target with HTTPS/SSL enabled",
"coolify_ssl": "Coolify SSL",
"github_repository": "GitHub repository",
"owner_repository": "owner/repository",
"git_branch": "Git branch",
"deployment_branch": "Deployment branch",
"github_commit": "GitHub commit",
"git_commit": "Git commit",
"use_specific_commit_sha": "Use specific commit SHA",
"custom_commit": "Custom commit",
"health_url": "Health URL",
"release_health_check": "Release health check",
"coolify_service": "Coolify service",
"service_uuid": "Service UUID",
"known_coolify_service_uuid": "Known Coolify service UUID",
"control_api": "Control API",
"release_manager_api_endpoint": "Release Manager API endpoint",
"module": "Module",
"timeline_module_key": "Timeline module key"
},
"errors": {
"github_repositories": "Could not load GitHub repositories.",
"github_branches": "Could not load GitHub branches.",
"repository_branch_required": "Repository and branch are required before testing GitHub access.",
"github_access_failed": "GitHub repository access test failed."
},
"channels": {
"title": "Channels",
"subtitle": "Create and tune gradual release channels.",
"rollout_percent": "{percent}% rollout",
"already_configured": "Already configured",
"slug": "Slug",
"slug_message": "Example: canary",
"slug_placeholder": "slug",
"name": "Name",
"name_message": "Shown to operators when reviewing a channel.",
"name_placeholder": "Name",
"rollout": "Rollout",
"rollout_message": "0-100 percent of unassigned traffic.",
"frontend_url": "Frontend URL",
"frontend_url_message": "Example: https://canary.example.test",
"frontend_url_placeholder": "Frontend URL",
"no_matching_release_url": "No matching release URL.",
"api_url": "API URL",
"api_url_message": "Example: https://api-canary.example.test",
"api_url_placeholder": "API URL",
"no_matching_api_url": "No matching API URL.",
"replay_capture": "Replay capture",
"replay_capture_message": "Metadata is safer for broad channels.",
"retention_days": "Retention days",
"retention_days_message": "1-365 days.",
"enabled": "Enabled",
"default_channel": "Default channel",
"replay_enabled": "Replay enabled",
"frontend_chip": "Frontend: {url}",
"api_chip": "API: {url}"
},
"assignments": {
"title": "Assignments",
"subtitle": "Pin users, subusers, or customers to release channels.",
"subject": "Subject",
"subject_message": "Search users, subusers, or customers, or type a manual subject like user:42.",
"subject_placeholder": "Search or type subject",
"subject_empty": "No subjects found",
"group_users": "Users",
"group_subusers": "Subusers",
"group_customers": "Customers",
"group_manual": "Manual",
"manual_user": "User #{id}",
"manual_subuser": "Subuser #{id}",
"manual_customer": "Customer #{id}",
"manual_description": "Use typed value {subject}",
"subject_type": "Subject type",
"subject_type_message": "Choose the identity type to pin.",
"customer": "Customer",
"customer_message": "Search by customer number or name, then select the exact customer.",
"customer_placeholder": "Search customer",
"subject_id": "Subject ID",
"subject_id_message": "Example: user id 42",
"subject_id_placeholder": "Subject id",
"channel": "Channel",
"channel_message": "Pinned subjects bypass percentage rollout.",
"reason": "Reason",
"reason_message": "Example: canary validation for customer support.",
"reason_placeholder": "Reason",
"expires": "Expires",
"expires_message": "Leave blank for no automatic expiry."
},
"deployments": {
"title": "Deployments",
"subtitle": "Trigger, promote, and inspect release deployments.",
"manual_deployment_record": "Manual deployment record",
"target": "Target",
"target_message": "Pick a saved target or keep manual fields editable.",
"select_target_or_manual": "Select target or manual",
"channel": "Channel",
"app": "App",
"repository": "Repository",
"repository_message": "Example: truckwash/front-end-vue",
"repository_placeholder": "owner/repo",
"branch": "Branch",
"branch_message": "Example: master",
"branch_placeholder": "branch",
"commit_selection": "Commit selection",
"commit_selection_message": "Latest resolves to the branch head with the configured GitHub token.",
"latest_from_branch": "Latest from branch",
"specific_commit": "Specific commit",
"specific_commit_message": "Example: feedface1234",
"commit_sha_placeholder": "commit sha",
"version_label": "Version label",
"version_label_message": "Example: api-2026.05.19",
"version_label_placeholder": "version label",
"commit_prefix": "Commit: {commit}",
"test_access_tooltip": "Verify token access to the selected repository, branch, and commit."
},
"replay": {
"title": "Replay",
"subtitle": "Enable targeted capture and step through failure timelines.",
"capture_channel": "Capture {channel}",
"target_type": "Target type",
"target": "Target",
"target_message": "Example: user id 42 or channel slug canary.",
"target_placeholder": "Target id or channel slug",
"channel_scope": "Channel scope",
"channel_scope_message": "Optional; limits replay capture to a channel.",
"no_channel_scope": "No channel scope",
"capture_level": "Capture level",
"expires": "Expires",
"expires_message": "Leave blank for manual disable.",
"trace_id": "Trace ID",
"trace_id_message": "Example: trace-canary-1",
"trace_id_placeholder": "Trace id",
"channel": "Channel",
"channel_placeholder": "Channel",
"principal_id": "Principal ID",
"principal_id_placeholder": "Principal id",
"module": "Module",
"module_placeholder": "Module",
"severity": "Severity",
"any_severity": "Any severity",
"no_timeline_events": "No timeline events match the current filters."
}
}
}
}
}
@@ -98,7 +98,25 @@
"view_lane_new_tab": "@:{'phrases.compat.admin.pos.settings_wheel.view_lane_new_tab'}",
"view_lane_setup_new_tab": "@:{'phrases.compat.admin.pos.settings_wheel.view_lane_setup_new_tab'}",
"view_order_new_tab": "@:{'phrases.compat.admin.pos.settings_wheel.view_order_new_tab'}",
"view_vehicle_new_tab": "@:{'phrases.compat.admin.pos.settings_wheel.view_vehicle_new_tab'}"
"view_vehicle_new_tab": "@:{'phrases.compat.admin.pos.settings_wheel.view_vehicle_new_tab'}",
"accept_self_serve_wash": "@:{'phrases.compat.admin.pos.settings_wheel.accept_self_serve_wash'}",
"accept_self_serve_wash_confirm": "@:{'phrases.compat.admin.pos.settings_wheel.accept_self_serve_wash_confirm'}",
"accept_self_serve_wash_success": "@:{'phrases.compat.admin.pos.settings_wheel.accept_self_serve_wash_success'}",
"email_notifications_section": "@:{'phrases.compat.admin.pos.settings_wheel.email_notifications_section'}",
"resend_booking_completion_confirmation": "@:{'phrases.compat.admin.pos.settings_wheel.resend_booking_completion_confirmation'}",
"resend_booking_completion_confirmation_error": "@:{'phrases.compat.admin.pos.settings_wheel.resend_booking_completion_confirmation_error'}",
"resend_booking_completion_confirmation_success": "@:{'phrases.compat.admin.pos.settings_wheel.resend_booking_completion_confirmation_success'}",
"resend_booking_confirmation": "@:{'phrases.compat.admin.pos.settings_wheel.resend_booking_confirmation'}",
"resend_booking_confirmation_error": "@:{'phrases.compat.admin.pos.settings_wheel.resend_booking_confirmation_error'}",
"resend_booking_confirmation_success": "@:{'phrases.compat.admin.pos.settings_wheel.resend_booking_confirmation_success'}",
"resend_wash_certificate": "@:{'phrases.compat.admin.pos.settings_wheel.resend_wash_certificate'}",
"resend_wash_certificate_error": "@:{'phrases.compat.admin.pos.settings_wheel.resend_wash_certificate_error'}",
"resend_wash_certificate_success": "@:{'phrases.compat.admin.pos.settings_wheel.resend_wash_certificate_success'}",
"self_serve_customer": "@:{'phrases.compat.admin.pos.settings_wheel.self_serve_customer'}",
"self_serve_driver": "@:{'phrases.compat.admin.pos.settings_wheel.self_serve_driver'}",
"self_serve_elapsed": "@:{'phrases.compat.admin.pos.settings_wheel.self_serve_elapsed'}",
"self_serve_wash_attachment": "@:{'phrases.compat.admin.pos.settings_wheel.self_serve_wash_attachment'}",
"self_serve_wash_attachment_for_customer": "@:{'phrases.compat.admin.pos.settings_wheel.self_serve_wash_attachment_for_customer'}"
},
"show_details": "@:{'phrases.compat.admin.pos.show_details'}",
"show_order_details": "@:{'phrases.compat.admin.pos.show_order_details'}",
@@ -351,473 +351,6 @@
"title": "@:{'phrases.compat.configuration.xlvask.title'}",
"username": "@:auth.username",
"username_desc": "@:{'phrases.compat.configuration.xlvask.username_desc'}"
},
"release_manager": {
"title": "@:{'phrases.compat.configuration.release_manager.title'}",
"subtitle": "@:{'phrases.compat.configuration.release_manager.subtitle'}",
"channel_names": {
"stable": "@:{'phrases.compat.configuration.release_manager.channel_names.stable'}",
"canary": "@:{'phrases.compat.configuration.release_manager.channel_names.canary'}",
"internal": "@:{'phrases.compat.configuration.release_manager.channel_names.internal'}"
},
"channel_descriptions": {
"stable": "@:{'phrases.compat.configuration.release_manager.channel_descriptions.stable'}",
"canary": "@:{'phrases.compat.configuration.release_manager.channel_descriptions.canary'}",
"internal": "@:{'phrases.compat.configuration.release_manager.channel_descriptions.internal'}"
},
"control_api": {
"title": "@:{'phrases.compat.configuration.release_manager.control_api.title'}",
"tooltip": "@:{'phrases.compat.configuration.release_manager.control_api.tooltip'}",
"example": "@:{'phrases.compat.configuration.release_manager.control_api.example'}",
"endpoint_label": "@:{'phrases.compat.configuration.release_manager.control_api.endpoint_label'}",
"endpoint_message": "@:{'phrases.compat.configuration.release_manager.control_api.endpoint_message'}",
"endpoint_aria": "@:{'phrases.compat.configuration.release_manager.control_api.endpoint_aria'}",
"use_tooltip": "@:{'phrases.compat.configuration.release_manager.control_api.use_tooltip'}",
"use": "@:{'phrases.compat.configuration.release_manager.control_api.use'}",
"reset_tooltip": "@:{'phrases.compat.configuration.release_manager.control_api.reset_tooltip'}",
"reset": "@:{'phrases.compat.configuration.release_manager.control_api.reset'}",
"known_endpoints": "@:{'phrases.compat.configuration.release_manager.control_api.known_endpoints'}"
},
"tabs": {
"overview": {
"label": "@:{'phrases.compat.configuration.release_manager.tabs.overview.label'}",
"description": "@:{'phrases.compat.configuration.release_manager.tabs.overview.description'}"
},
"channels": {
"label": "@:{'phrases.compat.configuration.release_manager.tabs.channels.label'}",
"description": "@:{'phrases.compat.configuration.release_manager.tabs.channels.description'}"
},
"assignments": {
"label": "@:{'phrases.compat.configuration.release_manager.tabs.assignments.label'}",
"description": "@:{'phrases.compat.configuration.release_manager.tabs.assignments.description'}"
},
"deployments": {
"label": "@:{'phrases.compat.configuration.release_manager.tabs.deployments.label'}",
"description": "@:{'phrases.compat.configuration.release_manager.tabs.deployments.description'}"
},
"replay": {
"label": "@:{'phrases.compat.configuration.release_manager.tabs.replay.label'}",
"description": "@:{'phrases.compat.configuration.release_manager.tabs.replay.description'}"
},
"integrations": {
"label": "@:{'phrases.compat.configuration.release_manager.tabs.integrations.label'}",
"description": "@:{'phrases.compat.configuration.release_manager.tabs.integrations.description'}"
},
"settings": {
"label": "@:{'phrases.compat.configuration.release_manager.tabs.settings.label'}",
"description": "@:{'phrases.compat.configuration.release_manager.tabs.settings.description'}"
}
},
"setup": {
"channels": "@:{'phrases.compat.configuration.release_manager.setup.channels'}",
"targets": "@:{'phrases.compat.configuration.release_manager.setup.targets'}",
"assignments": "@:{'phrases.compat.configuration.release_manager.setup.assignments'}",
"deployments": "@:{'phrases.compat.configuration.release_manager.setup.deployments'}",
"replay": "@:{'phrases.compat.configuration.release_manager.setup.replay'}"
},
"stats": {
"channels": "@:{'phrases.compat.configuration.release_manager.stats.channels'}",
"targets": "@:{'phrases.compat.configuration.release_manager.stats.targets'}",
"deployments": "@:{'phrases.compat.configuration.release_manager.stats.deployments'}",
"timeline_events": "@:{'phrases.compat.configuration.release_manager.stats.timeline_events'}"
},
"overview": {
"title": "@:{'phrases.compat.configuration.release_manager.overview.title'}",
"subtitle": "@:{'phrases.compat.configuration.release_manager.overview.subtitle'}",
"guided_setup": "@:{'phrases.compat.configuration.release_manager.overview.guided_setup'}",
"next_step": "@:{'phrases.compat.configuration.release_manager.overview.next_step'}",
"ready": "@:{'phrases.compat.configuration.release_manager.overview.ready'}",
"add_suggested_channel": "@:{'phrases.compat.configuration.release_manager.overview.add_suggested_channel'}",
"module_health_empty": "@:{'phrases.compat.configuration.release_manager.overview.module_health_empty'}"
},
"settings": {
"title": "@:{'phrases.compat.configuration.release_manager.settings.title'}",
"subtitle": "@:{'phrases.compat.configuration.release_manager.settings.subtitle'}",
"github_token": "@:{'phrases.compat.configuration.release_manager.settings.github_token'}",
"github_api_url": "@:{'phrases.compat.configuration.release_manager.settings.github_api_url'}",
"webhook_secret": "@:{'phrases.compat.configuration.release_manager.settings.webhook_secret'}",
"github_webhook_secret": "@:{'phrases.compat.configuration.release_manager.settings.github_webhook_secret'}",
"configured": "@:{'phrases.compat.configuration.release_manager.settings.configured'}",
"not_configured": "@:{'phrases.compat.configuration.release_manager.settings.not_configured'}",
"loaded_from": "@:{'phrases.compat.configuration.release_manager.settings.loaded_from'}",
"set_below": "@:{'phrases.compat.configuration.release_manager.settings.set_below'}",
"private_repositories_prefix": "@:{'phrases.compat.configuration.release_manager.settings.private_repositories_prefix'}",
"private_repositories_or": "@:{'phrases.compat.configuration.release_manager.settings.private_repositories_or'}",
"github_token_message": "@:{'phrases.compat.configuration.release_manager.settings.github_token_message'}",
"github_token_placeholder": "@:{'phrases.compat.configuration.release_manager.settings.github_token_placeholder'}",
"github_api_url_message": "@:{'phrases.compat.configuration.release_manager.settings.github_api_url_message'}",
"webhook_secret_message": "@:{'phrases.compat.configuration.release_manager.settings.webhook_secret_message'}",
"webhook_secret_placeholder": "@:{'phrases.compat.configuration.release_manager.settings.webhook_secret_placeholder'}",
"save": "@:{'phrases.compat.configuration.release_manager.settings.save'}",
"back_to_integrations": "@:{'phrases.compat.configuration.release_manager.settings.back_to_integrations'}",
"guide": {
"steps": {
"github_token": "@:{'phrases.compat.configuration.release_manager.settings.guide.steps.github_token'}",
"github_api_url": "@:{'phrases.compat.configuration.release_manager.settings.guide.steps.github_api_url'}",
"github_webhook_secret": "@:{'phrases.compat.configuration.release_manager.settings.guide.steps.github_webhook_secret'}",
"review": "@:{'phrases.compat.configuration.release_manager.settings.guide.steps.review'}"
},
"github_token_title": "@:{'phrases.compat.configuration.release_manager.settings.guide.github_token_title'}",
"github_token_description": "@:{'phrases.compat.configuration.release_manager.settings.guide.github_token_description'}",
"configure_this_in": "@:{'phrases.compat.configuration.release_manager.settings.guide.configure_this_in'}",
"server_environment_variable": "@:{'phrases.compat.configuration.release_manager.settings.guide.server_environment_variable'}",
"takes_precedence": "@:{'phrases.compat.configuration.release_manager.settings.guide.takes_precedence'}",
"recommended_access": "@:{'phrases.compat.configuration.release_manager.settings.guide.recommended_access'}",
"recommended_access_description": "@:{'phrases.compat.configuration.release_manager.settings.guide.recommended_access_description'}",
"github_api_url_title": "@:{'phrases.compat.configuration.release_manager.settings.guide.github_api_url_title'}",
"github_api_url_description": "@:{'phrases.compat.configuration.release_manager.settings.guide.github_api_url_description'}",
"github_api_url_invalid": "@:{'phrases.compat.configuration.release_manager.settings.guide.github_api_url_invalid'}",
"github_cloud": "@:{'phrases.compat.configuration.release_manager.settings.guide.github_cloud'}",
"enterprise_example": "@:{'phrases.compat.configuration.release_manager.settings.guide.enterprise_example'}",
"github_webhook_secret_title": "@:{'phrases.compat.configuration.release_manager.settings.guide.github_webhook_secret_title'}",
"github_webhook_secret_description": "@:{'phrases.compat.configuration.release_manager.settings.guide.github_webhook_secret_description'}",
"github_webhook_url": "@:{'phrases.compat.configuration.release_manager.settings.guide.github_webhook_url'}",
"store_shared_secret_in": "@:{'phrases.compat.configuration.release_manager.settings.guide.store_shared_secret_in'}",
"review_title": "@:{'phrases.compat.configuration.release_manager.settings.guide.review_title'}",
"review_description": "@:{'phrases.compat.configuration.release_manager.settings.guide.review_description'}",
"ready": "@:{'phrases.compat.configuration.release_manager.settings.guide.ready'}",
"needs_value": "@:{'phrases.compat.configuration.release_manager.settings.guide.needs_value'}"
}
},
"channel_unavailable": {
"kicker": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.kicker'}",
"title": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.title'}",
"summary_prefix": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.summary_prefix'}",
"summary_suffix": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.summary_suffix'}",
"release_bundle": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.release_bundle'}",
"frontend_version": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.frontend_version'}",
"api_version": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.api_version'}",
"frontend_base_url": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.frontend_base_url'}",
"api_base_url": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.api_base_url'}",
"frontend_entry": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.frontend_entry'}",
"release_runtime": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.release_runtime'}",
"checking_again": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.checking_again'}",
"refresh_error": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.refresh_error'}",
"ignore": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.ignore'}",
"check_again": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.check_again'}",
"logout": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.logout'}",
"base_image": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.base_image'}"
},
"channel_switched": {
"kicker": "@:{'phrases.compat.configuration.release_manager.channel_switched.kicker'}",
"title": "@:{'phrases.compat.configuration.release_manager.channel_switched.title'}",
"summary_prefix": "@:{'phrases.compat.configuration.release_manager.channel_switched.summary_prefix'}",
"summary_suffix": "@:{'phrases.compat.configuration.release_manager.channel_switched.summary_suffix'}",
"bundle": "@:{'phrases.compat.configuration.release_manager.channel_switched.bundle'}",
"frontend": "@:{'phrases.compat.configuration.release_manager.channel_switched.frontend'}",
"api": "@:{'phrases.compat.configuration.release_manager.channel_switched.api'}",
"frontend_version": "@:{'phrases.compat.configuration.release_manager.channel_switched.frontend_version'}",
"api_version": "@:{'phrases.compat.configuration.release_manager.channel_switched.api_version'}",
"assigned_channel": "@:{'phrases.compat.configuration.release_manager.channel_switched.assigned_channel'}",
"current_app_image": "@:{'phrases.compat.configuration.release_manager.channel_switched.current_app_image'}",
"current_api": "@:{'phrases.compat.configuration.release_manager.channel_switched.current_api'}",
"base_image": "@:{'phrases.compat.configuration.release_manager.channel_switched.base_image'}",
"continue": "@:{'phrases.compat.configuration.release_manager.channel_switched.continue'}"
},
"channel_selector": {
"title": "@:{'phrases.compat.configuration.release_manager.channel_selector.title'}",
"subtitle": "@:{'phrases.compat.configuration.release_manager.channel_selector.subtitle'}",
"sidebar_title": "@:{'phrases.compat.configuration.release_manager.channel_selector.sidebar_title'}",
"default": "@:{'phrases.compat.configuration.release_manager.channel_selector.default'}",
"ready": "@:{'phrases.compat.configuration.release_manager.channel_selector.ready'}",
"unavailable": "@:{'phrases.compat.configuration.release_manager.channel_selector.unavailable'}",
"release_bundle": "@:{'phrases.compat.configuration.release_manager.channel_selector.release_bundle'}",
"frontend_version": "@:{'phrases.compat.configuration.release_manager.channel_selector.frontend_version'}",
"api_version": "@:{'phrases.compat.configuration.release_manager.channel_selector.api_version'}",
"frontend_base_url": "@:{'phrases.compat.configuration.release_manager.channel_selector.frontend_base_url'}",
"api_base_url": "@:{'phrases.compat.configuration.release_manager.channel_selector.api_base_url'}",
"frontend_entry": "@:{'phrases.compat.configuration.release_manager.channel_selector.frontend_entry'}",
"release_runtime": "@:{'phrases.compat.configuration.release_manager.channel_selector.release_runtime'}",
"bundle": "@:{'phrases.compat.configuration.release_manager.channel_selector.bundle'}",
"frontend": "@:{'phrases.compat.configuration.release_manager.channel_selector.frontend'}",
"api": "@:{'phrases.compat.configuration.release_manager.channel_selector.api'}",
"use_local_frontend": "@:{'phrases.compat.configuration.release_manager.channel_selector.use_local_frontend'}"
},
"common": {
"yes": "@:{'phrases.compat.configuration.release_manager.common.yes'}",
"no": "@:{'phrases.compat.configuration.release_manager.common.no'}",
"off": "@:{'phrases.compat.configuration.release_manager.common.off'}"
},
"actions": {
"edit": "@:{'phrases.compat.configuration.release_manager.actions.edit'}",
"rollback": "@:{'phrases.compat.configuration.release_manager.actions.rollback'}",
"update": "@:{'phrases.compat.configuration.release_manager.actions.update'}",
"create": "@:{'phrases.compat.configuration.release_manager.actions.create'}",
"clear": "@:{'phrases.compat.configuration.release_manager.actions.clear'}",
"assign": "@:{'phrases.compat.configuration.release_manager.actions.assign'}",
"remove": "@:{'phrases.compat.configuration.release_manager.actions.remove'}",
"test_access": "@:{'phrases.compat.configuration.release_manager.actions.test_access'}",
"deploy": "@:{'phrases.compat.configuration.release_manager.actions.deploy'}",
"redeploy": "@:{'phrases.compat.configuration.release_manager.actions.redeploy'}",
"promote": "@:{'phrases.compat.configuration.release_manager.actions.promote'}",
"enable": "@:{'phrases.compat.configuration.release_manager.actions.enable'}",
"search": "@:{'phrases.compat.configuration.release_manager.actions.search'}",
"save_target": "@:{'phrases.compat.configuration.release_manager.actions.save_target'}",
"delete": "@:{'phrases.compat.configuration.release_manager.actions.delete'}",
"back": "@:{'phrases.compat.configuration.release_manager.actions.back'}",
"next": "@:{'phrases.compat.configuration.release_manager.actions.next'}"
},
"tables": {
"channel": "@:{'phrases.compat.configuration.release_manager.tables.channel'}",
"rollout": "@:{'phrases.compat.configuration.release_manager.tables.rollout'}",
"frontend": "@:{'phrases.compat.configuration.release_manager.tables.frontend'}",
"api": "@:{'phrases.compat.configuration.release_manager.tables.api'}",
"replay": "@:{'phrases.compat.configuration.release_manager.tables.replay'}",
"actions": "@:{'phrases.compat.configuration.release_manager.tables.actions'}",
"module": "@:{'phrases.compat.configuration.release_manager.tables.module'}",
"status": "@:{'phrases.compat.configuration.release_manager.tables.status'}",
"checked": "@:{'phrases.compat.configuration.release_manager.tables.checked'}",
"subject": "@:{'phrases.compat.configuration.release_manager.tables.subject'}",
"reason": "@:{'phrases.compat.configuration.release_manager.tables.reason'}",
"expires": "@:{'phrases.compat.configuration.release_manager.tables.expires'}",
"deployment": "@:{'phrases.compat.configuration.release_manager.tables.deployment'}",
"source": "@:{'phrases.compat.configuration.release_manager.tables.source'}",
"started": "@:{'phrases.compat.configuration.release_manager.tables.started'}",
"target": "@:{'phrases.compat.configuration.release_manager.tables.target'}",
"coolify": "@:{'phrases.compat.configuration.release_manager.tables.coolify'}",
"auto": "@:{'phrases.compat.configuration.release_manager.tables.auto'}"
},
"values": {
"app": {
"frontend": "@:{'phrases.compat.configuration.release_manager.values.app.frontend'}",
"api": "@:{'phrases.compat.configuration.release_manager.values.app.api'}"
},
"capture_level": {
"metadata": "@:{'phrases.compat.configuration.release_manager.values.capture_level.metadata'}",
"full_redacted": "@:{'phrases.compat.configuration.release_manager.values.capture_level.full_redacted'}"
},
"subject_type": {
"user": "@:{'phrases.compat.configuration.release_manager.values.subject_type.user'}",
"subuser": "@:{'phrases.compat.configuration.release_manager.values.subject_type.subuser'}",
"customer": "@:{'phrases.compat.configuration.release_manager.values.subject_type.customer'}",
"channel": "@:{'phrases.compat.configuration.release_manager.values.subject_type.channel'}"
},
"severity": {
"error": "@:{'phrases.compat.configuration.release_manager.values.severity.error'}",
"warning": "@:{'phrases.compat.configuration.release_manager.values.severity.warning'}",
"info": "@:{'phrases.compat.configuration.release_manager.values.severity.info'}"
},
"status": {
"ok": "@:{'phrases.compat.configuration.release_manager.values.status.ok'}",
"active": "@:{'phrases.compat.configuration.release_manager.values.status.active'}",
"deployed": "@:{'phrases.compat.configuration.release_manager.values.status.deployed'}",
"stable": "@:{'phrases.compat.configuration.release_manager.values.status.stable'}",
"enabled": "@:{'phrases.compat.configuration.release_manager.values.status.enabled'}",
"queued": "@:{'phrases.compat.configuration.release_manager.values.status.queued'}",
"deploying": "@:{'phrases.compat.configuration.release_manager.values.status.deploying'}",
"metadata": "@:{'phrases.compat.configuration.release_manager.values.status.metadata'}",
"not_configured": "@:{'phrases.compat.configuration.release_manager.values.status.not_configured'}",
"warning": "@:{'phrases.compat.configuration.release_manager.values.status.warning'}",
"failed": "@:{'phrases.compat.configuration.release_manager.values.status.failed'}",
"down": "@:{'phrases.compat.configuration.release_manager.values.status.down'}",
"error": "@:{'phrases.compat.configuration.release_manager.values.status.error'}",
"unknown": "@:{'phrases.compat.configuration.release_manager.values.status.unknown'}"
}
},
"autocomplete": {
"suggested_value": "@:{'phrases.compat.configuration.release_manager.autocomplete.suggested_value'}",
"suggestion": "@:{'phrases.compat.configuration.release_manager.autocomplete.suggestion'}",
"use_typed_value": "@:{'phrases.compat.configuration.release_manager.autocomplete.use_typed_value'}",
"custom": "@:{'phrases.compat.configuration.release_manager.autocomplete.custom'}",
"api_url": "@:{'phrases.compat.configuration.release_manager.autocomplete.api_url'}",
"frontend_url": "@:{'phrases.compat.configuration.release_manager.autocomplete.frontend_url'}",
"known_release_url": "@:{'phrases.compat.configuration.release_manager.autocomplete.known_release_url'}",
"deploy_here_with_coolify": "@:{'phrases.compat.configuration.release_manager.autocomplete.deploy_here_with_coolify'}",
"prepare_coolify_target": "@:{'phrases.compat.configuration.release_manager.autocomplete.prepare_coolify_target'}",
"coolify_ssl": "@:{'phrases.compat.configuration.release_manager.autocomplete.coolify_ssl'}",
"github_repository": "@:{'phrases.compat.configuration.release_manager.autocomplete.github_repository'}",
"owner_repository": "@:{'phrases.compat.configuration.release_manager.autocomplete.owner_repository'}",
"git_branch": "@:{'phrases.compat.configuration.release_manager.autocomplete.git_branch'}",
"deployment_branch": "@:{'phrases.compat.configuration.release_manager.autocomplete.deployment_branch'}",
"github_commit": "@:{'phrases.compat.configuration.release_manager.autocomplete.github_commit'}",
"git_commit": "@:{'phrases.compat.configuration.release_manager.autocomplete.git_commit'}",
"use_specific_commit_sha": "@:{'phrases.compat.configuration.release_manager.autocomplete.use_specific_commit_sha'}",
"custom_commit": "@:{'phrases.compat.configuration.release_manager.autocomplete.custom_commit'}",
"health_url": "@:{'phrases.compat.configuration.release_manager.autocomplete.health_url'}",
"release_health_check": "@:{'phrases.compat.configuration.release_manager.autocomplete.release_health_check'}",
"coolify_service": "@:{'phrases.compat.configuration.release_manager.autocomplete.coolify_service'}",
"service_uuid": "@:{'phrases.compat.configuration.release_manager.autocomplete.service_uuid'}",
"known_coolify_service_uuid": "@:{'phrases.compat.configuration.release_manager.autocomplete.known_coolify_service_uuid'}",
"control_api": "@:{'phrases.compat.configuration.release_manager.autocomplete.control_api'}",
"release_manager_api_endpoint": "@:{'phrases.compat.configuration.release_manager.autocomplete.release_manager_api_endpoint'}",
"module": "@:{'phrases.compat.configuration.release_manager.autocomplete.module'}",
"timeline_module_key": "@:{'phrases.compat.configuration.release_manager.autocomplete.timeline_module_key'}"
},
"errors": {
"github_repositories": "@:{'phrases.compat.configuration.release_manager.errors.github_repositories'}",
"github_branches": "@:{'phrases.compat.configuration.release_manager.errors.github_branches'}",
"repository_branch_required": "@:{'phrases.compat.configuration.release_manager.errors.repository_branch_required'}",
"github_access_failed": "@:{'phrases.compat.configuration.release_manager.errors.github_access_failed'}"
},
"channels": {
"title": "@:{'phrases.compat.configuration.release_manager.channels.title'}",
"subtitle": "@:{'phrases.compat.configuration.release_manager.channels.subtitle'}",
"rollout_percent": "@:{'phrases.compat.configuration.release_manager.channels.rollout_percent'}",
"already_configured": "@:{'phrases.compat.configuration.release_manager.channels.already_configured'}",
"slug": "@:{'phrases.compat.configuration.release_manager.channels.slug'}",
"slug_message": "@:{'phrases.compat.configuration.release_manager.channels.slug_message'}",
"slug_placeholder": "@:{'phrases.compat.configuration.release_manager.channels.slug_placeholder'}",
"name": "@:{'phrases.compat.configuration.release_manager.channels.name'}",
"name_message": "@:{'phrases.compat.configuration.release_manager.channels.name_message'}",
"name_placeholder": "@:{'phrases.compat.configuration.release_manager.channels.name_placeholder'}",
"rollout": "@:{'phrases.compat.configuration.release_manager.channels.rollout'}",
"rollout_message": "@:{'phrases.compat.configuration.release_manager.channels.rollout_message'}",
"frontend_url": "@:{'phrases.compat.configuration.release_manager.channels.frontend_url'}",
"frontend_url_message": "@:{'phrases.compat.configuration.release_manager.channels.frontend_url_message'}",
"frontend_url_placeholder": "@:{'phrases.compat.configuration.release_manager.channels.frontend_url_placeholder'}",
"no_matching_release_url": "@:{'phrases.compat.configuration.release_manager.channels.no_matching_release_url'}",
"api_url": "@:{'phrases.compat.configuration.release_manager.channels.api_url'}",
"api_url_message": "@:{'phrases.compat.configuration.release_manager.channels.api_url_message'}",
"api_url_placeholder": "@:{'phrases.compat.configuration.release_manager.channels.api_url_placeholder'}",
"no_matching_api_url": "@:{'phrases.compat.configuration.release_manager.channels.no_matching_api_url'}",
"replay_capture": "@:{'phrases.compat.configuration.release_manager.channels.replay_capture'}",
"replay_capture_message": "@:{'phrases.compat.configuration.release_manager.channels.replay_capture_message'}",
"retention_days": "@:{'phrases.compat.configuration.release_manager.channels.retention_days'}",
"retention_days_message": "@:{'phrases.compat.configuration.release_manager.channels.retention_days_message'}",
"enabled": "@:{'phrases.compat.configuration.release_manager.channels.enabled'}",
"default_channel": "@:{'phrases.compat.configuration.release_manager.channels.default_channel'}",
"replay_enabled": "@:{'phrases.compat.configuration.release_manager.channels.replay_enabled'}",
"frontend_chip": "@:{'phrases.compat.configuration.release_manager.channels.frontend_chip'}",
"api_chip": "@:{'phrases.compat.configuration.release_manager.channels.api_chip'}"
},
"assignments": {
"title": "@:{'phrases.compat.configuration.release_manager.assignments.title'}",
"subtitle": "@:{'phrases.compat.configuration.release_manager.assignments.subtitle'}",
"subject": "@:{'phrases.compat.configuration.release_manager.assignments.subject'}",
"subject_message": "@:{'phrases.compat.configuration.release_manager.assignments.subject_message'}",
"subject_placeholder": "@:{'phrases.compat.configuration.release_manager.assignments.subject_placeholder'}",
"subject_empty": "@:{'phrases.compat.configuration.release_manager.assignments.subject_empty'}",
"group_users": "@:{'phrases.compat.configuration.release_manager.assignments.group_users'}",
"group_subusers": "@:{'phrases.compat.configuration.release_manager.assignments.group_subusers'}",
"group_customers": "@:{'phrases.compat.configuration.release_manager.assignments.group_customers'}",
"group_manual": "@:{'phrases.compat.configuration.release_manager.assignments.group_manual'}",
"manual_user": "@:{'phrases.compat.configuration.release_manager.assignments.manual_user'}",
"manual_subuser": "@:{'phrases.compat.configuration.release_manager.assignments.manual_subuser'}",
"manual_customer": "@:{'phrases.compat.configuration.release_manager.assignments.manual_customer'}",
"manual_description": "@:{'phrases.compat.configuration.release_manager.assignments.manual_description'}",
"subject_type": "@:{'phrases.compat.configuration.release_manager.assignments.subject_type'}",
"subject_type_message": "@:{'phrases.compat.configuration.release_manager.assignments.subject_type_message'}",
"customer": "@:{'phrases.compat.configuration.release_manager.assignments.customer'}",
"customer_message": "@:{'phrases.compat.configuration.release_manager.assignments.customer_message'}",
"customer_placeholder": "@:{'phrases.compat.configuration.release_manager.assignments.customer_placeholder'}",
"subject_id": "@:{'phrases.compat.configuration.release_manager.assignments.subject_id'}",
"subject_id_message": "@:{'phrases.compat.configuration.release_manager.assignments.subject_id_message'}",
"subject_id_placeholder": "@:{'phrases.compat.configuration.release_manager.assignments.subject_id_placeholder'}",
"channel": "@:{'phrases.compat.configuration.release_manager.assignments.channel'}",
"channel_message": "@:{'phrases.compat.configuration.release_manager.assignments.channel_message'}",
"reason": "@:{'phrases.compat.configuration.release_manager.assignments.reason'}",
"reason_message": "@:{'phrases.compat.configuration.release_manager.assignments.reason_message'}",
"reason_placeholder": "@:{'phrases.compat.configuration.release_manager.assignments.reason_placeholder'}",
"expires": "@:{'phrases.compat.configuration.release_manager.assignments.expires'}",
"expires_message": "@:{'phrases.compat.configuration.release_manager.assignments.expires_message'}"
},
"deployments": {
"title": "@:{'phrases.compat.configuration.release_manager.deployments.title'}",
"subtitle": "@:{'phrases.compat.configuration.release_manager.deployments.subtitle'}",
"manual_deployment_record": "@:{'phrases.compat.configuration.release_manager.deployments.manual_deployment_record'}",
"target": "@:{'phrases.compat.configuration.release_manager.deployments.target'}",
"target_message": "@:{'phrases.compat.configuration.release_manager.deployments.target_message'}",
"select_target_or_manual": "@:{'phrases.compat.configuration.release_manager.deployments.select_target_or_manual'}",
"channel": "@:{'phrases.compat.configuration.release_manager.deployments.channel'}",
"app": "@:{'phrases.compat.configuration.release_manager.deployments.app'}",
"repository": "@:{'phrases.compat.configuration.release_manager.deployments.repository'}",
"repository_message": "@:{'phrases.compat.configuration.release_manager.deployments.repository_message'}",
"repository_placeholder": "@:{'phrases.compat.configuration.release_manager.deployments.repository_placeholder'}",
"branch": "@:{'phrases.compat.configuration.release_manager.deployments.branch'}",
"branch_message": "@:{'phrases.compat.configuration.release_manager.deployments.branch_message'}",
"branch_placeholder": "@:{'phrases.compat.configuration.release_manager.deployments.branch_placeholder'}",
"commit_selection": "@:{'phrases.compat.configuration.release_manager.deployments.commit_selection'}",
"commit_selection_message": "@:{'phrases.compat.configuration.release_manager.deployments.commit_selection_message'}",
"latest_from_branch": "@:{'phrases.compat.configuration.release_manager.deployments.latest_from_branch'}",
"specific_commit": "@:{'phrases.compat.configuration.release_manager.deployments.specific_commit'}",
"specific_commit_message": "@:{'phrases.compat.configuration.release_manager.deployments.specific_commit_message'}",
"commit_sha_placeholder": "@:{'phrases.compat.configuration.release_manager.deployments.commit_sha_placeholder'}",
"version_label": "@:{'phrases.compat.configuration.release_manager.deployments.version_label'}",
"version_label_message": "@:{'phrases.compat.configuration.release_manager.deployments.version_label_message'}",
"version_label_placeholder": "@:{'phrases.compat.configuration.release_manager.deployments.version_label_placeholder'}",
"commit_prefix": "@:{'phrases.compat.configuration.release_manager.deployments.commit_prefix'}",
"test_access_tooltip": "@:{'phrases.compat.configuration.release_manager.deployments.test_access_tooltip'}"
},
"replay": {
"title": "@:{'phrases.compat.configuration.release_manager.replay.title'}",
"subtitle": "@:{'phrases.compat.configuration.release_manager.replay.subtitle'}",
"capture_channel": "@:{'phrases.compat.configuration.release_manager.replay.capture_channel'}",
"target_type": "@:{'phrases.compat.configuration.release_manager.replay.target_type'}",
"target": "@:{'phrases.compat.configuration.release_manager.replay.target'}",
"target_message": "@:{'phrases.compat.configuration.release_manager.replay.target_message'}",
"target_placeholder": "@:{'phrases.compat.configuration.release_manager.replay.target_placeholder'}",
"channel_scope": "@:{'phrases.compat.configuration.release_manager.replay.channel_scope'}",
"channel_scope_message": "@:{'phrases.compat.configuration.release_manager.replay.channel_scope_message'}",
"no_channel_scope": "@:{'phrases.compat.configuration.release_manager.replay.no_channel_scope'}",
"capture_level": "@:{'phrases.compat.configuration.release_manager.replay.capture_level'}",
"expires": "@:{'phrases.compat.configuration.release_manager.replay.expires'}",
"expires_message": "@:{'phrases.compat.configuration.release_manager.replay.expires_message'}",
"trace_id": "@:{'phrases.compat.configuration.release_manager.replay.trace_id'}",
"trace_id_message": "@:{'phrases.compat.configuration.release_manager.replay.trace_id_message'}",
"trace_id_placeholder": "@:{'phrases.compat.configuration.release_manager.replay.trace_id_placeholder'}",
"channel": "@:{'phrases.compat.configuration.release_manager.replay.channel'}",
"channel_placeholder": "@:{'phrases.compat.configuration.release_manager.replay.channel_placeholder'}",
"principal_id": "@:{'phrases.compat.configuration.release_manager.replay.principal_id'}",
"principal_id_placeholder": "@:{'phrases.compat.configuration.release_manager.replay.principal_id_placeholder'}",
"module": "@:{'phrases.compat.configuration.release_manager.replay.module'}",
"module_placeholder": "@:{'phrases.compat.configuration.release_manager.replay.module_placeholder'}",
"severity": "@:{'phrases.compat.configuration.release_manager.replay.severity'}",
"any_severity": "@:{'phrases.compat.configuration.release_manager.replay.any_severity'}",
"no_timeline_events": "@:{'phrases.compat.configuration.release_manager.replay.no_timeline_events'}"
},
"integrations": {
"title": "@:{'phrases.compat.configuration.release_manager.integrations.title'}",
"subtitle": "@:{'phrases.compat.configuration.release_manager.integrations.subtitle'}",
"choose_repository": "@:{'phrases.compat.configuration.release_manager.integrations.choose_repository'}",
"add_health_url": "@:{'phrases.compat.configuration.release_manager.integrations.add_health_url'}",
"github_token_not_configured": "@:{'phrases.compat.configuration.release_manager.integrations.github_token_not_configured'}",
"open_github_token_settings": "@:{'phrases.compat.configuration.release_manager.integrations.open_github_token_settings'}",
"channel": "@:{'phrases.compat.configuration.release_manager.integrations.channel'}",
"app": "@:{'phrases.compat.configuration.release_manager.integrations.app'}",
"repository": "@:{'phrases.compat.configuration.release_manager.integrations.repository'}",
"repository_message": "@:{'phrases.compat.configuration.release_manager.integrations.repository_message'}",
"repository_placeholder": "@:{'phrases.compat.configuration.release_manager.integrations.repository_placeholder'}",
"branch": "@:{'phrases.compat.configuration.release_manager.integrations.branch'}",
"branch_message": "@:{'phrases.compat.configuration.release_manager.integrations.branch_message'}",
"branch_placeholder": "@:{'phrases.compat.configuration.release_manager.integrations.branch_placeholder'}",
"latest_prefix": "@:{'phrases.compat.configuration.release_manager.integrations.latest_prefix'}",
"coolify_instance": "@:{'phrases.compat.configuration.release_manager.integrations.coolify_instance'}",
"coolify_instance_message": "@:{'phrases.compat.configuration.release_manager.integrations.coolify_instance_message'}",
"no_coolify_instance": "@:{'phrases.compat.configuration.release_manager.integrations.no_coolify_instance'}",
"coolify_instance_placeholder": "@:{'phrases.compat.configuration.release_manager.integrations.coolify_instance_placeholder'}",
"coolify_service_uuid": "@:{'phrases.compat.configuration.release_manager.integrations.coolify_service_uuid'}",
"coolify_service_uuid_message": "@:{'phrases.compat.configuration.release_manager.integrations.coolify_service_uuid_message'}",
"coolify_service_uuid_placeholder": "@:{'phrases.compat.configuration.release_manager.integrations.coolify_service_uuid_placeholder'}",
"health_url": "@:{'phrases.compat.configuration.release_manager.integrations.health_url'}",
"health_url_message": "@:{'phrases.compat.configuration.release_manager.integrations.health_url_message'}",
"health_url_placeholder": "@:{'phrases.compat.configuration.release_manager.integrations.health_url_placeholder'}",
"ssl_domain": "@:{'phrases.compat.configuration.release_manager.integrations.ssl_domain'}",
"ssl_domain_message": "@:{'phrases.compat.configuration.release_manager.integrations.ssl_domain_message'}",
"ssl_domain_placeholder": "@:{'phrases.compat.configuration.release_manager.integrations.ssl_domain_placeholder'}",
"https_domain_for_coolify": "@:{'phrases.compat.configuration.release_manager.integrations.https_domain_for_coolify'}",
"endpoint_mode": "@:{'phrases.compat.configuration.release_manager.integrations.endpoint_mode'}",
"endpoint_mode_message": "@:{'phrases.compat.configuration.release_manager.integrations.endpoint_mode_message'}",
"endpoint_mode_auto": "@:{'phrases.compat.configuration.release_manager.integrations.endpoint_mode_auto'}",
"endpoint_mode_manual": "@:{'phrases.compat.configuration.release_manager.integrations.endpoint_mode_manual'}",
"manual_endpoint_host": "@:{'phrases.compat.configuration.release_manager.integrations.manual_endpoint_host'}",
"manual_endpoint_host_message": "@:{'phrases.compat.configuration.release_manager.integrations.manual_endpoint_host_message'}",
"manual_endpoint_host_placeholder": "@:{'phrases.compat.configuration.release_manager.integrations.manual_endpoint_host_placeholder'}",
"manual_endpoint_port": "@:{'phrases.compat.configuration.release_manager.integrations.manual_endpoint_port'}",
"manual_endpoint_port_message": "@:{'phrases.compat.configuration.release_manager.integrations.manual_endpoint_port_message'}",
"app_port": "@:{'phrases.compat.configuration.release_manager.integrations.app_port'}",
"app_port_message": "@:{'phrases.compat.configuration.release_manager.integrations.app_port_message'}",
"auto_gateway_endpoint": "@:{'phrases.compat.configuration.release_manager.integrations.auto_gateway_endpoint'}",
"pending_automatic_endpoint": "@:{'phrases.compat.configuration.release_manager.integrations.pending_automatic_endpoint'}",
"auto_deploy": "@:{'phrases.compat.configuration.release_manager.integrations.auto_deploy'}",
"auto_deploy_tooltip": "@:{'phrases.compat.configuration.release_manager.integrations.auto_deploy_tooltip'}",
"coolify_ssl": "@:{'phrases.compat.configuration.release_manager.integrations.coolify_ssl'}",
"coolify_ssl_tooltip": "@:{'phrases.compat.configuration.release_manager.integrations.coolify_ssl_tooltip'}",
"deploy_now": "@:{'phrases.compat.configuration.release_manager.integrations.deploy_now'}",
"deploy_now_tooltip": "@:{'phrases.compat.configuration.release_manager.integrations.deploy_now_tooltip'}",
"create_missing_service": "@:{'phrases.compat.configuration.release_manager.integrations.create_missing_service'}",
"create_missing_service_tooltip": "@:{'phrases.compat.configuration.release_manager.integrations.create_missing_service_tooltip'}",
"test_access_tooltip": "@:{'phrases.compat.configuration.release_manager.integrations.test_access_tooltip'}"
}
}
}
}
@@ -0,0 +1,59 @@
{
"configuration": {
"release_manager": {
"integrations": {
"title": "@:{'phrases.compat.configuration.release_manager.integrations.title'}",
"subtitle": "@:{'phrases.compat.configuration.release_manager.integrations.subtitle'}",
"choose_repository": "@:{'phrases.compat.configuration.release_manager.integrations.choose_repository'}",
"add_health_url": "@:{'phrases.compat.configuration.release_manager.integrations.add_health_url'}",
"github_token_not_configured": "@:{'phrases.compat.configuration.release_manager.integrations.github_token_not_configured'}",
"open_github_token_settings": "@:{'phrases.compat.configuration.release_manager.integrations.open_github_token_settings'}",
"channel": "@:{'phrases.compat.configuration.release_manager.integrations.channel'}",
"app": "@:{'phrases.compat.configuration.release_manager.integrations.app'}",
"repository": "@:{'phrases.compat.configuration.release_manager.integrations.repository'}",
"repository_message": "@:{'phrases.compat.configuration.release_manager.integrations.repository_message'}",
"repository_placeholder": "@:{'phrases.compat.configuration.release_manager.integrations.repository_placeholder'}",
"branch": "@:{'phrases.compat.configuration.release_manager.integrations.branch'}",
"branch_message": "@:{'phrases.compat.configuration.release_manager.integrations.branch_message'}",
"branch_placeholder": "@:{'phrases.compat.configuration.release_manager.integrations.branch_placeholder'}",
"latest_prefix": "@:{'phrases.compat.configuration.release_manager.integrations.latest_prefix'}",
"coolify_instance": "@:{'phrases.compat.configuration.release_manager.integrations.coolify_instance'}",
"coolify_instance_message": "@:{'phrases.compat.configuration.release_manager.integrations.coolify_instance_message'}",
"no_coolify_instance": "@:{'phrases.compat.configuration.release_manager.integrations.no_coolify_instance'}",
"coolify_instance_placeholder": "@:{'phrases.compat.configuration.release_manager.integrations.coolify_instance_placeholder'}",
"coolify_service_uuid": "@:{'phrases.compat.configuration.release_manager.integrations.coolify_service_uuid'}",
"coolify_service_uuid_message": "@:{'phrases.compat.configuration.release_manager.integrations.coolify_service_uuid_message'}",
"coolify_service_uuid_placeholder": "@:{'phrases.compat.configuration.release_manager.integrations.coolify_service_uuid_placeholder'}",
"health_url": "@:{'phrases.compat.configuration.release_manager.integrations.health_url'}",
"health_url_message": "@:{'phrases.compat.configuration.release_manager.integrations.health_url_message'}",
"health_url_placeholder": "@:{'phrases.compat.configuration.release_manager.integrations.health_url_placeholder'}",
"ssl_domain": "@:{'phrases.compat.configuration.release_manager.integrations.ssl_domain'}",
"ssl_domain_message": "@:{'phrases.compat.configuration.release_manager.integrations.ssl_domain_message'}",
"ssl_domain_placeholder": "@:{'phrases.compat.configuration.release_manager.integrations.ssl_domain_placeholder'}",
"https_domain_for_coolify": "@:{'phrases.compat.configuration.release_manager.integrations.https_domain_for_coolify'}",
"endpoint_mode": "@:{'phrases.compat.configuration.release_manager.integrations.endpoint_mode'}",
"endpoint_mode_message": "@:{'phrases.compat.configuration.release_manager.integrations.endpoint_mode_message'}",
"endpoint_mode_auto": "@:{'phrases.compat.configuration.release_manager.integrations.endpoint_mode_auto'}",
"endpoint_mode_manual": "@:{'phrases.compat.configuration.release_manager.integrations.endpoint_mode_manual'}",
"manual_endpoint_host": "@:{'phrases.compat.configuration.release_manager.integrations.manual_endpoint_host'}",
"manual_endpoint_host_message": "@:{'phrases.compat.configuration.release_manager.integrations.manual_endpoint_host_message'}",
"manual_endpoint_host_placeholder": "@:{'phrases.compat.configuration.release_manager.integrations.manual_endpoint_host_placeholder'}",
"manual_endpoint_port": "@:{'phrases.compat.configuration.release_manager.integrations.manual_endpoint_port'}",
"manual_endpoint_port_message": "@:{'phrases.compat.configuration.release_manager.integrations.manual_endpoint_port_message'}",
"app_port": "@:{'phrases.compat.configuration.release_manager.integrations.app_port'}",
"app_port_message": "@:{'phrases.compat.configuration.release_manager.integrations.app_port_message'}",
"auto_gateway_endpoint": "@:{'phrases.compat.configuration.release_manager.integrations.auto_gateway_endpoint'}",
"pending_automatic_endpoint": "@:{'phrases.compat.configuration.release_manager.integrations.pending_automatic_endpoint'}",
"auto_deploy": "@:{'phrases.compat.configuration.release_manager.integrations.auto_deploy'}",
"auto_deploy_tooltip": "@:{'phrases.compat.configuration.release_manager.integrations.auto_deploy_tooltip'}",
"coolify_ssl": "@:{'phrases.compat.configuration.release_manager.integrations.coolify_ssl'}",
"coolify_ssl_tooltip": "@:{'phrases.compat.configuration.release_manager.integrations.coolify_ssl_tooltip'}",
"deploy_now": "@:{'phrases.compat.configuration.release_manager.integrations.deploy_now'}",
"deploy_now_tooltip": "@:{'phrases.compat.configuration.release_manager.integrations.deploy_now_tooltip'}",
"create_missing_service": "@:{'phrases.compat.configuration.release_manager.integrations.create_missing_service'}",
"create_missing_service_tooltip": "@:{'phrases.compat.configuration.release_manager.integrations.create_missing_service_tooltip'}",
"test_access_tooltip": "@:{'phrases.compat.configuration.release_manager.integrations.test_access_tooltip'}"
}
}
}
}
@@ -0,0 +1,435 @@
{
"configuration": {
"release_manager": {
"title": "@:{'phrases.compat.configuration.release_manager.title'}",
"subtitle": "@:{'phrases.compat.configuration.release_manager.subtitle'}",
"channel_names": {
"stable": "@:{'phrases.compat.configuration.release_manager.channel_names.stable'}",
"canary": "@:{'phrases.compat.configuration.release_manager.channel_names.canary'}",
"internal": "@:{'phrases.compat.configuration.release_manager.channel_names.internal'}"
},
"channel_descriptions": {
"stable": "@:{'phrases.compat.configuration.release_manager.channel_descriptions.stable'}",
"canary": "@:{'phrases.compat.configuration.release_manager.channel_descriptions.canary'}",
"internal": "@:{'phrases.compat.configuration.release_manager.channel_descriptions.internal'}"
},
"control_api": {
"title": "@:{'phrases.compat.configuration.release_manager.control_api.title'}",
"tooltip": "@:{'phrases.compat.configuration.release_manager.control_api.tooltip'}",
"example": "@:{'phrases.compat.configuration.release_manager.control_api.example'}",
"endpoint_label": "@:{'phrases.compat.configuration.release_manager.control_api.endpoint_label'}",
"endpoint_message": "@:{'phrases.compat.configuration.release_manager.control_api.endpoint_message'}",
"endpoint_aria": "@:{'phrases.compat.configuration.release_manager.control_api.endpoint_aria'}",
"use_tooltip": "@:{'phrases.compat.configuration.release_manager.control_api.use_tooltip'}",
"use": "@:{'phrases.compat.configuration.release_manager.control_api.use'}",
"reset_tooltip": "@:{'phrases.compat.configuration.release_manager.control_api.reset_tooltip'}",
"reset": "@:{'phrases.compat.configuration.release_manager.control_api.reset'}",
"known_endpoints": "@:{'phrases.compat.configuration.release_manager.control_api.known_endpoints'}"
},
"tabs": {
"overview": {
"label": "@:{'phrases.compat.configuration.release_manager.tabs.overview.label'}",
"description": "@:{'phrases.compat.configuration.release_manager.tabs.overview.description'}"
},
"channels": {
"label": "@:{'phrases.compat.configuration.release_manager.tabs.channels.label'}",
"description": "@:{'phrases.compat.configuration.release_manager.tabs.channels.description'}"
},
"assignments": {
"label": "@:{'phrases.compat.configuration.release_manager.tabs.assignments.label'}",
"description": "@:{'phrases.compat.configuration.release_manager.tabs.assignments.description'}"
},
"deployments": {
"label": "@:{'phrases.compat.configuration.release_manager.tabs.deployments.label'}",
"description": "@:{'phrases.compat.configuration.release_manager.tabs.deployments.description'}"
},
"replay": {
"label": "@:{'phrases.compat.configuration.release_manager.tabs.replay.label'}",
"description": "@:{'phrases.compat.configuration.release_manager.tabs.replay.description'}"
},
"integrations": {
"label": "@:{'phrases.compat.configuration.release_manager.tabs.integrations.label'}",
"description": "@:{'phrases.compat.configuration.release_manager.tabs.integrations.description'}"
},
"settings": {
"label": "@:{'phrases.compat.configuration.release_manager.tabs.settings.label'}",
"description": "@:{'phrases.compat.configuration.release_manager.tabs.settings.description'}"
}
},
"setup": {
"channels": "@:{'phrases.compat.configuration.release_manager.setup.channels'}",
"targets": "@:{'phrases.compat.configuration.release_manager.setup.targets'}",
"assignments": "@:{'phrases.compat.configuration.release_manager.setup.assignments'}",
"deployments": "@:{'phrases.compat.configuration.release_manager.setup.deployments'}",
"replay": "@:{'phrases.compat.configuration.release_manager.setup.replay'}"
},
"stats": {
"channels": "@:{'phrases.compat.configuration.release_manager.stats.channels'}",
"targets": "@:{'phrases.compat.configuration.release_manager.stats.targets'}",
"deployments": "@:{'phrases.compat.configuration.release_manager.stats.deployments'}",
"timeline_events": "@:{'phrases.compat.configuration.release_manager.stats.timeline_events'}"
},
"overview": {
"title": "@:{'phrases.compat.configuration.release_manager.overview.title'}",
"subtitle": "@:{'phrases.compat.configuration.release_manager.overview.subtitle'}",
"guided_setup": "@:{'phrases.compat.configuration.release_manager.overview.guided_setup'}",
"next_step": "@:{'phrases.compat.configuration.release_manager.overview.next_step'}",
"ready": "@:{'phrases.compat.configuration.release_manager.overview.ready'}",
"add_suggested_channel": "@:{'phrases.compat.configuration.release_manager.overview.add_suggested_channel'}",
"module_health_empty": "@:{'phrases.compat.configuration.release_manager.overview.module_health_empty'}"
},
"settings": {
"title": "@:{'phrases.compat.configuration.release_manager.settings.title'}",
"subtitle": "@:{'phrases.compat.configuration.release_manager.settings.subtitle'}",
"github_token": "@:{'phrases.compat.configuration.release_manager.settings.github_token'}",
"github_api_url": "@:{'phrases.compat.configuration.release_manager.settings.github_api_url'}",
"webhook_secret": "@:{'phrases.compat.configuration.release_manager.settings.webhook_secret'}",
"github_webhook_secret": "@:{'phrases.compat.configuration.release_manager.settings.github_webhook_secret'}",
"configured": "@:{'phrases.compat.configuration.release_manager.settings.configured'}",
"not_configured": "@:{'phrases.compat.configuration.release_manager.settings.not_configured'}",
"loaded_from": "@:{'phrases.compat.configuration.release_manager.settings.loaded_from'}",
"set_below": "@:{'phrases.compat.configuration.release_manager.settings.set_below'}",
"private_repositories_prefix": "@:{'phrases.compat.configuration.release_manager.settings.private_repositories_prefix'}",
"private_repositories_or": "@:{'phrases.compat.configuration.release_manager.settings.private_repositories_or'}",
"github_token_message": "@:{'phrases.compat.configuration.release_manager.settings.github_token_message'}",
"github_token_placeholder": "@:{'phrases.compat.configuration.release_manager.settings.github_token_placeholder'}",
"github_api_url_message": "@:{'phrases.compat.configuration.release_manager.settings.github_api_url_message'}",
"webhook_secret_message": "@:{'phrases.compat.configuration.release_manager.settings.webhook_secret_message'}",
"webhook_secret_placeholder": "@:{'phrases.compat.configuration.release_manager.settings.webhook_secret_placeholder'}",
"save": "@:{'phrases.compat.configuration.release_manager.settings.save'}",
"back_to_integrations": "@:{'phrases.compat.configuration.release_manager.settings.back_to_integrations'}",
"guide": {
"steps": {
"github_token": "@:{'phrases.compat.configuration.release_manager.settings.guide.steps.github_token'}",
"github_api_url": "@:{'phrases.compat.configuration.release_manager.settings.guide.steps.github_api_url'}",
"github_webhook_secret": "@:{'phrases.compat.configuration.release_manager.settings.guide.steps.github_webhook_secret'}",
"review": "@:{'phrases.compat.configuration.release_manager.settings.guide.steps.review'}"
},
"github_token_title": "@:{'phrases.compat.configuration.release_manager.settings.guide.github_token_title'}",
"github_token_description": "@:{'phrases.compat.configuration.release_manager.settings.guide.github_token_description'}",
"configure_this_in": "@:{'phrases.compat.configuration.release_manager.settings.guide.configure_this_in'}",
"server_environment_variable": "@:{'phrases.compat.configuration.release_manager.settings.guide.server_environment_variable'}",
"takes_precedence": "@:{'phrases.compat.configuration.release_manager.settings.guide.takes_precedence'}",
"recommended_access": "@:{'phrases.compat.configuration.release_manager.settings.guide.recommended_access'}",
"recommended_access_description": "@:{'phrases.compat.configuration.release_manager.settings.guide.recommended_access_description'}",
"github_api_url_title": "@:{'phrases.compat.configuration.release_manager.settings.guide.github_api_url_title'}",
"github_api_url_description": "@:{'phrases.compat.configuration.release_manager.settings.guide.github_api_url_description'}",
"github_api_url_invalid": "@:{'phrases.compat.configuration.release_manager.settings.guide.github_api_url_invalid'}",
"github_cloud": "@:{'phrases.compat.configuration.release_manager.settings.guide.github_cloud'}",
"enterprise_example": "@:{'phrases.compat.configuration.release_manager.settings.guide.enterprise_example'}",
"github_webhook_secret_title": "@:{'phrases.compat.configuration.release_manager.settings.guide.github_webhook_secret_title'}",
"github_webhook_secret_description": "@:{'phrases.compat.configuration.release_manager.settings.guide.github_webhook_secret_description'}",
"github_webhook_url": "@:{'phrases.compat.configuration.release_manager.settings.guide.github_webhook_url'}",
"store_shared_secret_in": "@:{'phrases.compat.configuration.release_manager.settings.guide.store_shared_secret_in'}",
"review_title": "@:{'phrases.compat.configuration.release_manager.settings.guide.review_title'}",
"review_description": "@:{'phrases.compat.configuration.release_manager.settings.guide.review_description'}",
"ready": "@:{'phrases.compat.configuration.release_manager.settings.guide.ready'}",
"needs_value": "@:{'phrases.compat.configuration.release_manager.settings.guide.needs_value'}"
}
},
"channel_unavailable": {
"kicker": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.kicker'}",
"title": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.title'}",
"summary_prefix": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.summary_prefix'}",
"summary_suffix": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.summary_suffix'}",
"release_bundle": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.release_bundle'}",
"frontend_version": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.frontend_version'}",
"api_version": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.api_version'}",
"frontend_base_url": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.frontend_base_url'}",
"api_base_url": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.api_base_url'}",
"frontend_entry": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.frontend_entry'}",
"release_runtime": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.release_runtime'}",
"checking_again": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.checking_again'}",
"refresh_error": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.refresh_error'}",
"ignore": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.ignore'}",
"check_again": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.check_again'}",
"logout": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.logout'}",
"base_image": "@:{'phrases.compat.configuration.release_manager.channel_unavailable.base_image'}"
},
"channel_switched": {
"kicker": "@:{'phrases.compat.configuration.release_manager.channel_switched.kicker'}",
"title": "@:{'phrases.compat.configuration.release_manager.channel_switched.title'}",
"summary_prefix": "@:{'phrases.compat.configuration.release_manager.channel_switched.summary_prefix'}",
"summary_suffix": "@:{'phrases.compat.configuration.release_manager.channel_switched.summary_suffix'}",
"bundle": "@:{'phrases.compat.configuration.release_manager.channel_switched.bundle'}",
"frontend": "@:{'phrases.compat.configuration.release_manager.channel_switched.frontend'}",
"api": "@:{'phrases.compat.configuration.release_manager.channel_switched.api'}",
"frontend_version": "@:{'phrases.compat.configuration.release_manager.channel_switched.frontend_version'}",
"api_version": "@:{'phrases.compat.configuration.release_manager.channel_switched.api_version'}",
"assigned_channel": "@:{'phrases.compat.configuration.release_manager.channel_switched.assigned_channel'}",
"current_app_image": "@:{'phrases.compat.configuration.release_manager.channel_switched.current_app_image'}",
"current_api": "@:{'phrases.compat.configuration.release_manager.channel_switched.current_api'}",
"base_image": "@:{'phrases.compat.configuration.release_manager.channel_switched.base_image'}",
"continue": "@:{'phrases.compat.configuration.release_manager.channel_switched.continue'}"
},
"channel_selector": {
"title": "@:{'phrases.compat.configuration.release_manager.channel_selector.title'}",
"subtitle": "@:{'phrases.compat.configuration.release_manager.channel_selector.subtitle'}",
"sidebar_title": "@:{'phrases.compat.configuration.release_manager.channel_selector.sidebar_title'}",
"default": "@:{'phrases.compat.configuration.release_manager.channel_selector.default'}",
"ready": "@:{'phrases.compat.configuration.release_manager.channel_selector.ready'}",
"unavailable": "@:{'phrases.compat.configuration.release_manager.channel_selector.unavailable'}",
"release_bundle": "@:{'phrases.compat.configuration.release_manager.channel_selector.release_bundle'}",
"frontend_version": "@:{'phrases.compat.configuration.release_manager.channel_selector.frontend_version'}",
"api_version": "@:{'phrases.compat.configuration.release_manager.channel_selector.api_version'}",
"frontend_base_url": "@:{'phrases.compat.configuration.release_manager.channel_selector.frontend_base_url'}",
"api_base_url": "@:{'phrases.compat.configuration.release_manager.channel_selector.api_base_url'}",
"frontend_entry": "@:{'phrases.compat.configuration.release_manager.channel_selector.frontend_entry'}",
"release_runtime": "@:{'phrases.compat.configuration.release_manager.channel_selector.release_runtime'}",
"bundle": "@:{'phrases.compat.configuration.release_manager.channel_selector.bundle'}",
"frontend": "@:{'phrases.compat.configuration.release_manager.channel_selector.frontend'}",
"api": "@:{'phrases.compat.configuration.release_manager.channel_selector.api'}",
"use_local_frontend": "@:{'phrases.compat.configuration.release_manager.channel_selector.use_local_frontend'}"
},
"common": {
"yes": "@:{'phrases.compat.configuration.release_manager.common.yes'}",
"no": "@:{'phrases.compat.configuration.release_manager.common.no'}",
"off": "@:{'phrases.compat.configuration.release_manager.common.off'}"
},
"actions": {
"edit": "@:{'phrases.compat.configuration.release_manager.actions.edit'}",
"rollback": "@:{'phrases.compat.configuration.release_manager.actions.rollback'}",
"update": "@:{'phrases.compat.configuration.release_manager.actions.update'}",
"create": "@:{'phrases.compat.configuration.release_manager.actions.create'}",
"clear": "@:{'phrases.compat.configuration.release_manager.actions.clear'}",
"assign": "@:{'phrases.compat.configuration.release_manager.actions.assign'}",
"remove": "@:{'phrases.compat.configuration.release_manager.actions.remove'}",
"test_access": "@:{'phrases.compat.configuration.release_manager.actions.test_access'}",
"deploy": "@:{'phrases.compat.configuration.release_manager.actions.deploy'}",
"redeploy": "@:{'phrases.compat.configuration.release_manager.actions.redeploy'}",
"promote": "@:{'phrases.compat.configuration.release_manager.actions.promote'}",
"enable": "@:{'phrases.compat.configuration.release_manager.actions.enable'}",
"search": "@:{'phrases.compat.configuration.release_manager.actions.search'}",
"save_target": "@:{'phrases.compat.configuration.release_manager.actions.save_target'}",
"delete": "@:{'phrases.compat.configuration.release_manager.actions.delete'}",
"back": "@:{'phrases.compat.configuration.release_manager.actions.back'}",
"next": "@:{'phrases.compat.configuration.release_manager.actions.next'}"
},
"tables": {
"channel": "@:{'phrases.compat.configuration.release_manager.tables.channel'}",
"rollout": "@:{'phrases.compat.configuration.release_manager.tables.rollout'}",
"frontend": "@:{'phrases.compat.configuration.release_manager.tables.frontend'}",
"api": "@:{'phrases.compat.configuration.release_manager.tables.api'}",
"replay": "@:{'phrases.compat.configuration.release_manager.tables.replay'}",
"actions": "@:{'phrases.compat.configuration.release_manager.tables.actions'}",
"module": "@:{'phrases.compat.configuration.release_manager.tables.module'}",
"status": "@:{'phrases.compat.configuration.release_manager.tables.status'}",
"checked": "@:{'phrases.compat.configuration.release_manager.tables.checked'}",
"subject": "@:{'phrases.compat.configuration.release_manager.tables.subject'}",
"reason": "@:{'phrases.compat.configuration.release_manager.tables.reason'}",
"expires": "@:{'phrases.compat.configuration.release_manager.tables.expires'}",
"deployment": "@:{'phrases.compat.configuration.release_manager.tables.deployment'}",
"source": "@:{'phrases.compat.configuration.release_manager.tables.source'}",
"started": "@:{'phrases.compat.configuration.release_manager.tables.started'}",
"target": "@:{'phrases.compat.configuration.release_manager.tables.target'}",
"coolify": "@:{'phrases.compat.configuration.release_manager.tables.coolify'}",
"auto": "@:{'phrases.compat.configuration.release_manager.tables.auto'}"
},
"values": {
"app": {
"frontend": "@:{'phrases.compat.configuration.release_manager.values.app.frontend'}",
"api": "@:{'phrases.compat.configuration.release_manager.values.app.api'}"
},
"capture_level": {
"metadata": "@:{'phrases.compat.configuration.release_manager.values.capture_level.metadata'}",
"full_redacted": "@:{'phrases.compat.configuration.release_manager.values.capture_level.full_redacted'}"
},
"subject_type": {
"user": "@:{'phrases.compat.configuration.release_manager.values.subject_type.user'}",
"subuser": "@:{'phrases.compat.configuration.release_manager.values.subject_type.subuser'}",
"customer": "@:{'phrases.compat.configuration.release_manager.values.subject_type.customer'}",
"channel": "@:{'phrases.compat.configuration.release_manager.values.subject_type.channel'}"
},
"severity": {
"error": "@:{'phrases.compat.configuration.release_manager.values.severity.error'}",
"warning": "@:{'phrases.compat.configuration.release_manager.values.severity.warning'}",
"info": "@:{'phrases.compat.configuration.release_manager.values.severity.info'}"
},
"status": {
"ok": "@:{'phrases.compat.configuration.release_manager.values.status.ok'}",
"active": "@:{'phrases.compat.configuration.release_manager.values.status.active'}",
"deployed": "@:{'phrases.compat.configuration.release_manager.values.status.deployed'}",
"stable": "@:{'phrases.compat.configuration.release_manager.values.status.stable'}",
"enabled": "@:{'phrases.compat.configuration.release_manager.values.status.enabled'}",
"queued": "@:{'phrases.compat.configuration.release_manager.values.status.queued'}",
"deploying": "@:{'phrases.compat.configuration.release_manager.values.status.deploying'}",
"metadata": "@:{'phrases.compat.configuration.release_manager.values.status.metadata'}",
"not_configured": "@:{'phrases.compat.configuration.release_manager.values.status.not_configured'}",
"warning": "@:{'phrases.compat.configuration.release_manager.values.status.warning'}",
"failed": "@:{'phrases.compat.configuration.release_manager.values.status.failed'}",
"down": "@:{'phrases.compat.configuration.release_manager.values.status.down'}",
"error": "@:{'phrases.compat.configuration.release_manager.values.status.error'}",
"unknown": "@:{'phrases.compat.configuration.release_manager.values.status.unknown'}"
}
},
"autocomplete": {
"suggested_value": "@:{'phrases.compat.configuration.release_manager.autocomplete.suggested_value'}",
"suggestion": "@:{'phrases.compat.configuration.release_manager.autocomplete.suggestion'}",
"use_typed_value": "@:{'phrases.compat.configuration.release_manager.autocomplete.use_typed_value'}",
"custom": "@:{'phrases.compat.configuration.release_manager.autocomplete.custom'}",
"api_url": "@:{'phrases.compat.configuration.release_manager.autocomplete.api_url'}",
"frontend_url": "@:{'phrases.compat.configuration.release_manager.autocomplete.frontend_url'}",
"known_release_url": "@:{'phrases.compat.configuration.release_manager.autocomplete.known_release_url'}",
"deploy_here_with_coolify": "@:{'phrases.compat.configuration.release_manager.autocomplete.deploy_here_with_coolify'}",
"prepare_coolify_target": "@:{'phrases.compat.configuration.release_manager.autocomplete.prepare_coolify_target'}",
"coolify_ssl": "@:{'phrases.compat.configuration.release_manager.autocomplete.coolify_ssl'}",
"github_repository": "@:{'phrases.compat.configuration.release_manager.autocomplete.github_repository'}",
"owner_repository": "@:{'phrases.compat.configuration.release_manager.autocomplete.owner_repository'}",
"git_branch": "@:{'phrases.compat.configuration.release_manager.autocomplete.git_branch'}",
"deployment_branch": "@:{'phrases.compat.configuration.release_manager.autocomplete.deployment_branch'}",
"github_commit": "@:{'phrases.compat.configuration.release_manager.autocomplete.github_commit'}",
"git_commit": "@:{'phrases.compat.configuration.release_manager.autocomplete.git_commit'}",
"use_specific_commit_sha": "@:{'phrases.compat.configuration.release_manager.autocomplete.use_specific_commit_sha'}",
"custom_commit": "@:{'phrases.compat.configuration.release_manager.autocomplete.custom_commit'}",
"health_url": "@:{'phrases.compat.configuration.release_manager.autocomplete.health_url'}",
"release_health_check": "@:{'phrases.compat.configuration.release_manager.autocomplete.release_health_check'}",
"coolify_service": "@:{'phrases.compat.configuration.release_manager.autocomplete.coolify_service'}",
"service_uuid": "@:{'phrases.compat.configuration.release_manager.autocomplete.service_uuid'}",
"known_coolify_service_uuid": "@:{'phrases.compat.configuration.release_manager.autocomplete.known_coolify_service_uuid'}",
"control_api": "@:{'phrases.compat.configuration.release_manager.autocomplete.control_api'}",
"release_manager_api_endpoint": "@:{'phrases.compat.configuration.release_manager.autocomplete.release_manager_api_endpoint'}",
"module": "@:{'phrases.compat.configuration.release_manager.autocomplete.module'}",
"timeline_module_key": "@:{'phrases.compat.configuration.release_manager.autocomplete.timeline_module_key'}"
},
"errors": {
"github_repositories": "@:{'phrases.compat.configuration.release_manager.errors.github_repositories'}",
"github_branches": "@:{'phrases.compat.configuration.release_manager.errors.github_branches'}",
"repository_branch_required": "@:{'phrases.compat.configuration.release_manager.errors.repository_branch_required'}",
"github_access_failed": "@:{'phrases.compat.configuration.release_manager.errors.github_access_failed'}"
},
"channels": {
"title": "@:{'phrases.compat.configuration.release_manager.channels.title'}",
"subtitle": "@:{'phrases.compat.configuration.release_manager.channels.subtitle'}",
"rollout_percent": "@:{'phrases.compat.configuration.release_manager.channels.rollout_percent'}",
"already_configured": "@:{'phrases.compat.configuration.release_manager.channels.already_configured'}",
"slug": "@:{'phrases.compat.configuration.release_manager.channels.slug'}",
"slug_message": "@:{'phrases.compat.configuration.release_manager.channels.slug_message'}",
"slug_placeholder": "@:{'phrases.compat.configuration.release_manager.channels.slug_placeholder'}",
"name": "@:{'phrases.compat.configuration.release_manager.channels.name'}",
"name_message": "@:{'phrases.compat.configuration.release_manager.channels.name_message'}",
"name_placeholder": "@:{'phrases.compat.configuration.release_manager.channels.name_placeholder'}",
"rollout": "@:{'phrases.compat.configuration.release_manager.channels.rollout'}",
"rollout_message": "@:{'phrases.compat.configuration.release_manager.channels.rollout_message'}",
"frontend_url": "@:{'phrases.compat.configuration.release_manager.channels.frontend_url'}",
"frontend_url_message": "@:{'phrases.compat.configuration.release_manager.channels.frontend_url_message'}",
"frontend_url_placeholder": "@:{'phrases.compat.configuration.release_manager.channels.frontend_url_placeholder'}",
"no_matching_release_url": "@:{'phrases.compat.configuration.release_manager.channels.no_matching_release_url'}",
"api_url": "@:{'phrases.compat.configuration.release_manager.channels.api_url'}",
"api_url_message": "@:{'phrases.compat.configuration.release_manager.channels.api_url_message'}",
"api_url_placeholder": "@:{'phrases.compat.configuration.release_manager.channels.api_url_placeholder'}",
"no_matching_api_url": "@:{'phrases.compat.configuration.release_manager.channels.no_matching_api_url'}",
"replay_capture": "@:{'phrases.compat.configuration.release_manager.channels.replay_capture'}",
"replay_capture_message": "@:{'phrases.compat.configuration.release_manager.channels.replay_capture_message'}",
"retention_days": "@:{'phrases.compat.configuration.release_manager.channels.retention_days'}",
"retention_days_message": "@:{'phrases.compat.configuration.release_manager.channels.retention_days_message'}",
"enabled": "@:{'phrases.compat.configuration.release_manager.channels.enabled'}",
"default_channel": "@:{'phrases.compat.configuration.release_manager.channels.default_channel'}",
"replay_enabled": "@:{'phrases.compat.configuration.release_manager.channels.replay_enabled'}",
"frontend_chip": "@:{'phrases.compat.configuration.release_manager.channels.frontend_chip'}",
"api_chip": "@:{'phrases.compat.configuration.release_manager.channels.api_chip'}"
},
"assignments": {
"title": "@:{'phrases.compat.configuration.release_manager.assignments.title'}",
"subtitle": "@:{'phrases.compat.configuration.release_manager.assignments.subtitle'}",
"subject": "@:{'phrases.compat.configuration.release_manager.assignments.subject'}",
"subject_message": "@:{'phrases.compat.configuration.release_manager.assignments.subject_message'}",
"subject_placeholder": "@:{'phrases.compat.configuration.release_manager.assignments.subject_placeholder'}",
"subject_empty": "@:{'phrases.compat.configuration.release_manager.assignments.subject_empty'}",
"group_users": "@:{'phrases.compat.configuration.release_manager.assignments.group_users'}",
"group_subusers": "@:{'phrases.compat.configuration.release_manager.assignments.group_subusers'}",
"group_customers": "@:{'phrases.compat.configuration.release_manager.assignments.group_customers'}",
"group_manual": "@:{'phrases.compat.configuration.release_manager.assignments.group_manual'}",
"manual_user": "@:{'phrases.compat.configuration.release_manager.assignments.manual_user'}",
"manual_subuser": "@:{'phrases.compat.configuration.release_manager.assignments.manual_subuser'}",
"manual_customer": "@:{'phrases.compat.configuration.release_manager.assignments.manual_customer'}",
"manual_description": "@:{'phrases.compat.configuration.release_manager.assignments.manual_description'}",
"subject_type": "@:{'phrases.compat.configuration.release_manager.assignments.subject_type'}",
"subject_type_message": "@:{'phrases.compat.configuration.release_manager.assignments.subject_type_message'}",
"customer": "@:{'phrases.compat.configuration.release_manager.assignments.customer'}",
"customer_message": "@:{'phrases.compat.configuration.release_manager.assignments.customer_message'}",
"customer_placeholder": "@:{'phrases.compat.configuration.release_manager.assignments.customer_placeholder'}",
"subject_id": "@:{'phrases.compat.configuration.release_manager.assignments.subject_id'}",
"subject_id_message": "@:{'phrases.compat.configuration.release_manager.assignments.subject_id_message'}",
"subject_id_placeholder": "@:{'phrases.compat.configuration.release_manager.assignments.subject_id_placeholder'}",
"channel": "@:{'phrases.compat.configuration.release_manager.assignments.channel'}",
"channel_message": "@:{'phrases.compat.configuration.release_manager.assignments.channel_message'}",
"reason": "@:{'phrases.compat.configuration.release_manager.assignments.reason'}",
"reason_message": "@:{'phrases.compat.configuration.release_manager.assignments.reason_message'}",
"reason_placeholder": "@:{'phrases.compat.configuration.release_manager.assignments.reason_placeholder'}",
"expires": "@:{'phrases.compat.configuration.release_manager.assignments.expires'}",
"expires_message": "@:{'phrases.compat.configuration.release_manager.assignments.expires_message'}"
},
"deployments": {
"title": "@:{'phrases.compat.configuration.release_manager.deployments.title'}",
"subtitle": "@:{'phrases.compat.configuration.release_manager.deployments.subtitle'}",
"manual_deployment_record": "@:{'phrases.compat.configuration.release_manager.deployments.manual_deployment_record'}",
"target": "@:{'phrases.compat.configuration.release_manager.deployments.target'}",
"target_message": "@:{'phrases.compat.configuration.release_manager.deployments.target_message'}",
"select_target_or_manual": "@:{'phrases.compat.configuration.release_manager.deployments.select_target_or_manual'}",
"channel": "@:{'phrases.compat.configuration.release_manager.deployments.channel'}",
"app": "@:{'phrases.compat.configuration.release_manager.deployments.app'}",
"repository": "@:{'phrases.compat.configuration.release_manager.deployments.repository'}",
"repository_message": "@:{'phrases.compat.configuration.release_manager.deployments.repository_message'}",
"repository_placeholder": "@:{'phrases.compat.configuration.release_manager.deployments.repository_placeholder'}",
"branch": "@:{'phrases.compat.configuration.release_manager.deployments.branch'}",
"branch_message": "@:{'phrases.compat.configuration.release_manager.deployments.branch_message'}",
"branch_placeholder": "@:{'phrases.compat.configuration.release_manager.deployments.branch_placeholder'}",
"commit_selection": "@:{'phrases.compat.configuration.release_manager.deployments.commit_selection'}",
"commit_selection_message": "@:{'phrases.compat.configuration.release_manager.deployments.commit_selection_message'}",
"latest_from_branch": "@:{'phrases.compat.configuration.release_manager.deployments.latest_from_branch'}",
"specific_commit": "@:{'phrases.compat.configuration.release_manager.deployments.specific_commit'}",
"specific_commit_message": "@:{'phrases.compat.configuration.release_manager.deployments.specific_commit_message'}",
"commit_sha_placeholder": "@:{'phrases.compat.configuration.release_manager.deployments.commit_sha_placeholder'}",
"version_label": "@:{'phrases.compat.configuration.release_manager.deployments.version_label'}",
"version_label_message": "@:{'phrases.compat.configuration.release_manager.deployments.version_label_message'}",
"version_label_placeholder": "@:{'phrases.compat.configuration.release_manager.deployments.version_label_placeholder'}",
"commit_prefix": "@:{'phrases.compat.configuration.release_manager.deployments.commit_prefix'}",
"test_access_tooltip": "@:{'phrases.compat.configuration.release_manager.deployments.test_access_tooltip'}"
},
"replay": {
"title": "@:{'phrases.compat.configuration.release_manager.replay.title'}",
"subtitle": "@:{'phrases.compat.configuration.release_manager.replay.subtitle'}",
"capture_channel": "@:{'phrases.compat.configuration.release_manager.replay.capture_channel'}",
"target_type": "@:{'phrases.compat.configuration.release_manager.replay.target_type'}",
"target": "@:{'phrases.compat.configuration.release_manager.replay.target'}",
"target_message": "@:{'phrases.compat.configuration.release_manager.replay.target_message'}",
"target_placeholder": "@:{'phrases.compat.configuration.release_manager.replay.target_placeholder'}",
"channel_scope": "@:{'phrases.compat.configuration.release_manager.replay.channel_scope'}",
"channel_scope_message": "@:{'phrases.compat.configuration.release_manager.replay.channel_scope_message'}",
"no_channel_scope": "@:{'phrases.compat.configuration.release_manager.replay.no_channel_scope'}",
"capture_level": "@:{'phrases.compat.configuration.release_manager.replay.capture_level'}",
"expires": "@:{'phrases.compat.configuration.release_manager.replay.expires'}",
"expires_message": "@:{'phrases.compat.configuration.release_manager.replay.expires_message'}",
"trace_id": "@:{'phrases.compat.configuration.release_manager.replay.trace_id'}",
"trace_id_message": "@:{'phrases.compat.configuration.release_manager.replay.trace_id_message'}",
"trace_id_placeholder": "@:{'phrases.compat.configuration.release_manager.replay.trace_id_placeholder'}",
"channel": "@:{'phrases.compat.configuration.release_manager.replay.channel'}",
"channel_placeholder": "@:{'phrases.compat.configuration.release_manager.replay.channel_placeholder'}",
"principal_id": "@:{'phrases.compat.configuration.release_manager.replay.principal_id'}",
"principal_id_placeholder": "@:{'phrases.compat.configuration.release_manager.replay.principal_id_placeholder'}",
"module": "@:{'phrases.compat.configuration.release_manager.replay.module'}",
"module_placeholder": "@:{'phrases.compat.configuration.release_manager.replay.module_placeholder'}",
"severity": "@:{'phrases.compat.configuration.release_manager.replay.severity'}",
"any_severity": "@:{'phrases.compat.configuration.release_manager.replay.any_severity'}",
"no_timeline_events": "@:{'phrases.compat.configuration.release_manager.replay.no_timeline_events'}"
},
"loading": {
"assignments": "@:{'phrases.compat.configuration.release_manager.loading.assignments'}",
"channels": "@:{'phrases.compat.configuration.release_manager.loading.channels'}",
"channels_detail": "@:{'phrases.compat.configuration.release_manager.loading.channels_detail'}",
"data_services": "@:{'phrases.compat.configuration.release_manager.loading.data_services'}",
"deployments": "@:{'phrases.compat.configuration.release_manager.loading.deployments'}",
"github_repositories": "@:{'phrases.compat.configuration.release_manager.loading.github_repositories'}",
"integrations": "@:{'phrases.compat.configuration.release_manager.loading.integrations'}",
"operations": "@:{'phrases.compat.configuration.release_manager.loading.operations'}",
"refreshing_summary": "@:{'phrases.compat.configuration.release_manager.loading.refreshing_summary'}",
"refreshing_timeline": "@:{'phrases.compat.configuration.release_manager.loading.refreshing_timeline'}",
"settings": "@:{'phrases.compat.configuration.release_manager.loading.settings'}",
"summary": "@:{'phrases.compat.configuration.release_manager.loading.summary'}",
"summary_detail": "@:{'phrases.compat.configuration.release_manager.loading.summary_detail'}",
"timeline_events": "@:{'phrases.compat.configuration.release_manager.loading.timeline_events'}",
"timeline_sessions": "@:{'phrases.compat.configuration.release_manager.loading.timeline_sessions'}"
}
}
}
}
@@ -0,0 +1,28 @@
{
"compat": {
"admin": {
"pos": {
"settings_wheel": {
"accept_self_serve_wash": "Godta selvbetjent vask",
"accept_self_serve_wash_confirm": "Flytt denne kladden til kunde #{customerNumber} med selvbetjeningsdetaljene?",
"accept_self_serve_wash_success": "Den selvbetjente vasken ble godtatt.",
"email_notifications_section": "E-postvarsler",
"resend_booking_completion_confirmation": "(Re)send booking completion confirmation",
"resend_booking_completion_confirmation_error": "The booking completion confirmation could not be sent",
"resend_booking_completion_confirmation_success": "The booking completion confirmation has been sent",
"resend_booking_confirmation": "(Re)send booking confirmation",
"resend_booking_confirmation_error": "The booking confirmation could not be sent",
"resend_booking_confirmation_success": "The booking confirmation has been sent",
"resend_wash_certificate": "(Re)send wash certificate",
"resend_wash_certificate_error": "The wash certificate could not be sent",
"resend_wash_certificate_success": "The wash certificate has been sent",
"self_serve_customer": "Kunde",
"self_serve_driver": "Sjåfør",
"self_serve_elapsed": "Tid",
"self_serve_wash_attachment": "Selvbetjent vask",
"self_serve_wash_attachment_for_customer": "Selvbetjent vask for kunde #{customerNumber}"
}
}
}
}
}
@@ -298,490 +298,6 @@
"subtitle": "@.capitalize:{'terms.glossary.konfigurasjon'} @:{'terms.glossary.av'} @:{'terms.glossary.xlvask'}-@:{'terms.glossary.integrasjonen'}",
"title": "@:{'terms.glossary.xlvask'}-@:{'terms.glossary.konfigurasjon'}",
"username_desc": "@:{'terms.glossary.brukernavnet'} @:{'terms.glossary.brukes'} @:{'terms.glossary.til'} @:{'terms.glossary.a'} @:{'terms.glossary.autentisere'} @:{'terms.glossary.api'}-@:{'terms.glossary.tilkoblingen'}."
},
"release_manager": {
"title": "Release Manager",
"subtitle": "Gradvise API- og Front-End-utgivelser",
"channel_names": {
"stable": "Stabil",
"canary": "Canary",
"internal": "Intern"
},
"channel_descriptions": {
"stable": "Standard produksjonskanal.",
"canary": "Tidlig produksjonsvalideringskanal.",
"internal": "Intern kanal for ansatte og superbrukervalidering."
},
"control_api": {
"title": "Kontroll-API",
"tooltip": "Release Manager-handlinger sendes til denne API-en. Bruk produksjons-API-en med mindre du tester en staging-backend.",
"example": "Eksempel: https://api.truckwash.io:4433",
"endpoint_label": "API-endepunkt",
"endpoint_message": "Endre dette bare når Release Manager-endepunkter er tilgjengelige på mål-API-en.",
"endpoint_aria": "Release Manager kontroll-API URL",
"use_tooltip": "Last release-data fra denne API-en",
"use": "Bruk",
"reset_tooltip": "Gå tilbake til standard kontroll-API",
"reset": "Tilbakestill",
"known_endpoints": "Kjente kontroll-API-endepunkter"
},
"tabs": {
"overview": {
"label": "Oversikt",
"description": "Kanalhelse, oppsettsfremdrift og siste release-status."
},
"channels": {
"label": "Kanaler",
"description": "Opprett stabile, canary- og målrettede kanaler med rollout-grenser."
},
"assignments": {
"label": "Tildelinger",
"description": "Knytt brukere, underbrukere eller kunder til en bestemt release-kanal."
},
"deployments": {
"label": "Utrullinger",
"description": "Start utrullinger og promoter vellykkede bygg."
},
"replay": {
"label": "Replay",
"description": "Aktiver målrettet innsamling og søk i release-tidslinjehendelser."
},
"integrations": {
"label": "Integrasjoner",
"description": "Koble GitHub-repositories, branches og Coolify-tjenester."
},
"settings": {
"label": "Innstillinger",
"description": "Konfigurer Release Managers GitHub-tilgang og webhook-innstillinger."
}
},
"loading": {
"summary": "Laster Release Manager-data...",
"refreshing_summary": "Oppdaterer Release Manager-data...",
"summary_detail": "Release-status, kanaler, deployments og servicehelse lastes.",
"channels": "Laster release-kanaler...",
"channels_detail": "Kanalvisninger og release-avhengigheter lastes.",
"assignments": "Laster release-tildelinger...",
"deployments": "Laster release-deployments...",
"operations": "Laster release-operasjoner...",
"data_services": "Laster release-datatjenester...",
"integrations": "Laster release-integrasjoner...",
"settings": "Laster Release Manager-innstillinger...",
"github_repositories": "Laster GitHub-repositories...",
"timeline_sessions": "Laster release-tidslinje-sesjoner...",
"timeline_events": "Laster release-tidslinjehendelser...",
"refreshing_timeline": "Oppdaterer release-tidslinje..."
},
"setup": {
"channels": "Kanaler",
"targets": "GitHub- og Coolify-mål",
"assignments": "Pilottildelinger",
"deployments": "Første utrulling",
"replay": "Replay-innsamling"
},
"stats": {
"channels": "Kanaler",
"targets": "Mål",
"deployments": "Utrullinger",
"timeline_events": "Tidslinjehendelser"
},
"overview": {
"title": "Oversikt",
"subtitle": "Aktuell kanalhelse, release-aktivitet og modulstatus.",
"guided_setup": "Veiledet oppsett",
"next_step": "Neste: {step}",
"ready": "Release Manager er klar for daglig drift.",
"add_suggested_channel": "Legg til foreslått kanal",
"module_health_empty": "Modul-health snapshots vises når probes er registrert."
},
"settings": {
"title": "Release Manager-innstillinger",
"subtitle": "Konfigurer GitHub-tokenet som brukes for private repositories og branch-oppslag.",
"github_token": "GitHub-token",
"github_api_url": "GitHub API-URL",
"webhook_secret": "Webhook-hemmelighet",
"github_webhook_secret": "GitHub webhook-hemmelighet",
"configured": "Konfigurert",
"not_configured": "Ikke konfigurert",
"loaded_from": "Lastet fra {variable}",
"set_below": "Angi {variable} nedenfor",
"private_repositories_prefix": "Private repositories leses med serverens miljøvariabel",
"private_repositories_or": "eller modulens konfigurasjonsvariabel",
"github_token_message": "Eksempel: github_pat_... med tilgang til de private repositories Release Manager ruller ut.",
"github_token_placeholder": "La stå tomt for å beholde eksisterende token",
"github_api_url_message": "Konfigurert i ReleaseManager.github_api_url. Bruk https://api.github.com med mindre GitHub Enterprise brukes.",
"webhook_secret_message": "Valgfritt; la stå tomt for å beholde eksisterende hemmelighet.",
"webhook_secret_placeholder": "Webhook HMAC-hemmelighet",
"save": "Lagre innstillinger",
"back_to_integrations": "Tilbake til integrasjoner",
"guide": {
"steps": {
"github_token": "GitHub-token",
"github_api_url": "GitHub API-URL",
"github_webhook_secret": "GitHub webhook secret",
"review": "Gennemgang"
},
"github_token_title": "Legg til GitHub-token",
"github_token_description": "Release Manager bruger denne token til at vise private repositories, branches og commits, før et deployment-mål gemmes eller testes.",
"configure_this_in": "Konfigurer dette i",
"server_environment_variable": "Serverens miljøvariabel",
"takes_precedence": "har forrang når den er satt.",
"recommended_access": "Anbefalt tilgang",
"recommended_access_description": "Fine-grained GitHub-token med Contents: read-adgang til hvert release-repository.",
"github_api_url_title": "Legg til GitHub API-URL",
"github_api_url_description": "Brug GitHub Cloud som standard, eller peg på REST API-base-URLen for en GitHub Enterprise Server-installation.",
"github_api_url_invalid": "Skriv inn en full HTTP- eller HTTPS-URL.",
"github_cloud": "GitHub Cloud",
"enterprise_example": "Enterprise-eksempel",
"github_webhook_secret_title": "Legg til GitHub webhook secret",
"github_webhook_secret_description": "Brug samme secret i GitHub repository-webhooks, så Release Manager kan verificere deployment-events, før de håndteres.",
"github_webhook_url": "GitHub webhook-URL:",
"store_shared_secret_in": "Lagre den delte secreten i",
"review_title": "Gå gjennom GitHub-oppsett",
"review_description": "Gem værdierne, og brug derefter Integrationer til at vælge et privat repository, branch og specifik commit eller seneste commit før adgang testes.",
"ready": "Klar",
"needs_value": "Mangler værdi"
}
},
"channel_unavailable": {
"kicker": "Release Manager",
"title": "Release-kanalen er ikke klar",
"summary_prefix": "Kontoen din er tildelt",
"summary_suffix": ", men kanalen mangler påkrevd release-konfigurasjon.",
"release_bundle": "Release-bundle",
"frontend_version": "Frontend-versjon",
"api_version": "API-versjon",
"frontend_base_url": "Frontend-URL",
"api_base_url": "API-URL",
"frontend_entry": "Frontend-entry",
"release_runtime": "Release-runtime",
"checking_again": "Sjekker igjen om {seconds}s",
"refresh_error": "Release-status kunne ikke oppdateres. Neste automatiske sjekk prøver igjen.",
"ignore": "Ignorer de neste 5 minuttene",
"check_again": "Sjekk igjen",
"logout": "Logg ut",
"base_image": "Basis-image"
},
"channel_switched": {
"kicker": "Release Manager",
"title": "Du er nå på {channel}",
"summary_prefix": "Kontoen din er tildelt release-kanalen",
"summary_suffix": "Denne enheten husker at du har sett denne meldingen.",
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"frontend_version": "Frontend-versjon",
"api_version": "API-versjon",
"assigned_channel": "Tildelt kanal",
"current_app_image": "Nåværende app-image",
"current_api": "Nåværende API",
"base_image": "Basis-image",
"continue": "Fortsett"
},
"channel_selector": {
"title": "Release-kanal",
"subtitle": "Velg hvilken tildelt release-kanal denne enheten skal bruke.",
"sidebar_title": "Release",
"default": "Standard",
"ready": "Klar",
"unavailable": "Ikke klar",
"release_bundle": "Release-bundle",
"frontend_version": "Frontend-versjon",
"api_version": "API-versjon",
"frontend_base_url": "Frontend-URL",
"api_base_url": "API-URL",
"frontend_entry": "Frontend-entry",
"release_runtime": "Release-runtime",
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"use_local_frontend": "Bruk lokal frontend"
},
"common": {
"yes": "ja",
"no": "nei",
"off": "av"
},
"actions": {
"edit": "Rediger",
"rollback": "Rull tilbake",
"update": "Opdater",
"create": "Opprett",
"clear": "Tøm",
"assign": "Tildel",
"remove": "Fjern",
"test_access": "Test tilgang",
"deploy": "Deploy",
"redeploy": "Redeploy",
"promote": "Promoter",
"enable": "Aktiver",
"search": "Søk",
"save_target": "Lagre mål",
"delete": "Slett",
"back": "Tilbake",
"next": "Neste"
},
"tables": {
"channel": "Kanal",
"rollout": "Udrulning",
"frontend": "Frontend",
"api": "API",
"replay": "Replay",
"actions": "Handlinger",
"module": "Modul",
"status": "Status",
"checked": "Kontrollert",
"subject": "Emne",
"reason": "Årsag",
"expires": "Utløper",
"deployment": "Deployment",
"source": "Kilde",
"started": "Startet",
"target": "Mål",
"coolify": "Coolify",
"auto": "Auto"
},
"values": {
"app": {
"frontend": "frontend",
"api": "api"
},
"capture_level": {
"metadata": "metadata",
"full_redacted": "fullt redigert"
},
"subject_type": {
"user": "bruker",
"subuser": "medarbeider",
"customer": "kunde",
"channel": "kanal"
},
"severity": {
"error": "feil",
"warning": "advarsel",
"info": "info"
},
"status": {
"ok": "ok",
"active": "aktiv",
"deployed": "deployet",
"stable": "stabil",
"enabled": "aktivert",
"queued": "i kø",
"deploying": "deploying",
"metadata": "metadata",
"not_configured": "ikke konfigurert",
"warning": "advarsel",
"failed": "feilet",
"down": "nede",
"error": "feil",
"unknown": "ukjent"
}
},
"autocomplete": {
"suggested_value": "Foreslået værdi",
"suggestion": "Forslag",
"use_typed_value": "Brug indtastet værdi",
"custom": "Tilpasset",
"api_url": "API-URL",
"frontend_url": "Frontend-URL",
"known_release_url": "Kendt release-URL",
"deploy_here_with_coolify": "Deploy {app} her med Coolify",
"prepare_coolify_target": "Forbered et Coolify-mål med HTTPS/SSL aktiveret",
"coolify_ssl": "Coolify SSL",
"github_repository": "GitHub-repository",
"owner_repository": "ejer/repository",
"git_branch": "Git-branch",
"deployment_branch": "Deployment-branch",
"github_commit": "GitHub-commit",
"git_commit": "Git-commit",
"use_specific_commit_sha": "Brug specifik commit-SHA",
"custom_commit": "Tilpasset commit",
"health_url": "Health-URL",
"release_health_check": "Release health check",
"coolify_service": "Coolify-service",
"service_uuid": "Service-UUID",
"known_coolify_service_uuid": "Kendt Coolify service-UUID",
"control_api": "Kontrol-API",
"release_manager_api_endpoint": "Release Manager API-endpoint",
"module": "Modul",
"timeline_module_key": "Timeline-modulnøgle"
},
"errors": {
"github_repositories": "Kunne ikke indlæse GitHub-repositories.",
"github_branches": "Kunne ikke indlæse GitHub-branches.",
"repository_branch_required": "Repository og branch er påkrævet før GitHub-adgang kan testes.",
"github_access_failed": "Test af GitHub repository-adgang fejlede."
},
"channels": {
"title": "Kanaler",
"subtitle": "Opprett og juster gradvise release-kanaler.",
"rollout_percent": "{percent}% udrulning",
"already_configured": "Allerede konfigurert",
"slug": "Slug",
"slug_message": "Eksempel: canary",
"slug_placeholder": "slug",
"name": "Navn",
"name_message": "Vises til operatører når de gjennomgår en kanal.",
"name_placeholder": "Navn",
"rollout": "Udrulning",
"rollout_message": "0-100 prosent av ikke-tildelt trafikk.",
"frontend_url": "Frontend-URL",
"frontend_url_message": "Eksempel: https://canary.example.test",
"frontend_url_placeholder": "Frontend-URL",
"no_matching_release_url": "Ingen matchende release-URL.",
"api_url": "API-URL",
"api_url_message": "Eksempel: https://api-canary.example.test",
"api_url_placeholder": "API-URL",
"no_matching_api_url": "Ingen matchende API-URL.",
"replay_capture": "Replay capture",
"replay_capture_message": "Metadata er sikrere til brede kanaler.",
"retention_days": "Oppbevaringsdager",
"retention_days_message": "1-365 dage.",
"enabled": "Aktivert",
"default_channel": "Standardkanal",
"replay_enabled": "Replay aktivert",
"frontend_chip": "Frontend: {url}",
"api_chip": "API: {url}"
},
"assignments": {
"title": "Tildelinger",
"subtitle": "Fest brukere, medarbeidere eller kunder til release-kanaler.",
"subject": "Emne",
"subject_message": "Søk etter brukere, medarbeidere eller kunder, eller skriv et manuelt emne som user:42.",
"subject_placeholder": "Søk eller skriv emne",
"subject_empty": "Ingen emner funnet",
"group_users": "Brukere",
"group_subusers": "Medarbeidere",
"group_customers": "Kunder",
"group_manual": "Manuell",
"manual_user": "Bruker #{id}",
"manual_subuser": "Medarbeider #{id}",
"manual_customer": "Kunde #{id}",
"manual_description": "Bruk inntastet verdi {subject}",
"subject_type": "Emnetype",
"subject_type_message": "Vælg identitetstypen, der skal fastgøres.",
"customer": "Kunde",
"customer_message": "Søk på kundenummer eller navn, og velg deretter nøyaktig kunde.",
"customer_placeholder": "Søk kunde",
"subject_id": "Emne-ID",
"subject_id_message": "Eksempel: bruker-id 42",
"subject_id_placeholder": "Emne-id",
"channel": "Kanal",
"channel_message": "Festede emner hopper over prosentutrullingen.",
"reason": "Årsag",
"reason_message": "Eksempel: canary-validering for kundesupport.",
"reason_placeholder": "Årsag",
"expires": "Utløper",
"expires_message": "Lad feltet være tomt for ingen automatisk udløb."
},
"deployments": {
"title": "Deployments",
"subtitle": "Start, promoter og inspiser release-deployments.",
"manual_deployment_record": "Manuel deployment-post",
"target": "Mål",
"target_message": "Vælg et gemt mål, eller behold manuelle felter redigerbare.",
"select_target_or_manual": "Velg mål eller manuelt",
"channel": "Kanal",
"app": "App",
"repository": "Repository",
"repository_message": "Eksempel: truckwash/front-end-vue",
"repository_placeholder": "ejer/repo",
"branch": "Branch",
"branch_message": "Eksempel: master",
"branch_placeholder": "branch",
"commit_selection": "Commit-valg",
"commit_selection_message": "Seneste slås op som branchens head med den konfigurerede GitHub-token.",
"latest_from_branch": "Siste fra branch",
"specific_commit": "Spesifikk commit",
"specific_commit_message": "Eksempel: feedface1234",
"commit_sha_placeholder": "commit sha",
"version_label": "Versjonsetikett",
"version_label_message": "Eksempel: api-2026.05.19",
"version_label_placeholder": "versionslabel",
"commit_prefix": "Commit: {commit}",
"test_access_tooltip": "Bekræft token-adgang til det valgte repository, branch og commit."
},
"replay": {
"title": "Replay",
"subtitle": "Aktiver målrettet capture og gennemgå fejltimelines trin for trin.",
"capture_channel": "Capture {channel}",
"target_type": "Måltype",
"target": "Mål",
"target_message": "Eksempel: bruker-id 42 eller kanal-slug canary.",
"target_placeholder": "Mål-id eller kanal-slug",
"channel_scope": "Kanalavgrensning",
"channel_scope_message": "Valgfrit; begrænser replay capture til en kanal.",
"no_channel_scope": "Ingen kanalavgrensning",
"capture_level": "Capture-niveau",
"expires": "Utløper",
"expires_message": "Lad feltet være tomt for manuel deaktivering.",
"trace_id": "Trace-ID",
"trace_id_message": "Eksempel: trace-canary-1",
"trace_id_placeholder": "Trace-id",
"channel": "Kanal",
"channel_placeholder": "Kanal",
"principal_id": "Principal-ID",
"principal_id_placeholder": "Principal-id",
"module": "Modul",
"module_placeholder": "Modul",
"severity": "Alvorlighet",
"any_severity": "Alle alvorligheder",
"no_timeline_events": "Ingen timeline-events matcher de aktuelle filtre."
},
"integrations": {
"title": "GitHub og Coolify",
"subtitle": "Knyt GitHub-repositories og branches til kanalspecifikke Coolify-services.",
"choose_repository": "Velg repository",
"add_health_url": "legg til health-URL",
"github_token_not_configured": "GitHub-token er ikke konfigurert; private repositories kan ikke vises.",
"open_github_token_settings": "Åpne GitHub token-innstillinger",
"channel": "Kanal",
"app": "App",
"repository": "Repository",
"repository_message": "Eksempel: truckwash/backend-php",
"repository_placeholder": "ejer/repo",
"branch": "Branch",
"branch_message": "Eksempel: release/canary",
"branch_placeholder": "branch",
"latest_prefix": "Seneste: {commit}",
"coolify_instance": "Coolify-instans",
"coolify_instance_message": "Lad feltet være tomt for manuelle deployment-poster.",
"no_coolify_instance": "Ingen Coolify-instans",
"coolify_instance_placeholder": "Coolify-instans-id",
"coolify_service_uuid": "Coolify service-UUID",
"coolify_service_uuid_message": "Vælg en eksisterende service eller indsæt en UUID.",
"coolify_service_uuid_placeholder": "Coolify service-UUID",
"health_url": "Health-URL",
"health_url_message": "Eksempel: https://api-canary.example.test/ping",
"health_url_placeholder": "Health-URL",
"ssl_domain": "Load balancer-domene",
"ssl_domain_message": "Må være et DNS-domene som routes til Coolify load balanceren. Eksempel: api-v2.truckwash.io",
"ssl_domain_placeholder": "Load balancer-domene",
"https_domain_for_coolify": "Domene kontrollert av load balanceren",
"endpoint_mode": "Endpoint mode",
"endpoint_mode_message": "Use automatic gateway routing or manually override the public host and port.",
"endpoint_mode_auto": "Auto",
"endpoint_mode_manual": "Manual",
"manual_endpoint_host": "Manual host",
"manual_endpoint_host_message": "Public host shown in release previews when manual mode is selected.",
"manual_endpoint_host_placeholder": "api-v2.truckwash.io",
"manual_endpoint_port": "Manual public port",
"manual_endpoint_port_message": "Optional public port from 1 to 65535.",
"app_port": "App port",
"app_port_message": "Internal container port exposed to Coolify routing.",
"auto_gateway_endpoint": "Automatic gateway endpoint",
"pending_automatic_endpoint": "Automatic endpoint resolution pending",
"auto_deploy": "Auto deploy",
"auto_deploy_tooltip": "Opret automatisk deployments, når dette mål ændres.",
"coolify_ssl": "Coolify SSL",
"coolify_ssl_tooltip": "Bed Coolify om at oprette HTTPS for det konfigurerede domæne.",
"deploy_now": "Deploy nå",
"deploy_now_tooltip": "Start en deployment straks efter målet gemmes.",
"create_missing_service": "Opprett manglende service",
"create_missing_service_tooltip": "Tillad Release Manager at oprette en manglende Coolify-service.",
"test_access_tooltip": "Bekræft, at den konfigurerede GitHub-token kan læse dette repository og branch."
}
}
}
}
@@ -0,0 +1,61 @@
{
"compat": {
"configuration": {
"release_manager": {
"integrations": {
"title": "GitHub og Coolify",
"subtitle": "Knyt GitHub-repositories og branches til kanalspecifikke Coolify-services.",
"choose_repository": "Velg repository",
"add_health_url": "legg til health-URL",
"github_token_not_configured": "GitHub-token er ikke konfigurert; private repositories kan ikke vises.",
"open_github_token_settings": "Åpne GitHub token-innstillinger",
"channel": "Kanal",
"app": "App",
"repository": "Repository",
"repository_message": "Eksempel: truckwash/backend-php",
"repository_placeholder": "ejer/repo",
"branch": "Branch",
"branch_message": "Eksempel: release/canary",
"branch_placeholder": "branch",
"latest_prefix": "Seneste: {commit}",
"coolify_instance": "Coolify-instans",
"coolify_instance_message": "Lad feltet være tomt for manuelle deployment-poster.",
"no_coolify_instance": "Ingen Coolify-instans",
"coolify_instance_placeholder": "Coolify-instans-id",
"coolify_service_uuid": "Coolify service-UUID",
"coolify_service_uuid_message": "Vælg en eksisterende service eller indsæt en UUID.",
"coolify_service_uuid_placeholder": "Coolify service-UUID",
"health_url": "Health-URL",
"health_url_message": "Eksempel: https://api-canary.example.test/ping",
"health_url_placeholder": "Health-URL",
"ssl_domain": "Load balancer-domene",
"ssl_domain_message": "Må være et DNS-domene som routes til Coolify load balanceren. Eksempel: api-v2.truckwash.io",
"ssl_domain_placeholder": "Load balancer-domene",
"https_domain_for_coolify": "Domene kontrollert av load balanceren",
"endpoint_mode": "Endpoint mode",
"endpoint_mode_message": "Use automatic gateway routing or manually override the public host and port.",
"endpoint_mode_auto": "Auto",
"endpoint_mode_manual": "Manual",
"manual_endpoint_host": "Manual host",
"manual_endpoint_host_message": "Public host shown in release previews when manual mode is selected.",
"manual_endpoint_host_placeholder": "api-v2.truckwash.io",
"manual_endpoint_port": "Manual public port",
"manual_endpoint_port_message": "Optional public port from 1 to 65535.",
"app_port": "App port",
"app_port_message": "Internal container port exposed to Coolify routing.",
"auto_gateway_endpoint": "Automatic gateway endpoint",
"pending_automatic_endpoint": "Automatic endpoint resolution pending",
"auto_deploy": "Auto deploy",
"auto_deploy_tooltip": "Opret automatisk deployments, når dette mål ændres.",
"coolify_ssl": "Coolify SSL",
"coolify_ssl_tooltip": "Bed Coolify om at oprette HTTPS for det konfigurerede domæne.",
"deploy_now": "Deploy nå",
"deploy_now_tooltip": "Start en deployment straks efter målet gemmes.",
"create_missing_service": "Opprett manglende service",
"create_missing_service_tooltip": "Tillad Release Manager at oprette en manglende Coolify-service.",
"test_access_tooltip": "Bekræft, at den konfigurerede GitHub-token kan læse dette repository og branch."
}
}
}
}
}
@@ -0,0 +1,454 @@
{
"compat": {
"configuration": {
"release_manager": {
"title": "Release Manager",
"subtitle": "Gradvise API- og Front-End-utgivelser",
"channel_names": {
"stable": "Stabil",
"canary": "Canary",
"internal": "Intern"
},
"channel_descriptions": {
"stable": "Standard produksjonskanal.",
"canary": "Tidlig produksjonsvalideringskanal.",
"internal": "Intern kanal for ansatte og superbrukervalidering."
},
"control_api": {
"title": "Kontroll-API",
"tooltip": "Release Manager-handlinger sendes til denne API-en. Bruk produksjons-API-en med mindre du tester en staging-backend.",
"example": "Eksempel: https://api.truckwash.io:4433",
"endpoint_label": "API-endepunkt",
"endpoint_message": "Endre dette bare når Release Manager-endepunkter er tilgjengelige på mål-API-en.",
"endpoint_aria": "Release Manager kontroll-API URL",
"use_tooltip": "Last release-data fra denne API-en",
"use": "Bruk",
"reset_tooltip": "Gå tilbake til standard kontroll-API",
"reset": "Tilbakestill",
"known_endpoints": "Kjente kontroll-API-endepunkter"
},
"tabs": {
"overview": {
"label": "Oversikt",
"description": "Kanalhelse, oppsettsfremdrift og siste release-status."
},
"channels": {
"label": "Kanaler",
"description": "Opprett stabile, canary- og målrettede kanaler med rollout-grenser."
},
"assignments": {
"label": "Tildelinger",
"description": "Knytt brukere, underbrukere eller kunder til en bestemt release-kanal."
},
"deployments": {
"label": "Utrullinger",
"description": "Start utrullinger og promoter vellykkede bygg."
},
"replay": {
"label": "Replay",
"description": "Aktiver målrettet innsamling og søk i release-tidslinjehendelser."
},
"integrations": {
"label": "Integrasjoner",
"description": "Koble GitHub-repositories, branches og Coolify-tjenester."
},
"settings": {
"label": "Innstillinger",
"description": "Konfigurer Release Managers GitHub-tilgang og webhook-innstillinger."
}
},
"loading": {
"summary": "Laster Release Manager-data...",
"refreshing_summary": "Oppdaterer Release Manager-data...",
"summary_detail": "Release-status, kanaler, deployments og servicehelse lastes.",
"channels": "Laster release-kanaler...",
"channels_detail": "Kanalvisninger og release-avhengigheter lastes.",
"assignments": "Laster release-tildelinger...",
"deployments": "Laster release-deployments...",
"operations": "Laster release-operasjoner...",
"data_services": "Laster release-datatjenester...",
"integrations": "Laster release-integrasjoner...",
"settings": "Laster Release Manager-innstillinger...",
"github_repositories": "Laster GitHub-repositories...",
"timeline_sessions": "Laster release-tidslinje-sesjoner...",
"timeline_events": "Laster release-tidslinjehendelser...",
"refreshing_timeline": "Oppdaterer release-tidslinje..."
},
"setup": {
"channels": "Kanaler",
"targets": "GitHub- og Coolify-mål",
"assignments": "Pilottildelinger",
"deployments": "Første utrulling",
"replay": "Replay-innsamling"
},
"stats": {
"channels": "Kanaler",
"targets": "Mål",
"deployments": "Utrullinger",
"timeline_events": "Tidslinjehendelser"
},
"overview": {
"title": "Oversikt",
"subtitle": "Aktuell kanalhelse, release-aktivitet og modulstatus.",
"guided_setup": "Veiledet oppsett",
"next_step": "Neste: {step}",
"ready": "Release Manager er klar for daglig drift.",
"add_suggested_channel": "Legg til foreslått kanal",
"module_health_empty": "Modul-health snapshots vises når probes er registrert."
},
"settings": {
"title": "Release Manager-innstillinger",
"subtitle": "Konfigurer GitHub-tokenet som brukes for private repositories og branch-oppslag.",
"github_token": "GitHub-token",
"github_api_url": "GitHub API-URL",
"webhook_secret": "Webhook-hemmelighet",
"github_webhook_secret": "GitHub webhook-hemmelighet",
"configured": "Konfigurert",
"not_configured": "Ikke konfigurert",
"loaded_from": "Lastet fra {variable}",
"set_below": "Angi {variable} nedenfor",
"private_repositories_prefix": "Private repositories leses med serverens miljøvariabel",
"private_repositories_or": "eller modulens konfigurasjonsvariabel",
"github_token_message": "Eksempel: github_pat_... med tilgang til de private repositories Release Manager ruller ut.",
"github_token_placeholder": "La stå tomt for å beholde eksisterende token",
"github_api_url_message": "Konfigurert i ReleaseManager.github_api_url. Bruk https://api.github.com med mindre GitHub Enterprise brukes.",
"webhook_secret_message": "Valgfritt; la stå tomt for å beholde eksisterende hemmelighet.",
"webhook_secret_placeholder": "Webhook HMAC-hemmelighet",
"save": "Lagre innstillinger",
"back_to_integrations": "Tilbake til integrasjoner",
"guide": {
"steps": {
"github_token": "GitHub-token",
"github_api_url": "GitHub API-URL",
"github_webhook_secret": "GitHub webhook secret",
"review": "Gennemgang"
},
"github_token_title": "Legg til GitHub-token",
"github_token_description": "Release Manager bruger denne token til at vise private repositories, branches og commits, før et deployment-mål gemmes eller testes.",
"configure_this_in": "Konfigurer dette i",
"server_environment_variable": "Serverens miljøvariabel",
"takes_precedence": "har forrang når den er satt.",
"recommended_access": "Anbefalt tilgang",
"recommended_access_description": "Fine-grained GitHub-token med Contents: read-adgang til hvert release-repository.",
"github_api_url_title": "Legg til GitHub API-URL",
"github_api_url_description": "Brug GitHub Cloud som standard, eller peg på REST API-base-URLen for en GitHub Enterprise Server-installation.",
"github_api_url_invalid": "Skriv inn en full HTTP- eller HTTPS-URL.",
"github_cloud": "GitHub Cloud",
"enterprise_example": "Enterprise-eksempel",
"github_webhook_secret_title": "Legg til GitHub webhook secret",
"github_webhook_secret_description": "Brug samme secret i GitHub repository-webhooks, så Release Manager kan verificere deployment-events, før de håndteres.",
"github_webhook_url": "GitHub webhook-URL:",
"store_shared_secret_in": "Lagre den delte secreten i",
"review_title": "Gå gjennom GitHub-oppsett",
"review_description": "Gem værdierne, og brug derefter Integrationer til at vælge et privat repository, branch og specifik commit eller seneste commit før adgang testes.",
"ready": "Klar",
"needs_value": "Mangler værdi"
}
},
"channel_unavailable": {
"kicker": "Release Manager",
"title": "Release-kanalen er ikke klar",
"summary_prefix": "Kontoen din er tildelt",
"summary_suffix": ", men kanalen mangler påkrevd release-konfigurasjon.",
"release_bundle": "Release-bundle",
"frontend_version": "Frontend-versjon",
"api_version": "API-versjon",
"frontend_base_url": "Frontend-URL",
"api_base_url": "API-URL",
"frontend_entry": "Frontend-entry",
"release_runtime": "Release-runtime",
"checking_again": "Sjekker igjen om {seconds}s",
"refresh_error": "Release-status kunne ikke oppdateres. Neste automatiske sjekk prøver igjen.",
"ignore": "Ignorer de neste 5 minuttene",
"check_again": "Sjekk igjen",
"logout": "Logg ut",
"base_image": "Basis-image"
},
"channel_switched": {
"kicker": "Release Manager",
"title": "Du er nå på {channel}",
"summary_prefix": "Kontoen din er tildelt release-kanalen",
"summary_suffix": "Denne enheten husker at du har sett denne meldingen.",
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"frontend_version": "Frontend-versjon",
"api_version": "API-versjon",
"assigned_channel": "Tildelt kanal",
"current_app_image": "Nåværende app-image",
"current_api": "Nåværende API",
"base_image": "Basis-image",
"continue": "Fortsett"
},
"channel_selector": {
"title": "Release-kanal",
"subtitle": "Velg hvilken tildelt release-kanal denne enheten skal bruke.",
"sidebar_title": "Release",
"default": "Standard",
"ready": "Klar",
"unavailable": "Ikke klar",
"release_bundle": "Release-bundle",
"frontend_version": "Frontend-versjon",
"api_version": "API-versjon",
"frontend_base_url": "Frontend-URL",
"api_base_url": "API-URL",
"frontend_entry": "Frontend-entry",
"release_runtime": "Release-runtime",
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"use_local_frontend": "Bruk lokal frontend",
"switch_error": "Release channel could not be switched. The previous channel is still active."
},
"common": {
"yes": "ja",
"no": "nei",
"off": "av"
},
"actions": {
"edit": "Rediger",
"rollback": "Rull tilbake",
"update": "Opdater",
"create": "Opprett",
"clear": "Tøm",
"assign": "Tildel",
"remove": "Fjern",
"test_access": "Test tilgang",
"deploy": "Deploy",
"redeploy": "Redeploy",
"promote": "Promoter",
"enable": "Aktiver",
"search": "Søk",
"save_target": "Lagre mål",
"delete": "Slett",
"back": "Tilbake",
"next": "Neste",
"publish_release": "Publish release"
},
"tables": {
"channel": "Kanal",
"rollout": "Udrulning",
"frontend": "Frontend",
"api": "API",
"replay": "Replay",
"actions": "Handlinger",
"module": "Modul",
"status": "Status",
"checked": "Kontrollert",
"subject": "Emne",
"reason": "Årsag",
"expires": "Utløper",
"deployment": "Deployment",
"source": "Kilde",
"started": "Startet",
"target": "Mål",
"coolify": "Coolify",
"auto": "Auto"
},
"values": {
"app": {
"frontend": "frontend",
"api": "api"
},
"capture_level": {
"metadata": "metadata",
"full_redacted": "fullt redigert"
},
"subject_type": {
"user": "bruker",
"subuser": "medarbeider",
"customer": "kunde",
"channel": "kanal"
},
"severity": {
"error": "feil",
"warning": "advarsel",
"info": "info"
},
"status": {
"ok": "ok",
"active": "aktiv",
"deployed": "deployet",
"stable": "stabil",
"enabled": "aktivert",
"queued": "i kø",
"deploying": "deploying",
"metadata": "metadata",
"not_configured": "ikke konfigurert",
"warning": "advarsel",
"failed": "feilet",
"down": "nede",
"error": "feil",
"unknown": "ukjent"
}
},
"autocomplete": {
"suggested_value": "Foreslået værdi",
"suggestion": "Forslag",
"use_typed_value": "Brug indtastet værdi",
"custom": "Tilpasset",
"api_url": "API-URL",
"frontend_url": "Frontend-URL",
"known_release_url": "Kendt release-URL",
"deploy_here_with_coolify": "Deploy {app} her med Coolify",
"prepare_coolify_target": "Forbered et Coolify-mål med HTTPS/SSL aktiveret",
"coolify_ssl": "Coolify SSL",
"github_repository": "GitHub-repository",
"owner_repository": "ejer/repository",
"git_branch": "Git-branch",
"deployment_branch": "Deployment-branch",
"github_commit": "GitHub-commit",
"git_commit": "Git-commit",
"use_specific_commit_sha": "Brug specifik commit-SHA",
"custom_commit": "Tilpasset commit",
"health_url": "Health-URL",
"release_health_check": "Release health check",
"coolify_service": "Coolify-service",
"service_uuid": "Service-UUID",
"known_coolify_service_uuid": "Kendt Coolify service-UUID",
"control_api": "Kontrol-API",
"release_manager_api_endpoint": "Release Manager API-endpoint",
"module": "Modul",
"timeline_module_key": "Timeline-modulnøgle"
},
"errors": {
"github_repositories": "Kunne ikke indlæse GitHub-repositories.",
"github_branches": "Kunne ikke indlæse GitHub-branches.",
"repository_branch_required": "Repository og branch er påkrævet før GitHub-adgang kan testes.",
"github_access_failed": "Test af GitHub repository-adgang fejlede."
},
"channels": {
"title": "Kanaler",
"subtitle": "Opprett og juster gradvise release-kanaler.",
"rollout_percent": "{percent}% udrulning",
"already_configured": "Allerede konfigurert",
"slug": "Slug",
"slug_message": "Eksempel: canary",
"slug_placeholder": "slug",
"name": "Navn",
"name_message": "Vises til operatører når de gjennomgår en kanal.",
"name_placeholder": "Navn",
"rollout": "Udrulning",
"rollout_message": "0-100 prosent av ikke-tildelt trafikk.",
"frontend_url": "Frontend-URL",
"frontend_url_message": "Eksempel: https://canary.example.test",
"frontend_url_placeholder": "Frontend-URL",
"no_matching_release_url": "Ingen matchende release-URL.",
"api_url": "API-URL",
"api_url_message": "Eksempel: https://api-canary.example.test",
"api_url_placeholder": "API-URL",
"no_matching_api_url": "Ingen matchende API-URL.",
"replay_capture": "Replay capture",
"replay_capture_message": "Metadata er sikrere til brede kanaler.",
"retention_days": "Oppbevaringsdager",
"retention_days_message": "1-365 dage.",
"enabled": "Aktivert",
"default_channel": "Standardkanal",
"replay_enabled": "Replay aktivert",
"frontend_chip": "Frontend: {url}",
"api_chip": "API: {url}"
},
"assignments": {
"title": "Tildelinger",
"subtitle": "Fest brukere, medarbeidere eller kunder til release-kanaler.",
"subject": "Emne",
"subject_message": "Søk etter brukere, medarbeidere eller kunder, eller skriv et manuelt emne som user:42.",
"subject_placeholder": "Søk eller skriv emne",
"subject_empty": "Ingen emner funnet",
"group_users": "Brukere",
"group_subusers": "Medarbeidere",
"group_customers": "Kunder",
"group_manual": "Manuell",
"manual_user": "Bruker #{id}",
"manual_subuser": "Medarbeider #{id}",
"manual_customer": "Kunde #{id}",
"manual_description": "Bruk inntastet verdi {subject}",
"subject_type": "Emnetype",
"subject_type_message": "Vælg identitetstypen, der skal fastgøres.",
"customer": "Kunde",
"customer_message": "Søk på kundenummer eller navn, og velg deretter nøyaktig kunde.",
"customer_placeholder": "Søk kunde",
"subject_id": "Emne-ID",
"subject_id_message": "Eksempel: bruker-id 42",
"subject_id_placeholder": "Emne-id",
"channel": "Kanal",
"channel_message": "Festede emner hopper over prosentutrullingen.",
"reason": "Årsag",
"reason_message": "Eksempel: canary-validering for kundesupport.",
"reason_placeholder": "Årsag",
"expires": "Utløper",
"expires_message": "Lad feltet være tomt for ingen automatisk udløb."
},
"deployments": {
"title": "Deployments",
"subtitle": "Start, promoter og inspiser release-deployments.",
"manual_deployment_record": "Manuel deployment-post",
"target": "Mål",
"target_message": "Vælg et gemt mål, eller behold manuelle felter redigerbare.",
"select_target_or_manual": "Velg mål eller manuelt",
"channel": "Kanal",
"app": "App",
"repository": "Repository",
"repository_message": "Eksempel: truckwash/front-end-vue",
"repository_placeholder": "ejer/repo",
"branch": "Branch",
"branch_message": "Eksempel: master",
"branch_placeholder": "branch",
"commit_selection": "Commit-valg",
"commit_selection_message": "Seneste slås op som branchens head med den konfigurerede GitHub-token.",
"latest_from_branch": "Siste fra branch",
"specific_commit": "Spesifikk commit",
"specific_commit_message": "Eksempel: feedface1234",
"commit_sha_placeholder": "commit sha",
"version_label": "Versjonsetikett",
"version_label_message": "Eksempel: api-2026.05.19",
"version_label_placeholder": "versionslabel",
"commit_prefix": "Commit: {commit}",
"test_access_tooltip": "Bekræft token-adgang til det valgte repository, branch og commit."
},
"replay": {
"title": "Replay",
"subtitle": "Aktiver målrettet capture og gennemgå fejltimelines trin for trin.",
"capture_channel": "Capture {channel}",
"target_type": "Måltype",
"target": "Mål",
"target_message": "Eksempel: bruker-id 42 eller kanal-slug canary.",
"target_placeholder": "Mål-id eller kanal-slug",
"channel_scope": "Kanalavgrensning",
"channel_scope_message": "Valgfrit; begrænser replay capture til en kanal.",
"no_channel_scope": "Ingen kanalavgrensning",
"capture_level": "Capture-niveau",
"expires": "Utløper",
"expires_message": "Lad feltet være tomt for manuel deaktivering.",
"trace_id": "Trace-ID",
"trace_id_message": "Eksempel: trace-canary-1",
"trace_id_placeholder": "Trace-id",
"channel": "Kanal",
"channel_placeholder": "Kanal",
"principal_id": "Principal-ID",
"principal_id_placeholder": "Principal-id",
"module": "Modul",
"module_placeholder": "Modul",
"severity": "Alvorlighet",
"any_severity": "Alle alvorligheder",
"no_timeline_events": "Ingen timeline-events matcher de aktuelle filtre."
},
"status": {
"confirm_issue_action": "Run this Release Manager action? It can change deployment state and will be audited.",
"choose_bundle_prompt": "Enter the bundle id to set for this channel.",
"impact": "Impact",
"cause": "Cause",
"automated_fix": "Automated fix",
"manual_fallback": "Manual fallback",
"related_deployment": "Related deployment",
"recent_result": "Recent result",
"no_automated_action": "No automated action available.",
"deployment": "Deployment",
"target": "Target",
"coolify_target": "Coolify target",
"service_set": "Service set"
}
}
}
}
}
@@ -0,0 +1,28 @@
{
"compat": {
"admin": {
"pos": {
"settings_wheel": {
"accept_self_serve_wash": "Godkänn självbetjäningstvätt",
"accept_self_serve_wash_confirm": "Flytta detta utkast till kund #{customerNumber} med självbetjäningsdetaljerna?",
"accept_self_serve_wash_success": "Självbetjäningstvätten godkändes.",
"email_notifications_section": "E-postaviseringar",
"resend_booking_completion_confirmation": "(Re)send booking completion confirmation",
"resend_booking_completion_confirmation_error": "The booking completion confirmation could not be sent",
"resend_booking_completion_confirmation_success": "The booking completion confirmation has been sent",
"resend_booking_confirmation": "(Re)send booking confirmation",
"resend_booking_confirmation_error": "The booking confirmation could not be sent",
"resend_booking_confirmation_success": "The booking confirmation has been sent",
"resend_wash_certificate": "(Re)send wash certificate",
"resend_wash_certificate_error": "The wash certificate could not be sent",
"resend_wash_certificate_success": "The wash certificate has been sent",
"self_serve_customer": "Kund",
"self_serve_driver": "Förare",
"self_serve_elapsed": "Tid",
"self_serve_wash_attachment": "Självbetjäningstvätt",
"self_serve_wash_attachment_for_customer": "Självbetjäningstvätt för kund #{customerNumber}"
}
}
}
}
}
@@ -298,490 +298,6 @@
"subtitle": "@.capitalize:{'terms.glossary.konfiguration'} @:{'terms.glossary.af'} @:{'terms.glossary.xlvask'} @:{'terms.glossary.integrationen'}",
"title": "@:{'terms.glossary.xlvask'} @:{'terms.glossary.konfiguration'}",
"username_desc": "Användarnamnet @:{'terms.glossary.anvands'} @:{'terms.glossary.for'} @:{'terms.glossary.att'} @:{'terms.glossary.autentisera'} @:{'terms.glossary.api'}-@:{'terms.glossary.anslutningen'}."
},
"release_manager": {
"title": "Release Manager",
"subtitle": "Gradvisa API- och Front-End-versioner",
"channel_names": {
"stable": "Stabil",
"canary": "Canary",
"internal": "Intern"
},
"channel_descriptions": {
"stable": "Standardkanal för produktion.",
"canary": "Tidig produktionsvalideringskanal.",
"internal": "Intern kanal för personal och superanvändarvalidering."
},
"control_api": {
"title": "Kontroll-API",
"tooltip": "Release Manager-åtgärder skickas till detta API. Använd produktions-API:t om du inte testar en staging-backend.",
"example": "Exempel: https://api.truckwash.io:4433",
"endpoint_label": "API-endpoint",
"endpoint_message": "Ändra detta endast när Release Manager-endpoints finns på mål-API:t.",
"endpoint_aria": "Release Manager kontroll-API URL",
"use_tooltip": "Läs in release-data från detta API",
"use": "Använd",
"reset_tooltip": "Gå tillbaka till standard kontroll-API",
"reset": "Återställ",
"known_endpoints": "Kända kontroll-API-endpoints"
},
"tabs": {
"overview": {
"label": "Översikt",
"description": "Kanalhälsa, installationsstatus och senaste release-läge."
},
"channels": {
"label": "Kanaler",
"description": "Skapa stabila, canary- och riktade kanaler med rollout-gränser."
},
"assignments": {
"label": "Tilldelningar",
"description": "Koppla användare, underanvändare eller kunder till en specifik release-kanal."
},
"deployments": {
"label": "Utrullningar",
"description": "Starta utrullningar och promovera lyckade byggen."
},
"replay": {
"label": "Replay",
"description": "Aktivera riktad insamling och sök i release-tidslinjehändelser."
},
"integrations": {
"label": "Integrationer",
"description": "Anslut GitHub-repositories, branches och Coolify-tjänster."
},
"settings": {
"label": "Inställningar",
"description": "Konfigurera Release Managers GitHub-åtkomst och webhook-inställningar."
}
},
"loading": {
"summary": "Laddar Release Manager-data...",
"refreshing_summary": "Uppdaterar Release Manager-data...",
"summary_detail": "Release-status, kanaler, deployments och servicehalsa laddas.",
"channels": "Laddar release-kanaler...",
"channels_detail": "Kanalvyer och release-beroenden laddas.",
"assignments": "Laddar release-tilldelningar...",
"deployments": "Laddar release-deployments...",
"operations": "Laddar release-operationer...",
"data_services": "Laddar release-datatjanster...",
"integrations": "Laddar release-integrationer...",
"settings": "Laddar Release Manager-installningar...",
"github_repositories": "Laddar GitHub-repositories...",
"timeline_sessions": "Laddar release-tidslinjesessioner...",
"timeline_events": "Laddar release-tidslinjehandelser...",
"refreshing_timeline": "Uppdaterar release-tidslinje..."
},
"setup": {
"channels": "Kanaler",
"targets": "GitHub- och Coolify-mål",
"assignments": "Pilottilldelningar",
"deployments": "Första utrullningen",
"replay": "Replay-insamling"
},
"stats": {
"channels": "Kanaler",
"targets": "Mål",
"deployments": "Utrullningar",
"timeline_events": "Tidslinjehändelser"
},
"overview": {
"title": "Översikt",
"subtitle": "Aktuell kanalhälsa, release-aktivitet och modulstatus.",
"guided_setup": "Guidad installation",
"next_step": "Nästa: {step}",
"ready": "Release Manager är klar för daglig drift.",
"add_suggested_channel": "Lägg till föreslagen kanal",
"module_health_empty": "Modulhälsosnapshots visas när probes har registrerats."
},
"settings": {
"title": "Release Manager-inställningar",
"subtitle": "Konfigurera GitHub-token som används för privata repositories och branch-uppslag.",
"github_token": "GitHub-token",
"github_api_url": "GitHub API-URL",
"webhook_secret": "Webhook-hemlighet",
"github_webhook_secret": "GitHub webhook-hemlighet",
"configured": "Konfigurerad",
"not_configured": "Inte konfigurerad",
"loaded_from": "Inläst från {variable}",
"set_below": "Ange {variable} nedan",
"private_repositories_prefix": "Privata repositories läses med serverns miljövariabel",
"private_repositories_or": "eller modulens konfigurationsvariabel",
"github_token_message": "Exempel: github_pat_... med åtkomst till de privata repositories som Release Manager distribuerar.",
"github_token_placeholder": "Lämna tomt för att behålla befintlig token",
"github_api_url_message": "Konfigurerad i ReleaseManager.github_api_url. Använd https://api.github.com om du inte använder GitHub Enterprise.",
"webhook_secret_message": "Valfritt; lämna tomt för att behålla befintlig hemlighet.",
"webhook_secret_placeholder": "Webhook HMAC-hemlighet",
"save": "Spara inställningar",
"back_to_integrations": "Tillbaka till integrationer",
"guide": {
"steps": {
"github_token": "GitHub-token",
"github_api_url": "GitHub API-URL",
"github_webhook_secret": "GitHub webhook secret",
"review": "Gennemgang"
},
"github_token_title": "Lägg till GitHub-token",
"github_token_description": "Release Manager använder denna token för att lista privata repositories, branches och commits innan ett deployment-mål sparas eller testas.",
"configure_this_in": "Konfigurera detta i",
"server_environment_variable": "Serverns miljövariabel",
"takes_precedence": "har företräde när den är satt.",
"recommended_access": "Rekommenderad åtkomst",
"recommended_access_description": "Fine-grained GitHub-token med Contents: read-åtkomst till varje release-repository.",
"github_api_url_title": "Lägg till GitHub API-URL",
"github_api_url_description": "Brug GitHub Cloud som standard, eller peg på REST API-base-URLen for en GitHub Enterprise Server-installation.",
"github_api_url_invalid": "Ange en fullständig HTTP- eller HTTPS-URL.",
"github_cloud": "GitHub Cloud",
"enterprise_example": "Enterprise-exempel",
"github_webhook_secret_title": "Lägg till GitHub webhook secret",
"github_webhook_secret_description": "Brug samme secret i GitHub repository-webhooks, så Release Manager kan verificere deployment-events, før de håndteres.",
"github_webhook_url": "GitHub webhook-URL:",
"store_shared_secret_in": "Spara den delade secret i",
"review_title": "Granska GitHub-konfiguration",
"review_description": "Gem værdierne, og brug derefter Integrationer til at vælge et privat repository, branch og specifik commit eller seneste commit før adgang testes.",
"ready": "Klar",
"needs_value": "Saknar värde"
}
},
"channel_unavailable": {
"kicker": "Release Manager",
"title": "Release-kanalen är inte klar",
"summary_prefix": "Ditt konto är tilldelat",
"summary_suffix": ", men kanalen saknar obligatorisk release-konfiguration.",
"release_bundle": "Release-bundle",
"frontend_version": "Frontend-version",
"api_version": "API-version",
"frontend_base_url": "Frontend-URL",
"api_base_url": "API-URL",
"frontend_entry": "Frontend-entry",
"release_runtime": "Release-runtime",
"checking_again": "Kontrollerar igen om {seconds}s",
"refresh_error": "Release-status kunde inte uppdateras. Nästa automatiska kontroll försöker igen.",
"ignore": "Ignorera de kommande 5 minuterna",
"check_again": "Kontrollera igen",
"logout": "Logga ut",
"base_image": "Bas-image"
},
"channel_switched": {
"kicker": "Release Manager",
"title": "Du är nu på {channel}",
"summary_prefix": "Ditt konto har tilldelats release-kanalen",
"summary_suffix": "Den här enheten kommer ihåg att du har sett detta meddelande.",
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"frontend_version": "Frontend-version",
"api_version": "API-version",
"assigned_channel": "Tilldelad kanal",
"current_app_image": "Nuvarande app-image",
"current_api": "Nuvarande API",
"base_image": "Bas-image",
"continue": "Fortsätt"
},
"channel_selector": {
"title": "Release-kanal",
"subtitle": "Välj vilken tilldelad release-kanal den här enheten ska använda.",
"sidebar_title": "Release",
"default": "Standard",
"ready": "Klar",
"unavailable": "Inte klar",
"release_bundle": "Release-bundle",
"frontend_version": "Frontend-version",
"api_version": "API-version",
"frontend_base_url": "Frontend-URL",
"api_base_url": "API-URL",
"frontend_entry": "Frontend-entry",
"release_runtime": "Release-runtime",
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"use_local_frontend": "Använd lokal frontend"
},
"common": {
"yes": "ja",
"no": "nej",
"off": "av"
},
"actions": {
"edit": "Redigera",
"rollback": "Rulla tillbaka",
"update": "Uppdatera",
"create": "Skapa",
"clear": "Rensa",
"assign": "Tilldela",
"remove": "Ta bort",
"test_access": "Testa åtkomst",
"deploy": "Deploy",
"redeploy": "Redeploy",
"promote": "Promota",
"enable": "Aktivera",
"search": "Sök",
"save_target": "Spara mål",
"delete": "Radera",
"back": "Tillbaka",
"next": "Nästa"
},
"tables": {
"channel": "Kanal",
"rollout": "Udrulning",
"frontend": "Frontend",
"api": "API",
"replay": "Replay",
"actions": "Åtgärder",
"module": "Modul",
"status": "Status",
"checked": "Kontrollerad",
"subject": "Emne",
"reason": "Orsak",
"expires": "Upphör",
"deployment": "Deployment",
"source": "Källa",
"started": "Startet",
"target": "Mål",
"coolify": "Coolify",
"auto": "Auto"
},
"values": {
"app": {
"frontend": "frontend",
"api": "api"
},
"capture_level": {
"metadata": "metadata",
"full_redacted": "helt redigerad"
},
"subject_type": {
"user": "användare",
"subuser": "medarbetare",
"customer": "kund",
"channel": "kanal"
},
"severity": {
"error": "fel",
"warning": "varning",
"info": "info"
},
"status": {
"ok": "ok",
"active": "aktiv",
"deployed": "deployad",
"stable": "stabil",
"enabled": "aktiverad",
"queued": "i kö",
"deploying": "deployar",
"metadata": "metadata",
"not_configured": "inte konfigurerad",
"warning": "varning",
"failed": "misslyckad",
"down": "nere",
"error": "fel",
"unknown": "okänd"
}
},
"autocomplete": {
"suggested_value": "Foreslået værdi",
"suggestion": "Forslag",
"use_typed_value": "Brug indtastet værdi",
"custom": "Tilpasset",
"api_url": "API-URL",
"frontend_url": "Frontend-URL",
"known_release_url": "Kendt release-URL",
"deploy_here_with_coolify": "Deploy {app} her med Coolify",
"prepare_coolify_target": "Forbered et Coolify-mål med HTTPS/SSL aktiveret",
"coolify_ssl": "Coolify SSL",
"github_repository": "GitHub-repository",
"owner_repository": "ejer/repository",
"git_branch": "Git-branch",
"deployment_branch": "Deployment-branch",
"github_commit": "GitHub-commit",
"git_commit": "Git-commit",
"use_specific_commit_sha": "Brug specifik commit-SHA",
"custom_commit": "Tilpasset commit",
"health_url": "Health-URL",
"release_health_check": "Release health check",
"coolify_service": "Coolify-service",
"service_uuid": "Service-UUID",
"known_coolify_service_uuid": "Kendt Coolify service-UUID",
"control_api": "Kontrol-API",
"release_manager_api_endpoint": "Release Manager API-endpoint",
"module": "Modul",
"timeline_module_key": "Timeline-modulnøgle"
},
"errors": {
"github_repositories": "Kunne ikke indlæse GitHub-repositories.",
"github_branches": "Kunne ikke indlæse GitHub-branches.",
"repository_branch_required": "Repository og branch er påkrævet før GitHub-adgang kan testes.",
"github_access_failed": "Test af GitHub repository-adgang fejlede."
},
"channels": {
"title": "Kanaler",
"subtitle": "Skapa och justera gradvisa release-kanaler.",
"rollout_percent": "{percent}% utrullning",
"already_configured": "Redan konfigurerad",
"slug": "Slug",
"slug_message": "Eksempel: canary",
"slug_placeholder": "slug",
"name": "Namn",
"name_message": "Visas för operatörer när de granskar en kanal.",
"name_placeholder": "Namn",
"rollout": "Utrullning",
"rollout_message": "0-100 procent av otilldelad trafik.",
"frontend_url": "Frontend-URL",
"frontend_url_message": "Eksempel: https://canary.example.test",
"frontend_url_placeholder": "Frontend-URL",
"no_matching_release_url": "Ingen matchande release-URL.",
"api_url": "API-URL",
"api_url_message": "Eksempel: https://api-canary.example.test",
"api_url_placeholder": "API-URL",
"no_matching_api_url": "Ingen matchande API-URL.",
"replay_capture": "Replay capture",
"replay_capture_message": "Metadata är säkrare för breda kanaler.",
"retention_days": "Lagringsdagar",
"retention_days_message": "1-365 dagar.",
"enabled": "Aktiverad",
"default_channel": "Standardkanal",
"replay_enabled": "Replay aktiverad",
"frontend_chip": "Frontend: {url}",
"api_chip": "API: {url}"
},
"assignments": {
"title": "Tilldelningar",
"subtitle": "Fäst användare, medarbetare eller kunder till release-kanaler.",
"subject": "Ämne",
"subject_message": "Sök efter användare, medarbetare eller kunder, eller skriv ett manuellt ämne som user:42.",
"subject_placeholder": "Sök eller skriv ämne",
"subject_empty": "Inga ämnen hittades",
"group_users": "Användare",
"group_subusers": "Medarbetare",
"group_customers": "Kunder",
"group_manual": "Manuell",
"manual_user": "Användare #{id}",
"manual_subuser": "Medarbetare #{id}",
"manual_customer": "Kund #{id}",
"manual_description": "Använd inmatat värde {subject}",
"subject_type": "Ämnestyp",
"subject_type_message": "Välj identitetstypen som ska fästas.",
"customer": "Kunde",
"customer_message": "Sök på kundnummer eller namn och välj sedan exakt kund.",
"customer_placeholder": "Sök kund",
"subject_id": "Ämnes-ID",
"subject_id_message": "Exempel: användar-id 42",
"subject_id_placeholder": "Ämnes-id",
"channel": "Kanal",
"channel_message": "Fästa ämnen hoppar över procentutrullningen.",
"reason": "Orsak",
"reason_message": "Exempel: canary-validering för kundsupport.",
"reason_placeholder": "Orsak",
"expires": "Upphör",
"expires_message": "Lämna tomt för ingen automatisk upphörning."
},
"deployments": {
"title": "Deployments",
"subtitle": "Starta, promota och inspektera release-deployments.",
"manual_deployment_record": "Manuel deployment-post",
"target": "Mål",
"target_message": "Välj ett sparat mål eller behåll manuella fält redigerbara.",
"select_target_or_manual": "Vælg mål eller manuel",
"channel": "Kanal",
"app": "App",
"repository": "Repository",
"repository_message": "Eksempel: truckwash/front-end-vue",
"repository_placeholder": "ejer/repo",
"branch": "Branch",
"branch_message": "Eksempel: master",
"branch_placeholder": "branch",
"commit_selection": "Commit-val",
"commit_selection_message": "Senaste slås upp som branchens head med konfigurerad GitHub-token.",
"latest_from_branch": "Senaste från branch",
"specific_commit": "Specifik commit",
"specific_commit_message": "Eksempel: feedface1234",
"commit_sha_placeholder": "commit sha",
"version_label": "Versionsetikett",
"version_label_message": "Eksempel: api-2026.05.19",
"version_label_placeholder": "versionsetikett",
"commit_prefix": "Commit: {commit}",
"test_access_tooltip": "Bekræft token-adgang til det valgte repository, branch og commit."
},
"replay": {
"title": "Replay",
"subtitle": "Aktivera riktad capture och gå igenom feltimelines steg för steg.",
"capture_channel": "Capture {channel}",
"target_type": "Måltype",
"target": "Mål",
"target_message": "Exempel: användar-id 42 eller kanal-slug canary.",
"target_placeholder": "Mål-id eller kanal-slug",
"channel_scope": "Kanalavgränsning",
"channel_scope_message": "Valgfrit; begrænser replay capture til en kanal.",
"no_channel_scope": "Ingen kanalavgränsning",
"capture_level": "Capture-niveau",
"expires": "Upphör",
"expires_message": "Lad feltet være tomt for manuel deaktivering.",
"trace_id": "Trace-ID",
"trace_id_message": "Eksempel: trace-canary-1",
"trace_id_placeholder": "Trace-id",
"channel": "Kanal",
"channel_placeholder": "Kanal",
"principal_id": "Principal-ID",
"principal_id_placeholder": "Principal-id",
"module": "Modul",
"module_placeholder": "Modul",
"severity": "Allvarlighetsgrad",
"any_severity": "Alla allvarlighetsgrader",
"no_timeline_events": "Ingen timeline-events matcher de aktuelle filtre."
},
"integrations": {
"title": "GitHub och Coolify",
"subtitle": "Koppla GitHub-repositories och branches till kanalspecifika Coolify-tjänster.",
"choose_repository": "Välj repository",
"add_health_url": "lägg till health-URL",
"github_token_not_configured": "GitHub-token er ikke konfigureret; private repositories kan ikke vises.",
"open_github_token_settings": "Öppna GitHub token-inställningar",
"channel": "Kanal",
"app": "App",
"repository": "Repository",
"repository_message": "Eksempel: truckwash/backend-php",
"repository_placeholder": "ejer/repo",
"branch": "Branch",
"branch_message": "Eksempel: release/canary",
"branch_placeholder": "branch",
"latest_prefix": "Seneste: {commit}",
"coolify_instance": "Coolify-instans",
"coolify_instance_message": "Lad feltet være tomt for manuelle deployment-poster.",
"no_coolify_instance": "Ingen Coolify-instans",
"coolify_instance_placeholder": "Coolify-instans-id",
"coolify_service_uuid": "Coolify service-UUID",
"coolify_service_uuid_message": "Vælg en eksisterende service eller indsæt en UUID.",
"coolify_service_uuid_placeholder": "Coolify service-UUID",
"health_url": "Health-URL",
"health_url_message": "Eksempel: https://api-canary.example.test/ping",
"health_url_placeholder": "Health-URL",
"ssl_domain": "Load balancer-domän",
"ssl_domain_message": "Måste vara en DNS-domän som routas till Coolify load balancern. Exempel: api-v2.truckwash.io",
"ssl_domain_placeholder": "Load balancer-domän",
"https_domain_for_coolify": "Domän som kontrolleras av load balancern",
"endpoint_mode": "Endpoint mode",
"endpoint_mode_message": "Use automatic gateway routing or manually override the public host and port.",
"endpoint_mode_auto": "Auto",
"endpoint_mode_manual": "Manual",
"manual_endpoint_host": "Manual host",
"manual_endpoint_host_message": "Public host shown in release previews when manual mode is selected.",
"manual_endpoint_host_placeholder": "api-v2.truckwash.io",
"manual_endpoint_port": "Manual public port",
"manual_endpoint_port_message": "Optional public port from 1 to 65535.",
"app_port": "App port",
"app_port_message": "Internal container port exposed to Coolify routing.",
"auto_gateway_endpoint": "Automatic gateway endpoint",
"pending_automatic_endpoint": "Automatic endpoint resolution pending",
"auto_deploy": "Auto deploy",
"auto_deploy_tooltip": "Opret automatisk deployments, når dette mål ændres.",
"coolify_ssl": "Coolify SSL",
"coolify_ssl_tooltip": "Bed Coolify om at oprette HTTPS for det konfigurerede domæne.",
"deploy_now": "Deploy nu",
"deploy_now_tooltip": "Start en deployment straks efter målet gemmes.",
"create_missing_service": "Skapa saknad tjänst",
"create_missing_service_tooltip": "Tillad Release Manager at oprette en manglende Coolify-service.",
"test_access_tooltip": "Bekræft, at den konfigurerede GitHub-token kan læse dette repository og branch."
}
}
}
}
@@ -0,0 +1,61 @@
{
"compat": {
"configuration": {
"release_manager": {
"integrations": {
"title": "GitHub och Coolify",
"subtitle": "Koppla GitHub-repositories och branches till kanalspecifika Coolify-tjänster.",
"choose_repository": "Välj repository",
"add_health_url": "lägg till health-URL",
"github_token_not_configured": "GitHub-token er ikke konfigureret; private repositories kan ikke vises.",
"open_github_token_settings": "Öppna GitHub token-inställningar",
"channel": "Kanal",
"app": "App",
"repository": "Repository",
"repository_message": "Eksempel: truckwash/backend-php",
"repository_placeholder": "ejer/repo",
"branch": "Branch",
"branch_message": "Eksempel: release/canary",
"branch_placeholder": "branch",
"latest_prefix": "Seneste: {commit}",
"coolify_instance": "Coolify-instans",
"coolify_instance_message": "Lad feltet være tomt for manuelle deployment-poster.",
"no_coolify_instance": "Ingen Coolify-instans",
"coolify_instance_placeholder": "Coolify-instans-id",
"coolify_service_uuid": "Coolify service-UUID",
"coolify_service_uuid_message": "Vælg en eksisterende service eller indsæt en UUID.",
"coolify_service_uuid_placeholder": "Coolify service-UUID",
"health_url": "Health-URL",
"health_url_message": "Eksempel: https://api-canary.example.test/ping",
"health_url_placeholder": "Health-URL",
"ssl_domain": "Load balancer-domän",
"ssl_domain_message": "Måste vara en DNS-domän som routas till Coolify load balancern. Exempel: api-v2.truckwash.io",
"ssl_domain_placeholder": "Load balancer-domän",
"https_domain_for_coolify": "Domän som kontrolleras av load balancern",
"endpoint_mode": "Endpoint mode",
"endpoint_mode_message": "Use automatic gateway routing or manually override the public host and port.",
"endpoint_mode_auto": "Auto",
"endpoint_mode_manual": "Manual",
"manual_endpoint_host": "Manual host",
"manual_endpoint_host_message": "Public host shown in release previews when manual mode is selected.",
"manual_endpoint_host_placeholder": "api-v2.truckwash.io",
"manual_endpoint_port": "Manual public port",
"manual_endpoint_port_message": "Optional public port from 1 to 65535.",
"app_port": "App port",
"app_port_message": "Internal container port exposed to Coolify routing.",
"auto_gateway_endpoint": "Automatic gateway endpoint",
"pending_automatic_endpoint": "Automatic endpoint resolution pending",
"auto_deploy": "Auto deploy",
"auto_deploy_tooltip": "Opret automatisk deployments, når dette mål ændres.",
"coolify_ssl": "Coolify SSL",
"coolify_ssl_tooltip": "Bed Coolify om at oprette HTTPS for det konfigurerede domæne.",
"deploy_now": "Deploy nu",
"deploy_now_tooltip": "Start en deployment straks efter målet gemmes.",
"create_missing_service": "Skapa saknad tjänst",
"create_missing_service_tooltip": "Tillad Release Manager at oprette en manglende Coolify-service.",
"test_access_tooltip": "Bekræft, at den konfigurerede GitHub-token kan læse dette repository og branch."
}
}
}
}
}
@@ -0,0 +1,454 @@
{
"compat": {
"configuration": {
"release_manager": {
"title": "Release Manager",
"subtitle": "Gradvisa API- och Front-End-versioner",
"channel_names": {
"stable": "Stabil",
"canary": "Canary",
"internal": "Intern"
},
"channel_descriptions": {
"stable": "Standardkanal för produktion.",
"canary": "Tidig produktionsvalideringskanal.",
"internal": "Intern kanal för personal och superanvändarvalidering."
},
"control_api": {
"title": "Kontroll-API",
"tooltip": "Release Manager-åtgärder skickas till detta API. Använd produktions-API:t om du inte testar en staging-backend.",
"example": "Exempel: https://api.truckwash.io:4433",
"endpoint_label": "API-endpoint",
"endpoint_message": "Ändra detta endast när Release Manager-endpoints finns på mål-API:t.",
"endpoint_aria": "Release Manager kontroll-API URL",
"use_tooltip": "Läs in release-data från detta API",
"use": "Använd",
"reset_tooltip": "Gå tillbaka till standard kontroll-API",
"reset": "Återställ",
"known_endpoints": "Kända kontroll-API-endpoints"
},
"tabs": {
"overview": {
"label": "Översikt",
"description": "Kanalhälsa, installationsstatus och senaste release-läge."
},
"channels": {
"label": "Kanaler",
"description": "Skapa stabila, canary- och riktade kanaler med rollout-gränser."
},
"assignments": {
"label": "Tilldelningar",
"description": "Koppla användare, underanvändare eller kunder till en specifik release-kanal."
},
"deployments": {
"label": "Utrullningar",
"description": "Starta utrullningar och promovera lyckade byggen."
},
"replay": {
"label": "Replay",
"description": "Aktivera riktad insamling och sök i release-tidslinjehändelser."
},
"integrations": {
"label": "Integrationer",
"description": "Anslut GitHub-repositories, branches och Coolify-tjänster."
},
"settings": {
"label": "Inställningar",
"description": "Konfigurera Release Managers GitHub-åtkomst och webhook-inställningar."
}
},
"loading": {
"summary": "Laddar Release Manager-data...",
"refreshing_summary": "Uppdaterar Release Manager-data...",
"summary_detail": "Release-status, kanaler, deployments och servicehalsa laddas.",
"channels": "Laddar release-kanaler...",
"channels_detail": "Kanalvyer och release-beroenden laddas.",
"assignments": "Laddar release-tilldelningar...",
"deployments": "Laddar release-deployments...",
"operations": "Laddar release-operationer...",
"data_services": "Laddar release-datatjanster...",
"integrations": "Laddar release-integrationer...",
"settings": "Laddar Release Manager-installningar...",
"github_repositories": "Laddar GitHub-repositories...",
"timeline_sessions": "Laddar release-tidslinjesessioner...",
"timeline_events": "Laddar release-tidslinjehandelser...",
"refreshing_timeline": "Uppdaterar release-tidslinje..."
},
"setup": {
"channels": "Kanaler",
"targets": "GitHub- och Coolify-mål",
"assignments": "Pilottilldelningar",
"deployments": "Första utrullningen",
"replay": "Replay-insamling"
},
"stats": {
"channels": "Kanaler",
"targets": "Mål",
"deployments": "Utrullningar",
"timeline_events": "Tidslinjehändelser"
},
"overview": {
"title": "Översikt",
"subtitle": "Aktuell kanalhälsa, release-aktivitet och modulstatus.",
"guided_setup": "Guidad installation",
"next_step": "Nästa: {step}",
"ready": "Release Manager är klar för daglig drift.",
"add_suggested_channel": "Lägg till föreslagen kanal",
"module_health_empty": "Modulhälsosnapshots visas när probes har registrerats."
},
"settings": {
"title": "Release Manager-inställningar",
"subtitle": "Konfigurera GitHub-token som används för privata repositories och branch-uppslag.",
"github_token": "GitHub-token",
"github_api_url": "GitHub API-URL",
"webhook_secret": "Webhook-hemlighet",
"github_webhook_secret": "GitHub webhook-hemlighet",
"configured": "Konfigurerad",
"not_configured": "Inte konfigurerad",
"loaded_from": "Inläst från {variable}",
"set_below": "Ange {variable} nedan",
"private_repositories_prefix": "Privata repositories läses med serverns miljövariabel",
"private_repositories_or": "eller modulens konfigurationsvariabel",
"github_token_message": "Exempel: github_pat_... med åtkomst till de privata repositories som Release Manager distribuerar.",
"github_token_placeholder": "Lämna tomt för att behålla befintlig token",
"github_api_url_message": "Konfigurerad i ReleaseManager.github_api_url. Använd https://api.github.com om du inte använder GitHub Enterprise.",
"webhook_secret_message": "Valfritt; lämna tomt för att behålla befintlig hemlighet.",
"webhook_secret_placeholder": "Webhook HMAC-hemlighet",
"save": "Spara inställningar",
"back_to_integrations": "Tillbaka till integrationer",
"guide": {
"steps": {
"github_token": "GitHub-token",
"github_api_url": "GitHub API-URL",
"github_webhook_secret": "GitHub webhook secret",
"review": "Gennemgang"
},
"github_token_title": "Lägg till GitHub-token",
"github_token_description": "Release Manager använder denna token för att lista privata repositories, branches och commits innan ett deployment-mål sparas eller testas.",
"configure_this_in": "Konfigurera detta i",
"server_environment_variable": "Serverns miljövariabel",
"takes_precedence": "har företräde när den är satt.",
"recommended_access": "Rekommenderad åtkomst",
"recommended_access_description": "Fine-grained GitHub-token med Contents: read-åtkomst till varje release-repository.",
"github_api_url_title": "Lägg till GitHub API-URL",
"github_api_url_description": "Brug GitHub Cloud som standard, eller peg på REST API-base-URLen for en GitHub Enterprise Server-installation.",
"github_api_url_invalid": "Ange en fullständig HTTP- eller HTTPS-URL.",
"github_cloud": "GitHub Cloud",
"enterprise_example": "Enterprise-exempel",
"github_webhook_secret_title": "Lägg till GitHub webhook secret",
"github_webhook_secret_description": "Brug samme secret i GitHub repository-webhooks, så Release Manager kan verificere deployment-events, før de håndteres.",
"github_webhook_url": "GitHub webhook-URL:",
"store_shared_secret_in": "Spara den delade secret i",
"review_title": "Granska GitHub-konfiguration",
"review_description": "Gem værdierne, og brug derefter Integrationer til at vælge et privat repository, branch og specifik commit eller seneste commit før adgang testes.",
"ready": "Klar",
"needs_value": "Saknar värde"
}
},
"channel_unavailable": {
"kicker": "Release Manager",
"title": "Release-kanalen är inte klar",
"summary_prefix": "Ditt konto är tilldelat",
"summary_suffix": ", men kanalen saknar obligatorisk release-konfiguration.",
"release_bundle": "Release-bundle",
"frontend_version": "Frontend-version",
"api_version": "API-version",
"frontend_base_url": "Frontend-URL",
"api_base_url": "API-URL",
"frontend_entry": "Frontend-entry",
"release_runtime": "Release-runtime",
"checking_again": "Kontrollerar igen om {seconds}s",
"refresh_error": "Release-status kunde inte uppdateras. Nästa automatiska kontroll försöker igen.",
"ignore": "Ignorera de kommande 5 minuterna",
"check_again": "Kontrollera igen",
"logout": "Logga ut",
"base_image": "Bas-image"
},
"channel_switched": {
"kicker": "Release Manager",
"title": "Du är nu på {channel}",
"summary_prefix": "Ditt konto har tilldelats release-kanalen",
"summary_suffix": "Den här enheten kommer ihåg att du har sett detta meddelande.",
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"frontend_version": "Frontend-version",
"api_version": "API-version",
"assigned_channel": "Tilldelad kanal",
"current_app_image": "Nuvarande app-image",
"current_api": "Nuvarande API",
"base_image": "Bas-image",
"continue": "Fortsätt"
},
"channel_selector": {
"title": "Release-kanal",
"subtitle": "Välj vilken tilldelad release-kanal den här enheten ska använda.",
"sidebar_title": "Release",
"default": "Standard",
"ready": "Klar",
"unavailable": "Inte klar",
"release_bundle": "Release-bundle",
"frontend_version": "Frontend-version",
"api_version": "API-version",
"frontend_base_url": "Frontend-URL",
"api_base_url": "API-URL",
"frontend_entry": "Frontend-entry",
"release_runtime": "Release-runtime",
"bundle": "Bundle",
"frontend": "Frontend",
"api": "API",
"use_local_frontend": "Använd lokal frontend",
"switch_error": "Release channel could not be switched. The previous channel is still active."
},
"common": {
"yes": "ja",
"no": "nej",
"off": "av"
},
"actions": {
"edit": "Redigera",
"rollback": "Rulla tillbaka",
"update": "Uppdatera",
"create": "Skapa",
"clear": "Rensa",
"assign": "Tilldela",
"remove": "Ta bort",
"test_access": "Testa åtkomst",
"deploy": "Deploy",
"redeploy": "Redeploy",
"promote": "Promota",
"enable": "Aktivera",
"search": "Sök",
"save_target": "Spara mål",
"delete": "Radera",
"back": "Tillbaka",
"next": "Nästa",
"publish_release": "Publish release"
},
"tables": {
"channel": "Kanal",
"rollout": "Udrulning",
"frontend": "Frontend",
"api": "API",
"replay": "Replay",
"actions": "Åtgärder",
"module": "Modul",
"status": "Status",
"checked": "Kontrollerad",
"subject": "Emne",
"reason": "Orsak",
"expires": "Upphör",
"deployment": "Deployment",
"source": "Källa",
"started": "Startet",
"target": "Mål",
"coolify": "Coolify",
"auto": "Auto"
},
"values": {
"app": {
"frontend": "frontend",
"api": "api"
},
"capture_level": {
"metadata": "metadata",
"full_redacted": "helt redigerad"
},
"subject_type": {
"user": "användare",
"subuser": "medarbetare",
"customer": "kund",
"channel": "kanal"
},
"severity": {
"error": "fel",
"warning": "varning",
"info": "info"
},
"status": {
"ok": "ok",
"active": "aktiv",
"deployed": "deployad",
"stable": "stabil",
"enabled": "aktiverad",
"queued": "i kö",
"deploying": "deployar",
"metadata": "metadata",
"not_configured": "inte konfigurerad",
"warning": "varning",
"failed": "misslyckad",
"down": "nere",
"error": "fel",
"unknown": "okänd"
}
},
"autocomplete": {
"suggested_value": "Foreslået værdi",
"suggestion": "Forslag",
"use_typed_value": "Brug indtastet værdi",
"custom": "Tilpasset",
"api_url": "API-URL",
"frontend_url": "Frontend-URL",
"known_release_url": "Kendt release-URL",
"deploy_here_with_coolify": "Deploy {app} her med Coolify",
"prepare_coolify_target": "Forbered et Coolify-mål med HTTPS/SSL aktiveret",
"coolify_ssl": "Coolify SSL",
"github_repository": "GitHub-repository",
"owner_repository": "ejer/repository",
"git_branch": "Git-branch",
"deployment_branch": "Deployment-branch",
"github_commit": "GitHub-commit",
"git_commit": "Git-commit",
"use_specific_commit_sha": "Brug specifik commit-SHA",
"custom_commit": "Tilpasset commit",
"health_url": "Health-URL",
"release_health_check": "Release health check",
"coolify_service": "Coolify-service",
"service_uuid": "Service-UUID",
"known_coolify_service_uuid": "Kendt Coolify service-UUID",
"control_api": "Kontrol-API",
"release_manager_api_endpoint": "Release Manager API-endpoint",
"module": "Modul",
"timeline_module_key": "Timeline-modulnøgle"
},
"errors": {
"github_repositories": "Kunne ikke indlæse GitHub-repositories.",
"github_branches": "Kunne ikke indlæse GitHub-branches.",
"repository_branch_required": "Repository og branch er påkrævet før GitHub-adgang kan testes.",
"github_access_failed": "Test af GitHub repository-adgang fejlede."
},
"channels": {
"title": "Kanaler",
"subtitle": "Skapa och justera gradvisa release-kanaler.",
"rollout_percent": "{percent}% utrullning",
"already_configured": "Redan konfigurerad",
"slug": "Slug",
"slug_message": "Eksempel: canary",
"slug_placeholder": "slug",
"name": "Namn",
"name_message": "Visas för operatörer när de granskar en kanal.",
"name_placeholder": "Namn",
"rollout": "Utrullning",
"rollout_message": "0-100 procent av otilldelad trafik.",
"frontend_url": "Frontend-URL",
"frontend_url_message": "Eksempel: https://canary.example.test",
"frontend_url_placeholder": "Frontend-URL",
"no_matching_release_url": "Ingen matchande release-URL.",
"api_url": "API-URL",
"api_url_message": "Eksempel: https://api-canary.example.test",
"api_url_placeholder": "API-URL",
"no_matching_api_url": "Ingen matchande API-URL.",
"replay_capture": "Replay capture",
"replay_capture_message": "Metadata är säkrare för breda kanaler.",
"retention_days": "Lagringsdagar",
"retention_days_message": "1-365 dagar.",
"enabled": "Aktiverad",
"default_channel": "Standardkanal",
"replay_enabled": "Replay aktiverad",
"frontend_chip": "Frontend: {url}",
"api_chip": "API: {url}"
},
"assignments": {
"title": "Tilldelningar",
"subtitle": "Fäst användare, medarbetare eller kunder till release-kanaler.",
"subject": "Ämne",
"subject_message": "Sök efter användare, medarbetare eller kunder, eller skriv ett manuellt ämne som user:42.",
"subject_placeholder": "Sök eller skriv ämne",
"subject_empty": "Inga ämnen hittades",
"group_users": "Användare",
"group_subusers": "Medarbetare",
"group_customers": "Kunder",
"group_manual": "Manuell",
"manual_user": "Användare #{id}",
"manual_subuser": "Medarbetare #{id}",
"manual_customer": "Kund #{id}",
"manual_description": "Använd inmatat värde {subject}",
"subject_type": "Ämnestyp",
"subject_type_message": "Välj identitetstypen som ska fästas.",
"customer": "Kunde",
"customer_message": "Sök på kundnummer eller namn och välj sedan exakt kund.",
"customer_placeholder": "Sök kund",
"subject_id": "Ämnes-ID",
"subject_id_message": "Exempel: användar-id 42",
"subject_id_placeholder": "Ämnes-id",
"channel": "Kanal",
"channel_message": "Fästa ämnen hoppar över procentutrullningen.",
"reason": "Orsak",
"reason_message": "Exempel: canary-validering för kundsupport.",
"reason_placeholder": "Orsak",
"expires": "Upphör",
"expires_message": "Lämna tomt för ingen automatisk upphörning."
},
"deployments": {
"title": "Deployments",
"subtitle": "Starta, promota och inspektera release-deployments.",
"manual_deployment_record": "Manuel deployment-post",
"target": "Mål",
"target_message": "Välj ett sparat mål eller behåll manuella fält redigerbara.",
"select_target_or_manual": "Vælg mål eller manuel",
"channel": "Kanal",
"app": "App",
"repository": "Repository",
"repository_message": "Eksempel: truckwash/front-end-vue",
"repository_placeholder": "ejer/repo",
"branch": "Branch",
"branch_message": "Eksempel: master",
"branch_placeholder": "branch",
"commit_selection": "Commit-val",
"commit_selection_message": "Senaste slås upp som branchens head med konfigurerad GitHub-token.",
"latest_from_branch": "Senaste från branch",
"specific_commit": "Specifik commit",
"specific_commit_message": "Eksempel: feedface1234",
"commit_sha_placeholder": "commit sha",
"version_label": "Versionsetikett",
"version_label_message": "Eksempel: api-2026.05.19",
"version_label_placeholder": "versionsetikett",
"commit_prefix": "Commit: {commit}",
"test_access_tooltip": "Bekræft token-adgang til det valgte repository, branch og commit."
},
"replay": {
"title": "Replay",
"subtitle": "Aktivera riktad capture och gå igenom feltimelines steg för steg.",
"capture_channel": "Capture {channel}",
"target_type": "Måltype",
"target": "Mål",
"target_message": "Exempel: användar-id 42 eller kanal-slug canary.",
"target_placeholder": "Mål-id eller kanal-slug",
"channel_scope": "Kanalavgränsning",
"channel_scope_message": "Valgfrit; begrænser replay capture til en kanal.",
"no_channel_scope": "Ingen kanalavgränsning",
"capture_level": "Capture-niveau",
"expires": "Upphör",
"expires_message": "Lad feltet være tomt for manuel deaktivering.",
"trace_id": "Trace-ID",
"trace_id_message": "Eksempel: trace-canary-1",
"trace_id_placeholder": "Trace-id",
"channel": "Kanal",
"channel_placeholder": "Kanal",
"principal_id": "Principal-ID",
"principal_id_placeholder": "Principal-id",
"module": "Modul",
"module_placeholder": "Modul",
"severity": "Allvarlighetsgrad",
"any_severity": "Alla allvarlighetsgrader",
"no_timeline_events": "Ingen timeline-events matcher de aktuelle filtre."
},
"status": {
"confirm_issue_action": "Run this Release Manager action? It can change deployment state and will be audited.",
"choose_bundle_prompt": "Enter the bundle id to set for this channel.",
"impact": "Impact",
"cause": "Cause",
"automated_fix": "Automated fix",
"manual_fallback": "Manual fallback",
"related_deployment": "Related deployment",
"recent_result": "Recent result",
"no_automated_action": "No automated action available.",
"deployment": "Deployment",
"target": "Target",
"coolify_target": "Coolify target",
"service_set": "Service set"
}
}
}
}
}
@@ -863,6 +863,14 @@ const selectedSimulatorVehicleTypeRow = computed(() => {
const selectedSimulatorVehicleTypeId = computed(() => (
selectedSimulatorVehicleTypeRow.value ? parseNullableInt(selectedSimulatorVehicleTypeRow.value.id) : null
));
const selectedSimulatorVehicleTypeScopeId = computed(() => {
const selectedRow = selectedSimulatorVehicleTypeRow.value;
if (!selectedRow) {
return null;
}
return firstPositiveInt(selectedRow.product, selectedRow.product_id, selectedRow.id);
});
const simulatorScopeSummary = computed(() => ({
lane: selectedSimulatorLaneId.value ? labelFor("lanes", selectedSimulatorLaneId.value) : "Select lane",
vehicleType:
@@ -877,7 +885,7 @@ const pathOutcomesRequestPayload = computed(() => {
return {
department: departmentId.value,
lane_id: selectedSimulatorLaneId.value,
vehicle_type_id: selectedSimulatorVehicleTypeId.value,
vehicle_type_id: selectedSimulatorVehicleTypeScopeId.value,
config_source: simulatorForm.value.config_source || "draft",
hardware_mode: hardwareMode,
include_hardware: hardwareMode !== "none",
@@ -1570,7 +1578,7 @@ const pathVerificationDynamicImageUrl = computed(() => {
dynamicImageId,
buttons: pathVerificationDynamicImageButtons.value,
currentStep: 0,
vehicleTypeId: selectedSimulatorVehicleTypeId.value,
vehicleTypeId: selectedSimulatorVehicleTypeScopeId.value,
thumbPosition: pathVerificationDynamicImageThumbPosition.value,
});
});
@@ -1961,7 +1969,7 @@ const savePathEditorPath = async () => {
previous_path_key: pathEditorForm.value.previous_path_key || undefined,
scope: {
lane_id: parseNullableInt(selectedSimulatorLaneId.value),
vehicle_type_id: parseNullableInt(selectedSimulatorVehicleTypeId.value),
vehicle_type_id: parseNullableInt(selectedSimulatorVehicleTypeScopeId.value),
machine_type_id:
parseNullableInt(filters.value.machine_type_id) ||
parseNullableInt(selectedSimulatorLaneRow.value?.machine_type_id),
@@ -3087,7 +3095,7 @@ const inspectorTaskPreviewVehicleTypeId = computed(() =>
selectedRaw.value?.vehicle_type_id,
inspectorForm.value?.product,
selectedRaw.value?.product,
selectedSimulatorVehicleTypeId.value
selectedSimulatorVehicleTypeScopeId.value
)
);
@@ -3629,7 +3637,7 @@ const simulatorResolvedLaneId = computed(() =>
const simulatorResolvedVehicleTypeId = computed(() =>
parseNullableInt(
selectedSimulatorVehicleTypeId.value ??
selectedSimulatorVehicleTypeScopeId.value ??
resolvedSimulatorVehicleTypeId.value ??
simulatorResult.value?.vehicle?.type ??
simulatorDebug.value?.parameters?.vehicle_type_id
@@ -4887,7 +4895,7 @@ const buildSimulatorPayload = () => {
.map(([questionId, value]) => ({ question_id: parseIntOrZero(questionId), value }));
const hardwareMode = simulatorForm.value.hardware_mode || (hasVirtualHardware.value ? "studio" : "real");
const laneId = parseIntOrZero(selectedSimulatorLaneId.value);
const vehicleTypeId = selectedSimulatorVehicleTypeId.value;
const vehicleTypeId = selectedSimulatorVehicleTypeScopeId.value;
if (laneId <= 0 || !vehicleTypeId) {
return null;
}
@@ -54,9 +54,12 @@ const isVehicleStepNextLoading = ref(false);
const hasStartFormUserInput = ref(false);
const shouldRestoreServerActiveWash = ref(false);
const isRestoringServerActiveWash = ref(false);
const isSyncingActiveWash = ref(false);
const MIN_FINISHING_SCREEN_MS = 250;
const RECENT_COMPLETED_WASH_KEY = "mywash_recent_completed_v1";
const RECENT_COMPLETED_WASH_SUPPRESSION_MS = 10 * 60 * 1000;
const ACTIVE_WASH_REFRESH_MS = 5 * 1000;
const WASH_START_SERVER_SYNC_GRACE_MS = 10 * 1000;
const normalizePositiveInteger = (value: any) => {
const parsed = parseInt(String(value ?? ""), 10);
@@ -374,6 +377,7 @@ const completeGuidedWash = async () => {
};
const unregisterBeforeUnload = ref<null | (() => void)>(null);
const activeWashRefreshInterval = ref<ReturnType<typeof window.setInterval> | null>(null);
const registrationOptions = computed(() =>
customerVehicles.value
@@ -468,11 +472,11 @@ const vehicleStepGuidanceKey = computed(() => {
}
if (!normalizeLicensePlate(licensePlateInput.value)) {
return "self_wash.vehicle_step_missing_registration";
return ""; //"self_wash.vehicle_step_missing_registration";
}
if ((availableProductIds.value || []).length > 0 && !hasAllowedVehicleTypeSelection.value) {
return "self_wash.vehicle_step_missing_vehicle_type";
return ""; //"self_wash.vehicle_step_missing_vehicle_type";
}
return null;
@@ -505,12 +509,7 @@ const questionReviewStateKey = computed(() => {
return "";
}
return [
normalizeLicensePlate(licensePlateInput.value),
normalizeLaneId(radioLaneOption.value) ?? "",
vehicleTypeSelect.value ?? "",
visibleQuestionIds,
].join("|");
return [normalizeLicensePlate(licensePlateInput.value), vehicleTypeSelect.value ?? "", visibleQuestionIds].join("|");
});
const hasConfirmedCurrentQuestionReview = computed(
@@ -893,6 +892,111 @@ const scheduleServerActiveWashRestore = (delayMs = 0) => {
}, delayMs);
};
const clearLocalActiveWashFromServer = () => {
const completedLaneId = washLaneId.value;
markRecentlyCompletedWash(completedLaneId, licensePlateInput.value, getNumericCustomerNumber());
completedDurationMs.value = washStartTime.value ? now.value - washStartTime.value : 0;
currentStep.value = steps.COMPLETED;
washInProgress.value = false;
washLaneId.value = null;
washStartTime.value = null;
shouldRestoreServerActiveWash.value = false;
stopElapsedTimer();
clearProgress();
resetGuidedWashStep();
};
const syncActiveWashWithServer = async () => {
if (isSyncingActiveWash.value || !washInProgress.value || !washLaneId.value) {
return;
}
const laneId = normalizeLaneId(washLaneId.value);
if (!laneId) {
clearLocalActiveWashFromServer();
return;
}
isSyncingActiveWash.value = true;
try {
const response = await SessionUser.request("/modules/self-serve/lane/wash/in-progress", "GET", {
lane_id: laneId,
});
const details = unwrapApiData(response);
if (!Object.prototype.hasOwnProperty.call(details || {}, "in_progress")) {
return;
}
const customerNumber = getNumericCustomerNumber();
const serverCustomerNumber = normalizePositiveInteger(
details?.session?.customer_number ?? details?.customer?.customer_number
);
const serverStillMatchesCurrentWash =
!!details?.in_progress && (!customerNumber || !serverCustomerNumber || serverCustomerNumber === customerNumber);
if (!serverStillMatchesCurrentWash || isRecentlyCompletedActiveWash({ details, laneId })) {
const isWithinStartGracePeriod =
washStartTime.value && Date.now() - washStartTime.value < WASH_START_SERVER_SYNC_GRACE_MS;
if (isWithinStartGracePeriod && !isRecentlyCompletedActiveWash({ details, laneId })) {
return;
}
clearLocalActiveWashFromServer();
return;
}
const session = details?.session || {};
const vehicle = details?.vehicle || {};
const serverReg = normalizeLicensePlate(session?.reg ?? vehicle?.reg);
if (serverReg) {
licensePlateInput.value = serverReg;
}
applyEffectiveCustomerNumberInput(session?.customer_number ?? details?.customer?.customer_number ?? customerNumber);
vehicleTypeSelect.value =
normalizePositiveInteger(session?.vehicle_type_id ?? vehicle?.type) ?? vehicleTypeSelect.value;
radioWashType.value = session?.machine_relay_enabled ? "Machine" : radioWashType.value;
washStartTime.value =
parseServerDateTimeMs(session?.wash_started_at) ??
parseServerDateTimeMs(session?.machine_start_triggered_at) ??
parseServerDateTimeMs(session?.machine_relay_enabled_at) ??
washStartTime.value;
const summaryParams: Record<string, any> = session?.id
? { session_id: session.id }
: { lane_id: laneId, reg: normalizeLicensePlate(licensePlateInput.value) };
const selectedVehicleTypeId = normalizePositiveInteger(vehicleTypeSelect.value);
if (selectedVehicleTypeId) {
summaryParams.vehicle_type = selectedVehicleTypeId;
}
await fetchWashSummary(summaryParams, false);
saveProgress("serverActiveWashRefresh");
} catch (error) {
console.warn("Failed to refresh active self-serve wash:", error);
} finally {
isSyncingActiveWash.value = false;
}
};
const stopActiveWashRefresh = () => {
if (activeWashRefreshInterval.value) {
window.clearInterval(activeWashRefreshInterval.value);
activeWashRefreshInterval.value = null;
}
};
const startActiveWashRefresh = () => {
stopActiveWashRefresh();
if (!washInProgress.value || !washLaneId.value) {
return;
}
syncActiveWashWithServer();
activeWashRefreshInterval.value = window.setInterval(() => {
syncActiveWashWithServer();
}, ACTIVE_WASH_REFRESH_MS);
};
const retrySelfServeData = async () => {
if (isSelfServeRetrying.value) {
return;
@@ -979,6 +1083,29 @@ const onVehicleStepNext = async () => {
}
};
const onPreviousStep = (fallbackPrevious: { action?: () => void } | null = null) => {
if (washInProgress.value || currentStep.value === steps.COMPLETED) {
return;
}
if (currentStep.value === steps.QUESTIONS) {
currentStep.value = steps.VEHICLE;
return;
}
if (currentStep.value === steps.SELECT_LANE) {
currentStep.value = visibleQuestions.value.length > 0 ? steps.QUESTIONS : steps.VEHICLE;
return;
}
if (currentStep.value === steps.TASKS) {
currentStep.value = steps.SELECT_LANE;
return;
}
fallbackPrevious?.action?.();
};
const onToggleTask = (taskId: number, value: boolean) => {
completedTasks.value = {
...completedTasks.value,
@@ -1071,6 +1198,7 @@ onUnmounted(() => {
}
stopAutoRefresh();
stopActiveWashRefresh();
markDestroying();
setShowFooterInContent(true);
});
@@ -1198,6 +1326,15 @@ watch(
{ deep: true }
);
watch([() => washInProgress.value, () => washLaneId.value], ([inProgress]) => {
if (inProgress) {
startActiveWashRefresh();
return;
}
stopActiveWashRefresh();
});
watch(
() => nearestDepartment.value,
(newValue) => {
@@ -1219,11 +1356,7 @@ watch(
(newLaneId) => {
if (newLaneId && newLaneId !== "Any" && !isRestoring.value) {
fetchSelfServeData().then(() => {
if (
(!allVisibleQuestionsAnswered.value || shouldReturnToQuestionsForReview.value) &&
!washInProgress.value &&
currentStep.value > steps.QUESTIONS
) {
if (!allVisibleQuestionsAnswered.value && !washInProgress.value && currentStep.value > steps.QUESTIONS) {
currentStep.value = steps.QUESTIONS;
}
});
@@ -1513,7 +1646,7 @@ watch(
icon-left="arrow-left"
data-testid="self-serve-nav-previous"
:disabled="previous.disabled || currentStep === steps.COMPLETED || washInProgress"
@click.prevent="previous.action"
@click.prevent="onPreviousStep(previous)"
>
{{ $t("common.previous") }}
</b-button>
+12 -3
View File
@@ -383,6 +383,9 @@ const reviewedNearDuplicatePathPatterns = [
/^user_dashboard\./,
];
const isGeneratedCompatibilityTemplate = (entry: StringEntry): boolean =>
entry.key.startsWith("templates.generated.compat.");
const isReviewedNearDuplicateGroup = (entries: StringEntry[]): boolean => {
const caseOnlySignatures = new Set(entries.map((entry) => normalizeCaseOnlyPhrase(entry.value)));
if (caseOnlySignatures.size === 1) {
@@ -666,7 +669,9 @@ test.describe("i18n v2 catalog integrity", () => {
const rawLocale = readRawLocale(locale, "v2");
const tokenCounts = new Map<string, number>();
for (const entry of flattenStringEntries(rawLocale).filter((entry) => !entry.key.startsWith("words."))) {
for (const entry of flattenStringEntries(rawLocale).filter(
(entry) => !entry.key.startsWith("words.") && !isGeneratedCompatibilityTemplate(entry)
)) {
for (const token of collectAuditedWordTokens(entry.value)) {
tokenCounts.set(token, (tokenCounts.get(token) ?? 0) + 1);
}
@@ -772,7 +777,9 @@ test.describe("i18n v2 catalog integrity", () => {
test("prevents duplicate raw v2 phrases outside linked compatibility aliases", () => {
for (const locale of ACTIVE_LOCALES) {
const entries = flattenStringEntries(readLocale(locale, "v2")).filter((entry) => !isLinkedMessage(entry.value));
const entries = flattenStringEntries(readLocale(locale, "v2")).filter(
(entry) => !isLinkedMessage(entry.value) && !isGeneratedCompatibilityTemplate(entry)
);
const duplicateGroups = [...groupBy(entries, (entry) => normalizeExactPhrase(entry.value)).entries()]
.filter(([phrase, group]) => phrase.length > 0 && group.length > 1)
.map(
@@ -787,7 +794,9 @@ test.describe("i18n v2 catalog integrity", () => {
const unexpectedGroups: string[] = [];
for (const locale of ACTIVE_LOCALES) {
const entries = flattenStringEntries(readLocale(locale, "v2")).filter((entry) => !isLinkedMessage(entry.value));
const entries = flattenStringEntries(readLocale(locale, "v2")).filter(
(entry) => !isLinkedMessage(entry.value) && !isGeneratedCompatibilityTemplate(entry)
);
const grouped = groupBy(
entries,
(entry) => `${normalizeNearDuplicatePhrase(entry.value)}::${placeholderSignature(entry.value)}`
+47
View File
@@ -3061,6 +3061,53 @@ test.describe("All-in-one self-serve studio", () => {
await expect(page.getByTestId("studio-path-editor-answer-12-yes")).toHaveCount(0);
});
test("uses product scoped vehicle ids when Roskilde vehicle rows differ from products", async ({ page }) => {
const graph = buildStudioGraph();
graph.lookups.vehicle_types = graph.lookups.vehicle_types.map((vehicleType) => ({
...vehicleType,
id: Number(vehicleType.id) === 2 ? 202 : 808,
}));
graph.lookups.labels.vehicle_types = { 202: "Forvogn", 808: "Bus" };
graph.simulator_defaults.vehicle_type_id = 202;
const captured = {
graphSaves: [],
layouts: [],
simulations: [],
simulationDelays: [],
pathOutcomes: [],
dynamicImages: [],
gatewayActions: [],
virtualHardware: [],
rollbacks: [],
published: 0,
};
await installStudioRoutes(page, graph, captured);
await page.goto("/admin/6/modules/self-serve/studio?lane_id=7&vehicle_type_id=2", {
waitUntil: "domcontentloaded",
timeout: 90_000,
});
await expect(page.getByTestId("self-serve-studio")).toBeVisible({ timeout: 30_000 });
await page.getByTestId("studio-panel-pathEditor").click();
await expect(page.getByTestId("studio-path-cases")).toContainText("Allowed", { timeout: 15_000 });
await expect(page.getByTestId("studio-path-verification-board")).toContainText("Forvogn");
await expect.poll(() => captured.pathOutcomes.at(-1)?.vehicle_type_id).toBe(2);
await page.getByTestId("studio-path-editor-save").click();
await expect
.poll(
() =>
captured.graphSaves.findLast(
(save) => save.operations?.[0]?.action === "upsert_path" && save.operations?.[0]?.entity === "path"
)?.operations?.[0]?.data?.scope?.vehicle_type_id
)
.toBe(2);
await page.getByTestId("studio-path-case-path-1").getByRole("button", { name: "Open in simulator" }).click();
await expect(page.getByTestId("studio-simulator-workspace")).toBeVisible();
await expect.poll(() => captured.simulations.at(-1)?.vehicle_type_id).toBe(2);
});
test("creates a scoped question from the path editor without leaving the panel", async ({ page }) => {
const graph = buildStudioGraph();
const captured = {
+57
View File
@@ -1280,4 +1280,61 @@ describe("MyWashStart", () => {
"display: none"
);
});
it("clears restored in-progress state when active wash refresh says the lane is no longer in progress", async () => {
mocks.restoredProgressPayload = {
washInProgress: true,
washLaneId: 7,
washStartTime: Date.now() - 30_000,
licensePlateInput: "AB12345",
vehicleTypeSelect: 2,
radioWashType: "Manual",
radioLaneOption: 7,
customerNumberInput: 12345679,
isForcingNearestDepartment: false,
forceNearestDepartmentEvaluationId: 0,
answers: {},
completedTasks: {},
currentStep: 4,
};
mocks.sessionRequest.mockImplementation(async (path, method, payload) => {
if (path === "/modules/self-serve/lane/wash/in-progress" && method === "GET" && payload?.lane_id === 7) {
return {
data: {
data: {
lane_id: 7,
in_progress: false,
session: null,
customer: null,
vehicle: null,
},
},
};
}
return undefined;
});
const wrapper = mountWithApp(MyWashStart, {
global: {
stubs: stubComponents,
},
});
await flushPromises();
await nextTick();
await flushPromises();
expect(mocks.sessionRequest).toHaveBeenCalledWith("/modules/self-serve/lane/wash/in-progress", "GET", {
lane_id: 7,
});
expect(mocks.stopElapsedTimer).toHaveBeenCalled();
expect(mocks.clearProgress).toHaveBeenCalled();
expect(mocks.fetchWashSummary).not.toHaveBeenCalled();
expect(wrapper.get('[data-testid="self-serve-bottom-actions"]').attributes("style") || "").toContain(
"display: none"
);
wrapper.unmount();
});
});
@@ -45,7 +45,9 @@ describe("self-serve studio vehicle type scope", () => {
expect(source).toContain("const selectedSimulatorVehicleTypeId = computed(() =>");
expect(source).toContain("vehicleTypeMatchesFilter(vehicleType, selectedValue)");
expect(source).toContain("lane_id: laneId");
expect(source).toContain("vehicle_type_id: selectedSimulatorVehicleTypeId.value");
expect(source).toContain("vehicle_type_id: selectedSimulatorVehicleTypeScopeId.value");
expect(source).toContain("const selectedSimulatorVehicleTypeScopeId = computed(() => {");
expect(source).toContain("return firstPositiveInt(selectedRow.product, selectedRow.product_id, selectedRow.id);");
expect(source).toContain('data-testid="studio-simulator-scope"');
expect(source).not.toContain('v-model="simulatorForm.lane_id"');
expect(source).not.toContain('v-model="simulatorForm.vehicle_type_id"');